diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index b852bec68697906b0d8bc847f58564b7741efc9b..70727fc15adc7656224e8b7fdbd9b95b08c4f6f5 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,8 +1,10 @@
 variables:
   IMAGE_NAME: funkwhale/funkwhale
   IMAGE: $IMAGE_NAME:$CI_COMMIT_REF_NAME
+  IMAGE_LATEST: $IMAGE_NAME:latest
   ALL_IN_ONE_IMAGE_NAME: funkwhale/all-in-one
   ALL_IN_ONE_IMAGE: $ALL_IN_ONE_IMAGE_NAME:$CI_COMMIT_REF_NAME
+  ALL_IN_ONE_IMAGE_LATEST: $ALL_IN_ONE_IMAGE_NAME:latest
   PIP_CACHE_DIR: "$CI_PROJECT_DIR/pip-cache"
   PYTHONDONTWRITEBYTECODE: "true"
   REVIEW_DOMAIN: preview.funkwhale.audio
@@ -16,6 +18,7 @@ stages:
   - deploy
 
 review_front:
+  interruptible: true
   stage: review
   image: node:11
   when: manual
@@ -54,8 +57,8 @@ review_front:
     name: review/front/$CI_COMMIT_REF_NAME
     url: http://$CI_PROJECT_NAMESPACE.pages.funkwhale.audio/-/$CI_PROJECT_NAME/-/jobs/$CI_JOB_ID/artifacts/front-review/index.html
 
-
 review_docs:
+  interruptible: true
   stage: review
   when: manual
   allow_failure: true
@@ -68,7 +71,7 @@ review_docs:
     - cd docs
     - apt-get update
     - apt-get install -y graphviz
-    - pip install sphinx
+    - pip install sphinx sphinx_rtd_theme
   script:
     - ./build_docs.sh
   cache:
@@ -87,8 +90,8 @@ review_docs:
     name: review/docs/$CI_COMMIT_REF_NAME
     url: http://$CI_PROJECT_NAMESPACE.pages.funkwhale.audio/-/$CI_PROJECT_NAME/-/jobs/$CI_JOB_ID/artifacts/docs-review/index.html
 
-
 black:
+  interruptible: true
   image: python:3.6
   stage: lint
   variables:
@@ -99,6 +102,7 @@ black:
     - black --check --diff api/
 
 flake8:
+  interruptible: true
   image: python:3.6
   stage: lint
   variables:
@@ -113,6 +117,7 @@ flake8:
       - "$PIP_CACHE_DIR"
 
 test_api:
+  interruptible: true
   services:
     - postgres:11
     - redis:3
@@ -129,6 +134,7 @@ test_api:
   only:
     - branches
   before_script:
+    - apk add make
     - cd api
     - sed -i '/Pillow/d' requirements/base.txt
     - pip3 install -r requirements/base.txt
@@ -140,6 +146,7 @@ test_api:
     - docker
 
 test_front:
+  interruptible: true
   stage: test
   image: node:11
   before_script:
@@ -196,7 +203,7 @@ pages:
     - cd docs
     - apt-get update
     - apt-get install -y graphviz
-    - pip install sphinx
+    - pip install sphinx sphinx_rtd_theme
   script:
     - ./build_docs.sh
   cache:
@@ -218,10 +225,12 @@ docker_release:
     - docker login -u $DOCKER_LOGIN -p $DOCKER_PASSWORD
     - cp -r front/dist api/frontend
     - (if [ "$CI_COMMIT_REF_NAME" == "develop" ]; then ./scripts/set-api-build-metadata.sh $(echo $CI_COMMIT_SHA | cut -c 1-8); fi);
-    - cd api
   script:
-    - docker build -t $IMAGE .
+    - if [[ ! -z "$CI_COMMIT_TAG" ]]; then (./docs/get-releases-json.py | scripts/is-docker-latest.py $CI_COMMIT_TAG -) && export DOCKER_LATEST_TAG="-t $IMAGE_LATEST" || export DOCKER_LATEST_TAG=; fi
+    - cd api
+    - docker build -t $IMAGE $DOCKER_LATEST_TAG .
     - docker push $IMAGE
+    - if [[ ! -z "$DOCKER_LATEST_TAG" ]]; then docker push $IMAGE_LATEST; fi
   only:
     - develop@funkwhale/funkwhale
     - tags@funkwhale/funkwhale
@@ -239,6 +248,7 @@ docker_all_in_one_release:
     - docker login -u $DOCKER_LOGIN -p $DOCKER_PASSWORD
     - (if [ "$CI_COMMIT_REF_NAME" == "develop" ]; then ./scripts/set-api-build-metadata.sh $(echo $CI_COMMIT_SHA | cut -c 1-8); fi);
   script:
+    - if [[ ! -z "$CI_COMMIT_TAG" ]]; then (./docs/get-releases-json.py | scripts/is-docker-latest.py $CI_COMMIT_TAG -) && export DOCKER_LATEST_TAG="-t $ALL_IN_ONE_IMAGE_LATEST" || export DOCKER_LATEST_TAG=; fi
     - wget $ALL_IN_ONE_ARTIFACT_URL -O all_in_one.zip
     - unzip -o all_in_one.zip -d tmpdir
     - mv tmpdir/docker-funkwhale-$ALL_IN_ONE_REF $BUILD_PATH && rmdir tmpdir
@@ -246,8 +256,9 @@ docker_all_in_one_release:
     - cp -r front $BUILD_PATH/src/front
     - cd $BUILD_PATH
     - ./scripts/download-nginx-template.sh src/ $CI_COMMIT_REF_NAME
-    - docker build -t $ALL_IN_ONE_IMAGE .
+    - docker build -t $ALL_IN_ONE_IMAGE $DOCKER_LATEST_TAG .
     - docker push $ALL_IN_ONE_IMAGE
+    - if [[ ! -z "$DOCKER_LATEST_TAG" ]]; then docker push $ALL_IN_ONE_IMAGE_LATEST; fi
   only:
     - develop@funkwhale/funkwhale
     - tags@funkwhale/funkwhale
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
index 2722502c094c3982ea988b0f987544fc25e1a0de..2d85efa746371ea2f72d9a30056e98b4a5806ef3 100644
--- a/CONTRIBUTING.rst
+++ b/CONTRIBUTING.rst
@@ -185,9 +185,9 @@ If you prefer to launch them in the background instead, use the ``-d`` flag, and
 
 Once everything is up, you can access the various funkwhale's components:
 
-- The Vue webapp, on http://localhost:8080
-- The API, on http://localhost:8080/api/v1/
-- The django admin, on http://localhost:8080/api/admin/
+- The Vue webapp, on http://localhost:8000
+- The API, on http://localhost:8000/api/v1/
+- The django admin, on http://localhost:800/api/admin/
 
 Stopping everything
 ^^^^^^^^^^^^^^^^^^^
diff --git a/api/Dockerfile b/api/Dockerfile
index c735ab3976b369d8a119bab4f880e46d0515312b..958af297df2364718d9852c5ba761fa4bcddbf1e 100644
--- a/api/Dockerfile
+++ b/api/Dockerfile
@@ -17,6 +17,7 @@ RUN \
     libpq              \
     libmagic           \
     libffi-dev         \
+    make         \
     zlib-dev           \
     openldap-dev && \
     \
@@ -44,7 +45,7 @@ RUN \
     if [ "$install_dev_deps" = "1" ] ; then echo "Installing dev dependencies" && pip3 install --no-cache-dir -r /requirements/local.txt -r /requirements/test.txt ; else echo "Skipping dev deps installation" ; fi
 
 ENTRYPOINT ["./compose/django/entrypoint.sh"]
-CMD ["./compose/django/daphne.sh"]
+CMD ["./compose/django/server.sh"]
 
 COPY . /app
 WORKDIR /app
diff --git a/api/compose/django/daphne.sh b/api/compose/django/daphne.sh
deleted file mode 100755
index b99cb18720ccda9923ae4071707f3cf209d843b7..0000000000000000000000000000000000000000
--- a/api/compose/django/daphne.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/bash -eux
-python /app/manage.py collectstatic --noinput
-daphne -b 0.0.0.0 -p 5000 config.asgi:application --proxy-headers
diff --git a/api/compose/django/server.sh b/api/compose/django/server.sh
new file mode 100755
index 0000000000000000000000000000000000000000..0e4c737afcbd52cd104e618614197e2f52d82534
--- /dev/null
+++ b/api/compose/django/server.sh
@@ -0,0 +1,3 @@
+#!/bin/bash -eux
+python /app/manage.py collectstatic --noinput
+gunicorn config.asgi:application -w ${FUNKWHALE_WEB_WORKERS-1} -k uvicorn.workers.UvicornWorker -b 0.0.0.0:5000
diff --git a/api/config/api_urls.py b/api/config/api_urls.py
index a40ff3047a33b3b66dc8ef1bf2342c7c082cfc0e..cdcc7439120d97fd4c097f2d15f988f05d5ed43b 100644
--- a/api/config/api_urls.py
+++ b/api/config/api_urls.py
@@ -2,18 +2,20 @@ from django.conf.urls import include, url
 from dynamic_preferences.api.viewsets import GlobalPreferencesViewSet
 from rest_framework import routers
 from rest_framework.urlpatterns import format_suffix_patterns
-from rest_framework_jwt import views as jwt_views
 
 from funkwhale_api.activity import views as activity_views
 from funkwhale_api.common import views as common_views
+from funkwhale_api.common import routers as common_routers
 from funkwhale_api.music import views
 from funkwhale_api.playlists import views as playlists_views
 from funkwhale_api.subsonic.views import SubsonicViewSet
+from funkwhale_api.tags import views as tags_views
+from funkwhale_api.users import jwt_views
 
-router = routers.SimpleRouter()
+router = common_routers.OptionalSlashRouter()
 router.register(r"settings", GlobalPreferencesViewSet, basename="settings")
 router.register(r"activity", activity_views.ActivityViewSet, "activity")
-router.register(r"tags", views.TagViewSet, "tags")
+router.register(r"tags", tags_views.TagViewSet, "tags")
 router.register(r"tracks", views.TrackViewSet, "tracks")
 router.register(r"uploads", views.UploadViewSet, "uploads")
 router.register(r"libraries", views.LibraryViewSet, "libraries")
@@ -79,8 +81,9 @@ v1_patterns += [
         r"^oauth/",
         include(("funkwhale_api.users.oauth.urls", "oauth"), namespace="oauth"),
     ),
-    url(r"^token/$", jwt_views.obtain_jwt_token, name="token"),
-    url(r"^token/refresh/$", jwt_views.refresh_jwt_token, name="token_refresh"),
+    url(r"^token/?$", jwt_views.obtain_jwt_token, name="token"),
+    url(r"^token/refresh/?$", jwt_views.refresh_jwt_token, name="token_refresh"),
+    url(r"^rate-limit/?$", common_views.RateLimitView.as_view(), name="rate-limit"),
 ]
 
 urlpatterns = [
diff --git a/api/config/settings/common.py b/api/config/settings/common.py
index 654b58b40a8aa3bf016e707d9a96d087815e1e21..a20081dd2f3905c90baade172c51ee1fbe506f13 100644
--- a/api/config/settings/common.py
+++ b/api/config/settings/common.py
@@ -11,7 +11,8 @@ https://docs.djangoproject.com/en/dev/ref/settings/
 from __future__ import absolute_import, unicode_literals
 
 import datetime
-import logging
+import logging.config
+import sys
 
 from urllib.parse import urlsplit
 
@@ -20,13 +21,44 @@ from celery.schedules import crontab
 
 from funkwhale_api import __version__
 
-logger = logging.getLogger(__name__)
+logger = logging.getLogger("funkwhale_api.config")
 ROOT_DIR = environ.Path(__file__) - 3  # (/a/b/myfile.py - 3 = /)
 APPS_DIR = ROOT_DIR.path("funkwhale_api")
 
 env = environ.Env()
+
+LOGLEVEL = env("LOGLEVEL", default="info").upper()
+LOGGING_CONFIG = None
+logging.config.dictConfig(
+    {
+        "version": 1,
+        "disable_existing_loggers": False,
+        "formatters": {
+            "console": {"format": "%(asctime)s %(name)-12s %(levelname)-8s %(message)s"}
+        },
+        "handlers": {
+            "console": {"class": "logging.StreamHandler", "formatter": "console"},
+            # # Add Handler for Sentry for `warning` and above
+            # 'sentry': {
+            #     'level': 'WARNING',
+            #     'class': 'raven.contrib.django.raven_compat.handlers.SentryHandler',
+            # },
+        },
+        "loggers": {
+            "funkwhale_api": {
+                "level": LOGLEVEL,
+                "handlers": ["console"],
+                # required to avoid double logging with root logger
+                "propagate": False,
+            },
+            "": {"level": "WARNING", "handlers": ["console"]},
+        },
+    }
+)
+
 env_file = env("ENV_FILE", default=None)
 if env_file:
+    logger.info("Loading specified env file at %s", env_file)
     # we have an explicitely specified env file
     # so we try to load and it fail loudly if it does not exist
     env.read_env(env_file)
@@ -49,6 +81,11 @@ else:
         logger.info("Loaded env file at %s/.env", path)
         break
 
+FUNKWHALE_PLUGINS_PATH = env(
+    "FUNKWHALE_PLUGINS_PATH", default="/srv/funkwhale/plugins/"
+)
+sys.path.append(FUNKWHALE_PLUGINS_PATH)
+
 FUNKWHALE_HOSTNAME = None
 FUNKWHALE_HOSTNAME_SUFFIX = env("FUNKWHALE_HOSTNAME_SUFFIX", default=None)
 FUNKWHALE_HOSTNAME_PREFIX = env("FUNKWHALE_HOSTNAME_PREFIX", default=None)
@@ -124,7 +161,6 @@ THIRD_PARTY_APPS = (
     "oauth2_provider",
     "rest_framework",
     "rest_framework.authtoken",
-    "taggit",
     "rest_auth",
     "rest_auth.registration",
     "dynamic_preferences",
@@ -147,7 +183,6 @@ if RAVEN_ENABLED:
     }
     THIRD_PARTY_APPS += ("raven.contrib.django.raven_compat",)
 
-
 # Apps specific for this project go here.
 LOCAL_APPS = (
     "funkwhale_api.common.apps.CommonConfig",
@@ -160,29 +195,44 @@ LOCAL_APPS = (
     "funkwhale_api.requests",
     "funkwhale_api.favorites",
     "funkwhale_api.federation",
-    "funkwhale_api.moderation",
+    "funkwhale_api.moderation.apps.ModerationConfig",
     "funkwhale_api.radios",
     "funkwhale_api.history",
     "funkwhale_api.playlists",
     "funkwhale_api.subsonic",
+    "funkwhale_api.tags",
 )
 
 # See: https://docs.djangoproject.com/en/dev/ref/settings/#installed-apps
 
-INSTALLED_APPS = DJANGO_APPS + THIRD_PARTY_APPS + LOCAL_APPS
+
+PLUGINS = [p for p in env.list("FUNKWHALE_PLUGINS", default=[]) if p]
+if PLUGINS:
+    logger.info("Running with the following plugins enabled: %s", ", ".join(PLUGINS))
+else:
+    logger.info("Running with no plugins")
+
+INSTALLED_APPS = (
+    DJANGO_APPS
+    + THIRD_PARTY_APPS
+    + LOCAL_APPS
+    + tuple(["{}.apps.Plugin".format(p) for p in PLUGINS])
+)
 
 # MIDDLEWARE CONFIGURATION
 # ------------------------------------------------------------------------------
 MIDDLEWARE = (
+    "django.middleware.security.SecurityMiddleware",
+    "django.middleware.clickjacking.XFrameOptionsMiddleware",
+    "corsheaders.middleware.CorsMiddleware",
     "funkwhale_api.common.middleware.SPAFallbackMiddleware",
     "django.contrib.sessions.middleware.SessionMiddleware",
-    "corsheaders.middleware.CorsMiddleware",
     "django.middleware.common.CommonMiddleware",
     "django.middleware.csrf.CsrfViewMiddleware",
     "django.contrib.auth.middleware.AuthenticationMiddleware",
     "django.contrib.messages.middleware.MessageMiddleware",
-    "django.middleware.clickjacking.XFrameOptionsMiddleware",
     "funkwhale_api.users.middleware.RecordActivityMiddleware",
+    "funkwhale_api.common.middleware.ThrottleStatusMiddleware",
 )
 
 # DEBUG
@@ -350,6 +400,8 @@ ASGI_APPLICATION = "config.routing.application"
 
 # This ensures that Django will be able to detect a secure connection
 SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https")
+SECURE_BROWSER_XSS_FILTER = True
+SECURE_CONTENT_TYPE_NOSNIFF = True
 
 # AUTHENTICATION CONFIGURATION
 # ------------------------------------------------------------------------------
@@ -516,14 +568,32 @@ CELERY_BEAT_SCHEDULE = {
 
 NODEINFO_REFRESH_DELAY = env.int("NODEINFO_REFRESH_DELAY", default=3600 * 24)
 
+
+def get_user_secret_key(user):
+    from django.conf import settings
+
+    return settings.SECRET_KEY + str(user.secret_key)
+
+
 JWT_AUTH = {
     "JWT_ALLOW_REFRESH": True,
     "JWT_EXPIRATION_DELTA": datetime.timedelta(days=7),
     "JWT_REFRESH_EXPIRATION_DELTA": datetime.timedelta(days=30),
     "JWT_AUTH_HEADER_PREFIX": "JWT",
-    "JWT_GET_USER_SECRET_KEY": lambda user: user.secret_key,
+    "JWT_GET_USER_SECRET_KEY": get_user_secret_key,
 }
 OLD_PASSWORD_FIELD_ENABLED = True
+AUTH_PASSWORD_VALIDATORS = [
+    {
+        "NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator"
+    },
+    {
+        "NAME": "django.contrib.auth.password_validation.MinimumLengthValidator",
+        "OPTIONS": {"min_length": env.int("PASSWORD_MIN_LENGTH", default=8)},
+    },
+    {"NAME": "django.contrib.auth.password_validation.CommonPasswordValidator"},
+    {"NAME": "django.contrib.auth.password_validation.NumericPasswordValidator"},
+]
 ACCOUNT_ADAPTER = "funkwhale_api.users.adapters.FunkwhaleAccountAdapter"
 CORS_ORIGIN_ALLOW_ALL = True
 # CORS_ORIGIN_WHITELIST = (
@@ -557,8 +627,151 @@ REST_FRAMEWORK = {
         "django_filters.rest_framework.DjangoFilterBackend",
     ),
     "DEFAULT_RENDERER_CLASSES": ("rest_framework.renderers.JSONRenderer",),
+    "NUM_PROXIES": env.int("NUM_PROXIES", default=1),
+}
+THROTTLING_ENABLED = env.bool("THROTTLING_ENABLED", default=True)
+if THROTTLING_ENABLED:
+    REST_FRAMEWORK["DEFAULT_THROTTLE_CLASSES"] = env.list(
+        "THROTTLE_CLASSES",
+        default=["funkwhale_api.common.throttling.FunkwhaleThrottle"],
+    )
+
+THROTTLING_SCOPES = {
+    "*": {"anonymous": "anonymous-wildcard", "authenticated": "authenticated-wildcard"},
+    "create": {
+        "authenticated": "authenticated-create",
+        "anonymous": "anonymous-create",
+    },
+    "list": {"authenticated": "authenticated-list", "anonymous": "anonymous-list"},
+    "retrieve": {
+        "authenticated": "authenticated-retrieve",
+        "anonymous": "anonymous-retrieve",
+    },
+    "destroy": {
+        "authenticated": "authenticated-destroy",
+        "anonymous": "anonymous-destroy",
+    },
+    "update": {
+        "authenticated": "authenticated-update",
+        "anonymous": "anonymous-update",
+    },
+    "partial_update": {
+        "authenticated": "authenticated-update",
+        "anonymous": "anonymous-update",
+    },
 }
 
+THROTTLING_USER_RATES = env.dict("THROTTLING_RATES", default={})
+
+THROTTLING_RATES = {
+    "anonymous-wildcard": {
+        "rate": THROTTLING_USER_RATES.get("anonymous-wildcard", "1000/h"),
+        "description": "Anonymous requests not covered by other limits",
+    },
+    "authenticated-wildcard": {
+        "rate": THROTTLING_USER_RATES.get("authenticated-wildcard", "2000/h"),
+        "description": "Authenticated requests not covered by other limits",
+    },
+    "authenticated-create": {
+        "rate": THROTTLING_USER_RATES.get("authenticated-create", "1000/hour"),
+        "description": "Authenticated POST requests",
+    },
+    "anonymous-create": {
+        "rate": THROTTLING_USER_RATES.get("anonymous-create", "1000/day"),
+        "description": "Anonymous POST requests",
+    },
+    "authenticated-list": {
+        "rate": THROTTLING_USER_RATES.get("authenticated-list", "10000/hour"),
+        "description": "Authenticated GET requests on resource lists",
+    },
+    "anonymous-list": {
+        "rate": THROTTLING_USER_RATES.get("anonymous-list", "10000/day"),
+        "description": "Anonymous GET requests on resource lists",
+    },
+    "authenticated-retrieve": {
+        "rate": THROTTLING_USER_RATES.get("authenticated-retrieve", "10000/hour"),
+        "description": "Authenticated GET requests on resource detail",
+    },
+    "anonymous-retrieve": {
+        "rate": THROTTLING_USER_RATES.get("anonymous-retrieve", "10000/day"),
+        "description": "Anonymous GET requests on resource detail",
+    },
+    "authenticated-destroy": {
+        "rate": THROTTLING_USER_RATES.get("authenticated-destroy", "500/hour"),
+        "description": "Authenticated DELETE requests on resource detail",
+    },
+    "anonymous-destroy": {
+        "rate": THROTTLING_USER_RATES.get("anonymous-destroy", "1000/day"),
+        "description": "Anonymous DELETE requests on resource detail",
+    },
+    "authenticated-update": {
+        "rate": THROTTLING_USER_RATES.get("authenticated-update", "1000/hour"),
+        "description": "Authenticated PATCH and PUT requests on resource detail",
+    },
+    "anonymous-update": {
+        "rate": THROTTLING_USER_RATES.get("anonymous-update", "1000/day"),
+        "description": "Anonymous PATCH and PUT requests on resource detail",
+    },
+    # potentially spammy / dangerous endpoints
+    "authenticated-reports": {
+        "rate": THROTTLING_USER_RATES.get("authenticated-reports", "100/day"),
+        "description": "Authenticated report submission",
+    },
+    "anonymous-reports": {
+        "rate": THROTTLING_USER_RATES.get("anonymous-reports", "10/day"),
+        "description": "Anonymous report submission",
+    },
+    "authenticated-oauth-app": {
+        "rate": THROTTLING_USER_RATES.get("authenticated-oauth-app", "10/hour"),
+        "description": "Authenticated OAuth app creation",
+    },
+    "anonymous-oauth-app": {
+        "rate": THROTTLING_USER_RATES.get("anonymous-oauth-app", "10/day"),
+        "description": "Anonymous OAuth app creation",
+    },
+    "oauth-authorize": {
+        "rate": THROTTLING_USER_RATES.get("oauth-authorize", "100/hour"),
+        "description": "OAuth app authorization",
+    },
+    "oauth-token": {
+        "rate": THROTTLING_USER_RATES.get("oauth-token", "100/hour"),
+        "description": "OAuth token creation",
+    },
+    "oauth-revoke-token": {
+        "rate": THROTTLING_USER_RATES.get("oauth-revoke-token", "100/hour"),
+        "description": "OAuth token deletion",
+    },
+    "jwt-login": {
+        "rate": THROTTLING_USER_RATES.get("jwt-login", "30/hour"),
+        "description": "JWT token creation",
+    },
+    "jwt-refresh": {
+        "rate": THROTTLING_USER_RATES.get("jwt-refresh", "30/hour"),
+        "description": "JWT token refresh",
+    },
+    "signup": {
+        "rate": THROTTLING_USER_RATES.get("signup", "10/day"),
+        "description": "Account creation",
+    },
+    "verify-email": {
+        "rate": THROTTLING_USER_RATES.get("verify-email", "20/h"),
+        "description": "Email address confirmation",
+    },
+    "password-change": {
+        "rate": THROTTLING_USER_RATES.get("password-change", "20/h"),
+        "description": "Password change (when authenticated)",
+    },
+    "password-reset": {
+        "rate": THROTTLING_USER_RATES.get("password-reset", "20/h"),
+        "description": "Password reset request",
+    },
+    "password-reset-confirm": {
+        "rate": THROTTLING_USER_RATES.get("password-reset-confirm", "20/h"),
+        "description": "Password reset confirmation",
+    },
+}
+
+
 BROWSABLE_API_ENABLED = env.bool("BROWSABLE_API_ENABLED", default=False)
 if BROWSABLE_API_ENABLED:
     REST_FRAMEWORK["DEFAULT_RENDERER_CLASSES"] += (
@@ -661,3 +874,17 @@ ACTOR_KEY_ROTATION_DELAY = env.int("ACTOR_KEY_ROTATION_DELAY", default=3600 * 48
 SUBSONIC_DEFAULT_TRANSCODING_FORMAT = (
     env("SUBSONIC_DEFAULT_TRANSCODING_FORMAT", default="mp3") or None
 )
+
+# extra tags will be ignored
+TAGS_MAX_BY_OBJ = env.int("TAGS_MAX_BY_OBJ", default=30)
+FEDERATION_OBJECT_FETCH_DELAY = env.int(
+    "FEDERATION_OBJECT_FETCH_DELAY", default=60 * 24 * 3
+)
+
+MODERATION_EMAIL_NOTIFICATIONS_ENABLED = env.bool(
+    "MODERATION_EMAIL_NOTIFICATIONS_ENABLED", default=True
+)
+
+# Delay in days after signup before we show the "support us" messages
+INSTANCE_SUPPORT_MESSAGE_DELAY = env.int("INSTANCE_SUPPORT_MESSAGE_DELAY", default=15)
+FUNKWHALE_SUPPORT_MESSAGE_DELAY = env.int("FUNKWHALE_SUPPORT_MESSAGE_DELAY", default=15)
diff --git a/api/config/settings/production.py b/api/config/settings/production.py
index 26def9fd036c3077721862dbd505af6aabfb56d2..1ee9b8f7e6ef0270096a295bf7bc23d137a75c86 100644
--- a/api/config/settings/production.py
+++ b/api/config/settings/production.py
@@ -73,50 +73,4 @@ TEMPLATES[0]["OPTIONS"]["loaders"] = [
 # ------------------------------------------------------------------------------
 # Heroku URL does not pass the DB number, so we parse it in
 
-
-# LOGGING CONFIGURATION
-# ------------------------------------------------------------------------------
-# See: https://docs.djangoproject.com/en/dev/ref/settings/#logging
-# A sample logging configuration. The only tangible logging
-# performed by this configuration is to send an email to
-# the site admins on every HTTP 500 error when DEBUG=False.
-# See http://docs.djangoproject.com/en/dev/topics/logging for
-# more details on how to customize your logging configuration.
-LOGGING = {
-    "version": 1,
-    "disable_existing_loggers": False,
-    "filters": {"require_debug_false": {"()": "django.utils.log.RequireDebugFalse"}},
-    "formatters": {
-        "verbose": {
-            "format": "%(levelname)s %(asctime)s %(module)s "
-            "%(process)d %(thread)d %(message)s"
-        }
-    },
-    "handlers": {
-        "mail_admins": {
-            "level": "ERROR",
-            "filters": ["require_debug_false"],
-            "class": "django.utils.log.AdminEmailHandler",
-        },
-        "console": {
-            "level": "DEBUG",
-            "class": "logging.StreamHandler",
-            "formatter": "verbose",
-        },
-    },
-    "loggers": {
-        "django.request": {
-            "handlers": ["mail_admins"],
-            "level": "ERROR",
-            "propagate": True,
-        },
-        "django.security.DisallowedHost": {
-            "level": "ERROR",
-            "handlers": ["console", "mail_admins"],
-            "propagate": True,
-        },
-    },
-}
-
-
 # Your production stuff: Below this line define 3rd party library settings
diff --git a/api/config/spa_urls.py b/api/config/spa_urls.py
index 071965b048b30ffb9aaf15c80d63cc5249389d10..246338d2dd535186fbd64bfd73c99ed95bd6b5a8 100644
--- a/api/config/spa_urls.py
+++ b/api/config/spa_urls.py
@@ -15,4 +15,9 @@ urlpatterns = [
         spa_views.library_artist,
         name="library_artist",
     ),
+    urls.re_path(
+        r"^library/playlists/(?P<pk>\d+)/?$",
+        spa_views.library_playlist,
+        name="library_playlist",
+    ),
 ]
diff --git a/api/config/urls.py b/api/config/urls.py
index 99fc32f1fce09e6a3b8c227e530102ba0e9abd17..015047f67fd0834bbba477b98d7fca4f63acf81a 100644
--- a/api/config/urls.py
+++ b/api/config/urls.py
@@ -19,8 +19,7 @@ urlpatterns = [
             ("funkwhale_api.federation.urls", "federation"), namespace="federation"
         ),
     ),
-    url(r"^api/v1/auth/", include("rest_auth.urls")),
-    url(r"^api/v1/auth/registration/", include("funkwhale_api.users.rest_auth_urls")),
+    url(r"^api/v1/auth/", include("funkwhale_api.users.rest_auth_urls")),
     url(r"^accounts/", include("allauth.urls")),
     # Your stuff: custom urls includes go here
 ]
diff --git a/api/funkwhale_api/__init__.py b/api/funkwhale_api/__init__.py
index 7805b764635fcb706ddbbc8d0118261700bb83ac..655fc990523e9272816caf9f1ecd2a89d7519fdd 100644
--- a/api/funkwhale_api/__init__.py
+++ b/api/funkwhale_api/__init__.py
@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-__version__ = "0.19.1"
+__version__ = "0.20.0-rc1"
 __version_info__ = tuple(
     [
         int(num) if num.isdigit() else num
diff --git a/api/funkwhale_api/common/fields.py b/api/funkwhale_api/common/fields.py
index b8e217ba4eca9ef0954236124a577a88cf4e72d5..f206b626eaa5e9f939bafb8adaeb6dec64177eb1 100644
--- a/api/funkwhale_api/common/fields.py
+++ b/api/funkwhale_api/common/fields.py
@@ -1,7 +1,10 @@
 import django_filters
 from django import forms
+from django.core.serializers.json import DjangoJSONEncoder
 from django.db import models
 
+from rest_framework import serializers
+
 from . import search
 
 PRIVACY_LEVEL_CHOICES = [
@@ -52,3 +55,118 @@ class SmartSearchFilter(django_filters.CharFilter):
         except (forms.ValidationError):
             return qs.none()
         return search.apply(qs, cleaned)
+
+
+def get_generic_filter_query(value, relation_name, choices):
+    parts = value.split(":", 1)
+    type = parts[0]
+    try:
+        conf = choices[type]
+    except KeyError:
+        raise forms.ValidationError("Invalid type")
+    related_queryset = conf["queryset"]
+    related_model = related_queryset.model
+    filter_query = models.Q(
+        **{
+            "{}_content_type__app_label".format(
+                relation_name
+            ): related_model._meta.app_label,
+            "{}_content_type__model".format(
+                relation_name
+            ): related_model._meta.model_name,
+        }
+    )
+    if len(parts) > 1:
+        id_attr = conf.get("id_attr", "id")
+        id_field = conf.get("id_field", serializers.IntegerField(min_value=1))
+        try:
+            id_value = parts[1]
+            id_value = id_field.to_internal_value(id_value)
+        except (TypeError, KeyError, serializers.ValidationError):
+            raise forms.ValidationError("Invalid id")
+        query_getter = conf.get(
+            "get_query", lambda attr, value: models.Q(**{attr: value})
+        )
+        obj_query = query_getter(id_attr, id_value)
+        try:
+            obj = related_queryset.get(obj_query)
+        except related_queryset.model.DoesNotExist:
+            raise forms.ValidationError("Invalid object")
+        filter_query &= models.Q(**{"{}_id".format(relation_name): obj.id})
+
+    return filter_query
+
+
+class GenericRelationFilter(django_filters.CharFilter):
+    def __init__(self, relation_name, choices, *args, **kwargs):
+        self.relation_name = relation_name
+        self.choices = choices
+        super().__init__(*args, **kwargs)
+
+    def filter(self, qs, value):
+        if not value:
+            return qs
+        try:
+            filter_query = get_generic_filter_query(
+                value, relation_name=self.relation_name, choices=self.choices
+            )
+        except forms.ValidationError:
+            return qs.none()
+        return qs.filter(filter_query)
+
+
+class GenericRelation(serializers.JSONField):
+    def __init__(self, choices, *args, **kwargs):
+        self.choices = choices
+        self.encoder = kwargs.setdefault("encoder", DjangoJSONEncoder)
+        super().__init__(*args, **kwargs)
+
+    def to_representation(self, value):
+        if not value:
+            return
+        type = None
+        id = None
+        id_attr = None
+        for key, choice in self.choices.items():
+            if isinstance(value, choice["queryset"].model):
+                type = key
+                id_attr = choice.get("id_attr", "id")
+                id = getattr(value, id_attr)
+                break
+
+        if type:
+            return {"type": type, id_attr: id}
+
+    def to_internal_value(self, v):
+        v = super().to_internal_value(v)
+
+        if not v or not isinstance(v, dict):
+            raise serializers.ValidationError("Invalid data")
+
+        try:
+            type = v["type"]
+            field = serializers.ChoiceField(choices=list(self.choices.keys()))
+            type = field.to_internal_value(type)
+        except (TypeError, KeyError, serializers.ValidationError):
+            raise serializers.ValidationError("Invalid type")
+
+        conf = self.choices[type]
+        id_attr = conf.get("id_attr", "id")
+        id_field = conf.get("id_field", serializers.IntegerField(min_value=1))
+        queryset = conf["queryset"]
+        try:
+            id_value = v[id_attr]
+            id_value = id_field.to_internal_value(id_value)
+        except (TypeError, KeyError, serializers.ValidationError):
+            raise serializers.ValidationError("Invalid {}".format(id_attr))
+
+        query_getter = conf.get(
+            "get_query", lambda attr, value: models.Q(**{attr: value})
+        )
+        query = query_getter(id_attr, id_value)
+        try:
+            obj = queryset.get(query)
+        except queryset.model.DoesNotExist:
+            raise serializers.ValidationError("Object not found")
+
+        return obj
diff --git a/api/funkwhale_api/common/filters.py b/api/funkwhale_api/common/filters.py
index 364a1fba18a276cef05a34976a95749408132dc9..feca948bb6b71c6f388522ea5a1ca234e3b6b81d 100644
--- a/api/funkwhale_api/common/filters.py
+++ b/api/funkwhale_api/common/filters.py
@@ -15,7 +15,7 @@ class NoneObject(object):
 
 
 NONE = NoneObject()
-NULL_BOOLEAN_CHOICES = [
+BOOLEAN_CHOICES = [
     (True, True),
     ("true", True),
     ("True", True),
@@ -26,6 +26,8 @@ NULL_BOOLEAN_CHOICES = [
     ("False", False),
     ("0", False),
     ("no", False),
+]
+NULL_BOOLEAN_CHOICES = BOOLEAN_CHOICES + [
     ("None", NONE),
     ("none", NONE),
     ("Null", NONE),
@@ -76,10 +78,26 @@ def clean_null_boolean_filter(v):
     return v
 
 
+def clean_boolean_filter(v):
+    return CoerceChoiceField(choices=BOOLEAN_CHOICES).clean(v)
+
+
 def get_null_boolean_filter(name):
     return {"handler": lambda v: Q(**{name: clean_null_boolean_filter(v)})}
 
 
+def get_boolean_filter(name):
+    return {"handler": lambda v: Q(**{name: clean_boolean_filter(v)})}
+
+
+def get_generic_relation_filter(relation_name, choices):
+    return {
+        "handler": lambda v: fields.get_generic_filter_query(
+            v, relation_name=relation_name, choices=choices
+        )
+    }
+
+
 class DummyTypedMultipleChoiceField(forms.TypedMultipleChoiceField):
     def valid_value(self, value):
         return True
@@ -142,7 +160,7 @@ class MutationFilter(filters.FilterSet):
                 "domain": {"to": "created_by__domain__name__iexact"},
                 "is_approved": get_null_boolean_filter("is_approved"),
                 "target": {"handler": filter_target},
-                "is_applied": {"to": "is_applied"},
+                "is_applied": get_boolean_filter("is_applied"),
             },
         )
     )
diff --git a/api/funkwhale_api/common/management/commands/load_test_data.py b/api/funkwhale_api/common/management/commands/load_test_data.py
new file mode 100644
index 0000000000000000000000000000000000000000..9eab5ff083c7843f19e5846baf830f54d23bcc7c
--- /dev/null
+++ b/api/funkwhale_api/common/management/commands/load_test_data.py
@@ -0,0 +1,325 @@
+import math
+import random
+
+from django.conf import settings
+from django.core.management.base import BaseCommand
+from django.db import transaction
+
+
+from funkwhale_api.federation import keys
+from funkwhale_api.federation import models as federation_models
+from funkwhale_api.music import models as music_models
+from funkwhale_api.tags import models as tags_models
+from funkwhale_api.users import models as users_models
+
+
+BATCH_SIZE = 500
+
+
+def create_local_accounts(factories, count, dependencies):
+    password = factories["users.User"].build().password
+    users = factories["users.User"].build_batch(size=count)
+    for user in users:
+        # we set the hashed password by hand, because computing one for each user
+        # is CPU intensive
+        user.password = password
+    users = users_models.User.objects.bulk_create(users, batch_size=BATCH_SIZE)
+    actors = []
+    domain = federation_models.Domain.objects.get_or_create(
+        name=settings.FEDERATION_HOSTNAME
+    )[0]
+    users = [u for u in users if u.pk]
+    private, public = keys.get_key_pair()
+    for user in users:
+        if not user.pk:
+            continue
+        actor = federation_models.Actor(
+            private_key=private.decode("utf-8"),
+            public_key=public.decode("utf-8"),
+            **users_models.get_actor_data(user.username, domain=domain)
+        )
+        actors.append(actor)
+    actors = federation_models.Actor.objects.bulk_create(actors, batch_size=BATCH_SIZE)
+    for user, actor in zip(users, actors):
+        user.actor = actor
+    users_models.User.objects.bulk_update(users, ["actor"])
+    return actors
+
+
+def create_taggable_items(dependency):
+    def inner(factories, count, dependencies):
+
+        objs = []
+        tagged_objects = dependencies.get(
+            dependency, list(CONFIG_BY_ID[dependency]["model"].objects.all().only("pk"))
+        )
+        tags = dependencies.get("tags", list(tags_models.Tag.objects.all().only("pk")))
+        for i in range(count):
+            tag = random.choice(tags)
+            tagged_object = random.choice(tagged_objects)
+            objs.append(
+                factories["tags.TaggedItem"].build(
+                    content_object=tagged_object, tag=tag
+                )
+            )
+
+        return tags_models.TaggedItem.objects.bulk_create(
+            objs, batch_size=BATCH_SIZE, ignore_conflicts=True
+        )
+
+    return inner
+
+
+CONFIG = [
+    {
+        "id": "tracks",
+        "model": music_models.Track,
+        "factory": "music.Track",
+        "factory_kwargs": {"artist": None, "album": None},
+        "depends_on": [
+            {"field": "album", "id": "albums", "default_factor": 0.1},
+            {"field": "artist", "id": "artists", "default_factor": 0.05},
+        ],
+    },
+    {
+        "id": "albums",
+        "model": music_models.Album,
+        "factory": "music.Album",
+        "factory_kwargs": {"artist": None},
+        "depends_on": [{"field": "artist", "id": "artists", "default_factor": 0.3}],
+    },
+    {"id": "artists", "model": music_models.Artist, "factory": "music.Artist"},
+    {
+        "id": "local_accounts",
+        "model": federation_models.Actor,
+        "handler": create_local_accounts,
+    },
+    {
+        "id": "local_libraries",
+        "model": music_models.Library,
+        "factory": "music.Library",
+        "factory_kwargs": {"actor": None},
+        "depends_on": [{"field": "actor", "id": "local_accounts", "default_factor": 1}],
+    },
+    {
+        "id": "local_uploads",
+        "model": music_models.Upload,
+        "factory": "music.Upload",
+        "factory_kwargs": {"import_status": "finished", "library": None, "track": None},
+        "depends_on": [
+            {
+                "field": "library",
+                "id": "local_libraries",
+                "default_factor": 0.05,
+                "queryset": music_models.Library.objects.all().select_related(
+                    "actor__user"
+                ),
+            },
+            {"field": "track", "id": "tracks", "default_factor": 1},
+        ],
+    },
+    {"id": "tags", "model": tags_models.Tag, "factory": "tags.Tag"},
+    {
+        "id": "track_tags",
+        "model": tags_models.TaggedItem,
+        "queryset": tags_models.TaggedItem.objects.filter(
+            content_type__app_label="music", content_type__model="track"
+        ),
+        "handler": create_taggable_items("tracks"),
+        "depends_on": [
+            {
+                "field": "tag",
+                "id": "tags",
+                "default_factor": 0.1,
+                "queryset": tags_models.Tag.objects.all(),
+                "set": False,
+            },
+            {
+                "field": "content_object",
+                "id": "tracks",
+                "default_factor": 1,
+                "set": False,
+            },
+        ],
+    },
+    {
+        "id": "album_tags",
+        "model": tags_models.TaggedItem,
+        "queryset": tags_models.TaggedItem.objects.filter(
+            content_type__app_label="music", content_type__model="album"
+        ),
+        "handler": create_taggable_items("albums"),
+        "depends_on": [
+            {
+                "field": "tag",
+                "id": "tags",
+                "default_factor": 0.1,
+                "queryset": tags_models.Tag.objects.all(),
+                "set": False,
+            },
+            {
+                "field": "content_object",
+                "id": "albums",
+                "default_factor": 1,
+                "set": False,
+            },
+        ],
+    },
+    {
+        "id": "artist_tags",
+        "model": tags_models.TaggedItem,
+        "queryset": tags_models.TaggedItem.objects.filter(
+            content_type__app_label="music", content_type__model="artist"
+        ),
+        "handler": create_taggable_items("artists"),
+        "depends_on": [
+            {
+                "field": "tag",
+                "id": "tags",
+                "default_factor": 0.1,
+                "queryset": tags_models.Tag.objects.all(),
+                "set": False,
+            },
+            {
+                "field": "content_object",
+                "id": "artists",
+                "default_factor": 1,
+                "set": False,
+            },
+        ],
+    },
+]
+
+CONFIG_BY_ID = {c["id"]: c for c in CONFIG}
+
+
+class Rollback(Exception):
+    pass
+
+
+def create_objects(row, factories, count, **factory_kwargs):
+    return factories[row["factory"]].build_batch(size=count, **factory_kwargs)
+
+
+class Command(BaseCommand):
+    help = """
+    Inject demo data into your database. Useful for load testing, or setting up a demo instance.
+
+    Use with caution and only if you know what you are doing.
+    """
+
+    def add_arguments(self, parser):
+        parser.add_argument(
+            "--no-dry-run",
+            action="store_false",
+            dest="dry_run",
+            help="Commit the changes to the database",
+        )
+        parser.add_argument(
+            "--create-dependencies", action="store_true", dest="create_dependencies"
+        )
+        for row in CONFIG:
+            parser.add_argument(
+                "--{}".format(row["id"].replace("_", "-")),
+                dest=row["id"],
+                type=int,
+                help="Number of {} objects to create".format(row["id"]),
+            )
+            dependencies = row.get("depends_on", [])
+            for dependency in dependencies:
+                parser.add_argument(
+                    "--{}-{}-factor".format(row["id"], dependency["field"]),
+                    dest="{}_{}_factor".format(row["id"], dependency["field"]),
+                    type=float,
+                    help="Number of {} objects to create per {} object".format(
+                        dependency["id"], row["id"]
+                    ),
+                )
+
+    def handle(self, *args, **options):
+        from django.apps import apps
+        from funkwhale_api import factories
+
+        app_names = [app.name for app in apps.app_configs.values()]
+        factories.registry.autodiscover(app_names)
+        try:
+            return self.inner_handle(*args, **options)
+        except Rollback:
+            pass
+
+    @transaction.atomic
+    def inner_handle(self, *args, **options):
+        results = {}
+        for row in CONFIG:
+            self.create_batch(row, results, options, count=options.get(row["id"]))
+
+        self.stdout.write("\nFinal state of database:\n\n")
+        for row in CONFIG:
+            qs = row.get("queryset", row["model"].objects.all())
+            total = qs.count()
+            self.stdout.write("- {} {} objects".format(total, row["id"]))
+
+        self.stdout.write("")
+        if options["dry_run"]:
+
+            self.stdout.write(
+                "Run this command with --no-dry-run to commit the changes to the database"
+            )
+            raise Rollback()
+
+        self.stdout.write(self.style.SUCCESS("Done!"))
+
+    def create_batch(self, row, results, options, count):
+        from funkwhale_api import factories
+
+        if row["id"] in results:
+            # already generated
+            return results[row["id"]]
+        if not count:
+            return []
+        dependencies = row.get("depends_on", [])
+        create_dependencies = options.get("create_dependencies")
+        for dependency in dependencies:
+            dep_count = options.get(dependency["id"])
+            if not create_dependencies and dep_count is None:
+                continue
+            if dep_count is None:
+                factor = options[
+                    "{}_{}_factor".format(row["id"], dependency["field"])
+                ] or dependency.get("default_factor")
+                dep_count = math.ceil(factor * count)
+
+            results[dependency["id"]] = self.create_batch(
+                CONFIG_BY_ID[dependency["id"]], results, options, count=dep_count
+            )
+        self.stdout.write("Creating {} {}…".format(count, row["id"]))
+        handler = row.get("handler")
+        if handler:
+            objects = handler(factories.registry, count, dependencies=results)
+        else:
+            objects = create_objects(
+                row, factories.registry, count, **row.get("factory_kwargs", {})
+            )
+        for dependency in dependencies:
+            if not dependency.get("set", True):
+                continue
+            if create_dependencies:
+                candidates = results[dependency["id"]]
+            else:
+                # we use existing objects in the database
+                queryset = dependency.get(
+                    "queryset", CONFIG_BY_ID[dependency["id"]]["model"].objects.all()
+                )
+                candidates = list(queryset.values_list("pk", flat=True))
+                picked_pks = [random.choice(candidates) for _ in objects]
+                picked_objects = {o.pk: o for o in queryset.filter(pk__in=picked_pks)}
+            for i, obj in enumerate(objects):
+                if create_dependencies:
+                    value = random.choice(candidates)
+                else:
+                    value = picked_objects[picked_pks[i]]
+                setattr(obj, dependency["field"], value)
+        if not handler:
+            objects = row["model"].objects.bulk_create(objects, batch_size=BATCH_SIZE)
+        results[row["id"]] = objects
+        return objects
diff --git a/api/funkwhale_api/common/middleware.py b/api/funkwhale_api/common/middleware.py
index c7bcf4b19b97126bb8e4681f30873076cf8f9e00..6866148b998ea4e3b837628420aae752ff0953c8 100644
--- a/api/funkwhale_api/common/middleware.py
+++ b/api/funkwhale_api/common/middleware.py
@@ -1,13 +1,16 @@
 import html
 import requests
+import time
 import xml.sax.saxutils
 
 from django import http
 from django.conf import settings
 from django.core.cache import caches
 from django import urls
+from rest_framework import views
 
 from . import preferences
+from . import throttling
 from . import utils
 
 EXCLUDED_PATHS = ["/api", "/federation", "/.well-known"]
@@ -176,3 +179,66 @@ class DevHttpsMiddleware:
                 lambda: request.__class__.get_host(request).replace(":80", ":443"),
             )
         return self.get_response(request)
+
+
+def monkey_patch_rest_initialize_request():
+    """
+    Rest framework use it's own APIRequest, meaning we can't easily
+    access our throttling info in the middleware. So me monkey patch the
+    `initialize_request` method from rest_framework to keep a link between both requests
+    """
+    original = views.APIView.initialize_request
+
+    def replacement(self, request, *args, **kwargs):
+        r = original(self, request, *args, **kwargs)
+        setattr(request, "_api_request", r)
+        return r
+
+    setattr(views.APIView, "initialize_request", replacement)
+
+
+monkey_patch_rest_initialize_request()
+
+
+class ThrottleStatusMiddleware:
+    """
+    Include useful information regarding throttling in API responses to
+    ensure clients can adapt.
+    """
+
+    def __init__(self, get_response):
+        self.get_response = get_response
+
+    def __call__(self, request):
+        try:
+            response = self.get_response(request)
+        except throttling.TooManyRequests:
+            # manual throttling in non rest_framework view, we have to return
+            # the proper response ourselves
+            response = http.HttpResponse(status=429)
+        request_to_check = request
+        try:
+            request_to_check = request._api_request
+        except AttributeError:
+            pass
+        throttle_status = getattr(request_to_check, "_throttle_status", None)
+        if throttle_status:
+            response["X-RateLimit-Limit"] = str(throttle_status["num_requests"])
+            response["X-RateLimit-Scope"] = str(throttle_status["scope"])
+            response["X-RateLimit-Remaining"] = throttle_status["num_requests"] - len(
+                throttle_status["history"]
+            )
+            response["X-RateLimit-Duration"] = str(throttle_status["duration"])
+            if throttle_status["history"]:
+                now = int(time.time())
+                # At this point, the client can send additional requests
+                oldtest_request = throttle_status["history"][-1]
+                remaining = throttle_status["duration"] - (now - int(oldtest_request))
+                response["Retry-After"] = str(remaining)
+                # At this point, all Rate Limit is reset to 0
+                latest_request = throttle_status["history"][0]
+                remaining = throttle_status["duration"] - (now - int(latest_request))
+                response["X-RateLimit-Reset"] = str(now + remaining)
+                response["X-RateLimit-ResetSeconds"] = str(remaining)
+
+        return response
diff --git a/api/funkwhale_api/common/migrations/0003_cit_extension.py b/api/funkwhale_api/common/migrations/0003_cit_extension.py
new file mode 100644
index 0000000000000000000000000000000000000000..94ca96c49ad7cfec25148bb08d1db088df517484
--- /dev/null
+++ b/api/funkwhale_api/common/migrations/0003_cit_extension.py
@@ -0,0 +1,22 @@
+# Generated by Django 2.0.2 on 2018-02-27 18:43
+from django.db import migrations
+from django.contrib.postgres.operations import CITextExtension
+
+
+class CustomCITExtension(CITextExtension):
+    def database_forwards(self, app_label, schema_editor, from_state, to_state):
+        check_sql = "SELECT 1 FROM pg_extension WHERE extname = 'citext'"
+        with schema_editor.connection.cursor() as cursor:
+            cursor.execute(check_sql)
+            result = cursor.fetchall()
+
+        if result:
+            return
+        return super().database_forwards(app_label, schema_editor, from_state, to_state)
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [("common", "0002_mutation")]
+
+    operations = [CustomCITExtension()]
diff --git a/api/funkwhale_api/common/models.py b/api/funkwhale_api/common/models.py
index 52a02cad9433f4e79972b6cfe858534c830cb513..9fd1a3c7647922bcea73113bb9af45762a84a483 100644
--- a/api/funkwhale_api/common/models.py
+++ b/api/funkwhale_api/common/models.py
@@ -73,7 +73,7 @@ class LocalFromFidQuerySet:
             return self.filter(~query)
 
 
-class MutationQuerySet(models.QuerySet):
+class GenericTargetQuerySet(models.QuerySet):
     def get_for_target(self, target):
         content_type = ContentType.objects.get_for_model(target)
         return self.filter(target_content_type=content_type, target_id=target.pk)
@@ -119,7 +119,7 @@ class Mutation(models.Model):
     )
     target = GenericForeignKey("target_content_type", "target_id")
 
-    objects = MutationQuerySet.as_manager()
+    objects = GenericTargetQuerySet.as_manager()
 
     def get_federation_id(self):
         if self.fid:
diff --git a/api/funkwhale_api/common/mutations.py b/api/funkwhale_api/common/mutations.py
index dfc8ba85e525bcfe442739b97966c794b6fbb58f..13a5a97de03619f90b81e26b6ce8d6dabd502963 100644
--- a/api/funkwhale_api/common/mutations.py
+++ b/api/funkwhale_api/common/mutations.py
@@ -86,6 +86,7 @@ class MutationSerializer(serializers.Serializer):
 
 class UpdateMutationSerializer(serializers.ModelSerializer, MutationSerializer):
     serialized_relations = {}
+    previous_state_handlers = {}
 
     def __init__(self, *args, **kwargs):
         # we force partial mode, because update mutations are partial
@@ -139,16 +140,20 @@ class UpdateMutationSerializer(serializers.ModelSerializer, MutationSerializer):
         return get_update_previous_state(
             obj,
             *list(validated_data.keys()),
-            serialized_relations=self.serialized_relations
+            serialized_relations=self.serialized_relations,
+            handlers=self.previous_state_handlers,
         )
 
 
-def get_update_previous_state(obj, *fields, serialized_relations={}):
+def get_update_previous_state(obj, *fields, serialized_relations={}, handlers={}):
     if not fields:
         raise ValueError("You need to provide at least one field")
 
     state = {}
     for field in fields:
+        if field in handlers:
+            state[field] = handlers[field](obj)
+            continue
         value = getattr(obj, field)
         if isinstance(value, models.Model):
             # we store the related object id and repr for better UX
diff --git a/api/funkwhale_api/common/preferences.py b/api/funkwhale_api/common/preferences.py
index 527d00c0424c6e006d905be5e37d816f0e4eacbe..668a7c8976d2d784696f10fcaf8843e8e01c8d30 100644
--- a/api/funkwhale_api/common/preferences.py
+++ b/api/funkwhale_api/common/preferences.py
@@ -14,6 +14,11 @@ def get(pref):
     return manager[pref]
 
 
+def all():
+    manager = global_preferences_registry.manager()
+    return manager.all()
+
+
 def set(pref, value):
     manager = global_preferences_registry.manager()
     manager[pref] = value
diff --git a/api/funkwhale_api/common/routers.py b/api/funkwhale_api/common/routers.py
new file mode 100644
index 0000000000000000000000000000000000000000..11e9dec615394f44d52d2b92d9dd84bb1eb2e647
--- /dev/null
+++ b/api/funkwhale_api/common/routers.py
@@ -0,0 +1,7 @@
+from rest_framework.routers import SimpleRouter
+
+
+class OptionalSlashRouter(SimpleRouter):
+    def __init__(self):
+        super().__init__()
+        self.trailing_slash = "/?"
diff --git a/api/funkwhale_api/common/throttling.py b/api/funkwhale_api/common/throttling.py
new file mode 100644
index 0000000000000000000000000000000000000000..fe4a5d93464f5c1560352e490ef9f79c6262acc9
--- /dev/null
+++ b/api/funkwhale_api/common/throttling.py
@@ -0,0 +1,151 @@
+import collections
+
+from django.core.cache import cache
+from rest_framework import throttling as rest_throttling
+
+from django.conf import settings
+
+
+def get_ident(request):
+    if hasattr(request, "user") and request.user.is_authenticated:
+        return {"type": "authenticated", "id": request.user.pk}
+    ident = rest_throttling.BaseThrottle().get_ident(request)
+
+    return {"type": "anonymous", "id": ident}
+
+
+def get_cache_key(scope, ident):
+    parts = ["throttling", scope, ident["type"], str(ident["id"])]
+    return ":".join(parts)
+
+
+def get_scope_for_action_and_ident_type(action, ident_type, view_conf={}):
+    config = collections.ChainMap(view_conf, settings.THROTTLING_SCOPES)
+
+    try:
+        action_config = config[action]
+    except KeyError:
+        action_config = config.get("*", {})
+
+    try:
+        return action_config[ident_type]
+    except KeyError:
+        return
+
+
+def get_status(ident, now):
+    data = []
+    throttle = FunkwhaleThrottle()
+    for key in sorted(settings.THROTTLING_RATES.keys()):
+        conf = settings.THROTTLING_RATES[key]
+        row_data = {"id": key, "rate": conf["rate"], "description": conf["description"]}
+        if conf["rate"]:
+            num_requests, duration = throttle.parse_rate(conf["rate"])
+            history = cache.get(get_cache_key(key, ident)) or []
+
+            relevant_history = [h for h in history if h > now - duration]
+            row_data["limit"] = num_requests
+            row_data["duration"] = duration
+            row_data["remaining"] = num_requests - len(relevant_history)
+            if relevant_history and len(relevant_history) >= num_requests:
+                # At this point, the endpoint becomes available again
+                now_request = relevant_history[-1]
+                remaining = duration - (now - int(now_request))
+                row_data["available"] = int(now + remaining) or None
+                row_data["available_seconds"] = int(remaining) or None
+            else:
+                row_data["available"] = None
+                row_data["available_seconds"] = None
+
+            if relevant_history:
+                # At this point, all Rate Limit is reset to 0
+                latest_request = relevant_history[0]
+                remaining = duration - (now - int(latest_request))
+                row_data["reset"] = int(now + remaining)
+                row_data["reset_seconds"] = int(remaining)
+            else:
+                row_data["reset"] = None
+                row_data["reset_seconds"] = None
+        else:
+            row_data["limit"] = None
+            row_data["duration"] = None
+            row_data["remaining"] = None
+            row_data["available"] = None
+            row_data["available_seconds"] = None
+            row_data["reset"] = None
+            row_data["reset_seconds"] = None
+
+        data.append(row_data)
+
+    return data
+
+
+class FunkwhaleThrottle(rest_throttling.SimpleRateThrottle):
+    def __init__(self):
+        pass
+
+    def get_cache_key(self, request, view):
+        return get_cache_key(self.scope, self.ident)
+
+    def allow_request(self, request, view):
+        self.request = request
+        self.ident = get_ident(request)
+        action = getattr(view, "action", "*")
+        view_scopes = getattr(view, "throttling_scopes", {})
+        if view_scopes is None:
+            return True
+        self.scope = get_scope_for_action_and_ident_type(
+            action=action, ident_type=self.ident["type"], view_conf=view_scopes
+        )
+        if not self.scope or self.scope not in settings.THROTTLING_RATES:
+            return True
+        self.rate = settings.THROTTLING_RATES[self.scope].get("rate")
+        self.num_requests, self.duration = self.parse_rate(self.rate)
+        self.request = request
+
+        return super().allow_request(request, view)
+
+    def attach_info(self):
+        info = {
+            "num_requests": self.num_requests,
+            "duration": self.duration,
+            "scope": self.scope,
+            "history": self.history or [],
+            "wait": self.wait(),
+        }
+        setattr(self.request, "_throttle_status", info)
+
+    def throttle_success(self):
+        self.attach_info()
+        return super().throttle_success()
+
+    def throttle_failure(self):
+        self.attach_info()
+        return super().throttle_failure()
+
+
+class TooManyRequests(Exception):
+    pass
+
+
+DummyView = collections.namedtuple("DummyView", "action throttling_scopes")
+
+
+def check_request(request, scope):
+    """
+    A simple wrapper around FunkwhaleThrottle for views that aren't API views
+    or cannot use rest_framework automatic throttling.
+
+    Raise TooManyRequests if limit is reached.
+    """
+    if not settings.THROTTLING_ENABLED:
+        return True
+
+    view = DummyView(
+        action=scope,
+        throttling_scopes={scope: {"anonymous": scope, "authenticated": scope}},
+    )
+    throttle = FunkwhaleThrottle()
+    if not throttle.allow_request(request, view):
+        raise TooManyRequests()
+    return True
diff --git a/api/funkwhale_api/common/utils.py b/api/funkwhale_api/common/utils.py
index 7763e9b7f810090018fb9845a7fb390df812c0d9..55e4fdfbd8f2ae282ca35e187bb2515da3af6902 100644
--- a/api/funkwhale_api/common/utils.py
+++ b/api/funkwhale_api/common/utils.py
@@ -154,7 +154,7 @@ def order_for_search(qs, field):
 
 def recursive_getattr(obj, key, permissive=False):
     """
-    Given a dictionary such as {'user': {'name': 'Bob'}} and
+    Given a dictionary such as {'user': {'name': 'Bob'}} or and object and
     a dotted string such as user.name, returns 'Bob'.
 
     If the value is not present, returns None
@@ -162,7 +162,10 @@ def recursive_getattr(obj, key, permissive=False):
     v = obj
     for k in key.split("."):
         try:
-            v = v.get(k)
+            if hasattr(v, "get"):
+                v = v.get(k)
+            else:
+                v = getattr(v, k)
         except (TypeError, AttributeError):
             if not permissive:
                 raise
diff --git a/api/funkwhale_api/common/views.py b/api/funkwhale_api/common/views.py
index db39c56d1afbb5eed7fa0ba7c89693fb32c57ab4..d197dbe9088541fdb159d20f5c95993af21b4abb 100644
--- a/api/funkwhale_api/common/views.py
+++ b/api/funkwhale_api/common/views.py
@@ -1,3 +1,6 @@
+import time
+
+from django.conf import settings
 from django.db import transaction
 
 from rest_framework.decorators import action
@@ -5,6 +8,7 @@ from rest_framework import exceptions
 from rest_framework import mixins
 from rest_framework import permissions
 from rest_framework import response
+from rest_framework import views
 from rest_framework import viewsets
 
 from . import filters
@@ -13,6 +17,7 @@ from . import mutations
 from . import serializers
 from . import signals
 from . import tasks
+from . import throttling
 from . import utils
 
 
@@ -121,3 +126,17 @@ class MutationViewSet(
             new_is_approved=instance.is_approved,
         )
         return response.Response({}, status=200)
+
+
+class RateLimitView(views.APIView):
+    permission_classes = []
+    throttle_classes = []
+
+    def get(self, request, *args, **kwargs):
+        ident = throttling.get_ident(request)
+        data = {
+            "enabled": settings.THROTTLING_ENABLED,
+            "ident": ident,
+            "scopes": throttling.get_status(ident, time.time()),
+        }
+        return response.Response(data, status=200)
diff --git a/api/funkwhale_api/factories.py b/api/funkwhale_api/factories.py
index 3517ea007981b4745887791a807f4bad32e30f99..f75f327f4476f478d5d60df4d8ee5491a32c6c10 100644
--- a/api/funkwhale_api/factories.py
+++ b/api/funkwhale_api/factories.py
@@ -1,5 +1,6 @@
 import uuid
 import factory
+import random
 import persisting_theory
 
 from django.conf import settings
@@ -46,6 +47,268 @@ class NoUpdateOnCreate:
         return
 
 
+TAGS_DATA = {
+    "type": [
+        "acoustic",
+        "acid",
+        "ambient",
+        "alternative",
+        "brutalist",
+        "chill",
+        "club",
+        "cold",
+        "cool",
+        "contemporary",
+        "dark",
+        "doom",
+        "electro",
+        "folk",
+        "freestyle",
+        "fusion",
+        "garage",
+        "glitch",
+        "hard",
+        "healing",
+        "industrial",
+        "instrumental",
+        "hardcore",
+        "holiday",
+        "hot",
+        "liquid",
+        "modern",
+        "minimalist",
+        "new",
+        "parody",
+        "postmodern",
+        "progressive",
+        "smooth",
+        "symphonic",
+        "traditional",
+        "tribal",
+        "metal",
+    ],
+    "genre": [
+        "blues",
+        "classical",
+        "chiptune",
+        "dance",
+        "disco",
+        "funk",
+        "jazz",
+        "house",
+        "hiphop",
+        "NewAge",
+        "pop",
+        "punk",
+        "rap",
+        "RnB",
+        "reggae",
+        "rock",
+        "soul",
+        "soundtrack",
+        "ska",
+        "swing",
+        "trance",
+    ],
+    "nationality": [
+        "Afghan",
+        "Albanian",
+        "Algerian",
+        "American",
+        "Andorran",
+        "Angolan",
+        "Antiguans",
+        "Argentinean",
+        "Armenian",
+        "Australian",
+        "Austrian",
+        "Azerbaijani",
+        "Bahamian",
+        "Bahraini",
+        "Bangladeshi",
+        "Barbadian",
+        "Barbudans",
+        "Batswana",
+        "Belarusian",
+        "Belgian",
+        "Belizean",
+        "Beninese",
+        "Bhutanese",
+        "Bolivian",
+        "Bosnian",
+        "Brazilian",
+        "British",
+        "Bruneian",
+        "Bulgarian",
+        "Burkinabe",
+        "Burmese",
+        "Burundian",
+        "Cambodian",
+        "Cameroonian",
+        "Canadian",
+        "Cape Verdean",
+        "Central African",
+        "Chadian",
+        "Chilean",
+        "Chinese",
+        "Colombian",
+        "Comoran",
+        "Congolese",
+        "Costa Rican",
+        "Croatian",
+        "Cuban",
+        "Cypriot",
+        "Czech",
+        "Danish",
+        "Djibouti",
+        "Dominican",
+        "Dutch",
+        "East Timorese",
+        "Ecuadorean",
+        "Egyptian",
+        "Emirian",
+        "Equatorial Guinean",
+        "Eritrean",
+        "Estonian",
+        "Ethiopian",
+        "Fijian",
+        "Filipino",
+        "Finnish",
+        "French",
+        "Gabonese",
+        "Gambian",
+        "Georgian",
+        "German",
+        "Ghanaian",
+        "Greek",
+        "Grenadian",
+        "Guatemalan",
+        "Guinea-Bissauan",
+        "Guinean",
+        "Guyanese",
+        "Haitian",
+        "Herzegovinian",
+        "Honduran",
+        "Hungarian",
+        "I-Kiribati",
+        "Icelander",
+        "Indian",
+        "Indonesian",
+        "Iranian",
+        "Iraqi",
+        "Irish",
+        "Israeli",
+        "Italian",
+        "Ivorian",
+        "Jamaican",
+        "Japanese",
+        "Jordanian",
+        "Kazakhstani",
+        "Kenyan",
+        "Kittian and Nevisian",
+        "Kuwaiti",
+        "Kyrgyz",
+        "Laotian",
+        "Latvian",
+        "Lebanese",
+        "Liberian",
+        "Libyan",
+        "Liechtensteiner",
+        "Lithuanian",
+        "Luxembourger",
+        "Macedonian",
+        "Malagasy",
+        "Malawian",
+        "Malaysian",
+        "Maldivian",
+        "Malian",
+        "Maltese",
+        "Marshallese",
+        "Mauritanian",
+        "Mauritian",
+        "Mexican",
+        "Micronesian",
+        "Moldovan",
+        "Monacan",
+        "Mongolian",
+        "Moroccan",
+        "Mosotho",
+        "Motswana",
+        "Mozambican",
+        "Namibian",
+        "Nauruan",
+        "Nepalese",
+        "New Zealander",
+        "Ni-Vanuatu",
+        "Nicaraguan",
+        "Nigerian",
+        "Nigerien",
+        "North Korean",
+        "Northern Irish",
+        "Norwegian",
+        "Omani",
+        "Pakistani",
+        "Palauan",
+        "Panamanian",
+        "Papua New Guinean",
+        "Paraguayan",
+        "Peruvian",
+        "Polish",
+        "Portuguese",
+        "Qatari",
+        "Romanian",
+        "Russian",
+        "Rwandan",
+        "Saint Lucian",
+        "Salvadoran",
+        "Samoan",
+        "San Marinese",
+        "Sao Tomean",
+        "Saudi",
+        "Scottish",
+        "Senegalese",
+        "Serbian",
+        "Seychellois",
+        "Sierra Leonean",
+        "Singaporean",
+        "Slovakian",
+        "Slovenian",
+        "Solomon Islander",
+        "Somali",
+        "South African",
+        "South Korean",
+        "Spanish",
+        "Sri Lankan",
+        "Sudanese",
+        "Surinamer",
+        "Swazi",
+        "Swedish",
+        "Swiss",
+        "Syrian",
+        "Taiwanese",
+        "Tajik",
+        "Tanzanian",
+        "Thai",
+        "Togolese",
+        "Tongan",
+        "Trinidadian",
+        "Tunisian",
+        "Turkish",
+        "Tuvaluan",
+        "Ugandan",
+        "Ukrainian",
+        "Uruguayan",
+        "Uzbekistani",
+        "Venezuelan",
+        "Vietnamese",
+        "Welsh",
+        "Yemenite",
+        "Zambian",
+        "Zimbabwean",
+    ],
+}
+
+
 class FunkwhaleProvider(internet_provider.Provider):
     """
     Our own faker data generator, since built-in ones are sometimes
@@ -61,5 +324,40 @@ class FunkwhaleProvider(internet_provider.Provider):
         path = path_generator()
         return "{}://{}/{}".format(protocol, domain, path)
 
+    def user_name(self):
+        u = super().user_name()
+        return "{}{}".format(u, random.randint(10, 999))
+
+    def music_genre(self):
+        return random.choice(TAGS_DATA["genre"])
+
+    def music_type(self):
+        return random.choice(TAGS_DATA["type"])
+
+    def music_nationality(self):
+        return random.choice(TAGS_DATA["nationality"])
+
+    def music_hashtag(self, prefix_length=4):
+        genre = self.music_genre()
+        prefixes = [genre]
+        nationality = False
+        while len(prefixes) < prefix_length:
+            if nationality:
+                t = "type"
+            else:
+                t = random.choice(["type", "nationality", "genre"])
+
+            if t == "nationality":
+                nationality = True
+
+            choice = random.choice(TAGS_DATA[t])
+            if choice in prefixes:
+                continue
+            prefixes.append(choice)
+
+        return "".join(
+            [p.capitalize().strip().replace(" ", "") for p in reversed(prefixes)]
+        )
+
 
 factory.Faker.add_provider(FunkwhaleProvider)
diff --git a/api/funkwhale_api/favorites/serializers.py b/api/funkwhale_api/favorites/serializers.py
index 66e10a1b49275781fc5b68d785b613b6b46a2079..dd28dcd07cbaff216d9988f9641d890f069b0d50 100644
--- a/api/funkwhale_api/favorites/serializers.py
+++ b/api/funkwhale_api/favorites/serializers.py
@@ -1,6 +1,7 @@
 from rest_framework import serializers
 
 from funkwhale_api.activity import serializers as activity_serializers
+from funkwhale_api.federation import serializers as federation_serializers
 from funkwhale_api.music.serializers import TrackActivitySerializer, TrackSerializer
 from funkwhale_api.users.serializers import UserActivitySerializer, UserBasicSerializer
 
@@ -27,10 +28,17 @@ class TrackFavoriteActivitySerializer(activity_serializers.ModelSerializer):
 class UserTrackFavoriteSerializer(serializers.ModelSerializer):
     track = TrackSerializer(read_only=True)
     user = UserBasicSerializer(read_only=True)
+    actor = serializers.SerializerMethodField()
 
     class Meta:
         model = models.TrackFavorite
-        fields = ("id", "user", "track", "creation_date")
+        fields = ("id", "user", "track", "creation_date", "actor")
+        actor = serializers.SerializerMethodField()
+
+    def get_actor(self, obj):
+        actor = obj.user.actor
+        if actor:
+            return federation_serializers.APIActorSerializer(actor).data
 
 
 class UserTrackFavoriteWriteSerializer(serializers.ModelSerializer):
diff --git a/api/funkwhale_api/favorites/urls.py b/api/funkwhale_api/favorites/urls.py
index 28d0c867667d24c7daa8cd090b670e2060e5d147..51f3078038e882aeb90a41bf1f4a1c870e7d9d56 100644
--- a/api/funkwhale_api/favorites/urls.py
+++ b/api/funkwhale_api/favorites/urls.py
@@ -1,8 +1,8 @@
-from rest_framework import routers
+from funkwhale_api.common import routers
 
 from . import views
 
-router = routers.SimpleRouter()
+router = routers.OptionalSlashRouter()
 router.register(r"tracks", views.TrackFavoriteViewSet, "tracks")
 
 urlpatterns = router.urls
diff --git a/api/funkwhale_api/favorites/views.py b/api/funkwhale_api/favorites/views.py
index dce285d85c65061fe81a86ceaa1886a6efe35ee7..7d1991bc67ebbba7f22932f91301265308ff9f32 100644
--- a/api/funkwhale_api/favorites/views.py
+++ b/api/funkwhale_api/favorites/views.py
@@ -22,7 +22,7 @@ class TrackFavoriteViewSet(
 
     filterset_class = filters.TrackFavoriteFilter
     serializer_class = serializers.UserTrackFavoriteSerializer
-    queryset = models.TrackFavorite.objects.all().select_related("user")
+    queryset = models.TrackFavorite.objects.all().select_related("user__actor")
     permission_classes = [
         oauth_permissions.ScopePermission,
         permissions.OwnerPermission,
@@ -54,7 +54,7 @@ class TrackFavoriteViewSet(
         )
         tracks = Track.objects.with_playable_uploads(
             music_utils.get_actor_from_request(self.request)
-        ).select_related("artist", "album__artist")
+        ).select_related("artist", "album__artist", "attributed_to")
         queryset = queryset.prefetch_related(Prefetch("track", queryset=tracks))
         return queryset
 
diff --git a/api/funkwhale_api/federation/activity.py b/api/funkwhale_api/federation/activity.py
index 979b8aa1befb356e1c423163d1d863de96393b30..e3fb7be3200c97f3d70a9b89494f6a7754f53b41 100644
--- a/api/funkwhale_api/federation/activity.py
+++ b/api/funkwhale_api/federation/activity.py
@@ -1,5 +1,6 @@
 import uuid
 import logging
+import urllib.parse
 
 from django.core.cache import cache
 from django.conf import settings
@@ -122,32 +123,38 @@ def receive(activity, on_behalf_of):
     from . import serializers
     from . import tasks
     from .routes import inbox
+    from funkwhale_api.moderation import mrf
 
+    logger.debug(
+        "[federation] Received activity from %s : %s", on_behalf_of.fid, activity
+    )
     # we ensure the activity has the bare minimum structure before storing
     # it in our database
     serializer = serializers.BaseActivitySerializer(
         data=activity, context={"actor": on_behalf_of, "local_recipients": True}
     )
     serializer.is_valid(raise_exception=True)
-    if not inbox.get_matching_handlers(activity):
-        # discard unhandlable activity
-        return
 
-    if should_reject(
-        fid=serializer.validated_data.get("id"),
-        actor_id=serializer.validated_data["actor"].fid,
-        payload=activity,
-    ):
+    payload, updated = mrf.inbox.apply(activity, sender_id=on_behalf_of.fid)
+    if not payload:
         logger.info(
-            "[federation] Discarding activity due to instance policies %s",
+            "[federation] Discarding activity due to mrf %s",
             serializer.validated_data.get("id"),
         )
         return
+
+    if not inbox.get_matching_handlers(payload):
+        # discard unhandlable activity
+        logger.debug(
+            "[federation] No matching route found for activity, discarding: %s", payload
+        )
+        return
+
     try:
-        copy = serializer.save()
+        copy = serializer.save(payload=payload, type=payload["type"])
     except IntegrityError:
         logger.warning(
-            "[federation] Discarding already elivered activity %s",
+            "[federation] Discarding already delivered activity %s",
             serializer.validated_data.get("id"),
         )
         return
@@ -283,9 +290,19 @@ class OutboxRouter(Router):
         and may yield data that should be persisted in the Activity model
         for further delivery.
         """
+        from funkwhale_api.common import preferences
         from . import models
         from . import tasks
 
+        allow_list_enabled = preferences.get("moderation__allow_list_enabled")
+        allowed_domains = None
+        if allow_list_enabled:
+            allowed_domains = set(
+                models.Domain.objects.filter(allowed=True).values_list(
+                    "name", flat=True
+                )
+            )
+
         for route, handler in self.routes:
             if not match_route(route, routing):
                 continue
@@ -314,10 +331,10 @@ class OutboxRouter(Router):
                 a = models.Activity(**activity_data)
                 a.uuid = uuid.uuid4()
                 to_inbox_items, to_deliveries, new_to = prepare_deliveries_and_inbox_items(
-                    to, "to"
+                    to, "to", allowed_domains=allowed_domains
                 )
                 cc_inbox_items, cc_deliveries, new_cc = prepare_deliveries_and_inbox_items(
-                    cc, "cc"
+                    cc, "cc", allowed_domains=allowed_domains
                 )
                 if not any(
                     [to_inbox_items, to_deliveries, cc_inbox_items, cc_deliveries]
@@ -368,13 +385,23 @@ class OutboxRouter(Router):
 def match_route(route, payload):
     for key, value in route.items():
         payload_value = recursive_getattr(payload, key, permissive=True)
-        if payload_value != value:
+        if isinstance(value, list):
+            if payload_value not in value:
+                return False
+        elif payload_value != value:
             return False
 
     return True
 
 
-def prepare_deliveries_and_inbox_items(recipient_list, type):
+def is_allowed_url(url, allowed_domains):
+    return (
+        allowed_domains is None
+        or urllib.parse.urlparse(url).hostname in allowed_domains
+    )
+
+
+def prepare_deliveries_and_inbox_items(recipient_list, type, allowed_domains=None):
     """
     Given a list of recipients (
         either actor instances, public adresses, a dictionnary with a "type" and "target"
@@ -384,10 +411,12 @@ def prepare_deliveries_and_inbox_items(recipient_list, type):
     """
     from . import models
 
+    if allowed_domains is not None:
+        allowed_domains = set(allowed_domains)
+        allowed_domains.add(settings.FEDERATION_HOSTNAME)
     local_recipients = set()
     remote_inbox_urls = set()
     urls = []
-
     for r in recipient_list:
         if isinstance(r, models.Actor):
             if r.is_local:
@@ -424,15 +453,39 @@ def prepare_deliveries_and_inbox_items(recipient_list, type):
                     .exclude(actor__domain=None)
                 )
             )
+            followed_domains = list(follows.values_list("actor__domain_id", flat=True))
             actors = models.Actor.objects.filter(
-                managed_domains__name__in=follows.values_list(
-                    "actor__domain_id", flat=True
-                )
+                managed_domains__name__in=followed_domains
             )
-            values = actors.values("shared_inbox_url", "inbox_url")
+            values = actors.values("shared_inbox_url", "inbox_url", "domain_id")
+            handled_domains = set()
             for v in values:
                 remote_inbox_urls.add(v["shared_inbox_url"] or v["inbox_url"])
-    deliveries = [models.Delivery(inbox_url=url) for url in remote_inbox_urls]
+                handled_domains.add(v["domain_id"])
+
+            if len(handled_domains) >= len(followed_domains):
+                continue
+
+            # for all remaining domains (probably non-funkwhale instances, with no
+            # service actors), we also pick the latest known actor per domain and send the message
+            # there instead
+            remaining_domains = models.Domain.objects.exclude(name__in=handled_domains)
+            remaining_domains = remaining_domains.filter(name__in=followed_domains)
+            actors = models.Actor.objects.filter(domain__in=remaining_domains)
+            actors = (
+                actors.order_by("domain_id", "-last_fetch_date")
+                .distinct("domain_id")
+                .values("shared_inbox_url", "inbox_url")
+            )
+            for v in actors:
+                remote_inbox_urls.add(v["shared_inbox_url"] or v["inbox_url"])
+
+    deliveries = [
+        models.Delivery(inbox_url=url)
+        for url in remote_inbox_urls
+        if is_allowed_url(url, allowed_domains)
+    ]
+    urls = [url for url in urls if is_allowed_url(url, allowed_domains)]
     inbox_items = [
         models.InboxItem(actor=actor, type=type) for actor in local_recipients
     ]
diff --git a/api/funkwhale_api/federation/admin.py b/api/funkwhale_api/federation/admin.py
index 263af80cb175e1235ebfd654a3daf142c19ea927..8e66708cfcd13054ff57f5477a3feef9788a446b 100644
--- a/api/funkwhale_api/federation/admin.py
+++ b/api/funkwhale_api/federation/admin.py
@@ -26,7 +26,8 @@ redeliver_activities.short_description = "Redeliver"
 
 @admin.register(models.Domain)
 class DomainAdmin(admin.ModelAdmin):
-    list_display = ["name", "creation_date"]
+    list_display = ["name", "allowed", "creation_date"]
+    list_filter = ["allowed"]
     search_fields = ["name"]
 
 
@@ -40,7 +41,7 @@ class FetchAdmin(admin.ModelAdmin):
 
 @admin.register(models.Activity)
 class ActivityAdmin(admin.ModelAdmin):
-    list_display = ["type", "fid", "url", "actor", "creation_date"]
+    list_display = ["uuid", "type", "fid", "url", "actor", "creation_date"]
     search_fields = ["payload", "fid", "url", "actor__domain__name"]
     list_filter = ["type", "actor__domain__name"]
     actions = [redeliver_activities]
diff --git a/api/funkwhale_api/federation/api_urls.py b/api/funkwhale_api/federation/api_urls.py
index bd2258de961f8d0c80f8b2a3b73d5dd6a9a8ca07..896fa2430448bcb275e05688b9863dff0ed3528e 100644
--- a/api/funkwhale_api/federation/api_urls.py
+++ b/api/funkwhale_api/federation/api_urls.py
@@ -1,8 +1,8 @@
-from rest_framework import routers
+from funkwhale_api.common import routers
 
 from . import api_views
 
-router = routers.SimpleRouter()
+router = routers.OptionalSlashRouter()
 router.register(r"fetches", api_views.FetchViewSet, "fetches")
 router.register(r"follows/library", api_views.LibraryFollowViewSet, "library-follows")
 router.register(r"inbox", api_views.InboxItemViewSet, "inbox")
diff --git a/api/funkwhale_api/federation/authentication.py b/api/funkwhale_api/federation/authentication.py
index 75e0332421feb115eac1ee58acc2906b2ae06ae5..123d7bd89679ae0ece57b49b3f6f21fcfcc17193 100644
--- a/api/funkwhale_api/federation/authentication.py
+++ b/api/funkwhale_api/federation/authentication.py
@@ -1,13 +1,14 @@
 import cryptography
 import logging
 import datetime
-
+import urllib.parse
 from django.contrib.auth.models import AnonymousUser
 from django.utils import timezone
 
 from rest_framework import authentication, exceptions as rest_exceptions
+from funkwhale_api.common import preferences
 from funkwhale_api.moderation import models as moderation_models
-from . import actors, exceptions, keys, signing, tasks, utils
+from . import actors, exceptions, keys, models, signing, tasks, utils
 
 
 logger = logging.getLogger(__name__)
@@ -37,6 +38,16 @@ class SignatureAuthentication(authentication.BaseAuthentication):
         if policies.exists():
             raise exceptions.BlockedActorOrDomain()
 
+        if request.method.lower() == "get" and preferences.get(
+            "moderation__allow_list_enabled"
+        ):
+            # Only GET requests because POST requests with messages will be handled through
+            # MRF
+            domain = urllib.parse.urlparse(actor_url).hostname
+            allowed = models.Domain.objects.filter(name=domain, allowed=True).exists()
+            if not allowed:
+                raise exceptions.BlockedActorOrDomain()
+
         try:
             actor = actors.get_actor(actor_url)
         except Exception as e:
diff --git a/api/funkwhale_api/federation/contexts.py b/api/funkwhale_api/federation/contexts.py
index 0873bcd46b04d715e861a9244a1327187d50167d..b3fc112f0e0c233595ba9a63d4af9bf6bee73d2a 100644
--- a/api/funkwhale_api/federation/contexts.py
+++ b/api/funkwhale_api/federation/contexts.py
@@ -214,6 +214,7 @@ CONTEXTS = [
                 "shares": {"@id": "as:shares", "@type": "@id"},
                 # Added manually
                 "manuallyApprovesFollowers": "as:manuallyApprovesFollowers",
+                "Hashtag": "as:Hashtag",
             }
         },
     },
diff --git a/api/funkwhale_api/federation/dynamic_preferences_registry.py b/api/funkwhale_api/federation/dynamic_preferences_registry.py
index 01bfdf72744b51d6d9c86638c2a40004cbc6171f..cf1faa7048141101547c71165da07e416690dbc2 100644
--- a/api/funkwhale_api/federation/dynamic_preferences_registry.py
+++ b/api/funkwhale_api/federation/dynamic_preferences_registry.py
@@ -14,7 +14,7 @@ class MusicCacheDuration(types.IntPreference):
     default = 60 * 24 * 2
     verbose_name = "Music cache duration"
     help_text = (
-        "How much minutes do you want to keep a copy of federated tracks"
+        "How many minutes do you want to keep a copy of federated tracks "
         "locally? Federated files that were not listened in this interval "
         "will be erased and refetched from the remote on the next listening."
     )
@@ -38,7 +38,7 @@ class CollectionPageSize(preferences.DefaultFromSettingMixin, types.IntPreferenc
     name = "collection_page_size"
     setting = "FEDERATION_COLLECTION_PAGE_SIZE"
     verbose_name = "Federation collection page size"
-    help_text = "How much items to display in ActivityPub collections."
+    help_text = "How many items to display in ActivityPub collections."
     field_kwargs = {"required": False}
 
 
@@ -49,7 +49,7 @@ class ActorFetchDelay(preferences.DefaultFromSettingMixin, types.IntPreference):
     setting = "FEDERATION_ACTOR_FETCH_DELAY"
     verbose_name = "Federation actor fetch delay"
     help_text = (
-        "How much minutes to wait before refetching actors on "
+        "How many minutes to wait before refetching actors on "
         "request authentication."
     )
     field_kwargs = {"required": False}
diff --git a/api/funkwhale_api/federation/factories.py b/api/funkwhale_api/federation/factories.py
index 14bb4e8c96ea150a09fbf95bdbbbcb021f270a8c..95d68779b9b2facd7eb33df9c1b7913c691c760c 100644
--- a/api/funkwhale_api/federation/factories.py
+++ b/api/funkwhale_api/federation/factories.py
@@ -70,6 +70,7 @@ def create_user(actor):
 class DomainFactory(NoUpdateOnCreate, factory.django.DjangoModelFactory):
     name = factory.Faker("domain_name")
     nodeinfo_fetch_date = factory.LazyFunction(lambda: timezone.now())
+    allowed = None
 
     class Meta:
         model = "federation.Domain"
diff --git a/api/funkwhale_api/federation/migrations/0019_auto_20190611_0851.py b/api/funkwhale_api/federation/migrations/0019_auto_20190611_0851.py
new file mode 100644
index 0000000000000000000000000000000000000000..4ae5e31fb24316c27dc032e8f89a22a6b1179c24
--- /dev/null
+++ b/api/funkwhale_api/federation/migrations/0019_auto_20190611_0851.py
@@ -0,0 +1,19 @@
+# Generated by Django 2.2.2 on 2019-06-11 08:51
+
+import django.contrib.postgres.fields.jsonb
+import django.core.serializers.json
+from django.db import migrations, models
+import funkwhale_api.federation.models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [("federation", "0018_fetch")]
+
+    operations = [
+        migrations.AddField(
+            model_name="domain",
+            name="allowed",
+            field=models.BooleanField(default=None, null=True),
+        )
+    ]
diff --git a/api/funkwhale_api/federation/migrations/0020_auto_20190730_0846.py b/api/funkwhale_api/federation/migrations/0020_auto_20190730_0846.py
new file mode 100644
index 0000000000000000000000000000000000000000..efed1d306afa2450b600d33fbc117b3e8420ce26
--- /dev/null
+++ b/api/funkwhale_api/federation/migrations/0020_auto_20190730_0846.py
@@ -0,0 +1,31 @@
+# Generated by Django 2.2.3 on 2019-07-30 08:46
+
+import django.contrib.postgres.fields.jsonb
+import django.core.serializers.json
+from django.db import migrations
+import funkwhale_api.federation.models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('federation', '0019_auto_20190611_0851'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='activity',
+            name='payload',
+            field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=funkwhale_api.federation.models.empty_dict, encoder=django.core.serializers.json.DjangoJSONEncoder, max_length=50000),
+        ),
+        migrations.AlterField(
+            model_name='fetch',
+            name='detail',
+            field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=funkwhale_api.federation.models.empty_dict, encoder=django.core.serializers.json.DjangoJSONEncoder, max_length=50000),
+        ),
+        migrations.AlterField(
+            model_name='librarytrack',
+            name='metadata',
+            field=django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=funkwhale_api.federation.models.empty_dict, encoder=django.core.serializers.json.DjangoJSONEncoder, max_length=10000),
+        ),
+    ]
diff --git a/api/funkwhale_api/federation/models.py b/api/funkwhale_api/federation/models.py
index d530c62df1007d4012609eec6fd530ed347cacb2..c734939b3fb1c56dd30c224ad66a3838afe943ac 100644
--- a/api/funkwhale_api/federation/models.py
+++ b/api/funkwhale_api/federation/models.py
@@ -21,6 +21,7 @@ from . import utils as federation_utils
 
 TYPE_CHOICES = [
     ("Person", "Person"),
+    ("Tombstone", "Tombstone"),
     ("Application", "Application"),
     ("Group", "Group"),
     ("Organization", "Organization"),
@@ -118,6 +119,9 @@ class Domain(models.Model):
         null=True,
         blank=True,
     )
+    # are interactions with this domain allowed (only applies when allow-listing is on)
+    allowed = models.BooleanField(default=None, null=True)
+
     objects = DomainQuerySet.as_manager()
 
     def __str__(self):
@@ -201,6 +205,10 @@ class Actor(models.Model):
 
     class Meta:
         unique_together = ["domain", "preferred_username"]
+        verbose_name = "Account"
+
+    def get_moderation_url(self):
+        return "/manage/moderation/accounts/{}".format(self.full_username)
 
     @property
     def webfinger_subject(self):
@@ -245,6 +253,7 @@ class Actor(models.Model):
 
     def get_stats(self):
         from funkwhale_api.music import models as music_models
+        from funkwhale_api.moderation import models as moderation_models
 
         data = Actor.objects.filter(pk=self.pk).aggregate(
             outbox_activities=models.Count("outbox_activities", distinct=True),
@@ -257,6 +266,7 @@ class Actor(models.Model):
         data["artists"] = music_models.Artist.objects.filter(
             from_activity__actor=self.pk
         ).count()
+        data["reports"] = moderation_models.Report.objects.get_for_target(self).count()
         data["albums"] = music_models.Album.objects.filter(
             from_activity__actor=self.pk
         ).count()
diff --git a/api/funkwhale_api/federation/mrf_policies.py b/api/funkwhale_api/federation/mrf_policies.py
new file mode 100644
index 0000000000000000000000000000000000000000..220c0d3cba65948235c3ebd0afd707ccb226ed72
--- /dev/null
+++ b/api/funkwhale_api/federation/mrf_policies.py
@@ -0,0 +1,15 @@
+from funkwhale_api.moderation import mrf
+
+
+from . import activity
+
+
+@mrf.inbox.register(name="instance_policies")
+def instance_policies(payload, **kwargs):
+    reject = activity.should_reject(
+        fid=payload.get("id"),
+        actor_id=kwargs.get("sender_id", payload.get("id")),
+        payload=payload,
+    )
+    if reject:
+        raise mrf.Discard()
diff --git a/api/funkwhale_api/federation/routes.py b/api/funkwhale_api/federation/routes.py
index bae2812cea0c678d1024e96a4b50233528cb8e2e..41497e9f232f8bc8e29e583ff3859ca7d1633738 100644
--- a/api/funkwhale_api/federation/routes.py
+++ b/api/funkwhale_api/federation/routes.py
@@ -4,6 +4,7 @@ from funkwhale_api.music import models as music_models
 
 from . import activity
 from . import actors
+from . import models
 from . import serializers
 
 logger = logging.getLogger(__name__)
@@ -380,3 +381,63 @@ def outbox_update_artist(context):
             to=[activity.PUBLIC_ADDRESS, {"type": "instances_with_followers"}],
         ),
     }
+
+
+@outbox.register(
+    {
+        "type": "Delete",
+        "object.type": [
+            "Tombstone",
+            "Actor",
+            "Person",
+            "Application",
+            "Organization",
+            "Service",
+            "Group",
+        ],
+    }
+)
+def outbox_delete_actor(context):
+    actor = context["actor"]
+    serializer = serializers.ActivitySerializer(
+        {"type": "Delete", "object": {"type": actor.type, "id": actor.fid}}
+    )
+    yield {
+        "type": "Delete",
+        "actor": actor,
+        "payload": with_recipients(
+            serializer.data,
+            to=[activity.PUBLIC_ADDRESS, {"type": "instances_with_followers"}],
+        ),
+    }
+
+
+@inbox.register(
+    {
+        "type": "Delete",
+        "object.type": [
+            "Tombstone",
+            "Actor",
+            "Person",
+            "Application",
+            "Organization",
+            "Service",
+            "Group",
+        ],
+    }
+)
+def inbox_delete_actor(payload, context):
+    actor = context["actor"]
+    serializer = serializers.ActorDeleteSerializer(data=payload)
+    if not serializer.is_valid():
+        logger.info("Skipped actor %s deletion, invalid payload", actor.fid)
+        return
+
+    deleted_fid = serializer.validated_data["fid"]
+    try:
+        # ensure the actor only can delete itself, and is a remote one
+        actor = models.Actor.objects.local(False).get(fid=deleted_fid, pk=actor.pk)
+    except models.Actor.DoesNotExist:
+        logger.warn("Cannot delete actor %s, no matching object found", actor.fid)
+        return
+    actor.delete()
diff --git a/api/funkwhale_api/federation/serializers.py b/api/funkwhale_api/federation/serializers.py
index f7210e324bc2092b99a4e692b4d63bdc43ad7978..697c2acc9152305227a1714e072ebea8efa4cf2b 100644
--- a/api/funkwhale_api/federation/serializers.py
+++ b/api/funkwhale_api/federation/serializers.py
@@ -11,6 +11,7 @@ from funkwhale_api.common import utils as funkwhale_utils
 from funkwhale_api.music import licenses
 from funkwhale_api.music import models as music_models
 from funkwhale_api.music import tasks as music_tasks
+from funkwhale_api.tags import models as tags_models
 
 from . import activity, actors, contexts, jsonld, models, tasks, utils
 
@@ -778,9 +779,24 @@ MUSIC_ENTITY_JSONLD_MAPPING = {
     "published": jsonld.first_val(contexts.AS.published),
     "musicbrainzId": jsonld.first_val(contexts.FW.musicbrainzId),
     "attributedTo": jsonld.first_id(contexts.AS.attributedTo),
+    "tags": jsonld.raw(contexts.AS.tag),
 }
 
 
+class TagSerializer(jsonld.JsonLdSerializer):
+    type = serializers.ChoiceField(choices=[contexts.AS.Hashtag])
+    name = serializers.CharField(max_length=100)
+
+    class Meta:
+        jsonld_mapping = {"name": jsonld.first_val(contexts.AS.name)}
+
+    def validate_name(self, value):
+        if value.startswith("#"):
+            # remove trailing #
+            value = value[1:]
+        return value
+
+
 class MusicEntitySerializer(jsonld.JsonLdSerializer):
     id = serializers.URLField(max_length=500)
     published = serializers.DateTimeField()
@@ -788,6 +804,9 @@ class MusicEntitySerializer(jsonld.JsonLdSerializer):
     name = serializers.CharField(max_length=1000)
     attributedTo = serializers.URLField(max_length=500, allow_null=True, required=False)
     updateable_fields = []
+    tags = serializers.ListField(
+        child=TagSerializer(), min_length=0, required=False, allow_null=True
+    )
 
     def update(self, instance, validated_data):
         attributed_to_fid = validated_data.get("attributedTo")
@@ -797,10 +816,18 @@ class MusicEntitySerializer(jsonld.JsonLdSerializer):
             self.updateable_fields, validated_data, instance
         )
         if updated_fields:
-            return music_tasks.update_library_entity(instance, updated_fields)
+            music_tasks.update_library_entity(instance, updated_fields)
 
+        tags = [t["name"] for t in validated_data.get("tags", []) or []]
+        tags_models.set_tags(instance, *tags)
         return instance
 
+    def get_tags_repr(self, instance):
+        return [
+            {"type": "Hashtag", "name": "#{}".format(tag)}
+            for tag in sorted(instance.tagged_items.values_list("tag__name", flat=True))
+        ]
+
 
 class ArtistSerializer(MusicEntitySerializer):
     updateable_fields = [
@@ -823,6 +850,7 @@ class ArtistSerializer(MusicEntitySerializer):
             "attributedTo": instance.attributed_to.fid
             if instance.attributed_to
             else None,
+            "tag": self.get_tags_repr(instance),
         }
 
         if self.context.get("include_ap_context", self.parent is None):
@@ -872,6 +900,7 @@ class AlbumSerializer(MusicEntitySerializer):
             "attributedTo": instance.attributed_to.fid
             if instance.attributed_to
             else None,
+            "tag": self.get_tags_repr(instance),
         }
         if instance.cover:
             d["cover"] = {
@@ -941,6 +970,7 @@ class TrackSerializer(MusicEntitySerializer):
             "attributedTo": instance.attributed_to.fid
             if instance.attributed_to
             else None,
+            "tag": self.get_tags_repr(instance),
         }
 
         if self.context.get("include_ap_context", self.parent is None):
@@ -981,7 +1011,6 @@ class TrackSerializer(MusicEntitySerializer):
             if not url:
                 continue
             references[url] = actors.get_actor(url)
-
         metadata = music_tasks.federation_audio_track_to_metadata(
             validated_data, references
         )
@@ -990,6 +1019,7 @@ class TrackSerializer(MusicEntitySerializer):
         if from_activity:
             metadata["from_activity_id"] = from_activity.pk
         track = music_tasks.get_track_from_import_metadata(metadata, update_cover=True)
+
         return track
 
     def update(self, obj, validated_data):
@@ -1108,6 +1138,13 @@ class UploadSerializer(jsonld.JsonLdSerializer):
         return d
 
 
+class ActorDeleteSerializer(jsonld.JsonLdSerializer):
+    fid = serializers.URLField(max_length=500)
+
+    class Meta:
+        jsonld_mapping = {"fid": jsonld.first_id(contexts.AS.object)}
+
+
 class NodeInfoLinkSerializer(serializers.Serializer):
     href = serializers.URLField()
     rel = serializers.URLField()
diff --git a/api/funkwhale_api/federation/tasks.py b/api/funkwhale_api/federation/tasks.py
index f6471ef215f9a2528786407f7b24a29045e008e2..163ac778852e78dea1b91c3ee20f3cb8eefef64c 100644
--- a/api/funkwhale_api/federation/tasks.py
+++ b/api/funkwhale_api/federation/tasks.py
@@ -190,7 +190,11 @@ def update_domain_nodeinfo(domain):
     now = timezone.now()
     try:
         nodeinfo = {"status": "ok", "payload": fetch_nodeinfo(domain.name)}
-    except (requests.RequestException, serializers.serializers.ValidationError) as e:
+    except (
+        requests.RequestException,
+        serializers.serializers.ValidationError,
+        ValueError,
+    ) as e:
         nodeinfo = {"status": "error", "error": str(e)}
 
     service_actor_id = common_utils.recursive_getattr(
diff --git a/api/funkwhale_api/federation/urls.py b/api/funkwhale_api/federation/urls.py
index f7d5006da0cdf50df601da96e78fc5b8e97d00ca..a193087dbfcdd08eb2e4b14c9748da1eec36dd83 100644
--- a/api/funkwhale_api/federation/urls.py
+++ b/api/funkwhale_api/federation/urls.py
@@ -9,6 +9,7 @@ music_router = routers.SimpleRouter(trailing_slash=False)
 router.register(r"federation/shared", views.SharedViewSet, "shared")
 router.register(r"federation/actors", views.ActorViewSet, "actors")
 router.register(r"federation/edits", views.EditViewSet, "edits")
+router.register(r"federation/reports", views.ReportViewSet, "reports")
 router.register(r".well-known", views.WellKnownViewSet, "well-known")
 
 music_router.register(r"libraries", views.MusicLibraryViewSet, "libraries")
diff --git a/api/funkwhale_api/federation/utils.py b/api/funkwhale_api/federation/utils.py
index 8f73c57350a2290f4fea9e106859b460052a24c0..c2eacfe9d658ee8dd48b3bfe144e0d828de1a279 100644
--- a/api/funkwhale_api/federation/utils.py
+++ b/api/funkwhale_api/federation/utils.py
@@ -4,7 +4,7 @@ from django.conf import settings
 from django.db.models import Q
 
 from funkwhale_api.common import session
-from funkwhale_api.moderation import models as moderation_models
+from funkwhale_api.moderation import mrf
 
 from . import exceptions
 from . import signing
@@ -64,10 +64,10 @@ def slugify_username(username):
 def retrieve_ap_object(
     fid, actor, serializer_class=None, queryset=None, apply_instance_policies=True
 ):
-    from . import activity
-
-    policies = moderation_models.InstancePolicy.objects.active().filter(block_all=True)
-    if apply_instance_policies and policies.matching_url(fid):
+    # we have a duplicate check here because it's less expensive to do those checks
+    # twice than to trigger a HTTP request
+    payload, updated = mrf.inbox.apply({"id": fid})
+    if not payload:
         raise exceptions.BlockedActorOrDomain()
     if queryset:
         try:
@@ -94,15 +94,12 @@ def retrieve_ap_object(
     response.raise_for_status()
     data = response.json()
 
-    # we match against moderation policies here again, because the FID of the returned
-    # object may not be the same as the URL used to access it
-    try:
-        id = data["id"]
-    except KeyError:
-        pass
-    else:
-        if apply_instance_policies and activity.should_reject(fid=id, payload=data):
-            raise exceptions.BlockedActorOrDomain()
+    # we match against mrf here again, because new data may yield different
+    # results
+    data, updated = mrf.inbox.apply(data)
+    if not data:
+        raise exceptions.BlockedActorOrDomain()
+
     if not serializer_class:
         return data
     serializer = serializer_class(data=data, context={"fetch_actor": actor})
@@ -131,3 +128,32 @@ def is_local(url):
     return url.startswith("http://{}/".format(d)) or url.startswith(
         "https://{}/".format(d)
     )
+
+
+def get_actor_data_from_username(username):
+
+    parts = username.split("@")
+
+    return {
+        "username": parts[0],
+        "domain": parts[1] if len(parts) > 1 else settings.FEDERATION_HOSTNAME,
+    }
+
+
+def get_actor_from_username_data_query(field, data):
+    if not data:
+        return Q(**{field: None})
+    if field:
+        return Q(
+            **{
+                "{}__preferred_username__iexact".format(field): data["username"],
+                "{}__domain__name__iexact".format(field): data["domain"],
+            }
+        )
+    else:
+        return Q(
+            **{
+                "preferred_username__iexact": data["username"],
+                "domain__name__iexact": data["domain"],
+            }
+        )
diff --git a/api/funkwhale_api/federation/views.py b/api/funkwhale_api/federation/views.py
index 97bcebbfb374d5a765f30386ab430935d84f68f5..85594e02bfb55a086328f08e546117490b9b6dc4 100644
--- a/api/funkwhale_api/federation/views.py
+++ b/api/funkwhale_api/federation/views.py
@@ -2,17 +2,28 @@ from django import forms
 from django.core import paginator
 from django.http import HttpResponse
 from django.urls import reverse
-from rest_framework import exceptions, mixins, response, viewsets
+from rest_framework import exceptions, mixins, permissions, response, viewsets
 from rest_framework.decorators import action
 
 from funkwhale_api.common import preferences
+from funkwhale_api.moderation import models as moderation_models
 from funkwhale_api.music import models as music_models
 from funkwhale_api.music import utils as music_utils
 
 from . import activity, authentication, models, renderers, serializers, utils, webfinger
 
 
+class AuthenticatedIfAllowListEnabled(permissions.BasePermission):
+    def has_permission(self, request, view):
+        allow_list_enabled = preferences.get("moderation__allow_list_enabled")
+        if not allow_list_enabled:
+            return True
+        return bool(request.actor)
+
+
 class FederationMixin(object):
+    permission_classes = [AuthenticatedIfAllowListEnabled]
+
     def dispatch(self, request, *args, **kwargs):
         if not preferences.get("federation__enabled"):
             return HttpResponse(status=405)
@@ -20,7 +31,6 @@ class FederationMixin(object):
 
 
 class SharedViewSet(FederationMixin, viewsets.GenericViewSet):
-    permission_classes = []
     authentication_classes = [authentication.SignatureAuthentication]
     renderer_classes = renderers.get_ap_renderers()
 
@@ -38,7 +48,6 @@ class SharedViewSet(FederationMixin, viewsets.GenericViewSet):
 class ActorViewSet(FederationMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet):
     lookup_field = "preferred_username"
     authentication_classes = [authentication.SignatureAuthentication]
-    permission_classes = []
     renderer_classes = renderers.get_ap_renderers()
     queryset = models.Actor.objects.local().select_related("user")
     serializer_class = serializers.ActorSerializer
@@ -73,12 +82,20 @@ class ActorViewSet(FederationMixin, mixins.RetrieveModelMixin, viewsets.GenericV
 class EditViewSet(FederationMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet):
     lookup_field = "uuid"
     authentication_classes = [authentication.SignatureAuthentication]
-    permission_classes = []
     renderer_classes = renderers.get_ap_renderers()
     # queryset = common_models.Mutation.objects.local().select_related()
     # serializer_class = serializers.ActorSerializer
 
 
+class ReportViewSet(
+    FederationMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet
+):
+    lookup_field = "uuid"
+    authentication_classes = [authentication.SignatureAuthentication]
+    renderer_classes = renderers.get_ap_renderers()
+    queryset = moderation_models.Report.objects.none()
+
+
 class WellKnownViewSet(viewsets.GenericViewSet):
     authentication_classes = []
     permission_classes = []
@@ -146,7 +163,6 @@ class MusicLibraryViewSet(
     FederationMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet
 ):
     authentication_classes = [authentication.SignatureAuthentication]
-    permission_classes = []
     renderer_classes = renderers.get_ap_renderers()
     serializer_class = serializers.LibrarySerializer
     queryset = music_models.Library.objects.all().select_related("actor")
@@ -201,7 +217,6 @@ class MusicUploadViewSet(
     FederationMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet
 ):
     authentication_classes = [authentication.SignatureAuthentication]
-    permission_classes = []
     renderer_classes = renderers.get_ap_renderers()
     queryset = music_models.Upload.objects.local().select_related(
         "library__actor", "track__artist", "track__album__artist"
@@ -219,7 +234,6 @@ class MusicArtistViewSet(
     FederationMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet
 ):
     authentication_classes = [authentication.SignatureAuthentication]
-    permission_classes = []
     renderer_classes = renderers.get_ap_renderers()
     queryset = music_models.Artist.objects.local()
     serializer_class = serializers.ArtistSerializer
@@ -230,7 +244,6 @@ class MusicAlbumViewSet(
     FederationMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet
 ):
     authentication_classes = [authentication.SignatureAuthentication]
-    permission_classes = []
     renderer_classes = renderers.get_ap_renderers()
     queryset = music_models.Album.objects.local().select_related("artist")
     serializer_class = serializers.AlbumSerializer
@@ -241,7 +254,6 @@ class MusicTrackViewSet(
     FederationMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet
 ):
     authentication_classes = [authentication.SignatureAuthentication]
-    permission_classes = []
     renderer_classes = renderers.get_ap_renderers()
     queryset = music_models.Track.objects.local().select_related(
         "album__artist", "artist"
diff --git a/api/funkwhale_api/history/serializers.py b/api/funkwhale_api/history/serializers.py
index 2254aee8cee370f4124c82acf59ad4c2c0d3148f..c894ec59ab093026f014b467dadf2f2f8db1af79 100644
--- a/api/funkwhale_api/history/serializers.py
+++ b/api/funkwhale_api/history/serializers.py
@@ -1,6 +1,7 @@
 from rest_framework import serializers
 
 from funkwhale_api.activity import serializers as activity_serializers
+from funkwhale_api.federation import serializers as federation_serializers
 from funkwhale_api.music.serializers import TrackActivitySerializer, TrackSerializer
 from funkwhale_api.users.serializers import UserActivitySerializer, UserBasicSerializer
 
@@ -27,16 +28,22 @@ class ListeningActivitySerializer(activity_serializers.ModelSerializer):
 class ListeningSerializer(serializers.ModelSerializer):
     track = TrackSerializer(read_only=True)
     user = UserBasicSerializer(read_only=True)
+    actor = serializers.SerializerMethodField()
 
     class Meta:
         model = models.Listening
-        fields = ("id", "user", "track", "creation_date")
+        fields = ("id", "user", "track", "creation_date", "actor")
 
     def create(self, validated_data):
         validated_data["user"] = self.context["user"]
 
         return super().create(validated_data)
 
+    def get_actor(self, obj):
+        actor = obj.user.actor
+        if actor:
+            return federation_serializers.APIActorSerializer(actor).data
+
 
 class ListeningWriteSerializer(serializers.ModelSerializer):
     class Meta:
diff --git a/api/funkwhale_api/history/urls.py b/api/funkwhale_api/history/urls.py
index 707e95cd7d3056ced030a6f52b584456134c19e3..c22e58062d38a3eb6c497467dc811e38dcbc212a 100644
--- a/api/funkwhale_api/history/urls.py
+++ b/api/funkwhale_api/history/urls.py
@@ -1,8 +1,8 @@
-from rest_framework import routers
+from funkwhale_api.common import routers
 
 from . import views
 
-router = routers.SimpleRouter()
+router = routers.OptionalSlashRouter()
 router.register(r"listenings", views.ListeningViewSet, "listenings")
 
 urlpatterns = router.urls
diff --git a/api/funkwhale_api/history/views.py b/api/funkwhale_api/history/views.py
index 30219629a4b0c5a2852d0cff1f9f04605604a654..6cdbc8a80f848c074adde2dee2f04f4ff5eefec1 100644
--- a/api/funkwhale_api/history/views.py
+++ b/api/funkwhale_api/history/views.py
@@ -19,7 +19,7 @@ class ListeningViewSet(
 ):
 
     serializer_class = serializers.ListeningSerializer
-    queryset = models.Listening.objects.all().select_related("user")
+    queryset = models.Listening.objects.all().select_related("user__actor")
 
     permission_classes = [
         oauth_permissions.ScopePermission,
@@ -47,7 +47,7 @@ class ListeningViewSet(
         )
         tracks = Track.objects.with_playable_uploads(
             music_utils.get_actor_from_request(self.request)
-        ).select_related("artist", "album__artist")
+        ).select_related("artist", "album__artist", "attributed_to")
         return queryset.prefetch_related(Prefetch("track", queryset=tracks))
 
     def get_serializer_context(self):
diff --git a/api/funkwhale_api/instance/dynamic_preferences_registry.py b/api/funkwhale_api/instance/dynamic_preferences_registry.py
index 9d1f1c8f77706562fcdc8a2ecc1c863533a033f2..be360701dd7cb626eee8d6eafb7f3e867b2c7a13 100644
--- a/api/funkwhale_api/instance/dynamic_preferences_registry.py
+++ b/api/funkwhale_api/instance/dynamic_preferences_registry.py
@@ -1,4 +1,6 @@
 from django.forms import widgets
+from django.core.validators import FileExtensionValidator
+
 from dynamic_preferences import types
 from dynamic_preferences.registries import global_preferences_registry
 
@@ -43,6 +45,72 @@ class InstanceLongDescription(types.StringPreference):
     field_kwargs = {"required": False}
 
 
+@global_preferences_registry.register
+class InstanceTerms(types.StringPreference):
+    show_in_api = True
+    section = instance
+    name = "terms"
+    verbose_name = "Terms of service"
+    default = ""
+    help_text = (
+        "Terms of service and privacy policy for your instance (markdown allowed)."
+    )
+    widget = widgets.Textarea
+    field_kwargs = {"required": False}
+
+
+@global_preferences_registry.register
+class InstanceRules(types.StringPreference):
+    show_in_api = True
+    section = instance
+    name = "rules"
+    verbose_name = "Rules"
+    default = ""
+    help_text = "Rules/Code of Conduct (markdown allowed)."
+    widget = widgets.Textarea
+    field_kwargs = {"required": False}
+
+
+@global_preferences_registry.register
+class InstanceContactEmail(types.StringPreference):
+    show_in_api = True
+    section = instance
+    name = "contact_email"
+    verbose_name = "Contact email"
+    default = ""
+    help_text = "A contact email for visitors who need to contact an admin or moderator"
+    field_kwargs = {"required": False}
+
+
+@global_preferences_registry.register
+class InstanceSupportMessage(types.StringPreference):
+    show_in_api = True
+    section = instance
+    name = "support_message"
+    verbose_name = "Support message"
+    default = ""
+    help_text = (
+        "A short message that will be displayed periodically to local users. "
+        "Use it to ask for financial support or anything else you might need. "
+        "(markdown allowed)."
+    )
+    widget = widgets.Textarea
+    field_kwargs = {"required": False}
+
+
+@global_preferences_registry.register
+class InstanceFunkwhaleSupportMessageEnabled(types.BooleanPreference):
+    show_in_api = True
+    section = instance
+    name = "funkwhale_support_message_enabled"
+    verbose_name = "Funkwhale Support message"
+    default = True
+    help_text = (
+        "If this is enabled, we will periodically display a message to encourage "
+        "local users to support Funkwhale."
+    )
+
+
 @global_preferences_registry.register
 class RavenDSN(types.StringPreference):
     show_in_api = True
@@ -115,3 +183,27 @@ class CustomCSS(types.StringPreference):
     )
     widget = widgets.Textarea
     field_kwargs = {"required": False}
+
+
+class ImageWidget(widgets.ClearableFileInput):
+    pass
+
+
+class ImagePreference(types.FilePreference):
+    widget = ImageWidget
+    field_kwargs = {
+        "validators": [
+            FileExtensionValidator(allowed_extensions=["png", "jpg", "jpeg", "webp"])
+        ]
+    }
+
+
+@global_preferences_registry.register
+class Banner(ImagePreference):
+    show_in_api = True
+    section = instance
+    name = "banner"
+    verbose_name = "Banner image"
+    default = None
+    help_text = "This banner will be displayed on your pod's landing and about page. At least 600x100px recommended."
+    field_kwargs = {"required": False}
diff --git a/api/funkwhale_api/instance/nodeinfo.py b/api/funkwhale_api/instance/nodeinfo.py
index f45fbb129402ac0437147ac8eff1147f99335d1b..712578c3c809a92df007043992cd3da6de3061a5 100644
--- a/api/funkwhale_api/instance/nodeinfo.py
+++ b/api/funkwhale_api/instance/nodeinfo.py
@@ -2,7 +2,9 @@ import memoize.djangocache
 
 import funkwhale_api
 from funkwhale_api.common import preferences
-from funkwhale_api.federation import actors
+from funkwhale_api.federation import actors, models as federation_models
+from funkwhale_api.federation import utils as federation_utils
+from funkwhale_api.moderation import models as moderation_models
 from funkwhale_api.music import utils as music_utils
 
 from . import stats
@@ -12,32 +14,62 @@ memo = memoize.Memoizer(store, namespace="instance:stats")
 
 
 def get():
-    share_stats = preferences.get("instance__nodeinfo_stats_enabled")
+    all_preferences = preferences.all()
+    share_stats = all_preferences.get("instance__nodeinfo_stats_enabled")
+    allow_list_enabled = all_preferences.get("moderation__allow_list_enabled")
+    allow_list_public = all_preferences.get("moderation__allow_list_public")
+    banner = all_preferences.get("instance__banner")
+    unauthenticated_report_types = all_preferences.get(
+        "moderation__unauthenticated_report_types"
+    )
+    if allow_list_enabled and allow_list_public:
+        allowed_domains = list(
+            federation_models.Domain.objects.filter(allowed=True)
+            .order_by("name")
+            .values_list("name", flat=True)
+        )
+    else:
+        allowed_domains = None
     data = {
         "version": "2.0",
         "software": {"name": "funkwhale", "version": funkwhale_api.__version__},
         "protocols": ["activitypub"],
         "services": {"inbound": [], "outbound": []},
-        "openRegistrations": preferences.get("users__registration_enabled"),
+        "openRegistrations": all_preferences.get("users__registration_enabled"),
         "usage": {"users": {"total": 0, "activeHalfyear": 0, "activeMonth": 0}},
         "metadata": {
             "actorId": actors.get_service_actor().fid,
-            "private": preferences.get("instance__nodeinfo_private"),
-            "shortDescription": preferences.get("instance__short_description"),
-            "longDescription": preferences.get("instance__long_description"),
-            "nodeName": preferences.get("instance__name"),
+            "private": all_preferences.get("instance__nodeinfo_private"),
+            "shortDescription": all_preferences.get("instance__short_description"),
+            "longDescription": all_preferences.get("instance__long_description"),
+            "rules": all_preferences.get("instance__rules"),
+            "contactEmail": all_preferences.get("instance__contact_email"),
+            "terms": all_preferences.get("instance__terms"),
+            "nodeName": all_preferences.get("instance__name"),
+            "banner": federation_utils.full_url(banner.url) if banner else None,
+            "defaultUploadQuota": all_preferences.get("users__upload_quota"),
             "library": {
-                "federationEnabled": preferences.get("federation__enabled"),
-                "federationNeedsApproval": preferences.get(
+                "federationEnabled": all_preferences.get("federation__enabled"),
+                "federationNeedsApproval": all_preferences.get(
                     "federation__music_needs_approval"
                 ),
-                "anonymousCanListen": not preferences.get(
+                "anonymousCanListen": not all_preferences.get(
                     "common__api_authentication_required"
                 ),
             },
             "supportedUploadExtensions": music_utils.SUPPORTED_EXTENSIONS,
+            "allowList": {"enabled": allow_list_enabled, "domains": allowed_domains},
+            "reportTypes": [
+                {"type": t, "label": l, "anonymous": t in unauthenticated_report_types}
+                for t, l in moderation_models.REPORT_TYPES
+            ],
+            "funkwhaleSupportMessageEnabled": all_preferences.get(
+                "instance__funkwhale_support_message_enabled"
+            ),
+            "instanceSupportMessage": all_preferences.get("instance__support_message"),
         },
     }
+
     if share_stats:
         getter = memo(lambda: stats.get(), max_age=600)
         statistics = getter()
diff --git a/api/funkwhale_api/instance/urls.py b/api/funkwhale_api/instance/urls.py
index 05682b1e762ace43a2f9f14168f9ca42530ef439..eff731b26453f86586c513903fdcafde2cda3df7 100644
--- a/api/funkwhale_api/instance/urls.py
+++ b/api/funkwhale_api/instance/urls.py
@@ -1,12 +1,12 @@
 from django.conf.urls import url
-from rest_framework import routers
+from funkwhale_api.common import routers
 
 from . import views
 
-admin_router = routers.SimpleRouter()
+admin_router = routers.OptionalSlashRouter()
 admin_router.register(r"admin/settings", views.AdminSettings, "admin-settings")
 
 urlpatterns = [
-    url(r"^nodeinfo/2.0/$", views.NodeInfo.as_view(), name="nodeinfo-2.0"),
-    url(r"^settings/$", views.InstanceSettings.as_view(), name="settings"),
+    url(r"^nodeinfo/2.0/?$", views.NodeInfo.as_view(), name="nodeinfo-2.0"),
+    url(r"^settings/?$", views.InstanceSettings.as_view(), name="settings"),
 ] + admin_router.urls
diff --git a/api/funkwhale_api/manage/filters.py b/api/funkwhale_api/manage/filters.py
index 984b83133734e81a87194de73016a4f0ca5ee11f..5791afba3011cbccb5743c72a34932afc2515ac9 100644
--- a/api/funkwhale_api/manage/filters.py
+++ b/api/funkwhale_api/manage/filters.py
@@ -1,18 +1,21 @@
 from django import forms
 from django.db.models import Q
-from django.conf import settings
 
 import django_filters
 from django_filters import rest_framework as filters
 
 from funkwhale_api.common import fields
+from funkwhale_api.common import filters as common_filters
 from funkwhale_api.common import search
 
 from funkwhale_api.federation import models as federation_models
 from funkwhale_api.federation import utils as federation_utils
 from funkwhale_api.moderation import models as moderation_models
+from funkwhale_api.moderation import serializers as moderation_serializers
+from funkwhale_api.moderation import utils as moderation_utils
 from funkwhale_api.music import models as music_models
 from funkwhale_api.users import models as users_models
+from funkwhale_api.tags import models as tags_models
 
 
 class ActorField(forms.CharField):
@@ -21,24 +24,12 @@ class ActorField(forms.CharField):
         if not value:
             return value
 
-        parts = value.split("@")
-
-        return {
-            "username": parts[0],
-            "domain": parts[1] if len(parts) > 1 else settings.FEDERATION_HOSTNAME,
-        }
+        return federation_utils.get_actor_data_from_username(value)
 
 
 def get_actor_filter(actor_field):
     def handler(v):
-        if not v:
-            return Q(**{actor_field: None})
-        return Q(
-            **{
-                "{}__preferred_username__iexact".format(actor_field): v["username"],
-                "{}__domain__name__iexact".format(actor_field): v["domain"],
-            }
-        )
+        return federation_utils.get_actor_from_username_data_query(actor_field, v)
 
     return {"field": ActorField(), "handler": handler}
 
@@ -61,6 +52,7 @@ class ManageArtistFilterSet(filters.FilterSet):
                     "field": forms.IntegerField(),
                     "distinct": True,
                 },
+                "tag": {"to": "tagged_items__tag__name", "distinct": True},
             },
         )
     )
@@ -90,6 +82,7 @@ class ManageAlbumFilterSet(filters.FilterSet):
                     "field": forms.IntegerField(),
                     "distinct": True,
                 },
+                "tag": {"to": "tagged_items__tag__name", "distinct": True},
             },
         )
     )
@@ -128,6 +121,7 @@ class ManageTrackFilterSet(filters.FilterSet):
                     "field": forms.IntegerField(),
                     "distinct": True,
                 },
+                "tag": {"to": "tagged_items__tag__name", "distinct": True},
             },
         )
     )
@@ -235,12 +229,23 @@ class ManageUploadFilterSet(filters.FilterSet):
         ]
 
 
+def filter_allowed(queryset, name, value):
+    """
+    If value=false, we want to include object with value=null as well
+    """
+    if value:
+        return queryset.filter(allowed=True)
+    else:
+        return queryset.filter(Q(allowed=False) | Q(allowed__isnull=True))
+
+
 class ManageDomainFilterSet(filters.FilterSet):
     q = fields.SearchFilter(search_fields=["name"])
+    allowed = filters.BooleanFilter(method=filter_allowed)
 
     class Meta:
         model = federation_models.Domain
-        fields = ["name"]
+        fields = ["name", "allowed"]
 
 
 class ManageActorFilterSet(filters.FilterSet):
@@ -320,6 +325,10 @@ class ManageInstancePolicyFilterSet(filters.FilterSet):
         ]
     )
 
+    target_domain = filters.CharFilter("target_domain__name")
+    target_account_domain = filters.CharFilter("target_actor__domain__name")
+    target_account_username = filters.CharFilter("target_actor__preferred_username")
+
     class Meta:
         model = moderation_models.InstancePolicy
         fields = [
@@ -328,4 +337,60 @@ class ManageInstancePolicyFilterSet(filters.FilterSet):
             "silence_activity",
             "silence_notifications",
             "reject_media",
+            "target_domain",
+            "target_account_domain",
+            "target_account_username",
         ]
+
+
+class ManageTagFilterSet(filters.FilterSet):
+    q = fields.SearchFilter(search_fields=["name"])
+
+    class Meta:
+        model = tags_models.Tag
+        fields = ["q"]
+
+
+class ManageReportFilterSet(filters.FilterSet):
+    q = fields.SmartSearchFilter(
+        config=search.SearchConfig(
+            search_fields={"summary": {"to": "summary"}},
+            filter_fields={
+                "uuid": {"to": "uuid"},
+                "id": {"to": "id"},
+                "resolved": common_filters.get_boolean_filter("is_handled"),
+                "domain": {"to": "target_owner__domain_id"},
+                "category": {"to": "type"},
+                "submitter": get_actor_filter("submitter"),
+                "assigned_to": get_actor_filter("assigned_to"),
+                "target_owner": get_actor_filter("target_owner"),
+                "submitter_email": {"to": "submitter_email"},
+                "target": common_filters.get_generic_relation_filter(
+                    "target", moderation_serializers.TARGET_CONFIG
+                ),
+            },
+        )
+    )
+
+    class Meta:
+        model = moderation_models.Report
+        fields = ["q", "is_handled", "type", "submitter_email"]
+
+
+class ManageNoteFilterSet(filters.FilterSet):
+    q = fields.SmartSearchFilter(
+        config=search.SearchConfig(
+            search_fields={"summary": {"to": "summary"}},
+            filter_fields={
+                "uuid": {"to": "uuid"},
+                "author": get_actor_filter("author"),
+                "target": common_filters.get_generic_relation_filter(
+                    "target", moderation_utils.NOTE_TARGET_FIELDS
+                ),
+            },
+        )
+    )
+
+    class Meta:
+        model = moderation_models.Note
+        fields = ["q"]
diff --git a/api/funkwhale_api/manage/serializers.py b/api/funkwhale_api/manage/serializers.py
index a9b19939d822f3d07053aaa7a28f8d6f20b57f50..48ea1dc50132f4b41b5b6426773addd3ba6654d9 100644
--- a/api/funkwhale_api/manage/serializers.py
+++ b/api/funkwhale_api/manage/serializers.py
@@ -1,15 +1,20 @@
+from django.conf import settings
 from django.db import transaction
 
 from rest_framework import serializers
 
+from funkwhale_api.common import fields as common_fields
 from funkwhale_api.common import serializers as common_serializers
 from funkwhale_api.common import utils as common_utils
 from funkwhale_api.federation import models as federation_models
 from funkwhale_api.federation import fields as federation_fields
 from funkwhale_api.federation import tasks as federation_tasks
 from funkwhale_api.moderation import models as moderation_models
+from funkwhale_api.moderation import serializers as moderation_serializers
+from funkwhale_api.moderation import utils as moderation_utils
 from funkwhale_api.music import models as music_models
 from funkwhale_api.music import serializers as music_serializers
+from funkwhale_api.tags import models as tags_models
 from funkwhale_api.users import models as users_models
 
 from . import filters
@@ -136,6 +141,7 @@ class ManageDomainSerializer(serializers.ModelSerializer):
             "nodeinfo",
             "nodeinfo_fetch_date",
             "instance_policy",
+            "allowed",
         ]
         read_only_fields = [
             "creation_date",
@@ -151,8 +157,17 @@ class ManageDomainSerializer(serializers.ModelSerializer):
         return getattr(o, "outbox_activities_count", 0)
 
 
+class ManageDomainUpdateSerializer(ManageDomainSerializer):
+    class Meta(ManageDomainSerializer.Meta):
+        read_only_fields = ["name"] + ManageDomainSerializer.Meta.read_only_fields
+
+
 class ManageDomainActionSerializer(common_serializers.ActionSerializer):
-    actions = [common_serializers.Action("purge", allow_all=False)]
+    actions = [
+        common_serializers.Action("purge", allow_all=False),
+        common_serializers.Action("allow_list_add", allow_all=True),
+        common_serializers.Action("allow_list_remove", allow_all=True),
+    ]
     filterset_class = filters.ManageDomainFilterSet
     pk_field = "name"
 
@@ -161,8 +176,18 @@ class ManageDomainActionSerializer(common_serializers.ActionSerializer):
         ids = objects.values_list("pk", flat=True)
         common_utils.on_commit(federation_tasks.purge_actors.delay, domains=list(ids))
 
+    @transaction.atomic
+    def handle_allow_list_add(self, objects):
+        objects.update(allowed=True)
+
+    @transaction.atomic
+    def handle_allow_list_remove(self, objects):
+        objects.update(allowed=False)
+
 
 class ManageBaseActorSerializer(serializers.ModelSerializer):
+    is_local = serializers.SerializerMethodField()
+
     class Meta:
         model = federation_models.Actor
         fields = [
@@ -181,9 +206,13 @@ class ManageBaseActorSerializer(serializers.ModelSerializer):
             "outbox_url",
             "shared_inbox_url",
             "manually_approves_followers",
+            "is_local",
         ]
         read_only_fields = ["creation_date", "instance_policy"]
 
+    def get_is_local(self, o):
+        return o.domain_id == settings.FEDERATION_HOSTNAME
+
 
 class ManageActorSerializer(ManageBaseActorSerializer):
     uploads_count = serializers.SerializerMethodField()
@@ -358,6 +387,7 @@ class ManageArtistSerializer(ManageBaseArtistSerializer):
     albums = ManageNestedAlbumSerializer(many=True)
     tracks = ManageNestedTrackSerializer(many=True)
     attributed_to = ManageBaseActorSerializer()
+    tags = serializers.SerializerMethodField()
 
     class Meta:
         model = music_models.Artist
@@ -365,8 +395,13 @@ class ManageArtistSerializer(ManageBaseArtistSerializer):
             "albums",
             "tracks",
             "attributed_to",
+            "tags",
         ]
 
+    def get_tags(self, obj):
+        tagged_items = getattr(obj, "_prefetched_tagged_items", [])
+        return [ti.tag.name for ti in tagged_items]
+
 
 class ManageNestedArtistSerializer(ManageBaseArtistSerializer):
     pass
@@ -376,6 +411,7 @@ class ManageAlbumSerializer(ManageBaseAlbumSerializer):
     tracks = ManageNestedTrackSerializer(many=True)
     attributed_to = ManageBaseActorSerializer()
     artist = ManageNestedArtistSerializer()
+    tags = serializers.SerializerMethodField()
 
     class Meta:
         model = music_models.Album
@@ -383,8 +419,13 @@ class ManageAlbumSerializer(ManageBaseAlbumSerializer):
             "artist",
             "tracks",
             "attributed_to",
+            "tags",
         ]
 
+    def get_tags(self, obj):
+        tagged_items = getattr(obj, "_prefetched_tagged_items", [])
+        return [ti.tag.name for ti in tagged_items]
+
 
 class ManageTrackAlbumSerializer(ManageBaseAlbumSerializer):
     artist = ManageNestedArtistSerializer()
@@ -399,6 +440,7 @@ class ManageTrackSerializer(ManageNestedTrackSerializer):
     album = ManageTrackAlbumSerializer()
     attributed_to = ManageBaseActorSerializer()
     uploads_count = serializers.SerializerMethodField()
+    tags = serializers.SerializerMethodField()
 
     class Meta:
         model = music_models.Track
@@ -407,11 +449,16 @@ class ManageTrackSerializer(ManageNestedTrackSerializer):
             "album",
             "attributed_to",
             "uploads_count",
+            "tags",
         ]
 
     def get_uploads_count(self, obj):
         return getattr(obj, "uploads_count", None)
 
+    def get_tags(self, obj):
+        tagged_items = getattr(obj, "_prefetched_tagged_items", [])
+        return [ti.tag.name for ti in tagged_items]
+
 
 class ManageTrackActionSerializer(common_serializers.ActionSerializer):
     actions = [common_serializers.Action("delete", allow_all=False)]
@@ -482,6 +529,15 @@ class ManageLibrarySerializer(serializers.ModelSerializer):
             "followers_url",
             "actor",
         ]
+        read_only_fields = [
+            "fid",
+            "uuid",
+            "id",
+            "url",
+            "domain",
+            "actor",
+            "creation_date",
+        ]
 
     def get_uploads_count(self, obj):
         return getattr(obj, "_uploads_count", obj.uploads_count)
@@ -546,3 +602,101 @@ class ManageUploadSerializer(serializers.ModelSerializer):
             "track",
             "library",
         )
+
+
+class ManageTagSerializer(ManageBaseAlbumSerializer):
+
+    tracks_count = serializers.SerializerMethodField()
+    albums_count = serializers.SerializerMethodField()
+    artists_count = serializers.SerializerMethodField()
+
+    class Meta:
+        model = tags_models.Tag
+        fields = [
+            "id",
+            "name",
+            "creation_date",
+            "tracks_count",
+            "albums_count",
+            "artists_count",
+        ]
+
+    def get_tracks_count(self, obj):
+        return getattr(obj, "_tracks_count", None)
+
+    def get_albums_count(self, obj):
+        return getattr(obj, "_albums_count", None)
+
+    def get_artists_count(self, obj):
+        return getattr(obj, "_artists_count", None)
+
+
+class ManageTagActionSerializer(common_serializers.ActionSerializer):
+    actions = [common_serializers.Action("delete", allow_all=False)]
+    filterset_class = filters.ManageTagFilterSet
+    pk_field = "name"
+
+    @transaction.atomic
+    def handle_delete(self, objects):
+        return objects.delete()
+
+
+class ManageBaseNoteSerializer(serializers.ModelSerializer):
+    author = ManageBaseActorSerializer(required=False, read_only=True)
+
+    class Meta:
+        model = moderation_models.Note
+        fields = ["id", "uuid", "creation_date", "summary", "author"]
+        read_only_fields = ["uuid", "creation_date", "author"]
+
+
+class ManageNoteSerializer(ManageBaseNoteSerializer):
+    target = common_fields.GenericRelation(moderation_utils.NOTE_TARGET_FIELDS)
+
+    class Meta(ManageBaseNoteSerializer.Meta):
+        fields = ManageBaseNoteSerializer.Meta.fields + ["target"]
+
+
+class ManageReportSerializer(serializers.ModelSerializer):
+    assigned_to = ManageBaseActorSerializer()
+    target_owner = ManageBaseActorSerializer()
+    submitter = ManageBaseActorSerializer()
+    target = moderation_serializers.TARGET_FIELD
+    notes = serializers.SerializerMethodField()
+
+    class Meta:
+        model = moderation_models.Report
+        fields = [
+            "id",
+            "uuid",
+            "fid",
+            "creation_date",
+            "handled_date",
+            "summary",
+            "type",
+            "target",
+            "target_state",
+            "is_handled",
+            "assigned_to",
+            "target_owner",
+            "submitter",
+            "submitter_email",
+            "notes",
+        ]
+        read_only_fields = [
+            "id",
+            "uuid",
+            "fid",
+            "submitter",
+            "submitter_email",
+            "creation_date",
+            "handled_date",
+            "target",
+            "target_state",
+            "target_owner",
+            "summary",
+        ]
+
+    def get_notes(self, o):
+        notes = getattr(o, "_prefetched_notes", [])
+        return ManageBaseNoteSerializer(notes, many=True).data
diff --git a/api/funkwhale_api/manage/urls.py b/api/funkwhale_api/manage/urls.py
index 2d5da59e3ed6b8656c3438fb9121819e18079d47..36997b24aff1c3ab1df59bea43a308f7fb3b41b3 100644
--- a/api/funkwhale_api/manage/urls.py
+++ b/api/funkwhale_api/manage/urls.py
@@ -1,29 +1,32 @@
 from django.conf.urls import include, url
-from rest_framework import routers
+from funkwhale_api.common import routers
 
 from . import views
 
-federation_router = routers.SimpleRouter()
+federation_router = routers.OptionalSlashRouter()
 federation_router.register(r"domains", views.ManageDomainViewSet, "domains")
 
-library_router = routers.SimpleRouter()
+library_router = routers.OptionalSlashRouter()
 library_router.register(r"albums", views.ManageAlbumViewSet, "albums")
 library_router.register(r"artists", views.ManageArtistViewSet, "artists")
 library_router.register(r"libraries", views.ManageLibraryViewSet, "libraries")
 library_router.register(r"tracks", views.ManageTrackViewSet, "tracks")
 library_router.register(r"uploads", views.ManageUploadViewSet, "uploads")
 
-moderation_router = routers.SimpleRouter()
+moderation_router = routers.OptionalSlashRouter()
 moderation_router.register(
     r"instance-policies", views.ManageInstancePolicyViewSet, "instance-policies"
 )
+moderation_router.register(r"reports", views.ManageReportViewSet, "reports")
+moderation_router.register(r"notes", views.ManageNoteViewSet, "notes")
 
-users_router = routers.SimpleRouter()
+users_router = routers.OptionalSlashRouter()
 users_router.register(r"users", views.ManageUserViewSet, "users")
 users_router.register(r"invitations", views.ManageInvitationViewSet, "invitations")
 
-other_router = routers.SimpleRouter()
+other_router = routers.OptionalSlashRouter()
 other_router.register(r"accounts", views.ManageActorViewSet, "accounts")
+other_router.register(r"tags", views.ManageTagViewSet, "tags")
 
 urlpatterns = [
     url(
diff --git a/api/funkwhale_api/manage/views.py b/api/funkwhale_api/manage/views.py
index 6e4edc888b858698236fd2b98e85724996572baa..200dccf1fd934081cb3f4e2fd1f44f464feed5f3 100644
--- a/api/funkwhale_api/manage/views.py
+++ b/api/funkwhale_api/manage/views.py
@@ -2,7 +2,7 @@ from rest_framework import mixins, response, viewsets
 from rest_framework import decorators as rest_decorators
 
 from django.db.models import Count, Prefetch, Q, Sum, OuterRef, Subquery
-from django.db.models.functions import Coalesce
+from django.db.models.functions import Coalesce, Length
 from django.shortcuts import get_object_or_404
 
 from funkwhale_api.common import models as common_models
@@ -12,8 +12,10 @@ from funkwhale_api.federation import models as federation_models
 from funkwhale_api.federation import tasks as federation_tasks
 from funkwhale_api.history import models as history_models
 from funkwhale_api.music import models as music_models
+from funkwhale_api.music import views as music_views
 from funkwhale_api.moderation import models as moderation_models
 from funkwhale_api.playlists import models as playlists_models
+from funkwhale_api.tags import models as tags_models
 from funkwhale_api.users import models as users_models
 
 
@@ -39,6 +41,7 @@ def get_stats(tracks, target):
     ).count()
     data["libraries"] = uploads.values_list("library", flat=True).distinct().count()
     data["uploads"] = uploads.count()
+    data["reports"] = moderation_models.Report.objects.get_for_target(target).count()
     data.update(get_media_stats(uploads))
     return data
 
@@ -70,6 +73,7 @@ class ManageArtistViewSet(
                     tracks_count=Count("tracks")
                 ),
             ),
+            music_views.TAG_PREFETCH,
         )
     )
     serializer_class = serializers.ManageArtistSerializer
@@ -107,7 +111,7 @@ class ManageAlbumViewSet(
         music_models.Album.objects.all()
         .order_by("-id")
         .select_related("attributed_to", "artist")
-        .prefetch_related("tracks")
+        .prefetch_related("tracks", music_views.TAG_PREFETCH)
     )
     serializer_class = serializers.ManageAlbumSerializer
     filterset_class = filters.ManageAlbumFilterSet
@@ -151,6 +155,7 @@ class ManageTrackViewSet(
         .order_by("-id")
         .select_related("attributed_to", "artist", "album__artist")
         .annotate(uploads_count=Coalesce(Subquery(uploads_subquery), 0))
+        .prefetch_related(music_views.TAG_PREFETCH)
     )
     serializer_class = serializers.ManageTrackSerializer
     filterset_class = filters.ManageTrackFilterSet
@@ -200,6 +205,7 @@ follows_subquery = (
 class ManageLibraryViewSet(
     mixins.ListModelMixin,
     mixins.RetrieveModelMixin,
+    mixins.UpdateModelMixin,
     mixins.DestroyModelMixin,
     viewsets.GenericViewSet,
 ):
@@ -243,6 +249,7 @@ class ManageLibraryViewSet(
             "tracks": tracks.count(),
             "albums": albums.count(),
             "artists": len(artists),
+            "reports": moderation_models.Report.objects.get_for_target(library).count(),
         }
         data.update(get_media_stats(uploads.all()))
         return response.Response(data, status=200)
@@ -339,6 +346,7 @@ class ManageDomainViewSet(
     mixins.CreateModelMixin,
     mixins.ListModelMixin,
     mixins.RetrieveModelMixin,
+    mixins.UpdateModelMixin,
     viewsets.GenericViewSet,
 ):
     lookup_value_regex = r"[a-zA-Z0-9\-\.]+"
@@ -361,6 +369,13 @@ class ManageDomainViewSet(
         "instance_policy",
     ]
 
+    def get_serializer_class(self):
+        if self.action in ["update", "partial_update"]:
+            # A dedicated serializer for update
+            # to ensure domain name can't be changed
+            return serializers.ManageDomainUpdateSerializer
+        return super().get_serializer_class()
+
     def perform_create(self, serializer):
         domain = serializer.save()
         federation_tasks.update_domain_nodeinfo(domain_name=domain.name)
@@ -444,3 +459,115 @@ class ManageInstancePolicyViewSet(
 
     def perform_create(self, serializer):
         serializer.save(actor=self.request.user.actor)
+
+
+class ManageReportViewSet(
+    mixins.ListModelMixin,
+    mixins.RetrieveModelMixin,
+    mixins.UpdateModelMixin,
+    viewsets.GenericViewSet,
+):
+    lookup_field = "uuid"
+    queryset = (
+        moderation_models.Report.objects.all()
+        .order_by("-creation_date")
+        .select_related(
+            "submitter", "target_owner", "assigned_to", "target_content_type"
+        )
+        .prefetch_related("target")
+        .prefetch_related(
+            Prefetch(
+                "notes",
+                queryset=moderation_models.Note.objects.order_by(
+                    "creation_date"
+                ).select_related("author"),
+                to_attr="_prefetched_notes",
+            )
+        )
+    )
+    serializer_class = serializers.ManageReportSerializer
+    filterset_class = filters.ManageReportFilterSet
+    required_scope = "instance:reports"
+    ordering_fields = ["id", "creation_date", "handled_date"]
+
+    def perform_update(self, serializer):
+        is_handled = serializer.instance.is_handled
+        if not is_handled and serializer.validated_data.get("is_handled") is True:
+            # report was resolved, we assign to the mod making the request
+            serializer.save(assigned_to=self.request.user.actor)
+        else:
+            serializer.save()
+
+
+class ManageNoteViewSet(
+    mixins.ListModelMixin,
+    mixins.RetrieveModelMixin,
+    mixins.DestroyModelMixin,
+    mixins.CreateModelMixin,
+    viewsets.GenericViewSet,
+):
+    lookup_field = "uuid"
+    queryset = (
+        moderation_models.Note.objects.all()
+        .order_by("-creation_date")
+        .select_related("author", "target_content_type")
+        .prefetch_related("target")
+    )
+    serializer_class = serializers.ManageNoteSerializer
+    filterset_class = filters.ManageNoteFilterSet
+    required_scope = "instance:notes"
+    ordering_fields = ["id", "creation_date"]
+
+    def perform_create(self, serializer):
+        author = self.request.user.actor
+        return serializer.save(author=author)
+
+
+class ManageTagViewSet(
+    mixins.ListModelMixin,
+    mixins.RetrieveModelMixin,
+    mixins.DestroyModelMixin,
+    mixins.CreateModelMixin,
+    viewsets.GenericViewSet,
+):
+    lookup_field = "name"
+    queryset = (
+        tags_models.Tag.objects.all()
+        .order_by("-creation_date")
+        .annotate(items_count=Count("tagged_items"))
+        .annotate(length=Length("name"))
+    )
+    serializer_class = serializers.ManageTagSerializer
+    filterset_class = filters.ManageTagFilterSet
+    required_scope = "instance:libraries"
+    ordering_fields = ["id", "creation_date", "name", "items_count", "length"]
+
+    def get_queryset(self):
+        queryset = super().get_queryset()
+        from django.contrib.contenttypes.models import ContentType
+
+        album_ct = ContentType.objects.get_for_model(music_models.Album)
+        track_ct = ContentType.objects.get_for_model(music_models.Track)
+        artist_ct = ContentType.objects.get_for_model(music_models.Artist)
+        queryset = queryset.annotate(
+            _albums_count=Count(
+                "tagged_items", filter=Q(tagged_items__content_type=album_ct)
+            ),
+            _tracks_count=Count(
+                "tagged_items", filter=Q(tagged_items__content_type=track_ct)
+            ),
+            _artists_count=Count(
+                "tagged_items", filter=Q(tagged_items__content_type=artist_ct)
+            ),
+        )
+        return queryset
+
+    @rest_decorators.action(methods=["post"], detail=False)
+    def action(self, request, *args, **kwargs):
+        queryset = self.get_queryset()
+        serializer = serializers.ManageTagActionSerializer(
+            request.data, queryset=queryset
+        )
+        serializer.is_valid(raise_exception=True)
+        result = serializer.save()
+        return response.Response(result, status=200)
diff --git a/api/funkwhale_api/moderation/admin.py b/api/funkwhale_api/moderation/admin.py
index 9f8340030e3aa4108ee7f63a87b0c2f8a50e85d9..1a44ea283f7d6e90f2e2abb92ee026b7f88cbb2b 100644
--- a/api/funkwhale_api/moderation/admin.py
+++ b/api/funkwhale_api/moderation/admin.py
@@ -30,6 +30,22 @@ class InstancePolicyAdmin(admin.ModelAdmin):
     list_select_related = True
 
 
+@admin.register(models.Report)
+class ReportAdmin(admin.ModelAdmin):
+    list_display = [
+        "uuid",
+        "submitter",
+        "type",
+        "assigned_to",
+        "is_handled",
+        "creation_date",
+        "handled_date",
+    ]
+    list_filter = ["type", "is_handled"]
+    search_fields = ["summary"]
+    list_select_related = True
+
+
 @admin.register(models.UserFilter)
 class UserFilterAdmin(admin.ModelAdmin):
     list_display = ["uuid", "user", "target_artist", "creation_date"]
diff --git a/api/funkwhale_api/moderation/apps.py b/api/funkwhale_api/moderation/apps.py
new file mode 100644
index 0000000000000000000000000000000000000000..840393af10dee426b7561d5a8a13e587e7505a60
--- /dev/null
+++ b/api/funkwhale_api/moderation/apps.py
@@ -0,0 +1,13 @@
+from django.apps import AppConfig, apps
+
+from . import mrf
+
+
+class ModerationConfig(AppConfig):
+    name = "funkwhale_api.moderation"
+
+    def ready(self):
+        super().ready()
+
+        app_names = [app.name for app in apps.app_configs.values()]
+        mrf.inbox.autodiscover(app_names)
diff --git a/api/funkwhale_api/moderation/dynamic_preferences_registry.py b/api/funkwhale_api/moderation/dynamic_preferences_registry.py
new file mode 100644
index 0000000000000000000000000000000000000000..29390434197062fce2fb5a031c0b40c93367b4b0
--- /dev/null
+++ b/api/funkwhale_api/moderation/dynamic_preferences_registry.py
@@ -0,0 +1,42 @@
+from dynamic_preferences import types
+from dynamic_preferences.registries import global_preferences_registry
+
+from funkwhale_api.common import preferences as common_preferences
+
+from . import models
+
+moderation = types.Section("moderation")
+
+
+@global_preferences_registry.register
+class AllowListEnabled(types.BooleanPreference):
+    section = moderation
+    name = "allow_list_enabled"
+    verbose_name = "Enable allow-listing"
+    help_text = "If enabled, only interactions with explicitely allowed domains will be authorized."
+    default = False
+
+
+@global_preferences_registry.register
+class AllowListPublic(types.BooleanPreference):
+    section = moderation
+    name = "allow_list_public"
+    verbose_name = "Publish your allowed-domains list"
+    help_text = (
+        "If enabled, everyone will be able to retrieve the list of domains you allowed. "
+        "This is useful on open setups, to help people decide if they want to join your pod, or to "
+        "make your moderation policy public."
+    )
+    default = False
+
+
+@global_preferences_registry.register
+class UnauthenticatedReportTypes(common_preferences.StringListPreference):
+    show_in_api = True
+    section = moderation
+    name = "unauthenticated_report_types"
+    default = ["takedown_request", "illegal_content"]
+    verbose_name = "Accountless report categories"
+    help_text = "A list of categories for which external users (without an account) can submit a report"
+    choices = models.REPORT_TYPES
+    field_kwargs = {"choices": choices, "required": False}
diff --git a/api/funkwhale_api/moderation/factories.py b/api/funkwhale_api/moderation/factories.py
index 8829caa2bacf60b444b18984c71b24b5f8b788d0..b426a6cea2a4d36ceca75aa56726c5a9f75c6a0d 100644
--- a/api/funkwhale_api/moderation/factories.py
+++ b/api/funkwhale_api/moderation/factories.py
@@ -5,6 +5,8 @@ from funkwhale_api.federation import factories as federation_factories
 from funkwhale_api.music import factories as music_factories
 from funkwhale_api.users import factories as users_factories
 
+from . import serializers
+
 
 @registry.register
 class InstancePolicyFactory(NoUpdateOnCreate, factory.DjangoModelFactory):
@@ -37,3 +39,37 @@ class UserFilterFactory(NoUpdateOnCreate, factory.DjangoModelFactory):
         for_artist = factory.Trait(
             target_artist=factory.SubFactory(music_factories.ArtistFactory)
         )
+
+
+@registry.register
+class NoteFactory(NoUpdateOnCreate, factory.DjangoModelFactory):
+    author = factory.SubFactory(federation_factories.ActorFactory)
+    target = None
+    summary = factory.Faker("paragraph")
+
+    class Meta:
+        model = "moderation.Note"
+
+
+@registry.register
+class ReportFactory(NoUpdateOnCreate, factory.DjangoModelFactory):
+    submitter = factory.SubFactory(federation_factories.ActorFactory)
+    target = factory.SubFactory(music_factories.ArtistFactory)
+    summary = factory.Faker("paragraph")
+    type = "other"
+
+    class Meta:
+        model = "moderation.Report"
+
+    class Params:
+        anonymous = factory.Trait(actor=None, submitter_email=factory.Faker("email"))
+        assigned = factory.Trait(
+            assigned_to=factory.SubFactory(federation_factories.ActorFactory)
+        )
+
+    @factory.post_generation
+    def _set_target_owner(self, create, extracted, **kwargs):
+        if not self.target:
+            return
+
+        self.target_owner = serializers.get_target_owner(self.target)
diff --git a/api/funkwhale_api/moderation/management/__init__.py b/api/funkwhale_api/moderation/management/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/api/funkwhale_api/moderation/management/commands/__init__.py b/api/funkwhale_api/moderation/management/commands/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/api/funkwhale_api/moderation/management/commands/mrf_check.py b/api/funkwhale_api/moderation/management/commands/mrf_check.py
new file mode 100644
index 0000000000000000000000000000000000000000..b518daa08ccf9f5c929fb3f7fc18025e3e10ce86
--- /dev/null
+++ b/api/funkwhale_api/moderation/management/commands/mrf_check.py
@@ -0,0 +1,117 @@
+import json
+import sys
+import uuid
+import logging
+
+from django.core.management.base import BaseCommand, CommandError
+from django.core import validators
+
+from django.conf import settings
+
+from funkwhale_api.common import session
+from funkwhale_api.federation import models
+from funkwhale_api.moderation import mrf
+
+
+def is_uuid(v):
+    try:
+        uuid.UUID(v)
+    except ValueError:
+        return False
+    return True
+
+
+def is_url(v):
+    validator = validators.URLValidator()
+    try:
+        validator(v)
+    except (ValueError, validators.ValidationError):
+        return False
+
+    return True
+
+
+class Command(BaseCommand):
+    help = "Check a given message against all or a specific MRF rule"
+
+    def add_arguments(self, parser):
+        parser.add_argument(
+            "type",
+            type=str,
+            choices=["inbox"],
+            help=("The type of MRF. Only inbox is supported at the moment"),
+        )
+        parser.add_argument(
+            "input",
+            nargs="?",
+            help=(
+                "The path to a file containing JSON data. Use - to read from stdin. "
+                "If no input is provided, registered MRF policies will be listed "
+                "instead.",
+            ),
+        )
+        parser.add_argument(
+            "--policy",
+            "-p",
+            dest="policies",
+            nargs="+",
+            default=False,
+            help="Restrict to a list of MRF policies that will be applied, in that order",
+        )
+
+    def handle(self, *args, **options):
+        logger = logging.getLogger("funkwhale.mrf")
+        logger.setLevel(logging.DEBUG)
+        logger.addHandler(logging.StreamHandler(stream=sys.stderr))
+
+        input = options["input"]
+        if not input:
+            registry = getattr(mrf, options["type"])
+            self.stdout.write(
+                "No input given, listing registered policies for '{}' MRF:".format(
+                    options["type"]
+                )
+            )
+            for name in registry.keys():
+                self.stdout.write("- {}".format(name))
+            return
+        raw_content = None
+        content = None
+        if input == "-":
+            raw_content = sys.stdin.read()
+        elif is_uuid(input):
+            self.stderr.write("UUID provided, retrieving payload from db")
+            content = models.Activity.objects.get(uuid=input).payload
+        elif is_url(input):
+            response = session.get_session().get(
+                input,
+                timeout=5,
+                verify=settings.EXTERNAL_REQUESTS_VERIFY_SSL,
+                headers={"Content-Type": "application/activity+json"},
+            )
+            response.raise_for_status()
+            content = response.json()
+        else:
+            with open(input, "rb") as f:
+                raw_content = f.read()
+        content = json.loads(raw_content) if content is None else content
+
+        policies = options["policies"] or []
+        registry = getattr(mrf, options["type"])
+        for policy in policies:
+            if policy not in registry:
+                raise CommandError(
+                    "Unknown policy '{}' for MRF '{}'".format(policy, options["type"])
+                )
+
+        payload, updated = registry.apply(content, policies=policies)
+        if not payload:
+            self.stderr.write("Payload was discarded by MRF")
+        elif updated:
+            self.stderr.write("Payload was modified by MRF")
+            self.stderr.write("Initial payload:\n")
+            self.stdout.write(json.dumps(content, indent=2, sort_keys=True))
+            self.stderr.write("Modified payload:\n")
+            self.stdout.write(json.dumps(payload, indent=2, sort_keys=True))
+        else:
+            self.stderr.write("Payload left untouched by MRF")
diff --git a/api/funkwhale_api/moderation/migrations/0003_report.py b/api/funkwhale_api/moderation/migrations/0003_report.py
new file mode 100644
index 0000000000000000000000000000000000000000..c560924587bcd9f53afdc55d34afaa98a6bf1d21
--- /dev/null
+++ b/api/funkwhale_api/moderation/migrations/0003_report.py
@@ -0,0 +1,100 @@
+# Generated by Django 2.2.3 on 2019-08-01 08:34
+
+import django.contrib.postgres.fields.jsonb
+from django.db import migrations, models
+import django.db.models.deletion
+import django.utils.timezone
+import uuid
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ("contenttypes", "0002_remove_content_type_name"),
+        ("federation", "0020_auto_20190730_0846"),
+        ("moderation", "0002_auto_20190213_0927"),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name="Report",
+            fields=[
+                (
+                    "id",
+                    models.AutoField(
+                        auto_created=True,
+                        primary_key=True,
+                        serialize=False,
+                        verbose_name="ID",
+                    ),
+                ),
+                ("fid", models.URLField(db_index=True, max_length=500, unique=True)),
+                ("url", models.URLField(blank=True, max_length=500, null=True)),
+                ("uuid", models.UUIDField(default=uuid.uuid4, unique=True)),
+                (
+                    "creation_date",
+                    models.DateTimeField(default=django.utils.timezone.now),
+                ),
+                ("summary", models.TextField(max_length=50000, null=True)),
+                ("handled_date", models.DateTimeField(null=True)),
+                ("is_handled", models.BooleanField(default=False)),
+                (
+                    "type",
+                    models.CharField(
+                        choices=[
+                            ("takedown_request", "Takedown request"),
+                            ("invalid_metadata", "Invalid metadata"),
+                            ("illegal_content", "Illegal content"),
+                            ("offensive_content", "Offensive content"),
+                            ("other", "Other"),
+                        ],
+                        max_length=40,
+                    ),
+                ),
+                ("submitter_email", models.EmailField(max_length=254, null=True)),
+                ("target_id", models.IntegerField(null=True)),
+                (
+                    "target_state",
+                    django.contrib.postgres.fields.jsonb.JSONField(null=True),
+                ),
+                (
+                    "submitter",
+                    models.ForeignKey(
+                        blank=True,
+                        null=True,
+                        on_delete=django.db.models.deletion.SET_NULL,
+                        related_name="reports",
+                        to="federation.Actor",
+                    ),
+                ),
+                (
+                    "assigned_to",
+                    models.ForeignKey(
+                        blank=True,
+                        null=True,
+                        on_delete=django.db.models.deletion.SET_NULL,
+                        related_name="assigned_reports",
+                        to="federation.Actor",
+                    ),
+                ),
+                (
+                    "target_content_type",
+                    models.ForeignKey(
+                        null=True,
+                        on_delete=django.db.models.deletion.CASCADE,
+                        to="contenttypes.ContentType",
+                    ),
+                ),
+                (
+                    "target_owner",
+                    models.ForeignKey(
+                        blank=True,
+                        null=True,
+                        on_delete=django.db.models.deletion.SET_NULL,
+                        to="federation.Actor",
+                    ),
+                ),
+            ],
+            options={"abstract": False},
+        )
+    ]
diff --git a/api/funkwhale_api/moderation/migrations/0004_note.py b/api/funkwhale_api/moderation/migrations/0004_note.py
new file mode 100644
index 0000000000000000000000000000000000000000..8e7454b69f6a8834d794681b2e03a6933f2f24c7
--- /dev/null
+++ b/api/funkwhale_api/moderation/migrations/0004_note.py
@@ -0,0 +1,30 @@
+# Generated by Django 2.2.4 on 2019-08-29 09:08
+
+from django.db import migrations, models
+import django.db.models.deletion
+import django.utils.timezone
+import uuid
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('federation', '0020_auto_20190730_0846'),
+        ('contenttypes', '0002_remove_content_type_name'),
+        ('moderation', '0003_report'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='Note',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('uuid', models.UUIDField(default=uuid.uuid4, unique=True)),
+                ('creation_date', models.DateTimeField(default=django.utils.timezone.now)),
+                ('summary', models.TextField(max_length=50000)),
+                ('target_id', models.IntegerField(null=True)),
+                ('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='moderation_notes', to='federation.Actor')),
+                ('target_content_type', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType')),
+            ],
+        ),
+    ]
diff --git a/api/funkwhale_api/moderation/models.py b/api/funkwhale_api/moderation/models.py
index 7ade5d05a1e5a1ff0bfb0e259b5770b100a77489..e6b9cf09eb2d0032985962ffcdf534f5721c5abb 100644
--- a/api/funkwhale_api/moderation/models.py
+++ b/api/funkwhale_api/moderation/models.py
@@ -1,9 +1,19 @@
 import urllib.parse
 import uuid
 
+from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation
+from django.contrib.contenttypes.models import ContentType
+from django.contrib.postgres.fields import JSONField
 from django.db import models
+from django.db.models.signals import pre_save
+from django.dispatch import receiver
+from django.urls import reverse
 from django.utils import timezone
 
+from funkwhale_api.common import models as common_models
+from funkwhale_api.federation import models as federation_models
+from funkwhale_api.federation import utils as federation_utils
+
 
 class InstancePolicyQuerySet(models.QuerySet):
     def active(self):
@@ -92,3 +102,92 @@ class UserFilter(models.Model):
     def target(self):
         if self.target_artist:
             return {"type": "artist", "obj": self.target_artist}
+
+
+REPORT_TYPES = [
+    ("takedown_request", "Takedown request"),
+    ("invalid_metadata", "Invalid metadata"),
+    ("illegal_content", "Illegal content"),
+    ("offensive_content", "Offensive content"),
+    ("other", "Other"),
+]
+
+
+class Report(federation_models.FederationMixin):
+    uuid = models.UUIDField(default=uuid.uuid4, unique=True)
+    creation_date = models.DateTimeField(default=timezone.now)
+    summary = models.TextField(null=True, blank=True, max_length=50000)
+    handled_date = models.DateTimeField(null=True)
+    is_handled = models.BooleanField(default=False)
+    type = models.CharField(max_length=40, choices=REPORT_TYPES)
+    submitter_email = models.EmailField(null=True)
+    submitter = models.ForeignKey(
+        "federation.Actor",
+        related_name="reports",
+        on_delete=models.SET_NULL,
+        null=True,
+        blank=True,
+    )
+
+    assigned_to = models.ForeignKey(
+        "federation.Actor",
+        related_name="assigned_reports",
+        on_delete=models.SET_NULL,
+        null=True,
+        blank=True,
+    )
+
+    target_id = models.IntegerField(null=True)
+    target_content_type = models.ForeignKey(
+        ContentType, null=True, on_delete=models.CASCADE
+    )
+    target = GenericForeignKey("target_content_type", "target_id")
+    target_owner = models.ForeignKey(
+        "federation.Actor", on_delete=models.SET_NULL, null=True, blank=True
+    )
+    # frozen state of the target being reported, to ensure we still have info in the event of a
+    # delete
+    target_state = JSONField(null=True)
+
+    notes = GenericRelation(
+        "Note", content_type_field="target_content_type", object_id_field="target_id"
+    )
+
+    objects = common_models.GenericTargetQuerySet.as_manager()
+
+    def get_federation_id(self):
+        if self.fid:
+            return self.fid
+
+        return federation_utils.full_url(
+            reverse("federation:reports-detail", kwargs={"uuid": self.uuid})
+        )
+
+    def save(self, **kwargs):
+        if not self.pk and not self.fid:
+            self.fid = self.get_federation_id()
+
+        return super().save(**kwargs)
+
+
+class Note(models.Model):
+    uuid = models.UUIDField(default=uuid.uuid4, unique=True)
+    creation_date = models.DateTimeField(default=timezone.now)
+    summary = models.TextField(max_length=50000)
+    author = models.ForeignKey(
+        "federation.Actor", related_name="moderation_notes", on_delete=models.CASCADE
+    )
+
+    target_id = models.IntegerField(null=True)
+    target_content_type = models.ForeignKey(
+        ContentType, null=True, on_delete=models.CASCADE
+    )
+    target = GenericForeignKey("target_content_type", "target_id")
+
+
+@receiver(pre_save, sender=Report)
+def set_handled_date(sender, instance, **kwargs):
+    if instance.is_handled is True and not instance.handled_date:
+        instance.handled_date = timezone.now()
+    elif not instance.is_handled:
+        instance.handled_date = None
diff --git a/api/funkwhale_api/moderation/mrf.py b/api/funkwhale_api/moderation/mrf.py
new file mode 100644
index 0000000000000000000000000000000000000000..207b63e5d7ae3235876bcb113c4c4ed8fde010dd
--- /dev/null
+++ b/api/funkwhale_api/moderation/mrf.py
@@ -0,0 +1,78 @@
+"""
+Inspired from the MRF logic from Pleroma, see https://docs-develop.pleroma.social/mrf.html
+To support pluggable / customizable moderation using a programming language if
+our exposed features aren't enough.
+"""
+
+import logging
+
+import persisting_theory
+
+logger = logging.getLogger("funkwhale.mrf")
+
+
+class MRFException(Exception):
+    pass
+
+
+class Discard(MRFException):
+    pass
+
+
+class Skip(MRFException):
+    pass
+
+
+class Registry(persisting_theory.Registry):
+    look_into = "mrf_policies"
+
+    def __init__(self, name=""):
+        self.name = name
+
+        super().__init__()
+
+    def apply(self, payload, **kwargs):
+        policy_names = kwargs.pop("policies", [])
+        if not policy_names:
+            policies = self.items()
+        else:
+            logger.debug(
+                "[MRF.%s] Running restricted list of policies %s…",
+                self.name,
+                ", ".join(policy_names),
+            )
+            policies = [(name, self[name]) for name in policy_names]
+        updated = False
+        for policy_name, policy in policies:
+            logger.debug("[MRF.%s] Applying mrf policy '%s'…", self.name, policy_name)
+            try:
+                new_payload = policy(payload, **kwargs)
+            except Skip as e:
+                logger.debug(
+                    "[MRF.%s] Skipped policy %s because '%s'",
+                    self.name,
+                    policy_name,
+                    str(e),
+                )
+                continue
+            except Discard as e:
+                logger.info(
+                    "[MRF.%s] Discarded message per policy '%s' because '%s'",
+                    self.name,
+                    policy_name,
+                    str(e),
+                )
+                return (None, False)
+            except Exception:
+                logger.exception(
+                    "[MRF.%s] Error while applying policy '%s'!", self.name, policy_name
+                )
+                continue
+            if new_payload:
+                updated = True
+                payload = new_payload
+
+        return payload, updated
+
+
+inbox = Registry("inbox")
diff --git a/api/funkwhale_api/moderation/mrf_policies.py b/api/funkwhale_api/moderation/mrf_policies.py
new file mode 100644
index 0000000000000000000000000000000000000000..ec6b2f6d890ffe5565f138e5e2a5bbfd0770bf55
--- /dev/null
+++ b/api/funkwhale_api/moderation/mrf_policies.py
@@ -0,0 +1,47 @@
+import urllib.parse
+
+from funkwhale_api.common import preferences
+from funkwhale_api.common import utils
+from funkwhale_api.federation import models as federation_models
+from funkwhale_api.moderation import mrf
+
+
+@mrf.inbox.register(name="allow_list")
+def check_allow_list(payload, **kwargs):
+    """
+    A MRF policy that only works when the moderation__allow_list_enabled
+    setting is on.
+
+    It will extract domain names from the activity ID, actor ID and activity object ID
+    and discard the activity if any of those domain names isn't on the allow list.
+    """
+    if not preferences.get("moderation__allow_list_enabled"):
+        raise mrf.Skip("Allow-listing is disabled")
+
+    allowed_domains = set(
+        federation_models.Domain.objects.filter(allowed=True).values_list(
+            "name", flat=True
+        )
+    )
+
+    relevant_ids = [
+        payload.get("actor"),
+        kwargs.get("sender_id", payload.get("id")),
+        utils.recursive_getattr(payload, "object.id", permissive=True),
+    ]
+
+    relevant_domains = set(
+        [
+            domain
+            for domain in [urllib.parse.urlparse(i).hostname for i in relevant_ids if i]
+            if domain
+        ]
+    )
+
+    if relevant_domains - allowed_domains:
+
+        raise mrf.Discard(
+            "These domains are not allowed: {}".format(
+                ", ".join(relevant_domains - allowed_domains)
+            )
+        )
diff --git a/api/funkwhale_api/moderation/serializers.py b/api/funkwhale_api/moderation/serializers.py
index 20c34242102d4f302ac29a9781a059c08fef2fb9..81e5846bb4a9c5c3e887a1a6a0cb9a92bd36b321 100644
--- a/api/funkwhale_api/moderation/serializers.py
+++ b/api/funkwhale_api/moderation/serializers.py
@@ -1,7 +1,20 @@
+import json
+import urllib.parse
+
+from django.conf import settings
+from django.core.serializers.json import DjangoJSONEncoder
+import persisting_theory
 from rest_framework import serializers
 
+from funkwhale_api.common import fields as common_fields
+from funkwhale_api.common import preferences
+from funkwhale_api.federation import models as federation_models
+from funkwhale_api.federation import utils as federation_utils
 from funkwhale_api.music import models as music_models
+from funkwhale_api.playlists import models as playlists_models
+
 from . import models
+from . import tasks
 
 
 class FilteredArtistSerializer(serializers.ModelSerializer):
@@ -43,3 +56,208 @@ class UserFilterSerializer(serializers.ModelSerializer):
             data["target_artist"] = target["obj"]
 
         return data
+
+
+state_serializers = persisting_theory.Registry()
+
+
+TAGS_FIELD = serializers.ListField(source="get_tags")
+
+
+@state_serializers.register(name="music.Artist")
+class ArtistStateSerializer(serializers.ModelSerializer):
+    tags = TAGS_FIELD
+
+    class Meta:
+        model = music_models.Artist
+        fields = ["id", "name", "mbid", "fid", "creation_date", "uuid", "tags"]
+
+
+@state_serializers.register(name="music.Album")
+class AlbumStateSerializer(serializers.ModelSerializer):
+    tags = TAGS_FIELD
+    artist = ArtistStateSerializer()
+
+    class Meta:
+        model = music_models.Album
+        fields = [
+            "id",
+            "title",
+            "mbid",
+            "fid",
+            "creation_date",
+            "uuid",
+            "artist",
+            "release_date",
+            "tags",
+        ]
+
+
+@state_serializers.register(name="music.Track")
+class TrackStateSerializer(serializers.ModelSerializer):
+    tags = TAGS_FIELD
+    artist = ArtistStateSerializer()
+    album = AlbumStateSerializer()
+
+    class Meta:
+        model = music_models.Track
+        fields = [
+            "id",
+            "title",
+            "mbid",
+            "fid",
+            "creation_date",
+            "uuid",
+            "artist",
+            "album",
+            "disc_number",
+            "position",
+            "license",
+            "copyright",
+            "tags",
+        ]
+
+
+@state_serializers.register(name="music.Library")
+class LibraryStateSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = music_models.Library
+        fields = [
+            "id",
+            "uuid",
+            "fid",
+            "name",
+            "description",
+            "creation_date",
+            "privacy_level",
+        ]
+
+
+@state_serializers.register(name="playlists.Playlist")
+class PlaylistStateSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = playlists_models.Playlist
+        fields = ["id", "name", "creation_date", "privacy_level"]
+
+
+@state_serializers.register(name="federation.Actor")
+class ActorStateSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = federation_models.Actor
+        fields = [
+            "fid",
+            "name",
+            "preferred_username",
+            "full_username",
+            "summary",
+            "domain",
+            "type",
+            "creation_date",
+        ]
+
+
+def get_actor_query(attr, value):
+    data = federation_utils.get_actor_data_from_username(value)
+    return federation_utils.get_actor_from_username_data_query(None, data)
+
+
+def get_target_owner(target):
+    mapping = {
+        music_models.Artist: lambda t: t.attributed_to,
+        music_models.Album: lambda t: t.attributed_to,
+        music_models.Track: lambda t: t.attributed_to,
+        music_models.Library: lambda t: t.actor,
+        playlists_models.Playlist: lambda t: t.user.actor,
+        federation_models.Actor: lambda t: t,
+    }
+
+    return mapping[target.__class__](target)
+
+
+TARGET_CONFIG = {
+    "artist": {"queryset": music_models.Artist.objects.all()},
+    "album": {"queryset": music_models.Album.objects.all()},
+    "track": {"queryset": music_models.Track.objects.all()},
+    "library": {
+        "queryset": music_models.Library.objects.all(),
+        "id_attr": "uuid",
+        "id_field": serializers.UUIDField(),
+    },
+    "playlist": {"queryset": playlists_models.Playlist.objects.all()},
+    "account": {
+        "queryset": federation_models.Actor.objects.all(),
+        "id_attr": "full_username",
+        "id_field": serializers.EmailField(),
+        "get_query": get_actor_query,
+    },
+}
+TARGET_FIELD = common_fields.GenericRelation(TARGET_CONFIG)
+
+
+class ReportSerializer(serializers.ModelSerializer):
+    target = TARGET_FIELD
+
+    class Meta:
+        model = models.Report
+        fields = [
+            "uuid",
+            "summary",
+            "creation_date",
+            "handled_date",
+            "is_handled",
+            "submitter_email",
+            "target",
+            "type",
+        ]
+        read_only_fields = ["uuid", "is_handled", "creation_date", "handled_date"]
+
+    def validate(self, validated_data):
+        validated_data = super().validate(validated_data)
+        submitter = self.context.get("submitter")
+        if submitter:
+            # we have an authenticated actor so no need to check further
+            return validated_data
+
+        unauthenticated_report_types = preferences.get(
+            "moderation__unauthenticated_report_types"
+        )
+        if validated_data["type"] not in unauthenticated_report_types:
+            raise serializers.ValidationError(
+                "You need an account to submit this report"
+            )
+
+        if not validated_data.get("submitter_email"):
+            raise serializers.ValidationError(
+                "You need to provide an email address to submit this report"
+            )
+
+        return validated_data
+
+    def create(self, validated_data):
+        target_state_serializer = state_serializers[
+            validated_data["target"]._meta.label
+        ]
+
+        validated_data["target_state"] = target_state_serializer(
+            validated_data["target"]
+        ).data
+        # freeze target type/id in JSON so even if the corresponding object is deleted
+        # we can have the info and display it in the frontend
+        target_data = self.fields["target"].to_representation(validated_data["target"])
+        validated_data["target_state"]["_target"] = json.loads(
+            json.dumps(target_data, cls=DjangoJSONEncoder)
+        )
+
+        if "fid" in validated_data["target_state"]:
+            validated_data["target_state"]["domain"] = urllib.parse.urlparse(
+                validated_data["target_state"]["fid"]
+            ).hostname
+
+        validated_data["target_state"]["is_local"] = (
+            validated_data["target_state"].get("domain", settings.FEDERATION_HOSTNAME)
+            == settings.FEDERATION_HOSTNAME
+        )
+        validated_data["target_owner"] = get_target_owner(validated_data["target"])
+        r = super().create(validated_data)
+        tasks.signals.report_created.send(sender=None, report=r)
+        return r
diff --git a/api/funkwhale_api/moderation/signals.py b/api/funkwhale_api/moderation/signals.py
new file mode 100644
index 0000000000000000000000000000000000000000..16be236e0c6f07d691d2072a5d4c7c2f6b8e92ac
--- /dev/null
+++ b/api/funkwhale_api/moderation/signals.py
@@ -0,0 +1,3 @@
+import django.dispatch
+
+report_created = django.dispatch.Signal(providing_args=["report"])
diff --git a/api/funkwhale_api/moderation/tasks.py b/api/funkwhale_api/moderation/tasks.py
new file mode 100644
index 0000000000000000000000000000000000000000..0d0e970521d804baf5e92fc6202ddaf50ae179ea
--- /dev/null
+++ b/api/funkwhale_api/moderation/tasks.py
@@ -0,0 +1,116 @@
+import logging
+from django.core import mail
+from django.dispatch import receiver
+from django.conf import settings
+
+from funkwhale_api.common import channels
+from funkwhale_api.common import utils
+from funkwhale_api.taskapp import celery
+from funkwhale_api.federation import utils as federation_utils
+from funkwhale_api.users import models as users_models
+
+from . import models
+from . import signals
+
+logger = logging.getLogger(__name__)
+
+
+@receiver(signals.report_created)
+def broadcast_report_created(report, **kwargs):
+    from . import serializers
+
+    channels.group_send(
+        "admin.moderation",
+        {
+            "type": "event.send",
+            "text": "",
+            "data": {
+                "type": "report.created",
+                "report": serializers.ReportSerializer(report).data,
+                "unresolved_count": models.Report.objects.filter(
+                    is_handled=False
+                ).count(),
+            },
+        },
+    )
+
+
+@receiver(signals.report_created)
+def trigger_moderator_email(report, **kwargs):
+    if settings.MODERATION_EMAIL_NOTIFICATIONS_ENABLED:
+        utils.on_commit(send_new_report_email_to_moderators.delay, report_id=report.pk)
+
+
+@celery.app.task(name="moderation.send_new_report_email_to_moderators")
+@celery.require_instance(
+    models.Report.objects.select_related("submitter").filter(is_handled=False), "report"
+)
+def send_new_report_email_to_moderators(report):
+    moderators = users_models.User.objects.filter(
+        is_active=True, permission_moderation=True
+    )
+    if not moderators:
+        # we fallback on superusers
+        moderators = users_models.User.objects.filter(is_superuser=True)
+    moderators = sorted(moderators, key=lambda m: m.pk)
+    submitter_repr = (
+        report.submitter.full_username if report.submitter else report.submitter_email
+    )
+    subject = "[{} moderation - {}] New report from {}".format(
+        settings.FUNKWHALE_HOSTNAME, report.get_type_display(), submitter_repr
+    )
+    detail_url = federation_utils.full_url(
+        "/manage/moderation/reports/{}".format(report.uuid)
+    )
+    unresolved_reports_url = federation_utils.full_url(
+        "/manage/moderation/reports?q=resolved:no"
+    )
+    unresolved_reports = models.Report.objects.filter(is_handled=False).count()
+    body = [
+        '{} just submitted a report in the "{}" category.'.format(
+            submitter_repr, report.get_type_display()
+        ),
+        "",
+        "Reported object: {} - {}".format(
+            report.target._meta.verbose_name.title(), str(report.target)
+        ),
+    ]
+    if hasattr(report.target, "get_absolute_url"):
+        body.append(
+            "Open public page: {}".format(
+                federation_utils.full_url(report.target.get_absolute_url())
+            )
+        )
+    if hasattr(report.target, "get_moderation_url"):
+        body.append(
+            "Open moderation page: {}".format(
+                federation_utils.full_url(report.target.get_moderation_url())
+            )
+        )
+    if report.summary:
+        body += ["", "Report content:", "", report.summary]
+
+    body += [
+        "",
+        "- To handle this report, please visit {}".format(detail_url),
+        "- To view all unresolved reports (currently {}), please visit {}".format(
+            unresolved_reports, unresolved_reports_url
+        ),
+        "",
+        "—",
+        "",
+        "You are receiving this email because you are a moderator for {}.".format(
+            settings.FUNKWHALE_HOSTNAME
+        ),
+    ]
+
+    for moderator in moderators:
+        if not moderator.email:
+            logger.warning("Moderator %s has no email configured", moderator.username)
+            continue
+        mail.send_mail(
+            subject,
+            message="\n".join(body),
+            recipient_list=[moderator.email],
+            from_email=settings.DEFAULT_FROM_EMAIL,
+        )
diff --git a/api/funkwhale_api/moderation/urls.py b/api/funkwhale_api/moderation/urls.py
index 05d2e7a9223774db0329f66ae295255cb88d9b7a..597aacadbccb5e7a37afb0bd46e8d1cc6a881a1d 100644
--- a/api/funkwhale_api/moderation/urls.py
+++ b/api/funkwhale_api/moderation/urls.py
@@ -1,8 +1,9 @@
-from rest_framework import routers
+from funkwhale_api.common import routers
 
 from . import views
 
-router = routers.SimpleRouter()
+router = routers.OptionalSlashRouter()
 router.register(r"content-filters", views.UserFilterViewSet, "content-filters")
+router.register(r"reports", views.ReportsViewSet, "reports")
 
 urlpatterns = router.urls
diff --git a/api/funkwhale_api/moderation/utils.py b/api/funkwhale_api/moderation/utils.py
new file mode 100644
index 0000000000000000000000000000000000000000..d4a1b879a537b0666c372a061e780057c8b90313
--- /dev/null
+++ b/api/funkwhale_api/moderation/utils.py
@@ -0,0 +1,21 @@
+from rest_framework import serializers
+
+from funkwhale_api.federation import models as federation_models
+
+from . import models
+from . import serializers as moderation_serializers
+
+
+NOTE_TARGET_FIELDS = {
+    "report": {
+        "queryset": models.Report.objects.all(),
+        "id_attr": "uuid",
+        "id_field": serializers.UUIDField(),
+    },
+    "account": {
+        "queryset": federation_models.Actor.objects.all(),
+        "id_attr": "full_username",
+        "id_field": serializers.EmailField(),
+        "get_query": moderation_serializers.get_actor_query,
+    },
+}
diff --git a/api/funkwhale_api/moderation/views.py b/api/funkwhale_api/moderation/views.py
index 4d4e3e039abdd68858fe96df79ad965a02e49771..67de68001d507ce688ae20bba33b050fdc08e026 100644
--- a/api/funkwhale_api/moderation/views.py
+++ b/api/funkwhale_api/moderation/views.py
@@ -39,3 +39,31 @@ class UserFilterViewSet(
 
     def perform_create(self, serializer):
         serializer.save(user=self.request.user)
+
+
+class ReportsViewSet(mixins.CreateModelMixin, viewsets.GenericViewSet):
+    lookup_field = "uuid"
+    queryset = models.Report.objects.all().order_by("-creation_date")
+    serializer_class = serializers.ReportSerializer
+    required_scope = "reports"
+    ordering_fields = ("creation_date",)
+    anonymous_policy = "setting"
+    anonymous_scopes = {"write:reports"}
+    throttling_scopes = {
+        "create": {
+            "anonymous": "anonymous-reports",
+            "authenticated": "authenticated-reports",
+        }
+    }
+
+    def get_serializer_context(self):
+        context = super().get_serializer_context()
+        if self.request.user.is_authenticated:
+            context["submitter"] = self.request.user.actor
+        return context
+
+    def perform_create(self, serializer):
+        submitter = None
+        if self.request.user.is_authenticated:
+            submitter = self.request.user.actor
+        serializer.save(submitter=submitter)
diff --git a/api/funkwhale_api/music/factories.py b/api/funkwhale_api/music/factories.py
index 430c82439805957c007c1a3c80aa8d02e2dcefb8..52e5020bbfd961635562b3f0eaced0dbd759d9b5 100644
--- a/api/funkwhale_api/music/factories.py
+++ b/api/funkwhale_api/music/factories.py
@@ -2,10 +2,11 @@ import os
 
 import factory
 
-from funkwhale_api.factories import ManyToManyFromList, registry, NoUpdateOnCreate
+from funkwhale_api.factories import registry, NoUpdateOnCreate
 
 from funkwhale_api.federation import factories as federation_factories
 from funkwhale_api.music import licenses
+from funkwhale_api.tags import factories as tags_factories
 from funkwhale_api.users import factories as users_factories
 
 SAMPLES_PATH = os.path.join(
@@ -55,7 +56,9 @@ class LicenseFactory(NoUpdateOnCreate, factory.django.DjangoModelFactory):
 
 
 @registry.register
-class ArtistFactory(NoUpdateOnCreate, factory.django.DjangoModelFactory):
+class ArtistFactory(
+    tags_factories.TaggableFactory, NoUpdateOnCreate, factory.django.DjangoModelFactory
+):
     name = factory.Faker("name")
     mbid = factory.Faker("uuid4")
     fid = factory.Faker("federation_url")
@@ -72,7 +75,9 @@ class ArtistFactory(NoUpdateOnCreate, factory.django.DjangoModelFactory):
 
 
 @registry.register
-class AlbumFactory(NoUpdateOnCreate, factory.django.DjangoModelFactory):
+class AlbumFactory(
+    tags_factories.TaggableFactory, NoUpdateOnCreate, factory.django.DjangoModelFactory
+):
     title = factory.Faker("sentence", nb_words=3)
     mbid = factory.Faker("uuid4")
     release_date = factory.Faker("date_object")
@@ -96,14 +101,14 @@ class AlbumFactory(NoUpdateOnCreate, factory.django.DjangoModelFactory):
 
 
 @registry.register
-class TrackFactory(NoUpdateOnCreate, factory.django.DjangoModelFactory):
+class TrackFactory(
+    tags_factories.TaggableFactory, NoUpdateOnCreate, factory.django.DjangoModelFactory
+):
     fid = factory.Faker("federation_url")
     title = factory.Faker("sentence", nb_words=3)
     mbid = factory.Faker("uuid4")
     album = factory.SubFactory(AlbumFactory)
-    artist = factory.SelfAttribute("album.artist")
     position = 1
-    tags = ManyToManyFromList("tags")
     playable = playable_factory("track")
 
     class Meta:
@@ -118,6 +123,26 @@ class TrackFactory(NoUpdateOnCreate, factory.django.DjangoModelFactory):
             fid=factory.Faker("federation_url", local=True), album__local=True
         )
 
+    @factory.post_generation
+    def artist(self, created, extracted, **kwargs):
+        """
+        A bit intricated, because we want to be able to specify a different
+        track artist with a fallback on album artist if nothing is specified.
+
+        And handle cases where build or build_batch are used (so no db calls)
+        """
+        if extracted:
+            self.artist = extracted
+        elif kwargs:
+            if created:
+                self.artist = ArtistFactory(**kwargs)
+            else:
+                self.artist = ArtistFactory.build(**kwargs)
+        elif self.album:
+            self.artist = self.album.artist
+        if created:
+            self.save()
+
     @factory.post_generation
     def license(self, created, extracted, **kwargs):
         if not created:
@@ -164,18 +189,6 @@ class UploadVersionFactory(NoUpdateOnCreate, factory.django.DjangoModelFactory):
         model = "music.UploadVersion"
 
 
-@registry.register
-class TagFactory(NoUpdateOnCreate, factory.django.DjangoModelFactory):
-    name = factory.SelfAttribute("slug")
-    slug = factory.Faker("slug")
-
-    class Meta:
-        model = "taggit.Tag"
-
-
-# XXX To remove
-
-
 class ImportBatchFactory(NoUpdateOnCreate, factory.django.DjangoModelFactory):
     submitted_by = factory.SubFactory(users_factories.UserFactory)
 
diff --git a/api/funkwhale_api/music/filters.py b/api/funkwhale_api/music/filters.py
index fa5a10f6d4397ed296d8710d6b76d6dc6646ec28..44763b966ebe7a0eb02a28988b2213e725e1ffdb 100644
--- a/api/funkwhale_api/music/filters.py
+++ b/api/funkwhale_api/music/filters.py
@@ -9,9 +9,20 @@ from . import models
 from . import utils
 
 
+def filter_tags(queryset, name, value):
+    non_empty_tags = [v.lower() for v in value if v]
+    for tag in non_empty_tags:
+        queryset = queryset.filter(tagged_items__tag__name=tag).distinct()
+    return queryset
+
+
+TAG_FILTER = common_filters.MultipleQueryFilter(method=filter_tags)
+
+
 class ArtistFilter(moderation_filters.HiddenContentFilterSet):
     q = fields.SearchFilter(search_fields=["name"])
     playable = filters.BooleanFilter(field_name="_", method="filter_playable")
+    tag = TAG_FILTER
 
     class Meta:
         model = models.Artist
@@ -29,6 +40,7 @@ class ArtistFilter(moderation_filters.HiddenContentFilterSet):
 class TrackFilter(moderation_filters.HiddenContentFilterSet):
     q = fields.SearchFilter(search_fields=["title", "album__title", "artist__name"])
     playable = filters.BooleanFilter(field_name="_", method="filter_playable")
+    tag = TAG_FILTER
     id = common_filters.MultipleQueryFilter(coerce=int)
 
     class Meta:
@@ -94,6 +106,7 @@ class UploadFilter(filters.FilterSet):
 class AlbumFilter(moderation_filters.HiddenContentFilterSet):
     playable = filters.BooleanFilter(field_name="_", method="filter_playable")
     q = fields.SearchFilter(search_fields=["title", "artist__name"])
+    tag = TAG_FILTER
 
     class Meta:
         model = models.Album
diff --git a/api/funkwhale_api/music/metadata.py b/api/funkwhale_api/music/metadata.py
index f0ea67b1aa66003be34cd0572f6e79c10c8064f4..801ea6a9badc141c5e06e2eb3f69caa5045076d1 100644
--- a/api/funkwhale_api/music/metadata.py
+++ b/api/funkwhale_api/music/metadata.py
@@ -1,4 +1,5 @@
 import base64
+from collections.abc import Mapping
 import datetime
 import logging
 import pendulum
@@ -9,12 +10,13 @@ import mutagen.oggvorbis
 import mutagen.flac
 
 from rest_framework import serializers
-from rest_framework.compat import Mapping
+
+from funkwhale_api.tags import models as tags_models
 
 logger = logging.getLogger(__name__)
 NODEFAULT = object()
 # default title used when imported tracks miss the `Album` tag, see #122
-UNKWOWN_ALBUM = "[Unknown Album]"
+UNKNOWN_ALBUM = "[Unknown Album]"
 
 
 class TagNotFound(KeyError):
@@ -68,6 +70,45 @@ def clean_id3_pictures(apic):
     return pictures
 
 
+def get_mp4_tag(f, k):
+    if k == "pictures":
+        return f.get("covr")
+    raw_value = f.get(k, None)
+
+    if not raw_value:
+        raise TagNotFound(k)
+
+    value = raw_value[0]
+    try:
+        return value.decode()
+    except AttributeError:
+        return value
+
+
+def get_mp4_position(raw_value):
+    return raw_value[0]
+
+
+def clean_mp4_pictures(raw_pictures):
+    pictures = []
+    for p in list(raw_pictures):
+        if p.imageformat == p.FORMAT_JPEG:
+            mimetype = "image/jpeg"
+        elif p.imageformat == p.FORMAT_PNG:
+            mimetype = "image/png"
+        else:
+            continue
+        pictures.append(
+            {
+                "mimetype": mimetype,
+                "content": bytes(p),
+                "description": "",
+                "type": mutagen.id3.PictureType.COVER_FRONT,
+            }
+        )
+    return pictures
+
+
 def get_flac_tag(f, k):
     if k == "pictures":
         return f.pictures
@@ -144,6 +185,11 @@ CONF = {
             "mbid": {"field": "musicbrainz_trackid"},
             "license": {},
             "copyright": {},
+            "genre": {},
+            "pictures": {
+                "field": "metadata_block_picture",
+                "to_application": clean_ogg_pictures,
+            },
         },
     },
     "OggVorbis": {
@@ -162,6 +208,7 @@ CONF = {
             "mbid": {"field": "musicbrainz_trackid"},
             "license": {},
             "copyright": {},
+            "genre": {},
             "pictures": {
                 "field": "metadata_block_picture",
                 "to_application": clean_ogg_pictures,
@@ -184,6 +231,7 @@ CONF = {
             "mbid": {"field": "MusicBrainz Track Id"},
             "license": {},
             "copyright": {},
+            "genre": {},
         },
     },
     "MP3": {
@@ -199,6 +247,7 @@ CONF = {
             "date": {"field": "TDRC"},
             "musicbrainz_albumid": {"field": "MusicBrainz Album Id"},
             "musicbrainz_artistid": {"field": "MusicBrainz Artist Id"},
+            "genre": {"field": "TCON"},
             "musicbrainz_albumartistid": {"field": "MusicBrainz Album Artist Id"},
             "mbid": {"field": "UFID", "getter": get_mp3_recording_id},
             "pictures": {},
@@ -206,6 +255,33 @@ CONF = {
             "copyright": {"field": "TCOP"},
         },
     },
+    "MP4": {
+        "getter": get_mp4_tag,
+        "clean_pictures": clean_mp4_pictures,
+        "fields": {
+            "position": {"field": "trkn", "to_application": get_mp4_position},
+            "disc_number": {"field": "disk", "to_application": get_mp4_position},
+            "title": {"field": "©nam"},
+            "artist": {"field": "©ART"},
+            "album_artist": {"field": "aART"},
+            "album": {"field": "©alb"},
+            "date": {"field": "©day"},
+            "musicbrainz_albumid": {
+                "field": "----:com.apple.iTunes:MusicBrainz Album Id"
+            },
+            "musicbrainz_artistid": {
+                "field": "----:com.apple.iTunes:MusicBrainz Artist Id"
+            },
+            "genre": {"field": "©gen"},
+            "musicbrainz_albumartistid": {
+                "field": "----:com.apple.iTunes:MusicBrainz Album Artist Id"
+            },
+            "mbid": {"field": "----:com.apple.iTunes:MusicBrainz Track Id"},
+            "pictures": {},
+            "license": {"field": "----:com.apple.iTunes:LICENSE"},
+            "copyright": {"field": "cprt"},
+        },
+    },
     "FLAC": {
         "getter": get_flac_tag,
         "clean_pictures": clean_flac_pictures,
@@ -220,6 +296,7 @@ CONF = {
             "musicbrainz_albumid": {},
             "musicbrainz_artistid": {},
             "musicbrainz_albumartistid": {},
+            "genre": {},
             "mbid": {"field": "musicbrainz_trackid"},
             "test": {},
             "pictures": {},
@@ -431,7 +508,7 @@ class AlbumField(serializers.Field):
         except TagNotFound:
             title = ""
 
-        title = title.strip() or UNKWOWN_ALBUM
+        title = title.strip() or UNKNOWN_ALBUM
         final = {
             "title": title,
             "release_date": data.get("date", None),
@@ -485,6 +562,58 @@ class PermissiveDateField(serializers.CharField):
         return None
 
 
+def extract_tags_from_genre(string):
+    tags = []
+    delimiter = "@@@@@"
+    for d in [" - ", ",", ";", "/"]:
+        # Replace common tags separators by a custom delimiter
+        string = string.replace(d, delimiter)
+
+    # loop on the parts (splitting on our custom delimiter)
+    for tag in string.split(delimiter):
+        tag = tag.strip()
+        for d in ["-"]:
+            # preparation for replacement so that Pop-Rock becomes Pop Rock, then PopRock
+            # (step 1, step 2 happens below)
+            tag = tag.replace(d, " ")
+        if not tag:
+            continue
+        final_tag = ""
+        if not tags_models.TAG_REGEX.match(tag.replace(" ", "")):
+            # the string contains some non words chars ($, €, etc.), right now
+            # we simply skip such tags
+            continue
+        # concatenate the parts and uppercase them so that 'pop rock' becomes 'PopRock'
+        if len(tag.split(" ")) == 1:
+            # we append the tag "as is", because it doesn't contain any space
+            tags.append(tag)
+            continue
+        for part in tag.split(" "):
+            # the tag contains space, there's work to do to have consistent case
+            # 'pop rock' -> 'PopRock'
+            # (step 2)
+            if not part:
+                continue
+            final_tag += part[0].upper() + part[1:]
+        if final_tag:
+            tags.append(final_tag)
+    return tags
+
+
+class TagsField(serializers.CharField):
+    def get_value(self, data):
+        return data
+
+    def to_internal_value(self, data):
+        try:
+            value = data.get("genre") or ""
+        except TagNotFound:
+            return []
+        value = super().to_internal_value(str(value))
+
+        return extract_tags_from_genre(value)
+
+
 class MBIDField(serializers.UUIDField):
     def __init__(self, *args, **kwargs):
         kwargs.setdefault("allow_null", True)
@@ -533,6 +662,7 @@ class TrackMetadataSerializer(serializers.Serializer):
     copyright = serializers.CharField(allow_blank=True, allow_null=True, required=False)
     license = serializers.CharField(allow_blank=True, allow_null=True, required=False)
     mbid = MBIDField()
+    tags = TagsField(allow_blank=True, allow_null=True, required=False)
 
     album = AlbumField()
     artists = ArtistField()
@@ -544,6 +674,7 @@ class TrackMetadataSerializer(serializers.Serializer):
         "position",
         "disc_number",
         "mbid",
+        "tags",
     ]
 
     def validate(self, validated_data):
@@ -553,7 +684,7 @@ class TrackMetadataSerializer(serializers.Serializer):
                 v = validated_data[field]
             except KeyError:
                 continue
-            if v in ["", None]:
+            if v in ["", None, []]:
                 validated_data.pop(field)
         return validated_data
 
diff --git a/api/funkwhale_api/music/migrations/0004_track_tags.py b/api/funkwhale_api/music/migrations/0004_track_tags.py
index b999a70313ce7951fdfed67c534592c55cb834e1..6fc627b4afe2f857df5aed12b07da4eaab852df9 100644
--- a/api/funkwhale_api/music/migrations/0004_track_tags.py
+++ b/api/funkwhale_api/music/migrations/0004_track_tags.py
@@ -2,25 +2,10 @@
 from __future__ import unicode_literals
 
 from django.db import migrations
-import taggit.managers
 
 
 class Migration(migrations.Migration):
 
-    dependencies = [
-        ("taggit", "0002_auto_20150616_2121"),
-        ("music", "0003_auto_20151222_2233"),
-    ]
+    dependencies = [("music", "0003_auto_20151222_2233")]
 
-    operations = [
-        migrations.AddField(
-            model_name="track",
-            name="tags",
-            field=taggit.managers.TaggableManager(
-                verbose_name="Tags",
-                help_text="A comma-separated list of tags.",
-                through="taggit.TaggedItem",
-                to="taggit.Tag",
-            ),
-        )
-    ]
+    operations = []
diff --git a/api/funkwhale_api/music/migrations/0027_auto_20180515_1808.py b/api/funkwhale_api/music/migrations/0027_auto_20180515_1808.py
index 1e3949da4823b5a3859277facfaa3f577f8360d6..0f01509ad198c936058c71b3d065554ddab5ec30 100644
--- a/api/funkwhale_api/music/migrations/0027_auto_20180515_1808.py
+++ b/api/funkwhale_api/music/migrations/0027_auto_20180515_1808.py
@@ -1,7 +1,6 @@
 # Generated by Django 2.0.3 on 2018-05-15 18:08
 
 from django.db import migrations, models
-import taggit.managers
 
 
 class Migration(migrations.Migration):
@@ -19,15 +18,4 @@ class Migration(migrations.Migration):
             name="size",
             field=models.IntegerField(blank=True, null=True),
         ),
-        migrations.AlterField(
-            model_name="track",
-            name="tags",
-            field=taggit.managers.TaggableManager(
-                blank=True,
-                help_text="A comma-separated list of tags.",
-                through="taggit.TaggedItem",
-                to="taggit.Tag",
-                verbose_name="Tags",
-            ),
-        ),
     ]
diff --git a/api/funkwhale_api/music/models.py b/api/funkwhale_api/music/models.py
index cf6a0b7ba310cbbe7354a20072de3a6f352333e4..49d22fa8541f50b896fc9b9881f4176bece8e36d 100644
--- a/api/funkwhale_api/music/models.py
+++ b/api/funkwhale_api/music/models.py
@@ -9,6 +9,7 @@ import uuid
 import pendulum
 import pydub
 from django.conf import settings
+from django.contrib.contenttypes.fields import GenericRelation
 from django.contrib.postgres.fields import JSONField
 from django.core.files.base import ContentFile
 from django.core.serializers.json import DjangoJSONEncoder
@@ -17,7 +18,6 @@ from django.db.models.signals import post_save
 from django.dispatch import receiver
 from django.urls import reverse
 from django.utils import timezone
-from taggit.managers import TaggableManager
 
 from versatileimagefield.fields import VersatileImageField
 from versatileimagefield.image_warmer import VersatileImageFieldWarmer
@@ -29,10 +29,18 @@ from funkwhale_api.common import session
 from funkwhale_api.common import utils as common_utils
 from funkwhale_api.federation import models as federation_models
 from funkwhale_api.federation import utils as federation_utils
+from funkwhale_api.tags import models as tags_models
 from . import importers, metadata, utils
 
 logger = logging.getLogger(__name__)
 
+MAX_LENGTHS = {
+    "ARTIST_NAME": 255,
+    "ALBUM_TITLE": 255,
+    "TRACK_TITLE": 255,
+    "COPYRIGHT": 500,
+}
+
 
 def empty_dict():
     return {}
@@ -126,6 +134,9 @@ class APIModelMixin(models.Model):
         parsed = urllib.parse.urlparse(self.fid)
         return parsed.hostname
 
+    def get_tags(self):
+        return list(sorted(self.tagged_items.values_list("tag__name", flat=True)))
+
 
 class License(models.Model):
     code = models.CharField(primary_key=True, max_length=100)
@@ -183,7 +194,7 @@ class ArtistQuerySet(common_models.LocalFromFidQuerySet, models.QuerySet):
 
 
 class Artist(APIModelMixin):
-    name = models.CharField(max_length=255)
+    name = models.CharField(max_length=MAX_LENGTHS["ARTIST_NAME"])
     federation_namespace = "artists"
     musicbrainz_model = "artist"
     musicbrainz_mapping = {
@@ -200,19 +211,24 @@ class Artist(APIModelMixin):
         on_delete=models.SET_NULL,
         related_name="attributed_artists",
     )
+    tagged_items = GenericRelation(tags_models.TaggedItem)
+    fetches = GenericRelation(
+        "federation.Fetch",
+        content_type_field="object_content_type",
+        object_id_field="object_id",
+    )
+
     api = musicbrainz.api.artists
     objects = ArtistQuerySet.as_manager()
 
     def __str__(self):
         return self.name
 
-    @property
-    def tags(self):
-        t = []
-        for album in self.albums.all():
-            for tag in album.tags:
-                t.append(tag)
-        return set(t)
+    def get_absolute_url(self):
+        return "/library/artists/{}".format(self.pk)
+
+    def get_moderation_url(self):
+        return "/manage/library/artists/{}".format(self.pk)
 
     @classmethod
     def get_or_create_from_name(cls, name, **kwargs):
@@ -266,7 +282,7 @@ class AlbumQuerySet(common_models.LocalFromFidQuerySet, models.QuerySet):
 
 
 class Album(APIModelMixin):
-    title = models.CharField(max_length=255)
+    title = models.CharField(max_length=MAX_LENGTHS["ALBUM_TITLE"])
     artist = models.ForeignKey(Artist, related_name="albums", on_delete=models.CASCADE)
     release_date = models.DateField(null=True, blank=True)
     release_group_id = models.UUIDField(null=True, blank=True)
@@ -286,6 +302,13 @@ class Album(APIModelMixin):
         on_delete=models.SET_NULL,
         related_name="attributed_albums",
     )
+    tagged_items = GenericRelation(tags_models.TaggedItem)
+    fetches = GenericRelation(
+        "federation.Fetch",
+        content_type_field="object_content_type",
+        object_id_field="object_id",
+    )
+
     api_includes = ["artist-credits", "recordings", "media", "release-groups"]
     api = musicbrainz.api.releases
     federation_namespace = "albums"
@@ -314,6 +337,7 @@ class Album(APIModelMixin):
         if data:
             extensions = {"image/jpeg": "jpg", "image/png": "png", "image/gif": "gif"}
             extension = extensions.get(data["mimetype"], "jpg")
+            f = None
             if data.get("content"):
                 # we have to cover itself
                 f = ContentFile(data["content"])
@@ -333,19 +357,27 @@ class Album(APIModelMixin):
                     return
                 else:
                     f = ContentFile(response.content)
-            self.cover.save("{}.{}".format(self.uuid, extension), f, save=False)
-            self.save(update_fields=["cover"])
-            return self.cover.file
+            if f:
+                self.cover.save("{}.{}".format(self.uuid, extension), f, save=False)
+                self.save(update_fields=["cover"])
+                return self.cover.file
         if self.mbid:
             image_data = musicbrainz.api.images.get_front(str(self.mbid))
             f = ContentFile(image_data)
             self.cover.save("{0}.jpg".format(self.mbid), f, save=False)
             self.save(update_fields=["cover"])
-        return self.cover.file
+        if self.cover:
+            return self.cover.file
 
     def __str__(self):
         return self.title
 
+    def get_absolute_url(self):
+        return "/library/albums/{}".format(self.pk)
+
+    def get_moderation_url(self):
+        return "/manage/library/albums/{}".format(self.pk)
+
     @property
     def cover_path(self):
         if not self.cover:
@@ -356,14 +388,6 @@ class Album(APIModelMixin):
             # external storage
             return self.cover.name
 
-    @property
-    def tags(self):
-        t = []
-        for track in self.tracks.all():
-            for tag in track.tags.all():
-                t.append(tag)
-        return set(t)
-
     @classmethod
     def get_or_create_from_title(cls, title, **kwargs):
         kwargs.update({"title": title})
@@ -380,7 +404,8 @@ def import_tags(instance, cleaned_data, raw_data):
         except ValueError:
             continue
         tags_to_add.append(tag_data["name"])
-    instance.tags.add(*tags_to_add)
+
+    tags_models.add_tags(instance, *tags_to_add)
 
 
 def import_album(v):
@@ -430,7 +455,7 @@ def get_artist(release_list):
 
 
 class Track(APIModelMixin):
-    title = models.CharField(max_length=255)
+    title = models.CharField(max_length=MAX_LENGTHS["TRACK_TITLE"])
     artist = models.ForeignKey(Artist, related_name="tracks", on_delete=models.CASCADE)
     disc_number = models.PositiveIntegerField(null=True, blank=True)
     position = models.PositiveIntegerField(null=True, blank=True)
@@ -454,7 +479,9 @@ class Track(APIModelMixin):
         on_delete=models.SET_NULL,
         related_name="attributed_tracks",
     )
-    copyright = models.CharField(max_length=500, null=True, blank=True)
+    copyright = models.CharField(
+        max_length=MAX_LENGTHS["COPYRIGHT"], null=True, blank=True
+    )
     federation_namespace = "tracks"
     musicbrainz_model = "recording"
     api = musicbrainz.api.recordings
@@ -472,7 +499,12 @@ class Track(APIModelMixin):
     }
     import_hooks = [import_tags]
     objects = TrackQuerySet.as_manager()
-    tags = TaggableManager(blank=True)
+    tagged_items = GenericRelation(tags_models.TaggedItem)
+    fetches = GenericRelation(
+        "federation.Fetch",
+        content_type_field="object_content_type",
+        object_id_field="object_id",
+    )
 
     class Meta:
         ordering = ["album", "disc_number", "position"]
@@ -480,6 +512,12 @@ class Track(APIModelMixin):
     def __str__(self):
         return self.title
 
+    def get_absolute_url(self):
+        return "/library/tracks/{}".format(self.pk)
+
+    def get_moderation_url(self):
+        return "/manage/library/tracks/{}".format(self.pk)
+
     def save(self, **kwargs):
         try:
             self.artist
@@ -1043,6 +1081,12 @@ class Library(federation_models.FederationMixin):
     uploads_count = models.PositiveIntegerField(default=0)
     objects = LibraryQuerySet.as_manager()
 
+    def __str__(self):
+        return self.name
+
+    def get_moderation_url(self):
+        return "/manage/library/libraries/{}".format(self.uuid)
+
     def get_federation_id(self):
         return federation_utils.full_url(
             reverse("federation:music:libraries-detail", kwargs={"uuid": self.uuid})
diff --git a/api/funkwhale_api/music/mutations.py b/api/funkwhale_api/music/mutations.py
index 9fd91fb506d245e0ea50f5ef9cab28c7e7ee0dc1..b149f19635b5e92c2d310cf53d71a1471d35c4a4 100644
--- a/api/funkwhale_api/music/mutations.py
+++ b/api/funkwhale_api/music/mutations.py
@@ -1,5 +1,7 @@
 from funkwhale_api.common import mutations
 from funkwhale_api.federation import routes
+from funkwhale_api.tags import models as tags_models
+from funkwhale_api.tags import serializers as tags_serializers
 
 from . import models
 
@@ -9,7 +11,27 @@ def can_suggest(obj, actor):
 
 
 def can_approve(obj, actor):
-    return obj.is_local and actor.user and actor.user.get_permissions()["library"]
+    if not obj.is_local or not actor.user:
+        return False
+
+    return (
+        actor.id is not None and actor.id == obj.attributed_to_id
+    ) or actor.user.get_permissions()["library"]
+
+
+class TagMutation(mutations.UpdateMutationSerializer):
+    tags = tags_serializers.TagsListField()
+    previous_state_handlers = {
+        "tags": lambda obj: list(
+            sorted(obj.tagged_items.values_list("tag__name", flat=True))
+        )
+    }
+
+    def update(self, instance, validated_data):
+        tags = validated_data.pop("tags", [])
+        r = super().update(instance, validated_data)
+        tags_models.set_tags(instance, *tags)
+        return r
 
 
 @mutations.registry.connect(
@@ -17,12 +39,12 @@ def can_approve(obj, actor):
     models.Track,
     perm_checkers={"suggest": can_suggest, "approve": can_approve},
 )
-class TrackMutationSerializer(mutations.UpdateMutationSerializer):
+class TrackMutationSerializer(TagMutation):
     serialized_relations = {"license": "code"}
 
     class Meta:
         model = models.Track
-        fields = ["license", "title", "position", "copyright"]
+        fields = ["license", "title", "position", "copyright", "tags"]
 
     def post_apply(self, obj, validated_data):
         routes.outbox.dispatch(
@@ -35,10 +57,10 @@ class TrackMutationSerializer(mutations.UpdateMutationSerializer):
     models.Artist,
     perm_checkers={"suggest": can_suggest, "approve": can_approve},
 )
-class ArtistMutationSerializer(mutations.UpdateMutationSerializer):
+class ArtistMutationSerializer(TagMutation):
     class Meta:
         model = models.Artist
-        fields = ["name"]
+        fields = ["name", "tags"]
 
     def post_apply(self, obj, validated_data):
         routes.outbox.dispatch(
@@ -51,10 +73,10 @@ class ArtistMutationSerializer(mutations.UpdateMutationSerializer):
     models.Album,
     perm_checkers={"suggest": can_suggest, "approve": can_approve},
 )
-class AlbumMutationSerializer(mutations.UpdateMutationSerializer):
+class AlbumMutationSerializer(TagMutation):
     class Meta:
         model = models.Album
-        fields = ["title", "release_date"]
+        fields = ["title", "release_date", "tags"]
 
     def post_apply(self, obj, validated_data):
         routes.outbox.dispatch(
diff --git a/api/funkwhale_api/music/serializers.py b/api/funkwhale_api/music/serializers.py
index 867d15d8ddb864292263be107b159fb095f7de1e..77854d437647a3e661ea462c33217db0b3425447 100644
--- a/api/funkwhale_api/music/serializers.py
+++ b/api/funkwhale_api/music/serializers.py
@@ -4,7 +4,6 @@ from django.db import transaction
 from django import urls
 from django.conf import settings
 from rest_framework import serializers
-from taggit.models import Tag
 from versatileimagefield.serializers import VersatileImageFieldSerializer
 
 from funkwhale_api.activity import serializers as activity_serializers
@@ -12,6 +11,8 @@ from funkwhale_api.common import serializers as common_serializers
 from funkwhale_api.common import utils as common_utils
 from funkwhale_api.federation import routes
 from funkwhale_api.federation import utils as federation_utils
+from funkwhale_api.playlists import models as playlists_models
+from funkwhale_api.tags.models import Tag
 
 from . import filters, models, tasks
 
@@ -19,6 +20,16 @@ from . import filters, models, tasks
 cover_field = VersatileImageFieldSerializer(allow_null=True, sizes="square")
 
 
+def serialize_attributed_to(self, obj):
+    # Import at runtime to avoid a circular import issue
+    from funkwhale_api.federation import serializers as federation_serializers
+
+    if not obj.attributed_to_id:
+        return
+
+    return federation_serializers.APIActorSerializer(obj.attributed_to).data
+
+
 class LicenseSerializer(serializers.Serializer):
     id = serializers.SerializerMethodField()
     url = serializers.URLField()
@@ -67,63 +78,80 @@ class ArtistAlbumSerializer(serializers.ModelSerializer):
 
 class ArtistWithAlbumsSerializer(serializers.ModelSerializer):
     albums = ArtistAlbumSerializer(many=True, read_only=True)
+    tags = serializers.SerializerMethodField()
+    attributed_to = serializers.SerializerMethodField()
+    tracks_count = serializers.SerializerMethodField()
 
     class Meta:
         model = models.Artist
-        fields = ("id", "fid", "mbid", "name", "creation_date", "albums", "is_local")
-
-
-class ArtistSimpleSerializer(serializers.ModelSerializer):
-    class Meta:
-        model = models.Artist
-        fields = ("id", "fid", "mbid", "name", "creation_date", "is_local")
-
-
-class AlbumTrackSerializer(serializers.ModelSerializer):
-    artist = ArtistSimpleSerializer(read_only=True)
-    uploads = serializers.SerializerMethodField()
-    listen_url = serializers.SerializerMethodField()
-    duration = serializers.SerializerMethodField()
-
-    class Meta:
-        model = models.Track
         fields = (
             "id",
             "fid",
             "mbid",
-            "title",
-            "album",
-            "artist",
+            "name",
             "creation_date",
-            "position",
-            "disc_number",
-            "uploads",
-            "listen_url",
-            "duration",
-            "copyright",
-            "license",
+            "albums",
             "is_local",
+            "tags",
+            "attributed_to",
+            "tracks_count",
         )
 
-    def get_uploads(self, obj):
-        uploads = getattr(obj, "playable_uploads", [])
-        return TrackUploadSerializer(uploads, many=True).data
+    def get_tags(self, obj):
+        tagged_items = getattr(obj, "_prefetched_tagged_items", [])
+        return [ti.tag.name for ti in tagged_items]
 
-    def get_listen_url(self, obj):
-        return obj.listen_url
+    get_attributed_to = serialize_attributed_to
 
-    def get_duration(self, obj):
-        try:
-            return obj.duration
-        except AttributeError:
-            return None
+    def get_tracks_count(self, o):
+        tracks = getattr(o, "_prefetched_tracks", None)
+        return len(tracks) if tracks else None
+
+
+def serialize_artist_simple(artist):
+    return {
+        "id": artist.id,
+        "fid": artist.fid,
+        "mbid": str(artist.mbid),
+        "name": artist.name,
+        "creation_date": serializers.DateTimeField().to_representation(
+            artist.creation_date
+        ),
+        "is_local": artist.is_local,
+    }
+
+
+def serialize_album_track(track):
+    return {
+        "id": track.id,
+        "fid": track.fid,
+        "mbid": str(track.mbid),
+        "title": track.title,
+        "artist": serialize_artist_simple(track.artist),
+        "album": track.album_id,
+        "creation_date": serializers.DateTimeField().to_representation(
+            track.creation_date
+        ),
+        "position": track.position,
+        "disc_number": track.disc_number,
+        "uploads": [
+            serialize_upload(u) for u in getattr(track, "playable_uploads", [])
+        ],
+        "listen_url": track.listen_url,
+        "duration": getattr(track, "duration", None),
+        "copyright": track.copyright,
+        "license": track.license_id,
+        "is_local": track.is_local,
+    }
 
 
 class AlbumSerializer(serializers.ModelSerializer):
     tracks = serializers.SerializerMethodField()
-    artist = ArtistSimpleSerializer(read_only=True)
+    artist = serializers.SerializerMethodField()
     cover = cover_field
     is_playable = serializers.SerializerMethodField()
+    tags = serializers.SerializerMethodField()
+    attributed_to = serializers.SerializerMethodField()
 
     class Meta:
         model = models.Album
@@ -139,11 +167,18 @@ class AlbumSerializer(serializers.ModelSerializer):
             "creation_date",
             "is_playable",
             "is_local",
+            "tags",
+            "attributed_to",
         )
 
+    get_attributed_to = serialize_attributed_to
+
+    def get_artist(self, o):
+        return serialize_artist_simple(o.artist)
+
     def get_tracks(self, o):
         ordered_tracks = o.tracks.all()
-        return AlbumTrackSerializer(ordered_tracks, many=True).data
+        return [serialize_album_track(track) for track in ordered_tracks]
 
     def get_is_playable(self, obj):
         try:
@@ -153,9 +188,13 @@ class AlbumSerializer(serializers.ModelSerializer):
         except AttributeError:
             return None
 
+    def get_tags(self, obj):
+        tagged_items = getattr(obj, "_prefetched_tagged_items", [])
+        return [ti.tag.name for ti in tagged_items]
+
 
 class TrackAlbumSerializer(serializers.ModelSerializer):
-    artist = ArtistSimpleSerializer(read_only=True)
+    artist = serializers.SerializerMethodField()
     cover = cover_field
 
     class Meta:
@@ -172,26 +211,29 @@ class TrackAlbumSerializer(serializers.ModelSerializer):
             "is_local",
         )
 
+    def get_artist(self, o):
+        return serialize_artist_simple(o.artist)
 
-class TrackUploadSerializer(serializers.ModelSerializer):
-    class Meta:
-        model = models.Upload
-        fields = (
-            "uuid",
-            "listen_url",
-            "size",
-            "duration",
-            "bitrate",
-            "mimetype",
-            "extension",
-        )
+
+def serialize_upload(upload):
+    return {
+        "uuid": str(upload.uuid),
+        "listen_url": upload.listen_url,
+        "size": upload.size,
+        "duration": upload.duration,
+        "bitrate": upload.bitrate,
+        "mimetype": upload.mimetype,
+        "extension": upload.extension,
+    }
 
 
 class TrackSerializer(serializers.ModelSerializer):
-    artist = ArtistSimpleSerializer(read_only=True)
+    artist = serializers.SerializerMethodField()
     album = TrackAlbumSerializer(read_only=True)
     uploads = serializers.SerializerMethodField()
     listen_url = serializers.SerializerMethodField()
+    tags = serializers.SerializerMethodField()
+    attributed_to = serializers.SerializerMethodField()
 
     class Meta:
         model = models.Track
@@ -210,14 +252,24 @@ class TrackSerializer(serializers.ModelSerializer):
             "copyright",
             "license",
             "is_local",
+            "tags",
+            "attributed_to",
         )
 
+    get_attributed_to = serialize_attributed_to
+
+    def get_artist(self, o):
+        return serialize_artist_simple(o.artist)
+
     def get_listen_url(self, obj):
         return obj.listen_url
 
     def get_uploads(self, obj):
-        uploads = getattr(obj, "playable_uploads", [])
-        return TrackUploadSerializer(uploads, many=True).data
+        return [serialize_upload(u) for u in getattr(obj, "playable_uploads", [])]
+
+    def get_tags(self, obj):
+        tagged_items = getattr(obj, "_prefetched_tagged_items", [])
+        return [ti.tag.name for ti in tagged_items]
 
 
 @common_serializers.track_fields_for_update("name", "description", "privacy_level")
@@ -361,7 +413,7 @@ class UploadActionSerializer(common_serializers.ActionSerializer):
 class TagSerializer(serializers.ModelSerializer):
     class Meta:
         model = Tag
-        fields = ("id", "name", "slug")
+        fields = ("id", "name", "creation_date")
 
 
 class SimpleAlbumSerializer(serializers.ModelSerializer):
@@ -499,6 +551,38 @@ class OembedSerializer(serializers.Serializer):
             data["author_url"] = federation_utils.full_url(
                 common_utils.spa_reverse("library_artist", kwargs={"pk": artist.pk})
             )
+        elif match.url_name == "library_playlist":
+            qs = playlists_models.Playlist.objects.filter(
+                pk=int(match.kwargs["pk"]), privacy_level="everyone"
+            )
+            try:
+                obj = qs.get()
+            except playlists_models.Playlist.DoesNotExist:
+                raise serializers.ValidationError(
+                    "No artist matching id {}".format(match.kwargs["pk"])
+                )
+            embed_type = "playlist"
+            embed_id = obj.pk
+            playlist_tracks = obj.playlist_tracks.exclude(track__album__cover="")
+            playlist_tracks = playlist_tracks.exclude(track__album__cover=None)
+            playlist_tracks = playlist_tracks.select_related("track__album").order_by(
+                "index"
+            )
+            first_playlist_track = playlist_tracks.first()
+
+            if first_playlist_track:
+                data["thumbnail_url"] = federation_utils.full_url(
+                    first_playlist_track.track.album.cover.crop["400x400"].url
+                )
+                data["thumbnail_width"] = 400
+                data["thumbnail_height"] = 400
+            data["title"] = obj.name
+            data["description"] = obj.name
+            data["author_name"] = obj.name
+            data["height"] = 400
+            data["author_url"] = federation_utils.full_url(
+                common_utils.spa_reverse("library_playlist", kwargs={"pk": obj.pk})
+            )
         else:
             raise serializers.ValidationError(
                 "Unsupported url: {}".format(validated_data["url"])
diff --git a/api/funkwhale_api/music/spa_views.py b/api/funkwhale_api/music/spa_views.py
index 7fafedf618ed013d08824d4e22cf73d705e3fdd3..5215dcdd8600a1c129865349561e0a6e727e4aec 100644
--- a/api/funkwhale_api/music/spa_views.py
+++ b/api/funkwhale_api/music/spa_views.py
@@ -5,6 +5,7 @@ from django.urls import reverse
 from django.db.models import Q
 
 from funkwhale_api.common import utils
+from funkwhale_api.playlists import models as playlists_models
 
 from . import models
 from . import serializers
@@ -203,3 +204,59 @@ def library_artist(request, pk):
         # twitter player is also supported in various software
         metas += get_twitter_card_metas(type="artist", id=obj.pk)
     return metas
+
+
+def library_playlist(request, pk):
+    queryset = playlists_models.Playlist.objects.filter(pk=pk, privacy_level="everyone")
+    try:
+        obj = queryset.get()
+    except playlists_models.Playlist.DoesNotExist:
+        return []
+    obj_url = utils.join_url(
+        settings.FUNKWHALE_URL,
+        utils.spa_reverse("library_playlist", kwargs={"pk": obj.pk}),
+    )
+    # we use the first playlist track's album's cover as image
+    playlist_tracks = obj.playlist_tracks.exclude(track__album__cover="")
+    playlist_tracks = playlist_tracks.exclude(track__album__cover=None)
+    playlist_tracks = playlist_tracks.select_related("track__album").order_by("index")
+    first_playlist_track = playlist_tracks.first()
+    metas = [
+        {"tag": "meta", "property": "og:url", "content": obj_url},
+        {"tag": "meta", "property": "og:title", "content": obj.name},
+        {"tag": "meta", "property": "og:type", "content": "music.playlist"},
+    ]
+
+    if first_playlist_track:
+        metas.append(
+            {
+                "tag": "meta",
+                "property": "og:image",
+                "content": utils.join_url(
+                    settings.FUNKWHALE_URL,
+                    first_playlist_track.track.album.cover.crop["400x400"].url,
+                ),
+            }
+        )
+
+    if (
+        models.Upload.objects.filter(
+            track__pk__in=[obj.playlist_tracks.values("track")]
+        )
+        .playable_by(None)
+        .exists()
+    ):
+        metas.append(
+            {
+                "tag": "link",
+                "rel": "alternate",
+                "type": "application/json+oembed",
+                "href": (
+                    utils.join_url(settings.FUNKWHALE_URL, reverse("api:v1:oembed"))
+                    + "?format=json&url={}".format(urllib.parse.quote_plus(obj_url))
+                ),
+            }
+        )
+        # twitter player is also supported in various software
+        metas += get_twitter_card_metas(type="playlist", id=obj.pk)
+    return metas
diff --git a/api/funkwhale_api/music/tasks.py b/api/funkwhale_api/music/tasks.py
index ff3cde440a40eeb021e43127e5944d043dd151d7..ca32c808eaaa1b4eb35c8f20ecc933c77a7ee17f 100644
--- a/api/funkwhale_api/music/tasks.py
+++ b/api/funkwhale_api/music/tasks.py
@@ -14,6 +14,7 @@ from requests.exceptions import RequestException
 from funkwhale_api.common import channels, preferences
 from funkwhale_api.federation import routes
 from funkwhale_api.federation import library as lb
+from funkwhale_api.tags import models as tags_models
 from funkwhale_api.taskapp import celery
 
 from . import licenses
@@ -54,19 +55,21 @@ def update_album_cover(
             )
 
 
-IMAGE_TYPES = [("jpg", "image/jpeg"), ("png", "image/png")]
+IMAGE_TYPES = [("jpg", "image/jpeg"), ("jpeg", "image/jpeg"), ("png", "image/png")]
+FOLDER_IMAGE_NAMES = ["cover", "folder"]
 
 
 def get_cover_from_fs(dir_path):
     if os.path.exists(dir_path):
-        for e, m in IMAGE_TYPES:
-            cover_path = os.path.join(dir_path, "cover.{}".format(e))
-            if not os.path.exists(cover_path):
-                logger.debug("Cover %s does not exists", cover_path)
-                continue
-            with open(cover_path, "rb") as c:
-                logger.info("Found cover at %s", cover_path)
-                return {"mimetype": m, "content": c.read()}
+        for name in FOLDER_IMAGE_NAMES:
+            for e, m in IMAGE_TYPES:
+                cover_path = os.path.join(dir_path, "{}.{}".format(name, e))
+                if not os.path.exists(cover_path):
+                    logger.debug("Cover %s does not exists", cover_path)
+                    continue
+                with open(cover_path, "rb") as c:
+                    logger.info("Found cover at %s", cover_path)
+                    return {"mimetype": m, "content": c.read()}
 
 
 @celery.app.task(name="music.start_library_scan")
@@ -297,6 +300,7 @@ def federation_audio_track_to_metadata(payload, references):
             if payload["album"].get("musicbrainzId")
             else None,
             "release_date": payload["album"].get("released"),
+            "tags": [t["name"] for t in payload["album"].get("tags", []) or []],
             "artists": [
                 {
                     "fid": a["id"],
@@ -304,6 +308,7 @@ def federation_audio_track_to_metadata(payload, references):
                     "fdate": a["published"],
                     "attributed_to": references.get(a.get("attributedTo")),
                     "mbid": str(a["musicbrainzId"]) if a.get("musicbrainzId") else None,
+                    "tags": [t["name"] for t in a.get("tags", []) or []],
                 }
                 for a in payload["album"]["artists"]
             ],
@@ -315,12 +320,14 @@ def federation_audio_track_to_metadata(payload, references):
                 "fdate": a["published"],
                 "attributed_to": references.get(a.get("attributedTo")),
                 "mbid": str(a["musicbrainzId"]) if a.get("musicbrainzId") else None,
+                "tags": [t["name"] for t in a.get("tags", []) or []],
             }
             for a in payload["artists"]
         ],
         # federation
         "fid": payload["id"],
         "fdate": payload["published"],
+        "tags": [t["name"] for t in payload.get("tags", []) or []],
     }
     cover = payload["album"].get("cover")
     if cover:
@@ -399,6 +406,12 @@ def get_track_from_import_metadata(data, update_cover=False, attributed_to=None)
     return track
 
 
+def truncate(v, length):
+    if v is None:
+        return v
+    return v[:length]
+
+
 def _get_track(data, attributed_to=None):
     track_uuid = getter(data, "funkwhale", "track", "uuid")
 
@@ -437,10 +450,10 @@ def _get_track(data, attributed_to=None):
 
     # get / create artist and album artist
     artists = getter(data, "artists", default=[])
-    artist = artists[0]
-    artist_mbid = artist.get("mbid", None)
-    artist_fid = artist.get("fid", None)
-    artist_name = artist["name"]
+    artist_data = artists[0]
+    artist_mbid = artist_data.get("mbid", None)
+    artist_fid = artist_data.get("fid", None)
+    artist_name = truncate(artist_data["name"], models.MAX_LENGTHS["ARTIST_NAME"])
 
     if artist_mbid:
         query = Q(mbid=artist_mbid)
@@ -453,24 +466,28 @@ def _get_track(data, attributed_to=None):
         "mbid": artist_mbid,
         "fid": artist_fid,
         "from_activity_id": from_activity_id,
-        "attributed_to": artist.get("attributed_to", attributed_to),
+        "attributed_to": artist_data.get("attributed_to", attributed_to),
     }
-    if artist.get("fdate"):
-        defaults["creation_date"] = artist.get("fdate")
+    if artist_data.get("fdate"):
+        defaults["creation_date"] = artist_data.get("fdate")
 
-    artist = get_best_candidate_or_create(
+    artist, created = get_best_candidate_or_create(
         models.Artist, query, defaults=defaults, sort_fields=["mbid", "fid"]
-    )[0]
+    )
+    if created:
+        tags_models.add_tags(artist, *artist_data.get("tags", []))
 
     album_artists = getter(data, "album", "artists", default=artists) or artists
-    album_artist = album_artists[0]
-    album_artist_name = album_artist.get("name")
+    album_artist_data = album_artists[0]
+    album_artist_name = truncate(
+        album_artist_data.get("name"), models.MAX_LENGTHS["ARTIST_NAME"]
+    )
     if album_artist_name == artist_name:
         album_artist = artist
     else:
         query = Q(name__iexact=album_artist_name)
-        album_artist_mbid = album_artist.get("mbid", None)
-        album_artist_fid = album_artist.get("fid", None)
+        album_artist_mbid = album_artist_data.get("mbid", None)
+        album_artist_fid = album_artist_data.get("fid", None)
         if album_artist_mbid:
             query |= Q(mbid=album_artist_mbid)
         if album_artist_fid:
@@ -480,19 +497,21 @@ def _get_track(data, attributed_to=None):
             "mbid": album_artist_mbid,
             "fid": album_artist_fid,
             "from_activity_id": from_activity_id,
-            "attributed_to": album_artist.get("attributed_to", attributed_to),
+            "attributed_to": album_artist_data.get("attributed_to", attributed_to),
         }
-        if album_artist.get("fdate"):
-            defaults["creation_date"] = album_artist.get("fdate")
+        if album_artist_data.get("fdate"):
+            defaults["creation_date"] = album_artist_data.get("fdate")
 
-        album_artist = get_best_candidate_or_create(
+        album_artist, created = get_best_candidate_or_create(
             models.Artist, query, defaults=defaults, sort_fields=["mbid", "fid"]
-        )[0]
+        )
+        if created:
+            tags_models.add_tags(album_artist, *album_artist_data.get("tags", []))
 
     # get / create album
-    album = data["album"]
-    album_title = album["title"]
-    album_fid = album.get("fid", None)
+    album_data = data["album"]
+    album_title = truncate(album_data["title"], models.MAX_LENGTHS["ALBUM_TITLE"])
+    album_fid = album_data.get("fid", None)
 
     if album_mbid:
         query = Q(mbid=album_mbid)
@@ -505,20 +524,22 @@ def _get_track(data, attributed_to=None):
         "title": album_title,
         "artist": album_artist,
         "mbid": album_mbid,
-        "release_date": album.get("release_date"),
+        "release_date": album_data.get("release_date"),
         "fid": album_fid,
         "from_activity_id": from_activity_id,
-        "attributed_to": album.get("attributed_to", attributed_to),
+        "attributed_to": album_data.get("attributed_to", attributed_to),
     }
-    if album.get("fdate"):
-        defaults["creation_date"] = album.get("fdate")
+    if album_data.get("fdate"):
+        defaults["creation_date"] = album_data.get("fdate")
 
-    album = get_best_candidate_or_create(
+    album, created = get_best_candidate_or_create(
         models.Album, query, defaults=defaults, sort_fields=["mbid", "fid"]
-    )[0]
+    )
+    if created:
+        tags_models.add_tags(album, *album_data.get("tags", []))
 
     # get / create track
-    track_title = data["title"]
+    track_title = truncate(data["title"], models.MAX_LENGTHS["TRACK_TITLE"])
     position = data.get("position", 1)
     query = Q(title__iexact=track_title, artist=artist, album=album, position=position)
     if track_mbid:
@@ -536,15 +557,17 @@ def _get_track(data, attributed_to=None):
         "from_activity_id": from_activity_id,
         "attributed_to": data.get("attributed_to", attributed_to),
         "license": licenses.match(data.get("license"), data.get("copyright")),
-        "copyright": data.get("copyright"),
+        "copyright": truncate(data.get("copyright"), models.MAX_LENGTHS["COPYRIGHT"]),
     }
     if data.get("fdate"):
         defaults["creation_date"] = data.get("fdate")
 
-    track = get_best_candidate_or_create(
+    track, created = get_best_candidate_or_create(
         models.Track, query, defaults=defaults, sort_fields=["mbid", "fid"]
-    )[0]
+    )
 
+    if created:
+        tags_models.add_tags(track, *data.get("tags", []))
     return track
 
 
diff --git a/api/funkwhale_api/music/utils.py b/api/funkwhale_api/music/utils.py
index bf3a0daf63b5e79499942deeed597238e1d6426f..09c8cbd122a6099cee8a0e9874fc1fe0ce1eea37 100644
--- a/api/funkwhale_api/music/utils.py
+++ b/api/funkwhale_api/music/utils.py
@@ -34,6 +34,8 @@ AUDIO_EXTENSIONS_AND_MIMETYPE = [
     ("ogg", "audio/ogg"),
     ("opus", "audio/opus"),
     ("mp3", "audio/mpeg"),
+    ("aac", "audio/x-m4a"),
+    ("m4a", "audio/x-m4a"),
     ("flac", "audio/x-flac"),
     ("flac", "audio/flac"),
 ]
diff --git a/api/funkwhale_api/music/views.py b/api/funkwhale_api/music/views.py
index 4f8f35ced2b2e7a0f6319b568fad511fb48dd711..c0effbac22d509abd868bc21741462750031bd78 100644
--- a/api/funkwhale_api/music/views.py
+++ b/api/funkwhale_api/music/views.py
@@ -1,10 +1,10 @@
+import datetime
 import logging
-import urllib
+import urllib.parse
 
 from django.conf import settings
 from django.db import transaction
 from django.db.models import Count, Prefetch, Sum, F, Q
-from django.db.models.functions import Length
 from django.utils import timezone
 
 from rest_framework import mixins
@@ -12,7 +12,6 @@ from rest_framework import settings as rest_settings
 from rest_framework import views, viewsets
 from rest_framework.decorators import action
 from rest_framework.response import Response
-from taggit.models import Tag
 
 from funkwhale_api.common import decorators as common_decorators
 from funkwhale_api.common import permissions as common_permissions
@@ -23,13 +22,23 @@ from funkwhale_api.federation.authentication import SignatureAuthentication
 from funkwhale_api.federation import actors
 from funkwhale_api.federation import api_serializers as federation_api_serializers
 from funkwhale_api.federation import decorators as federation_decorators
+from funkwhale_api.federation import models as federation_models
 from funkwhale_api.federation import routes
+from funkwhale_api.federation import tasks as federation_tasks
+from funkwhale_api.tags.models import Tag, TaggedItem
+from funkwhale_api.tags.serializers import TagSerializer
 from funkwhale_api.users.oauth import permissions as oauth_permissions
 
 from . import filters, licenses, models, serializers, tasks, utils
 
 logger = logging.getLogger(__name__)
 
+TAG_PREFETCH = Prefetch(
+    "tagged_items",
+    queryset=TaggedItem.objects.all().select_related().order_by("tag__name"),
+    to_attr="_prefetched_tagged_items",
+)
+
 
 def get_libraries(filter_uploads):
     def libraries(self, request, *args, **kwargs):
@@ -53,17 +62,49 @@ def get_libraries(filter_uploads):
     return libraries
 
 
-class TagViewSetMixin(object):
-    def get_queryset(self):
-        queryset = super().get_queryset()
-        tag = self.request.query_params.get("tag")
-        if tag:
-            queryset = queryset.filter(tags__pk=tag)
-        return queryset
+def refetch_obj(obj, queryset):
+    """
+    Given an Artist/Album/Track instance, if the instance is from a remote pod,
+    will attempt to update local data with the latest ActivityPub representation.
+    """
+    if obj.is_local:
+        return obj
+
+    now = timezone.now()
+    limit = now - datetime.timedelta(minutes=settings.FEDERATION_OBJECT_FETCH_DELAY)
+    last_fetch = obj.fetches.order_by("-creation_date").first()
+    if last_fetch is not None and last_fetch.creation_date > limit:
+        # we fetched recently, no need to do it again
+        return obj
+
+    logger.info("Refetching %s:%s at %s…", obj._meta.label, obj.pk, obj.fid)
+    actor = actors.get_service_actor()
+    fetch = federation_models.Fetch.objects.create(actor=actor, url=obj.fid, object=obj)
+    try:
+        federation_tasks.fetch(fetch_id=fetch.pk)
+    except Exception:
+        logger.exception(
+            "Error while refetching %s:%s at %s…", obj._meta.label, obj.pk, obj.fid
+        )
+    else:
+        fetch.refresh_from_db()
+        if fetch.status == "finished":
+            obj = queryset.get(pk=obj.pk)
+    return obj
 
 
 class ArtistViewSet(common_views.SkipFilterForGetObject, viewsets.ReadOnlyModelViewSet):
-    queryset = models.Artist.objects.all()
+    queryset = (
+        models.Artist.objects.all()
+        .prefetch_related("attributed_to")
+        .prefetch_related(
+            Prefetch(
+                "tracks",
+                queryset=models.Track.objects.all(),
+                to_attr="_prefetched_tracks",
+            )
+        )
+    )
     serializer_class = serializers.ArtistWithAlbumsSerializer
     permission_classes = [oauth_permissions.ScopePermission]
     required_scope = "libraries"
@@ -74,13 +115,25 @@ class ArtistViewSet(common_views.SkipFilterForGetObject, viewsets.ReadOnlyModelV
     fetches = federation_decorators.fetches_route()
     mutations = common_decorators.mutations_route(types=["update"])
 
+    def get_object(self):
+        obj = super().get_object()
+
+        if (
+            self.action == "retrieve"
+            and self.request.GET.get("refresh", "").lower() == "true"
+        ):
+            obj = refetch_obj(obj, self.get_queryset())
+        return obj
+
     def get_queryset(self):
         queryset = super().get_queryset()
         albums = models.Album.objects.with_tracks_count()
         albums = albums.annotate_playable_by_actor(
             utils.get_actor_from_request(self.request)
         )
-        return queryset.prefetch_related(Prefetch("albums", queryset=albums))
+        return queryset.prefetch_related(
+            Prefetch("albums", queryset=albums), TAG_PREFETCH
+        )
 
     libraries = action(methods=["get"], detail=True)(
         get_libraries(
@@ -93,7 +146,9 @@ class ArtistViewSet(common_views.SkipFilterForGetObject, viewsets.ReadOnlyModelV
 
 class AlbumViewSet(common_views.SkipFilterForGetObject, viewsets.ReadOnlyModelViewSet):
     queryset = (
-        models.Album.objects.all().order_by("artist", "release_date").select_related()
+        models.Album.objects.all()
+        .order_by("artist", "release_date")
+        .select_related("artist", "attributed_to")
     )
     serializer_class = serializers.AlbumSerializer
     permission_classes = [oauth_permissions.ScopePermission]
@@ -105,6 +160,16 @@ class AlbumViewSet(common_views.SkipFilterForGetObject, viewsets.ReadOnlyModelVi
     fetches = federation_decorators.fetches_route()
     mutations = common_decorators.mutations_route(types=["update"])
 
+    def get_object(self):
+        obj = super().get_object()
+
+        if (
+            self.action == "retrieve"
+            and self.request.GET.get("refresh", "").lower() == "true"
+        ):
+            obj = refetch_obj(obj, self.get_queryset())
+        return obj
+
     def get_queryset(self):
         queryset = super().get_queryset()
         tracks = (
@@ -112,7 +177,9 @@ class AlbumViewSet(common_views.SkipFilterForGetObject, viewsets.ReadOnlyModelVi
             .with_playable_uploads(utils.get_actor_from_request(self.request))
             .order_for_album()
         )
-        qs = queryset.prefetch_related(Prefetch("tracks", queryset=tracks))
+        qs = queryset.prefetch_related(
+            Prefetch("tracks", queryset=tracks), TAG_PREFETCH
+        )
         return qs
 
     libraries = action(methods=["get"], detail=True)(
@@ -182,14 +249,16 @@ class LibraryViewSet(
         return Response(serializer.data)
 
 
-class TrackViewSet(
-    common_views.SkipFilterForGetObject, TagViewSetMixin, viewsets.ReadOnlyModelViewSet
-):
+class TrackViewSet(common_views.SkipFilterForGetObject, viewsets.ReadOnlyModelViewSet):
     """
     A simple ViewSet for viewing and editing accounts.
     """
 
-    queryset = models.Track.objects.all().for_nested_serialization()
+    queryset = (
+        models.Track.objects.all()
+        .for_nested_serialization()
+        .select_related("attributed_to")
+    )
     serializer_class = serializers.TrackSerializer
     permission_classes = [oauth_permissions.ScopePermission]
     required_scope = "libraries"
@@ -207,6 +276,16 @@ class TrackViewSet(
     fetches = federation_decorators.fetches_route()
     mutations = common_decorators.mutations_route(types=["update"])
 
+    def get_object(self):
+        obj = super().get_object()
+
+        if (
+            self.action == "retrieve"
+            and self.request.GET.get("refresh", "").lower() == "true"
+        ):
+            obj = refetch_obj(obj, self.get_queryset())
+        return obj
+
     def get_queryset(self):
         queryset = super().get_queryset()
         filter_favorites = self.request.GET.get("favorites", None)
@@ -217,7 +296,7 @@ class TrackViewSet(
         queryset = queryset.with_playable_uploads(
             utils.get_actor_from_request(self.request)
         )
-        return queryset
+        return queryset.prefetch_related(TAG_PREFETCH)
 
     libraries = action(methods=["get"], detail=True)(
         get_libraries(filter_uploads=lambda o, uploads: uploads.filter(track=o))
@@ -242,6 +321,8 @@ def get_file_path(audio_file):
             path = "/music" + audio_file.replace(prefix, "", 1)
         if path.startswith("http://") or path.startswith("https://"):
             return (settings.PROTECT_FILES_PATH + "/media/" + path).encode("utf-8")
+        # needed to serve files with % or ? chars
+        path = urllib.parse.quote(path)
         return (settings.PROTECT_FILES_PATH + path).encode("utf-8")
     if t == "apache2":
         try:
@@ -334,7 +415,7 @@ def handle_serve(upload, user, format=None, max_bitrate=None, proxy_media=True):
         f = transcoded_version
         file_path = get_file_path(f.audio_file)
         mt = f.mimetype
-    if not proxy_media:
+    if not proxy_media and f.audio_file:
         # we simply issue a 302 redirect to the real URL
         response = Response(status=302)
         response["Location"] = f.audio_file.url
@@ -458,14 +539,6 @@ class UploadViewSet(
         instance.delete()
 
 
-class TagViewSet(viewsets.ReadOnlyModelViewSet):
-    queryset = Tag.objects.all().order_by("name")
-    serializer_class = serializers.TagSerializer
-    permission_classes = [oauth_permissions.ScopePermission]
-    required_scope = "libraries"
-    anonymous_policy = "setting"
-
-
 class Search(views.APIView):
     max_results = 3
     permission_classes = [oauth_permissions.ScopePermission]
@@ -485,6 +558,7 @@ class Search(views.APIView):
             "albums": serializers.AlbumSerializer(
                 self.get_albums(query), many=True
             ).data,
+            "tags": TagSerializer(self.get_tags(query), many=True).data,
         }
         return Response(results, status=200)
 
@@ -521,17 +595,10 @@ class Search(views.APIView):
         return common_utils.order_for_search(qs, "name")[: self.max_results]
 
     def get_tags(self, query):
-        search_fields = ["slug", "name__unaccent"]
+        search_fields = ["name__unaccent"]
         query_obj = utils.get_query(query, search_fields)
-
-        # We want the shortest tag first
-        qs = (
-            Tag.objects.all()
-            .annotate(slug_length=Length("slug"))
-            .order_by("slug_length")
-        )
-
-        return qs.filter(query_obj)[: self.max_results]
+        qs = Tag.objects.all().filter(query_obj)
+        return common_utils.order_for_search(qs, "name")[: self.max_results]
 
 
 class LicenseViewSet(viewsets.ReadOnlyModelViewSet):
diff --git a/api/funkwhale_api/musicbrainz/urls.py b/api/funkwhale_api/musicbrainz/urls.py
index d14447f14a62a73a494e9c6752d67274824f18ed..f4ced5b005dffdf03184a4269be0469d0d0cdc48 100644
--- a/api/funkwhale_api/musicbrainz/urls.py
+++ b/api/funkwhale_api/musicbrainz/urls.py
@@ -1,9 +1,9 @@
 from django.conf.urls import url
-from rest_framework import routers
+from funkwhale_api.common import routers
 
 from . import views
 
-router = routers.SimpleRouter()
+router = routers.OptionalSlashRouter()
 router.register(r"search", views.SearchViewSet, "search")
 urlpatterns = [
     url(
diff --git a/api/funkwhale_api/playlists/models.py b/api/funkwhale_api/playlists/models.py
index 15332c75a2d8ec01d0d8bac3bafa41361bd83c24..37d498c4f0a452ec7aa0b092ddf95c010935a0be 100644
--- a/api/funkwhale_api/playlists/models.py
+++ b/api/funkwhale_api/playlists/models.py
@@ -69,6 +69,9 @@ class Playlist(models.Model):
     def __str__(self):
         return self.name
 
+    def get_absolute_url(self):
+        return "/library/playlists/{}".format(self.pk)
+
     @transaction.atomic
     def insert(self, plt, index=None, allow_duplicates=True):
         """
diff --git a/api/funkwhale_api/playlists/serializers.py b/api/funkwhale_api/playlists/serializers.py
index ccdf82f4b94fcb11ce5b3d16f1aa96db47a4e7db..dc61950dde7cd2f6d5268e8400284740a2d18449 100644
--- a/api/funkwhale_api/playlists/serializers.py
+++ b/api/funkwhale_api/playlists/serializers.py
@@ -2,6 +2,7 @@ from django.db import transaction
 from rest_framework import serializers
 
 from funkwhale_api.common import preferences
+from funkwhale_api.federation import serializers as federation_serializers
 from funkwhale_api.music.models import Track
 from funkwhale_api.music.serializers import TrackSerializer
 from funkwhale_api.users.serializers import UserBasicSerializer
@@ -79,6 +80,7 @@ class PlaylistSerializer(serializers.ModelSerializer):
     album_covers = serializers.SerializerMethodField(read_only=True)
     user = UserBasicSerializer(read_only=True)
     is_playable = serializers.SerializerMethodField()
+    actor = serializers.SerializerMethodField()
 
     class Meta:
         model = models.Playlist
@@ -93,9 +95,15 @@ class PlaylistSerializer(serializers.ModelSerializer):
             "album_covers",
             "duration",
             "is_playable",
+            "actor",
         )
         read_only_fields = ["id", "modification_date", "creation_date"]
 
+    def get_actor(self, obj):
+        actor = obj.user.actor
+        if actor:
+            return federation_serializers.APIActorSerializer(actor).data
+
     def get_is_playable(self, obj):
         try:
             return bool(obj.playable_plts)
diff --git a/api/funkwhale_api/playlists/views.py b/api/funkwhale_api/playlists/views.py
index 861dc81755f6007ade9f47df442c92d110646363..6f9ea23cecac6a997decfdf701b2cfada3fec731 100644
--- a/api/funkwhale_api/playlists/views.py
+++ b/api/funkwhale_api/playlists/views.py
@@ -23,7 +23,7 @@ class PlaylistViewSet(
     serializer_class = serializers.PlaylistSerializer
     queryset = (
         models.Playlist.objects.all()
-        .select_related("user")
+        .select_related("user__actor")
         .annotate(tracks_count=Count("playlist_tracks"))
         .with_covers()
         .with_duration()
diff --git a/api/funkwhale_api/radios/filters.py b/api/funkwhale_api/radios/filters.py
index 810673bd664f6b7ddf56aee7403a2dfac5445b83..a92dbae889dc7b08d679147b75f92f5074189b74 100644
--- a/api/funkwhale_api/radios/filters.py
+++ b/api/funkwhale_api/radios/filters.py
@@ -178,9 +178,9 @@ class TagFilter(RadioFilter):
             "autocomplete_fields": {
                 "remoteValues": "results",
                 "name": "name",
-                "value": "slug",
+                "value": "name",
             },
-            "autocomplete_qs": "query={query}",
+            "autocomplete_qs": "q={query}&ordering=length",
             "label": "Tags",
             "placeholder": "Select tags",
         }
@@ -189,4 +189,8 @@ class TagFilter(RadioFilter):
     label = "Tag"
 
     def get_query(self, candidates, names, **kwargs):
-        return Q(tags__slug__in=names)
+        return (
+            Q(tagged_items__tag__name__in=names)
+            | Q(artist__tagged_items__tag__name__in=names)
+            | Q(album__tagged_items__tag__name__in=names)
+        )
diff --git a/api/funkwhale_api/radios/radios.py b/api/funkwhale_api/radios/radios.py
index a0dc36b62adf8d76eb4c65f472ec04f440f56fc2..01a242216085e799cfef1ae8a29765f448d2aee1 100644
--- a/api/funkwhale_api/radios/radios.py
+++ b/api/funkwhale_api/radios/radios.py
@@ -2,18 +2,20 @@ import random
 
 from django.core.exceptions import ValidationError
 from django.db import connection
+from django.db.models import Q
 from rest_framework import serializers
-from taggit.models import Tag
 
 from funkwhale_api.moderation import filters as moderation_filters
 from funkwhale_api.music.models import Artist, Track
-from funkwhale_api.users.models import User
+from funkwhale_api.tags.models import Tag
 
 from . import filters, models
 from .registries import registry
 
 
 class SimpleRadio(object):
+    related_object_field = None
+
     def clean(self, instance):
         return
 
@@ -146,6 +148,8 @@ class CustomRadio(SessionRadio):
 class RelatedObjectRadio(SessionRadio):
     """Abstract radio related to an object (tag, artist, user...)"""
 
+    related_object_field = serializers.IntegerField(required=True)
+
     def clean(self, instance):
         super().clean(instance)
         if not instance.related_object:
@@ -162,10 +166,22 @@ class RelatedObjectRadio(SessionRadio):
 @registry.register(name="tag")
 class TagRadio(RelatedObjectRadio):
     model = Tag
+    related_object_field = serializers.CharField(required=True)
+
+    def get_related_object(self, name):
+        return self.model.objects.get(name=name)
 
     def get_queryset(self, **kwargs):
         qs = super().get_queryset(**kwargs)
-        return qs.filter(tags__in=[self.session.related_object])
+        query = (
+            Q(tagged_items__tag=self.session.related_object)
+            | Q(artist__tagged_items__tag=self.session.related_object)
+            | Q(album__tagged_items__tag=self.session.related_object)
+        )
+        return qs.filter(query)
+
+    def get_related_object_id_repr(self, obj):
+        return obj.name
 
 
 def weighted_choice(choices):
@@ -246,9 +262,7 @@ class ArtistRadio(RelatedObjectRadio):
 
 
 @registry.register(name="less-listened")
-class LessListenedRadio(RelatedObjectRadio):
-    model = User
-
+class LessListenedRadio(SessionRadio):
     def clean(self, instance):
         instance.related_object = instance.user
         super().clean(instance)
diff --git a/api/funkwhale_api/radios/serializers.py b/api/funkwhale_api/radios/serializers.py
index 397452ecc0e5c6646a82ea663fdc6bb099e2f803..65e48449a8e704a42e118646187da1ae24b117a1 100644
--- a/api/funkwhale_api/radios/serializers.py
+++ b/api/funkwhale_api/radios/serializers.py
@@ -54,6 +54,9 @@ class RadioSessionTrackSerializer(serializers.ModelSerializer):
 
 
 class RadioSessionSerializer(serializers.ModelSerializer):
+
+    related_object_id = serializers.CharField(required=False, allow_null=True)
+
     class Meta:
         model = models.RadioSession
         fields = (
@@ -66,7 +69,17 @@ class RadioSessionSerializer(serializers.ModelSerializer):
         )
 
     def validate(self, data):
-        registry[data["radio_type"]]().validate_session(data, **self.context)
+        radio_conf = registry[data["radio_type"]]()
+        if radio_conf.related_object_field:
+            try:
+                data[
+                    "related_object_id"
+                ] = radio_conf.related_object_field.to_internal_value(
+                    data["related_object_id"]
+                )
+            except KeyError:
+                raise serializers.ValidationError("Radio requires a related object")
+        radio_conf.validate_session(data, **self.context)
         return data
 
     def create(self, validated_data):
@@ -77,3 +90,11 @@ class RadioSessionSerializer(serializers.ModelSerializer):
                 validated_data["related_object_id"]
             )
         return super().create(validated_data)
+
+    def to_representation(self, instance):
+        repr = super().to_representation(instance)
+        radio_conf = registry[repr["radio_type"]]()
+        handler = getattr(radio_conf, "get_related_object_id_repr", None)
+        if handler and instance.related_object:
+            repr["related_object_id"] = handler(instance.related_object)
+        return repr
diff --git a/api/funkwhale_api/radios/urls.py b/api/funkwhale_api/radios/urls.py
index 8b9fd52c8a440d7ec41a8afa1e703f8b2a823143..4890b953f1bdce37c26a67e83bf535703edce1ce 100644
--- a/api/funkwhale_api/radios/urls.py
+++ b/api/funkwhale_api/radios/urls.py
@@ -1,8 +1,8 @@
-from rest_framework import routers
+from funkwhale_api.common import routers
 
 from . import views
 
-router = routers.SimpleRouter()
+router = routers.OptionalSlashRouter()
 router.register(r"sessions", views.RadioSessionViewSet, "sessions")
 router.register(r"radios", views.RadioViewSet, "radios")
 router.register(r"tracks", views.RadioSessionTrackViewSet, "tracks")
diff --git a/api/funkwhale_api/subsonic/renderers.py b/api/funkwhale_api/subsonic/renderers.py
index e4b6470511378bbff21d824896a4210dd84c6c43..527b3fa1e2e9274c8041cbbd6c74e8741a55d261 100644
--- a/api/funkwhale_api/subsonic/renderers.py
+++ b/api/funkwhale_api/subsonic/renderers.py
@@ -53,5 +53,8 @@ def dict_to_xml_tree(root_tag, d, parent=None):
             for obj in value:
                 root.append(dict_to_xml_tree(key, obj, parent=root))
         else:
-            root.set(key, str(value))
+            if key == "value":
+                root.text = str(value)
+            else:
+                root.set(key, str(value))
     return root
diff --git a/api/funkwhale_api/subsonic/serializers.py b/api/funkwhale_api/subsonic/serializers.py
index a53ad464038316f5efbd5810bd8a995e33a744ec..329c644ee266adc4360059d45064c09cf274f292 100644
--- a/api/funkwhale_api/subsonic/serializers.py
+++ b/api/funkwhale_api/subsonic/serializers.py
@@ -5,6 +5,7 @@ from rest_framework import serializers
 
 from funkwhale_api.history import models as history_models
 from funkwhale_api.music import models as music_models
+from funkwhale_api.music import utils as music_utils
 
 
 def get_artist_data(artist_values):
@@ -71,7 +72,14 @@ def get_track_data(album, track, upload):
         "artist": album.artist.name,
         "track": track.position or 1,
         "discNumber": track.disc_number or 1,
-        "contentType": upload.mimetype,
+        # Ugly fallback to mp3 but some subsonic clients fail if the value is empty or null, and we don't always
+        # have the info on legacy uploads
+        "contentType": upload.mimetype
+        or (
+            music_utils.get_type_from_ext(upload.extension)
+            if upload.extension
+            else "audio/mpeg"
+        ),
         "suffix": upload.extension or "",
         "duration": upload.duration or 0,
         "created": track.creation_date,
@@ -228,7 +236,11 @@ def get_music_directory_data(artist):
 
 
 def get_folders(user):
-    return []
+    return [
+        # Dummy folder ID to match what is returned in the getMusicFolders endpoint
+        # cf https://dev.funkwhale.audio/funkwhale/funkwhale/issues/624
+        {"id": 1, "name": "Music"}
+    ]
 
 
 def get_user_detail_data(user):
@@ -263,3 +275,11 @@ class ScrobbleSerializer(serializers.Serializer):
         return history_models.Listening.objects.create(
             user=self.context["user"], track=data["id"]
         )
+
+
+def get_genre_data(tag):
+    return {
+        "songCount": getattr(tag, "_tracks_count", 0),
+        "albumCount": getattr(tag, "_albums_count", 0),
+        "value": tag.name,
+    }
diff --git a/api/funkwhale_api/subsonic/views.py b/api/funkwhale_api/subsonic/views.py
index 909f7a6e4853c07e318ec7c9ddd15e821147a52a..6633224dfbd68fc876895039d200b23652b0dcf8 100644
--- a/api/funkwhale_api/subsonic/views.py
+++ b/api/funkwhale_api/subsonic/views.py
@@ -2,6 +2,8 @@ import datetime
 import functools
 
 from django.conf import settings
+from django.contrib.contenttypes.models import ContentType
+from django.db.models import Count, Q
 from django.utils import timezone
 from rest_framework import exceptions
 from rest_framework import permissions as rest_permissions
@@ -18,6 +20,7 @@ from funkwhale_api.music import models as music_models
 from funkwhale_api.music import utils
 from funkwhale_api.music import views as music_views
 from funkwhale_api.playlists import models as playlists_models
+from funkwhale_api.tags import models as tags_models
 from funkwhale_api.users import models as users_models
 
 from . import authentication, filters, negotiation, serializers
@@ -330,6 +333,48 @@ class SubsonicViewSet(viewsets.GenericViewSet):
         }
         return response.Response(data)
 
+    @action(
+        detail=False,
+        methods=["get", "post"],
+        url_name="get_songs_by_genre",
+        url_path="getSongsByGenre",
+    )
+    def get_songs_by_genre(self, request, *args, **kwargs):
+        data = request.GET or request.POST
+        actor = utils.get_actor_from_request(request)
+        queryset = music_models.Track.objects.all().exclude(
+            moderation_filters.get_filtered_content_query(
+                moderation_filters.USER_FILTER_CONFIG["TRACK"], request.user
+            )
+        )
+        queryset = queryset.playable_by(actor)
+        try:
+            size = int(
+                data["count"]
+            )  # yep. Some endpoints have size, other have count…
+        except (TypeError, KeyError, ValueError):
+            size = 50
+
+        genre = data.get("genre")
+        queryset = (
+            queryset.playable_by(actor)
+            .filter(
+                Q(tagged_items__tag__name=genre)
+                | Q(artist__tagged_items__tag__name=genre)
+                | Q(album__artist__tagged_items__tag__name=genre)
+                | Q(album__tagged_items__tag__name=genre)
+            )
+            .prefetch_related("uploads")
+            .distinct()
+            .order_by("-creation_date")[:size]
+        )
+        data = {
+            "songsByGenre": {
+                "song": serializers.GetSongSerializer(queryset, many=True).data
+            }
+        }
+        return response.Response(data)
+
     @action(
         detail=False,
         methods=["get", "post"],
@@ -362,6 +407,26 @@ class SubsonicViewSet(viewsets.GenericViewSet):
         queryset = filterset.qs
         actor = utils.get_actor_from_request(request)
         queryset = queryset.playable_by(actor)
+        type = data.get("type", "alphabeticalByArtist")
+
+        if type == "alphabeticalByArtist":
+            queryset = queryset.order_by("artist__name")
+        elif type == "random":
+            queryset = queryset.order_by("?")
+        elif type == "alphabeticalByName" or not type:
+            queryset = queryset.order_by("artist__title")
+        elif type == "recent" or not type:
+            queryset = queryset.exclude(release_date__in=["", None]).order_by(
+                "-release_date"
+            )
+        elif type == "newest" or not type:
+            queryset = queryset.order_by("-creation_date")
+        elif type == "byGenre" and data.get("genre"):
+            genre = data.get("genre")
+            queryset = queryset.filter(
+                Q(tagged_items__tag__name=genre)
+                | Q(artist__tagged_items__tag__name=genre)
+            )
 
         try:
             offset = int(data["offset"])
@@ -669,3 +734,29 @@ class SubsonicViewSet(viewsets.GenericViewSet):
             listening = serializer.save()
             record.send(listening)
         return response.Response({})
+
+    @action(
+        detail=False,
+        methods=["get", "post"],
+        url_name="get_genres",
+        url_path="getGenres",
+    )
+    def get_genres(self, request, *args, **kwargs):
+        album_ct = ContentType.objects.get_for_model(music_models.Album)
+        track_ct = ContentType.objects.get_for_model(music_models.Track)
+        queryset = (
+            tags_models.Tag.objects.annotate(
+                _albums_count=Count(
+                    "tagged_items", filter=Q(tagged_items__content_type=album_ct)
+                ),
+                _tracks_count=Count(
+                    "tagged_items", filter=Q(tagged_items__content_type=track_ct)
+                ),
+            )
+            .exclude(_tracks_count=0, _albums_count=0)
+            .order_by("name")
+        )
+        data = {
+            "genres": {"genre": [serializers.get_genre_data(tag) for tag in queryset]}
+        }
+        return response.Response(data)
diff --git a/api/funkwhale_api/tags/__init__.py b/api/funkwhale_api/tags/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/api/funkwhale_api/tags/admin.py b/api/funkwhale_api/tags/admin.py
new file mode 100644
index 0000000000000000000000000000000000000000..bead393314c70ff715a8c8d199027c95b2911fcf
--- /dev/null
+++ b/api/funkwhale_api/tags/admin.py
@@ -0,0 +1,18 @@
+from funkwhale_api.common import admin
+
+from . import models
+
+
+@admin.register(models.Tag)
+class TagAdmin(admin.ModelAdmin):
+    list_display = ["name", "creation_date"]
+    search_fields = ["name"]
+    list_select_related = True
+
+
+@admin.register(models.TaggedItem)
+class TaggedItemAdmin(admin.ModelAdmin):
+    list_display = ["object_id", "content_type", "tag", "creation_date"]
+    search_fields = ["tag__name"]
+    list_filter = ["content_type"]
+    list_select_related = True
diff --git a/api/funkwhale_api/tags/factories.py b/api/funkwhale_api/tags/factories.py
new file mode 100644
index 0000000000000000000000000000000000000000..c0ba5cac6f19c75f16846612326a5b4ec658a2fb
--- /dev/null
+++ b/api/funkwhale_api/tags/factories.py
@@ -0,0 +1,33 @@
+import factory
+
+from funkwhale_api.factories import registry, NoUpdateOnCreate
+
+from . import models
+
+
+@registry.register
+class TagFactory(NoUpdateOnCreate, factory.django.DjangoModelFactory):
+    name = factory.Faker("music_hashtag")
+
+    class Meta:
+        model = "tags.Tag"
+
+
+@registry.register
+class TaggedItemFactory(NoUpdateOnCreate, factory.django.DjangoModelFactory):
+    tag = factory.SubFactory(TagFactory)
+    content_object = None
+
+    class Meta:
+        model = "tags.TaggedItem"
+
+
+class TaggableFactory(factory.django.DjangoModelFactory):
+    @factory.post_generation
+    def set_tags(self, create, extracted, **kwargs):
+        if not create:
+            # Simple build, do nothing.
+            return
+
+        if extracted:
+            models.set_tags(self, *extracted)
diff --git a/api/funkwhale_api/tags/filters.py b/api/funkwhale_api/tags/filters.py
new file mode 100644
index 0000000000000000000000000000000000000000..e0ac9675ab7511f043195aaea83b31a1e9fe462b
--- /dev/null
+++ b/api/funkwhale_api/tags/filters.py
@@ -0,0 +1,21 @@
+import django_filters
+from django_filters import rest_framework as filters
+
+from funkwhale_api.common import fields
+
+from . import models
+
+
+class TagFilter(filters.FilterSet):
+    q = fields.SearchFilter(search_fields=["name"])
+    ordering = django_filters.OrderingFilter(
+        fields=(
+            ("name", "name"),
+            ("creation_date", "creation_date"),
+            ("__size", "length"),
+        )
+    )
+
+    class Meta:
+        model = models.Tag
+        fields = {"q": ["exact"], "name": ["exact", "startswith"]}
diff --git a/api/funkwhale_api/tags/migrations/0001_initial.py b/api/funkwhale_api/tags/migrations/0001_initial.py
new file mode 100644
index 0000000000000000000000000000000000000000..93b8bfbd9ae9d114476830a5d7537396b7c9a53b
--- /dev/null
+++ b/api/funkwhale_api/tags/migrations/0001_initial.py
@@ -0,0 +1,85 @@
+# Generated by Django 2.2.3 on 2019-07-05 08:22
+
+import django.contrib.postgres.fields.citext
+from django.db import migrations, models
+import django.db.models.deletion
+import django.utils.timezone
+
+
+class Migration(migrations.Migration):
+
+    initial = True
+
+    dependencies = [
+        ("contenttypes", "0002_remove_content_type_name"),
+        ("common", "0003_cit_extension"),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name="Tag",
+            fields=[
+                (
+                    "id",
+                    models.AutoField(
+                        auto_created=True,
+                        primary_key=True,
+                        serialize=False,
+                        verbose_name="ID",
+                    ),
+                ),
+                (
+                    "name",
+                    django.contrib.postgres.fields.citext.CICharField(
+                        max_length=100, unique=True
+                    ),
+                ),
+                (
+                    "creation_date",
+                    models.DateTimeField(default=django.utils.timezone.now),
+                ),
+            ],
+        ),
+        migrations.CreateModel(
+            name="TaggedItem",
+            fields=[
+                (
+                    "id",
+                    models.AutoField(
+                        auto_created=True,
+                        primary_key=True,
+                        serialize=False,
+                        verbose_name="ID",
+                    ),
+                ),
+                (
+                    "creation_date",
+                    models.DateTimeField(default=django.utils.timezone.now),
+                ),
+                (
+                    "object_id",
+                    models.IntegerField(db_index=True, verbose_name="Object id"),
+                ),
+                (
+                    "content_type",
+                    models.ForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE,
+                        related_name="tags_taggeditem_tagged_items",
+                        to="contenttypes.ContentType",
+                        verbose_name="Content type",
+                    ),
+                ),
+                (
+                    "tag",
+                    models.ForeignKey(
+                        on_delete=django.db.models.deletion.CASCADE,
+                        related_name="tags_taggeditem_items",
+                        to="tags.Tag",
+                    ),
+                ),
+            ],
+        ),
+        migrations.AlterUniqueTogether(
+            name="taggeditem", unique_together={("tag", "content_type", "object_id")}
+        ),
+    ]
diff --git a/api/funkwhale_api/tags/migrations/__init__.py b/api/funkwhale_api/tags/migrations/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/api/funkwhale_api/tags/models.py b/api/funkwhale_api/tags/models.py
new file mode 100644
index 0000000000000000000000000000000000000000..1416a62bc02d256a56fd9b16291b470e89242850
--- /dev/null
+++ b/api/funkwhale_api/tags/models.py
@@ -0,0 +1,86 @@
+import re
+
+from django.conf import settings
+from django.contrib.contenttypes.fields import GenericForeignKey
+from django.contrib.contenttypes.models import ContentType
+from django.contrib.postgres.fields import CICharField
+from django.db import models
+from django.db import transaction
+
+from django.utils import timezone
+from django.utils.translation import gettext_lazy as _
+
+
+TAG_REGEX = re.compile(r"^((\w+)([\d_]*))$")
+
+
+class Tag(models.Model):
+    name = CICharField(max_length=100, unique=True)
+    creation_date = models.DateTimeField(default=timezone.now)
+
+    def __str__(self):
+        return self.name
+
+
+class TaggedItemQuerySet(models.QuerySet):
+    def for_content_object(self, obj):
+        return self.filter(
+            object_id=obj.id,
+            content_type__app_label=obj._meta.app_label,
+            content_type__model=obj._meta.model_name,
+        )
+
+
+class TaggedItem(models.Model):
+    creation_date = models.DateTimeField(default=timezone.now)
+    tag = models.ForeignKey(Tag, related_name="tagged_items", on_delete=models.CASCADE)
+    content_type = models.ForeignKey(
+        ContentType,
+        on_delete=models.CASCADE,
+        verbose_name=_("Content type"),
+        related_name="tagged_items",
+    )
+    object_id = models.IntegerField(verbose_name=_("Object id"), db_index=True)
+    content_object = GenericForeignKey()
+
+    objects = TaggedItemQuerySet.as_manager()
+
+    class Meta:
+        unique_together = ("tag", "content_type", "object_id")
+
+
+@transaction.atomic
+def add_tags(obj, *tags):
+    if not tags:
+        return
+    tag_objs = [Tag(name=t) for t in tags]
+    Tag.objects.bulk_create(tag_objs, ignore_conflicts=True)
+    tag_ids = Tag.objects.filter(name__in=tags).values_list("id", flat=True)
+
+    tagged_items = [TaggedItem(tag_id=tag_id, content_object=obj) for tag_id in tag_ids]
+
+    TaggedItem.objects.bulk_create(tagged_items, ignore_conflicts=True)
+
+
+@transaction.atomic
+def set_tags(obj, *tags):
+    # we ignore any extra tags if the length of the list is higher
+    # than our accepted size
+    tags = tags[: settings.TAGS_MAX_BY_OBJ]
+    tags = set(tags)
+    existing = set(
+        TaggedItem.objects.for_content_object(obj).values_list("tag__name", flat=True)
+    )
+    found = tags & existing
+    to_add = tags - found
+    to_remove = existing - (found | to_add)
+
+    add_tags(obj, *to_add)
+    remove_tags(obj, *to_remove)
+
+
+@transaction.atomic
+def remove_tags(obj, *tags):
+    if not tags:
+        return
+    TaggedItem.objects.for_content_object(obj).filter(tag__name__in=tags).delete()
diff --git a/api/funkwhale_api/tags/serializers.py b/api/funkwhale_api/tags/serializers.py
new file mode 100644
index 0000000000000000000000000000000000000000..9b7b31f503cd3b13fef4cc243944f92fe118a85f
--- /dev/null
+++ b/api/funkwhale_api/tags/serializers.py
@@ -0,0 +1,34 @@
+from rest_framework import serializers
+
+from django.conf import settings
+
+from . import models
+
+
+class TagSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = models.Tag
+        fields = ["name", "creation_date"]
+
+
+class TagNameField(serializers.CharField):
+    def to_internal_value(self, value):
+        value = super().to_internal_value(value)
+        if not models.TAG_REGEX.match(value):
+            raise serializers.ValidationError('Invalid tag "{}"'.format(value))
+        return value
+
+
+class TagsListField(serializers.ListField):
+    def __init__(self, *args, **kwargs):
+        kwargs.setdefault("min_length", 0)
+        kwargs.setdefault("child", TagNameField())
+        super().__init__(*args, **kwargs)
+
+    def to_internal_value(self, value):
+        value = super().to_internal_value(value)
+        if not value:
+            return value
+        # we ignore any extra tags if the length of the list is higher
+        # than our accepted size
+        return value[: settings.TAGS_MAX_BY_OBJ]
diff --git a/api/funkwhale_api/tags/views.py b/api/funkwhale_api/tags/views.py
new file mode 100644
index 0000000000000000000000000000000000000000..1d052ca7b2d71f7c9a9d351e244bdc2152842853
--- /dev/null
+++ b/api/funkwhale_api/tags/views.py
@@ -0,0 +1,25 @@
+from django.db.models import functions
+from rest_framework import viewsets
+
+import django_filters.rest_framework
+
+from funkwhale_api.users.oauth import permissions as oauth_permissions
+
+from . import filters
+from . import models
+from . import serializers
+
+
+class TagViewSet(viewsets.ReadOnlyModelViewSet):
+    lookup_field = "name"
+    queryset = (
+        models.Tag.objects.all()
+        .annotate(__size=functions.Length("name"))
+        .order_by("name")
+    )
+    serializer_class = serializers.TagSerializer
+    permission_classes = [oauth_permissions.ScopePermission]
+    required_scope = "libraries"
+    anonymous_policy = "setting"
+    filterset_class = filters.TagFilter
+    filter_backends = [django_filters.rest_framework.DjangoFilterBackend]
diff --git a/api/funkwhale_api/users/admin.py b/api/funkwhale_api/users/admin.py
index c11c33bb66ce606de08777e7ac209fca923658d6..24f08d0264cb7043d8e5991a6d065f52e806d532 100644
--- a/api/funkwhale_api/users/admin.py
+++ b/api/funkwhale_api/users/admin.py
@@ -85,10 +85,20 @@ class UserAdmin(AuthUserAdmin):
                     "permission_library",
                     "permission_settings",
                     "permission_moderation",
+                    "upload_quota",
                 )
             },
         ),
         (_("Important dates"), {"fields": ("last_login", "date_joined")}),
+        (
+            _("Other"),
+            {
+                "fields": (
+                    "instance_support_message_display_date",
+                    "funkwhale_support_message_display_date",
+                )
+            },
+        ),
         (_("Useless fields"), {"fields": ("user_permissions", "groups")}),
     )
 
diff --git a/api/funkwhale_api/users/api_urls.py b/api/funkwhale_api/users/api_urls.py
index 267ee2d69ad6dc1dd9d1b874072e415a9bdda41d..89930f57be2bad970f17e0a46ef3c3bcbe3e1468 100644
--- a/api/funkwhale_api/users/api_urls.py
+++ b/api/funkwhale_api/users/api_urls.py
@@ -1,8 +1,8 @@
-from rest_framework import routers
+from funkwhale_api.common import routers
 
 from . import views
 
-router = routers.SimpleRouter()
+router = routers.OptionalSlashRouter()
 router.register(r"users", views.UserViewSet, "users")
 
 urlpatterns = router.urls
diff --git a/api/funkwhale_api/users/dynamic_preferences_registry.py b/api/funkwhale_api/users/dynamic_preferences_registry.py
index 4e910577fbf97b062d341b88541473d786da8405..03090f944297cbb24f286b3160d0d8840c0c850b 100644
--- a/api/funkwhale_api/users/dynamic_preferences_registry.py
+++ b/api/funkwhale_api/users/dynamic_preferences_registry.py
@@ -37,4 +37,4 @@ class UploadQuota(types.IntPreference):
     name = "upload_quota"
     default = 1000
     verbose_name = "Upload quota"
-    help_text = "Default upload quota applied to each users, in MB. This can be overrided on a per-user basis."
+    help_text = "Default upload quota applied to each users, in MB. This can be overridden on a per-user basis."
diff --git a/api/funkwhale_api/users/factories.py b/api/funkwhale_api/users/factories.py
index e7f046ef3fa21f786038d302355b59bbab494ef9..0588fa07c94c4216b7db30e7c5f9e68ad20dc977 100644
--- a/api/funkwhale_api/users/factories.py
+++ b/api/funkwhale_api/users/factories.py
@@ -42,11 +42,20 @@ class InvitationFactory(NoUpdateOnCreate, factory.django.DjangoModelFactory):
         expired = factory.Trait(expiration_date=factory.LazyFunction(timezone.now))
 
 
+class PasswordSetter(factory.PostGenerationMethodCall):
+    def call(self, instance, step, context):
+        if context.value_provided and context.value is None:
+            # disable setting the password, it's set by hand outside of the factory
+            return
+
+        return super().call(instance, step, context)
+
+
 @registry.register
 class UserFactory(factory.django.DjangoModelFactory):
-    username = factory.Sequence(lambda n: "user-{0}".format(n))
-    email = factory.Sequence(lambda n: "user-{0}@example.com".format(n))
-    password = factory.PostGenerationMethodCall("set_password", "test")
+    username = factory.Faker("user_name")
+    email = factory.Faker("email")
+    password = password = PasswordSetter("set_password", "test")
     subsonic_api_token = None
     groups = ManyToManyFromList("groups")
     avatar = factory.django.ImageField()
diff --git a/api/funkwhale_api/users/jwt_views.py b/api/funkwhale_api/users/jwt_views.py
new file mode 100644
index 0000000000000000000000000000000000000000..532653abd1ac140c1d77a789a5bf70e2c101b6e3
--- /dev/null
+++ b/api/funkwhale_api/users/jwt_views.py
@@ -0,0 +1,15 @@
+from rest_framework_jwt import views as jwt_views
+
+
+class ObtainJSONWebToken(jwt_views.ObtainJSONWebToken):
+    throttling_scopes = {"*": {"anonymous": "jwt-login", "authenticated": "jwt-login"}}
+
+
+class RefreshJSONWebToken(jwt_views.RefreshJSONWebToken):
+    throttling_scopes = {
+        "*": {"anonymous": "jwt-refresh", "authenticated": "jwt-refresh"}
+    }
+
+
+obtain_jwt_token = ObtainJSONWebToken.as_view()
+refresh_jwt_token = RefreshJSONWebToken.as_view()
diff --git a/api/funkwhale_api/users/migrations/0016_auto_20190920_0857.py b/api/funkwhale_api/users/migrations/0016_auto_20190920_0857.py
new file mode 100644
index 0000000000000000000000000000000000000000..a3fc6cf26e48ea4b9af63058628318696520f77b
--- /dev/null
+++ b/api/funkwhale_api/users/migrations/0016_auto_20190920_0857.py
@@ -0,0 +1,47 @@
+# Generated by Django 2.2.4 on 2019-09-20 08:57
+
+import datetime
+from django.conf import settings
+
+from django.db import migrations, models
+import django.utils.timezone
+import funkwhale_api.users.models
+
+
+def set_display_date(apps, schema_editor):
+    """
+    Set display date for instance/funkwhale support message on existing users
+    """
+    User = apps.get_model("users", "User")
+    now = django.utils.timezone.now()
+    instance_support_message_display_date = now + datetime.timedelta(days=settings.INSTANCE_SUPPORT_MESSAGE_DELAY)
+    funkwhale_support_message_display_date = now + datetime.timedelta(days=settings.FUNKWHALE_SUPPORT_MESSAGE_DELAY)
+
+    User.objects.update(instance_support_message_display_date=instance_support_message_display_date)
+    User.objects.update(funkwhale_support_message_display_date=funkwhale_support_message_display_date)
+
+
+def rewind(*args, **kwargs):
+    pass
+
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('users', '0015_application_scope'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='user',
+            name='funkwhale_support_message_display_date',
+            field=models.DateTimeField(blank=True, null=True, default=funkwhale_api.users.models.get_default_funkwhale_support_message_display_date),
+        ),
+        migrations.AddField(
+            model_name='user',
+            name='instance_support_message_display_date',
+            field=models.DateTimeField(blank=True, null=True, default=funkwhale_api.users.models.get_default_instance_support_message_display_date),
+        ),
+        migrations.RunPython(set_display_date, rewind),
+    ]
diff --git a/api/funkwhale_api/users/models.py b/api/funkwhale_api/users/models.py
index 3748dd634b9abf68ac3ac76810d2be6ea65bf777..2a2f875a60350a66b3a5d1cfe9d8472349cd3f4b 100644
--- a/api/funkwhale_api/users/models.py
+++ b/api/funkwhale_api/users/models.py
@@ -46,6 +46,10 @@ PERMISSIONS_CONFIGURATION = {
             "write:instance:accounts",
             "read:instance:domains",
             "write:instance:domains",
+            "read:instance:reports",
+            "write:instance:reports",
+            "read:instance:notes",
+            "write:instance:notes",
         },
     },
     "library": {
@@ -78,6 +82,18 @@ PERMISSIONS = sorted(PERMISSIONS_CONFIGURATION.keys())
 get_file_path = common_utils.ChunkedPath("users/avatars", preserve_file_name=False)
 
 
+def get_default_instance_support_message_display_date():
+    return timezone.now() + datetime.timedelta(
+        days=settings.INSTANCE_SUPPORT_MESSAGE_DELAY
+    )
+
+
+def get_default_funkwhale_support_message_display_date():
+    return timezone.now() + datetime.timedelta(
+        days=settings.FUNKWHALE_SUPPORT_MESSAGE_DELAY
+    )
+
+
 @python_2_unicode_compatible
 class User(AbstractUser):
 
@@ -145,6 +161,15 @@ class User(AbstractUser):
 
     upload_quota = models.PositiveIntegerField(null=True, blank=True)
 
+    instance_support_message_display_date = models.DateTimeField(
+        default=get_default_instance_support_message_display_date, null=True, blank=True
+    )
+    funkwhale_support_message_display_date = models.DateTimeField(
+        default=get_default_funkwhale_support_message_display_date,
+        null=True,
+        blank=True,
+    )
+
     def __str__(self):
         return self.username
 
@@ -228,8 +253,13 @@ class User(AbstractUser):
 
     def get_channels_groups(self):
         groups = ["imports", "inbox"]
+        groups = ["user.{}.{}".format(self.pk, g) for g in groups]
 
-        return ["user.{}.{}".format(self.pk, g) for g in groups]
+        for permission, value in self.all_permissions.items():
+            if value:
+                groups.append("admin.{}".format(permission))
+
+        return groups
 
     def full_username(self):
         return "{}@{}".format(self.username, settings.FEDERATION_HOSTNAME)
@@ -321,13 +351,16 @@ class RefreshToken(oauth2_models.AbstractRefreshToken):
     pass
 
 
-def get_actor_data(username):
+def get_actor_data(username, **kwargs):
     slugified_username = federation_utils.slugify_username(username)
+    domain = kwargs.get("domain")
+    if not domain:
+        domain = federation_models.Domain.objects.get_or_create(
+            name=settings.FEDERATION_HOSTNAME
+        )[0]
     return {
         "preferred_username": slugified_username,
-        "domain": federation_models.Domain.objects.get_or_create(
-            name=settings.FEDERATION_HOSTNAME
-        )[0],
+        "domain": domain,
         "type": "Person",
         "name": username,
         "manually_approves_followers": False,
@@ -388,10 +421,3 @@ def warm_user_avatar(sender, instance, **kwargs):
         instance_or_queryset=instance, rendition_key_set="square", image_attr="avatar"
     )
     num_created, failed_to_create = user_avatar_warmer.warm()
-
-
-@receiver(models.signals.pre_delete, sender=User)
-def delete_actor(sender, instance, **kwargs):
-    if not instance.actor:
-        return
-    instance.actor.delete()
diff --git a/api/funkwhale_api/users/mutations.py b/api/funkwhale_api/users/mutations.py
new file mode 100644
index 0000000000000000000000000000000000000000..2c30ffe178f5ac418903f8deb0e045b0ec09b03d
--- /dev/null
+++ b/api/funkwhale_api/users/mutations.py
@@ -0,0 +1,40 @@
+import uuid
+
+from django.db import transaction
+
+from funkwhale_api.common import mutations
+from funkwhale_api.common import utils
+from funkwhale_api.federation import models
+
+from . import tasks
+
+
+@mutations.registry.connect("delete_account", models.Actor)
+class DeleteAccountMutationSerializer(mutations.MutationSerializer):
+    @transaction.atomic
+    def apply(self, obj, validated_data):
+        if not obj.is_local or not obj.user:
+            raise mutations.serializers.ValidationError("Cannot delete this account")
+
+        # delete oauth apps / reset all passwords immediatly
+        obj.user.set_unusable_password()
+        obj.user.subsonic_api_token = None
+        # force logout
+        obj.user.secret_key = uuid.uuid4()
+        obj.user.users_grant.all().delete()
+        obj.user.users_accesstoken.all().delete()
+        obj.user.users_refreshtoken.all().delete()
+        obj.user.save()
+
+        # since the deletion of related object/message sending  can take a long time
+        # we do that in a separate tasks
+        utils.on_commit(tasks.delete_account.delay, user_id=obj.user.id)
+
+    def get_previous_state(self, obj, validated_data):
+        """
+        We store usernames and ids for auditability purposes
+        """
+        return {
+            "user": {"username": obj.user.username, "id": obj.user.pk},
+            "actor": {"preferred_username": obj.preferred_username},
+        }
diff --git a/api/funkwhale_api/users/oauth/permissions.py b/api/funkwhale_api/users/oauth/permissions.py
index ebd44a937a6dee21e462d3321dfdf1dfcc7149b8..54b3c2627bb28a1263b537e5ebda51ca5c7933b3 100644
--- a/api/funkwhale_api/users/oauth/permissions.py
+++ b/api/funkwhale_api/users/oauth/permissions.py
@@ -96,8 +96,9 @@ class ScopePermission(permissions.BasePermission):
             ):
                 return False
 
-            # we use default anonymous scopes
-            user_scopes = scopes.ANONYMOUS_SCOPES
+            user_scopes = (
+                getattr(view, "anonymous_scopes", set()) | scopes.ANONYMOUS_SCOPES
+            )
             return should_allow(
                 required_scope=required_scope, request_scopes=user_scopes
             )
diff --git a/api/funkwhale_api/users/oauth/scopes.py b/api/funkwhale_api/users/oauth/scopes.py
index 61b07098383e832dcacd87f5da11fa843f821b29..88b928c50813fc516b63b8d4d4baa6868679d51c 100644
--- a/api/funkwhale_api/users/oauth/scopes.py
+++ b/api/funkwhale_api/users/oauth/scopes.py
@@ -22,6 +22,7 @@ BASE_SCOPES = [
     Scope("playlists", "Access playlists"),
     Scope("notifications", "Access personal notifications"),
     Scope("security", "Access security settings"),
+    Scope("reports", "Access reports"),
     # Privileged scopes that require specific user permissions
     Scope("instance:settings", "Access instance settings"),
     Scope("instance:users", "Access local user accounts"),
@@ -33,6 +34,8 @@ BASE_SCOPES = [
     Scope("instance:accounts", "Access instance federated accounts"),
     Scope("instance:domains", "Access instance domains"),
     Scope("instance:policies", "Access instance moderation policies"),
+    Scope("instance:reports", "Access instance moderation reports"),
+    Scope("instance:notes", "Access instance moderation notes"),
 ]
 SCOPES = [
     Scope("read", children=[s.copy("read") for s in BASE_SCOPES]),
@@ -72,6 +75,8 @@ COMMON_SCOPES = ANONYMOUS_SCOPES | {
     "write:edits",
     "read:filters",
     "write:filters",
+    "read:reports",
+    "write:reports",
     "write:listenings",
 }
 
diff --git a/api/funkwhale_api/users/oauth/urls.py b/api/funkwhale_api/users/oauth/urls.py
index 832f9ca1ba6cfd64a673213961ed35942aef3c98..4230668e4a1463237ce0f72f90ac23d6d18f3e18 100644
--- a/api/funkwhale_api/users/oauth/urls.py
+++ b/api/funkwhale_api/users/oauth/urls.py
@@ -1,11 +1,11 @@
 from django.conf.urls import url
 from django.views.decorators.csrf import csrf_exempt
 
-from rest_framework import routers
+from funkwhale_api.common import routers
 
 from . import views
 
-router = routers.SimpleRouter()
+router = routers.OptionalSlashRouter()
 router.register(r"apps", views.ApplicationViewSet, "apps")
 router.register(r"grants", views.GrantViewSet, "grants")
 
diff --git a/api/funkwhale_api/users/oauth/views.py b/api/funkwhale_api/users/oauth/views.py
index a8bbb239ca50a22be070904fc73b2a5536e51fa4..90706e70899e7a8a6bbebbea065db1d6113900a4 100644
--- a/api/funkwhale_api/users/oauth/views.py
+++ b/api/funkwhale_api/users/oauth/views.py
@@ -10,6 +10,8 @@ from oauth2_provider import exceptions as oauth2_exceptions
 from oauth2_provider import views as oauth_views
 from oauth2_provider.settings import oauth2_settings
 
+from funkwhale_api.common import throttling
+
 from .. import models
 from .permissions import ScopePermission
 from . import serializers
@@ -35,6 +37,12 @@ class ApplicationViewSet(
     lookup_field = "client_id"
     queryset = models.Application.objects.all().order_by("-created")
     serializer_class = serializers.ApplicationSerializer
+    throttling_scopes = {
+        "create": {
+            "anonymous": "anonymous-oauth-app",
+            "authenticated": "authenticated-oauth-app",
+        }
+    }
 
     def get_serializer_class(self):
         if self.request.method.lower() == "post":
@@ -141,6 +149,10 @@ class AuthorizeView(views.APIView, oauth_views.AuthorizationView):
 
         return self.json_payload(errors, status_code=400)
 
+    def post(self, request, *args, **kwargs):
+        throttling.check_request(request, "oauth-authorize")
+        return super().post(request, *args, **kwargs)
+
     def form_valid(self, form):
         try:
             response = super().form_valid(form)
@@ -175,8 +187,12 @@ class AuthorizeView(views.APIView, oauth_views.AuthorizationView):
 
 
 class TokenView(oauth_views.TokenView):
-    pass
+    def post(self, request, *args, **kwargs):
+        throttling.check_request(request, "oauth-token")
+        return super().post(request, *args, **kwargs)
 
 
 class RevokeTokenView(oauth_views.RevokeTokenView):
-    pass
+    def post(self, request, *args, **kwargs):
+        throttling.check_request(request, "oauth-revoke-token")
+        return super().post(request, *args, **kwargs)
diff --git a/api/funkwhale_api/users/rest_auth_urls.py b/api/funkwhale_api/users/rest_auth_urls.py
index 732a3bbbcead15c5603f16872a97c6703dcbecca..75ba608bb92fc1dd2b91d21661b2b6fd370c26f0 100644
--- a/api/funkwhale_api/users/rest_auth_urls.py
+++ b/api/funkwhale_api/users/rest_auth_urls.py
@@ -1,20 +1,40 @@
 from django.conf.urls import url
 from django.views.generic import TemplateView
 from rest_auth import views as rest_auth_views
-from rest_auth.registration import views as registration_views
 
 from . import views
 
 urlpatterns = [
-    url(r"^$", views.RegisterView.as_view(), name="rest_register"),
+    # URLs that do not require a session or valid token
     url(
-        r"^verify-email/$",
-        registration_views.VerifyEmailView.as_view(),
+        r"^password/reset/$",
+        views.PasswordResetView.as_view(),
+        name="rest_password_reset",
+    ),
+    url(
+        r"^password/reset/confirm/$",
+        views.PasswordResetConfirmView.as_view(),
+        name="rest_password_reset_confirm",
+    ),
+    # URLs that require a user to be logged in with a valid session / token.
+    url(
+        r"^user/$", rest_auth_views.UserDetailsView.as_view(), name="rest_user_details"
+    ),
+    url(
+        r"^password/change/$",
+        views.PasswordChangeView.as_view(),
+        name="rest_password_change",
+    ),
+    # Registration URLs
+    url(r"^registration/$", views.RegisterView.as_view(), name="rest_register"),
+    url(
+        r"^registration/verify-email/?$",
+        views.VerifyEmailView.as_view(),
         name="rest_verify_email",
     ),
     url(
-        r"^change-password/$",
-        rest_auth_views.PasswordChangeView.as_view(),
+        r"^registration/change-password/?$",
+        views.PasswordChangeView.as_view(),
         name="change_password",
     ),
     # This url is used by django-allauth and empty TemplateView is
@@ -28,7 +48,7 @@ urlpatterns = [
     # view from:
     # djang-allauth https://github.com/pennersr/django-allauth/blob/master/allauth/account/views.py#L190
     url(
-        r"^account-confirm-email/(?P<key>\w+)/$",
+        r"^registration/account-confirm-email/(?P<key>\w+)/?$",
         TemplateView.as_view(),
         name="account_confirm_email",
     ),
diff --git a/api/funkwhale_api/users/serializers.py b/api/funkwhale_api/users/serializers.py
index a45d414b4d9b6eaad6308aff70710df1f3e825c2..cddc2e82aea82859b0728d30777142f6349fec9b 100644
--- a/api/funkwhale_api/users/serializers.py
+++ b/api/funkwhale_api/users/serializers.py
@@ -5,12 +5,13 @@ from django.utils.deconstruct import deconstructible
 from django.utils.translation import gettext_lazy as _
 
 from rest_auth.serializers import PasswordResetSerializer as PRS
-from rest_auth.registration.serializers import RegisterSerializer as RS
+from rest_auth.registration.serializers import RegisterSerializer as RS, get_adapter
 from rest_framework import serializers
 from versatileimagefield.serializers import VersatileImageFieldSerializer
 
 from funkwhale_api.activity import serializers as activity_serializers
 from funkwhale_api.common import serializers as common_serializers
+from funkwhale_api.federation import models as federation_models
 from . import adapters
 from . import models
 
@@ -42,6 +43,26 @@ class RegisterSerializer(RS):
         except models.Invitation.DoesNotExist:
             raise serializers.ValidationError("Invalid invitation code")
 
+    def validate(self, validated_data):
+        data = super().validate(validated_data)
+        # we create a fake user obj with validated data so we can validate
+        # password properly (we have a password validator that requires
+        # a user object)
+        user = models.User(username=data["username"], email=data["email"])
+        get_adapter().clean_password(data["password1"], user)
+        return data
+
+    def validate_username(self, value):
+        username = super().validate_username(value)
+        duplicates = federation_models.Actor.objects.local().filter(
+            preferred_username__iexact=username
+        )
+        if duplicates.exists():
+            raise serializers.ValidationError(
+                "A user with that username already exists."
+            )
+        return username
+
     def save(self, request):
         user = super().save(request)
         if self.validated_data.get("invitation"):
@@ -88,7 +109,13 @@ class UserWriteSerializer(serializers.ModelSerializer):
 
     class Meta:
         model = models.User
-        fields = ["name", "privacy_level", "avatar"]
+        fields = [
+            "name",
+            "privacy_level",
+            "avatar",
+            "instance_support_message_display_date",
+            "funkwhale_support_message_display_date",
+        ]
 
 
 class UserReadSerializer(serializers.ModelSerializer):
@@ -125,7 +152,11 @@ class MeSerializer(UserReadSerializer):
     quota_status = serializers.SerializerMethodField()
 
     class Meta(UserReadSerializer.Meta):
-        fields = UserReadSerializer.Meta.fields + ["quota_status"]
+        fields = UserReadSerializer.Meta.fields + [
+            "quota_status",
+            "instance_support_message_display_date",
+            "funkwhale_support_message_display_date",
+        ]
 
     def get_quota_status(self, o):
         return o.get_quota_status() if o.actor else 0
@@ -134,3 +165,17 @@ class MeSerializer(UserReadSerializer):
 class PasswordResetSerializer(PRS):
     def get_email_options(self):
         return {"extra_email_context": adapters.get_email_context()}
+
+
+class UserDeleteSerializer(serializers.Serializer):
+    password = serializers.CharField()
+    confirm = serializers.BooleanField()
+
+    def validate_password(self, value):
+        if not self.instance.check_password(value):
+            raise serializers.ValidationError("Invalid password")
+
+    def validate_confirm(self, value):
+        if not value:
+            raise serializers.ValidationError("Please confirm deletion")
+        return value
diff --git a/api/funkwhale_api/users/tasks.py b/api/funkwhale_api/users/tasks.py
new file mode 100644
index 0000000000000000000000000000000000000000..40438ccff84d9e505a4f18d12979e811c4160170
--- /dev/null
+++ b/api/funkwhale_api/users/tasks.py
@@ -0,0 +1,58 @@
+import logging
+
+from django.db.models.deletion import Collector
+
+from funkwhale_api.federation import routes
+from funkwhale_api.taskapp import celery
+
+from . import models
+
+logger = logging.getLogger(__name__)
+
+
+@celery.app.task(name="users.delete_account")
+@celery.require_instance(models.User.objects.select_related("actor"), "user")
+def delete_account(user):
+    logger.info("Starting deletion of account %s…", user.username)
+    actor = user.actor
+    # we start by deleting the user obj, which will cascade deletion
+    # to any other object
+    user.delete()
+    logger.info("Deleted user object")
+
+    # Then we broadcast the info over federation. We do this *before* deleting objects
+    # associated with the actor, otherwise follows are removed and we don't know where
+    # to broadcast
+    logger.info("Broadcasting deletion to federation…")
+    routes.outbox.dispatch(
+        {"type": "Delete", "object": {"type": actor.type}}, context={"actor": actor}
+    )
+
+    # then we delete any object associated with the actor object, but *not* the actor
+    # itself. We keep it for auditability and sending the Delete ActivityPub message
+    collector = Collector(using="default")
+    logger.info(
+        "Prepare deletion of objects associated with account %s…", user.username
+    )
+    collector.collect([actor])
+
+    for model, instances in collector.data.items():
+        if issubclass(model, actor.__class__):
+            # we skip deletion of the actor itself
+            continue
+
+        logger.info(
+            "Deleting %s objects associated with account %s…",
+            len(instances),
+            user.username,
+        )
+        to_delete = model.objects.filter(pk__in=[instance.pk for instance in instances])
+        to_delete.delete()
+
+    # Finally, we update the actor itself and mark it as removed
+    logger.info("Marking actor as Tombsone…")
+    actor.type = "Tombstone"
+    actor.name = None
+    actor.summary = None
+    actor.save(update_fields=["type", "name", "summary"])
+    logger.info("Deletion of account done %s!", user.username)
diff --git a/api/funkwhale_api/users/views.py b/api/funkwhale_api/users/views.py
index 8cbb23bd11fbc445feda2782ac77da8242d4e8c8..28189c4bc547e883ee4f5ee1227923fa7e07ca67 100644
--- a/api/funkwhale_api/users/views.py
+++ b/api/funkwhale_api/users/views.py
@@ -1,17 +1,20 @@
 from allauth.account.adapter import get_adapter
-from rest_auth.registration.views import RegisterView as BaseRegisterView
+from rest_auth import views as rest_auth_views
+from rest_auth.registration import views as registration_views
 from rest_framework import mixins, viewsets
 from rest_framework.decorators import action
 from rest_framework.response import Response
 
 from funkwhale_api.common import preferences
 
-from . import models, serializers
+from . import models, serializers, tasks
 
 
-class RegisterView(BaseRegisterView):
+class RegisterView(registration_views.RegisterView):
     serializer_class = serializers.RegisterSerializer
     permission_classes = []
+    action = "signup"
+    throttling_scopes = {"signup": {"authenticated": "signup", "anonymous": "signup"}}
 
     def create(self, request, *args, **kwargs):
         invitation_code = request.data.get("invitation")
@@ -24,6 +27,22 @@ class RegisterView(BaseRegisterView):
         return get_adapter().is_open_for_signup(request)
 
 
+class VerifyEmailView(registration_views.VerifyEmailView):
+    action = "verify-email"
+
+
+class PasswordChangeView(rest_auth_views.PasswordChangeView):
+    action = "password-change"
+
+
+class PasswordResetView(rest_auth_views.PasswordResetView):
+    action = "password-reset"
+
+
+class PasswordResetConfirmView(rest_auth_views.PasswordResetConfirmView):
+    action = "password-reset-confirm"
+
+
 class UserViewSet(mixins.UpdateModelMixin, viewsets.GenericViewSet):
     queryset = models.User.objects.all()
     serializer_class = serializers.UserWriteSerializer
@@ -31,9 +50,17 @@ class UserViewSet(mixins.UpdateModelMixin, viewsets.GenericViewSet):
     lookup_value_regex = r"[a-zA-Z0-9-_.]+"
     required_scope = "profile"
 
-    @action(methods=["get"], detail=False)
+    @action(methods=["get", "delete"], detail=False)
     def me(self, request, *args, **kwargs):
-        """Return information about the current user"""
+        """Return information about the current user or delete it"""
+        if request.method.lower() == "delete":
+            serializer = serializers.UserDeleteSerializer(
+                request.user, data=request.data
+            )
+            serializer.is_valid(raise_exception=True)
+            tasks.delete_account.delay(user_id=request.user.pk)
+            # at this point, password is valid, we launch deletion
+            return Response(status=204)
         serializer = serializers.MeSerializer(request.user)
         return Response(serializer.data)
 
diff --git a/api/requirements.apt b/api/requirements.apt
index 6e4db7a3ba1076592115651e2229f11226cc3741..075b9ffddff95095b39223edf9b4510d54b828ca 100644
--- a/api/requirements.apt
+++ b/api/requirements.apt
@@ -8,3 +8,4 @@ postgresql-client
 python3-dev
 libldap2-dev
 libsasl2-dev
+make
diff --git a/api/requirements/base.txt b/api/requirements/base.txt
index 8372adc4729bfdfe35086ad3fe11c43a73a496f1..63b1063f69d92faf4ad64d250d90c68b22a3db13 100644
--- a/api/requirements/base.txt
+++ b/api/requirements/base.txt
@@ -1,5 +1,5 @@
 # Bleeding edge Django
-django>=2.2.1,<2.3
+django>=2.2.4,<2.3
 
 # Configuration
 django-environ>=0.4,<0.5
@@ -29,7 +29,7 @@ celery>=4.3,<4.4
 # Your custom requirements go here
 django-cors-headers>=2.5.3,<2.6
 musicbrainzngs==0.6
-djangorestframework>=3.9,<3.10
+djangorestframework>=3.10,<3.11
 djangorestframework-jwt>=1.11,<1.12
 pendulum>=2,<3
 persisting-theory>=0.2,<0.3
@@ -39,23 +39,25 @@ django-rest-auth>=0.9,<0.10
 ipython>=7,<8
 mutagen>=1.42,<1.43
 
-
-django-taggit>=0.24,<0.25
 pymemoize==1.0.3
 
-django-dynamic-preferences>=1.7,<1.8
+django-dynamic-preferences>=1.7.1,<1.8
 raven>=6.10,<7
 python-magic==0.4.15
 # XXX: until https://github.com/django/channels/issues/1240 is fixed
 channels==2.1.6
 channels_redis>=2.3,<2.4
 daphne>=2.2,<2.3
+uvicorn
+gunicorn
 
 cryptography>=2,<3
 # requests-http-signature==0.0.3
 # clone until the branch is merged and released upstream
 git+https://github.com/EliotBerriot/requests-http-signature.git@signature-header-support
 django-cleanup==3.2.0
+requests>=2.22<2.23
+pyOpenSSL>=19<20
 
 # for LDAP authentication
 python-ldap==3.2.0
diff --git a/api/tests/common/test_commands.py b/api/tests/common/test_commands.py
new file mode 100644
index 0000000000000000000000000000000000000000..a6fabfc06f1e39166dffc3903a4e79043d46664a
--- /dev/null
+++ b/api/tests/common/test_commands.py
@@ -0,0 +1,100 @@
+import pytest
+
+from django.core.management import call_command
+
+from funkwhale_api.federation import models as federation_models
+from funkwhale_api.music import models as music_models
+from funkwhale_api.tags import models as tags_models
+from funkwhale_api.users import models as users_models
+
+
+def test_load_test_data_dry_run(factories, mocker):
+    call_command("load_test_data", artists=10)
+
+    assert music_models.Artist.objects.count() == 0
+
+
+@pytest.mark.parametrize(
+    "kwargs, expected_counts",
+    [
+        (
+            {"create_dependencies": True, "artists": 10},
+            [(music_models.Artist.objects.all(), 10)],
+        ),
+        (
+            {"create_dependencies": True, "albums": 10, "artists": 1},
+            [
+                (music_models.Album.objects.all(), 10),
+                (music_models.Artist.objects.all(), 1),
+            ],
+        ),
+        (
+            {"create_dependencies": True, "tracks": 20, "albums": 10, "artists": 1},
+            [
+                (music_models.Track.objects.all(), 20),
+                (music_models.Album.objects.all(), 10),
+                (music_models.Artist.objects.all(), 1),
+            ],
+        ),
+        (
+            {"create_dependencies": True, "albums": 10, "albums_artist_factor": 0.5},
+            [
+                (music_models.Album.objects.all(), 10),
+                (music_models.Artist.objects.all(), 5),
+            ],
+        ),
+        (
+            {"create_dependencies": True, "albums": 3},
+            [
+                (music_models.Album.objects.all(), 3),
+                (music_models.Artist.objects.all(), 1),
+            ],
+        ),
+        (
+            {"create_dependencies": True, "local_accounts": 3},
+            [
+                (users_models.User.objects.all(), 3),
+                (federation_models.Actor.objects.all(), 3),
+            ],
+        ),
+        (
+            {"create_dependencies": True, "local_libraries": 3},
+            [
+                (users_models.User.objects.all(), 3),
+                (federation_models.Actor.objects.all(), 3),
+                (music_models.Library.objects.all(), 3),
+            ],
+        ),
+        (
+            {"create_dependencies": True, "local_uploads": 3},
+            [
+                (users_models.User.objects.all(), 1),
+                (federation_models.Actor.objects.all(), 1),
+                (music_models.Library.objects.all(), 1),
+                (music_models.Upload.objects.filter(import_status="finished"), 3),
+                (music_models.Track.objects.all(), 3),
+            ],
+        ),
+        (
+            {"create_dependencies": True, "tags": 3},
+            [(tags_models.Tag.objects.all(), 3)],
+        ),
+        (
+            {"create_dependencies": True, "track_tags": 3},
+            [(tags_models.Tag.objects.all(), 1), (music_models.Track.objects.all(), 3)],
+        ),
+    ],
+)
+def test_load_test_data_args(factories, kwargs, expected_counts, mocker):
+    call_command("load_test_data", dry_run=False, **kwargs)
+
+    for qs, expected_count in expected_counts:
+        assert qs.count() == expected_count
+
+
+def test_load_test_data_skip_dependencies(factories):
+    factories["music.Artist"].create_batch(size=5)
+    call_command("load_test_data", dry_run=False, albums=10, create_dependencies=False)
+
+    assert music_models.Artist.objects.count() == 5
+    assert music_models.Album.objects.count() == 10
diff --git a/api/tests/common/test_fields.py b/api/tests/common/test_fields.py
index 72aa8b4c35601e87555843a843566369c61e2375..2cc07f1b29a5c79b62dfa38af63792d9d8526907 100644
--- a/api/tests/common/test_fields.py
+++ b/api/tests/common/test_fields.py
@@ -20,3 +20,86 @@ from funkwhale_api.users.factories import UserFactory
 def test_privacy_level_query(user, expected):
     query = fields.privacy_level_query(user)
     assert query == expected
+
+
+def test_generic_relation_field(factories):
+    obj = factories["users.User"]()
+    f = fields.GenericRelation(
+        {
+            "user": {
+                "queryset": obj.__class__.objects.all(),
+                "id_attr": "username",
+                "id_field": fields.serializers.CharField(),
+            }
+        }
+    )
+
+    data = {"type": "user", "username": obj.username}
+
+    assert f.to_internal_value(data) == obj
+
+
+@pytest.mark.parametrize(
+    "payload, expected_error",
+    [
+        ({}, r".*Invalid data.*"),
+        (1, r".*Invalid data.*"),
+        (False, r".*Invalid data.*"),
+        ("test", r".*Invalid data.*"),
+        ({"missing": "type"}, r".*Invalid type.*"),
+        ({"type": "noop"}, r".*Invalid type.*"),
+        ({"type": "user"}, r".*Invalid username.*"),
+        ({"type": "user", "username": {}}, r".*Invalid username.*"),
+        ({"type": "user", "username": "not_found"}, r".*Object not found.*"),
+    ],
+)
+def test_generic_relation_field_validation_error(payload, expected_error, factories):
+    obj = factories["users.User"]()
+    f = fields.GenericRelation(
+        {
+            "user": {
+                "queryset": obj.__class__.objects.all(),
+                "id_attr": "username",
+                "id_field": fields.serializers.CharField(),
+            }
+        }
+    )
+
+    with pytest.raises(fields.serializers.ValidationError, match=expected_error):
+        f.to_internal_value(payload)
+
+
+def test_generic_relation_filter_target_type(factories):
+    user = factories["users.User"]()
+    note = factories["moderation.Note"](target=user)
+    factories["moderation.Note"](target=factories["music.Artist"]())
+    f = fields.GenericRelationFilter(
+        "target",
+        {
+            "user": {
+                "queryset": user.__class__.objects.all(),
+                "id_attr": "username",
+                "id_field": fields.serializers.CharField(),
+            }
+        },
+    )
+    qs = f.filter(note.__class__.objects.all(), "user")
+    assert list(qs) == [note]
+
+
+def test_generic_relation_filter_target_type_and_id(factories):
+    user = factories["users.User"]()
+    note = factories["moderation.Note"](target=user)
+    factories["moderation.Note"](target=factories["users.User"]())
+    f = fields.GenericRelationFilter(
+        "target",
+        {
+            "user": {
+                "queryset": user.__class__.objects.all(),
+                "id_attr": "username",
+                "id_field": fields.serializers.CharField(),
+            }
+        },
+    )
+    qs = f.filter(note.__class__.objects.all(), "user:{}".format(user.username))
+    assert list(qs) == [note]
diff --git a/api/tests/common/test_middleware.py b/api/tests/common/test_middleware.py
index 9361748f33cc89195374f6d2de98307b0d4d581d..c62add98889b7aeb686586fb25c6e20aefe0fc64 100644
--- a/api/tests/common/test_middleware.py
+++ b/api/tests/common/test_middleware.py
@@ -1,6 +1,10 @@
+import time
 import pytest
 
+from django.http import HttpResponse
+
 from funkwhale_api.common import middleware
+from funkwhale_api.common import throttling
 
 
 def test_spa_fallback_middleware_no_404(mocker):
@@ -185,3 +189,39 @@ def test_get_custom_css(preferences, custom_css, expected):
     preferences["ui__custom_css"] = custom_css
 
     assert middleware.get_custom_css() == expected
+
+
+def test_throttle_status_middleware_includes_info_in_response_headers(mocker):
+    get_response = mocker.Mock()
+    response = HttpResponse()
+    get_response.return_value = response
+    request = mocker.Mock(
+        path="/",
+        _api_request=mocker.Mock(
+            _throttle_status={
+                "num_requests": 42,
+                "duration": 3600,
+                "scope": "hello",
+                "history": [time.time() - 1600, time.time() - 1800],
+            }
+        ),
+    )
+    m = middleware.ThrottleStatusMiddleware(get_response)
+
+    assert m(request) == response
+    assert response["X-RateLimit-Limit"] == "42"
+    assert response["X-RateLimit-Remaining"] == "40"
+    assert response["X-RateLimit-Duration"] == "3600"
+    assert response["X-RateLimit-Scope"] == "hello"
+    assert response["X-RateLimit-Reset"] == str(int(time.time()) + 2000)
+    assert response["X-RateLimit-ResetSeconds"] == str(2000)
+    assert response["Retry-After"] == str(1800)
+
+
+def test_throttle_status_middleware_returns_proper_response(mocker):
+    get_response = mocker.Mock(side_effect=throttling.TooManyRequests())
+    request = mocker.Mock(path="/", _api_request=None, _throttle_status=None)
+    m = middleware.ThrottleStatusMiddleware(get_response)
+
+    response = m(request)
+    assert response.status_code == 429
diff --git a/api/tests/common/test_models.py b/api/tests/common/test_models.py
index 25c9befda809de508864b39f7bdc551f6600b14b..a2ea89ef2abe416c563493bdb8d142f20e20cc8e 100644
--- a/api/tests/common/test_models.py
+++ b/api/tests/common/test_models.py
@@ -15,3 +15,34 @@ def test_mutation_fid_is_populated(factories, model, factory_args, namespace):
     assert instance.fid == federation_utils.full_url(
         reverse(namespace, kwargs={"uuid": instance.uuid})
     )
+
+
+@pytest.mark.parametrize(
+    "factory_name, expected",
+    [
+        ("music.Artist", "/library/artists/{obj.pk}"),
+        ("music.Album", "/library/albums/{obj.pk}"),
+        ("music.Track", "/library/tracks/{obj.pk}"),
+        ("playlists.Playlist", "/library/playlists/{obj.pk}"),
+    ],
+)
+def test_get_absolute_url(factory_name, factories, expected):
+    obj = factories[factory_name]()
+
+    assert obj.get_absolute_url() == expected.format(obj=obj)
+
+
+@pytest.mark.parametrize(
+    "factory_name, expected",
+    [
+        ("music.Artist", "/manage/library/artists/{obj.pk}"),
+        ("music.Album", "/manage/library/albums/{obj.pk}"),
+        ("music.Track", "/manage/library/tracks/{obj.pk}"),
+        ("music.Library", "/manage/library/libraries/{obj.uuid}"),
+        ("federation.Actor", "/manage/moderation/accounts/{obj.full_username}"),
+    ],
+)
+def test_get_moderation_url(factory_name, factories, expected):
+    obj = factories[factory_name]()
+
+    assert obj.get_moderation_url() == expected.format(obj=obj)
diff --git a/api/tests/common/test_mutations.py b/api/tests/common/test_mutations.py
index 3c0d869a116fd832b9927e1b4c7c1da51b4a88e2..877128fac62da638744e0855b925fc816d8b0f95 100644
--- a/api/tests/common/test_mutations.py
+++ b/api/tests/common/test_mutations.py
@@ -51,7 +51,7 @@ def test_apply_update_mutation(factories, mutations_registry, mocker):
     )
     assert previous_state == get_update_previous_state.return_value
     get_update_previous_state.assert_called_once_with(
-        user, "username", serialized_relations={}
+        user, "username", serialized_relations={}, handlers={}
     )
     user.refresh_from_db()
 
diff --git a/api/tests/common/test_routers.py b/api/tests/common/test_routers.py
new file mode 100644
index 0000000000000000000000000000000000000000..3bd5c4e47f5f823ef75e5d07fd9ce9514d67ab4f
--- /dev/null
+++ b/api/tests/common/test_routers.py
@@ -0,0 +1,34 @@
+import pytest
+from django import urls
+
+
+@pytest.mark.parametrize(
+    "url",
+    [
+        "/api/v1/artists",
+        "/api/v1/albums",
+        "/api/v1/tracks",
+        "/api/v1/libraries",
+        "/api/v1/uploads",
+        "/api/v1/playlists",
+        "/api/v1/favorites/tracks",
+        "/api/v1/auth/registration/verify-email",
+        "/api/v1/auth/registration/change-password",
+        "/api/v1/auth/registration/account-confirm-email/key",
+        "/api/v1/history/listenings",
+        "/api/v1/radios/sessions",
+        "/api/v1/users/users/me",
+        "/api/v1/federation/follows/library",
+        "/api/v1/manage/accounts",
+        "/api/v1/oauth/apps",
+        "/api/v1/moderation/content-filters",
+        "/api/v1/token",
+        "/api/v1/token/refresh",
+        "/api/v1/instance/settings",
+        "/api/v1/instance/nodeinfo/2.0",
+    ],
+)
+@pytest.mark.parametrize("suffix", ["", "/"])
+def test_optional_trailing_slash(url, suffix):
+    match = urls.resolve(url + suffix)
+    assert match is not None
diff --git a/api/tests/common/test_throttling.py b/api/tests/common/test_throttling.py
new file mode 100644
index 0000000000000000000000000000000000000000..6b000fcaf6ad3bc286eab799d0f442602792bbd9
--- /dev/null
+++ b/api/tests/common/test_throttling.py
@@ -0,0 +1,337 @@
+import time
+import pytest
+
+from funkwhale_api.common import throttling
+
+
+def test_get_ident_anonymous(api_request):
+    ip = "92.92.92.92"
+    request = api_request.get("/", HTTP_X_FORWARDED_FOR=ip)
+
+    expected = {"id": ip, "type": "anonymous"}
+
+    assert throttling.get_ident(request) == expected
+
+
+def test_get_ident_authenticated(api_request, factories):
+    user = factories["users.User"]()
+    request = api_request.get("/")
+    setattr(request, "user", user)
+    expected = {"id": user.pk, "type": "authenticated"}
+    assert throttling.get_ident(request) == expected
+
+
+@pytest.mark.parametrize(
+    "scope, ident, expected",
+    [
+        (
+            "create",
+            {"id": 42, "type": "authenticated"},
+            "throttling:create:authenticated:42",
+        ),
+        (
+            "list",
+            {"id": "92.92.92.92", "type": "anonymous"},
+            "throttling:list:anonymous:92.92.92.92",
+        ),
+    ],
+)
+def test_get_cache_key(scope, ident, expected):
+    assert throttling.get_cache_key(scope, ident) == expected
+
+
+@pytest.mark.parametrize(
+    "action, type, view_conf, throttling_actions, expected",
+    [
+        # exact match, we return the rate
+        ("retrieve", "anonymous", {}, {"retrieve": {"anonymous": "test"}}, "test"),
+        # exact match on the view, we return the rate
+        ("retrieve", "anonymous", {"retrieve": {"anonymous": "test"}}, {}, "test"),
+        # no match, we return nothing
+        ("retrieve", "authenticated", {}, {}, None),
+        ("retrieve", "authenticated", {}, {"retrieve": {"anonymous": "test"}}, None),
+        (
+            "retrieve",
+            "authenticated",
+            {"destroy": {"authenticated": "test"}},
+            {"retrieve": {"anonymous": "test"}},
+            None,
+        ),
+        # exact match on the view, and in the settings, the view is more important
+        (
+            "retrieve",
+            "anonymous",
+            {"retrieve": {"anonymous": "test"}},
+            {"retrieve": {"anonymous": "test-2"}},
+            "test",
+        ),
+        # wildcard match, we return the wildcard value
+        ("retrieve", "authenticated", {}, {"*": {"authenticated": "test"}}, "test"),
+        # wildcard match, but more specific match also, we use this one instead
+        (
+            "retrieve",
+            "authenticated",
+            {},
+            {"retrieve": {"authenticated": "test-2"}, "*": {"authenticated": "test"}},
+            "test-2",
+        ),
+    ],
+)
+def test_get_rate_for_scope_and_ident_type(
+    action, type, view_conf, throttling_actions, expected, settings
+):
+    settings.THROTTLING_SCOPES = throttling_actions
+    assert (
+        throttling.get_scope_for_action_and_ident_type(
+            action=action, ident_type=type, view_conf=view_conf
+        )
+        is expected
+    )
+
+
+@pytest.mark.parametrize(
+    "view_args, throttling_rates, previous_requests, expected",
+    [
+        # room for one more requests
+        (
+            {
+                "action": "retrieve",
+                "throttling_scopes": {"retrieve": {"anonymous": "test"}},
+            },
+            {"test": {"rate": "3/s"}},
+            2,
+            True,
+        ),
+        # number of requests exceeded
+        (
+            {
+                "action": "retrieve",
+                "throttling_scopes": {"retrieve": {"anonymous": "test"}},
+            },
+            {"test": {"rate": "3/s"}},
+            3,
+            False,
+        ),
+        # no throttling setup
+        (
+            {
+                "action": "delete",
+                "throttling_scopes": {"retrieve": {"anonymous": "test"}},
+            },
+            {},
+            1000,
+            True,
+        ),
+    ],
+)
+def test_throttle_anonymous(
+    view_args,
+    throttling_rates,
+    previous_requests,
+    expected,
+    api_request,
+    mocker,
+    settings,
+):
+    settings.THROTTLING_RATES = throttling_rates
+    settings.THROTTLING_SCOPES = {}
+    ip = "92.92.92.92"
+    ident = {"type": "anonymous", "id": ip}
+    request = api_request.get("/", HTTP_X_FORWARDED_FOR=ip)
+
+    view = mocker.Mock(**view_args)
+
+    cache_key = throttling.get_cache_key("test", ident)
+    throttle = throttling.FunkwhaleThrottle()
+
+    history = [time.time() for _ in range(previous_requests)]
+    throttle.cache.set(cache_key, history)
+
+    assert throttle.allow_request(request, view) is expected
+
+
+@pytest.mark.parametrize(
+    "view_args, throttling_rates, previous_requests, expected",
+    [
+        # room for one more requests
+        (
+            {
+                "action": "retrieve",
+                "throttling_scopes": {"retrieve": {"authenticated": "test"}},
+            },
+            {"test": {"rate": "3/s"}},
+            2,
+            True,
+        ),
+        # number of requests exceeded
+        (
+            {
+                "action": "retrieve",
+                "throttling_scopes": {"retrieve": {"authenticated": "test"}},
+            },
+            {"test": {"rate": "3/s"}},
+            3,
+            False,
+        ),
+        # no throttling setup
+        (
+            {
+                "action": "delete",
+                "throttling_scopes": {"retrieve": {"authenticated": "test"}},
+            },
+            {},
+            1000,
+            True,
+        ),
+    ],
+)
+def test_throttle_authenticated(
+    view_args,
+    throttling_rates,
+    previous_requests,
+    expected,
+    api_request,
+    mocker,
+    settings,
+    factories,
+):
+    settings.THROTTLING_RATES = throttling_rates
+    settings.THROTTLING_SCOPES = {}
+    user = factories["users.User"]()
+    ident = {"type": "authenticated", "id": user.pk}
+    request = api_request.get("/")
+    setattr(request, "user", user)
+
+    view = mocker.Mock(**view_args)
+
+    cache_key = throttling.get_cache_key("test", ident)
+    throttle = throttling.FunkwhaleThrottle()
+
+    history = [time.time() for _ in range(previous_requests)]
+    throttle.cache.set(cache_key, history)
+
+    assert throttle.allow_request(request, view) is expected
+
+
+def throttle_successive(settings, mocker, api_request):
+    settings.THROTTLING_RATES = {"test": {"rate": "3/s"}}
+    settings.THROTTLING_SCOPES = {}
+    ip = "92.92.92.92"
+    request = api_request.get("/", HTTP_X_FORWARDED_FOR=ip)
+
+    view = mocker.Mock(
+        action="retrieve", throttling_scopes={"retrieve": {"anonymous": "test"}}
+    )
+
+    throttle = throttling.FunkwhaleThrottle()
+
+    assert throttle.allow_request(request, view) is True
+    assert throttle.allow_request(request, view) is True
+    assert throttle.allow_request(request, view) is True
+    assert throttle.allow_request(request, view) is False
+
+
+def test_throttle_attach_info(mocker):
+    throttle = throttling.FunkwhaleThrottle()
+    request = mocker.Mock()
+    setattr(throttle, "num_requests", 300)
+    setattr(throttle, "duration", 3600)
+    setattr(throttle, "scope", "hello")
+    setattr(throttle, "history", [])
+    setattr(throttle, "request", request)
+
+    expected = {
+        "num_requests": throttle.num_requests,
+        "duration": throttle.duration,
+        "history": throttle.history,
+        "wait": throttle.wait(),
+        "scope": throttle.scope,
+    }
+    throttle.attach_info()
+
+    assert request._throttle_status == expected
+
+
+@pytest.mark.parametrize("method", ["throttle_success", "throttle_failure"])
+def test_throttle_calls_attach_info(method, mocker):
+    throttle = throttling.FunkwhaleThrottle()
+    setattr(throttle, "key", "noop")
+    setattr(throttle, "now", "noop")
+    setattr(throttle, "duration", "noop")
+    setattr(throttle, "history", ["noop"])
+    mocker.patch.object(throttle, "cache")
+    attach_info = mocker.patch.object(throttle, "attach_info")
+    func = getattr(throttle, method)
+
+    func()
+
+    attach_info.assert_called_once_with()
+
+
+def test_allow_request(api_request, settings, mocker):
+    settings.THROTTLING_RATES = {"test": {"rate": "2/s"}}
+    ip = "92.92.92.92"
+    request = api_request.get("/", HTTP_X_FORWARDED_FOR=ip)
+    allow_request = mocker.spy(throttling.FunkwhaleThrottle, "allow_request")
+    action = "test"
+    throttling_scopes = {"test": {"anonymous": "test", "authenticated": "test"}}
+    throttling.check_request(request, action)
+    throttling.check_request(request, action)
+    with pytest.raises(throttling.TooManyRequests):
+        throttling.check_request(request, action)
+
+    assert allow_request.call_count == 3
+    assert allow_request.call_args[0][1] == request
+    assert allow_request.call_args[0][2] == throttling.DummyView(
+        action=action, throttling_scopes=throttling_scopes
+    )
+
+
+def test_allow_request_throttling_disabled(api_request, settings):
+    settings.THROTTLING_RATES = {"test": {"rate": "1/s"}}
+    settings.THROTTLING_ENABLED = False
+    ip = "92.92.92.92"
+    request = api_request.get("/", HTTP_X_FORWARDED_FOR=ip)
+    action = "test"
+    throttling.check_request(request, action)
+    # even exceeding request doesn't raise any exception
+    throttling.check_request(request, action)
+
+
+def test_get_throttling_status_for_ident(settings, cache):
+    settings.THROTTLING_RATES = {
+        "test-1": {"rate": "30/d", "description": "description 1"},
+        "test-2": {"rate": "20/h", "description": "description 2"},
+    }
+    ident = {"type": "anonymous", "id": "92.92.92.92"}
+    test1_cache_key = throttling.get_cache_key("test-1", ident)
+    now = int(time.time())
+    cache.set(test1_cache_key, [now - 1, now - 2, now - 99999999])
+
+    expected = [
+        {
+            "id": "test-1",
+            "limit": 30,
+            "rate": "30/d",
+            "description": "description 1",
+            "duration": 24 * 3600,
+            "remaining": 28,
+            "reset": now + (24 * 3600) - 1,
+            "reset_seconds": (24 * 3600) - 1,
+            "available": None,
+            "available_seconds": None,
+        },
+        {
+            "id": "test-2",
+            "limit": 20,
+            "rate": "20/h",
+            "description": "description 2",
+            "duration": 3600,
+            "remaining": 20,
+            "reset": None,
+            "reset_seconds": None,
+            "available": None,
+            "available_seconds": None,
+        },
+    ]
+    assert throttling.get_status(ident, now) == expected
diff --git a/api/tests/common/test_views.py b/api/tests/common/test_views.py
index d2b53b41f620ac80caa5d5835ef3afdb02c1bd60..c1cbfd761e1a76e79f22a64661337ba4ee8fbaa6 100644
--- a/api/tests/common/test_views.py
+++ b/api/tests/common/test_views.py
@@ -4,6 +4,7 @@ from django.urls import reverse
 from funkwhale_api.common import serializers
 from funkwhale_api.common import signals
 from funkwhale_api.common import tasks
+from funkwhale_api.common import throttling
 
 
 def test_can_detail_mutation(logged_in_api_client, factories):
@@ -163,3 +164,20 @@ def test_cannot_approve_reject_without_perm(
 
     assert mutation.is_approved is None
     assert mutation.approved_by is None
+
+
+def test_rate_limit(logged_in_api_client, now_time, settings, mocker):
+    expected_ident = {"type": "authenticated", "id": logged_in_api_client.user.pk}
+
+    expected = {
+        "ident": expected_ident,
+        "scopes": throttling.get_status(expected_ident, now_time),
+        "enabled": settings.THROTTLING_ENABLED,
+    }
+    get_status = mocker.spy(throttling, "get_status")
+    url = reverse("api:v1:rate-limit")
+    response = logged_in_api_client.get(url)
+
+    assert response.status_code == 200
+    assert response.data == expected
+    get_status.assert_called_once_with(expected_ident, now_time)
diff --git a/api/tests/conftest.py b/api/tests/conftest.py
index d87e3937483eae28822281386c27c9ac38bc735c..a7fa02cc06ca5bb6f0ec6346a1f2822096994784 100644
--- a/api/tests/conftest.py
+++ b/api/tests/conftest.py
@@ -1,14 +1,12 @@
 import contextlib
-import datetime
 import io
 import os
 import PIL
 import random
 import shutil
 import tempfile
-import uuid
+import time
 
-from faker.providers import internet as internet_provider
 import factory
 import pytest
 
@@ -24,36 +22,18 @@ from django.db.models import QuerySet
 
 from aioresponses import aioresponses
 from dynamic_preferences.registries import global_preferences_registry
-from rest_framework import fields as rest_fields
 from rest_framework.test import APIClient, APIRequestFactory
 
 from funkwhale_api.activity import record
 from funkwhale_api.federation import actors
+from funkwhale_api.moderation import mrf
 from funkwhale_api.music import licenses
 
+from . import utils as test_utils
 
 pytest_plugins = "aiohttp.pytest_plugin"
 
 
-class FunkwhaleProvider(internet_provider.Provider):
-    """
-    Our own faker data generator, since built-in ones are sometimes
-    not random enough
-    """
-
-    def federation_url(self, prefix=""):
-        def path_generator():
-            return "{}/{}".format(prefix, uuid.uuid4())
-
-        domain = self.domain_name()
-        protocol = "https"
-        path = path_generator()
-        return "{}://{}/{}".format(protocol, domain, path)
-
-
-factory.Faker.add_provider(FunkwhaleProvider)
-
-
 @pytest.fixture
 def queryset_equal_queries():
     """
@@ -317,18 +297,9 @@ def authenticated_actor(factories, mocker):
     yield actor
 
 
-@pytest.fixture
+@pytest.fixture(scope="session")
 def to_api_date():
-    def inner(value):
-        if isinstance(value, datetime.datetime):
-            f = rest_fields.DateTimeField()
-            return f.to_representation(value)
-        if isinstance(value, datetime.date):
-            f = rest_fields.DateField()
-            return f.to_representation(value)
-        raise ValueError("Invalid value: {}".format(value))
-
-    return inner
+    return test_utils.to_api_date
 
 
 @pytest.fixture()
@@ -338,6 +309,13 @@ def now(mocker):
     return now
 
 
+@pytest.fixture()
+def now_time(mocker):
+    now = time.time()
+    mocker.patch("time.time", return_value=now)
+    return now
+
+
 @pytest.fixture()
 def avatar():
     i = PIL.Image.new("RGBA", (400, 400), random.choice(["red", "blue", "yellow"]))
@@ -425,6 +403,20 @@ def service_actor(db):
     return actors.get_service_actor()
 
 
+@pytest.fixture
+def mrf_inbox_registry(mocker):
+    registry = mrf.Registry()
+    mocker.patch("funkwhale_api.moderation.mrf.inbox", registry)
+    return registry
+
+
+@pytest.fixture
+def mrf_outbox_registry(mocker):
+    registry = mrf.Registry()
+    mocker.patch("funkwhale_api.moderation.mrf.outbox", registry)
+    return registry
+
+
 @pytest.fixture(autouse=True)
 def clear_license_cache(db):
     licenses._cache = None
diff --git a/api/tests/favorites/test_favorites.py b/api/tests/favorites/test_favorites.py
index 190c7918439f4acd73dce5b4e9d599ad3d979673..b81006386ac86b79a3ac34f37e19ffb89c153c40 100644
--- a/api/tests/favorites/test_favorites.py
+++ b/api/tests/favorites/test_favorites.py
@@ -4,8 +4,7 @@ import pytest
 from django.urls import reverse
 
 from funkwhale_api.favorites.models import TrackFavorite
-from funkwhale_api.music import serializers as music_serializers
-from funkwhale_api.users import serializers as users_serializers
+from funkwhale_api.favorites import serializers
 
 
 def test_user_can_add_favorite(factories):
@@ -20,22 +19,15 @@ def test_user_can_add_favorite(factories):
 def test_user_can_get_his_favorites(
     api_request, factories, logged_in_api_client, client
 ):
-    r = api_request.get("/")
+    request = api_request.get("/")
     favorite = factories["favorites.TrackFavorite"](user=logged_in_api_client.user)
     factories["favorites.TrackFavorite"]()
     url = reverse("api:v1:favorites:tracks-list")
     response = logged_in_api_client.get(url, {"user": logged_in_api_client.user.pk})
     expected = [
-        {
-            "user": users_serializers.UserBasicSerializer(
-                favorite.user, context={"request": r}
-            ).data,
-            "track": music_serializers.TrackSerializer(
-                favorite.track, context={"request": r}
-            ).data,
-            "id": favorite.id,
-            "creation_date": favorite.creation_date.isoformat().replace("+00:00", "Z"),
-        }
+        serializers.UserTrackFavoriteSerializer(
+            favorite, context={"request": request}
+        ).data
     ]
     assert response.status_code == 200
     assert response.data["results"] == expected
diff --git a/api/tests/favorites/test_serializers.py b/api/tests/favorites/test_serializers.py
new file mode 100644
index 0000000000000000000000000000000000000000..16823caa34441d30f05f329f271199b689e21104
--- /dev/null
+++ b/api/tests/favorites/test_serializers.py
@@ -0,0 +1,20 @@
+from funkwhale_api.federation import serializers as federation_serializers
+from funkwhale_api.favorites import serializers
+from funkwhale_api.music import serializers as music_serializers
+from funkwhale_api.users import serializers as users_serializers
+
+
+def test_track_favorite_serializer(factories, to_api_date):
+    favorite = factories["favorites.TrackFavorite"]()
+    actor = favorite.user.create_actor()
+
+    expected = {
+        "id": favorite.pk,
+        "creation_date": to_api_date(favorite.creation_date),
+        "track": music_serializers.TrackSerializer(favorite.track).data,
+        "actor": federation_serializers.APIActorSerializer(actor).data,
+        "user": users_serializers.UserBasicSerializer(favorite.user).data,
+    }
+    serializer = serializers.UserTrackFavoriteSerializer(favorite)
+
+    assert serializer.data == expected
diff --git a/api/tests/federation/test_activity.py b/api/tests/federation/test_activity.py
index aaeebbb87c594084bc404df077fb83b2e4a5bc2f..ccc27c7dfd693efcaaa5781bee9e03f5b0dc8346 100644
--- a/api/tests/federation/test_activity.py
+++ b/api/tests/federation/test_activity.py
@@ -13,10 +13,13 @@ from funkwhale_api.federation import (
 )
 
 
-def test_receive_validates_basic_attributes_and_stores_activity(factories, now, mocker):
+def test_receive_validates_basic_attributes_and_stores_activity(
+    mrf_inbox_registry, factories, now, mocker
+):
     mocker.patch.object(
         activity.InboxRouter, "get_matching_handlers", return_value=True
     )
+    mrf_inbox_registry_apply = mocker.spy(mrf_inbox_registry, "apply")
     mocked_dispatch = mocker.patch("funkwhale_api.common.utils.on_commit")
     local_to_actor = factories["users.User"]().create_actor()
     local_cc_actor = factories["users.User"]().create_actor()
@@ -31,6 +34,7 @@ def test_receive_validates_basic_attributes_and_stores_activity(factories, now,
     }
 
     copy = activity.receive(activity=a, on_behalf_of=remote_actor)
+    mrf_inbox_registry_apply.assert_called_once_with(a, sender_id=a["actor"])
 
     assert copy.payload == a
     assert copy.creation_date >= now
@@ -49,6 +53,63 @@ def test_receive_validates_basic_attributes_and_stores_activity(factories, now,
         assert ii.is_read is False
 
 
+def test_receive_uses_mrf_returned_payload(mrf_inbox_registry, factories, now, mocker):
+    mocker.patch.object(
+        activity.InboxRouter, "get_matching_handlers", return_value=True
+    )
+
+    def patched_apply(payload, **kwargs):
+        payload["type"] = "SomethingElse"
+        return payload, True
+
+    mrf_inbox_registry_apply = mocker.patch.object(
+        mrf_inbox_registry, "apply", side_effect=patched_apply
+    )
+    mocked_dispatch = mocker.patch("funkwhale_api.common.utils.on_commit")
+    local_to_actor = factories["users.User"]().create_actor()
+    remote_actor = factories["federation.Actor"]()
+    a = {
+        "@context": [],
+        "actor": remote_actor.fid,
+        "type": "Noop",
+        "id": "https://test.activity",
+        "to": [local_to_actor.fid],
+    }
+
+    copy = activity.receive(activity=a, on_behalf_of=remote_actor)
+    mrf_inbox_registry_apply.assert_called_once_with(a, sender_id=a["actor"])
+
+    expected = a.copy()
+    expected["type"] = "SomethingElse"
+    assert copy.payload == expected
+    assert copy.creation_date >= now
+    assert copy.actor == remote_actor
+    assert copy.fid == a["id"]
+    assert copy.type == "SomethingElse"
+    mocked_dispatch.assert_called_once_with(
+        tasks.dispatch_inbox.delay, activity_id=copy.pk
+    )
+
+
+def test_receive_mrf_skip(mrf_inbox_registry, factories, now, mocker):
+    mocker.patch.object(
+        activity.InboxRouter, "get_matching_handlers", return_value=True
+    )
+    mocker.patch.object(mrf_inbox_registry, "apply", return_value=(None, False))
+    local_to_actor = factories["users.User"]().create_actor()
+    remote_actor = factories["federation.Actor"]()
+    a = {
+        "@context": [],
+        "actor": remote_actor.fid,
+        "type": "Noop",
+        "id": "https://test.activity",
+        "to": [local_to_actor.fid],
+    }
+
+    copy = activity.receive(activity=a, on_behalf_of=remote_actor)
+    assert copy is None
+
+
 def test_receive_calls_should_reject(factories, now, mocker):
     should_reject = mocker.patch.object(activity, "should_reject", return_value=True)
     mocker.patch.object(
@@ -287,7 +348,7 @@ def test_route_matching(route, payload, expected):
     assert activity.match_route(route, payload) is expected
 
 
-def test_outbox_router_dispatch(mocker, factories, now):
+def test_outbox_router_dispatch(mocker, factories, preferences, now):
     router = activity.OutboxRouter()
     actor = factories["federation.Actor"]()
     r1 = factories["federation.Actor"]()
@@ -331,7 +392,39 @@ def test_outbox_router_dispatch(mocker, factories, now):
         assert delivery.is_delivered is False
 
 
-def test_prepare_deliveries_and_inbox_items(factories):
+def test_outbox_router_dispatch_allow_list(mocker, factories, preferences, now):
+    preferences["moderation__allow_list_enabled"] = True
+    router = activity.OutboxRouter()
+    actor = factories["federation.Actor"]()
+    r1 = factories["federation.Actor"](domain__allowed=True)
+    r2 = factories["federation.Actor"]()
+    prepare_deliveries_and_inbox_items = mocker.spy(
+        activity, "prepare_deliveries_and_inbox_items"
+    )
+
+    def handler(context):
+        yield {
+            "payload": {
+                "type": "Noop",
+                "actor": actor.fid,
+                "summary": context["summary"],
+                "to": [r1],
+                "cc": [r2],
+            },
+            "actor": actor,
+        }
+
+    router.connect({"type": "Noop"}, handler)
+    router.dispatch({"type": "Noop"}, {"summary": "hello"})
+    prepare_deliveries_and_inbox_items.assert_any_call(
+        [r1], "to", allowed_domains=set([r1.domain_id])
+    )
+    prepare_deliveries_and_inbox_items.assert_any_call(
+        [r2], "cc", allowed_domains=set([r1.domain_id])
+    )
+
+
+def test_prepare_deliveries_and_inbox_items(factories, preferences):
     local_actor1 = factories["federation.Actor"](
         local=True, shared_inbox_url="https://testlocal.inbox"
     )
@@ -385,7 +478,7 @@ def test_prepare_deliveries_and_inbox_items(factories):
     ]
 
     inbox_items, deliveries, urls = activity.prepare_deliveries_and_inbox_items(
-        recipients, "to"
+        recipients, "to", allowed_domains=None
     )
     expected_inbox_items = sorted(
         [
@@ -436,6 +529,32 @@ def test_prepare_deliveries_and_inbox_items(factories):
         assert inbox_item.type == "to"
 
 
+def test_prepare_deliveries_and_inbox_items_allow_list(factories, preferences):
+    preferences["moderation__allow_list_enabled"] = True
+    remote_actor1 = factories["federation.Actor"](domain__allowed=True)
+    remote_actor2 = factories["federation.Actor"](domain__allowed=False)
+
+    recipients = [remote_actor1, remote_actor2]
+
+    inbox_items, deliveries, urls = activity.prepare_deliveries_and_inbox_items(
+        recipients, "to", allowed_domains=set([remote_actor1.domain_id])
+    )
+    expected_inbox_items = []
+
+    expected_deliveries = [models.Delivery(inbox_url=remote_actor1.inbox_url)]
+
+    expected_urls = [remote_actor1.fid]
+
+    assert urls == expected_urls
+    assert len(expected_inbox_items) == len(inbox_items)
+    assert len(expected_deliveries) == len(deliveries)
+
+    for delivery, expected_delivery in zip(
+        sorted(deliveries, key=lambda v: v.inbox_url), expected_deliveries
+    ):
+        assert delivery.inbox_url == expected_delivery.inbox_url
+
+
 def test_prepare_deliveries_and_inbox_items_instances_with_followers(factories):
 
     domain1 = factories["federation.Domain"](with_service_actor=True)
@@ -460,7 +579,7 @@ def test_prepare_deliveries_and_inbox_items_instances_with_followers(factories):
     recipients = [activity.PUBLIC_ADDRESS, {"type": "instances_with_followers"}]
 
     inbox_items, deliveries, urls = activity.prepare_deliveries_and_inbox_items(
-        recipients, "to"
+        recipients, "to", allowed_domains=None
     )
 
     expected_deliveries = sorted(
@@ -483,6 +602,20 @@ def test_prepare_deliveries_and_inbox_items_instances_with_followers(factories):
         assert delivery.inbox_url == expected_delivery.inbox_url
 
 
+@pytest.mark.parametrize(
+    "url, allowed_domains, expected",
+    [
+        ("https://domain.example/test", None, True),
+        ("https://domain.example/test", [], False),
+        ("https://allowed.example/test", ["allowed.example"], True),
+        ("https://domain.example/test", ["allowed.example"], False),
+        ("https://social.allowed.example/test", ["allowed.example"], False),
+    ],
+)
+def test_is_allowed_url(url, allowed_domains, expected):
+    assert activity.is_allowed_url(url, allowed_domains) is expected
+
+
 def test_should_rotate_actor_key(settings, cache, now):
     actor_id = 42
     settings.ACTOR_KEY_ROTATION_DELAY = 10
@@ -507,7 +640,9 @@ def test_schedule_key_rotation(cache, mocker):
     assert cache.get(activity.ACTOR_KEY_ROTATION_LOCK_CACHE_KEY.format(actor_id), True)
 
 
-def test_outbox_dispatch_rotate_key_on_delete(mocker, factories, cache, settings):
+def test_outbox_dispatch_rotate_key_on_delete(
+    mocker, factories, cache, settings, preferences
+):
     router = activity.OutboxRouter()
     actor = factories["federation.Actor"]()
     r1 = factories["federation.Actor"]()
diff --git a/api/tests/federation/test_api_serializers.py b/api/tests/federation/test_api_serializers.py
index df55df7ae30b52e905551f1b54eb63869972f4b1..d7c5836cab2ced75c340d98bcb7dc4e1cc41eb5c 100644
--- a/api/tests/federation/test_api_serializers.py
+++ b/api/tests/federation/test_api_serializers.py
@@ -4,7 +4,7 @@ from funkwhale_api.federation import api_serializers
 from funkwhale_api.federation import serializers
 
 
-def test_library_serializer(factories):
+def test_library_serializer(factories, to_api_date):
     library = factories["music.Library"](uploads_count=5678)
     expected = {
         "fid": library.fid,
@@ -12,7 +12,7 @@ def test_library_serializer(factories):
         "actor": serializers.APIActorSerializer(library.actor).data,
         "name": library.name,
         "description": library.description,
-        "creation_date": library.creation_date.isoformat().split("+")[0] + "Z",
+        "creation_date": to_api_date(library.creation_date),
         "uploads_count": library.uploads_count,
         "privacy_level": library.privacy_level,
         "follow": None,
@@ -34,7 +34,7 @@ def test_library_serializer_latest_scan(factories):
     assert serializer.data["latest_scan"] == expected
 
 
-def test_library_serializer_with_follow(factories):
+def test_library_serializer_with_follow(factories, to_api_date):
     library = factories["music.Library"](uploads_count=5678)
     follow = factories["federation.LibraryFollow"](target=library)
 
@@ -45,7 +45,7 @@ def test_library_serializer_with_follow(factories):
         "actor": serializers.APIActorSerializer(library.actor).data,
         "name": library.name,
         "description": library.description,
-        "creation_date": library.creation_date.isoformat().split("+")[0] + "Z",
+        "creation_date": to_api_date(library.creation_date),
         "uploads_count": library.uploads_count,
         "privacy_level": library.privacy_level,
         "follow": api_serializers.NestedLibraryFollowSerializer(follow).data,
diff --git a/api/tests/federation/test_authentication.py b/api/tests/federation/test_authentication.py
index 4e837e64177be9919881d0b5fe6adef94bbdaf6f..643bccccb6ca12e80a180d2b1fc5a1e7d6297f63 100644
--- a/api/tests/federation/test_authentication.py
+++ b/api/tests/federation/test_authentication.py
@@ -178,3 +178,28 @@ def test_autenthicate_supports_blind_key_rotation(factories, mocker, api_request
     assert user.is_anonymous is True
     assert actor.public_key == new_public.decode("utf-8")
     assert actor.fid == actor_url
+
+
+def test_authenticate_checks_signature_with_allow_list(
+    preferences, factories, api_request
+):
+    preferences["moderation__allow_list_enabled"] = True
+    domain = factories["federation.Domain"](allowed=False)
+    private, public = keys.get_key_pair()
+    actor_url = "https://{}/actor".format(domain.name)
+
+    signed_request = factories["federation.SignedRequest"](
+        auth__key=private, auth__key_id=actor_url + "#main-key", auth__headers=["date"]
+    )
+    prepared = signed_request.prepare()
+    django_request = api_request.get(
+        "/",
+        **{
+            "HTTP_DATE": prepared.headers["date"],
+            "HTTP_SIGNATURE": prepared.headers["signature"],
+        }
+    )
+    authenticator = authentication.SignatureAuthentication()
+
+    with pytest.raises(exceptions.BlockedActorOrDomain):
+        authenticator.authenticate(django_request)
diff --git a/api/tests/federation/test_migrations.py b/api/tests/federation/test_migrations.py
index db3f8aaa54ff668fddf0d71ab00b26c39989861b..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644
--- a/api/tests/federation/test_migrations.py
+++ b/api/tests/federation/test_migrations.py
@@ -1,40 +0,0 @@
-def test_domain_14_migration(migrator):
-    a, f, t = ("federation", "0014_auto_20181205_0958", "0015_populate_domains")
-
-    migrator.migrate([(a, f)])
-    old_apps = migrator.loader.project_state([(a, f)]).apps
-    Actor = old_apps.get_model(a, "Actor")
-    a1 = Actor.objects.create(
-        fid="http://testmigration1.com",
-        preferred_username="test1",
-        old_domain="dOmaiN1.com",
-    )
-    a2 = Actor.objects.create(
-        fid="http://testmigration2.com",
-        preferred_username="test2",
-        old_domain="domain1.com",
-    )
-    a3 = Actor.objects.create(
-        fid="http://testmigration3.com",
-        preferred_username="test2",
-        old_domain="domain2.com",
-    )
-
-    migrator.loader.build_graph()
-    migrator.migrate([(a, t)])
-    new_apps = migrator.loader.project_state([(a, t)]).apps
-
-    Actor = new_apps.get_model(a, "Actor")
-    Domain = new_apps.get_model(a, "Domain")
-
-    a1 = Actor.objects.get(pk=a1.pk)
-    a2 = Actor.objects.get(pk=a2.pk)
-    a3 = Actor.objects.get(pk=a3.pk)
-
-    assert Domain.objects.count() == 2
-    assert a1.domain == Domain.objects.get(pk="domain1.com")
-    assert a2.domain == Domain.objects.get(pk="domain1.com")
-    assert a3.domain == Domain.objects.get(pk="domain2.com")
-
-    assert Domain.objects.get(pk="domain1.com").creation_date == a1.creation_date
-    assert Domain.objects.get(pk="domain2.com").creation_date == a3.creation_date
diff --git a/api/tests/federation/test_models.py b/api/tests/federation/test_models.py
index d6f862bb356300e9d93fb02c0300f266eef0a6bf..a7460b01cba857f40f17d4e80c0d31075c76912b 100644
--- a/api/tests/federation/test_models.py
+++ b/api/tests/federation/test_models.py
@@ -124,6 +124,7 @@ def test_actor_stats(factories):
         "albums": 0,
         "uploads": 0,
         "artists": 0,
+        "reports": 0,
         "outbox_activities": 0,
         "received_library_follows": 0,
         "emitted_library_follows": 0,
diff --git a/api/tests/federation/test_routes.py b/api/tests/federation/test_routes.py
index 56834d55f472a5ce9e3d49ee6e96486bf59bd673..3bbdd486821275d299568f9e4a8ea5697e764806 100644
--- a/api/tests/federation/test_routes.py
+++ b/api/tests/federation/test_routes.py
@@ -1,6 +1,13 @@
 import pytest
 
-from funkwhale_api.federation import actors, contexts, jsonld, routes, serializers
+from funkwhale_api.federation import (
+    activity,
+    actors,
+    contexts,
+    jsonld,
+    routes,
+    serializers,
+)
 
 
 @pytest.mark.parametrize(
@@ -8,23 +15,29 @@ from funkwhale_api.federation import actors, contexts, jsonld, routes, serialize
     [
         ({"type": "Follow"}, routes.inbox_follow),
         ({"type": "Accept"}, routes.inbox_accept),
-        ({"type": "Create", "object.type": "Audio"}, routes.inbox_create_audio),
-        ({"type": "Update", "object.type": "Library"}, routes.inbox_update_library),
-        ({"type": "Delete", "object.type": "Library"}, routes.inbox_delete_library),
-        ({"type": "Delete", "object.type": "Audio"}, routes.inbox_delete_audio),
-        ({"type": "Undo", "object.type": "Follow"}, routes.inbox_undo_follow),
-        ({"type": "Update", "object.type": "Artist"}, routes.inbox_update_artist),
-        ({"type": "Update", "object.type": "Album"}, routes.inbox_update_album),
-        ({"type": "Update", "object.type": "Track"}, routes.inbox_update_track),
+        ({"type": "Create", "object": {"type": "Audio"}}, routes.inbox_create_audio),
+        (
+            {"type": "Update", "object": {"type": "Library"}},
+            routes.inbox_update_library,
+        ),
+        (
+            {"type": "Delete", "object": {"type": "Library"}},
+            routes.inbox_delete_library,
+        ),
+        ({"type": "Delete", "object": {"type": "Audio"}}, routes.inbox_delete_audio),
+        ({"type": "Undo", "object": {"type": "Follow"}}, routes.inbox_undo_follow),
+        ({"type": "Update", "object": {"type": "Artist"}}, routes.inbox_update_artist),
+        ({"type": "Update", "object": {"type": "Album"}}, routes.inbox_update_album),
+        ({"type": "Update", "object": {"type": "Track"}}, routes.inbox_update_track),
+        ({"type": "Delete", "object": {"type": "Person"}}, routes.inbox_delete_actor),
     ],
 )
 def test_inbox_routes(route, handler):
-    for r, h in routes.inbox.routes:
-        if r == route:
-            assert h == handler
-            return
-
-    assert False, "Inbox route {} not found".format(route)
+    matching = [
+        handler for r, handler in routes.inbox.routes if activity.match_route(r, route)
+    ]
+    assert len(matching) == 1, "Inbox route {} not found".format(route)
+    assert matching[0] == handler
 
 
 @pytest.mark.parametrize(
@@ -32,21 +45,41 @@ def test_inbox_routes(route, handler):
     [
         ({"type": "Accept"}, routes.outbox_accept),
         ({"type": "Follow"}, routes.outbox_follow),
-        ({"type": "Create", "object.type": "Audio"}, routes.outbox_create_audio),
-        ({"type": "Update", "object.type": "Library"}, routes.outbox_update_library),
-        ({"type": "Delete", "object.type": "Library"}, routes.outbox_delete_library),
-        ({"type": "Delete", "object.type": "Audio"}, routes.outbox_delete_audio),
-        ({"type": "Undo", "object.type": "Follow"}, routes.outbox_undo_follow),
-        ({"type": "Update", "object.type": "Track"}, routes.outbox_update_track),
+        ({"type": "Create", "object": {"type": "Audio"}}, routes.outbox_create_audio),
+        (
+            {"type": "Update", "object": {"type": "Library"}},
+            routes.outbox_update_library,
+        ),
+        (
+            {"type": "Delete", "object": {"type": "Library"}},
+            routes.outbox_delete_library,
+        ),
+        ({"type": "Delete", "object": {"type": "Audio"}}, routes.outbox_delete_audio),
+        ({"type": "Undo", "object": {"type": "Follow"}}, routes.outbox_undo_follow),
+        ({"type": "Update", "object": {"type": "Track"}}, routes.outbox_update_track),
+        (
+            {"type": "Delete", "object": {"type": "Tombstone"}},
+            routes.outbox_delete_actor,
+        ),
+        ({"type": "Delete", "object": {"type": "Person"}}, routes.outbox_delete_actor),
+        ({"type": "Delete", "object": {"type": "Service"}}, routes.outbox_delete_actor),
+        (
+            {"type": "Delete", "object": {"type": "Application"}},
+            routes.outbox_delete_actor,
+        ),
+        ({"type": "Delete", "object": {"type": "Group"}}, routes.outbox_delete_actor),
+        (
+            {"type": "Delete", "object": {"type": "Organization"}},
+            routes.outbox_delete_actor,
+        ),
     ],
 )
 def test_outbox_routes(route, handler):
-    for r, h in routes.outbox.routes:
-        if r == route:
-            assert h == handler
-            return
-
-    assert False, "Outbox route {} not found".format(route)
+    matching = [
+        handler for r, handler in routes.outbox.routes if activity.match_route(r, route)
+    ]
+    assert len(matching) == 1, "Outbox route {} not found".format(route)
+    assert matching[0] == handler
 
 
 def test_inbox_follow_library_autoapprove(factories, mocker):
@@ -559,3 +592,60 @@ def test_outbox_update_track(factories):
 
     assert dict(activity["payload"]) == dict(expected)
     assert activity["actor"] == actors.get_service_actor()
+
+
+def test_outbox_delete_actor(factories):
+    user = factories["users.User"]()
+    actor = user.create_actor()
+
+    activity = list(routes.outbox_delete_actor({"actor": actor}))[0]
+    expected = serializers.ActivitySerializer(
+        {"type": "Delete", "object": {"id": actor.fid, "type": actor.type}}
+    ).data
+
+    expected["to"] = [contexts.AS.Public, {"type": "instances_with_followers"}]
+
+    assert dict(activity["payload"]) == dict(expected)
+    assert activity["actor"] == actor
+
+
+def test_inbox_delete_actor(factories):
+    remote_actor = factories["federation.Actor"]()
+    serializer = serializers.ActivitySerializer(
+        {
+            "type": "Delete",
+            "object": {"type": remote_actor.type, "id": remote_actor.fid},
+        }
+    )
+    routes.inbox_delete_actor(
+        serializer.data, context={"actor": remote_actor, "raise_exception": True}
+    )
+    with pytest.raises(remote_actor.__class__.DoesNotExist):
+        remote_actor.refresh_from_db()
+
+
+def test_inbox_delete_actor_only_works_on_self(factories):
+    remote_actor1 = factories["federation.Actor"]()
+    remote_actor2 = factories["federation.Actor"]()
+    serializer = serializers.ActivitySerializer(
+        {
+            "type": "Delete",
+            "object": {"type": remote_actor2.type, "id": remote_actor2.fid},
+        }
+    )
+    routes.inbox_delete_actor(
+        serializer.data, context={"actor": remote_actor1, "raise_exception": True}
+    )
+    remote_actor2.refresh_from_db()
+
+
+def test_inbox_delete_actor_doesnt_delete_local_actor(factories):
+    local_actor = factories["users.User"]().create_actor()
+    serializer = serializers.ActivitySerializer(
+        {"type": "Delete", "object": {"type": local_actor.type, "id": local_actor.fid}}
+    )
+    routes.inbox_delete_actor(
+        serializer.data, context={"actor": local_actor, "raise_exception": True}
+    )
+    # actor should still be here!
+    local_actor.refresh_from_db()
diff --git a/api/tests/federation/test_serializers.py b/api/tests/federation/test_serializers.py
index 43b465d5480fa0096ea8fcc99e889fdde3826a0e..a0b773fb4e0fca9de1df66dacfa97509001052ef 100644
--- a/api/tests/federation/test_serializers.py
+++ b/api/tests/federation/test_serializers.py
@@ -559,7 +559,7 @@ def test_music_library_serializer_from_private(factories, mocker):
 
 
 def test_activity_pub_artist_serializer_to_ap(factories):
-    artist = factories["music.Artist"](attributed=True)
+    artist = factories["music.Artist"](attributed=True, set_tags=["Punk", "Rock"])
     expected = {
         "@context": jsonld.get_default_context(),
         "type": "Artist",
@@ -568,6 +568,10 @@ def test_activity_pub_artist_serializer_to_ap(factories):
         "musicbrainzId": artist.mbid,
         "published": artist.creation_date.isoformat(),
         "attributedTo": artist.attributed_to.fid,
+        "tag": [
+            {"type": "Hashtag", "name": "#Punk"},
+            {"type": "Hashtag", "name": "#Rock"},
+        ],
     }
     serializer = serializers.ArtistSerializer(artist)
 
@@ -575,7 +579,7 @@ def test_activity_pub_artist_serializer_to_ap(factories):
 
 
 def test_activity_pub_album_serializer_to_ap(factories):
-    album = factories["music.Album"](attributed=True)
+    album = factories["music.Album"](attributed=True, set_tags=["Punk", "Rock"])
 
     expected = {
         "@context": jsonld.get_default_context(),
@@ -596,6 +600,10 @@ def test_activity_pub_album_serializer_to_ap(factories):
             ).data
         ],
         "attributedTo": album.attributed_to.fid,
+        "tag": [
+            {"type": "Hashtag", "name": "#Punk"},
+            {"type": "Hashtag", "name": "#Rock"},
+        ],
     }
     serializer = serializers.AlbumSerializer(album)
 
@@ -604,7 +612,11 @@ def test_activity_pub_album_serializer_to_ap(factories):
 
 def test_activity_pub_track_serializer_to_ap(factories):
     track = factories["music.Track"](
-        license="cc-by-4.0", copyright="test", disc_number=3, attributed=True
+        license="cc-by-4.0",
+        copyright="test",
+        disc_number=3,
+        attributed=True,
+        set_tags=["Punk", "Rock"],
     )
     expected = {
         "@context": jsonld.get_default_context(),
@@ -626,6 +638,10 @@ def test_activity_pub_track_serializer_to_ap(factories):
             track.album, context={"include_ap_context": False}
         ).data,
         "attributedTo": track.attributed_to.fid,
+        "tag": [
+            {"type": "Hashtag", "name": "#Punk"},
+            {"type": "Hashtag", "name": "#Rock"},
+        ],
     }
     serializer = serializers.TrackSerializer(track)
 
@@ -633,6 +649,7 @@ def test_activity_pub_track_serializer_to_ap(factories):
 
 
 def test_activity_pub_track_serializer_from_ap(factories, r_mock, mocker):
+    add_tags = mocker.patch("funkwhale_api.tags.models.add_tags")
     track_attributed_to = factories["federation.Actor"]()
     album_attributed_to = factories["federation.Actor"]()
     album_artist_attributed_to = factories["federation.Actor"]()
@@ -664,6 +681,7 @@ def test_activity_pub_track_serializer_from_ap(factories, r_mock, mocker):
                 "href": "https://cover.image/test.png",
                 "mediaType": "image/png",
             },
+            "tag": [{"type": "Hashtag", "name": "AlbumTag"}],
             "artists": [
                 {
                     "type": "Artist",
@@ -672,6 +690,7 @@ def test_activity_pub_track_serializer_from_ap(factories, r_mock, mocker):
                     "musicbrainzId": str(uuid.uuid4()),
                     "published": published.isoformat(),
                     "attributedTo": album_artist_attributed_to.fid,
+                    "tag": [{"type": "Hashtag", "name": "AlbumArtistTag"}],
                 }
             ],
         },
@@ -683,8 +702,13 @@ def test_activity_pub_track_serializer_from_ap(factories, r_mock, mocker):
                 "musicbrainzId": str(uuid.uuid4()),
                 "attributedTo": artist_attributed_to.fid,
                 "published": published.isoformat(),
+                "tag": [{"type": "Hashtag", "name": "ArtistTag"}],
             }
         ],
+        "tag": [
+            {"type": "Hashtag", "name": "#Hello"},
+            {"type": "Hashtag", "name": "World"},
+        ],
     }
     r_mock.get(data["album"]["cover"]["href"], body=io.BytesIO(b"coucou"))
     serializer = serializers.TrackSerializer(data=data, context={"activity": activity})
@@ -728,6 +752,51 @@ def test_activity_pub_track_serializer_from_ap(factories, r_mock, mocker):
     assert album_artist.creation_date == published
     assert album_artist.attributed_to == album_artist_attributed_to
 
+    add_tags.assert_any_call(track, *["Hello", "World"])
+    add_tags.assert_any_call(album, *["AlbumTag"])
+    add_tags.assert_any_call(album_artist, *["AlbumArtistTag"])
+    add_tags.assert_any_call(artist, *["ArtistTag"])
+
+
+def test_activity_pub_track_serializer_from_ap_update(factories, r_mock, mocker):
+    set_tags = mocker.patch("funkwhale_api.tags.models.set_tags")
+    track_attributed_to = factories["federation.Actor"]()
+    track = factories["music.Track"]()
+
+    published = timezone.now()
+    data = {
+        "@context": jsonld.get_default_context(),
+        "type": "Track",
+        "id": track.fid,
+        "published": published.isoformat(),
+        "musicbrainzId": str(uuid.uuid4()),
+        "name": "Black in back",
+        "position": 5,
+        "disc": 2,
+        "attributedTo": track_attributed_to.fid,
+        "album": serializers.AlbumSerializer(track.album).data,
+        "artists": [serializers.ArtistSerializer(track.artist).data],
+        "tag": [
+            {"type": "Hashtag", "name": "#Hello"},
+            # Ensure we can handle tags without a leading #
+            {"type": "Hashtag", "name": "World"},
+        ],
+    }
+    serializer = serializers.TrackSerializer(track, data=data)
+    assert serializer.is_valid(raise_exception=True)
+
+    serializer.save()
+    track.refresh_from_db()
+
+    assert track.fid == data["id"]
+    assert track.title == data["name"]
+    assert track.position == data["position"]
+    assert track.disc_number == data["disc"]
+    assert track.attributed_to == track_attributed_to
+    assert str(track.mbid) == data["musicbrainzId"]
+
+    set_tags.assert_called_once_with(track, *["Hello", "World"])
+
 
 def test_activity_pub_upload_serializer_from_ap(factories, mocker, r_mock):
     activity = factories["federation.Activity"]()
diff --git a/api/tests/federation/test_utils.py b/api/tests/federation/test_utils.py
index 9aa850728ef969ee8a7e764050e3846650d21358..83c5e4f7e03d8b761482f7aa4b7232deaecff36f 100644
--- a/api/tests/federation/test_utils.py
+++ b/api/tests/federation/test_utils.py
@@ -72,6 +72,32 @@ def test_retrieve_ap_object_honor_instance_policy_domain(factories):
         utils.retrieve_ap_object(fid, actor=None)
 
 
+def test_retrieve_ap_object_honor_mrf_inbox_before_http(
+    mrf_inbox_registry, factories, mocker
+):
+    apply = mocker.patch.object(mrf_inbox_registry, "apply", return_value=(None, False))
+    fid = "http://domain/test"
+    with pytest.raises(exceptions.BlockedActorOrDomain):
+        utils.retrieve_ap_object(fid, actor=None)
+
+    apply.assert_called_once_with({"id": fid})
+
+
+def test_retrieve_ap_object_honor_mrf_inbox_after_http(
+    r_mock, mrf_inbox_registry, factories, mocker
+):
+    apply = mocker.patch.object(
+        mrf_inbox_registry, "apply", side_effect=[(True, False), (None, False)]
+    )
+    payload = {"id": "http://domain/test", "actor": "hello"}
+    r_mock.get(payload["id"], json=payload)
+    with pytest.raises(exceptions.BlockedActorOrDomain):
+        utils.retrieve_ap_object(payload["id"], actor=None)
+
+    apply.assert_any_call({"id": payload["id"]})
+    apply.assert_any_call(payload)
+
+
 def test_retrieve_ap_object_honor_instance_policy_different_url_and_id(
     r_mock, factories
 ):
diff --git a/api/tests/federation/test_views.py b/api/tests/federation/test_views.py
index 93ce05b8ebde3b88cbd1c5528ce4db6579256d7f..51d8e79a93f76d3696b27a6d77bfd9d93476f851 100644
--- a/api/tests/federation/test_views.py
+++ b/api/tests/federation/test_views.py
@@ -5,6 +5,20 @@ from django.urls import reverse
 from funkwhale_api.federation import actors, serializers, webfinger
 
 
+def test_authenticate_skips_anonymous_fetch_when_allow_list_enabled(
+    preferences, api_client
+):
+    preferences["moderation__allow_list_enabled"] = True
+    actor = actors.get_service_actor()
+    url = reverse(
+        "federation:actors-detail",
+        kwargs={"preferred_username": actor.preferred_username},
+    )
+    response = api_client.get(url)
+
+    assert response.status_code == 403
+
+
 def test_wellknown_webfinger_validates_resource(db, api_client, settings, mocker):
     clean = mocker.spy(webfinger, "clean_resource")
     url = reverse("federation:well-known-webfinger")
diff --git a/api/tests/history/test_serializers.py b/api/tests/history/test_serializers.py
new file mode 100644
index 0000000000000000000000000000000000000000..170b44d6b11fa62b650f6f4a932db26b68873b6a
--- /dev/null
+++ b/api/tests/history/test_serializers.py
@@ -0,0 +1,20 @@
+from funkwhale_api.federation import serializers as federation_serializers
+from funkwhale_api.history import serializers
+from funkwhale_api.music import serializers as music_serializers
+from funkwhale_api.users import serializers as users_serializers
+
+
+def test_listening_serializer(factories, to_api_date):
+    listening = factories["history.Listening"]()
+    actor = listening.user.create_actor()
+
+    expected = {
+        "id": listening.pk,
+        "creation_date": to_api_date(listening.creation_date),
+        "track": music_serializers.TrackSerializer(listening.track).data,
+        "actor": federation_serializers.APIActorSerializer(actor).data,
+        "user": users_serializers.UserBasicSerializer(listening.user).data,
+    }
+    serializer = serializers.ListeningSerializer(listening)
+
+    assert serializer.data == expected
diff --git a/api/tests/instance/test_nodeinfo.py b/api/tests/instance/test_nodeinfo.py
index 233b388d43895ed3138c22126d48210ef520a47a..2e9075d2667d3e4f3d8d55ae54c350fadb99e9fb 100644
--- a/api/tests/instance/test_nodeinfo.py
+++ b/api/tests/instance/test_nodeinfo.py
@@ -1,11 +1,21 @@
+import pytest
+
 import funkwhale_api
 from funkwhale_api.instance import nodeinfo
 from funkwhale_api.federation import actors
+from funkwhale_api.federation import utils as federation_utils
 from funkwhale_api.music import utils as music_utils
 
 
-def test_nodeinfo_dump(preferences, mocker):
+def test_nodeinfo_dump(preferences, mocker, avatar):
+    preferences["instance__banner"] = avatar
     preferences["instance__nodeinfo_stats_enabled"] = True
+    preferences["moderation__unauthenticated_report_types"] = [
+        "takedown_request",
+        "other",
+        "other_category_that_doesnt_exist",
+    ]
+
     stats = {
         "users": {"total": 1, "active_halfyear": 12, "active_month": 13},
         "tracks": 2,
@@ -30,6 +40,11 @@ def test_nodeinfo_dump(preferences, mocker):
             "shortDescription": preferences["instance__short_description"],
             "longDescription": preferences["instance__long_description"],
             "nodeName": preferences["instance__name"],
+            "rules": preferences["instance__rules"],
+            "contactEmail": preferences["instance__contact_email"],
+            "defaultUploadQuota": preferences["users__upload_quota"],
+            "terms": preferences["instance__terms"],
+            "banner": federation_utils.full_url(preferences["instance__banner"].url),
             "library": {
                 "federationEnabled": preferences["federation__enabled"],
                 "federationNeedsApproval": preferences[
@@ -48,6 +63,34 @@ def test_nodeinfo_dump(preferences, mocker):
                 "listenings": {"total": stats["listenings"]},
             },
             "supportedUploadExtensions": music_utils.SUPPORTED_EXTENSIONS,
+            "allowList": {"enabled": False, "domains": None},
+            "reportTypes": [
+                {
+                    "type": "takedown_request",
+                    "label": "Takedown request",
+                    "anonymous": True,
+                },
+                {
+                    "type": "invalid_metadata",
+                    "label": "Invalid metadata",
+                    "anonymous": False,
+                },
+                {
+                    "type": "illegal_content",
+                    "label": "Illegal content",
+                    "anonymous": False,
+                },
+                {
+                    "type": "offensive_content",
+                    "label": "Offensive content",
+                    "anonymous": False,
+                },
+                {"type": "other", "label": "Other", "anonymous": True},
+            ],
+            "funkwhaleSupportMessageEnabled": preferences[
+                "instance__funkwhale_support_message_enabled"
+            ],
+            "instanceSupportMessage": preferences["instance__support_message"],
         },
     }
     assert nodeinfo.get() == expected
@@ -55,6 +98,10 @@ def test_nodeinfo_dump(preferences, mocker):
 
 def test_nodeinfo_dump_stats_disabled(preferences, mocker):
     preferences["instance__nodeinfo_stats_enabled"] = False
+    preferences["moderation__unauthenticated_report_types"] = [
+        "takedown_request",
+        "other",
+    ]
 
     expected = {
         "version": "2.0",
@@ -69,6 +116,11 @@ def test_nodeinfo_dump_stats_disabled(preferences, mocker):
             "shortDescription": preferences["instance__short_description"],
             "longDescription": preferences["instance__long_description"],
             "nodeName": preferences["instance__name"],
+            "rules": preferences["instance__rules"],
+            "contactEmail": preferences["instance__contact_email"],
+            "defaultUploadQuota": preferences["users__upload_quota"],
+            "terms": preferences["instance__terms"],
+            "banner": None,
             "library": {
                 "federationEnabled": preferences["federation__enabled"],
                 "federationNeedsApproval": preferences[
@@ -79,6 +131,52 @@ def test_nodeinfo_dump_stats_disabled(preferences, mocker):
                 ],
             },
             "supportedUploadExtensions": music_utils.SUPPORTED_EXTENSIONS,
+            "allowList": {"enabled": False, "domains": None},
+            "reportTypes": [
+                {
+                    "type": "takedown_request",
+                    "label": "Takedown request",
+                    "anonymous": True,
+                },
+                {
+                    "type": "invalid_metadata",
+                    "label": "Invalid metadata",
+                    "anonymous": False,
+                },
+                {
+                    "type": "illegal_content",
+                    "label": "Illegal content",
+                    "anonymous": False,
+                },
+                {
+                    "type": "offensive_content",
+                    "label": "Offensive content",
+                    "anonymous": False,
+                },
+                {"type": "other", "label": "Other", "anonymous": True},
+            ],
+            "funkwhaleSupportMessageEnabled": preferences[
+                "instance__funkwhale_support_message_enabled"
+            ],
+            "instanceSupportMessage": preferences["instance__support_message"],
         },
     }
     assert nodeinfo.get() == expected
+
+
+@pytest.mark.parametrize(
+    "enabled, public, expected",
+    [
+        (True, True, {"enabled": True, "domains": ["allowed.example"]}),
+        (True, False, {"enabled": True, "domains": None}),
+        (False, False, {"enabled": False, "domains": None}),
+    ],
+)
+def test_nodeinfo_allow_list_enabled(preferences, factories, enabled, public, expected):
+    preferences["moderation__allow_list_enabled"] = enabled
+    preferences["moderation__allow_list_public"] = public
+    factories["federation.Domain"](name="allowed.example", allowed=True)
+    factories["federation.Domain"](allowed=False)
+    factories["federation.Domain"](allowed=None)
+
+    assert nodeinfo.get()["metadata"]["allowList"] == expected
diff --git a/api/tests/instance/test_preferences.py b/api/tests/instance/test_preferences.py
index b465be9d38571bef6513204922001b6c3dd869b1..06d1024fbd6f465ef98c79b9cecc8dbdc61260c1 100644
--- a/api/tests/instance/test_preferences.py
+++ b/api/tests/instance/test_preferences.py
@@ -34,3 +34,13 @@ def test_instance_settings(pref, value, preferences):
     preferences[pref] = value
 
     assert preferences[pref] == value
+
+
+def test_instance_banner_assign_file_properly(preferences, avatar):
+    preferences["instance__banner"] = avatar
+
+    avatar.seek(0)
+    banner = preferences["instance__banner"].read()
+
+    assert len(banner) > 0
+    assert banner == avatar.read()
diff --git a/api/tests/manage/test_serializers.py b/api/tests/manage/test_serializers.py
index 65c75c2c331cc013761d3ee00c22a985e21c2b21..d8a2ee8f9e6263837b123f1c72474b7d9254e0d6 100644
--- a/api/tests/manage/test_serializers.py
+++ b/api/tests/manage/test_serializers.py
@@ -39,18 +39,19 @@ def test_user_update_permission(factories):
     assert user.permission_settings is False
 
 
-def test_manage_domain_serializer(factories, now):
+def test_manage_domain_serializer(factories, now, to_api_date):
     domain = factories["federation.Domain"](nodeinfo_fetch_date=None)
     setattr(domain, "actors_count", 42)
     setattr(domain, "outbox_activities_count", 23)
     expected = {
         "name": domain.name,
-        "creation_date": domain.creation_date.isoformat().split("+")[0] + "Z",
+        "creation_date": to_api_date(domain.creation_date),
         "actors_count": 42,
         "outbox_activities_count": 23,
         "nodeinfo": {},
         "nodeinfo_fetch_date": None,
         "instance_policy": None,
+        "allowed": None,
     }
     s = serializers.ManageDomainSerializer(domain)
 
@@ -64,14 +65,14 @@ def test_manage_domain_serializer_validates_hostname(db):
         s.is_valid(raise_exception=True)
 
 
-def test_manage_actor_serializer(factories, now):
+def test_manage_actor_serializer(factories, now, to_api_date):
     actor = factories["federation.Actor"]()
     setattr(actor, "uploads_count", 66)
     expected = {
         "id": actor.id,
         "name": actor.name,
-        "creation_date": actor.creation_date.isoformat().split("+")[0] + "Z",
-        "last_fetch_date": actor.last_fetch_date.isoformat().split("+")[0] + "Z",
+        "creation_date": to_api_date(actor.creation_date),
+        "last_fetch_date": to_api_date(actor.last_fetch_date),
         "uploads_count": 66,
         "fid": actor.fid,
         "url": actor.url,
@@ -86,6 +87,7 @@ def test_manage_actor_serializer(factories, now):
         "full_username": actor.full_username,
         "user": None,
         "instance_policy": None,
+        "is_local": False,
     }
     s = serializers.ManageActorSerializer(actor)
 
@@ -109,13 +111,15 @@ def test_manage_actor_serializer(factories, now):
         ),
     ],
 )
-def test_instance_policy_serializer_repr(factories, factory_kwargs, expected):
+def test_instance_policy_serializer_repr(
+    factories, factory_kwargs, expected, to_api_date
+):
     policy = factories["moderation.InstancePolicy"](block_all=True, **factory_kwargs)
 
     e = {
         "id": policy.id,
         "uuid": str(policy.uuid),
-        "creation_date": policy.creation_date.isoformat().split("+")[0] + "Z",
+        "creation_date": to_api_date(policy.creation_date),
         "actor": policy.actor.full_username,
         "block_all": True,
         "silence_activity": False,
@@ -175,6 +179,26 @@ def test_manage_domain_action_purge(factories, mocker):
     )
 
 
+def test_manage_domain_action_allow_list_add(factories, mocker):
+    domains = factories["federation.Domain"].create_batch(size=3, allowed=False)
+    s = serializers.ManageDomainActionSerializer(queryset=None)
+    s.handle_allow_list_add(domains[0].__class__.objects.all())
+
+    for domain in domains:
+        domain.refresh_from_db()
+        assert domain.allowed is True
+
+
+def test_manage_domain_action_allow_list_remove(factories, mocker):
+    domains = factories["federation.Domain"].create_batch(size=3, allowed=True)
+    s = serializers.ManageDomainActionSerializer(queryset=None)
+    s.handle_allow_list_remove(domains[0].__class__.objects.all())
+
+    for domain in domains:
+        domain.refresh_from_db()
+        assert domain.allowed is False
+
+
 @pytest.mark.parametrize(
     "param,expected_only", [("block_all", []), ("reject_media", ["media"])]
 )
@@ -259,7 +283,7 @@ def test_instance_policy_serializer_purges_target_actor(
     assert on_commit.call_count == 0
 
 
-def test_manage_artist_serializer(factories, now):
+def test_manage_artist_serializer(factories, now, to_api_date):
     artist = factories["music.Artist"](attributed=True)
     track = factories["music.Track"](artist=artist)
     album = factories["music.Album"](artist=artist)
@@ -270,19 +294,20 @@ def test_manage_artist_serializer(factories, now):
         "fid": artist.fid,
         "name": artist.name,
         "mbid": artist.mbid,
-        "creation_date": artist.creation_date.isoformat().split("+")[0] + "Z",
+        "creation_date": to_api_date(artist.creation_date),
         "albums": [serializers.ManageNestedAlbumSerializer(album).data],
         "tracks": [serializers.ManageNestedTrackSerializer(track).data],
         "attributed_to": serializers.ManageBaseActorSerializer(
             artist.attributed_to
         ).data,
+        "tags": [],
     }
     s = serializers.ManageArtistSerializer(artist)
 
     assert s.data == expected
 
 
-def test_manage_nested_track_serializer(factories, now):
+def test_manage_nested_track_serializer(factories, now, to_api_date):
     track = factories["music.Track"]()
     expected = {
         "id": track.id,
@@ -291,7 +316,7 @@ def test_manage_nested_track_serializer(factories, now):
         "fid": track.fid,
         "title": track.title,
         "mbid": track.mbid,
-        "creation_date": track.creation_date.isoformat().split("+")[0] + "Z",
+        "creation_date": to_api_date(track.creation_date),
         "position": track.position,
         "disc_number": track.disc_number,
         "copyright": track.copyright,
@@ -302,7 +327,7 @@ def test_manage_nested_track_serializer(factories, now):
     assert s.data == expected
 
 
-def test_manage_nested_album_serializer(factories, now):
+def test_manage_nested_album_serializer(factories, now, to_api_date):
     album = factories["music.Album"]()
     setattr(album, "tracks_count", 44)
     expected = {
@@ -312,7 +337,7 @@ def test_manage_nested_album_serializer(factories, now):
         "fid": album.fid,
         "title": album.title,
         "mbid": album.mbid,
-        "creation_date": album.creation_date.isoformat().split("+")[0] + "Z",
+        "creation_date": to_api_date(album.creation_date),
         "release_date": album.release_date.isoformat(),
         "cover": {
             "original": album.cover.url,
@@ -327,7 +352,7 @@ def test_manage_nested_album_serializer(factories, now):
     assert s.data == expected
 
 
-def test_manage_nested_artist_serializer(factories, now):
+def test_manage_nested_artist_serializer(factories, now, to_api_date):
     artist = factories["music.Artist"]()
     expected = {
         "id": artist.id,
@@ -336,14 +361,14 @@ def test_manage_nested_artist_serializer(factories, now):
         "fid": artist.fid,
         "name": artist.name,
         "mbid": artist.mbid,
-        "creation_date": artist.creation_date.isoformat().split("+")[0] + "Z",
+        "creation_date": to_api_date(artist.creation_date),
     }
     s = serializers.ManageNestedArtistSerializer(artist)
 
     assert s.data == expected
 
 
-def test_manage_album_serializer(factories, now):
+def test_manage_album_serializer(factories, now, to_api_date):
     album = factories["music.Album"](attributed=True)
     track = factories["music.Track"](album=album)
     expected = {
@@ -353,7 +378,7 @@ def test_manage_album_serializer(factories, now):
         "fid": album.fid,
         "title": album.title,
         "mbid": album.mbid,
-        "creation_date": album.creation_date.isoformat().split("+")[0] + "Z",
+        "creation_date": to_api_date(album.creation_date),
         "release_date": album.release_date.isoformat(),
         "cover": {
             "original": album.cover.url,
@@ -366,13 +391,14 @@ def test_manage_album_serializer(factories, now):
         "attributed_to": serializers.ManageBaseActorSerializer(
             album.attributed_to
         ).data,
+        "tags": [],
     }
     s = serializers.ManageAlbumSerializer(album)
 
     assert s.data == expected
 
 
-def test_manage_track_serializer(factories, now):
+def test_manage_track_serializer(factories, now, to_api_date):
     track = factories["music.Track"](attributed=True)
     setattr(track, "uploads_count", 44)
     expected = {
@@ -386,20 +412,21 @@ def test_manage_track_serializer(factories, now):
         "position": track.position,
         "copyright": track.copyright,
         "license": track.license,
-        "creation_date": track.creation_date.isoformat().split("+")[0] + "Z",
+        "creation_date": to_api_date(track.creation_date),
         "artist": serializers.ManageNestedArtistSerializer(track.artist).data,
         "album": serializers.ManageTrackAlbumSerializer(track.album).data,
         "attributed_to": serializers.ManageBaseActorSerializer(
             track.attributed_to
         ).data,
         "uploads_count": 44,
+        "tags": [],
     }
     s = serializers.ManageTrackSerializer(track)
 
     assert s.data == expected
 
 
-def test_manage_library_serializer(factories, now):
+def test_manage_library_serializer(factories, now, to_api_date):
     library = factories["music.Library"]()
     setattr(library, "followers_count", 42)
     setattr(library, "_uploads_count", 44)
@@ -414,7 +441,7 @@ def test_manage_library_serializer(factories, now):
         "name": library.name,
         "description": library.description,
         "privacy_level": library.privacy_level,
-        "creation_date": library.creation_date.isoformat().split("+")[0] + "Z",
+        "creation_date": to_api_date(library.creation_date),
         "actor": serializers.ManageBaseActorSerializer(library.actor).data,
         "uploads_count": 44,
         "followers_count": 42,
@@ -424,7 +451,7 @@ def test_manage_library_serializer(factories, now):
     assert s.data == expected
 
 
-def test_manage_upload_serializer(factories, now):
+def test_manage_upload_serializer(factories, now, to_api_date):
     upload = factories["music.Upload"]()
 
     expected = {
@@ -442,8 +469,8 @@ def test_manage_upload_serializer(factories, now):
         "source": upload.source,
         "filename": upload.filename,
         "metadata": upload.metadata,
-        "creation_date": upload.creation_date.isoformat().split("+")[0] + "Z",
-        "modification_date": upload.modification_date.isoformat().split("+")[0] + "Z",
+        "creation_date": to_api_date(upload.creation_date),
+        "modification_date": to_api_date(upload.modification_date),
         "accessed_date": None,
         "import_date": None,
         "import_metadata": upload.import_metadata,
@@ -466,6 +493,7 @@ def test_manage_upload_serializer(factories, now):
         ("music.Artist", serializers.ManageArtistActionSerializer),
         ("music.Library", serializers.ManageLibraryActionSerializer),
         ("music.Upload", serializers.ManageUploadActionSerializer),
+        ("tags.Tag", serializers.ManageTagActionSerializer),
     ],
 )
 def test_action_serializer_delete(factory, serializer_class, factories):
@@ -475,3 +503,68 @@ def test_action_serializer_delete(factory, serializer_class, factories):
     s.handle_delete(objects[0].__class__.objects.all())
 
     assert objects[0].__class__.objects.count() == 0
+
+
+def test_manage_tag_serializer(factories, to_api_date):
+    tag = factories["tags.Tag"]()
+
+    setattr(tag, "_tracks_count", 42)
+    setattr(tag, "_albums_count", 54)
+    setattr(tag, "_artists_count", 66)
+    expected = {
+        "id": tag.id,
+        "name": tag.name,
+        "creation_date": to_api_date(tag.creation_date),
+        "tracks_count": 42,
+        "albums_count": 54,
+        "artists_count": 66,
+    }
+    s = serializers.ManageTagSerializer(tag)
+
+    assert s.data == expected
+
+
+def test_manage_report_serializer(factories, to_api_date):
+    artist = factories["music.Artist"](attributed=True)
+    report = factories["moderation.Report"](
+        target=artist, target_state={"hello": "world"}, assigned=True
+    )
+    expected = {
+        "id": report.id,
+        "uuid": str(report.uuid),
+        "fid": report.fid,
+        "creation_date": to_api_date(report.creation_date),
+        "handled_date": None,
+        "summary": report.summary,
+        "is_handled": report.is_handled,
+        "type": report.type,
+        "submitter_email": None,
+        "submitter": serializers.ManageBaseActorSerializer(report.submitter).data,
+        "assigned_to": serializers.ManageBaseActorSerializer(report.assigned_to).data,
+        "target": {"type": "artist", "id": artist.pk},
+        "target_owner": serializers.ManageBaseActorSerializer(
+            artist.attributed_to
+        ).data,
+        "target_state": report.target_state,
+        "notes": [],
+    }
+    s = serializers.ManageReportSerializer(report)
+
+    assert s.data == expected
+
+
+def test_manage_note_serializer(factories, to_api_date):
+    actor = factories["federation.Actor"]()
+    note = factories["moderation.Note"](target=actor)
+
+    expected = {
+        "id": note.id,
+        "uuid": str(note.uuid),
+        "summary": note.summary,
+        "creation_date": to_api_date(note.creation_date),
+        "author": serializers.ManageBaseActorSerializer(note.author).data,
+        "target": {"type": "account", "full_username": actor.full_username},
+    }
+    s = serializers.ManageNoteSerializer(note)
+
+    assert s.data == expected
diff --git a/api/tests/manage/test_views.py b/api/tests/manage/test_views.py
index e3d136a0e841ab5e49c9dd782083d5f3b9c5cf2a..e1c698894049e84fbcf822f566b540dedae96141 100644
--- a/api/tests/manage/test_views.py
+++ b/api/tests/manage/test_views.py
@@ -73,6 +73,31 @@ def test_domain_create(superuser_api_client, mocker):
     update_domain_nodeinfo.assert_called_once_with(domain_name="test.federation")
 
 
+def test_domain_update_allowed(superuser_api_client, factories):
+    domain = factories["federation.Domain"]()
+    url = reverse("api:v1:manage:federation:domains-detail", kwargs={"pk": domain.name})
+    response = superuser_api_client.put(url, {"allowed": True})
+
+    assert response.status_code == 200
+    domain.refresh_from_db()
+    assert domain.allowed is True
+
+
+def test_domain_update_cannot_change_name(superuser_api_client, factories):
+    domain = factories["federation.Domain"]()
+    old_name = domain.name
+    url = reverse("api:v1:manage:federation:domains-detail", kwargs={"pk": old_name})
+    response = superuser_api_client.put(url, {"name": "something.else"})
+
+    domain.refresh_from_db()
+
+    assert response.status_code == 200
+    assert domain.name == old_name
+    # changing the pk of a model and saving results in a new DB entry in django,
+    # so we check that no other entry was created
+    assert domain.__class__.objects.count() == 1
+
+
 def test_domain_nodeinfo(factories, superuser_api_client, mocker):
     domain = factories["federation.Domain"]()
     url = reverse(
@@ -164,6 +189,7 @@ def test_artist_detail_stats(factories, superuser_api_client):
         "listenings": 0,
         "playlists": 0,
         "mutations": 0,
+        "reports": 0,
         "track_favorites": 0,
         "media_total_size": 0,
         "media_downloaded_size": 0,
@@ -213,6 +239,7 @@ def test_album_detail_stats(factories, superuser_api_client):
         "listenings": 0,
         "playlists": 0,
         "mutations": 0,
+        "reports": 0,
         "track_favorites": 0,
         "media_total_size": 0,
         "media_downloaded_size": 0,
@@ -259,6 +286,7 @@ def test_track_detail_stats(factories, superuser_api_client):
         "listenings": 0,
         "playlists": 0,
         "mutations": 0,
+        "reports": 0,
         "track_favorites": 0,
         "media_total_size": 0,
         "media_downloaded_size": 0,
@@ -297,6 +325,18 @@ def test_library_detail(factories, superuser_api_client):
     assert response.data["id"] == library.id
 
 
+def test_library_update(factories, superuser_api_client):
+    library = factories["music.Library"](privacy_level="public")
+    url = reverse(
+        "api:v1:manage:library:libraries-detail", kwargs={"uuid": library.uuid}
+    )
+    response = superuser_api_client.patch(url, {"privacy_level": "me"})
+
+    assert response.status_code == 200
+    library.refresh_from_db()
+    assert library.privacy_level == "me"
+
+
 def test_library_detail_stats(factories, superuser_api_client):
     library = factories["music.Library"]()
     url = reverse(
@@ -309,6 +349,7 @@ def test_library_detail_stats(factories, superuser_api_client):
         "tracks": 0,
         "albums": 0,
         "artists": 0,
+        "reports": 0,
         "media_total_size": 0,
         "media_downloaded_size": 0,
     }
@@ -352,3 +393,123 @@ def test_upload_delete(factories, superuser_api_client):
     response = superuser_api_client.delete(url)
 
     assert response.status_code == 204
+
+
+def test_note_create(factories, superuser_api_client):
+    actor = superuser_api_client.user.create_actor()
+    target = factories["federation.Actor"]()
+    data = {
+        "summary": "Hello",
+        "target": {"type": "account", "full_username": target.full_username},
+    }
+    url = reverse("api:v1:manage:moderation:notes-list")
+    response = superuser_api_client.post(url, data, format="json")
+    assert response.status_code == 201
+
+    note = actor.moderation_notes.latest("id")
+    assert note.target == target
+    assert response.data == serializers.ManageNoteSerializer(note).data
+
+
+def test_note_list(factories, superuser_api_client, settings):
+    note = factories["moderation.Note"]()
+    url = reverse("api:v1:manage:moderation:notes-list")
+    response = superuser_api_client.get(url)
+
+    assert response.status_code == 200
+
+    assert response.data["count"] == 1
+    assert response.data["results"][0] == serializers.ManageNoteSerializer(note).data
+
+
+def test_note_delete(factories, superuser_api_client):
+    note = factories["moderation.Note"]()
+    url = reverse("api:v1:manage:moderation:notes-detail", kwargs={"uuid": note.uuid})
+    response = superuser_api_client.delete(url)
+
+    assert response.status_code == 204
+
+
+def test_note_detail(factories, superuser_api_client):
+    note = factories["moderation.Note"]()
+    url = reverse("api:v1:manage:moderation:notes-detail", kwargs={"uuid": note.uuid})
+    response = superuser_api_client.get(url)
+
+    assert response.status_code == 200
+    assert response.data == serializers.ManageNoteSerializer(note).data
+
+
+def test_tag_detail(factories, superuser_api_client):
+    tag = factories["tags.Tag"]()
+    url = reverse("api:v1:manage:tags-detail", kwargs={"name": tag.name})
+    response = superuser_api_client.get(url)
+
+    assert response.status_code == 200
+    assert response.data["name"] == tag.name
+
+
+def test_tag_list(factories, superuser_api_client, settings):
+    tag = factories["tags.Tag"]()
+    url = reverse("api:v1:manage:tags-list")
+    response = superuser_api_client.get(url)
+
+    assert response.status_code == 200
+
+    assert response.data["count"] == 1
+    assert response.data["results"][0]["name"] == tag.name
+
+
+def test_tag_delete(factories, superuser_api_client):
+    tag = factories["tags.Tag"]()
+    url = reverse("api:v1:manage:tags-detail", kwargs={"name": tag.name})
+    response = superuser_api_client.delete(url)
+
+    assert response.status_code == 204
+
+
+def test_report_detail(factories, superuser_api_client):
+    report = factories["moderation.Report"]()
+    url = reverse(
+        "api:v1:manage:moderation:reports-detail", kwargs={"uuid": report.uuid}
+    )
+    response = superuser_api_client.get(url)
+
+    assert response.status_code == 200
+    assert response.data["summary"] == report.summary
+
+
+def test_report_list(factories, superuser_api_client, settings):
+    report = factories["moderation.Report"]()
+    url = reverse("api:v1:manage:moderation:reports-list")
+    response = superuser_api_client.get(url)
+
+    assert response.status_code == 200
+
+    assert response.data["count"] == 1
+    assert response.data["results"][0]["summary"] == report.summary
+
+
+def test_report_update(factories, superuser_api_client):
+    report = factories["moderation.Report"]()
+    url = reverse(
+        "api:v1:manage:moderation:reports-detail", kwargs={"uuid": report.uuid}
+    )
+    response = superuser_api_client.patch(url, {"is_handled": True})
+
+    assert response.status_code == 200
+    report.refresh_from_db()
+    assert report.is_handled is True
+
+
+def test_report_update_is_handled_true_assigns(factories, superuser_api_client):
+    actor = superuser_api_client.user.create_actor()
+    report = factories["moderation.Report"]()
+    url = reverse(
+        "api:v1:manage:moderation:reports-detail", kwargs={"uuid": report.uuid}
+    )
+    response = superuser_api_client.patch(url, {"is_handled": True})
+
+    assert response.status_code == 200
+    report.refresh_from_db()
+    assert report.is_handled is True
+    assert report.assigned_to == actor
diff --git a/api/tests/moderation/test_commands.py b/api/tests/moderation/test_commands.py
new file mode 100644
index 0000000000000000000000000000000000000000..9984983ba08bed9bde9fb9a1e1b6c9485984776f
--- /dev/null
+++ b/api/tests/moderation/test_commands.py
@@ -0,0 +1,77 @@
+import json
+
+from django.core.management import call_command
+
+
+def test_mrf_check_inbox_all(mocker, mrf_inbox_registry, tmpfile):
+    payload = {"hello": "world"}
+    tmpfile.write(json.dumps(payload).encode())
+    tmpfile.flush()
+    apply = mocker.spy(mrf_inbox_registry, "apply")
+    policy1 = mocker.Mock()
+    policy2 = mocker.Mock(return_value={"hello": "noop"})
+    mrf_inbox_registry.register(name="policy1")(policy1)
+    mrf_inbox_registry.register(name="policy2")(policy2)
+
+    call_command("mrf_check", "inbox", tmpfile.name)
+
+    apply.assert_called_once_with(payload, policies=[])
+    policy1.assert_called_once_with(payload)
+    policy2.assert_called_once_with(policy1.return_value)
+
+
+def test_mrf_check_inbox_list(mocker, mrf_inbox_registry):
+    apply = mocker.spy(mrf_inbox_registry, "apply")
+    policy1 = mocker.Mock()
+    policy2 = mocker.Mock(return_value={"hello": "noop"})
+    mrf_inbox_registry.register(name="policy1")(policy1)
+    mrf_inbox_registry.register(name="policy2")(policy2)
+
+    call_command("mrf_check", "inbox")
+
+    apply.assert_not_called()
+
+
+def test_mrf_check_inbox_restrict_policies(mocker, mrf_inbox_registry, tmpfile):
+    payload = {"hello": "world"}
+    tmpfile.write(json.dumps(payload).encode())
+    tmpfile.flush()
+    apply = mocker.spy(mrf_inbox_registry, "apply")
+    policy1 = mocker.Mock()
+    policy2 = mocker.Mock()
+    policy3 = mocker.Mock(return_value={"hello": "noop"})
+    mrf_inbox_registry.register(name="policy1")(policy1)
+    mrf_inbox_registry.register(name="policy2")(policy2)
+    mrf_inbox_registry.register(name="policy3")(policy3)
+
+    call_command("mrf_check", "inbox", tmpfile.name, policies=["policy1", "policy3"])
+
+    apply.assert_called_once_with(payload, policies=["policy1", "policy3"])
+    policy1.assert_called_once_with(payload)
+    policy2.assert_not_called()
+    policy3.assert_called_once_with(policy1.return_value)
+
+
+def test_mrf_check_inbox_db_activity(factories, mocker, mrf_inbox_registry):
+    payload = {"hello": "world"}
+    activity = factories["federation.Activity"](payload=payload)
+
+    policy1 = mocker.Mock(return_value={"hello": "noop"})
+    mrf_inbox_registry.register(name="policy1")(policy1)
+
+    call_command("mrf_check", "inbox", activity.uuid)
+
+    policy1.assert_called_once_with(payload)
+
+
+def test_mrf_check_inbox_url(r_mock, mocker, mrf_inbox_registry):
+    payload = {"hello": "world"}
+    url = "http://test.hello/path"
+    r_mock.get(url, json=payload)
+
+    policy1 = mocker.Mock(return_value={"hello": "noop"})
+    mrf_inbox_registry.register(name="policy1")(policy1)
+
+    call_command("mrf_check", "inbox", url)
+
+    policy1.assert_called_once_with(payload)
diff --git a/api/tests/moderation/test_models.py b/api/tests/moderation/test_models.py
new file mode 100644
index 0000000000000000000000000000000000000000..8c1de981fcddb72b711ea96920220b876c851a2e
--- /dev/null
+++ b/api/tests/moderation/test_models.py
@@ -0,0 +1,22 @@
+def test_setting_report_handled_to_true_sets_handled_date(factories, now):
+    target = factories["music.Artist"]()
+    report = factories["moderation.Report"](target=target)
+
+    assert report.is_handled is False
+    assert report.handled_date is None
+
+    report.is_handled = True
+    report.save()
+
+    assert report.handled_date == now
+
+
+def test_setting_report_handled_to_false_sets_handled_date_to_null(factories, now):
+    target = factories["music.Artist"]()
+    report = factories["moderation.Report"](
+        target=target, is_handled=True, handled_date=now
+    )
+    report.is_handled = False
+    report.save()
+
+    assert report.handled_date is None
diff --git a/api/tests/moderation/test_mrf.py b/api/tests/moderation/test_mrf.py
new file mode 100644
index 0000000000000000000000000000000000000000..15a4385a2491f1efeeddc6a9ea242013374346a4
--- /dev/null
+++ b/api/tests/moderation/test_mrf.py
@@ -0,0 +1,67 @@
+from funkwhale_api.moderation import mrf
+
+
+def test_mrf_inbox_registry_apply_empty(mrf_inbox_registry, mocker):
+    payload = {"hello": "world"}
+    new_payload, updated = mrf_inbox_registry.apply(payload)
+
+    assert new_payload == payload
+    assert updated is False
+
+
+def test_mrf_inbox_registry_apply_simple(mrf_inbox_registry, mocker):
+    rule = mocker.Mock(return_value="test")
+    payload = {"hello": "world"}
+    mrf_inbox_registry.register(rule, name="rule")
+
+    new_payload, updated = mrf_inbox_registry.apply(payload)
+
+    assert new_payload == "test"
+    assert updated is True
+
+
+def test_mrf_inbox_registry_apply_skipped(mrf_inbox_registry, mocker):
+    rule = mocker.Mock(side_effect=mrf.Skip())
+    payload = {"hello": "world"}
+    mrf_inbox_registry.register(rule, name="rule")
+
+    new_payload, updated = mrf_inbox_registry.apply(payload)
+
+    assert new_payload == payload
+    assert updated is False
+
+
+def test_mrf_inbox_registry_apply_discard(mrf_inbox_registry, mocker):
+    rule1 = mocker.Mock(return_value=None)
+    rule2 = mocker.Mock(side_effect=mrf.Discard())
+
+    mrf_inbox_registry.register(rule1, name="rule1")
+    mrf_inbox_registry.register(rule2, name="rule2")
+
+    payload = {"hello": "world"}
+    assert mrf_inbox_registry.apply(payload, arg1="value1") == (None, False)
+
+    rule1.assert_called_once_with(payload, arg1="value1")
+    rule2.assert_called_once_with(payload, arg1="value1")
+
+
+def test_mrf_inbox_registry_use_returned_payload(mrf_inbox_registry, mocker):
+    rule1 = mocker.Mock(return_value="payload1")
+    rule2 = mocker.Mock(return_value="payload2")
+
+    mrf_inbox_registry.register(rule1, name="rule1")
+    mrf_inbox_registry.register(rule2, name="rule2")
+
+    payload = {"hello": "world"}
+
+    assert mrf_inbox_registry.apply(payload) == ("payload2", True)
+    rule1.assert_called_once_with(payload)
+    rule2.assert_called_once_with("payload1")
+
+
+def test_mrf_inbox_registry_skip_errors(mrf_inbox_registry, mocker):
+    rule1 = mocker.Mock(side_effect=Exception())
+
+    mrf_inbox_registry.register(rule1, name="rule1")
+
+    assert mrf_inbox_registry.apply("payload") == ("payload", False)
diff --git a/api/tests/moderation/test_mrf_policies.py b/api/tests/moderation/test_mrf_policies.py
new file mode 100644
index 0000000000000000000000000000000000000000..877123e6ba0127206fa276fa45f8a5a2f365b484
--- /dev/null
+++ b/api/tests/moderation/test_mrf_policies.py
@@ -0,0 +1,63 @@
+import pytest
+
+from funkwhale_api.moderation import mrf
+from funkwhale_api.moderation import mrf_policies
+
+
+@pytest.mark.parametrize(
+    "enabled, payload, kwargs, allowed_domains, expected",
+    [
+        # allow listing enabled, domain on allowed list -> nothing happens
+        (
+            True,
+            {"id": "http://allowed.example"},
+            {"sender_id": "http://allowed.example/actor"},
+            ["allowed.example"],
+            None,
+        ),
+        # allow listing enabled, domain NOT on allowed list -> message discarded
+        (
+            True,
+            {"id": "http://notallowed.example"},
+            {"sender_id": "http://notallowed.example/actor"},
+            ["allowed.example"],
+            mrf.Discard,
+        ),
+        # allow listing disabled -> policy skipped
+        (
+            False,
+            {"id": "http://allowed.example"},
+            {"sender_id": "http://allowed.example/actor"},
+            [],
+            mrf.Skip,
+        ),
+        # multiple domains to check, one is not allowed -> message discarded
+        (
+            True,
+            {"id": "http://allowed.example"},
+            {"sender_id": "http://notallowed.example/actor"},
+            ["allowed.example"],
+            mrf.Discard,
+        ),
+        # multiple domains to check, all allowed -> nothing happens
+        (
+            True,
+            {"id": "http://allowed.example"},
+            {"sender_id": "http://anotherallowed.example/actor"},
+            ["allowed.example", "anotherallowed.example"],
+            None,
+        ),
+    ],
+)
+def test_allow_list_policy(
+    enabled, payload, kwargs, expected, allowed_domains, preferences, factories
+):
+    preferences["moderation__allow_list_enabled"] = enabled
+    for d in allowed_domains:
+        factories["federation.Domain"](name=d, allowed=True)
+
+    if expected:
+        with pytest.raises(expected):
+            mrf_policies.check_allow_list(payload, **kwargs)
+    else:
+        assert mrf_policies.check_allow_list(payload, **kwargs) == expected
diff --git a/api/tests/moderation/test_serializers.py b/api/tests/moderation/test_serializers.py
index a38214143db36f97aa349f712681a3dab2fcbf1b..01cb323eee220050e5afdcd3868972d94d14dea2 100644
--- a/api/tests/moderation/test_serializers.py
+++ b/api/tests/moderation/test_serializers.py
@@ -1,4 +1,13 @@
+import json
+import pytest
+import urllib.parse
+
+from django.core.serializers.json import DjangoJSONEncoder
+
+from funkwhale_api.common import utils as common_utils
+from funkwhale_api.federation import models as federation_models
 from funkwhale_api.moderation import serializers
+from funkwhale_api.moderation import signals
 
 
 def test_user_filter_serializer_repr(factories):
@@ -28,3 +37,221 @@ def test_user_filter_serializer_save(factories):
     content_filter = serializer.save(user=user)
 
     assert content_filter.target_artist == artist
+
+
+@pytest.mark.parametrize(
+    "factory_name, target_type, id_field, state_serializer",
+    [
+        ("music.Artist", "artist", "id", serializers.ArtistStateSerializer),
+        ("music.Album", "album", "id", serializers.AlbumStateSerializer),
+        ("music.Track", "track", "id", serializers.TrackStateSerializer),
+        ("music.Library", "library", "uuid", serializers.LibraryStateSerializer),
+        (
+            "federation.Actor",
+            "account",
+            "full_username",
+            serializers.ActorStateSerializer,
+        ),
+    ],
+)
+def test_report_federated_entity_serializer_save(
+    factory_name, target_type, id_field, state_serializer, factories, mocker, settings
+):
+    target = factories[factory_name]()
+    target_owner = factories["federation.Actor"]()
+    submitter = factories["federation.Actor"]()
+    target_data = {"type": target_type, id_field: getattr(target, id_field)}
+    payload = {
+        "summary": "Report content",
+        "type": "illegal_content",
+        "target": target_data,
+    }
+    serializer = serializers.ReportSerializer(
+        data=payload, context={"submitter": submitter}
+    )
+    get_target_owner = mocker.patch.object(
+        serializers, "get_target_owner", return_value=target_owner
+    )
+    assert serializer.is_valid(raise_exception=True) is True
+
+    report = serializer.save()
+
+    expected_state = state_serializer(target).data
+    expected_state["_target"] = json.loads(
+        json.dumps(target_data, cls=DjangoJSONEncoder)
+    )
+    expected_state["domain"] = urllib.parse.urlparse(target.fid).hostname
+    expected_state["is_local"] = (
+        expected_state["domain"] == settings.FEDERATION_HOSTNAME
+    )
+
+    assert report.target == target
+    assert report.type == payload["type"]
+    assert report.summary == payload["summary"]
+    assert report.target_state == expected_state
+    assert report.target_owner == target_owner
+    get_target_owner.assert_called_once_with(target)
+
+
+@pytest.mark.parametrize(
+    "factory_name, target_type, id_field, state_serializer",
+    [("playlists.Playlist", "playlist", "id", serializers.PlaylistStateSerializer)],
+)
+def test_report_local_entity_serializer_save(
+    factory_name, target_type, id_field, state_serializer, factories, mocker, settings
+):
+    target = factories[factory_name]()
+    target_owner = factories["federation.Actor"]()
+    submitter = factories["federation.Actor"]()
+    target_data = {"type": target_type, id_field: getattr(target, id_field)}
+    payload = {
+        "summary": "Report content",
+        "type": "illegal_content",
+        "target": target_data,
+    }
+    serializer = serializers.ReportSerializer(
+        data=payload, context={"submitter": submitter}
+    )
+    get_target_owner = mocker.patch.object(
+        serializers, "get_target_owner", return_value=target_owner
+    )
+    assert serializer.is_valid(raise_exception=True) is True
+
+    report = serializer.save()
+
+    expected_state = state_serializer(target).data
+    expected_state["_target"] = json.loads(
+        json.dumps(target_data, cls=DjangoJSONEncoder)
+    )
+    expected_state["is_local"] = True
+    assert report.target == target
+    assert report.type == payload["type"]
+    assert report.summary == payload["summary"]
+    assert report.target_state == expected_state
+    assert report.target_owner == target_owner
+    get_target_owner.assert_called_once_with(target)
+
+
+def test_report_serializer_save_anonymous(factories, mocker):
+    target = factories["music.Artist"]()
+    payload = {
+        "summary": "Report content",
+        "type": "illegal_content",
+        "target": {"type": "artist", "id": target.pk},
+        "submitter_email": "test@submitter.example",
+    }
+    serializer = serializers.ReportSerializer(data=payload)
+
+    assert serializer.is_valid(raise_exception=True) is True
+
+    report = serializer.save()
+
+    assert report.target == target
+    assert report.type == payload["type"]
+    assert report.summary == payload["summary"]
+    assert report.submitter_email == payload["submitter_email"]
+
+
+@pytest.mark.parametrize(
+    "factory_name, factory_kwargs, owner_field",
+    [
+        ("music.Artist", {"attributed": True}, "attributed_to"),
+        ("music.Album", {"attributed": True}, "attributed_to"),
+        ("music.Track", {"attributed": True}, "attributed_to"),
+        ("music.Library", {}, "actor"),
+        ("playlists.Playlist", {"user__with_actor": True}, "user.actor"),
+        ("federation.Actor", {}, "self"),
+    ],
+)
+def test_get_target_owner(factory_name, factory_kwargs, owner_field, factories):
+    target = factories[factory_name](**factory_kwargs)
+    if owner_field == "self":
+        expected_owner = target
+    else:
+        expected_owner = common_utils.recursive_getattr(target, owner_field)
+
+    assert isinstance(expected_owner, federation_models.Actor)
+    assert serializers.get_target_owner(target) == expected_owner
+
+
+def test_report_serializer_repr(factories, to_api_date):
+    target = factories["music.Artist"]()
+    report = factories["moderation.Report"](target=target)
+    expected = {
+        "uuid": str(report.uuid),
+        "summary": report.summary,
+        "type": report.type,
+        "target": {"type": "artist", "id": target.pk},
+        "creation_date": to_api_date(report.creation_date),
+        "handled_date": None,
+        "is_handled": False,
+        "submitter_email": None,
+    }
+    serializer = serializers.ReportSerializer(report)
+    assert serializer.data == expected
+
+
+@pytest.mark.parametrize(
+    "preference, context, payload, is_valid",
+    [
+        # anonymous reports not enabled for the category
+        (
+            ["illegal_content"],
+            {},
+            {"type": "other", "submitter_email": "hello@example.test"},
+            False,
+        ),
+        # anonymous reports enabled for the category, but invalid email
+        (["other"], {}, {"type": "other", "submitter_email": "hello@"}, False),
+        # anonymous reports enabled for the category, no email
+        (["other"], {}, {"type": "other"}, False),
+        # anonymous reports enabled for the category, actor object is empty
+        (["other"], {"submitter": None}, {"type": "other"}, False),
+        # valid examples
+        (
+            ["other"],
+            {},
+            {"type": "other", "submitter_email": "hello@example.test"},
+            True,
+        ),
+    ],
+)
+def test_report_serializer_save_unauthenticated_validation(
+    preference, context, payload, is_valid, factories, preferences
+):
+    preferences["moderation__unauthenticated_report_types"] = preference
+    target = factories["music.Artist"]()
+    target_data = {"type": "artist", "id": target.id}
+    payload["summary"] = "Test"
+    payload["target"] = target_data
+    serializer = serializers.ReportSerializer(data=payload, context=context)
+    assert serializer.is_valid() is is_valid
+
+
+def test_report_create_send_websocket_event(factories, mocker):
+    target = factories["music.Artist"]()
+    group_send = mocker.patch("funkwhale_api.common.channels.group_send")
+    report_created = mocker.spy(signals.report_created, "send")
+    payload = {
+        "summary": "Report content",
+        "type": "illegal_content",
+        "target": {"type": "artist", "id": target.pk},
+        "submitter_email": "test@submitter.example",
+    }
+    serializer = serializers.ReportSerializer(data=payload)
+
+    assert serializer.is_valid(raise_exception=True) is True
+    report = serializer.save()
+    report_created.assert_called_once_with(sender=None, report=report)
+    group_send.assert_called_with(
+        "admin.moderation",
+        {
+            "type": "event.send",
+            "text": "",
+            "data": {
+                "type": "report.created",
+                "report": serializer.data,
+                "unresolved_count": 1,
+            },
+        },
+    )
diff --git a/api/tests/moderation/test_tasks.py b/api/tests/moderation/test_tasks.py
new file mode 100644
index 0000000000000000000000000000000000000000..a4f2877998d42636456741a5b88f8f38151d1cc6
--- /dev/null
+++ b/api/tests/moderation/test_tasks.py
@@ -0,0 +1,48 @@
+from funkwhale_api.federation import utils as federation_utils
+
+from funkwhale_api.moderation import tasks
+
+
+def test_report_created_signal_calls_send_new_report_mail(factories, mocker):
+    report = factories["moderation.Report"]()
+    on_commit = mocker.patch("funkwhale_api.common.utils.on_commit")
+    tasks.signals.report_created.send(sender=None, report=report)
+    on_commit.assert_called_once_with(
+        tasks.send_new_report_email_to_moderators.delay, report_id=report.pk
+    )
+
+
+def test_report_created_signal_sends_email_to_mods(factories, mailoutbox, settings):
+    mod1 = factories["users.User"](permission_moderation=True)
+    mod2 = factories["users.User"](permission_moderation=True)
+    # inactive, so no email
+    factories["users.User"](permission_moderation=True, is_active=False)
+    # no moderation permission, so no email
+    factories["users.User"]()
+
+    report = factories["moderation.Report"]()
+
+    tasks.send_new_report_email_to_moderators(report_id=report.pk)
+
+    detail_url = federation_utils.full_url(
+        "/manage/moderation/reports/{}".format(report.uuid)
+    )
+    unresolved_reports_url = federation_utils.full_url(
+        "/manage/moderation/reports?q=resolved:no"
+    )
+    assert len(mailoutbox) == 2
+    for i, mod in enumerate([mod1, mod2]):
+        m = mailoutbox[i]
+        assert m.subject == "[{} moderation - {}] New report from {}".format(
+            settings.FUNKWHALE_HOSTNAME,
+            report.get_type_display(),
+            report.submitter.full_username,
+        )
+        assert report.summary in m.body
+        assert report.target._meta.verbose_name.title() in m.body
+        assert str(report.target) in m.body
+        assert report.target.get_absolute_url() in m.body
+        assert report.target.get_moderation_url() in m.body
+        assert detail_url in m.body
+        assert unresolved_reports_url in m.body
+        assert list(m.to) == [mod.email]
diff --git a/api/tests/moderation/test_views.py b/api/tests/moderation/test_views.py
index 3d53f4565a315b84c40fccd7d8b6c226a6883a24..dba2281720d3a0e3c82214ee001ecdfec5bf9683 100644
--- a/api/tests/moderation/test_views.py
+++ b/api/tests/moderation/test_views.py
@@ -1,5 +1,7 @@
 from django.urls import reverse
 
+from funkwhale_api.moderation import models
+
 
 def test_restrict_to_own_filters(factories, logged_in_api_client):
     cf = factories["moderation.UserFilter"](
@@ -22,3 +24,35 @@ def test_create_filter(factories, logged_in_api_client):
     cf = logged_in_api_client.user.content_filters.latest("id")
     assert cf.target_artist == artist
     assert response.status_code == 201
+
+
+def test_create_report_logged_in(factories, logged_in_api_client):
+    actor = logged_in_api_client.user.create_actor()
+    target = factories["music.Artist"]()
+    url = reverse("api:v1:moderation:reports-list")
+    data = {
+        "target": {"type": "artist", "id": target.pk},
+        "summary": "Test report",
+        "type": "other",
+    }
+    response = logged_in_api_client.post(url, data, format="json")
+
+    assert response.status_code == 201
+    report = actor.reports.latest("id")
+    assert report.target == target
+
+
+def test_create_report_anonymous(factories, api_client, no_api_auth):
+    target = factories["music.Artist"]()
+    url = reverse("api:v1:moderation:reports-list")
+    data = {
+        "target": {"type": "artist", "id": target.pk},
+        "summary": "Test report",
+        "type": "illegal_content",
+        "submitter_email": "test@example.test",
+    }
+    response = api_client.post(url, data, format="json")
+
+    assert response.status_code == 201
+    report = models.Report.objects.latest("id")
+    assert report.submitter_email == data["submitter_email"]
diff --git a/api/tests/music/sample.flac b/api/tests/music/sample.flac
index fe3ec6e4a270da0ff0a3f1ca677da4990ddb0ea5..a8aafa39239a199663c6673c678064826ecf965b 100644
Binary files a/api/tests/music/sample.flac and b/api/tests/music/sample.flac differ
diff --git a/api/tests/music/test.m4a b/api/tests/music/test.m4a
new file mode 100644
index 0000000000000000000000000000000000000000..57b65b7b53489c85cb7a9e5ca5fa92fa976c35ea
Binary files /dev/null and b/api/tests/music/test.m4a differ
diff --git a/api/tests/music/test.mp3 b/api/tests/music/test.mp3
index 8e7c0adbbc1a36f51bd32cf4be12c8e3326f1007..5f8dc2c727d63873ed7cada78379030b9cadb0d7 100644
Binary files a/api/tests/music/test.mp3 and b/api/tests/music/test.mp3 differ
diff --git a/api/tests/music/test.ogg b/api/tests/music/test.ogg
index 5ca0a7f55bec448220af35a368ec557b2f42fae6..9975cd9fe447824358da6dc9a89780c61ade8aee 100644
Binary files a/api/tests/music/test.ogg and b/api/tests/music/test.ogg differ
diff --git a/api/tests/music/test.opus b/api/tests/music/test.opus
index ac39fd3270e27f5cadaf0927472ad17926dfcff6..92634ce507bbe0bc0f0d36b7ea6abe34965cafe9 100644
Binary files a/api/tests/music/test.opus and b/api/tests/music/test.opus differ
diff --git a/api/tests/music/test_filters.py b/api/tests/music/test_filters.py
index f9abc4b2156b6a537471bb83ec583ecfb477faee..f3ff13e777f044f90f3a4e9e851b8f9dd36333cf 100644
--- a/api/tests/music/test_filters.py
+++ b/api/tests/music/test_filters.py
@@ -1,3 +1,5 @@
+import pytest
+
 from funkwhale_api.music import filters
 from funkwhale_api.music import models
 
@@ -52,3 +54,59 @@ def test_artist_filter_track_album_artist(factories, mocker, queryset_equal_list
     )
 
     assert filterset.qs == [hidden_track]
+
+
+@pytest.mark.parametrize(
+    "factory_name, filterset_class",
+    [
+        ("music.Track", filters.TrackFilter),
+        ("music.Artist", filters.TrackFilter),
+        ("music.Album", filters.TrackFilter),
+    ],
+)
+def test_track_filter_tag_single(
+    factory_name,
+    filterset_class,
+    factories,
+    mocker,
+    queryset_equal_list,
+    anonymous_user,
+):
+    factories[factory_name]()
+    # tag name partially match the query, so this shouldn't match
+    factories[factory_name](set_tags=["TestTag1"])
+    tagged = factories[factory_name](set_tags=["TestTag"])
+    qs = tagged.__class__.objects.all()
+    filterset = filterset_class(
+        {"tag": "testTaG"}, request=mocker.Mock(user=anonymous_user), queryset=qs
+    )
+
+    assert filterset.qs == [tagged]
+
+
+@pytest.mark.parametrize(
+    "factory_name, filterset_class",
+    [
+        ("music.Track", filters.TrackFilter),
+        ("music.Artist", filters.ArtistFilter),
+        ("music.Album", filters.AlbumFilter),
+    ],
+)
+def test_track_filter_tag_multiple(
+    factory_name,
+    filterset_class,
+    factories,
+    mocker,
+    queryset_equal_list,
+    anonymous_user,
+):
+    factories[factory_name](set_tags=["TestTag1"])
+    tagged = factories[factory_name](set_tags=["TestTag1", "TestTag2"])
+    qs = tagged.__class__.objects.all()
+    filterset = filterset_class(
+        {"tag": ["testTaG1", "TestTag2"]},
+        request=mocker.Mock(user=anonymous_user),
+        queryset=qs,
+    )
+
+    assert filterset.qs == [tagged]
diff --git a/api/tests/music/test_metadata.py b/api/tests/music/test_metadata.py
index 539fa49a2f2b26a3a6818d2d4d23ace81f910122..9a3826ce3832050c8ba15188129b4dc5548a480f 100644
--- a/api/tests/music/test_metadata.py
+++ b/api/tests/music/test_metadata.py
@@ -57,6 +57,7 @@ def test_can_get_metadata_all():
         "musicbrainz_albumartistid": "013c8e5b-d72a-4cd3-8dee-6c64d6125823;5b4d7d2d-36df-4b38-95e3-a964234f520f",
         "license": "Dummy license: http://creativecommons.org/licenses/by-sa/4.0/",
         "copyright": "Someone",
+        "genre": "Classical",
     }
     assert data.all() == expected
 
@@ -141,7 +142,15 @@ def test_can_get_metadata_from_id3_mp3_file(field, value):
 
 
 @pytest.mark.parametrize(
-    "name", ["test.mp3", "with_other_picture.mp3", "sample.flac", "with_cover.ogg"]
+    "name",
+    [
+        "test.mp3",
+        "with_other_picture.mp3",
+        "sample.flac",
+        "with_cover.ogg",
+        "with_cover.opus",
+        "test.m4a",
+    ],
 )
 def test_can_get_pictures(name):
     path = os.path.join(DATA_DIR, name)
@@ -181,6 +190,35 @@ def test_can_get_metadata_from_flac_file(field, value):
     assert data.get(field) == value
 
 
+@pytest.mark.parametrize(
+    "field,value",
+    [
+        ("title", "Peer Gynt Suite no. 1, op. 46: I. Morning"),
+        ("artist", "Edvard Grieg"),
+        ("album_artist", "Edvard Grieg; Musopen Symphony Orchestra"),
+        ("album", "Peer Gynt Suite no. 1, op. 46"),
+        ("date", "2012-08-15"),
+        ("position", 1),
+        ("disc_number", 2),
+        ("musicbrainz_albumid", "a766da8b-8336-47aa-a3ee-371cc41ccc75"),
+        ("mbid", "bd21ac48-46d8-4e78-925f-d9cc2a294656"),
+        ("musicbrainz_artistid", "013c8e5b-d72a-4cd3-8dee-6c64d6125823"),
+        (
+            "musicbrainz_albumartistid",
+            "013c8e5b-d72a-4cd3-8dee-6c64d6125823;5b4d7d2d-36df-4b38-95e3-a964234f520f",
+        ),
+        ("license", "Dummy license: http://creativecommons.org/licenses/by-sa/4.0/"),
+        ("copyright", "Someone"),
+        ("genre", "Dubstep"),
+    ],
+)
+def test_can_get_metadata_from_m4a_file(field, value):
+    path = os.path.join(DATA_DIR, "test.m4a")
+    data = metadata.Metadata(path)
+
+    assert data.get(field) == value
+
+
 def test_can_get_metadata_from_flac_file_not_crash_if_empty():
     path = os.path.join(DATA_DIR, "sample.flac")
     data = metadata.Metadata(path)
@@ -249,6 +287,7 @@ def test_metadata_fallback_ogg_theora(mocker):
                 "mbid": uuid.UUID("f269d497-1cc0-4ae4-a0c4-157ec7d73fcb"),
                 "license": "https://creativecommons.org/licenses/by-nc-nd/2.5/",
                 "copyright": "Someone",
+                "tags": ["Funk"],
             },
         ),
         (
@@ -281,6 +320,7 @@ def test_metadata_fallback_ogg_theora(mocker):
                 "mbid": uuid.UUID("bd21ac48-46d8-4e78-925f-d9cc2a294656"),
                 "license": "Dummy license: http://creativecommons.org/licenses/by-sa/4.0/",
                 "copyright": "Someone",
+                "tags": ["Classical"],
             },
         ),
         (
@@ -313,6 +353,7 @@ def test_metadata_fallback_ogg_theora(mocker):
                 "mbid": uuid.UUID("bd21ac48-46d8-4e78-925f-d9cc2a294656"),
                 "license": "Dummy license: http://creativecommons.org/licenses/by-sa/4.0/",
                 "copyright": "Someone",
+                "tags": ["Classical"],
             },
         ),
         (
@@ -336,6 +377,7 @@ def test_metadata_fallback_ogg_theora(mocker):
                         }
                     ],
                 },
+                "tags": ["Rock"],
                 "position": 1,
                 "disc_number": 1,
                 "mbid": uuid.UUID("124d0150-8627-46bc-bc14-789a3bc960c8"),
@@ -371,6 +413,7 @@ def test_metadata_fallback_ogg_theora(mocker):
                 "mbid": uuid.UUID("30f3f33e-8d0c-4e69-8539-cbd701d18f28"),
                 "license": "http://creativecommons.org/licenses/by-nc-sa/3.0/us/",
                 "copyright": "2008 nin",
+                "tags": ["Industrial"],
             },
         ),
     ],
@@ -555,7 +598,7 @@ def test_serializer_album_default_title_when_missing_or_empty(data):
         "title": "Track",
         "artists": [{"name": "Artist", "mbid": None}],
         "album": {
-            "title": metadata.UNKWOWN_ALBUM,
+            "title": metadata.UNKNOWN_ALBUM,
             "mbid": None,
             "release_date": None,
             "artists": [],
@@ -607,3 +650,43 @@ def test_artist_field_featuring():
     value = field.get_value(data)
 
     assert field.to_internal_value(value) == expected
+
+
+@pytest.mark.parametrize(
+    "genre, expected_tags",
+    [
+        ("Pop", ["Pop"]),
+        ("pop", ["pop"]),
+        ("Pop-Rock", ["PopRock"]),
+        ("Pop - Rock", ["Pop", "Rock"]),
+        ("Soundtrack - Cute Anime", ["Soundtrack", "CuteAnime"]),
+        ("Pop, Rock", ["Pop", "Rock"]),
+        ("Chanson française", ["ChansonFrançaise"]),
+        ("Unhandled❤️", []),
+        ("tag with non-breaking spaces", []),
+    ],
+)
+def test_acquire_tags_from_genre(genre, expected_tags):
+    data = {
+        "title": "Track Title",
+        "artist": "Track Artist",
+        "album": "Track Album",
+        "genre": genre,
+    }
+    expected = {
+        "title": "Track Title",
+        "artists": [{"name": "Track Artist", "mbid": None}],
+        "album": {
+            "title": "Track Album",
+            "mbid": None,
+            "release_date": None,
+            "artists": [],
+        },
+        "cover_data": None,
+    }
+    if expected_tags:
+        expected["tags"] = expected_tags
+
+    serializer = metadata.TrackMetadataSerializer(data=metadata.FakeMetadata(data))
+    assert serializer.is_valid(raise_exception=True) is True
+    assert serializer.validated_data == expected
diff --git a/api/tests/music/test_models.py b/api/tests/music/test_models.py
index 5aa29b3cc4519d0c5158301d521a3550e2d56e62..344273673dead203b5631f1f04764a87b0677f29 100644
--- a/api/tests/music/test_models.py
+++ b/api/tests/music/test_models.py
@@ -448,7 +448,7 @@ def test_get_audio_data(factories):
 
     result = upload.get_audio_data()
 
-    assert result == {"duration": 1, "bitrate": 112000, "size": 14858}
+    assert result == {"duration": 1, "bitrate": 112000, "size": 15918}
 
 
 def test_library_queryset_with_follows(factories):
diff --git a/api/tests/music/test_music.py b/api/tests/music/test_music.py
index 10d281071a8c885cb52031f68b96b6b6120ce5c4..727214af569eaa3bf2c35540353da8931d2fd2d6 100644
--- a/api/tests/music/test_music.py
+++ b/api/tests/music/test_music.py
@@ -91,7 +91,7 @@ def test_can_create_track_from_api_with_corresponding_tags(
     )
     track = models.Track.create_from_api(id="9968a9d6-8d92-4051-8f76-674e157b6eed")
     expected_tags = ["techno", "good-music"]
-    track_tags = [tag.slug for tag in track.tags.all()]
+    track_tags = track.tagged_items.values_list("tag__name", flat=True)
     for tag in expected_tags:
         assert tag in track_tags
 
@@ -123,31 +123,6 @@ def test_can_get_or_create_track_from_api(artists, albums, tracks, mocker, db):
     assert track == track2
 
 
-def test_album_tags_deduced_from_tracks_tags(factories, django_assert_num_queries):
-    tag = factories["taggit.Tag"]()
-    album = factories["music.Album"]()
-    factories["music.Track"].create_batch(5, album=album, tags=[tag])
-
-    album = models.Album.objects.prefetch_related("tracks__tags").get(pk=album.pk)
-
-    with django_assert_num_queries(0):
-        assert tag in album.tags
-
-
-def test_artist_tags_deduced_from_album_tags(factories, django_assert_num_queries):
-    tag = factories["taggit.Tag"]()
-    album = factories["music.Album"]()
-    artist = album.artist
-    factories["music.Track"].create_batch(5, album=album, tags=[tag])
-
-    artist = models.Artist.objects.prefetch_related("albums__tracks__tags").get(
-        pk=artist.pk
-    )
-
-    with django_assert_num_queries(0):
-        assert tag in artist.tags
-
-
 def test_can_download_image_file_for_album(binary_cover, mocker, factories):
     mocker.patch(
         "funkwhale_api.musicbrainz.api.images.get_front", return_value=binary_cover
@@ -158,3 +133,11 @@ def test_can_download_image_file_for_album(binary_cover, mocker, factories):
     album.save()
 
     assert album.cover.file.read() == binary_cover
+
+
+def test_album_get_image_doesnt_crash_with_empty_data(mocker, factories):
+    album = factories["music.Album"](mbid=None, cover=None)
+    assert (
+        album.get_image(data={"content": "", "url": "", "mimetype": "image/png"})
+        is None
+    )
diff --git a/api/tests/music/test_mutations.py b/api/tests/music/test_mutations.py
index be3fb0d76cf831d026e414131b82258e9b1a11db..3a86f3bf8628f00f0aceb7fd0d594c76e276fb60 100644
--- a/api/tests/music/test_mutations.py
+++ b/api/tests/music/test_mutations.py
@@ -2,6 +2,9 @@ import datetime
 import pytest
 
 from funkwhale_api.music import licenses
+from funkwhale_api.music import mutations
+
+from funkwhale_api.tags import models as tags_models
 
 
 @pytest.mark.parametrize(
@@ -117,3 +120,59 @@ def test_track_mutation_apply_outbox(factories, mocker):
     dispatch.assert_called_once_with(
         {"type": "Update", "object": {"type": "Track"}}, context={"track": track}
     )
+
+
+@pytest.mark.parametrize("factory_name", ["music.Artist", "music.Album", "music.Track"])
+def test_mutation_set_tags(factory_name, factories, now, mocker):
+    tags = ["tag1", "tag2"]
+    dispatch = mocker.patch("funkwhale_api.federation.routes.outbox.dispatch")
+    set_tags = mocker.spy(tags_models, "set_tags")
+    obj = factories[factory_name]()
+    assert obj.tagged_items.all().count() == 0
+    mutation = factories["common.Mutation"](
+        type="update", target=obj, payload={"tags": tags}
+    )
+    mutation.apply()
+    obj.refresh_from_db()
+
+    assert sorted(obj.tagged_items.all().values_list("tag__name", flat=True)) == tags
+    set_tags.assert_called_once_with(obj, *tags)
+    obj_type = factory_name.lstrip("music.")
+    dispatch.assert_called_once_with(
+        {"type": "Update", "object": {"type": obj_type}},
+        context={obj_type.lower(): obj},
+    )
+
+
+@pytest.mark.parametrize("is_local, expected", [(True, True), (False, False)])
+def test_perm_checkers_can_suggest(factories, is_local, expected):
+    obj = factories["music.Track"](local=is_local)
+    assert mutations.can_suggest(obj, actor=None) is expected
+
+
+@pytest.mark.parametrize(
+    "is_local, permission_library, actor_is_attributed, expected",
+    [
+        # Not local object, so local users can't edit
+        (False, False, False, False),
+        (False, True, False, False),
+        # Local but no specific conditions met for permission
+        (True, False, False, False),
+        # Local and attributed_to -> ok
+        (True, False, True, True),
+        # Local and library permission -> ok
+        (True, True, False, True),
+    ],
+)
+def test_perm_checkers_can_approve(
+    factories, is_local, permission_library, actor_is_attributed, expected
+):
+    actor = factories["users.User"](
+        permission_library=permission_library
+    ).create_actor()
+    obj_kwargs = {"local": is_local}
+    if actor_is_attributed:
+        obj_kwargs["attributed_to"] = actor
+    obj = factories["music.Track"](**obj_kwargs)
+
+    assert mutations.can_approve(obj, actor=actor) is expected
diff --git a/api/tests/music/test_serializers.py b/api/tests/music/test_serializers.py
index 5f9b7d9d151035a78396ac3e4e3d91d30884c298..4eaf54ad54aa0559a3c05662c8f78b2960276b1b 100644
--- a/api/tests/music/test_serializers.py
+++ b/api/tests/music/test_serializers.py
@@ -1,5 +1,6 @@
 import pytest
 
+from funkwhale_api.federation import serializers as federation_serializers
 from funkwhale_api.music import licenses
 from funkwhale_api.music import models
 from funkwhale_api.music import serializers
@@ -56,11 +57,12 @@ def test_artist_album_serializer(factories, to_api_date):
 
 
 def test_artist_with_albums_serializer(factories, to_api_date):
-    track = factories["music.Track"]()
+    actor = factories["federation.Actor"]()
+    track = factories["music.Track"](album__artist__attributed_to=actor)
     artist = track.artist
     artist = artist.__class__.objects.with_albums().get(pk=artist.pk)
     album = list(artist.albums.all())[0]
-
+    setattr(artist, "_prefetched_tracks", range(42))
     expected = {
         "id": artist.id,
         "fid": artist.fid,
@@ -69,6 +71,9 @@ def test_artist_with_albums_serializer(factories, to_api_date):
         "is_local": artist.is_local,
         "creation_date": to_api_date(artist.creation_date),
         "albums": [serializers.ArtistAlbumSerializer(album).data],
+        "tags": [],
+        "attributed_to": federation_serializers.APIActorSerializer(actor).data,
+        "tracks_count": 42,
     }
     serializer = serializers.ArtistWithAlbumsSerializer(artist)
     assert serializer.data == expected
@@ -84,13 +89,13 @@ def test_album_track_serializer(factories, to_api_date):
     expected = {
         "id": track.id,
         "fid": track.fid,
-        "artist": serializers.ArtistSimpleSerializer(track.artist).data,
+        "artist": serializers.serialize_artist_simple(track.artist),
         "album": track.album.id,
         "mbid": str(track.mbid),
         "title": track.title,
         "position": track.position,
         "disc_number": track.disc_number,
-        "uploads": [serializers.TrackUploadSerializer(upload).data],
+        "uploads": [serializers.serialize_upload(upload)],
         "creation_date": to_api_date(track.creation_date),
         "listen_url": track.listen_url,
         "duration": None,
@@ -98,8 +103,8 @@ def test_album_track_serializer(factories, to_api_date):
         "copyright": track.copyright,
         "is_local": track.is_local,
     }
-    serializer = serializers.AlbumTrackSerializer(track)
-    assert serializer.data == expected
+    data = serializers.serialize_album_track(track)
+    assert data == expected
 
 
 def test_upload_serializer(factories, to_api_date):
@@ -114,7 +119,7 @@ def test_upload_serializer(factories, to_api_date):
         "bitrate": upload.bitrate,
         "size": upload.size,
         "library": serializers.LibraryForOwnerSerializer(upload.library).data,
-        "creation_date": upload.creation_date.isoformat().split("+")[0] + "Z",
+        "creation_date": to_api_date(upload.creation_date),
         "import_date": None,
         "import_status": "pending",
     }
@@ -141,7 +146,7 @@ def test_upload_owner_serializer(factories, to_api_date):
         "bitrate": upload.bitrate,
         "size": upload.size,
         "library": serializers.LibraryForOwnerSerializer(upload.library).data,
-        "creation_date": upload.creation_date.isoformat().split("+")[0] + "Z",
+        "creation_date": to_api_date(upload.creation_date),
         "metadata": {"test": "metadata"},
         "import_metadata": {"import": "metadata"},
         "import_date": None,
@@ -155,7 +160,8 @@ def test_upload_owner_serializer(factories, to_api_date):
 
 
 def test_album_serializer(factories, to_api_date):
-    track1 = factories["music.Track"](position=2)
+    actor = factories["federation.Actor"]()
+    track1 = factories["music.Track"](position=2, album__attributed_to=actor)
     track2 = factories["music.Track"](position=1, album=track1.album)
     album = track1.album
     expected = {
@@ -163,7 +169,7 @@ def test_album_serializer(factories, to_api_date):
         "fid": album.fid,
         "mbid": str(album.mbid),
         "title": album.title,
-        "artist": serializers.ArtistSimpleSerializer(album.artist).data,
+        "artist": serializers.serialize_artist_simple(album.artist),
         "creation_date": to_api_date(album.creation_date),
         "is_playable": False,
         "cover": {
@@ -173,8 +179,10 @@ def test_album_serializer(factories, to_api_date):
             "small_square_crop": album.cover.crop["50x50"].url,
         },
         "release_date": to_api_date(album.release_date),
-        "tracks": serializers.AlbumTrackSerializer([track2, track1], many=True).data,
+        "tracks": [serializers.serialize_album_track(t) for t in [track2, track1]],
         "is_local": album.is_local,
+        "tags": [],
+        "attributed_to": federation_serializers.APIActorSerializer(actor).data,
     }
     serializer = serializers.AlbumSerializer(album)
 
@@ -182,26 +190,32 @@ def test_album_serializer(factories, to_api_date):
 
 
 def test_track_serializer(factories, to_api_date):
+    actor = factories["federation.Actor"]()
     upload = factories["music.Upload"](
-        track__license="cc-by-4.0", track__copyright="test", track__disc_number=2
+        track__license="cc-by-4.0",
+        track__copyright="test",
+        track__disc_number=2,
+        track__attributed_to=actor,
     )
     track = upload.track
     setattr(track, "playable_uploads", [upload])
     expected = {
         "id": track.id,
         "fid": track.fid,
-        "artist": serializers.ArtistSimpleSerializer(track.artist).data,
+        "artist": serializers.serialize_artist_simple(track.artist),
         "album": serializers.TrackAlbumSerializer(track.album).data,
         "mbid": str(track.mbid),
         "title": track.title,
         "position": track.position,
         "disc_number": track.disc_number,
-        "uploads": [serializers.TrackUploadSerializer(upload).data],
+        "uploads": [serializers.serialize_upload(upload)],
         "creation_date": to_api_date(track.creation_date),
         "listen_url": track.listen_url,
         "license": upload.track.license.code,
         "copyright": upload.track.copyright,
         "is_local": upload.track.is_local,
+        "tags": [],
+        "attributed_to": federation_serializers.APIActorSerializer(actor).data,
     }
     serializer = serializers.TrackSerializer(track)
     assert serializer.data == expected
@@ -303,7 +317,7 @@ def test_manage_upload_action_relaunch_import(factories, mocker):
     assert m.call_count == 3
 
 
-def test_track_upload_serializer(factories):
+def test_serialize_upload(factories):
     upload = factories["music.Upload"]()
 
     expected = {
@@ -316,8 +330,8 @@ def test_track_upload_serializer(factories):
         "duration": upload.duration,
     }
 
-    serializer = serializers.TrackUploadSerializer(upload)
-    assert serializer.data == expected
+    data = serializers.serialize_upload(upload)
+    assert data == expected
 
 
 @pytest.mark.parametrize(
diff --git a/api/tests/music/test_spa_views.py b/api/tests/music/test_spa_views.py
index b9397009c669575c749f2605f3f3096ee0342ee8..bf85ab88825b966aac0088fc970d75f3048bc651 100644
--- a/api/tests/music/test_spa_views.py
+++ b/api/tests/music/test_spa_views.py
@@ -195,3 +195,77 @@ def test_library_artist(spa_html, no_api_auth, client, factories, settings):
 
     # we only test our custom metas, not the default ones
     assert metas[: len(expected_metas)] == expected_metas
+
+
+def test_library_playlist(spa_html, no_api_auth, client, factories, settings):
+    playlist = factories["playlists.Playlist"](privacy_level="everyone")
+    track = factories["music.Upload"](playable=True).track
+    playlist.insert_many([track])
+
+    url = "/library/playlists/{}".format(playlist.pk)
+
+    response = client.get(url)
+
+    expected_metas = [
+        {
+            "tag": "meta",
+            "property": "og:url",
+            "content": utils.join_url(settings.FUNKWHALE_URL, url),
+        },
+        {"tag": "meta", "property": "og:title", "content": playlist.name},
+        {"tag": "meta", "property": "og:type", "content": "music.playlist"},
+        {
+            "tag": "meta",
+            "property": "og:image",
+            "content": utils.join_url(
+                settings.FUNKWHALE_URL, track.album.cover.crop["400x400"].url
+            ),
+        },
+        {
+            "tag": "link",
+            "rel": "alternate",
+            "type": "application/json+oembed",
+            "href": (
+                utils.join_url(settings.FUNKWHALE_URL, reverse("api:v1:oembed"))
+                + "?format=json&url={}".format(
+                    urllib.parse.quote_plus(utils.join_url(settings.FUNKWHALE_URL, url))
+                )
+            ),
+        },
+        {"tag": "meta", "property": "twitter:card", "content": "player"},
+        {
+            "tag": "meta",
+            "property": "twitter:player",
+            "content": serializers.get_embed_url("playlist", id=playlist.id),
+        },
+        {"tag": "meta", "property": "twitter:player:width", "content": "600"},
+        {"tag": "meta", "property": "twitter:player:height", "content": "400"},
+    ]
+
+    metas = utils.parse_meta(response.content.decode())
+
+    # we only test our custom metas, not the default ones
+    assert metas[: len(expected_metas)] == expected_metas
+
+
+def test_library_playlist_empty(spa_html, no_api_auth, client, factories, settings):
+    playlist = factories["playlists.Playlist"](privacy_level="everyone")
+
+    url = "/library/playlists/{}".format(playlist.pk)
+
+    response = client.get(url)
+
+    expected_metas = [
+        {
+            "tag": "meta",
+            "property": "og:url",
+            "content": utils.join_url(settings.FUNKWHALE_URL, url),
+        },
+        {"tag": "meta", "property": "og:title", "content": playlist.name},
+        {"tag": "meta", "property": "og:type", "content": "music.playlist"},
+    ]
+
+    metas = utils.parse_meta(response.content.decode())
+
+    # we only test our custom metas, not the default ones
+    assert metas[: len(expected_metas)] == expected_metas
diff --git a/api/tests/music/test_tasks.py b/api/tests/music/test_tasks.py
index 78f4622babb9b31cfde6f02f04b67eb2c90319ee..8eae4a3bee611dada6b50942fce79162328433ce 100644
--- a/api/tests/music/test_tasks.py
+++ b/api/tests/music/test_tasks.py
@@ -9,7 +9,7 @@ from django.utils import timezone
 
 from funkwhale_api.federation import serializers as federation_serializers
 from funkwhale_api.federation import jsonld
-from funkwhale_api.music import licenses, metadata, signals, tasks
+from funkwhale_api.music import licenses, metadata, models, signals, tasks
 
 DATA_DIR = os.path.dirname(os.path.abspath(__file__))
 
@@ -18,6 +18,7 @@ DATA_DIR = os.path.dirname(os.path.abspath(__file__))
 
 
 def test_can_create_track_from_file_metadata_no_mbid(db, mocker):
+    add_tags = mocker.patch("funkwhale_api.tags.models.add_tags")
     metadata = {
         "title": "Test track",
         "artists": [{"name": "Test artist"}],
@@ -26,6 +27,7 @@ def test_can_create_track_from_file_metadata_no_mbid(db, mocker):
         "disc_number": 2,
         "license": "Hello world: http://creativecommons.org/licenses/by-sa/4.0/",
         "copyright": "2018 Someone",
+        "tags": ["Punk", "Rock"],
     }
     match_license = mocker.spy(licenses, "match")
 
@@ -44,6 +46,9 @@ def test_can_create_track_from_file_metadata_no_mbid(db, mocker):
     assert track.artist.mbid is None
     assert track.artist.attributed_to is None
     match_license.assert_called_once_with(metadata["license"], metadata["copyright"])
+    add_tags.assert_any_call(track, *metadata["tags"])
+    add_tags.assert_any_call(track.artist, *[])
+    add_tags.assert_any_call(track.album, *[])
 
 
 def test_can_create_track_from_file_metadata_attributed_to(factories, mocker):
@@ -74,6 +79,32 @@ def test_can_create_track_from_file_metadata_attributed_to(factories, mocker):
     assert track.artist.attributed_to == actor
 
 
+def test_can_create_track_from_file_metadata_truncates_too_long_values(
+    factories, mocker
+):
+    metadata = {
+        "title": "a" * 5000,
+        "artists": [{"name": "b" * 5000}],
+        "album": {"title": "c" * 5000, "release_date": datetime.date(2012, 8, 15)},
+        "position": 4,
+        "disc_number": 2,
+        "copyright": "d" * 5000,
+    }
+
+    track = tasks.get_track_from_import_metadata(metadata)
+
+    assert track.title == metadata["title"][: models.MAX_LENGTHS["TRACK_TITLE"]]
+    assert track.copyright == metadata["copyright"][: models.MAX_LENGTHS["COPYRIGHT"]]
+    assert (
+        track.album.title
+        == metadata["album"]["title"][: models.MAX_LENGTHS["ALBUM_TITLE"]]
+    )
+    assert (
+        track.artist.name
+        == metadata["artists"][0]["name"][: models.MAX_LENGTHS["ARTIST_NAME"]]
+    )
+
+
 def test_can_create_track_from_file_metadata_featuring(factories):
     metadata = {
         "title": "Whole Lotta Love",
@@ -555,6 +586,7 @@ def test_federation_audio_track_to_metadata(now, mocker):
         "license": "http://creativecommons.org/licenses/by-sa/4.0/",
         "copyright": "2018 Someone",
         "attributedTo": "http://track.attributed",
+        "tag": [{"type": "Hashtag", "name": "TrackTag"}],
         "album": {
             "published": published.isoformat(),
             "type": "Album",
@@ -562,6 +594,7 @@ def test_federation_audio_track_to_metadata(now, mocker):
             "name": "Purple album",
             "musicbrainzId": str(uuid.uuid4()),
             "released": released.isoformat(),
+            "tag": [{"type": "Hashtag", "name": "AlbumTag"}],
             "attributedTo": "http://album.attributed",
             "artists": [
                 {
@@ -571,6 +604,7 @@ def test_federation_audio_track_to_metadata(now, mocker):
                     "name": "John Smith",
                     "musicbrainzId": str(uuid.uuid4()),
                     "attributedTo": "http://album-artist.attributed",
+                    "tag": [{"type": "Hashtag", "name": "AlbumArtistTag"}],
                 }
             ],
             "cover": {
@@ -587,6 +621,7 @@ def test_federation_audio_track_to_metadata(now, mocker):
                 "name": "Bob Smith",
                 "musicbrainzId": str(uuid.uuid4()),
                 "attributedTo": "http://artist.attributed",
+                "tag": [{"type": "Hashtag", "name": "ArtistTag"}],
             }
         ],
     }
@@ -602,6 +637,7 @@ def test_federation_audio_track_to_metadata(now, mocker):
         "fdate": serializer.validated_data["published"],
         "fid": payload["id"],
         "attributed_to": references["http://track.attributed"],
+        "tags": ["TrackTag"],
         "album": {
             "title": payload["album"]["name"],
             "attributed_to": references["http://album.attributed"],
@@ -609,6 +645,7 @@ def test_federation_audio_track_to_metadata(now, mocker):
             "mbid": payload["album"]["musicbrainzId"],
             "fid": payload["album"]["id"],
             "fdate": serializer.validated_data["album"]["published"],
+            "tags": ["AlbumTag"],
             "artists": [
                 {
                     "name": a["name"],
@@ -618,6 +655,7 @@ def test_federation_audio_track_to_metadata(now, mocker):
                     "fdate": serializer.validated_data["album"]["artists"][i][
                         "published"
                     ],
+                    "tags": ["AlbumArtistTag"],
                 }
                 for i, a in enumerate(payload["album"]["artists"])
             ],
@@ -631,6 +669,7 @@ def test_federation_audio_track_to_metadata(now, mocker):
                 "fid": a["id"],
                 "fdate": serializer.validated_data["artists"][i]["published"],
                 "attributed_to": references["http://artist.attributed"],
+                "tags": ["ArtistTag"],
             }
             for i, a in enumerate(payload["artists"])
         ],
@@ -830,3 +869,34 @@ def test_update_library_entity(factories, mocker):
 
     artist.refresh_from_db()
     assert artist.name == "Hello"
+
+
+@pytest.mark.parametrize(
+    "name, ext, mimetype",
+    [
+        ("cover", "png", "image/png"),
+        ("cover", "jpg", "image/jpeg"),
+        ("cover", "jpeg", "image/jpeg"),
+        ("folder", "png", "image/png"),
+        ("folder", "jpg", "image/jpeg"),
+        ("folder", "jpeg", "image/jpeg"),
+    ],
+)
+def test_get_cover_from_fs(name, ext, mimetype, tmpdir):
+    cover_path = os.path.join(tmpdir, "{}.{}".format(name, ext))
+    content = "Hello"
+    with open(cover_path, "w") as f:
+        f.write(content)
+
+    expected = {"mimetype": mimetype, "content": content.encode()}
+    assert tasks.get_cover_from_fs(tmpdir) == expected
+
+
+@pytest.mark.parametrize("name", ["cover.gif", "folder.gif"])
+def test_get_cover_from_fs_ignored(name, tmpdir):
+    cover_path = os.path.join(tmpdir, name)
+    content = "Hello"
+    with open(cover_path, "w") as f:
+        f.write(content)
+
+    assert tasks.get_cover_from_fs(tmpdir) is None
diff --git a/api/tests/music/test_views.py b/api/tests/music/test_views.py
index 25845e738b228b1b1e969c04070f2de134d454eb..0339437d4002bd8f34be3a8731ec9b48d9f92c81 100644
--- a/api/tests/music/test_views.py
+++ b/api/tests/music/test_views.py
@@ -1,34 +1,45 @@
+import datetime
 import io
 import magic
 import os
 import urllib.parse
+import uuid
 
 import pytest
+from django.db.models import Prefetch
 from django.urls import reverse
 from django.utils import timezone
 
 from funkwhale_api.common import utils
 from funkwhale_api.federation import api_serializers as federation_api_serializers
 from funkwhale_api.federation import utils as federation_utils
+from funkwhale_api.federation import tasks as federation_tasks
 from funkwhale_api.music import licenses, models, serializers, tasks, views
 
 DATA_DIR = os.path.dirname(os.path.abspath(__file__))
 
 
 def test_artist_list_serializer(api_request, factories, logged_in_api_client):
+    tags = ["tag1", "tag2"]
     track = factories["music.Upload"](
-        library__privacy_level="everyone", import_status="finished"
+        library__privacy_level="everyone",
+        import_status="finished",
+        track__album__artist__set_tags=tags,
     ).track
     artist = track.artist
     request = api_request.get("/")
-    qs = artist.__class__.objects.with_albums()
+    qs = artist.__class__.objects.with_albums().prefetch_related(
+        Prefetch("tracks", to_attr="_prefetched_tracks")
+    )
     serializer = serializers.ArtistWithAlbumsSerializer(
         qs, many=True, context={"request": request}
     )
     expected = {"count": 1, "next": None, "previous": None, "results": serializer.data}
     for artist in serializer.data:
+        artist["tags"] = tags
         for album in artist["albums"]:
             album["is_playable"] = True
+
     url = reverse("api:v1:artists-list")
     response = logged_in_api_client.get(url)
 
@@ -37,8 +48,11 @@ def test_artist_list_serializer(api_request, factories, logged_in_api_client):
 
 
 def test_album_list_serializer(api_request, factories, logged_in_api_client):
+    tags = ["tag1", "tag2"]
     track = factories["music.Upload"](
-        library__privacy_level="everyone", import_status="finished"
+        library__privacy_level="everyone",
+        import_status="finished",
+        track__album__set_tags=tags,
     ).track
     album = track.album
     request = api_request.get("/")
@@ -47,6 +61,8 @@ def test_album_list_serializer(api_request, factories, logged_in_api_client):
         qs, many=True, context={"request": request}
     )
     expected = {"count": 1, "next": None, "previous": None, "results": serializer.data}
+    for album in serializer.data:
+        album["tags"] = tags
     url = reverse("api:v1:albums-list")
     response = logged_in_api_client.get(url)
 
@@ -55,8 +71,11 @@ def test_album_list_serializer(api_request, factories, logged_in_api_client):
 
 
 def test_track_list_serializer(api_request, factories, logged_in_api_client):
+    tags = ["tag1", "tag2"]
     track = factories["music.Upload"](
-        library__privacy_level="everyone", import_status="finished"
+        library__privacy_level="everyone",
+        import_status="finished",
+        track__set_tags=tags,
     ).track
     request = api_request.get("/")
     qs = track.__class__.objects.with_playable_uploads(None)
@@ -64,6 +83,8 @@ def test_track_list_serializer(api_request, factories, logged_in_api_client):
         qs, many=True, context={"request": request}
     )
     expected = {"count": 1, "next": None, "previous": None, "results": serializer.data}
+    for track in serializer.data:
+        track["tags"] = tags
     url = reverse("api:v1:tracks-list")
     response = logged_in_api_client.get(url)
 
@@ -205,13 +226,34 @@ def test_serve_file_in_place(
     assert response[headers[proxy]] == expected
 
 
+def test_serve_file_in_place_nginx_encode_url(
+    factories, api_client, preferences, settings
+):
+    preferences["common__api_authentication_required"] = False
+    settings.PROTECT_FILE_PATH = "/_protected/music"
+    settings.REVERSE_PROXY_TYPE = "nginx"
+    settings.MUSIC_DIRECTORY_PATH = "/app/music"
+    settings.MUSIC_DIRECTORY_SERVE_PATH = "/app/music"
+    upload = factories["music.Upload"](
+        in_place=True,
+        import_status="finished",
+        source="file:///app/music/hello/world%?.mp3",
+        library__privacy_level="everyone",
+    )
+    response = api_client.get(upload.track.listen_url)
+    expected = "/_protected/music/hello/world%25%3F.mp3"
+
+    assert response.status_code == 200
+    assert response["X-Accel-Redirect"] == expected
+
+
 @pytest.mark.parametrize(
     "proxy,serve_path,expected",
     [
         ("apache2", "/host/music", "/host/music/hello/worldéà.mp3"),
         ("apache2", "/app/music", "/app/music/hello/worldéà.mp3"),
-        ("nginx", "/host/music", "/_protected/music/hello/worldéà.mp3"),
-        ("nginx", "/app/music", "/_protected/music/hello/worldéà.mp3"),
+        ("nginx", "/host/music", "/_protected/music/hello/world%C3%A9%C3%A0.mp3"),
+        ("nginx", "/app/music", "/_protected/music/hello/world%C3%A9%C3%A0.mp3"),
     ],
 )
 def test_serve_file_in_place_utf8(
@@ -811,3 +853,131 @@ def test_oembed_artist(factories, no_api_auth, api_client, settings):
     response = api_client.get(url, {"url": artist_url, "format": "json"})
 
     assert response.data == expected
+
+
+def test_oembed_playlist(factories, no_api_auth, api_client, settings):
+    settings.FUNKWHALE_URL = "http://test"
+    settings.FUNKWHALE_EMBED_URL = "http://embed"
+    playlist = factories["playlists.Playlist"](privacy_level="everyone")
+    track = factories["music.Upload"](playable=True).track
+    playlist.insert_many([track])
+    url = reverse("api:v1:oembed")
+    playlist_url = "https://test.com/library/playlists/{}".format(playlist.pk)
+    iframe_src = "http://embed?type=playlist&id={}".format(playlist.pk)
+    expected = {
+        "version": "1.0",
+        "type": "rich",
+        "provider_name": settings.APP_NAME,
+        "provider_url": settings.FUNKWHALE_URL,
+        "height": 400,
+        "width": 600,
+        "title": playlist.name,
+        "description": playlist.name,
+        "thumbnail_url": federation_utils.full_url(
+            track.album.cover.crop["400x400"].url
+        ),
+        "thumbnail_height": 400,
+        "thumbnail_width": 400,
+        "html": '<iframe width="600" height="400" scrolling="no" frameborder="no" src="{}"></iframe>'.format(
+            iframe_src
+        ),
+        "author_name": playlist.name,
+        "author_url": federation_utils.full_url(
+            utils.spa_reverse("library_playlist", kwargs={"pk": playlist.pk})
+        ),
+    }
+
+    response = api_client.get(url, {"url": playlist_url, "format": "json"})
+
+    assert response.data == expected
+
+
+@pytest.mark.parametrize(
+    "factory_name, url_name",
+    [
+        ("music.Artist", "api:v1:artists-detail"),
+        ("music.Album", "api:v1:albums-detail"),
+        ("music.Track", "api:v1:tracks-detail"),
+    ],
+)
+def test_refresh_remote_entity_when_param_is_true(
+    factories,
+    factory_name,
+    url_name,
+    mocker,
+    logged_in_api_client,
+    queryset_equal_queries,
+):
+    obj = factories[factory_name](mbid=None)
+
+    assert obj.is_local is False
+
+    new_mbid = uuid.uuid4()
+
+    def fake_refetch(obj, queryset):
+        obj.mbid = new_mbid
+        return obj
+
+    refetch_obj = mocker.patch.object(views, "refetch_obj", side_effect=fake_refetch)
+    url = reverse(url_name, kwargs={"pk": obj.pk})
+    response = logged_in_api_client.get(url, {"refresh": "true"})
+
+    assert response.status_code == 200
+    assert response.data["mbid"] == str(new_mbid)
+    assert refetch_obj.call_count == 1
+    assert refetch_obj.call_args[0][0] == obj
+
+
+@pytest.mark.parametrize("param", ["false", "0", ""])
+def test_refresh_remote_entity_no_param(
+    factories, param, mocker, logged_in_api_client, service_actor
+):
+    obj = factories["music.Artist"](mbid=None)
+
+    assert obj.is_local is False
+
+    fetch_task = mocker.patch.object(federation_tasks, "fetch")
+    url = reverse("api:v1:artists-detail", kwargs={"pk": obj.pk})
+    response = logged_in_api_client.get(url, {"refresh": param})
+
+    assert response.status_code == 200
+    fetch_task.assert_not_called()
+    assert service_actor.fetches.count() == 0
+
+
+def test_refetch_obj_not_local(mocker, factories, service_actor):
+    obj = factories["music.Artist"](local=True)
+    fetch_task = mocker.patch.object(federation_tasks, "fetch")
+    assert views.refetch_obj(obj, obj.__class__.objects.all()) == obj
+    fetch_task.assert_not_called()
+    assert service_actor.fetches.count() == 0
+
+
+def test_refetch_obj_last_fetch_date_too_close(
+    mocker, factories, settings, service_actor
+):
+    settings.FEDERATION_OBJECT_FETCH_DELAY = 300
+    obj = factories["music.Artist"]()
+    factories["federation.Fetch"](
+        object=obj,
+        creation_date=timezone.now()
+        - datetime.timedelta(minutes=settings.FEDERATION_OBJECT_FETCH_DELAY - 1),
+    )
+    fetch_task = mocker.patch.object(federation_tasks, "fetch")
+    assert views.refetch_obj(obj, obj.__class__.objects.all()) == obj
+    fetch_task.assert_not_called()
+    assert service_actor.fetches.count() == 0
+
+
+def test_refetch_obj(mocker, factories, settings, service_actor):
+    settings.FEDERATION_OBJECT_FETCH_DELAY = 300
+    obj = factories["music.Artist"]()
+    factories["federation.Fetch"](
+        object=obj,
+        creation_date=timezone.now()
+        - datetime.timedelta(minutes=settings.FEDERATION_OBJECT_FETCH_DELAY + 1),
+    )
+    fetch_task = mocker.patch.object(federation_tasks, "fetch")
+    views.refetch_obj(obj, obj.__class__.objects.all())
+    fetch = obj.fetches.filter(actor=service_actor).order_by("-creation_date").first()
+    fetch_task.assert_called_once_with(fetch_id=fetch.pk)
diff --git a/api/tests/music/with_cover.opus b/api/tests/music/with_cover.opus
new file mode 100644
index 0000000000000000000000000000000000000000..1b92b5cbb098e47c9722c01fa9caa0700c1284f9
Binary files /dev/null and b/api/tests/music/with_cover.opus differ
diff --git a/api/tests/music/with_other_picture.mp3 b/api/tests/music/with_other_picture.mp3
index 3118f067e37064f91f48f4265fac9745236169e0..e83b610b09126c26384fa48428584c8fe255f5bf 100644
Binary files a/api/tests/music/with_other_picture.mp3 and b/api/tests/music/with_other_picture.mp3 differ
diff --git a/api/tests/playlists/test_serializers.py b/api/tests/playlists/test_serializers.py
index 2500947292142b653e99886144c8020788ad5762..f84df4bb23fbc7662eb7ea27b644ae3970ef1298 100644
--- a/api/tests/playlists/test_serializers.py
+++ b/api/tests/playlists/test_serializers.py
@@ -1,4 +1,6 @@
+from funkwhale_api.federation import serializers as federation_serializers
 from funkwhale_api.playlists import models, serializers
+from funkwhale_api.users import serializers as users_serializers
 
 
 def test_cannot_max_500_tracks_per_playlist(factories, preferences):
@@ -124,3 +126,25 @@ def test_playlist_serializer_include_duration(factories, api_request):
 
     serializer = serializers.PlaylistSerializer(qs.get())
     assert serializer.data["duration"] == 45
+
+
+def test_playlist_serializer(factories, to_api_date):
+    playlist = factories["playlists.Playlist"]()
+    actor = playlist.user.create_actor()
+
+    expected = {
+        "id": playlist.pk,
+        "name": playlist.name,
+        "privacy_level": playlist.privacy_level,
+        "is_playable": None,
+        "creation_date": to_api_date(playlist.creation_date),
+        "modification_date": to_api_date(playlist.modification_date),
+        "actor": federation_serializers.APIActorSerializer(actor).data,
+        "user": users_serializers.UserBasicSerializer(playlist.user).data,
+        "duration": 0,
+        "tracks_count": 0,
+        "album_covers": [],
+    }
+    serializer = serializers.PlaylistSerializer(playlist)
+
+    assert serializer.data == expected
diff --git a/api/tests/radios/test_api.py b/api/tests/radios/test_api.py
index 0ddebe3878051113f4bbdfd2776839a58fbf3530..02d0dc954a72608f7e3da90a5de0af07120a1e2b 100644
--- a/api/tests/radios/test_api.py
+++ b/api/tests/radios/test_api.py
@@ -1,3 +1,5 @@
+import pytest
+
 from django.urls import reverse
 
 from funkwhale_api.music.serializers import TrackSerializer
@@ -129,3 +131,16 @@ def test_clean_config_is_called_on_serializer_save(mocker, factories):
     instance = serializer.save(user=user)
     spied.assert_called_once_with(data["config"][0])
     assert instance.config[0]["names"] == [artist.name]
+
+
+@pytest.mark.parametrize("radio_type", ["random", "less-listened", "favorites"])
+def test_create_radio_session(radio_type, logged_in_api_client):
+
+    url = reverse("api:v1:radios:sessions-list")
+    response = logged_in_api_client.post(url, {"radio_type": radio_type})
+
+    assert response.status_code == 201
+    assert response.data["radio_type"] == radio_type
+    assert (
+        response.data["id"] == logged_in_api_client.user.radio_sessions.latest("id").pk
+    )
diff --git a/api/tests/radios/test_radios.py b/api/tests/radios/test_radios.py
index 640e712117bfb2ffc641af43daaa0eb5268ad0fd..040217aac39308d5f6d77f4236e33fa05381b8a1 100644
--- a/api/tests/radios/test_radios.py
+++ b/api/tests/radios/test_radios.py
@@ -197,15 +197,19 @@ def test_can_start_artist_radio(factories):
 
 def test_can_start_tag_radio(factories):
     user = factories["users.User"]()
-    tag = factories["taggit.Tag"]()
-    factories["music.Upload"].create_batch(5)
-    good_files = factories["music.Upload"].create_batch(5, track__tags=[tag])
-    good_tracks = [f.track for f in good_files]
+    tag = factories["tags.Tag"]()
+    good_tracks = [
+        factories["music.Track"](set_tags=[tag.name]),
+        factories["music.Track"](album__set_tags=[tag.name]),
+        factories["music.Track"](album__artist__set_tags=[tag.name]),
+    ]
+    factories["music.Track"].create_batch(3, set_tags=["notrock"])
 
     radio = radios.TagRadio()
     session = radio.start_session(user, related_object=tag)
     assert session.radio_type == "tag"
-    for i in range(5):
+
+    for i in range(3):
         assert radio.pick(filter_playable=False) in good_tracks
 
 
diff --git a/api/tests/radios/test_serializers.py b/api/tests/radios/test_serializers.py
new file mode 100644
index 0000000000000000000000000000000000000000..748bd993a9add630699e274b8de2f4d2c45456e0
--- /dev/null
+++ b/api/tests/radios/test_serializers.py
@@ -0,0 +1,44 @@
+from funkwhale_api.radios import serializers
+
+
+def test_create_tag_radio(factories):
+    tag = factories["tags.Tag"]()
+
+    data = {"radio_type": "tag", "related_object_id": tag.name}
+
+    serializer = serializers.RadioSessionSerializer(data=data)
+    assert serializer.is_valid(raise_exception=True) is True
+
+    session = serializer.save()
+
+    assert session.related_object_id == tag.pk
+    assert session.related_object == tag
+
+
+def test_create_artist_radio(factories):
+    artist = factories["music.Artist"]()
+
+    data = {"radio_type": "artist", "related_object_id": artist.pk}
+
+    serializer = serializers.RadioSessionSerializer(data=data)
+    assert serializer.is_valid(raise_exception=True) is True
+
+    session = serializer.save()
+
+    assert session.related_object_id == artist.pk
+    assert session.related_object == artist
+
+
+def test_tag_radio_repr(factories, to_api_date):
+    tag = factories["tags.Tag"]()
+    session = factories["radios.RadioSession"](related_object=tag, radio_type="tag")
+
+    expected = {
+        "id": session.pk,
+        "radio_type": "tag",
+        "custom_radio": None,
+        "user": session.user.pk,
+        "related_object_id": tag.name,
+        "creation_date": to_api_date(session.creation_date),
+    }
+    assert serializers.RadioSessionSerializer(session).data == expected
diff --git a/api/tests/subsonic/test_renderers.py b/api/tests/subsonic/test_renderers.py
index acd5500e665b6d4f9d32c0ea6cd9689a9bb37421..501ae48ce559277baf5b378b41c042d7241ea9a3 100644
--- a/api/tests/subsonic/test_renderers.py
+++ b/api/tests/subsonic/test_renderers.py
@@ -67,9 +67,12 @@ def test_json_renderer():
 
 
 def test_xml_renderer_dict_to_xml():
-    payload = {"hello": "world", "item": [{"this": 1}, {"some": "node"}]}
+    payload = {
+        "hello": "world",
+        "item": [{"this": 1, "value": "text"}, {"some": "node"}],
+    }
     expected = """<?xml version="1.0" encoding="UTF-8"?>
-<key hello="world"><item this="1" /><item some="node" /></key>"""
+<key hello="world"><item this="1">text</item><item some="node" /></key>"""
     result = renderers.dict_to_xml_tree("key", payload)
     exp = ET.fromstring(expected)
     assert ET.tostring(result) == ET.tostring(exp)
diff --git a/api/tests/subsonic/test_serializers.py b/api/tests/subsonic/test_serializers.py
index 2c468a4f027e20b01d975552e8a841464e2e6d4a..d6025a90b9bfc158f269a9fe0bfbab6e330ad0b4 100644
--- a/api/tests/subsonic/test_serializers.py
+++ b/api/tests/subsonic/test_serializers.py
@@ -1,3 +1,5 @@
+import pytest
+
 from funkwhale_api.music import models as music_models
 from funkwhale_api.subsonic import serializers
 
@@ -61,6 +63,27 @@ def test_get_artist_serializer(factories):
     assert serializers.GetArtistSerializer(artist).data == expected
 
 
+@pytest.mark.parametrize(
+    "mimetype, extension, expected",
+    [
+        ("audio/ogg", "noop", "audio/ogg"),
+        ("", "ogg", "audio/ogg"),
+        ("", "mp3", "audio/mpeg"),
+        ("", "", "audio/mpeg"),
+    ],
+)
+def test_get_track_data_content_type(mimetype, extension, expected, factories):
+    upload = factories["music.Upload"]()
+    upload.mimetype = mimetype
+    upload.audio_file = "test.{}".format(extension)
+
+    data = serializers.get_track_data(
+        album=upload.track.album, track=upload.track, upload=upload
+    )
+
+    assert data["contentType"] == expected
+
+
 def test_get_album_serializer(factories):
     artist = factories["music.Artist"]()
     album = factories["music.Album"](artist=artist)
diff --git a/api/tests/subsonic/test_views.py b/api/tests/subsonic/test_views.py
index e227f4d1d1abbb9db924cc20b6065ea37f58c9dd..298ad34f7281ffe5148af6427dd35eb02dcfbe2b 100644
--- a/api/tests/subsonic/test_views.py
+++ b/api/tests/subsonic/test_views.py
@@ -375,6 +375,28 @@ def test_get_random_songs(f, db, logged_in_api_client, factories, mocker):
     order_by.assert_called_once_with("?")
 
 
+@pytest.mark.parametrize("f", ["json"])
+def test_get_genres(f, db, logged_in_api_client, factories, mocker):
+    url = reverse("api:subsonic-get_genres")
+    assert url.endswith("getGenres") is True
+    tag1 = factories["tags.Tag"](name="Pop")
+    tag2 = factories["tags.Tag"](name="Rock")
+
+    factories["music.Album"](set_tags=[tag1.name, tag2.name])
+    factories["music.Track"](set_tags=[tag1.name])
+    response = logged_in_api_client.get(url)
+
+    assert response.status_code == 200
+    assert response.data == {
+        "genres": {
+            "genre": [
+                {"songCount": 1, "albumCount": 1, "value": tag1.name},
+                {"songCount": 0, "albumCount": 1, "value": tag2.name},
+            ]
+        }
+    }
+
+
 @pytest.mark.parametrize("f", ["json"])
 def test_get_starred(f, db, logged_in_api_client, factories):
     url = reverse("api:subsonic-get_starred")
@@ -426,6 +448,49 @@ def test_get_album_list2_pagination(f, db, logged_in_api_client, factories):
     }
 
 
+@pytest.mark.parametrize("f", ["json"])
+def test_get_album_list2_by_genre(f, db, logged_in_api_client, factories):
+    url = reverse("api:subsonic-get_album_list2")
+    assert url.endswith("getAlbumList2") is True
+    album1 = factories["music.Album"](
+        artist__name="Artist1", playable=True, set_tags=["Rock"]
+    )
+    album2 = factories["music.Album"](
+        artist__name="Artist2", playable=True, artist__set_tags=["Rock"]
+    )
+    factories["music.Album"](playable=True, set_tags=["Pop"])
+    response = logged_in_api_client.get(
+        url, {"f": f, "type": "byGenre", "size": 5, "offset": 0, "genre": "rock"}
+    )
+
+    assert response.status_code == 200
+    assert response.data == {
+        "albumList2": {"album": serializers.get_album_list2_data([album1, album2])}
+    }
+
+
+@pytest.mark.parametrize("f", ["json"])
+@pytest.mark.parametrize(
+    "tags_field",
+    ["set_tags", "artist__set_tags", "album__set_tags", "album__artist__set_tags"],
+)
+def test_get_songs_by_genre(f, tags_field, db, logged_in_api_client, factories):
+    url = reverse("api:subsonic-get_songs_by_genre")
+    assert url.endswith("getSongsByGenre") is True
+    track1 = factories["music.Track"](playable=True, **{tags_field: ["Rock"]})
+    track2 = factories["music.Track"](playable=True, **{tags_field: ["Rock"]})
+    factories["music.Track"](playable=True, **{tags_field: ["Pop"]})
+    expected = {
+        "songsByGenre": {"song": serializers.get_song_list_data([track2, track1])}
+    }
+
+    response = logged_in_api_client.get(
+        url, {"f": f, "count": 5, "offset": 0, "genre": "rock"}
+    )
+    assert response.status_code == 200
+    assert response.data == expected
+
+
 @pytest.mark.parametrize("f", ["json"])
 def test_search3(f, db, logged_in_api_client, factories):
     url = reverse("api:subsonic-search3")
diff --git a/api/tests/tags/__init__.py b/api/tests/tags/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/api/tests/tags/test_filters.py b/api/tests/tags/test_filters.py
new file mode 100644
index 0000000000000000000000000000000000000000..3b812f0feb45180e0fd7892686b28ac58a812d76
--- /dev/null
+++ b/api/tests/tags/test_filters.py
@@ -0,0 +1,16 @@
+from funkwhale_api.tags import filters
+from funkwhale_api.tags import models
+
+
+def test_filter_search_tag(factories, queryset_equal_list):
+    matches = [
+        factories["tags.Tag"](name="Tag1"),
+        factories["tags.Tag"](name="TestTag1"),
+        factories["tags.Tag"](name="TestTag12"),
+    ]
+    factories["tags.Tag"](name="TestTag")
+    factories["tags.Tag"](name="TestTag2")
+    qs = models.Tag.objects.all().order_by("name")
+    filterset = filters.TagFilter({"q": "tag1"}, queryset=qs)
+
+    assert filterset.qs == matches
diff --git a/api/tests/tags/test_models.py b/api/tests/tags/test_models.py
new file mode 100644
index 0000000000000000000000000000000000000000..b59b28738b4ac557d305779d0aad931e204056fc
--- /dev/null
+++ b/api/tests/tags/test_models.py
@@ -0,0 +1,79 @@
+import pytest
+
+from funkwhale_api.tags import models
+
+
+@pytest.mark.parametrize(
+    "existing, given, expected",
+    [
+        ([], ["tag1"], ["tag1"]),
+        (["tag1"], ["tag1"], ["tag1"]),
+        (["tag1"], ["tag2"], ["tag1", "tag2"]),
+        (["tag1"], ["tag2", "tag3"], ["tag1", "tag2", "tag3"]),
+    ],
+)
+def test_add_tags(factories, existing, given, expected):
+    obj = factories["music.Artist"]()
+    for tag in existing:
+        factories["tags.TaggedItem"](content_object=obj, tag__name=tag)
+
+    models.add_tags(obj, *given)
+
+    tagged_items = models.TaggedItem.objects.all()
+
+    assert tagged_items.count() == len(expected)
+    for tag in expected:
+        match = tagged_items.get(tag__name=tag)
+        assert match.content_object == obj
+
+
+@pytest.mark.parametrize(
+    "existing, given, expected",
+    [
+        ([], ["tag1"], ["tag1"]),
+        (["tag1"], ["tag1"], ["tag1"]),
+        (["tag1"], [], []),
+        (["tag1"], ["tag2"], ["tag2"]),
+        (["tag1", "tag2"], ["tag2"], ["tag2"]),
+        (["tag1", "tag2"], ["tag3", "tag4"], ["tag3", "tag4"]),
+    ],
+)
+def test_set_tags(factories, existing, given, expected):
+    obj = factories["music.Artist"]()
+    for tag in existing:
+        factories["tags.TaggedItem"](content_object=obj, tag__name=tag)
+
+    models.set_tags(obj, *given)
+
+    tagged_items = models.TaggedItem.objects.all()
+
+    assert tagged_items.count() == len(expected)
+    for tag in expected:
+        match = tagged_items.get(tag__name=tag)
+        assert match.content_object == obj
+
+
+@pytest.mark.parametrize(
+    "max, tags, expected",
+    [
+        (5, ["hello", "world"], ["hello", "world"]),
+        # we truncate extra tags
+        (1, ["hello", "world"], ["hello"]),
+        (2, ["hello", "world", "foo"], ["hello", "world"]),
+    ],
+)
+def test_set_tags_honor_TAGS_MAX_BY_OBJ(factories, max, tags, expected, settings):
+    settings.TAGS_MAX_BY_OBJ = max
+    obj = factories["music.Artist"]()
+
+    models.set_tags(obj, *tags)
+
+    assert sorted(obj.tagged_items.values_list("tag__name", flat=True)) == expected
+
+
+@pytest.mark.parametrize("factory_name", ["music.Track", "music.Album", "music.Artist"])
+def test_models_that_support_tags(factories, factory_name):
+    tags = ["tag1", "tag2"]
+    obj = factories[factory_name](set_tags=tags)
+
+    assert sorted(obj.tagged_items.all().values_list("tag__name", flat=True)) == tags
diff --git a/api/tests/tags/test_serializers.py b/api/tests/tags/test_serializers.py
new file mode 100644
index 0000000000000000000000000000000000000000..dc3a64ae0751a3219653205c211ae41263af4d44
--- /dev/null
+++ b/api/tests/tags/test_serializers.py
@@ -0,0 +1,43 @@
+import pytest
+
+from funkwhale_api.tags import serializers
+
+
+def test_tag_serializer(factories, to_api_date):
+    tag = factories["tags.Tag"]()
+
+    serializer = serializers.TagSerializer(tag)
+
+    expected = {"name": tag.name, "creation_date": to_api_date(tag.creation_date)}
+
+    assert serializer.data == expected
+
+
+@pytest.mark.parametrize(
+    "name",
+    [
+        "",
+        "invalid because spaces",
+        "invalid-because-dashes",
+        "invalid because non breaking spaces",
+    ],
+)
+def test_tag_name_field_validation(name):
+    field = serializers.TagNameField()
+    with pytest.raises(serializers.serializers.ValidationError):
+        field.to_internal_value(name)
+
+
+@pytest.mark.parametrize(
+    "max, tags, expected",
+    [
+        (5, ["hello", "world"], ["hello", "world"]),
+        # we truncate extra tags
+        (1, ["hello", "world"], ["hello"]),
+        (2, ["hello", "world", "foo"], ["hello", "world"]),
+    ],
+)
+def test_tags_list_field_honor_TAGS_MAX_BY_OBJ(max, tags, expected, settings):
+    settings.TAGS_MAX_BY_OBJ = max
+    field = serializers.TagsListField()
+    assert field.to_internal_value(tags) == expected
diff --git a/api/tests/tags/test_views.py b/api/tests/tags/test_views.py
new file mode 100644
index 0000000000000000000000000000000000000000..b42e9ab3713e66dc1759c7bc7e5d76e697ee9616
--- /dev/null
+++ b/api/tests/tags/test_views.py
@@ -0,0 +1,53 @@
+from django.urls import reverse
+
+from funkwhale_api.tags import serializers
+
+
+def test_tags_list(factories, logged_in_api_client):
+    url = reverse("api:v1:tags-list")
+    tag = factories["tags.Tag"]()
+
+    expected = {
+        "count": 1,
+        "next": None,
+        "previous": None,
+        "results": [serializers.TagSerializer(tag).data],
+    }
+
+    response = logged_in_api_client.get(url)
+
+    assert response.data == expected
+
+
+def test_tags_list_ordering_length(factories, logged_in_api_client):
+    url = reverse("api:v1:tags-list")
+    tags = [
+        factories["tags.Tag"](name="iamareallylongtag"),
+        factories["tags.Tag"](name="short"),
+        factories["tags.Tag"](name="reallylongtag"),
+        factories["tags.Tag"](name="bar"),
+    ]
+    expected = {
+        "count": 4,
+        "next": None,
+        "previous": None,
+        "results": [
+            serializers.TagSerializer(tag).data
+            for tag in [tags[3], tags[1], tags[2], tags[0]]
+        ],
+    }
+
+    response = logged_in_api_client.get(url, {"ordering": "length"})
+
+    assert response.data == expected
+
+
+def test_tags_detail(factories, logged_in_api_client):
+    tag = factories["tags.Tag"]()
+    url = reverse("api:v1:tags-detail", kwargs={"name": tag.name})
+
+    expected = serializers.TagSerializer(tag).data
+
+    response = logged_in_api_client.get(url)
+
+    assert response.data == expected
diff --git a/api/tests/test_test_utils.py b/api/tests/test_test_utils.py
new file mode 100644
index 0000000000000000000000000000000000000000..a17b2185608d90905274fc2f202f68d02daf2dc9
--- /dev/null
+++ b/api/tests/test_test_utils.py
@@ -0,0 +1,6 @@
+from . import utils as test_utils
+
+
+def test_to_api_date(now):
+
+    assert test_utils.to_api_date(now) == now.isoformat().split("+")[0] + "Z"
diff --git a/api/tests/users/oauth/test_api_permissions.py b/api/tests/users/oauth/test_api_permissions.py
index e73d3a3f91c71b30c2444719ed035f5049d3d4a2..b030803ee264b3f27450b2f9421377ded8ee3562 100644
--- a/api/tests/users/oauth/test_api_permissions.py
+++ b/api/tests/users/oauth/test_api_permissions.py
@@ -35,6 +35,7 @@ from funkwhale_api.users.oauth import scopes
             "get",
         ),
         ("api:v1:federation:library-follows-list", {}, "read:follows", "get"),
+        ("api:v1:tags-list", {}, "read:libraries", "get"),
         # admin / privileged stuff
         ("api:v1:instance:admin-settings-list", {}, "read:instance:settings", "get"),
         (
diff --git a/api/tests/users/oauth/test_permissions.py b/api/tests/users/oauth/test_permissions.py
index 65974fbf645f92af478457fadd7138f7067a3a01..a5cd12034fd2aa4e07b0e5bfa24405d68b2baf7e 100644
--- a/api/tests/users/oauth/test_permissions.py
+++ b/api/tests/users/oauth/test_permissions.py
@@ -59,7 +59,9 @@ def test_scope_permission_anonymous_policy(
     policy, preference, expected, preferences, mocker, anonymous_user
 ):
     preferences["common__api_authentication_required"] = preference
-    view = mocker.Mock(required_scope="libraries", anonymous_policy=policy)
+    view = mocker.Mock(
+        required_scope="libraries", anonymous_policy=policy, anonymous_scopes=set()
+    )
     request = mocker.Mock(method="GET", user=anonymous_user, actor=None)
 
     p = permissions.ScopePermission()
@@ -72,6 +74,7 @@ def test_scope_permission_dict_no_required(mocker, anonymous_user):
         required_scope={"read": None, "write": "write:profile"},
         anonymous_policy=True,
         action="read",
+        anonymous_scopes=set(),
     )
     request = mocker.Mock(method="GET", user=anonymous_user, actor=None)
 
@@ -164,7 +167,9 @@ def test_scope_permission_token_anonymous_user_auth_not_required(
     preferences["common__api_authentication_required"] = False
     should_allow = mocker.patch.object(permissions, "should_allow")
     request = mocker.Mock(method="POST", user=anonymous_user, actor=None)
-    view = mocker.Mock(required_scope="profile", anonymous_policy="setting")
+    view = mocker.Mock(
+        required_scope="profile", anonymous_policy="setting", anonymous_scopes=set()
+    )
 
     p = permissions.ScopePermission()
 
diff --git a/api/tests/users/oauth/test_scopes.py b/api/tests/users/oauth/test_scopes.py
index 3d12cb664e7dadcdc078706b0e79fae1764fe221..4943a8a1e1b8ab9e5bc0fd820f12487d14f28a2b 100644
--- a/api/tests/users/oauth/test_scopes.py
+++ b/api/tests/users/oauth/test_scopes.py
@@ -28,6 +28,8 @@ from funkwhale_api.users.oauth import scopes
                 "write:edits",
                 "read:filters",
                 "write:filters",
+                "read:reports",
+                "write:reports",
                 "read:listenings",
                 "write:listenings",
                 "read:security",
@@ -48,6 +50,10 @@ from funkwhale_api.users.oauth import scopes
                 "write:instance:edits",
                 "read:instance:libraries",
                 "write:instance:libraries",
+                "read:instance:notes",
+                "write:instance:notes",
+                "read:instance:reports",
+                "write:instance:reports",
             },
         ),
         (
@@ -71,6 +77,8 @@ from funkwhale_api.users.oauth import scopes
                 "write:edits",
                 "read:filters",
                 "write:filters",
+                "read:reports",
+                "write:reports",
                 "read:listenings",
                 "write:listenings",
                 "read:security",
@@ -87,6 +95,10 @@ from funkwhale_api.users.oauth import scopes
                 "write:instance:users",
                 "read:instance:invitations",
                 "write:instance:invitations",
+                "read:instance:notes",
+                "write:instance:notes",
+                "read:instance:reports",
+                "write:instance:reports",
             },
         ),
         (
@@ -110,6 +122,8 @@ from funkwhale_api.users.oauth import scopes
                 "write:edits",
                 "read:filters",
                 "write:filters",
+                "read:reports",
+                "write:reports",
                 "read:listenings",
                 "write:listenings",
                 "read:security",
@@ -120,6 +134,10 @@ from funkwhale_api.users.oauth import scopes
                 "write:instance:accounts",
                 "read:instance:domains",
                 "write:instance:domains",
+                "read:instance:notes",
+                "write:instance:notes",
+                "read:instance:reports",
+                "write:instance:reports",
             },
         ),
         (
@@ -143,6 +161,8 @@ from funkwhale_api.users.oauth import scopes
                 "write:edits",
                 "read:filters",
                 "write:filters",
+                "read:reports",
+                "write:reports",
                 "read:listenings",
                 "write:listenings",
                 "read:security",
diff --git a/api/tests/users/test_admin.py b/api/tests/users/test_admin.py
index 03b316eb0d9418422dc68690821a535b5389daac..0af38c0ee5b964513241690ab213ffd146782c53 100644
--- a/api/tests/users/test_admin.py
+++ b/api/tests/users/test_admin.py
@@ -4,7 +4,11 @@ from funkwhale_api.users.admin import MyUserCreationForm
 def test_clean_username_success(db):
     # Instantiate the form with a new username
     form = MyUserCreationForm(
-        {"username": "alamode", "password1": "123456", "password2": "123456"}
+        {
+            "username": "alamode",
+            "password1": "thisismypassword",
+            "password2": "thisismypassword",
+        }
     )
     # Run is_valid() to trigger the validation
     valid = form.is_valid()
@@ -19,7 +23,11 @@ def test_clean_username_false(factories):
     user = factories["users.User"]()
     # Instantiate the form with the same username as self.user
     form = MyUserCreationForm(
-        {"username": user.username, "password1": "123456", "password2": "123456"}
+        {
+            "username": user.username,
+            "password1": "thisismypassword",
+            "password2": "thisismypassword",
+        }
     )
     # Run is_valid() to trigger the validation, which is going to fail
     # because the username is already taken
diff --git a/api/tests/users/test_jwt.py b/api/tests/users/test_jwt.py
index 83de757c8b1d49570f680f2673aebefb3e0803e5..d0fe1a1fa70a0ddb5736eb95fdda7178ecb77c60 100644
--- a/api/tests/users/test_jwt.py
+++ b/api/tests/users/test_jwt.py
@@ -22,3 +22,22 @@ def test_can_invalidate_token_when_changing_user_secret_key(factories):
     # token should be invalid
     with pytest.raises(DecodeError):
         api_settings.JWT_DECODE_HANDLER(payload)
+
+
+def test_can_invalidate_token_when_changing_settings_secret_key(factories, settings):
+    settings.SECRET_KEY = "test1"
+    user = factories["users.User"]()
+    jwt_payload_handler = api_settings.JWT_PAYLOAD_HANDLER
+    jwt_encode_handler = api_settings.JWT_ENCODE_HANDLER
+    payload = jwt_payload_handler(user)
+    payload = jwt_encode_handler(payload)
+
+    # this should work
+    api_settings.JWT_DECODE_HANDLER(payload)
+
+    # now we update the secret key
+    settings.SECRET_KEY = "test2"
+
+    # token should be invalid
+    with pytest.raises(DecodeError):
+        api_settings.JWT_DECODE_HANDLER(payload)
diff --git a/api/tests/users/test_models.py b/api/tests/users/test_models.py
index 1b185e55f88844baa9400a82c49dff3d706a24f7..7552094ae31943124f71c0493424855d35301832 100644
--- a/api/tests/users/test_models.py
+++ b/api/tests/users/test_models.py
@@ -176,11 +176,12 @@ def test_creating_actor_from_user(factories, settings):
 
 
 def test_get_channels_groups(factories):
-    user = factories["users.User"]()
+    user = factories["users.User"](permission_library=True)
 
     assert user.get_channels_groups() == [
         "user.{}.imports".format(user.pk),
         "user.{}.inbox".format(user.pk),
+        "admin.library",
     ]
 
 
@@ -221,11 +222,18 @@ def test_user_get_quota_status(factories, preferences, mocker):
     }
 
 
-def test_deleting_users_deletes_associated_actor(factories):
-    actor = factories["federation.Actor"]()
-    user = factories["users.User"](actor=actor)
-
-    user.delete()
+@pytest.mark.parametrize(
+    "setting_name, field",
+    [
+        ("INSTANCE_SUPPORT_MESSAGE_DELAY", "instance_support_message_display_date"),
+        ("FUNKWHALE_SUPPORT_MESSAGE_DELAY", "funkwhale_support_message_display_date"),
+    ],
+)
+def test_creating_user_set_support_display_date(
+    setting_name, field, settings, factories, now
+):
+    setattr(settings, setting_name, 66)  # display message every 66 days
+    expected = now + datetime.timedelta(days=66)
+    user = factories["users.User"]()
 
-    with pytest.raises(actor.DoesNotExist):
-        actor.refresh_from_db()
+    assert getattr(user, field) == expected
diff --git a/api/tests/users/test_mutations.py b/api/tests/users/test_mutations.py
new file mode 100644
index 0000000000000000000000000000000000000000..33902153fbc292335e7005610d2399cbb8f77388
--- /dev/null
+++ b/api/tests/users/test_mutations.py
@@ -0,0 +1,33 @@
+from funkwhale_api.users import tasks
+
+
+def test_delete_account_mutation(mocker, factories, now):
+    user = factories["users.User"](subsonic_api_token="test", password="test")
+    actor = user.create_actor()
+    on_commit = mocker.patch("funkwhale_api.common.utils.on_commit")
+
+    secret_key = user.secret_key
+    set_unusable_password = mocker.spy(user, "set_unusable_password")
+    factories["users.Grant"](user=user)
+    factories["users.AccessToken"](user=user)
+    factories["users.RefreshToken"](user=user)
+    mutation = factories["common.Mutation"](
+        type="delete_account", target=actor, payload={}
+    )
+
+    mutation.apply()
+    user.refresh_from_db()
+
+    set_unusable_password.assert_called_once_with()
+    assert user.has_usable_password() is False
+    assert user.subsonic_api_token is None
+    assert user.secret_key is not None and user.secret_key != secret_key
+    assert user.users_grant.count() == 0
+    assert user.users_refreshtoken.count() == 0
+    assert user.users_accesstoken.count() == 0
+    on_commit.assert_called_once_with(tasks.delete_account.delay, user_id=user.pk)
+
+    assert mutation.previous_state == {
+        "actor": {"preferred_username": actor.preferred_username},
+        "user": {"username": user.username, "id": user.pk},
+    }
diff --git a/api/tests/users/test_serializers.py b/api/tests/users/test_serializers.py
new file mode 100644
index 0000000000000000000000000000000000000000..02d1ac052fe5b027e755eaaacd5bdc4b232e051a
--- /dev/null
+++ b/api/tests/users/test_serializers.py
@@ -0,0 +1,44 @@
+import pytest
+
+from funkwhale_api.users import serializers
+
+
+@pytest.mark.parametrize(
+    "data, expected_error",
+    [
+        (
+            {
+                "username": "myusername",
+                "email": "test@hello.com",
+                "password1": "myusername",
+            },
+            r".*password is too similar.*",
+        ),
+        (
+            {"username": "myusername", "email": "test@hello.com", "password1": "test"},
+            r".*must contain at least 8 characters.*",
+        ),
+        (
+            {
+                "username": "myusername",
+                "email": "test@hello.com",
+                "password1": "superman",
+            },
+            r".*password is too common.*",
+        ),
+        (
+            {
+                "username": "myusername",
+                "email": "test@hello.com",
+                "password1": "123457809878",
+            },
+            r".*password is entirely numeric.*",
+        ),
+    ],
+)
+def test_registration_serializer_validates_password_properly(data, expected_error, db):
+    data["password2"] = data["password1"]
+    serializer = serializers.RegisterSerializer(data=data)
+
+    with pytest.raises(serializers.serializers.ValidationError, match=expected_error):
+        serializer.is_valid(raise_exception=True)
diff --git a/api/tests/users/test_tasks.py b/api/tests/users/test_tasks.py
new file mode 100644
index 0000000000000000000000000000000000000000..2430718504454924b7271c2873a114eef4785f27
--- /dev/null
+++ b/api/tests/users/test_tasks.py
@@ -0,0 +1,32 @@
+import pytest
+
+from funkwhale_api.federation import routes
+from funkwhale_api.users import tasks
+
+
+def test_delete_account(factories, mocker):
+    user = factories["users.User"]()
+    actor = user.create_actor()
+    library = factories["music.Library"](actor=actor)
+    unrelated_library = factories["music.Library"]()
+    dispatch = mocker.patch.object(routes.outbox, "dispatch")
+
+    tasks.delete_account(user_id=user.pk)
+
+    dispatch.assert_called_once_with(
+        {"type": "Delete", "object": {"type": actor.type}}, context={"actor": actor}
+    )
+
+    with pytest.raises(user.DoesNotExist):
+        user.refresh_from_db()
+
+    with pytest.raises(library.DoesNotExist):
+        library.refresh_from_db()
+
+    # this one shouldn't be deleted
+    unrelated_library.refresh_from_db()
+    actor.refresh_from_db()
+
+    assert actor.type == "Tombstone"
+    assert actor.name is None
+    assert actor.summary is None
diff --git a/api/tests/users/test_views.py b/api/tests/users/test_views.py
index 956a7178cf98641e295cc6369d198cf954fd47e6..8156c84b50f33c95a512d09daad8d531dcdb67de 100644
--- a/api/tests/users/test_views.py
+++ b/api/tests/users/test_views.py
@@ -9,8 +9,8 @@ def test_can_create_user_via_api(preferences, api_client, db):
     data = {
         "username": "test1",
         "email": "test1@test.com",
-        "password1": "testtest",
-        "password2": "testtest",
+        "password1": "thisismypassword",
+        "password2": "thisismypassword",
     }
     preferences["users__registration_enabled"] = True
     response = api_client.post(url, data)
@@ -39,7 +39,7 @@ def test_username_only_accepts_letters_and_underscores(
 def test_can_restrict_usernames(settings, preferences, db, api_client):
     url = reverse("rest_register")
     preferences["users__registration_enabled"] = True
-    settings.USERNAME_BLACKLIST = ["funkwhale"]
+    settings.ACCOUNT_USERNAME_BLACKLIST = ["funkwhale"]
     data = {
         "username": "funkwhale",
         "email": "contact@funkwhale.io",
@@ -72,8 +72,8 @@ def test_can_signup_with_invitation(preferences, factories, api_client):
     data = {
         "username": "test1",
         "email": "test1@test.com",
-        "password1": "testtest",
-        "password2": "testtest",
+        "password1": "thisismypassword",
+        "password2": "thisismypassword",
         "invitation": "hello",
     }
     preferences["users__registration_enabled"] = False
@@ -157,11 +157,16 @@ def test_changing_password_updates_secret_key(logged_in_api_client):
     user = logged_in_api_client.user
     password = user.password
     secret_key = user.secret_key
-    payload = {"old_password": "test", "new_password1": "new", "new_password2": "new"}
+    payload = {
+        "old_password": "test",
+        "new_password1": "thisismypassword",
+        "new_password2": "thisismypassword",
+    }
     url = reverse("change_password")
 
-    logged_in_api_client.post(url, payload)
+    response = logged_in_api_client.post(url, payload)
 
+    assert response.status_code == 200
     user.refresh_from_db()
 
     assert user.secret_key != secret_key
@@ -295,8 +300,8 @@ def test_creating_user_creates_actor_as_well(
     data = {
         "username": "test1",
         "email": "test1@test.com",
-        "password1": "testtest",
-        "password2": "testtest",
+        "password1": "thisismypassword",
+        "password2": "thisismypassword",
     }
     preferences["users__registration_enabled"] = True
     mocker.patch("funkwhale_api.users.models.create_actor", return_value=actor)
@@ -316,8 +321,8 @@ def test_creating_user_sends_confirmation_email(
     data = {
         "username": "test1",
         "email": "test1@test.com",
-        "password1": "testtest",
-        "password2": "testtest",
+        "password1": "thisismypassword",
+        "password2": "thisismypassword",
     }
     preferences["users__registration_enabled"] = True
     preferences["instance__name"] = "Hello world"
@@ -328,3 +333,57 @@ def test_creating_user_sends_confirmation_email(
     confirmation_message = mailoutbox[-1]
     assert "Hello world" in confirmation_message.body
     assert settings.FUNKWHALE_HOSTNAME in confirmation_message.body
+
+
+def test_user_account_deletion_requires_valid_password(logged_in_api_client):
+    user = logged_in_api_client.user
+    user.set_password("mypassword")
+    url = reverse("api:v1:users:users-me")
+    payload = {"password": "invalid", "confirm": True}
+    response = logged_in_api_client.delete(url, payload)
+
+    assert response.status_code == 400
+
+
+def test_user_account_deletion_requires_confirmation(logged_in_api_client):
+    user = logged_in_api_client.user
+    user.set_password("mypassword")
+    url = reverse("api:v1:users:users-me")
+    payload = {"password": "mypassword", "confirm": False}
+    response = logged_in_api_client.delete(url, payload)
+
+    assert response.status_code == 400
+
+
+def test_user_account_deletion_triggers_delete_account(logged_in_api_client, mocker):
+    user = logged_in_api_client.user
+    user.set_password("mypassword")
+    url = reverse("api:v1:users:users-me")
+    payload = {"password": "mypassword", "confirm": True}
+    delete_account = mocker.patch("funkwhale_api.users.tasks.delete_account.delay")
+    response = logged_in_api_client.delete(url, payload)
+
+    assert response.status_code == 204
+    delete_account.assert_called_once_with(user_id=user.pk)
+
+
+def test_username_with_existing_local_account_are_invalid(
+    settings, preferences, factories, api_client
+):
+    actor = factories["users.User"]().create_actor()
+    user = actor.user
+    user.delete()
+    url = reverse("rest_register")
+    preferences["users__registration_enabled"] = True
+    settings.ACCOUNT_USERNAME_BLACKLIST = []
+    data = {
+        "username": user.username,
+        "email": "contact@funkwhale.io",
+        "password1": "testtest",
+        "password2": "testtest",
+    }
+
+    response = api_client.post(url, data)
+
+    assert response.status_code == 400
+    assert "username" in response.data
diff --git a/api/tests/utils.py b/api/tests/utils.py
new file mode 100644
index 0000000000000000000000000000000000000000..868972aa432e723d430268b0be397496049797f3
--- /dev/null
+++ b/api/tests/utils.py
@@ -0,0 +1,12 @@
+import datetime
+from rest_framework import fields as rest_fields
+
+
+def to_api_date(value):
+    if isinstance(value, datetime.datetime):
+        f = rest_fields.DateTimeField()
+        return f.to_representation(value)
+    if isinstance(value, datetime.date):
+        f = rest_fields.DateField()
+        return f.to_representation(value)
+    raise ValueError("Invalid value: {}".format(value))
diff --git a/changes/changelog.d/261.feature b/changes/changelog.d/261.feature
new file mode 100644
index 0000000000000000000000000000000000000000..8d5e7139b87c57bae79ded5f6c71ead4fe455427
--- /dev/null
+++ b/changes/changelog.d/261.feature
@@ -0,0 +1 @@
+Enforce a configurable rate limit on the API to mitigate abuse (#261)
diff --git a/changes/changelog.d/432.feature b/changes/changelog.d/432.feature
new file mode 100644
index 0000000000000000000000000000000000000000..75017106a36eac861f706508e11777ac6ed9b821
--- /dev/null
+++ b/changes/changelog.d/432.feature
@@ -0,0 +1 @@
+Support for genres, via tags (#432)
diff --git a/changes/changelog.d/548.enhancement b/changes/changelog.d/548.enhancement
new file mode 100644
index 0000000000000000000000000000000000000000..99cd04941f768888dc13a7f7315fdf2223c220d7
--- /dev/null
+++ b/changes/changelog.d/548.enhancement
@@ -0,0 +1 @@
+Mods can now change a library visibility through the admin UI (#548)
diff --git a/changes/changelog.d/661.enhancement b/changes/changelog.d/661.enhancement
new file mode 100644
index 0000000000000000000000000000000000000000..38553fbfa260fdf86062b705ecf06b2f77c221e4
--- /dev/null
+++ b/changes/changelog.d/661.enhancement
@@ -0,0 +1 @@
+Support for M4A/AAC files (#661)
diff --git a/changes/changelog.d/710.add-track-dropdown b/changes/changelog.d/710.add-track-dropdown
new file mode 100644
index 0000000000000000000000000000000000000000..b82cf92ea86d9ae6aacea9d46d7917a6f1d9ff5c
--- /dev/null
+++ b/changes/changelog.d/710.add-track-dropdown
@@ -0,0 +1 @@
+Add dropdown menu to track table (#531)
diff --git a/changes/changelog.d/710.make-album-cards-independent b/changes/changelog.d/710.make-album-cards-independent
new file mode 100644
index 0000000000000000000000000000000000000000..49cfd424843582a2940b53420f244297b0ee44dd
--- /dev/null
+++ b/changes/changelog.d/710.make-album-cards-independent
@@ -0,0 +1 @@
+Make album cards height independent (#710)
diff --git a/changes/changelog.d/756.feature b/changes/changelog.d/756.feature
new file mode 100644
index 0000000000000000000000000000000000000000..402b0e589ffb2c255d6ab392f822afab77b84b21
--- /dev/null
+++ b/changes/changelog.d/756.feature
@@ -0,0 +1 @@
+Dark theme (#756)
diff --git a/changes/changelog.d/761.enhancement b/changes/changelog.d/761.enhancement
new file mode 100644
index 0000000000000000000000000000000000000000..005e9156dc13e8f4484695a710d1e1b89c34a86c
--- /dev/null
+++ b/changes/changelog.d/761.enhancement
@@ -0,0 +1 @@
+Added the option to replace the queue's current contents with a selected album or track (#761)
\ No newline at end of file
diff --git a/changes/changelog.d/834.enhancement b/changes/changelog.d/834.enhancement
new file mode 100644
index 0000000000000000000000000000000000000000..58ab1161e504919ba2dc0f0303cd37813d47f671
--- /dev/null
+++ b/changes/changelog.d/834.enhancement
@@ -0,0 +1 @@
+Simplified embedded docker reverse proxy IP configuration (#834)
diff --git a/changes/changelog.d/839.feature b/changes/changelog.d/839.feature
new file mode 100644
index 0000000000000000000000000000000000000000..7f72f000c1133094502050349b04dfa8b3902d79
--- /dev/null
+++ b/changes/changelog.d/839.feature
@@ -0,0 +1 @@
+Added periodical message to incite people to support their pod and Funkwhale (#839)
diff --git a/changes/changelog.d/844.enhancement b/changes/changelog.d/844.enhancement
new file mode 100644
index 0000000000000000000000000000000000000000..cf036b8736a0b54fadd1f607adec91c4d0b3d29d
--- /dev/null
+++ b/changes/changelog.d/844.enhancement
@@ -0,0 +1 @@
+Added Czech translation (#844)
diff --git a/changes/changelog.d/845.enhancement b/changes/changelog.d/845.enhancement
new file mode 100644
index 0000000000000000000000000000000000000000..021e937feb46fac3c9f3079438c86059535f52fe
--- /dev/null
+++ b/changes/changelog.d/845.enhancement
@@ -0,0 +1 @@
+Added Catalan translation files
diff --git a/changes/changelog.d/846.bugfix b/changes/changelog.d/846.bugfix
new file mode 100644
index 0000000000000000000000000000000000000000..a279c90e4cc80d299218069683f4c88698eff3e2
--- /dev/null
+++ b/changes/changelog.d/846.bugfix
@@ -0,0 +1 @@
+Added context strings to en_GB translations so that picking the language changes the interface as expected
diff --git a/changes/changelog.d/852.feature b/changes/changelog.d/852.feature
new file mode 100644
index 0000000000000000000000000000000000000000..3ce6f96bece559e194e20ee139f550e742c2c10d
--- /dev/null
+++ b/changes/changelog.d/852.feature
@@ -0,0 +1 @@
+Users can now delete their account without admin intervention (#852)
diff --git a/changes/changelog.d/853.feature b/changes/changelog.d/853.feature
new file mode 100644
index 0000000000000000000000000000000000000000..60b8ec2bc2479685ef4f2513091e5a914c7eb2ee
--- /dev/null
+++ b/changes/changelog.d/853.feature
@@ -0,0 +1 @@
+Allow-list to restrict federation to trusted domains (#853)
diff --git a/changes/changelog.d/854.enhancement b/changes/changelog.d/854.enhancement
new file mode 100644
index 0000000000000000000000000000000000000000..f5e7807169cc86f6458cd74eb466506c70890963
--- /dev/null
+++ b/changes/changelog.d/854.enhancement
@@ -0,0 +1 @@
+Hardcoded list of supported browsers to avoid unexpected regressions (#854)
diff --git a/changes/changelog.d/862.enhancement b/changes/changelog.d/862.enhancement
new file mode 100644
index 0000000000000000000000000000000000000000..1020083dbcc943b16a0c51806aeb20ec8d2e84f1
--- /dev/null
+++ b/changes/changelog.d/862.enhancement
@@ -0,0 +1 @@
+Replaced Daphne by Gunicorn/Uvicorn to improve stability, flexibility and performance (#862)
diff --git a/changes/changelog.d/865.bugfix b/changes/changelog.d/865.bugfix
new file mode 100644
index 0000000000000000000000000000000000000000..183530e0dcfa2bf26d844ac65a75f74bc25b3d4f
--- /dev/null
+++ b/changes/changelog.d/865.bugfix
@@ -0,0 +1 @@
+Improved performance of /artists, /albums and /tracks API endpoints by a factor 2 (#865)
diff --git a/changes/changelog.d/866.enhancement b/changes/changelog.d/866.enhancement
new file mode 100644
index 0000000000000000000000000000000000000000..9ebbd52dddd69aab088759f27c8f6462a5bd3852
--- /dev/null
+++ b/changes/changelog.d/866.enhancement
@@ -0,0 +1 @@
+New keyboard shortcuts added for enhanced control over audio player (#866)
\ No newline at end of file
diff --git a/changes/changelog.d/872.feature b/changes/changelog.d/872.feature
new file mode 100644
index 0000000000000000000000000000000000000000..083601ecfb05ad68debd48ba4ba6fe9d6dee8b7e
--- /dev/null
+++ b/changes/changelog.d/872.feature
@@ -0,0 +1 @@
+Redesign of the landing and about pages (#872)
diff --git a/changes/changelog.d/873.enhancement b/changes/changelog.d/873.enhancement
new file mode 100644
index 0000000000000000000000000000000000000000..fd8e3c3a1004f8b9bd00f3b40b13f2c0bce2c2a8
--- /dev/null
+++ b/changes/changelog.d/873.enhancement
@@ -0,0 +1 @@
+Numbers on the stats page will now be formatted in a human readable way and will update with the locale (#873)
diff --git a/changes/changelog.d/875.bugfix b/changes/changelog.d/875.bugfix
new file mode 100644
index 0000000000000000000000000000000000000000..609d83f6c5d5a42660cb421bb76815334a6fb6c0
--- /dev/null
+++ b/changes/changelog.d/875.bugfix
@@ -0,0 +1 @@
+Fixed broken embedded player layout after dependency update (#875)
diff --git a/changes/changelog.d/877.enhancement b/changes/changelog.d/877.enhancement
new file mode 100644
index 0000000000000000000000000000000000000000..8f65920c88d5321705b41144dabc7ceb87df4258
--- /dev/null
+++ b/changes/changelog.d/877.enhancement
@@ -0,0 +1 @@
+Ensure API urls answer with and without a trailing slash (#877)
diff --git a/changes/changelog.d/878.enhancement b/changes/changelog.d/878.enhancement
new file mode 100644
index 0000000000000000000000000000000000000000..9cad7bd5db5a420fbb3cba13d1ec5c59c8b583d7
--- /dev/null
+++ b/changes/changelog.d/878.enhancement
@@ -0,0 +1 @@
+Added a info message on embed wizard when anonymous access to content is disabled (#878)
diff --git a/changes/changelog.d/880.enhancement b/changes/changelog.d/880.enhancement
new file mode 100644
index 0000000000000000000000000000000000000000..58d308afab5727d185f533fc65fffa8bfdf77d80
--- /dev/null
+++ b/changes/changelog.d/880.enhancement
@@ -0,0 +1 @@
+Hardened security thanks to CSP and additional HTTP headers (#880)
diff --git a/changes/changelog.d/883.enhancement b/changes/changelog.d/883.enhancement
new file mode 100644
index 0000000000000000000000000000000000000000..00284a309373d65d0ec57576e39bfaccd2e297f7
--- /dev/null
+++ b/changes/changelog.d/883.enhancement
@@ -0,0 +1 @@
+Prevent usage of too weak passwords (#883)
diff --git a/changes/changelog.d/890.feature b/changes/changelog.d/890.feature
new file mode 100644
index 0000000000000000000000000000000000000000..a72ae9363a385dd7debe3be9d035501390f03fb4
--- /dev/null
+++ b/changes/changelog.d/890.feature
@@ -0,0 +1 @@
+Content and account reports (#890)
diff --git a/changes/changelog.d/892.add.placeholder.widget b/changes/changelog.d/892.add.placeholder.widget
new file mode 100644
index 0000000000000000000000000000000000000000..31cf6e5b05e700dec29ca76718205ef3657cacf0
--- /dev/null
+++ b/changes/changelog.d/892.add.placeholder.widget
@@ -0,0 +1 @@
+Display placeholder on homepage when there are no playlists (#892)
diff --git a/changes/changelog.d/893.bugfix b/changes/changelog.d/893.bugfix
new file mode 100644
index 0000000000000000000000000000000000000000..f37ae2a9b541fc15e5f871c0bd117ab515db2178
--- /dev/null
+++ b/changes/changelog.d/893.bugfix
@@ -0,0 +1 @@
+Fixed empty contentType causing client crash in some Subsonic payloads (#893)
diff --git a/changes/changelog.d/895.enhancement b/changes/changelog.d/895.enhancement
new file mode 100644
index 0000000000000000000000000000000000000000..d79abc598d7fe7fa5f71bd1e01481cacda2b704c
--- /dev/null
+++ b/changes/changelog.d/895.enhancement
@@ -0,0 +1 @@
+Artists with no albums will now show track count on artist card (#895)
\ No newline at end of file
diff --git a/changes/changelog.d/897.bugfix b/changes/changelog.d/897.bugfix
new file mode 100644
index 0000000000000000000000000000000000000000..8101cda4cfab7e2b34fb139b98c13d668d903b8d
--- /dev/null
+++ b/changes/changelog.d/897.bugfix
@@ -0,0 +1 @@
+Fix regression to quota bar color (#897)
\ No newline at end of file
diff --git a/changes/changelog.d/898.enhancement b/changes/changelog.d/898.enhancement
new file mode 100644
index 0000000000000000000000000000000000000000..80476e4a3d20a520df534cfc6178799026c079e2
--- /dev/null
+++ b/changes/changelog.d/898.enhancement
@@ -0,0 +1 @@
+Pickup folder.png and folder.jpg files for cover art when importing from CLI (#898)
diff --git a/changes/changelog.d/902.bugfix b/changes/changelog.d/902.bugfix
new file mode 100644
index 0000000000000000000000000000000000000000..afe2ade816ef700e28f09b64bd3ffd7179a0532f
--- /dev/null
+++ b/changes/changelog.d/902.bugfix
@@ -0,0 +1 @@
+Fixed search usability issue when browsing artists, albums, radios and playlists (#902)
diff --git a/changes/changelog.d/903.enhancement b/changes/changelog.d/903.enhancement
new file mode 100644
index 0000000000000000000000000000000000000000..de170b2720e5e00808c91cb3106d7a8f325a641a
--- /dev/null
+++ b/changes/changelog.d/903.enhancement
@@ -0,0 +1 @@
+Added field to manage user upload quota in Django backend (#903)
\ No newline at end of file
diff --git a/changes/changelog.d/904.bugfix b/changes/changelog.d/904.bugfix
new file mode 100644
index 0000000000000000000000000000000000000000..f4df441c7335cfdf9abd5d6023a7a31ed615ac80
--- /dev/null
+++ b/changes/changelog.d/904.bugfix
@@ -0,0 +1 @@
+Fixed a responsive display issues on 1024px wide screens (#904)
diff --git a/changes/changelog.d/912.bugfix b/changes/changelog.d/912.bugfix
new file mode 100644
index 0000000000000000000000000000000000000000..67e2d01ad8d01da33691a09d86a9337fe0788836
--- /dev/null
+++ b/changes/changelog.d/912.bugfix
@@ -0,0 +1 @@
+Fixed broken less listened radio (#912)
diff --git a/changes/changelog.d/913.bugfix b/changes/changelog.d/913.bugfix
new file mode 100644
index 0000000000000000000000000000000000000000..83b24b52b0a9230a8cbdca7e7a29ff91815cfa95
--- /dev/null
+++ b/changes/changelog.d/913.bugfix
@@ -0,0 +1 @@
+Fix missing license information on track details page (#913)
\ No newline at end of file
diff --git a/changes/changelog.d/924.bugfix b/changes/changelog.d/924.bugfix
new file mode 100644
index 0000000000000000000000000000000000000000..c5986581a85b6edaa3298989f72323cef7657927
--- /dev/null
+++ b/changes/changelog.d/924.bugfix
@@ -0,0 +1 @@
+Fixed in-place imported files not playing under nginx when filename contains ? or % (#924)
diff --git a/changes/changelog.d/932.bugfix b/changes/changelog.d/932.bugfix
new file mode 100644
index 0000000000000000000000000000000000000000..76b7c40f4519603f56463df6abcaefb00ec6f4fd
--- /dev/null
+++ b/changes/changelog.d/932.bugfix
@@ -0,0 +1 @@
+Updated docs to ensure streaming works when using Minio/S3 and DSub (#932)
diff --git a/changes/changelog.d/fomentic.enhancement b/changes/changelog.d/fomentic.enhancement
new file mode 100644
index 0000000000000000000000000000000000000000..0f6c4ad9556088a76350a7101191f028f4c1cb46
--- /dev/null
+++ b/changes/changelog.d/fomentic.enhancement
@@ -0,0 +1 @@
+Switched from Semantic-UI to Fomentic-UI
diff --git a/changes/changelog.d/imports-small.bugfix b/changes/changelog.d/imports-small.bugfix
new file mode 100644
index 0000000000000000000000000000000000000000..aed6bb902492edc51685346bc0c2dc62955e2ee7
--- /dev/null
+++ b/changes/changelog.d/imports-small.bugfix
@@ -0,0 +1 @@
+Fixed import crashing with empty cover file or too long values on some fields
diff --git a/changes/changelog.d/jwt.enhancement b/changes/changelog.d/jwt.enhancement
new file mode 100644
index 0000000000000000000000000000000000000000..0ce222251e8e0163c33ca7430a2508add9d3ffa3
--- /dev/null
+++ b/changes/changelog.d/jwt.enhancement
@@ -0,0 +1 @@
+Increase the security of JWT token generation by using DJANGO_SECRET_KEY as well as user-specific salt for the signature
diff --git a/changes/changelog.d/locale.bugfix b/changes/changelog.d/locale.bugfix
new file mode 100644
index 0000000000000000000000000000000000000000..5feeaa4c1aa0f6e12fecb8a2ed6df52795ce17f2
--- /dev/null
+++ b/changes/changelog.d/locale.bugfix
@@ -0,0 +1 @@
+Ensure selected locale is not reset to browser default when refreshing app
diff --git a/changes/changelog.d/opus-cover.bugfix b/changes/changelog.d/opus-cover.bugfix
new file mode 100644
index 0000000000000000000000000000000000000000..648e280935cb0e1d278693f69f95232fc476550f
--- /dev/null
+++ b/changes/changelog.d/opus-cover.bugfix
@@ -0,0 +1 @@
+Fixed album art not being retrieved from Ogg/Opus files
diff --git a/changes/changelog.d/playlist-embed.enhancement b/changes/changelog.d/playlist-embed.enhancement
new file mode 100644
index 0000000000000000000000000000000000000000..06c747770809d4e24ed7320b4e4255f5cdd1de4a
--- /dev/null
+++ b/changes/changelog.d/playlist-embed.enhancement
@@ -0,0 +1 @@
+Support embeds on public playlists
diff --git a/changes/changelog.d/purgecss.enhancement b/changes/changelog.d/purgecss.enhancement
new file mode 100644
index 0000000000000000000000000000000000000000..f1c43b8e4f8991f12a23cffeb10de9f67af4ac87
--- /dev/null
+++ b/changes/changelog.d/purgecss.enhancement
@@ -0,0 +1 @@
+Reduced CSS size by 30% using purgecss
diff --git a/changes/changelog.d/refetch.enhancement b/changes/changelog.d/refetch.enhancement
new file mode 100644
index 0000000000000000000000000000000000000000..f55facec8eb5938b42c628944c1c2de6b95cc6a6
--- /dev/null
+++ b/changes/changelog.d/refetch.enhancement
@@ -0,0 +1 @@
+Now refetch remote ActivityPub artists, albums and tracks to avoid local stale data
diff --git a/changes/changelog.d/search-results.enhancement b/changes/changelog.d/search-results.enhancement
new file mode 100644
index 0000000000000000000000000000000000000000..7effe4c893d78621a49a7f2ef1a73c44f9ec7e2e
--- /dev/null
+++ b/changes/changelog.d/search-results.enhancement
@@ -0,0 +1 @@
+Improve display of search results by including artist and album data
diff --git a/changes/changelog.d/ssl.bugfix b/changes/changelog.d/ssl.bugfix
new file mode 100644
index 0000000000000000000000000000000000000000..ab5d5a7d32feabdcf3802d011431042cf958cb90
--- /dev/null
+++ b/changes/changelog.d/ssl.bugfix
@@ -0,0 +1 @@
+Fixed broken external HTTPS request under some scenarios, because of missing PyOpenSSL
diff --git a/changes/notes.rst b/changes/notes.rst
index 40f7e3c59dad0be11ab443d4b7b05349f83df0ea..8477649411d04244d3aba68ec9876a0bc699436d 100644
--- a/changes/notes.rst
+++ b/changes/notes.rst
@@ -6,106 +6,225 @@ Next release notes
     Those release notes refer to the current development branch and are reset
     after each release.
 
-Edits on tracks, albums and artists
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-Funkwhale was a bit annoying when it camed to metadata. Tracks, albums and artists profiles
-were created from audio file tags, but basically immutable after that (unless you had
-admin access to Django's UI, which wasn't ideal to do this kind of changes).
+Support for genres via tags
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-With this release, everyone can suggest changes on track, album and artist pages. Users
-with the "library" permission can review suggested edits in a dedicated interface
-and apply/reject them.
+One of our most requested missing features is now available!
 
-Approved edits are broadcasted via federation, to ensure other instances get the information
-too.
+Starting with Funkwhale 0.20,
+Funkwhale will automatically extract genre information from uploaded files and associate it
+with the corresponding tracks in the form of tags (similar to Mastodon or Twitter hashtags).
+Please refer to `our tagging documentation <https://docs.funkwhale.audio/users/upload.html#tagging-files>`_
+for more information regarding the tagging process.
 
-Not all fields are currently modifiable using this feature. Especially, it's not possible
-to suggest a new album cover, or reassign a track to a different album or artist. Those will
-be implemented in a future release.
+Tags can also be associated with artists and albums, and updated after upload through the UI using
+the edit system released in Funkwhale 0.19. Tags are also fetched when retrieving content
+via federation.
 
-Admin UI for tracks, albums, artists, libraries and uploads
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Tags are used in various places to enhance user experience:
 
-As part of our ongoing effort to make Funkwhale easier to manage for instance owners,
-this release includes a brand new administration interface to deal with:
+- Tags are listed on tracks, albums and artist profiles
+- Each tag has a dedicated page were you can browse corresponding content and quickly start a radio
+- The custom radio builder now supports using tags
+- Subsonic apps that support genres - such as DSub or Ultrasonic - should display this information as well
 
-- tracks
-- albums
-- artists
-- libraries
-- uploads
+If you are a pod admin and want to extract tags from already uploaded content, you run `this snippet <https://dev.funkwhale.audio/funkwhale/funkwhale/snippets/43>`_
+and `this snippet <https://dev.funkwhale.audio/funkwhale/funkwhale/snippets/44>`_ in a ``python manage.py shell``.
 
-You can use this UI to quickly search for any object, delete objects in batch, understand
-where they are coming from etc. This new UI should remove the need to go through Django's
-admin in the vast majority of cases (but also includes a link to Django's admin when needed).
+Content and account reports
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
+It is now possible to report content, such as artists, tracks or libraries, as well as user accounts. Such reports are forwarded to the pod moderators,
+who can review it and delete reported content, block accounts or take any other action they deem necessary.
 
-Artist hiding in the interface
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+By default, both anonymous and authenticated users can submit these reports. This makes sure moderators can receive and handle
+takedown requests and other reports for illegal content that may be sent by third-parties without an account on the pod. However,
+you can disable anonymous reports completely via your pod settings.
 
-It's now possible for users to hide artists they don't want to see.
+Federation of the reports will be supported in a future release.
 
-Content linked to hidden artists will not show up in the interface anymore. Especially:
+For more information about this feature, please check out our documentation:
 
-- Hidden artists tracks are removed from the current queue
-- Starting a playlist will skip tracks from hidden artists
-- Recently favorited, recently listened and recently added widgets on the homepage won't include content from hidden artists
-- Radio suggestions will exclude tracks from hidden artists
-- Hidden artists won't appear in Subsonic apps
+-  `User documentation <https://docs.funkwhale.audio/moderator/reports.html>`_
+-  `Moderator documentation <https://docs.funkwhale.audio/users/reports.html>`_
 
-Results linked to hidden artists will continue to show up in search results and their profile page remains accessible.
+Account deletion
+^^^^^^^^^^^^^^^^
 
-OAuth2 authorization for better integration with third-party apps
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Users can now delete their account themselves, without involving an administrator.
 
-Funkwhale now support the OAuth2 authorization and authentication protocol which will allow
-third-party apps to interact with Funkwhale on behalf of users.
+The deletion process will remove any local data and objects associated with the account,
+but the username won't be able to new users to avoid impersonation. Deletion is also broadcasted
+to other known servers on the federation.
 
-This feature makes it possible to build third-party apps that have the same capabilities
-as Funkwhale's Web UI. The only exception at the moment is for actions that requires
-special permissions, such as modifying instance settings or moderation (but this will be
-enabled in a future release).
+For more information about this feature, please check out our documentation:
 
-If you want to start building an app on top of Funkwhale's API, please check-out
-`https://docs.funkwhale.audio/api.html`_ and `https://docs.funkwhale.audio/developers/authentication.html`_.
+-  `User documentation <https://docs.funkwhale.audio/users/account.html>`_
 
-Better error handling and display during import
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Landing and about page redesign [Manual action suggested]
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-Funkwhale should now be more resilient to missing tags in imported files, and give
-you more insights when something goes wrong, including the specific tags that were missing
-or invalid, and additional debug information to share in your support requests.
+In this release, we've completely redesigned the landing and about page, by making it more useful and adapted to your pod
+configuration. Among other things, the landing page will now include:
 
-This information is available in all pages that list uploads, when clicking on the button next to the upload status.
+- your pod and an excerpt from your pod's description
+- your pod banner image, if any
+- your contact email, if any
+- the login form
+- the signup form (if registrations are open on your pod)
+- some basic statistics about your pod
+- a widget including recently uploaded albums, if anonymous access is enabled
 
-Support for S3-compatible storages to store media files
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+The landing page will still include some information about Funkwhale, but in a less intrusive and proeminent way than before.
 
-Storing all media files on the Funkwhale server itself may not be possible or desirable
-in all scenarios. You can now configure Funkwhale to store those files in a S3
-bucket instead.
+Additionally, the about page now includes:
 
-Check-out `https://docs.funkwhale.audio/admin/external-storages.html`_ if you want to use
-this feature.
+- your pod name, description, rules and terms
+- your pod banner image, if any
+- your contact email, if any
+- comprehensive statistics about your pod
+- some info about your pod configuration, such as registration and federation status or the default upload quota for new users
 
-Prune library command
-^^^^^^^^^^^^^^^^^^^^^
+With this redesign, we've added a handful of additional pod settings:
 
-Users are often surprised by Funkwhale's tendency to keep track, album and artist
-metadata even if no associated files exist.
+- Pod banner image
+- Contact email
+- Rules
+- Terms of service
 
-To help with that, we now offer a ``prune_library`` management command you can run
-to purge your database from obsolete entries. `Please refer to our documentation
-for usage instructions <https://docs.funkwhale.audio/admin/commands.html#pruning-library>`_.
+We recommend taking a few moments to fill these accordingly to your needs, by visiting ``/manage/settings``.
 
-Check in-place files command
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Allow-list to restrict federation to trusted domains
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-When using in-place import with a living audio library, you'll quite often rename or
-remove files from the file system. Unfortunately, Funkwhale keeps a reference to those
-files in the database, which results in unplayable tracks.
+The Allow-Listing feature grants pod moderators
+and administrators greater control over federation
+by allowing you to create a pod-wide allow-list.
 
-To help with that, we now offer a ``check_inplace_files`` management command you can run
-to purge your database from obsolete files. `Please refer to our documentation
-for usage instructions <https://docs.funkwhale.audio/admin/commands.html#remove-obsolete-files-from-database>`_.
+When allow-listing is enabled, your pod's users will only
+be able to interact with pods included in the allow-list.
+Any messages, activity, uploads, or modifications to
+libraries and playlists will only be shared with pods
+on the allow-list. Pods which are not included in the
+allow-list will not have access to your pod's content
+or messages and will not be able to send anything to
+your pod.
+
+If you want to enable this feature on your pod, or learn more, please refer to `our documentation <https://docs.funkwhale.audio/moderator/listing.html>`_!
+
+Periodic message to incite people to support their pod and Funkwhale
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Users will now be reminded on a regular basis that they can help Funkwhale by donating or contributing.
+
+If specified by the pod admin, a separate and custom message will also be displayed in a similar way to provide instructions and links to support the pod.
+
+Both messages will appear for the first time 15 days after signup, in the notifications tab. For each message, users can schedule a reminder for a later time, or disable the messages entirely.
+
+
+Replaced Daphne by Gunicorn/Uvicorn [manual action required, non-docker only]
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+To improve the performance, stability and reliability of Funkwhale's web processes,
+we now recommend using Gunicorn and Uvicorn instead of Daphne. This combination unlock new use cases such as:
+
+- zero-downtime upgrades
+- configurable number of web worker processes
+
+Based on our benchmarks, Gunicorn/Unicorn is also faster and more stable under higher workloads compared to Daphne.
+
+To benefit from this enhancement on existing instances, you need to add ``FUNKWHALE_WEB_WORKERS=1`` in your ``.env`` file
+(use a higher number if you want to have more web worker processes).
+
+Then, edit your ``/etc/systemd/system/funkwhale-server.service`` and replace the ``ExecStart=`` line with
+``ExecStart=/srv/funkwhale/virtualenv/bin/gunicorn config.asgi:application -w ${FUNKWHALE_WEB_WORKERS} -k uvicorn.workers.UvicornWorker -b ${FUNKWHALE_API_IP}:${FUNKWHALE_API_PORT}``
+
+Then reload the configuration change with ``sudo systemctl daemon-reload`` and ``sudo systemctl restart funkwhale-server``.
+
+
+Content-Security-Policy and additional security headers [manual action suggested]
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+To improve the security and reduce the attack surface in case of a successfull exploit, we suggest
+you add the following Content-Security-Policy to your nginx configuration.
+
+..note::
+
+    If you are using an S3-compatible store to serve music, you will need to specify the URL of your S3 store in the ``media-src`` and ``img-src`` headers
+
+    .. code-block::
+
+        add_header Content-Security-Policy "...img-src 'self' https://<your-s3-URL> data:;...media-src https://<your-s3-URL> 'self' data:";
+
+**On non-docker setups**, in ``/etc/nginx/sites-available/funkwhale.conf``::
+
+    server {
+
+        add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self' data:; object-src 'none'; media-src 'self' data:";
+        add_header Referrer-Policy "strict-origin-when-cross-origin";
+
+        location /front/ {
+            add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self' data:; object-src 'none'; media-src 'self' data:";
+            add_header Referrer-Policy "strict-origin-when-cross-origin";
+            add_header X-Frame-Options "SAMEORIGIN";
+            # … existing content here
+        }
+
+        # Also create a new location for the embeds to ensure external iframes work
+        # Simply copy-paste the /front/ location, but replace the following lines:
+        location /front/embed.html {
+            add_header X-Frame-Options "ALLOW";
+            alias ${FUNKWHALE_FRONTEND_PATH}/embed.html;
+        }
+    }
+
+Then reload nginx with ``systemctl reload nginx``.
+
+**On docker setups**, in ``/srv/funkwhalenginx/funkwhale.template``::
+
+    server {
+
+        add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self' data:; object-src 'none'; media-src 'self' data:";
+        add_header Referrer-Policy "strict-origin-when-cross-origin";
+
+        location /front/ {
+            add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self' data:; object-src 'none'; media-src 'self' data:";
+            add_header Referrer-Policy "strict-origin-when-cross-origin";
+            add_header X-Frame-Options "SAMEORIGIN";
+            # … existing content here
+        }
+
+        # Also create a new location for the embeds to ensure external iframes work
+        # Simply copy-paste the /front/ location, but replace the following lines:
+        location /front/embed.html {
+            add_header X-Frame-Options "ALLOW";
+            alias /frontent/embed.html;
+        }
+    }
+
+Then reload nginx with ``docker-compose restart nginx``.
+
+Rate limiting
+^^^^^^^^^^^^^
+
+With this release, rate-limiting on the API is enabled by default, with high enough limits to ensure
+regular users of the app aren't affected. Requests beyond allowed limits are answered with a 429 HTTP error.
+
+For anonymous requests, the limit is applied to the IP adress of the client, and for authenticated requests, the limit
+is applied to the corresponding user account. By default, anonymous requests get a lower limit than authenticated requests.
+
+You can disable the rate-limiting feature by adding `THROTTLING_ENABLED=false` to your ``.env`` file and restarting the
+services. If you are using the Funkwhale API in your project or app and want to know more about the limits, please consult https://docs.funkwhale.audio/swagger/.
+
+Broken audio streaming when using S3/Minio and DSub [manual action required]
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Some Subsonic clients, such as DSub, are sending an Authorization headers which was forwarded
+to the S3 storage when streaming, causing some issues. If you are using S3 or a compatible storage
+such as Minio, please add the following in your nginx ``~ /_protected/media/(.+)`` location::
+
+    # Needed to ensure DSub auth isn't forwarded to S3/Minio, see #932
+    proxy_set_header Authorization "";
+
+And reload your nginx process.
diff --git a/deploy/FreeBSD/funkwhale_server b/deploy/FreeBSD/funkwhale_server
index 1d7f29ce55f0ab8b434816fe4e72f92a6b127380..4c7394ab05b0e9e1862b27a2e2a7e87d39eedb1b 100755
--- a/deploy/FreeBSD/funkwhale_server
+++ b/deploy/FreeBSD/funkwhale_server
@@ -25,8 +25,8 @@ funkwhale_server_user=funkwhale
 funkwhale_server_env=$(cat /usr/local/www/funkwhale/config/.env | grep -v ^# | xargs)
 command_interpreter="/usr/local/www/funkwhale/virtualenv/bin/python3"
 
-command="/usr/local/www/funkwhale/virtualenv/bin/daphne"
-command_args="-b 127.0.0.1 -p 5000 config.asgi:application --proxy-headers \
+command="/usr/local/www/funkwhale/virtualenv/bin/gunicorn"
+command_args="config.asgi:application -w 4 -k uvicorn.workers.UvicornWorker -b 127.0.0.1:5000 \
 >> /var/log/funkwhale/${name##funkwhale_}.log 2>&1 &"
 
 run_rc_command "$1"
diff --git a/deploy/Gentoo/funkwhale_server b/deploy/Gentoo/funkwhale_server
index 926bd01d16610d984c6132ea04c72adf1dbc6131..c6771f6d7feb3a4238f7f285c5e4acedcb5f0aab 100644
--- a/deploy/Gentoo/funkwhale_server
+++ b/deploy/Gentoo/funkwhale_server
@@ -3,9 +3,9 @@
 NAME=funkwhaleserver
 PIDFILE=/var/run/$NAME.pid
 USER=funkwhale
-DAEMON_ARGS="-b 127.0.0.1 -p 5000 config.asgi:application --proxy-headers "
-Daphne=/srv/funkwhale/virtualenv/bin/daphne
-WORKDIR=/srv/funkwhale/api 
+DAEMON_ARGS="config.asgi:application -w 4 -k uvicorn.workers.UvicornWorker -b 127.0.0.1:5000 "
+Gunicorn=/srv/funkwhale/virtualenv/bin/gunicorn
+WORKDIR=/srv/funkwhale/api
 
 depend() {
         need net redis postgresql nginx funkwhale_beat funkwhale_worker
@@ -16,7 +16,7 @@ start() {
         cd /srv/funkwhale/api
 	set -a && source /srv/funkwhale/config/.env && set +a
         echo 'Starting Funkwhale Server'
-	start-stop-daemon --start --user $USER --make-pidfile --pidfile $PIDFILE  -d $WORKDIR  --exec $Daphne -- $DAEMON_ARGS >> /var/log/funk/daphne.log 2>&1&
+	start-stop-daemon --start --user $USER --make-pidfile --pidfile $PIDFILE  -d $WORKDIR  --exec $Gunicorn -- $DAEMON_ARGS >> /var/log/funk/server.log 2>&1&
 	echo 'Funkwhale Server started'
 	echo
 	eend $?
diff --git a/deploy/apache.conf b/deploy/apache.conf
index 3b34dcdbad435db90c6e3617bf3b2da3a00cd363..996e5488c35efe5770d5ba8022ea98a06f34282b 100644
--- a/deploy/apache.conf
+++ b/deploy/apache.conf
@@ -5,7 +5,9 @@ Define funkwhale-sn funkwhale.yourdomain.com
 # use different configuration than what is described in our installation guide.
 Define funkwhale-api http://localhost:5000
 Define funkwhale-api-ws ws://localhost:5000
-Define MUSIC_DIRECTORY_PATH /srv/funkwhale/data/music
+Define FUNKWHALE_ROOT_PATH /srv/funkwhale
+Define MUSIC_DIRECTORY_PATH ${FUNKWHALE_ROOT_PATH}/data/music
+Define MEDIA_DIRECTORY_PATH ${FUNKWHALE_ROOT_PATH}/data/media
 
 # HTTP requests redirected to HTTPS
 <VirtualHost *:80>
@@ -90,17 +92,17 @@ Define MUSIC_DIRECTORY_PATH /srv/funkwhale/data/music
    <Location "/front">
       ProxyPass  "!"
    </Location>
-   Alias /front /srv/funkwhale/front/dist
+   Alias /front ${FUNKWHALE_ROOT_PATH}/front/dist
 
    <Location "/media">
       ProxyPass  "!"
    </Location>
-   Alias /media /srv/funkwhale/data/media
+   Alias /media ${MEDIA_DIRECTORY_PATH}
 
    <Location "/staticfiles">
       ProxyPass  "!"
    </Location>
-   Alias /staticfiles /srv/funkwhale/data/static
+   Alias /staticfiles ${FUNKWHALE_ROOT_PATH}/data/static
 
    # Activating WebSockets
    <Location "/api/v1/activity">
@@ -108,19 +110,19 @@ Define MUSIC_DIRECTORY_PATH /srv/funkwhale/data/music
    </Location>
 
    # Setting appropriate access levels to serve frontend
-   <Directory "/srv/funkwhale/data/static">
+   <Directory "${FUNKWHALE_ROOT_PATH}/data/static">
       Options FollowSymLinks
       AllowOverride None
       Require all granted
    </Directory>
 
-   <Directory /srv/funkwhale/front/dist>
+   <Directory "${FUNKWHALE_ROOT_PATH}/front/dist">
       Options FollowSymLinks
       AllowOverride None
       Require all granted
    </Directory>
 
-   <Directory /srv/funkwhale/data/media>
+   <Directory "${MEDIA_DIRECTORY_PATH}">
       Options FollowSymLinks
       AllowOverride None
       Require all granted
@@ -133,7 +135,7 @@ Define MUSIC_DIRECTORY_PATH /srv/funkwhale/data/music
    #LoadModule xsendfile_module modules/mod_xsendfile.so
    <IfModule mod_xsendfile.c>
       XSendFile On
-      XSendFilePath /srv/funkwhale/data/media
+      XSendFilePath ${MEDIA_DIRECTORY_PATH}
       XSendFilePath ${MUSIC_DIRECTORY_PATH}
       SetEnv MOD_X_SENDFILE_ENABLED 1
    </IfModule>
diff --git a/deploy/docker.funkwhale_proxy.conf b/deploy/docker.funkwhale_proxy.conf
index a1b0a31e5c0bd475e67730bb390ee9c20ae97bc1..dccc782f2924410ccda8be3981cb0a76ef9d5636 100644
--- a/deploy/docker.funkwhale_proxy.conf
+++ b/deploy/docker.funkwhale_proxy.conf
@@ -4,10 +4,9 @@
 # at https://dev.funkwhale.audio/funkwhale/funkwhale/blob/develop/deploy/funkwhale_proxy.conf
 # your proxy will also need to support websockets
 
-real_ip_header X-Forwarded-For;
-set_real_ip_from 172.17.0.0/16;
+proxy_set_header Host $host;
+proxy_set_header X-Real-IP $remote_addr;
 
-proxy_set_header Host $http_x_forwarded_host;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
 proxy_set_header X-Forwarded-Host $http_x_forwarded_host;
diff --git a/deploy/docker.nginx.template b/deploy/docker.nginx.template
index 431975629741f4546e18f061987d6fc7ec31b699..ced42201a076645831a70d1037c23ba53a2c9641 100644
--- a/deploy/docker.nginx.template
+++ b/deploy/docker.nginx.template
@@ -23,6 +23,13 @@ server {
 
     root /frontend;
 
+    # If you are using S3 to host your files, remember to add your S3 URL to the
+    # media-src and img-src headers (e.g. img-src 'self' https://<your-S3-URL> data:)
+
+    add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self' data:; object-src 'none'; media-src 'self' data:";
+    add_header Referrer-Policy "strict-origin-when-cross-origin";
+
+
     location / {
         include /etc/nginx/funkwhale_proxy.conf;
         # this is needed if you have file import via upload enabled
@@ -31,12 +38,27 @@ server {
     }
 
     location /front/ {
+        add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self' data:; object-src 'none'; media-src 'self' data:";
+        add_header Referrer-Policy "strict-origin-when-cross-origin";
+
+        add_header X-Frame-Options "ALLOW";
         alias /frontend/;
         expires 30d;
         add_header Pragma public;
         add_header Cache-Control "public, must-revalidate, proxy-revalidate";
     }
 
+    location /front/embed.html {
+        add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self' data:; object-src 'none'; media-src 'self' data:";
+        add_header Referrer-Policy "strict-origin-when-cross-origin";
+
+        add_header X-Frame-Options "ALLOW";
+        alias /frontend/embed.html;
+        expires 30d;
+        add_header Pragma public;
+        add_header Cache-Control "public, must-revalidate, proxy-revalidate";
+    }
+
     location /federation/ {
         include /etc/nginx/funkwhale_proxy.conf;
         proxy_pass   http://funkwhale-api/federation/;
@@ -69,6 +91,8 @@ server {
     # media files in a S3 bucket
     # location ~ /_protected/media/(.+) {
     #     internal;
+    #     # Needed to ensure DSub auth isn't forwarded to S3/Minio, see #932
+    #     proxy_set_header Authorization "";
     #     proxy_pass $1;
     # }
 
diff --git a/deploy/docker.proxy.template b/deploy/docker.proxy.template
index 0fbed2f73d6015a817b878673cbdd15de0718154..ee7444724ca549cef945a83530b9cdd0ee45e704 100644
--- a/deploy/docker.proxy.template
+++ b/deploy/docker.proxy.template
@@ -14,8 +14,8 @@ server {
     location / { return 301 https://$host$request_uri; }
 }
 server {
-    listen      443 ssl;
-    listen [::]:443 ssl;
+    listen      443 ssl http2;
+    listen [::]:443 ssl http2;
     server_name ${FUNKWHALE_HOSTNAME};
 
     # TLS
@@ -29,6 +29,13 @@ server {
     # HSTS
     add_header Strict-Transport-Security "max-age=31536000";
 
+    # Security related headers
+
+    # If you are using S3 to host your files, remember to add your S3 URL to the
+    # media-src and img-src headers (e.g. img-src 'self' https://<your-S3-URL> data:)
+
+    add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self' data:; object-src 'none'; media-src 'self' data:";
+
     # compression settings
     gzip on;
     gzip_comp_level    5;
diff --git a/deploy/env.prod.sample b/deploy/env.prod.sample
index b7b0301dadff33f34d288ac78a9684be73663998..672306a1ac9e975a49abb84331d98b9a1037a85b 100644
--- a/deploy/env.prod.sample
+++ b/deploy/env.prod.sample
@@ -34,7 +34,9 @@ FUNKWHALE_VERSION=latest
 # example: FUNKWHALE_API_PORT=5678
 FUNKWHALE_API_IP=127.0.0.1
 FUNKWHALE_API_PORT=5000
-
+# The number of web workers to start in parallel. Higher means you can handle
+# more concurrent requests, but also leads to higher CPU/Memory usage
+FUNKWHALE_WEB_WORKERS=1
 # Replace this by the definitive, public domain you will use for
 # your instance
 FUNKWHALE_HOSTNAME=yourdomain.funkwhale
@@ -168,4 +170,9 @@ AWS_STORAGE_BUCKET_NAME=
 # If you are using Amazon S3 to serve media directly, you will need to specify your region
 # name in order to access files. Example:
 #   AWS_S3_REGION_NAME=eu-west-2
-# AWS_S3_REGION_NAME= 
+# AWS_S3_REGION_NAME=
+
+# If you are using Amazon S3, use this setting to configure how long generated URLs should stay
+# valid. The default value is 3600 (60 minutes). The maximum accepted value is 604800 (7 days)
+
+# AWS_QUERYSTRING_EXPIRE=
\ No newline at end of file
diff --git a/deploy/funkwhale-server.service b/deploy/funkwhale-server.service
index 88d70d338e3f5b6d7b276eebbcc96155e6df3c74..b531e596e150568790e7ed1efd6fbb1cdcc87883 100644
--- a/deploy/funkwhale-server.service
+++ b/deploy/funkwhale-server.service
@@ -8,7 +8,6 @@ User=funkwhale
 # adapt this depending on the path of your funkwhale installation
 WorkingDirectory=/srv/funkwhale/api
 EnvironmentFile=/srv/funkwhale/config/.env
-ExecStart=/srv/funkwhale/virtualenv/bin/daphne -b ${FUNKWHALE_API_IP} -p ${FUNKWHALE_API_PORT} config.asgi:application --proxy-headers
-
+ExecStart=/srv/funkwhale/virtualenv/bin/gunicorn config.asgi:application -w ${FUNKWHALE_WEB_WORKERS} -k uvicorn.workers.UvicornWorker -b ${FUNKWHALE_API_IP}:${FUNKWHALE_API_PORT}
 [Install]
 WantedBy=multi-user.target
diff --git a/deploy/nginx.template b/deploy/nginx.template
index 78b8ff3d6cf99e1b732e726ef448de9b65f9d517..3dc6ccf8aa49fdd123cf0df109f7fc833aa1b38c 100644
--- a/deploy/nginx.template
+++ b/deploy/nginx.template
@@ -22,8 +22,8 @@ map $http_upgrade $connection_upgrade {
 }
 
 server {
-    listen      443 ssl;
-    listen [::]:443 ssl;
+    listen      443 ssl http2;
+    listen [::]:443 ssl http2;
     server_name ${FUNKWHALE_HOSTNAME};
 
     # TLS
@@ -41,6 +41,12 @@ server {
     # HSTS
     add_header Strict-Transport-Security "max-age=31536000";
 
+    # If you are using S3 to host your files, remember to add your S3 URL to the
+    # media-src and img-src headers (e.g. img-src 'self' https://<your-S3-URL> data:)
+
+    add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self' data:; object-src 'none'; media-src 'self' data:";
+    add_header Referrer-Policy "strict-origin-when-cross-origin";
+
     root ${FUNKWHALE_FRONTEND_PATH};
 
     # compression settings
@@ -78,11 +84,25 @@ server {
     }
 
     location /front/ {
+        add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self' data:; object-src 'none'; media-src 'self' data:";
+        add_header Referrer-Policy "strict-origin-when-cross-origin";
+
+        add_header X-Frame-Options "SAMEORIGIN";
         alias ${FUNKWHALE_FRONTEND_PATH}/;
         expires 30d;
         add_header Pragma public;
         add_header Cache-Control "public, must-revalidate, proxy-revalidate";
     }
+    location /front/embed.html {
+        add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self' data:; object-src 'none'; media-src 'self' data:";
+        add_header Referrer-Policy "strict-origin-when-cross-origin";
+
+        add_header X-Frame-Options "ALLOW";
+        alias ${FUNKWHALE_FRONTEND_PATH}/embed.html;
+        expires 30d;
+        add_header Pragma public;
+        add_header Cache-Control "public, must-revalidate, proxy-revalidate";
+    }
 
     location /federation/ {
         include /etc/nginx/funkwhale_proxy.conf;
@@ -111,11 +131,13 @@ server {
         internal;
         alias   ${MEDIA_ROOT};
     }
-    
+
     # Comment the previous location and uncomment this one if you're storing
     # media files in a S3 bucket
     # location ~ /_protected/media/(.+) {
     #     internal;
+    #     # Needed to ensure DSub auth isn't forwarded to S3/Minio, see #932
+    #     proxy_set_header Authorization "";
     #     proxy_pass $1;
     # }
 
diff --git a/dev.yml b/dev.yml
index 7c58b910590fc52a79c57402d814c3cd04db2cde..eaa7ca8d31239b89f0f023049016cc80e6ffab42 100644
--- a/dev.yml
+++ b/dev.yml
@@ -49,10 +49,15 @@ services:
       args:
         install_dev_deps: 1
     entrypoint: compose/django/dev-entrypoint.sh
-    command: python /app/manage.py runserver 0.0.0.0:${FUNKWHALE_API_PORT-5000}
+    command: >
+      bash -c "python manage.py collectstatic --no-input
+      && uvicorn --reload config.asgi:application --host 0.0.0.0 --port 5000  --reload-dir config/ --reload-dir=funkwhale_api/"
     volumes:
       - ./api:/app
       - "${MUSIC_DIRECTORY_SERVE_PATH-./data/music}:/music:ro"
+      - "./data/plugins:/srv/funkwhale/plugins"
+      - "./data/staticfiles:/staticfiles"
+      - "./data/media:/data/media"
     environment:
       - "FUNKWHALE_HOSTNAME=${FUNKWHALE_HOSTNAME-localhost}"
       - "FUNKWHALE_HOSTNAME_SUFFIX=funkwhale.test"
@@ -60,6 +65,8 @@ services:
       - "FUNKWHALE_PROTOCOL=${FUNKWHALE_PROTOCOL-http}"
       - "DATABASE_URL=postgresql://postgres@postgres/postgres"
       - "CACHE_URL=redis://redis:6379/0"
+      - "STATIC_ROOT=/staticfiles"
+      - "MEDIA_ROOT=/data/media"
 
     depends_on:
       - postgres
@@ -87,9 +94,12 @@ services:
       - "FUNKWHALE_PROTOCOL=${FUNKWHALE_PROTOCOL-http}"
       - "DATABASE_URL=postgresql://postgres@postgres/postgres"
       - "CACHE_URL=redis://redis:6379/0"
+      - "MEDIA_ROOT=/data/media"
     volumes:
       - ./api:/app
       - "${MUSIC_DIRECTORY_SERVE_PATH-./data/music}:/music:ro"
+      - "./data/plugins:/srv/funkwhale/plugins"
+      - "./data/media:/data/media"
     networks:
       - internal
   nginx:
@@ -116,7 +126,9 @@ services:
       - ./docker/nginx/entrypoint.sh:/entrypoint.sh:ro
       - "${MUSIC_DIRECTORY_SERVE_PATH-./data/music}:/music:ro"
       - ./deploy/funkwhale_proxy.conf:/etc/nginx/funkwhale_proxy.conf:ro
-      - "${MEDIA_ROOT-./api/funkwhale_api/media}:/protected/media:ro"
+      - "./front:/frontend:ro"
+      - "./data/staticfiles:/staticfiles:ro"
+      - "./data/media:/protected/media:ro"
     networks:
       - federation
       - internal
diff --git a/docker/nginx/conf.dev b/docker/nginx/conf.dev
index 419bb0dd8975b09df4545d9ec6be4d69c24a2c32..1807dc08827d043335bbe881c354cbeb655e4727 100644
--- a/docker/nginx/conf.dev
+++ b/docker/nginx/conf.dev
@@ -69,12 +69,30 @@ http {
             text/x-component
             text/x-cross-domain-policy;
 
+        add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self' data:; object-src 'none'; media-src 'self' data:";
+        add_header Referrer-Policy "strict-origin-when-cross-origin";
+
         location /front/ {
+            add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self' data:; object-src 'none'; media-src 'self' data:";
+            add_header Referrer-Policy "strict-origin-when-cross-origin";
+            add_header X-Frame-Options "SAMEORIGIN";
+            # uncomment the following line and comment the proxy-pass one
+            # to use the frontend build with "yarn build"
+            #alias /frontend/dist/;
             proxy_pass   http://funkwhale-front/front/;
         }
+        location /front/embed.html {
+            add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self' data:; object-src 'none'; media-src 'self' data:";
+            add_header Referrer-Policy "strict-origin-when-cross-origin";
+            add_header X-Frame-Options "ALLOW";
+            proxy_pass   http://funkwhale-front/front/embed.html;
+        }
         location /front-server/ {
             proxy_pass   http://funkwhale-front/;
         }
+        location /sockjs-node/ {
+            proxy_pass   http://funkwhale-front/sockjs-node/;
+        }
 
         location / {
             include /etc/nginx/funkwhale_proxy.conf;
@@ -106,8 +124,10 @@ http {
         # location ~ /_protected/media/(.+) {
         #     internal;
         #     resolver 127.0.0.11;
+        #     # Needed to ensure DSub auth isn't forwarded to S3/Minio, see #932
+        #     proxy_set_header Authorization "";
+        #     proxy_set_header X-Remote-URL "$1";
         #     proxy_pass $1;
-        #     add_header X-Remote-URL "$1";
         # }
 
         location /_protected/music {
@@ -118,5 +138,8 @@ http {
             internal;
             alias   /music;
         }
+        location /staticfiles/ {
+            alias /staticfiles/;
+        }
     }
 }
diff --git a/docs/Dockerfile b/docs/Dockerfile
index 76147bb6d0f75d08ed9d26106425ab0175187c76..1de9a3ede37b494c63d634db1dbf2e39000b1a15 100644
--- a/docs/Dockerfile
+++ b/docs/Dockerfile
@@ -1,5 +1,5 @@
 FROM python:3.6
 
 RUN apt-get update && apt-get install -y graphviz
-RUN pip install sphinx livereload
+RUN pip install sphinx livereload sphinx_rtd_theme
 WORKDIR /app/docs
diff --git a/docs/admin/external-storages.rst b/docs/admin/external-storages.rst
index bd136df621a0d2b24aa33e08e5a868374d91a727..68e002a8f924478960c7f706e1087dda114813dd 100644
--- a/docs/admin/external-storages.rst
+++ b/docs/admin/external-storages.rst
@@ -42,9 +42,17 @@ Replace the ``location /_protected/media`` block with the following::
 
     location ~ /_protected/media/(.+) {
         internal;
+        # Needed to ensure DSub auth isn't forwarded to S3/Minio, see #932
+        proxy_set_header Authorization "";
         proxy_pass $1;
     }
 
+Add your S3 store URL to the ``img-src`` and ``media-src`` headers
+
+.. code-block:: shell
+
+    add_header Content-Security-Policy "...img-src 'self' https://<your-s3-URL> data:;...media-src https://<your-s3-URL> 'self' data:";
+
 Then restart Funkwhale and nginx.
 
 From now on, media files will be stored on the S3 bucket you configured. If you already
@@ -71,9 +79,9 @@ This URL is actually be visible by the client, but contains a signature valid on
 no one can reuse this URL or share it publicly to distribute unauthorized content.
 
 .. note::
-   
+
    If you are using Amazon S3, you will need to set your ``AWS_S3_REGION_NAME`` in the ``.env`` file to
-   use this feature. 
+   use this feature.
 
 .. note::
 
@@ -136,8 +144,41 @@ in your ``funkwhale.template`` under the ``location ~/_protected/media/(.+)`` se
 .. code-block:: shell
 
     location ~ /_protected/media/(.+) {
-     resolver 1.1.1.1;
-     internal;
-     proxy_pass $1;
+        resolver 1.1.1.1;
+        internal;
+        proxy_set_header Authorization "";
+        proxy_pass $1;
     }
 
+No Images or Media Loading
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+If you are serving media from an S3-compatible store, you may experience an issue where
+nothing loads in the front end. The error logs in your browser may show something like
+the following:
+
+.. code-block:: text
+
+    Content Security Policy: The page's settings blocked the loading of a resource at https://<your-s3-url> ("img-src")
+    Content Security Policy: The page's settings blocked the loading of a resource at https://<your-s3-url> ("media-src")
+
+This happens when your S3 store isn't defined in the ``Content-Security-Policy`` headers
+in your Nginx files. To resolve the issue, add the base URL of your S3 store to the ``img-src``
+and ``media-src`` headers and reload nginx.
+
+.. code-block:: shell
+
+    add_header Content-Security-Policy "...img-src 'self' https://<your-s3-URL> data:;...media-src https://<your-s3-URL> 'self' data:";
+
+Broken Images in Audio Player On Page Reload
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+If you are serving media directly from an S3-compatible store, you may find that images 
+in the queue and the player won't load after the page is refreshed. This happens if the 
+generated URL has expired and the authorization is no longer valid. You can extend the expiry time
+using the following setting in your ``.env`` file:
+
+.. code-block:: shell
+
+    # The default value is 3600 (60 mins). The maximum is 604800 (7 days)
+    AWS_QUERYSTRING_EXPIRE=604800
diff --git a/docs/admin/importing-music.rst b/docs/admin/importing-music.rst
index 7c04544e9d5b3b7f0e3f37dfef289b6335b5da6f..aea601681ab66031e6c0bddce6fc123ba6a96a1a 100644
--- a/docs/admin/importing-music.rst
+++ b/docs/admin/importing-music.rst
@@ -25,6 +25,13 @@ to the ``/music`` directory on the container:
     export LIBRARY_ID="<your_libary_id>"
     docker-compose run --rm api python manage.py import_files $LIBRARY_ID "/music/**/*.ogg" --recursive --noinput
 
+When you installed Funkwhale via ansible, you need to call a script instead of Python, and the folder path must be adapted accordingly:
+
+.. code-block:: bash
+
+    export LIBRARY_ID="<your_libary_id>"
+    /srv/funkwhale/manage import_files $LIBRARY_ID "/srv/funkwhale/data/music/**/**/*.ogg" --recursive --noinput
+
 .. note::
     You'll have to create a library in the Web UI before to get your library ID. Simply visit
     https://yourdomain/content/libraries/ to create one.
diff --git a/docs/admin/index.rst b/docs/admin/index.rst
index 8d80e3e0ad47487fd5091f7cc71e2068d0f445fe..fa66eeca628b824714f84da061152458be8fcc84 100644
--- a/docs/admin/index.rst
+++ b/docs/admin/index.rst
@@ -26,6 +26,7 @@ Administration
    commands
    url
    upgrading
+   mrf
 
 Troubleshooting Issues
 ----------------------
diff --git a/docs/admin/mrf.rst b/docs/admin/mrf.rst
new file mode 100644
index 0000000000000000000000000000000000000000..1d905e72b10f03f925c72dbb38b62fd790134412
--- /dev/null
+++ b/docs/admin/mrf.rst
@@ -0,0 +1,117 @@
+Message Rewrite Facility (MRF)
+==============================
+
+Funkwhale includes a feature that mimics `Pleroma's Message Rewrite Facility <https://docs-develop.pleroma.social/mrf.html>`_.
+Using the MRF, instance admins can write and configure custom and automated moderation rules
+that couldn't be implemented otherwise using :doc:`our other built-in moderation tools <../moderator/index>`.
+
+Architecture
+------------
+
+The MRF is a pluggable system that will process messages and forward those to the list
+of registered policies, in turn. Each policy can mutate the message, leave it as is, or discard it entirely.
+
+Some of our built-in moderation tools are actually implemented as a MRF policy, e.g:
+
+- Allow-list, when checking incoming messages (`code <https://dev.funkwhale.audio/funkwhale/funkwhale/blob/develop/api/funkwhale_api/moderation/mrf_policies.py>`_)
+- Domain and user blocking, when checking incoming messages (`code <https://dev.funkwhale.audio/funkwhale/funkwhale/blob/develop/api/funkwhale_api/federation/mrf_policies.py>`_)
+
+.. note::
+
+    While Pleroma MRF policies can also affect outgoing messages, this is not supported yet in Funkwhale.
+
+
+Disclaimer
+----------
+
+Writing custom MRF can impact negatively the performance and stability of your pod, as well as message
+delivery. Your policy will be called everytime a message is delivered, so ensure you don't execute
+any slow operation here.
+
+Please note that the Funkwhale developers consider custom MRF policy modules to fall under the purview of the AGPL. As such, you are obligated to release the sources to your custom MRF policy modules upon request.
+
+Writing your first MRF policy
+-----------------------------
+
+MRF Policies are written as Python 3 functions that take at least one ``payload`` parameter.
+This payload is the raw ActivityPub message, received via HTTP, after the HTTP signature check.
+
+In the example below we write a policy that discards all Follow requests from listed domains:
+
+.. code-block:: python
+
+    import urllib.parse
+    from funkwhale_api.moderation import mrf
+
+    BLOCKED_FOLLOW_DOMAINS = ['domain1.com', 'botdomain.org']
+
+    # registering the policy is required to have it applied
+    # the name can be anything you want, it will appear in the mrf logs
+    @mrf.inbox.register(name='blocked_follow_domains')
+    def blocked_follow_domains_policy(payload, **kwargs):
+        actor_id = payload.get('actor')
+        domain = urllib.parse.urlparse(actor_id).hostname
+        if domain not in BLOCKED_FOLLOW_DOMAINS:
+            # raising mrf.Skip isn't strictly necessary but it provides
+            # for info in the debug logs. Otherwise, you can simply return
+            raise mrf.Skip("This domain isn't blocked")
+
+        activity_type = payload.get('type')
+        object_type = payload.get('object', {}).get('type')
+
+        if object_type == 'Follow' and activity_type == 'Create':
+            raise mrf.Discard('Follow from blocked domain')
+
+
+This code must be stored in a Funkwhale plugin. To create one, just execute the following:
+
+.. code-block:: shell
+
+    # plugin name must contain only ASCII letters, numbers and undercores
+    export PLUGIN_NAME="myplugin"
+    # this is the default path where Funkwhale will look for plugins
+    # if you want to use another path, update this path and ensure
+    # your PLUGINS_PATH is also included in your .env
+    export PLUGINS_PATH="/srv/funkwhale/plugins/"
+    mkdir -p $PLUGINS_PATH/$PLUGIN_NAME
+    cd $PLUGINS_PATH/$PLUGIN_NAME
+
+    touch __init__.py  # required to make the plugin a valid Python package
+    # create the required apps.py file to register our plugin in Funkwhale
+    cat > apps.py <<EOF
+    from django.apps import AppConfig
+
+    class Plugin(AppConfig):
+        name = "$PLUGIN_NAME"
+
+    EOF
+
+Once you have a Funkwhale plugin, simply put your MRF policy code inside a ``mrf_policies.py``
+file whithin the plugin directory. Then enable the plugin in your ``.env`` by
+adding its name to the coma-separated list of ``FUNKWHALE_PLUGINS`` (add the variable if it's not there).
+
+
+Testing a MRF policy
+--------------------
+
+To make the job of writing and debugging MRF policies easier, we provide a management
+command:
+
+.. code-block:: shell
+
+    python manage.py mrf_check --help
+    # list registered MRF policies
+    python manage.py mrf_check --list
+
+    # check how our MRF would handle a legit follow
+    export MRF_MESSAGE='{"actor": "https://normal.domain/@alice", "type": "Create", "object": {"type": "Follow"}}'
+    echo $MRF_MESSAGE | python manage.py mrf_check inbox - -p blocked_follow_domains
+
+    # check how our MRF would handle a problematic follow
+    export MRF_MESSAGE='{"actor": "https://botdomain.org/@bob", "type": "Create", "object": {"type": "Follow"}}'
+    echo $MRF_MESSAGE | python manage.py mrf_check inbox - -p blocked_follow_domains
+
+    # check against an activity already present in the database
+    # you can get the UUID of activities by visiting /api/admin/federation/activity
+    export ACTIVITY_UUID="06208aea-c687-4e8b-aefd-22f1c3f76039"
+    echo $MRF_MESSAGE | python manage.py mrf_check inbox $ACTIVITY_UUID -p blocked_follow_domains
diff --git a/docs/admin/upgrading.rst b/docs/admin/upgrading.rst
index 4c0cf77314974c06d2e4e86f597e2821faeeb6ec..d18dd74475300a66201050c8f9afd59d17147c04 100644
--- a/docs/admin/upgrading.rst
+++ b/docs/admin/upgrading.rst
@@ -136,6 +136,10 @@ keeping a backup of the old version in ``./postgres-old``:
 Non-docker setup
 ----------------
 
+If you installed Funkwhale using the install script, upgrading is done using ``sh -c "$(curl -sSL https://get.funkwhale.audio/upgrade.sh)"``. Make sure to run this command with root permissions.
+
+If you manually installed Funkwhale, please use the following instructions.
+
 Upgrade the static files
 ^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/docs/conf.py b/docs/conf.py
index bf1afa0a604b6c922d344f3e2bb9823c13975d7e..6b7466d647f52b8fad93d5f1f551f993f580081c 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -89,13 +89,24 @@ todo_include_todos = False
 # The theme to use for HTML and HTML Help pages.  See the documentation for
 # a list of builtin themes.
 #
-html_theme = "alabaster"
+html_theme = "sphinx_rtd_theme"
 
 # Theme options are theme-specific and customize the look and feel of a theme
 # further.  For a list of options available for each theme, see the
 # documentation.
 #
-# html_theme_options = {}
+html_theme_options = {
+    'gitlab_url': 'https://dev.funkwhale.audio/funkwhale/funkwhale'
+}
+html_context = {
+  'display_gitlab': True,
+  'gitlab_host': 'dev.funkwhale.audio',
+  'gitlab_repo': 'funkwhale',
+  'gitlab_user': 'funkwhale',
+  'gitlab_version': 'master',
+  'conf_py_path': '/docs/',
+}
+html_logo = 'logo.svg'
 
 # Add any paths that contain custom static files (such as style sheets) here,
 # relative to this directory. They are copied after the builtin static files,
@@ -166,7 +177,7 @@ redirect_files = [
     ('importing-music.html', 'admin/importing-music.html'),
     ('architecture.html', 'developers/architecture.html'),
     ('troubleshooting.html', 'admin/troubleshooting.html'),
-    ('configuration.html', 'admin/configuration.html'), 
+    ('configuration.html', 'admin/configuration.html'),
     ('upgrading/index.html', '../admin/upgrading.html'),
     ('upgrading/0.17.html', '../admin/0.17.html'),
     ('users/django.html', '../admin/django.html'),
diff --git a/docs/get-releases-json.py b/docs/get-releases-json.py
old mode 100644
new mode 100755
index a7afaed800da81ad8a2192b2a21f48303086b765..4fbfb1de81733d58d9393386f957b02d9b9786cf
--- a/docs/get-releases-json.py
+++ b/docs/get-releases-json.py
@@ -1,3 +1,5 @@
+#!/usr/bin/env python3
+
 import argparse
 import json
 import subprocess
diff --git a/docs/installation/debian.rst b/docs/installation/debian.rst
index 40597cbe3fa1c7d19aa581d6c3a30df7f86a4ad3..e8ab0175f2e18d570c3873db219b70f2a6b8e1cb 100644
--- a/docs/installation/debian.rst
+++ b/docs/installation/debian.rst
@@ -24,7 +24,7 @@ On Debian-like systems, you can install them using:
     # Install dependencies
     sudo apt-get install curl python3-pip python3-venv git unzip libldap2-dev libsasl2-dev
     # Funkwhale dependencies
-    sudo apt install build-essential ffmpeg libjpeg-dev libmagic-dev libpq-dev postgresql-client python3-dev
+    sudo apt install build-essential ffmpeg libjpeg-dev libmagic-dev libpq-dev postgresql-client python3-dev make
 
 On Arch Linux and its derivatives:
 
diff --git a/docs/installation/docker.rst b/docs/installation/docker.rst
index f227ace61d17fc7d177dbc2e61f2972d7582252e..7bb912b818c6842e4882c7a46d9ddab309cabbf2 100644
--- a/docs/installation/docker.rst
+++ b/docs/installation/docker.rst
@@ -29,8 +29,7 @@ Create the user and the directory:
 
 .. code-block:: shell
 
-    sudo useradd -r -s /usr/bin/nologin -d /srv/funkwhale -m funkwhale
-    sudo adduser funkwhale docker
+    sudo useradd -r -s /usr/bin/nologin -m -d /srv/funkwhale -U -G docker funkwhale
     cd /srv/funkwhale
 
 Log in as the newly created user from now on:
@@ -39,7 +38,7 @@ Log in as the newly created user from now on:
 
     sudo -u funkwhale -H bash
 
-Export the version you want to deploy:
+Export the `version you want <https://hub.docker.com/r/funkwhale/all-in-one/tags>`_ to deploy (e.g., ``0.19.1``):
 
 .. parsed-literal::
 
@@ -50,16 +49,24 @@ Create an env file to store a few important configuration options:
 .. code-block:: shell
 
     touch .env
-    echo "FUNKWHALE_HOSTNAME=yourdomain.funkwhale" >> .env
-    echo "FUNKWHALE_PROTOCOL=https" >> .env  # or http
-    echo "NGINX_MAX_BODY_SIZE=100M" >> .env
-    echo "FUNKWHALE_API_IP=127.0.0.1" >> .env
-    echo "FUNKWHALE_API_PORT=5000" >> .env  # or the container port you want to expose on the host
-    echo "DJANGO_SECRET_KEY=$(openssl rand -hex 45)" >> .env  # generate and store a secure secret key for your instance
+    chmod 600 .env  # reduce permissions on the .env file since it contains sensitive data
+    cat > .env <<EOD
+    # Replace 'your.funkwhale.example' with your actual domain
+    FUNKWHALE_HOSTNAME=your.funkwhale.example
+    # Protocol may also be: http
+    FUNKWHALE_PROTOCOL=https
+    # This limits the upload size
+    NGINX_MAX_BODY_SIZE=100M
+    # Bind to localhost
+    FUNKWHALE_API_IP=127.0.0.1
+    # Container port you want to expose on the host
+    FUNKWHALE_API_PORT=5000
+    # Generate and store a secure secret key for your instance
+    DJANGO_SECRET_KEY=$(openssl rand -hex 45)
     # Remove this if you expose the container directly on ports 80/443
-    echo "NESTED_PROXY=1" >> .env
+    NESTED_PROXY=1
+    EOD
 
-    chmod 600 .env  # reduce permissions on the .env file since it contains sensitive data
 
 Then start the container:
 
@@ -143,6 +150,11 @@ Useful commands:
             ports:
               - "5000:80"
 
+    Then start the container:
+
+    .. code-block:: shell
+
+        docker-compose up -d
 
 .. _docker-multi-container:
 
@@ -151,7 +163,7 @@ Multi-container installation
 
 First, ensure you have `Docker <https://docs.docker.com/engine/installation/>`_ and `docker-compose <https://docs.docker.com/compose/install/>`_ installed.
 
-Export the version you want to deploy:
+Export the `version you want <https://hub.docker.com/r/funkwhale/all-in-one/tags>`_ to deploy (e.g., ``0.19.1``):
 
 .. parsed-literal::
 
@@ -164,9 +176,9 @@ Download the sample docker-compose file:
     mkdir /srv/funkwhale
     cd /srv/funkwhale
     mkdir nginx
-    curl -L -o nginx/funkwhale.template "https://dev.funkwhale.audio/funkwhale/funkwhale/raw/|version|/deploy/docker.nginx.template"
-    curl -L -o nginx/funkwhale_proxy.conf "https://dev.funkwhale.audio/funkwhale/funkwhale/raw/|version|/deploy/docker.funkwhale_proxy.conf"
-    curl -L -o docker-compose.yml "https://dev.funkwhale.audio/funkwhale/funkwhale/raw/|version|/deploy/docker-compose.yml"
+    curl -L -o nginx/funkwhale.template "https://dev.funkwhale.audio/funkwhale/funkwhale/raw/${FUNKWHALE_VERSION}/deploy/docker.nginx.template"
+    curl -L -o nginx/funkwhale_proxy.conf "https://dev.funkwhale.audio/funkwhale/funkwhale/raw/${FUNKWHALE_VERSION}/deploy/docker.funkwhale_proxy.conf"
+    curl -L -o docker-compose.yml "https://dev.funkwhale.audio/funkwhale/funkwhale/raw/${FUNKWHALE_VERSION}/deploy/docker-compose.yml"
 
 At this point, the architecture of ``/srv/funkwhale``  should look like that:
 
@@ -182,7 +194,7 @@ Create your env file:
 
 .. parsed-literal::
 
-    curl -L -o .env "https://dev.funkwhale.audio/funkwhale/funkwhale/raw/|version|/deploy/env.prod.sample"
+    curl -L -o .env "https://dev.funkwhale.audio/funkwhale/funkwhale/raw/${FUNKWHALE_VERSION}/deploy/env.prod.sample"
     sed -i "s/FUNKWHALE_VERSION=latest/FUNKWHALE_VERSION=$FUNKWHALE_VERSION/" .env
     chmod 600 .env  # reduce permissions on the .env file since it contains sensitive data
     sudo nano .env
diff --git a/docs/installation/index.rst b/docs/installation/index.rst
index a180b59a55845780dc697fe7b5be9e25ea037b3c..1b097cd485b95807fd87e3261eac0aa21302e59e 100644
--- a/docs/installation/index.rst
+++ b/docs/installation/index.rst
@@ -305,6 +305,22 @@ installation guide.
 Check the configuration is valid with ``apache2ctl configtest``, and once you're
 done, load the new configuration with ``service apache2 restart``.
 
+Caddy
+^^^^^
+
+If you're using Caddy as a reverse proxy in front of your docker containers (either mono or multi-container setup),
+you can use the following configuration::
+
+    yourdomain.funkwhale {
+        proxy / 127.0.0.1:5000 {
+            transparent
+            websocket
+            header_upstream X-Forwarded-Host {host}:{server_port}
+        }
+    }
+
+
+
 About internal locations
 ^^^^^^^^^^^^^^^^^^^^^^^^
 
diff --git a/docs/logo.svg b/docs/logo.svg
new file mode 100644
index 0000000000000000000000000000000000000000..1487fcf74a5121d147bb212f8eed434a4d236343
--- /dev/null
+++ b/docs/logo.svg
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 22.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 256 256" style="enable-background:new 0 0 256 256;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#FFFFFF;}
+	.st1{fill:#009FE3;}
+	.st2{fill:#3C3C3B;}
+</style>
+<circle class="st0" cx="128" cy="128" r="128"/>
+<g>
+	<g>
+		<g>
+			<path class="st1" d="M128,157.1c17.7,0,32.1-14.4,32.1-32.1c0-0.9-0.8-1.7-1.7-1.7h-12.1c-0.9,0-1.7,0.8-1.7,1.7
+				c0,9.1-7.4,16.6-16.6,16.6c-9.1,0-16.6-7.4-16.6-16.6c0-0.9-0.8-1.7-1.7-1.7H97.6c-0.9,0-1.7,0.8-1.7,1.7
+				C95.9,142.8,110.3,157.1,128,157.1z"/>
+			<path class="st1" d="M128,187.4c34.3,0,62.3-28,62.3-62.3c0-0.9-0.8-1.7-1.7-1.7h-12.1c-0.9,0-1.7,0.8-1.7,1.7
+				c0,25.9-21,46.9-46.9,46.9s-46.9-21-46.9-46.9c0-0.9-0.8-1.7-1.7-1.7H67.4c-0.9,0-1.7,0.8-1.7,1.7
+				C65.5,159.4,93.5,187.4,128,187.4z"/>
+			<path class="st1" d="M219,123.4h-12.1c-0.9,0-1.7,0.8-1.7,1.7c0,42.6-34.8,77.3-77.3,77.3c-42.6,0-77.3-34.6-77.3-77.3
+				c0-0.9-0.8-1.7-1.7-1.7H37c-0.9,0-1.7,0.8-1.7,1.7c0,51.1,41.6,92.7,92.7,92.7s92.7-41.6,92.7-92.7
+				C220.7,124.2,219.9,123.4,219,123.4z"/>
+		</g>
+		<path class="st2" d="M86.3,83.3c6.2,3.2,12.9,3.8,18.9,7.3c3.9,2.3,6.4,4.8,8.8,8.6c3.8,5.7,3.6,12.9,3.6,12.9l0.5,7.9
+			c0,0,3,7.9,9.7,7.9c7.1,0,9.7-7.9,9.7-7.9l0.5-7.9c0,0-0.2-7.1,3.6-12.9c2.4-3.8,4.8-6.5,8.8-8.6c6-3.5,12.7-4.1,18.9-7.3
+			c6.2-3.2,12.2-7.3,16.3-13s6-13.3,3.8-20c-11.8-0.6-25.4,0.8-35.8,6.4c-14.5,7.7-23.3,5-25.9,16.5h-0.2
+			c-2.6-11.6-11.3-8.8-25.9-16.5c-10.4-5.6-24-7-35.8-6.4c-2.3,6.7-0.3,14.2,3.8,20C74,76.1,80.1,80.2,86.3,83.3z"/>
+	</g>
+</g>
+</svg>
diff --git a/docs/moderator/index.rst b/docs/moderator/index.rst
index e63dde4a9b5df4dbf931eecf6708378a6bb1b820..38ed690f861998b3951365d9e0c812a348bb1417 100644
--- a/docs/moderator/index.rst
+++ b/docs/moderator/index.rst
@@ -2,7 +2,7 @@ Moderator Documentation
 =========================
 
 This documentation is targeted at instance moderators. Moderators have enhanced permissions
-which allow them to moderate federated accounts and domains.
+which allow them to handle reports and moderate federated accounts and domains.
 
 Moderation Guides
 -----------------
@@ -10,5 +10,7 @@ Moderation Guides
 .. toctree::
    :maxdepth: 2
 
+   reports
    domains
-   users
\ No newline at end of file
+   users
+   listing
diff --git a/docs/moderator/listing.rst b/docs/moderator/listing.rst
new file mode 100644
index 0000000000000000000000000000000000000000..727bddf5097cf4dbf89e511e89b3a1849bff7983
--- /dev/null
+++ b/docs/moderator/listing.rst
@@ -0,0 +1,94 @@
+Allow-Listing
+=============
+
+The Allow-Listing feature grants pod moderators
+and administrators greater control over federation
+by allowing you to create a pod-wide allow-list.
+
+When allow-listing is enabled, your pod's users will only
+be able to interact with pods included in the allow-list.
+Any messages, activity, uploads, or modifications to
+libraries and playlists will only be shared with pods
+on the allow-list. Pods which are not included in the
+allow-list will not have access to your pod's content
+or messages and will not be able to send anything to
+your pod.
+
+Enabling Allow-Listing
+----------------------
+
+.. warning::
+
+   If your pod is already federating proceed with caution.
+   Enabling the Allow-Listing feature will initially block
+   all activity from external domains as the list will be
+   empty
+
+To enable allow-listing:
+
+- Navigate to the "Settings" menu
+- Go to the "Moderation" section
+- Toggle the "Enable allow-listing" radio button
+- Click "Save" to commit the change
+
+Once enabled, you can start adding domains to your
+allow-list.
+
+Adding/Removing Domains
+-----------------------
+
+Add a New Domain
+^^^^^^^^^^^^^^^^
+
+- Navigate to the "Moderation" menu. Any domains currently
+  in the allow-list will be visible here with a green check
+  mark next to their name. Other pods with which you have previously
+  interacted will also be visible here
+- Type the domain name of the pod you wish to allow into
+  the "Add a Domain" input box in the top-right of the screen
+- Tick the "Add to allow-list" tickbox
+- Click "Add" to add the domain
+
+Add a Known Domain
+^^^^^^^^^^^^^^^^^^
+
+- Navigate to the "Moderation" menu. Any domains currently
+  in the allow-list will be visible here with a green check
+  mark next to their name. Other pods with which you have previously
+  interacted will also be visible here
+- Click on the tickbox next to the domain(s) you wish to add to
+  the allow-list
+- Select "Add to allow-list" from the drop-down menu titled "Actions"
+  and click "Go" to add the domain(s)
+
+Remove a Domain
+^^^^^^^^^^^^^^^
+
+To remove a domain from the allow-list:
+
+- Navigate to the "Moderation" menu. Any domains currently
+  in the allow-list will be visible here with a green check
+  mark next to their name. Other pods with which you have previously
+  interacted will also be visible here
+- Click on the tickbox next to the domain(s) you wish to remove
+  from the allow-list
+- Select "Remove from allow-list" from the drop-down menu titled
+  "Actions" and click "Go" to remove the domain(s)
+
+Purging Existing Content
+------------------------
+
+Moderators can add and remove domains at any time, and removing
+a domain from the allow-list will effectively block all future
+content from being received on your pod. Previously received
+messages and content from pods not on the allow-list will remain
+until you purge it from your pod. To do this:
+
+- Navigate to the "Moderation" menu. Any domains currently
+  in the allow-list will be visible here with a green check
+  mark next to their name. Other pods with which you have
+  previously interacted will also be visible here
+- Click on the tickbox next to the domain(s) you wish to purge
+  received messages from
+- Select "Purge" from the drop-down menu titled "Actions"
+  and click "Go" to purge the messages
diff --git a/docs/moderator/reports.rst b/docs/moderator/reports.rst
new file mode 100644
index 0000000000000000000000000000000000000000..746f42c1611be8eb561d8ebd42a1e063bb9ae3b0
--- /dev/null
+++ b/docs/moderator/reports.rst
@@ -0,0 +1,44 @@
+Handling user reports
+=====================
+
+:doc:`Users can submit reports </users/reports>` in various places. When they do so,
+their report ends up in a moderation queue until it is reviewed and resolved by a moderator.
+
+View unresolved reports
+-----------------------
+
+Assuming you have the moderation permission, you'll find a "Moderation" link in the sidebar.
+
+Clicking on this link will bring you to the list of unresolved reports. For convenience,
+the number of unresolved reports (if any) is also displayed directly next to this link, and updated in real time
+when new reports are submitted.
+
+Email notifications
+-------------------
+
+In addition to the web UI, all moderators will receive a notification email whenever a report is 
+submitted or resolved providing your pod has a valid email sending configuration. 
+This notification will include a link to review and handle the report, as well as additional 
+information about the report itself.
+
+Handling reports
+----------------
+
+When viewing the moderation queue, you will be presented with the list of unresolved reports.
+
+Each report in the queue should include all the information you need to handle it, in particular:
+
+- Who submitted the report (or the email adress of the submitter if it's an accountless report)
+- The report content
+- A link to the reported object, and a copy of this object data at the time the report was submitted
+
+When you mark a report as resolved, the report will simply be removed from the queue, and you can proceed to the next one.
+
+Doing so will also assign the report to you, so other moderators can see who handled a given report.
+
+Internal Notes
+--------------
+
+Whenever you need to perform an action because of a report, you can use the included form to leave a note to other moderators, or even yourself, for reference.
+
+These notes are viewable by instance admins and moderators only.
diff --git a/docs/swagger.yml b/docs/swagger.yml
index 2e3bf9245fc02f88280498179c23e2ad766b25e4..a6952098b1243f8b2dc76e5db7285331c4712803 100644
--- a/docs/swagger.yml
+++ b/docs/swagger.yml
@@ -33,6 +33,79 @@ info:
     If you keep the default server (https://demo.funkwhale.audio), the default username and password
     couple is "demo" and "demo".
 
+    Rate limiting
+    -------------
+
+    Depending on server configuration, pods running Funkwhale 0.20 and higher may rate-limit incoming
+    requests to prevent abuse and improve the stability of service. Requests that are dropped because of rate-limiting
+    receive a 429 HTTP response.
+
+    The limits themselves vary depending on:
+
+    - The client: anonymous requests are subject to lower limits than authenticated requests
+    - The operation being performed: Write and delete operations, as performed with DELETE, POST, PUT and PATCH HTTP methods are subject to lower limits
+
+    Those conditions are used to determine the scope of the request, which in turns determine the limit that is applied.
+    For instance, authenticated POST requests are bound to the `authenticated-create` scope, with a default limit of
+    1000 requests/hour, but anonymous POST requests are bound to the `anonymous-create` scope, with a lower limit of 1000 requests/day.
+
+    A full list of scopes with their corresponding description, and the current usage data for the client performing the request
+    is available via the `/api/v1/rate-limit` endpoint.
+
+    Additionally, we include HTTP headers on all API response to ensure API clients can understand:
+
+    - what scope was bound to a given request
+    - what is the corresponding limit
+    - how much similar requests can be sent before being limited
+    - and how much time they should wait if they have been limited
+
+    <table>
+      <caption>Rate limiting headers</caption>
+      <thead>
+        <th>Header</th>
+        <th>Example value</th>
+        <th>Description value</th>
+      </thead>
+      <tbody>
+        <tr>
+          <td><code>X-RateLimit-Limit</code></td>
+          <td>50</td>
+          <td>The number of allowed requests whithin a given period</td>
+        </tr>
+        <tr>
+          <td><code>X-RateLimit-Duration</code></td>
+          <td>3600</td>
+          <td>The time window, in seconds, during which those requests are accounted for.</td>
+        </tr>
+        <tr>
+          <td><code>X-RateLimit-Scope</code></td>
+          <td>login</td>
+          <td>The name of the scope as computed for the request</td>
+        </tr>
+        <tr>
+          <td><code>X-RateLimit-Remaining</code></td>
+          <td>42</td>
+          <td>How many requests can be sent with the same scope before the limit applies</td>
+        </tr>
+        <tr>
+          <td><code>Retry-After</code> (if <code>X-RateLimit-Remaining</code> is 0)</td>
+          <td>3543</td>
+          <td>How many seconds to wait before a retry</td>
+        </tr>
+        <tr>
+          <td><code>X-RateLimit-Reset</code></td>
+          <td>1568126089</td>
+          <td>A timestamp indicating when <code>X-RateLimit-Remaining</code> will return to its higher possible value</td>
+        </tr>
+        <tr>
+          <td><code>X-RateLimit-ResetSeconds</code></td>
+          <td>3599</td>
+          <td>How many seconds to wait before <code>X-RateLimit-Remaining</code> returns to its higher possible value</td>
+        </tr>
+      </tbody>
+    </table>
+
+
     Resources
     ---------
 
@@ -103,7 +176,7 @@ security:
 
 tags:
   - name: Auth and security
-    description: Login, logout and authorization endpoints
+    description: Login, logout, rate-limit and authorization endpoints
   - name: Library and metadata
     description: Information and metadata about musical and audio entities (albums, tracks, artists, etc.)
   - name: Uploads and audio content
@@ -117,7 +190,7 @@ paths:
   /api/v1/oauth/apps/:
     post:
       tags:
-        - "auth"
+        - "Auth and security"
       description:
         Register an OAuth application
       security: []
@@ -247,6 +320,19 @@ paths:
               schema:
                 $ref: "#/definitions/Me"
 
+  /api/v1/rate-limit/:
+    get:
+      summary: Retrive rate-limit information and current usage status
+      tags:
+        - "Auth and security"
+
+      responses:
+        200:
+          content:
+            application/json:
+              schema:
+                $ref: "#/definitions/RateLimitStatus"
+
   /api/v1/artists/:
     get:
       summary: List artists
@@ -296,6 +382,7 @@ paths:
       summary: Retrieve a single artist
       parameters:
         - $ref: "#/parameters/ObjectId"
+        - $ref: "#/parameters/Refresh"
       security:
         - oauth2:
           - "read:libraries"
@@ -395,6 +482,7 @@ paths:
       summary: Retrieve a single album
       parameters:
         - $ref: "#/parameters/ObjectId"
+        - $ref: "#/parameters/Refresh"
 
       security:
         - oauth2:
@@ -518,6 +606,7 @@ paths:
     get:
       parameters:
         - $ref: "#/parameters/ObjectId"
+        - $ref: "#/parameters/Refresh"
       summary: Retrieve a single track
 
       security:
@@ -974,6 +1063,14 @@ parameters:
     schema:
       required: false
       type: "boolean"
+  Refresh:
+    name: "refresh"
+    in: "query"
+    default: false
+    description: "Trigger an ActivityPub fetch to refresh local data"
+    schema:
+      required: false
+      type: "boolean"
 
 responses:
   200:
@@ -1179,6 +1276,10 @@ definitions:
       - $ref: "#/definitions/BaseArtist"
       - type: "object"
         properties:
+          tracks_count:
+            type: "integer"
+            format: "int64"
+            example: 42
           albums:
             type: "array"
             items:
@@ -1631,6 +1732,75 @@ definitions:
         type: "boolean"
         example: false
         description: A boolean indicating if the user can manage instance settings and users
+  RateLimitStatus:
+    type: "object"
+    properties:
+      enabled:
+        type: "boolean"
+        example: true
+        description: A boolean indicating if rate-limiting is enabled on the server
+      ident:
+        type: "object"
+        description: Client-related data
+        properties:
+          type:
+            type: string
+            example: "anonymous"
+            enum:
+              - "authenticated"
+              - "anonymous"
+          id:
+            type: string
+            example: "92.143.42"
+            description: An address IP or user ID identifying the client
+      scopes:
+        type: "array"
+        items:
+          type: "object"
+          description: Rate-limit scope configuration and usage
+          properties:
+            id:
+              type: string
+              example: "password-reset"
+            description:
+              type: string
+              example: "Password reset request"
+            rate:
+              type: string
+              example: "30/day"
+            limit:
+              type: "integer"
+              format: "int64"
+              example: 30
+            duration:
+              type: "integer"
+              format: "int64"
+              example: 86400
+            remaining:
+              type: "integer"
+              format: "int64"
+              example: 28
+              description: How many requests can be sent with the same scope before the limit applies
+            reset:
+              type: "integer"
+              format: "int64"
+              example: 1568126189
+              description: A timestamp indicating when <code>remaining</code> will return to its higher possible value
+            reset_seconds:
+              type: "integer"
+              format: "int64"
+              example: 86267
+              description: How many seconds to wait before <code>remaining</code> returns to its higher possible value
+            available:
+              type: "integer"
+              format: "int64"
+              example: 1568126089
+              description: A timestamp indicating when the client can retry
+            available_seconds:
+              type: "integer"
+              format: "int64"
+              example: 54
+              description: How many seconds to wait before a retry
 
   ResourceNotFound:
     type: "object"
diff --git a/docs/users/account.rst b/docs/users/account.rst
new file mode 100644
index 0000000000000000000000000000000000000000..6d98919873165765c8c714e171fa7a4c3eb8182c
--- /dev/null
+++ b/docs/users/account.rst
@@ -0,0 +1,14 @@
+Manage your account
+===================
+
+Delete your account
+-------------------
+
+You can delete your Funkwhale account by visiting your settings. The deletion form is found at the bottom of the page. You will need to input your password to confirm the deletion.
+
+Once the deletion request is submitted, your account and associated data will be removed from the server within a few minutes. This includes, but isn't limited to your avatar, email address, music, favorites, radios, followers and playlists.
+
+Your server will also broadcast a message to other server on the federation to inform them about the deletion.
+
+Please note that while these servers are supposed to comply and delete any local copy of your data, this isn't a strong guarantee and some data may remain available, especially on servers
+that are offline or unreachable when the deletion message is broadcasted.
diff --git a/docs/users/index.rst b/docs/users/index.rst
index 9387f281bf71504bdcd457909551e84f09e6bbb0..557e9078258f4a88475edfe25221ac1225d0e723 100644
--- a/docs/users/index.rst
+++ b/docs/users/index.rst
@@ -21,6 +21,7 @@ Using Funkwhale
 .. toctree::
    :maxdepth: 2
 
+   account
    queue
    managing
    playlists
@@ -28,6 +29,7 @@ Using Funkwhale
    radios
    follow
    apps
+   reports
    ../cli/index
 
 Troubleshooting Issues
diff --git a/docs/users/reports.rst b/docs/users/reports.rst
new file mode 100644
index 0000000000000000000000000000000000000000..bf870e5c3a623d7165c51ac535ab7f4507caac21
--- /dev/null
+++ b/docs/users/reports.rst
@@ -0,0 +1,54 @@
+Reporting content and accounts
+==============================
+
+Funkwhale includes a report feature you can use to contact your pod's moderators.
+
+If you think some action, such as removal, should be taken toward an account or specific content (like an artist or a library), we encourage you to use
+this feature. This is especially recommended if you find illegal or abusive content, or anything that could be an infraction of your pod's rules.
+
+After submission, your pod moderators will be notified and will be able to :doc:`act on your report </moderator/reports>`.
+
+Submit a report
+---------------
+
+You can submit those reports from various places in the app, depending on what you are reporting (see below).
+
+You'll need to pick a category for your report. Available categories are:
+
+- **Takedown request**: to request removal of copyrighted material
+- **Illegal content**: to report an account, track, album, artist, library, playlist or account that features illegal content
+- **Offensive content**: to report an account, track, album, artist, library, playlist or account that features offensive or abusive content
+- **Invalid metadata**: to report a track, album or artist with invalid or incomplete metadata
+- **Other**: to report anything else that doesn't fit into one of these categories
+
+You can also include with your report an additional explanation to ensure moderators can understand and act on the issue.
+
+Accountless reports
+-------------------
+
+If this feature is enabled on the pod you are browsing, you'll be able to submit reports without an account.
+
+This works exactly the same, but the report form will have an extra "email" field where you should include a working
+email address, in the event moderators need to contact you.
+
+Reporting an account
+--------------------
+
+Accounts can be reported in two ways.
+
+- When viewing user activity, such as favorites or listening history, the dropdown menu next to the corresponding activity will include an option to report the account
+- When viewing a library the dropdown menu in the top right corner will include an option to report the corresponding account
+
+Reporting an artist, playlist, album or track
+---------------------------------------------
+
+Anything you can play can typically be reported using the dropdown menu on the "Play" button.
+
+Additionally, when viewing the detail page of an artist, playlist, album or track, you can find the
+report option under the dropdown menu on the "More…" button.
+
+
+Reporting a library
+-------------------
+
+When viewing a library the dropdown menu in the top right corner will include an option to report the library.
diff --git a/docs/users/upload.rst b/docs/users/upload.rst
index 169c72710fa638d2999f70fef0d3a05995a19299..68238ac18ce321bc7c909516fd996c97c306fcbc 100644
--- a/docs/users/upload.rst
+++ b/docs/users/upload.rst
@@ -74,16 +74,19 @@ However, Funkwhale can understand and use additional tags to enhance user experi
 | ``Title`` (required)             | ``Letting you``                            | The track title                                               |
 |                                  |                                            |                                                               |
 +----------------------------------+--------------------------------------------+---------------------------------------------------------------+
-| ``Album`` (required)             | ``The Slip``                               | The album title                                               |
-|                                  |                                            |                                                               |
-+----------------------------------+--------------------------------------------+---------------------------------------------------------------+
 | ``Artist`` (required)            | ``Nine Inch Nails``                        | The artist name                                               |
 |                                  |                                            |                                                               |
 +----------------------------------+--------------------------------------------+---------------------------------------------------------------+
+| ``Album``                        | ``The Slip``                               | The album title. If none is provided, an [Unknown Album]     |
+|                                  |                                            | entry will be created                                         |
++----------------------------------+--------------------------------------------+---------------------------------------------------------------+
 | ``Album artist``                 | ``Trent Reznor``                           | The album artist name (can be different than the track        |
 |                                  |                                            | artist)                                                       |
 |                                  |                                            |                                                               |
 +----------------------------------+--------------------------------------------+---------------------------------------------------------------+
+| ``Genre``                        | ``Industrial, Metal``                      | A comma separated list of tags to associate with the track     |
+|                                  |                                            | Other supported separators: ``;`` and ``/``                   |
++----------------------------------+--------------------------------------------+---------------------------------------------------------------+
 | ``Track number``                 | ``4``                                      | The position of the track in the album/release                |
 |                                  |                                            |                                                               |
 +----------------------------------+--------------------------------------------+---------------------------------------------------------------+
@@ -173,7 +176,7 @@ and reupload it.
 
 .. _unknown_error:
 
-Unkwown error
+Unknown error
 :::::::::::::
 
 This error can happen for multiple reasons and likely indicates an issue with the Funkwhale
diff --git a/front/Dockerfile b/front/Dockerfile
index 43c968012b26741f70ca2ebb97cec4607fbb7f9c..6acd9d9db69fb133b354c359a7a80247bae6a145 100644
--- a/front/Dockerfile
+++ b/front/Dockerfile
@@ -1,4 +1,4 @@
-FROM node:9
+FROM node:11
 
 # needed to compile translations
 RUN curl -L -o /usr/local/bin/jq https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux64 && chmod +x /usr/local/bin/jq
diff --git a/front/locales/app.pot b/front/locales/app.pot
index 4a7ddcd46f0ba9ca37c2e222379cf61f7c8245b1..184b17fe88b77e5083fcc45de83dfd693c83515c 100644
--- a/front/locales/app.pot
+++ b/front/locales/app.pot
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: front 0.1.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-05-16 10:35+0200\n"
+"POT-Creation-Date: 2019-10-01 15:15+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -38,6 +38,48 @@ msgctxt "Content/Auth/Title"
 msgid "%{ app } wants to access your Funkwhale account"
 msgstr ""
 
+#: front/src/components/About.vue:173 src/components/Home.vue:56
+msgctxt "Content/Home/Stat"
+msgid "%{ count } active user"
+msgid_plural "%{ count } active users"
+msgstr[0] ""
+msgstr[1] ""
+
+#: front/src/components/About.vue:182
+msgctxt "Content/Home/Stat"
+msgid "%{ count } albums"
+msgid_plural "%{ count } albums"
+msgstr[0] ""
+msgstr[1] ""
+
+#: front/src/components/About.vue:152
+msgctxt "*/*/*"
+msgid "%{ count } allowed domains"
+msgid_plural "%{ count } allowed domains"
+msgstr[0] ""
+msgstr[1] ""
+
+#: front/src/components/About.vue:179
+msgctxt "Content/Home/Stat"
+msgid "%{ count } artists"
+msgid_plural "%{ count } artists"
+msgstr[0] ""
+msgstr[1] ""
+
+#: front/src/components/About.vue:176 src/components/Home.vue:59
+msgctxt "Content/Home/Stat"
+msgid "%{ count } hour of music"
+msgid_plural "%{ count } hours of music"
+msgstr[0] ""
+msgstr[1] ""
+
+#: front/src/components/About.vue:188
+msgctxt "Content/Home/Stat"
+msgid "%{ count } listenings"
+msgid_plural "%{ count } listenings"
+msgstr[0] ""
+msgstr[1] ""
+
 #: front/src/components/common/ActionTable.vue:68
 msgctxt "Content/*/Paragraph"
 msgid "%{ count } on %{ total } selected"
@@ -45,8 +87,8 @@ msgid_plural "%{ count } on %{ total } selected"
 msgstr[0] ""
 msgstr[1] ""
 
-#: front/src/components/Sidebar.vue:121 src/components/audio/album/Card.vue:52
-#: front/src/views/content/libraries/Card.vue:40 src/views/content/remote/Card.vue:30
+#: front/src/components/Sidebar.vue:125 src/components/audio/album/Card.vue:52
+#: front/src/views/content/libraries/Card.vue:40 src/views/content/remote/Card.vue:43
 msgctxt "*/*/*"
 msgid "%{ count } track"
 msgid_plural "%{ count } tracks"
@@ -67,7 +109,14 @@ msgid_plural "%{ count } tracks matching combined filters"
 msgstr[0] ""
 msgstr[1] ""
 
-#: front/src/components/playlists/Card.vue:18
+#: front/src/components/About.vue:185
+msgctxt "Content/Home/Stat"
+msgid "%{ count } tracks"
+msgid_plural "%{ count } tracks"
+msgstr[0] ""
+msgstr[1] ""
+
+#: front/src/components/playlists/Card.vue:28
 msgctxt "Content/*/Card/List item"
 msgid "%{ count} track"
 msgid_plural "%{ count } tracks"
@@ -114,7 +163,7 @@ msgctxt "Popup/Playlist/Paragraph"
 msgid "<strong>%{ track }</strong> is already in <strong>%{ playlist }</strong>."
 msgstr ""
 
-#: front/src/components/audio/artist/Card.vue:41
+#: front/src/components/audio/artist/Card.vue:11
 msgctxt "Content/Artist/Card"
 msgid "1 album"
 msgid_plural "%{ count } albums"
@@ -128,24 +177,41 @@ msgid_plural "%{ count } favorites"
 msgstr[0] ""
 msgstr[1] ""
 
-#: front/src/components/Home.vue:64
-msgctxt "Content/Home/Title"
-msgid "A clean library"
+#: front/src/components/audio/artist/Card.vue:15
+msgctxt "Content/Artist/Card"
+msgid "1 track"
+msgid_plural "%{ count } tracks"
+msgstr[0] ""
+msgstr[1] ""
+
+#: front/src/views/Notifications.vue:21 src/views/Notifications.vue:55
+msgctxt "*/*/*"
+msgid "30 days"
+msgstr ""
+
+#: front/src/views/Notifications.vue:22 src/views/Notifications.vue:56
+msgctxt "*/*/*"
+msgid "60 days"
+msgstr ""
+
+#: front/src/views/Notifications.vue:23 src/views/Notifications.vue:57
+msgctxt "*/*/*"
+msgid "90 days"
 msgstr ""
 
 #: front/src/components/library/FileUpload.vue:264
 msgctxt "Content/Library/Help text"
-msgid "A network error occured while uploading this file"
+msgid "A network error occurred while uploading this file"
 msgstr ""
 
-#: front/src/components/library/EditForm.vue:145
+#: front/src/components/library/EditForm.vue:161
 msgctxt "*/*/Placeholder"
 msgid "A short summary describing your changes."
 msgstr ""
 
 #: front/src/components/About.vue:5
-msgctxt "Content/About/Title/Short, Noun"
-msgid "About %{ instance }"
+msgctxt "Content/Home/Header"
+msgid "About %{ podName }"
 msgstr ""
 
 #: front/src/components/Footer.vue:6
@@ -153,7 +219,7 @@ msgctxt "Footer/About/Title"
 msgid "About %{instanceName}"
 msgstr ""
 
-#: front/src/components/Footer.vue:45
+#: front/src/components/Footer.vue:53 src/components/Home.vue:85
 msgctxt "Footer/*/Title/Short"
 msgid "About Funkwhale"
 msgstr ""
@@ -163,9 +229,14 @@ msgctxt "Footer/About/List item.Link"
 msgid "About page"
 msgstr ""
 
-#: front/src/components/About.vue:8 src/components/About.vue:67
-msgctxt "Content/About/Title"
-msgid "About this instance"
+#: front/src/components/Home.vue:19
+msgctxt "Content/Home/Header"
+msgid "About this Funkwhale pod"
+msgstr ""
+
+#: front/src/components/About.vue:21 src/components/About.vue:51
+msgctxt "Content/About/Header"
+msgid "About this pod"
 msgstr ""
 
 #: front/src/views/content/libraries/Detail.vue:48
@@ -178,93 +249,87 @@ msgctxt "Content/Library/Table/Short"
 msgid "Accepted"
 msgstr ""
 
-#: front/src/components/auth/SubsonicTokenForm.vue:110
+#: front/src/components/auth/SubsonicTokenForm.vue:117
 msgctxt "Content/Settings/Message"
 msgid "Access disabled"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:73
-#: front/src/components/mixins/Translations.vue:74
+#: front/src/components/mixins/Translations.vue:85
+#: front/src/components/mixins/Translations.vue:86
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to audio files, libraries, artists, albums and tracks"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:97
-#: front/src/components/mixins/Translations.vue:98
+#: front/src/components/mixins/Translations.vue:109
+#: front/src/components/mixins/Translations.vue:110
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to content filters"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:105
-#: front/src/components/mixins/Translations.vue:106
+#: front/src/components/mixins/Translations.vue:117
+#: front/src/components/mixins/Translations.vue:118
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to edits"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:69
-#: front/src/components/mixins/Translations.vue:70
+#: front/src/components/mixins/Translations.vue:81
+#: front/src/components/mixins/Translations.vue:82
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to email, username, and profile information"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:77
-#: front/src/components/mixins/Translations.vue:78
+#: front/src/components/mixins/Translations.vue:89
+#: front/src/components/mixins/Translations.vue:90
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to favorites"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:85
-#: front/src/components/mixins/Translations.vue:86
+#: front/src/components/mixins/Translations.vue:97
+#: front/src/components/mixins/Translations.vue:98
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to follows"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:81
-#: front/src/components/mixins/Translations.vue:82
+#: front/src/components/mixins/Translations.vue:93
+#: front/src/components/mixins/Translations.vue:94
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to listening history"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:101
-#: front/src/components/mixins/Translations.vue:102
+#: front/src/components/mixins/Translations.vue:113
+#: front/src/components/mixins/Translations.vue:114
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to notifications"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:89
-#: front/src/components/mixins/Translations.vue:90
+#: front/src/components/mixins/Translations.vue:101
+#: front/src/components/mixins/Translations.vue:102
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to playlists"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:93
-#: front/src/components/mixins/Translations.vue:94
+#: front/src/components/mixins/Translations.vue:105
+#: front/src/components/mixins/Translations.vue:106
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to radios"
 msgstr ""
 
-#: front/src/components/Home.vue:101
-msgctxt "Content/Home/List item"
-msgid "Access your music from a clean interface that focuses on what really matters"
-msgstr ""
-
 #: front/src/components/manage/library/UploadsTable.vue:67
-#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:55
 #: front/src/views/admin/library/UploadDetail.vue:175
-#: front/src/components/mixins/Translations.vue:46
+#: front/src/components/mixins/Translations.vue:56
 msgctxt "Content/*/*/Noun"
 msgid "Accessed date"
 msgstr ""
 
-#: front/src/views/admin/library/LibraryDetail.vue:104
-#: front/src/views/admin/library/UploadDetail.vue:111
-msgctxt "*/*/*/Noun"
-msgid "Account"
-msgstr ""
-
 #: front/src/components/manage/library/LibrariesTable.vue:49
 #: front/src/components/manage/library/UploadsTable.vue:61
-msgctxt "*/*/*"
+#: front/src/components/manage/moderation/ReportCard.vue:156
+#: front/src/components/mixins/Report.vue:13
+#: front/src/views/admin/library/LibraryDetail.vue:113
+#: front/src/views/admin/library/UploadDetail.vue:111
+#: front/src/components/mixins/Report.vue:14
+msgctxt "*/*/*/Noun"
 msgid "Account"
 msgstr ""
 
@@ -278,7 +343,7 @@ msgctxt "Content/Settings/Title"
 msgid "Account settings"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:479
+#: front/src/components/auth/Settings.vue:544
 msgctxt "Head/Settings/Title"
 msgid "Account Settings"
 msgstr ""
@@ -295,7 +360,7 @@ msgstr ""
 
 #: front/src/views/admin/moderation/AccountsList.vue:3
 #: front/src/views/admin/moderation/AccountsList.vue:24
-#: front/src/views/admin/moderation/Base.vue:8
+#: front/src/views/admin/moderation/Base.vue:11
 msgctxt "*/Moderation/Title"
 msgid "Accounts"
 msgstr ""
@@ -314,22 +379,24 @@ msgstr[1] ""
 
 #: front/src/components/common/ActionTable.vue:22
 #: front/src/components/library/radios/Builder.vue:65
+#: front/src/components/manage/moderation/ReportCard.vue:210
 msgctxt "Content/*/*/Noun"
 msgid "Actions"
 msgstr ""
 
-#: front/src/components/manage/users/UsersTable.vue:53
+#: front/src/components/manage/users/UsersTable.vue:54
 msgctxt "Content/Admin/Table"
 msgid "Active"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:134
-#: front/src/views/admin/library/ArtistDetail.vue:123
-#: front/src/views/admin/library/LibraryDetail.vue:138
-#: front/src/views/admin/library/TrackDetail.vue:186
+#: front/src/views/admin/library/AlbumDetail.vue:140
+#: front/src/views/admin/library/ArtistDetail.vue:128
+#: front/src/views/admin/library/LibraryDetail.vue:147
+#: front/src/views/admin/library/TagDetail.vue:83
+#: front/src/views/admin/library/TrackDetail.vue:192
 #: front/src/views/admin/library/UploadDetail.vue:160
-#: front/src/views/admin/moderation/AccountsDetail.vue:220
-#: front/src/views/admin/moderation/DomainsDetail.vue:136
+#: front/src/views/admin/moderation/AccountsDetail.vue:221
+#: front/src/views/admin/moderation/DomainsDetail.vue:173
 msgctxt "Content/Moderation/Title"
 msgid "Activity"
 msgstr ""
@@ -340,7 +407,7 @@ msgctxt "Content/Settings/Dropdown.Label/Noun"
 msgid "Activity visibility"
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsList.vue:18
+#: front/src/views/admin/moderation/DomainsList.vue:22
 msgctxt "Content/Moderation/Button/Verb"
 msgid "Add"
 msgstr ""
@@ -386,7 +453,19 @@ msgctxt "Content/Radio/Paragraph"
 msgid "Add filters to customize your radio"
 msgstr ""
 
-#: front/src/components/audio/PlayButton.vue:75
+#: front/src/components/manage/moderation/NoteForm.vue:12
+msgctxt "Content/Moderation/Button.Label/Verb"
+msgid "Add note"
+msgstr ""
+
+#: front/src/components/manage/moderation/DomainsTable.vue:191
+#: front/src/views/admin/moderation/DomainsDetail.vue:46
+#: front/src/views/admin/moderation/DomainsList.vue:18
+msgctxt "Content/Moderation/Action/Verb"
+msgid "Add to allow-list"
+msgstr ""
+
+#: front/src/components/audio/PlayButton.vue:91
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Add to current queue"
 msgstr ""
@@ -418,7 +497,7 @@ msgctxt "Popup/Playlist/Table.Button.Label/Verb"
 msgid "Add track"
 msgstr ""
 
-#: front/src/components/manage/users/UsersTable.vue:69
+#: front/src/components/manage/users/UsersTable.vue:70
 msgctxt "Content/Admin/Table.User role"
 msgid "Admin"
 msgstr ""
@@ -428,46 +507,45 @@ msgctxt "Sidebar/Admin/Title/Noun"
 msgid "Administration"
 msgstr ""
 
-#: front/src/views/admin/library/TrackDetail.vue:107
-msgctxt "*/*/*/Noun"
-msgid "Album"
-msgstr ""
-
-#: front/src/components/audio/SearchBar.vue:26 src/components/audio/track/Table.vue:9
-#: front/src/components/library/AlbumBase.vue:152
-#: front/src/components/library/ArtistBase.vue:194
+#: front/src/components/audio/SearchBar.vue:33 src/components/audio/track/Table.vue:9
+#: front/src/components/library/AlbumBase.vue:170
+#: front/src/components/library/ArtistBase.vue:212
 #: front/src/components/manage/library/TracksTable.vue:40
-#: front/src/components/metadata/Search.vue:134
+#: front/src/components/metadata/Search.vue:134 src/components/mixins/Report.vue:41
+#: front/src/views/admin/library/TrackDetail.vue:113
 #: front/src/views/content/libraries/FilesTable.vue:57
+#: front/src/components/mixins/Report.vue:42
 msgctxt "*/*/*"
 msgid "Album"
 msgstr ""
 
-#: front/src/views/admin/library/TrackDetail.vue:128
+#: front/src/views/admin/library/TrackDetail.vue:134
 msgctxt "*/*/*/Noun"
 msgid "Album artist"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:92
+#: front/src/views/admin/library/AlbumDetail.vue:98
 msgctxt "Content/Moderation/Title"
 msgid "Album data"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:51
-#: front/src/components/mixins/Translations.vue:52
+#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/mixins/Translations.vue:62
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Album name"
 msgstr ""
 
-#: front/src/components/audio/Search.vue:19 src/components/instance/Stats.vue:48
-#: front/src/components/library/Albums.vue:120 src/components/library/Library.vue:7
+#: front/src/components/audio/Search.vue:19 src/components/library/Albums.vue:129
+#: front/src/components/library/Library.vue:7 src/components/library/TagDetail.vue:28
 #: front/src/components/manage/library/ArtistsTable.vue:41
+#: front/src/components/manage/library/TagsTable.vue:43
 #: front/src/views/admin/library/AlbumsList.vue:24
-#: front/src/views/admin/library/ArtistDetail.vue:241
+#: front/src/views/admin/library/ArtistDetail.vue:256
 #: front/src/views/admin/library/Base.vue:11
-#: front/src/views/admin/library/LibraryDetail.vue:219
-#: front/src/views/admin/moderation/AccountsDetail.vue:354
-#: front/src/views/admin/moderation/DomainsDetail.vue:264
+#: front/src/views/admin/library/LibraryDetail.vue:238
+#: front/src/views/admin/library/TagDetail.vue:133
+#: front/src/views/admin/moderation/AccountsDetail.vue:366
+#: front/src/views/admin/moderation/DomainsDetail.vue:301
 msgctxt "*/*/*"
 msgid "Albums"
 msgstr ""
@@ -481,7 +559,10 @@ msgstr ""
 #: front/src/components/manage/library/LibrariesTable.vue:13
 #: front/src/components/manage/library/UploadsTable.vue:13
 #: front/src/components/manage/library/UploadsTable.vue:22
+#: front/src/components/manage/moderation/DomainsTable.vue:11
 #: front/src/components/manage/users/InvitationsTable.vue:19
+#: front/src/components/moderation/ReportCategoryDropdown.vue:32
+#: front/src/views/admin/moderation/ReportsList.vue:17
 #: front/src/views/content/libraries/FilesTable.vue:13
 msgctxt "Content/*/Dropdown"
 msgid "All"
@@ -499,34 +580,49 @@ msgctxt "Head/Authorize/Title"
 msgid "Allow application"
 msgstr ""
 
+#: front/src/components/About.vue:136
+msgctxt "*/*/*"
+msgid "Allow-list"
+msgstr ""
+
+#: front/src/components/About.vue:149
+msgctxt "*/*/*"
+msgid "Allowed domains"
+msgstr ""
+
 #: front/src/components/library/ImportStatusModal.vue:17
 msgctxt "Popup/Import/Message"
-msgid "An error occured during upload processing. You will find more information below."
+msgid "An error occurred during upload processing. You will find more information below."
 msgstr ""
 
 #: front/src/components/playlists/Editor.vue:13
 msgctxt "Content/Playlist/Error message.Title"
-msgid "An error occured while saving your changes"
+msgid "An error occurred while saving your changes"
 msgstr ""
 
 #: front/src/components/federation/FetchButton.vue:21
 msgctxt "Popup/*/Message.Content"
-msgid "An error occured while trying to refresh data:"
+msgid "An error occurred while trying to refresh data:"
 msgstr ""
 
 #: front/src/components/federation/FetchButton.vue:41
 msgctxt "*/*/Error"
-msgid "An HTTP error occured while contacting the remote server"
-msgstr ""
-
-#: front/src/components/auth/Login.vue:10
-msgctxt "Content/Login/Error message/List item"
-msgid "An unknown error happend, this can mean the server is down or cannot be reached"
+msgid "An HTTP error occurred while contacting the remote server"
 msgstr ""
 
 #: front/src/components/library/ImportStatusModal.vue:145
 msgctxt "Popup/Import/Error.Label"
-msgid "An unkwown error occured"
+msgid "An unknown error occurred"
+msgstr ""
+
+#: front/src/components/About.vue:123
+msgctxt "*/*/*"
+msgid "Anonymous access"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:54
+msgctxt "Popup/Moderation/Error message"
+msgid "Anonymous reports are disabled, please sign-in to submit a report."
 msgstr ""
 
 #: front/src/components/auth/Settings.vue:175 src/components/auth/Settings.vue:225
@@ -576,28 +672,25 @@ msgctxt "Content/Login/Title"
 msgid "Are you sure you want to log out?"
 msgstr ""
 
+#: front/src/components/audio/SearchBar.vue:32 src/components/audio/track/Table.vue:8
 #: front/src/components/manage/library/AlbumsTable.vue:40
 #: front/src/components/manage/library/TracksTable.vue:41
-msgctxt "*/*/*"
-msgid "Artist"
-msgstr ""
-
-#: front/src/components/audio/SearchBar.vue:25 src/components/audio/track/Table.vue:8
-#: front/src/components/metadata/Search.vue:130
-#: front/src/views/admin/library/AlbumDetail.vue:108
-#: front/src/views/admin/library/TrackDetail.vue:118
-#: front/src/views/content/libraries/FilesTable.vue:56
+#: front/src/components/metadata/Search.vue:130 src/components/mixins/Report.vue:55
+#: front/src/views/admin/library/AlbumDetail.vue:114
+#: front/src/views/admin/library/TrackDetail.vue:124
+#: front/src/views/content/libraries/FilesTable.vue:56 src/entities.js:12
+#: front/src/components/mixins/Report.vue:56
 msgctxt "*/*/*/Noun"
 msgid "Artist"
 msgstr ""
 
-#: front/src/views/admin/library/ArtistDetail.vue:91
+#: front/src/views/admin/library/ArtistDetail.vue:96
 msgctxt "Content/Moderation/Title"
 msgid "Artist data"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:52
-#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/mixins/Translations.vue:62
+#: front/src/components/mixins/Translations.vue:63
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Artist name"
 msgstr ""
@@ -607,32 +700,33 @@ msgctxt "*/Search/Input.Placeholder"
 msgid "Artist, album, track…"
 msgstr ""
 
+#: front/src/components/audio/Search.vue:10 src/components/library/Artists.vue:117
+#: front/src/components/library/Library.vue:10
+#: front/src/components/library/TagDetail.vue:19
+#: front/src/components/manage/library/TagsTable.vue:42
 #: front/src/views/admin/library/ArtistsList.vue:24
 #: front/src/views/admin/library/Base.vue:8
-#: front/src/views/admin/library/LibraryDetail.vue:209
-msgctxt "*/*/*"
-msgid "Artists"
-msgstr ""
-
-#: front/src/components/audio/Search.vue:10 src/components/instance/Stats.vue:42
-#: front/src/components/library/Artists.vue:117 src/components/library/Library.vue:10
-#: front/src/views/admin/moderation/AccountsDetail.vue:346
-#: front/src/views/admin/moderation/DomainsDetail.vue:254
+#: front/src/views/admin/library/LibraryDetail.vue:228
+#: front/src/views/admin/library/TagDetail.vue:123
+#: front/src/views/admin/moderation/AccountsDetail.vue:358
+#: front/src/views/admin/moderation/DomainsDetail.vue:291
 msgctxt "*/*/*/Noun"
 msgid "Artists"
 msgstr ""
 
-#: front/src/components/favorites/List.vue:34 src/components/library/Albums.vue:25
-#: front/src/components/library/Artists.vue:25 src/components/library/Radios.vue:44
+#: front/src/components/favorites/List.vue:34 src/components/library/Albums.vue:29
+#: front/src/components/library/Artists.vue:29 src/components/library/Radios.vue:44
 #: front/src/components/manage/library/AlbumsTable.vue:21
 #: front/src/components/manage/library/ArtistsTable.vue:21
 #: front/src/components/manage/library/EditsCardList.vue:39
 #: front/src/components/manage/library/LibrariesTable.vue:30
+#: front/src/components/manage/library/TagsTable.vue:21
 #: front/src/components/manage/library/TracksTable.vue:21
 #: front/src/components/manage/library/UploadsTable.vue:40
 #: front/src/components/manage/moderation/AccountsTable.vue:21
-#: front/src/components/manage/moderation/DomainsTable.vue:19
+#: front/src/components/manage/moderation/DomainsTable.vue:27
 #: front/src/components/manage/users/UsersTable.vue:19
+#: front/src/views/admin/moderation/ReportsList.vue:44
 #: front/src/views/content/libraries/FilesTable.vue:31
 #: front/src/views/playlists/List.vue:27
 msgctxt "Content/Search/Dropdown"
@@ -644,18 +738,24 @@ msgctxt "Content/Signup/Button.Label/Verb"
 msgid "Ask for a password reset"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:198
-#: front/src/views/admin/library/ArtistDetail.vue:187
-#: front/src/views/admin/library/LibraryDetail.vue:176
-#: front/src/views/admin/library/TrackDetail.vue:250
+#: front/src/components/manage/moderation/ReportCard.vue:72
+msgctxt "Content/Moderation/*"
+msgid "Assigned to"
+msgstr ""
+
+#: front/src/views/admin/library/AlbumDetail.vue:214
+#: front/src/views/admin/library/ArtistDetail.vue:202
+#: front/src/views/admin/library/LibraryDetail.vue:195
+#: front/src/views/admin/library/TagDetail.vue:113
+#: front/src/views/admin/library/TrackDetail.vue:266
 #: front/src/views/admin/library/UploadDetail.vue:191
-#: front/src/views/admin/moderation/AccountsDetail.vue:274
-#: front/src/views/admin/moderation/DomainsDetail.vue:202
+#: front/src/views/admin/moderation/AccountsDetail.vue:285
+#: front/src/views/admin/moderation/DomainsDetail.vue:239
 msgctxt "Content/Moderation/Title"
 msgid "Audio content"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:55
+#: front/src/components/ShortcutsModal.vue:92
 msgctxt "Popup/Keyboard shortcuts/Title"
 msgid "Audio player shortcuts"
 msgstr ""
@@ -698,9 +798,9 @@ msgid "Back to settings"
 msgstr ""
 
 #: front/src/components/library/TrackDetail.vue:48
-#: front/src/components/mixins/Translations.vue:55
+#: front/src/components/mixins/Translations.vue:67
 #: front/src/views/admin/library/UploadDetail.vue:227
-#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:68
 msgctxt "Content/Track/*/Noun"
 msgid "Bitrate"
 msgstr ""
@@ -726,6 +826,11 @@ msgctxt "Sidebar/Library/List item.Link/Verb"
 msgid "Browse library"
 msgstr ""
 
+#: front/src/components/Home.vue:132
+msgctxt "Content/Home/Link"
+msgid "Browse public content"
+msgstr ""
+
 #: front/src/components/library/Albums.vue:4
 msgctxt "Content/Album/Title"
 msgid "Browsing albums"
@@ -756,38 +861,40 @@ msgctxt "Content/Album/Card"
 msgid "By %{ artist }"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:112
+#: front/src/views/content/remote/Card.vue:125
 msgctxt "Popup/Library/Paragraph"
 msgid "By unfollowing this library, you loose access to its content."
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:214
-#: front/src/views/admin/library/ArtistDetail.vue:203
-#: front/src/views/admin/library/LibraryDetail.vue:192
-#: front/src/views/admin/library/TrackDetail.vue:266
+#: front/src/views/admin/library/AlbumDetail.vue:230
+#: front/src/views/admin/library/ArtistDetail.vue:218
+#: front/src/views/admin/library/LibraryDetail.vue:211
+#: front/src/views/admin/library/TrackDetail.vue:282
 #: front/src/views/admin/library/UploadDetail.vue:208
-#: front/src/views/admin/moderation/AccountsDetail.vue:290
-#: front/src/views/admin/moderation/DomainsDetail.vue:217
+#: front/src/views/admin/moderation/AccountsDetail.vue:301
+#: front/src/views/admin/moderation/DomainsDetail.vue:254
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Cached size"
 msgstr ""
 
 #: front/src/components/SetInstanceModal.vue:37
 #: front/src/components/common/DangerousButton.vue:17
-#: front/src/components/library/AlbumBase.vue:36
-#: front/src/components/library/ArtistBase.vue:47
-#: front/src/components/library/EditForm.vue:95
-#: front/src/components/library/TrackBase.vue:55
+#: front/src/components/library/AlbumBase.vue:37
+#: front/src/components/library/ArtistBase.vue:48
+#: front/src/components/library/EditForm.vue:107
+#: front/src/components/library/TrackBase.vue:53
 #: front/src/components/library/radios/Filter.vue:53
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:54
 #: front/src/components/moderation/FilterModal.vue:39
+#: front/src/components/moderation/ReportModal.vue:59
 #: front/src/components/playlists/PlaylistModal.vue:26
 #: front/src/components/playlists/PlaylistModal.vue:77
+#: front/src/views/playlists/Detail.vue:62
 msgctxt "*/*/Button.Label/Verb"
 msgid "Cancel"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:97
+#: front/src/views/content/remote/Card.vue:110
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Cancel follow request"
 msgstr ""
@@ -802,6 +909,14 @@ msgctxt "Content/Library/Help text"
 msgid "Cannot upload this file, ensure it is not too big"
 msgstr ""
 
+#: front/src/components/manage/moderation/ReportCard.vue:30
+#: front/src/components/mixins/Translations.vue:42
+#: front/src/components/moderation/ReportCategoryDropdown.vue:2
+#: front/src/components/mixins/Translations.vue:43
+msgctxt "*/*/*"
+msgid "Category"
+msgstr ""
+
 #: front/src/components/Footer.vue:21
 msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
 msgid "Change language"
@@ -817,6 +932,11 @@ msgctxt "Content/Settings/Button.Label"
 msgid "Change password"
 msgstr ""
 
+#: front/src/components/Footer.vue:37
+msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
+msgid "Change theme"
+msgstr ""
+
 #: front/src/views/auth/PasswordResetConfirm.vue:62
 msgctxt "*/Signup/Title"
 msgid "Change your password"
@@ -842,7 +962,7 @@ msgctxt "Popup/Settings/Paragraph"
 msgid "Changing your password will have the following consequences:"
 msgstr ""
 
-#: front/src/components/Footer.vue:40
+#: front/src/components/Footer.vue:48
 msgctxt "Footer/*/List item.Link"
 msgid "Chat room"
 msgstr ""
@@ -857,12 +977,9 @@ msgctxt "Popup/Instance/Title"
 msgid "Choose your instance"
 msgstr ""
 
-#: front/src/components/manage/users/InvitationForm.vue:37
-msgctxt "Content/Admin/Button.Label/Verb"
-msgid "Clear"
-msgstr ""
-
 #: front/src/components/library/EditForm.vue:75
+#: front/src/components/library/EditForm.vue:88
+#: front/src/components/manage/users/InvitationForm.vue:37
 msgctxt "Content/Library/Button.Label"
 msgid "Clear"
 msgstr ""
@@ -873,14 +990,14 @@ msgctxt "*/Playlist/Button.Label/Verb"
 msgid "Clear playlist"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:642
-msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
-msgid "Clear your queue"
+#: front/src/components/ShortcutsModal.vue:144
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Clear queue"
 msgstr ""
 
-#: front/src/components/Home.vue:44
-msgctxt "Content/Home/List item/Verb"
-msgid "Click once, listen for hours using built-in radios"
+#: front/src/components/audio/Player.vue:668
+msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
+msgid "Clear your queue"
 msgstr ""
 
 #: front/src/components/mixins/Translations.vue:21
@@ -894,22 +1011,24 @@ msgctxt "Content/Library/Paragraph/Call to action"
 msgid "Click to select files to upload or drag and drop files or directories"
 msgstr ""
 
+#: front/src/components/ShortcutsModal.vue:38
 #: front/src/components/federation/FetchButton.vue:85
 #: front/src/components/library/ImportStatusModal.vue:79
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:34
 msgctxt "*/*/Button.Label/Verb"
 msgid "Close"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:20
-msgctxt "Popup/Keyboard shortcuts/Button.Label/Verb"
-msgid "Close"
-msgstr ""
-
 #: front/src/components/federation/FetchButton.vue:88
 msgctxt "*/*/Button.Label/Verb"
 msgid "Close and reload page"
 msgstr ""
 
+#: front/src/components/About.vue:94
+msgctxt "*/*/*/State of registrations"
+msgid "Closed"
+msgstr ""
+
 #: front/src/components/manage/users/InvitationForm.vue:26
 #: front/src/components/manage/users/InvitationsTable.vue:42
 msgctxt "Content/Admin/Table.Label/Noun"
@@ -917,8 +1036,8 @@ msgid "Code"
 msgstr ""
 
 #: front/src/components/audio/album/Card.vue:41
-#: front/src/components/audio/artist/Card.vue:33
-msgctxt "Content/*/Card.Link/Verb"
+#: front/src/components/common/CollapseLink.vue:3
+msgctxt "*/*/Button,Label"
 msgid "Collapse"
 msgstr ""
 
@@ -942,18 +1061,19 @@ msgctxt "Content/Signup/Form.Label"
 msgid "Confirmation code"
 msgstr ""
 
+#: front/src/components/About.vue:67 src/components/Home.vue:65
+msgctxt "Content/Home/Header/Name"
+msgid "Contact"
+msgstr ""
+
 #: front/src/components/moderation/FilterModal.vue:90
 msgctxt "*/Moderation/Message"
 msgid "Content filter successfully added"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:96
-#: front/src/components/mixins/Translations.vue:97
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Content filters"
-msgstr ""
-
 #: front/src/components/auth/Settings.vue:116
+#: front/src/components/mixins/Translations.vue:108
+#: front/src/components/mixins/Translations.vue:109
 msgctxt "Content/Settings/Title/Noun"
 msgid "Content filters"
 msgstr ""
@@ -968,13 +1088,19 @@ msgctxt "Content/*/Button.Help text.Paragraph"
 msgid "Content have been updated, click refresh to see up-to-date content"
 msgstr ""
 
-#: front/src/components/Footer.vue:48
+#: front/src/components/About.vue:46
+msgctxt "Content/About/Header"
+msgid "Contents"
+msgstr ""
+
+#: front/src/components/Footer.vue:56
 msgctxt "Footer/*/List item.Link"
 msgid "Contribute"
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:19
+#: front/src/components/audio/EmbedWizard.vue:29
 #: front/src/components/common/CopyInput.vue:8
+#: front/src/components/forms/PasswordInput.vue:43
 msgctxt "*/*/Button.Label/Short, Verb"
 msgid "Copy"
 msgstr ""
@@ -989,14 +1115,14 @@ msgctxt "Content/Auth/Paragraph"
 msgid "Copy-paste the following code in the application:"
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:21
+#: front/src/components/audio/EmbedWizard.vue:31
 msgctxt "Popup/Embed/Paragraph"
 msgid "Copy/paste this code in your website HTML"
 msgstr ""
 
 #: front/src/components/library/TrackDetail.vue:10
-#: front/src/views/admin/library/TrackDetail.vue:153
-msgctxt "Content/Track/Table.Label/Noun"
+#: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:77
+msgctxt "Content/Track/*/Noun"
 msgid "Copyright"
 msgstr ""
 
@@ -1010,29 +1136,20 @@ msgctxt "Content/Library/Error message.Title"
 msgid "Could not fetch remote library"
 msgstr ""
 
-#: front/src/components/Home.vue:80
-msgctxt "Content/Home/List item"
-msgid "Covers, lyrics, our goal is to have them all ;)"
-msgstr ""
-
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:58
 msgctxt "Content/Moderation/Card.Button.Label/Verb"
 msgid "Create"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:4
+#: front/src/views/auth/Signup.vue:4
 msgctxt "Content/Signup/Title"
 msgid "Create a funkwhale account"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:220
-msgctxt "Content/Settings/Button.Label"
-msgid "Create a new application"
-msgstr ""
-
 #: front/src/components/auth/ApplicationNew.vue:8
 #: front/src/components/auth/ApplicationNew.vue:41
-msgctxt "Content/Applications/Title"
+#: front/src/components/auth/Settings.vue:220
+msgctxt "Content/Settings/Button.Label"
 msgid "Create a new application"
 msgstr ""
 
@@ -1046,7 +1163,7 @@ msgctxt "Popup/Playlist/Title/Verb"
 msgid "Create a new playlist"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:57 src/components/auth/Login.vue:17
+#: front/src/components/Sidebar.vue:57 src/components/auth/LoginForm.vue:15
 msgctxt "*/Signup/Link/Verb"
 msgid "Create an account"
 msgstr ""
@@ -1061,7 +1178,7 @@ msgctxt "Content/Library/Button.Label/Verb"
 msgid "Create library"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:53
+#: front/src/components/auth/SignupForm.vue:49
 msgctxt "Content/Signup/Button.Label"
 msgid "Create my account"
 msgstr ""
@@ -1085,11 +1202,13 @@ msgstr ""
 #: front/src/components/manage/library/AlbumsTable.vue:44
 #: front/src/components/manage/library/ArtistsTable.vue:43
 #: front/src/components/manage/library/LibrariesTable.vue:54
+#: front/src/components/manage/library/TagsTable.vue:45
 #: front/src/components/manage/library/TracksTable.vue:44
 #: front/src/components/manage/library/UploadsTable.vue:66
+#: front/src/components/manage/moderation/ReportCard.vue:43
 #: front/src/components/manage/users/InvitationsTable.vue:40
-#: front/src/components/mixins/Translations.vue:43
-#: front/src/components/mixins/Translations.vue:44
+#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/mixins/Translations.vue:54
 msgctxt "Content/*/*/Noun"
 msgid "Creation date"
 msgstr ""
@@ -1099,6 +1218,11 @@ msgctxt "Content/Settings/Title/Noun"
 msgid "Current avatar"
 msgstr ""
 
+#: front/src/components/admin/SettingsGroup.vue:67
+msgctxt "Content/Settings/Title/Noun"
+msgid "Current image"
+msgstr ""
+
 #: front/src/views/content/libraries/DetailArea.vue:4
 msgctxt "Content/Library/Title"
 msgid "Current library"
@@ -1114,6 +1238,11 @@ msgctxt "Content/Library/Title"
 msgid "Current usage"
 msgstr ""
 
+#: front/src/components/Footer.vue:94
+msgctxt "Footer/Settings/Dropdown.Label/Theme name"
+msgid "Dark"
+msgstr ""
+
 #: front/src/components/federation/FetchButton.vue:53
 msgctxt "*/*/Error"
 msgid "Data returned by the remote server had invalid or missing attributes"
@@ -1134,7 +1263,7 @@ msgctxt "Popup/Import/Table.Label/Noun"
 msgid "Debug information"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:75
+#: front/src/components/ShortcutsModal.vue:128
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Decrease volume"
 msgstr ""
@@ -1145,22 +1274,28 @@ msgstr ""
 #: front/src/components/manage/library/AlbumsTable.vue:188
 #: front/src/components/manage/library/ArtistsTable.vue:178
 #: front/src/components/manage/library/LibrariesTable.vue:205
+#: front/src/components/manage/library/TagsTable.vue:179
 #: front/src/components/manage/library/TracksTable.vue:188
 #: front/src/components/manage/library/UploadsTable.vue:255
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:61
+#: front/src/components/manage/moderation/NotesThread.vue:24
+#: front/src/components/manage/moderation/NotesThread.vue:29
+#: front/src/components/manage/moderation/ReportCard.vue:360
 #: front/src/components/manage/users/InvitationsTable.vue:167
-#: front/src/views/admin/library/AlbumDetail.vue:72
-#: front/src/views/admin/library/AlbumDetail.vue:77
-#: front/src/views/admin/library/ArtistDetail.vue:71
+#: front/src/views/admin/library/AlbumDetail.vue:78
+#: front/src/views/admin/library/AlbumDetail.vue:83
 #: front/src/views/admin/library/ArtistDetail.vue:76
+#: front/src/views/admin/library/ArtistDetail.vue:81
 #: front/src/views/admin/library/LibraryDetail.vue:58
 #: front/src/views/admin/library/LibraryDetail.vue:63
-#: front/src/views/admin/library/TrackDetail.vue:71
-#: front/src/views/admin/library/TrackDetail.vue:76
+#: front/src/views/admin/library/TagDetail.vue:41
+#: front/src/views/admin/library/TagDetail.vue:46
+#: front/src/views/admin/library/TrackDetail.vue:77
+#: front/src/views/admin/library/TrackDetail.vue:82
 #: front/src/views/admin/library/UploadDetail.vue:65
 #: front/src/views/admin/library/UploadDetail.vue:70
 #: front/src/views/content/libraries/FilesTable.vue:222
-#: front/src/views/content/libraries/Form.vue:29 src/views/playlists/Detail.vue:34
+#: front/src/views/content/libraries/Form.vue:29 src/views/playlists/Detail.vue:42
 msgctxt "*/*/*/Verb"
 msgid "Delete"
 msgstr ""
@@ -1185,7 +1320,17 @@ msgctxt "Popup/Moderation/Button.Label/Verb"
 msgid "Delete moderation rule"
 msgstr ""
 
-#: front/src/views/playlists/Detail.vue:39
+#: front/src/components/auth/Settings.vue:274 src/components/auth/Settings.vue:302
+msgctxt "*/*/Button.Label"
+msgid "Delete my account"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:297
+msgctxt "*/*/Button.Label"
+msgid "Delete my account…"
+msgstr ""
+
+#: front/src/views/playlists/Detail.vue:47
 msgctxt "Popup/Playlist/Button.Label/Verb"
 msgid "Delete playlist"
 msgstr ""
@@ -1195,13 +1340,23 @@ msgctxt "Popup/Radio/Button.Label/Verb"
 msgid "Delete radio"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:73
-#: front/src/views/admin/library/TrackDetail.vue:72
+#: front/src/components/manage/moderation/ReportCard.vue:357
+msgctxt "Content/Moderation/Button/Verb"
+msgid "Delete reported object"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:358
+msgctxt "Content/Moderation/Popup/Header"
+msgid "Delete reported object?"
+msgstr ""
+
+#: front/src/views/admin/library/AlbumDetail.vue:79
+#: front/src/views/admin/library/TrackDetail.vue:78
 msgctxt "Popup/Library/Title"
 msgid "Delete this album?"
 msgstr ""
 
-#: front/src/views/admin/library/ArtistDetail.vue:72
+#: front/src/views/admin/library/ArtistDetail.vue:77
 msgctxt "Popup/Library/Title"
 msgid "Delete this artist?"
 msgstr ""
@@ -1217,50 +1372,63 @@ msgctxt "Popup/Moderation/Title"
 msgid "Delete this moderation rule?"
 msgstr ""
 
+#: front/src/components/manage/moderation/NotesThread.vue:25
+msgctxt "Popup/Moderation/Title"
+msgid "Delete this note?"
+msgstr ""
+
 #: front/src/components/library/EditCard.vue:94
 msgctxt "Popup/Library/Title"
 msgid "Delete this suggestion?"
 msgstr ""
 
+#: front/src/views/admin/library/TagDetail.vue:42
+msgctxt "Popup/Library/Title"
+msgid "Delete this tag?"
+msgstr ""
+
 #: front/src/views/admin/library/UploadDetail.vue:66
 msgctxt "Popup/Library/Title"
 msgid "Delete this upload?"
 msgstr ""
 
-#: front/src/components/favorites/List.vue:35 src/components/library/Albums.vue:26
-#: front/src/components/library/Artists.vue:26 src/components/library/Radios.vue:47
+#: front/src/components/favorites/List.vue:35 src/components/library/Albums.vue:30
+#: front/src/components/library/Artists.vue:30 src/components/library/Radios.vue:47
 #: front/src/components/manage/library/AlbumsTable.vue:22
 #: front/src/components/manage/library/ArtistsTable.vue:22
 #: front/src/components/manage/library/EditsCardList.vue:40
 #: front/src/components/manage/library/LibrariesTable.vue:31
+#: front/src/components/manage/library/TagsTable.vue:22
 #: front/src/components/manage/library/TracksTable.vue:22
 #: front/src/components/manage/library/UploadsTable.vue:41
 #: front/src/components/manage/moderation/AccountsTable.vue:22
-#: front/src/components/manage/moderation/DomainsTable.vue:20
+#: front/src/components/manage/moderation/DomainsTable.vue:28
 #: front/src/components/manage/users/UsersTable.vue:20
+#: front/src/views/admin/moderation/ReportsList.vue:45
 #: front/src/views/content/libraries/FilesTable.vue:32
 #: front/src/views/playlists/List.vue:28
 msgctxt "Content/Search/Dropdown"
 msgid "Descending"
 msgstr ""
 
-#: front/src/views/admin/library/LibraryDetail.vue:123
-msgctxt "*/*/*/Noun"
-msgid "Description"
+#: front/src/components/manage/moderation/NoteForm.vue:37
+msgctxt "Content/Moderation/Placeholder"
+msgid "Describe what actions have been taken, or any other related updates…"
 msgstr ""
 
 #: front/src/components/library/radios/Builder.vue:25
+#: front/src/views/admin/library/LibraryDetail.vue:132
 #: front/src/views/content/libraries/Form.vue:14
-msgctxt "Content/*/Input.Label/Noun"
+msgctxt "*/*/*/Noun"
 msgid "Description"
 msgstr ""
 
-#: front/src/views/content/libraries/Card.vue:48 src/views/content/remote/Card.vue:54
+#: front/src/views/content/libraries/Card.vue:48 src/views/content/remote/Card.vue:67
 msgctxt "Content/Library/Card.Button.Label/Noun"
 msgid "Details"
 msgstr ""
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:491
+#: front/src/views/admin/moderation/AccountsDetail.vue:511
 msgctxt "Content/Moderation/Help text"
 msgid "Determine how much content the user can upload. Leave empty to use the default value of the instance."
 msgstr ""
@@ -1272,38 +1440,50 @@ msgid "Determine the visibility level of your activity"
 msgstr ""
 
 #: front/src/components/auth/Settings.vue:104
-#: front/src/components/auth/SubsonicTokenForm.vue:51
+#: front/src/components/auth/SubsonicTokenForm.vue:56
 msgctxt "Popup/Settings/Button.Label"
 msgid "Disable access"
 msgstr ""
 
-#: front/src/components/auth/SubsonicTokenForm.vue:48
+#: front/src/components/auth/SubsonicTokenForm.vue:53
 msgctxt "Content/Settings/Button.Label/Verb"
 msgid "Disable Subsonic access"
 msgstr ""
 
-#: front/src/components/auth/SubsonicTokenForm.vue:49
+#: front/src/components/auth/SubsonicTokenForm.vue:54
 msgctxt "Popup/Settings/Title"
 msgid "Disable Subsonic API access?"
 msgstr ""
 
+#: front/src/components/About.vue:118 src/components/About.vue:131
+#: front/src/components/About.vue:144
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:18
 #: front/src/views/admin/moderation/AccountsDetail.vue:157
 #: front/src/views/admin/moderation/AccountsDetail.vue:161
-msgctxt "*/*/*"
+msgctxt "*/*/*/State of feature"
 msgid "Disabled"
 msgstr ""
 
-#: front/src/views/admin/library/TrackDetail.vue:145
+#: front/src/views/admin/library/TrackDetail.vue:151
 msgctxt "*/*/*/Noun"
 msgid "Disc number"
 msgstr ""
 
+#: front/src/components/Home.vue:157
+msgctxt "Content/Home/Link"
+msgid "Discover everything you need to know about Funkwhale and its features"
+msgstr ""
+
 #: front/src/components/auth/SubsonicTokenForm.vue:13
 msgctxt "Content/Settings/Link"
 msgid "Discover how to use Funkwhale from other apps"
 msgstr ""
 
+#: front/src/views/Notifications.vue:45
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Discover other ways to help"
+msgstr ""
+
 #: front/src/views/admin/moderation/AccountsDetail.vue:132
 msgctxt "'Content/*/*/Noun'"
 msgid "Display name"
@@ -1319,6 +1499,11 @@ msgctxt "Content/Moderation/Help text"
 msgid "Do not download any media file (audio, album cover, account avatar…) from this account or domain. This will purge existing content as well."
 msgstr ""
 
+#: front/src/views/Notifications.vue:36
+msgctxt "Content/Notifications/Header"
+msgid "Do you like Funkwhale?"
+msgstr ""
+
 #: front/src/components/playlists/Editor.vue:51
 msgctxt "Popup/Playlist/Title"
 msgid "Do you want to clear the playlist \"%{ playlist }\"?"
@@ -1329,7 +1514,7 @@ msgctxt "Modal/*/Title"
 msgid "Do you want to confirm this action?"
 msgstr ""
 
-#: front/src/views/playlists/Detail.vue:35
+#: front/src/views/playlists/Detail.vue:43
 msgctxt "Popup/Playlist/Title/Call to action"
 msgid "Do you want to delete the playlist \"%{ playlist }\"?"
 msgstr ""
@@ -1339,6 +1524,11 @@ msgctxt "Popup/Radio/Title"
 msgid "Do you want to delete the radio \"%{ radio }\"?"
 msgstr ""
 
+#: front/src/components/auth/Settings.vue:298
+msgctxt "Popup/Settings/Title"
+msgid "Do you want to delete your account?"
+msgstr ""
+
 #: front/src/components/moderation/FilterModal.vue:3
 msgctxt "Popup/Moderation/Title/Verb"
 msgid "Do you want to hide content from artist \"%{ name }\"?"
@@ -1351,7 +1541,12 @@ msgid_plural "Do you want to launch %{ action } on %{ count } elements?"
 msgstr[0] ""
 msgstr[1] ""
 
-#: front/src/components/Sidebar.vue:118
+#: front/src/components/moderation/ReportModal.vue:3
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Do you want to report this object?"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:122
 msgctxt "Sidebar/Queue/Message"
 msgid "Do you want to restore your previous queue?"
 msgstr ""
@@ -1367,26 +1562,33 @@ msgstr ""
 #: front/src/components/manage/library/TracksTable.vue:42
 #: front/src/components/manage/library/UploadsTable.vue:62
 #: front/src/components/manage/moderation/AccountsTable.vue:40
-#: front/src/components/mixins/Translations.vue:60
-#: front/src/views/admin/library/AlbumDetail.vue:118
-#: front/src/views/admin/library/ArtistDetail.vue:107
-#: front/src/views/admin/library/LibraryDetail.vue:114
-#: front/src/views/admin/library/TrackDetail.vue:170
+#: front/src/components/manage/moderation/ReportCard.vue:169
+#: front/src/components/manage/moderation/ReportCard.vue:179
+#: front/src/components/mixins/Translations.vue:72
+#: front/src/views/admin/library/AlbumDetail.vue:124
+#: front/src/views/admin/library/ArtistDetail.vue:112
+#: front/src/views/admin/library/LibraryDetail.vue:123
+#: front/src/views/admin/library/TrackDetail.vue:176
 #: front/src/views/admin/library/UploadDetail.vue:121
 #: front/src/views/admin/moderation/AccountsDetail.vue:123
-#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/mixins/Translations.vue:73
 msgctxt "Content/Moderation/*/Noun"
 msgid "Domain"
 msgstr ""
 
-#: front/src/views/admin/moderation/Base.vue:5
+#: front/src/views/admin/moderation/Base.vue:8
 #: front/src/views/admin/moderation/DomainsList.vue:3
-#: front/src/views/admin/moderation/DomainsList.vue:48
+#: front/src/views/admin/moderation/DomainsList.vue:54
 msgctxt "*/Moderation/*/Noun"
 msgid "Domains"
 msgstr ""
 
-#: front/src/components/library/TrackBase.vue:39
+#: front/src/views/Notifications.vue:42
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Donate"
+msgstr ""
+
+#: front/src/components/library/TrackBase.vue:37
 #: front/src/views/admin/library/UploadDetail.vue:58
 msgctxt "Content/Track/Link/Verb"
 msgid "Download"
@@ -1399,10 +1601,10 @@ msgstr ""
 
 #: front/src/components/audio/track/Table.vue:10
 #: front/src/components/library/TrackDetail.vue:30
-#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:68
 #: front/src/views/admin/library/UploadDetail.vue:238
 #: front/src/views/content/libraries/FilesTable.vue:60
-#: front/src/components/mixins/Translations.vue:57
+#: front/src/components/mixins/Translations.vue:69
 msgctxt "Content/*/*"
 msgid "Duration"
 msgstr ""
@@ -1412,39 +1614,24 @@ msgctxt "Content/Signup/Message"
 msgid "E-mail address confirmed"
 msgstr ""
 
-#: front/src/components/Home.vue:88
-msgctxt "Content/Home/Title"
-msgid "Easy to use"
-msgstr ""
-
-#: front/src/components/library/AlbumBase.vue:68
-#: front/src/components/library/ArtistBase.vue:79
-#: front/src/components/library/TrackBase.vue:87
+#: front/src/components/auth/Settings.vue:246 src/components/library/AlbumBase.vue:73
+#: front/src/components/library/ArtistBase.vue:84
+#: front/src/components/library/TrackBase.vue:89
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:45
-#: front/src/components/radios/Card.vue:23 src/views/admin/library/AlbumDetail.vue:65
-#: front/src/views/admin/library/ArtistDetail.vue:64
-#: front/src/views/admin/library/TrackDetail.vue:64
+#: front/src/components/radios/Card.vue:23 src/views/admin/library/AlbumDetail.vue:71
+#: front/src/views/admin/library/ArtistDetail.vue:69
+#: front/src/views/admin/library/TrackDetail.vue:70
 #: front/src/views/content/libraries/Detail.vue:9 src/views/playlists/Detail.vue:31
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Edit"
 msgstr ""
 
-#: front/src/components/auth/Settings.vue:246
-msgctxt "Content/Settings/Button.Label"
-msgid "Edit"
-msgstr ""
-
 #: front/src/components/auth/ApplicationEdit.vue:30
 #: front/src/components/auth/ApplicationEdit.vue:75
 msgctxt "Content/Applications/Title"
 msgid "Edit application"
 msgstr ""
 
-#: front/src/components/About.vue:22
-msgctxt "Content/Settings/Button.Label/Verb"
-msgid "Edit instance info"
-msgstr ""
-
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:3
 msgctxt "Content/Moderation/Card.Title/Verb"
 msgid "Edit moderation rule"
@@ -1465,22 +1652,19 @@ msgctxt "Content/*/Title"
 msgid "Edit this track"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:182
-#: front/src/views/admin/library/ArtistDetail.vue:171
+#: front/src/components/mixins/Translations.vue:116
+#: front/src/views/admin/library/AlbumDetail.vue:198
+#: front/src/views/admin/library/ArtistDetail.vue:186
 #: front/src/views/admin/library/Base.vue:5 src/views/admin/library/EditsList.vue:24
-#: front/src/views/admin/library/TrackDetail.vue:234
+#: front/src/views/admin/library/TrackDetail.vue:250
+#: front/src/components/mixins/Translations.vue:117
 msgctxt "*/Admin/*/Noun"
 msgid "Edits"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:104
-#: front/src/components/mixins/Translations.vue:105
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Edits"
-msgstr ""
-
-#: front/src/components/auth/Signup.vue:30
+#: front/src/components/auth/SignupForm.vue:26
 #: front/src/components/manage/users/UsersTable.vue:38
+#: front/src/components/moderation/ReportModal.vue:31
 msgctxt "Content/*/*/Noun"
 msgid "Email"
 msgstr ""
@@ -1490,50 +1674,57 @@ msgctxt "Content/*/*"
 msgid "Email address"
 msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:53
-#: front/src/components/library/ArtistBase.vue:64
-#: front/src/components/library/TrackBase.vue:72
+#: front/src/components/library/AlbumBase.vue:54
+#: front/src/components/library/ArtistBase.vue:65
+#: front/src/components/library/TrackBase.vue:70 src/views/playlists/Detail.vue:38
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Embed"
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:20
+#: front/src/components/audio/EmbedWizard.vue:30
 msgctxt "Popup/Embed/Input.Label/Noun"
 msgid "Embed code"
 msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:26
+#: front/src/components/library/AlbumBase.vue:27
 msgctxt "Popup/Album/Title/Verb"
 msgid "Embed this album on your website"
 msgstr ""
 
-#: front/src/components/library/ArtistBase.vue:37
+#: front/src/components/library/ArtistBase.vue:38
 msgctxt "Popup/Artist/Title/Verb"
 msgid "Embed this artist work on your website"
 msgstr ""
 
-#: front/src/components/library/TrackBase.vue:45
+#: front/src/views/playlists/Detail.vue:52
+msgctxt "Popup/Album/Title/Verb"
+msgid "Embed this playlist on your website"
+msgstr ""
+
+#: front/src/components/library/TrackBase.vue:43
 msgctxt "Popup/Track/Title"
 msgid "Embed this track on your website"
 msgstr ""
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:259
-#: front/src/views/admin/moderation/DomainsDetail.vue:187
+#: front/src/views/admin/moderation/AccountsDetail.vue:260
+#: front/src/views/admin/moderation/DomainsDetail.vue:224
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Emitted library follows"
 msgstr ""
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:243
-#: front/src/views/admin/moderation/DomainsDetail.vue:171
+#: front/src/views/admin/moderation/AccountsDetail.vue:244
+#: front/src/views/admin/moderation/DomainsDetail.vue:208
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Emitted messages"
 msgstr ""
 
+#: front/src/components/About.vue:114 src/components/About.vue:127
+#: front/src/components/About.vue:140
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:8
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:17
 #: front/src/views/admin/moderation/AccountsDetail.vue:156
 #: front/src/views/admin/moderation/AccountsDetail.vue:160
-msgctxt "*/*/*"
+msgctxt "*/*/*/State of feature"
 msgid "Enabled"
 msgstr ""
 
@@ -1552,9 +1743,9 @@ msgctxt "Content/Search/Input.Placeholder"
 msgid "Enter a radio name…"
 msgstr ""
 
-#: front/src/components/library/Albums.vue:119
+#: front/src/components/library/Albums.vue:128
 msgctxt "Content/Search/Input.Placeholder"
-msgid "Enter album title..."
+msgid "Enter album title…"
 msgstr ""
 
 #: front/src/components/library/Artists.vue:116
@@ -1569,15 +1760,15 @@ msgstr ""
 
 #: front/src/views/auth/PasswordReset.vue:54
 msgctxt "Content/Signup/Input.Placeholder"
-msgid "Enter the email address binded to your account"
+msgid "Enter the email address linked to your account"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:103
+#: front/src/components/auth/SignupForm.vue:96
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your email"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:98 src/components/auth/Signup.vue:100
+#: front/src/components/auth/SignupForm.vue:91 src/components/auth/SignupForm.vue:93
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your invitation code (case insensitive)"
 msgstr ""
@@ -1587,12 +1778,12 @@ msgctxt "Content/Library/Input.Placeholder/Verb"
 msgid "Enter your search query…"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:102
+#: front/src/components/auth/SignupForm.vue:95
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your username"
 msgstr ""
 
-#: front/src/components/auth/Login.vue:83
+#: front/src/components/auth/LoginForm.vue:81
 msgctxt "Content/Login/Input.Placeholder"
 msgid "Enter your username or email"
 msgstr ""
@@ -1609,7 +1800,7 @@ msgctxt "Popup/Import/Table.Label/Noun"
 msgid "Error detail"
 msgstr ""
 
-#: front/src/views/admin/Settings.vue:87
+#: front/src/views/admin/Settings.vue:89
 msgctxt "Content/Admin/Menu"
 msgid "Error reporting"
 msgstr ""
@@ -1665,16 +1856,12 @@ msgctxt "Popup/Moderation/Error message"
 msgid "Error while fetching application data"
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:118
+#: front/src/views/admin/moderation/DomainsDetail.vue:155
 msgctxt "Content/Moderation/Table"
 msgid "Error while fetching node info"
 msgstr ""
 
 #: front/src/components/admin/SettingsGroup.vue:5
-msgctxt "Content/Settings/Error message.Title"
-msgid "Error while saving settings"
-msgstr ""
-
 #: front/src/components/federation/FetchButton.vue:73
 msgctxt "Content/*/Error message.Title"
 msgid "Error while saving settings"
@@ -1685,6 +1872,16 @@ msgctxt "Content/Library/Error message.Title"
 msgid "Error while submitting edit"
 msgstr ""
 
+#: front/src/components/manage/moderation/NoteForm.vue:3
+msgctxt "Content/Moderation/Error message.Title"
+msgid "Error while submitting note"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:11
+msgctxt "Popup/Moderation/Error message"
+msgid "Error while submitting report"
+msgstr ""
+
 #: front/src/components/mixins/Translations.vue:32
 #: front/src/components/mixins/Translations.vue:33
 msgctxt "Content/Library/Table/Short"
@@ -1719,9 +1916,14 @@ msgctxt "Content/Radio/Table.Label/Verb"
 msgid "Exclude"
 msgstr ""
 
+#: front/src/components/common/CollapseLink.vue:2
+msgctxt "*/*/Button,Label"
+msgid "Expand"
+msgstr ""
+
 #: front/src/components/manage/users/InvitationsTable.vue:41
-#: front/src/components/mixins/Translations.vue:49
-#: front/src/components/mixins/Translations.vue:50
+#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:60
 msgctxt "Content/Admin/Table.Label/Noun"
 msgid "Expiration date"
 msgstr ""
@@ -1747,31 +1949,26 @@ msgctxt "Content/Library/Dropdown"
 msgid "Failed"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:62
+#: front/src/views/content/remote/Card.vue:75
 msgctxt "Content/Library/Card.List item/Noun"
 msgid "Failed tracks:"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:165
-#: front/src/views/admin/library/ArtistDetail.vue:154
-#: front/src/views/admin/library/TrackDetail.vue:217
+#: front/src/views/admin/library/AlbumDetail.vue:171
+#: front/src/views/admin/library/ArtistDetail.vue:159
+#: front/src/views/admin/library/TrackDetail.vue:223
 msgctxt "*/*/*"
 msgid "Favorited tracks"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:66
+#: front/src/components/Sidebar.vue:66 src/components/mixins/Translations.vue:88
+#: front/src/components/mixins/Translations.vue:89
 msgctxt "Sidebar/Favorites/List item.Link/Noun"
 msgid "Favorites"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:76
-#: front/src/components/mixins/Translations.vue:77
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Favorites"
-msgstr ""
-
-#: front/src/views/admin/Settings.vue:84
-msgctxt "Content/Admin/Menu"
+#: front/src/components/About.vue:110 src/views/admin/Settings.vue:84
+msgctxt "*/*/*"
 msgid "Federation"
 msgstr ""
 
@@ -1795,6 +1992,11 @@ msgctxt "Content/Radio/Table.Label/Noun"
 msgid "Filter name"
 msgstr ""
 
+#: front/src/components/Home.vue:118
+msgctxt "Content/Home/Link"
+msgid "Find another pod"
+msgstr ""
+
 #: front/src/components/manage/library/UploadsTable.vue:26
 #: front/src/components/mixins/Translations.vue:36
 #: front/src/views/content/libraries/FilesTable.vue:17
@@ -1804,25 +2006,31 @@ msgid "Finished"
 msgstr ""
 
 #: front/src/components/manage/moderation/AccountsTable.vue:42
-#: front/src/components/manage/moderation/DomainsTable.vue:41
-#: front/src/views/admin/library/AlbumDetail.vue:149
-#: front/src/views/admin/library/ArtistDetail.vue:138
-#: front/src/views/admin/library/LibraryDetail.vue:153
-#: front/src/views/admin/library/TrackDetail.vue:201
+#: front/src/components/manage/moderation/DomainsTable.vue:49
+#: front/src/views/admin/library/AlbumDetail.vue:155
+#: front/src/views/admin/library/ArtistDetail.vue:143
+#: front/src/views/admin/library/LibraryDetail.vue:162
+#: front/src/views/admin/library/TagDetail.vue:98
+#: front/src/views/admin/library/TrackDetail.vue:207
 #: front/src/views/admin/library/UploadDetail.vue:167
-#: front/src/views/admin/moderation/AccountsDetail.vue:235
-#: front/src/views/admin/moderation/DomainsDetail.vue:151
+#: front/src/views/admin/moderation/AccountsDetail.vue:236
+#: front/src/views/admin/moderation/DomainsDetail.vue:188
 msgctxt "Content/Moderation/Table.Label/Short (Value is a date)"
 msgid "First seen"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:46
-#: front/src/components/mixins/Translations.vue:47
+#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:57
 msgctxt "Content/Moderation/Dropdown/Noun"
 msgid "First seen date"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:87
+#: front/src/components/ShortcutsModal.vue:64
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Focus searchbar"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:100
 msgctxt "Content/Library/Card.Button.Label/Verb"
 msgid "Follow"
 msgstr ""
@@ -1832,36 +2040,32 @@ msgctxt "Content/Library/Title/Verb"
 msgid "Follow remote libraries"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:92
+#: front/src/views/content/remote/Card.vue:105
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Follow request pending approval"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:64
-#: front/src/views/admin/library/LibraryDetail.vue:161
+#: front/src/components/manage/library/LibrariesTable.vue:53
+#: front/src/components/mixins/Translations.vue:76
+#: front/src/views/admin/library/LibraryDetail.vue:170
 #: front/src/views/content/libraries/Detail.vue:7
-#: front/src/components/mixins/Translations.vue:65
+#: front/src/components/mixins/Translations.vue:77
 msgctxt "Content/Federation/*/Noun"
 msgid "Followers"
 msgstr ""
 
-#: front/src/components/manage/library/LibrariesTable.vue:53
-msgctxt "Content/*/*/Noun"
-msgid "Followers"
-msgstr ""
-
-#: front/src/views/content/remote/Card.vue:103
+#: front/src/views/content/remote/Card.vue:116
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Following"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:84
-#: front/src/components/mixins/Translations.vue:85
+#: front/src/components/mixins/Translations.vue:96
+#: front/src/components/mixins/Translations.vue:97
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Follows"
 msgstr ""
 
-#: front/src/components/library/TrackBase.vue:17
+#: front/src/components/library/TrackBase.vue:245
 msgctxt "Content/Track/Paragraph"
 msgid "From album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
 msgstr ""
@@ -1876,27 +2080,17 @@ msgctxt "Content/Settings/Paragraph'"
 msgid "Funkwhale is compatible with other music players that support the Subsonic API."
 msgstr ""
 
-#: front/src/components/Home.vue:90
-msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale is dead simple to use."
-msgstr ""
-
-#: front/src/components/Home.vue:39
-msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale is designed to make it easy to listen to music you like, or to discover new artists."
-msgstr ""
-
-#: front/src/components/Home.vue:111
+#: front/src/components/Home.vue:88
 msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale is free and gives you control on your music."
+msgid "Funkwhale is free and developped by a friendly community of volunteers."
 msgstr ""
 
-#: front/src/components/Home.vue:66
-msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale takes care of handling your music"
+#: front/src/components/About.vue:78
+msgctxt "*/*/*"
+msgid "Funkwhale version"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:38
+#: front/src/components/ShortcutsModal.vue:56
 msgctxt "Popup/Keyboard shortcuts/Title"
 msgid "General shortcuts"
 msgstr ""
@@ -1906,31 +2100,16 @@ msgctxt "Content/Admin/Button.Label/Verb"
 msgid "Get a new invitation"
 msgstr ""
 
-#: front/src/components/Home.vue:13
-msgctxt "Content/Home/Button.Label/Verb"
-msgid "Get me to the library"
-msgstr ""
-
-#: front/src/components/Home.vue:70
-msgctxt "Content/Home/List item/Verb"
-msgid "Get quality metadata about your music thanks to <a href=\"%{ url }\" target=\"_blank\">MusicBrainz</a>"
-msgstr ""
-
 #: front/src/views/content/Home.vue:12 src/views/content/Home.vue:19
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Get started"
 msgstr ""
 
-#: front/src/components/Footer.vue:37
+#: front/src/components/Footer.vue:45 src/components/library/ImportStatusModal.vue:45
 msgctxt "Footer/*/Link"
 msgid "Getting help"
 msgstr ""
 
-#: front/src/components/library/ImportStatusModal.vue:45
-msgctxt "Popup/Import/Table.Label/Noun"
-msgid "Getting help"
-msgstr ""
-
 #: front/src/components/common/ActionTable.vue:35
 #: front/src/components/common/ActionTable.vue:56
 msgctxt "Content/*/Button.Label/Short, Verb"
@@ -1942,11 +2121,21 @@ msgctxt "Content/*/Button.Label/Verb"
 msgid "Go to home page"
 msgstr ""
 
+#: front/src/views/Notifications.vue:27 src/views/Notifications.vue:61
+msgctxt "Content/Notifications/Button.Label"
+msgid "Got it!"
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:128
 msgctxt "Content/Settings/Title"
 msgid "Hidden artists"
 msgstr ""
 
+#: front/src/components/About.vue:155
+msgctxt "*/*/*/Verb"
+msgid "Hide"
+msgstr ""
+
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:114
 msgctxt "Content/Moderation/Help text"
 msgid "Hide account or domain content, except from followers."
@@ -1957,12 +2146,12 @@ msgctxt "Popup/*/Button.Label"
 msgid "Hide content"
 msgstr ""
 
-#: front/src/components/audio/PlayButton.vue:26
+#: front/src/components/audio/PlayButton.vue:31
 msgctxt "*/Queue/Dropdown/Button/Label/Short"
 msgid "Hide content from this artist"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:643
+#: front/src/components/audio/Player.vue:669
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Hide content from this artist…"
 msgstr ""
@@ -1972,11 +2161,6 @@ msgctxt "Head/Home/Title"
 msgid "Home"
 msgstr ""
 
-#: front/src/components/instance/Stats.vue:36
-msgctxt "Content/About/Paragraph/Unit"
-msgid "Hours of music"
-msgstr ""
-
 #: front/src/components/auth/SubsonicTokenForm.vue:10
 msgctxt "Content/Settings/Paragraph"
 msgid "However, accessing Funkwhale from those clients require a separate password you can set below."
@@ -1984,7 +2168,7 @@ msgstr ""
 
 #: front/src/views/auth/PasswordResetConfirm.vue:24
 msgctxt "Content/Signup/Paragraph"
-msgid "If the email address provided in the previous step is valid and binded to a user account, you should receive an email with reset instructions in the next couple of minutes."
+msgid "If the email address provided in the previous step is valid and linked to a user account, you should receive an email with reset instructions in the next couple of minutes."
 msgstr ""
 
 #: front/src/components/auth/Settings.vue:205
@@ -1992,6 +2176,12 @@ msgctxt "Content/Applications/Paragraph"
 msgid "If you authorize third-party applications to access your data, those applications will be listed here."
 msgstr ""
 
+#: front/src/components/mixins/Translations.vue:46
+#: front/src/components/mixins/Translations.vue:47
+msgctxt "Content/Moderation/Dropdown"
+msgid "Illegal content"
+msgstr ""
+
 #: front/src/components/library/ImportStatusModal.vue:3
 msgctxt "Popup/Import/Title"
 msgid "Import detail"
@@ -2003,14 +2193,10 @@ msgid "Import reference"
 msgstr ""
 
 #: front/src/components/manage/library/UploadsTable.vue:20
-#: front/src/views/content/libraries/FilesTable.vue:11
-#: front/src/views/content/libraries/FilesTable.vue:59
-msgctxt "Content/Library/*/Noun"
-msgid "Import status"
-msgstr ""
-
 #: front/src/components/manage/library/UploadsTable.vue:64
 #: front/src/views/admin/library/UploadDetail.vue:131
+#: front/src/views/content/libraries/FilesTable.vue:11
+#: front/src/views/content/libraries/FilesTable.vue:59
 msgctxt "Content/*/*/Noun"
 msgid "Import status"
 msgstr ""
@@ -2051,12 +2237,12 @@ msgctxt "Popup/Moderation/List item"
 msgid "In radio suggestions"
 msgstr ""
 
-#: front/src/components/manage/users/UsersTable.vue:54
+#: front/src/components/manage/users/UsersTable.vue:55
 msgctxt "Content/Admin/Table"
 msgid "Inactive"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:71
+#: front/src/components/ShortcutsModal.vue:124
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Increase volume"
 msgstr ""
@@ -2074,7 +2260,7 @@ msgctxt "Content/Settings/Dropdown/Short"
 msgid "Instance"
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:71
+#: front/src/views/admin/moderation/DomainsDetail.vue:99
 msgctxt "Content/Moderation/Title"
 msgid "Instance data"
 msgstr ""
@@ -2099,17 +2285,25 @@ msgctxt "Popup/Instance/Input.Label/Noun"
 msgid "Instance URL"
 msgstr ""
 
+#: front/src/components/manage/moderation/ReportCard.vue:92
+#: front/src/components/manage/moderation/ReportCard.vue:203
+msgctxt "Content/*/*/Noun"
+msgid "Internal notes"
+msgstr ""
+
 #: front/src/components/library/FileUpload.vue:268
 msgctxt "Content/Library/Help text"
 msgid "Invalid file type, ensure you are uploading an audio file. Supported file extensions are %{ extensions }"
 msgstr ""
 
 #: front/src/components/library/ImportStatusModal.vue:139
+#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:46
 msgctxt "Popup/Import/Error.Label"
 msgid "Invalid metadata"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:44
+#: front/src/components/auth/SignupForm.vue:40
 #: front/src/components/manage/users/InvitationForm.vue:11
 msgctxt "Content/*/Input.Label"
 msgid "Invitation code"
@@ -2121,7 +2315,13 @@ msgctxt "*/Admin/*/Noun"
 msgid "Invitations"
 msgstr ""
 
-#: front/src/components/Footer.vue:41
+#: front/src/components/manage/moderation/DomainsTable.vue:9
+#: front/src/views/admin/moderation/DomainsDetail.vue:106
+msgctxt "Content/Moderation/*/Adjective"
+msgid "Is present on allow-list"
+msgstr ""
+
+#: front/src/components/Footer.vue:49
 msgctxt "Footer/*/List item.Link"
 msgid "Issue tracker"
 msgstr ""
@@ -2131,9 +2331,10 @@ msgctxt "Popup/Instance/Error message.Title"
 msgid "It is not possible to connect to the given URL"
 msgstr ""
 
-#: front/src/components/Home.vue:50
-msgctxt "Content/Home/List item/Verb"
-msgid "Keep a track of your favorite songs"
+#: front/src/components/mixins/Translations.vue:65
+#: front/src/components/mixins/Translations.vue:66
+msgctxt "*/*/*/Noun"
+msgid "Items"
 msgstr ""
 
 #: front/src/components/Footer.vue:33 src/components/ShortcutsModal.vue:3
@@ -2141,7 +2342,7 @@ msgctxt "*/*/*/Noun"
 msgid "Keyboard shortcuts"
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:161
+#: front/src/views/admin/moderation/DomainsDetail.vue:198
 msgctxt "Content/Moderation/Table.Label.Link"
 msgid "Known accounts"
 msgstr ""
@@ -2152,15 +2353,15 @@ msgid "Known libraries"
 msgstr ""
 
 #: front/src/components/manage/users/UsersTable.vue:41
-#: front/src/components/mixins/Translations.vue:58
-#: front/src/views/admin/moderation/AccountsDetail.vue:205
-#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:70
+#: front/src/views/admin/moderation/AccountsDetail.vue:206
+#: front/src/components/mixins/Translations.vue:71
 msgctxt "Content/Profile/Table.Label/Short, Noun (Value is a date)"
 msgid "Last activity"
 msgstr ""
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:188
-#: front/src/views/admin/moderation/DomainsDetail.vue:78
+#: front/src/views/admin/moderation/AccountsDetail.vue:189
+#: front/src/views/admin/moderation/DomainsDetail.vue:115
 msgctxt "Content/*/Table.Label"
 msgid "Last checked"
 msgstr ""
@@ -2175,13 +2376,13 @@ msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Last seen"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:47
-#: front/src/components/mixins/Translations.vue:48
+#: front/src/components/mixins/Translations.vue:57
+#: front/src/components/mixins/Translations.vue:58
 msgctxt "Content/Moderation/Dropdown/Noun"
 msgid "Last seen date"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:60
+#: front/src/views/content/remote/Card.vue:73
 msgctxt "Content/Library/Card.List item/Noun"
 msgid "Last update:"
 msgstr ""
@@ -2191,9 +2392,9 @@ msgctxt "Modal/*/Button.Label/Short, Verb"
 msgid "Launch"
 msgstr ""
 
-#: front/src/components/Home.vue:10
-msgctxt "Content/Home/Button.Label/Verb"
-msgid "Learn more about this instance"
+#: front/src/components/Home.vue:35
+msgctxt "Content/Home/Link"
+msgid "Learn more"
 msgstr ""
 
 #: front/src/components/manage/users/InvitationForm.vue:58
@@ -2201,29 +2402,31 @@ msgctxt "Content/Admin/Input.Placeholder"
 msgid "Leave empty for a random code"
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:7
+#: front/src/components/audio/EmbedWizard.vue:17
 msgctxt "Popup/Embed/Paragraph"
 msgid "Leave empty for a responsive widget"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:232
-#: front/src/views/admin/library/ArtistDetail.vue:221
-#: front/src/views/admin/library/TrackDetail.vue:284
-#: front/src/views/admin/moderation/AccountsDetail.vue:327
-#: front/src/views/admin/moderation/DomainsDetail.vue:234
-#: front/src/views/content/Base.vue:5
+#: front/src/components/mixins/Translations.vue:64
+#: front/src/components/mixins/Translations.vue:65
 msgctxt "*/*/*/Noun"
-msgid "Libraries"
+msgid "Length"
 msgstr ""
 
+#: front/src/views/admin/library/AlbumDetail.vue:248
+#: front/src/views/admin/library/ArtistDetail.vue:236
 #: front/src/views/admin/library/Base.vue:17
 #: front/src/views/admin/library/LibrariesList.vue:24
-msgctxt "*/*/*"
+#: front/src/views/admin/library/TrackDetail.vue:300
+#: front/src/views/admin/moderation/AccountsDetail.vue:339
+#: front/src/views/admin/moderation/DomainsDetail.vue:271
+#: front/src/views/content/Base.vue:5
+msgctxt "*/*/*/Noun"
 msgid "Libraries"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:72
-#: front/src/components/mixins/Translations.vue:73
+#: front/src/components/mixins/Translations.vue:84
+#: front/src/components/mixins/Translations.vue:85
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Libraries and uploads"
 msgstr ""
@@ -2233,12 +2436,14 @@ msgctxt "Content/Library/Paragraph"
 msgid "Libraries help you organize and share your music collections. You can upload your own music collection to Funkwhale and share it with your friends and family."
 msgstr ""
 
-#: front/src/components/Sidebar.vue:85 src/components/instance/Stats.vue:30
+#: front/src/components/Sidebar.vue:85
 #: front/src/components/manage/library/UploadsTable.vue:60
-#: front/src/components/manage/users/UsersTable.vue:173
+#: front/src/components/manage/users/UsersTable.vue:174
+#: front/src/components/mixins/Report.vue:77
 #: front/src/views/admin/library/UploadDetail.vue:144
-#: front/src/views/admin/moderation/AccountsDetail.vue:498
-msgctxt "*/*/*"
+#: front/src/views/admin/moderation/AccountsDetail.vue:518 src/entities.js:132
+#: front/src/components/mixins/Report.vue:78
+msgctxt "*/*/*/Noun"
 msgid "Library"
 msgstr ""
 
@@ -2269,21 +2474,37 @@ msgstr ""
 
 #: front/src/components/library/TrackDetail.vue:19
 #: front/src/components/manage/library/TracksTable.vue:43
-#: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:61
+#: front/src/views/admin/library/TrackDetail.vue:165 src/edits.js:84
+#: front/src/entities.js:115
 msgctxt "Content/*/*/Noun"
 msgid "License"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:157
-#: front/src/views/admin/library/ArtistDetail.vue:146
-#: front/src/views/admin/library/TrackDetail.vue:209
-msgctxt "*/*/*/Noun"
-msgid "Listenings"
+#: front/src/components/Footer.vue:90
+msgctxt "Footer/Settings/Dropdown.Label/Theme name"
+msgid "Light"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:80
-#: front/src/components/mixins/Translations.vue:81
-msgctxt "Content/OAuth Scopes/Label"
+#: front/src/views/admin/library/AlbumDetail.vue:188
+#: front/src/views/admin/library/ArtistDetail.vue:176
+#: front/src/views/admin/library/LibraryDetail.vue:179
+#: front/src/views/admin/library/TrackDetail.vue:240
+#: front/src/views/admin/moderation/AccountsDetail.vue:269
+msgctxt "Content/Moderation/Table.Label/Noun"
+msgid "Linked reports"
+msgstr ""
+
+#: front/src/components/Home.vue:135
+msgctxt "Content/Home/Link"
+msgid "Listen to public albums and playlists shared on this pod"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:92
+#: front/src/views/admin/library/AlbumDetail.vue:163
+#: front/src/views/admin/library/ArtistDetail.vue:151
+#: front/src/views/admin/library/TrackDetail.vue:215
+#: front/src/components/mixins/Translations.vue:93
+msgctxt "*/*/*/Noun"
 msgid "Listenings"
 msgstr ""
 
@@ -2309,7 +2530,7 @@ msgctxt "Content/Library/Paragraph"
 msgid "Loading library data…"
 msgstr ""
 
-#: front/src/views/Notifications.vue:19
+#: front/src/views/Notifications.vue:84
 msgctxt "Content/Notifications/Paragraph"
 msgid "Loading notifications…"
 msgstr ""
@@ -2334,6 +2555,7 @@ msgstr ""
 #: front/src/components/manage/library/LibrariesTable.vue:75
 #: front/src/components/manage/library/TracksTable.vue:71
 #: front/src/components/manage/library/UploadsTable.vue:99
+#: front/src/components/manage/moderation/ReportCard.vue:173
 #: front/src/views/admin/library/AlbumDetail.vue:19
 #: front/src/views/admin/library/ArtistDetail.vue:18
 #: front/src/views/admin/library/LibraryDetail.vue:18
@@ -2349,12 +2571,12 @@ msgctxt "Content/Moderation/*/Short, Noun"
 msgid "Local account"
 msgstr ""
 
-#: front/src/components/auth/Login.vue:84
+#: front/src/components/Home.vue:96 src/views/auth/Login.vue:29
 msgctxt "Head/Login/Title"
 msgid "Log In"
 msgstr ""
 
-#: front/src/components/auth/Login.vue:4
+#: front/src/views/auth/Login.vue:4
 msgctxt "Content/Login/Title/Verb"
 msgid "Log in to your Funkwhale account"
 msgstr ""
@@ -2369,7 +2591,7 @@ msgctxt "Sidebar/Profile/List item.Link"
 msgid "Logged in as %{ username }"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:54 src/components/auth/Login.vue:42
+#: front/src/components/Sidebar.vue:54 src/components/auth/LoginForm.vue:41
 msgctxt "*/Login/*/Verb"
 msgid "Login"
 msgstr ""
@@ -2389,31 +2611,36 @@ msgctxt "Content/Library/Paragraph"
 msgid "Looks like you don't have a library, it's time to create one."
 msgstr ""
 
-#: front/src/components/audio/Player.vue:632 src/components/audio/Player.vue:633
+#: front/src/components/audio/Player.vue:658 src/components/audio/Player.vue:659
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping disabled. Click to switch to single-track looping."
 msgstr ""
 
-#: front/src/components/audio/Player.vue:635 src/components/audio/Player.vue:636
+#: front/src/components/audio/Player.vue:661 src/components/audio/Player.vue:662
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping on a single track. Click to switch to whole queue looping."
 msgstr ""
 
-#: front/src/components/audio/Player.vue:638 src/components/audio/Player.vue:639
+#: front/src/components/audio/Player.vue:664 src/components/audio/Player.vue:665
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping on whole queue. Click to disable looping."
 msgstr ""
 
-#: front/src/components/Sidebar.vue:223
+#: front/src/components/Sidebar.vue:230
 msgctxt "Sidebar/*/Hidden text"
 msgid "Main menu"
 msgstr ""
 
-#: front/src/views/admin/library/Base.vue:31
+#: front/src/views/admin/library/Base.vue:34
 msgctxt "Head/Admin/Title"
 msgid "Manage library"
 msgstr ""
 
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:8
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Manage moderation rules for %{ obj }"
+msgstr ""
+
 #: front/src/components/playlists/PlaylistModal.vue:3
 msgctxt "Popup/Playlist/Title/Verb"
 msgid "Manage playlists"
@@ -2429,7 +2656,7 @@ msgctxt "Content/Playlist/Button.Label/Verb"
 msgid "Manage your playlists"
 msgstr ""
 
-#: front/src/views/Notifications.vue:14
+#: front/src/views/Notifications.vue:79
 msgctxt "Content/Notifications/Button.Label/Verb"
 msgid "Mark all as read"
 msgstr ""
@@ -2444,12 +2671,12 @@ msgctxt "Content/Notifications/Button.Tooltip/Verb"
 msgid "Mark as unread"
 msgstr ""
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:310
+#: front/src/views/admin/moderation/AccountsDetail.vue:321
 msgctxt "Content/*/*/Unit"
 msgid "MB"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:625
+#: front/src/components/audio/Player.vue:651
 msgctxt "Sidebar/Player/Hidden text"
 msgid "Media player"
 msgstr ""
@@ -2459,38 +2686,56 @@ msgctxt "Content/Profile/Paragraph"
 msgid "Member since %{ date }"
 msgstr ""
 
+#: front/src/components/manage/moderation/ReportCard.vue:109
+#: front/src/components/moderation/ReportModal.vue:41
+msgctxt "*/*/Field.Label/Noun"
+msgid "Message"
+msgstr ""
+
 #: front/src/components/Footer.vue:32
 msgctxt "Footer/*/List item.Link"
 msgid "Mobile and desktop apps"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:96 src/components/manage/users/UsersTable.vue:177
-#: front/src/views/admin/moderation/AccountsDetail.vue:502
-#: front/src/views/admin/moderation/Base.vue:21
+#: front/src/components/Home.vue:143
+msgctxt "Content/Home/Link"
+msgid "Mobile apps"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:96 src/components/manage/users/UsersTable.vue:178
+#: front/src/views/admin/Settings.vue:85
+#: front/src/views/admin/moderation/AccountsDetail.vue:522
+#: front/src/views/admin/moderation/Base.vue:43
 msgctxt "*/Moderation/*"
 msgid "Moderation"
 msgstr ""
 
 #: front/src/views/admin/moderation/AccountsDetail.vue:78
-#: front/src/views/admin/moderation/DomainsDetail.vue:42
+#: front/src/views/admin/moderation/DomainsDetail.vue:70
 msgctxt "Content/Moderation/Card.Paragraph"
 msgid "Moderation policies help you control how your instance interact with a given domain or account."
 msgstr ""
 
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:4
+msgctxt "Content/Moderation/Button.Label"
+msgid "Moderation rules…"
+msgstr ""
+
 #: front/src/components/library/EditCard.vue:5
 msgctxt "Content/Library/Card/Short"
 msgid "Modification %{ id }"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:48
-#: front/src/components/mixins/Translations.vue:49
+#: front/src/components/mixins/Translations.vue:58
+#: front/src/components/mixins/Translations.vue:59
 msgctxt "Content/Playlist/Dropdown/Noun"
 msgid "Modification date"
 msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:42
-#: front/src/components/library/ArtistBase.vue:53
-#: front/src/components/library/TrackBase.vue:61
+#: front/src/components/audio/PlayButton.vue:100
+#: front/src/components/library/AlbumBase.vue:43
+#: front/src/components/library/ArtistBase.vue:54
+#: front/src/components/library/TrackBase.vue:59
 msgctxt "*/*/Button.Label/Noun"
 msgid "More…"
 msgstr ""
@@ -2500,7 +2745,7 @@ msgctxt "*/*/*/Noun"
 msgid "Music"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:631
+#: front/src/components/audio/Player.vue:657
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Mute"
 msgstr ""
@@ -2547,7 +2792,8 @@ msgctxt "Content/Library/Title"
 msgid "My libraries"
 msgstr ""
 
-#: front/src/components/audio/track/Row.vue:40 src/components/library/EditCard.vue:60
+#: front/src/components/About.vue:105 src/components/audio/track/Row.vue:40
+#: front/src/components/library/EditCard.vue:60
 #: front/src/components/library/EditForm.vue:70
 #: front/src/components/library/TrackDetail.vue:34
 #: front/src/components/library/TrackDetail.vue:43
@@ -2557,54 +2803,56 @@ msgstr ""
 #: front/src/components/manage/library/TracksTable.vue:76
 #: front/src/components/manage/library/UploadsTable.vue:121
 #: front/src/components/manage/library/UploadsTable.vue:128
-#: front/src/components/manage/users/UsersTable.vue:61
+#: front/src/components/manage/moderation/ReportCard.vue:78
+#: front/src/components/manage/moderation/ReportCard.vue:87
+#: front/src/components/manage/moderation/ReportCard.vue:193
+#: front/src/components/manage/users/UsersTable.vue:62
 #: front/src/views/admin/library/UploadDetail.vue:179
 #: front/src/views/admin/library/UploadDetail.vue:214
 #: front/src/views/admin/library/UploadDetail.vue:233
 #: front/src/views/admin/library/UploadDetail.vue:244
 #: front/src/views/admin/library/UploadDetail.vue:257
-#: front/src/views/admin/moderation/AccountsDetail.vue:192
-#: front/src/views/admin/moderation/DomainsDetail.vue:82
+#: front/src/views/admin/moderation/AccountsDetail.vue:193
+#: front/src/views/admin/moderation/DomainsDetail.vue:119
 #: front/src/views/content/libraries/FilesTable.vue:95
 #: front/src/views/content/libraries/FilesTable.vue:101
 msgctxt "*/*/*"
 msgid "N/A"
 msgstr ""
 
-#: front/src/components/manage/library/LibrariesTable.vue:48
-#: front/src/components/manage/library/UploadsTable.vue:59
-msgctxt "*/*/*"
-msgid "Name"
-msgstr ""
-
 #: front/src/components/auth/ApplicationForm.vue:9
-msgctxt "Content/Applications/Input.Label/Noun"
-msgid "Name"
-msgstr ""
-
 #: front/src/components/auth/Settings.vue:133
 #: front/src/components/manage/library/ArtistsTable.vue:39
+#: front/src/components/manage/library/LibrariesTable.vue:48
+#: front/src/components/manage/library/TagsTable.vue:41
+#: front/src/components/manage/library/UploadsTable.vue:59
 #: front/src/components/manage/moderation/AccountsTable.vue:39
-#: front/src/components/manage/moderation/DomainsTable.vue:38
-#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/manage/moderation/DomainsTable.vue:46
+#: front/src/components/mixins/Translations.vue:63
 #: front/src/components/playlists/PlaylistModal.vue:45
-#: front/src/views/admin/library/ArtistDetail.vue:98
+#: front/src/views/admin/library/ArtistDetail.vue:103
 #: front/src/views/admin/library/LibraryDetail.vue:85
+#: front/src/views/admin/library/TagDetail.vue:68
 #: front/src/views/admin/library/UploadDetail.vue:92
-#: front/src/views/admin/moderation/DomainsDetail.vue:97
-#: front/src/views/content/libraries/Form.vue:10 src/edits.js:10
-#: front/src/components/mixins/Translations.vue:54
+#: front/src/views/admin/moderation/DomainsDetail.vue:134
+#: front/src/views/content/libraries/Form.vue:10 src/edits.js:17
+#: front/src/components/mixins/Translations.vue:64
 msgctxt "*/*/*/Noun"
 msgid "Name"
 msgstr ""
 
+#: front/src/views/Notifications.vue:24 src/views/Notifications.vue:58
+msgctxt "*/*/*"
+msgid "Never"
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:88
 #: front/src/views/auth/PasswordResetConfirm.vue:14
 msgctxt "Content/Settings/Input.Label"
 msgid "New password"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:173
+#: front/src/components/Sidebar.vue:177
 msgctxt "Sidebar/Player/Paragraph"
 msgid "New tracks will be appended here automatically."
 msgstr ""
@@ -2614,21 +2862,18 @@ msgctxt "Content/Library/Card.Table.Header/Short"
 msgid "New value"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:629
+#: front/src/components/audio/Player.vue:655
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Next track"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:130
+#: front/src/components/Sidebar.vue:134
+#: front/src/components/manage/moderation/DomainsTable.vue:13
+#: front/src/views/admin/moderation/DomainsDetail.vue:110
 msgctxt "*/*/*"
 msgid "No"
 msgstr ""
 
-#: front/src/components/Home.vue:95
-msgctxt "Content/Home/List item"
-msgid "No add-ons, no plugins : you only need a web library"
-msgstr ""
-
 #: front/src/components/audio/Search.vue:25
 msgctxt "Content/Search/Paragraph"
 msgid "No album matched your query"
@@ -2644,6 +2889,11 @@ msgctxt "Content/Track/Table.Paragraph"
 msgid "No copyright information available for this track"
 msgstr ""
 
+#: front/src/components/About.vue:25 src/components/Home.vue:25
+msgctxt "Content/Home/Paragraph"
+msgid "No description available."
+msgstr ""
+
 #: front/src/components/library/TrackDetail.vue:25
 msgctxt "Content/Track/Table.Paragraph"
 msgid "No licensing information for this track"
@@ -2654,7 +2904,7 @@ msgctxt "Content/Federation/Paragraph"
 msgid "No matching library."
 msgstr ""
 
-#: front/src/views/Notifications.vue:28
+#: front/src/views/Notifications.vue:93
 msgctxt "Content/Notifications/Paragraph"
 msgid "No notification to show."
 msgstr ""
@@ -2664,6 +2914,16 @@ msgctxt "Content/*/Paragraph"
 msgid "No results were found."
 msgstr ""
 
+#: front/src/components/About.vue:32
+msgctxt "Content/Home/Paragraph"
+msgid "No rules available."
+msgstr ""
+
+#: front/src/components/About.vue:39
+msgctxt "Content/Home/Paragraph"
+msgid "No terms available."
+msgstr ""
+
 #: front/src/components/mixins/Translations.vue:10
 #: front/src/components/mixins/Translations.vue:11
 msgctxt "Content/Settings/Dropdown"
@@ -2680,18 +2940,19 @@ msgctxt "Content/Admin/Table"
 msgid "Not used"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:100
-#: front/src/components/mixins/Translations.vue:101
-msgctxt "Content/OAuth Scopes/Label"
+#: front/src/components/Sidebar.vue:46 src/components/mixins/Translations.vue:112
+#: front/src/views/Notifications.vue:151 src/components/mixins/Translations.vue:113
+msgctxt "*/Notifications/*"
 msgid "Notifications"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:46 src/views/Notifications.vue:76
-msgctxt "*/Notifications/*"
-msgid "Notifications"
+#: front/src/components/mixins/Translations.vue:47
+#: front/src/components/mixins/Translations.vue:48
+msgctxt "Content/Moderation/Dropdown"
+msgid "Offensive content"
 msgstr ""
 
-#: front/src/components/Footer.vue:47
+#: front/src/components/Footer.vue:55
 msgctxt "Footer/*/List item.Link"
 msgid "Official website"
 msgstr ""
@@ -2706,6 +2967,11 @@ msgctxt "Content/Library/Card.Table.Header/Short"
 msgid "Old value"
 msgstr ""
 
+#: front/src/components/About.vue:90
+msgctxt "*/*/*/State of registrations"
+msgid "Open"
+msgstr ""
+
 #: front/src/components/manage/users/InvitationsTable.vue:20
 msgctxt "Content/Admin/Dropdown/Adjective"
 msgid "Open"
@@ -2716,23 +2982,26 @@ msgctxt "Popup/Import/Table.Label/Value"
 msgid "Open a support thread (include the debug information below in your message)"
 msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:73
-#: front/src/components/library/ArtistBase.vue:84
-#: front/src/components/library/TrackBase.vue:92
+#: front/src/components/library/AlbumBase.vue:87
+#: front/src/components/library/ArtistBase.vue:99
+#: front/src/components/library/TagDetail.vue:11
+#: front/src/components/library/TrackBase.vue:103
+#: front/src/components/manage/moderation/ReportCard.vue:128
 msgctxt "Content/Moderation/Link"
 msgid "Open in moderation interface"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:31
-#: front/src/views/admin/library/ArtistDetail.vue:30
-#: front/src/views/admin/library/TrackDetail.vue:30
+#: front/src/views/admin/library/AlbumDetail.vue:37
+#: front/src/views/admin/library/ArtistDetail.vue:35
+#: front/src/views/admin/library/TagDetail.vue:21
+#: front/src/views/admin/library/TrackDetail.vue:36
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open local profile"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:46
-#: front/src/views/admin/library/ArtistDetail.vue:45
-#: front/src/views/admin/library/TrackDetail.vue:45
+#: front/src/views/admin/library/AlbumDetail.vue:52
+#: front/src/views/admin/library/ArtistDetail.vue:50
+#: front/src/views/admin/library/TrackDetail.vue:51
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open on MusicBrainz"
 msgstr ""
@@ -2742,10 +3011,10 @@ msgctxt "Content/Moderation/Link/Verb"
 msgid "Open profile"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:54
-#: front/src/views/admin/library/ArtistDetail.vue:53
+#: front/src/views/admin/library/AlbumDetail.vue:60
+#: front/src/views/admin/library/ArtistDetail.vue:58
 #: front/src/views/admin/library/LibraryDetail.vue:49
-#: front/src/views/admin/library/TrackDetail.vue:53
+#: front/src/views/admin/library/TrackDetail.vue:59
 #: front/src/views/admin/library/UploadDetail.vue:50
 #: front/src/views/admin/moderation/AccountsDetail.vue:52
 msgctxt "Content/Moderation/Link/Verb"
@@ -2765,44 +3034,55 @@ msgstr ""
 #: front/src/components/favorites/List.vue:32 src/components/library/Radios.vue:41
 #: front/src/components/manage/library/EditsCardList.vue:37
 #: front/src/components/manage/users/UsersTable.vue:17
+#: front/src/views/admin/moderation/ReportsList.vue:42
 #: front/src/views/playlists/List.vue:25
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Order"
 msgstr ""
 
 #: front/src/components/favorites/List.vue:24 src/components/library/Albums.vue:15
-#: front/src/components/library/Artists.vue:15 src/components/library/Radios.vue:33
+#: front/src/components/library/Artists.vue:19 src/components/library/Radios.vue:33
 #: front/src/components/manage/library/AlbumsTable.vue:11
 #: front/src/components/manage/library/ArtistsTable.vue:11
 #: front/src/components/manage/library/EditsCardList.vue:29
 #: front/src/components/manage/library/LibrariesTable.vue:20
+#: front/src/components/manage/library/TagsTable.vue:11
 #: front/src/components/manage/library/TracksTable.vue:11
 #: front/src/components/manage/library/UploadsTable.vue:30
 #: front/src/components/manage/moderation/AccountsTable.vue:11
-#: front/src/components/manage/moderation/DomainsTable.vue:9
+#: front/src/components/manage/moderation/DomainsTable.vue:17
 #: front/src/components/manage/users/InvitationsTable.vue:9
 #: front/src/components/manage/users/UsersTable.vue:9
+#: front/src/views/admin/moderation/ReportsList.vue:34
 #: front/src/views/content/libraries/FilesTable.vue:21
 #: front/src/views/playlists/List.vue:17
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Ordering"
 msgstr ""
 
-#: front/src/components/library/Albums.vue:23 src/components/library/Artists.vue:23
+#: front/src/components/library/Albums.vue:27 src/components/library/Artists.vue:27
 #: front/src/components/manage/library/AlbumsTable.vue:19
 #: front/src/components/manage/library/ArtistsTable.vue:19
 #: front/src/components/manage/library/LibrariesTable.vue:28
+#: front/src/components/manage/library/TagsTable.vue:19
 #: front/src/components/manage/library/TracksTable.vue:19
 #: front/src/components/manage/library/UploadsTable.vue:38
 #: front/src/components/manage/moderation/AccountsTable.vue:19
-#: front/src/components/manage/moderation/DomainsTable.vue:17
+#: front/src/components/manage/moderation/DomainsTable.vue:25
 #: front/src/views/content/libraries/FilesTable.vue:29
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Ordering direction"
 msgstr ""
 
+#: front/src/components/mixins/Translations.vue:48
+#: front/src/components/mixins/Translations.vue:49
+msgctxt "Content/Moderation/Dropdown"
+msgid "Other"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:143
 #: front/src/components/manage/users/InvitationsTable.vue:38
-msgctxt "Content/Admin/Table.Label"
+msgctxt "*/*/*"
 msgid "Owner"
 msgstr ""
 
@@ -2821,12 +3101,13 @@ msgctxt "Content/*/Hidden text/Noun"
 msgid "Pagination"
 msgstr ""
 
-#: front/src/components/auth/Login.vue:33 src/components/auth/Signup.vue:40
-msgctxt "Content/*/Input.Label"
+#: front/src/components/auth/LoginForm.vue:32 src/components/auth/Settings.vue:291
+#: front/src/components/auth/SignupForm.vue:36
+msgctxt "*/*/*"
 msgid "Password"
 msgstr ""
 
-#: front/src/components/auth/SubsonicTokenForm.vue:94
+#: front/src/components/auth/SubsonicTokenForm.vue:100
 msgctxt "Content/Settings/Message"
 msgid "Password updated"
 msgstr ""
@@ -2836,12 +3117,12 @@ msgctxt "Content/Signup/Card.Title"
 msgid "Password updated successfully"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:628
+#: front/src/components/audio/Player.vue:654
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Pause track"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:59
+#: front/src/components/ShortcutsModal.vue:96
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Pause/play the current track"
 msgstr ""
@@ -2870,7 +3151,7 @@ msgctxt "Content/Library/Label"
 msgid "Pending files"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:225
+#: front/src/components/Sidebar.vue:232
 msgctxt "Sidebar/Notifications/Hidden text"
 msgid "Pending follow requests"
 msgstr ""
@@ -2881,83 +3162,74 @@ msgctxt "Content/Admin/*/Noun"
 msgid "Pending review"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:226
+#: front/src/components/Sidebar.vue:233
 msgctxt "Sidebar/Moderation/Hidden text"
 msgid "Pending review edits"
 msgstr ""
 
+#: front/src/components/auth/Settings.vue:176
 #: front/src/components/manage/users/UsersTable.vue:42
 #: front/src/views/admin/moderation/AccountsDetail.vue:166
-msgctxt "Content/Admin/Table.Label/Noun"
-msgid "Permissions"
-msgstr ""
-
-#: front/src/components/auth/Settings.vue:176
 msgctxt "Content/*/*/Noun"
 msgid "Permissions"
 msgstr ""
 
 #: front/src/components/audio/PlayButton.vue:9
-#: front/src/components/library/TrackBase.vue:26
+#: front/src/components/library/TrackBase.vue:24
 msgctxt "*/Queue/Button.Label/Short, Verb"
 msgid "Play"
 msgstr ""
 
 #: front/src/components/audio/album/Card.vue:48
-#: front/src/components/audio/artist/Card.vue:44
-#: front/src/components/library/AlbumBase.vue:20
+#: front/src/components/library/AlbumBase.vue:21
 #: front/src/components/library/AlbumDetail.vue:11 src/views/playlists/Detail.vue:24
 msgctxt "Content/Queue/Button.Label/Short, Verb"
 msgid "Play all"
 msgstr ""
 
-#: front/src/components/library/ArtistBase.vue:31
+#: front/src/components/library/ArtistBase.vue:32
 msgctxt "Content/Artist/Button.Label/Verb"
 msgid "Play all albums"
 msgstr ""
 
-#: front/src/components/audio/PlayButton.vue:76
+#: front/src/components/audio/PlayButton.vue:92
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play next"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:67
+#: front/src/components/ShortcutsModal.vue:120
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Play next track"
 msgstr ""
 
-#: front/src/components/audio/PlayButton.vue:74
+#: front/src/components/audio/PlayButton.vue:90
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play now"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:63
+#: front/src/components/ShortcutsModal.vue:116
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Play previous track"
 msgstr ""
 
-#: front/src/components/audio/PlayButton.vue:77
+#: front/src/components/audio/PlayButton.vue:93
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play similar songs"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:224
+#: front/src/components/Sidebar.vue:231
 msgctxt "Sidebar/Player/Hidden text"
 msgid "Play this track"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:627
+#: front/src/components/audio/Player.vue:653
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Play track"
 msgstr ""
 
-#: front/src/components/audio/PlayButton.vue:82
-msgctxt "*/Queue/Button/Title"
-msgid "Play..."
-msgstr ""
-
-#: front/src/views/playlists/Detail.vue:91
-msgctxt "Head/Playlist/Title"
+#: front/src/components/mixins/Report.vue:66 src/views/playlists/Detail.vue:121
+#: front/src/components/mixins/Report.vue:67
+msgctxt "*/*/*"
 msgid "Playlist"
 msgstr ""
 
@@ -2993,24 +3265,20 @@ msgctxt "Content/Playlist/Dropdown.Label"
 msgid "Playlist visibility"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:88
-#: front/src/components/mixins/Translations.vue:89
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Playlists"
-msgstr ""
-
 #: front/src/components/Sidebar.vue:71 src/components/library/Home.vue:16
-#: front/src/components/library/Library.vue:16 src/views/admin/Settings.vue:83
-#: front/src/views/admin/library/AlbumDetail.vue:173
-#: front/src/views/admin/library/ArtistDetail.vue:162
-#: front/src/views/admin/library/TrackDetail.vue:225 src/views/playlists/List.vue:106
+#: front/src/components/library/Library.vue:16
+#: front/src/components/mixins/Translations.vue:100 src/views/admin/Settings.vue:83
+#: front/src/views/admin/library/AlbumDetail.vue:179
+#: front/src/views/admin/library/ArtistDetail.vue:167
+#: front/src/views/admin/library/TrackDetail.vue:231 src/views/playlists/List.vue:106
+#: front/src/components/mixins/Translations.vue:101
 msgctxt "*/*/*"
 msgid "Playlists"
 msgstr ""
 
-#: front/src/components/Home.vue:56
-msgctxt "Content/Home/List item"
-msgid "Playlists? We got them"
+#: front/src/components/audio/EmbedWizard.vue:9
+msgctxt "Content/Embed/Message"
+msgid "Please contact your admins and ask them to update the corresponding setting."
 msgstr ""
 
 #: front/src/components/auth/Settings.vue:79
@@ -3018,7 +3286,7 @@ msgctxt "Content/Settings/Error message.List item/Call to action"
 msgid "Please double-check your password is correct"
 msgstr ""
 
-#: front/src/components/auth/Login.vue:9
+#: front/src/components/auth/LoginForm.vue:5
 msgctxt "Content/Login/Error message.List item/Call to action"
 msgid "Please double-check your username/password couple is correct"
 msgstr ""
@@ -3028,8 +3296,13 @@ msgctxt "Content/Settings/Paragraph"
 msgid "PNG, GIF or JPG. At most 2MB. Will be downscaled to 400x400px."
 msgstr ""
 
-#: front/src/views/admin/library/TrackDetail.vue:137
-msgctxt "*/*/*/Noun"
+#: front/src/components/About.vue:72
+msgctxt "Content/About/Header/Name"
+msgid "Pod configuration"
+msgstr ""
+
+#: front/src/views/admin/library/TrackDetail.vue:143 src/edits.js:70
+msgctxt "*/*/*/Short, Noun"
 msgid "Position"
 msgstr ""
 
@@ -3038,12 +3311,12 @@ msgctxt "Content/Moderation/Help text"
 msgid "Prevent account or domain from triggering notifications, except from followers."
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:33
+#: front/src/components/audio/EmbedWizard.vue:43
 msgctxt "Popup/Embed/Title/Noun"
 msgid "Preview"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:626
+#: front/src/components/audio/Player.vue:652
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Previous track"
 msgstr ""
@@ -3054,7 +3327,7 @@ msgctxt "Content/Settings/Dropdown/Short"
 msgid "Private"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:43
+#: front/src/views/content/remote/Card.vue:56
 msgctxt "Content/Library/Card.List item"
 msgid "Problem during scanning"
 msgstr ""
@@ -3075,14 +3348,19 @@ msgctxt "Content/Library/Tab.Title/Short"
 msgid "Processing"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:68
-#: front/src/components/mixins/Translations.vue:69
+#: front/src/components/mixins/Translations.vue:80
+#: front/src/components/mixins/Translations.vue:81
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Profile"
 msgstr ""
 
+#: front/src/components/auth/SignupForm.vue:5
+msgctxt "Content/Signup/Form/Paragraph"
+msgid "Public registrations are not possible on this instance. You will need an invitation code to sign up."
+msgstr ""
+
 #: front/src/components/manage/moderation/AccountsTable.vue:188
-#: front/src/components/manage/moderation/DomainsTable.vue:168
+#: front/src/components/manage/moderation/DomainsTable.vue:186
 #: front/src/views/content/libraries/Quota.vue:36
 #: front/src/views/content/libraries/Quota.vue:39
 #: front/src/views/content/libraries/Quota.vue:62
@@ -3113,7 +3391,7 @@ msgctxt "Sidebar/Queue/Tab.Title/Noun"
 msgid "Queue"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:322
+#: front/src/components/audio/Player.vue:329
 msgctxt "Content/Queue/Message"
 msgid "Queue shuffled!"
 msgstr ""
@@ -3144,16 +3422,12 @@ msgid "Radio updated"
 msgstr ""
 
 #: front/src/components/library/Library.vue:13 src/components/library/Radios.vue:142
+#: front/src/components/mixins/Translations.vue:104
+#: front/src/components/mixins/Translations.vue:105
 msgctxt "*/*/*"
 msgid "Radios"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:92
-#: front/src/components/mixins/Translations.vue:93
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Radios"
-msgstr ""
-
 #: front/src/components/auth/ApplicationForm.vue:151
 msgctxt "Content/OAuth Scopes/Label/Verb"
 msgid "Read"
@@ -3180,15 +3454,15 @@ msgctxt "Content/Moderation/*/Noun"
 msgid "Reason"
 msgstr ""
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:251
-#: front/src/views/admin/moderation/DomainsDetail.vue:179
+#: front/src/views/admin/moderation/AccountsDetail.vue:252
+#: front/src/views/admin/moderation/DomainsDetail.vue:216
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Received library follows"
 msgstr ""
 
-#: front/src/components/manage/moderation/DomainsTable.vue:40
-#: front/src/components/mixins/Translations.vue:62
-#: front/src/components/mixins/Translations.vue:63
+#: front/src/components/manage/moderation/DomainsTable.vue:48
+#: front/src/components/mixins/Translations.vue:74
+#: front/src/components/mixins/Translations.vue:75
 msgctxt "Content/Moderation/*/Noun"
 msgid "Received messages"
 msgstr ""
@@ -3208,6 +3482,11 @@ msgctxt "Content/Home/Title"
 msgid "Recently added"
 msgstr ""
 
+#: front/src/components/Home.vue:167
+msgctxt "Content/Home/Title"
+msgid "Recently added albums"
+msgstr ""
+
 #: front/src/components/library/Home.vue:11
 msgctxt "Content/Home/Title"
 msgid "Recently favorited"
@@ -3234,14 +3513,14 @@ msgctxt "Popup/*/Message.Title"
 msgid "Refresh error"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:50
-#: front/src/views/admin/library/ArtistDetail.vue:49
-#: front/src/views/admin/library/TrackDetail.vue:49
+#: front/src/views/admin/library/AlbumDetail.vue:56
+#: front/src/views/admin/library/ArtistDetail.vue:54
+#: front/src/views/admin/library/TrackDetail.vue:55
 msgctxt "Content/Moderation/Button/Verb"
 msgid "Refresh from remote server"
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:127
+#: front/src/views/admin/moderation/DomainsDetail.vue:164
 msgctxt "Content/Moderation/Button.Label/Verb"
 msgid "Refresh node info"
 msgstr ""
@@ -3276,12 +3555,12 @@ msgctxt "Popup/*/Title"
 msgid "Refreshing object from remote…"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:9
-msgctxt "Content/Signup/Form/Paragraph"
-msgid "Registration are closed on this instance, you will need an invitation code to signup."
+#: front/src/components/About.vue:86
+msgctxt "*/*/*"
+msgid "Registrations"
 msgstr ""
 
-#: front/src/components/manage/users/UsersTable.vue:71
+#: front/src/components/manage/users/UsersTable.vue:72
 msgctxt "Content/Admin/Table, User role"
 msgid "Regular user"
 msgstr ""
@@ -3306,8 +3585,8 @@ msgid "Rejected"
 msgstr ""
 
 #: front/src/components/manage/library/AlbumsTable.vue:43
-#: front/src/components/mixins/Translations.vue:44 src/edits.js:28
-#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:54 src/edits.js:43
+#: front/src/components/mixins/Translations.vue:55
 msgctxt "Content/*/*/Noun"
 msgid "Release date"
 msgstr ""
@@ -3317,6 +3596,11 @@ msgctxt "Content/Library/Paragraph"
 msgid "Remaining storage space"
 msgstr ""
 
+#: front/src/views/Notifications.vue:18 src/views/Notifications.vue:52
+msgctxt "Content/Notifications/Label"
+msgid "Remind me in:"
+msgstr ""
+
 #: front/src/views/content/remote/Home.vue:6
 msgctxt "Content/Library/Title/Noun"
 msgid "Remote libraries"
@@ -3342,6 +3626,12 @@ msgctxt "Content/Moderation/Button.Label"
 msgid "Remove filter"
 msgstr ""
 
+#: front/src/components/manage/moderation/DomainsTable.vue:198
+#: front/src/views/admin/moderation/DomainsDetail.vue:39
+msgctxt "Content/Moderation/Action/Verb"
+msgid "Remove from allow-list"
+msgstr ""
+
 #: front/src/components/favorites/TrackFavoriteIcon.vue:26
 msgctxt "Content/Track/Icon.Tooltip/Verb"
 msgid "Remove from favorites"
@@ -3362,18 +3652,80 @@ msgctxt "Popup/Library/Paragraph"
 msgid "Removes uploaded tracks that could not be processed by the server completely, adding the corresponding data to your quota."
 msgstr ""
 
-#: front/src/components/auth/SubsonicTokenForm.vue:33
-#: front/src/components/auth/SubsonicTokenForm.vue:36
+#: front/src/components/audio/PlayButton.vue:94
+msgctxt "*/Queue/Dropdown/Button/Title"
+msgid "Replace current queue"
+msgstr ""
+
+#: front/src/components/mixins/Report.vue:6 src/components/mixins/Report.vue:7
+msgctxt "*/Moderation/*/Verb"
+msgid "Report @%{ username }…"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:5
+msgctxt "Content/Moderation/Card/Short"
+msgid "Report %{ id }"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:139
+msgctxt "*/Moderation/Message"
+msgid "Report successfully submitted, thank you"
+msgstr ""
+
+#: front/src/components/mixins/Report.vue:36 src/components/mixins/Report.vue:37
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this album…"
+msgstr ""
+
+#: front/src/components/mixins/Report.vue:50 src/components/mixins/Report.vue:51
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this artist…"
+msgstr ""
+
+#: front/src/components/mixins/Report.vue:72 src/components/mixins/Report.vue:73
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this library…"
+msgstr ""
+
+#: front/src/components/mixins/Report.vue:61 src/components/mixins/Report.vue:62
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this playlist…"
+msgstr ""
+
+#: front/src/components/mixins/Report.vue:23 src/components/mixins/Report.vue:24
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this track…"
+msgstr ""
+
+#: front/src/components/audio/PlayButton.vue:95
+msgctxt "*/Moderation/*/Button/Label,Verb"
+msgid "Report…"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:117
+msgctxt "Content/*/*/Short"
+msgid "Reported object"
+msgstr ""
+
+#: front/src/views/admin/moderation/Base.vue:5
+#: front/src/views/admin/moderation/ReportsList.vue:3
+#: front/src/views/admin/moderation/ReportsList.vue:208
+msgctxt "*/Moderation/*/Noun"
+msgid "Reports"
+msgstr ""
+
+#: front/src/components/auth/SubsonicTokenForm.vue:38
+#: front/src/components/auth/SubsonicTokenForm.vue:41
 msgctxt "*/Settings/Button.Label/Verb"
 msgid "Request a new password"
 msgstr ""
 
-#: front/src/components/auth/SubsonicTokenForm.vue:34
+#: front/src/components/auth/SubsonicTokenForm.vue:39
 msgctxt "Popup/Settings/Title"
 msgid "Request a new Subsonic API password?"
 msgstr ""
 
-#: front/src/components/auth/SubsonicTokenForm.vue:42
+#: front/src/components/auth/SubsonicTokenForm.vue:47
 msgctxt "Content/Settings/Button.Label/Verb"
 msgid "Request a password"
 msgstr ""
@@ -3383,34 +3735,50 @@ msgctxt "Popup/*/Loading.Title"
 msgid "Requesting a fetch…"
 msgstr ""
 
-#: front/src/components/library/EditForm.vue:82
+#: front/src/components/library/EditForm.vue:94
 msgctxt "Content/Library/Button.Label"
-msgid "Reset to initial value: %{ value }"
+msgid "Reset to initial value"
 msgstr ""
 
-#: front/src/components/auth/Login.vue:35 src/views/auth/PasswordReset.vue:4
+#: front/src/components/auth/LoginForm.vue:34 src/views/auth/PasswordReset.vue:4
 #: front/src/views/auth/PasswordReset.vue:53
 msgctxt "*/Login/*/Verb"
 msgid "Reset your password"
 msgstr ""
 
+#: front/src/components/manage/moderation/ReportCard.vue:83
+msgctxt "Content/*/*/Noun"
+msgid "Resolution date"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:218
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Resolve"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:62
+#: front/src/views/admin/moderation/ReportsList.vue:20
+msgctxt "Content/*/*/Short"
+msgid "Resolved"
+msgstr ""
+
 #: front/src/views/content/libraries/FilesTable.vue:223
 msgctxt "Content/Library/Dropdown/Verb"
 msgid "Restart import"
 msgstr ""
 
-#: front/src/components/favorites/List.vue:39 src/components/library/Albums.vue:30
-#: front/src/components/library/Artists.vue:30 src/components/library/Radios.vue:52
+#: front/src/components/library/EditForm.vue:31
+msgctxt "Content/Library/Button.Label"
+msgid "Restrict to unreviewed edits"
+msgstr ""
+
+#: front/src/components/favorites/List.vue:39 src/components/library/Albums.vue:34
+#: front/src/components/library/Artists.vue:34 src/components/library/Radios.vue:52
 #: front/src/views/playlists/List.vue:32
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Results per page"
 msgstr ""
 
-#: front/src/components/library/EditForm.vue:31
-msgctxt "Content/Library/Button.Label"
-msgid "Retrict to unreviewed edits"
-msgstr ""
-
 #: front/src/views/auth/EmailConfirm.vue:17
 msgctxt "Content/Signup/Link/Verb"
 msgid "Return to login"
@@ -3441,52 +3809,53 @@ msgctxt "Content/Moderation/Card.Title/Noun"
 msgid "Rule"
 msgstr ""
 
-#: front/src/components/admin/SettingsGroup.vue:67
+#: front/src/components/About.vue:28 src/components/About.vue:56
+msgctxt "Content/About/Header"
+msgid "Rules"
+msgstr ""
+
+#: front/src/components/admin/SettingsGroup.vue:75
 #: front/src/components/library/radios/Builder.vue:34
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Save"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:175
+#: front/src/views/content/remote/Card.vue:203
 msgctxt "Content/Library/Message"
 msgid "Scan launched"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:67
+#: front/src/views/content/remote/Card.vue:80
 msgctxt "Content/Library/Card.Button.Label/Verb"
 msgid "Scan now"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:35
+#: front/src/views/content/remote/Card.vue:48
 msgctxt "Content/Library/Card.List item"
 msgid "Scan pending"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:176
+#: front/src/views/content/remote/Card.vue:204
 msgctxt "Content/Library/Message"
 msgid "Scan skipped (previous scan is too recent)"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:47
+#: front/src/views/content/remote/Card.vue:60
 msgctxt "Content/Library/Card.List item"
 msgid "Scanned"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:51
+#: front/src/views/content/remote/Card.vue:64
 msgctxt "Content/Library/Card.List item"
 msgid "Scanned with errors"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:39
+#: front/src/views/content/remote/Card.vue:52
 msgctxt "Content/Library/Card.List item"
 msgid "Scanning… (%{ progress }%)"
 msgstr ""
 
 #: front/src/components/auth/ApplicationForm.vue:22
-msgctxt "Content/Applications/Input.Label/Noun"
-msgid "Scopes"
-msgstr ""
-
 #: front/src/components/auth/Settings.vue:226
 msgctxt "Content/*/*/Noun"
 msgid "Scopes"
@@ -3498,12 +3867,14 @@ msgstr ""
 #: front/src/components/manage/library/ArtistsTable.vue:5
 #: front/src/components/manage/library/EditsCardList.vue:6
 #: front/src/components/manage/library/LibrariesTable.vue:5
+#: front/src/components/manage/library/TagsTable.vue:5
 #: front/src/components/manage/library/TracksTable.vue:5
 #: front/src/components/manage/library/UploadsTable.vue:5
 #: front/src/components/manage/moderation/AccountsTable.vue:5
 #: front/src/components/manage/moderation/DomainsTable.vue:5
 #: front/src/components/manage/users/InvitationsTable.vue:5
 #: front/src/components/manage/users/UsersTable.vue:5
+#: front/src/views/admin/moderation/ReportsList.vue:8
 #: front/src/views/content/libraries/FilesTable.vue:5 src/views/playlists/List.vue:13
 msgctxt "Content/Search/Input.Label/Noun"
 msgid "Search"
@@ -3515,6 +3886,7 @@ msgid "Search a remote library"
 msgstr ""
 
 #: front/src/components/manage/library/EditsCardList.vue:211
+#: front/src/views/admin/moderation/ReportsList.vue:207
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by account, summary, domain…"
 msgstr ""
@@ -3549,7 +3921,12 @@ msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by domain, username, bio…"
 msgstr ""
 
-#: front/src/components/manage/moderation/DomainsTable.vue:151
+#: front/src/components/manage/library/TagsTable.vue:165
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by name"
+msgstr ""
+
+#: front/src/components/manage/moderation/DomainsTable.vue:168
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by name…"
 msgstr ""
@@ -3564,12 +3941,12 @@ msgctxt "Content/Admin/Input.Placeholder/Verb"
 msgid "Search by username, e-mail address, code…"
 msgstr ""
 
-#: front/src/components/manage/users/UsersTable.vue:163
+#: front/src/components/manage/users/UsersTable.vue:164
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by username, e-mail address, name…"
 msgstr ""
 
-#: front/src/components/audio/SearchBar.vue:20
+#: front/src/components/audio/SearchBar.vue:27
 msgctxt "Sidebar/Search/Input.Placeholder"
 msgid "Search for artists, albums, tracks…"
 msgstr ""
@@ -3579,15 +3956,27 @@ msgctxt "Content/Search/Title"
 msgid "Search for some music"
 msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:57
-#: front/src/components/library/ArtistBase.vue:68
-#: front/src/components/library/TrackBase.vue:76
+#: front/src/components/library/TagsSelector.vue:6
+msgctxt "*/Dropdown/Placeholder/Verb"
+msgid "Search for tags…"
+msgstr ""
+
+#: front/src/components/library/AlbumBase.vue:66
+#: front/src/components/library/ArtistBase.vue:77
+#: front/src/components/library/TrackBase.vue:82
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Search on Discogs"
+msgstr ""
+
+#: front/src/components/library/AlbumBase.vue:58
+#: front/src/components/library/ArtistBase.vue:69
+#: front/src/components/library/TrackBase.vue:74
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Search on Wikipedia"
 msgstr ""
 
-#: front/src/components/library/Library.vue:35 src/views/admin/library/Base.vue:32
-#: front/src/views/admin/moderation/Base.vue:22 src/views/admin/users/Base.vue:21
+#: front/src/components/library/Library.vue:35 src/views/admin/library/Base.vue:35
+#: front/src/views/admin/moderation/Base.vue:44 src/views/admin/users/Base.vue:21
 #: front/src/views/content/Base.vue:19
 msgctxt "Menu/*/Hidden text"
 msgid "Secondary menu"
@@ -3598,6 +3987,26 @@ msgctxt "Content/Admin/Menu.Title"
 msgid "Sections"
 msgstr ""
 
+#: front/src/components/ShortcutsModal.vue:108
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek backwards 30s"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:100
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek backwards 5s"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:112
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek forwards 30s"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:104
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek forwards 5s"
+msgstr ""
+
 #: front/src/components/library/radios/Builder.vue:46
 msgctxt "Content/Radio/Dropdown.Placeholder/Verb"
 msgid "Select a filter"
@@ -3615,9 +4024,14 @@ msgctxt "Content/*/Link/Verb"
 msgid "Select only current page"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:108
-#: front/src/components/manage/users/UsersTable.vue:181
-#: front/src/views/admin/moderation/AccountsDetail.vue:506
+#: front/src/components/Home.vue:43
+msgctxt "Content/Home/Link"
+msgid "Server rules"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:112
+#: front/src/components/manage/users/UsersTable.vue:182
+#: front/src/views/admin/moderation/AccountsDetail.vue:526
 msgctxt "*/*/*/Noun"
 msgid "Settings"
 msgstr ""
@@ -3643,11 +4057,21 @@ msgid "Share this link with other users so they can request access to your libra
 msgstr ""
 
 #: front/src/views/content/libraries/Detail.vue:14
-#: front/src/views/content/remote/Card.vue:77
+#: front/src/views/content/remote/Card.vue:90
 msgctxt "Content/Library/Title"
 msgid "Sharing link"
 msgstr ""
 
+#: front/src/components/audio/EmbedWizard.vue:5
+msgctxt "Content/Embed/Message"
+msgid "Sharing will not work because this pod doesn't allow anonymous users to access content."
+msgstr ""
+
+#: front/src/components/About.vue:156
+msgctxt "*/*/*/Verb"
+msgid "Show"
+msgstr ""
+
 #: front/src/components/audio/album/Card.vue:38
 msgctxt "Content/Album/Card.Link/Verb"
 msgid "Show %{ count } more track"
@@ -3655,10 +4079,10 @@ msgid_plural "Show %{ count } more tracks"
 msgstr[0] ""
 msgstr[1] ""
 
-#: front/src/components/audio/artist/Card.vue:30
-msgctxt "Content/Artist/Card.Link"
-msgid "Show 1 more album"
-msgid_plural "Show %{ count } more albums"
+#: front/src/components/tags/List.vue:11
+msgctxt "Content/*/Button/Label/Verb"
+msgid "Show 1 more tag"
+msgid_plural "Show %{ count } more tags"
 msgstr[0] ""
 msgstr[1] ""
 
@@ -3667,17 +4091,27 @@ msgctxt "Content/Library/Button.Label"
 msgid "Show all edits"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:42
+#: front/src/components/ShortcutsModal.vue:60
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Show available keyboard shortcuts"
 msgstr ""
 
-#: front/src/views/Notifications.vue:7
+#: front/src/components/common/ExpandableDiv.vue:7
+msgctxt "*/*/Button,Label"
+msgid "Show less"
+msgstr ""
+
+#: front/src/components/common/ExpandableDiv.vue:8
+msgctxt "*/*/Button,Label"
+msgid "Show more"
+msgstr ""
+
+#: front/src/views/Notifications.vue:72
 msgctxt "Content/Notifications/Form.Label/Verb"
 msgid "Show read notifications"
 msgstr ""
 
-#: front/src/components/forms/PasswordInput.vue:26
+#: front/src/components/forms/PasswordInput.vue:42
 msgctxt "Content/Settings/Button.Tooltip/Verb"
 msgid "Show/hide password"
 msgstr ""
@@ -3686,56 +4120,63 @@ msgstr ""
 #: front/src/components/manage/library/ArtistsTable.vue:84
 #: front/src/components/manage/library/EditsCardList.vue:72
 #: front/src/components/manage/library/LibrariesTable.vue:110
+#: front/src/components/manage/library/TagsTable.vue:79
 #: front/src/components/manage/library/TracksTable.vue:95
 #: front/src/components/manage/library/UploadsTable.vue:144
 #: front/src/components/manage/moderation/AccountsTable.vue:88
-#: front/src/components/manage/moderation/DomainsTable.vue:74
+#: front/src/components/manage/moderation/DomainsTable.vue:85
 #: front/src/components/manage/users/InvitationsTable.vue:76
-#: front/src/components/manage/users/UsersTable.vue:87
+#: front/src/components/manage/users/UsersTable.vue:88
 #: front/src/views/content/libraries/FilesTable.vue:117
 msgctxt "Content/*/Paragraph"
 msgid "Showing results %{ start }-%{ end } on %{ total }"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:83
+#: front/src/components/ShortcutsModal.vue:140
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Shuffle queue"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:641
+#: front/src/components/audio/Player.vue:667
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Shuffle your queue"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:97
+#: front/src/components/Home.vue:103
+msgctxt "*/Signup/Title"
+msgid "Sign up"
+msgstr ""
+
+#: front/src/views/auth/Signup.vue:37
 msgctxt "*/Signup/Title"
 msgid "Sign Up"
 msgstr ""
 
+#: front/src/components/Home.vue:107
+msgctxt "Content/Home/Paragraph"
+msgid "Sign up now to keep a track of your favorites, create playlists, discover new content and much more!"
+msgstr ""
+
 #: front/src/components/manage/users/UsersTable.vue:40
 msgctxt "Content/Admin/Table.Label/Short, Noun (Value is a date)"
 msgid "Sign-up"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:57
-#: front/src/views/admin/moderation/AccountsDetail.vue:197
-#: front/src/components/mixins/Translations.vue:58
+#: front/src/components/mixins/Translations.vue:69
+#: front/src/views/admin/moderation/AccountsDetail.vue:198
+#: front/src/components/mixins/Translations.vue:70
 msgctxt "Content/Admin/Table.Label/Noun"
 msgid "Sign-up date"
 msgstr ""
 
-#: front/src/components/manage/library/UploadsTable.vue:65
-#: front/src/views/admin/library/UploadDetail.vue:219
-msgctxt "Content/*/*/Noun"
-msgid "Size"
-msgstr ""
-
 #: front/src/components/library/FileUpload.vue:94
 #: front/src/components/library/TrackDetail.vue:39
-#: front/src/components/mixins/Translations.vue:54
+#: front/src/components/manage/library/UploadsTable.vue:65
+#: front/src/components/mixins/Translations.vue:66
+#: front/src/views/admin/library/UploadDetail.vue:219
 #: front/src/views/content/libraries/FilesTable.vue:61
-#: front/src/components/mixins/Translations.vue:55
-msgctxt "Content/Library/*/in MB"
+#: front/src/components/mixins/Translations.vue:67
+msgctxt "Content/*/*/Noun"
 msgid "Size"
 msgstr ""
 
@@ -3752,7 +4193,7 @@ msgctxt "Content/Library/Label"
 msgid "Skipped files"
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:89
+#: front/src/views/admin/moderation/DomainsDetail.vue:126
 msgctxt "Content/Moderation/Table.Label"
 msgid "Software"
 msgstr ""
@@ -3767,78 +4208,62 @@ msgctxt "Content/*/Paragraph"
 msgid "Sorry, the page you asked for does not exist:"
 msgstr ""
 
-#: front/src/components/Footer.vue:49
+#: front/src/components/Footer.vue:57
 msgctxt "Footer/*/List item.Link"
 msgid "Source code"
 msgstr ""
 
 #: front/src/components/auth/Profile.vue:23
-#: front/src/components/manage/users/UsersTable.vue:70
+#: front/src/components/manage/users/UsersTable.vue:71
 msgctxt "Content/Profile/User role"
 msgid "Staff member"
 msgstr ""
 
-#: front/src/components/audio/PlayButton.vue:23 src/components/radios/Button.vue:4
+#: front/src/components/audio/PlayButton.vue:27 src/components/radios/Button.vue:4
 msgctxt "*/Queue/Button.Label/Short, Verb"
 msgid "Start radio"
 msgstr ""
 
-#: front/src/views/admin/Settings.vue:86
-msgctxt "Content/Admin/Menu"
+#: front/src/components/About.vue:170 src/components/Home.vue:53
+#: front/src/views/admin/Settings.vue:87
+msgctxt "Content/Home/Header"
 msgid "Statistics"
 msgstr ""
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:490
+#: front/src/views/admin/moderation/AccountsDetail.vue:510
 msgctxt "Content/Moderation/Help text"
 msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this account"
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:371
+#: front/src/views/admin/moderation/DomainsDetail.vue:418
 msgctxt "Content/Moderation/Help text"
 msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this domain"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:329
-#: front/src/views/admin/library/ArtistDetail.vue:328
-#: front/src/views/admin/library/LibraryDetail.vue:316
-#: front/src/views/admin/library/TrackDetail.vue:371
+#: front/src/views/admin/library/AlbumDetail.vue:346
+#: front/src/views/admin/library/ArtistDetail.vue:345
+#: front/src/views/admin/library/LibraryDetail.vue:356
+#: front/src/views/admin/library/TagDetail.vue:210
+#: front/src/views/admin/library/TrackDetail.vue:389
 #: front/src/views/admin/library/UploadDetail.vue:335
 msgctxt "Content/Moderation/Help text"
 msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this object"
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:115
-msgctxt "Content/Moderation/Table.Label (Value is Error message)"
-msgid "Status"
-msgstr ""
-
 #: front/src/components/library/FileUpload.vue:95
-msgctxt "Content/Library/Table.Label (Value is Uploading/Uploaded/Error)"
-msgid "Status"
-msgstr ""
-
-#: front/src/views/content/libraries/Detail.vue:28
-msgctxt "Content/Library.Federation/Table.Label (Value is Approved/Rejected)"
-msgid "Status"
-msgstr ""
-
+#: front/src/components/manage/library/EditsCardList.vue:12
+#: front/src/components/manage/moderation/ReportCard.vue:57
 #: front/src/components/manage/users/InvitationsTable.vue:17
 #: front/src/components/manage/users/InvitationsTable.vue:39
-msgctxt "Content/Admin/*/Noun (Value is Used/Not used)"
-msgid "Status"
-msgstr ""
-
 #: front/src/components/manage/users/UsersTable.vue:43
-msgctxt "Content/Admin/Table.Label/Noun (Value is Regular user/Admin)"
-msgid "Status"
-msgstr ""
-
-#: front/src/components/manage/library/EditsCardList.vue:12
-msgctxt "Content/Search/Dropdown.Label (Value is All/Pending review/Approved/Rejected)"
+#: front/src/views/admin/moderation/DomainsDetail.vue:152
+#: front/src/views/admin/moderation/ReportsList.vue:14
+#: front/src/views/content/libraries/Detail.vue:28
+msgctxt "*/*/*"
 msgid "Status"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:174 src/components/radios/Button.vue:3
+#: front/src/components/Sidebar.vue:178 src/components/radios/Button.vue:3
 msgctxt "*/Player/Button.Label/Short, Verb"
 msgid "Stop radio"
 msgstr ""
@@ -3848,7 +4273,7 @@ msgctxt "*/*/Button.Label/Verb"
 msgid "Submit"
 msgstr ""
 
-#: front/src/components/library/EditForm.vue:98
+#: front/src/components/library/EditForm.vue:110
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Submit and apply edit"
 msgstr ""
@@ -3858,12 +4283,22 @@ msgctxt "Content/Library/Button.Label"
 msgid "Submit another edit"
 msgstr ""
 
-#: front/src/components/library/EditForm.vue:99
+#: front/src/components/moderation/ReportModal.vue:64
+msgctxt "Popup/*/Button.Label"
+msgid "Submit report"
+msgstr ""
+
+#: front/src/components/library/EditForm.vue:111
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Submit suggestion"
 msgstr ""
 
-#: front/src/views/admin/Settings.vue:85
+#: front/src/components/manage/moderation/ReportCard.vue:17
+msgctxt "Content/Moderation/*"
+msgid "Submitted by"
+msgstr ""
+
+#: front/src/views/admin/Settings.vue:86
 msgctxt "Content/Admin/Menu"
 msgid "Subsonic"
 msgstr ""
@@ -3903,16 +4338,21 @@ msgctxt "Content/Library/Tab.Title/Short"
 msgid "Summary"
 msgstr ""
 
-#: front/src/components/library/EditForm.vue:87
+#: front/src/components/library/EditForm.vue:99
 msgctxt "*/*/*"
 msgid "Summary (optional)"
 msgstr ""
 
-#: front/src/components/Footer.vue:39
+#: front/src/components/Footer.vue:47
 msgctxt "Footer/*/Listitem.Link"
 msgid "Support forum"
 msgstr ""
 
+#: front/src/views/Notifications.vue:10
+msgctxt "Content/Notifications/Header"
+msgid "Support this Funkwhale pod"
+msgstr ""
+
 #: front/src/components/library/FileUpload.vue:85
 msgctxt "Content/Library/Paragraph"
 msgid "Supported extensions: %{ extensions }"
@@ -3923,18 +4363,41 @@ msgctxt "Content/Playlist/Paragraph"
 msgid "Syncing changes to server…"
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:25
+#: front/src/components/audio/SearchBar.vue:35
+msgctxt "*/*/*/Noun"
+msgid "Tag"
+msgstr ""
+
+#: front/src/views/admin/library/TagDetail.vue:61
+msgctxt "Content/Moderation/Title"
+msgid "Tag data"
+msgstr ""
+
+#: front/src/components/library/Albums.vue:23 src/components/library/Artists.vue:15
+#: front/src/views/admin/library/Base.vue:23 src/views/admin/library/TagsList.vue:24
+#: front/src/edits.js:24 src/edits.js:50 src/edits.js:91 src/entities.js:120
+msgctxt "*/*/*/Noun"
+msgid "Tags"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:44
+#: front/src/components/mixins/Translations.vue:45
+msgctxt "Content/Moderation/Dropdown"
+msgid "Takedown request"
+msgstr ""
+
+#: front/src/components/About.vue:35 src/components/About.vue:61
+msgctxt "Content/About/Header"
+msgid "Terms and privacy policy"
+msgstr ""
+
+#: front/src/components/audio/EmbedWizard.vue:35
 #: front/src/components/common/CopyInput.vue:3
 msgctxt "Content/*/Paragraph"
 msgid "Text copied to clipboard!"
 msgstr ""
 
-#: front/src/components/Home.vue:26
-msgctxt "Content/Home/Paragraph"
-msgid "That's simple: we loved Grooveshark and we want to build something even better."
-msgstr ""
-
-#: front/src/views/admin/library/AlbumDetail.vue:75
+#: front/src/views/admin/library/AlbumDetail.vue:81
 msgctxt "Content/Moderation/Paragraph"
 msgid "The album will be removed, as well as associated uploads, tracks, favorites and listening history. This action is irreversible."
 msgstr ""
@@ -3944,12 +4407,12 @@ msgctxt "Content/Auth/Paragraph"
 msgid "The application is also requesting the following unknown permissions:"
 msgstr ""
 
-#: front/src/views/admin/library/ArtistDetail.vue:74
+#: front/src/views/admin/library/ArtistDetail.vue:79
 msgctxt "Content/Moderation/Paragraph"
 msgid "The artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible."
 msgstr ""
 
-#: front/src/components/Footer.vue:53
+#: front/src/components/Footer.vue:61
 msgctxt "Footer/*/List item.Link"
 msgid "The funkwhale logo was kindly designed and provided by Francis Gading."
 msgstr ""
@@ -3984,9 +4447,14 @@ msgctxt "Sidebar/Player/Error message.Paragraph"
 msgid "The next track will play automatically in a few seconds…"
 msgstr ""
 
-#: front/src/components/Home.vue:116
-msgctxt "Content/Home/List item"
-msgid "The plaform is free and open-source, you can install it and modify it without worries"
+#: front/src/components/manage/moderation/NotesThread.vue:27
+msgctxt "Content/Moderation/Paragraph"
+msgid "The note will be removed. This action is irreversible."
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:120
+msgctxt "Content/Moderation/Message"
+msgid "The object associated with this report was deleted."
 msgstr ""
 
 #: front/src/components/playlists/Form.vue:14
@@ -4006,12 +4474,12 @@ msgstr ""
 
 #: front/src/components/federation/FetchButton.vue:44
 msgctxt "*/*/Error"
-msgid "The remote server didn't answered fast enough"
+msgid "The remote server didn't respond quickly enough"
 msgstr ""
 
 #: front/src/components/federation/FetchButton.vue:50
 msgctxt "*/*/Error"
-msgid "The return server returned invalid JSON or JSON-LD data"
+msgid "The remote server returned invalid JSON or JSON-LD data"
 msgstr ""
 
 #: front/src/components/manage/library/AlbumsTable.vue:189
@@ -4029,6 +4497,11 @@ msgctxt "Popup/*/Paragraph"
 msgid "The selected library will be removed, as well as associated uploads and follows. This action is irreversible."
 msgstr ""
 
+#: front/src/components/manage/library/TagsTable.vue:180
+msgctxt "Popup/*/Paragraph"
+msgid "The selected tag will be removed and unlinked with existing content, if any. This action is irreversible."
+msgstr ""
+
 #: front/src/components/manage/library/TracksTable.vue:189
 msgctxt "Popup/*/Paragraph"
 msgid "The selected tracks will be removed, as well as associated uploads, favorites and listening history. This action is irreversible."
@@ -4054,6 +4527,11 @@ msgctxt "Popup/Library/Paragraph"
 msgid "The suggestion will be completely removed, this action is irreversible."
 msgstr ""
 
+#: front/src/views/admin/library/TagDetail.vue:44
+msgctxt "Content/Moderation/Paragraph"
+msgid "The tag will be removed and unlinked from any existing entity. This action is irreversible."
+msgstr ""
+
 #: front/src/components/playlists/PlaylistModal.vue:34
 msgctxt "Popup/Playlist/Error message.Title"
 msgid "The track can't be added to a playlist"
@@ -4064,7 +4542,7 @@ msgctxt "Sidebar/Player/Error message.Title"
 msgid "The track cannot be loaded"
 msgstr ""
 
-#: front/src/views/admin/library/TrackDetail.vue:74
+#: front/src/views/admin/library/TrackDetail.vue:80
 msgctxt "Content/Moderation/Paragraph"
 msgid "The track will be removed, as well as associated uploads, favorites and listening history. This action is irreversible."
 msgstr ""
@@ -4099,17 +4577,32 @@ msgctxt "Content/Artist/Paragraph"
 msgid "This artist is present in the following libraries:"
 msgstr ""
 
+#: front/src/components/manage/moderation/DomainsTable.vue:169
+msgctxt "Content/Moderation/Popup"
+msgid "This domain is present in your allow-list"
+msgstr ""
+
 #: front/src/views/admin/moderation/AccountsDetail.vue:84
-#: front/src/views/admin/moderation/DomainsDetail.vue:48
+#: front/src/views/admin/moderation/DomainsDetail.vue:76
 msgctxt "Content/Moderation/Card.Title"
 msgid "This domain is subject to specific moderation rules"
 msgstr ""
 
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:16
+msgctxt "Content/Moderation/Card.Title"
+msgid "This entity is subject to specific moderation rules"
+msgstr ""
+
 #: front/src/views/content/Home.vue:9
 msgctxt "Content/Library/Paragraph"
 msgid "This instance offers up to %{quota} of storage space for every user."
 msgstr ""
 
+#: front/src/components/auth/Settings.vue:300
+msgctxt "Popup/Settings/Paragraph"
+msgid "This is irreversible and will permanently remove your data from our servers. You will we immediatly logged out."
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:165
 msgctxt "Content/Settings/Paragraph"
 msgid "This is the list of applications that have access to your account data."
@@ -4130,12 +4623,12 @@ msgctxt "Content/Library/Input.Placeholder"
 msgid "This library contains my personal music, I hope you like it."
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:141
+#: front/src/views/content/remote/Card.vue:169
 msgctxt "Content/Library/Card.Help text"
 msgid "This library is private and your approval from its owner is needed to access its content"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:142
+#: front/src/views/content/remote/Card.vue:170
 msgctxt "Content/Library/Card.Help text"
 msgid "This library is public and you can access its content freely"
 msgstr ""
@@ -4152,6 +4645,11 @@ msgctxt "Content/*/Message"
 msgid "This object is managed by another server, you cannot edit it."
 msgstr ""
 
+#: front/src/components/Home.vue:87
+msgctxt "Content/Home/Paragraph"
+msgid "This pod runs Funkwhale, a community-driven project that lets you listen and share music and audio within a decentralized, open network."
+msgstr ""
+
 #: front/src/components/library/FileUpload.vue:51
 msgctxt "Content/Library/Paragraph"
 msgid "This reference will be used to group imported files together."
@@ -4160,7 +4658,7 @@ msgstr ""
 #: front/src/components/mixins/Translations.vue:33
 #: front/src/components/mixins/Translations.vue:34
 msgctxt "Content/Library/Help text"
-msgid "This track could not be processed, please it is tagged correctly"
+msgid "This track could not be processed, please make sure it is tagged correctly"
 msgstr ""
 
 #: front/src/components/mixins/Translations.vue:29
@@ -4175,7 +4673,7 @@ msgctxt "Content/Library/Help text"
 msgid "This track is already present in one of your libraries"
 msgstr ""
 
-#: front/src/components/audio/PlayButton.vue:85
+#: front/src/components/audio/PlayButton.vue:103
 msgctxt "*/Queue/Button/Title"
 msgid "This track is not available in any library you have access to"
 msgstr ""
@@ -4185,7 +4683,7 @@ msgctxt "Content/Track/Paragraph"
 msgid "This track is present in the following libraries:"
 msgstr ""
 
-#: front/src/views/playlists/Detail.vue:38
+#: front/src/views/playlists/Detail.vue:46
 msgctxt "Popup/Playlist/Paragraph"
 msgid "This will completely delete this playlist and cannot be undone."
 msgstr ""
@@ -4195,12 +4693,17 @@ msgctxt "Popup/Radio/Paragraph"
 msgid "This will completely delete this radio and cannot be undone."
 msgstr ""
 
-#: front/src/components/auth/SubsonicTokenForm.vue:50
+#: front/src/components/auth/SubsonicTokenForm.vue:55
 msgctxt "Popup/Settings/Paragraph"
 msgid "This will completely disable access to the Subsonic API using from account."
 msgstr ""
 
-#: front/src/components/auth/SubsonicTokenForm.vue:35
+#: front/src/components/manage/moderation/ReportCard.vue:359
+msgctxt "Content/Moderation/Popup,Paragraph"
+msgid "This will delete the object associated with this report and mark the report as resolved. The deletion is irreversible."
+msgstr ""
+
+#: front/src/components/auth/SubsonicTokenForm.vue:40
 msgctxt "Popup/Settings/Paragraph"
 msgid "This will log you out from existing devices that use the current password."
 msgstr ""
@@ -4220,21 +4723,14 @@ msgctxt "Popup/Playlist/Paragraph"
 msgid "This will remove all tracks from this playlist and cannot be undone."
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:99
-#: front/src/views/admin/library/TrackDetail.vue:98 src/edits.js:21 src/edits.js:39
-msgctxt "*/*/*/Noun"
-msgid "Title"
-msgstr ""
-
 #: front/src/components/audio/track/Table.vue:7
-#: front/src/views/content/libraries/FilesTable.vue:55
-msgctxt "Content/Track/*/Noun"
-msgid "Title"
-msgstr ""
-
 #: front/src/components/manage/library/AlbumsTable.vue:39
 #: front/src/components/manage/library/TracksTable.vue:39
-msgctxt "*/*/*"
+#: front/src/views/admin/library/AlbumDetail.vue:105
+#: front/src/views/admin/library/TrackDetail.vue:104
+#: front/src/views/content/libraries/FilesTable.vue:55 src/edits.js:36
+#: front/src/edits.js:62
+msgctxt "*/*/*/Noun"
 msgid "Title"
 msgstr ""
 
@@ -4243,17 +4739,27 @@ msgctxt "Popup/Instance/Paragraph"
 msgid "To continue, please select the Funkwhale instance you want to connect to. Enter the address directly, or select one of the suggested choices."
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:79
+#: front/src/components/ShortcutsModal.vue:148
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle favorite"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:132
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle mute"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:136
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Toggle queue looping"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:222
-#: front/src/views/admin/library/ArtistDetail.vue:211
-#: front/src/views/admin/library/LibraryDetail.vue:200
-#: front/src/views/admin/library/TrackDetail.vue:274
-#: front/src/views/admin/moderation/AccountsDetail.vue:317
-#: front/src/views/admin/moderation/DomainsDetail.vue:225
+#: front/src/views/admin/library/AlbumDetail.vue:238
+#: front/src/views/admin/library/ArtistDetail.vue:226
+#: front/src/views/admin/library/LibraryDetail.vue:219
+#: front/src/views/admin/library/TrackDetail.vue:290
+#: front/src/views/admin/moderation/AccountsDetail.vue:329
+#: front/src/views/admin/moderation/DomainsDetail.vue:262
 msgctxt "Content/Moderation/Table.Label"
 msgid "Total size"
 msgstr ""
@@ -4263,20 +4769,17 @@ msgctxt "Content/Library/Card.Help text"
 msgid "Total size of the files in this library"
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:105
+#: front/src/views/admin/moderation/DomainsDetail.vue:142
 msgctxt "Content/*/*"
 msgid "Total users"
 msgstr ""
 
-#: front/src/views/admin/library/UploadDetail.vue:199
-msgctxt "*/*/*"
-msgid "Track"
-msgstr ""
-
-#: front/src/components/audio/SearchBar.vue:27
-#: front/src/components/library/TrackBase.vue:173
+#: front/src/components/audio/SearchBar.vue:34
+#: front/src/components/library/TrackBase.vue:188
 #: front/src/components/library/TrackDetail.vue:128
-#: front/src/components/metadata/Search.vue:138
+#: front/src/components/metadata/Search.vue:138 src/components/mixins/Report.vue:28
+#: front/src/views/admin/library/UploadDetail.vue:199
+#: front/src/components/mixins/Report.vue:29
 msgctxt "*/*/*/Noun"
 msgid "Track"
 msgstr ""
@@ -4286,7 +4789,7 @@ msgctxt "Content/Library/Card/Short"
 msgid "Track #%{ id } - %{ name }"
 msgstr ""
 
-#: front/src/views/admin/library/TrackDetail.vue:91
+#: front/src/views/admin/library/TrackDetail.vue:97
 msgctxt "Content/Moderation/Title"
 msgid "Track data"
 msgstr ""
@@ -4296,30 +4799,28 @@ msgctxt "Content/Track/Title/Noun"
 msgid "Track information"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:50
-#: front/src/components/mixins/Translations.vue:51
+#: front/src/components/mixins/Translations.vue:60
+#: front/src/components/mixins/Translations.vue:61
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Track name"
 msgstr ""
 
-#: front/src/components/instance/Stats.vue:54
 #: front/src/components/library/AlbumDetail.vue:19
-#: front/src/components/playlists/PlaylistModal.vue:47
-#: front/src/views/admin/moderation/AccountsDetail.vue:362
-#: front/src/views/admin/moderation/DomainsDetail.vue:274
-#: front/src/views/content/Base.vue:8 src/views/content/libraries/Detail.vue:8
-#: front/src/views/playlists/Detail.vue:51 src/views/radios/Detail.vue:34
-msgctxt "*/*/*/Noun"
-msgid "Tracks"
-msgstr ""
-
+#: front/src/components/library/TagDetail.vue:36
 #: front/src/components/manage/library/AlbumsTable.vue:42
 #: front/src/components/manage/library/ArtistsTable.vue:42
-#: front/src/views/admin/library/AlbumDetail.vue:252
-#: front/src/views/admin/library/ArtistDetail.vue:251
+#: front/src/components/manage/library/TagsTable.vue:44
+#: front/src/components/playlists/PlaylistModal.vue:47
+#: front/src/views/admin/library/AlbumDetail.vue:268
+#: front/src/views/admin/library/ArtistDetail.vue:266
 #: front/src/views/admin/library/Base.vue:14
-#: front/src/views/admin/library/LibraryDetail.vue:229
+#: front/src/views/admin/library/LibraryDetail.vue:248
+#: front/src/views/admin/library/TagDetail.vue:143
 #: front/src/views/admin/library/TracksList.vue:24
+#: front/src/views/admin/moderation/AccountsDetail.vue:374
+#: front/src/views/admin/moderation/DomainsDetail.vue:311
+#: front/src/views/content/Base.vue:8 src/views/content/libraries/Detail.vue:8
+#: front/src/views/playlists/Detail.vue:76 src/views/radios/Detail.vue:34
 msgctxt "*/*/*"
 msgid "Tracks"
 msgstr ""
@@ -4329,72 +4830,61 @@ msgctxt "Content/Artist/Title"
 msgid "Tracks by this artist"
 msgstr ""
 
-#: front/src/components/instance/Stats.vue:25
-msgctxt "Content/About/Paragraph/Unit"
-msgid "Tracks favorited"
-msgstr ""
-
-#: front/src/components/instance/Stats.vue:19
-msgctxt "Content/About/Paragraph/Unit"
-msgid "tracks listened"
-msgstr ""
-
 #: front/src/components/library/radios/Filter.vue:44
 msgctxt "Popup/Radio/Title/Noun"
 msgid "Tracks matching filter"
 msgstr ""
 
 #: front/src/components/library/TrackDetail.vue:57
+#: front/src/components/manage/moderation/ReportCard.vue:134
 #: front/src/views/admin/library/UploadDetail.vue:250
+#: front/src/views/admin/moderation/AccountsDetail.vue:181
 msgctxt "Content/Track/Table.Label/Noun"
 msgid "Type"
 msgstr ""
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:180
-msgctxt "Content/Moderation/Table.Label/Noun"
-msgid "Type"
-msgstr ""
-
 #: front/src/components/manage/moderation/AccountsTable.vue:44
-#: front/src/components/manage/moderation/DomainsTable.vue:42
+#: front/src/components/manage/moderation/DomainsTable.vue:50
 msgctxt "Content/Moderation/Table.Label/Short"
 msgid "Under moderation rule"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:109 src/views/content/remote/Card.vue:114
+#: front/src/components/ShortcutsModal.vue:68
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Unfocus searchbar"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:122 src/views/content/remote/Card.vue:127
 msgctxt "*/Library/Button.Label/Verb"
 msgid "Unfollow"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:110
+#: front/src/views/content/remote/Card.vue:123
 msgctxt "Popup/Library/Title"
 msgid "Unfollow this library?"
 msgstr ""
 
-#: front/src/components/About.vue:17
-msgctxt "Content/About/Paragraph"
-msgid "Unfortunately, the owners of this instance did not yet take the time to complete this page."
-msgstr ""
-
 #: front/src/components/federation/FetchButton.vue:54
 #: front/src/components/federation/FetchButton.vue:55
+#: front/src/components/library/ImportStatusModal.vue:144
 msgctxt "*/*/Error"
-msgid "Unknowkn error"
+msgid "Unknown error"
 msgstr ""
 
-#: front/src/components/library/ImportStatusModal.vue:144
-msgctxt "Popup/Import/Error.Label"
-msgid "Unkwown error"
+#: front/src/components/audio/Player.vue:656
+msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
+msgid "Unmute"
 msgstr ""
 
-#: front/src/components/Home.vue:37
-msgctxt "Content/Home/Title"
-msgid "Unlimited music"
+#: front/src/components/manage/moderation/ReportCard.vue:225
+msgctxt "Content/*/Button.Label"
+msgid "Unresolve"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:630
-msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
-msgid "Unmute"
+#: front/src/components/manage/moderation/ReportCard.vue:67
+#: front/src/views/admin/moderation/ReportsList.vue:23
+msgctxt "Content/*/*/Short"
+msgid "Unresolved"
 msgstr ""
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:57
@@ -4478,8 +4968,9 @@ msgctxt "Content/Library/Title/Verb"
 msgid "Upload new tracks"
 msgstr ""
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:298
-msgctxt "Content/Moderation/Table.Label/Noun"
+#: front/src/components/About.vue:99
+#: front/src/views/admin/moderation/AccountsDetail.vue:309
+msgctxt "*/*/*"
 msgid "Upload quota"
 msgstr ""
 
@@ -4513,30 +5004,22 @@ msgctxt "Content/Library/Table"
 msgid "Uploading…"
 msgstr ""
 
+#: front/src/components/manage/library/LibrariesTable.vue:52
+#: front/src/components/manage/moderation/AccountsTable.vue:41
+#: front/src/components/mixins/Translations.vue:75
+#: front/src/views/admin/library/AlbumDetail.vue:258
+#: front/src/views/admin/library/ArtistDetail.vue:246
 #: front/src/views/admin/library/Base.vue:20
+#: front/src/views/admin/library/LibraryDetail.vue:258
+#: front/src/views/admin/library/TrackDetail.vue:310
 #: front/src/views/admin/library/UploadsList.vue:24
+#: front/src/views/admin/moderation/AccountsDetail.vue:349
+#: front/src/views/admin/moderation/DomainsDetail.vue:281
+#: front/src/components/mixins/Translations.vue:76
 msgctxt "*/*/*"
 msgid "Uploads"
 msgstr ""
 
-#: front/src/components/manage/moderation/AccountsTable.vue:41
-#: front/src/components/mixins/Translations.vue:63
-#: front/src/views/admin/library/AlbumDetail.vue:242
-#: front/src/views/admin/library/ArtistDetail.vue:231
-#: front/src/views/admin/library/LibraryDetail.vue:239
-#: front/src/views/admin/library/TrackDetail.vue:294
-#: front/src/views/admin/moderation/AccountsDetail.vue:337
-#: front/src/views/admin/moderation/DomainsDetail.vue:244
-#: front/src/components/mixins/Translations.vue:64
-msgctxt "Content/Moderation/Table.Label/Noun"
-msgid "Uploads"
-msgstr ""
-
-#: front/src/components/manage/library/LibrariesTable.vue:52
-msgctxt "Content/*/*/Noun"
-msgid "Uploads"
-msgstr ""
-
 #: front/src/components/auth/ApplicationForm.vue:16
 msgctxt "Content/Applications/Help Text"
 msgid "Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is not served on the web."
@@ -4547,11 +5030,26 @@ msgctxt "Footer/*/List item.Link"
 msgid "Use another instance"
 msgstr ""
 
+#: front/src/components/Home.vue:146
+msgctxt "Content/Home/Link"
+msgid "Use Funkwhale on other devices with our apps"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:44
+msgctxt "*/*/Field,Help"
+msgid "Use this field to provide additional context to the moderator that will handle your report."
+msgstr ""
+
 #: front/src/views/auth/PasswordReset.vue:12
 msgctxt "Content/Signup/Paragraph"
 msgid "Use this form to request a password reset. We will send an email to the given address with instructions to reset your password."
 msgstr ""
 
+#: front/src/components/moderation/ReportModal.vue:18
+msgctxt "*/Moderation/Popup,Paragraph"
+msgid "Use this form to submit a report to our moderation team."
+msgstr ""
+
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:111
 msgctxt "Content/Moderation/Help text"
 msgid "Use this setting to temporarily enable/disable the policy without completely removing it."
@@ -4562,14 +5060,24 @@ msgctxt "Content/Admin/Table"
 msgid "Used"
 msgstr ""
 
+#: front/src/components/Home.vue:125
+msgctxt "Content/Home/Header"
+msgid "Useful links"
+msgstr ""
+
 #: front/src/views/content/libraries/Detail.vue:26
 msgctxt "Content/Library/Table.Label"
 msgid "User"
 msgstr ""
 
-#: front/src/components/instance/Stats.vue:5
-msgctxt "Content/About/Title/Noun"
-msgid "User activity"
+#: front/src/components/Home.vue:154
+msgctxt "Content/Home/Link"
+msgid "User guides"
+msgstr ""
+
+#: front/src/views/admin/Settings.vue:88
+msgctxt "Content/Admin/Menu"
+msgid "User Interface"
 msgstr ""
 
 #: front/src/components/library/AlbumDetail.vue:26
@@ -4584,34 +5092,34 @@ msgctxt "Content/Radio/Title"
 msgid "User radios"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:19
+#: front/src/components/auth/SignupForm.vue:15
 #: front/src/components/manage/users/UsersTable.vue:37
-#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:71
 #: front/src/views/admin/moderation/AccountsDetail.vue:114
-#: front/src/components/mixins/Translations.vue:60
+#: front/src/components/mixins/Translations.vue:72
 msgctxt "Content/*/*"
 msgid "Username"
 msgstr ""
 
-#: front/src/components/auth/Login.vue:15
+#: front/src/components/auth/LoginForm.vue:11
 msgctxt "Content/Login/Input.Label/Noun"
 msgid "Username or email"
 msgstr ""
 
-#: front/src/components/instance/Stats.vue:13
-msgctxt "Content/About/Paragraph/Unit"
-msgid "users"
-msgstr ""
-
-#: front/src/components/Sidebar.vue:102
-#: front/src/components/manage/moderation/DomainsTable.vue:39
-#: front/src/components/mixins/Translations.vue:61 src/views/admin/Settings.vue:81
+#: front/src/components/Sidebar.vue:106
+#: front/src/components/manage/moderation/DomainsTable.vue:47
+#: front/src/components/mixins/Translations.vue:73 src/views/admin/Settings.vue:81
 #: front/src/views/admin/users/Base.vue:5 src/views/admin/users/UsersList.vue:21
-#: front/src/components/mixins/Translations.vue:62
+#: front/src/components/mixins/Translations.vue:74
 msgctxt "*/*/*/Noun"
 msgid "Users"
 msgstr ""
 
+#: front/src/components/Home.vue:110
+msgctxt "Content/Home/Paragraph"
+msgid "Users on this pod also get %{ quota } of free storage to upload their own content!"
+msgstr ""
+
 #: front/src/components/Footer.vue:29
 msgctxt "Footer/*/Title"
 msgid "Using Funkwhale"
@@ -4629,44 +5137,57 @@ msgctxt "Content/Library/Link/Verb"
 msgid "View files"
 msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:81
-#: front/src/components/library/ArtistBase.vue:92
-#: front/src/components/library/TrackBase.vue:100
-#: front/src/views/admin/library/AlbumDetail.vue:42
-#: front/src/views/admin/library/ArtistDetail.vue:41
+#: front/src/components/library/AlbumBase.vue:95
+#: front/src/components/library/ArtistBase.vue:107
+#: front/src/components/library/TrackBase.vue:111
+#: front/src/views/admin/library/AlbumDetail.vue:48
+#: front/src/views/admin/library/ArtistDetail.vue:46
 #: front/src/views/admin/library/LibraryDetail.vue:34
 #: front/src/views/admin/library/LibraryDetail.vue:45
-#: front/src/views/admin/library/TrackDetail.vue:41
+#: front/src/views/admin/library/TagDetail.vue:32
+#: front/src/views/admin/library/TrackDetail.vue:47
 #: front/src/views/admin/library/UploadDetail.vue:35
 #: front/src/views/admin/library/UploadDetail.vue:46
 #: front/src/views/admin/moderation/AccountsDetail.vue:37
 #: front/src/views/admin/moderation/AccountsDetail.vue:45
+#: front/src/views/admin/moderation/DomainsDetail.vue:30
 msgctxt "Content/Moderation/Link/Verb"
 msgid "View in Django's admin"
 msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:61
-#: front/src/components/library/ArtistBase.vue:72
-#: front/src/components/library/TrackBase.vue:80
+#: front/src/components/Home.vue:169
+msgctxt "Content/Home/Link"
+msgid "View more…"
+msgstr ""
+
+#: front/src/components/library/AlbumBase.vue:62
+#: front/src/components/library/ArtistBase.vue:73
+#: front/src/components/library/TrackBase.vue:78
 #: front/src/components/metadata/ArtistCard.vue:49
 #: front/src/components/metadata/ReleaseCard.vue:53
 msgctxt "Content/*/*/Clickable, Verb"
 msgid "View on MusicBrainz"
 msgstr ""
 
+#: front/src/components/manage/moderation/ReportCard.vue:124
+msgctxt "Content/Moderation/Link"
+msgid "View public page"
+msgstr ""
+
 #: front/src/components/manage/library/LibrariesTable.vue:11
 #: front/src/components/manage/library/LibrariesTable.vue:51
 #: front/src/components/manage/library/UploadsTable.vue:11
 #: front/src/components/manage/library/UploadsTable.vue:63
 #: front/src/views/admin/library/LibraryDetail.vue:94
 #: front/src/views/admin/library/UploadDetail.vue:101
+#: front/src/views/content/libraries/Form.vue:18
 msgctxt "*/*/*"
 msgid "Visibility"
 msgstr ""
 
-#: front/src/views/content/libraries/Form.vue:18
-msgctxt "Content/Library/Dropdown.Label"
-msgid "Visibility"
+#: front/src/components/Home.vue:91
+msgctxt "Content/Home/Link"
+msgid "Visit funkwhale.audio"
 msgstr ""
 
 #: front/src/components/library/AlbumDetail.vue:4
@@ -4679,7 +5200,12 @@ msgctxt "Popup/*/Loading.Title"
 msgid "Waiting for result…"
 msgstr ""
 
-#: front/src/components/auth/Login.vue:7
+#: front/src/components/auth/Settings.vue:285
+msgctxt "Content/Settings/Error message.Title"
+msgid "We cannot delete your account"
+msgstr ""
+
+#: front/src/components/auth/LoginForm.vue:3
 msgctxt "Content/Login/Error message.Title"
 msgid "We cannot log you in"
 msgstr ""
@@ -4689,9 +5215,9 @@ msgctxt "Content/*/Error message.Title"
 msgid "We cannot save your changes"
 msgstr ""
 
-#: front/src/components/Home.vue:122
-msgctxt "Content/Home/List item"
-msgid "We do not track you or bother you with ads"
+#: front/src/views/Notifications.vue:39
+msgctxt "Content/Notifications/Paragraph"
+msgid "We noticed you've been here for a while. If Funkwhale is useful to you, we could use your help to make it even better!"
 msgstr ""
 
 #: front/src/components/library/FileUpload.vue:39
@@ -4699,32 +5225,27 @@ msgctxt "Content/Library/Link"
 msgid "We recommend using Picard for that purpose."
 msgstr ""
 
-#: front/src/components/Home.vue:7
-msgctxt "Content/Home/Title"
-msgid "We think listening to music should be simple."
+#: front/src/components/moderation/ReportModal.vue:35
+msgctxt "*/*/Field,Help"
+msgid "We'll use this email if we need to contact you regarding this report."
 msgstr ""
 
-#: front/src/components/Home.vue:148
+#: front/src/components/Home.vue:207
 msgctxt "Head/Home/Title"
 msgid "Welcome"
 msgstr ""
 
 #: front/src/components/Home.vue:5
-msgctxt "Content/Home/Title/Verb"
-msgid "Welcome on Funkwhale"
-msgstr ""
-
-#: front/src/components/Home.vue:24
-msgctxt "Content/Home/Title"
-msgid "Why funkwhale?"
+msgctxt "Content/Home/Header"
+msgid "Welcome to %{ podName }!"
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:13
+#: front/src/components/audio/EmbedWizard.vue:23
 msgctxt "Popup/Embed/Input.Label"
 msgid "Widget height"
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:6
+#: front/src/components/audio/EmbedWizard.vue:16
 msgctxt "Popup/Embed/Input.Label"
 msgid "Widget width"
 msgstr ""
@@ -4744,9 +5265,11 @@ msgctxt "Content/OAuth Scopes/Help Text"
 msgid "Write-only access to user data"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:129
+#: front/src/components/Sidebar.vue:133
 #: front/src/components/manage/moderation/AccountsTable.vue:72
-#: front/src/components/manage/moderation/DomainsTable.vue:58
+#: front/src/components/manage/moderation/DomainsTable.vue:12
+#: front/src/components/manage/moderation/DomainsTable.vue:69
+#: front/src/views/admin/moderation/DomainsDetail.vue:109
 msgctxt "*/*/*"
 msgid "Yes"
 msgstr ""
@@ -4793,17 +5316,12 @@ msgstr ""
 
 #: front/src/views/content/Home.vue:17
 msgctxt "Content/Library/Paragraph"
-msgid "You can follow libraries from other users to get access to new music. Public libraries can be followed immediatly, while following a private library requires approval from its owner."
-msgstr ""
-
-#: front/src/components/Home.vue:128
-msgctxt "Content/Home/List item"
-msgid "You can invite friends and family to your instance so they can enjoy your music"
+msgid "You can follow libraries from other users to get access to new music. Public libraries can be followed immediately, while following a private library requires approval from its owner."
 msgstr ""
 
 #: front/src/components/moderation/FilterModal.vue:31
 msgctxt "Popup/Moderation/Paragraph"
-msgid "You can manage and update your filters anytime from your account settings."
+msgid "You can manage and update your filters any time from your account settings."
 msgstr ""
 
 #: front/src/views/auth/EmailConfirm.vue:24
@@ -4811,6 +5329,11 @@ msgctxt "Content/Signup/Paragraph"
 msgid "You can now use the service without limitations."
 msgstr ""
 
+#: front/src/components/auth/Settings.vue:278
+msgctxt "Content/Settings/Paragraph'"
+msgid "You can permanently and irreversibly delete your account and all the associated data using the form below. You will be asked for confirmation."
+msgstr ""
+
 #: front/src/components/library/radios/Builder.vue:7
 msgctxt "Content/Radio/Paragraph"
 msgid "You can use this interface to build your own custom radio, which will play tracks according to your criteria."
@@ -4836,7 +5359,7 @@ msgctxt "Content/Moderation/Card.Title"
 msgid "You don't have any rule in place for this account."
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:39
+#: front/src/views/admin/moderation/DomainsDetail.vue:67
 msgctxt "Content/Moderation/Card.Title"
 msgid "You don't have any rule in place for this domain."
 msgstr ""
@@ -4846,7 +5369,7 @@ msgctxt "Content/Library/Paragraph"
 msgid "You don't have the permission to edit this object, but you can suggest changes. Once submitted, suggestions will be reviewed before approval."
 msgstr ""
 
-#: front/src/components/Sidebar.vue:171
+#: front/src/components/Sidebar.vue:175
 msgctxt "Sidebar/Player/Title"
 msgid "You have a radio playing"
 msgstr ""
@@ -4878,14 +5401,19 @@ msgstr ""
 
 #: front/src/components/moderation/FilterModal.vue:20
 msgctxt "Popup/Moderation/Paragraph"
-msgid "You will not see tracks, albums and user activity linked to this artist anymore:"
+msgid "You will not see tracks, albums and user activity linked to this artist any more:"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:13
+#: front/src/components/auth/SignupForm.vue:9
 msgctxt "Content/Signup/Form/Paragraph"
 msgid "Your account cannot be created."
 msgstr ""
 
+#: front/src/components/auth/Settings.vue:281
+msgctxt "Content/Settings/Paragraph'"
+msgid "Your account will be deleted from our servers within a few minutes. We will also notify other servers who may have a copy of some of your data so they can proceed to deletion. Please note that some of these servers may be offline or unwilling to comply though."
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:215
 msgctxt "Content/Settings/Title/Noun"
 msgid "Your applications"
@@ -4896,6 +5424,11 @@ msgctxt "Content/Settings/Error message.Title"
 msgid "Your avatar cannot be saved"
 msgstr ""
 
+#: front/src/components/auth/Settings.vue:527
+msgctxt "*/Auth/Message"
+msgid "Your deletion request was submitted, your account and content will be deleted shortly"
+msgstr ""
+
 #: front/src/components/library/EditForm.vue:3
 msgctxt "Content/Library/Paragraph"
 msgid "Your edit was successfully submitted."
@@ -4906,12 +5439,12 @@ msgctxt "Head/Favorites/Title"
 msgid "Your Favorites"
 msgstr ""
 
-#: front/src/components/Home.vue:109
-msgctxt "Content/Home/Title"
-msgid "Your music, your way"
+#: front/src/views/Notifications.vue:5
+msgctxt "Content/Notifications/Title"
+msgid "Your messages"
 msgstr ""
 
-#: front/src/views/Notifications.vue:4
+#: front/src/views/Notifications.vue:69
 msgctxt "Content/Notifications/Title"
 msgid "Your notifications"
 msgstr ""
@@ -4928,7 +5461,7 @@ msgstr ""
 
 #: front/src/components/auth/Settings.vue:14
 msgctxt "Content/Settings/Error message.Title"
-msgid "Your settings can't be updateds"
+msgid "Your settings can't be updated"
 msgstr ""
 
 #: front/src/components/auth/Settings.vue:101
@@ -4936,24 +5469,29 @@ msgctxt "Popup/Settings/List item"
 msgid "Your Subsonic password will be changed to a new, random one, logging you out from devices that used the old Subsonic password"
 msgstr ""
 
-#: front/src/edits.js:47
-msgctxt "*/*/*/Short, Noun"
-msgid "Position"
+#: front/src/entities.js:126
+msgctxt "*/*/*/Noun"
+msgid "MusicBrainz ID"
 msgstr ""
 
-#: front/src/edits.js:54
-msgctxt "Content/Track/*/Noun"
-msgid "Copyright"
+#: front/src/main.js:110
+msgctxt "*/Error/Paragraph"
+msgid "You sent too many requests and have been rate limited, please try again in %{ delay }"
+msgstr ""
+
+#: front/src/main.js:113
+msgctxt "*/Error/Paragraph"
+msgid "You sent too many requests and have been rate limited, please try again later"
 msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:183
+#: front/src/components/library/AlbumBase.vue:208
 msgctxt "Content/Album/Header.Title"
 msgid "Album containing %{ count } track, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
 msgid_plural "Album containing %{ count } tracks, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
 msgstr[0] ""
 msgstr[1] ""
 
-#: front/src/components/audio/PlayButton.vue:220
+#: front/src/components/audio/PlayButton.vue:246
 msgctxt "*/Queue/Message"
 msgid "%{ count } track was added to your queue"
 msgid_plural "%{ count } tracks were added to your queue"
diff --git a/front/locales/ar/LC_MESSAGES/app.po b/front/locales/ar/LC_MESSAGES/app.po
index 83f9dcddff7ef80c06b2638fce30ef6cf8717b56..b72ee9c6d20343160b34261917a5dcfa4d6551f9 100644
--- a/front/locales/ar/LC_MESSAGES/app.po
+++ b/front/locales/ar/LC_MESSAGES/app.po
@@ -3,8 +3,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Arabic (FunkWhale)\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-05-16 10:35+0200\n"
-"PO-Revision-Date: 2019-05-13 13:31+0000\n"
+"POT-Creation-Date: 2019-10-01 15:15+0200\n"
+"PO-Revision-Date: 2019-09-26 10:13+0000\n"
 "Last-Translator: ButterflyOfFire <butterflyoffire+funkwhale@protonmail.com>\n"
 "Language-Team: Arabic <https://translate.funkwhale.audio/projects/funkwhale/funkwhale/front/ar/>\n"
 "Language: ar\n"
@@ -12,7 +12,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
-"X-Generator: Weblate 3.2.2\n"
+"X-Generator: Weblate 3.7\n"
 
 #: front/src/components/playlists/PlaylistModal.vue:9
 msgctxt "Popup/Playlist/Paragraph"
@@ -34,6 +34,77 @@ msgctxt "Content/Auth/Title"
 msgid "%{ app } wants to access your Funkwhale account"
 msgstr "الدخول إلى حسابك على فانك وايل Funkwhale"
 
+#: front/src/components/About.vue:173 src/components/Home.vue:56
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } active user"
+msgid_plural "%{ count } active users"
+msgstr[0] "%{ count } مقطع"
+msgstr[1] "%{ count } مَقطَع"
+msgstr[2] "مَقطعين"
+msgstr[3] "%{ count } مَقطَع"
+msgstr[4] "%{ count } مَقاطِع"
+msgstr[5] "%{ count } مَقاطعا"
+
+#: front/src/components/About.vue:182
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } albums"
+msgid_plural "%{ count } albums"
+msgstr[0] "%{ count } مقطع"
+msgstr[1] "%{ count } مَقطَع"
+msgstr[2] "مَقطعين"
+msgstr[3] "%{ count } مَقطَع"
+msgstr[4] "%{ count } مَقاطِع"
+msgstr[5] "%{ count } مَقاطعا"
+
+#: front/src/components/About.vue:152
+msgctxt "*/*/*"
+msgid "%{ count } allowed domains"
+msgid_plural "%{ count } allowed domains"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+msgstr[4] ""
+msgstr[5] ""
+
+#: front/src/components/About.vue:179
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } artists"
+msgid_plural "%{ count } artists"
+msgstr[0] "%{ count } مقطع"
+msgstr[1] "%{ count } مَقطَع"
+msgstr[2] "مَقطعين"
+msgstr[3] "%{ count } مَقطَع"
+msgstr[4] "%{ count } مَقاطِع"
+msgstr[5] "%{ count } مَقاطعا"
+
+#: front/src/components/About.vue:176 src/components/Home.vue:59
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } hour of music"
+msgid_plural "%{ count } hours of music"
+msgstr[0] "%{ count } مقطع"
+msgstr[1] "%{ count } مَقطَع"
+msgstr[2] "مَقطعين"
+msgstr[3] "%{ count } مَقطَع"
+msgstr[4] "%{ count } مَقاطِع"
+msgstr[5] "%{ count } مَقاطعا"
+
+#: front/src/components/About.vue:188
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } listenings"
+msgid_plural "%{ count } listenings"
+msgstr[0] "%{ count } مقطع"
+msgstr[1] "%{ count } مَقطَع"
+msgstr[2] "مَقطعين"
+msgstr[3] "%{ count } مَقطَع"
+msgstr[4] "%{ count } مَقاطِع"
+msgstr[5] "%{ count } مَقاطعا"
+
 #: front/src/components/common/ActionTable.vue:68
 msgctxt "Content/*/Paragraph"
 msgid "%{ count } on %{ total } selected"
@@ -45,9 +116,9 @@ msgstr[3] ""
 msgstr[4] ""
 msgstr[5] ""
 
-#: front/src/components/Sidebar.vue:121 src/components/audio/album/Card.vue:52
+#: front/src/components/Sidebar.vue:125 src/components/audio/album/Card.vue:52
 #: front/src/views/content/libraries/Card.vue:40
-#: src/views/content/remote/Card.vue:30
+#: src/views/content/remote/Card.vue:43
 msgctxt "*/*/*"
 msgid "%{ count } track"
 msgid_plural "%{ count } tracks"
@@ -80,7 +151,19 @@ msgstr[3] "مقطع يناسب عامل التصفية"
 msgstr[4] "مقطع يناسب عامل التصفية"
 msgstr[5] "مقطع يناسب عامل التصفية"
 
-#: front/src/components/playlists/Card.vue:18
+#: front/src/components/About.vue:185
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } tracks"
+msgid_plural "%{ count } tracks"
+msgstr[0] "%{ count } مقطع"
+msgstr[1] "%{ count } مَقطَع"
+msgstr[2] "مَقطعين"
+msgstr[3] "%{ count } مَقطَع"
+msgstr[4] "%{ count } مَقاطِع"
+msgstr[5] "%{ count } مَقاطعا"
+
+#: front/src/components/playlists/Card.vue:28
 msgctxt "Content/*/Card/List item"
 msgid "%{ count} track"
 msgid_plural "%{ count } tracks"
@@ -94,7 +177,7 @@ msgstr[5] "%{ count } مَقاطِع"
 #: front/src/views/content/libraries/Quota.vue:11
 msgctxt "Content/Library/Paragraph"
 msgid "%{ current } used on %{ max } allowed"
-msgstr ""
+msgstr "%{ current } مُستعمَلة مِن أصل %{ max } المسموح بها"
 
 #: front/src/components/common/Duration.vue:2
 msgctxt "Content/*/Paragraph"
@@ -128,11 +211,10 @@ msgstr "الملف الشخصي لِـ %{ username }"
 
 #: front/src/components/playlists/PlaylistModal.vue:21
 msgctxt "Popup/Playlist/Paragraph"
-msgid ""
-"<strong>%{ track }</strong> is already in <strong>%{ playlist }</strong>."
+msgid "<strong>%{ track }</strong> is already in <strong>%{ playlist }</strong>."
 msgstr ""
 
-#: front/src/components/audio/artist/Card.vue:41
+#: front/src/components/audio/artist/Card.vue:11
 msgctxt "Content/Artist/Card"
 msgid "1 album"
 msgid_plural "%{ count } albums"
@@ -154,24 +236,48 @@ msgstr[3] "%{ count } مفضّلة"
 msgstr[4] "%{ count } مفضّلات"
 msgstr[5] "%{ count } مفضّلات"
 
-#: front/src/components/Home.vue:64
-msgctxt "Content/Home/Title"
-msgid "A clean library"
-msgstr "مكتبة صوتية نظيفة"
+#: front/src/components/audio/artist/Card.vue:15
+#, fuzzy
+msgctxt "Content/Artist/Card"
+msgid "1 track"
+msgid_plural "%{ count } tracks"
+msgstr[0] "إضافة مقطع صوتي"
+msgstr[1] "إضافة مقطع صوتي"
+msgstr[2] "إضافة مقطع صوتي"
+msgstr[3] "إضافة مقطع صوتي"
+msgstr[4] "إضافة مقطع صوتي"
+msgstr[5] "إضافة مقطع صوتي"
+
+#: front/src/views/Notifications.vue:21 src/views/Notifications.vue:55
+msgctxt "*/*/*"
+msgid "30 days"
+msgstr "30 يوما"
+
+#: front/src/views/Notifications.vue:22 src/views/Notifications.vue:56
+msgctxt "*/*/*"
+msgid "60 days"
+msgstr "60 يوما"
+
+#: front/src/views/Notifications.vue:23 src/views/Notifications.vue:57
+msgctxt "*/*/*"
+msgid "90 days"
+msgstr "90 يوما"
 
 #: front/src/components/library/FileUpload.vue:264
+#, fuzzy
 msgctxt "Content/Library/Help text"
-msgid "A network error occured while uploading this file"
+msgid "A network error occurred while uploading this file"
 msgstr "حدث خطأ في الشبكة أثناء تحميل هذا الملف"
 
-#: front/src/components/library/EditForm.vue:145
+#: front/src/components/library/EditForm.vue:161
 msgctxt "*/*/Placeholder"
 msgid "A short summary describing your changes."
 msgstr "ملخص قصير لوصف تغييراتك."
 
 #: front/src/components/About.vue:5
-msgctxt "Content/About/Title/Short, Noun"
-msgid "About %{ instance }"
+#, fuzzy
+msgctxt "Content/Home/Header"
+msgid "About %{ podName }"
 msgstr "عن %{ instance }"
 
 #: front/src/components/Footer.vue:6
@@ -179,7 +285,7 @@ msgctxt "Footer/About/Title"
 msgid "About %{instanceName}"
 msgstr "عن %{instanceName}"
 
-#: front/src/components/Footer.vue:45
+#: front/src/components/Footer.vue:53 src/components/Home.vue:85
 msgctxt "Footer/*/Title/Short"
 msgid "About Funkwhale"
 msgstr "عن فانك وايل Funkwhale"
@@ -189,9 +295,16 @@ msgctxt "Footer/About/List item.Link"
 msgid "About page"
 msgstr "عن الصفحة"
 
-#: front/src/components/About.vue:8 src/components/About.vue:67
-msgctxt "Content/About/Title"
-msgid "About this instance"
+#: front/src/components/Home.vue:19
+#, fuzzy
+msgctxt "Content/Home/Header"
+msgid "About this Funkwhale pod"
+msgstr "عن فانك وايل Funkwhale"
+
+#: front/src/components/About.vue:21 src/components/About.vue:51
+#, fuzzy
+msgctxt "Content/About/Header"
+msgid "About this pod"
 msgstr "عن مثيل الخادوم هذا"
 
 #: front/src/views/content/libraries/Detail.vue:48
@@ -204,94 +317,87 @@ msgctxt "Content/Library/Table/Short"
 msgid "Accepted"
 msgstr "تم قبوله"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:110
+#: front/src/components/auth/SubsonicTokenForm.vue:117
 msgctxt "Content/Settings/Message"
 msgid "Access disabled"
 msgstr "عُطّل الوصول"
 
-#: front/src/components/mixins/Translations.vue:73
-#: front/src/components/mixins/Translations.vue:74
+#: front/src/components/mixins/Translations.vue:85
+#: front/src/components/mixins/Translations.vue:86
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to audio files, libraries, artists, albums and tracks"
 msgstr "الوصول إلى الملفات الصوتية والمكتبات والفنانين والألبومات والمَقاطِع"
 
-#: front/src/components/mixins/Translations.vue:97
-#: front/src/components/mixins/Translations.vue:98
+#: front/src/components/mixins/Translations.vue:109
+#: front/src/components/mixins/Translations.vue:110
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to content filters"
 msgstr "إختيار عامل تصفية"
 
-#: front/src/components/mixins/Translations.vue:105
-#: front/src/components/mixins/Translations.vue:106
+#: front/src/components/mixins/Translations.vue:117
+#: front/src/components/mixins/Translations.vue:118
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to edits"
 msgstr "عُطّل النفاذ"
 
-#: front/src/components/mixins/Translations.vue:69
-#: front/src/components/mixins/Translations.vue:70
+#: front/src/components/mixins/Translations.vue:81
+#: front/src/components/mixins/Translations.vue:82
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to email, username, and profile information"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:77
-#: front/src/components/mixins/Translations.vue:78
+#: front/src/components/mixins/Translations.vue:89
+#: front/src/components/mixins/Translations.vue:90
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to favorites"
 msgstr "إضافة إلى المفضلة"
 
-#: front/src/components/mixins/Translations.vue:85
-#: front/src/components/mixins/Translations.vue:86
+#: front/src/components/mixins/Translations.vue:97
+#: front/src/components/mixins/Translations.vue:98
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to follows"
-msgstr ""
+msgstr "النفاذ إلى المتابَعين"
 
-#: front/src/components/mixins/Translations.vue:81
-#: front/src/components/mixins/Translations.vue:82
+#: front/src/components/mixins/Translations.vue:93
+#: front/src/components/mixins/Translations.vue:94
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to listening history"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:101
-#: front/src/components/mixins/Translations.vue:102
+#: front/src/components/mixins/Translations.vue:113
+#: front/src/components/mixins/Translations.vue:114
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to notifications"
 msgstr "كتم الإشعارات"
 
-#: front/src/components/mixins/Translations.vue:89
-#: front/src/components/mixins/Translations.vue:90
+#: front/src/components/mixins/Translations.vue:101
+#: front/src/components/mixins/Translations.vue:102
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to playlists"
 msgstr "الوصول إلى قوائم المقاطع الموسيقية"
 
-#: front/src/components/mixins/Translations.vue:93
-#: front/src/components/mixins/Translations.vue:94
+#: front/src/components/mixins/Translations.vue:105
+#: front/src/components/mixins/Translations.vue:106
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to radios"
 msgstr "عُطّل النفاذ"
 
-#: front/src/components/Home.vue:101
-msgctxt "Content/Home/List item"
-msgid ""
-"Access your music from a clean interface that focuses on what really matters"
-msgstr "صِلوا إلى موسيقاكم عبر واجهة نظيفة التصميم تُركّز فعلًا على الأهمّ"
-
 #: front/src/components/manage/library/UploadsTable.vue:67
-#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:55
 #: front/src/views/admin/library/UploadDetail.vue:175
-#: front/src/components/mixins/Translations.vue:46
+#: front/src/components/mixins/Translations.vue:56
 msgctxt "Content/*/*/Noun"
 msgid "Accessed date"
 msgstr "عُطّل النفاذ"
 
-#: front/src/views/admin/library/LibraryDetail.vue:104
-#: front/src/views/admin/library/UploadDetail.vue:111
-msgctxt "*/*/*/Noun"
-msgid "Account"
-msgstr "الحسابات"
-
 #: front/src/components/manage/library/LibrariesTable.vue:49
 #: front/src/components/manage/library/UploadsTable.vue:61
-msgctxt "*/*/*"
+#: front/src/components/manage/moderation/ReportCard.vue:156
+#: front/src/components/mixins/Report.vue:13
+#: front/src/views/admin/library/LibraryDetail.vue:113
+#: front/src/views/admin/library/UploadDetail.vue:111
+#: front/src/components/mixins/Report.vue:14
+msgctxt "*/*/*/Noun"
 msgid "Account"
 msgstr "الحسابات"
 
@@ -305,7 +411,7 @@ msgctxt "Content/Settings/Title"
 msgid "Account settings"
 msgstr "إعدادات الحساب"
 
-#: front/src/components/auth/Settings.vue:479
+#: front/src/components/auth/Settings.vue:544
 msgctxt "Head/Settings/Title"
 msgid "Account Settings"
 msgstr "إعدادات الحساب"
@@ -322,7 +428,7 @@ msgstr "البريد الإلكتروني الخاص بالحساب"
 
 #: front/src/views/admin/moderation/AccountsList.vue:3
 #: front/src/views/admin/moderation/AccountsList.vue:24
-#: front/src/views/admin/moderation/Base.vue:8
+#: front/src/views/admin/moderation/Base.vue:11
 msgctxt "*/Moderation/Title"
 msgid "Accounts"
 msgstr "الحسابات"
@@ -335,8 +441,7 @@ msgstr "الإجراء"
 #: front/src/components/common/ActionTable.vue:101
 msgctxt "Content/*/Paragraph"
 msgid "Action %{ action } was launched successfully on %{ count } element"
-msgid_plural ""
-"Action %{ action } was launched successfully on %{ count } elements"
+msgid_plural "Action %{ action } was launched successfully on %{ count } elements"
 msgstr[0] ""
 msgstr[1] ""
 msgstr[2] ""
@@ -346,22 +451,24 @@ msgstr[5] ""
 
 #: front/src/components/common/ActionTable.vue:22
 #: front/src/components/library/radios/Builder.vue:65
+#: front/src/components/manage/moderation/ReportCard.vue:210
 msgctxt "Content/*/*/Noun"
 msgid "Actions"
 msgstr "الإجراءات"
 
-#: front/src/components/manage/users/UsersTable.vue:53
+#: front/src/components/manage/users/UsersTable.vue:54
 msgctxt "Content/Admin/Table"
 msgid "Active"
 msgstr "نشِط"
 
-#: front/src/views/admin/library/AlbumDetail.vue:134
-#: front/src/views/admin/library/ArtistDetail.vue:123
-#: front/src/views/admin/library/LibraryDetail.vue:138
-#: front/src/views/admin/library/TrackDetail.vue:186
+#: front/src/views/admin/library/AlbumDetail.vue:140
+#: front/src/views/admin/library/ArtistDetail.vue:128
+#: front/src/views/admin/library/LibraryDetail.vue:147
+#: front/src/views/admin/library/TagDetail.vue:83
+#: front/src/views/admin/library/TrackDetail.vue:192
 #: front/src/views/admin/library/UploadDetail.vue:160
-#: front/src/views/admin/moderation/AccountsDetail.vue:220
-#: front/src/views/admin/moderation/DomainsDetail.vue:136
+#: front/src/views/admin/moderation/AccountsDetail.vue:221
+#: front/src/views/admin/moderation/DomainsDetail.vue:173
 msgctxt "Content/Moderation/Title"
 msgid "Activity"
 msgstr "النشاط"
@@ -372,7 +479,7 @@ msgctxt "Content/Settings/Dropdown.Label/Noun"
 msgid "Activity visibility"
 msgstr "عرض النشاط"
 
-#: front/src/views/admin/moderation/DomainsList.vue:18
+#: front/src/views/admin/moderation/DomainsList.vue:22
 msgctxt "Content/Moderation/Button/Verb"
 msgid "Add"
 msgstr "إضافة"
@@ -401,7 +508,7 @@ msgstr "إضافة المحتوى و إدارته"
 #: front/src/components/playlists/PlaylistModal.vue:31
 msgctxt "*/Playlist/Button.Label/Verb"
 msgid "Add anyways"
-msgstr ""
+msgstr "أضفه على أي حال"
 
 #: front/src/components/Sidebar.vue:75 src/views/content/Base.vue:18
 msgctxt "*/Library/*/Verb"
@@ -418,7 +525,21 @@ msgctxt "Content/Radio/Paragraph"
 msgid "Add filters to customize your radio"
 msgstr "قم بإضافة عوامل تصفية لتخصيص إذاعتك"
 
-#: front/src/components/audio/PlayButton.vue:75
+#: front/src/components/manage/moderation/NoteForm.vue:12
+#, fuzzy
+msgctxt "Content/Moderation/Button.Label/Verb"
+msgid "Add note"
+msgstr "إضافة محتوى"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:191
+#: front/src/views/admin/moderation/DomainsDetail.vue:46
+#: front/src/views/admin/moderation/DomainsList.vue:18
+#, fuzzy
+msgctxt "Content/Moderation/Action/Verb"
+msgid "Add to allow-list"
+msgstr "إضافة إلى قائمة المقاطع الموسيقية…"
+
+#: front/src/components/audio/PlayButton.vue:91
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Add to current queue"
 msgstr "أضِف إلى قائمة الانتظار الحالية"
@@ -450,7 +571,7 @@ msgctxt "Popup/Playlist/Table.Button.Label/Verb"
 msgid "Add track"
 msgstr "إضافة مقطع صوتي"
 
-#: front/src/components/manage/users/UsersTable.vue:69
+#: front/src/components/manage/users/UsersTable.vue:70
 msgctxt "Content/Admin/Table.User role"
 msgid "Admin"
 msgstr "المدير"
@@ -460,49 +581,49 @@ msgctxt "Sidebar/Admin/Title/Noun"
 msgid "Administration"
 msgstr "الإدارة"
 
-#: front/src/views/admin/library/TrackDetail.vue:107
-msgctxt "*/*/*/Noun"
-msgid "Album"
-msgstr "الألبوم"
-
-#: front/src/components/audio/SearchBar.vue:26
+#: front/src/components/audio/SearchBar.vue:33
 #: src/components/audio/track/Table.vue:9
-#: front/src/components/library/AlbumBase.vue:152
-#: front/src/components/library/ArtistBase.vue:194
+#: front/src/components/library/AlbumBase.vue:170
+#: front/src/components/library/ArtistBase.vue:212
 #: front/src/components/manage/library/TracksTable.vue:40
 #: front/src/components/metadata/Search.vue:134
+#: src/components/mixins/Report.vue:41
+#: front/src/views/admin/library/TrackDetail.vue:113
 #: front/src/views/content/libraries/FilesTable.vue:57
+#: front/src/components/mixins/Report.vue:42
 msgctxt "*/*/*"
 msgid "Album"
 msgstr "الألبوم"
 
-#: front/src/views/admin/library/TrackDetail.vue:128
+#: front/src/views/admin/library/TrackDetail.vue:134
 msgctxt "*/*/*/Noun"
 msgid "Album artist"
 msgstr "مِن ألبومات هذا الفنان"
 
-#: front/src/views/admin/library/AlbumDetail.vue:92
+#: front/src/views/admin/library/AlbumDetail.vue:98
 msgctxt "Content/Moderation/Title"
 msgid "Album data"
 msgstr "عنوان الألبوم"
 
-#: front/src/components/mixins/Translations.vue:51
-#: front/src/components/mixins/Translations.vue:52
+#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/mixins/Translations.vue:62
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Album name"
 msgstr "عنوان الألبوم"
 
 #: front/src/components/audio/Search.vue:19
-#: src/components/instance/Stats.vue:48
-#: front/src/components/library/Albums.vue:120
-#: src/components/library/Library.vue:7
+#: src/components/library/Albums.vue:129
+#: front/src/components/library/Library.vue:7
+#: src/components/library/TagDetail.vue:28
 #: front/src/components/manage/library/ArtistsTable.vue:41
+#: front/src/components/manage/library/TagsTable.vue:43
 #: front/src/views/admin/library/AlbumsList.vue:24
-#: front/src/views/admin/library/ArtistDetail.vue:241
+#: front/src/views/admin/library/ArtistDetail.vue:256
 #: front/src/views/admin/library/Base.vue:11
-#: front/src/views/admin/library/LibraryDetail.vue:219
-#: front/src/views/admin/moderation/AccountsDetail.vue:354
-#: front/src/views/admin/moderation/DomainsDetail.vue:264
+#: front/src/views/admin/library/LibraryDetail.vue:238
+#: front/src/views/admin/library/TagDetail.vue:133
+#: front/src/views/admin/moderation/AccountsDetail.vue:366
+#: front/src/views/admin/moderation/DomainsDetail.vue:301
 msgctxt "*/*/*"
 msgid "Albums"
 msgstr "الألبومات"
@@ -516,7 +637,10 @@ msgstr "مِن ألبومات هذا الفنان"
 #: front/src/components/manage/library/LibrariesTable.vue:13
 #: front/src/components/manage/library/UploadsTable.vue:13
 #: front/src/components/manage/library/UploadsTable.vue:22
+#: front/src/components/manage/moderation/DomainsTable.vue:11
 #: front/src/components/manage/users/InvitationsTable.vue:19
+#: front/src/components/moderation/ReportCategoryDropdown.vue:32
+#: front/src/views/admin/moderation/ReportsList.vue:17
 #: front/src/views/content/libraries/FilesTable.vue:13
 msgctxt "Content/*/Dropdown"
 msgid "All"
@@ -538,41 +662,56 @@ msgctxt "Head/Authorize/Title"
 msgid "Allow application"
 msgstr "ترخيص التطبيق"
 
+#: front/src/components/About.vue:136
+msgctxt "*/*/*"
+msgid "Allow-list"
+msgstr ""
+
+#: front/src/components/About.vue:149
+#, fuzzy
+msgctxt "*/*/*"
+msgid "Allowed domains"
+msgstr "إضافة نطاق"
+
 #: front/src/components/library/ImportStatusModal.vue:17
 msgctxt "Popup/Import/Message"
-msgid ""
-"An error occured during upload processing. You will find more information "
-"below."
+msgid "An error occurred during upload processing. You will find more information below."
 msgstr ""
 
 #: front/src/components/playlists/Editor.vue:13
+#, fuzzy
 msgctxt "Content/Playlist/Error message.Title"
-msgid "An error occured while saving your changes"
+msgid "An error occurred while saving your changes"
 msgstr "حدث خطأ أثناء عملية حفظ التغييرات"
 
 #: front/src/components/federation/FetchButton.vue:21
+#, fuzzy
 msgctxt "Popup/*/Message.Content"
-msgid "An error occured while trying to refresh data:"
+msgid "An error occurred while trying to refresh data:"
 msgstr "حدث خطأ أثناء عملية إنعاش البيانات:"
 
 #: front/src/components/federation/FetchButton.vue:41
+#, fuzzy
 msgctxt "*/*/Error"
-msgid "An HTTP error occured while contacting the remote server"
+msgid "An HTTP error occurred while contacting the remote server"
 msgstr "حدث خطأ أثناء عملية حفظ التغييرات"
 
-#: front/src/components/auth/Login.vue:10
-msgctxt "Content/Login/Error message/List item"
-msgid ""
-"An unknown error happend, this can mean the server is down or cannot be "
-"reached"
-msgstr ""
-"طرأ هناك خطأ ما، ذلك قد يعني أن السيرفر غير متصل أو أنّ الإتصال به غير ممكن"
-
 #: front/src/components/library/ImportStatusModal.vue:145
+#, fuzzy
 msgctxt "Popup/Import/Error.Label"
-msgid "An unkwown error occured"
+msgid "An unknown error occurred"
 msgstr "حدث خطأ مجهول"
 
+#: front/src/components/About.vue:123
+msgctxt "*/*/*"
+msgid "Anonymous access"
+msgstr "وصول مجهول"
+
+#: front/src/components/moderation/ReportModal.vue:54
+msgctxt "Popup/Moderation/Error message"
+msgid "Anonymous reports are disabled, please sign-in to submit a report."
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:175
 #: src/components/auth/Settings.vue:225
 msgctxt "*/*/*/Noun"
@@ -591,15 +730,13 @@ msgstr "مُعرِّف التطبيق"
 
 #: front/src/components/auth/ApplicationEdit.vue:16
 msgctxt "Content/Application/Paragraph/"
-msgid ""
-"Application ID and secret are really sensitive values and must be treated "
-"like passwords. Do not share those with anyone else."
+msgid "Application ID and secret are really sensitive values and must be treated like passwords. Do not share those with anyone else."
 msgstr ""
 
 #: front/src/components/auth/ApplicationEdit.vue:25
 msgctxt "Content/Applications/Label"
 msgid "Application secret"
-msgstr ""
+msgstr "سر التطبيق"
 
 #: front/src/components/library/EditCard.vue:81
 #: front/src/components/notifications/NotificationRow.vue:66
@@ -611,7 +748,7 @@ msgstr "قبول"
 #: front/src/components/manage/library/EditsCardList.vue:21
 msgctxt "Content/*/*/Short"
 msgid "Approved"
-msgstr "قبول"
+msgstr "التي تم قبولها"
 
 #: front/src/components/library/EditCard.vue:21
 msgctxt "Content/Library/Card/Short"
@@ -623,29 +760,27 @@ msgctxt "Content/Login/Title"
 msgid "Are you sure you want to log out?"
 msgstr "أمتأكد من أنك تريد الخروج ؟"
 
+#: front/src/components/audio/SearchBar.vue:32
+#: src/components/audio/track/Table.vue:8
 #: front/src/components/manage/library/AlbumsTable.vue:40
 #: front/src/components/manage/library/TracksTable.vue:41
-msgctxt "*/*/*"
-msgid "Artist"
-msgstr "الفنان"
-
-#: front/src/components/audio/SearchBar.vue:25
-#: src/components/audio/track/Table.vue:8
 #: front/src/components/metadata/Search.vue:130
-#: front/src/views/admin/library/AlbumDetail.vue:108
-#: front/src/views/admin/library/TrackDetail.vue:118
-#: front/src/views/content/libraries/FilesTable.vue:56
+#: src/components/mixins/Report.vue:55
+#: front/src/views/admin/library/AlbumDetail.vue:114
+#: front/src/views/admin/library/TrackDetail.vue:124
+#: front/src/views/content/libraries/FilesTable.vue:56 src/entities.js:12
+#: front/src/components/mixins/Report.vue:56
 msgctxt "*/*/*/Noun"
 msgid "Artist"
 msgstr "الفنان"
 
-#: front/src/views/admin/library/ArtistDetail.vue:91
+#: front/src/views/admin/library/ArtistDetail.vue:96
 msgctxt "Content/Moderation/Title"
 msgid "Artist data"
 msgstr "إسم الفنان"
 
-#: front/src/components/mixins/Translations.vue:52
-#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/mixins/Translations.vue:62
+#: front/src/components/mixins/Translations.vue:63
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Artist name"
 msgstr "إسم الفنان"
@@ -655,36 +790,36 @@ msgctxt "*/Search/Input.Placeholder"
 msgid "Artist, album, track…"
 msgstr "فنان ، ألبوم ، مقطع موسيقي …"
 
+#: front/src/components/audio/Search.vue:10
+#: src/components/library/Artists.vue:117
+#: front/src/components/library/Library.vue:10
+#: front/src/components/library/TagDetail.vue:19
+#: front/src/components/manage/library/TagsTable.vue:42
 #: front/src/views/admin/library/ArtistsList.vue:24
 #: front/src/views/admin/library/Base.vue:8
-#: front/src/views/admin/library/LibraryDetail.vue:209
-msgctxt "*/*/*"
-msgid "Artists"
-msgstr "الفنانون"
-
-#: front/src/components/audio/Search.vue:10
-#: src/components/instance/Stats.vue:42
-#: front/src/components/library/Artists.vue:117
-#: src/components/library/Library.vue:10
-#: front/src/views/admin/moderation/AccountsDetail.vue:346
-#: front/src/views/admin/moderation/DomainsDetail.vue:254
+#: front/src/views/admin/library/LibraryDetail.vue:228
+#: front/src/views/admin/library/TagDetail.vue:123
+#: front/src/views/admin/moderation/AccountsDetail.vue:358
+#: front/src/views/admin/moderation/DomainsDetail.vue:291
 msgctxt "*/*/*/Noun"
 msgid "Artists"
 msgstr "الفنانون"
 
 #: front/src/components/favorites/List.vue:34
-#: src/components/library/Albums.vue:25
-#: front/src/components/library/Artists.vue:25
+#: src/components/library/Albums.vue:29
+#: front/src/components/library/Artists.vue:29
 #: src/components/library/Radios.vue:44
 #: front/src/components/manage/library/AlbumsTable.vue:21
 #: front/src/components/manage/library/ArtistsTable.vue:21
 #: front/src/components/manage/library/EditsCardList.vue:39
 #: front/src/components/manage/library/LibrariesTable.vue:30
+#: front/src/components/manage/library/TagsTable.vue:21
 #: front/src/components/manage/library/TracksTable.vue:21
 #: front/src/components/manage/library/UploadsTable.vue:40
 #: front/src/components/manage/moderation/AccountsTable.vue:21
-#: front/src/components/manage/moderation/DomainsTable.vue:19
+#: front/src/components/manage/moderation/DomainsTable.vue:27
 #: front/src/components/manage/users/UsersTable.vue:19
+#: front/src/views/admin/moderation/ReportsList.vue:44
 #: front/src/views/content/libraries/FilesTable.vue:31
 #: front/src/views/playlists/List.vue:27
 msgctxt "Content/Search/Dropdown"
@@ -696,18 +831,24 @@ msgctxt "Content/Signup/Button.Label/Verb"
 msgid "Ask for a password reset"
 msgstr "أطلب إعادة تعيين كلمة المرور"
 
-#: front/src/views/admin/library/AlbumDetail.vue:198
-#: front/src/views/admin/library/ArtistDetail.vue:187
-#: front/src/views/admin/library/LibraryDetail.vue:176
-#: front/src/views/admin/library/TrackDetail.vue:250
+#: front/src/components/manage/moderation/ReportCard.vue:72
+msgctxt "Content/Moderation/*"
+msgid "Assigned to"
+msgstr "نُسِب إلى"
+
+#: front/src/views/admin/library/AlbumDetail.vue:214
+#: front/src/views/admin/library/ArtistDetail.vue:202
+#: front/src/views/admin/library/LibraryDetail.vue:195
+#: front/src/views/admin/library/TagDetail.vue:113
+#: front/src/views/admin/library/TrackDetail.vue:266
 #: front/src/views/admin/library/UploadDetail.vue:191
-#: front/src/views/admin/moderation/AccountsDetail.vue:274
-#: front/src/views/admin/moderation/DomainsDetail.vue:202
+#: front/src/views/admin/moderation/AccountsDetail.vue:285
+#: front/src/views/admin/moderation/DomainsDetail.vue:239
 msgctxt "Content/Moderation/Title"
 msgid "Audio content"
-msgstr "محتوى مسموع"
+msgstr "المحتوى الصوتي"
 
-#: front/src/components/ShortcutsModal.vue:55
+#: front/src/components/ShortcutsModal.vue:92
 msgctxt "Popup/Keyboard shortcuts/Title"
 msgid "Audio player shortcuts"
 msgstr "اختصارات المُشغّل الصوتي"
@@ -750,9 +891,9 @@ msgid "Back to settings"
 msgstr "العودة إلى الإعدادات"
 
 #: front/src/components/library/TrackDetail.vue:48
-#: front/src/components/mixins/Translations.vue:55
+#: front/src/components/mixins/Translations.vue:67
 #: front/src/views/admin/library/UploadDetail.vue:227
-#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:68
 msgctxt "Content/Track/*/Noun"
 msgid "Bitrate"
 msgstr "معدل البت"
@@ -765,10 +906,7 @@ msgstr "حجب الكل"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:112
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Block everything from this account or domain. This will prevent any "
-"interaction with the entity, and purge related content (uploads, libraries, "
-"follows, etc.)"
+msgid "Block everything from this account or domain. This will prevent any interaction with the entity, and purge related content (uploads, libraries, follows, etc.)"
 msgstr ""
 
 #: front/src/components/Sidebar.vue:18 src/components/library/Library.vue:4
@@ -781,6 +919,12 @@ msgctxt "Sidebar/Library/List item.Link/Verb"
 msgid "Browse library"
 msgstr "تصفح المكتبة"
 
+#: front/src/components/Home.vue:132
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Browse public content"
+msgstr "تحديث محتوى الجدول"
+
 #: front/src/components/library/Albums.vue:4
 msgctxt "Content/Album/Title"
 msgid "Browsing albums"
@@ -811,39 +955,40 @@ msgctxt "Content/Album/Card"
 msgid "By %{ artist }"
 msgstr "حسب %{ artist }"
 
-#: front/src/views/content/remote/Card.vue:112
+#: front/src/views/content/remote/Card.vue:125
 msgctxt "Popup/Library/Paragraph"
 msgid "By unfollowing this library, you loose access to its content."
-msgstr ""
-"إن قمت بإلغاء متابعة هذه المكتبة فسوف لن تتمكن مِن الوصول إلى محتواها."
+msgstr "إن قمت بإلغاء متابعة هذه المكتبة فسوف لن تتمكن مِن الوصول إلى محتواها."
 
-#: front/src/views/admin/library/AlbumDetail.vue:214
-#: front/src/views/admin/library/ArtistDetail.vue:203
-#: front/src/views/admin/library/LibraryDetail.vue:192
-#: front/src/views/admin/library/TrackDetail.vue:266
+#: front/src/views/admin/library/AlbumDetail.vue:230
+#: front/src/views/admin/library/ArtistDetail.vue:218
+#: front/src/views/admin/library/LibraryDetail.vue:211
+#: front/src/views/admin/library/TrackDetail.vue:282
 #: front/src/views/admin/library/UploadDetail.vue:208
-#: front/src/views/admin/moderation/AccountsDetail.vue:290
-#: front/src/views/admin/moderation/DomainsDetail.vue:217
+#: front/src/views/admin/moderation/AccountsDetail.vue:301
+#: front/src/views/admin/moderation/DomainsDetail.vue:254
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Cached size"
 msgstr ""
 
 #: front/src/components/SetInstanceModal.vue:37
 #: front/src/components/common/DangerousButton.vue:17
-#: front/src/components/library/AlbumBase.vue:36
-#: front/src/components/library/ArtistBase.vue:47
-#: front/src/components/library/EditForm.vue:95
-#: front/src/components/library/TrackBase.vue:55
+#: front/src/components/library/AlbumBase.vue:37
+#: front/src/components/library/ArtistBase.vue:48
+#: front/src/components/library/EditForm.vue:107
+#: front/src/components/library/TrackBase.vue:53
 #: front/src/components/library/radios/Filter.vue:53
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:54
 #: front/src/components/moderation/FilterModal.vue:39
+#: front/src/components/moderation/ReportModal.vue:59
 #: front/src/components/playlists/PlaylistModal.vue:26
 #: front/src/components/playlists/PlaylistModal.vue:77
+#: front/src/views/playlists/Detail.vue:62
 msgctxt "*/*/Button.Label/Verb"
 msgid "Cancel"
 msgstr "إلغاء"
 
-#: front/src/views/content/remote/Card.vue:97
+#: front/src/views/content/remote/Card.vue:110
 #, fuzzy
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Cancel follow request"
@@ -859,6 +1004,14 @@ msgctxt "Content/Library/Help text"
 msgid "Cannot upload this file, ensure it is not too big"
 msgstr "لا يمكن تحميل هذا الملف، تحقق أنّ حجم الملف ليس ضخما"
 
+#: front/src/components/manage/moderation/ReportCard.vue:30
+#: front/src/components/mixins/Translations.vue:42
+#: front/src/components/moderation/ReportCategoryDropdown.vue:2
+#: front/src/components/mixins/Translations.vue:43
+msgctxt "*/*/*"
+msgid "Category"
+msgstr "الفئة"
+
 #: front/src/components/Footer.vue:21
 msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
 msgid "Change language"
@@ -874,6 +1027,11 @@ msgctxt "Content/Settings/Button.Label"
 msgid "Change password"
 msgstr "تغيير الكلمة السرية"
 
+#: front/src/components/Footer.vue:37
+msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
+msgid "Change theme"
+msgstr "تغيير المظهر"
+
 #: front/src/views/auth/PasswordResetConfirm.vue:62
 msgctxt "*/Signup/Title"
 msgid "Change your password"
@@ -891,28 +1049,22 @@ msgstr "تمت مزامنة التعديلات مع السيرفر"
 
 #: front/src/components/auth/Settings.vue:71
 msgctxt "Content/Settings/Paragraph'"
-msgid ""
-"Changing your password will also change your Subsonic API password if you "
-"have requested one."
-msgstr ""
-"سوف تتأثر كذلك الكلمة السرية لواجهة برمجة تطبيقات صاب سونيك Subsonic إن قمت "
-"بتعديل كلمتك السرية."
+msgid "Changing your password will also change your Subsonic API password if you have requested one."
+msgstr "سوف تتأثر كذلك الكلمة السرية لواجهة برمجة تطبيقات صاب سونيك Subsonic إن قمت بتعديل كلمتك السرية."
 
 #: front/src/components/auth/Settings.vue:98
 msgctxt "Popup/Settings/Paragraph"
 msgid "Changing your password will have the following consequences:"
 msgstr "سوف ينجرّ ما يلي عند تعديل كلمتك السرية:"
 
-#: front/src/components/Footer.vue:40
+#: front/src/components/Footer.vue:48
 msgctxt "Footer/*/List item.Link"
 msgid "Chat room"
 msgstr "قاعة المحادثة"
 
 #: front/src/components/auth/ApplicationForm.vue:24
 msgctxt "Content/Applications/Paragraph/"
-msgid ""
-"Checking the parent \"Read\" or \"Write\" scopes implies access to all the "
-"corresponding children scopes."
+msgid "Checking the parent \"Read\" or \"Write\" scopes implies access to all the corresponding children scopes."
 msgstr ""
 
 #: front/src/components/SetInstanceModal.vue:2
@@ -920,12 +1072,9 @@ msgctxt "Popup/Instance/Title"
 msgid "Choose your instance"
 msgstr "اختر خادومك"
 
-#: front/src/components/manage/users/InvitationForm.vue:37
-msgctxt "Content/Admin/Button.Label/Verb"
-msgid "Clear"
-msgstr "امسح"
-
 #: front/src/components/library/EditForm.vue:75
+#: front/src/components/library/EditForm.vue:88
+#: front/src/components/manage/users/InvitationForm.vue:37
 msgctxt "Content/Library/Button.Label"
 msgid "Clear"
 msgstr "امسح"
@@ -936,44 +1085,47 @@ msgctxt "*/Playlist/Button.Label/Verb"
 msgid "Clear playlist"
 msgstr "مسح قائمة المَقاطع الموسيقية"
 
-#: front/src/components/audio/Player.vue:642
+#: front/src/components/ShortcutsModal.vue:144
+#, fuzzy
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Clear queue"
+msgstr "مسح قائمة الانتظار الخاصة بك"
+
+#: front/src/components/audio/Player.vue:668
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Clear your queue"
 msgstr "مسح قائمة الانتظار الخاصة بك"
 
-#: front/src/components/Home.vue:44
-msgctxt "Content/Home/List item/Verb"
-msgid "Click once, listen for hours using built-in radios"
-msgstr "إضغط مرة واحدة و استمع لساعات مِن الموسيقى عبر الإذاعات المُدمَجة"
-
 #: front/src/components/mixins/Translations.vue:21
 #: front/src/components/mixins/Translations.vue:22
 msgctxt "Content/Library/Link.Title"
-msgid ""
-"Click to display more information about the import process for this upload"
-msgstr ""
+msgid "Click to display more information about the import process for this upload"
+msgstr "اضغط لعرض المزيد من المعلومات حول عملية استيراد هذا التحميل"
 
 #: front/src/components/library/FileUpload.vue:82
 msgctxt "Content/Library/Paragraph/Call to action"
 msgid "Click to select files to upload or drag and drop files or directories"
 msgstr "اضغط لاختيار ملفات أو قم بسحب وإلقاء ملفات أو مجلدات"
 
+#: front/src/components/ShortcutsModal.vue:38
 #: front/src/components/federation/FetchButton.vue:85
 #: front/src/components/library/ImportStatusModal.vue:79
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:34
 msgctxt "*/*/Button.Label/Verb"
 msgid "Close"
 msgstr "إغلاق"
 
-#: front/src/components/ShortcutsModal.vue:20
-msgctxt "Popup/Keyboard shortcuts/Button.Label/Verb"
-msgid "Close"
-msgstr "إغلاق"
-
 #: front/src/components/federation/FetchButton.vue:88
 msgctxt "*/*/Button.Label/Verb"
 msgid "Close and reload page"
 msgstr "إغلاق وإعادة إنعاش الصفحة"
 
+#: front/src/components/About.vue:94
+#, fuzzy
+msgctxt "*/*/*/State of registrations"
+msgid "Closed"
+msgstr "إغلاق"
+
 #: front/src/components/manage/users/InvitationForm.vue:26
 #: front/src/components/manage/users/InvitationsTable.vue:42
 msgctxt "Content/Admin/Table.Label/Noun"
@@ -981,8 +1133,9 @@ msgid "Code"
 msgstr "الرمز"
 
 #: front/src/components/audio/album/Card.vue:41
-#: front/src/components/audio/artist/Card.vue:33
-msgctxt "Content/*/Card.Link/Verb"
+#: front/src/components/common/CollapseLink.vue:3
+#, fuzzy
+msgctxt "*/*/Button,Label"
 msgid "Collapse"
 msgstr "تصغير"
 
@@ -1006,26 +1159,26 @@ msgctxt "Content/Signup/Form.Label"
 msgid "Confirmation code"
 msgstr "رمز التأكيد"
 
+#: front/src/components/About.vue:67 src/components/Home.vue:65
+msgctxt "Content/Home/Header/Name"
+msgid "Contact"
+msgstr "للإتصال"
+
 #: front/src/components/moderation/FilterModal.vue:90
 msgctxt "*/Moderation/Message"
 msgid "Content filter successfully added"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:96
-#: front/src/components/mixins/Translations.vue:97
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Content filters"
-msgstr "عوامل تصفية المحتوى"
-
 #: front/src/components/auth/Settings.vue:116
+#: front/src/components/mixins/Translations.vue:108
+#: front/src/components/mixins/Translations.vue:109
 msgctxt "Content/Settings/Title/Noun"
 msgid "Content filters"
 msgstr "عوامل تصفية المحتوى"
 
 #: front/src/components/auth/Settings.vue:119
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"Content filters help you hide content you don't want to see on the service."
+msgid "Content filters help you hide content you don't want to see on the service."
 msgstr ""
 
 #: front/src/components/common/ActionTable.vue:8
@@ -1033,13 +1186,20 @@ msgctxt "Content/*/Button.Help text.Paragraph"
 msgid "Content have been updated, click refresh to see up-to-date content"
 msgstr ""
 
-#: front/src/components/Footer.vue:48
+#: front/src/components/About.vue:46
+#, fuzzy
+msgctxt "Content/About/Header"
+msgid "Contents"
+msgstr "عوامل تصفية المحتوى"
+
+#: front/src/components/Footer.vue:56
 msgctxt "Footer/*/List item.Link"
 msgid "Contribute"
 msgstr "المساهمة"
 
-#: front/src/components/audio/EmbedWizard.vue:19
+#: front/src/components/audio/EmbedWizard.vue:29
 #: front/src/components/common/CopyInput.vue:8
+#: front/src/components/forms/PasswordInput.vue:43
 msgctxt "*/*/Button.Label/Short, Verb"
 msgid "Copy"
 msgstr "نسخ"
@@ -1054,14 +1214,14 @@ msgctxt "Content/Auth/Paragraph"
 msgid "Copy-paste the following code in the application:"
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:21
+#: front/src/components/audio/EmbedWizard.vue:31
 msgctxt "Popup/Embed/Paragraph"
 msgid "Copy/paste this code in your website HTML"
 msgstr "انسخ والصق هذا الرمز في نص HTML على موقعك"
 
 #: front/src/components/library/TrackDetail.vue:10
-#: front/src/views/admin/library/TrackDetail.vue:153
-msgctxt "Content/Track/Table.Label/Noun"
+#: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:77
+msgctxt "Content/Track/*/Noun"
 msgid "Copyright"
 msgstr "الحقوق"
 
@@ -1075,29 +1235,20 @@ msgctxt "Content/Library/Error message.Title"
 msgid "Could not fetch remote library"
 msgstr "تعذر جلب المكتبة البُعدية"
 
-#: front/src/components/Home.vue:80
-msgctxt "Content/Home/List item"
-msgid "Covers, lyrics, our goal is to have them all ;)"
-msgstr "أغلِفة الألبومات و كلمات الأغاني، هدفنا هو دمجها جميعا ;)"
-
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:58
 msgctxt "Content/Moderation/Card.Button.Label/Verb"
 msgid "Create"
 msgstr "إنشاء"
 
-#: front/src/components/auth/Signup.vue:4
+#: front/src/views/auth/Signup.vue:4
 msgctxt "Content/Signup/Title"
 msgid "Create a funkwhale account"
 msgstr "أنشئ حسابا على فانك وايل"
 
-#: front/src/components/auth/Settings.vue:220
-msgctxt "Content/Settings/Button.Label"
-msgid "Create a new application"
-msgstr "أنشئ تطبيقا جديدا"
-
 #: front/src/components/auth/ApplicationNew.vue:8
 #: front/src/components/auth/ApplicationNew.vue:41
-msgctxt "Content/Applications/Title"
+#: front/src/components/auth/Settings.vue:220
+msgctxt "Content/Settings/Button.Label"
 msgid "Create a new application"
 msgstr "أنشئ تطبيقا جديدا"
 
@@ -1111,7 +1262,7 @@ msgctxt "Popup/Playlist/Title/Verb"
 msgid "Create a new playlist"
 msgstr "أنشئ قائمة مَقاطِع موسيقية جديدة"
 
-#: front/src/components/Sidebar.vue:57 src/components/auth/Login.vue:17
+#: front/src/components/Sidebar.vue:57 src/components/auth/LoginForm.vue:15
 msgctxt "*/Signup/Link/Verb"
 msgid "Create an account"
 msgstr "أنشئ حسابا"
@@ -1126,7 +1277,7 @@ msgctxt "Content/Library/Button.Label/Verb"
 msgid "Create library"
 msgstr "أنشئ مكتبة"
 
-#: front/src/components/auth/Signup.vue:53
+#: front/src/components/auth/SignupForm.vue:49
 msgctxt "Content/Signup/Button.Label"
 msgid "Create my account"
 msgstr "أنشئ حسابي"
@@ -1151,11 +1302,13 @@ msgstr "أنشئ إذاعتك"
 #: front/src/components/manage/library/AlbumsTable.vue:44
 #: front/src/components/manage/library/ArtistsTable.vue:43
 #: front/src/components/manage/library/LibrariesTable.vue:54
+#: front/src/components/manage/library/TagsTable.vue:45
 #: front/src/components/manage/library/TracksTable.vue:44
 #: front/src/components/manage/library/UploadsTable.vue:66
+#: front/src/components/manage/moderation/ReportCard.vue:43
 #: front/src/components/manage/users/InvitationsTable.vue:40
-#: front/src/components/mixins/Translations.vue:43
-#: front/src/components/mixins/Translations.vue:44
+#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/mixins/Translations.vue:54
 msgctxt "Content/*/*/Noun"
 msgid "Creation date"
 msgstr "تاريخ الإنشاء"
@@ -1165,6 +1318,12 @@ msgctxt "Content/Settings/Title/Noun"
 msgid "Current avatar"
 msgstr "الصورة الرمزية الحالية"
 
+#: front/src/components/admin/SettingsGroup.vue:67
+#, fuzzy
+msgctxt "Content/Settings/Title/Noun"
+msgid "Current image"
+msgstr "الاستعمال الحالي"
+
 #: front/src/views/content/libraries/DetailArea.vue:4
 msgctxt "Content/Library/Title"
 msgid "Current library"
@@ -1180,6 +1339,11 @@ msgctxt "Content/Library/Title"
 msgid "Current usage"
 msgstr "الاستعمال الحالي"
 
+#: front/src/components/Footer.vue:94
+msgctxt "Footer/Settings/Dropdown.Label/Theme name"
+msgid "Dark"
+msgstr ""
+
 #: front/src/components/federation/FetchButton.vue:53
 msgctxt "*/*/Error"
 msgid "Data returned by the remote server had invalid or missing attributes"
@@ -1200,7 +1364,7 @@ msgctxt "Popup/Import/Table.Label/Noun"
 msgid "Debug information"
 msgstr "معلومات عن المَقطَع"
 
-#: front/src/components/ShortcutsModal.vue:75
+#: front/src/components/ShortcutsModal.vue:128
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Decrease volume"
 msgstr "تخفيض الصوت"
@@ -1212,23 +1376,29 @@ msgstr "تخفيض الصوت"
 #: front/src/components/manage/library/AlbumsTable.vue:188
 #: front/src/components/manage/library/ArtistsTable.vue:178
 #: front/src/components/manage/library/LibrariesTable.vue:205
+#: front/src/components/manage/library/TagsTable.vue:179
 #: front/src/components/manage/library/TracksTable.vue:188
 #: front/src/components/manage/library/UploadsTable.vue:255
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:61
+#: front/src/components/manage/moderation/NotesThread.vue:24
+#: front/src/components/manage/moderation/NotesThread.vue:29
+#: front/src/components/manage/moderation/ReportCard.vue:360
 #: front/src/components/manage/users/InvitationsTable.vue:167
-#: front/src/views/admin/library/AlbumDetail.vue:72
-#: front/src/views/admin/library/AlbumDetail.vue:77
-#: front/src/views/admin/library/ArtistDetail.vue:71
+#: front/src/views/admin/library/AlbumDetail.vue:78
+#: front/src/views/admin/library/AlbumDetail.vue:83
 #: front/src/views/admin/library/ArtistDetail.vue:76
+#: front/src/views/admin/library/ArtistDetail.vue:81
 #: front/src/views/admin/library/LibraryDetail.vue:58
 #: front/src/views/admin/library/LibraryDetail.vue:63
-#: front/src/views/admin/library/TrackDetail.vue:71
-#: front/src/views/admin/library/TrackDetail.vue:76
+#: front/src/views/admin/library/TagDetail.vue:41
+#: front/src/views/admin/library/TagDetail.vue:46
+#: front/src/views/admin/library/TrackDetail.vue:77
+#: front/src/views/admin/library/TrackDetail.vue:82
 #: front/src/views/admin/library/UploadDetail.vue:65
 #: front/src/views/admin/library/UploadDetail.vue:70
 #: front/src/views/content/libraries/FilesTable.vue:222
 #: front/src/views/content/libraries/Form.vue:29
-#: src/views/playlists/Detail.vue:34
+#: src/views/playlists/Detail.vue:42
 msgctxt "*/*/*/Verb"
 msgid "Delete"
 msgstr "حذف"
@@ -1253,7 +1423,20 @@ msgctxt "Popup/Moderation/Button.Label/Verb"
 msgid "Delete moderation rule"
 msgstr "حذف قاعدة الإشراف"
 
-#: front/src/views/playlists/Detail.vue:39
+#: front/src/components/auth/Settings.vue:274
+#: src/components/auth/Settings.vue:302
+#, fuzzy
+msgctxt "*/*/Button.Label"
+msgid "Delete my account"
+msgstr "أنشئ حسابي"
+
+#: front/src/components/auth/Settings.vue:297
+#, fuzzy
+msgctxt "*/*/Button.Label"
+msgid "Delete my account…"
+msgstr "أنشئ حسابي"
+
+#: front/src/views/playlists/Detail.vue:47
 msgctxt "Popup/Playlist/Button.Label/Verb"
 msgid "Delete playlist"
 msgstr "حذف قائمة الأغاني"
@@ -1263,13 +1446,23 @@ msgctxt "Popup/Radio/Button.Label/Verb"
 msgid "Delete radio"
 msgstr "حذف الإذاعة"
 
-#: front/src/views/admin/library/AlbumDetail.vue:73
-#: front/src/views/admin/library/TrackDetail.vue:72
+#: front/src/components/manage/moderation/ReportCard.vue:357
+msgctxt "Content/Moderation/Button/Verb"
+msgid "Delete reported object"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:358
+msgctxt "Content/Moderation/Popup/Header"
+msgid "Delete reported object?"
+msgstr ""
+
+#: front/src/views/admin/library/AlbumDetail.vue:79
+#: front/src/views/admin/library/TrackDetail.vue:78
 msgctxt "Popup/Library/Title"
 msgid "Delete this album?"
 msgstr "أتريد حذف هذه المكتبة؟"
 
-#: front/src/views/admin/library/ArtistDetail.vue:72
+#: front/src/views/admin/library/ArtistDetail.vue:77
 msgctxt "Popup/Library/Title"
 msgid "Delete this artist?"
 msgstr "أتريد حذف هذه المكتبة؟"
@@ -1285,57 +1478,70 @@ msgctxt "Popup/Moderation/Title"
 msgid "Delete this moderation rule?"
 msgstr "أتريد حذف قاعدة الإشراف هذه؟"
 
+#: front/src/components/manage/moderation/NotesThread.vue:25
+#, fuzzy
+msgctxt "Popup/Moderation/Title"
+msgid "Delete this note?"
+msgstr "أتريد حذف هذه المكتبة؟"
+
 #: front/src/components/library/EditCard.vue:94
 msgctxt "Popup/Library/Title"
 msgid "Delete this suggestion?"
 msgstr "أتريد حذف قاعدة الإشراف هذه؟"
 
+#: front/src/views/admin/library/TagDetail.vue:42
+#, fuzzy
+msgctxt "Popup/Library/Title"
+msgid "Delete this tag?"
+msgstr "أتريد حذف هذه المكتبة؟"
+
 #: front/src/views/admin/library/UploadDetail.vue:66
 msgctxt "Popup/Library/Title"
 msgid "Delete this upload?"
 msgstr "أتريد حذف هذه المكتبة؟"
 
 #: front/src/components/favorites/List.vue:35
-#: src/components/library/Albums.vue:26
-#: front/src/components/library/Artists.vue:26
+#: src/components/library/Albums.vue:30
+#: front/src/components/library/Artists.vue:30
 #: src/components/library/Radios.vue:47
 #: front/src/components/manage/library/AlbumsTable.vue:22
 #: front/src/components/manage/library/ArtistsTable.vue:22
 #: front/src/components/manage/library/EditsCardList.vue:40
 #: front/src/components/manage/library/LibrariesTable.vue:31
+#: front/src/components/manage/library/TagsTable.vue:22
 #: front/src/components/manage/library/TracksTable.vue:22
 #: front/src/components/manage/library/UploadsTable.vue:41
 #: front/src/components/manage/moderation/AccountsTable.vue:22
-#: front/src/components/manage/moderation/DomainsTable.vue:20
+#: front/src/components/manage/moderation/DomainsTable.vue:28
 #: front/src/components/manage/users/UsersTable.vue:20
+#: front/src/views/admin/moderation/ReportsList.vue:45
 #: front/src/views/content/libraries/FilesTable.vue:32
 #: front/src/views/playlists/List.vue:28
 msgctxt "Content/Search/Dropdown"
 msgid "Descending"
 msgstr "تنازليًا"
 
-#: front/src/views/admin/library/LibraryDetail.vue:123
-msgctxt "*/*/*/Noun"
-msgid "Description"
-msgstr "الوصف"
+#: front/src/components/manage/moderation/NoteForm.vue:37
+msgctxt "Content/Moderation/Placeholder"
+msgid "Describe what actions have been taken, or any other related updates…"
+msgstr ""
 
 #: front/src/components/library/radios/Builder.vue:25
+#: front/src/views/admin/library/LibraryDetail.vue:132
 #: front/src/views/content/libraries/Form.vue:14
-msgctxt "Content/*/Input.Label/Noun"
+msgctxt "*/*/*/Noun"
 msgid "Description"
 msgstr "الوصف"
 
 #: front/src/views/content/libraries/Card.vue:48
-#: src/views/content/remote/Card.vue:54
+#: src/views/content/remote/Card.vue:67
 msgctxt "Content/Library/Card.Button.Label/Noun"
 msgid "Details"
 msgstr "التفاصيل"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:491
+#: front/src/views/admin/moderation/AccountsDetail.vue:511
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Determine how much content the user can upload. Leave empty to use the "
-"default value of the instance."
+msgid "Determine how much content the user can upload. Leave empty to use the default value of the instance."
 msgstr ""
 
 #: front/src/components/mixins/Translations.vue:8
@@ -1345,38 +1551,51 @@ msgid "Determine the visibility level of your activity"
 msgstr ""
 
 #: front/src/components/auth/Settings.vue:104
-#: front/src/components/auth/SubsonicTokenForm.vue:51
+#: front/src/components/auth/SubsonicTokenForm.vue:56
 msgctxt "Popup/Settings/Button.Label"
 msgid "Disable access"
 msgstr "تعطيل النفاذ"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:48
+#: front/src/components/auth/SubsonicTokenForm.vue:53
 msgctxt "Content/Settings/Button.Label/Verb"
 msgid "Disable Subsonic access"
 msgstr "تعطيل النفاذ عبر صاب سونيك Subsonic"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:49
+#: front/src/components/auth/SubsonicTokenForm.vue:54
 msgctxt "Popup/Settings/Title"
 msgid "Disable Subsonic API access?"
 msgstr "تعطيل النفاذ عبر واجهة برمجة التطبيقات صاب سونيك ؟"
 
+#: front/src/components/About.vue:118 src/components/About.vue:131
+#: front/src/components/About.vue:144
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:18
 #: front/src/views/admin/moderation/AccountsDetail.vue:157
 #: front/src/views/admin/moderation/AccountsDetail.vue:161
-msgctxt "*/*/*"
+#, fuzzy
+msgctxt "*/*/*/State of feature"
 msgid "Disabled"
 msgstr "معطل"
 
-#: front/src/views/admin/library/TrackDetail.vue:145
+#: front/src/views/admin/library/TrackDetail.vue:151
 msgctxt "*/*/*/Noun"
 msgid "Disc number"
 msgstr "القرص رقم"
 
+#: front/src/components/Home.vue:157
+msgctxt "Content/Home/Link"
+msgid "Discover everything you need to know about Funkwhale and its features"
+msgstr ""
+
 #: front/src/components/auth/SubsonicTokenForm.vue:13
 msgctxt "Content/Settings/Link"
 msgid "Discover how to use Funkwhale from other apps"
 msgstr "إكتشف كيفية استخدام فانك وايل Funkwhale عبر التطبيقات الأخرى"
 
+#: front/src/views/Notifications.vue:45
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Discover other ways to help"
+msgstr ""
+
 #: front/src/views/admin/moderation/AccountsDetail.vue:132
 msgctxt "'Content/*/*/Noun'"
 msgid "Display name"
@@ -1389,11 +1608,15 @@ msgstr "إعرضها للعامة"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:122
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Do not download any media file (audio, album cover, account avatar…) from "
-"this account or domain. This will purge existing content as well."
+msgid "Do not download any media file (audio, album cover, account avatar…) from this account or domain. This will purge existing content as well."
 msgstr ""
 
+#: front/src/views/Notifications.vue:36
+#, fuzzy
+msgctxt "Content/Notifications/Header"
+msgid "Do you like Funkwhale?"
+msgstr "عن فانك وايل Funkwhale"
+
 #: front/src/components/playlists/Editor.vue:51
 msgctxt "Popup/Playlist/Title"
 msgid "Do you want to clear the playlist \"%{ playlist }\"?"
@@ -1404,7 +1627,7 @@ msgctxt "Modal/*/Title"
 msgid "Do you want to confirm this action?"
 msgstr "هل تؤكّد هذا الإجراء ؟"
 
-#: front/src/views/playlists/Detail.vue:35
+#: front/src/views/playlists/Detail.vue:43
 msgctxt "Popup/Playlist/Title/Call to action"
 msgid "Do you want to delete the playlist \"%{ playlist }\"?"
 msgstr "متأكّد مِن أنك تريد حذف قائمة المَقاطِع الموسيقية \"%{ playlist }\" ؟"
@@ -1414,6 +1637,12 @@ msgctxt "Popup/Radio/Title"
 msgid "Do you want to delete the radio \"%{ radio }\"?"
 msgstr "أتريد حقا حذف إذاعة \"%{ radio }\" ؟"
 
+#: front/src/components/auth/Settings.vue:298
+#, fuzzy
+msgctxt "Popup/Settings/Title"
+msgid "Do you want to delete your account?"
+msgstr "هل تريد استرجاع قائمة الإنتظار السابقة للأغاني ؟"
+
 #: front/src/components/moderation/FilterModal.vue:3
 msgctxt "Popup/Moderation/Title/Verb"
 msgid "Do you want to hide content from artist \"%{ name }\"?"
@@ -1430,7 +1659,13 @@ msgstr[3] ""
 msgstr[4] ""
 msgstr[5] ""
 
-#: front/src/components/Sidebar.vue:118
+#: front/src/components/moderation/ReportModal.vue:3
+#, fuzzy
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Do you want to report this object?"
+msgstr "هل تؤكّد هذا الإجراء ؟"
+
+#: front/src/components/Sidebar.vue:122
 msgctxt "Sidebar/Queue/Message"
 msgid "Do you want to restore your previous queue?"
 msgstr "هل تريد استرجاع قائمة الإنتظار السابقة للأغاني ؟"
@@ -1446,26 +1681,33 @@ msgstr "الدليل"
 #: front/src/components/manage/library/TracksTable.vue:42
 #: front/src/components/manage/library/UploadsTable.vue:62
 #: front/src/components/manage/moderation/AccountsTable.vue:40
-#: front/src/components/mixins/Translations.vue:60
-#: front/src/views/admin/library/AlbumDetail.vue:118
-#: front/src/views/admin/library/ArtistDetail.vue:107
-#: front/src/views/admin/library/LibraryDetail.vue:114
-#: front/src/views/admin/library/TrackDetail.vue:170
+#: front/src/components/manage/moderation/ReportCard.vue:169
+#: front/src/components/manage/moderation/ReportCard.vue:179
+#: front/src/components/mixins/Translations.vue:72
+#: front/src/views/admin/library/AlbumDetail.vue:124
+#: front/src/views/admin/library/ArtistDetail.vue:112
+#: front/src/views/admin/library/LibraryDetail.vue:123
+#: front/src/views/admin/library/TrackDetail.vue:176
 #: front/src/views/admin/library/UploadDetail.vue:121
 #: front/src/views/admin/moderation/AccountsDetail.vue:123
-#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/mixins/Translations.vue:73
 msgctxt "Content/Moderation/*/Noun"
 msgid "Domain"
 msgstr "النطاق"
 
-#: front/src/views/admin/moderation/Base.vue:5
+#: front/src/views/admin/moderation/Base.vue:8
 #: front/src/views/admin/moderation/DomainsList.vue:3
-#: front/src/views/admin/moderation/DomainsList.vue:48
+#: front/src/views/admin/moderation/DomainsList.vue:54
 msgctxt "*/Moderation/*/Noun"
 msgid "Domains"
 msgstr "النطاقات"
 
-#: front/src/components/library/TrackBase.vue:39
+#: front/src/views/Notifications.vue:42
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Donate"
+msgstr ""
+
+#: front/src/components/library/TrackBase.vue:37
 #: front/src/views/admin/library/UploadDetail.vue:58
 msgctxt "Content/Track/Link/Verb"
 msgid "Download"
@@ -1478,10 +1720,10 @@ msgstr "اسحب والقي أعمدةً قصد ترتيب المقاطِع عل
 
 #: front/src/components/audio/track/Table.vue:10
 #: front/src/components/library/TrackDetail.vue:30
-#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:68
 #: front/src/views/admin/library/UploadDetail.vue:238
 #: front/src/views/content/libraries/FilesTable.vue:60
-#: front/src/components/mixins/Translations.vue:57
+#: front/src/components/mixins/Translations.vue:69
 msgctxt "Content/*/*"
 msgid "Duration"
 msgstr "المدّة"
@@ -1491,41 +1733,27 @@ msgctxt "Content/Signup/Message"
 msgid "E-mail address confirmed"
 msgstr "عنوان البريد الإلكتروني مؤكَّد"
 
-#: front/src/components/Home.vue:88
-msgctxt "Content/Home/Title"
-msgid "Easy to use"
-msgstr "سهل للإستخدام"
-
-#: front/src/components/library/AlbumBase.vue:68
-#: front/src/components/library/ArtistBase.vue:79
-#: front/src/components/library/TrackBase.vue:87
+#: front/src/components/auth/Settings.vue:246
+#: src/components/library/AlbumBase.vue:73
+#: front/src/components/library/ArtistBase.vue:84
+#: front/src/components/library/TrackBase.vue:89
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:45
 #: front/src/components/radios/Card.vue:23
-#: src/views/admin/library/AlbumDetail.vue:65
-#: front/src/views/admin/library/ArtistDetail.vue:64
-#: front/src/views/admin/library/TrackDetail.vue:64
+#: src/views/admin/library/AlbumDetail.vue:71
+#: front/src/views/admin/library/ArtistDetail.vue:69
+#: front/src/views/admin/library/TrackDetail.vue:70
 #: front/src/views/content/libraries/Detail.vue:9
 #: src/views/playlists/Detail.vue:31
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Edit"
 msgstr "تعديل"
 
-#: front/src/components/auth/Settings.vue:246
-msgctxt "Content/Settings/Button.Label"
-msgid "Edit"
-msgstr "تعديل"
-
 #: front/src/components/auth/ApplicationEdit.vue:30
 #: front/src/components/auth/ApplicationEdit.vue:75
 msgctxt "Content/Applications/Title"
 msgid "Edit application"
 msgstr "حدث خطأ أثناء تطبيق الإجراء"
 
-#: front/src/components/About.vue:22
-msgctxt "Content/Settings/Button.Label/Verb"
-msgid "Edit instance info"
-msgstr "تعديل معلومات مثيل الخادوم"
-
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:3
 msgctxt "Content/Moderation/Card.Title/Verb"
 msgid "Edit moderation rule"
@@ -1546,23 +1774,20 @@ msgctxt "Content/*/Title"
 msgid "Edit this track"
 msgstr "شغِّل هذا المَقطَع"
 
-#: front/src/views/admin/library/AlbumDetail.vue:182
-#: front/src/views/admin/library/ArtistDetail.vue:171
+#: front/src/components/mixins/Translations.vue:116
+#: front/src/views/admin/library/AlbumDetail.vue:198
+#: front/src/views/admin/library/ArtistDetail.vue:186
 #: front/src/views/admin/library/Base.vue:5
 #: src/views/admin/library/EditsList.vue:24
-#: front/src/views/admin/library/TrackDetail.vue:234
+#: front/src/views/admin/library/TrackDetail.vue:250
+#: front/src/components/mixins/Translations.vue:117
 msgctxt "*/Admin/*/Noun"
 msgid "Edits"
 msgstr "تعديل"
 
-#: front/src/components/mixins/Translations.vue:104
-#: front/src/components/mixins/Translations.vue:105
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Edits"
-msgstr "تعديل"
-
-#: front/src/components/auth/Signup.vue:30
+#: front/src/components/auth/SignupForm.vue:26
 #: front/src/components/manage/users/UsersTable.vue:38
+#: front/src/components/moderation/ReportModal.vue:31
 msgctxt "Content/*/*/Noun"
 msgid "Email"
 msgstr "البريد الإلكتروني"
@@ -1572,50 +1797,60 @@ msgctxt "Content/*/*"
 msgid "Email address"
 msgstr "عنوان البريد الإلكتروني"
 
-#: front/src/components/library/AlbumBase.vue:53
-#: front/src/components/library/ArtistBase.vue:64
-#: front/src/components/library/TrackBase.vue:72
+#: front/src/components/library/AlbumBase.vue:54
+#: front/src/components/library/ArtistBase.vue:65
+#: front/src/components/library/TrackBase.vue:70
+#: src/views/playlists/Detail.vue:38
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Embed"
 msgstr "ادمج"
 
-#: front/src/components/audio/EmbedWizard.vue:20
+#: front/src/components/audio/EmbedWizard.vue:30
 msgctxt "Popup/Embed/Input.Label/Noun"
 msgid "Embed code"
 msgstr "رمز الإدماج"
 
-#: front/src/components/library/AlbumBase.vue:26
+#: front/src/components/library/AlbumBase.vue:27
 msgctxt "Popup/Album/Title/Verb"
 msgid "Embed this album on your website"
 msgstr "ادرج هذا الألبوم على موقعك"
 
-#: front/src/components/library/ArtistBase.vue:37
+#: front/src/components/library/ArtistBase.vue:38
 msgctxt "Popup/Artist/Title/Verb"
 msgid "Embed this artist work on your website"
 msgstr "ادمج هذا المَقطع على موقعك"
 
-#: front/src/components/library/TrackBase.vue:45
+#: front/src/views/playlists/Detail.vue:52
+#, fuzzy
+msgctxt "Popup/Album/Title/Verb"
+msgid "Embed this playlist on your website"
+msgstr "ادرج هذا الألبوم على موقعك"
+
+#: front/src/components/library/TrackBase.vue:43
 msgctxt "Popup/Track/Title"
 msgid "Embed this track on your website"
 msgstr "ادمج هذا المَقطع على موقعك"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:259
-#: front/src/views/admin/moderation/DomainsDetail.vue:187
+#: front/src/views/admin/moderation/AccountsDetail.vue:260
+#: front/src/views/admin/moderation/DomainsDetail.vue:224
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Emitted library follows"
 msgstr "أدخِل عنوان رابط لمكتبة ما"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:243
-#: front/src/views/admin/moderation/DomainsDetail.vue:171
+#: front/src/views/admin/moderation/AccountsDetail.vue:244
+#: front/src/views/admin/moderation/DomainsDetail.vue:208
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Emitted messages"
 msgstr "الرسائل المُرسَلة"
 
+#: front/src/components/About.vue:114 src/components/About.vue:127
+#: front/src/components/About.vue:140
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:8
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:17
 #: front/src/views/admin/moderation/AccountsDetail.vue:156
 #: front/src/views/admin/moderation/AccountsDetail.vue:160
-msgctxt "*/*/*"
+#, fuzzy
+msgctxt "*/*/*/State of feature"
 msgid "Enabled"
 msgstr "تم تنشيطه"
 
@@ -1634,9 +1869,9 @@ msgctxt "Content/Search/Input.Placeholder"
 msgid "Enter a radio name…"
 msgstr "أدخِل إسم إذاعة…"
 
-#: front/src/components/library/Albums.vue:119
+#: front/src/components/library/Albums.vue:128
 msgctxt "Content/Search/Input.Placeholder"
-msgid "Enter album title..."
+msgid "Enter album title…"
 msgstr "أدخل اسم ألبوم ما…"
 
 #: front/src/components/library/Artists.vue:116
@@ -1650,16 +1885,18 @@ msgid "Enter playlist name…"
 msgstr "أدخِل إسم قائمة مَقاطِعٍ موسيقية…"
 
 #: front/src/views/auth/PasswordReset.vue:54
+#, fuzzy
 msgctxt "Content/Signup/Input.Placeholder"
-msgid "Enter the email address binded to your account"
+msgid "Enter the email address linked to your account"
 msgstr "ادخل عنوان البريد الإلكتروني المُقترن بحسابك"
 
-#: front/src/components/auth/Signup.vue:103
+#: front/src/components/auth/SignupForm.vue:96
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your email"
 msgstr "أدخِل عنوان بريدك الإلكتروني"
 
-#: front/src/components/auth/Signup.vue:98 src/components/auth/Signup.vue:100
+#: front/src/components/auth/SignupForm.vue:91
+#: src/components/auth/SignupForm.vue:93
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your invitation code (case insensitive)"
 msgstr "أدخِل رمز الدعوة"
@@ -1669,12 +1906,12 @@ msgctxt "Content/Library/Input.Placeholder/Verb"
 msgid "Enter your search query…"
 msgstr "أدخِل طلب بحثِك…"
 
-#: front/src/components/auth/Signup.vue:102
+#: front/src/components/auth/SignupForm.vue:95
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your username"
 msgstr "أدخِل إسم المستخدِم"
 
-#: front/src/components/auth/Login.vue:83
+#: front/src/components/auth/LoginForm.vue:81
 msgctxt "Content/Login/Input.Placeholder"
 msgid "Enter your username or email"
 msgstr "أدخل اسم المستخدِم أو البريد الإلكتروني"
@@ -1691,7 +1928,7 @@ msgctxt "Popup/Import/Table.Label/Noun"
 msgid "Error detail"
 msgstr "سِجِل الأخطاء"
 
-#: front/src/views/admin/Settings.vue:87
+#: front/src/views/admin/Settings.vue:89
 msgctxt "Content/Admin/Menu"
 msgid "Error reporting"
 msgstr "سِجِل الأخطاء"
@@ -1747,16 +1984,12 @@ msgctxt "Popup/Moderation/Error message"
 msgid "Error while fetching application data"
 msgstr "حدث خطأ أثناء إنشاء الدعوة"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:118
+#: front/src/views/admin/moderation/DomainsDetail.vue:155
 msgctxt "Content/Moderation/Table"
 msgid "Error while fetching node info"
 msgstr "حدث خطأ أثناء عملية جلب معلومات العقدة"
 
 #: front/src/components/admin/SettingsGroup.vue:5
-msgctxt "Content/Settings/Error message.Title"
-msgid "Error while saving settings"
-msgstr "حدث خطأ أثناء حفظ الإعدادات"
-
 #: front/src/components/federation/FetchButton.vue:73
 msgctxt "Content/*/Error message.Title"
 msgid "Error while saving settings"
@@ -1767,6 +2000,18 @@ msgctxt "Content/Library/Error message.Title"
 msgid "Error while submitting edit"
 msgstr "حدث خطأ أثناء حفظ الإعدادات"
 
+#: front/src/components/manage/moderation/NoteForm.vue:3
+#, fuzzy
+msgctxt "Content/Moderation/Error message.Title"
+msgid "Error while submitting note"
+msgstr "حدث خطأ أثناء حفظ الإعدادات"
+
+#: front/src/components/moderation/ReportModal.vue:11
+#, fuzzy
+msgctxt "Popup/Moderation/Error message"
+msgid "Error while submitting report"
+msgstr "حدث خطأ أثناء حفظ الإعدادات"
+
 #: front/src/components/mixins/Translations.vue:32
 #: front/src/components/mixins/Translations.vue:33
 msgctxt "Content/Library/Table/Short"
@@ -1801,9 +2046,14 @@ msgctxt "Content/Radio/Table.Label/Verb"
 msgid "Exclude"
 msgstr "إستثني"
 
+#: front/src/components/common/CollapseLink.vue:2
+msgctxt "*/*/Button,Label"
+msgid "Expand"
+msgstr ""
+
 #: front/src/components/manage/users/InvitationsTable.vue:41
-#: front/src/components/mixins/Translations.vue:49
-#: front/src/components/mixins/Translations.vue:50
+#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:60
 msgctxt "Content/Admin/Table.Label/Noun"
 msgid "Expiration date"
 msgstr "تاريخ نهاية الصلاحية"
@@ -1820,11 +2070,7 @@ msgstr "إنتهت صلاحيتها/ أو مستعمَلة"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:110
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Explain why you're applying this policy. Depending on your instance "
-"configuration, this will help you remember why you acted on this account or "
-"domain, and may be displayed publicly to help users understand what "
-"moderation rules are in place."
+msgid "Explain why you're applying this policy. Depending on your instance configuration, this will help you remember why you acted on this account or domain, and may be displayed publicly to help users understand what moderation rules are in place."
 msgstr ""
 
 #: front/src/components/manage/library/UploadsTable.vue:25
@@ -1833,31 +2079,28 @@ msgctxt "Content/Library/Dropdown"
 msgid "Failed"
 msgstr "فشل"
 
-#: front/src/views/content/remote/Card.vue:62
+#: front/src/views/content/remote/Card.vue:75
 msgctxt "Content/Library/Card.List item/Noun"
 msgid "Failed tracks:"
 msgstr "المَقاطع الصوتية المخفقة:"
 
-#: front/src/views/admin/library/AlbumDetail.vue:165
-#: front/src/views/admin/library/ArtistDetail.vue:154
-#: front/src/views/admin/library/TrackDetail.vue:217
+#: front/src/views/admin/library/AlbumDetail.vue:171
+#: front/src/views/admin/library/ArtistDetail.vue:159
+#: front/src/views/admin/library/TrackDetail.vue:223
 msgctxt "*/*/*"
 msgid "Favorited tracks"
 msgstr "المَقاطع الصوتية المفضلة"
 
 #: front/src/components/Sidebar.vue:66
+#: src/components/mixins/Translations.vue:88
+#: front/src/components/mixins/Translations.vue:89
 msgctxt "Sidebar/Favorites/List item.Link/Noun"
 msgid "Favorites"
 msgstr "المفضلة"
 
-#: front/src/components/mixins/Translations.vue:76
-#: front/src/components/mixins/Translations.vue:77
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Favorites"
-msgstr "المفضلة"
-
-#: front/src/views/admin/Settings.vue:84
-msgctxt "Content/Admin/Menu"
+#: front/src/components/About.vue:110 src/views/admin/Settings.vue:84
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Federation"
 msgstr "الفديرالية"
 
@@ -1881,6 +2124,11 @@ msgctxt "Content/Radio/Table.Label/Noun"
 msgid "Filter name"
 msgstr "إسم عامل التصفية"
 
+#: front/src/components/Home.vue:118
+msgctxt "Content/Home/Link"
+msgid "Find another pod"
+msgstr ""
+
 #: front/src/components/manage/library/UploadsTable.vue:26
 #: front/src/components/mixins/Translations.vue:36
 #: front/src/views/content/libraries/FilesTable.vue:17
@@ -1890,25 +2138,31 @@ msgid "Finished"
 msgstr "إكتمل"
 
 #: front/src/components/manage/moderation/AccountsTable.vue:42
-#: front/src/components/manage/moderation/DomainsTable.vue:41
-#: front/src/views/admin/library/AlbumDetail.vue:149
-#: front/src/views/admin/library/ArtistDetail.vue:138
-#: front/src/views/admin/library/LibraryDetail.vue:153
-#: front/src/views/admin/library/TrackDetail.vue:201
+#: front/src/components/manage/moderation/DomainsTable.vue:49
+#: front/src/views/admin/library/AlbumDetail.vue:155
+#: front/src/views/admin/library/ArtistDetail.vue:143
+#: front/src/views/admin/library/LibraryDetail.vue:162
+#: front/src/views/admin/library/TagDetail.vue:98
+#: front/src/views/admin/library/TrackDetail.vue:207
 #: front/src/views/admin/library/UploadDetail.vue:167
-#: front/src/views/admin/moderation/AccountsDetail.vue:235
-#: front/src/views/admin/moderation/DomainsDetail.vue:151
+#: front/src/views/admin/moderation/AccountsDetail.vue:236
+#: front/src/views/admin/moderation/DomainsDetail.vue:188
 msgctxt "Content/Moderation/Table.Label/Short (Value is a date)"
 msgid "First seen"
 msgstr "أول زيارة"
 
-#: front/src/components/mixins/Translations.vue:46
-#: front/src/components/mixins/Translations.vue:47
+#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:57
 msgctxt "Content/Moderation/Dropdown/Noun"
 msgid "First seen date"
 msgstr "تاريخ أول اكتشاف"
 
-#: front/src/views/content/remote/Card.vue:87
+#: front/src/components/ShortcutsModal.vue:64
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Focus searchbar"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:100
 msgctxt "Content/Library/Card.Button.Label/Verb"
 msgid "Follow"
 msgstr "إتبع"
@@ -1918,40 +2172,34 @@ msgctxt "Content/Library/Title/Verb"
 msgid "Follow remote libraries"
 msgstr "متابعة المكتبات عن بُعد"
 
-#: front/src/views/content/remote/Card.vue:92
+#: front/src/views/content/remote/Card.vue:105
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Follow request pending approval"
 msgstr "طلب متابعة مُعلّق في انتظار القبول"
 
-#: front/src/components/mixins/Translations.vue:64
-#: front/src/views/admin/library/LibraryDetail.vue:161
+#: front/src/components/manage/library/LibrariesTable.vue:53
+#: front/src/components/mixins/Translations.vue:76
+#: front/src/views/admin/library/LibraryDetail.vue:170
 #: front/src/views/content/libraries/Detail.vue:7
-#: front/src/components/mixins/Translations.vue:65
+#: front/src/components/mixins/Translations.vue:77
 msgctxt "Content/Federation/*/Noun"
 msgid "Followers"
 msgstr "المتابِعون"
 
-#: front/src/components/manage/library/LibrariesTable.vue:53
-msgctxt "Content/*/*/Noun"
-msgid "Followers"
-msgstr "المتابِعون"
-
-#: front/src/views/content/remote/Card.vue:103
+#: front/src/views/content/remote/Card.vue:116
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Following"
 msgstr "يُتابِع"
 
-#: front/src/components/mixins/Translations.vue:84
-#: front/src/components/mixins/Translations.vue:85
+#: front/src/components/mixins/Translations.vue:96
+#: front/src/components/mixins/Translations.vue:97
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Follows"
 msgstr "إتبع"
 
-#: front/src/components/library/TrackBase.vue:17
+#: front/src/components/library/TrackBase.vue:245
 msgctxt "Content/Track/Paragraph"
-msgid ""
-"From album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> by <a"
-" class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgid "From album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
 msgstr ""
 
 #: front/src/components/auth/Authorize.vue:28
@@ -1961,38 +2209,21 @@ msgstr "تعطيل النفاذ"
 
 #: front/src/components/auth/SubsonicTokenForm.vue:7
 msgctxt "Content/Settings/Paragraph'"
-msgid ""
-"Funkwhale is compatible with other music players that support the Subsonic "
-"API."
-msgstr ""
-"فانك وايل Funkwhale متوافق مع برمجيات تشغيل الموسيقى التي تدعم واجهة برمجية "
-"تطبيقات صاب سونيك."
+msgid "Funkwhale is compatible with other music players that support the Subsonic API."
+msgstr "فانك وايل Funkwhale متوافق مع برمجيات تشغيل الموسيقى التي تدعم واجهة برمجية تطبيقات صاب سونيك."
 
-#: front/src/components/Home.vue:90
-msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale is dead simple to use."
-msgstr "فانك وايل Funkwhale سهلٌ جدًا للإستخدام."
-
-#: front/src/components/Home.vue:39
-msgctxt "Content/Home/Paragraph"
-msgid ""
-"Funkwhale is designed to make it easy to listen to music you like, or to "
-"discover new artists."
-msgstr ""
-"طُوِّر فانك وايل Funkwhale لتسهيل الإستماع إلى الموسيقى التي تحبونها و "
-"لاكتشاف فنّانين جُدد."
-
-#: front/src/components/Home.vue:111
+#: front/src/components/Home.vue:88
+#, fuzzy
 msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale is free and gives you control on your music."
+msgid "Funkwhale is free and developped by a friendly community of volunteers."
 msgstr "فانك وايل Funkwhale مجاني و يُعيد التحكّم في موسيقاكم بين أيديكم."
 
-#: front/src/components/Home.vue:66
-msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale takes care of handling your music"
-msgstr "فانك وايل Funkwhale يُحافظ على موسيقاكم"
+#: front/src/components/About.vue:78
+msgctxt "*/*/*"
+msgid "Funkwhale version"
+msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:38
+#: front/src/components/ShortcutsModal.vue:56
 msgctxt "Popup/Keyboard shortcuts/Title"
 msgid "General shortcuts"
 msgstr "الاختصارات العامة"
@@ -2002,35 +2233,17 @@ msgctxt "Content/Admin/Button.Label/Verb"
 msgid "Get a new invitation"
 msgstr "تحصّل على دعوة جديدة"
 
-#: front/src/components/Home.vue:13
-msgctxt "Content/Home/Button.Label/Verb"
-msgid "Get me to the library"
-msgstr "أنقلني إلى المكتبة"
-
-#: front/src/components/Home.vue:70
-msgctxt "Content/Home/List item/Verb"
-msgid ""
-"Get quality metadata about your music thanks to <a href=\"%{ url }\" "
-"target=\"_blank\">MusicBrainz</a>"
-msgstr ""
-"احصلوا على بيانات وصفية ذات جودة عن موسيقاكم بفضل <a href=\"%{ url }\" "
-"target=\"_blank\">MusicBrainz</a>"
-
 #: front/src/views/content/Home.vue:12 src/views/content/Home.vue:19
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Get started"
 msgstr "إبدأ هنا"
 
-#: front/src/components/Footer.vue:37
+#: front/src/components/Footer.vue:45
+#: src/components/library/ImportStatusModal.vue:45
 msgctxt "Footer/*/Link"
 msgid "Getting help"
 msgstr "الحصول على مساعدة"
 
-#: front/src/components/library/ImportStatusModal.vue:45
-msgctxt "Popup/Import/Table.Label/Noun"
-msgid "Getting help"
-msgstr "الحصول على مساعدة"
-
 #: front/src/components/common/ActionTable.vue:35
 #: front/src/components/common/ActionTable.vue:56
 msgctxt "Content/*/Button.Label/Short, Verb"
@@ -2042,11 +2255,21 @@ msgctxt "Content/*/Button.Label/Verb"
 msgid "Go to home page"
 msgstr "إنتقل إلى الصفحة الرئيسية"
 
+#: front/src/views/Notifications.vue:27 src/views/Notifications.vue:61
+msgctxt "Content/Notifications/Button.Label"
+msgid "Got it!"
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:128
 msgctxt "Content/Settings/Title"
 msgid "Hidden artists"
 msgstr "الفنانون المخفيون"
 
+#: front/src/components/About.vue:155
+msgctxt "*/*/*/Verb"
+msgid "Hide"
+msgstr ""
+
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:114
 msgctxt "Content/Moderation/Help text"
 msgid "Hide account or domain content, except from followers."
@@ -2057,12 +2280,12 @@ msgctxt "Popup/*/Button.Label"
 msgid "Hide content"
 msgstr "إخفاء المحتوى"
 
-#: front/src/components/audio/PlayButton.vue:26
+#: front/src/components/audio/PlayButton.vue:31
 msgctxt "*/Queue/Dropdown/Button/Label/Short"
 msgid "Hide content from this artist"
 msgstr "إخفاء المحتوى القادم مِن هذا الفنان"
 
-#: front/src/components/audio/Player.vue:643
+#: front/src/components/audio/Player.vue:669
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Hide content from this artist…"
 msgstr "إخفاء المحتوى القادم مِن هذا الفنان…"
@@ -2072,33 +2295,28 @@ msgctxt "Head/Home/Title"
 msgid "Home"
 msgstr "الرئيسية"
 
-#: front/src/components/instance/Stats.vue:36
-msgctxt "Content/About/Paragraph/Unit"
-msgid "Hours of music"
-msgstr "ساعات مِن الموسيقى"
-
 #: front/src/components/auth/SubsonicTokenForm.vue:10
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"However, accessing Funkwhale from those clients require a separate password "
-"you can set below."
+msgid "However, accessing Funkwhale from those clients require a separate password you can set below."
 msgstr ""
 
 #: front/src/views/auth/PasswordResetConfirm.vue:24
 msgctxt "Content/Signup/Paragraph"
-msgid ""
-"If the email address provided in the previous step is valid and binded to a "
-"user account, you should receive an email with reset instructions in the "
-"next couple of minutes."
+msgid "If the email address provided in the previous step is valid and linked to a user account, you should receive an email with reset instructions in the next couple of minutes."
 msgstr ""
 
 #: front/src/components/auth/Settings.vue:205
 msgctxt "Content/Applications/Paragraph"
-msgid ""
-"If you authorize third-party applications to access your data, those "
-"applications will be listed here."
+msgid "If you authorize third-party applications to access your data, those applications will be listed here."
 msgstr ""
 
+#: front/src/components/mixins/Translations.vue:46
+#: front/src/components/mixins/Translations.vue:47
+#, fuzzy
+msgctxt "Content/Moderation/Dropdown"
+msgid "Illegal content"
+msgstr "إخفاء المحتوى"
+
 #: front/src/components/library/ImportStatusModal.vue:3
 msgctxt "Popup/Import/Title"
 msgid "Import detail"
@@ -2110,14 +2328,10 @@ msgid "Import reference"
 msgstr "مصدر الإستيراد"
 
 #: front/src/components/manage/library/UploadsTable.vue:20
-#: front/src/views/content/libraries/FilesTable.vue:11
-#: front/src/views/content/libraries/FilesTable.vue:59
-msgctxt "Content/Library/*/Noun"
-msgid "Import status"
-msgstr "حالة الاستيراد"
-
 #: front/src/components/manage/library/UploadsTable.vue:64
 #: front/src/views/admin/library/UploadDetail.vue:131
+#: front/src/views/content/libraries/FilesTable.vue:11
+#: front/src/views/content/libraries/FilesTable.vue:59
 msgctxt "Content/*/*/Noun"
 msgid "Import status"
 msgstr "حالة الاستيراد"
@@ -2158,12 +2372,12 @@ msgctxt "Popup/Moderation/List item"
 msgid "In radio suggestions"
 msgstr "في اقتراحات الإذاعات"
 
-#: front/src/components/manage/users/UsersTable.vue:54
+#: front/src/components/manage/users/UsersTable.vue:55
 msgctxt "Content/Admin/Table"
 msgid "Inactive"
 msgstr "غير ناشط"
 
-#: front/src/components/ShortcutsModal.vue:71
+#: front/src/components/ShortcutsModal.vue:124
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Increase volume"
 msgstr "زيادة حجم الصوت"
@@ -2185,7 +2399,7 @@ msgctxt "Content/Settings/Dropdown/Short"
 msgid "Instance"
 msgstr "بيانات مثيل الخادم"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:71
+#: front/src/views/admin/moderation/DomainsDetail.vue:99
 msgctxt "Content/Moderation/Title"
 msgid "Instance data"
 msgstr "بيانات مثيل الخادم"
@@ -2210,19 +2424,25 @@ msgctxt "Popup/Instance/Input.Label/Noun"
 msgid "Instance URL"
 msgstr "بيانات مثيل الخادم"
 
+#: front/src/components/manage/moderation/ReportCard.vue:92
+#: front/src/components/manage/moderation/ReportCard.vue:203
+msgctxt "Content/*/*/Noun"
+msgid "Internal notes"
+msgstr ""
+
 #: front/src/components/library/FileUpload.vue:268
 msgctxt "Content/Library/Help text"
-msgid ""
-"Invalid file type, ensure you are uploading an audio file. Supported file "
-"extensions are %{ extensions }"
+msgid "Invalid file type, ensure you are uploading an audio file. Supported file extensions are %{ extensions }"
 msgstr ""
 
 #: front/src/components/library/ImportStatusModal.vue:139
+#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:46
 msgctxt "Popup/Import/Error.Label"
 msgid "Invalid metadata"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:44
+#: front/src/components/auth/SignupForm.vue:40
 #: front/src/components/manage/users/InvitationForm.vue:11
 msgctxt "Content/*/Input.Label"
 msgid "Invitation code"
@@ -2234,7 +2454,13 @@ msgctxt "*/Admin/*/Noun"
 msgid "Invitations"
 msgstr "الدعوات"
 
-#: front/src/components/Footer.vue:41
+#: front/src/components/manage/moderation/DomainsTable.vue:9
+#: front/src/views/admin/moderation/DomainsDetail.vue:106
+msgctxt "Content/Moderation/*/Adjective"
+msgid "Is present on allow-list"
+msgstr ""
+
+#: front/src/components/Footer.vue:49
 msgctxt "Footer/*/List item.Link"
 msgid "Issue tracker"
 msgstr "متعقّب المشاكل"
@@ -2244,17 +2470,18 @@ msgctxt "Popup/Instance/Error message.Title"
 msgid "It is not possible to connect to the given URL"
 msgstr ""
 
-#: front/src/components/Home.vue:50
-msgctxt "Content/Home/List item/Verb"
-msgid "Keep a track of your favorite songs"
-msgstr "حافظوا على أثر موسيقاكم و أغانيكم المفضّلة"
+#: front/src/components/mixins/Translations.vue:65
+#: front/src/components/mixins/Translations.vue:66
+msgctxt "*/*/*/Noun"
+msgid "Items"
+msgstr ""
 
 #: front/src/components/Footer.vue:33 src/components/ShortcutsModal.vue:3
 msgctxt "*/*/*/Noun"
 msgid "Keyboard shortcuts"
 msgstr "اختصارات لوحة المفاتيح"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:161
+#: front/src/views/admin/moderation/DomainsDetail.vue:198
 msgctxt "Content/Moderation/Table.Label.Link"
 msgid "Known accounts"
 msgstr "الحسابات المعروفة"
@@ -2265,15 +2492,15 @@ msgid "Known libraries"
 msgstr "المكتبات المعروفة"
 
 #: front/src/components/manage/users/UsersTable.vue:41
-#: front/src/components/mixins/Translations.vue:58
-#: front/src/views/admin/moderation/AccountsDetail.vue:205
-#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:70
+#: front/src/views/admin/moderation/AccountsDetail.vue:206
+#: front/src/components/mixins/Translations.vue:71
 msgctxt "Content/Profile/Table.Label/Short, Noun (Value is a date)"
 msgid "Last activity"
 msgstr "آخر نشاط"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:188
-#: front/src/views/admin/moderation/DomainsDetail.vue:78
+#: front/src/views/admin/moderation/AccountsDetail.vue:189
+#: front/src/views/admin/moderation/DomainsDetail.vue:115
 msgctxt "Content/*/Table.Label"
 msgid "Last checked"
 msgstr "آخِر فحص"
@@ -2288,13 +2515,13 @@ msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Last seen"
 msgstr "آخر زيارة"
 
-#: front/src/components/mixins/Translations.vue:47
-#: front/src/components/mixins/Translations.vue:48
+#: front/src/components/mixins/Translations.vue:57
+#: front/src/components/mixins/Translations.vue:58
 msgctxt "Content/Moderation/Dropdown/Noun"
 msgid "Last seen date"
 msgstr "آخِر زيارة"
 
-#: front/src/views/content/remote/Card.vue:60
+#: front/src/views/content/remote/Card.vue:73
 msgctxt "Content/Library/Card.List item/Noun"
 msgid "Last update:"
 msgstr "آخِر تحديث:"
@@ -2304,57 +2531,60 @@ msgctxt "Modal/*/Button.Label/Short, Verb"
 msgid "Launch"
 msgstr "إبدأ"
 
-#: front/src/components/Home.vue:10
-msgctxt "Content/Home/Button.Label/Verb"
-msgid "Learn more about this instance"
-msgstr "إعرف المزيد عن مثيل الخادوم هذا"
+#: front/src/components/Home.vue:35
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Learn more"
+msgstr "جارٍ تحميل المتابِعين…"
 
 #: front/src/components/manage/users/InvitationForm.vue:58
 msgctxt "Content/Admin/Input.Placeholder"
 msgid "Leave empty for a random code"
 msgstr "أتركه فارغًا للحصول على رمز عشوائي"
 
-#: front/src/components/audio/EmbedWizard.vue:7
+#: front/src/components/audio/EmbedWizard.vue:17
 msgctxt "Popup/Embed/Paragraph"
 msgid "Leave empty for a responsive widget"
 msgstr "أتركه فارغًا للحصول على ودجات تناسبي"
 
-#: front/src/views/admin/library/AlbumDetail.vue:232
-#: front/src/views/admin/library/ArtistDetail.vue:221
-#: front/src/views/admin/library/TrackDetail.vue:284
-#: front/src/views/admin/moderation/AccountsDetail.vue:327
-#: front/src/views/admin/moderation/DomainsDetail.vue:234
-#: front/src/views/content/Base.vue:5
+#: front/src/components/mixins/Translations.vue:64
+#: front/src/components/mixins/Translations.vue:65
 msgctxt "*/*/*/Noun"
-msgid "Libraries"
-msgstr "المكتبات"
+msgid "Length"
+msgstr ""
 
+#: front/src/views/admin/library/AlbumDetail.vue:248
+#: front/src/views/admin/library/ArtistDetail.vue:236
 #: front/src/views/admin/library/Base.vue:17
 #: front/src/views/admin/library/LibrariesList.vue:24
-msgctxt "*/*/*"
+#: front/src/views/admin/library/TrackDetail.vue:300
+#: front/src/views/admin/moderation/AccountsDetail.vue:339
+#: front/src/views/admin/moderation/DomainsDetail.vue:271
+#: front/src/views/content/Base.vue:5
+msgctxt "*/*/*/Noun"
 msgid "Libraries"
 msgstr "المكتبات"
 
-#: front/src/components/mixins/Translations.vue:72
-#: front/src/components/mixins/Translations.vue:73
+#: front/src/components/mixins/Translations.vue:84
+#: front/src/components/mixins/Translations.vue:85
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Libraries and uploads"
 msgstr "تم تحديث المكتبة"
 
 #: front/src/views/content/libraries/Form.vue:2
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Libraries help you organize and share your music collections. You can upload"
-" your own music collection to Funkwhale and share it with your friends and "
-"family."
+msgid "Libraries help you organize and share your music collections. You can upload your own music collection to Funkwhale and share it with your friends and family."
 msgstr ""
 
-#: front/src/components/Sidebar.vue:85 src/components/instance/Stats.vue:30
+#: front/src/components/Sidebar.vue:85
 #: front/src/components/manage/library/UploadsTable.vue:60
-#: front/src/components/manage/users/UsersTable.vue:173
+#: front/src/components/manage/users/UsersTable.vue:174
+#: front/src/components/mixins/Report.vue:77
 #: front/src/views/admin/library/UploadDetail.vue:144
-#: front/src/views/admin/moderation/AccountsDetail.vue:498
-msgctxt "*/*/*"
+#: front/src/views/admin/moderation/AccountsDetail.vue:518 src/entities.js:132
+#: front/src/components/mixins/Report.vue:78
+#, fuzzy
+msgctxt "*/*/*/Noun"
 msgid "Library"
 msgstr "المكتبة"
 
@@ -2385,21 +2615,37 @@ msgstr "تم تحديث المكتبة"
 
 #: front/src/components/library/TrackDetail.vue:19
 #: front/src/components/manage/library/TracksTable.vue:43
-#: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:61
+#: front/src/views/admin/library/TrackDetail.vue:165 src/edits.js:84
+#: front/src/entities.js:115
 msgctxt "Content/*/*/Noun"
 msgid "License"
 msgstr "الرخصة"
 
-#: front/src/views/admin/library/AlbumDetail.vue:157
-#: front/src/views/admin/library/ArtistDetail.vue:146
-#: front/src/views/admin/library/TrackDetail.vue:209
-msgctxt "*/*/*/Noun"
-msgid "Listenings"
+#: front/src/components/Footer.vue:90
+msgctxt "Footer/Settings/Dropdown.Label/Theme name"
+msgid "Light"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:80
-#: front/src/components/mixins/Translations.vue:81
-msgctxt "Content/OAuth Scopes/Label"
+#: front/src/views/admin/library/AlbumDetail.vue:188
+#: front/src/views/admin/library/ArtistDetail.vue:176
+#: front/src/views/admin/library/LibraryDetail.vue:179
+#: front/src/views/admin/library/TrackDetail.vue:240
+#: front/src/views/admin/moderation/AccountsDetail.vue:269
+msgctxt "Content/Moderation/Table.Label/Noun"
+msgid "Linked reports"
+msgstr ""
+
+#: front/src/components/Home.vue:135
+msgctxt "Content/Home/Link"
+msgid "Listen to public albums and playlists shared on this pod"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:92
+#: front/src/views/admin/library/AlbumDetail.vue:163
+#: front/src/views/admin/library/ArtistDetail.vue:151
+#: front/src/views/admin/library/TrackDetail.vue:215
+#: front/src/components/mixins/Translations.vue:93
+msgctxt "*/*/*/Noun"
 msgid "Listenings"
 msgstr ""
 
@@ -2425,7 +2671,7 @@ msgctxt "Content/Library/Paragraph"
 msgid "Loading library data…"
 msgstr "جارٍ تحميل بيانات المكتبة…"
 
-#: front/src/views/Notifications.vue:19
+#: front/src/views/Notifications.vue:84
 msgctxt "Content/Notifications/Paragraph"
 msgid "Loading notifications…"
 msgstr "عملية تحميل الإشعارات جارية…"
@@ -2450,6 +2696,7 @@ msgstr "جارٍ تحميل مفضلاتك…"
 #: front/src/components/manage/library/LibrariesTable.vue:75
 #: front/src/components/manage/library/TracksTable.vue:71
 #: front/src/components/manage/library/UploadsTable.vue:99
+#: front/src/components/manage/moderation/ReportCard.vue:173
 #: front/src/views/admin/library/AlbumDetail.vue:19
 #: front/src/views/admin/library/ArtistDetail.vue:18
 #: front/src/views/admin/library/LibraryDetail.vue:18
@@ -2465,12 +2712,12 @@ msgctxt "Content/Moderation/*/Short, Noun"
 msgid "Local account"
 msgstr "حساب محلي"
 
-#: front/src/components/auth/Login.vue:84
+#: front/src/components/Home.vue:96 src/views/auth/Login.vue:29
 msgctxt "Head/Login/Title"
 msgid "Log In"
 msgstr "الدخول"
 
-#: front/src/components/auth/Login.vue:4
+#: front/src/views/auth/Login.vue:4
 msgctxt "Content/Login/Title/Verb"
 msgid "Log in to your Funkwhale account"
 msgstr "الدخول إلى حسابك على فانك وايل Funkwhale"
@@ -2485,7 +2732,7 @@ msgctxt "Sidebar/Profile/List item.Link"
 msgid "Logged in as %{ username }"
 msgstr "مُتّصل كـ %{ username }"
 
-#: front/src/components/Sidebar.vue:54 src/components/auth/Login.vue:42
+#: front/src/components/Sidebar.vue:54 src/components/auth/LoginForm.vue:41
 msgctxt "*/Login/*/Verb"
 msgid "Login"
 msgstr "تسجيل الدخول"
@@ -2505,34 +2752,40 @@ msgctxt "Content/Library/Paragraph"
 msgid "Looks like you don't have a library, it's time to create one."
 msgstr "يبدو أنه ليس لديك أية مكتبة بعد، حان الأوان لإنشاء واحدة."
 
-#: front/src/components/audio/Player.vue:632
-#: src/components/audio/Player.vue:633
+#: front/src/components/audio/Player.vue:658
+#: src/components/audio/Player.vue:659
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping disabled. Click to switch to single-track looping."
 msgstr ""
 
-#: front/src/components/audio/Player.vue:635
-#: src/components/audio/Player.vue:636
+#: front/src/components/audio/Player.vue:661
+#: src/components/audio/Player.vue:662
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping on a single track. Click to switch to whole queue looping."
 msgstr ""
 
-#: front/src/components/audio/Player.vue:638
-#: src/components/audio/Player.vue:639
+#: front/src/components/audio/Player.vue:664
+#: src/components/audio/Player.vue:665
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping on whole queue. Click to disable looping."
 msgstr ""
 
-#: front/src/components/Sidebar.vue:223
+#: front/src/components/Sidebar.vue:230
 msgctxt "Sidebar/*/Hidden text"
 msgid "Main menu"
 msgstr "القائمة الرئيسية"
 
-#: front/src/views/admin/library/Base.vue:31
+#: front/src/views/admin/library/Base.vue:34
 msgctxt "Head/Admin/Title"
 msgid "Manage library"
 msgstr "إدارة المكتبة"
 
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:8
+#, fuzzy
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Manage moderation rules for %{ obj }"
+msgstr "تحديث قاعدة الإشراف"
+
 #: front/src/components/playlists/PlaylistModal.vue:3
 msgctxt "Popup/Playlist/Title/Verb"
 msgid "Manage playlists"
@@ -2548,7 +2801,7 @@ msgctxt "Content/Playlist/Button.Label/Verb"
 msgid "Manage your playlists"
 msgstr "إدارة القوائم الخاصة الموسيقى"
 
-#: front/src/views/Notifications.vue:14
+#: front/src/views/Notifications.vue:79
 msgctxt "Content/Notifications/Button.Label/Verb"
 msgid "Mark all as read"
 msgstr "تحديد الكل كمقروء"
@@ -2563,12 +2816,12 @@ msgctxt "Content/Notifications/Button.Tooltip/Verb"
 msgid "Mark as unread"
 msgstr "تحديد كغير مقروء"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:310
+#: front/src/views/admin/moderation/AccountsDetail.vue:321
 msgctxt "Content/*/*/Unit"
 msgid "MB"
 msgstr "MB"
 
-#: front/src/components/audio/Player.vue:625
+#: front/src/components/audio/Player.vue:651
 msgctxt "Sidebar/Player/Hidden text"
 msgid "Media player"
 msgstr "مُشغّل الوسائط"
@@ -2578,43 +2831,59 @@ msgctxt "Content/Profile/Paragraph"
 msgid "Member since %{ date }"
 msgstr "عضو منذ %{ date }"
 
+#: front/src/components/manage/moderation/ReportCard.vue:109
+#: front/src/components/moderation/ReportModal.vue:41
+msgctxt "*/*/Field.Label/Noun"
+msgid "Message"
+msgstr ""
+
 #: front/src/components/Footer.vue:32
 msgctxt "Footer/*/List item.Link"
 msgid "Mobile and desktop apps"
 msgstr "تطبيقات الكمبيوتر والأجهزة المحمولة"
 
+#: front/src/components/Home.vue:143
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Mobile apps"
+msgstr "تطبيقات الكمبيوتر والأجهزة المحمولة"
+
 #: front/src/components/Sidebar.vue:96
-#: src/components/manage/users/UsersTable.vue:177
-#: front/src/views/admin/moderation/AccountsDetail.vue:502
-#: front/src/views/admin/moderation/Base.vue:21
+#: src/components/manage/users/UsersTable.vue:178
+#: front/src/views/admin/Settings.vue:85
+#: front/src/views/admin/moderation/AccountsDetail.vue:522
+#: front/src/views/admin/moderation/Base.vue:43
 msgctxt "*/Moderation/*"
 msgid "Moderation"
 msgstr "الإشراف"
 
 #: front/src/views/admin/moderation/AccountsDetail.vue:78
-#: front/src/views/admin/moderation/DomainsDetail.vue:42
+#: front/src/views/admin/moderation/DomainsDetail.vue:70
 msgctxt "Content/Moderation/Card.Paragraph"
-msgid ""
-"Moderation policies help you control how your instance interact with a given"
-" domain or account."
-msgstr ""
-"قواعد الإشراف تساعدكم على التحكم في كيفية تفاعل مثيل خادومكم مع النطاقات و "
-"الحسابات الأخرى."
+msgid "Moderation policies help you control how your instance interact with a given domain or account."
+msgstr "قواعد الإشراف تساعدكم على التحكم في كيفية تفاعل مثيل خادومكم مع النطاقات و الحسابات الأخرى."
+
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:4
+#, fuzzy
+msgctxt "Content/Moderation/Button.Label"
+msgid "Moderation rules…"
+msgstr "تحديث قاعدة الإشراف"
 
 #: front/src/components/library/EditCard.vue:5
 msgctxt "Content/Library/Card/Short"
 msgid "Modification %{ id }"
 msgstr "تاريخ التعديل"
 
-#: front/src/components/mixins/Translations.vue:48
-#: front/src/components/mixins/Translations.vue:49
+#: front/src/components/mixins/Translations.vue:58
+#: front/src/components/mixins/Translations.vue:59
 msgctxt "Content/Playlist/Dropdown/Noun"
 msgid "Modification date"
 msgstr "تاريخ التعديل"
 
-#: front/src/components/library/AlbumBase.vue:42
-#: front/src/components/library/ArtistBase.vue:53
-#: front/src/components/library/TrackBase.vue:61
+#: front/src/components/audio/PlayButton.vue:100
+#: front/src/components/library/AlbumBase.vue:43
+#: front/src/components/library/ArtistBase.vue:54
+#: front/src/components/library/TrackBase.vue:59
 msgctxt "*/*/Button.Label/Noun"
 msgid "More…"
 msgstr ""
@@ -2624,7 +2893,7 @@ msgctxt "*/*/*/Noun"
 msgid "Music"
 msgstr "الموسيقى"
 
-#: front/src/components/audio/Player.vue:631
+#: front/src/components/audio/Player.vue:657
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Mute"
 msgstr "كتم"
@@ -2671,8 +2940,8 @@ msgctxt "Content/Library/Title"
 msgid "My libraries"
 msgstr "مكتباتي"
 
-#: front/src/components/audio/track/Row.vue:40
-#: src/components/library/EditCard.vue:60
+#: front/src/components/About.vue:105 src/components/audio/track/Row.vue:40
+#: front/src/components/library/EditCard.vue:60
 #: front/src/components/library/EditForm.vue:70
 #: front/src/components/library/TrackDetail.vue:34
 #: front/src/components/library/TrackDetail.vue:43
@@ -2682,54 +2951,56 @@ msgstr "مكتباتي"
 #: front/src/components/manage/library/TracksTable.vue:76
 #: front/src/components/manage/library/UploadsTable.vue:121
 #: front/src/components/manage/library/UploadsTable.vue:128
-#: front/src/components/manage/users/UsersTable.vue:61
+#: front/src/components/manage/moderation/ReportCard.vue:78
+#: front/src/components/manage/moderation/ReportCard.vue:87
+#: front/src/components/manage/moderation/ReportCard.vue:193
+#: front/src/components/manage/users/UsersTable.vue:62
 #: front/src/views/admin/library/UploadDetail.vue:179
 #: front/src/views/admin/library/UploadDetail.vue:214
 #: front/src/views/admin/library/UploadDetail.vue:233
 #: front/src/views/admin/library/UploadDetail.vue:244
 #: front/src/views/admin/library/UploadDetail.vue:257
-#: front/src/views/admin/moderation/AccountsDetail.vue:192
-#: front/src/views/admin/moderation/DomainsDetail.vue:82
+#: front/src/views/admin/moderation/AccountsDetail.vue:193
+#: front/src/views/admin/moderation/DomainsDetail.vue:119
 #: front/src/views/content/libraries/FilesTable.vue:95
 #: front/src/views/content/libraries/FilesTable.vue:101
 msgctxt "*/*/*"
 msgid "N/A"
 msgstr "غير متوفر"
 
-#: front/src/components/manage/library/LibrariesTable.vue:48
-#: front/src/components/manage/library/UploadsTable.vue:59
-msgctxt "*/*/*"
-msgid "Name"
-msgstr "الإسم"
-
 #: front/src/components/auth/ApplicationForm.vue:9
-msgctxt "Content/Applications/Input.Label/Noun"
-msgid "Name"
-msgstr "الإسم"
-
 #: front/src/components/auth/Settings.vue:133
 #: front/src/components/manage/library/ArtistsTable.vue:39
+#: front/src/components/manage/library/LibrariesTable.vue:48
+#: front/src/components/manage/library/TagsTable.vue:41
+#: front/src/components/manage/library/UploadsTable.vue:59
 #: front/src/components/manage/moderation/AccountsTable.vue:39
-#: front/src/components/manage/moderation/DomainsTable.vue:38
-#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/manage/moderation/DomainsTable.vue:46
+#: front/src/components/mixins/Translations.vue:63
 #: front/src/components/playlists/PlaylistModal.vue:45
-#: front/src/views/admin/library/ArtistDetail.vue:98
+#: front/src/views/admin/library/ArtistDetail.vue:103
 #: front/src/views/admin/library/LibraryDetail.vue:85
+#: front/src/views/admin/library/TagDetail.vue:68
 #: front/src/views/admin/library/UploadDetail.vue:92
-#: front/src/views/admin/moderation/DomainsDetail.vue:97
-#: front/src/views/content/libraries/Form.vue:10 src/edits.js:10
-#: front/src/components/mixins/Translations.vue:54
+#: front/src/views/admin/moderation/DomainsDetail.vue:134
+#: front/src/views/content/libraries/Form.vue:10 src/edits.js:17
+#: front/src/components/mixins/Translations.vue:64
 msgctxt "*/*/*/Noun"
 msgid "Name"
 msgstr "الإسم"
 
+#: front/src/views/Notifications.vue:24 src/views/Notifications.vue:58
+msgctxt "*/*/*"
+msgid "Never"
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:88
 #: front/src/views/auth/PasswordResetConfirm.vue:14
 msgctxt "Content/Settings/Input.Label"
 msgid "New password"
 msgstr "الكلمة السرية الجديدة"
 
-#: front/src/components/Sidebar.vue:173
+#: front/src/components/Sidebar.vue:177
 msgctxt "Sidebar/Player/Paragraph"
 msgid "New tracks will be appended here automatically."
 msgstr "سوف يتم إضافة المَقاطِع الجديدة هنا آليًا."
@@ -2739,23 +3010,18 @@ msgctxt "Content/Library/Card.Table.Header/Short"
 msgid "New value"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:629
+#: front/src/components/audio/Player.vue:655
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Next track"
 msgstr "المَقطَع التالي"
 
-#: front/src/components/Sidebar.vue:130
+#: front/src/components/Sidebar.vue:134
+#: front/src/components/manage/moderation/DomainsTable.vue:13
+#: front/src/views/admin/moderation/DomainsDetail.vue:110
 msgctxt "*/*/*"
 msgid "No"
 msgstr "لا"
 
-#: front/src/components/Home.vue:95
-msgctxt "Content/Home/List item"
-msgid "No add-ons, no plugins : you only need a web library"
-msgstr ""
-"لا تحتاج إلى تنصيب إضافاتٍ أو مُلحَقاتٍ : كل ما تحتاج إليه هي مكتبة موسيقية "
-"على الويب"
-
 #: front/src/components/audio/Search.vue:25
 msgctxt "Content/Search/Paragraph"
 msgid "No album matched your query"
@@ -2771,6 +3037,11 @@ msgctxt "Content/Track/Table.Paragraph"
 msgid "No copyright information available for this track"
 msgstr "لا تتوفر هناك معلومات عن حقوق التأليف المتعلقة بهذا المقطع"
 
+#: front/src/components/About.vue:25 src/components/Home.vue:25
+msgctxt "Content/Home/Paragraph"
+msgid "No description available."
+msgstr ""
+
 #: front/src/components/library/TrackDetail.vue:25
 msgctxt "Content/Track/Table.Paragraph"
 msgid "No licensing information for this track"
@@ -2781,7 +3052,7 @@ msgctxt "Content/Federation/Paragraph"
 msgid "No matching library."
 msgstr "ليس هناك أية مكتبة مطابِقة."
 
-#: front/src/views/Notifications.vue:28
+#: front/src/views/Notifications.vue:93
 msgctxt "Content/Notifications/Paragraph"
 msgid "No notification to show."
 msgstr "ليس هناك أي إشعار للعرض."
@@ -2789,6 +3060,16 @@ msgstr "ليس هناك أي إشعار للعرض."
 #: front/src/components/common/EmptyState.vue:7
 msgctxt "Content/*/Paragraph"
 msgid "No results were found."
+msgstr "لم يتم العثور على أية نتيجة."
+
+#: front/src/components/About.vue:32
+msgctxt "Content/Home/Paragraph"
+msgid "No rules available."
+msgstr ""
+
+#: front/src/components/About.vue:39
+msgctxt "Content/Home/Paragraph"
+msgid "No terms available."
 msgstr ""
 
 #: front/src/components/mixins/Translations.vue:10
@@ -2807,18 +3088,22 @@ msgctxt "Content/Admin/Table"
 msgid "Not used"
 msgstr "غير مستعمَل"
 
-#: front/src/components/mixins/Translations.vue:100
-#: front/src/components/mixins/Translations.vue:101
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Notifications"
-msgstr "الإشعارات"
-
-#: front/src/components/Sidebar.vue:46 src/views/Notifications.vue:76
+#: front/src/components/Sidebar.vue:46
+#: src/components/mixins/Translations.vue:112
+#: front/src/views/Notifications.vue:151
+#: src/components/mixins/Translations.vue:113
 msgctxt "*/Notifications/*"
 msgid "Notifications"
 msgstr "الإشعارات"
 
-#: front/src/components/Footer.vue:47
+#: front/src/components/mixins/Translations.vue:47
+#: front/src/components/mixins/Translations.vue:48
+#, fuzzy
+msgctxt "Content/Moderation/Dropdown"
+msgid "Offensive content"
+msgstr "إخفاء المحتوى"
+
+#: front/src/components/Footer.vue:55
 msgctxt "Footer/*/List item.Link"
 msgid "Official website"
 msgstr "موقع الويب الرسمي"
@@ -2833,6 +3118,12 @@ msgctxt "Content/Library/Card.Table.Header/Short"
 msgid "Old value"
 msgstr ""
 
+#: front/src/components/About.vue:90
+#, fuzzy
+msgctxt "*/*/*/State of registrations"
+msgid "Open"
+msgstr "مفتوح"
+
 #: front/src/components/manage/users/InvitationsTable.vue:20
 msgctxt "Content/Admin/Dropdown/Adjective"
 msgid "Open"
@@ -2840,27 +3131,29 @@ msgstr "مفتوح"
 
 #: front/src/components/library/ImportStatusModal.vue:56
 msgctxt "Popup/Import/Table.Label/Value"
-msgid ""
-"Open a support thread (include the debug information below in your message)"
+msgid "Open a support thread (include the debug information below in your message)"
 msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:73
-#: front/src/components/library/ArtistBase.vue:84
-#: front/src/components/library/TrackBase.vue:92
+#: front/src/components/library/AlbumBase.vue:87
+#: front/src/components/library/ArtistBase.vue:99
+#: front/src/components/library/TagDetail.vue:11
+#: front/src/components/library/TrackBase.vue:103
+#: front/src/components/manage/moderation/ReportCard.vue:128
 msgctxt "Content/Moderation/Link"
 msgid "Open in moderation interface"
 msgstr "تحديث قاعدة الإشراف"
 
-#: front/src/views/admin/library/AlbumDetail.vue:31
-#: front/src/views/admin/library/ArtistDetail.vue:30
-#: front/src/views/admin/library/TrackDetail.vue:30
+#: front/src/views/admin/library/AlbumDetail.vue:37
+#: front/src/views/admin/library/ArtistDetail.vue:35
+#: front/src/views/admin/library/TagDetail.vue:21
+#: front/src/views/admin/library/TrackDetail.vue:36
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open local profile"
 msgstr "افتح الصفحة الشخصية"
 
-#: front/src/views/admin/library/AlbumDetail.vue:46
-#: front/src/views/admin/library/ArtistDetail.vue:45
-#: front/src/views/admin/library/TrackDetail.vue:45
+#: front/src/views/admin/library/AlbumDetail.vue:52
+#: front/src/views/admin/library/ArtistDetail.vue:50
+#: front/src/views/admin/library/TrackDetail.vue:51
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open on MusicBrainz"
 msgstr "إطّلع عليه على ميوزيك براينز"
@@ -2870,10 +3163,10 @@ msgctxt "Content/Moderation/Link/Verb"
 msgid "Open profile"
 msgstr "افتح الصفحة الشخصية"
 
-#: front/src/views/admin/library/AlbumDetail.vue:54
-#: front/src/views/admin/library/ArtistDetail.vue:53
+#: front/src/views/admin/library/AlbumDetail.vue:60
+#: front/src/views/admin/library/ArtistDetail.vue:58
 #: front/src/views/admin/library/LibraryDetail.vue:49
-#: front/src/views/admin/library/TrackDetail.vue:53
+#: front/src/views/admin/library/TrackDetail.vue:59
 #: front/src/views/admin/library/UploadDetail.vue:50
 #: front/src/views/admin/moderation/AccountsDetail.vue:52
 msgctxt "Content/Moderation/Link/Verb"
@@ -2894,6 +3187,7 @@ msgstr "أو قم بتخصيص قاعدتك"
 #: src/components/library/Radios.vue:41
 #: front/src/components/manage/library/EditsCardList.vue:37
 #: front/src/components/manage/users/UsersTable.vue:17
+#: front/src/views/admin/moderation/ReportsList.vue:42
 #: front/src/views/playlists/List.vue:25
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Order"
@@ -2901,40 +3195,51 @@ msgstr "الترتيب"
 
 #: front/src/components/favorites/List.vue:24
 #: src/components/library/Albums.vue:15
-#: front/src/components/library/Artists.vue:15
+#: front/src/components/library/Artists.vue:19
 #: src/components/library/Radios.vue:33
 #: front/src/components/manage/library/AlbumsTable.vue:11
 #: front/src/components/manage/library/ArtistsTable.vue:11
 #: front/src/components/manage/library/EditsCardList.vue:29
 #: front/src/components/manage/library/LibrariesTable.vue:20
+#: front/src/components/manage/library/TagsTable.vue:11
 #: front/src/components/manage/library/TracksTable.vue:11
 #: front/src/components/manage/library/UploadsTable.vue:30
 #: front/src/components/manage/moderation/AccountsTable.vue:11
-#: front/src/components/manage/moderation/DomainsTable.vue:9
+#: front/src/components/manage/moderation/DomainsTable.vue:17
 #: front/src/components/manage/users/InvitationsTable.vue:9
 #: front/src/components/manage/users/UsersTable.vue:9
+#: front/src/views/admin/moderation/ReportsList.vue:34
 #: front/src/views/content/libraries/FilesTable.vue:21
 #: front/src/views/playlists/List.vue:17
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Ordering"
 msgstr "الترتيب"
 
-#: front/src/components/library/Albums.vue:23
-#: src/components/library/Artists.vue:23
+#: front/src/components/library/Albums.vue:27
+#: src/components/library/Artists.vue:27
 #: front/src/components/manage/library/AlbumsTable.vue:19
 #: front/src/components/manage/library/ArtistsTable.vue:19
 #: front/src/components/manage/library/LibrariesTable.vue:28
+#: front/src/components/manage/library/TagsTable.vue:19
 #: front/src/components/manage/library/TracksTable.vue:19
 #: front/src/components/manage/library/UploadsTable.vue:38
 #: front/src/components/manage/moderation/AccountsTable.vue:19
-#: front/src/components/manage/moderation/DomainsTable.vue:17
+#: front/src/components/manage/moderation/DomainsTable.vue:25
 #: front/src/views/content/libraries/FilesTable.vue:29
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Ordering direction"
 msgstr "اتجاه الترتيب"
 
+#: front/src/components/mixins/Translations.vue:48
+#: front/src/components/mixins/Translations.vue:49
+msgctxt "Content/Moderation/Dropdown"
+msgid "Other"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:143
 #: front/src/components/manage/users/InvitationsTable.vue:38
-msgctxt "Content/Admin/Table.Label"
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Owner"
 msgstr "المالك"
 
@@ -2953,12 +3258,15 @@ msgctxt "Content/*/Hidden text/Noun"
 msgid "Pagination"
 msgstr "تتابُع الصفحات"
 
-#: front/src/components/auth/Login.vue:33 src/components/auth/Signup.vue:40
-msgctxt "Content/*/Input.Label"
+#: front/src/components/auth/LoginForm.vue:32
+#: src/components/auth/Settings.vue:291
+#: front/src/components/auth/SignupForm.vue:36
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Password"
 msgstr "كلمة السر"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:94
+#: front/src/components/auth/SubsonicTokenForm.vue:100
 msgctxt "Content/Settings/Message"
 msgid "Password updated"
 msgstr "تم تحديث كلمة السر"
@@ -2968,12 +3276,12 @@ msgctxt "Content/Signup/Card.Title"
 msgid "Password updated successfully"
 msgstr "تم تحديث كلمة السر بنجاح"
 
-#: front/src/components/audio/Player.vue:628
+#: front/src/components/audio/Player.vue:654
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Pause track"
 msgstr "ألبِث المَقطَع"
 
-#: front/src/components/ShortcutsModal.vue:59
+#: front/src/components/ShortcutsModal.vue:96
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Pause/play the current track"
 msgstr "إيقاف/تشغيل المقطع الحالي"
@@ -3002,7 +3310,7 @@ msgctxt "Content/Library/Label"
 msgid "Pending files"
 msgstr "الملفات المعلّقة"
 
-#: front/src/components/Sidebar.vue:225
+#: front/src/components/Sidebar.vue:232
 msgctxt "Sidebar/Notifications/Hidden text"
 msgid "Pending follow requests"
 msgstr "طلبات المتابَعة المعلَّقة"
@@ -3013,84 +3321,76 @@ msgctxt "Content/Admin/*/Noun"
 msgid "Pending review"
 msgstr "الملفات المعلّقة"
 
-#: front/src/components/Sidebar.vue:226
+#: front/src/components/Sidebar.vue:233
 msgctxt "Sidebar/Moderation/Hidden text"
 msgid "Pending review edits"
 msgstr "الملفات المعلّقة"
 
+#: front/src/components/auth/Settings.vue:176
 #: front/src/components/manage/users/UsersTable.vue:42
 #: front/src/views/admin/moderation/AccountsDetail.vue:166
-msgctxt "Content/Admin/Table.Label/Noun"
-msgid "Permissions"
-msgstr "الصّلاحيّات"
-
-#: front/src/components/auth/Settings.vue:176
 msgctxt "Content/*/*/Noun"
 msgid "Permissions"
 msgstr "الصّلاحيّات"
 
 #: front/src/components/audio/PlayButton.vue:9
-#: front/src/components/library/TrackBase.vue:26
+#: front/src/components/library/TrackBase.vue:24
 msgctxt "*/Queue/Button.Label/Short, Verb"
 msgid "Play"
 msgstr "غنّي"
 
 #: front/src/components/audio/album/Card.vue:48
-#: front/src/components/audio/artist/Card.vue:44
-#: front/src/components/library/AlbumBase.vue:20
+#: front/src/components/library/AlbumBase.vue:21
 #: front/src/components/library/AlbumDetail.vue:11
 #: src/views/playlists/Detail.vue:24
 msgctxt "Content/Queue/Button.Label/Short, Verb"
 msgid "Play all"
 msgstr "تشغيل الكل"
 
-#: front/src/components/library/ArtistBase.vue:31
+#: front/src/components/library/ArtistBase.vue:32
 msgctxt "Content/Artist/Button.Label/Verb"
 msgid "Play all albums"
 msgstr "إعزف كافة الألبومات"
 
-#: front/src/components/audio/PlayButton.vue:76
+#: front/src/components/audio/PlayButton.vue:92
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play next"
 msgstr "إعزف التالي"
 
-#: front/src/components/ShortcutsModal.vue:67
+#: front/src/components/ShortcutsModal.vue:120
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Play next track"
 msgstr "شغِّل المَقطَع التالي"
 
-#: front/src/components/audio/PlayButton.vue:74
+#: front/src/components/audio/PlayButton.vue:90
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play now"
 msgstr "إعزف الآن"
 
-#: front/src/components/ShortcutsModal.vue:63
+#: front/src/components/ShortcutsModal.vue:116
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Play previous track"
 msgstr "شغِّل المَقطَع السابق"
 
-#: front/src/components/audio/PlayButton.vue:77
+#: front/src/components/audio/PlayButton.vue:93
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play similar songs"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:224
+#: front/src/components/Sidebar.vue:231
 msgctxt "Sidebar/Player/Hidden text"
 msgid "Play this track"
 msgstr "شغِّل هذا المَقطَع"
 
-#: front/src/components/audio/Player.vue:627
+#: front/src/components/audio/Player.vue:653
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Play track"
 msgstr "إعزف المَقطَع"
 
-#: front/src/components/audio/PlayButton.vue:82
-msgctxt "*/Queue/Button/Title"
-msgid "Play..."
-msgstr "تشغيل…"
-
-#: front/src/views/playlists/Detail.vue:91
-msgctxt "Head/Playlist/Title"
+#: front/src/components/mixins/Report.vue:66 src/views/playlists/Detail.vue:121
+#: front/src/components/mixins/Report.vue:67
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Playlist"
 msgstr "قائمة المَقاطِع"
 
@@ -3130,33 +3430,30 @@ msgctxt "Content/Playlist/Dropdown.Label"
 msgid "Playlist visibility"
 msgstr "مدى رؤية القائمة"
 
-#: front/src/components/mixins/Translations.vue:88
-#: front/src/components/mixins/Translations.vue:89
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Playlists"
-msgstr "قوائم المَقاطِع"
-
 #: front/src/components/Sidebar.vue:71 src/components/library/Home.vue:16
-#: front/src/components/library/Library.vue:16 src/views/admin/Settings.vue:83
-#: front/src/views/admin/library/AlbumDetail.vue:173
-#: front/src/views/admin/library/ArtistDetail.vue:162
-#: front/src/views/admin/library/TrackDetail.vue:225
+#: front/src/components/library/Library.vue:16
+#: front/src/components/mixins/Translations.vue:100
+#: src/views/admin/Settings.vue:83
+#: front/src/views/admin/library/AlbumDetail.vue:179
+#: front/src/views/admin/library/ArtistDetail.vue:167
+#: front/src/views/admin/library/TrackDetail.vue:231
 #: src/views/playlists/List.vue:106
+#: front/src/components/mixins/Translations.vue:101
 msgctxt "*/*/*"
 msgid "Playlists"
 msgstr "قوائم المَقاطِع"
 
-#: front/src/components/Home.vue:56
-msgctxt "Content/Home/List item"
-msgid "Playlists? We got them"
-msgstr "قوائم تشغيل الموسيقى ؟ متوفّرة لدينا"
+#: front/src/components/audio/EmbedWizard.vue:9
+msgctxt "Content/Embed/Message"
+msgid "Please contact your admins and ask them to update the corresponding setting."
+msgstr ""
 
 #: front/src/components/auth/Settings.vue:79
 msgctxt "Content/Settings/Error message.List item/Call to action"
 msgid "Please double-check your password is correct"
 msgstr "يرجى التأكّد مِن صحة الكلمة السرية"
 
-#: front/src/components/auth/Login.vue:9
+#: front/src/components/auth/LoginForm.vue:5
 msgctxt "Content/Login/Error message.List item/Call to action"
 msgid "Please double-check your username/password couple is correct"
 msgstr "الرجاء التأكّد مِن صحة اسم المستخدِم و الكلمة السرية"
@@ -3164,28 +3461,29 @@ msgstr "الرجاء التأكّد مِن صحة اسم المستخدِم و 
 #: front/src/components/auth/Settings.vue:46
 msgctxt "Content/Settings/Paragraph"
 msgid "PNG, GIF or JPG. At most 2MB. Will be downscaled to 400x400px."
+msgstr "نسق PNG أو GIF أو JPG. الحجم الأقصى 2 ميغابيت. سيتم تغيير حجمها إلى 400×400 بكسل."
+
+#: front/src/components/About.vue:72
+msgctxt "Content/About/Header/Name"
+msgid "Pod configuration"
 msgstr ""
-"نسق PNG أو GIF أو JPG. الحجم الأقصى 2 ميغابيت. سيتم تغيير حجمها إلى 400×400 "
-"بكسل."
 
-#: front/src/views/admin/library/TrackDetail.vue:137
-msgctxt "*/*/*/Noun"
+#: front/src/views/admin/library/TrackDetail.vue:143 src/edits.js:70
+msgctxt "*/*/*/Short, Noun"
 msgid "Position"
 msgstr "تتابُع الصفحات"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:118
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Prevent account or domain from triggering notifications, except from "
-"followers."
+msgid "Prevent account or domain from triggering notifications, except from followers."
 msgstr "إخفاء الحساب أو محتوى النطاق مِن الجميع باستثناء المتابِعين."
 
-#: front/src/components/audio/EmbedWizard.vue:33
+#: front/src/components/audio/EmbedWizard.vue:43
 msgctxt "Popup/Embed/Title/Noun"
 msgid "Preview"
 msgstr "معاينة"
 
-#: front/src/components/audio/Player.vue:626
+#: front/src/components/audio/Player.vue:652
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Previous track"
 msgstr "المَقطَع السابق"
@@ -3196,7 +3494,7 @@ msgctxt "Content/Settings/Dropdown/Short"
 msgid "Private"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:43
+#: front/src/views/content/remote/Card.vue:56
 msgctxt "Content/Library/Card.List item"
 msgid "Problem during scanning"
 msgstr "خطأ أثناء المسح"
@@ -3217,14 +3515,20 @@ msgctxt "Content/Library/Tab.Title/Short"
 msgid "Processing"
 msgstr "جارٍ العمل"
 
-#: front/src/components/mixins/Translations.vue:68
-#: front/src/components/mixins/Translations.vue:69
+#: front/src/components/mixins/Translations.vue:80
+#: front/src/components/mixins/Translations.vue:81
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Profile"
 msgstr "افتح الصفحة الشخصية"
 
+#: front/src/components/auth/SignupForm.vue:5
+#, fuzzy
+msgctxt "Content/Signup/Form/Paragraph"
+msgid "Public registrations are not possible on this instance. You will need an invitation code to sign up."
+msgstr "إنّ التسجيلات مُغلَقة حاليًا على هذا الخادوم، يلزمك رمز دعوة للتسجيل فيه."
+
 #: front/src/components/manage/moderation/AccountsTable.vue:188
-#: front/src/components/manage/moderation/DomainsTable.vue:168
+#: front/src/components/manage/moderation/DomainsTable.vue:186
 #: front/src/views/content/libraries/Quota.vue:36
 #: front/src/views/content/libraries/Quota.vue:39
 #: front/src/views/content/libraries/Quota.vue:62
@@ -3255,7 +3559,7 @@ msgctxt "Sidebar/Queue/Tab.Title/Noun"
 msgid "Queue"
 msgstr "قائمة الإنتظار"
 
-#: front/src/components/audio/Player.vue:322
+#: front/src/components/audio/Player.vue:329
 msgctxt "Content/Queue/Message"
 msgid "Queue shuffled!"
 msgstr "تم خلط قائمة الإنتظار !"
@@ -3287,16 +3591,12 @@ msgstr "تم تحديث الإذاعة"
 
 #: front/src/components/library/Library.vue:13
 #: src/components/library/Radios.vue:142
+#: front/src/components/mixins/Translations.vue:104
+#: front/src/components/mixins/Translations.vue:105
 msgctxt "*/*/*"
 msgid "Radios"
 msgstr "الإذاعات"
 
-#: front/src/components/mixins/Translations.vue:92
-#: front/src/components/mixins/Translations.vue:93
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Radios"
-msgstr "الإذاعات"
-
 #: front/src/components/auth/ApplicationForm.vue:151
 msgctxt "Content/OAuth Scopes/Label/Verb"
 msgid "Read"
@@ -3323,15 +3623,15 @@ msgctxt "Content/Moderation/*/Noun"
 msgid "Reason"
 msgstr "السبب"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:251
-#: front/src/views/admin/moderation/DomainsDetail.vue:179
+#: front/src/views/admin/moderation/AccountsDetail.vue:252
+#: front/src/views/admin/moderation/DomainsDetail.vue:216
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Received library follows"
 msgstr "الطلبات الواردة لمتابعة المكتبات"
 
-#: front/src/components/manage/moderation/DomainsTable.vue:40
-#: front/src/components/mixins/Translations.vue:62
-#: front/src/components/mixins/Translations.vue:63
+#: front/src/components/manage/moderation/DomainsTable.vue:48
+#: front/src/components/mixins/Translations.vue:74
+#: front/src/components/mixins/Translations.vue:75
 msgctxt "Content/Moderation/*/Noun"
 msgid "Received messages"
 msgstr "الرسائل الواردة"
@@ -3351,6 +3651,12 @@ msgctxt "Content/Home/Title"
 msgid "Recently added"
 msgstr "تمت إضافتها مؤخرا"
 
+#: front/src/components/Home.vue:167
+#, fuzzy
+msgctxt "Content/Home/Title"
+msgid "Recently added albums"
+msgstr "تمت إضافتها مؤخرا"
+
 #: front/src/components/library/Home.vue:11
 msgctxt "Content/Home/Title"
 msgid "Recently favorited"
@@ -3379,14 +3685,14 @@ msgctxt "Popup/*/Message.Title"
 msgid "Refresh error"
 msgstr "إنعاش"
 
-#: front/src/views/admin/library/AlbumDetail.vue:50
-#: front/src/views/admin/library/ArtistDetail.vue:49
-#: front/src/views/admin/library/TrackDetail.vue:49
+#: front/src/views/admin/library/AlbumDetail.vue:56
+#: front/src/views/admin/library/ArtistDetail.vue:54
+#: front/src/views/admin/library/TrackDetail.vue:55
 msgctxt "Content/Moderation/Button/Verb"
 msgid "Refresh from remote server"
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:127
+#: front/src/views/admin/moderation/DomainsDetail.vue:164
 msgctxt "Content/Moderation/Button.Label/Verb"
 msgid "Refresh node info"
 msgstr "تحديث معلومات العُقدة"
@@ -3398,9 +3704,7 @@ msgstr "تحديث معلومات العُقدة"
 
 #: front/src/components/federation/FetchButton.vue:80
 msgctxt "Popup/*/Message.Content"
-msgid ""
-"Refresh request wasn't proceed in time by our server. It will be processed "
-"later."
+msgid "Refresh request wasn't proceed in time by our server. It will be processed later."
 msgstr ""
 
 #: front/src/components/federation/FetchButton.vue:16
@@ -3423,15 +3727,13 @@ msgctxt "Popup/*/Title"
 msgid "Refreshing object from remote…"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:9
-msgctxt "Content/Signup/Form/Paragraph"
-msgid ""
-"Registration are closed on this instance, you will need an invitation code "
-"to signup."
-msgstr ""
-"إنّ التسجيلات مُغلَقة حاليًا على هذا الخادوم، يلزمك رمز دعوة للتسجيل فيه."
+#: front/src/components/About.vue:86
+#, fuzzy
+msgctxt "*/*/*"
+msgid "Registrations"
+msgstr "الإدارة"
 
-#: front/src/components/manage/users/UsersTable.vue:71
+#: front/src/components/manage/users/UsersTable.vue:72
 msgctxt "Content/Admin/Table, User role"
 msgid "Regular user"
 msgstr "مستخدِم عادي"
@@ -3456,8 +3758,8 @@ msgid "Rejected"
 msgstr "تم رفضه"
 
 #: front/src/components/manage/library/AlbumsTable.vue:43
-#: front/src/components/mixins/Translations.vue:44 src/edits.js:28
-#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:54 src/edits.js:43
+#: front/src/components/mixins/Translations.vue:55
 msgctxt "Content/*/*/Noun"
 msgid "Release date"
 msgstr "آخِر زيارة"
@@ -3465,6 +3767,11 @@ msgstr "آخِر زيارة"
 #: front/src/components/library/FileUpload.vue:63
 msgctxt "Content/Library/Paragraph"
 msgid "Remaining storage space"
+msgstr "مساحة التخزين المتبقية"
+
+#: front/src/views/Notifications.vue:18 src/views/Notifications.vue:52
+msgctxt "Content/Notifications/Label"
+msgid "Remind me in:"
 msgstr ""
 
 #: front/src/views/content/remote/Home.vue:6
@@ -3474,9 +3781,7 @@ msgstr "المكتبات البُعدية"
 
 #: front/src/views/content/remote/Home.vue:7
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Remote libraries are owned by other users on the network. You can access "
-"them as long as they are public or you are granted access."
+msgid "Remote libraries are owned by other users on the network. You can access them as long as they are public or you are granted access."
 msgstr ""
 
 #: front/src/components/library/radios/Filter.vue:59
@@ -3494,6 +3799,13 @@ msgctxt "Content/Moderation/Button.Label"
 msgid "Remove filter"
 msgstr "حذف الصورة الرمزية"
 
+#: front/src/components/manage/moderation/DomainsTable.vue:198
+#: front/src/views/admin/moderation/DomainsDetail.vue:39
+#, fuzzy
+msgctxt "Content/Moderation/Action/Verb"
+msgid "Remove from allow-list"
+msgstr "حذف مِن المفضلة"
+
 #: front/src/components/favorites/TrackFavoriteIcon.vue:26
 msgctxt "Content/Track/Icon.Tooltip/Verb"
 msgid "Remove from favorites"
@@ -3501,39 +3813,104 @@ msgstr "حذف مِن المفضلة"
 
 #: front/src/views/content/libraries/Quota.vue:38
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded but yet to be processed tracks completely, adding the "
-"corresponding data to your quota."
+msgid "Removes uploaded but yet to be processed tracks completely, adding the corresponding data to your quota."
 msgstr ""
 
 #: front/src/views/content/libraries/Quota.vue:64
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded tracks skipped during the import processes completely, "
-"adding the corresponding data to your quota."
+msgid "Removes uploaded tracks skipped during the import processes completely, adding the corresponding data to your quota."
 msgstr ""
 
 #: front/src/views/content/libraries/Quota.vue:90
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded tracks that could not be processed by the server "
-"completely, adding the corresponding data to your quota."
+msgid "Removes uploaded tracks that could not be processed by the server completely, adding the corresponding data to your quota."
+msgstr ""
+
+#: front/src/components/audio/PlayButton.vue:94
+#, fuzzy
+msgctxt "*/Queue/Dropdown/Button/Title"
+msgid "Replace current queue"
+msgstr "أضِف إلى قائمة الانتظار الحالية"
+
+#: front/src/components/mixins/Report.vue:6 src/components/mixins/Report.vue:7
+msgctxt "*/Moderation/*/Verb"
+msgid "Report @%{ username }…"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:5
+msgctxt "Content/Moderation/Card/Short"
+msgid "Report %{ id }"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:139
+msgctxt "*/Moderation/Message"
+msgid "Report successfully submitted, thank you"
+msgstr ""
+
+#: front/src/components/mixins/Report.vue:36
+#: src/components/mixins/Report.vue:37
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this album…"
+msgstr "شغِّل هذا المَقطَع"
+
+#: front/src/components/mixins/Report.vue:50
+#: src/components/mixins/Report.vue:51
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this artist…"
+msgstr "شغِّل هذا المَقطَع"
+
+#: front/src/components/mixins/Report.vue:72
+#: src/components/mixins/Report.vue:73
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this library…"
+msgstr "أتريد حذف هذه المكتبة؟"
+
+#: front/src/components/mixins/Report.vue:61
+#: src/components/mixins/Report.vue:62
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this playlist…"
+msgstr "أضفه إلى قائمة التشغيل هذه"
+
+#: front/src/components/mixins/Report.vue:23
+#: src/components/mixins/Report.vue:24
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this track…"
+msgstr "شغِّل هذا المَقطَع"
+
+#: front/src/components/audio/PlayButton.vue:95
+msgctxt "*/Moderation/*/Button/Label,Verb"
+msgid "Report…"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:117
+msgctxt "Content/*/*/Short"
+msgid "Reported object"
+msgstr ""
+
+#: front/src/views/admin/moderation/Base.vue:5
+#: front/src/views/admin/moderation/ReportsList.vue:3
+#: front/src/views/admin/moderation/ReportsList.vue:208
+msgctxt "*/Moderation/*/Noun"
+msgid "Reports"
 msgstr ""
 
-#: front/src/components/auth/SubsonicTokenForm.vue:33
-#: front/src/components/auth/SubsonicTokenForm.vue:36
+#: front/src/components/auth/SubsonicTokenForm.vue:38
+#: front/src/components/auth/SubsonicTokenForm.vue:41
 msgctxt "*/Settings/Button.Label/Verb"
 msgid "Request a new password"
 msgstr "طلب كلمة سرية جديدة"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:34
+#: front/src/components/auth/SubsonicTokenForm.vue:39
 msgctxt "Popup/Settings/Title"
 msgid "Request a new Subsonic API password?"
-msgstr ""
-"متأكد مِن أنك تريد إعادة طلب كلمة سرية جديدة لواجهة برمجة تطبيقات صاب سونيك "
-"Subsonic APIØŸ"
+msgstr "متأكد مِن أنك تريد إعادة طلب كلمة سرية جديدة لواجهة برمجة تطبيقات صاب سونيك Subsonic API؟"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:42
+#: front/src/components/auth/SubsonicTokenForm.vue:47
 msgctxt "Content/Settings/Button.Label/Verb"
 msgid "Request a password"
 msgstr "طلب كلمة سرية"
@@ -3543,35 +3920,52 @@ msgctxt "Popup/*/Loading.Title"
 msgid "Requesting a fetch…"
 msgstr ""
 
-#: front/src/components/library/EditForm.vue:82
+#: front/src/components/library/EditForm.vue:94
 msgctxt "Content/Library/Button.Label"
-msgid "Reset to initial value: %{ value }"
+msgid "Reset to initial value"
 msgstr ""
 
-#: front/src/components/auth/Login.vue:35 src/views/auth/PasswordReset.vue:4
-#: front/src/views/auth/PasswordReset.vue:53
+#: front/src/components/auth/LoginForm.vue:34
+#: src/views/auth/PasswordReset.vue:4 front/src/views/auth/PasswordReset.vue:53
 msgctxt "*/Login/*/Verb"
 msgid "Reset your password"
 msgstr "إعادة تعيين كلمتك السرية"
 
+#: front/src/components/manage/moderation/ReportCard.vue:83
+#, fuzzy
+msgctxt "Content/*/*/Noun"
+msgid "Resolution date"
+msgstr "تاريخ الإنشاء"
+
+#: front/src/components/manage/moderation/ReportCard.vue:218
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Resolve"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:62
+#: front/src/views/admin/moderation/ReportsList.vue:20
+msgctxt "Content/*/*/Short"
+msgid "Resolved"
+msgstr ""
+
 #: front/src/views/content/libraries/FilesTable.vue:223
 msgctxt "Content/Library/Dropdown/Verb"
 msgid "Restart import"
 msgstr "إعادة محاولة الإستيراد"
 
+#: front/src/components/library/EditForm.vue:31
+msgctxt "Content/Library/Button.Label"
+msgid "Restrict to unreviewed edits"
+msgstr ""
+
 #: front/src/components/favorites/List.vue:39
-#: src/components/library/Albums.vue:30
-#: front/src/components/library/Artists.vue:30
+#: src/components/library/Albums.vue:34
+#: front/src/components/library/Artists.vue:34
 #: src/components/library/Radios.vue:52 front/src/views/playlists/List.vue:32
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Results per page"
 msgstr "عدد نتائج البحث في كل صفحة"
 
-#: front/src/components/library/EditForm.vue:31
-msgctxt "Content/Library/Button.Label"
-msgid "Retrict to unreviewed edits"
-msgstr ""
-
 #: front/src/views/auth/EmailConfirm.vue:17
 msgctxt "Content/Signup/Link/Verb"
 msgid "Return to login"
@@ -3602,52 +3996,54 @@ msgctxt "Content/Moderation/Card.Title/Noun"
 msgid "Rule"
 msgstr "القاعدة"
 
-#: front/src/components/admin/SettingsGroup.vue:67
+#: front/src/components/About.vue:28 src/components/About.vue:56
+#, fuzzy
+msgctxt "Content/About/Header"
+msgid "Rules"
+msgstr "القاعدة"
+
+#: front/src/components/admin/SettingsGroup.vue:75
 #: front/src/components/library/radios/Builder.vue:34
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Save"
 msgstr "احفظ"
 
-#: front/src/views/content/remote/Card.vue:175
+#: front/src/views/content/remote/Card.vue:203
 msgctxt "Content/Library/Message"
 msgid "Scan launched"
 msgstr "بدأ الاستكشاف"
 
-#: front/src/views/content/remote/Card.vue:67
+#: front/src/views/content/remote/Card.vue:80
 msgctxt "Content/Library/Card.Button.Label/Verb"
 msgid "Scan now"
 msgstr "قم بالمسح الآن"
 
-#: front/src/views/content/remote/Card.vue:35
+#: front/src/views/content/remote/Card.vue:48
 msgctxt "Content/Library/Card.List item"
 msgid "Scan pending"
 msgstr "مسح مُعلَّق"
 
-#: front/src/views/content/remote/Card.vue:176
+#: front/src/views/content/remote/Card.vue:204
 msgctxt "Content/Library/Message"
 msgid "Scan skipped (previous scan is too recent)"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:47
+#: front/src/views/content/remote/Card.vue:60
 msgctxt "Content/Library/Card.List item"
 msgid "Scanned"
 msgstr "تم مسحها"
 
-#: front/src/views/content/remote/Card.vue:51
+#: front/src/views/content/remote/Card.vue:64
 msgctxt "Content/Library/Card.List item"
 msgid "Scanned with errors"
 msgstr "تمت عملية المسح بأخطاء"
 
-#: front/src/views/content/remote/Card.vue:39
+#: front/src/views/content/remote/Card.vue:52
 msgctxt "Content/Library/Card.List item"
 msgid "Scanning… (%{ progress }%)"
 msgstr "جارٍ المسح… (%{ progress }%)"
 
 #: front/src/components/auth/ApplicationForm.vue:22
-msgctxt "Content/Applications/Input.Label/Noun"
-msgid "Scopes"
-msgstr ""
-
 #: front/src/components/auth/Settings.vue:226
 msgctxt "Content/*/*/Noun"
 msgid "Scopes"
@@ -3660,12 +4056,14 @@ msgstr ""
 #: front/src/components/manage/library/ArtistsTable.vue:5
 #: front/src/components/manage/library/EditsCardList.vue:6
 #: front/src/components/manage/library/LibrariesTable.vue:5
+#: front/src/components/manage/library/TagsTable.vue:5
 #: front/src/components/manage/library/TracksTable.vue:5
 #: front/src/components/manage/library/UploadsTable.vue:5
 #: front/src/components/manage/moderation/AccountsTable.vue:5
 #: front/src/components/manage/moderation/DomainsTable.vue:5
 #: front/src/components/manage/users/InvitationsTable.vue:5
 #: front/src/components/manage/users/UsersTable.vue:5
+#: front/src/views/admin/moderation/ReportsList.vue:8
 #: front/src/views/content/libraries/FilesTable.vue:5
 #: src/views/playlists/List.vue:13
 msgctxt "Content/Search/Input.Label/Noun"
@@ -3678,6 +4076,7 @@ msgid "Search a remote library"
 msgstr "البحث عن مكتبة بُعدية"
 
 #: front/src/components/manage/library/EditsCardList.vue:211
+#: front/src/views/admin/moderation/ReportsList.vue:207
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by account, summary, domain…"
 msgstr "البحث حسب العنوان أو إسم فنان أو نطاق…"
@@ -3712,7 +4111,13 @@ msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by domain, username, bio…"
 msgstr "البحث عبر اسم نطاق أو مستخدِم أو نبذة…"
 
-#: front/src/components/manage/moderation/DomainsTable.vue:151
+#: front/src/components/manage/library/TagsTable.vue:165
+#, fuzzy
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by name"
+msgstr "البحث باستخدام اسم…"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:168
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by name…"
 msgstr "البحث باستخدام اسم…"
@@ -3727,12 +4132,12 @@ msgctxt "Content/Admin/Input.Placeholder/Verb"
 msgid "Search by username, e-mail address, code…"
 msgstr "البحث باسم مستخدِم أو عنوان بريد إلكتروني أو رمز…"
 
-#: front/src/components/manage/users/UsersTable.vue:163
+#: front/src/components/manage/users/UsersTable.vue:164
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by username, e-mail address, name…"
 msgstr "البحث باسم مستخدِم أو عنوان بريد إلكتروني أو إسم…"
 
-#: front/src/components/audio/SearchBar.vue:20
+#: front/src/components/audio/SearchBar.vue:27
 msgctxt "Sidebar/Search/Input.Placeholder"
 msgid "Search for artists, albums, tracks…"
 msgstr "البحث عن فنانين أو ألبومات أو مَقاطِع صوتية…"
@@ -3742,16 +4147,30 @@ msgctxt "Content/Search/Title"
 msgid "Search for some music"
 msgstr "البحث عن بعض مِن الموسيقى"
 
-#: front/src/components/library/AlbumBase.vue:57
-#: front/src/components/library/ArtistBase.vue:68
-#: front/src/components/library/TrackBase.vue:76
+#: front/src/components/library/TagsSelector.vue:6
+#, fuzzy
+msgctxt "*/Dropdown/Placeholder/Verb"
+msgid "Search for tags…"
+msgstr "البحث باستخدام اسم…"
+
+#: front/src/components/library/AlbumBase.vue:66
+#: front/src/components/library/ArtistBase.vue:77
+#: front/src/components/library/TrackBase.vue:82
+#, fuzzy
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Search on Discogs"
+msgstr "البحث عن بعض مِن الموسيقى"
+
+#: front/src/components/library/AlbumBase.vue:58
+#: front/src/components/library/ArtistBase.vue:69
+#: front/src/components/library/TrackBase.vue:74
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Search on Wikipedia"
 msgstr "البحث في ويكيبيديا"
 
 #: front/src/components/library/Library.vue:35
-#: src/views/admin/library/Base.vue:32
-#: front/src/views/admin/moderation/Base.vue:22
+#: src/views/admin/library/Base.vue:35
+#: front/src/views/admin/moderation/Base.vue:44
 #: src/views/admin/users/Base.vue:21 front/src/views/content/Base.vue:19
 msgctxt "Menu/*/Hidden text"
 msgid "Secondary menu"
@@ -3762,6 +4181,26 @@ msgctxt "Content/Admin/Menu.Title"
 msgid "Sections"
 msgstr "الأقسام"
 
+#: front/src/components/ShortcutsModal.vue:108
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek backwards 30s"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:100
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek backwards 5s"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:112
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek forwards 30s"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:104
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek forwards 5s"
+msgstr ""
+
 #: front/src/components/library/radios/Builder.vue:46
 msgctxt "Content/Radio/Dropdown.Placeholder/Verb"
 msgid "Select a filter"
@@ -3783,9 +4222,14 @@ msgctxt "Content/*/Link/Verb"
 msgid "Select only current page"
 msgstr "تحديد الصفحة الحالية فقط"
 
-#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:108
-#: front/src/components/manage/users/UsersTable.vue:181
-#: front/src/views/admin/moderation/AccountsDetail.vue:506
+#: front/src/components/Home.vue:43
+msgctxt "Content/Home/Link"
+msgid "Server rules"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:112
+#: front/src/components/manage/users/UsersTable.vue:182
+#: front/src/views/admin/moderation/AccountsDetail.vue:526
 msgctxt "*/*/*/Noun"
 msgid "Settings"
 msgstr "الإعدادات"
@@ -3807,17 +4251,25 @@ msgstr "رابط المشاركة"
 
 #: front/src/views/content/libraries/Detail.vue:15
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Share this link with other users so they can request access to your library."
-msgstr ""
-"قم بمشاركة هذا الرابط مع مستخدمين آخرين ليتمكنوا مِن طلب الوصول إلى مكتبتك."
+msgid "Share this link with other users so they can request access to your library."
+msgstr "قم بمشاركة هذا الرابط مع مستخدمين آخرين ليتمكنوا مِن طلب الوصول إلى مكتبتك."
 
 #: front/src/views/content/libraries/Detail.vue:14
-#: front/src/views/content/remote/Card.vue:77
+#: front/src/views/content/remote/Card.vue:90
 msgctxt "Content/Library/Title"
 msgid "Sharing link"
 msgstr "رابط المشاركة"
 
+#: front/src/components/audio/EmbedWizard.vue:5
+msgctxt "Content/Embed/Message"
+msgid "Sharing will not work because this pod doesn't allow anonymous users to access content."
+msgstr ""
+
+#: front/src/components/About.vue:156
+msgctxt "*/*/*/Verb"
+msgid "Show"
+msgstr ""
+
 #: front/src/components/audio/album/Card.vue:38
 msgctxt "Content/Album/Card.Link/Verb"
 msgid "Show %{ count } more track"
@@ -3829,33 +4281,44 @@ msgstr[3] "اعرض %{ count } مَقطَع"
 msgstr[4] "اعرض %{ count } مَقاطِع"
 msgstr[5] "اعرض %{ count } مَقاطِع"
 
-#: front/src/components/audio/artist/Card.vue:30
-msgctxt "Content/Artist/Card.Link"
-msgid "Show 1 more album"
-msgid_plural "Show %{ count } more albums"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-msgstr[5] ""
+#: front/src/components/tags/List.vue:11
+#, fuzzy
+msgctxt "Content/*/Button/Label/Verb"
+msgid "Show 1 more tag"
+msgid_plural "Show %{ count } more tags"
+msgstr[0] "اعرض %{ count } مقاطع"
+msgstr[1] "اعرض %{ count } مَقطَع"
+msgstr[2] "اعرض %{ count } مَقاطِع"
+msgstr[3] "اعرض %{ count } مَقطَع"
+msgstr[4] "اعرض %{ count } مَقاطِع"
+msgstr[5] "اعرض %{ count } مَقاطِع"
 
 #: front/src/components/library/EditForm.vue:21
 msgctxt "Content/Library/Button.Label"
 msgid "Show all edits"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:42
+#: front/src/components/ShortcutsModal.vue:60
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Show available keyboard shortcuts"
 msgstr "عرض اختصارات لوحة المفاتيح المتوفّرة"
 
-#: front/src/views/Notifications.vue:7
+#: front/src/components/common/ExpandableDiv.vue:7
+msgctxt "*/*/Button,Label"
+msgid "Show less"
+msgstr ""
+
+#: front/src/components/common/ExpandableDiv.vue:8
+msgctxt "*/*/Button,Label"
+msgid "Show more"
+msgstr ""
+
+#: front/src/views/Notifications.vue:72
 msgctxt "Content/Notifications/Form.Label/Verb"
 msgid "Show read notifications"
 msgstr "عرض الإشعارات المقروءة"
 
-#: front/src/components/forms/PasswordInput.vue:26
+#: front/src/components/forms/PasswordInput.vue:42
 msgctxt "Content/Settings/Button.Tooltip/Verb"
 msgid "Show/hide password"
 msgstr "إظهار/إخفاء الكلمة السرية"
@@ -3864,56 +4327,64 @@ msgstr "إظهار/إخفاء الكلمة السرية"
 #: front/src/components/manage/library/ArtistsTable.vue:84
 #: front/src/components/manage/library/EditsCardList.vue:72
 #: front/src/components/manage/library/LibrariesTable.vue:110
+#: front/src/components/manage/library/TagsTable.vue:79
 #: front/src/components/manage/library/TracksTable.vue:95
 #: front/src/components/manage/library/UploadsTable.vue:144
 #: front/src/components/manage/moderation/AccountsTable.vue:88
-#: front/src/components/manage/moderation/DomainsTable.vue:74
+#: front/src/components/manage/moderation/DomainsTable.vue:85
 #: front/src/components/manage/users/InvitationsTable.vue:76
-#: front/src/components/manage/users/UsersTable.vue:87
+#: front/src/components/manage/users/UsersTable.vue:88
 #: front/src/views/content/libraries/FilesTable.vue:117
 msgctxt "Content/*/Paragraph"
 msgid "Showing results %{ start }-%{ end } on %{ total }"
 msgstr "عرض النتائج %{ start }-%{ end } مِن %{ total }"
 
-#: front/src/components/ShortcutsModal.vue:83
+#: front/src/components/ShortcutsModal.vue:140
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Shuffle queue"
 msgstr "خلط قائمة الإنتظار"
 
-#: front/src/components/audio/Player.vue:641
+#: front/src/components/audio/Player.vue:667
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Shuffle your queue"
 msgstr "خلط قائمة الإنتظار"
 
-#: front/src/components/auth/Signup.vue:97
+#: front/src/components/Home.vue:103
+#, fuzzy
 msgctxt "*/Signup/Title"
-msgid "Sign Up"
+msgid "Sign up"
 msgstr "التسجيل"
 
+#: front/src/views/auth/Signup.vue:37
+msgctxt "*/Signup/Title"
+msgid "Sign Up"
+msgstr "التسجيل"
+
+#: front/src/components/Home.vue:107
+msgctxt "Content/Home/Paragraph"
+msgid "Sign up now to keep a track of your favorites, create playlists, discover new content and much more!"
+msgstr ""
+
 #: front/src/components/manage/users/UsersTable.vue:40
 msgctxt "Content/Admin/Table.Label/Short, Noun (Value is a date)"
 msgid "Sign-up"
 msgstr "التسجيل"
 
-#: front/src/components/mixins/Translations.vue:57
-#: front/src/views/admin/moderation/AccountsDetail.vue:197
-#: front/src/components/mixins/Translations.vue:58
+#: front/src/components/mixins/Translations.vue:69
+#: front/src/views/admin/moderation/AccountsDetail.vue:198
+#: front/src/components/mixins/Translations.vue:70
 msgctxt "Content/Admin/Table.Label/Noun"
 msgid "Sign-up date"
 msgstr "تاريخ التسجيل"
 
-#: front/src/components/manage/library/UploadsTable.vue:65
-#: front/src/views/admin/library/UploadDetail.vue:219
-msgctxt "Content/*/*/Noun"
-msgid "Size"
-msgstr "الحجم"
-
 #: front/src/components/library/FileUpload.vue:94
 #: front/src/components/library/TrackDetail.vue:39
-#: front/src/components/mixins/Translations.vue:54
+#: front/src/components/manage/library/UploadsTable.vue:65
+#: front/src/components/mixins/Translations.vue:66
+#: front/src/views/admin/library/UploadDetail.vue:219
 #: front/src/views/content/libraries/FilesTable.vue:61
-#: front/src/components/mixins/Translations.vue:55
-msgctxt "Content/Library/*/in MB"
+#: front/src/components/mixins/Translations.vue:67
+msgctxt "Content/*/*/Noun"
 msgid "Size"
 msgstr "الحجم"
 
@@ -3930,7 +4401,7 @@ msgctxt "Content/Library/Label"
 msgid "Skipped files"
 msgstr "الملفات التي تمّ تجاهلها"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:89
+#: front/src/views/admin/moderation/DomainsDetail.vue:126
 msgctxt "Content/Moderation/Table.Label"
 msgid "Software"
 msgstr "البرمجيات"
@@ -3945,87 +4416,65 @@ msgctxt "Content/*/Paragraph"
 msgid "Sorry, the page you asked for does not exist:"
 msgstr "المعذرة، إنّ الصفحة التي قمت بطلبها غير موجودة :"
 
-#: front/src/components/Footer.vue:49
+#: front/src/components/Footer.vue:57
 msgctxt "Footer/*/List item.Link"
 msgid "Source code"
 msgstr "شفرة المصدر"
 
 #: front/src/components/auth/Profile.vue:23
-#: front/src/components/manage/users/UsersTable.vue:70
+#: front/src/components/manage/users/UsersTable.vue:71
 msgctxt "Content/Profile/User role"
 msgid "Staff member"
 msgstr "عضو في الفريق"
 
-#: front/src/components/audio/PlayButton.vue:23
+#: front/src/components/audio/PlayButton.vue:27
 #: src/components/radios/Button.vue:4
 msgctxt "*/Queue/Button.Label/Short, Verb"
 msgid "Start radio"
 msgstr "إيقاف الإذاعة"
 
-#: front/src/views/admin/Settings.vue:86
-msgctxt "Content/Admin/Menu"
+#: front/src/components/About.vue:170 src/components/Home.vue:53
+#: front/src/views/admin/Settings.vue:87
+#, fuzzy
+msgctxt "Content/Home/Header"
 msgid "Statistics"
 msgstr "الإحصائيات"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:490
+#: front/src/views/admin/moderation/AccountsDetail.vue:510
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this account"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this account"
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:371
+#: front/src/views/admin/moderation/DomainsDetail.vue:418
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this domain"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this domain"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:329
-#: front/src/views/admin/library/ArtistDetail.vue:328
-#: front/src/views/admin/library/LibraryDetail.vue:316
-#: front/src/views/admin/library/TrackDetail.vue:371
+#: front/src/views/admin/library/AlbumDetail.vue:346
+#: front/src/views/admin/library/ArtistDetail.vue:345
+#: front/src/views/admin/library/LibraryDetail.vue:356
+#: front/src/views/admin/library/TagDetail.vue:210
+#: front/src/views/admin/library/TrackDetail.vue:389
 #: front/src/views/admin/library/UploadDetail.vue:335
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this object"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this object"
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:115
-msgctxt "Content/Moderation/Table.Label (Value is Error message)"
-msgid "Status"
-msgstr "الحالة"
-
 #: front/src/components/library/FileUpload.vue:95
-msgctxt "Content/Library/Table.Label (Value is Uploading/Uploaded/Error)"
-msgid "Status"
-msgstr "الحالة"
-
-#: front/src/views/content/libraries/Detail.vue:28
-msgctxt "Content/Library.Federation/Table.Label (Value is Approved/Rejected)"
-msgid "Status"
-msgstr "الحالة"
-
+#: front/src/components/manage/library/EditsCardList.vue:12
+#: front/src/components/manage/moderation/ReportCard.vue:57
 #: front/src/components/manage/users/InvitationsTable.vue:17
 #: front/src/components/manage/users/InvitationsTable.vue:39
-msgctxt "Content/Admin/*/Noun (Value is Used/Not used)"
-msgid "Status"
-msgstr "الحالة"
-
 #: front/src/components/manage/users/UsersTable.vue:43
-msgctxt "Content/Admin/Table.Label/Noun (Value is Regular user/Admin)"
-msgid "Status"
-msgstr "الحالة"
-
-#: front/src/components/manage/library/EditsCardList.vue:12
-msgctxt ""
-"Content/Search/Dropdown.Label (Value is All/Pending "
-"review/Approved/Rejected)"
+#: front/src/views/admin/moderation/DomainsDetail.vue:152
+#: front/src/views/admin/moderation/ReportsList.vue:14
+#: front/src/views/content/libraries/Detail.vue:28
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Status"
 msgstr "الحالة"
 
-#: front/src/components/Sidebar.vue:174 src/components/radios/Button.vue:3
+#: front/src/components/Sidebar.vue:178 src/components/radios/Button.vue:3
 msgctxt "*/Player/Button.Label/Short, Verb"
 msgid "Stop radio"
 msgstr "إيقاف الإذاعة"
@@ -4035,7 +4484,7 @@ msgctxt "*/*/Button.Label/Verb"
 msgid "Submit"
 msgstr "إرسال"
 
-#: front/src/components/library/EditForm.vue:98
+#: front/src/components/library/EditForm.vue:110
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Submit and apply edit"
 msgstr ""
@@ -4045,12 +4494,24 @@ msgctxt "Content/Library/Button.Label"
 msgid "Submit another edit"
 msgstr ""
 
-#: front/src/components/library/EditForm.vue:99
+#: front/src/components/moderation/ReportModal.vue:64
+#, fuzzy
+msgctxt "Popup/*/Button.Label"
+msgid "Submit report"
+msgstr "إرسال"
+
+#: front/src/components/library/EditForm.vue:111
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Submit suggestion"
 msgstr ""
 
-#: front/src/views/admin/Settings.vue:85
+#: front/src/components/manage/moderation/ReportCard.vue:17
+#, fuzzy
+msgctxt "Content/Moderation/*"
+msgid "Submitted by"
+msgstr "إرسال"
+
+#: front/src/views/admin/Settings.vue:86
 msgctxt "Content/Admin/Menu"
 msgid "Subsonic"
 msgstr "صاب سونيك"
@@ -4090,45 +4551,72 @@ msgctxt "Content/Library/Tab.Title/Short"
 msgid "Summary"
 msgstr "الملخص"
 
-#: front/src/components/library/EditForm.vue:87
+#: front/src/components/library/EditForm.vue:99
 msgctxt "*/*/*"
 msgid "Summary (optional)"
 msgstr ""
 
-#: front/src/components/Footer.vue:39
+#: front/src/components/Footer.vue:47
 msgctxt "Footer/*/Listitem.Link"
 msgid "Support forum"
 msgstr "المنتدى"
 
+#: front/src/views/Notifications.vue:10
+msgctxt "Content/Notifications/Header"
+msgid "Support this Funkwhale pod"
+msgstr ""
+
 #: front/src/components/library/FileUpload.vue:85
 msgctxt "Content/Library/Paragraph"
 msgid "Supported extensions: %{ extensions }"
-msgstr ""
+msgstr "امتدادات الملفات المدعومة: %{ extensions }"
 
 #: front/src/components/playlists/Editor.vue:9
 msgctxt "Content/Playlist/Paragraph"
 msgid "Syncing changes to server…"
 msgstr "مزامنة التغييرات مع الخادم…"
 
-#: front/src/components/audio/EmbedWizard.vue:25
+#: front/src/components/audio/SearchBar.vue:35
+msgctxt "*/*/*/Noun"
+msgid "Tag"
+msgstr ""
+
+#: front/src/views/admin/library/TagDetail.vue:61
+#, fuzzy
+msgctxt "Content/Moderation/Title"
+msgid "Tag data"
+msgstr "اسم المَقطَع"
+
+#: front/src/components/library/Albums.vue:23
+#: src/components/library/Artists.vue:15
+#: front/src/views/admin/library/Base.vue:23
+#: src/views/admin/library/TagsList.vue:24 front/src/edits.js:24
+#: src/edits.js:50 src/edits.js:91 src/entities.js:120
+msgctxt "*/*/*/Noun"
+msgid "Tags"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:44
+#: front/src/components/mixins/Translations.vue:45
+#, fuzzy
+msgctxt "Content/Moderation/Dropdown"
+msgid "Takedown request"
+msgstr "طلبات المتابَعة المعلَّقة"
+
+#: front/src/components/About.vue:35 src/components/About.vue:61
+msgctxt "Content/About/Header"
+msgid "Terms and privacy policy"
+msgstr ""
+
+#: front/src/components/audio/EmbedWizard.vue:35
 #: front/src/components/common/CopyInput.vue:3
 msgctxt "Content/*/Paragraph"
 msgid "Text copied to clipboard!"
 msgstr "تم نسخ النص إلى الحافظة!"
 
-#: front/src/components/Home.vue:26
-msgctxt "Content/Home/Paragraph"
-msgid ""
-"That's simple: we loved Grooveshark and we want to build something even "
-"better."
-msgstr ""
-"حسنًا الأمر سهل : أحببنا غروف شارْك و أردنا تصميم مشروع أحسَن منه بكثير."
-
-#: front/src/views/admin/library/AlbumDetail.vue:75
+#: front/src/views/admin/library/AlbumDetail.vue:81
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The album will be removed, as well as associated uploads, tracks, favorites "
-"and listening history. This action is irreversible."
+msgid "The album will be removed, as well as associated uploads, tracks, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/components/auth/Authorize.vue:39
@@ -4136,14 +4624,12 @@ msgctxt "Content/Auth/Paragraph"
 msgid "The application is also requesting the following unknown permissions:"
 msgstr ""
 
-#: front/src/views/admin/library/ArtistDetail.vue:74
+#: front/src/views/admin/library/ArtistDetail.vue:79
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The artist will be removed, as well as associated uploads, tracks, albums, "
-"favorites and listening history. This action is irreversible."
+msgid "The artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible."
 msgstr ""
 
-#: front/src/components/Footer.vue:53
+#: front/src/components/Footer.vue:61
 msgctxt "Footer/*/List item.Link"
 msgid "The funkwhale logo was kindly designed and provided by Francis Gading."
 msgstr "تم تصميم شعار فانك وايل funkwhale بفضل و كَرَم Francis Gading."
@@ -4155,23 +4641,17 @@ msgstr ""
 
 #: front/src/views/content/libraries/Form.vue:34
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"The library and all its tracks will be deleted. This can not be undone."
-msgstr ""
-"سوف يتم حذف المكتبة و كل ما تحتويه مِن مقاطِع. لا يمكن الغاء هذا الإجراء."
+msgid "The library and all its tracks will be deleted. This can not be undone."
+msgstr "سوف يتم حذف المكتبة و كل ما تحتويه مِن مقاطِع. لا يمكن الغاء هذا الإجراء."
 
 #: front/src/views/admin/library/LibraryDetail.vue:61
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The library will be removed, as well as associated uploads, and follows. "
-"This action is irreversible."
+msgid "The library will be removed, as well as associated uploads, and follows. This action is irreversible."
 msgstr ""
 
 #: front/src/components/library/ImportStatusModal.vue:140
 msgctxt "Popup/Import/Error.Label"
-msgid ""
-"The metadata included in the file is invalid or some mandatory fields are "
-"missing."
+msgid "The metadata included in the file is invalid or some mandatory fields are missing."
 msgstr ""
 
 #: front/src/components/library/FileUpload.vue:38
@@ -4184,14 +4664,16 @@ msgctxt "Sidebar/Player/Error message.Paragraph"
 msgid "The next track will play automatically in a few seconds…"
 msgstr "سيتم تشغيل المقطَع اللاحق تلقائيا خلال بضع ثوان…"
 
-#: front/src/components/Home.vue:116
-msgctxt "Content/Home/List item"
-msgid ""
-"The plaform is free and open-source, you can install it and modify it "
-"without worries"
+#: front/src/components/manage/moderation/NotesThread.vue:27
+#, fuzzy
+msgctxt "Content/Moderation/Paragraph"
+msgid "The note will be removed. This action is irreversible."
+msgstr "لا يمكن الغاء هذا الإجراء."
+
+#: front/src/components/manage/moderation/ReportCard.vue:120
+msgctxt "Content/Moderation/Message"
+msgid "The object associated with this report was deleted."
 msgstr ""
-"المنصّة مجانية و مفتوحة المصدر، بإمكانكم تنصيبها و تعديلها كما يحلو لكم دون "
-"قيود"
 
 #: front/src/components/playlists/Form.vue:14
 msgctxt "Content/Playlist/Error message.Title"
@@ -4205,46 +4687,43 @@ msgstr "ردَّ الخادم البُعدي بإجابة HTTP %{ status }"
 
 #: front/src/components/federation/FetchButton.vue:13
 msgctxt "Popup/*/Message.Content"
-msgid ""
-"The remote server answered, but returned data was unsupported by Funkwhale."
+msgid "The remote server answered, but returned data was unsupported by Funkwhale."
 msgstr ""
 
 #: front/src/components/federation/FetchButton.vue:44
 msgctxt "*/*/Error"
-msgid "The remote server didn't answered fast enough"
+msgid "The remote server didn't respond quickly enough"
 msgstr ""
 
 #: front/src/components/federation/FetchButton.vue:50
 msgctxt "*/*/Error"
-msgid "The return server returned invalid JSON or JSON-LD data"
+msgid "The remote server returned invalid JSON or JSON-LD data"
 msgstr ""
 
 #: front/src/components/manage/library/AlbumsTable.vue:189
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected albums will be removed, as well as associated tracks, uploads, "
-"favorites and listening history. This action is irreversible."
+msgid "The selected albums will be removed, as well as associated tracks, uploads, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/components/manage/library/ArtistsTable.vue:179
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected artist will be removed, as well as associated uploads, tracks, "
-"albums, favorites and listening history. This action is irreversible."
+msgid "The selected artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/components/manage/library/LibrariesTable.vue:206
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected library will be removed, as well as associated uploads and "
-"follows. This action is irreversible."
+msgid "The selected library will be removed, as well as associated uploads and follows. This action is irreversible."
 msgstr ""
 
+#: front/src/components/manage/library/TagsTable.vue:180
+#, fuzzy
+msgctxt "Popup/*/Paragraph"
+msgid "The selected tag will be removed and unlinked with existing content, if any. This action is irreversible."
+msgstr "لا يمكن الغاء هذا الإجراء."
+
 #: front/src/components/manage/library/TracksTable.vue:189
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected tracks will be removed, as well as associated uploads, "
-"favorites and listening history. This action is irreversible."
+msgid "The selected tracks will be removed, as well as associated uploads, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/components/manage/library/UploadsTable.vue:256
@@ -4260,15 +4739,19 @@ msgstr ""
 #: front/src/components/auth/SubsonicTokenForm.vue:4
 msgctxt "Content/Settings/Paragraph"
 msgid "The Subsonic API is not available on this Funkwhale instance."
-msgstr ""
-"واجهة برمجة تطبيقات صاب سونيك غير متوفرة غلى مثيل خادوم فانك وايل الحالي."
+msgstr "واجهة برمجة تطبيقات صاب سونيك غير متوفرة غلى مثيل خادوم فانك وايل الحالي."
 
 #: front/src/components/library/EditCard.vue:96
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"The suggestion will be completely removed, this action is irreversible."
+msgid "The suggestion will be completely removed, this action is irreversible."
 msgstr ""
 
+#: front/src/views/admin/library/TagDetail.vue:44
+#, fuzzy
+msgctxt "Content/Moderation/Paragraph"
+msgid "The tag will be removed and unlinked from any existing entity. This action is irreversible."
+msgstr "لا يمكن الغاء هذا الإجراء."
+
 #: front/src/components/playlists/PlaylistModal.vue:34
 msgctxt "Popup/Playlist/Error message.Title"
 msgid "The track can't be added to a playlist"
@@ -4279,11 +4762,9 @@ msgctxt "Sidebar/Player/Error message.Title"
 msgid "The track cannot be loaded"
 msgstr ""
 
-#: front/src/views/admin/library/TrackDetail.vue:74
+#: front/src/views/admin/library/TrackDetail.vue:80
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The track will be removed, as well as associated uploads, favorites and "
-"listening history. This action is irreversible."
+msgid "The track will be removed, as well as associated uploads, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/views/admin/library/UploadDetail.vue:68
@@ -4316,21 +4797,36 @@ msgctxt "Content/Artist/Paragraph"
 msgid "This artist is present in the following libraries:"
 msgstr "هذا الفنان متوفر على المكتبات التالية:"
 
+#: front/src/components/manage/moderation/DomainsTable.vue:169
+#, fuzzy
+msgctxt "Content/Moderation/Popup"
+msgid "This domain is present in your allow-list"
+msgstr "هذا الفنان متوفر على المكتبات التالية:"
+
 #: front/src/views/admin/moderation/AccountsDetail.vue:84
-#: front/src/views/admin/moderation/DomainsDetail.vue:48
+#: front/src/views/admin/moderation/DomainsDetail.vue:76
 msgctxt "Content/Moderation/Card.Title"
 msgid "This domain is subject to specific moderation rules"
 msgstr ""
 
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:16
+msgctxt "Content/Moderation/Card.Title"
+msgid "This entity is subject to specific moderation rules"
+msgstr ""
+
 #: front/src/views/content/Home.vue:9
 msgctxt "Content/Library/Paragraph"
 msgid "This instance offers up to %{quota} of storage space for every user."
 msgstr "مثيل الخادوم هذا يُتيح مساحة تخرين تُقدَّر بـ %{quota} لكل مستخدِم."
 
+#: front/src/components/auth/Settings.vue:300
+msgctxt "Popup/Settings/Paragraph"
+msgid "This is irreversible and will permanently remove your data from our servers. You will we immediatly logged out."
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:165
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"This is the list of applications that have access to your account data."
+msgid "This is the list of applications that have access to your account data."
 msgstr ""
 
 #: front/src/components/auth/Settings.vue:218
@@ -4348,23 +4844,19 @@ msgctxt "Content/Library/Input.Placeholder"
 msgid "This library contains my personal music, I hope you like it."
 msgstr "تحتوي هذه المكتبة على الموسيقى الخاصة بي، أتمنى أنها ستلقَى إعجابك."
 
-#: front/src/views/content/remote/Card.vue:141
+#: front/src/views/content/remote/Card.vue:169
 msgctxt "Content/Library/Card.Help text"
-msgid ""
-"This library is private and your approval from its owner is needed to access"
-" its content"
+msgid "This library is private and your approval from its owner is needed to access its content"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:142
+#: front/src/views/content/remote/Card.vue:170
 msgctxt "Content/Library/Card.Help text"
 msgid "This library is public and you can access its content freely"
 msgstr ""
 
 #: front/src/components/common/ActionTable.vue:47
 msgctxt "Modal/*/Paragraph"
-msgid ""
-"This may affect a lot of elements or have irreversible consequences, please "
-"double check this is really what you want."
+msgid "This may affect a lot of elements or have irreversible consequences, please double check this is really what you want."
 msgstr ""
 
 #: front/src/components/library/AlbumEdit.vue:8
@@ -4374,6 +4866,11 @@ msgctxt "Content/*/Message"
 msgid "This object is managed by another server, you cannot edit it."
 msgstr ""
 
+#: front/src/components/Home.vue:87
+msgctxt "Content/Home/Paragraph"
+msgid "This pod runs Funkwhale, a community-driven project that lets you listen and share music and audio within a decentralized, open network."
+msgstr ""
+
 #: front/src/components/library/FileUpload.vue:51
 msgctxt "Content/Library/Paragraph"
 msgid "This reference will be used to group imported files together."
@@ -4382,14 +4879,13 @@ msgstr ""
 #: front/src/components/mixins/Translations.vue:33
 #: front/src/components/mixins/Translations.vue:34
 msgctxt "Content/Library/Help text"
-msgid "This track could not be processed, please it is tagged correctly"
+msgid "This track could not be processed, please make sure it is tagged correctly"
 msgstr ""
 
 #: front/src/components/mixins/Translations.vue:29
 #: front/src/components/mixins/Translations.vue:30
 msgctxt "Content/Library/Help text"
-msgid ""
-"This track has been uploaded, but hasn't been processed by the server yet"
+msgid "This track has been uploaded, but hasn't been processed by the server yet"
 msgstr "تم ارسال المقطع ولكن لم تتم معالجته بعد على الخادم"
 
 #: front/src/components/mixins/Translations.vue:25
@@ -4398,7 +4894,7 @@ msgctxt "Content/Library/Help text"
 msgid "This track is already present in one of your libraries"
 msgstr "إنّ المقطع متوفّر مِن قبل في إحدى مكتباتك"
 
-#: front/src/components/audio/PlayButton.vue:85
+#: front/src/components/audio/PlayButton.vue:103
 msgctxt "*/Queue/Button/Title"
 msgid "This track is not available in any library you have access to"
 msgstr ""
@@ -4408,92 +4904,84 @@ msgctxt "Content/Track/Paragraph"
 msgid "This track is present in the following libraries:"
 msgstr "هذا المقطع متوفر كذلك على المكتبات التالية:"
 
-#: front/src/views/playlists/Detail.vue:38
+#: front/src/views/playlists/Detail.vue:46
 msgctxt "Popup/Playlist/Paragraph"
 msgid "This will completely delete this playlist and cannot be undone."
-msgstr ""
-"سوف يؤدي ذلك إلى الحذف الكُلّي لقائمة التشغيل هذه و لا يُمكن إلغاء العملية و"
-" العودة."
+msgstr "سوف يؤدي ذلك إلى الحذف الكُلّي لقائمة التشغيل هذه و لا يُمكن إلغاء العملية و العودة."
 
 #: front/src/views/radios/Detail.vue:27
 msgctxt "Popup/Radio/Paragraph"
 msgid "This will completely delete this radio and cannot be undone."
-msgstr ""
-"سوف يؤدي ذلك إلى الحذف الكُلّي لهذه الإذاعة و لا يُمكن إلغاء العملية و "
-"العودة."
+msgstr "سوف يؤدي ذلك إلى الحذف الكُلّي لهذه الإذاعة و لا يُمكن إلغاء العملية و العودة."
 
-#: front/src/components/auth/SubsonicTokenForm.vue:50
+#: front/src/components/auth/SubsonicTokenForm.vue:55
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will completely disable access to the Subsonic API using from account."
+msgid "This will completely disable access to the Subsonic API using from account."
 msgstr ""
 
-#: front/src/components/auth/SubsonicTokenForm.vue:35
-msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will log you out from existing devices that use the current password."
+#: front/src/components/manage/moderation/ReportCard.vue:359
+msgctxt "Content/Moderation/Popup,Paragraph"
+msgid "This will delete the object associated with this report and mark the report as resolved. The deletion is irreversible."
 msgstr ""
-"سيؤدي ذلك إلى إخراجك مِن الأجهزة الحالية التي تستخدم هذه الكلمة السرية."
+
+#: front/src/components/auth/SubsonicTokenForm.vue:40
+msgctxt "Popup/Settings/Paragraph"
+msgid "This will log you out from existing devices that use the current password."
+msgstr "سيؤدي ذلك إلى إخراجك مِن الأجهزة الحالية التي تستخدم هذه الكلمة السرية."
 
 #: front/src/components/auth/Settings.vue:253
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will permanently delete the application and all the associated tokens."
-msgstr ""
-"سوف يؤدي ذلك إلى الحذف الكُلّي لقائمة التشغيل هذه و لا يُمكن إلغاء العملية و"
-" العودة."
+msgid "This will permanently delete the application and all the associated tokens."
+msgstr "سوف يؤدي ذلك إلى الحذف الكُلّي لقائمة التشغيل هذه و لا يُمكن إلغاء العملية و العودة."
 
 #: front/src/components/auth/Settings.vue:194
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will prevent this application from accessing the service on your "
-"behalf."
+msgid "This will prevent this application from accessing the service on your behalf."
 msgstr ""
 
 #: front/src/components/playlists/Editor.vue:54
 msgctxt "Popup/Playlist/Paragraph"
 msgid "This will remove all tracks from this playlist and cannot be undone."
-msgstr ""
-"سوف يؤدي ذلك إلى الحذف الكُلّي لقائمة التشغيل هذه و لا يُمكن إلغاء العملية و"
-" العودة."
-
-#: front/src/views/admin/library/AlbumDetail.vue:99
-#: front/src/views/admin/library/TrackDetail.vue:98 src/edits.js:21
-#: src/edits.js:39
-msgctxt "*/*/*/Noun"
-msgid "Title"
-msgstr "العنوان"
+msgstr "سوف يؤدي ذلك إلى الحذف الكُلّي لقائمة التشغيل هذه و لا يُمكن إلغاء العملية و العودة."
 
 #: front/src/components/audio/track/Table.vue:7
-#: front/src/views/content/libraries/FilesTable.vue:55
-msgctxt "Content/Track/*/Noun"
-msgid "Title"
-msgstr "العنوان"
-
 #: front/src/components/manage/library/AlbumsTable.vue:39
 #: front/src/components/manage/library/TracksTable.vue:39
-msgctxt "*/*/*"
+#: front/src/views/admin/library/AlbumDetail.vue:105
+#: front/src/views/admin/library/TrackDetail.vue:104
+#: front/src/views/content/libraries/FilesTable.vue:55 src/edits.js:36
+#: front/src/edits.js:62
+msgctxt "*/*/*/Noun"
 msgid "Title"
 msgstr "العنوان"
 
 #: front/src/components/SetInstanceModal.vue:16
 msgctxt "Popup/Instance/Paragraph"
-msgid ""
-"To continue, please select the Funkwhale instance you want to connect to. "
-"Enter the address directly, or select one of the suggested choices."
+msgid "To continue, please select the Funkwhale instance you want to connect to. Enter the address directly, or select one of the suggested choices."
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:148
+#, fuzzy
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle favorite"
+msgstr "%{ count } مفضّلة"
+
+#: front/src/components/ShortcutsModal.vue:132
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle mute"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:79
+#: front/src/components/ShortcutsModal.vue:136
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Toggle queue looping"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:222
-#: front/src/views/admin/library/ArtistDetail.vue:211
-#: front/src/views/admin/library/LibraryDetail.vue:200
-#: front/src/views/admin/library/TrackDetail.vue:274
-#: front/src/views/admin/moderation/AccountsDetail.vue:317
-#: front/src/views/admin/moderation/DomainsDetail.vue:225
+#: front/src/views/admin/library/AlbumDetail.vue:238
+#: front/src/views/admin/library/ArtistDetail.vue:226
+#: front/src/views/admin/library/LibraryDetail.vue:219
+#: front/src/views/admin/library/TrackDetail.vue:290
+#: front/src/views/admin/moderation/AccountsDetail.vue:329
+#: front/src/views/admin/moderation/DomainsDetail.vue:262
 msgctxt "Content/Moderation/Table.Label"
 msgid "Total size"
 msgstr "الحجم الإجمالي"
@@ -4503,20 +4991,18 @@ msgctxt "Content/Library/Card.Help text"
 msgid "Total size of the files in this library"
 msgstr "الحجم الإجمالي للملفات المتوفّرة في هذه المكتبة"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:105
+#: front/src/views/admin/moderation/DomainsDetail.vue:142
 msgctxt "Content/*/*"
 msgid "Total users"
 msgstr "العدد الإجمالي للمستخدِمين"
 
-#: front/src/views/admin/library/UploadDetail.vue:199
-msgctxt "*/*/*"
-msgid "Track"
-msgstr "المَقطَع"
-
-#: front/src/components/audio/SearchBar.vue:27
-#: front/src/components/library/TrackBase.vue:173
+#: front/src/components/audio/SearchBar.vue:34
+#: front/src/components/library/TrackBase.vue:188
 #: front/src/components/library/TrackDetail.vue:128
 #: front/src/components/metadata/Search.vue:138
+#: src/components/mixins/Report.vue:28
+#: front/src/views/admin/library/UploadDetail.vue:199
+#: front/src/components/mixins/Report.vue:29
 msgctxt "*/*/*/Noun"
 msgid "Track"
 msgstr "المَقطَع"
@@ -4526,7 +5012,7 @@ msgctxt "Content/Library/Card/Short"
 msgid "Track #%{ id } - %{ name }"
 msgstr ""
 
-#: front/src/views/admin/library/TrackDetail.vue:91
+#: front/src/views/admin/library/TrackDetail.vue:97
 msgctxt "Content/Moderation/Title"
 msgid "Track data"
 msgstr "اسم المَقطَع"
@@ -4536,30 +5022,28 @@ msgctxt "Content/Track/Title/Noun"
 msgid "Track information"
 msgstr "معلومات عن المَقطَع"
 
-#: front/src/components/mixins/Translations.vue:50
-#: front/src/components/mixins/Translations.vue:51
+#: front/src/components/mixins/Translations.vue:60
+#: front/src/components/mixins/Translations.vue:61
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Track name"
 msgstr "اسم المَقطَع"
 
-#: front/src/components/instance/Stats.vue:54
 #: front/src/components/library/AlbumDetail.vue:19
-#: front/src/components/playlists/PlaylistModal.vue:47
-#: front/src/views/admin/moderation/AccountsDetail.vue:362
-#: front/src/views/admin/moderation/DomainsDetail.vue:274
-#: front/src/views/content/Base.vue:8 src/views/content/libraries/Detail.vue:8
-#: front/src/views/playlists/Detail.vue:51 src/views/radios/Detail.vue:34
-msgctxt "*/*/*/Noun"
-msgid "Tracks"
-msgstr "المَقاطِع"
-
+#: front/src/components/library/TagDetail.vue:36
 #: front/src/components/manage/library/AlbumsTable.vue:42
 #: front/src/components/manage/library/ArtistsTable.vue:42
-#: front/src/views/admin/library/AlbumDetail.vue:252
-#: front/src/views/admin/library/ArtistDetail.vue:251
+#: front/src/components/manage/library/TagsTable.vue:44
+#: front/src/components/playlists/PlaylistModal.vue:47
+#: front/src/views/admin/library/AlbumDetail.vue:268
+#: front/src/views/admin/library/ArtistDetail.vue:266
 #: front/src/views/admin/library/Base.vue:14
-#: front/src/views/admin/library/LibraryDetail.vue:229
+#: front/src/views/admin/library/LibraryDetail.vue:248
+#: front/src/views/admin/library/TagDetail.vue:143
 #: front/src/views/admin/library/TracksList.vue:24
+#: front/src/views/admin/moderation/AccountsDetail.vue:374
+#: front/src/views/admin/moderation/DomainsDetail.vue:311
+#: front/src/views/content/Base.vue:8 src/views/content/libraries/Detail.vue:8
+#: front/src/views/playlists/Detail.vue:76 src/views/radios/Detail.vue:34
 msgctxt "*/*/*"
 msgid "Tracks"
 msgstr "المَقاطِع"
@@ -4569,78 +5053,64 @@ msgctxt "Content/Artist/Title"
 msgid "Tracks by this artist"
 msgstr "مَقاطِع لهذا الفنان"
 
-#: front/src/components/instance/Stats.vue:25
-msgctxt "Content/About/Paragraph/Unit"
-msgid "Tracks favorited"
-msgstr "مَقاطِع تم الإعجاب بها"
-
-#: front/src/components/instance/Stats.vue:19
-msgctxt "Content/About/Paragraph/Unit"
-msgid "tracks listened"
-msgstr "مَقاطِع أستُمِع إليها"
-
 #: front/src/components/library/radios/Filter.vue:44
 msgctxt "Popup/Radio/Title/Noun"
 msgid "Tracks matching filter"
 msgstr "مقطع يناسب عامل التصفية"
 
 #: front/src/components/library/TrackDetail.vue:57
+#: front/src/components/manage/moderation/ReportCard.vue:134
 #: front/src/views/admin/library/UploadDetail.vue:250
+#: front/src/views/admin/moderation/AccountsDetail.vue:181
 msgctxt "Content/Track/Table.Label/Noun"
 msgid "Type"
 msgstr "النوع"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:180
-msgctxt "Content/Moderation/Table.Label/Noun"
-msgid "Type"
-msgstr "النوع"
-
 #: front/src/components/manage/moderation/AccountsTable.vue:44
-#: front/src/components/manage/moderation/DomainsTable.vue:42
+#: front/src/components/manage/moderation/DomainsTable.vue:50
 msgctxt "Content/Moderation/Table.Label/Short"
 msgid "Under moderation rule"
 msgstr "تحديث قاعدة الإشراف"
 
-#: front/src/views/content/remote/Card.vue:109
-#: src/views/content/remote/Card.vue:114
+#: front/src/components/ShortcutsModal.vue:68
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Unfocus searchbar"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:122
+#: src/views/content/remote/Card.vue:127
 msgctxt "*/Library/Button.Label/Verb"
 msgid "Unfollow"
 msgstr "إلغاء المتابعة"
 
-#: front/src/views/content/remote/Card.vue:110
+#: front/src/views/content/remote/Card.vue:123
 msgctxt "Popup/Library/Title"
 msgid "Unfollow this library?"
 msgstr "أتريد إلغاء متابعة هذه المكتبة؟"
 
-#: front/src/components/About.vue:17
-msgctxt "Content/About/Paragraph"
-msgid ""
-"Unfortunately, the owners of this instance did not yet take the time to "
-"complete this page."
-msgstr ""
-"لسوء الحظ، لم يأخذ أصحاب مثيل الخادوم هذا الوقت الكافي لاستكمال هذه الصفحة."
-
 #: front/src/components/federation/FetchButton.vue:54
 #: front/src/components/federation/FetchButton.vue:55
-msgctxt "*/*/Error"
-msgid "Unknowkn error"
-msgstr ""
-
 #: front/src/components/library/ImportStatusModal.vue:144
-msgctxt "Popup/Import/Error.Label"
-msgid "Unkwown error"
+msgctxt "*/*/Error"
+msgid "Unknown error"
 msgstr ""
 
-#: front/src/components/Home.vue:37
-msgctxt "Content/Home/Title"
-msgid "Unlimited music"
-msgstr "موسيقى بلا حدود"
-
-#: front/src/components/audio/Player.vue:630
+#: front/src/components/audio/Player.vue:656
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Unmute"
 msgstr "إلغاء الكتم"
 
+#: front/src/components/manage/moderation/ReportCard.vue:225
+msgctxt "Content/*/Button.Label"
+msgid "Unresolve"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:67
+#: front/src/views/admin/moderation/ReportsList.vue:23
+msgctxt "Content/*/*/Short"
+msgid "Unresolved"
+msgstr ""
+
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:57
 msgctxt "Content/Moderation/Card.Button.Label/Verb"
 msgid "Update"
@@ -4704,12 +5174,8 @@ msgstr "تاريخ التحميل"
 
 #: front/src/components/library/FileUpload.vue:258
 msgctxt "Content/Library/Help text"
-msgid ""
-"Upload denied, ensure the file is not too big and that you have not reached "
-"your quota"
-msgstr ""
-"تم رفض الإرسال، تحقق أن حجم الملف ليس ضخما و أنّ مساحة التخرين المسموح بها "
-"كافية"
+msgid "Upload denied, ensure the file is not too big and that you have not reached your quota"
+msgstr "تم رفض الإرسال، تحقق أن حجم الملف ليس ضخما و أنّ مساحة التخرين المسموح بها كافية"
 
 #: front/src/components/library/ImportStatusModal.vue:8
 msgctxt "Popup/Import/Message"
@@ -4718,20 +5184,18 @@ msgstr ""
 
 #: front/src/views/content/Home.vue:7
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Upload music files (MP3, OGG, FLAC, etc.) from your personal library "
-"directly from your browser to enjoy them here."
-msgstr ""
-"ارسل ملفات موسيقية (MP3, OGG, FLAC, etc.) مِن مكتبتك الشخصية مباشرة مِن "
-"متصفحك للإستمتاع بها هنا."
+msgid "Upload music files (MP3, OGG, FLAC, etc.) from your personal library directly from your browser to enjoy them here."
+msgstr "ارسل ملفات موسيقية (MP3, OGG, FLAC, etc.) مِن مكتبتك الشخصية مباشرة مِن متصفحك للاستمتاع بها هنا."
 
 #: front/src/components/library/FileUpload.vue:30
 msgctxt "Content/Library/Title/Verb"
 msgid "Upload new tracks"
 msgstr "إرسال مقاطع موسيقية جديدة"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:298
-msgctxt "Content/Moderation/Table.Label/Noun"
+#: front/src/components/About.vue:99
+#: front/src/views/admin/moderation/AccountsDetail.vue:309
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Upload quota"
 msgstr "حصة التحميل"
 
@@ -4742,15 +5206,13 @@ msgstr "انتهت مهلة الإرسال، الرجاء إعادة المحا
 
 #: front/src/components/library/ImportStatusModal.vue:14
 msgctxt "Popup/Import/Message"
-msgid ""
-"Upload was skipped because a similar one is already available in one of your"
-" libraries."
+msgid "Upload was skipped because a similar one is already available in one of your libraries."
 msgstr ""
 
 #: front/src/components/library/ImportStatusModal.vue:11
 msgctxt "Popup/Import/Message"
 msgid "Upload was successfully processed by the server."
-msgstr ""
+msgstr "تم تحميله بنجاح على الخادم."
 
 #: front/src/components/library/FileUpload.vue:109
 msgctxt "Content/Library/Table"
@@ -4767,35 +5229,25 @@ msgctxt "Content/Library/Table"
 msgid "Uploading…"
 msgstr "الإرسال جارٍ…"
 
+#: front/src/components/manage/library/LibrariesTable.vue:52
+#: front/src/components/manage/moderation/AccountsTable.vue:41
+#: front/src/components/mixins/Translations.vue:75
+#: front/src/views/admin/library/AlbumDetail.vue:258
+#: front/src/views/admin/library/ArtistDetail.vue:246
 #: front/src/views/admin/library/Base.vue:20
+#: front/src/views/admin/library/LibraryDetail.vue:258
+#: front/src/views/admin/library/TrackDetail.vue:310
 #: front/src/views/admin/library/UploadsList.vue:24
+#: front/src/views/admin/moderation/AccountsDetail.vue:349
+#: front/src/views/admin/moderation/DomainsDetail.vue:281
+#: front/src/components/mixins/Translations.vue:76
 msgctxt "*/*/*"
 msgid "Uploads"
 msgstr "المُرسَلة"
 
-#: front/src/components/manage/moderation/AccountsTable.vue:41
-#: front/src/components/mixins/Translations.vue:63
-#: front/src/views/admin/library/AlbumDetail.vue:242
-#: front/src/views/admin/library/ArtistDetail.vue:231
-#: front/src/views/admin/library/LibraryDetail.vue:239
-#: front/src/views/admin/library/TrackDetail.vue:294
-#: front/src/views/admin/moderation/AccountsDetail.vue:337
-#: front/src/views/admin/moderation/DomainsDetail.vue:244
-#: front/src/components/mixins/Translations.vue:64
-msgctxt "Content/Moderation/Table.Label/Noun"
-msgid "Uploads"
-msgstr "المُرسَلة"
-
-#: front/src/components/manage/library/LibrariesTable.vue:52
-msgctxt "Content/*/*/Noun"
-msgid "Uploads"
-msgstr "المُرسَلة"
-
 #: front/src/components/auth/ApplicationForm.vue:16
 msgctxt "Content/Applications/Help Text"
-msgid ""
-"Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is "
-"not served on the web."
+msgid "Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is not served on the web."
 msgstr ""
 
 #: front/src/components/Footer.vue:16
@@ -4803,20 +5255,29 @@ msgctxt "Footer/*/List item.Link"
 msgid "Use another instance"
 msgstr "إستخدم مثيل خادوم آخَر"
 
+#: front/src/components/Home.vue:146
+msgctxt "Content/Home/Link"
+msgid "Use Funkwhale on other devices with our apps"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:44
+msgctxt "*/*/Field,Help"
+msgid "Use this field to provide additional context to the moderator that will handle your report."
+msgstr ""
+
 #: front/src/views/auth/PasswordReset.vue:12
 msgctxt "Content/Signup/Paragraph"
-msgid ""
-"Use this form to request a password reset. We will send an email to the "
-"given address with instructions to reset your password."
+msgid "Use this form to request a password reset. We will send an email to the given address with instructions to reset your password."
+msgstr "استخدم هذه الاستمارة لطلب إعادة ضبط كلمة المرور. سنرسل بريدا إلكترونيا إلى العنوان المعين مرفوقا بتعليمات لإعادة ضبط كلمتك السرية."
+
+#: front/src/components/moderation/ReportModal.vue:18
+msgctxt "*/Moderation/Popup,Paragraph"
+msgid "Use this form to submit a report to our moderation team."
 msgstr ""
-"استخدم هذه الاستمارة لطلب إعادة ضبط كلمة المرور. سنرسل بريدا إلكترونيا إلى "
-"العنوان المعين مرفوقا بتعليمات لإعادة ضبط كلمتك السرية."
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:111
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Use this setting to temporarily enable/disable the policy without completely"
-" removing it."
+msgid "Use this setting to temporarily enable/disable the policy without completely removing it."
 msgstr ""
 
 #: front/src/components/manage/users/InvitationsTable.vue:49
@@ -4824,15 +5285,27 @@ msgctxt "Content/Admin/Table"
 msgid "Used"
 msgstr "مُستخدَم"
 
+#: front/src/components/Home.vue:125
+msgctxt "Content/Home/Header"
+msgid "Useful links"
+msgstr ""
+
 #: front/src/views/content/libraries/Detail.vue:26
 msgctxt "Content/Library/Table.Label"
 msgid "User"
 msgstr "المستخدِم"
 
-#: front/src/components/instance/Stats.vue:5
-msgctxt "Content/About/Title/Noun"
-msgid "User activity"
-msgstr "نشاط المستخدِم"
+#: front/src/components/Home.vue:154
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "User guides"
+msgstr "مكتبات المستخدِم"
+
+#: front/src/views/admin/Settings.vue:88
+#, fuzzy
+msgctxt "Content/Admin/Menu"
+msgid "User Interface"
+msgstr "إسم المستخدِم"
 
 #: front/src/components/library/AlbumDetail.vue:26
 #: front/src/components/library/ArtistDetail.vue:39
@@ -4846,35 +5319,35 @@ msgctxt "Content/Radio/Title"
 msgid "User radios"
 msgstr "إذاعات المستخدِمين"
 
-#: front/src/components/auth/Signup.vue:19
+#: front/src/components/auth/SignupForm.vue:15
 #: front/src/components/manage/users/UsersTable.vue:37
-#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:71
 #: front/src/views/admin/moderation/AccountsDetail.vue:114
-#: front/src/components/mixins/Translations.vue:60
+#: front/src/components/mixins/Translations.vue:72
 msgctxt "Content/*/*"
 msgid "Username"
 msgstr "إسم المستخدِم"
 
-#: front/src/components/auth/Login.vue:15
+#: front/src/components/auth/LoginForm.vue:11
 msgctxt "Content/Login/Input.Label/Noun"
 msgid "Username or email"
 msgstr "اسم المستخدِم أو عنوان البريد الإلكتروني"
 
-#: front/src/components/instance/Stats.vue:13
-msgctxt "Content/About/Paragraph/Unit"
-msgid "users"
-msgstr "مستخدِم"
-
-#: front/src/components/Sidebar.vue:102
-#: front/src/components/manage/moderation/DomainsTable.vue:39
-#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/Sidebar.vue:106
+#: front/src/components/manage/moderation/DomainsTable.vue:47
+#: front/src/components/mixins/Translations.vue:73
 #: src/views/admin/Settings.vue:81 front/src/views/admin/users/Base.vue:5
 #: src/views/admin/users/UsersList.vue:21
-#: front/src/components/mixins/Translations.vue:62
+#: front/src/components/mixins/Translations.vue:74
 msgctxt "*/*/*/Noun"
 msgid "Users"
 msgstr "المستخدِمون"
 
+#: front/src/components/Home.vue:110
+msgctxt "Content/Home/Paragraph"
+msgid "Users on this pod also get %{ quota } of free storage to upload their own content!"
+msgstr ""
+
 #: front/src/components/Footer.vue:29
 msgctxt "Footer/*/Title"
 msgid "Using Funkwhale"
@@ -4892,45 +5365,60 @@ msgctxt "Content/Library/Link/Verb"
 msgid "View files"
 msgstr "عرض الملفات"
 
-#: front/src/components/library/AlbumBase.vue:81
-#: front/src/components/library/ArtistBase.vue:92
-#: front/src/components/library/TrackBase.vue:100
-#: front/src/views/admin/library/AlbumDetail.vue:42
-#: front/src/views/admin/library/ArtistDetail.vue:41
+#: front/src/components/library/AlbumBase.vue:95
+#: front/src/components/library/ArtistBase.vue:107
+#: front/src/components/library/TrackBase.vue:111
+#: front/src/views/admin/library/AlbumDetail.vue:48
+#: front/src/views/admin/library/ArtistDetail.vue:46
 #: front/src/views/admin/library/LibraryDetail.vue:34
 #: front/src/views/admin/library/LibraryDetail.vue:45
-#: front/src/views/admin/library/TrackDetail.vue:41
+#: front/src/views/admin/library/TagDetail.vue:32
+#: front/src/views/admin/library/TrackDetail.vue:47
 #: front/src/views/admin/library/UploadDetail.vue:35
 #: front/src/views/admin/library/UploadDetail.vue:46
 #: front/src/views/admin/moderation/AccountsDetail.vue:37
 #: front/src/views/admin/moderation/AccountsDetail.vue:45
+#: front/src/views/admin/moderation/DomainsDetail.vue:30
 msgctxt "Content/Moderation/Link/Verb"
 msgid "View in Django's admin"
 msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:61
-#: front/src/components/library/ArtistBase.vue:72
-#: front/src/components/library/TrackBase.vue:80
+#: front/src/components/Home.vue:169
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "View more…"
+msgstr "جارٍ تحميل المتابِعين…"
+
+#: front/src/components/library/AlbumBase.vue:62
+#: front/src/components/library/ArtistBase.vue:73
+#: front/src/components/library/TrackBase.vue:78
 #: front/src/components/metadata/ArtistCard.vue:49
 #: front/src/components/metadata/ReleaseCard.vue:53
 msgctxt "Content/*/*/Clickable, Verb"
 msgid "View on MusicBrainz"
 msgstr "إطّلع عليه على ميوزيك براينز"
 
+#: front/src/components/manage/moderation/ReportCard.vue:124
+msgctxt "Content/Moderation/Link"
+msgid "View public page"
+msgstr ""
+
 #: front/src/components/manage/library/LibrariesTable.vue:11
 #: front/src/components/manage/library/LibrariesTable.vue:51
 #: front/src/components/manage/library/UploadsTable.vue:11
 #: front/src/components/manage/library/UploadsTable.vue:63
 #: front/src/views/admin/library/LibraryDetail.vue:94
 #: front/src/views/admin/library/UploadDetail.vue:101
+#: front/src/views/content/libraries/Form.vue:18
 msgctxt "*/*/*"
 msgid "Visibility"
 msgstr "المشاهدة"
 
-#: front/src/views/content/libraries/Form.vue:18
-msgctxt "Content/Library/Dropdown.Label"
-msgid "Visibility"
-msgstr "المشاهدة"
+#: front/src/components/Home.vue:91
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Visit funkwhale.audio"
+msgstr "لاستخدام Funkwhale"
 
 #: front/src/components/library/AlbumDetail.vue:4
 msgctxt "Content/Album/"
@@ -4942,7 +5430,13 @@ msgctxt "Popup/*/Loading.Title"
 msgid "Waiting for result…"
 msgstr "جارٍ تحميل مفضلاتك…"
 
-#: front/src/components/auth/Login.vue:7
+#: front/src/components/auth/Settings.vue:285
+#, fuzzy
+msgctxt "Content/Settings/Error message.Title"
+msgid "We cannot delete your account"
+msgstr "تعذر علينا تسجيل دخولك"
+
+#: front/src/components/auth/LoginForm.vue:3
 msgctxt "Content/Login/Error message.Title"
 msgid "We cannot log you in"
 msgstr "تعذر علينا تسجيل دخولك"
@@ -4952,42 +5446,37 @@ msgctxt "Content/*/Error message.Title"
 msgid "We cannot save your changes"
 msgstr "لا يمكننا إنشاء حسابك"
 
-#: front/src/components/Home.vue:122
-msgctxt "Content/Home/List item"
-msgid "We do not track you or bother you with ads"
-msgstr "لا نتعقّبك و لا نزعجك بالإعلانات"
+#: front/src/views/Notifications.vue:39
+msgctxt "Content/Notifications/Paragraph"
+msgid "We noticed you've been here for a while. If Funkwhale is useful to you, we could use your help to make it even better!"
+msgstr ""
 
 #: front/src/components/library/FileUpload.vue:39
 msgctxt "Content/Library/Link"
 msgid "We recommend using Picard for that purpose."
 msgstr "ننصحكم باستخدام برنامج Picard لهذا الغرض."
 
-#: front/src/components/Home.vue:7
-msgctxt "Content/Home/Title"
-msgid "We think listening to music should be simple."
-msgstr "نعتقد أنّ الاستماع إلى الموسيقى ينبغي أن يكون سهلًا."
+#: front/src/components/moderation/ReportModal.vue:35
+msgctxt "*/*/Field,Help"
+msgid "We'll use this email if we need to contact you regarding this report."
+msgstr ""
 
-#: front/src/components/Home.vue:148
+#: front/src/components/Home.vue:207
 msgctxt "Head/Home/Title"
 msgid "Welcome"
 msgstr "مرحبًا"
 
 #: front/src/components/Home.vue:5
-msgctxt "Content/Home/Title/Verb"
-msgid "Welcome on Funkwhale"
-msgstr "أهلا وسهلا بك على فانك وايل Funkwhale"
-
-#: front/src/components/Home.vue:24
-msgctxt "Content/Home/Title"
-msgid "Why funkwhale?"
-msgstr "لماذا فانك وايل Funkwhale ؟"
+msgctxt "Content/Home/Header"
+msgid "Welcome to %{ podName }!"
+msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:13
+#: front/src/components/audio/EmbedWizard.vue:23
 msgctxt "Popup/Embed/Input.Label"
 msgid "Widget height"
 msgstr "طول الودجات"
 
-#: front/src/components/audio/EmbedWizard.vue:6
+#: front/src/components/audio/EmbedWizard.vue:16
 msgctxt "Popup/Embed/Input.Label"
 msgid "Widget width"
 msgstr "عرض الودجات"
@@ -5007,9 +5496,11 @@ msgctxt "Content/OAuth Scopes/Help Text"
 msgid "Write-only access to user data"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:129
+#: front/src/components/Sidebar.vue:133
 #: front/src/components/manage/moderation/AccountsTable.vue:72
-#: front/src/components/manage/moderation/DomainsTable.vue:58
+#: front/src/components/manage/moderation/DomainsTable.vue:12
+#: front/src/components/manage/moderation/DomainsTable.vue:69
+#: front/src/views/admin/moderation/DomainsDetail.vue:109
 msgctxt "*/*/*"
 msgid "Yes"
 msgstr "نعم"
@@ -5021,27 +5512,17 @@ msgstr "نعم، أؤكد الخروج !"
 
 #: front/src/views/content/libraries/Form.vue:19
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You are able to share your library with other people, regardless of its "
-"visibility."
+msgid "You are able to share your library with other people, regardless of its visibility."
 msgstr ""
 
 #: front/src/components/library/FileUpload.vue:32
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You are about to upload music to your library. Before proceeding, please "
-"ensure that:"
-msgstr ""
-"إنك بصدد إرسال موسيقى إلى مكتبتك الصوتية. قبل المواصلة، ندعوك إلى التحقق من "
-"أنّ:"
+msgid "You are about to upload music to your library. Before proceeding, please ensure that:"
+msgstr "إنك بصدد إرسال موسيقى إلى مكتبتك الصوتية. قبل المواصلة، ندعوك إلى التحقق من أنّ:"
 
 #: front/src/components/SetInstanceModal.vue:12
 msgctxt "Popup/Login/Paragraph"
-msgid ""
-"You are currently connected to <a href=\"%{ url }\" target=\"_blank\">%{ "
-"hostname }&nbsp;<i class=\"external icon\"/></a>. If you continue, you will "
-"be disconnected from your current instance and all your local data will be "
-"deleted."
+msgid "You are currently connected to <a href=\"%{ url }\" target=\"_blank\">%{ hostname }&nbsp;<i class=\"external icon\"/></a>. If you continue, you will be disconnected from your current instance and all your local data will be deleted."
 msgstr ""
 
 #: front/src/components/library/ArtistDetail.vue:6
@@ -5056,12 +5537,8 @@ msgstr "أنت متّصل حاليا بصفة %{ username }"
 
 #: front/src/components/library/FileUpload.vue:35
 msgctxt "Content/Library/List item"
-msgid ""
-"You are not uploading copyrighted content in a public library, otherwise you"
-" may be infringing the law"
-msgstr ""
-"أنك لست بصدد تحميل محتوى محمي بحقوق التأليف على مكتبة عامة ، وإلا قد تصبح "
-"مخالفًا للقانون"
+msgid "You are not uploading copyrighted content in a public library, otherwise you may be infringing the law"
+msgstr "أنك لست بصدد تحميل محتوى محمي بحقوق التأليف على مكتبة عامة ، وإلا قد تصبح مخالفًا للقانون"
 
 #: front/src/components/SetInstanceModal.vue:98
 msgctxt "*/Instance/Message"
@@ -5070,24 +5547,12 @@ msgstr "إنك الآن تستخدم خادم Funkwhale على %{ url }"
 
 #: front/src/views/content/Home.vue:17
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You can follow libraries from other users to get access to new music. Public"
-" libraries can be followed immediatly, while following a private library "
-"requires approval from its owner."
+msgid "You can follow libraries from other users to get access to new music. Public libraries can be followed immediately, while following a private library requires approval from its owner."
 msgstr ""
 
-#: front/src/components/Home.vue:128
-msgctxt "Content/Home/List item"
-msgid ""
-"You can invite friends and family to your instance so they can enjoy your "
-"music"
-msgstr ""
-"يمكِنك دعوة أصدقائك و عائلتك للإنظمام إلى مثيل خادومك للإستمتاع بموسيقاك"
-
 #: front/src/components/moderation/FilterModal.vue:31
 msgctxt "Popup/Moderation/Paragraph"
-msgid ""
-"You can manage and update your filters anytime from your account settings."
+msgid "You can manage and update your filters any time from your account settings."
 msgstr ""
 
 #: front/src/views/auth/EmailConfirm.vue:24
@@ -5095,20 +5560,19 @@ msgctxt "Content/Signup/Paragraph"
 msgid "You can now use the service without limitations."
 msgstr "بإمكانك الآن استعمال الخدمة مِن دون قيود."
 
+#: front/src/components/auth/Settings.vue:278
+msgctxt "Content/Settings/Paragraph'"
+msgid "You can permanently and irreversibly delete your account and all the associated data using the form below. You will be asked for confirmation."
+msgstr ""
+
 #: front/src/components/library/radios/Builder.vue:7
 msgctxt "Content/Radio/Paragraph"
-msgid ""
-"You can use this interface to build your own custom radio, which will play "
-"tracks according to your criteria."
-msgstr ""
-"يمكنك إنشاء قناتك الإذاعية الخاصة بك عبر هذه الواجهة و تشغيل مقاطعك كيفما "
-"شئت."
+msgid "You can use this interface to build your own custom radio, which will play tracks according to your criteria."
+msgstr "يمكنك إنشاء قناتك الإذاعية الخاصة بك عبر هذه الواجهة و تشغيل مقاطعك كيفما شئت."
 
 #: front/src/components/auth/SubsonicTokenForm.vue:7
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"You can use those to enjoy your playlist and music in offline mode, on your "
-"smartphone or tablet, for instance."
+msgid "You can use those to enjoy your playlist and music in offline mode, on your smartphone or tablet, for instance."
 msgstr ""
 
 #: front/src/components/auth/Settings.vue:202
@@ -5126,19 +5590,17 @@ msgctxt "Content/Moderation/Card.Title"
 msgid "You don't have any rule in place for this account."
 msgstr "ليس لديك أية قاعدة لهذا الحساب بعد."
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:39
+#: front/src/views/admin/moderation/DomainsDetail.vue:67
 msgctxt "Content/Moderation/Card.Title"
 msgid "You don't have any rule in place for this domain."
 msgstr "ليس لديك أية قاعدة خاصة باسم النطاق هذا."
 
 #: front/src/components/library/EditForm.vue:52
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You don't have the permission to edit this object, but you can suggest "
-"changes. Once submitted, suggestions will be reviewed before approval."
+msgid "You don't have the permission to edit this object, but you can suggest changes. Once submitted, suggestions will be reviewed before approval."
 msgstr ""
 
-#: front/src/components/Sidebar.vue:171
+#: front/src/components/Sidebar.vue:175
 msgctxt "Sidebar/Player/Title"
 msgid "You have a radio playing"
 msgstr "إنك تستمع إلى إذاعة"
@@ -5150,8 +5612,7 @@ msgstr "ربما عندك مشكلة في الاتصال."
 
 #: front/src/components/auth/Settings.vue:100
 msgctxt "Popup/Settings/List item"
-msgid ""
-"You will be logged out from this session and have to log in with the new one"
+msgid "You will be logged out from this session and have to log in with the new one"
 msgstr ""
 
 #: front/src/components/auth/Authorize.vue:51
@@ -5166,23 +5627,24 @@ msgstr ""
 
 #: front/src/components/auth/Settings.vue:71
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"You will have to update your password on your clients that use this "
-"password."
+msgid "You will have to update your password on your clients that use this password."
 msgstr "يتوجب عليك تحديث كلمتك السرية على العملاء الآخرين اللذين يشتغلون بها."
 
 #: front/src/components/moderation/FilterModal.vue:20
 msgctxt "Popup/Moderation/Paragraph"
-msgid ""
-"You will not see tracks, albums and user activity linked to this artist "
-"anymore:"
+msgid "You will not see tracks, albums and user activity linked to this artist any more:"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:13
+#: front/src/components/auth/SignupForm.vue:9
 msgctxt "Content/Signup/Form/Paragraph"
 msgid "Your account cannot be created."
 msgstr "لا يمكن إنشاء حسابك."
 
+#: front/src/components/auth/Settings.vue:281
+msgctxt "Content/Settings/Paragraph'"
+msgid "Your account will be deleted from our servers within a few minutes. We will also notify other servers who may have a copy of some of your data so they can proceed to deletion. Please note that some of these servers may be offline or unwilling to comply though."
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:215
 msgctxt "Content/Settings/Title/Noun"
 msgid "Your applications"
@@ -5193,6 +5655,11 @@ msgctxt "Content/Settings/Error message.Title"
 msgid "Your avatar cannot be saved"
 msgstr ""
 
+#: front/src/components/auth/Settings.vue:527
+msgctxt "*/Auth/Message"
+msgid "Your deletion request was submitted, your account and content will be deleted shortly"
+msgstr ""
+
 #: front/src/components/library/EditForm.vue:3
 msgctxt "Content/Library/Paragraph"
 msgid "Your edit was successfully submitted."
@@ -5203,12 +5670,13 @@ msgctxt "Head/Favorites/Title"
 msgid "Your Favorites"
 msgstr "مفضّلاتك"
 
-#: front/src/components/Home.vue:109
-msgctxt "Content/Home/Title"
-msgid "Your music, your way"
-msgstr "موسيقاك، كما يحلو لك"
+#: front/src/views/Notifications.vue:5
+#, fuzzy
+msgctxt "Content/Notifications/Title"
+msgid "Your messages"
+msgstr "الرسائل المُرسَلة"
 
-#: front/src/views/Notifications.vue:4
+#: front/src/views/Notifications.vue:69
 msgctxt "Content/Notifications/Title"
 msgid "Your notifications"
 msgstr "إشعاراتك"
@@ -5224,35 +5692,36 @@ msgid "Your password has been updated successfully."
 msgstr "تم تحديث كلمتك السرية بنجاح."
 
 #: front/src/components/auth/Settings.vue:14
+#, fuzzy
 msgctxt "Content/Settings/Error message.Title"
-msgid "Your settings can't be updateds"
+msgid "Your settings can't be updated"
 msgstr "تم تحديث الإعدادات"
 
 #: front/src/components/auth/Settings.vue:101
 msgctxt "Popup/Settings/List item"
-msgid ""
-"Your Subsonic password will be changed to a new, random one, logging you out"
-" from devices that used the old Subsonic password"
+msgid "Your Subsonic password will be changed to a new, random one, logging you out from devices that used the old Subsonic password"
 msgstr ""
 
-#: front/src/edits.js:47
-msgctxt "*/*/*/Short, Noun"
-msgid "Position"
-msgstr "تتابُع الصفحات"
+#: front/src/entities.js:126
+#, fuzzy
+msgctxt "*/*/*/Noun"
+msgid "MusicBrainz ID"
+msgstr "إطّلع عليه على ميوزيك براينز"
 
-#: front/src/edits.js:54
-msgctxt "Content/Track/*/Noun"
-msgid "Copyright"
-msgstr "الحقوق"
+#: front/src/main.js:110
+msgctxt "*/Error/Paragraph"
+msgid "You sent too many requests and have been rate limited, please try again in %{ delay }"
+msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:183
+#: front/src/main.js:113
+msgctxt "*/Error/Paragraph"
+msgid "You sent too many requests and have been rate limited, please try again later"
+msgstr ""
+
+#: front/src/components/library/AlbumBase.vue:208
 msgctxt "Content/Album/Header.Title"
-msgid ""
-"Album containing %{ count } track, by <a class=\"internal\" href=\"%{ "
-"artistUrl }\">%{ artist }</a>"
-msgid_plural ""
-"Album containing %{ count } tracks, by <a class=\"internal\" href=\"%{ "
-"artistUrl }\">%{ artist }</a>"
+msgid "Album containing %{ count } track, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgid_plural "Album containing %{ count } tracks, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
 msgstr[0] ""
 msgstr[1] ""
 msgstr[2] ""
@@ -5260,7 +5729,7 @@ msgstr[3] ""
 msgstr[4] ""
 msgstr[5] ""
 
-#: front/src/components/audio/PlayButton.vue:220
+#: front/src/components/audio/PlayButton.vue:246
 msgctxt "*/Queue/Message"
 msgid "%{ count } track was added to your queue"
 msgid_plural "%{ count } tracks were added to your queue"
diff --git a/front/locales/ca/LC_MESSAGES/app.po b/front/locales/ca/LC_MESSAGES/app.po
new file mode 100644
index 0000000000000000000000000000000000000000..b233c72ff35f8f1ec481060414a1b834f13c9d79
--- /dev/null
+++ b/front/locales/ca/LC_MESSAGES/app.po
@@ -0,0 +1,5658 @@
+# Catalan translations for front package.
+# Copyright (C) 2019 THE front'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the front package.
+# Automatically generated, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: front 0.1.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2019-10-01 15:15+0200\n"
+"PO-Revision-Date: 2019-06-19 07:58+0000\n"
+"Last-Translator: Xaloc <xaloc@tutanota.com>\n"
+"Language-Team: none\n"
+"Language: ca\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Weblate 3.2.2\n"
+
+#: front/src/components/playlists/PlaylistModal.vue:9
+msgctxt "Popup/Playlist/Paragraph"
+msgid "\"%{ title }\", by %{ artist }"
+msgstr "\"%{ title }\", de %{ artist }"
+
+#: front/src/components/Sidebar.vue:24
+msgctxt "Sidebar/Queue/Tab.Title"
+msgid "(%{ index } of %{ length })"
+msgstr "(%{ index } de %{ length })"
+
+#: front/src/components/Sidebar.vue:22
+msgctxt "Sidebar/Queue/Tab.Title"
+msgid "(empty)"
+msgstr "(buit)"
+
+#: front/src/components/auth/Authorize.vue:16
+msgctxt "Content/Auth/Title"
+msgid "%{ app } wants to access your Funkwhale account"
+msgstr "%{ app } vol accedir al vostre compte Funkwhale"
+
+#: front/src/components/About.vue:173 src/components/Home.vue:56
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } active user"
+msgid_plural "%{ count } active users"
+msgstr[0] "%{ count } pista"
+msgstr[1] "%{ count } pistes"
+
+#: front/src/components/About.vue:182
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } albums"
+msgid_plural "%{ count } albums"
+msgstr[0] "%{ count } pista"
+msgstr[1] "%{ count } pistes"
+
+#: front/src/components/About.vue:152
+msgctxt "*/*/*"
+msgid "%{ count } allowed domains"
+msgid_plural "%{ count } allowed domains"
+msgstr[0] ""
+msgstr[1] ""
+
+#: front/src/components/About.vue:179
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } artists"
+msgid_plural "%{ count } artists"
+msgstr[0] "%{ count } pista"
+msgstr[1] "%{ count } pistes"
+
+#: front/src/components/About.vue:176 src/components/Home.vue:59
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } hour of music"
+msgid_plural "%{ count } hours of music"
+msgstr[0] "%{ count } pista"
+msgstr[1] "%{ count } pistes"
+
+#: front/src/components/About.vue:188
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } listenings"
+msgid_plural "%{ count } listenings"
+msgstr[0] "%{ count } pista"
+msgstr[1] "%{ count } pistes"
+
+#: front/src/components/common/ActionTable.vue:68
+msgctxt "Content/*/Paragraph"
+msgid "%{ count } on %{ total } selected"
+msgid_plural "%{ count } on %{ total } selected"
+msgstr[0] "%{ count } de %{ total } seleccionat"
+msgstr[1] "%{ count } de %{ total } seleccionats"
+
+#: front/src/components/Sidebar.vue:125 src/components/audio/album/Card.vue:52
+#: front/src/views/content/libraries/Card.vue:40
+#: src/views/content/remote/Card.vue:43
+msgctxt "*/*/*"
+msgid "%{ count } track"
+msgid_plural "%{ count } tracks"
+msgstr[0] "%{ count } pista"
+msgstr[1] "%{ count } pistes"
+
+#: front/src/components/library/ArtistBase.vue:13
+msgctxt "Content/Artist/Paragraph"
+msgid "%{ count } track in %{ albumsCount } albums"
+msgid_plural "%{ count } tracks in %{ albumsCount } albums"
+msgstr[0] "%{ count } pista dins %{ albumsCount } àlbums"
+msgstr[1] "%{ count } pistes dins %{ albumsCount } àlbums"
+
+#: front/src/components/library/radios/Builder.vue:81
+msgctxt "Content/Radio/Table.Paragraph/Short"
+msgid "%{ count } track matching combined filters"
+msgid_plural "%{ count } tracks matching combined filters"
+msgstr[0] "%{ count } pista corresponent als filtres seleccionats"
+msgstr[1] "%{ count } pistes corresponents als filtres seleccionats"
+
+#: front/src/components/About.vue:185
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } tracks"
+msgid_plural "%{ count } tracks"
+msgstr[0] "%{ count } pista"
+msgstr[1] "%{ count } pistes"
+
+#: front/src/components/playlists/Card.vue:28
+msgctxt "Content/*/Card/List item"
+msgid "%{ count} track"
+msgid_plural "%{ count } tracks"
+msgstr[0] "%{ count} pista"
+msgstr[1] "%{ count } pistes"
+
+#: front/src/views/content/libraries/Quota.vue:11
+msgctxt "Content/Library/Paragraph"
+msgid "%{ current } used on %{ max } allowed"
+msgstr "%{ current } usats del %{ max } permesos"
+
+#: front/src/components/common/Duration.vue:2
+msgctxt "Content/*/Paragraph"
+msgid "%{ hours } h %{ minutes } min"
+msgstr "%{ hours } h %{ minutes } min"
+
+#: front/src/components/common/Duration.vue:5
+msgctxt "Content/*/Paragraph"
+msgid "%{ minutes } min"
+msgstr "%{ minutes } min"
+
+#: front/src/components/notifications/NotificationRow.vue:40
+msgctxt "Content/Notifications/Paragraph"
+msgid "%{ username } accepted your follow on library \"%{ library }\""
+msgstr "%{ username } ha acceptat el seguiment de la biblioteca \"%{ library }\""
+
+#: front/src/components/notifications/NotificationRow.vue:39
+msgctxt "Content/Notifications/Paragraph"
+msgid "%{ username } followed your library \"%{ library }\""
+msgstr "%{ username } ha seguit la teva biblioteca \"%{ library }\""
+
+#: front/src/components/notifications/NotificationRow.vue:41
+msgctxt "Content/Notifications/Paragraph"
+msgid "%{ username } wants to follow your library \"%{ library }\""
+msgstr "%{ username } vol seguir la teva biblioteca \"%{ library }\""
+
+#: front/src/components/auth/Profile.vue:46
+msgctxt "Head/Profile/Title"
+msgid "%{ username }'s profile"
+msgstr "Perfil de %{ username }"
+
+#: front/src/components/playlists/PlaylistModal.vue:21
+msgctxt "Popup/Playlist/Paragraph"
+msgid "<strong>%{ track }</strong> is already in <strong>%{ playlist }</strong>."
+msgstr "<strong>%{ track }</strong> ja és a <strong>%{ playlist }</strong>."
+
+#: front/src/components/audio/artist/Card.vue:11
+msgctxt "Content/Artist/Card"
+msgid "1 album"
+msgid_plural "%{ count } albums"
+msgstr[0] "1 àlbum"
+msgstr[1] "%{ count } àlbums"
+
+#: front/src/components/favorites/List.vue:10
+msgctxt "Content/Favorites/Title"
+msgid "1 favorite"
+msgid_plural "%{ count } favorites"
+msgstr[0] "1 favorit"
+msgstr[1] "%{ count } favorits"
+
+#: front/src/components/audio/artist/Card.vue:15
+#, fuzzy
+msgctxt "Content/Artist/Card"
+msgid "1 track"
+msgid_plural "%{ count } tracks"
+msgstr[0] "Afegir pista"
+msgstr[1] "Afegir pista"
+
+#: front/src/views/Notifications.vue:21 src/views/Notifications.vue:55
+msgctxt "*/*/*"
+msgid "30 days"
+msgstr ""
+
+#: front/src/views/Notifications.vue:22 src/views/Notifications.vue:56
+msgctxt "*/*/*"
+msgid "60 days"
+msgstr ""
+
+#: front/src/views/Notifications.vue:23 src/views/Notifications.vue:57
+msgctxt "*/*/*"
+msgid "90 days"
+msgstr ""
+
+#: front/src/components/library/FileUpload.vue:264
+#, fuzzy
+msgctxt "Content/Library/Help text"
+msgid "A network error occurred while uploading this file"
+msgstr "S'ha produït un error al pujar aquest fitxer"
+
+#: front/src/components/library/EditForm.vue:161
+msgctxt "*/*/Placeholder"
+msgid "A short summary describing your changes."
+msgstr "Una breu resum descrivint els teus canvis."
+
+#: front/src/components/About.vue:5
+#, fuzzy
+msgctxt "Content/Home/Header"
+msgid "About %{ podName }"
+msgstr "Quant a %{ instance }"
+
+#: front/src/components/Footer.vue:6
+msgctxt "Footer/About/Title"
+msgid "About %{instanceName}"
+msgstr "Quant a %{instanceName}"
+
+#: front/src/components/Footer.vue:53 src/components/Home.vue:85
+msgctxt "Footer/*/Title/Short"
+msgid "About Funkwhale"
+msgstr "Quant a Funkwhale"
+
+#: front/src/components/Footer.vue:10
+msgctxt "Footer/About/List item.Link"
+msgid "About page"
+msgstr "Pàgina d’informació"
+
+#: front/src/components/Home.vue:19
+#, fuzzy
+msgctxt "Content/Home/Header"
+msgid "About this Funkwhale pod"
+msgstr "Quant a Funkwhale"
+
+#: front/src/components/About.vue:21 src/components/About.vue:51
+#, fuzzy
+msgctxt "Content/About/Header"
+msgid "About this pod"
+msgstr "Quant a aquesta instància"
+
+#: front/src/views/content/libraries/Detail.vue:48
+msgctxt "Content/Library/Button.Label"
+msgid "Accept"
+msgstr "Acceptar"
+
+#: front/src/views/content/libraries/Detail.vue:40
+msgctxt "Content/Library/Table/Short"
+msgid "Accepted"
+msgstr "Acceptat"
+
+#: front/src/components/auth/SubsonicTokenForm.vue:117
+msgctxt "Content/Settings/Message"
+msgid "Access disabled"
+msgstr "Accés desactivat"
+
+#: front/src/components/mixins/Translations.vue:85
+#: front/src/components/mixins/Translations.vue:86
+msgctxt "Content/OAuth Scopes/Paragraph"
+msgid "Access to audio files, libraries, artists, albums and tracks"
+msgstr "Accés als arxius d'àudio, biblioteques, artistes, àlbums i cançons"
+
+#: front/src/components/mixins/Translations.vue:109
+#: front/src/components/mixins/Translations.vue:110
+msgctxt "Content/OAuth Scopes/Paragraph"
+msgid "Access to content filters"
+msgstr "Accés als filtres de contingut"
+
+#: front/src/components/mixins/Translations.vue:117
+#: front/src/components/mixins/Translations.vue:118
+msgctxt "Content/OAuth Scopes/Paragraph"
+msgid "Access to edits"
+msgstr "Accés deshabilitat"
+
+#: front/src/components/mixins/Translations.vue:81
+#: front/src/components/mixins/Translations.vue:82
+msgctxt "Content/OAuth Scopes/Paragraph"
+msgid "Access to email, username, and profile information"
+msgstr "Accés al correu, nom d'usuari i informació del perfil"
+
+#: front/src/components/mixins/Translations.vue:89
+#: front/src/components/mixins/Translations.vue:90
+msgctxt "Content/OAuth Scopes/Paragraph"
+msgid "Access to favorites"
+msgstr "Accés a favorits"
+
+#: front/src/components/mixins/Translations.vue:97
+#: front/src/components/mixins/Translations.vue:98
+msgctxt "Content/OAuth Scopes/Paragraph"
+msgid "Access to follows"
+msgstr "Accés als seguidors"
+
+#: front/src/components/mixins/Translations.vue:93
+#: front/src/components/mixins/Translations.vue:94
+msgctxt "Content/OAuth Scopes/Paragraph"
+msgid "Access to listening history"
+msgstr "Accés a l'historial de reproduccions"
+
+#: front/src/components/mixins/Translations.vue:113
+#: front/src/components/mixins/Translations.vue:114
+msgctxt "Content/OAuth Scopes/Paragraph"
+msgid "Access to notifications"
+msgstr "Accés a les notificacions"
+
+#: front/src/components/mixins/Translations.vue:101
+#: front/src/components/mixins/Translations.vue:102
+msgctxt "Content/OAuth Scopes/Paragraph"
+msgid "Access to playlists"
+msgstr "Accés a la llista de reproducció"
+
+#: front/src/components/mixins/Translations.vue:105
+#: front/src/components/mixins/Translations.vue:106
+msgctxt "Content/OAuth Scopes/Paragraph"
+msgid "Access to radios"
+msgstr "Accés a les ràdios"
+
+#: front/src/components/manage/library/UploadsTable.vue:67
+#: front/src/components/mixins/Translations.vue:55
+#: front/src/views/admin/library/UploadDetail.vue:175
+#: front/src/components/mixins/Translations.vue:56
+msgctxt "Content/*/*/Noun"
+msgid "Accessed date"
+msgstr "Data d'accés"
+
+#: front/src/components/manage/library/LibrariesTable.vue:49
+#: front/src/components/manage/library/UploadsTable.vue:61
+#: front/src/components/manage/moderation/ReportCard.vue:156
+#: front/src/components/mixins/Report.vue:13
+#: front/src/views/admin/library/LibraryDetail.vue:113
+#: front/src/views/admin/library/UploadDetail.vue:111
+#: front/src/components/mixins/Report.vue:14
+msgctxt "*/*/*/Noun"
+msgid "Account"
+msgstr "Compte"
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:107
+msgctxt "Content/Moderation/Title"
+msgid "Account data"
+msgstr "Dades del compte"
+
+#: front/src/components/auth/Settings.vue:5
+msgctxt "Content/Settings/Title"
+msgid "Account settings"
+msgstr "Configuració del compte"
+
+#: front/src/components/auth/Settings.vue:544
+msgctxt "Head/Settings/Title"
+msgid "Account Settings"
+msgstr "Configuració del compte"
+
+#: front/src/components/manage/users/UsersTable.vue:39
+msgctxt "Content/Admin/Table.Label/Short, Noun"
+msgid "Account status"
+msgstr "Estat del compte"
+
+#: front/src/views/auth/PasswordReset.vue:14
+msgctxt "Content/Signup/Input.Label"
+msgid "Account's email"
+msgstr "Correu del compte"
+
+#: front/src/views/admin/moderation/AccountsList.vue:3
+#: front/src/views/admin/moderation/AccountsList.vue:24
+#: front/src/views/admin/moderation/Base.vue:11
+msgctxt "*/Moderation/Title"
+msgid "Accounts"
+msgstr "Comptes"
+
+#: front/src/views/content/libraries/Detail.vue:29
+msgctxt "Content/Library/Table.Label"
+msgid "Action"
+msgstr "Acció"
+
+#: front/src/components/common/ActionTable.vue:101
+msgctxt "Content/*/Paragraph"
+msgid "Action %{ action } was launched successfully on %{ count } element"
+msgid_plural "Action %{ action } was launched successfully on %{ count } elements"
+msgstr[0] "L'acció  %{ action } està en marxa en %{ count } element"
+msgstr[1] "L'acció  %{ action } està en marxa en %{ count } elements"
+
+#: front/src/components/common/ActionTable.vue:22
+#: front/src/components/library/radios/Builder.vue:65
+#: front/src/components/manage/moderation/ReportCard.vue:210
+msgctxt "Content/*/*/Noun"
+msgid "Actions"
+msgstr "Accions"
+
+#: front/src/components/manage/users/UsersTable.vue:54
+msgctxt "Content/Admin/Table"
+msgid "Active"
+msgstr "Actiu"
+
+#: front/src/views/admin/library/AlbumDetail.vue:140
+#: front/src/views/admin/library/ArtistDetail.vue:128
+#: front/src/views/admin/library/LibraryDetail.vue:147
+#: front/src/views/admin/library/TagDetail.vue:83
+#: front/src/views/admin/library/TrackDetail.vue:192
+#: front/src/views/admin/library/UploadDetail.vue:160
+#: front/src/views/admin/moderation/AccountsDetail.vue:221
+#: front/src/views/admin/moderation/DomainsDetail.vue:173
+msgctxt "Content/Moderation/Title"
+msgid "Activity"
+msgstr "Activitat"
+
+#: front/src/components/mixins/Translations.vue:7
+#: front/src/components/mixins/Translations.vue:8
+msgctxt "Content/Settings/Dropdown.Label/Noun"
+msgid "Activity visibility"
+msgstr "Visualitzar l'activitat"
+
+#: front/src/views/admin/moderation/DomainsList.vue:22
+msgctxt "Content/Moderation/Button/Verb"
+msgid "Add"
+msgstr "Afegir"
+
+#: front/src/views/admin/moderation/DomainsList.vue:13
+msgctxt "Content/Moderation/Form.Label/Verb"
+msgid "Add a domain"
+msgstr "Afegir un domini"
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:79
+msgctxt "Content/Moderation/Button/Verb"
+msgid "Add a moderation policy"
+msgstr "Afegir una nova política de moderació"
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:4
+msgctxt "Content/Moderation/Card.Button.Label/Verb"
+msgid "Add a new moderation rule"
+msgstr "Afegir una nova regla de moderació"
+
+#: front/src/views/content/Home.vue:35
+msgctxt "Content/Library/Title/Verb"
+msgid "Add and manage content"
+msgstr "Agregar i gestionar contingut"
+
+#: front/src/components/playlists/Editor.vue:28
+#: front/src/components/playlists/PlaylistModal.vue:31
+msgctxt "*/Playlist/Button.Label/Verb"
+msgid "Add anyways"
+msgstr "Afegeix de totes maneres"
+
+#: front/src/components/Sidebar.vue:75 src/views/content/Base.vue:18
+msgctxt "*/Library/*/Verb"
+msgid "Add content"
+msgstr "Afegir contingut"
+
+#: front/src/components/library/radios/Builder.vue:51
+msgctxt "Content/Radio/Button.Label/Verb"
+msgid "Add filter"
+msgstr "Afegir filtre"
+
+#: front/src/components/library/radios/Builder.vue:41
+msgctxt "Content/Radio/Paragraph"
+msgid "Add filters to customize your radio"
+msgstr "Afegir filtres per personalitzar la teva radio"
+
+#: front/src/components/manage/moderation/NoteForm.vue:12
+#, fuzzy
+msgctxt "Content/Moderation/Button.Label/Verb"
+msgid "Add note"
+msgstr "Afegir contingut"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:191
+#: front/src/views/admin/moderation/DomainsDetail.vue:46
+#: front/src/views/admin/moderation/DomainsList.vue:18
+#, fuzzy
+msgctxt "Content/Moderation/Action/Verb"
+msgid "Add to allow-list"
+msgstr "Afegir a la llista de reproducció …"
+
+#: front/src/components/audio/PlayButton.vue:91
+msgctxt "*/Queue/Dropdown/Button/Title"
+msgid "Add to current queue"
+msgstr "Afegir a la cua de reproducció actual"
+
+#: front/src/components/favorites/TrackFavoriteIcon.vue:4
+#: front/src/components/favorites/TrackFavoriteIcon.vue:28
+msgctxt "Content/Track/*/Verb"
+msgid "Add to favorites"
+msgstr "Afegir a favorits"
+
+#: front/src/components/playlists/TrackPlaylistIcon.vue:6
+#: front/src/components/playlists/TrackPlaylistIcon.vue:34
+msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
+msgid "Add to playlist…"
+msgstr "Afegir a la llista de reproducció …"
+
+#: front/src/components/audio/PlayButton.vue:15
+msgctxt "*/Queue/Dropdown/Button/Label/Short"
+msgid "Add to queue"
+msgstr "Afegir a la cua de reproducció"
+
+#: front/src/components/playlists/PlaylistModal.vue:142
+msgctxt "Popup/Playlist/Table.Button.Tooltip/Verb"
+msgid "Add to this playlist"
+msgstr "Afegir a la llista de reproducció"
+
+#: front/src/components/playlists/PlaylistModal.vue:68
+msgctxt "Popup/Playlist/Table.Button.Label/Verb"
+msgid "Add track"
+msgstr "Afegir pista"
+
+#: front/src/components/manage/users/UsersTable.vue:70
+msgctxt "Content/Admin/Table.User role"
+msgid "Admin"
+msgstr "Administrador"
+
+#: front/src/components/Sidebar.vue:79
+msgctxt "Sidebar/Admin/Title/Noun"
+msgid "Administration"
+msgstr "Administració"
+
+#: front/src/components/audio/SearchBar.vue:33
+#: src/components/audio/track/Table.vue:9
+#: front/src/components/library/AlbumBase.vue:170
+#: front/src/components/library/ArtistBase.vue:212
+#: front/src/components/manage/library/TracksTable.vue:40
+#: front/src/components/metadata/Search.vue:134
+#: src/components/mixins/Report.vue:41
+#: front/src/views/admin/library/TrackDetail.vue:113
+#: front/src/views/content/libraries/FilesTable.vue:57
+#: front/src/components/mixins/Report.vue:42
+msgctxt "*/*/*"
+msgid "Album"
+msgstr "Àlbum"
+
+#: front/src/views/admin/library/TrackDetail.vue:134
+msgctxt "*/*/*/Noun"
+msgid "Album artist"
+msgstr "Àlbum d'aquest artista"
+
+#: front/src/views/admin/library/AlbumDetail.vue:98
+msgctxt "Content/Moderation/Title"
+msgid "Album data"
+msgstr "Dades de l'àlbum"
+
+#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/mixins/Translations.vue:62
+msgctxt "Content/*/Dropdown/Noun"
+msgid "Album name"
+msgstr "Nom de l'àlbum"
+
+#: front/src/components/audio/Search.vue:19
+#: src/components/library/Albums.vue:129
+#: front/src/components/library/Library.vue:7
+#: src/components/library/TagDetail.vue:28
+#: front/src/components/manage/library/ArtistsTable.vue:41
+#: front/src/components/manage/library/TagsTable.vue:43
+#: front/src/views/admin/library/AlbumsList.vue:24
+#: front/src/views/admin/library/ArtistDetail.vue:256
+#: front/src/views/admin/library/Base.vue:11
+#: front/src/views/admin/library/LibraryDetail.vue:238
+#: front/src/views/admin/library/TagDetail.vue:133
+#: front/src/views/admin/moderation/AccountsDetail.vue:366
+#: front/src/views/admin/moderation/DomainsDetail.vue:301
+msgctxt "*/*/*"
+msgid "Albums"
+msgstr "Àlbums"
+
+#: front/src/components/library/ArtistDetail.vue:21
+msgctxt "Content/Artist/Title"
+msgid "Albums by this artist"
+msgstr "Àlbums d'aquest artista"
+
+#: front/src/components/manage/library/EditsCardList.vue:15
+#: front/src/components/manage/library/LibrariesTable.vue:13
+#: front/src/components/manage/library/UploadsTable.vue:13
+#: front/src/components/manage/library/UploadsTable.vue:22
+#: front/src/components/manage/moderation/DomainsTable.vue:11
+#: front/src/components/manage/users/InvitationsTable.vue:19
+#: front/src/components/moderation/ReportCategoryDropdown.vue:32
+#: front/src/views/admin/moderation/ReportsList.vue:17
+#: front/src/views/content/libraries/FilesTable.vue:13
+msgctxt "Content/*/Dropdown"
+msgid "All"
+msgstr "Tot"
+
+#: front/src/components/common/ActionTable.vue:59
+msgctxt "Content/*/Paragraph"
+msgid "All %{ count } element selected"
+msgid_plural "All %{ count } elements selected"
+msgstr[0] "Únic element seleccionat"
+msgstr[1] "Tots els %{ count } elements seleccionats"
+
+#: front/src/components/auth/Authorize.vue:107
+msgctxt "Head/Authorize/Title"
+msgid "Allow application"
+msgstr "Autoritzar l'aplicació"
+
+#: front/src/components/About.vue:136
+msgctxt "*/*/*"
+msgid "Allow-list"
+msgstr ""
+
+#: front/src/components/About.vue:149
+#, fuzzy
+msgctxt "*/*/*"
+msgid "Allowed domains"
+msgstr "Afegir un domini"
+
+#: front/src/components/library/ImportStatusModal.vue:17
+#, fuzzy
+msgctxt "Popup/Import/Message"
+msgid "An error occurred during upload processing. You will find more information below."
+msgstr "S'ha produït un error durant la càrrega. Més informació a sota."
+
+#: front/src/components/playlists/Editor.vue:13
+#, fuzzy
+msgctxt "Content/Playlist/Error message.Title"
+msgid "An error occurred while saving your changes"
+msgstr "S'ha produït una error mentres es guardaven els canvis"
+
+#: front/src/components/federation/FetchButton.vue:21
+#, fuzzy
+msgctxt "Popup/*/Message.Content"
+msgid "An error occurred while trying to refresh data:"
+msgstr "S'ha produït un error durant l'actualització de les dades:"
+
+#: front/src/components/federation/FetchButton.vue:41
+#, fuzzy
+msgctxt "*/*/Error"
+msgid "An HTTP error occurred while contacting the remote server"
+msgstr "Un error HTTP s'ha produït al conectar-se al servidor remot"
+
+#: front/src/components/library/ImportStatusModal.vue:145
+#, fuzzy
+msgctxt "Popup/Import/Error.Label"
+msgid "An unknown error occurred"
+msgstr "Un error desconegut s'ha produït"
+
+#: front/src/components/About.vue:123
+msgctxt "*/*/*"
+msgid "Anonymous access"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:54
+msgctxt "Popup/Moderation/Error message"
+msgid "Anonymous reports are disabled, please sign-in to submit a report."
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:175
+#: src/components/auth/Settings.vue:225
+msgctxt "*/*/*/Noun"
+msgid "Application"
+msgstr "Aplicació"
+
+#: front/src/components/auth/ApplicationEdit.vue:12
+msgctxt "Content/Applications/Title"
+msgid "Application details"
+msgstr "Detalls de l'aplicació"
+
+#: front/src/components/auth/ApplicationEdit.vue:21
+msgctxt "Content/Applications/Label"
+msgid "Application ID"
+msgstr "ID de l'aplicació"
+
+#: front/src/components/auth/ApplicationEdit.vue:16
+msgctxt "Content/Application/Paragraph/"
+msgid "Application ID and secret are really sensitive values and must be treated like passwords. Do not share those with anyone else."
+msgstr "L'ID i el secret de l'aplicació són valors realment sensibles i han de ser tractats com les contrasenyes. No els comparteixis amb ningú."
+
+#: front/src/components/auth/ApplicationEdit.vue:25
+msgctxt "Content/Applications/Label"
+msgid "Application secret"
+msgstr "Secret de l'aplicació"
+
+#: front/src/components/library/EditCard.vue:81
+#: front/src/components/notifications/NotificationRow.vue:66
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Approve"
+msgstr "Aprovar"
+
+#: front/src/components/library/EditCard.vue:25
+#: front/src/components/manage/library/EditsCardList.vue:21
+msgctxt "Content/*/*/Short"
+msgid "Approved"
+msgstr "Aprovat"
+
+#: front/src/components/library/EditCard.vue:21
+msgctxt "Content/Library/Card/Short"
+msgid "Approved and applied"
+msgstr "Aprovat i aplicat"
+
+#: front/src/components/auth/Logout.vue:5
+msgctxt "Content/Login/Title"
+msgid "Are you sure you want to log out?"
+msgstr "Segur que vols tancat la sessió?"
+
+#: front/src/components/audio/SearchBar.vue:32
+#: src/components/audio/track/Table.vue:8
+#: front/src/components/manage/library/AlbumsTable.vue:40
+#: front/src/components/manage/library/TracksTable.vue:41
+#: front/src/components/metadata/Search.vue:130
+#: src/components/mixins/Report.vue:55
+#: front/src/views/admin/library/AlbumDetail.vue:114
+#: front/src/views/admin/library/TrackDetail.vue:124
+#: front/src/views/content/libraries/FilesTable.vue:56 src/entities.js:12
+#: front/src/components/mixins/Report.vue:56
+msgctxt "*/*/*/Noun"
+msgid "Artist"
+msgstr "Artista"
+
+#: front/src/views/admin/library/ArtistDetail.vue:96
+msgctxt "Content/Moderation/Title"
+msgid "Artist data"
+msgstr "Dades de l'artista"
+
+#: front/src/components/mixins/Translations.vue:62
+#: front/src/components/mixins/Translations.vue:63
+msgctxt "Content/*/Dropdown/Noun"
+msgid "Artist name"
+msgstr "Nom de l'artista"
+
+#: front/src/components/audio/Search.vue:65
+msgctxt "*/Search/Input.Placeholder"
+msgid "Artist, album, track…"
+msgstr "Artista, àlbum, pista …"
+
+#: front/src/components/audio/Search.vue:10
+#: src/components/library/Artists.vue:117
+#: front/src/components/library/Library.vue:10
+#: front/src/components/library/TagDetail.vue:19
+#: front/src/components/manage/library/TagsTable.vue:42
+#: front/src/views/admin/library/ArtistsList.vue:24
+#: front/src/views/admin/library/Base.vue:8
+#: front/src/views/admin/library/LibraryDetail.vue:228
+#: front/src/views/admin/library/TagDetail.vue:123
+#: front/src/views/admin/moderation/AccountsDetail.vue:358
+#: front/src/views/admin/moderation/DomainsDetail.vue:291
+msgctxt "*/*/*/Noun"
+msgid "Artists"
+msgstr "Artistes"
+
+#: front/src/components/favorites/List.vue:34
+#: src/components/library/Albums.vue:29
+#: front/src/components/library/Artists.vue:29
+#: src/components/library/Radios.vue:44
+#: front/src/components/manage/library/AlbumsTable.vue:21
+#: front/src/components/manage/library/ArtistsTable.vue:21
+#: front/src/components/manage/library/EditsCardList.vue:39
+#: front/src/components/manage/library/LibrariesTable.vue:30
+#: front/src/components/manage/library/TagsTable.vue:21
+#: front/src/components/manage/library/TracksTable.vue:21
+#: front/src/components/manage/library/UploadsTable.vue:40
+#: front/src/components/manage/moderation/AccountsTable.vue:21
+#: front/src/components/manage/moderation/DomainsTable.vue:27
+#: front/src/components/manage/users/UsersTable.vue:19
+#: front/src/views/admin/moderation/ReportsList.vue:44
+#: front/src/views/content/libraries/FilesTable.vue:31
+#: front/src/views/playlists/List.vue:27
+msgctxt "Content/Search/Dropdown"
+msgid "Ascending"
+msgstr "Ascendent"
+
+#: front/src/views/auth/PasswordReset.vue:28
+msgctxt "Content/Signup/Button.Label/Verb"
+msgid "Ask for a password reset"
+msgstr "Sol·licitar el restabliment de la contrasenya"
+
+#: front/src/components/manage/moderation/ReportCard.vue:72
+msgctxt "Content/Moderation/*"
+msgid "Assigned to"
+msgstr ""
+
+#: front/src/views/admin/library/AlbumDetail.vue:214
+#: front/src/views/admin/library/ArtistDetail.vue:202
+#: front/src/views/admin/library/LibraryDetail.vue:195
+#: front/src/views/admin/library/TagDetail.vue:113
+#: front/src/views/admin/library/TrackDetail.vue:266
+#: front/src/views/admin/library/UploadDetail.vue:191
+#: front/src/views/admin/moderation/AccountsDetail.vue:285
+#: front/src/views/admin/moderation/DomainsDetail.vue:239
+msgctxt "Content/Moderation/Title"
+msgid "Audio content"
+msgstr "Contingut d'àudio"
+
+#: front/src/components/ShortcutsModal.vue:92
+msgctxt "Popup/Keyboard shortcuts/Title"
+msgid "Audio player shortcuts"
+msgstr "Dreceres del reproductor d'àudio"
+
+#: front/src/components/auth/Authorize.vue:47
+msgctxt "Content/Signup/Button.Label/Verb"
+msgid "Authorize %{ app }"
+msgstr "Autoritzar %{ app }"
+
+#: front/src/components/auth/Authorize.vue:4
+msgctxt "Content/Auth/Title/Verb"
+msgid "Authorize third-party app"
+msgstr "Autoritzar una aplicació de tercers"
+
+#: front/src/components/auth/Settings.vue:162
+msgctxt "Content/Settings/Title/Noun"
+msgid "Authorized apps"
+msgstr "Apps autoritzades"
+
+#: front/src/components/playlists/PlaylistModal.vue:40
+msgctxt "Popup/Playlist/Title"
+msgid "Available playlists"
+msgstr "Llistes de reproducció disponibles"
+
+#: front/src/components/auth/Settings.vue:34
+msgctxt "Content/Settings/Title"
+msgid "Avatar"
+msgstr "Avatar"
+
+#: front/src/views/auth/PasswordReset.vue:25
+#: front/src/views/auth/PasswordResetConfirm.vue:18
+msgctxt "Content/Signup/Link"
+msgid "Back to login"
+msgstr "Tornar a la pàgina de connexió"
+
+#: front/src/components/auth/ApplicationEdit.vue:9
+#: front/src/components/auth/ApplicationNew.vue:5
+msgctxt "Content/Applications/Link"
+msgid "Back to settings"
+msgstr "Tornar a la configuració"
+
+#: front/src/components/library/TrackDetail.vue:48
+#: front/src/components/mixins/Translations.vue:67
+#: front/src/views/admin/library/UploadDetail.vue:227
+#: front/src/components/mixins/Translations.vue:68
+msgctxt "Content/Track/*/Noun"
+msgid "Bitrate"
+msgstr "Taxa de bits"
+
+#: front/src/components/manage/moderation/InstancePolicyCard.vue:19
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:34
+msgctxt "Content/Moderation/*/Verb"
+msgid "Block everything"
+msgstr "Bloquejar-ho tot"
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:112
+msgctxt "Content/Moderation/Help text"
+msgid "Block everything from this account or domain. This will prevent any interaction with the entity, and purge related content (uploads, libraries, follows, etc.)"
+msgstr "Bloquejar-ho tot des d'aquest compte o domini. Això evitarà qualsevol interacció amb l’entitat, i es netejarà el contingut relacionat (pistes, biblioteques, seguidors, …)"
+
+#: front/src/components/Sidebar.vue:18 src/components/library/Library.vue:4
+msgctxt "*/Library/*/Verb"
+msgid "Browse"
+msgstr "Navega"
+
+#: front/src/components/Sidebar.vue:65
+msgctxt "Sidebar/Library/List item.Link/Verb"
+msgid "Browse library"
+msgstr "Navegueu per la biblioteca"
+
+#: front/src/components/Home.vue:132
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Browse public content"
+msgstr "El contingut de la taula s'ha actualitzat"
+
+#: front/src/components/library/Albums.vue:4
+msgctxt "Content/Album/Title"
+msgid "Browsing albums"
+msgstr "Navegueu pels àlbums"
+
+#: front/src/components/library/Artists.vue:4
+msgctxt "Content/Artist/Title"
+msgid "Browsing artists"
+msgstr "Navegueu pels artistes"
+
+#: front/src/views/playlists/List.vue:3
+msgctxt "Content/Playlist/Title"
+msgid "Browsing playlists"
+msgstr "Navegueu per la llistes de reproducció"
+
+#: front/src/components/library/Radios.vue:4
+msgctxt "Content/Radio/Title"
+msgid "Browsing radios"
+msgstr "Navegueu per les ràdios"
+
+#: front/src/components/library/radios/Builder.vue:5
+msgctxt "Content/Radio/Title"
+msgid "Builder"
+msgstr "Editor"
+
+#: front/src/components/audio/album/Card.vue:13
+msgctxt "Content/Album/Card"
+msgid "By %{ artist }"
+msgstr "De %{ artist }"
+
+#: front/src/views/content/remote/Card.vue:125
+msgctxt "Popup/Library/Paragraph"
+msgid "By unfollowing this library, you loose access to its content."
+msgstr "Si deixes de seguir aquesta biblioteca, perdràs l'accés al seu contingut."
+
+#: front/src/views/admin/library/AlbumDetail.vue:230
+#: front/src/views/admin/library/ArtistDetail.vue:218
+#: front/src/views/admin/library/LibraryDetail.vue:211
+#: front/src/views/admin/library/TrackDetail.vue:282
+#: front/src/views/admin/library/UploadDetail.vue:208
+#: front/src/views/admin/moderation/AccountsDetail.vue:301
+#: front/src/views/admin/moderation/DomainsDetail.vue:254
+msgctxt "Content/Moderation/Table.Label/Noun"
+msgid "Cached size"
+msgstr "Mida de la memòria cau"
+
+#: front/src/components/SetInstanceModal.vue:37
+#: front/src/components/common/DangerousButton.vue:17
+#: front/src/components/library/AlbumBase.vue:37
+#: front/src/components/library/ArtistBase.vue:48
+#: front/src/components/library/EditForm.vue:107
+#: front/src/components/library/TrackBase.vue:53
+#: front/src/components/library/radios/Filter.vue:53
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:54
+#: front/src/components/moderation/FilterModal.vue:39
+#: front/src/components/moderation/ReportModal.vue:59
+#: front/src/components/playlists/PlaylistModal.vue:26
+#: front/src/components/playlists/PlaylistModal.vue:77
+#: front/src/views/playlists/Detail.vue:62
+msgctxt "*/*/Button.Label/Verb"
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: front/src/views/content/remote/Card.vue:110
+msgctxt "Content/Library/Card.Paragraph"
+msgid "Cancel follow request"
+msgstr "Cancel·lar la petició de seguiment"
+
+#: front/src/components/library/radios/Builder.vue:64
+msgctxt "Content/Radio/Table.Label/Noun (Value is a number of Tracks)"
+msgid "Candidates"
+msgstr "Pistes candidates"
+
+#: front/src/components/library/FileUpload.vue:261
+msgctxt "Content/Library/Help text"
+msgid "Cannot upload this file, ensure it is not too big"
+msgstr "És impossible carregar aquest fitxer, assegurat que no és massa gran"
+
+#: front/src/components/manage/moderation/ReportCard.vue:30
+#: front/src/components/mixins/Translations.vue:42
+#: front/src/components/moderation/ReportCategoryDropdown.vue:2
+#: front/src/components/mixins/Translations.vue:43
+msgctxt "*/*/*"
+msgid "Category"
+msgstr ""
+
+#: front/src/components/Footer.vue:21
+msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
+msgid "Change language"
+msgstr "Canviar l'idioma"
+
+#: front/src/components/auth/Settings.vue:68
+msgctxt "Content/Settings/Title/Verb"
+msgid "Change my password"
+msgstr "Canviar la meva contrasenya"
+
+#: front/src/components/auth/Settings.vue:95
+msgctxt "Content/Settings/Button.Label"
+msgid "Change password"
+msgstr "Canviar la contrasenya"
+
+#: front/src/components/Footer.vue:37
+msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
+msgid "Change theme"
+msgstr ""
+
+#: front/src/views/auth/PasswordResetConfirm.vue:62
+msgctxt "*/Signup/Title"
+msgid "Change your password"
+msgstr "Canviar la teva contrasenya"
+
+#: front/src/components/auth/Settings.vue:96
+msgctxt "Popup/Settings/Title"
+msgid "Change your password?"
+msgstr "Canviar la teva contrasenya?"
+
+#: front/src/components/playlists/Editor.vue:31
+msgctxt "Content/Playlist/Paragraph"
+msgid "Changes synced with server"
+msgstr "Canvis sincronitzats amb el servidor"
+
+#: front/src/components/auth/Settings.vue:71
+msgctxt "Content/Settings/Paragraph'"
+msgid "Changing your password will also change your Subsonic API password if you have requested one."
+msgstr "Si canvieu la vostra contrasenya també canviarà la vostra contrasenya de l’API Subsonic si l’heu sol·licitat."
+
+#: front/src/components/auth/Settings.vue:98
+msgctxt "Popup/Settings/Paragraph"
+msgid "Changing your password will have the following consequences:"
+msgstr "Canviar la teva contrasenya tindrà les següents conseqüències:"
+
+#: front/src/components/Footer.vue:48
+msgctxt "Footer/*/List item.Link"
+msgid "Chat room"
+msgstr "Sala de xat"
+
+#: front/src/components/auth/ApplicationForm.vue:24
+msgctxt "Content/Applications/Paragraph/"
+msgid "Checking the parent \"Read\" or \"Write\" scopes implies access to all the corresponding children scopes."
+msgstr "Comprovar els àmbits pare “Llegir” o “Escriure” implica l’accés a tots els àmbits fill que en deriven."
+
+#: front/src/components/SetInstanceModal.vue:2
+msgctxt "Popup/Instance/Title"
+msgid "Choose your instance"
+msgstr "Escull la teva instància"
+
+#: front/src/components/library/EditForm.vue:75
+#: front/src/components/library/EditForm.vue:88
+#: front/src/components/manage/users/InvitationForm.vue:37
+msgctxt "Content/Library/Button.Label"
+msgid "Clear"
+msgstr "Netejar"
+
+#: front/src/components/playlists/Editor.vue:50
+#: front/src/components/playlists/Editor.vue:55
+msgctxt "*/Playlist/Button.Label/Verb"
+msgid "Clear playlist"
+msgstr "Buidar la llista de reproducció"
+
+#: front/src/components/ShortcutsModal.vue:144
+#, fuzzy
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Clear queue"
+msgstr "Neteja la cua de reproducció"
+
+#: front/src/components/audio/Player.vue:668
+msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
+msgid "Clear your queue"
+msgstr "Neteja la cua de reproducció"
+
+#: front/src/components/mixins/Translations.vue:21
+#: front/src/components/mixins/Translations.vue:22
+msgctxt "Content/Library/Link.Title"
+msgid "Click to display more information about the import process for this upload"
+msgstr "Feu clic per mostrar més informació sobre el procés d'importació per a aquesta càrrega"
+
+#: front/src/components/library/FileUpload.vue:82
+msgctxt "Content/Library/Paragraph/Call to action"
+msgid "Click to select files to upload or drag and drop files or directories"
+msgstr "Feu clic per seleccionar fitxers per carregar o arrossega i deixa anar fitxers o directoris"
+
+#: front/src/components/ShortcutsModal.vue:38
+#: front/src/components/federation/FetchButton.vue:85
+#: front/src/components/library/ImportStatusModal.vue:79
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:34
+msgctxt "*/*/Button.Label/Verb"
+msgid "Close"
+msgstr "Tancar"
+
+#: front/src/components/federation/FetchButton.vue:88
+msgctxt "*/*/Button.Label/Verb"
+msgid "Close and reload page"
+msgstr "Tancar i recarregar la pàgina"
+
+#: front/src/components/About.vue:94
+#, fuzzy
+msgctxt "*/*/*/State of registrations"
+msgid "Closed"
+msgstr "Tancar"
+
+#: front/src/components/manage/users/InvitationForm.vue:26
+#: front/src/components/manage/users/InvitationsTable.vue:42
+msgctxt "Content/Admin/Table.Label/Noun"
+msgid "Code"
+msgstr "Codi"
+
+#: front/src/components/audio/album/Card.vue:41
+#: front/src/components/common/CollapseLink.vue:3
+#, fuzzy
+msgctxt "*/*/Button,Label"
+msgid "Collapse"
+msgstr "Contraure"
+
+#: front/src/components/library/radios/Builder.vue:63
+msgctxt "Content/Radio/Table.Label/Verb (Value is a List of Parameters)"
+msgid "Config"
+msgstr "Configuració"
+
+#: front/src/components/common/DangerousButton.vue:21
+msgctxt "Modal/*/Button.Label/Short, Verb"
+msgid "Confirm"
+msgstr "Confirmar"
+
+#: front/src/views/auth/EmailConfirm.vue:51
+msgctxt "Head/Signup/Title"
+msgid "Confirm your e-mail address"
+msgstr "Confirma el teu correu electrònic"
+
+#: front/src/views/auth/EmailConfirm.vue:13
+msgctxt "Content/Signup/Form.Label"
+msgid "Confirmation code"
+msgstr "Codi de confirmació"
+
+#: front/src/components/About.vue:67 src/components/Home.vue:65
+msgctxt "Content/Home/Header/Name"
+msgid "Contact"
+msgstr ""
+
+#: front/src/components/moderation/FilterModal.vue:90
+msgctxt "*/Moderation/Message"
+msgid "Content filter successfully added"
+msgstr "S'ha afegit el filtre de contingut"
+
+#: front/src/components/auth/Settings.vue:116
+#: front/src/components/mixins/Translations.vue:108
+#: front/src/components/mixins/Translations.vue:109
+msgctxt "Content/Settings/Title/Noun"
+msgid "Content filters"
+msgstr "Filtres de continguts"
+
+#: front/src/components/auth/Settings.vue:119
+msgctxt "Content/Settings/Paragraph"
+msgid "Content filters help you hide content you don't want to see on the service."
+msgstr "Els filtres de contingut us ajuden a amagar el contingut que no voleu veure al servei."
+
+#: front/src/components/common/ActionTable.vue:8
+msgctxt "Content/*/Button.Help text.Paragraph"
+msgid "Content have been updated, click refresh to see up-to-date content"
+msgstr "S'ha actualitzat el contingut, refresca per veure el contingut actualitzat"
+
+#: front/src/components/About.vue:46
+#, fuzzy
+msgctxt "Content/About/Header"
+msgid "Contents"
+msgstr "Filtres de continguts"
+
+#: front/src/components/Footer.vue:56
+msgctxt "Footer/*/List item.Link"
+msgid "Contribute"
+msgstr "Col·laborar"
+
+#: front/src/components/audio/EmbedWizard.vue:29
+#: front/src/components/common/CopyInput.vue:8
+#: front/src/components/forms/PasswordInput.vue:43
+msgctxt "*/*/Button.Label/Short, Verb"
+msgid "Copy"
+msgstr "Copiar"
+
+#: front/src/components/playlists/Editor.vue:194
+msgctxt "Content/Playlist/Button.Tooltip/Verb"
+msgid "Copy queued tracks to playlist"
+msgstr "Copiar les cançons de la cua de reproducció a la llista de reproducció"
+
+#: front/src/components/auth/Authorize.vue:55
+msgctxt "Content/Auth/Paragraph"
+msgid "Copy-paste the following code in the application:"
+msgstr "Copia i enganxa el codi de seguiment a la vostra aplicació:"
+
+#: front/src/components/audio/EmbedWizard.vue:31
+msgctxt "Popup/Embed/Paragraph"
+msgid "Copy/paste this code in your website HTML"
+msgstr "Còpia i enganxa aquest codi dins l'HTML de la vostra web"
+
+#: front/src/components/library/TrackDetail.vue:10
+#: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:77
+msgctxt "Content/Track/*/Noun"
+msgid "Copyright"
+msgstr "Drets d'autor"
+
+#: front/src/views/auth/EmailConfirm.vue:7
+msgctxt "Content/Signup/Paragraph"
+msgid "Could not confirm your e-mail address"
+msgstr "No hem pogut confirmar la teva adreça de correu electrònic"
+
+#: front/src/views/content/remote/ScanForm.vue:3
+msgctxt "Content/Library/Error message.Title"
+msgid "Could not fetch remote library"
+msgstr "Impossible recuperar la biblioteca remota"
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:58
+msgctxt "Content/Moderation/Card.Button.Label/Verb"
+msgid "Create"
+msgstr "Crear"
+
+#: front/src/views/auth/Signup.vue:4
+msgctxt "Content/Signup/Title"
+msgid "Create a funkwhale account"
+msgstr "Crear un compte a Funkwhale"
+
+#: front/src/components/auth/ApplicationNew.vue:8
+#: front/src/components/auth/ApplicationNew.vue:41
+#: front/src/components/auth/Settings.vue:220
+msgctxt "Content/Settings/Button.Label"
+msgid "Create a new application"
+msgstr "Crear una nova aplicació"
+
+#: front/src/views/content/libraries/Home.vue:14
+msgctxt "Content/Library/Link/Verb"
+msgid "Create a new library"
+msgstr "Crear una nova biblioteca"
+
+#: front/src/components/playlists/Form.vue:2
+msgctxt "Popup/Playlist/Title/Verb"
+msgid "Create a new playlist"
+msgstr "Crear una nova llista de reproducció"
+
+#: front/src/components/Sidebar.vue:57 src/components/auth/LoginForm.vue:15
+msgctxt "*/Signup/Link/Verb"
+msgid "Create an account"
+msgstr "Crear un compte"
+
+#: front/src/components/auth/ApplicationForm.vue:65
+msgctxt "Content/Applications/Button.Label/Verb"
+msgid "Create application"
+msgstr "Crear una aplicació"
+
+#: front/src/views/content/libraries/Form.vue:26
+msgctxt "Content/Library/Button.Label/Verb"
+msgid "Create library"
+msgstr "Crear una biblioteca"
+
+#: front/src/components/auth/SignupForm.vue:49
+msgctxt "Content/Signup/Button.Label"
+msgid "Create my account"
+msgstr "Crear el meu compte"
+
+#: front/src/components/auth/Settings.vue:264
+msgctxt "Content/Applications/Paragraph"
+msgid "Create one to integrate Funkwhale with third-party applications."
+msgstr "Creeu-ne un per integrar Funkwhale amb aplicacions de tercers."
+
+#: front/src/components/playlists/Form.vue:34
+msgctxt "Content/Playlist/Button.Label/Verb"
+msgid "Create playlist"
+msgstr "Crear una llista de reproducció"
+
+#: front/src/components/library/Radios.vue:23
+msgctxt "Content/Radio/Button.Label/Verb"
+msgid "Create your own radio"
+msgstr "Crear la teva pròpia ràdio"
+
+#: front/src/components/auth/Settings.vue:134
+#: src/components/auth/Settings.vue:227
+#: front/src/components/manage/library/AlbumsTable.vue:44
+#: front/src/components/manage/library/ArtistsTable.vue:43
+#: front/src/components/manage/library/LibrariesTable.vue:54
+#: front/src/components/manage/library/TagsTable.vue:45
+#: front/src/components/manage/library/TracksTable.vue:44
+#: front/src/components/manage/library/UploadsTable.vue:66
+#: front/src/components/manage/moderation/ReportCard.vue:43
+#: front/src/components/manage/users/InvitationsTable.vue:40
+#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/mixins/Translations.vue:54
+msgctxt "Content/*/*/Noun"
+msgid "Creation date"
+msgstr "Data de creació"
+
+#: front/src/components/auth/Settings.vue:54
+msgctxt "Content/Settings/Title/Noun"
+msgid "Current avatar"
+msgstr "Avatar actual"
+
+#: front/src/components/admin/SettingsGroup.vue:67
+#, fuzzy
+msgctxt "Content/Settings/Title/Noun"
+msgid "Current image"
+msgstr "Ús actual"
+
+#: front/src/views/content/libraries/DetailArea.vue:4
+msgctxt "Content/Library/Title"
+msgid "Current library"
+msgstr "Biblioteca actual"
+
+#: front/src/components/playlists/PlaylistModal.vue:8
+msgctxt "Popup/Playlist/Title"
+msgid "Current track"
+msgstr "Pista actual"
+
+#: front/src/views/content/libraries/Quota.vue:2
+msgctxt "Content/Library/Title"
+msgid "Current usage"
+msgstr "Ús actual"
+
+#: front/src/components/Footer.vue:94
+msgctxt "Footer/Settings/Dropdown.Label/Theme name"
+msgid "Dark"
+msgstr ""
+
+#: front/src/components/federation/FetchButton.vue:53
+msgctxt "*/*/Error"
+msgid "Data returned by the remote server had invalid or missing attributes"
+msgstr "Les dades retornades pel servidor remot tenien atributs invàlids o en faltaven"
+
+#: front/src/components/federation/FetchButton.vue:17
+msgctxt "Popup/*/Message.Content"
+msgid "Data was refreshed successfully from remote server."
+msgstr "Les dades s'han actualitzat correctament des del servidor remot."
+
+#: front/src/views/content/libraries/Detail.vue:27
+msgctxt "Content/Library/Table.Label"
+msgid "Date"
+msgstr "Data"
+
+#: front/src/components/library/ImportStatusModal.vue:64
+msgctxt "Popup/Import/Table.Label/Noun"
+msgid "Debug information"
+msgstr "Informació de depuració"
+
+#: front/src/components/ShortcutsModal.vue:128
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Decrease volume"
+msgstr "Disminueix el volum"
+
+#: front/src/components/auth/Settings.vue:150
+#: src/components/auth/Settings.vue:251
+#: front/src/components/library/EditCard.vue:93
+#: front/src/components/library/EditCard.vue:98
+#: front/src/components/manage/library/AlbumsTable.vue:188
+#: front/src/components/manage/library/ArtistsTable.vue:178
+#: front/src/components/manage/library/LibrariesTable.vue:205
+#: front/src/components/manage/library/TagsTable.vue:179
+#: front/src/components/manage/library/TracksTable.vue:188
+#: front/src/components/manage/library/UploadsTable.vue:255
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:61
+#: front/src/components/manage/moderation/NotesThread.vue:24
+#: front/src/components/manage/moderation/NotesThread.vue:29
+#: front/src/components/manage/moderation/ReportCard.vue:360
+#: front/src/components/manage/users/InvitationsTable.vue:167
+#: front/src/views/admin/library/AlbumDetail.vue:78
+#: front/src/views/admin/library/AlbumDetail.vue:83
+#: front/src/views/admin/library/ArtistDetail.vue:76
+#: front/src/views/admin/library/ArtistDetail.vue:81
+#: front/src/views/admin/library/LibraryDetail.vue:58
+#: front/src/views/admin/library/LibraryDetail.vue:63
+#: front/src/views/admin/library/TagDetail.vue:41
+#: front/src/views/admin/library/TagDetail.vue:46
+#: front/src/views/admin/library/TrackDetail.vue:77
+#: front/src/views/admin/library/TrackDetail.vue:82
+#: front/src/views/admin/library/UploadDetail.vue:65
+#: front/src/views/admin/library/UploadDetail.vue:70
+#: front/src/views/content/libraries/FilesTable.vue:222
+#: front/src/views/content/libraries/Form.vue:29
+#: src/views/playlists/Detail.vue:42
+msgctxt "*/*/*/Verb"
+msgid "Delete"
+msgstr "Suprimir"
+
+#: front/src/components/auth/Settings.vue:254
+msgctxt "*/Settings/Button.Label/Verb"
+msgid "Delete application"
+msgstr "Suprimir l'aplicació"
+
+#: front/src/components/auth/Settings.vue:252
+msgctxt "Popup/Settings/Title"
+msgid "Delete application \"%{ application }\"?"
+msgstr "Suprimir l'aplicació \"%{ application }\"?"
+
+#: front/src/views/content/libraries/Form.vue:39
+msgctxt "Popup/Library/Button.Label/Verb"
+msgid "Delete library"
+msgstr "Suprimir la llibreria"
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:69
+msgctxt "Popup/Moderation/Button.Label/Verb"
+msgid "Delete moderation rule"
+msgstr "Suprimir la regla de moderació"
+
+#: front/src/components/auth/Settings.vue:274
+#: src/components/auth/Settings.vue:302
+#, fuzzy
+msgctxt "*/*/Button.Label"
+msgid "Delete my account"
+msgstr "Crear el meu compte"
+
+#: front/src/components/auth/Settings.vue:297
+#, fuzzy
+msgctxt "*/*/Button.Label"
+msgid "Delete my account…"
+msgstr "Crear el meu compte"
+
+#: front/src/views/playlists/Detail.vue:47
+msgctxt "Popup/Playlist/Button.Label/Verb"
+msgid "Delete playlist"
+msgstr "Suprimir la llista de reproducció"
+
+#: front/src/views/radios/Detail.vue:28
+msgctxt "Popup/Radio/Button.Label/Verb"
+msgid "Delete radio"
+msgstr "Suprimir la ràdio"
+
+#: front/src/components/manage/moderation/ReportCard.vue:357
+msgctxt "Content/Moderation/Button/Verb"
+msgid "Delete reported object"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:358
+msgctxt "Content/Moderation/Popup/Header"
+msgid "Delete reported object?"
+msgstr ""
+
+#: front/src/views/admin/library/AlbumDetail.vue:79
+#: front/src/views/admin/library/TrackDetail.vue:78
+msgctxt "Popup/Library/Title"
+msgid "Delete this album?"
+msgstr "Suprimir aquest àlbum?"
+
+#: front/src/views/admin/library/ArtistDetail.vue:77
+msgctxt "Popup/Library/Title"
+msgid "Delete this artist?"
+msgstr "Suprimir aquest artista?"
+
+#: front/src/views/admin/library/LibraryDetail.vue:59
+#: front/src/views/content/libraries/Form.vue:31
+msgctxt "Popup/Library/Title"
+msgid "Delete this library?"
+msgstr "Suprimir la biblioteca?"
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:63
+msgctxt "Popup/Moderation/Title"
+msgid "Delete this moderation rule?"
+msgstr "Suprimir la regla de moderació?"
+
+#: front/src/components/manage/moderation/NotesThread.vue:25
+#, fuzzy
+msgctxt "Popup/Moderation/Title"
+msgid "Delete this note?"
+msgstr "Suprimir aquest artista?"
+
+#: front/src/components/library/EditCard.vue:94
+msgctxt "Popup/Library/Title"
+msgid "Delete this suggestion?"
+msgstr "Suprimir aquesta suggerència?"
+
+#: front/src/views/admin/library/TagDetail.vue:42
+#, fuzzy
+msgctxt "Popup/Library/Title"
+msgid "Delete this tag?"
+msgstr "Suprimir aquest àlbum?"
+
+#: front/src/views/admin/library/UploadDetail.vue:66
+msgctxt "Popup/Library/Title"
+msgid "Delete this upload?"
+msgstr "Suprimir aquest enviament?"
+
+#: front/src/components/favorites/List.vue:35
+#: src/components/library/Albums.vue:30
+#: front/src/components/library/Artists.vue:30
+#: src/components/library/Radios.vue:47
+#: front/src/components/manage/library/AlbumsTable.vue:22
+#: front/src/components/manage/library/ArtistsTable.vue:22
+#: front/src/components/manage/library/EditsCardList.vue:40
+#: front/src/components/manage/library/LibrariesTable.vue:31
+#: front/src/components/manage/library/TagsTable.vue:22
+#: front/src/components/manage/library/TracksTable.vue:22
+#: front/src/components/manage/library/UploadsTable.vue:41
+#: front/src/components/manage/moderation/AccountsTable.vue:22
+#: front/src/components/manage/moderation/DomainsTable.vue:28
+#: front/src/components/manage/users/UsersTable.vue:20
+#: front/src/views/admin/moderation/ReportsList.vue:45
+#: front/src/views/content/libraries/FilesTable.vue:32
+#: front/src/views/playlists/List.vue:28
+msgctxt "Content/Search/Dropdown"
+msgid "Descending"
+msgstr "Descendent"
+
+#: front/src/components/manage/moderation/NoteForm.vue:37
+msgctxt "Content/Moderation/Placeholder"
+msgid "Describe what actions have been taken, or any other related updates…"
+msgstr ""
+
+#: front/src/components/library/radios/Builder.vue:25
+#: front/src/views/admin/library/LibraryDetail.vue:132
+#: front/src/views/content/libraries/Form.vue:14
+msgctxt "*/*/*/Noun"
+msgid "Description"
+msgstr "Descripció"
+
+#: front/src/views/content/libraries/Card.vue:48
+#: src/views/content/remote/Card.vue:67
+msgctxt "Content/Library/Card.Button.Label/Noun"
+msgid "Details"
+msgstr "Detalls"
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:511
+msgctxt "Content/Moderation/Help text"
+msgid "Determine how much content the user can upload. Leave empty to use the default value of the instance."
+msgstr "Determineu la quantitat de contingut que l'usuari pot carregar. Deixeu-ho en blanc per utilitzar el valor per defecte de la instància."
+
+#: front/src/components/mixins/Translations.vue:8
+#: front/src/components/mixins/Translations.vue:9
+msgctxt "Content/Settings/Dropdown.Help text"
+msgid "Determine the visibility level of your activity"
+msgstr "Determina el nivell de la visibilitat de la teva activitat"
+
+#: front/src/components/auth/Settings.vue:104
+#: front/src/components/auth/SubsonicTokenForm.vue:56
+msgctxt "Popup/Settings/Button.Label"
+msgid "Disable access"
+msgstr "Desactivar l'accés"
+
+#: front/src/components/auth/SubsonicTokenForm.vue:53
+msgctxt "Content/Settings/Button.Label/Verb"
+msgid "Disable Subsonic access"
+msgstr "Desactivar l'accés via Subsonic"
+
+#: front/src/components/auth/SubsonicTokenForm.vue:54
+msgctxt "Popup/Settings/Title"
+msgid "Disable Subsonic API access?"
+msgstr "Desactivar l'accés a l'API Subsonic?"
+
+#: front/src/components/About.vue:118 src/components/About.vue:131
+#: front/src/components/About.vue:144
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:18
+#: front/src/views/admin/moderation/AccountsDetail.vue:157
+#: front/src/views/admin/moderation/AccountsDetail.vue:161
+#, fuzzy
+msgctxt "*/*/*/State of feature"
+msgid "Disabled"
+msgstr "Desactivat"
+
+#: front/src/views/admin/library/TrackDetail.vue:151
+msgctxt "*/*/*/Noun"
+msgid "Disc number"
+msgstr "Número de disc"
+
+#: front/src/components/Home.vue:157
+msgctxt "Content/Home/Link"
+msgid "Discover everything you need to know about Funkwhale and its features"
+msgstr ""
+
+#: front/src/components/auth/SubsonicTokenForm.vue:13
+msgctxt "Content/Settings/Link"
+msgid "Discover how to use Funkwhale from other apps"
+msgstr "Descobreix com utilitzar Funkwhale des d'altres aplicacions"
+
+#: front/src/views/Notifications.vue:45
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Discover other ways to help"
+msgstr ""
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:132
+msgctxt "'Content/*/*/Noun'"
+msgid "Display name"
+msgstr "Mostra el nom"
+
+#: front/src/components/library/radios/Builder.vue:30
+msgctxt "Content/Radio/Checkbox.Label/Verb"
+msgid "Display publicly"
+msgstr "Mostrar públicament"
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:122
+msgctxt "Content/Moderation/Help text"
+msgid "Do not download any media file (audio, album cover, account avatar…) from this account or domain. This will purge existing content as well."
+msgstr "No descarregueu cap fitxer multimèdia (àudio, portada, avatar del compte, …) des d'aquest compte o domini. Això també eliminarà el contingut existent."
+
+#: front/src/views/Notifications.vue:36
+#, fuzzy
+msgctxt "Content/Notifications/Header"
+msgid "Do you like Funkwhale?"
+msgstr "Quant a Funkwhale"
+
+#: front/src/components/playlists/Editor.vue:51
+msgctxt "Popup/Playlist/Title"
+msgid "Do you want to clear the playlist \"%{ playlist }\"?"
+msgstr "Vols buidar la llista de reproducció \"%{ playlist }\"?"
+
+#: front/src/components/common/DangerousButton.vue:7
+msgctxt "Modal/*/Title"
+msgid "Do you want to confirm this action?"
+msgstr "Vols confirmar aquesta acció?"
+
+#: front/src/views/playlists/Detail.vue:43
+msgctxt "Popup/Playlist/Title/Call to action"
+msgid "Do you want to delete the playlist \"%{ playlist }\"?"
+msgstr "Vols eliminar aquesta llista de reproducció \"%{ playlist }\"?"
+
+#: front/src/views/radios/Detail.vue:26
+msgctxt "Popup/Radio/Title"
+msgid "Do you want to delete the radio \"%{ radio }\"?"
+msgstr "Vols suprimir aquesta ràdio \"%{ radio }\"?"
+
+#: front/src/components/auth/Settings.vue:298
+#, fuzzy
+msgctxt "Popup/Settings/Title"
+msgid "Do you want to delete your account?"
+msgstr "Voleu restaurar la darrera cua de reproducció?"
+
+#: front/src/components/moderation/FilterModal.vue:3
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Do you want to hide content from artist \"%{ name }\"?"
+msgstr "Vols ocultar el contingut de l’artista \"%{ name }\"?"
+
+#: front/src/components/common/ActionTable.vue:37
+msgctxt "Modal/*/Title"
+msgid "Do you want to launch %{ action } on %{ count } element?"
+msgid_plural "Do you want to launch %{ action } on %{ count } elements?"
+msgstr[0] "Vols executar l'acció %{ action } de %{ count } element?"
+msgstr[1] "Vols executar l'acció %{ action } de %{ count } elements?"
+
+#: front/src/components/moderation/ReportModal.vue:3
+#, fuzzy
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Do you want to report this object?"
+msgstr "Vols confirmar aquesta acció?"
+
+#: front/src/components/Sidebar.vue:122
+msgctxt "Sidebar/Queue/Message"
+msgid "Do you want to restore your previous queue?"
+msgstr "Voleu restaurar la darrera cua de reproducció?"
+
+#: front/src/components/Footer.vue:31
+msgctxt "Footer/*/List item.Link/Short, Noun"
+msgid "Documentation"
+msgstr "Documentació"
+
+#: front/src/components/manage/library/AlbumsTable.vue:41
+#: front/src/components/manage/library/ArtistsTable.vue:40
+#: front/src/components/manage/library/LibrariesTable.vue:50
+#: front/src/components/manage/library/TracksTable.vue:42
+#: front/src/components/manage/library/UploadsTable.vue:62
+#: front/src/components/manage/moderation/AccountsTable.vue:40
+#: front/src/components/manage/moderation/ReportCard.vue:169
+#: front/src/components/manage/moderation/ReportCard.vue:179
+#: front/src/components/mixins/Translations.vue:72
+#: front/src/views/admin/library/AlbumDetail.vue:124
+#: front/src/views/admin/library/ArtistDetail.vue:112
+#: front/src/views/admin/library/LibraryDetail.vue:123
+#: front/src/views/admin/library/TrackDetail.vue:176
+#: front/src/views/admin/library/UploadDetail.vue:121
+#: front/src/views/admin/moderation/AccountsDetail.vue:123
+#: front/src/components/mixins/Translations.vue:73
+msgctxt "Content/Moderation/*/Noun"
+msgid "Domain"
+msgstr "Domini"
+
+#: front/src/views/admin/moderation/Base.vue:8
+#: front/src/views/admin/moderation/DomainsList.vue:3
+#: front/src/views/admin/moderation/DomainsList.vue:54
+msgctxt "*/Moderation/*/Noun"
+msgid "Domains"
+msgstr "Dominis"
+
+#: front/src/views/Notifications.vue:42
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Donate"
+msgstr ""
+
+#: front/src/components/library/TrackBase.vue:37
+#: front/src/views/admin/library/UploadDetail.vue:58
+msgctxt "Content/Track/Link/Verb"
+msgid "Download"
+msgstr "Descarregar"
+
+#: front/src/components/playlists/Editor.vue:59
+msgctxt "Content/Playlist/Paragraph/Call to action"
+msgid "Drag and drop rows to reorder tracks in the playlist"
+msgstr "Arrossega i deixa anar les files per reordenar les cançons de lla llista de reproducció"
+
+#: front/src/components/audio/track/Table.vue:10
+#: front/src/components/library/TrackDetail.vue:30
+#: front/src/components/mixins/Translations.vue:68
+#: front/src/views/admin/library/UploadDetail.vue:238
+#: front/src/views/content/libraries/FilesTable.vue:60
+#: front/src/components/mixins/Translations.vue:69
+msgctxt "Content/*/*"
+msgid "Duration"
+msgstr "Durada"
+
+#: front/src/views/auth/EmailConfirm.vue:23
+msgctxt "Content/Signup/Message"
+msgid "E-mail address confirmed"
+msgstr "Correu electrònic confirmat"
+
+#: front/src/components/auth/Settings.vue:246
+#: src/components/library/AlbumBase.vue:73
+#: front/src/components/library/ArtistBase.vue:84
+#: front/src/components/library/TrackBase.vue:89
+#: front/src/components/manage/moderation/InstancePolicyCard.vue:45
+#: front/src/components/radios/Card.vue:23
+#: src/views/admin/library/AlbumDetail.vue:71
+#: front/src/views/admin/library/ArtistDetail.vue:69
+#: front/src/views/admin/library/TrackDetail.vue:70
+#: front/src/views/content/libraries/Detail.vue:9
+#: src/views/playlists/Detail.vue:31
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Edit"
+msgstr "Editar"
+
+#: front/src/components/auth/ApplicationEdit.vue:30
+#: front/src/components/auth/ApplicationEdit.vue:75
+msgctxt "Content/Applications/Title"
+msgid "Edit application"
+msgstr "Editar l'aplicació"
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:3
+msgctxt "Content/Moderation/Card.Title/Verb"
+msgid "Edit moderation rule"
+msgstr "Editar les regles de moderació"
+
+#: front/src/components/library/AlbumEdit.vue:4
+msgctxt "Content/*/Title"
+msgid "Edit this album"
+msgstr "Editar aquest àlbum"
+
+#: front/src/components/library/ArtistEdit.vue:4
+msgctxt "Content/*/Title"
+msgid "Edit this artist"
+msgstr "Editar l'artista"
+
+#: front/src/components/library/TrackEdit.vue:4
+msgctxt "Content/*/Title"
+msgid "Edit this track"
+msgstr "Edita aquesta pista"
+
+#: front/src/components/mixins/Translations.vue:116
+#: front/src/views/admin/library/AlbumDetail.vue:198
+#: front/src/views/admin/library/ArtistDetail.vue:186
+#: front/src/views/admin/library/Base.vue:5
+#: src/views/admin/library/EditsList.vue:24
+#: front/src/views/admin/library/TrackDetail.vue:250
+#: front/src/components/mixins/Translations.vue:117
+msgctxt "*/Admin/*/Noun"
+msgid "Edits"
+msgstr "Modificacions"
+
+#: front/src/components/auth/SignupForm.vue:26
+#: front/src/components/manage/users/UsersTable.vue:38
+#: front/src/components/moderation/ReportModal.vue:31
+msgctxt "Content/*/*/Noun"
+msgid "Email"
+msgstr "Correu electrònic"
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:140
+msgctxt "Content/*/*"
+msgid "Email address"
+msgstr "Adreça de correu electrònic"
+
+#: front/src/components/library/AlbumBase.vue:54
+#: front/src/components/library/ArtistBase.vue:65
+#: front/src/components/library/TrackBase.vue:70
+#: src/views/playlists/Detail.vue:38
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Embed"
+msgstr "Incrustar"
+
+#: front/src/components/audio/EmbedWizard.vue:30
+msgctxt "Popup/Embed/Input.Label/Noun"
+msgid "Embed code"
+msgstr "Codi incrustat"
+
+#: front/src/components/library/AlbumBase.vue:27
+msgctxt "Popup/Album/Title/Verb"
+msgid "Embed this album on your website"
+msgstr "Inserir aquest àlbum a la teva pàgina"
+
+#: front/src/components/library/ArtistBase.vue:38
+msgctxt "Popup/Artist/Title/Verb"
+msgid "Embed this artist work on your website"
+msgstr "Incrusta l'obra d'aquest artista a la teva pàgina web"
+
+#: front/src/views/playlists/Detail.vue:52
+#, fuzzy
+msgctxt "Popup/Album/Title/Verb"
+msgid "Embed this playlist on your website"
+msgstr "Inserir aquest àlbum a la teva pàgina"
+
+#: front/src/components/library/TrackBase.vue:43
+msgctxt "Popup/Track/Title"
+msgid "Embed this track on your website"
+msgstr "Incrusta aquesta pista a la teva pàgina web"
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:260
+#: front/src/views/admin/moderation/DomainsDetail.vue:224
+msgctxt "Content/Moderation/Table.Label/Noun"
+msgid "Emitted library follows"
+msgstr "Segueix la biblioteca emesa"
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:244
+#: front/src/views/admin/moderation/DomainsDetail.vue:208
+msgctxt "Content/Moderation/Table.Label/Noun"
+msgid "Emitted messages"
+msgstr "Missatges emesos"
+
+#: front/src/components/About.vue:114 src/components/About.vue:127
+#: front/src/components/About.vue:140
+#: front/src/components/manage/moderation/InstancePolicyCard.vue:8
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:17
+#: front/src/views/admin/moderation/AccountsDetail.vue:156
+#: front/src/views/admin/moderation/AccountsDetail.vue:160
+#, fuzzy
+msgctxt "*/*/*/State of feature"
+msgid "Enabled"
+msgstr "Activat"
+
+#: front/src/views/playlists/Detail.vue:30
+msgctxt "Content/Playlist/Button.Label/Verb"
+msgid "End edition"
+msgstr "Acabar l'edició"
+
+#: front/src/views/content/remote/ScanForm.vue:50
+msgctxt "Content/Library/Input.Placeholder"
+msgid "Enter a library URL"
+msgstr "Introduir la URL de la biblioteca"
+
+#: front/src/components/library/Radios.vue:141
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Enter a radio name…"
+msgstr "Introdueix un nom per la radio …"
+
+#: front/src/components/library/Albums.vue:128
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Enter album title…"
+msgstr "Introduir el nom de l'àlbum …"
+
+#: front/src/components/library/Artists.vue:116
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Enter artist name…"
+msgstr "Introduir el nom d'artista …"
+
+#: front/src/views/playlists/List.vue:107
+msgctxt "Content/Playlist/Placeholder/Call to action"
+msgid "Enter playlist name…"
+msgstr "Introduir el nom de la llista de reproducció …"
+
+#: front/src/views/auth/PasswordReset.vue:54
+#, fuzzy
+msgctxt "Content/Signup/Input.Placeholder"
+msgid "Enter the email address linked to your account"
+msgstr "Introdueix el correu electrònic associat al vostre compte"
+
+#: front/src/components/auth/SignupForm.vue:96
+msgctxt "Content/Signup/Form/Placeholder"
+msgid "Enter your email"
+msgstr "Introdueix el teu correu electrònic"
+
+#: front/src/components/auth/SignupForm.vue:91
+#: src/components/auth/SignupForm.vue:93
+msgctxt "Content/Signup/Form/Placeholder"
+msgid "Enter your invitation code (case insensitive)"
+msgstr "Introdueix el codi d'invitació (No distingeix entre majúscules i minúscules)"
+
+#: front/src/components/metadata/Search.vue:114
+msgctxt "Content/Library/Input.Placeholder/Verb"
+msgid "Enter your search query…"
+msgstr "Introdueix la teva consulta …"
+
+#: front/src/components/auth/SignupForm.vue:95
+msgctxt "Content/Signup/Form/Placeholder"
+msgid "Enter your username"
+msgstr "Introdueix el nom del teu usuari"
+
+#: front/src/components/auth/LoginForm.vue:81
+msgctxt "Content/Login/Input.Placeholder"
+msgid "Enter your username or email"
+msgstr "Introdueix el teu nom d'usuari o bé el teu correu electrònic"
+
+#: front/src/components/auth/SubsonicTokenForm.vue:19
+#: front/src/views/content/libraries/Form.vue:4
+msgctxt "Content/*/Error message.Title"
+msgid "Error"
+msgstr "Error"
+
+#: front/src/components/federation/FetchButton.vue:34
+#: front/src/components/library/ImportStatusModal.vue:32
+msgctxt "Popup/Import/Table.Label/Noun"
+msgid "Error detail"
+msgstr "Detalls de l'error"
+
+#: front/src/views/admin/Settings.vue:89
+msgctxt "Content/Admin/Menu"
+msgid "Error reporting"
+msgstr "Informe d'errors"
+
+#: front/src/components/federation/FetchButton.vue:26
+#: front/src/components/library/ImportStatusModal.vue:24
+msgctxt "Popup/Import/Table.Label/Noun"
+msgid "Error type"
+msgstr "Tipus d'error"
+
+#: front/src/components/common/ActionTable.vue:94
+msgctxt "Content/*/Error message/Header"
+msgid "Error while applying action"
+msgstr "Error aplicant l’acció"
+
+#: front/src/views/auth/PasswordReset.vue:7
+msgctxt "Content/Signup/Card.Title"
+msgid "Error while asking for a password reset"
+msgstr "Error demanant el restabliment de la contrasenya"
+
+#: front/src/components/auth/Authorize.vue:6
+msgctxt "Popup/Moderation/Error message"
+msgid "Error while authorizing application"
+msgstr "Error autoritzant l'aplicació"
+
+#: front/src/views/auth/PasswordResetConfirm.vue:7
+msgctxt "Content/Signup/Card.Title"
+msgid "Error while changing your password"
+msgstr "Error al canviar de contrasenya"
+
+#: front/src/views/admin/moderation/DomainsList.vue:6
+msgctxt "Content/Moderation/Message.Title"
+msgid "Error while creating domain"
+msgstr "Error creant el domini"
+
+#: front/src/components/moderation/FilterModal.vue:13
+msgctxt "Popup/Moderation/Error message"
+msgid "Error while creating filter"
+msgstr "Error creant el filtre"
+
+#: front/src/components/manage/users/InvitationForm.vue:4
+msgctxt "Content/Admin/Error message.Title"
+msgid "Error while creating invitation"
+msgstr "Error creant la invitació"
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:7
+msgctxt "Content/Moderation/Error message.Title"
+msgid "Error while creating rule"
+msgstr "Error creant la regla"
+
+#: front/src/components/auth/Authorize.vue:7
+msgctxt "Popup/Moderation/Error message"
+msgid "Error while fetching application data"
+msgstr "Error obtenint les dades de l'aplicació"
+
+#: front/src/views/admin/moderation/DomainsDetail.vue:155
+msgctxt "Content/Moderation/Table"
+msgid "Error while fetching node info"
+msgstr "Error obtenint informació del node"
+
+#: front/src/components/admin/SettingsGroup.vue:5
+#: front/src/components/federation/FetchButton.vue:73
+msgctxt "Content/*/Error message.Title"
+msgid "Error while saving settings"
+msgstr "Error guardant els canvis"
+
+#: front/src/components/library/EditForm.vue:46
+msgctxt "Content/Library/Error message.Title"
+msgid "Error while submitting edit"
+msgstr "Error trametent les modificaions"
+
+#: front/src/components/manage/moderation/NoteForm.vue:3
+#, fuzzy
+msgctxt "Content/Moderation/Error message.Title"
+msgid "Error while submitting note"
+msgstr "Error trametent les modificaions"
+
+#: front/src/components/moderation/ReportModal.vue:11
+#, fuzzy
+msgctxt "Popup/Moderation/Error message"
+msgid "Error while submitting report"
+msgstr "Error trametent les modificaions"
+
+#: front/src/components/mixins/Translations.vue:32
+#: front/src/components/mixins/Translations.vue:33
+msgctxt "Content/Library/Table/Short"
+msgid "Errored"
+msgstr "Per error"
+
+#: front/src/views/content/libraries/Quota.vue:75
+msgctxt "Content/Library/Label"
+msgid "Errored files"
+msgstr "Arxius erronis"
+
+#: front/src/components/mixins/Translations.vue:17
+#: front/src/components/mixins/Translations.vue:18
+msgctxt "Content/Settings/Dropdown/Short"
+msgid "Everyone"
+msgstr "Tothom"
+
+#: front/src/components/mixins/Translations.vue:11
+#: front/src/components/mixins/Translations.vue:12
+msgctxt "Content/Settings/Dropdown"
+msgid "Everyone on this instance"
+msgstr "Tothom d'aquesta instància"
+
+#: front/src/components/mixins/Translations.vue:12
+#: front/src/components/mixins/Translations.vue:13
+msgctxt "Content/Settings/Dropdown"
+msgid "Everyone, across all instances"
+msgstr "Tothom, en totes les instàncies"
+
+#: front/src/components/library/radios/Builder.vue:62
+msgctxt "Content/Radio/Table.Label/Verb"
+msgid "Exclude"
+msgstr "Excloure"
+
+#: front/src/components/common/CollapseLink.vue:2
+msgctxt "*/*/Button,Label"
+msgid "Expand"
+msgstr ""
+
+#: front/src/components/manage/users/InvitationsTable.vue:41
+#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:60
+msgctxt "Content/Admin/Table.Label/Noun"
+msgid "Expiration date"
+msgstr "Data de caducitat"
+
+#: front/src/components/manage/users/InvitationsTable.vue:50
+msgctxt "Content/Admin/Table"
+msgid "Expired"
+msgstr "Caducat"
+
+#: front/src/components/manage/users/InvitationsTable.vue:21
+msgctxt "Content/Admin/Dropdown/Adjective"
+msgid "Expired/used"
+msgstr "Caducat/utilitzat"
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:110
+msgctxt "Content/Moderation/Help text"
+msgid "Explain why you're applying this policy. Depending on your instance configuration, this will help you remember why you acted on this account or domain, and may be displayed publicly to help users understand what moderation rules are in place."
+msgstr "Explica perquè apliques aquesta regla. En funció de la configuració de la vostra instància,  això us ajudarà a recordar per què heu actuat així en aquest compte o aquest domini i que es pot mostrar públicament per ajudar als usuaris a entendre quines són les normes de moderació."
+
+#: front/src/components/manage/library/UploadsTable.vue:25
+#: front/src/views/content/libraries/FilesTable.vue:16
+msgctxt "Content/Library/Dropdown"
+msgid "Failed"
+msgstr "Fallat"
+
+#: front/src/views/content/remote/Card.vue:75
+msgctxt "Content/Library/Card.List item/Noun"
+msgid "Failed tracks:"
+msgstr "Pistes fallides:"
+
+#: front/src/views/admin/library/AlbumDetail.vue:171
+#: front/src/views/admin/library/ArtistDetail.vue:159
+#: front/src/views/admin/library/TrackDetail.vue:223
+msgctxt "*/*/*"
+msgid "Favorited tracks"
+msgstr "Pistes preferides"
+
+#: front/src/components/Sidebar.vue:66
+#: src/components/mixins/Translations.vue:88
+#: front/src/components/mixins/Translations.vue:89
+msgctxt "Sidebar/Favorites/List item.Link/Noun"
+msgid "Favorites"
+msgstr "Preferides"
+
+#: front/src/components/About.vue:110 src/views/admin/Settings.vue:84
+#, fuzzy
+msgctxt "*/*/*"
+msgid "Federation"
+msgstr "Federació"
+
+#: front/src/components/library/TrackDetail.vue:66
+msgctxt "Content/*/*/Noun"
+msgid "Federation ID"
+msgstr "ID de federació"
+
+#: front/src/components/library/EditCard.vue:45
+msgctxt "Content/Library/Card.Table.Header/Short"
+msgid "Field"
+msgstr "Camp"
+
+#: front/src/components/library/FileUpload.vue:93
+msgctxt "Content/Library/Table.Label"
+msgid "Filename"
+msgstr "Nom del fitxer"
+
+#: front/src/components/library/radios/Builder.vue:61
+msgctxt "Content/Radio/Table.Label/Noun"
+msgid "Filter name"
+msgstr "Nom del filtre"
+
+#: front/src/components/Home.vue:118
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Find another pod"
+msgstr "Envia una altre modificació"
+
+#: front/src/components/manage/library/UploadsTable.vue:26
+#: front/src/components/mixins/Translations.vue:36
+#: front/src/views/content/libraries/FilesTable.vue:17
+#: front/src/components/mixins/Translations.vue:37
+msgctxt "Content/Library/*"
+msgid "Finished"
+msgstr "Acabat"
+
+#: front/src/components/manage/moderation/AccountsTable.vue:42
+#: front/src/components/manage/moderation/DomainsTable.vue:49
+#: front/src/views/admin/library/AlbumDetail.vue:155
+#: front/src/views/admin/library/ArtistDetail.vue:143
+#: front/src/views/admin/library/LibraryDetail.vue:162
+#: front/src/views/admin/library/TagDetail.vue:98
+#: front/src/views/admin/library/TrackDetail.vue:207
+#: front/src/views/admin/library/UploadDetail.vue:167
+#: front/src/views/admin/moderation/AccountsDetail.vue:236
+#: front/src/views/admin/moderation/DomainsDetail.vue:188
+msgctxt "Content/Moderation/Table.Label/Short (Value is a date)"
+msgid "First seen"
+msgstr "Vist per primera vegada"
+
+#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:57
+msgctxt "Content/Moderation/Dropdown/Noun"
+msgid "First seen date"
+msgstr "Data de descoberta"
+
+#: front/src/components/ShortcutsModal.vue:64
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Focus searchbar"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:100
+msgctxt "Content/Library/Card.Button.Label/Verb"
+msgid "Follow"
+msgstr "Seguir"
+
+#: front/src/views/content/Home.vue:16
+msgctxt "Content/Library/Title/Verb"
+msgid "Follow remote libraries"
+msgstr "Seguir les biblioteques remotes"
+
+#: front/src/views/content/remote/Card.vue:105
+msgctxt "Content/Library/Card.Paragraph"
+msgid "Follow request pending approval"
+msgstr "Petició de seguiment pendent d'aprovació"
+
+#: front/src/components/manage/library/LibrariesTable.vue:53
+#: front/src/components/mixins/Translations.vue:76
+#: front/src/views/admin/library/LibraryDetail.vue:170
+#: front/src/views/content/libraries/Detail.vue:7
+#: front/src/components/mixins/Translations.vue:77
+msgctxt "Content/Federation/*/Noun"
+msgid "Followers"
+msgstr "Seguidors"
+
+#: front/src/views/content/remote/Card.vue:116
+msgctxt "Content/Library/Card.Paragraph"
+msgid "Following"
+msgstr "Seguidor"
+
+#: front/src/components/mixins/Translations.vue:96
+#: front/src/components/mixins/Translations.vue:97
+msgctxt "Content/OAuth Scopes/Label"
+msgid "Follows"
+msgstr "Seguidors"
+
+#: front/src/components/library/TrackBase.vue:245
+msgctxt "Content/Track/Paragraph"
+msgid "From album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgstr "De l'àlbum <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> de <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+
+#: front/src/components/auth/Authorize.vue:28
+msgctxt "Content/Auth/Label/Noun"
+msgid "Full access"
+msgstr "Accés total"
+
+#: front/src/components/auth/SubsonicTokenForm.vue:7
+msgctxt "Content/Settings/Paragraph'"
+msgid "Funkwhale is compatible with other music players that support the Subsonic API."
+msgstr "Funkwhale és compatible amb altres reproductors de música que suporten l'API Subsonic."
+
+#: front/src/components/Home.vue:88
+#, fuzzy
+msgctxt "Content/Home/Paragraph"
+msgid "Funkwhale is free and developped by a friendly community of volunteers."
+msgstr "Funkwahale és gratuïti et dona el control d ela teva música."
+
+#: front/src/components/About.vue:78
+msgctxt "*/*/*"
+msgid "Funkwhale version"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:56
+msgctxt "Popup/Keyboard shortcuts/Title"
+msgid "General shortcuts"
+msgstr "Dreceres principals"
+
+#: front/src/components/manage/users/InvitationForm.vue:16
+msgctxt "Content/Admin/Button.Label/Verb"
+msgid "Get a new invitation"
+msgstr "Obtenir una nova invitació"
+
+#: front/src/views/content/Home.vue:12 src/views/content/Home.vue:19
+msgctxt "Content/Library/Button.Label/Verb"
+msgid "Get started"
+msgstr "Començar"
+
+#: front/src/components/Footer.vue:45
+#: src/components/library/ImportStatusModal.vue:45
+msgctxt "Footer/*/Link"
+msgid "Getting help"
+msgstr "Obtenir ajuda"
+
+#: front/src/components/common/ActionTable.vue:35
+#: front/src/components/common/ActionTable.vue:56
+msgctxt "Content/*/Button.Label/Short, Verb"
+msgid "Go"
+msgstr "Vés"
+
+#: front/src/components/PageNotFound.vue:14
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Go to home page"
+msgstr "Tornar a la pàgina d'inici"
+
+#: front/src/views/Notifications.vue:27 src/views/Notifications.vue:61
+msgctxt "Content/Notifications/Button.Label"
+msgid "Got it!"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:128
+msgctxt "Content/Settings/Title"
+msgid "Hidden artists"
+msgstr "Artistes ocults"
+
+#: front/src/components/About.vue:155
+msgctxt "*/*/*/Verb"
+msgid "Hide"
+msgstr ""
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:114
+msgctxt "Content/Moderation/Help text"
+msgid "Hide account or domain content, except from followers."
+msgstr "Amagar el contingut del compte o domini, excepte pels seguidors."
+
+#: front/src/components/moderation/FilterModal.vue:40
+msgctxt "Popup/*/Button.Label"
+msgid "Hide content"
+msgstr "Amagar el contingut"
+
+#: front/src/components/audio/PlayButton.vue:31
+msgctxt "*/Queue/Dropdown/Button/Label/Short"
+msgid "Hide content from this artist"
+msgstr "Amagar la informació d'aquest artista"
+
+#: front/src/components/audio/Player.vue:669
+msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
+msgid "Hide content from this artist…"
+msgstr "Amagar la informació d'aquest artista …"
+
+#: front/src/components/library/Home.vue:65
+msgctxt "Head/Home/Title"
+msgid "Home"
+msgstr "Inici"
+
+#: front/src/components/auth/SubsonicTokenForm.vue:10
+msgctxt "Content/Settings/Paragraph"
+msgid "However, accessing Funkwhale from those clients require a separate password you can set below."
+msgstr "Tanmateix, accedir a Funkwhale des d’aquests clients requereix una contrasenya separada que pots definir a continuació."
+
+#: front/src/views/auth/PasswordResetConfirm.vue:24
+#, fuzzy
+msgctxt "Content/Signup/Paragraph"
+msgid "If the email address provided in the previous step is valid and linked to a user account, you should receive an email with reset instructions in the next couple of minutes."
+msgstr "Si l’adreça de correu electrònic proporcionada és vàlida i està vinculada a un compte d’usuari, haureu de rebre un correu electrònic amb instruccions de restabliment en els propers minuts."
+
+#: front/src/components/auth/Settings.vue:205
+msgctxt "Content/Applications/Paragraph"
+msgid "If you authorize third-party applications to access your data, those applications will be listed here."
+msgstr "Si autoritzes a donar les teves dades a aplicacions de tercers, aquestes aplicacions seran llistades aquí."
+
+#: front/src/components/mixins/Translations.vue:46
+#: front/src/components/mixins/Translations.vue:47
+#, fuzzy
+msgctxt "Content/Moderation/Dropdown"
+msgid "Illegal content"
+msgstr "Amagar el contingut"
+
+#: front/src/components/library/ImportStatusModal.vue:3
+msgctxt "Popup/Import/Title"
+msgid "Import detail"
+msgstr "Detalls de la importació"
+
+#: front/src/components/library/FileUpload.vue:50
+msgctxt "Content/Library/Input.Label/Noun"
+msgid "Import reference"
+msgstr "Referència de la importació"
+
+#: front/src/components/manage/library/UploadsTable.vue:20
+#: front/src/components/manage/library/UploadsTable.vue:64
+#: front/src/views/admin/library/UploadDetail.vue:131
+#: front/src/views/content/libraries/FilesTable.vue:11
+#: front/src/views/content/libraries/FilesTable.vue:59
+msgctxt "Content/*/*/Noun"
+msgid "Import status"
+msgstr "Estat de la importació"
+
+#: front/src/components/mixins/Translations.vue:37
+#: front/src/components/mixins/Translations.vue:38
+msgctxt "Content/Library/Help text"
+msgid "Imported"
+msgstr "Importat"
+
+#: front/src/components/federation/FetchButton.vue:47
+msgctxt "*/*/Error"
+msgid "Impossible to connect to the remote server"
+msgstr "Impossible connectar amb el servidor remot"
+
+#: front/src/components/moderation/FilterModal.vue:26
+msgctxt "Popup/Moderation/List item"
+msgid "In \"Recently added\" widget"
+msgstr "Dins el giny \"Afegit recentment\""
+
+#: front/src/components/moderation/FilterModal.vue:27
+msgctxt "Popup/Moderation/List item"
+msgid "In artists and album listings"
+msgstr "Dins les llistes d'artistes i àlbums"
+
+#: front/src/components/favorites/TrackFavoriteIcon.vue:3
+msgctxt "Content/Track/Button.Message"
+msgid "In favorites"
+msgstr "A favorits"
+
+#: front/src/components/moderation/FilterModal.vue:25
+msgctxt "Popup/Moderation/List item"
+msgid "In other users favorites and listening history"
+msgstr "Dins els preferits d'altres usuaris i l'historiador de reproduccions"
+
+#: front/src/components/moderation/FilterModal.vue:28
+msgctxt "Popup/Moderation/List item"
+msgid "In radio suggestions"
+msgstr "Dins les sugerències de la ràdio"
+
+#: front/src/components/manage/users/UsersTable.vue:55
+msgctxt "Content/Admin/Table"
+msgid "Inactive"
+msgstr "Inactiu"
+
+#: front/src/components/ShortcutsModal.vue:124
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Increase volume"
+msgstr "Augmentar el volum"
+
+#: front/src/components/playlists/Editor.vue:41
+msgctxt "Content/Playlist/Button.Label/Verb"
+msgid "Insert from queue (%{ count } track)"
+msgid_plural "Insert from queue (%{ count } tracks)"
+msgstr[0] "Insereix des de la cua (%{ count } pista)"
+msgstr[1] "Insereix des de la cua (%{ count } pistes)"
+
+#: front/src/components/mixins/Translations.vue:16
+#: front/src/components/mixins/Translations.vue:17
+msgctxt "Content/Settings/Dropdown/Short"
+msgid "Instance"
+msgstr "Instància"
+
+#: front/src/views/admin/moderation/DomainsDetail.vue:99
+msgctxt "Content/Moderation/Title"
+msgid "Instance data"
+msgstr "Dades de la instància"
+
+#: front/src/views/admin/Settings.vue:80
+msgctxt "Content/Admin/Menu"
+msgid "Instance information"
+msgstr "Informació d'aquesta instància"
+
+#: front/src/components/library/Radios.vue:9
+msgctxt "Content/Radio/Title"
+msgid "Instance radios"
+msgstr "Ràdios de la instància"
+
+#: front/src/views/admin/Settings.vue:75
+msgctxt "Head/Admin/Title"
+msgid "Instance settings"
+msgstr "Paràmetres de la instància"
+
+#: front/src/components/SetInstanceModal.vue:19
+msgctxt "Popup/Instance/Input.Label/Noun"
+msgid "Instance URL"
+msgstr "Adreça de la instància"
+
+#: front/src/components/manage/moderation/ReportCard.vue:92
+#: front/src/components/manage/moderation/ReportCard.vue:203
+msgctxt "Content/*/*/Noun"
+msgid "Internal notes"
+msgstr ""
+
+#: front/src/components/library/FileUpload.vue:268
+msgctxt "Content/Library/Help text"
+msgid "Invalid file type, ensure you are uploading an audio file. Supported file extensions are %{ extensions }"
+msgstr "El tipus de fitxer no és vàlid, assegurat de carregar un fitxer d'àudio. Les extensions de fitxers compatibles són %{ extensions }"
+
+#: front/src/components/library/ImportStatusModal.vue:139
+#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:46
+msgctxt "Popup/Import/Error.Label"
+msgid "Invalid metadata"
+msgstr "Metadades invàlides"
+
+#: front/src/components/auth/SignupForm.vue:40
+#: front/src/components/manage/users/InvitationForm.vue:11
+msgctxt "Content/*/Input.Label"
+msgid "Invitation code"
+msgstr "Codi d'invitació"
+
+#: front/src/views/admin/users/Base.vue:8
+#: front/src/views/admin/users/InvitationsList.vue:24
+msgctxt "*/Admin/*/Noun"
+msgid "Invitations"
+msgstr "Invitacions"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:9
+#: front/src/views/admin/moderation/DomainsDetail.vue:106
+msgctxt "Content/Moderation/*/Adjective"
+msgid "Is present on allow-list"
+msgstr ""
+
+#: front/src/components/Footer.vue:49
+msgctxt "Footer/*/List item.Link"
+msgid "Issue tracker"
+msgstr "Seguiment de problemes"
+
+#: front/src/components/SetInstanceModal.vue:5
+msgctxt "Popup/Instance/Error message.Title"
+msgid "It is not possible to connect to the given URL"
+msgstr "No és possible conectar-se a la URL assenyalada"
+
+#: front/src/components/mixins/Translations.vue:65
+#: front/src/components/mixins/Translations.vue:66
+msgctxt "*/*/*/Noun"
+msgid "Items"
+msgstr ""
+
+#: front/src/components/Footer.vue:33 src/components/ShortcutsModal.vue:3
+msgctxt "*/*/*/Noun"
+msgid "Keyboard shortcuts"
+msgstr "Dreceres de teclat"
+
+#: front/src/views/admin/moderation/DomainsDetail.vue:198
+msgctxt "Content/Moderation/Table.Label.Link"
+msgid "Known accounts"
+msgstr "Comptes coneguts"
+
+#: front/src/views/content/remote/Home.vue:14
+msgctxt "Content/Library/Title"
+msgid "Known libraries"
+msgstr "Biblioteques conegudes"
+
+#: front/src/components/manage/users/UsersTable.vue:41
+#: front/src/components/mixins/Translations.vue:70
+#: front/src/views/admin/moderation/AccountsDetail.vue:206
+#: front/src/components/mixins/Translations.vue:71
+msgctxt "Content/Profile/Table.Label/Short, Noun (Value is a date)"
+msgid "Last activity"
+msgstr "Última activitat"
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:189
+#: front/src/views/admin/moderation/DomainsDetail.vue:115
+msgctxt "Content/*/Table.Label"
+msgid "Last checked"
+msgstr "Última comprovació"
+
+#: front/src/components/playlists/PlaylistModal.vue:46
+msgctxt "Popup/Playlist/Table.Label/Short"
+msgid "Last modification"
+msgstr "Última modificació"
+
+#: front/src/components/manage/moderation/AccountsTable.vue:43
+msgctxt "Content/Moderation/Table.Label/Noun"
+msgid "Last seen"
+msgstr "Vist la darrera vegada"
+
+#: front/src/components/mixins/Translations.vue:57
+#: front/src/components/mixins/Translations.vue:58
+msgctxt "Content/Moderation/Dropdown/Noun"
+msgid "Last seen date"
+msgstr "Data de la darrera visita"
+
+#: front/src/views/content/remote/Card.vue:73
+msgctxt "Content/Library/Card.List item/Noun"
+msgid "Last update:"
+msgstr "Última actualització:"
+
+#: front/src/components/common/ActionTable.vue:49
+msgctxt "Modal/*/Button.Label/Short, Verb"
+msgid "Launch"
+msgstr "Iniciar"
+
+#: front/src/components/Home.vue:35
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Learn more"
+msgstr "Carrega'n més …"
+
+#: front/src/components/manage/users/InvitationForm.vue:58
+msgctxt "Content/Admin/Input.Placeholder"
+msgid "Leave empty for a random code"
+msgstr "Deixar en blanc per obtenir un codi aleatori"
+
+#: front/src/components/audio/EmbedWizard.vue:17
+msgctxt "Popup/Embed/Paragraph"
+msgid "Leave empty for a responsive widget"
+msgstr "Deixeu-ho en blanc per a un giny responsiu"
+
+#: front/src/components/mixins/Translations.vue:64
+#: front/src/components/mixins/Translations.vue:65
+msgctxt "*/*/*/Noun"
+msgid "Length"
+msgstr ""
+
+#: front/src/views/admin/library/AlbumDetail.vue:248
+#: front/src/views/admin/library/ArtistDetail.vue:236
+#: front/src/views/admin/library/Base.vue:17
+#: front/src/views/admin/library/LibrariesList.vue:24
+#: front/src/views/admin/library/TrackDetail.vue:300
+#: front/src/views/admin/moderation/AccountsDetail.vue:339
+#: front/src/views/admin/moderation/DomainsDetail.vue:271
+#: front/src/views/content/Base.vue:5
+msgctxt "*/*/*/Noun"
+msgid "Libraries"
+msgstr "Biblioteques"
+
+#: front/src/components/mixins/Translations.vue:84
+#: front/src/components/mixins/Translations.vue:85
+msgctxt "Content/OAuth Scopes/Label"
+msgid "Libraries and uploads"
+msgstr "Biblioteques i càrregues"
+
+#: front/src/views/content/libraries/Form.vue:2
+msgctxt "Content/Library/Paragraph"
+msgid "Libraries help you organize and share your music collections. You can upload your own music collection to Funkwhale and share it with your friends and family."
+msgstr "Les biblioteques t'ajuden a organitzar i compartir la teva col·lecció de música.  Pots pujar-la a Funkwahale i compartir-la amb els teus amics i familiars."
+
+#: front/src/components/Sidebar.vue:85
+#: front/src/components/manage/library/UploadsTable.vue:60
+#: front/src/components/manage/users/UsersTable.vue:174
+#: front/src/components/mixins/Report.vue:77
+#: front/src/views/admin/library/UploadDetail.vue:144
+#: front/src/views/admin/moderation/AccountsDetail.vue:518 src/entities.js:132
+#: front/src/components/mixins/Report.vue:78
+#, fuzzy
+msgctxt "*/*/*/Noun"
+msgid "Library"
+msgstr "Biblioteca"
+
+#: front/src/views/content/libraries/Form.vue:103
+msgctxt "Content/Library/Message"
+msgid "Library created"
+msgstr "Biblioteca creada"
+
+#: front/src/views/admin/library/LibraryDetail.vue:78
+msgctxt "Content/Moderation/Title"
+msgid "Library data"
+msgstr "Dades de la biblioteca"
+
+#: front/src/views/content/libraries/Form.vue:123
+msgctxt "Content/Library/Message"
+msgid "Library deleted"
+msgstr "Biblioteca suprimida"
+
+#: front/src/views/admin/library/EditsList.vue:4
+msgctxt "Content/Admin/Title/Noun"
+msgid "Library edits"
+msgstr "Modificacions de la biblioteca"
+
+#: front/src/views/content/libraries/Form.vue:100
+msgctxt "Content/Library/Message"
+msgid "Library updated"
+msgstr "Biblioteca actualitzada"
+
+#: front/src/components/library/TrackDetail.vue:19
+#: front/src/components/manage/library/TracksTable.vue:43
+#: front/src/views/admin/library/TrackDetail.vue:165 src/edits.js:84
+#: front/src/entities.js:115
+msgctxt "Content/*/*/Noun"
+msgid "License"
+msgstr "Llicència"
+
+#: front/src/components/Footer.vue:90
+msgctxt "Footer/Settings/Dropdown.Label/Theme name"
+msgid "Light"
+msgstr ""
+
+#: front/src/views/admin/library/AlbumDetail.vue:188
+#: front/src/views/admin/library/ArtistDetail.vue:176
+#: front/src/views/admin/library/LibraryDetail.vue:179
+#: front/src/views/admin/library/TrackDetail.vue:240
+#: front/src/views/admin/moderation/AccountsDetail.vue:269
+msgctxt "Content/Moderation/Table.Label/Noun"
+msgid "Linked reports"
+msgstr ""
+
+#: front/src/components/Home.vue:135
+msgctxt "Content/Home/Link"
+msgid "Listen to public albums and playlists shared on this pod"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:92
+#: front/src/views/admin/library/AlbumDetail.vue:163
+#: front/src/views/admin/library/ArtistDetail.vue:151
+#: front/src/views/admin/library/TrackDetail.vue:215
+#: front/src/components/mixins/Translations.vue:93
+msgctxt "*/*/*/Noun"
+msgid "Listenings"
+msgstr "Audicions"
+
+#: front/src/components/audio/track/Table.vue:25
+#: front/src/components/library/ArtistDetail.vue:28
+msgctxt "Content/*/Button.Label"
+msgid "Load more…"
+msgstr "Carrega'n més …"
+
+#: front/src/views/content/libraries/Detail.vue:21
+msgctxt "Content/Library/Paragraph"
+msgid "Loading followers…"
+msgstr "Carregant els seguidors …"
+
+#: front/src/views/content/libraries/Home.vue:3
+msgctxt "Content/Library/Paragraph"
+msgid "Loading Libraries…"
+msgstr "Carregant les biblioteques …"
+
+#: front/src/views/content/libraries/Detail.vue:3
+#: front/src/views/content/libraries/Upload.vue:3
+msgctxt "Content/Library/Paragraph"
+msgid "Loading library data…"
+msgstr "Carregant les dades de la biblioteca …"
+
+#: front/src/views/Notifications.vue:84
+msgctxt "Content/Notifications/Paragraph"
+msgid "Loading notifications…"
+msgstr "Carregant les notificacions …"
+
+#: front/src/views/content/remote/Home.vue:3
+msgctxt "Content/Library/Paragraph"
+msgid "Loading remote libraries…"
+msgstr "Carregant les biblioteques remotes …"
+
+#: front/src/views/content/libraries/Quota.vue:4
+msgctxt "Content/Library/Paragraph"
+msgid "Loading usage data…"
+msgstr "Carregant dades d'utilització …"
+
+#: front/src/components/favorites/List.vue:5
+msgctxt "Content/Favorites/Message"
+msgid "Loading your favorites…"
+msgstr "Carregant els vostres favorits …"
+
+#: front/src/components/manage/library/AlbumsTable.vue:65
+#: front/src/components/manage/library/ArtistsTable.vue:58
+#: front/src/components/manage/library/LibrariesTable.vue:75
+#: front/src/components/manage/library/TracksTable.vue:71
+#: front/src/components/manage/library/UploadsTable.vue:99
+#: front/src/components/manage/moderation/ReportCard.vue:173
+#: front/src/views/admin/library/AlbumDetail.vue:19
+#: front/src/views/admin/library/ArtistDetail.vue:18
+#: front/src/views/admin/library/LibraryDetail.vue:18
+#: front/src/views/admin/library/TrackDetail.vue:18
+#: front/src/views/admin/library/UploadDetail.vue:19
+msgctxt "Content/Moderation/*/Short, Noun"
+msgid "Local"
+msgstr "Local"
+
+#: front/src/components/manage/moderation/AccountsTable.vue:59
+#: front/src/views/admin/moderation/AccountsDetail.vue:18
+msgctxt "Content/Moderation/*/Short, Noun"
+msgid "Local account"
+msgstr "Compte local"
+
+#: front/src/components/Home.vue:96 src/views/auth/Login.vue:29
+msgctxt "Head/Login/Title"
+msgid "Log In"
+msgstr "Iniciar sessió"
+
+#: front/src/views/auth/Login.vue:4
+msgctxt "Content/Login/Title/Verb"
+msgid "Log in to your Funkwhale account"
+msgstr "Iniciar sessió amb el teu compte de Funkwhale"
+
+#: front/src/components/auth/Logout.vue:20
+msgctxt "Head/Login/Title"
+msgid "Log Out"
+msgstr "Tancar sessió"
+
+#: front/src/components/Sidebar.vue:38
+msgctxt "Sidebar/Profile/List item.Link"
+msgid "Logged in as %{ username }"
+msgstr "Sessió iniciada com a %{ username }"
+
+#: front/src/components/Sidebar.vue:54 src/components/auth/LoginForm.vue:41
+msgctxt "*/Login/*/Verb"
+msgid "Login"
+msgstr "Iniciar sessió"
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:148
+msgctxt "Content/*/*/Noun"
+msgid "Login status"
+msgstr "Estat de la sessió"
+
+#: front/src/components/Sidebar.vue:52
+msgctxt "Sidebar/Login/List item.Link/Verb"
+msgid "Logout"
+msgstr "Tancar sessió"
+
+#: front/src/views/content/libraries/Home.vue:9
+msgctxt "Content/Library/Paragraph"
+msgid "Looks like you don't have a library, it's time to create one."
+msgstr "Sembla que no tens biblioteca, és hora de crear-ne una."
+
+#: front/src/components/audio/Player.vue:658
+#: src/components/audio/Player.vue:659
+msgctxt "Sidebar/Player/Icon.Tooltip"
+msgid "Looping disabled. Click to switch to single-track looping."
+msgstr "Bucle desactivat. Clica per activar el bucle d'una sola pista."
+
+#: front/src/components/audio/Player.vue:661
+#: src/components/audio/Player.vue:662
+msgctxt "Sidebar/Player/Icon.Tooltip"
+msgid "Looping on a single track. Click to switch to whole queue looping."
+msgstr "Bucle en una sola pista. Cliqueu per canviar al bucle complet de la cua."
+
+#: front/src/components/audio/Player.vue:664
+#: src/components/audio/Player.vue:665
+msgctxt "Sidebar/Player/Icon.Tooltip"
+msgid "Looping on whole queue. Click to disable looping."
+msgstr "Bucle a tota la cua. Cliqueu per inhabilitar el bucle."
+
+#: front/src/components/Sidebar.vue:230
+msgctxt "Sidebar/*/Hidden text"
+msgid "Main menu"
+msgstr "Menú principal"
+
+#: front/src/views/admin/library/Base.vue:34
+msgctxt "Head/Admin/Title"
+msgid "Manage library"
+msgstr "Gestionar la biblioteca"
+
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:8
+#, fuzzy
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Manage moderation rules for %{ obj }"
+msgstr "Sota la regla de moderació"
+
+#: front/src/components/playlists/PlaylistModal.vue:3
+msgctxt "Popup/Playlist/Title/Verb"
+msgid "Manage playlists"
+msgstr "Gestionar les llistes de reproducció"
+
+#: front/src/views/admin/users/Base.vue:20
+msgctxt "Head/Admin/Title"
+msgid "Manage users"
+msgstr "Gestionar els usuaris"
+
+#: front/src/views/playlists/List.vue:8
+msgctxt "Content/Playlist/Button.Label/Verb"
+msgid "Manage your playlists"
+msgstr "Gestiona les teves llistes de distribució"
+
+#: front/src/views/Notifications.vue:79
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Mark all as read"
+msgstr "Marca-ho tot com a llegit"
+
+#: front/src/components/notifications/NotificationRow.vue:46
+msgctxt "Content/Notifications/Button.Tooltip/Verb"
+msgid "Mark as read"
+msgstr "Marcat com a llegit"
+
+#: front/src/components/notifications/NotificationRow.vue:47
+msgctxt "Content/Notifications/Button.Tooltip/Verb"
+msgid "Mark as unread"
+msgstr "Marcat com a no llegit"
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:321
+msgctxt "Content/*/*/Unit"
+msgid "MB"
+msgstr "MB"
+
+#: front/src/components/audio/Player.vue:651
+msgctxt "Sidebar/Player/Hidden text"
+msgid "Media player"
+msgstr "Reproductor multimèdia"
+
+#: front/src/components/auth/Profile.vue:12
+msgctxt "Content/Profile/Paragraph"
+msgid "Member since %{ date }"
+msgstr "Membre des de %{ date }"
+
+#: front/src/components/manage/moderation/ReportCard.vue:109
+#: front/src/components/moderation/ReportModal.vue:41
+msgctxt "*/*/Field.Label/Noun"
+msgid "Message"
+msgstr ""
+
+#: front/src/components/Footer.vue:32
+msgctxt "Footer/*/List item.Link"
+msgid "Mobile and desktop apps"
+msgstr "Aplicacions mòbils i d'escriptori"
+
+#: front/src/components/Home.vue:143
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Mobile apps"
+msgstr "Aplicacions mòbils i d'escriptori"
+
+#: front/src/components/Sidebar.vue:96
+#: src/components/manage/users/UsersTable.vue:178
+#: front/src/views/admin/Settings.vue:85
+#: front/src/views/admin/moderation/AccountsDetail.vue:522
+#: front/src/views/admin/moderation/Base.vue:43
+msgctxt "*/Moderation/*"
+msgid "Moderation"
+msgstr "Moderació"
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:78
+#: front/src/views/admin/moderation/DomainsDetail.vue:70
+msgctxt "Content/Moderation/Card.Paragraph"
+msgid "Moderation policies help you control how your instance interact with a given domain or account."
+msgstr "Les regles de moderació t'ajudaran a controlar com la vostra instància interactua amb un domini o un compte determinat."
+
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:4
+#, fuzzy
+msgctxt "Content/Moderation/Button.Label"
+msgid "Moderation rules…"
+msgstr "Editar les regles de moderació"
+
+#: front/src/components/library/EditCard.vue:5
+msgctxt "Content/Library/Card/Short"
+msgid "Modification %{ id }"
+msgstr "Modificatició %{ id }"
+
+#: front/src/components/mixins/Translations.vue:58
+#: front/src/components/mixins/Translations.vue:59
+msgctxt "Content/Playlist/Dropdown/Noun"
+msgid "Modification date"
+msgstr "Data de modificació"
+
+#: front/src/components/audio/PlayButton.vue:100
+#: front/src/components/library/AlbumBase.vue:43
+#: front/src/components/library/ArtistBase.vue:54
+#: front/src/components/library/TrackBase.vue:59
+msgctxt "*/*/Button.Label/Noun"
+msgid "More…"
+msgstr "Més …"
+
+#: front/src/components/Sidebar.vue:63 src/views/admin/Settings.vue:82
+msgctxt "*/*/*/Noun"
+msgid "Music"
+msgstr "Música"
+
+#: front/src/components/audio/Player.vue:657
+msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
+msgid "Mute"
+msgstr "Silencia"
+
+#: front/src/components/manage/moderation/InstancePolicyCard.vue:24
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:115
+msgctxt "Content/Moderation/*/Verb"
+msgid "Mute activity"
+msgstr "Silencia l'activitat"
+
+#: front/src/components/manage/moderation/InstancePolicyCard.vue:28
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:119
+msgctxt "Content/Moderation/*/Verb"
+msgid "Mute notifications"
+msgstr "Silencia les notificacions"
+
+#: front/src/components/Sidebar.vue:34
+msgctxt "Sidebar/Profile/Title"
+msgid "My account"
+msgstr "El meu compte"
+
+#: front/src/components/library/radios/Builder.vue:238
+msgctxt "Content/Radio/Input.Placeholder"
+msgid "My awesome description"
+msgstr "La meva descripció genial"
+
+#: front/src/views/content/libraries/Form.vue:72
+msgctxt "Content/Library/Input.Placeholder"
+msgid "My awesome library"
+msgstr "La meva impressionant biblioteca"
+
+#: front/src/components/playlists/Form.vue:76
+msgctxt "Content/Playlist/Input.Placeholder"
+msgid "My awesome playlist"
+msgstr "La meva impressionant llista de reproducció"
+
+#: front/src/components/library/radios/Builder.vue:237
+msgctxt "Content/Radio/Input.Placeholder"
+msgid "My awesome radio"
+msgstr "La meva ràdio genial"
+
+#: front/src/views/content/libraries/Home.vue:6
+msgctxt "Content/Library/Title"
+msgid "My libraries"
+msgstr "Les meves biblioteques"
+
+#: front/src/components/About.vue:105 src/components/audio/track/Row.vue:40
+#: front/src/components/library/EditCard.vue:60
+#: front/src/components/library/EditForm.vue:70
+#: front/src/components/library/TrackDetail.vue:34
+#: front/src/components/library/TrackDetail.vue:43
+#: front/src/components/library/TrackDetail.vue:52
+#: front/src/components/library/TrackDetail.vue:61
+#: front/src/components/manage/library/AlbumsTable.vue:73
+#: front/src/components/manage/library/TracksTable.vue:76
+#: front/src/components/manage/library/UploadsTable.vue:121
+#: front/src/components/manage/library/UploadsTable.vue:128
+#: front/src/components/manage/moderation/ReportCard.vue:78
+#: front/src/components/manage/moderation/ReportCard.vue:87
+#: front/src/components/manage/moderation/ReportCard.vue:193
+#: front/src/components/manage/users/UsersTable.vue:62
+#: front/src/views/admin/library/UploadDetail.vue:179
+#: front/src/views/admin/library/UploadDetail.vue:214
+#: front/src/views/admin/library/UploadDetail.vue:233
+#: front/src/views/admin/library/UploadDetail.vue:244
+#: front/src/views/admin/library/UploadDetail.vue:257
+#: front/src/views/admin/moderation/AccountsDetail.vue:193
+#: front/src/views/admin/moderation/DomainsDetail.vue:119
+#: front/src/views/content/libraries/FilesTable.vue:95
+#: front/src/views/content/libraries/FilesTable.vue:101
+msgctxt "*/*/*"
+msgid "N/A"
+msgstr "No disponible"
+
+#: front/src/components/auth/ApplicationForm.vue:9
+#: front/src/components/auth/Settings.vue:133
+#: front/src/components/manage/library/ArtistsTable.vue:39
+#: front/src/components/manage/library/LibrariesTable.vue:48
+#: front/src/components/manage/library/TagsTable.vue:41
+#: front/src/components/manage/library/UploadsTable.vue:59
+#: front/src/components/manage/moderation/AccountsTable.vue:39
+#: front/src/components/manage/moderation/DomainsTable.vue:46
+#: front/src/components/mixins/Translations.vue:63
+#: front/src/components/playlists/PlaylistModal.vue:45
+#: front/src/views/admin/library/ArtistDetail.vue:103
+#: front/src/views/admin/library/LibraryDetail.vue:85
+#: front/src/views/admin/library/TagDetail.vue:68
+#: front/src/views/admin/library/UploadDetail.vue:92
+#: front/src/views/admin/moderation/DomainsDetail.vue:134
+#: front/src/views/content/libraries/Form.vue:10 src/edits.js:17
+#: front/src/components/mixins/Translations.vue:64
+msgctxt "*/*/*/Noun"
+msgid "Name"
+msgstr "Nom"
+
+#: front/src/views/Notifications.vue:24 src/views/Notifications.vue:58
+msgctxt "*/*/*"
+msgid "Never"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:88
+#: front/src/views/auth/PasswordResetConfirm.vue:14
+msgctxt "Content/Settings/Input.Label"
+msgid "New password"
+msgstr "Nova contrasenya"
+
+#: front/src/components/Sidebar.vue:177
+msgctxt "Sidebar/Player/Paragraph"
+msgid "New tracks will be appended here automatically."
+msgstr "Les noves pistes s'afegiran automàticament aquí."
+
+#: front/src/components/library/EditCard.vue:47
+msgctxt "Content/Library/Card.Table.Header/Short"
+msgid "New value"
+msgstr "Nou valor"
+
+#: front/src/components/audio/Player.vue:655
+msgctxt "Sidebar/Player/Icon.Tooltip"
+msgid "Next track"
+msgstr "Pista següent"
+
+#: front/src/components/Sidebar.vue:134
+#: front/src/components/manage/moderation/DomainsTable.vue:13
+#: front/src/views/admin/moderation/DomainsDetail.vue:110
+msgctxt "*/*/*"
+msgid "No"
+msgstr "No"
+
+#: front/src/components/audio/Search.vue:25
+msgctxt "Content/Search/Paragraph"
+msgid "No album matched your query"
+msgstr "Cap àlbum correspon a la teva consulta"
+
+#: front/src/components/audio/Search.vue:16
+msgctxt "Content/Search/Paragraph"
+msgid "No artist matched your query"
+msgstr "Cap artista coincideix amb la teva consulta"
+
+#: front/src/components/library/TrackDetail.vue:14
+msgctxt "Content/Track/Table.Paragraph"
+msgid "No copyright information available for this track"
+msgstr "No hi ha informació sobre els drets d'autor d'aquesta pista"
+
+#: front/src/components/About.vue:25 src/components/Home.vue:25
+msgctxt "Content/Home/Paragraph"
+msgid "No description available."
+msgstr ""
+
+#: front/src/components/library/TrackDetail.vue:25
+msgctxt "Content/Track/Table.Paragraph"
+msgid "No licensing information for this track"
+msgstr "No hi ha informació de la llicència d'aquesta pista"
+
+#: front/src/components/federation/LibraryWidget.vue:6
+msgctxt "Content/Federation/Paragraph"
+msgid "No matching library."
+msgstr "Sense biblioteques coincidents."
+
+#: front/src/views/Notifications.vue:93
+msgctxt "Content/Notifications/Paragraph"
+msgid "No notification to show."
+msgstr "No hi ha notificacions."
+
+#: front/src/components/common/EmptyState.vue:7
+msgctxt "Content/*/Paragraph"
+msgid "No results were found."
+msgstr "No s'ha trobat cap resultat."
+
+#: front/src/components/About.vue:32
+msgctxt "Content/Home/Paragraph"
+msgid "No rules available."
+msgstr ""
+
+#: front/src/components/About.vue:39
+msgctxt "Content/Home/Paragraph"
+msgid "No terms available."
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:10
+#: front/src/components/mixins/Translations.vue:11
+msgctxt "Content/Settings/Dropdown"
+msgid "Nobody except me"
+msgstr "Només jo"
+
+#: front/src/views/content/libraries/Detail.vue:57
+msgctxt "Content/Library/Paragraph"
+msgid "Nobody is following this library"
+msgstr "Ningú segueix aquesta biblioteca"
+
+#: front/src/components/manage/users/InvitationsTable.vue:51
+msgctxt "Content/Admin/Table"
+msgid "Not used"
+msgstr "No utilitzat"
+
+#: front/src/components/Sidebar.vue:46
+#: src/components/mixins/Translations.vue:112
+#: front/src/views/Notifications.vue:151
+#: src/components/mixins/Translations.vue:113
+msgctxt "*/Notifications/*"
+msgid "Notifications"
+msgstr "Notificacions"
+
+#: front/src/components/mixins/Translations.vue:47
+#: front/src/components/mixins/Translations.vue:48
+#, fuzzy
+msgctxt "Content/Moderation/Dropdown"
+msgid "Offensive content"
+msgstr "Amagar el contingut"
+
+#: front/src/components/Footer.vue:55
+msgctxt "Footer/*/List item.Link"
+msgid "Official website"
+msgstr "Pàgina oficial"
+
+#: front/src/components/auth/Settings.vue:83
+msgctxt "Content/Settings/Input.Label"
+msgid "Old password"
+msgstr "Contrasenya antiga"
+
+#: front/src/components/library/EditCard.vue:46
+msgctxt "Content/Library/Card.Table.Header/Short"
+msgid "Old value"
+msgstr "Valor antic"
+
+#: front/src/components/About.vue:90
+#, fuzzy
+msgctxt "*/*/*/State of registrations"
+msgid "Open"
+msgstr "Obert"
+
+#: front/src/components/manage/users/InvitationsTable.vue:20
+msgctxt "Content/Admin/Dropdown/Adjective"
+msgid "Open"
+msgstr "Obert"
+
+#: front/src/components/library/ImportStatusModal.vue:56
+msgctxt "Popup/Import/Table.Label/Value"
+msgid "Open a support thread (include the debug information below in your message)"
+msgstr "Obrir un fil de suport (incloure la informació de depuració a continuació dins el missatge)"
+
+#: front/src/components/library/AlbumBase.vue:87
+#: front/src/components/library/ArtistBase.vue:99
+#: front/src/components/library/TagDetail.vue:11
+#: front/src/components/library/TrackBase.vue:103
+#: front/src/components/manage/moderation/ReportCard.vue:128
+msgctxt "Content/Moderation/Link"
+msgid "Open in moderation interface"
+msgstr "Obrir dins la interfície de moderació"
+
+#: front/src/views/admin/library/AlbumDetail.vue:37
+#: front/src/views/admin/library/ArtistDetail.vue:35
+#: front/src/views/admin/library/TagDetail.vue:21
+#: front/src/views/admin/library/TrackDetail.vue:36
+msgctxt "Content/Moderation/Link/Verb"
+msgid "Open local profile"
+msgstr "Obrir el perfil local"
+
+#: front/src/views/admin/library/AlbumDetail.vue:52
+#: front/src/views/admin/library/ArtistDetail.vue:50
+#: front/src/views/admin/library/TrackDetail.vue:51
+msgctxt "Content/Moderation/Link/Verb"
+msgid "Open on MusicBrainz"
+msgstr "Obrir dins MusicBrainz"
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:23
+msgctxt "Content/Moderation/Link/Verb"
+msgid "Open profile"
+msgstr "Obrir el perfil"
+
+#: front/src/views/admin/library/AlbumDetail.vue:60
+#: front/src/views/admin/library/ArtistDetail.vue:58
+#: front/src/views/admin/library/LibraryDetail.vue:49
+#: front/src/views/admin/library/TrackDetail.vue:59
+#: front/src/views/admin/library/UploadDetail.vue:50
+#: front/src/views/admin/moderation/AccountsDetail.vue:52
+msgctxt "Content/Moderation/Link/Verb"
+msgid "Open remote profile"
+msgstr "Obrir el perfil remot"
+
+#: front/src/views/admin/moderation/DomainsDetail.vue:16
+msgctxt "Content/Moderation/Link/Verb"
+msgid "Open website"
+msgstr "Obrir la web"
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:40
+msgctxt "Content/Moderation/Card.Title"
+msgid "Or customize your rule"
+msgstr "O personalitzeu la vostra regla"
+
+#: front/src/components/favorites/List.vue:32
+#: src/components/library/Radios.vue:41
+#: front/src/components/manage/library/EditsCardList.vue:37
+#: front/src/components/manage/users/UsersTable.vue:17
+#: front/src/views/admin/moderation/ReportsList.vue:42
+#: front/src/views/playlists/List.vue:25
+msgctxt "Content/Search/Dropdown.Label/Noun"
+msgid "Order"
+msgstr "Ordre"
+
+#: front/src/components/favorites/List.vue:24
+#: src/components/library/Albums.vue:15
+#: front/src/components/library/Artists.vue:19
+#: src/components/library/Radios.vue:33
+#: front/src/components/manage/library/AlbumsTable.vue:11
+#: front/src/components/manage/library/ArtistsTable.vue:11
+#: front/src/components/manage/library/EditsCardList.vue:29
+#: front/src/components/manage/library/LibrariesTable.vue:20
+#: front/src/components/manage/library/TagsTable.vue:11
+#: front/src/components/manage/library/TracksTable.vue:11
+#: front/src/components/manage/library/UploadsTable.vue:30
+#: front/src/components/manage/moderation/AccountsTable.vue:11
+#: front/src/components/manage/moderation/DomainsTable.vue:17
+#: front/src/components/manage/users/InvitationsTable.vue:9
+#: front/src/components/manage/users/UsersTable.vue:9
+#: front/src/views/admin/moderation/ReportsList.vue:34
+#: front/src/views/content/libraries/FilesTable.vue:21
+#: front/src/views/playlists/List.vue:17
+msgctxt "Content/Search/Dropdown.Label/Noun"
+msgid "Ordering"
+msgstr "Ordenar"
+
+#: front/src/components/library/Albums.vue:27
+#: src/components/library/Artists.vue:27
+#: front/src/components/manage/library/AlbumsTable.vue:19
+#: front/src/components/manage/library/ArtistsTable.vue:19
+#: front/src/components/manage/library/LibrariesTable.vue:28
+#: front/src/components/manage/library/TagsTable.vue:19
+#: front/src/components/manage/library/TracksTable.vue:19
+#: front/src/components/manage/library/UploadsTable.vue:38
+#: front/src/components/manage/moderation/AccountsTable.vue:19
+#: front/src/components/manage/moderation/DomainsTable.vue:25
+#: front/src/views/content/libraries/FilesTable.vue:29
+msgctxt "Content/Search/Dropdown.Label/Noun"
+msgid "Ordering direction"
+msgstr "Direcció d'ordre"
+
+#: front/src/components/mixins/Translations.vue:48
+#: front/src/components/mixins/Translations.vue:49
+msgctxt "Content/Moderation/Dropdown"
+msgid "Other"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:143
+#: front/src/components/manage/users/InvitationsTable.vue:38
+#, fuzzy
+msgctxt "*/*/*"
+msgid "Owner"
+msgstr "Propietari"
+
+#: front/src/components/PageNotFound.vue:33
+msgctxt "Head/*/Title"
+msgid "Page Not Found"
+msgstr "Pàgina no trobada"
+
+#: front/src/components/PageNotFound.vue:7
+msgctxt "Content/*/Title"
+msgid "Page not found!"
+msgstr "Pàgina no trobada!"
+
+#: front/src/components/Pagination.vue:39
+msgctxt "Content/*/Hidden text/Noun"
+msgid "Pagination"
+msgstr "Paginació"
+
+#: front/src/components/auth/LoginForm.vue:32
+#: src/components/auth/Settings.vue:291
+#: front/src/components/auth/SignupForm.vue:36
+#, fuzzy
+msgctxt "*/*/*"
+msgid "Password"
+msgstr "Contrasenya"
+
+#: front/src/components/auth/SubsonicTokenForm.vue:100
+msgctxt "Content/Settings/Message"
+msgid "Password updated"
+msgstr "Contrasenya actualitzada"
+
+#: front/src/views/auth/PasswordResetConfirm.vue:28
+msgctxt "Content/Signup/Card.Title"
+msgid "Password updated successfully"
+msgstr "Contrasenya actualitzada correctament"
+
+#: front/src/components/audio/Player.vue:654
+msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
+msgid "Pause track"
+msgstr "Pausa de la pista"
+
+#: front/src/components/ShortcutsModal.vue:96
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Pause/play the current track"
+msgstr "Pausa/reproduir la pista actual"
+
+#: front/src/components/manage/moderation/InstancePolicyCard.vue:12
+msgctxt "Content/Moderation/Card.List item"
+msgid "Paused"
+msgstr "Pausa"
+
+#: front/src/components/library/FileUpload.vue:116
+#: front/src/components/manage/library/UploadsTable.vue:23
+#: front/src/components/mixins/Translations.vue:28
+#: front/src/views/content/libraries/FilesTable.vue:14
+#: front/src/components/mixins/Translations.vue:29
+msgctxt "Content/Library/*/Short"
+msgid "Pending"
+msgstr "Pendent"
+
+#: front/src/views/content/libraries/Detail.vue:37
+msgctxt "Content/Library/Table/Short"
+msgid "Pending approval"
+msgstr "Pendent d'aprovació"
+
+#: front/src/views/content/libraries/Quota.vue:22
+msgctxt "Content/Library/Label"
+msgid "Pending files"
+msgstr "Fitxers pendents"
+
+#: front/src/components/Sidebar.vue:232
+msgctxt "Sidebar/Notifications/Hidden text"
+msgid "Pending follow requests"
+msgstr "Sol·licituds de seguiment pendents"
+
+#: front/src/components/library/EditCard.vue:29
+#: front/src/components/manage/library/EditsCardList.vue:18
+msgctxt "Content/Admin/*/Noun"
+msgid "Pending review"
+msgstr "Verificació pendent"
+
+#: front/src/components/Sidebar.vue:233
+msgctxt "Sidebar/Moderation/Hidden text"
+msgid "Pending review edits"
+msgstr "Revisió de modificacions pendents"
+
+#: front/src/components/auth/Settings.vue:176
+#: front/src/components/manage/users/UsersTable.vue:42
+#: front/src/views/admin/moderation/AccountsDetail.vue:166
+msgctxt "Content/*/*/Noun"
+msgid "Permissions"
+msgstr "Permisos"
+
+#: front/src/components/audio/PlayButton.vue:9
+#: front/src/components/library/TrackBase.vue:24
+msgctxt "*/Queue/Button.Label/Short, Verb"
+msgid "Play"
+msgstr "Reproduir"
+
+#: front/src/components/audio/album/Card.vue:48
+#: front/src/components/library/AlbumBase.vue:21
+#: front/src/components/library/AlbumDetail.vue:11
+#: src/views/playlists/Detail.vue:24
+msgctxt "Content/Queue/Button.Label/Short, Verb"
+msgid "Play all"
+msgstr "Reproduir-ho tot"
+
+#: front/src/components/library/ArtistBase.vue:32
+msgctxt "Content/Artist/Button.Label/Verb"
+msgid "Play all albums"
+msgstr "Reproduir tots els àlbums"
+
+#: front/src/components/audio/PlayButton.vue:92
+msgctxt "*/Queue/Dropdown/Button/Title"
+msgid "Play next"
+msgstr "Reproduir el següent"
+
+#: front/src/components/ShortcutsModal.vue:120
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Play next track"
+msgstr "Reproduir la següent pista"
+
+#: front/src/components/audio/PlayButton.vue:90
+msgctxt "*/Queue/Dropdown/Button/Title"
+msgid "Play now"
+msgstr "Reproduir ara"
+
+#: front/src/components/ShortcutsModal.vue:116
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Play previous track"
+msgstr "Reprodueix la pista anterior"
+
+#: front/src/components/audio/PlayButton.vue:93
+msgctxt "*/Queue/Dropdown/Button/Title"
+msgid "Play similar songs"
+msgstr "Reproduir cançons semblants"
+
+#: front/src/components/Sidebar.vue:231
+msgctxt "Sidebar/Player/Hidden text"
+msgid "Play this track"
+msgstr "Reprodueix aquesta pista"
+
+#: front/src/components/audio/Player.vue:653
+msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
+msgid "Play track"
+msgstr "Reprodueix la pista"
+
+#: front/src/components/mixins/Report.vue:66 src/views/playlists/Detail.vue:121
+#: front/src/components/mixins/Report.vue:67
+#, fuzzy
+msgctxt "*/*/*"
+msgid "Playlist"
+msgstr "Llista de reproducció"
+
+#: front/src/views/playlists/Detail.vue:12
+msgctxt "Content/Playlist/Header.Subtitle"
+msgid "Playlist containing %{ count } track, by %{ username }"
+msgid_plural "Playlist containing %{ count } tracks, by %{ username }"
+msgstr[0] "La llista de reproducció conté %{ count } cançó, de %{ username }"
+msgstr[1] "La llista de reproducció conté %{ count } cançons, de %{ username }"
+
+#: front/src/components/playlists/Form.vue:9
+msgctxt "Content/Playlist/Message"
+msgid "Playlist created"
+msgstr "Llista de reproducció creada"
+
+#: front/src/components/playlists/Editor.vue:4
+msgctxt "Content/Playlist/Title"
+msgid "Playlist editor"
+msgstr "Editor de lla llista de reproducció"
+
+#: front/src/components/playlists/Form.vue:21
+msgctxt "Content/Playlist/Input.Label"
+msgid "Playlist name"
+msgstr "Nom de la llista de reproducció"
+
+#: front/src/components/playlists/Form.vue:6
+msgctxt "Content/Playlist/Message"
+msgid "Playlist updated"
+msgstr "Llista de reproducció actualitzada"
+
+#: front/src/components/playlists/Form.vue:25
+msgctxt "Content/Playlist/Dropdown.Label"
+msgid "Playlist visibility"
+msgstr "Visibilitat de la llista de reproducció"
+
+#: front/src/components/Sidebar.vue:71 src/components/library/Home.vue:16
+#: front/src/components/library/Library.vue:16
+#: front/src/components/mixins/Translations.vue:100
+#: src/views/admin/Settings.vue:83
+#: front/src/views/admin/library/AlbumDetail.vue:179
+#: front/src/views/admin/library/ArtistDetail.vue:167
+#: front/src/views/admin/library/TrackDetail.vue:231
+#: src/views/playlists/List.vue:106
+#: front/src/components/mixins/Translations.vue:101
+msgctxt "*/*/*"
+msgid "Playlists"
+msgstr "Llistes de reproducció"
+
+#: front/src/components/audio/EmbedWizard.vue:9
+msgctxt "Content/Embed/Message"
+msgid "Please contact your admins and ask them to update the corresponding setting."
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:79
+msgctxt "Content/Settings/Error message.List item/Call to action"
+msgid "Please double-check your password is correct"
+msgstr "Si us plau verifica que la teva contrasenya és correcta"
+
+#: front/src/components/auth/LoginForm.vue:5
+msgctxt "Content/Login/Error message.List item/Call to action"
+msgid "Please double-check your username/password couple is correct"
+msgstr "Si us plau verifica que el teu nom d'usuari i la contrasenya són correctes"
+
+#: front/src/components/auth/Settings.vue:46
+msgctxt "Content/Settings/Paragraph"
+msgid "PNG, GIF or JPG. At most 2MB. Will be downscaled to 400x400px."
+msgstr "PNG, GIF o JPG. Màxim de 2MB. Seràn reduïts a 400x400px."
+
+#: front/src/components/About.vue:72
+msgctxt "Content/About/Header/Name"
+msgid "Pod configuration"
+msgstr ""
+
+#: front/src/views/admin/library/TrackDetail.vue:143 src/edits.js:70
+msgctxt "*/*/*/Short, Noun"
+msgid "Position"
+msgstr "Posició"
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:118
+msgctxt "Content/Moderation/Help text"
+msgid "Prevent account or domain from triggering notifications, except from followers."
+msgstr "Eviteu que el compte o el domini desencadenin notificacions, llevat dels seguidors."
+
+#: front/src/components/audio/EmbedWizard.vue:43
+msgctxt "Popup/Embed/Title/Noun"
+msgid "Preview"
+msgstr "Previsualització"
+
+#: front/src/components/audio/Player.vue:652
+msgctxt "Sidebar/Player/Icon.Tooltip"
+msgid "Previous track"
+msgstr "Pista anterior"
+
+#: front/src/components/mixins/Translations.vue:15
+#: front/src/components/mixins/Translations.vue:16
+msgctxt "Content/Settings/Dropdown/Short"
+msgid "Private"
+msgstr "Privat"
+
+#: front/src/views/content/remote/Card.vue:56
+msgctxt "Content/Library/Card.List item"
+msgid "Problem during scanning"
+msgstr "Problema durant l'anàlisi"
+
+#: front/src/components/library/FileUpload.vue:57
+msgctxt "Content/Library/Button.Label"
+msgid "Proceed"
+msgstr "Continuar"
+
+#: front/src/views/auth/EmailConfirm.vue:26
+#: front/src/views/auth/PasswordResetConfirm.vue:31
+msgctxt "Content/Signup/Link/Verb"
+msgid "Proceed to login"
+msgstr "Iniciar la sessió"
+
+#: front/src/components/library/FileUpload.vue:17
+msgctxt "Content/Library/Tab.Title/Short"
+msgid "Processing"
+msgstr "Processant"
+
+#: front/src/components/mixins/Translations.vue:80
+#: front/src/components/mixins/Translations.vue:81
+msgctxt "Content/OAuth Scopes/Label"
+msgid "Profile"
+msgstr "Perfil"
+
+#: front/src/components/auth/SignupForm.vue:5
+#, fuzzy
+msgctxt "Content/Signup/Form/Paragraph"
+msgid "Public registrations are not possible on this instance. You will need an invitation code to sign up."
+msgstr "Les inscripcions estan tancades en aquesta instància, necessites un codi d'inscripció per registrar-te."
+
+#: front/src/components/manage/moderation/AccountsTable.vue:188
+#: front/src/components/manage/moderation/DomainsTable.vue:186
+#: front/src/views/content/libraries/Quota.vue:36
+#: front/src/views/content/libraries/Quota.vue:39
+#: front/src/views/content/libraries/Quota.vue:62
+#: front/src/views/content/libraries/Quota.vue:65
+#: front/src/views/content/libraries/Quota.vue:88
+#: front/src/views/content/libraries/Quota.vue:91
+msgctxt "*/*/*/Verb"
+msgid "Purge"
+msgstr "Netejar"
+
+#: front/src/views/content/libraries/Quota.vue:89
+msgctxt "Popup/Library/Title"
+msgid "Purge errored files?"
+msgstr "Suprimir els fitxers erronis?"
+
+#: front/src/views/content/libraries/Quota.vue:37
+msgctxt "Popup/Library/Title"
+msgid "Purge pending files?"
+msgstr "Suprimir els fitxers pendents?"
+
+#: front/src/views/content/libraries/Quota.vue:63
+msgctxt "Popup/Library/Title"
+msgid "Purge skipped files?"
+msgstr "Suprimir els fitxers omesos?"
+
+#: front/src/components/Sidebar.vue:20
+msgctxt "Sidebar/Queue/Tab.Title/Noun"
+msgid "Queue"
+msgstr "Cua de reproducció"
+
+#: front/src/components/audio/Player.vue:329
+msgctxt "Content/Queue/Message"
+msgid "Queue shuffled!"
+msgstr "La cua ha estat barrejada!"
+
+#: front/src/views/radios/Detail.vue:80
+msgctxt "Head/Radio/Title"
+msgid "Radio"
+msgstr "Ràdio"
+
+#: front/src/components/library/radios/Builder.vue:235
+msgctxt "Head/Radio/Title"
+msgid "Radio Builder"
+msgstr "Editor de ràdio"
+
+#: front/src/components/library/radios/Builder.vue:15
+msgctxt "Content/Radio/Message"
+msgid "Radio created"
+msgstr "Ràdio creada"
+
+#: front/src/components/library/radios/Builder.vue:21
+msgctxt "Content/Radio/Input.Label/Noun"
+msgid "Radio name"
+msgstr "Nom de la ràdio"
+
+#: front/src/components/library/radios/Builder.vue:12
+msgctxt "Content/Radio/Message"
+msgid "Radio updated"
+msgstr "Ràdio actualitzada"
+
+#: front/src/components/library/Library.vue:13
+#: src/components/library/Radios.vue:142
+#: front/src/components/mixins/Translations.vue:104
+#: front/src/components/mixins/Translations.vue:105
+msgctxt "*/*/*"
+msgid "Radios"
+msgstr "Ràdios"
+
+#: front/src/components/auth/ApplicationForm.vue:151
+msgctxt "Content/OAuth Scopes/Label/Verb"
+msgid "Read"
+msgstr "Llegir"
+
+#: front/src/components/library/ImportStatusModal.vue:51
+msgctxt "Popup/Import/Table.Label/Value"
+msgid "Read our documentation for this error"
+msgstr "Llegir la documentació d'aquest error"
+
+#: front/src/components/auth/Authorize.vue:24
+msgctxt "Content/Auth/Label/Noun"
+msgid "Read-only"
+msgstr "Només llegir"
+
+#: front/src/components/auth/ApplicationForm.vue:152
+msgctxt "Content/OAuth Scopes/Help Text"
+msgid "Read-only access to user data"
+msgstr "Accés a llegir només les dades d'utilització"
+
+#: front/src/components/manage/moderation/InstancePolicyCard.vue:39
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:25
+msgctxt "Content/Moderation/*/Noun"
+msgid "Reason"
+msgstr "Raó"
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:252
+#: front/src/views/admin/moderation/DomainsDetail.vue:216
+msgctxt "Content/Moderation/Table.Label/Noun"
+msgid "Received library follows"
+msgstr "Seguidors de la biblioteca rebuts"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:48
+#: front/src/components/mixins/Translations.vue:74
+#: front/src/components/mixins/Translations.vue:75
+msgctxt "Content/Moderation/*/Noun"
+msgid "Received messages"
+msgstr "Missatges rebuts"
+
+#: front/src/components/library/EditForm.vue:27
+msgctxt "Content/Library/Paragraph"
+msgid "Recent edits"
+msgstr "Modificacions recents"
+
+#: front/src/components/library/EditForm.vue:17
+msgctxt "Content/Library/Paragraph"
+msgid "Recent edits awaiting review"
+msgstr "Modificacions recents pendents de revisió"
+
+#: front/src/components/library/Home.vue:24
+msgctxt "Content/Home/Title"
+msgid "Recently added"
+msgstr "Afegit recentment"
+
+#: front/src/components/Home.vue:167
+#, fuzzy
+msgctxt "Content/Home/Title"
+msgid "Recently added albums"
+msgstr "Afegit recentment"
+
+#: front/src/components/library/Home.vue:11
+msgctxt "Content/Home/Title"
+msgid "Recently favorited"
+msgstr "Afegit a preferits recentment"
+
+#: front/src/components/library/Home.vue:6
+msgctxt "Content/Home/Title"
+msgid "Recently listened"
+msgstr "Escoltats recentment"
+
+#: front/src/components/auth/ApplicationForm.vue:13
+msgctxt "Content/Applications/Input.Label/Noun"
+msgid "Redirect URI"
+msgstr "URI de redirecció"
+
+#: front/src/components/auth/Settings.vue:125
+#: src/components/auth/Settings.vue:170
+#: front/src/components/common/EmptyState.vue:16
+#: src/views/content/remote/Home.vue:15
+msgctxt "Content/*/Button.Label/Short, Verb"
+msgid "Refresh"
+msgstr "Recarregar"
+
+#: front/src/components/federation/FetchButton.vue:20
+msgctxt "Popup/*/Message.Title"
+msgid "Refresh error"
+msgstr "Error de recàrrega"
+
+#: front/src/views/admin/library/AlbumDetail.vue:56
+#: front/src/views/admin/library/ArtistDetail.vue:54
+#: front/src/views/admin/library/TrackDetail.vue:55
+msgctxt "Content/Moderation/Button/Verb"
+msgid "Refresh from remote server"
+msgstr "Actualitza des del servidor remot"
+
+#: front/src/views/admin/moderation/DomainsDetail.vue:164
+msgctxt "Content/Moderation/Button.Label/Verb"
+msgid "Refresh node info"
+msgstr "Actualitza la informació del node"
+
+#: front/src/components/federation/FetchButton.vue:79
+msgctxt "Popup/*/Message.Title"
+msgid "Refresh pending"
+msgstr "Actualització pendent"
+
+#: front/src/components/federation/FetchButton.vue:80
+msgctxt "Popup/*/Message.Content"
+msgid "Refresh request wasn't proceed in time by our server. It will be processed later."
+msgstr "La petició d'actualització no s'ha realitzat a temps pel servidor. Serà realitzada més tard."
+
+#: front/src/components/federation/FetchButton.vue:16
+msgctxt "Popup/*/Message.Title"
+msgid "Refresh successful"
+msgstr "Actualització realitzada"
+
+#: front/src/components/common/ActionTable.vue:275
+msgctxt "Content/*/Button.Tooltip/Verb"
+msgid "Refresh table content"
+msgstr "El contingut de la taula s'ha actualitzat"
+
+#: front/src/components/federation/FetchButton.vue:12
+msgctxt "Popup/*/Message.Title"
+msgid "Refresh was skipped"
+msgstr "S'ha omès l'actualització"
+
+#: front/src/components/federation/FetchButton.vue:7
+msgctxt "Popup/*/Title"
+msgid "Refreshing object from remote…"
+msgstr "Actualització de l'objecte des del servidor remot …"
+
+#: front/src/components/About.vue:86
+#, fuzzy
+msgctxt "*/*/*"
+msgid "Registrations"
+msgstr "Administració"
+
+#: front/src/components/manage/users/UsersTable.vue:72
+msgctxt "Content/Admin/Table, User role"
+msgid "Regular user"
+msgstr "Usuari estàndard"
+
+#: front/src/components/library/EditCard.vue:87
+#: front/src/views/content/libraries/Detail.vue:51
+msgctxt "Content/Library/Button.Label"
+msgid "Reject"
+msgstr "Rebutjar"
+
+#: front/src/components/manage/moderation/InstancePolicyCard.vue:32
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:123
+msgctxt "Content/Moderation/*/Verb"
+msgid "Reject media"
+msgstr "Rebutjar els fitxers multimèdia"
+
+#: front/src/components/library/EditCard.vue:33
+#: front/src/components/manage/library/EditsCardList.vue:24
+#: front/src/views/content/libraries/Detail.vue:43
+msgctxt "Content/Library/*/Short"
+msgid "Rejected"
+msgstr "Rebutjat"
+
+#: front/src/components/manage/library/AlbumsTable.vue:43
+#: front/src/components/mixins/Translations.vue:54 src/edits.js:43
+#: front/src/components/mixins/Translations.vue:55
+msgctxt "Content/*/*/Noun"
+msgid "Release date"
+msgstr "Data de publicació"
+
+#: front/src/components/library/FileUpload.vue:63
+msgctxt "Content/Library/Paragraph"
+msgid "Remaining storage space"
+msgstr "Espai d’emmagatzematge restant"
+
+#: front/src/views/Notifications.vue:18 src/views/Notifications.vue:52
+msgctxt "Content/Notifications/Label"
+msgid "Remind me in:"
+msgstr ""
+
+#: front/src/views/content/remote/Home.vue:6
+msgctxt "Content/Library/Title/Noun"
+msgid "Remote libraries"
+msgstr "Biblioteques remotes"
+
+#: front/src/views/content/remote/Home.vue:7
+msgctxt "Content/Library/Paragraph"
+msgid "Remote libraries are owned by other users on the network. You can access them as long as they are public or you are granted access."
+msgstr "Les biblioteques remotes són propietat d'altres usuaris de la xarxa. Pots accedir-hi sempre que siguin públiques hi tinguis accés."
+
+#: front/src/components/library/radios/Filter.vue:59
+msgctxt "Content/Radio/Button.Label/Verb"
+msgid "Remove"
+msgstr "Retirar"
+
+#: front/src/components/auth/Settings.vue:58
+msgctxt "Content/Settings/Button.Label/Verb"
+msgid "Remove avatar"
+msgstr "Elimina l'avatar"
+
+#: front/src/components/library/ArtistDetail.vue:12
+msgctxt "Content/Moderation/Button.Label"
+msgid "Remove filter"
+msgstr "Suprimir vel filtre"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:198
+#: front/src/views/admin/moderation/DomainsDetail.vue:39
+#, fuzzy
+msgctxt "Content/Moderation/Action/Verb"
+msgid "Remove from allow-list"
+msgstr "Elimina dels preferits"
+
+#: front/src/components/favorites/TrackFavoriteIcon.vue:26
+msgctxt "Content/Track/Icon.Tooltip/Verb"
+msgid "Remove from favorites"
+msgstr "Elimina dels preferits"
+
+#: front/src/views/content/libraries/Quota.vue:38
+msgctxt "Popup/Library/Paragraph"
+msgid "Removes uploaded but yet to be processed tracks completely, adding the corresponding data to your quota."
+msgstr "Les pistes importades que encara no s’han processat completament pel servidor s’eliminaran completament. Es tornrà la quota corresponent."
+
+#: front/src/views/content/libraries/Quota.vue:64
+msgctxt "Popup/Library/Paragraph"
+msgid "Removes uploaded tracks skipped during the import processes completely, adding the corresponding data to your quota."
+msgstr "Les pistes carregades però ignorades durant la importació per diversos motius s’eliminaran completament. Us retornarà l’espai d’emmagatzematge corresponent."
+
+#: front/src/views/content/libraries/Quota.vue:90
+msgctxt "Popup/Library/Paragraph"
+msgid "Removes uploaded tracks that could not be processed by the server completely, adding the corresponding data to your quota."
+msgstr "Elimina les pistes carregades que el servidor no ha pogut processar completament, es retornarà l’espai d’emmagatzematge corresponent.."
+
+#: front/src/components/audio/PlayButton.vue:94
+#, fuzzy
+msgctxt "*/Queue/Dropdown/Button/Title"
+msgid "Replace current queue"
+msgstr "Afegir a la cua de reproducció actual"
+
+#: front/src/components/mixins/Report.vue:6 src/components/mixins/Report.vue:7
+msgctxt "*/Moderation/*/Verb"
+msgid "Report @%{ username }…"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:5
+msgctxt "Content/Moderation/Card/Short"
+msgid "Report %{ id }"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:139
+#, fuzzy
+msgctxt "*/Moderation/Message"
+msgid "Report successfully submitted, thank you"
+msgstr "L’edició s’ha enviat correctament."
+
+#: front/src/components/mixins/Report.vue:36
+#: src/components/mixins/Report.vue:37
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this album…"
+msgstr "Editar aquest àlbum"
+
+#: front/src/components/mixins/Report.vue:50
+#: src/components/mixins/Report.vue:51
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this artist…"
+msgstr "Editar l'artista"
+
+#: front/src/components/mixins/Report.vue:72
+#: src/components/mixins/Report.vue:73
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this library…"
+msgstr "Suprimir la biblioteca?"
+
+#: front/src/components/mixins/Report.vue:61
+#: src/components/mixins/Report.vue:62
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this playlist…"
+msgstr "Afegir a la llista de reproducció"
+
+#: front/src/components/mixins/Report.vue:23
+#: src/components/mixins/Report.vue:24
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this track…"
+msgstr "Edita aquesta pista"
+
+#: front/src/components/audio/PlayButton.vue:95
+msgctxt "*/Moderation/*/Button/Label,Verb"
+msgid "Report…"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:117
+msgctxt "Content/*/*/Short"
+msgid "Reported object"
+msgstr ""
+
+#: front/src/views/admin/moderation/Base.vue:5
+#: front/src/views/admin/moderation/ReportsList.vue:3
+#: front/src/views/admin/moderation/ReportsList.vue:208
+msgctxt "*/Moderation/*/Noun"
+msgid "Reports"
+msgstr ""
+
+#: front/src/components/auth/SubsonicTokenForm.vue:38
+#: front/src/components/auth/SubsonicTokenForm.vue:41
+msgctxt "*/Settings/Button.Label/Verb"
+msgid "Request a new password"
+msgstr "Demanar una nova contrasenya"
+
+#: front/src/components/auth/SubsonicTokenForm.vue:39
+msgctxt "Popup/Settings/Title"
+msgid "Request a new Subsonic API password?"
+msgstr "Demanar una nova contrasenya per l'API Subsonic?"
+
+#: front/src/components/auth/SubsonicTokenForm.vue:47
+msgctxt "Content/Settings/Button.Label/Verb"
+msgid "Request a password"
+msgstr "Demanar una contrasenya"
+
+#: front/src/components/federation/FetchButton.vue:64
+msgctxt "Popup/*/Loading.Title"
+msgid "Requesting a fetch…"
+msgstr "Sol·licita una cerca …"
+
+#: front/src/components/library/EditForm.vue:94
+#, fuzzy
+msgctxt "Content/Library/Button.Label"
+msgid "Reset to initial value"
+msgstr "Reiniciar al valor inicial: %{ value}"
+
+#: front/src/components/auth/LoginForm.vue:34
+#: src/views/auth/PasswordReset.vue:4 front/src/views/auth/PasswordReset.vue:53
+msgctxt "*/Login/*/Verb"
+msgid "Reset your password"
+msgstr "Restabliu la contrasenya"
+
+#: front/src/components/manage/moderation/ReportCard.vue:83
+#, fuzzy
+msgctxt "Content/*/*/Noun"
+msgid "Resolution date"
+msgstr "Data de creació"
+
+#: front/src/components/manage/moderation/ReportCard.vue:218
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Resolve"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:62
+#: front/src/views/admin/moderation/ReportsList.vue:20
+msgctxt "Content/*/*/Short"
+msgid "Resolved"
+msgstr ""
+
+#: front/src/views/content/libraries/FilesTable.vue:223
+msgctxt "Content/Library/Dropdown/Verb"
+msgid "Restart import"
+msgstr "Rellançar la importació"
+
+#: front/src/components/library/EditForm.vue:31
+msgctxt "Content/Library/Button.Label"
+msgid "Restrict to unreviewed edits"
+msgstr "Restringir a edicions no revisades"
+
+#: front/src/components/favorites/List.vue:39
+#: src/components/library/Albums.vue:34
+#: front/src/components/library/Artists.vue:34
+#: src/components/library/Radios.vue:52 front/src/views/playlists/List.vue:32
+msgctxt "Content/Search/Dropdown.Label/Noun"
+msgid "Results per page"
+msgstr "Resultats per pàgina"
+
+#: front/src/views/auth/EmailConfirm.vue:17
+msgctxt "Content/Signup/Link/Verb"
+msgid "Return to login"
+msgstr "Torna a la pàgina d'inici de sessió"
+
+#: front/src/components/library/ArtistDetail.vue:9
+msgctxt "Content/Moderation/Link"
+msgid "Review my filters"
+msgstr "Revisa els meus filtres"
+
+#: front/src/components/auth/Settings.vue:192
+msgctxt "*/*/*/Verb"
+msgid "Revoke"
+msgstr "Revocar"
+
+#: front/src/components/auth/Settings.vue:195
+msgctxt "*/Settings/Button.Label/Verb"
+msgid "Revoke access"
+msgstr "Revocar l'accés"
+
+#: front/src/components/auth/Settings.vue:193
+msgctxt "Popup/Settings/Title"
+msgid "Revoke access for application \"%{ application }\"?"
+msgstr "Revoca l'accés de les aplicacons \"%{ application }\"?"
+
+#: front/src/components/manage/moderation/InstancePolicyCard.vue:16
+msgctxt "Content/Moderation/Card.Title/Noun"
+msgid "Rule"
+msgstr "Regla"
+
+#: front/src/components/About.vue:28 src/components/About.vue:56
+#, fuzzy
+msgctxt "Content/About/Header"
+msgid "Rules"
+msgstr "Regla"
+
+#: front/src/components/admin/SettingsGroup.vue:75
+#: front/src/components/library/radios/Builder.vue:34
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Save"
+msgstr "Guardar"
+
+#: front/src/views/content/remote/Card.vue:203
+msgctxt "Content/Library/Message"
+msgid "Scan launched"
+msgstr "Anàlisi iniciat"
+
+#: front/src/views/content/remote/Card.vue:80
+msgctxt "Content/Library/Card.Button.Label/Verb"
+msgid "Scan now"
+msgstr "Analitzar ara"
+
+#: front/src/views/content/remote/Card.vue:48
+msgctxt "Content/Library/Card.List item"
+msgid "Scan pending"
+msgstr "Anàlisi pendent"
+
+#: front/src/views/content/remote/Card.vue:204
+msgctxt "Content/Library/Message"
+msgid "Scan skipped (previous scan is too recent)"
+msgstr "L’anàlisi s’ha omès (l’anàlisi anterior és massa recent)"
+
+#: front/src/views/content/remote/Card.vue:60
+msgctxt "Content/Library/Card.List item"
+msgid "Scanned"
+msgstr "Anàlisis realitzat"
+
+#: front/src/views/content/remote/Card.vue:64
+msgctxt "Content/Library/Card.List item"
+msgid "Scanned with errors"
+msgstr "Anàlisis amb errors"
+
+#: front/src/views/content/remote/Card.vue:52
+msgctxt "Content/Library/Card.List item"
+msgid "Scanning… (%{ progress }%)"
+msgstr "Analitzant … (%{ progress }%)"
+
+#: front/src/components/auth/ApplicationForm.vue:22
+#: front/src/components/auth/Settings.vue:226
+msgctxt "Content/*/*/Noun"
+msgid "Scopes"
+msgstr "Àmbits"
+
+#: front/src/components/library/Albums.vue:10
+#: src/components/library/Artists.vue:10
+#: front/src/components/library/Radios.vue:29
+#: front/src/components/manage/library/AlbumsTable.vue:5
+#: front/src/components/manage/library/ArtistsTable.vue:5
+#: front/src/components/manage/library/EditsCardList.vue:6
+#: front/src/components/manage/library/LibrariesTable.vue:5
+#: front/src/components/manage/library/TagsTable.vue:5
+#: front/src/components/manage/library/TracksTable.vue:5
+#: front/src/components/manage/library/UploadsTable.vue:5
+#: front/src/components/manage/moderation/AccountsTable.vue:5
+#: front/src/components/manage/moderation/DomainsTable.vue:5
+#: front/src/components/manage/users/InvitationsTable.vue:5
+#: front/src/components/manage/users/UsersTable.vue:5
+#: front/src/views/admin/moderation/ReportsList.vue:8
+#: front/src/views/content/libraries/FilesTable.vue:5
+#: src/views/playlists/List.vue:13
+msgctxt "Content/Search/Input.Label/Noun"
+msgid "Search"
+msgstr "Buscar"
+
+#: front/src/views/content/remote/ScanForm.vue:9
+msgctxt "Content/Library/Input.Label/Verb"
+msgid "Search a remote library"
+msgstr "Busca una biblioteca remota"
+
+#: front/src/components/manage/library/EditsCardList.vue:211
+#: front/src/views/admin/moderation/ReportsList.vue:207
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by account, summary, domain…"
+msgstr "Cerca per compte, resum, domini …"
+
+#: front/src/components/manage/library/LibrariesTable.vue:191
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by domain, actor, name, description…"
+msgstr "Busca per domini, nom, descripció, …"
+
+#: front/src/components/manage/library/UploadsTable.vue:241
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by domain, actor, name, reference, source…"
+msgstr "Buscar per domini, nom d'usuari, referències, …"
+
+#: front/src/components/manage/library/ArtistsTable.vue:164
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by domain, name, MusicBrainz ID…"
+msgstr "Buscar per domini, nom, MusicBrainz ID, …"
+
+#: front/src/components/manage/library/TracksTable.vue:174
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by domain, title, artist, album, MusicBrainz ID…"
+msgstr "Buscar per domini, títol, artista, àlbum, MusicBrainz ID …"
+
+#: front/src/components/manage/library/AlbumsTable.vue:174
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by domain, title, artist, MusicBrainz ID…"
+msgstr "Buscar per domini, títol, artista, MusicBrainz ID …"
+
+#: front/src/components/manage/moderation/AccountsTable.vue:171
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by domain, username, bio…"
+msgstr "Cercar per domini, nom d'usuari, bio, .…"
+
+#: front/src/components/manage/library/TagsTable.vue:165
+#, fuzzy
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by name"
+msgstr "Cercar per nom …"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:168
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by name…"
+msgstr "Cercar per nom …"
+
+#: front/src/views/content/libraries/FilesTable.vue:208
+msgctxt "Content/Library/Input.Placeholder"
+msgid "Search by title, artist, album…"
+msgstr "Cercar per títol, artista, àlbum …"
+
+#: front/src/components/manage/users/InvitationsTable.vue:153
+msgctxt "Content/Admin/Input.Placeholder/Verb"
+msgid "Search by username, e-mail address, code…"
+msgstr "Cercar per nom d'usuari, correu electrònic, codi, …"
+
+#: front/src/components/manage/users/UsersTable.vue:164
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by username, e-mail address, name…"
+msgstr "Cercar per nom d'usuari, correu electrònic, nom, …"
+
+#: front/src/components/audio/SearchBar.vue:27
+msgctxt "Sidebar/Search/Input.Placeholder"
+msgid "Search for artists, albums, tracks…"
+msgstr "Cercar per artista, àlbum, pistes, …"
+
+#: front/src/components/audio/Search.vue:2
+msgctxt "Content/Search/Title"
+msgid "Search for some music"
+msgstr "Cercar música"
+
+#: front/src/components/library/TagsSelector.vue:6
+#, fuzzy
+msgctxt "*/Dropdown/Placeholder/Verb"
+msgid "Search for tags…"
+msgstr "Cercar per nom …"
+
+#: front/src/components/library/AlbumBase.vue:66
+#: front/src/components/library/ArtistBase.vue:77
+#: front/src/components/library/TrackBase.vue:82
+#, fuzzy
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Search on Discogs"
+msgstr "Cercar música"
+
+#: front/src/components/library/AlbumBase.vue:58
+#: front/src/components/library/ArtistBase.vue:69
+#: front/src/components/library/TrackBase.vue:74
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Search on Wikipedia"
+msgstr "Cercar a la Viquipèdia"
+
+#: front/src/components/library/Library.vue:35
+#: src/views/admin/library/Base.vue:35
+#: front/src/views/admin/moderation/Base.vue:44
+#: src/views/admin/users/Base.vue:21 front/src/views/content/Base.vue:19
+msgctxt "Menu/*/Hidden text"
+msgid "Secondary menu"
+msgstr "Menú secundari"
+
+#: front/src/views/admin/Settings.vue:15
+msgctxt "Content/Admin/Menu.Title"
+msgid "Sections"
+msgstr "Seccions"
+
+#: front/src/components/ShortcutsModal.vue:108
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek backwards 30s"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:100
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek backwards 5s"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:112
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek forwards 30s"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:104
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek forwards 5s"
+msgstr ""
+
+#: front/src/components/library/radios/Builder.vue:46
+msgctxt "Content/Radio/Dropdown.Placeholder/Verb"
+msgid "Select a filter"
+msgstr "Seleccionar un filtre"
+
+#: front/src/components/common/ActionTable.vue:79
+msgctxt "Content/*/Link/Verb"
+msgid "Select all %{ total } elements"
+msgid_plural "Select all %{ total } elements"
+msgstr[0] "Selecciona l'element"
+msgstr[1] "Selecciona tots els %{ total } elements"
+
+#: front/src/components/common/ActionTable.vue:88
+msgctxt "Content/*/Link/Verb"
+msgid "Select only current page"
+msgstr "Seleccionar només la pàgina actual"
+
+#: front/src/components/Home.vue:43
+msgctxt "Content/Home/Link"
+msgid "Server rules"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:112
+#: front/src/components/manage/users/UsersTable.vue:182
+#: front/src/views/admin/moderation/AccountsDetail.vue:526
+msgctxt "*/*/*/Noun"
+msgid "Settings"
+msgstr "Paràmetres"
+
+#: front/src/components/auth/Settings.vue:10
+msgctxt "Content/Settings/Message"
+msgid "Settings updated"
+msgstr "Paràmetres actualitzats"
+
+#: front/src/components/admin/SettingsGroup.vue:11
+msgctxt "Content/Settings/Paragraph"
+msgid "Settings updated successfully."
+msgstr "Paràmetres actualitzats amb èxit."
+
+#: front/src/components/manage/users/InvitationForm.vue:27
+msgctxt "Content/Admin/Table.Label/Noun"
+msgid "Share link"
+msgstr "Compartir enllaç"
+
+#: front/src/views/content/libraries/Detail.vue:15
+msgctxt "Content/Library/Paragraph"
+msgid "Share this link with other users so they can request access to your library."
+msgstr "Comparteix aquest enllaç amb d'altres usuaris perquè puguin sol·licitar l'accés a la vostra biblioteca."
+
+#: front/src/views/content/libraries/Detail.vue:14
+#: front/src/views/content/remote/Card.vue:90
+msgctxt "Content/Library/Title"
+msgid "Sharing link"
+msgstr "Compartir enllaç"
+
+#: front/src/components/audio/EmbedWizard.vue:5
+msgctxt "Content/Embed/Message"
+msgid "Sharing will not work because this pod doesn't allow anonymous users to access content."
+msgstr ""
+
+#: front/src/components/About.vue:156
+msgctxt "*/*/*/Verb"
+msgid "Show"
+msgstr ""
+
+#: front/src/components/audio/album/Card.vue:38
+msgctxt "Content/Album/Card.Link/Verb"
+msgid "Show %{ count } more track"
+msgid_plural "Show %{ count } more tracks"
+msgstr[0] "Mostra una cançó més"
+msgstr[1] "Mostra %{ count } pista més"
+
+#: front/src/components/tags/List.vue:11
+#, fuzzy
+msgctxt "Content/*/Button/Label/Verb"
+msgid "Show 1 more tag"
+msgid_plural "Show %{ count } more tags"
+msgstr[0] "Mostra un àlbum més"
+msgstr[1] "Mostra %{ count } àlbums més"
+
+#: front/src/components/library/EditForm.vue:21
+msgctxt "Content/Library/Button.Label"
+msgid "Show all edits"
+msgstr "Mostra totes les modificacions"
+
+#: front/src/components/ShortcutsModal.vue:60
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Show available keyboard shortcuts"
+msgstr "Mostra les dreceres del teclat disponibles"
+
+#: front/src/components/common/ExpandableDiv.vue:7
+#, fuzzy
+msgctxt "*/*/Button,Label"
+msgid "Show less"
+msgstr "Mostra totes les modificacions"
+
+#: front/src/components/common/ExpandableDiv.vue:8
+#, fuzzy
+msgctxt "*/*/Button,Label"
+msgid "Show more"
+msgstr "Mostra un àlbum més"
+
+#: front/src/views/Notifications.vue:72
+msgctxt "Content/Notifications/Form.Label/Verb"
+msgid "Show read notifications"
+msgstr "Mostra les modificacions llegides"
+
+#: front/src/components/forms/PasswordInput.vue:42
+msgctxt "Content/Settings/Button.Tooltip/Verb"
+msgid "Show/hide password"
+msgstr "Mostra/amaga la contrasenya"
+
+#: front/src/components/manage/library/AlbumsTable.vue:93
+#: front/src/components/manage/library/ArtistsTable.vue:84
+#: front/src/components/manage/library/EditsCardList.vue:72
+#: front/src/components/manage/library/LibrariesTable.vue:110
+#: front/src/components/manage/library/TagsTable.vue:79
+#: front/src/components/manage/library/TracksTable.vue:95
+#: front/src/components/manage/library/UploadsTable.vue:144
+#: front/src/components/manage/moderation/AccountsTable.vue:88
+#: front/src/components/manage/moderation/DomainsTable.vue:85
+#: front/src/components/manage/users/InvitationsTable.vue:76
+#: front/src/components/manage/users/UsersTable.vue:88
+#: front/src/views/content/libraries/FilesTable.vue:117
+msgctxt "Content/*/Paragraph"
+msgid "Showing results %{ start }-%{ end } on %{ total }"
+msgstr "Mostra els resultats %{ start }-%{ end } de %{ total }"
+
+#: front/src/components/ShortcutsModal.vue:140
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Shuffle queue"
+msgstr "Cua barrejada"
+
+#: front/src/components/audio/Player.vue:667
+msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
+msgid "Shuffle your queue"
+msgstr "Barreja la teva cua"
+
+#: front/src/components/Home.vue:103
+#, fuzzy
+msgctxt "*/Signup/Title"
+msgid "Sign up"
+msgstr "Inscripció"
+
+#: front/src/views/auth/Signup.vue:37
+msgctxt "*/Signup/Title"
+msgid "Sign Up"
+msgstr "Inscripció"
+
+#: front/src/components/Home.vue:107
+msgctxt "Content/Home/Paragraph"
+msgid "Sign up now to keep a track of your favorites, create playlists, discover new content and much more!"
+msgstr ""
+
+#: front/src/components/manage/users/UsersTable.vue:40
+msgctxt "Content/Admin/Table.Label/Short, Noun (Value is a date)"
+msgid "Sign-up"
+msgstr "Inscripció"
+
+#: front/src/components/mixins/Translations.vue:69
+#: front/src/views/admin/moderation/AccountsDetail.vue:198
+#: front/src/components/mixins/Translations.vue:70
+msgctxt "Content/Admin/Table.Label/Noun"
+msgid "Sign-up date"
+msgstr "Data d'inscripció"
+
+#: front/src/components/library/FileUpload.vue:94
+#: front/src/components/library/TrackDetail.vue:39
+#: front/src/components/manage/library/UploadsTable.vue:65
+#: front/src/components/mixins/Translations.vue:66
+#: front/src/views/admin/library/UploadDetail.vue:219
+#: front/src/views/content/libraries/FilesTable.vue:61
+#: front/src/components/mixins/Translations.vue:67
+msgctxt "Content/*/*/Noun"
+msgid "Size"
+msgstr "Mida"
+
+#: front/src/components/manage/library/UploadsTable.vue:24
+#: front/src/components/mixins/Translations.vue:24
+#: front/src/views/content/libraries/FilesTable.vue:15
+#: front/src/components/mixins/Translations.vue:25
+msgctxt "Content/Library/*"
+msgid "Skipped"
+msgstr "Omès"
+
+#: front/src/views/content/libraries/Quota.vue:49
+msgctxt "Content/Library/Label"
+msgid "Skipped files"
+msgstr "Arxius ignorats"
+
+#: front/src/views/admin/moderation/DomainsDetail.vue:126
+msgctxt "Content/Moderation/Table.Label"
+msgid "Software"
+msgstr "Programari"
+
+#: front/src/components/playlists/Editor.vue:21
+msgctxt "Content/Playlist/Paragraph"
+msgid "Some tracks in your queue are already in this playlist:"
+msgstr "Algunes pistes de la vostra cua ja es troben en aquesta llista de reproducció:"
+
+#: front/src/components/PageNotFound.vue:10
+msgctxt "Content/*/Paragraph"
+msgid "Sorry, the page you asked for does not exist:"
+msgstr "Ens sap greu, la pàgina que has demanat no existeix:"
+
+#: front/src/components/Footer.vue:57
+msgctxt "Footer/*/List item.Link"
+msgid "Source code"
+msgstr "Codi font"
+
+#: front/src/components/auth/Profile.vue:23
+#: front/src/components/manage/users/UsersTable.vue:71
+msgctxt "Content/Profile/User role"
+msgid "Staff member"
+msgstr "Membre de l'equip"
+
+#: front/src/components/audio/PlayButton.vue:27
+#: src/components/radios/Button.vue:4
+msgctxt "*/Queue/Button.Label/Short, Verb"
+msgid "Start radio"
+msgstr "Encendre la ràdio"
+
+#: front/src/components/About.vue:170 src/components/Home.vue:53
+#: front/src/views/admin/Settings.vue:87
+#, fuzzy
+msgctxt "Content/Home/Header"
+msgid "Statistics"
+msgstr "Estadístiques"
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:510
+msgctxt "Content/Moderation/Help text"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this account"
+msgstr "Les estadístiques es calculen a partir de l’activitat i el contingut coneguts de la vostra instància i no reflecteixen l’activitat general d'aquest compte"
+
+#: front/src/views/admin/moderation/DomainsDetail.vue:418
+msgctxt "Content/Moderation/Help text"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this domain"
+msgstr "Les estadístiques es calculen a partir de l’activitat i el contingut coneguts de la vostra instància i no reflecteixen l’activitat general d’aquest domini"
+
+#: front/src/views/admin/library/AlbumDetail.vue:346
+#: front/src/views/admin/library/ArtistDetail.vue:345
+#: front/src/views/admin/library/LibraryDetail.vue:356
+#: front/src/views/admin/library/TagDetail.vue:210
+#: front/src/views/admin/library/TrackDetail.vue:389
+#: front/src/views/admin/library/UploadDetail.vue:335
+msgctxt "Content/Moderation/Help text"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this object"
+msgstr "Les estadístiques es calculen a partir de l’activitat i el contingut coneguts de la vostra instància i no reflecteixen l’activitat general d’aquest objecte"
+
+#: front/src/components/library/FileUpload.vue:95
+#: front/src/components/manage/library/EditsCardList.vue:12
+#: front/src/components/manage/moderation/ReportCard.vue:57
+#: front/src/components/manage/users/InvitationsTable.vue:17
+#: front/src/components/manage/users/InvitationsTable.vue:39
+#: front/src/components/manage/users/UsersTable.vue:43
+#: front/src/views/admin/moderation/DomainsDetail.vue:152
+#: front/src/views/admin/moderation/ReportsList.vue:14
+#: front/src/views/content/libraries/Detail.vue:28
+#, fuzzy
+msgctxt "*/*/*"
+msgid "Status"
+msgstr "Estat"
+
+#: front/src/components/Sidebar.vue:178 src/components/radios/Button.vue:3
+msgctxt "*/Player/Button.Label/Short, Verb"
+msgid "Stop radio"
+msgstr "Parar la ràdio"
+
+#: front/src/components/SetInstanceModal.vue:23
+msgctxt "*/*/Button.Label/Verb"
+msgid "Submit"
+msgstr "Envia"
+
+#: front/src/components/library/EditForm.vue:110
+msgctxt "Content/Library/Button.Label/Verb"
+msgid "Submit and apply edit"
+msgstr "Envia i aplica la modificació"
+
+#: front/src/components/library/EditForm.vue:7
+msgctxt "Content/Library/Button.Label"
+msgid "Submit another edit"
+msgstr "Envia una altre modificació"
+
+#: front/src/components/moderation/ReportModal.vue:64
+#, fuzzy
+msgctxt "Popup/*/Button.Label"
+msgid "Submit report"
+msgstr "Envia"
+
+#: front/src/components/library/EditForm.vue:111
+msgctxt "Content/Library/Button.Label/Verb"
+msgid "Submit suggestion"
+msgstr "Enviar suggerències"
+
+#: front/src/components/manage/moderation/ReportCard.vue:17
+#, fuzzy
+msgctxt "Content/Moderation/*"
+msgid "Submitted by"
+msgstr "Envia"
+
+#: front/src/views/admin/Settings.vue:86
+msgctxt "Content/Admin/Menu"
+msgid "Subsonic"
+msgstr "Subsonic"
+
+#: front/src/components/auth/SubsonicTokenForm.vue:2
+msgctxt "Content/Settings/Title"
+msgid "Subsonic API password"
+msgstr "Contrasenya de l'API Subsonic"
+
+#: front/src/components/library/EditForm.vue:38
+msgctxt "Content/Library/Paragraph"
+msgid "Suggest a change using the form below."
+msgstr "Suggereix un canvi mitjançant el formulari següent."
+
+#: front/src/components/library/AlbumEdit.vue:5
+msgctxt "Content/*/Title"
+msgid "Suggest an edit on this album"
+msgstr "Suggereix un canvi en aquest àlbum"
+
+#: front/src/components/library/ArtistEdit.vue:5
+msgctxt "Content/*/Title"
+msgid "Suggest an edit on this artist"
+msgstr "Suggereix un canvi en aquest artista"
+
+#: front/src/components/library/TrackEdit.vue:5
+msgctxt "Content/*/Title"
+msgid "Suggest an edit on this track"
+msgstr "Suggereix una canvi en aquesta pista"
+
+#: front/src/components/SetInstanceModal.vue:31
+msgctxt "Popup/Instance/List.Label"
+msgid "Suggested choices"
+msgstr "Opcions suggerides"
+
+#: front/src/components/library/FileUpload.vue:3
+msgctxt "Content/Library/Tab.Title/Short"
+msgid "Summary"
+msgstr "Resum"
+
+#: front/src/components/library/EditForm.vue:99
+msgctxt "*/*/*"
+msgid "Summary (optional)"
+msgstr "Resum (opcional)"
+
+#: front/src/components/Footer.vue:47
+msgctxt "Footer/*/Listitem.Link"
+msgid "Support forum"
+msgstr "Fòrum d'ajuda"
+
+#: front/src/views/Notifications.vue:10
+msgctxt "Content/Notifications/Header"
+msgid "Support this Funkwhale pod"
+msgstr ""
+
+#: front/src/components/library/FileUpload.vue:85
+msgctxt "Content/Library/Paragraph"
+msgid "Supported extensions: %{ extensions }"
+msgstr "Suporta les extensions: %{ extensions }"
+
+#: front/src/components/playlists/Editor.vue:9
+msgctxt "Content/Playlist/Paragraph"
+msgid "Syncing changes to server…"
+msgstr "Sincronització dels canvis amb el servidor …"
+
+#: front/src/components/audio/SearchBar.vue:35
+msgctxt "*/*/*/Noun"
+msgid "Tag"
+msgstr ""
+
+#: front/src/views/admin/library/TagDetail.vue:61
+#, fuzzy
+msgctxt "Content/Moderation/Title"
+msgid "Tag data"
+msgstr "Dades de la pista"
+
+#: front/src/components/library/Albums.vue:23
+#: src/components/library/Artists.vue:15
+#: front/src/views/admin/library/Base.vue:23
+#: src/views/admin/library/TagsList.vue:24 front/src/edits.js:24
+#: src/edits.js:50 src/edits.js:91 src/entities.js:120
+msgctxt "*/*/*/Noun"
+msgid "Tags"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:44
+#: front/src/components/mixins/Translations.vue:45
+#, fuzzy
+msgctxt "Content/Moderation/Dropdown"
+msgid "Takedown request"
+msgstr "Cancel·lar la petició de seguiment"
+
+#: front/src/components/About.vue:35 src/components/About.vue:61
+msgctxt "Content/About/Header"
+msgid "Terms and privacy policy"
+msgstr ""
+
+#: front/src/components/audio/EmbedWizard.vue:35
+#: front/src/components/common/CopyInput.vue:3
+msgctxt "Content/*/Paragraph"
+msgid "Text copied to clipboard!"
+msgstr "Text copiat al porta-retalls!"
+
+#: front/src/views/admin/library/AlbumDetail.vue:81
+msgctxt "Content/Moderation/Paragraph"
+msgid "The album will be removed, as well as associated uploads, tracks, favorites and listening history. This action is irreversible."
+msgstr "L’àlbum s’eliminarà, així com les càrregues associades, les pistes, els preferits i l’historial d’escolta. Aquesta acció és irreversible."
+
+#: front/src/components/auth/Authorize.vue:39
+msgctxt "Content/Auth/Paragraph"
+msgid "The application is also requesting the following unknown permissions:"
+msgstr "L’aplicació també sol·licita els següents permisos desconeguts:"
+
+#: front/src/views/admin/library/ArtistDetail.vue:79
+msgctxt "Content/Moderation/Paragraph"
+msgid "The artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible."
+msgstr "L’artista s’eliminarà, així com les càrregues associades, les pistes, els àlbums, els preferits i l’historial d’escolta. Aquesta acció és irreversible."
+
+#: front/src/components/Footer.vue:61
+msgctxt "Footer/*/List item.Link"
+msgid "The funkwhale logo was kindly designed and provided by Francis Gading."
+msgstr "El logotip de Funkwhale ha sigut generosament dissenyat i cedit per Francis Gading."
+
+#: front/src/components/SetInstanceModal.vue:8
+msgctxt "Popup/Instance/Error message.List item"
+msgid "The given address is not a Funkwhale server"
+msgstr "L’adreça indicada no és un servidor Funkwhale"
+
+#: front/src/views/content/libraries/Form.vue:34
+msgctxt "Popup/Library/Paragraph"
+msgid "The library and all its tracks will be deleted. This can not be undone."
+msgstr "La biblioteca i totes les seves pistes seran suprimides. Aquesta acció és irreversible."
+
+#: front/src/views/admin/library/LibraryDetail.vue:61
+msgctxt "Content/Moderation/Paragraph"
+msgid "The library will be removed, as well as associated uploads, and follows. This action is irreversible."
+msgstr "La biblioteca serà suprimida, així com les càrregues associades, i els seguidors. Aquesta acció és irreversible."
+
+#: front/src/components/library/ImportStatusModal.vue:140
+msgctxt "Popup/Import/Error.Label"
+msgid "The metadata included in the file is invalid or some mandatory fields are missing."
+msgstr "La metadada inclosa en el fitxer és invalida o falten alguns camps obligatoris."
+
+#: front/src/components/library/FileUpload.vue:38
+msgctxt "Content/Library/List item"
+msgid "The music files you are uploading are tagged properly."
+msgstr "L'arxiu de música que has carregat està ben etiquetat."
+
+#: front/src/components/audio/Player.vue:65
+msgctxt "Sidebar/Player/Error message.Paragraph"
+msgid "The next track will play automatically in a few seconds…"
+msgstr "La següent pista serà reproduïda automàticament en pocs segons …"
+
+#: front/src/components/manage/moderation/NotesThread.vue:27
+#, fuzzy
+msgctxt "Content/Moderation/Paragraph"
+msgid "The note will be removed. This action is irreversible."
+msgstr "La càrrega s'eliminarà. Aquesta acció és irreversible."
+
+#: front/src/components/manage/moderation/ReportCard.vue:120
+msgctxt "Content/Moderation/Message"
+msgid "The object associated with this report was deleted."
+msgstr ""
+
+#: front/src/components/playlists/Form.vue:14
+msgctxt "Content/Playlist/Error message.Title"
+msgid "The playlist could not be created"
+msgstr "No s’ha pogut crear la llista de reproducció"
+
+#: front/src/components/federation/FetchButton.vue:37
+msgctxt "*/*/Error"
+msgid "The remote server answered with HTTP %{ status }"
+msgstr "El servidor remot ha contestat amb HTTP %{ status }"
+
+#: front/src/components/federation/FetchButton.vue:13
+msgctxt "Popup/*/Message.Content"
+msgid "The remote server answered, but returned data was unsupported by Funkwhale."
+msgstr "El servidor remot va respondre, però les dades retornades no van ser admeses per Funkwhale."
+
+#: front/src/components/federation/FetchButton.vue:44
+#, fuzzy
+msgctxt "*/*/Error"
+msgid "The remote server didn't respond quickly enough"
+msgstr "El servidor remot no va respondre prou ràpidament"
+
+#: front/src/components/federation/FetchButton.vue:50
+#, fuzzy
+msgctxt "*/*/Error"
+msgid "The remote server returned invalid JSON or JSON-LD data"
+msgstr "El servidor de retorn ha retornat dades invàlides de JSON o JSON-LD"
+
+#: front/src/components/manage/library/AlbumsTable.vue:189
+msgctxt "Popup/*/Paragraph"
+msgid "The selected albums will be removed, as well as associated tracks, uploads, favorites and listening history. This action is irreversible."
+msgstr "Els àlbums seleccionats s’eliminaran, així com les pistes associades, les càrregues, els preferits i l’historial d’escolta. Aquesta acció és irreversible."
+
+#: front/src/components/manage/library/ArtistsTable.vue:179
+msgctxt "Popup/*/Paragraph"
+msgid "The selected artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible."
+msgstr "L’artista seleccionat s’eliminarà, així com les càrregues associades, les pistes, els àlbums, els preferits i l’historial d’escolta. Aquesta acció és irreversible."
+
+#: front/src/components/manage/library/LibrariesTable.vue:206
+msgctxt "Popup/*/Paragraph"
+msgid "The selected library will be removed, as well as associated uploads and follows. This action is irreversible."
+msgstr "La biblioteca seleccionada serà suprimida, així com les càrregues associades i els seguidors."
+
+#: front/src/components/manage/library/TagsTable.vue:180
+#, fuzzy
+msgctxt "Popup/*/Paragraph"
+msgid "The selected tag will be removed and unlinked with existing content, if any. This action is irreversible."
+msgstr "La càrrega seleccionada s'eliminarà. Aquesta acció és irreversible."
+
+#: front/src/components/manage/library/TracksTable.vue:189
+msgctxt "Popup/*/Paragraph"
+msgid "The selected tracks will be removed, as well as associated uploads, favorites and listening history. This action is irreversible."
+msgstr "Les pistes seleccionades s’eliminaran, així com les càrregues associades, els preferits i l’historial d’escolta. Aquesta acció és irreversible."
+
+#: front/src/components/manage/library/UploadsTable.vue:256
+msgctxt "Popup/*/Paragraph"
+msgid "The selected upload will be removed. This action is irreversible."
+msgstr "La càrrega seleccionada s'eliminarà. Aquesta acció és irreversible."
+
+#: front/src/components/SetInstanceModal.vue:7
+msgctxt "Popup/Instance/Error message.List item"
+msgid "The server might be down"
+msgstr "El servidor pot estar inactiu"
+
+#: front/src/components/auth/SubsonicTokenForm.vue:4
+msgctxt "Content/Settings/Paragraph"
+msgid "The Subsonic API is not available on this Funkwhale instance."
+msgstr "L'API Subsonic no està disponible per aquesta instància de Funkwahale."
+
+#: front/src/components/library/EditCard.vue:96
+msgctxt "Popup/Library/Paragraph"
+msgid "The suggestion will be completely removed, this action is irreversible."
+msgstr "El suggeriment s’eliminarà completament, aquesta acció és irreversible."
+
+#: front/src/views/admin/library/TagDetail.vue:44
+#, fuzzy
+msgctxt "Content/Moderation/Paragraph"
+msgid "The tag will be removed and unlinked from any existing entity. This action is irreversible."
+msgstr "La pista s’eliminarà, així com les càrregues associades, els preferits i l’historial d’escolta. Aquesta acció és irreversible."
+
+#: front/src/components/playlists/PlaylistModal.vue:34
+msgctxt "Popup/Playlist/Error message.Title"
+msgid "The track can't be added to a playlist"
+msgstr "La pista no es pot afegir a la llista de reproducció"
+
+#: front/src/components/audio/Player.vue:62
+msgctxt "Sidebar/Player/Error message.Title"
+msgid "The track cannot be loaded"
+msgstr "La pista no s'ha pogut carregar"
+
+#: front/src/views/admin/library/TrackDetail.vue:80
+msgctxt "Content/Moderation/Paragraph"
+msgid "The track will be removed, as well as associated uploads, favorites and listening history. This action is irreversible."
+msgstr "La pista s’eliminarà, així com les càrregues associades, els preferits i l’historial d’escolta. Aquesta acció és irreversible."
+
+#: front/src/views/admin/library/UploadDetail.vue:68
+msgctxt "Content/Moderation/Paragraph"
+msgid "The upload will be removed. This action is irreversible."
+msgstr "La càrrega s'eliminarà. Aquesta acció és irreversible."
+
+#: front/src/components/library/FileUpload.vue:42
+msgctxt "Content/Library/List item"
+msgid "The uploaded music files are in OGG, Flac or MP3 format"
+msgstr "Els fitxers de música carregats estan en format OGG, MP3 O Flac"
+
+#: front/src/views/content/Home.vue:4
+msgctxt "Content/Library/Paragraph"
+msgid "There are various ways to grab new content and make it available here."
+msgstr "Hi ha diferents maneres de recuperar nou contingut i posar-lo a disposició aquí."
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:66
+msgctxt "Popup/Moderation/Paragraph"
+msgid "This action is irreversible."
+msgstr "Aquesta acció és irreversible."
+
+#: front/src/components/library/AlbumDetail.vue:29
+msgctxt "Content/Album/Paragraph"
+msgid "This album is present in the following libraries:"
+msgstr "Aquest àlbum es troba en les següents biblioteques:"
+
+#: front/src/components/library/ArtistDetail.vue:42
+msgctxt "Content/Artist/Paragraph"
+msgid "This artist is present in the following libraries:"
+msgstr "Aquest artista es troba a les següents biblioteques:"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:169
+#, fuzzy
+msgctxt "Content/Moderation/Popup"
+msgid "This domain is present in your allow-list"
+msgstr "Aquest artista es troba a les següents biblioteques:"
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:84
+#: front/src/views/admin/moderation/DomainsDetail.vue:76
+msgctxt "Content/Moderation/Card.Title"
+msgid "This domain is subject to specific moderation rules"
+msgstr "Aquest domini està subjecta a normes de moderació específiques"
+
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:16
+#, fuzzy
+msgctxt "Content/Moderation/Card.Title"
+msgid "This entity is subject to specific moderation rules"
+msgstr "Aquest domini està subjecta a normes de moderació específiques"
+
+#: front/src/views/content/Home.vue:9
+msgctxt "Content/Library/Paragraph"
+msgid "This instance offers up to %{quota} of storage space for every user."
+msgstr "Aquesta instància ofereix fins a %{quota} d'emmagatzematge per a cada usuari."
+
+#: front/src/components/auth/Settings.vue:300
+msgctxt "Popup/Settings/Paragraph"
+msgid "This is irreversible and will permanently remove your data from our servers. You will we immediatly logged out."
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:165
+msgctxt "Content/Settings/Paragraph"
+msgid "This is the list of applications that have access to your account data."
+msgstr "Aquesta és la llista d'aplicacions que tenen accés a les dades del teu compte."
+
+#: front/src/components/auth/Settings.vue:218
+msgctxt "Content/Settings/Paragraph"
+msgid "This is the list of applications that you have created."
+msgstr "Aquesta és la llista d'aplicacions que has creat."
+
+#: front/src/components/auth/Profile.vue:16
+msgctxt "Content/Profile/Button.Paragraph"
+msgid "This is you!"
+msgstr "Ets tu!"
+
+#: front/src/views/content/libraries/Form.vue:73
+msgctxt "Content/Library/Input.Placeholder"
+msgid "This library contains my personal music, I hope you like it."
+msgstr "Aquesta biblioteca conté la meva música personal, desitjo que t'agradi."
+
+#: front/src/views/content/remote/Card.vue:169
+msgctxt "Content/Library/Card.Help text"
+msgid "This library is private and your approval from its owner is needed to access its content"
+msgstr "Aquesta biblioteca és privada i es necessita l'aprovació del seu propietari per tal d'accedir al seu contingut"
+
+#: front/src/views/content/remote/Card.vue:170
+msgctxt "Content/Library/Card.Help text"
+msgid "This library is public and you can access its content freely"
+msgstr "Aquesta biblioteca és pública i pots accedir lliurement al seu contingut"
+
+#: front/src/components/common/ActionTable.vue:47
+msgctxt "Modal/*/Paragraph"
+msgid "This may affect a lot of elements or have irreversible consequences, please double check this is really what you want."
+msgstr "Això pot afectar molts elements o tenir conseqüències irreversibles, comproveu que és realment el que voleu."
+
+#: front/src/components/library/AlbumEdit.vue:8
+#: front/src/components/library/ArtistEdit.vue:8
+#: front/src/components/library/TrackEdit.vue:8
+msgctxt "Content/*/Message"
+msgid "This object is managed by another server, you cannot edit it."
+msgstr "Aquest objecte és gestionat per un altre servidor, no el podeu editar."
+
+#: front/src/components/Home.vue:87
+msgctxt "Content/Home/Paragraph"
+msgid "This pod runs Funkwhale, a community-driven project that lets you listen and share music and audio within a decentralized, open network."
+msgstr ""
+
+#: front/src/components/library/FileUpload.vue:51
+msgctxt "Content/Library/Paragraph"
+msgid "This reference will be used to group imported files together."
+msgstr "Aquesta referència s’utilitzarà per agrupar els fitxers carregats."
+
+#: front/src/components/mixins/Translations.vue:33
+#: front/src/components/mixins/Translations.vue:34
+#, fuzzy
+msgctxt "Content/Library/Help text"
+msgid "This track could not be processed, please make sure it is tagged correctly"
+msgstr "No s'ha pogut processar aquesta pista, assegurat que estigui correctament etiquetada"
+
+#: front/src/components/mixins/Translations.vue:29
+#: front/src/components/mixins/Translations.vue:30
+msgctxt "Content/Library/Help text"
+msgid "This track has been uploaded, but hasn't been processed by the server yet"
+msgstr "Aquesta pista s’ha carregat, però el servidor encara no l’ha processat"
+
+#: front/src/components/mixins/Translations.vue:25
+#: front/src/components/mixins/Translations.vue:26
+msgctxt "Content/Library/Help text"
+msgid "This track is already present in one of your libraries"
+msgstr "Aquesta pista ja hi és dins una de les teves biblioteques"
+
+#: front/src/components/audio/PlayButton.vue:103
+msgctxt "*/Queue/Button/Title"
+msgid "This track is not available in any library you have access to"
+msgstr "Aquesta pista no està disponible en cap la biblioteca on hi tens accés"
+
+#: front/src/components/library/TrackDetail.vue:82
+msgctxt "Content/Track/Paragraph"
+msgid "This track is present in the following libraries:"
+msgstr "Aquesta pista és present en una d'aquestes biblioteques:"
+
+#: front/src/views/playlists/Detail.vue:46
+msgctxt "Popup/Playlist/Paragraph"
+msgid "This will completely delete this playlist and cannot be undone."
+msgstr "Això eliminarà completament aquesta llista de reproducció i no es podrà desfer l'acció."
+
+#: front/src/views/radios/Detail.vue:27
+msgctxt "Popup/Radio/Paragraph"
+msgid "This will completely delete this radio and cannot be undone."
+msgstr "Això eliminarà completament aquesta ràdio i no es podrà desfer."
+
+#: front/src/components/auth/SubsonicTokenForm.vue:55
+msgctxt "Popup/Settings/Paragraph"
+msgid "This will completely disable access to the Subsonic API using from account."
+msgstr "Això desactivarà completament l’accés a l’API Subsonic des del teu compte."
+
+#: front/src/components/manage/moderation/ReportCard.vue:359
+msgctxt "Content/Moderation/Popup,Paragraph"
+msgid "This will delete the object associated with this report and mark the report as resolved. The deletion is irreversible."
+msgstr ""
+
+#: front/src/components/auth/SubsonicTokenForm.vue:40
+msgctxt "Popup/Settings/Paragraph"
+msgid "This will log you out from existing devices that use the current password."
+msgstr "Això us donarà accés als dispositius existents que utilitzin la contrasenya actual."
+
+#: front/src/components/auth/Settings.vue:253
+msgctxt "Popup/Settings/Paragraph"
+msgid "This will permanently delete the application and all the associated tokens."
+msgstr "Això suprimirà permanentment l’aplicació i tots els testimonis associats."
+
+#: front/src/components/auth/Settings.vue:194
+msgctxt "Popup/Settings/Paragraph"
+msgid "This will prevent this application from accessing the service on your behalf."
+msgstr "Això evitarà que aquesta aplicació accedeixi al servei en nom vostre."
+
+#: front/src/components/playlists/Editor.vue:54
+msgctxt "Popup/Playlist/Paragraph"
+msgid "This will remove all tracks from this playlist and cannot be undone."
+msgstr "Això eliminarà totes les pistes d'aquesta llista de reproducció i aquesta acció no es podrà desfer."
+
+#: front/src/components/audio/track/Table.vue:7
+#: front/src/components/manage/library/AlbumsTable.vue:39
+#: front/src/components/manage/library/TracksTable.vue:39
+#: front/src/views/admin/library/AlbumDetail.vue:105
+#: front/src/views/admin/library/TrackDetail.vue:104
+#: front/src/views/content/libraries/FilesTable.vue:55 src/edits.js:36
+#: front/src/edits.js:62
+msgctxt "*/*/*/Noun"
+msgid "Title"
+msgstr "Títol"
+
+#: front/src/components/SetInstanceModal.vue:16
+msgctxt "Popup/Instance/Paragraph"
+msgid "To continue, please select the Funkwhale instance you want to connect to. Enter the address directly, or select one of the suggested choices."
+msgstr "Per continuar, si us plau selecciona la instància de Funkwahale on et vols conectar. Introdueix directamente l'adreça o selecciona una de les suggerides."
+
+#: front/src/components/ShortcutsModal.vue:148
+#, fuzzy
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle favorite"
+msgstr "1 favorit"
+
+#: front/src/components/ShortcutsModal.vue:132
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle mute"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:136
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle queue looping"
+msgstr "Canvia el bucle de la cua"
+
+#: front/src/views/admin/library/AlbumDetail.vue:238
+#: front/src/views/admin/library/ArtistDetail.vue:226
+#: front/src/views/admin/library/LibraryDetail.vue:219
+#: front/src/views/admin/library/TrackDetail.vue:290
+#: front/src/views/admin/moderation/AccountsDetail.vue:329
+#: front/src/views/admin/moderation/DomainsDetail.vue:262
+msgctxt "Content/Moderation/Table.Label"
+msgid "Total size"
+msgstr "Tamany total"
+
+#: front/src/views/content/libraries/Card.vue:68
+msgctxt "Content/Library/Card.Help text"
+msgid "Total size of the files in this library"
+msgstr "Mida total dels fitxers en aquesta biblioteca"
+
+#: front/src/views/admin/moderation/DomainsDetail.vue:142
+msgctxt "Content/*/*"
+msgid "Total users"
+msgstr "Usuaris totals"
+
+#: front/src/components/audio/SearchBar.vue:34
+#: front/src/components/library/TrackBase.vue:188
+#: front/src/components/library/TrackDetail.vue:128
+#: front/src/components/metadata/Search.vue:138
+#: src/components/mixins/Report.vue:28
+#: front/src/views/admin/library/UploadDetail.vue:199
+#: front/src/components/mixins/Report.vue:29
+msgctxt "*/*/*/Noun"
+msgid "Track"
+msgstr "Pista"
+
+#: front/src/components/library/EditCard.vue:13
+msgctxt "Content/Library/Card/Short"
+msgid "Track #%{ id } - %{ name }"
+msgstr "Pista #%{ id } - %{ name }"
+
+#: front/src/views/admin/library/TrackDetail.vue:97
+msgctxt "Content/Moderation/Title"
+msgid "Track data"
+msgstr "Dades de la pista"
+
+#: front/src/components/library/TrackDetail.vue:4
+msgctxt "Content/Track/Title/Noun"
+msgid "Track information"
+msgstr "Informació de la pista"
+
+#: front/src/components/mixins/Translations.vue:60
+#: front/src/components/mixins/Translations.vue:61
+msgctxt "Content/*/Dropdown/Noun"
+msgid "Track name"
+msgstr "Nom de la pista"
+
+#: front/src/components/library/AlbumDetail.vue:19
+#: front/src/components/library/TagDetail.vue:36
+#: front/src/components/manage/library/AlbumsTable.vue:42
+#: front/src/components/manage/library/ArtistsTable.vue:42
+#: front/src/components/manage/library/TagsTable.vue:44
+#: front/src/components/playlists/PlaylistModal.vue:47
+#: front/src/views/admin/library/AlbumDetail.vue:268
+#: front/src/views/admin/library/ArtistDetail.vue:266
+#: front/src/views/admin/library/Base.vue:14
+#: front/src/views/admin/library/LibraryDetail.vue:248
+#: front/src/views/admin/library/TagDetail.vue:143
+#: front/src/views/admin/library/TracksList.vue:24
+#: front/src/views/admin/moderation/AccountsDetail.vue:374
+#: front/src/views/admin/moderation/DomainsDetail.vue:311
+#: front/src/views/content/Base.vue:8 src/views/content/libraries/Detail.vue:8
+#: front/src/views/playlists/Detail.vue:76 src/views/radios/Detail.vue:34
+msgctxt "*/*/*"
+msgid "Tracks"
+msgstr "Pistes"
+
+#: front/src/components/library/ArtistDetail.vue:33
+msgctxt "Content/Artist/Title"
+msgid "Tracks by this artist"
+msgstr "Pistes d'aquest artista"
+
+#: front/src/components/library/radios/Filter.vue:44
+msgctxt "Popup/Radio/Title/Noun"
+msgid "Tracks matching filter"
+msgstr "Pistes coincidents amb el filtre"
+
+#: front/src/components/library/TrackDetail.vue:57
+#: front/src/components/manage/moderation/ReportCard.vue:134
+#: front/src/views/admin/library/UploadDetail.vue:250
+#: front/src/views/admin/moderation/AccountsDetail.vue:181
+msgctxt "Content/Track/Table.Label/Noun"
+msgid "Type"
+msgstr "Tipus"
+
+#: front/src/components/manage/moderation/AccountsTable.vue:44
+#: front/src/components/manage/moderation/DomainsTable.vue:50
+msgctxt "Content/Moderation/Table.Label/Short"
+msgid "Under moderation rule"
+msgstr "Sota la regla de moderació"
+
+#: front/src/components/ShortcutsModal.vue:68
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Unfocus searchbar"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:122
+#: src/views/content/remote/Card.vue:127
+msgctxt "*/Library/Button.Label/Verb"
+msgid "Unfollow"
+msgstr "Deixar de seguir"
+
+#: front/src/views/content/remote/Card.vue:123
+msgctxt "Popup/Library/Title"
+msgid "Unfollow this library?"
+msgstr "Vols deixar de seguir aquesta biblioteca?"
+
+#: front/src/components/federation/FetchButton.vue:54
+#: front/src/components/federation/FetchButton.vue:55
+#: front/src/components/library/ImportStatusModal.vue:144
+msgctxt "*/*/Error"
+msgid "Unknown error"
+msgstr "Error desconegut"
+
+#: front/src/components/audio/Player.vue:656
+msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
+msgid "Unmute"
+msgstr "Activar el so"
+
+#: front/src/components/manage/moderation/ReportCard.vue:225
+msgctxt "Content/*/Button.Label"
+msgid "Unresolve"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:67
+#: front/src/views/admin/moderation/ReportsList.vue:23
+msgctxt "Content/*/*/Short"
+msgid "Unresolved"
+msgstr ""
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:57
+msgctxt "Content/Moderation/Card.Button.Label/Verb"
+msgid "Update"
+msgstr "Actualitzar"
+
+#: front/src/components/auth/ApplicationForm.vue:64
+msgctxt "Content/Applications/Button.Label/Verb"
+msgid "Update application"
+msgstr "Actualitza l'aplicació"
+
+#: front/src/components/auth/Settings.vue:50
+msgctxt "Content/Settings/Button.Label/Verb"
+msgid "Update avatar"
+msgstr "Actualitzar l'avatar"
+
+#: front/src/views/content/libraries/Form.vue:25
+msgctxt "Content/Library/Button.Label/Verb"
+msgid "Update library"
+msgstr "Actualitzar la biblioteca"
+
+#: front/src/components/playlists/Form.vue:33
+msgctxt "Content/Playlist/Button.Label/Verb"
+msgid "Update playlist"
+msgstr "Actualitzar la llista de reproducció"
+
+#: front/src/components/auth/Settings.vue:27
+msgctxt "Content/Settings/Button.Label/Verb"
+msgid "Update settings"
+msgstr "Actualitza els paràmetres"
+
+#: front/src/views/auth/PasswordResetConfirm.vue:21
+msgctxt "Content/Signup/Button.Label"
+msgid "Update your password"
+msgstr "Actualitzar la teva contrasenya"
+
+#: front/src/views/content/libraries/Card.vue:45
+#: front/src/views/content/libraries/DetailArea.vue:24
+msgctxt "Content/Library/Card.Button.Label/Verb"
+msgid "Upload"
+msgstr "Pujar"
+
+#: front/src/components/auth/Settings.vue:45
+msgctxt "Content/Settings/Title/Verb"
+msgid "Upload a new avatar"
+msgstr "Carrega el nou avatar"
+
+#: front/src/views/content/Home.vue:6
+msgctxt "Content/Library/Title/Verb"
+msgid "Upload audio content"
+msgstr "Pujar continguts d'àudio"
+
+#: front/src/views/admin/library/UploadDetail.vue:85
+msgctxt "Content/Moderation/Title"
+msgid "Upload data"
+msgstr "Dada de pujada"
+
+#: front/src/views/content/libraries/FilesTable.vue:58
+msgctxt "*/*/*/Noun"
+msgid "Upload date"
+msgstr "Data de pujada"
+
+#: front/src/components/library/FileUpload.vue:258
+msgctxt "Content/Library/Help text"
+msgid "Upload denied, ensure the file is not too big and that you have not reached your quota"
+msgstr "Pujada denegada, assegurat que el fitxer no sigui massa gran i que no hagis acabat la teva quota"
+
+#: front/src/components/library/ImportStatusModal.vue:8
+msgctxt "Popup/Import/Message"
+msgid "Upload is still pending and will soon be processed by the server."
+msgstr "La càrrega encara està pendent i aviat serà processada pel servidor."
+
+#: front/src/views/content/Home.vue:7
+msgctxt "Content/Library/Paragraph"
+msgid "Upload music files (MP3, OGG, FLAC, etc.) from your personal library directly from your browser to enjoy them here."
+msgstr "Carrega fitxers de música (MP3, OGG, FLAC, …) directament a la teva llibreria personal des del teu navegador per gaudir-ne aquí."
+
+#: front/src/components/library/FileUpload.vue:30
+msgctxt "Content/Library/Title/Verb"
+msgid "Upload new tracks"
+msgstr "Carregar noves pistes"
+
+#: front/src/components/About.vue:99
+#: front/src/views/admin/moderation/AccountsDetail.vue:309
+#, fuzzy
+msgctxt "*/*/*"
+msgid "Upload quota"
+msgstr "Quota de pujada"
+
+#: front/src/components/library/FileUpload.vue:267
+msgctxt "Content/Library/Help text"
+msgid "Upload timeout, please try again"
+msgstr "S'ha esgotat el temps de pujada, si us plau torna a provar-ho"
+
+#: front/src/components/library/ImportStatusModal.vue:14
+msgctxt "Popup/Import/Message"
+msgid "Upload was skipped because a similar one is already available in one of your libraries."
+msgstr "S'ha omès la càrrega, ja que una de semblant ja està disponible en una de les teves biblioteques."
+
+#: front/src/components/library/ImportStatusModal.vue:11
+msgctxt "Popup/Import/Message"
+msgid "Upload was successfully processed by the server."
+msgstr "La pujada ha sigut processada correctament pel servidor."
+
+#: front/src/components/library/FileUpload.vue:109
+msgctxt "Content/Library/Table"
+msgid "Uploaded"
+msgstr "Carregat"
+
+#: front/src/components/library/FileUpload.vue:5
+msgctxt "Content/Library/Tab.Title/Short"
+msgid "Uploading"
+msgstr "Carregant"
+
+#: front/src/components/library/FileUpload.vue:112
+msgctxt "Content/Library/Table"
+msgid "Uploading…"
+msgstr "Carregant …"
+
+#: front/src/components/manage/library/LibrariesTable.vue:52
+#: front/src/components/manage/moderation/AccountsTable.vue:41
+#: front/src/components/mixins/Translations.vue:75
+#: front/src/views/admin/library/AlbumDetail.vue:258
+#: front/src/views/admin/library/ArtistDetail.vue:246
+#: front/src/views/admin/library/Base.vue:20
+#: front/src/views/admin/library/LibraryDetail.vue:258
+#: front/src/views/admin/library/TrackDetail.vue:310
+#: front/src/views/admin/library/UploadsList.vue:24
+#: front/src/views/admin/moderation/AccountsDetail.vue:349
+#: front/src/views/admin/moderation/DomainsDetail.vue:281
+#: front/src/components/mixins/Translations.vue:76
+msgctxt "*/*/*"
+msgid "Uploads"
+msgstr "Pujades"
+
+#: front/src/components/auth/ApplicationForm.vue:16
+msgctxt "Content/Applications/Help Text"
+msgid "Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is not served on the web."
+msgstr "Utilitza \"urn:ietf:wg:oauth:2.0:oob\" com a URI de redirecció si la vostra aplicació no es serveix al web."
+
+#: front/src/components/Footer.vue:16
+msgctxt "Footer/*/List item.Link"
+msgid "Use another instance"
+msgstr "Utilitzar una altre instància"
+
+#: front/src/components/Home.vue:146
+msgctxt "Content/Home/Link"
+msgid "Use Funkwhale on other devices with our apps"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:44
+msgctxt "*/*/Field,Help"
+msgid "Use this field to provide additional context to the moderator that will handle your report."
+msgstr ""
+
+#: front/src/views/auth/PasswordReset.vue:12
+msgctxt "Content/Signup/Paragraph"
+msgid "Use this form to request a password reset. We will send an email to the given address with instructions to reset your password."
+msgstr "Utilitza aquest formulari per sol·licitar el restabliment de la contrasenya. Enviarem un correu electrònic a l’adreça indicada amb instruccions per restablir la teva contrasenya."
+
+#: front/src/components/moderation/ReportModal.vue:18
+msgctxt "*/Moderation/Popup,Paragraph"
+msgid "Use this form to submit a report to our moderation team."
+msgstr ""
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:111
+msgctxt "Content/Moderation/Help text"
+msgid "Use this setting to temporarily enable/disable the policy without completely removing it."
+msgstr "Utilitzeu aquest paràmetre per activar/desactivar temporalment la regla sense eliminar-la totalment."
+
+#: front/src/components/manage/users/InvitationsTable.vue:49
+msgctxt "Content/Admin/Table"
+msgid "Used"
+msgstr "Utilitzat"
+
+#: front/src/components/Home.vue:125
+msgctxt "Content/Home/Header"
+msgid "Useful links"
+msgstr ""
+
+#: front/src/views/content/libraries/Detail.vue:26
+msgctxt "Content/Library/Table.Label"
+msgid "User"
+msgstr "Usuari"
+
+#: front/src/components/Home.vue:154
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "User guides"
+msgstr "Biblioteques d'usuaris"
+
+#: front/src/views/admin/Settings.vue:88
+#, fuzzy
+msgctxt "Content/Admin/Menu"
+msgid "User Interface"
+msgstr "Nom d'usuari"
+
+#: front/src/components/library/AlbumDetail.vue:26
+#: front/src/components/library/ArtistDetail.vue:39
+#: front/src/components/library/TrackDetail.vue:79
+msgctxt "Content/*/Title/Noun"
+msgid "User libraries"
+msgstr "Biblioteques d'usuaris"
+
+#: front/src/components/library/Radios.vue:20
+msgctxt "Content/Radio/Title"
+msgid "User radios"
+msgstr "Ràdios dels usuaris"
+
+#: front/src/components/auth/SignupForm.vue:15
+#: front/src/components/manage/users/UsersTable.vue:37
+#: front/src/components/mixins/Translations.vue:71
+#: front/src/views/admin/moderation/AccountsDetail.vue:114
+#: front/src/components/mixins/Translations.vue:72
+msgctxt "Content/*/*"
+msgid "Username"
+msgstr "Nom d'usuari"
+
+#: front/src/components/auth/LoginForm.vue:11
+msgctxt "Content/Login/Input.Label/Noun"
+msgid "Username or email"
+msgstr "Nom d'usuari o correu"
+
+#: front/src/components/Sidebar.vue:106
+#: front/src/components/manage/moderation/DomainsTable.vue:47
+#: front/src/components/mixins/Translations.vue:73
+#: src/views/admin/Settings.vue:81 front/src/views/admin/users/Base.vue:5
+#: src/views/admin/users/UsersList.vue:21
+#: front/src/components/mixins/Translations.vue:74
+msgctxt "*/*/*/Noun"
+msgid "Users"
+msgstr "Usuaris"
+
+#: front/src/components/Home.vue:110
+msgctxt "Content/Home/Paragraph"
+msgid "Users on this pod also get %{ quota } of free storage to upload their own content!"
+msgstr ""
+
+#: front/src/components/Footer.vue:29
+msgctxt "Footer/*/Title"
+msgid "Using Funkwhale"
+msgstr "Usar Funkwhale"
+
+#: front/src/components/Footer.vue:13
+msgctxt "Footer/*/List item"
+msgid "Version %{version}"
+msgstr "Versió %{version}"
+
+#: front/src/views/content/libraries/Quota.vue:29
+#: front/src/views/content/libraries/Quota.vue:56
+#: front/src/views/content/libraries/Quota.vue:82
+msgctxt "Content/Library/Link/Verb"
+msgid "View files"
+msgstr "Visualitza els fitxers"
+
+#: front/src/components/library/AlbumBase.vue:95
+#: front/src/components/library/ArtistBase.vue:107
+#: front/src/components/library/TrackBase.vue:111
+#: front/src/views/admin/library/AlbumDetail.vue:48
+#: front/src/views/admin/library/ArtistDetail.vue:46
+#: front/src/views/admin/library/LibraryDetail.vue:34
+#: front/src/views/admin/library/LibraryDetail.vue:45
+#: front/src/views/admin/library/TagDetail.vue:32
+#: front/src/views/admin/library/TrackDetail.vue:47
+#: front/src/views/admin/library/UploadDetail.vue:35
+#: front/src/views/admin/library/UploadDetail.vue:46
+#: front/src/views/admin/moderation/AccountsDetail.vue:37
+#: front/src/views/admin/moderation/AccountsDetail.vue:45
+#: front/src/views/admin/moderation/DomainsDetail.vue:30
+msgctxt "Content/Moderation/Link/Verb"
+msgid "View in Django's admin"
+msgstr "Visualitza amb l'administrador Django's"
+
+#: front/src/components/Home.vue:169
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "View more…"
+msgstr "Carrega'n més …"
+
+#: front/src/components/library/AlbumBase.vue:62
+#: front/src/components/library/ArtistBase.vue:73
+#: front/src/components/library/TrackBase.vue:78
+#: front/src/components/metadata/ArtistCard.vue:49
+#: front/src/components/metadata/ReleaseCard.vue:53
+msgctxt "Content/*/*/Clickable, Verb"
+msgid "View on MusicBrainz"
+msgstr "Visualitza a MusicBrainz"
+
+#: front/src/components/manage/moderation/ReportCard.vue:124
+msgctxt "Content/Moderation/Link"
+msgid "View public page"
+msgstr ""
+
+#: front/src/components/manage/library/LibrariesTable.vue:11
+#: front/src/components/manage/library/LibrariesTable.vue:51
+#: front/src/components/manage/library/UploadsTable.vue:11
+#: front/src/components/manage/library/UploadsTable.vue:63
+#: front/src/views/admin/library/LibraryDetail.vue:94
+#: front/src/views/admin/library/UploadDetail.vue:101
+#: front/src/views/content/libraries/Form.vue:18
+msgctxt "*/*/*"
+msgid "Visibility"
+msgstr "Visibilitat"
+
+#: front/src/components/Home.vue:91
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Visit funkwhale.audio"
+msgstr "Usar Funkwhale"
+
+#: front/src/components/library/AlbumDetail.vue:4
+msgctxt "Content/Album/"
+msgid "Volume %{ number }"
+msgstr "Volum %{ number }"
+
+#: front/src/components/federation/FetchButton.vue:69
+msgctxt "Popup/*/Loading.Title"
+msgid "Waiting for result…"
+msgstr "Esperant el resultat …"
+
+#: front/src/components/auth/Settings.vue:285
+#, fuzzy
+msgctxt "Content/Settings/Error message.Title"
+msgid "We cannot delete your account"
+msgstr "No es pot iniciar la sessió"
+
+#: front/src/components/auth/LoginForm.vue:3
+msgctxt "Content/Login/Error message.Title"
+msgid "We cannot log you in"
+msgstr "No es pot iniciar la sessió"
+
+#: front/src/components/auth/ApplicationForm.vue:3
+msgctxt "Content/*/Error message.Title"
+msgid "We cannot save your changes"
+msgstr "No es poden desar els teus canvis"
+
+#: front/src/views/Notifications.vue:39
+msgctxt "Content/Notifications/Paragraph"
+msgid "We noticed you've been here for a while. If Funkwhale is useful to you, we could use your help to make it even better!"
+msgstr ""
+
+#: front/src/components/library/FileUpload.vue:39
+msgctxt "Content/Library/Link"
+msgid "We recommend using Picard for that purpose."
+msgstr "Us recomanem que utilitzeu Picard per a aquest propòsit."
+
+#: front/src/components/moderation/ReportModal.vue:35
+msgctxt "*/*/Field,Help"
+msgid "We'll use this email if we need to contact you regarding this report."
+msgstr ""
+
+#: front/src/components/Home.vue:207
+msgctxt "Head/Home/Title"
+msgid "Welcome"
+msgstr "Benvinguts/des"
+
+#: front/src/components/Home.vue:5
+msgctxt "Content/Home/Header"
+msgid "Welcome to %{ podName }!"
+msgstr ""
+
+#: front/src/components/audio/EmbedWizard.vue:23
+msgctxt "Popup/Embed/Input.Label"
+msgid "Widget height"
+msgstr "Alçada del giny"
+
+#: front/src/components/audio/EmbedWizard.vue:16
+msgctxt "Popup/Embed/Input.Label"
+msgid "Widget width"
+msgstr "Amplada del giny"
+
+#: front/src/components/auth/ApplicationForm.vue:157
+msgctxt "Content/OAuth Scopes/Label/Verb"
+msgid "Write"
+msgstr "Escriure"
+
+#: front/src/components/auth/Authorize.vue:21
+msgctxt "Content/Auth/Label/Noun"
+msgid "Write-only"
+msgstr "Només d'escriptura"
+
+#: front/src/components/auth/ApplicationForm.vue:158
+msgctxt "Content/OAuth Scopes/Help Text"
+msgid "Write-only access to user data"
+msgstr "Accés només per escrit a les dades de l'usuari"
+
+#: front/src/components/Sidebar.vue:133
+#: front/src/components/manage/moderation/AccountsTable.vue:72
+#: front/src/components/manage/moderation/DomainsTable.vue:12
+#: front/src/components/manage/moderation/DomainsTable.vue:69
+#: front/src/views/admin/moderation/DomainsDetail.vue:109
+msgctxt "*/*/*"
+msgid "Yes"
+msgstr "Sí"
+
+#: front/src/components/auth/Logout.vue:8
+msgctxt "Content/Login/Button.Label"
+msgid "Yes, log me out!"
+msgstr "Sí, tanca la sessió!"
+
+#: front/src/views/content/libraries/Form.vue:19
+msgctxt "Content/Library/Paragraph"
+msgid "You are able to share your library with other people, regardless of its visibility."
+msgstr "Pots compartir la teva biblioteca amb altres persones, independentment de la seva visibilitat."
+
+#: front/src/components/library/FileUpload.vue:32
+msgctxt "Content/Library/Paragraph"
+msgid "You are about to upload music to your library. Before proceeding, please ensure that:"
+msgstr "Estàs apunt de carregar música a la teva biblioteca. Abans de començar, assegurat de:"
+
+#: front/src/components/SetInstanceModal.vue:12
+msgctxt "Popup/Login/Paragraph"
+msgid "You are currently connected to <a href=\"%{ url }\" target=\"_blank\">%{ hostname }&nbsp;<i class=\"external icon\"/></a>. If you continue, you will be disconnected from your current instance and all your local data will be deleted."
+msgstr "Actualment estàs connectat a <a href=\"%{ url }\" target=\"_blank\">%{ hostname }&nbsp;<i class=\"external icon\"/></a>. Si continueu, sereu desconnectats de la vostra instància actual i s’eliminaran totes les vostres dades locals."
+
+#: front/src/components/library/ArtistDetail.vue:6
+msgctxt "Content/Artist/Paragraph"
+msgid "You are currently hiding content related to this artist."
+msgstr "Actualment, esteu ocultant contingut relacionat amb aquest artista."
+
+#: front/src/components/auth/Logout.vue:7
+msgctxt "Content/Login/Paragraph"
+msgid "You are currently logged in as %{ username }"
+msgstr "Actualment esteu connectat com a %{ username }"
+
+#: front/src/components/library/FileUpload.vue:35
+msgctxt "Content/Library/List item"
+msgid "You are not uploading copyrighted content in a public library, otherwise you may be infringing the law"
+msgstr "No pengis contingut amb drets d'autor en una biblioteca pública, en cas contrari, podries infringir la llei"
+
+#: front/src/components/SetInstanceModal.vue:98
+msgctxt "*/Instance/Message"
+msgid "You are now using the Funkwhale instance at %{ url }"
+msgstr "Ara utilitzeu la instància de Funkwhale a %{ url }"
+
+#: front/src/views/content/Home.vue:17
+#, fuzzy
+msgctxt "Content/Library/Paragraph"
+msgid "You can follow libraries from other users to get access to new music. Public libraries can be followed immediately, while following a private library requires approval from its owner."
+msgstr "Pots seguir biblioteques d'altres usuaris per tenir accés a nova música. Les biblioteques públiques poden seguir-se immediatament, però seguir les biblioteques privades requereix l'aprovació del seu propietari."
+
+#: front/src/components/moderation/FilterModal.vue:31
+#, fuzzy
+msgctxt "Popup/Moderation/Paragraph"
+msgid "You can manage and update your filters any time from your account settings."
+msgstr "Podeu gestionar i actualitzar els filtres en qualsevol moment des de la configuració del vostre compte."
+
+#: front/src/views/auth/EmailConfirm.vue:24
+msgctxt "Content/Signup/Paragraph"
+msgid "You can now use the service without limitations."
+msgstr "Ara podeu utilitzar el servei sense limitacions."
+
+#: front/src/components/auth/Settings.vue:278
+msgctxt "Content/Settings/Paragraph'"
+msgid "You can permanently and irreversibly delete your account and all the associated data using the form below. You will be asked for confirmation."
+msgstr ""
+
+#: front/src/components/library/radios/Builder.vue:7
+msgctxt "Content/Radio/Paragraph"
+msgid "You can use this interface to build your own custom radio, which will play tracks according to your criteria."
+msgstr "Podeu utilitzar aquesta interfície per crear la vostra pròpia ràdio personalitzada, que reproduirà les pistes d’acord amb els vostres criteris."
+
+#: front/src/components/auth/SubsonicTokenForm.vue:7
+msgctxt "Content/Settings/Paragraph"
+msgid "You can use those to enjoy your playlist and music in offline mode, on your smartphone or tablet, for instance."
+msgstr "Pots utilitzar-lo per gaudir, per exemple, de la vostra llista de reproducció i de la música sense connexió, al telèfon intel·ligent o a la tauleta."
+
+#: front/src/components/auth/Settings.vue:202
+msgctxt "Content/Applications/Paragraph"
+msgid "You don't have any application connected with your account."
+msgstr "No teniu cap aplicació connectada amb el vostre compte."
+
+#: front/src/components/auth/Settings.vue:261
+msgctxt "Content/Applications/Paragraph"
+msgid "You don't have any configured application yet."
+msgstr "Encara no teniu cap aplicació configurada."
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:75
+msgctxt "Content/Moderation/Card.Title"
+msgid "You don't have any rule in place for this account."
+msgstr "No teniu cap norma per a aquest compte."
+
+#: front/src/views/admin/moderation/DomainsDetail.vue:67
+msgctxt "Content/Moderation/Card.Title"
+msgid "You don't have any rule in place for this domain."
+msgstr "No teniu cap norma per a aquest domini."
+
+#: front/src/components/library/EditForm.vue:52
+msgctxt "Content/Library/Paragraph"
+msgid "You don't have the permission to edit this object, but you can suggest changes. Once submitted, suggestions will be reviewed before approval."
+msgstr "No teniu permís per editar aquest objecte, però podeu suggerir canvis. Un cop enviats, els suggeriments es revisaran abans de l'aprovació."
+
+#: front/src/components/Sidebar.vue:175
+msgctxt "Sidebar/Player/Title"
+msgid "You have a radio playing"
+msgstr "Estàs escoltant la ràdio"
+
+#: front/src/components/audio/Player.vue:69
+msgctxt "Sidebar/Player/Error message.Paragraph"
+msgid "You may have a connectivity issue."
+msgstr "És possible que tingueu un problema de connectivitat."
+
+#: front/src/components/auth/Settings.vue:100
+msgctxt "Popup/Settings/List item"
+msgid "You will be logged out from this session and have to log in with the new one"
+msgstr "Es tancarà la sessió d’aquest compte i hauràs d’iniciar sessió amb la nou"
+
+#: front/src/components/auth/Authorize.vue:51
+msgctxt "Content/Auth/Paragraph"
+msgid "You will be redirected to <strong>%{ url }</strong>"
+msgstr "Es redirigirà a <strong>%{ url }</strong>"
+
+#: front/src/components/auth/Authorize.vue:49
+msgctxt "Content/Auth/Paragraph"
+msgid "You will be shown a code to copy-paste in the application."
+msgstr "Se us mostrarà un codi per copiar i enganxar a l’aplicació."
+
+#: front/src/components/auth/Settings.vue:71
+msgctxt "Content/Settings/Paragraph"
+msgid "You will have to update your password on your clients that use this password."
+msgstr "Haureu d’actualitzar la vostra contrasenya als vostres clients que utilitzin aquesta contrasenya."
+
+#: front/src/components/moderation/FilterModal.vue:20
+#, fuzzy
+msgctxt "Popup/Moderation/Paragraph"
+msgid "You will not see tracks, albums and user activity linked to this artist any more:"
+msgstr "No veureu pistes, àlbums ni activitats relacionades amb aquest usuari:"
+
+#: front/src/components/auth/SignupForm.vue:9
+msgctxt "Content/Signup/Form/Paragraph"
+msgid "Your account cannot be created."
+msgstr "No es pot crear el vostre compte."
+
+#: front/src/components/auth/Settings.vue:281
+msgctxt "Content/Settings/Paragraph'"
+msgid "Your account will be deleted from our servers within a few minutes. We will also notify other servers who may have a copy of some of your data so they can proceed to deletion. Please note that some of these servers may be offline or unwilling to comply though."
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:215
+msgctxt "Content/Settings/Title/Noun"
+msgid "Your applications"
+msgstr "Les vostres aplicacions"
+
+#: front/src/components/auth/Settings.vue:38
+msgctxt "Content/Settings/Error message.Title"
+msgid "Your avatar cannot be saved"
+msgstr "No s'ha pogut guardar el teu avatar"
+
+#: front/src/components/auth/Settings.vue:527
+msgctxt "*/Auth/Message"
+msgid "Your deletion request was submitted, your account and content will be deleted shortly"
+msgstr ""
+
+#: front/src/components/library/EditForm.vue:3
+msgctxt "Content/Library/Paragraph"
+msgid "Your edit was successfully submitted."
+msgstr "L’edició s’ha enviat correctament."
+
+#: front/src/components/favorites/List.vue:116
+msgctxt "Head/Favorites/Title"
+msgid "Your Favorites"
+msgstr "Els teus preferits"
+
+#: front/src/views/Notifications.vue:5
+#, fuzzy
+msgctxt "Content/Notifications/Title"
+msgid "Your messages"
+msgstr "Missatges emesos"
+
+#: front/src/views/Notifications.vue:69
+msgctxt "Content/Notifications/Title"
+msgid "Your notifications"
+msgstr "Les vostres notificacions"
+
+#: front/src/components/auth/Settings.vue:76
+msgctxt "Content/Settings/Error message.Title"
+msgid "Your password cannot be changed"
+msgstr "La vostra contrasenya no es pot canviar"
+
+#: front/src/views/auth/PasswordResetConfirm.vue:29
+msgctxt "Content/Signup/Card.Paragraph"
+msgid "Your password has been updated successfully."
+msgstr "La vostra contrasenya s'ha actualitzat correctament."
+
+#: front/src/components/auth/Settings.vue:14
+#, fuzzy
+msgctxt "Content/Settings/Error message.Title"
+msgid "Your settings can't be updated"
+msgstr "La vostra configuració no es pot actualitzar"
+
+#: front/src/components/auth/Settings.vue:101
+msgctxt "Popup/Settings/List item"
+msgid "Your Subsonic password will be changed to a new, random one, logging you out from devices that used the old Subsonic password"
+msgstr "La vostra contrasenya Subsonic es canviarà a una altra nova i aleatòria, i us iniciarà la sessió des dels dispositius que utilitzen la contrasenya antiga de Subsonic"
+
+#: front/src/entities.js:126
+#, fuzzy
+msgctxt "*/*/*/Noun"
+msgid "MusicBrainz ID"
+msgstr "Obrir dins MusicBrainz"
+
+#: front/src/main.js:110
+msgctxt "*/Error/Paragraph"
+msgid "You sent too many requests and have been rate limited, please try again in %{ delay }"
+msgstr ""
+
+#: front/src/main.js:113
+msgctxt "*/Error/Paragraph"
+msgid "You sent too many requests and have been rate limited, please try again later"
+msgstr ""
+
+#: front/src/components/library/AlbumBase.vue:208
+msgctxt "Content/Album/Header.Title"
+msgid "Album containing %{ count } track, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgid_plural "Album containing %{ count } tracks, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgstr[0] "L'àlbum conté una cançó de  <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgstr[1] "L'àlbum conté %{ count } cançons, de <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+
+#: front/src/components/audio/PlayButton.vue:246
+msgctxt "*/Queue/Message"
+msgid "%{ count } track was added to your queue"
+msgid_plural "%{ count } tracks were added to your queue"
+msgstr[0] "%{ count } pista ha estat afegida a la teva cua"
+msgstr[1] "%{ count } pistes han estat afegides a la teva cua"
diff --git a/front/locales/cs/LC_MESSAGES/app.po b/front/locales/cs/LC_MESSAGES/app.po
new file mode 100644
index 0000000000000000000000000000000000000000..c7ddd524237b61f1c69e3d1171d34a6c0c455e10
--- /dev/null
+++ b/front/locales/cs/LC_MESSAGES/app.po
@@ -0,0 +1,5584 @@
+# Czech translations for front package.
+# Copyright (C) 2019 THE front'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the front package.
+# Automatically generated, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: front 0.1.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2019-10-01 15:15+0200\n"
+"PO-Revision-Date: 2019-09-26 10:13+0000\n"
+"Last-Translator: jiri-novacek <gfreshman@gmail.com>\n"
+"Language-Team: none\n"
+"Language: cs\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+"X-Generator: Weblate 3.7\n"
+
+#: front/src/components/playlists/PlaylistModal.vue:9
+msgctxt "Popup/Playlist/Paragraph"
+msgid "\"%{ title }\", by %{ artist }"
+msgstr "\"%{ title }\", od %{ artist }"
+
+#: front/src/components/Sidebar.vue:24
+msgctxt "Sidebar/Queue/Tab.Title"
+msgid "(%{ index } of %{ length })"
+msgstr "(%{ index } z %{ length })"
+
+#: front/src/components/Sidebar.vue:22
+msgctxt "Sidebar/Queue/Tab.Title"
+msgid "(empty)"
+msgstr "(prázdné)"
+
+#: front/src/components/auth/Authorize.vue:16
+msgctxt "Content/Auth/Title"
+msgid "%{ app } wants to access your Funkwhale account"
+msgstr "%{ app } chce přistupovat k vašemu Funkwhale účtu"
+
+#: front/src/components/About.vue:173 src/components/Home.vue:56
+msgctxt "Content/Home/Stat"
+msgid "%{ count } active user"
+msgid_plural "%{ count } active users"
+msgstr[0] "%{ count } aktivní uživatel"
+msgstr[1] "%{ count } aktivní uživatelé"
+msgstr[2] "%{ count } aktivních uživatelů"
+
+#: front/src/components/About.vue:182
+msgctxt "Content/Home/Stat"
+msgid "%{ count } albums"
+msgid_plural "%{ count } albums"
+msgstr[0] "%{ count } album"
+msgstr[1] "%{ count } alba"
+msgstr[2] "%{ count } alb"
+
+#: front/src/components/About.vue:152
+msgctxt "*/*/*"
+msgid "%{ count } allowed domains"
+msgid_plural "%{ count } allowed domains"
+msgstr[0] "%{ count } povolená doména"
+msgstr[1] "%{ count } povolené domény"
+msgstr[2] "%{ count } povolených domén"
+
+#: front/src/components/About.vue:179
+msgctxt "Content/Home/Stat"
+msgid "%{ count } artists"
+msgid_plural "%{ count } artists"
+msgstr[0] "%{ count } interpret"
+msgstr[1] "%{ count } interpreti"
+msgstr[2] "%{ count } interpretů"
+
+#: front/src/components/About.vue:176 src/components/Home.vue:59
+msgctxt "Content/Home/Stat"
+msgid "%{ count } hour of music"
+msgid_plural "%{ count } hours of music"
+msgstr[0] "%{ count } hodina hudby"
+msgstr[1] "%{ count } hodiny hudby"
+msgstr[2] "%{ count } hodin hudby"
+
+#: front/src/components/About.vue:188
+msgctxt "Content/Home/Stat"
+msgid "%{ count } listenings"
+msgid_plural "%{ count } listenings"
+msgstr[0] "%{ count } poslech"
+msgstr[1] "%{ count } poslechy"
+msgstr[2] "%{ count } poslechů"
+
+#: front/src/components/common/ActionTable.vue:68
+msgctxt "Content/*/Paragraph"
+msgid "%{ count } on %{ total } selected"
+msgid_plural "%{ count } on %{ total } selected"
+msgstr[0] "%{ count } z %{ total } vybrán"
+msgstr[1] "%{ count } z %{ total } vybrány"
+msgstr[2] "%{ count } on %{ total } vybraných"
+
+#: front/src/components/Sidebar.vue:125 src/components/audio/album/Card.vue:52
+#: front/src/views/content/libraries/Card.vue:40
+#: src/views/content/remote/Card.vue:43
+msgctxt "*/*/*"
+msgid "%{ count } track"
+msgid_plural "%{ count } tracks"
+msgstr[0] "%{ count } stopa"
+msgstr[1] "%{ count } stopy"
+msgstr[2] "%{ count } stop"
+
+#: front/src/components/library/ArtistBase.vue:13
+msgctxt "Content/Artist/Paragraph"
+msgid "%{ count } track in %{ albumsCount } albums"
+msgid_plural "%{ count } tracks in %{ albumsCount } albums"
+msgstr[0] "%{ count } stopa v %{ albumsCount } albu"
+msgstr[1] "%{ count } stopy v %{ albumsCount } albech"
+msgstr[2] "%{ count } stop in %{ albumsCount } albech"
+
+#: front/src/components/library/radios/Builder.vue:81
+msgctxt "Content/Radio/Table.Paragraph/Short"
+msgid "%{ count } track matching combined filters"
+msgid_plural "%{ count } tracks matching combined filters"
+msgstr[0] "%{ count } stopa odpovídá zadaným filtrům"
+msgstr[1] "%{ count } stopy odpovídají zadaným filtrům"
+msgstr[2] "%{ count } stop odpovídá zadaným filtrům"
+
+#: front/src/components/About.vue:185
+msgctxt "Content/Home/Stat"
+msgid "%{ count } tracks"
+msgid_plural "%{ count } tracks"
+msgstr[0] "%{ count } stopa"
+msgstr[1] "%{ count } stopy"
+msgstr[2] "%{ count } stop"
+
+#: front/src/components/playlists/Card.vue:28
+msgctxt "Content/*/Card/List item"
+msgid "%{ count} track"
+msgid_plural "%{ count } tracks"
+msgstr[0] "%{ count} stopa"
+msgstr[1] "%{ count } stopy"
+msgstr[2] "%{ count } stop"
+
+#: front/src/views/content/libraries/Quota.vue:11
+msgctxt "Content/Library/Paragraph"
+msgid "%{ current } used on %{ max } allowed"
+msgstr "%{ current } využito z %{ max } povolených"
+
+#: front/src/components/common/Duration.vue:2
+msgctxt "Content/*/Paragraph"
+msgid "%{ hours } h %{ minutes } min"
+msgstr "%{ hours } h %{ minutes } min"
+
+#: front/src/components/common/Duration.vue:5
+msgctxt "Content/*/Paragraph"
+msgid "%{ minutes } min"
+msgstr "%{ minutes } min"
+
+#: front/src/components/notifications/NotificationRow.vue:40
+msgctxt "Content/Notifications/Paragraph"
+msgid "%{ username } accepted your follow on library \"%{ library }\""
+msgstr "%{ username } schválil váš přístup ke knihovně \"%{ library }\""
+
+#: front/src/components/notifications/NotificationRow.vue:39
+msgctxt "Content/Notifications/Paragraph"
+msgid "%{ username } followed your library \"%{ library }\""
+msgstr "%{ username } sleduje vaši knihovnu \"%{ library }\""
+
+#: front/src/components/notifications/NotificationRow.vue:41
+msgctxt "Content/Notifications/Paragraph"
+msgid "%{ username } wants to follow your library \"%{ library }\""
+msgstr "%{ username } chce sledovat vaši knihovnu \"%{ library }\""
+
+#: front/src/components/auth/Profile.vue:46
+msgctxt "Head/Profile/Title"
+msgid "%{ username }'s profile"
+msgstr "Profil %{ username }"
+
+#: front/src/components/playlists/PlaylistModal.vue:21
+msgctxt "Popup/Playlist/Paragraph"
+msgid "<strong>%{ track }</strong> is already in <strong>%{ playlist }</strong>."
+msgstr "<strong>%{ track }</strong> se už nachází v <strong>%{ playlist }</strong>."
+
+#: front/src/components/audio/artist/Card.vue:11
+msgctxt "Content/Artist/Card"
+msgid "1 album"
+msgid_plural "%{ count } albums"
+msgstr[0] "1 album"
+msgstr[1] "%{ count } alba"
+msgstr[2] "%{ count } alb"
+
+#: front/src/components/favorites/List.vue:10
+msgctxt "Content/Favorites/Title"
+msgid "1 favorite"
+msgid_plural "%{ count } favorites"
+msgstr[0] "1 oblíbená"
+msgstr[1] "%{ count } oblíbené"
+msgstr[2] "%{ count } oblíbených"
+
+#: front/src/components/audio/artist/Card.vue:15
+msgctxt "Content/Artist/Card"
+msgid "1 track"
+msgid_plural "%{ count } tracks"
+msgstr[0] "%{ count } stopa"
+msgstr[1] "%{ count } stopy"
+msgstr[2] "%{ count } stop"
+
+#: front/src/views/Notifications.vue:21 src/views/Notifications.vue:55
+msgctxt "*/*/*"
+msgid "30 days"
+msgstr "30 dní"
+
+#: front/src/views/Notifications.vue:22 src/views/Notifications.vue:56
+msgctxt "*/*/*"
+msgid "60 days"
+msgstr "60 dní"
+
+#: front/src/views/Notifications.vue:23 src/views/Notifications.vue:57
+msgctxt "*/*/*"
+msgid "90 days"
+msgstr "90 dní"
+
+#: front/src/components/library/FileUpload.vue:264
+msgctxt "Content/Library/Help text"
+msgid "A network error occurred while uploading this file"
+msgstr "Během nahrávání tohoto souboru došlo k chybě sítě"
+
+#: front/src/components/library/EditForm.vue:161
+msgctxt "*/*/Placeholder"
+msgid "A short summary describing your changes."
+msgstr "Krátké shrnutí popisující provedené změny."
+
+#: front/src/components/About.vue:5
+msgctxt "Content/Home/Header"
+msgid "About %{ podName }"
+msgstr "O %{ instance }"
+
+#: front/src/components/Footer.vue:6
+msgctxt "Footer/About/Title"
+msgid "About %{instanceName}"
+msgstr "O %{instanceName}"
+
+#: front/src/components/Footer.vue:53 src/components/Home.vue:85
+msgctxt "Footer/*/Title/Short"
+msgid "About Funkwhale"
+msgstr "O Funkwhale"
+
+#: front/src/components/Footer.vue:10
+msgctxt "Footer/About/List item.Link"
+msgid "About page"
+msgstr "O aplikaci"
+
+#: front/src/components/Home.vue:19
+msgctxt "Content/Home/Header"
+msgid "About this Funkwhale pod"
+msgstr "O tomto Funkwhale podu"
+
+#: front/src/components/About.vue:21 src/components/About.vue:51
+msgctxt "Content/About/Header"
+msgid "About this pod"
+msgstr "O této instanci"
+
+#: front/src/views/content/libraries/Detail.vue:48
+msgctxt "Content/Library/Button.Label"
+msgid "Accept"
+msgstr "Akceptovat"
+
+#: front/src/views/content/libraries/Detail.vue:40
+msgctxt "Content/Library/Table/Short"
+msgid "Accepted"
+msgstr "Akceptováno"
+
+#: front/src/components/auth/SubsonicTokenForm.vue:117
+msgctxt "Content/Settings/Message"
+msgid "Access disabled"
+msgstr "Přístup odepřen"
+
+#: front/src/components/mixins/Translations.vue:85
+#: front/src/components/mixins/Translations.vue:86
+msgctxt "Content/OAuth Scopes/Paragraph"
+msgid "Access to audio files, libraries, artists, albums and tracks"
+msgstr "Přístup k hudebním souborům, knihovnám, interpretům, albům a stopám"
+
+#: front/src/components/mixins/Translations.vue:109
+#: front/src/components/mixins/Translations.vue:110
+msgctxt "Content/OAuth Scopes/Paragraph"
+msgid "Access to content filters"
+msgstr "Přístup k filtrům obsahu"
+
+#: front/src/components/mixins/Translations.vue:117
+#: front/src/components/mixins/Translations.vue:118
+msgctxt "Content/OAuth Scopes/Paragraph"
+msgid "Access to edits"
+msgstr "Přístup k úpravám"
+
+#: front/src/components/mixins/Translations.vue:81
+#: front/src/components/mixins/Translations.vue:82
+msgctxt "Content/OAuth Scopes/Paragraph"
+msgid "Access to email, username, and profile information"
+msgstr "Přístup k emailu, uživatelskému jménu a informacím o profilu"
+
+#: front/src/components/mixins/Translations.vue:89
+#: front/src/components/mixins/Translations.vue:90
+msgctxt "Content/OAuth Scopes/Paragraph"
+msgid "Access to favorites"
+msgstr "Přístup k oblíbeným"
+
+#: front/src/components/mixins/Translations.vue:97
+#: front/src/components/mixins/Translations.vue:98
+msgctxt "Content/OAuth Scopes/Paragraph"
+msgid "Access to follows"
+msgstr "Přístup ke sledování"
+
+#: front/src/components/mixins/Translations.vue:93
+#: front/src/components/mixins/Translations.vue:94
+msgctxt "Content/OAuth Scopes/Paragraph"
+msgid "Access to listening history"
+msgstr "Přístup k historii poslechu"
+
+#: front/src/components/mixins/Translations.vue:113
+#: front/src/components/mixins/Translations.vue:114
+msgctxt "Content/OAuth Scopes/Paragraph"
+msgid "Access to notifications"
+msgstr "Přístup k oznámením"
+
+#: front/src/components/mixins/Translations.vue:101
+#: front/src/components/mixins/Translations.vue:102
+msgctxt "Content/OAuth Scopes/Paragraph"
+msgid "Access to playlists"
+msgstr "Přístup k playlistům"
+
+#: front/src/components/mixins/Translations.vue:105
+#: front/src/components/mixins/Translations.vue:106
+msgctxt "Content/OAuth Scopes/Paragraph"
+msgid "Access to radios"
+msgstr "Přístup k rádiím"
+
+#: front/src/components/manage/library/UploadsTable.vue:67
+#: front/src/components/mixins/Translations.vue:55
+#: front/src/views/admin/library/UploadDetail.vue:175
+#: front/src/components/mixins/Translations.vue:56
+msgctxt "Content/*/*/Noun"
+msgid "Accessed date"
+msgstr "Datum přístupu"
+
+#: front/src/components/manage/library/LibrariesTable.vue:49
+#: front/src/components/manage/library/UploadsTable.vue:61
+#: front/src/components/manage/moderation/ReportCard.vue:156
+#: front/src/components/mixins/Report.vue:13
+#: front/src/views/admin/library/LibraryDetail.vue:113
+#: front/src/views/admin/library/UploadDetail.vue:111
+#: front/src/components/mixins/Report.vue:14
+msgctxt "*/*/*/Noun"
+msgid "Account"
+msgstr "Účet"
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:107
+msgctxt "Content/Moderation/Title"
+msgid "Account data"
+msgstr "Data účtu"
+
+#: front/src/components/auth/Settings.vue:5
+msgctxt "Content/Settings/Title"
+msgid "Account settings"
+msgstr "Nastavení účtu"
+
+#: front/src/components/auth/Settings.vue:544
+msgctxt "Head/Settings/Title"
+msgid "Account Settings"
+msgstr "Nastavení účtu"
+
+#: front/src/components/manage/users/UsersTable.vue:39
+msgctxt "Content/Admin/Table.Label/Short, Noun"
+msgid "Account status"
+msgstr "Stav účtu"
+
+#: front/src/views/auth/PasswordReset.vue:14
+msgctxt "Content/Signup/Input.Label"
+msgid "Account's email"
+msgstr "Emailová adresa účtu"
+
+#: front/src/views/admin/moderation/AccountsList.vue:3
+#: front/src/views/admin/moderation/AccountsList.vue:24
+#: front/src/views/admin/moderation/Base.vue:11
+msgctxt "*/Moderation/Title"
+msgid "Accounts"
+msgstr "Účty"
+
+#: front/src/views/content/libraries/Detail.vue:29
+msgctxt "Content/Library/Table.Label"
+msgid "Action"
+msgstr "Akce"
+
+#: front/src/components/common/ActionTable.vue:101
+msgctxt "Content/*/Paragraph"
+msgid "Action %{ action } was launched successfully on %{ count } element"
+msgid_plural "Action %{ action } was launched successfully on %{ count } elements"
+msgstr[0] "Akce %{ action } byla úspěšně zahájena pro %{ count } položku"
+msgstr[1] "Akce %{ action } byla úspěšně zahájena pro %{ count } položky"
+msgstr[2] "Akce %{ action } byla úspěšně zahájena pro %{ count } položek"
+
+#: front/src/components/common/ActionTable.vue:22
+#: front/src/components/library/radios/Builder.vue:65
+#: front/src/components/manage/moderation/ReportCard.vue:210
+msgctxt "Content/*/*/Noun"
+msgid "Actions"
+msgstr "Akce"
+
+#: front/src/components/manage/users/UsersTable.vue:54
+msgctxt "Content/Admin/Table"
+msgid "Active"
+msgstr "Aktivní"
+
+#: front/src/views/admin/library/AlbumDetail.vue:140
+#: front/src/views/admin/library/ArtistDetail.vue:128
+#: front/src/views/admin/library/LibraryDetail.vue:147
+#: front/src/views/admin/library/TagDetail.vue:83
+#: front/src/views/admin/library/TrackDetail.vue:192
+#: front/src/views/admin/library/UploadDetail.vue:160
+#: front/src/views/admin/moderation/AccountsDetail.vue:221
+#: front/src/views/admin/moderation/DomainsDetail.vue:173
+msgctxt "Content/Moderation/Title"
+msgid "Activity"
+msgstr "Aktivita"
+
+#: front/src/components/mixins/Translations.vue:7
+#: front/src/components/mixins/Translations.vue:8
+msgctxt "Content/Settings/Dropdown.Label/Noun"
+msgid "Activity visibility"
+msgstr "Viditelnost aktivity"
+
+#: front/src/views/admin/moderation/DomainsList.vue:22
+msgctxt "Content/Moderation/Button/Verb"
+msgid "Add"
+msgstr "Přidat"
+
+#: front/src/views/admin/moderation/DomainsList.vue:13
+msgctxt "Content/Moderation/Form.Label/Verb"
+msgid "Add a domain"
+msgstr "Přidat doménu"
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:79
+msgctxt "Content/Moderation/Button/Verb"
+msgid "Add a moderation policy"
+msgstr "Přidat zásadu moderování"
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:4
+msgctxt "Content/Moderation/Card.Button.Label/Verb"
+msgid "Add a new moderation rule"
+msgstr "Přidat nové pravidlo moderování"
+
+#: front/src/views/content/Home.vue:35
+msgctxt "Content/Library/Title/Verb"
+msgid "Add and manage content"
+msgstr "Přidat a spravovat obsah"
+
+#: front/src/components/playlists/Editor.vue:28
+#: front/src/components/playlists/PlaylistModal.vue:31
+msgctxt "*/Playlist/Button.Label/Verb"
+msgid "Add anyways"
+msgstr "Přesto přidat"
+
+#: front/src/components/Sidebar.vue:75 src/views/content/Base.vue:18
+msgctxt "*/Library/*/Verb"
+msgid "Add content"
+msgstr "Přidat obsah"
+
+#: front/src/components/library/radios/Builder.vue:51
+msgctxt "Content/Radio/Button.Label/Verb"
+msgid "Add filter"
+msgstr "Přidat filtr"
+
+#: front/src/components/library/radios/Builder.vue:41
+msgctxt "Content/Radio/Paragraph"
+msgid "Add filters to customize your radio"
+msgstr "Přidat filtry pro úpravu rádia"
+
+#: front/src/components/manage/moderation/NoteForm.vue:12
+msgctxt "Content/Moderation/Button.Label/Verb"
+msgid "Add note"
+msgstr "Přidat obsah"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:191
+#: front/src/views/admin/moderation/DomainsDetail.vue:46
+#: front/src/views/admin/moderation/DomainsList.vue:18
+msgctxt "Content/Moderation/Action/Verb"
+msgid "Add to allow-list"
+msgstr "Přidat do seznamu povolených"
+
+#: front/src/components/audio/PlayButton.vue:91
+msgctxt "*/Queue/Dropdown/Button/Title"
+msgid "Add to current queue"
+msgstr "Přidat do současné fronty"
+
+#: front/src/components/favorites/TrackFavoriteIcon.vue:4
+#: front/src/components/favorites/TrackFavoriteIcon.vue:28
+msgctxt "Content/Track/*/Verb"
+msgid "Add to favorites"
+msgstr "Přidat do oblíbených"
+
+#: front/src/components/playlists/TrackPlaylistIcon.vue:6
+#: front/src/components/playlists/TrackPlaylistIcon.vue:34
+msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
+msgid "Add to playlist…"
+msgstr "Přidat do playlistu…"
+
+#: front/src/components/audio/PlayButton.vue:15
+msgctxt "*/Queue/Dropdown/Button/Label/Short"
+msgid "Add to queue"
+msgstr "Přidat do fronty"
+
+#: front/src/components/playlists/PlaylistModal.vue:142
+msgctxt "Popup/Playlist/Table.Button.Tooltip/Verb"
+msgid "Add to this playlist"
+msgstr "Přidat do tohoto playlistu"
+
+#: front/src/components/playlists/PlaylistModal.vue:68
+msgctxt "Popup/Playlist/Table.Button.Label/Verb"
+msgid "Add track"
+msgstr "Přidat stopu"
+
+#: front/src/components/manage/users/UsersTable.vue:70
+msgctxt "Content/Admin/Table.User role"
+msgid "Admin"
+msgstr "Administrátor"
+
+#: front/src/components/Sidebar.vue:79
+msgctxt "Sidebar/Admin/Title/Noun"
+msgid "Administration"
+msgstr "Administrace"
+
+#: front/src/components/audio/SearchBar.vue:33
+#: src/components/audio/track/Table.vue:9
+#: front/src/components/library/AlbumBase.vue:170
+#: front/src/components/library/ArtistBase.vue:212
+#: front/src/components/manage/library/TracksTable.vue:40
+#: front/src/components/metadata/Search.vue:134
+#: src/components/mixins/Report.vue:41
+#: front/src/views/admin/library/TrackDetail.vue:113
+#: front/src/views/content/libraries/FilesTable.vue:57
+#: front/src/components/mixins/Report.vue:42
+msgctxt "*/*/*"
+msgid "Album"
+msgstr "Album"
+
+#: front/src/views/admin/library/TrackDetail.vue:134
+msgctxt "*/*/*/Noun"
+msgid "Album artist"
+msgstr "Interpret alba"
+
+#: front/src/views/admin/library/AlbumDetail.vue:98
+msgctxt "Content/Moderation/Title"
+msgid "Album data"
+msgstr "Data alba"
+
+#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/mixins/Translations.vue:62
+msgctxt "Content/*/Dropdown/Noun"
+msgid "Album name"
+msgstr "Název alba"
+
+#: front/src/components/audio/Search.vue:19
+#: src/components/library/Albums.vue:129
+#: front/src/components/library/Library.vue:7
+#: src/components/library/TagDetail.vue:28
+#: front/src/components/manage/library/ArtistsTable.vue:41
+#: front/src/components/manage/library/TagsTable.vue:43
+#: front/src/views/admin/library/AlbumsList.vue:24
+#: front/src/views/admin/library/ArtistDetail.vue:256
+#: front/src/views/admin/library/Base.vue:11
+#: front/src/views/admin/library/LibraryDetail.vue:238
+#: front/src/views/admin/library/TagDetail.vue:133
+#: front/src/views/admin/moderation/AccountsDetail.vue:366
+#: front/src/views/admin/moderation/DomainsDetail.vue:301
+msgctxt "*/*/*"
+msgid "Albums"
+msgstr "Alba"
+
+#: front/src/components/library/ArtistDetail.vue:21
+msgctxt "Content/Artist/Title"
+msgid "Albums by this artist"
+msgstr "Alba tohoto interpreta"
+
+#: front/src/components/manage/library/EditsCardList.vue:15
+#: front/src/components/manage/library/LibrariesTable.vue:13
+#: front/src/components/manage/library/UploadsTable.vue:13
+#: front/src/components/manage/library/UploadsTable.vue:22
+#: front/src/components/manage/moderation/DomainsTable.vue:11
+#: front/src/components/manage/users/InvitationsTable.vue:19
+#: front/src/components/moderation/ReportCategoryDropdown.vue:32
+#: front/src/views/admin/moderation/ReportsList.vue:17
+#: front/src/views/content/libraries/FilesTable.vue:13
+msgctxt "Content/*/Dropdown"
+msgid "All"
+msgstr "VÅ¡e"
+
+#: front/src/components/common/ActionTable.vue:59
+msgctxt "Content/*/Paragraph"
+msgid "All %{ count } element selected"
+msgid_plural "All %{ count } elements selected"
+msgstr[0] "%{ count } položka vybrána"
+msgstr[1] "Všechny %{ count } položky vybrány"
+msgstr[2] "Všech %{ count } položek vybráno"
+
+#: front/src/components/auth/Authorize.vue:107
+msgctxt "Head/Authorize/Title"
+msgid "Allow application"
+msgstr "Povolit aplikaci"
+
+#: front/src/components/About.vue:136
+msgctxt "*/*/*"
+msgid "Allow-list"
+msgstr "Seznam povolených"
+
+#: front/src/components/About.vue:149
+msgctxt "*/*/*"
+msgid "Allowed domains"
+msgstr "Povolené domény"
+
+#: front/src/components/library/ImportStatusModal.vue:17
+msgctxt "Popup/Import/Message"
+msgid "An error occurred during upload processing. You will find more information below."
+msgstr "Došlo k chybě při zpracování nahrávaných dat. Podrobnosti naleznete níže."
+
+#: front/src/components/playlists/Editor.vue:13
+msgctxt "Content/Playlist/Error message.Title"
+msgid "An error occurred while saving your changes"
+msgstr "Došlo k chybě při ukládání změn"
+
+#: front/src/components/federation/FetchButton.vue:21
+msgctxt "Popup/*/Message.Content"
+msgid "An error occurred while trying to refresh data:"
+msgstr "Došlo k chybě při pokusu o aktualizaci dat:"
+
+#: front/src/components/federation/FetchButton.vue:41
+msgctxt "*/*/Error"
+msgid "An HTTP error occurred while contacting the remote server"
+msgstr "Došlo k chybě HTTP při pokusu kontaktovat vzdálený server"
+
+#: front/src/components/library/ImportStatusModal.vue:145
+msgctxt "Popup/Import/Error.Label"
+msgid "An unknown error occurred"
+msgstr "Došlo k neznámé chybě"
+
+#: front/src/components/About.vue:123
+msgctxt "*/*/*"
+msgid "Anonymous access"
+msgstr "Anonymní přístup"
+
+#: front/src/components/moderation/ReportModal.vue:54
+msgctxt "Popup/Moderation/Error message"
+msgid "Anonymous reports are disabled, please sign-in to submit a report."
+msgstr "Anonymní hlášení jsou vypnuta, pro odeslání hlášení se prosím přihlaste."
+
+#: front/src/components/auth/Settings.vue:175
+#: src/components/auth/Settings.vue:225
+msgctxt "*/*/*/Noun"
+msgid "Application"
+msgstr "Aplikace"
+
+#: front/src/components/auth/ApplicationEdit.vue:12
+msgctxt "Content/Applications/Title"
+msgid "Application details"
+msgstr "Podrobnosti aplikace"
+
+#: front/src/components/auth/ApplicationEdit.vue:21
+msgctxt "Content/Applications/Label"
+msgid "Application ID"
+msgstr "ID aplikace"
+
+#: front/src/components/auth/ApplicationEdit.vue:16
+msgctxt "Content/Application/Paragraph/"
+msgid "Application ID and secret are really sensitive values and must be treated like passwords. Do not share those with anyone else."
+msgstr "ID aplikace a tajný klíč jsou citlivé údaje a musí se s nimi zacházet jako s hesly. Nesdělujte je dalším osobám."
+
+#: front/src/components/auth/ApplicationEdit.vue:25
+msgctxt "Content/Applications/Label"
+msgid "Application secret"
+msgstr "Tajný klíč aplikace"
+
+#: front/src/components/library/EditCard.vue:81
+#: front/src/components/notifications/NotificationRow.vue:66
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Approve"
+msgstr "Schválit"
+
+#: front/src/components/library/EditCard.vue:25
+#: front/src/components/manage/library/EditsCardList.vue:21
+msgctxt "Content/*/*/Short"
+msgid "Approved"
+msgstr "Schváleno"
+
+#: front/src/components/library/EditCard.vue:21
+msgctxt "Content/Library/Card/Short"
+msgid "Approved and applied"
+msgstr "Schváleno a aplikováno"
+
+#: front/src/components/auth/Logout.vue:5
+msgctxt "Content/Login/Title"
+msgid "Are you sure you want to log out?"
+msgstr "Opravdu se chcete odhlásit?"
+
+#: front/src/components/audio/SearchBar.vue:32
+#: src/components/audio/track/Table.vue:8
+#: front/src/components/manage/library/AlbumsTable.vue:40
+#: front/src/components/manage/library/TracksTable.vue:41
+#: front/src/components/metadata/Search.vue:130
+#: src/components/mixins/Report.vue:55
+#: front/src/views/admin/library/AlbumDetail.vue:114
+#: front/src/views/admin/library/TrackDetail.vue:124
+#: front/src/views/content/libraries/FilesTable.vue:56 src/entities.js:12
+#: front/src/components/mixins/Report.vue:56
+msgctxt "*/*/*/Noun"
+msgid "Artist"
+msgstr "Interpret"
+
+#: front/src/views/admin/library/ArtistDetail.vue:96
+msgctxt "Content/Moderation/Title"
+msgid "Artist data"
+msgstr "Data interpreta"
+
+#: front/src/components/mixins/Translations.vue:62
+#: front/src/components/mixins/Translations.vue:63
+msgctxt "Content/*/Dropdown/Noun"
+msgid "Artist name"
+msgstr "Jméno interpreta"
+
+#: front/src/components/audio/Search.vue:65
+msgctxt "*/Search/Input.Placeholder"
+msgid "Artist, album, track…"
+msgstr "Interpret, album, stopa…"
+
+#: front/src/components/audio/Search.vue:10
+#: src/components/library/Artists.vue:117
+#: front/src/components/library/Library.vue:10
+#: front/src/components/library/TagDetail.vue:19
+#: front/src/components/manage/library/TagsTable.vue:42
+#: front/src/views/admin/library/ArtistsList.vue:24
+#: front/src/views/admin/library/Base.vue:8
+#: front/src/views/admin/library/LibraryDetail.vue:228
+#: front/src/views/admin/library/TagDetail.vue:123
+#: front/src/views/admin/moderation/AccountsDetail.vue:358
+#: front/src/views/admin/moderation/DomainsDetail.vue:291
+msgctxt "*/*/*/Noun"
+msgid "Artists"
+msgstr "Interpreti"
+
+#: front/src/components/favorites/List.vue:34
+#: src/components/library/Albums.vue:29
+#: front/src/components/library/Artists.vue:29
+#: src/components/library/Radios.vue:44
+#: front/src/components/manage/library/AlbumsTable.vue:21
+#: front/src/components/manage/library/ArtistsTable.vue:21
+#: front/src/components/manage/library/EditsCardList.vue:39
+#: front/src/components/manage/library/LibrariesTable.vue:30
+#: front/src/components/manage/library/TagsTable.vue:21
+#: front/src/components/manage/library/TracksTable.vue:21
+#: front/src/components/manage/library/UploadsTable.vue:40
+#: front/src/components/manage/moderation/AccountsTable.vue:21
+#: front/src/components/manage/moderation/DomainsTable.vue:27
+#: front/src/components/manage/users/UsersTable.vue:19
+#: front/src/views/admin/moderation/ReportsList.vue:44
+#: front/src/views/content/libraries/FilesTable.vue:31
+#: front/src/views/playlists/List.vue:27
+msgctxt "Content/Search/Dropdown"
+msgid "Ascending"
+msgstr "VzestupnÄ›"
+
+#: front/src/views/auth/PasswordReset.vue:28
+msgctxt "Content/Signup/Button.Label/Verb"
+msgid "Ask for a password reset"
+msgstr "Požádat o resetování hesla"
+
+#: front/src/components/manage/moderation/ReportCard.vue:72
+msgctxt "Content/Moderation/*"
+msgid "Assigned to"
+msgstr "Přiřazeno k"
+
+#: front/src/views/admin/library/AlbumDetail.vue:214
+#: front/src/views/admin/library/ArtistDetail.vue:202
+#: front/src/views/admin/library/LibraryDetail.vue:195
+#: front/src/views/admin/library/TagDetail.vue:113
+#: front/src/views/admin/library/TrackDetail.vue:266
+#: front/src/views/admin/library/UploadDetail.vue:191
+#: front/src/views/admin/moderation/AccountsDetail.vue:285
+#: front/src/views/admin/moderation/DomainsDetail.vue:239
+msgctxt "Content/Moderation/Title"
+msgid "Audio content"
+msgstr "Obsah audia"
+
+#: front/src/components/ShortcutsModal.vue:92
+msgctxt "Popup/Keyboard shortcuts/Title"
+msgid "Audio player shortcuts"
+msgstr "Klávesové zkratky přehrávače"
+
+#: front/src/components/auth/Authorize.vue:47
+msgctxt "Content/Signup/Button.Label/Verb"
+msgid "Authorize %{ app }"
+msgstr "Autorizovat %{ app }"
+
+#: front/src/components/auth/Authorize.vue:4
+msgctxt "Content/Auth/Title/Verb"
+msgid "Authorize third-party app"
+msgstr "Autorizovat aplikaci třetí strany"
+
+#: front/src/components/auth/Settings.vue:162
+msgctxt "Content/Settings/Title/Noun"
+msgid "Authorized apps"
+msgstr "Autorizované aplikace"
+
+#: front/src/components/playlists/PlaylistModal.vue:40
+msgctxt "Popup/Playlist/Title"
+msgid "Available playlists"
+msgstr "Dostupné playlisty"
+
+#: front/src/components/auth/Settings.vue:34
+msgctxt "Content/Settings/Title"
+msgid "Avatar"
+msgstr "Avatar"
+
+#: front/src/views/auth/PasswordReset.vue:25
+#: front/src/views/auth/PasswordResetConfirm.vue:18
+msgctxt "Content/Signup/Link"
+msgid "Back to login"
+msgstr "Zpět na přihlášení"
+
+#: front/src/components/auth/ApplicationEdit.vue:9
+#: front/src/components/auth/ApplicationNew.vue:5
+msgctxt "Content/Applications/Link"
+msgid "Back to settings"
+msgstr "Zpět k nastavení"
+
+#: front/src/components/library/TrackDetail.vue:48
+#: front/src/components/mixins/Translations.vue:67
+#: front/src/views/admin/library/UploadDetail.vue:227
+#: front/src/components/mixins/Translations.vue:68
+msgctxt "Content/Track/*/Noun"
+msgid "Bitrate"
+msgstr "Datový tok"
+
+#: front/src/components/manage/moderation/InstancePolicyCard.vue:19
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:34
+msgctxt "Content/Moderation/*/Verb"
+msgid "Block everything"
+msgstr "Blokovat vše"
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:112
+msgctxt "Content/Moderation/Help text"
+msgid "Block everything from this account or domain. This will prevent any interaction with the entity, and purge related content (uploads, libraries, follows, etc.)"
+msgstr "Blokovat vše z tohoto účtu nebo domény. Zabrání veškeré interakci a vymaže související obsah (nahraná data, knihovny, sledování, atd.)"
+
+#: front/src/components/Sidebar.vue:18 src/components/library/Library.vue:4
+msgctxt "*/Library/*/Verb"
+msgid "Browse"
+msgstr "Procházet"
+
+#: front/src/components/Sidebar.vue:65
+msgctxt "Sidebar/Library/List item.Link/Verb"
+msgid "Browse library"
+msgstr "Procházet knihovnu"
+
+#: front/src/components/Home.vue:132
+msgctxt "Content/Home/Link"
+msgid "Browse public content"
+msgstr "Procházet veřejně dostupný obsah"
+
+#: front/src/components/library/Albums.vue:4
+msgctxt "Content/Album/Title"
+msgid "Browsing albums"
+msgstr "Procházení alb"
+
+#: front/src/components/library/Artists.vue:4
+msgctxt "Content/Artist/Title"
+msgid "Browsing artists"
+msgstr "Procházení interpretů"
+
+#: front/src/views/playlists/List.vue:3
+msgctxt "Content/Playlist/Title"
+msgid "Browsing playlists"
+msgstr "Procházení playlistů"
+
+#: front/src/components/library/Radios.vue:4
+msgctxt "Content/Radio/Title"
+msgid "Browsing radios"
+msgstr "Procházení rádií"
+
+#: front/src/components/library/radios/Builder.vue:5
+msgctxt "Content/Radio/Title"
+msgid "Builder"
+msgstr "Výroba rádia"
+
+#: front/src/components/audio/album/Card.vue:13
+msgctxt "Content/Album/Card"
+msgid "By %{ artist }"
+msgstr "Od %{ artist }"
+
+#: front/src/views/content/remote/Card.vue:125
+msgctxt "Popup/Library/Paragraph"
+msgid "By unfollowing this library, you loose access to its content."
+msgstr "Ukončením sledování této knihovny ztratíte přístup k jejímu obsahu."
+
+#: front/src/views/admin/library/AlbumDetail.vue:230
+#: front/src/views/admin/library/ArtistDetail.vue:218
+#: front/src/views/admin/library/LibraryDetail.vue:211
+#: front/src/views/admin/library/TrackDetail.vue:282
+#: front/src/views/admin/library/UploadDetail.vue:208
+#: front/src/views/admin/moderation/AccountsDetail.vue:301
+#: front/src/views/admin/moderation/DomainsDetail.vue:254
+msgctxt "Content/Moderation/Table.Label/Noun"
+msgid "Cached size"
+msgstr "Velikost v cache"
+
+#: front/src/components/SetInstanceModal.vue:37
+#: front/src/components/common/DangerousButton.vue:17
+#: front/src/components/library/AlbumBase.vue:37
+#: front/src/components/library/ArtistBase.vue:48
+#: front/src/components/library/EditForm.vue:107
+#: front/src/components/library/TrackBase.vue:53
+#: front/src/components/library/radios/Filter.vue:53
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:54
+#: front/src/components/moderation/FilterModal.vue:39
+#: front/src/components/moderation/ReportModal.vue:59
+#: front/src/components/playlists/PlaylistModal.vue:26
+#: front/src/components/playlists/PlaylistModal.vue:77
+#: front/src/views/playlists/Detail.vue:62
+msgctxt "*/*/Button.Label/Verb"
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: front/src/views/content/remote/Card.vue:110
+msgctxt "Content/Library/Card.Paragraph"
+msgid "Cancel follow request"
+msgstr "Zrušit požadavek o sledování"
+
+#: front/src/components/library/radios/Builder.vue:64
+msgctxt "Content/Radio/Table.Label/Noun (Value is a number of Tracks)"
+msgid "Candidates"
+msgstr "Kandidáti"
+
+#: front/src/components/library/FileUpload.vue:261
+msgctxt "Content/Library/Help text"
+msgid "Cannot upload this file, ensure it is not too big"
+msgstr "Nelze nahrát tento soubor, zkontrolujte zda není příliš velký"
+
+#: front/src/components/manage/moderation/ReportCard.vue:30
+#: front/src/components/mixins/Translations.vue:42
+#: front/src/components/moderation/ReportCategoryDropdown.vue:2
+#: front/src/components/mixins/Translations.vue:43
+msgctxt "*/*/*"
+msgid "Category"
+msgstr "Kategorie"
+
+#: front/src/components/Footer.vue:21
+msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
+msgid "Change language"
+msgstr "Změnit jazyk"
+
+#: front/src/components/auth/Settings.vue:68
+msgctxt "Content/Settings/Title/Verb"
+msgid "Change my password"
+msgstr "Změnit mé heslo"
+
+#: front/src/components/auth/Settings.vue:95
+msgctxt "Content/Settings/Button.Label"
+msgid "Change password"
+msgstr "Změnit heslo"
+
+#: front/src/components/Footer.vue:37
+msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
+msgid "Change theme"
+msgstr "Změnit schéma"
+
+#: front/src/views/auth/PasswordResetConfirm.vue:62
+msgctxt "*/Signup/Title"
+msgid "Change your password"
+msgstr "Změňte své heslo"
+
+#: front/src/components/auth/Settings.vue:96
+msgctxt "Popup/Settings/Title"
+msgid "Change your password?"
+msgstr "Změnit vaše heslo?"
+
+#: front/src/components/playlists/Editor.vue:31
+msgctxt "Content/Playlist/Paragraph"
+msgid "Changes synced with server"
+msgstr "Změny synchronizovány se serverem"
+
+#: front/src/components/auth/Settings.vue:71
+msgctxt "Content/Settings/Paragraph'"
+msgid "Changing your password will also change your Subsonic API password if you have requested one."
+msgstr "Změna vašeho hesla vyvolá také změnu hesla pro Subsonic API, pokud je používáno."
+
+#: front/src/components/auth/Settings.vue:98
+msgctxt "Popup/Settings/Paragraph"
+msgid "Changing your password will have the following consequences:"
+msgstr "Změna vašeho hesla bude mít následující důsledky:"
+
+#: front/src/components/Footer.vue:48
+msgctxt "Footer/*/List item.Link"
+msgid "Chat room"
+msgstr "Diskuzní místnost"
+
+#: front/src/components/auth/ApplicationForm.vue:24
+msgctxt "Content/Applications/Paragraph/"
+msgid "Checking the parent \"Read\" or \"Write\" scopes implies access to all the corresponding children scopes."
+msgstr "Povolení čtení nebo zápisu na předkovi implikuje totéž pro všechny jeho potomky."
+
+#: front/src/components/SetInstanceModal.vue:2
+msgctxt "Popup/Instance/Title"
+msgid "Choose your instance"
+msgstr "Zvolte svou instanci"
+
+#: front/src/components/library/EditForm.vue:75
+#: front/src/components/library/EditForm.vue:88
+#: front/src/components/manage/users/InvitationForm.vue:37
+msgctxt "Content/Library/Button.Label"
+msgid "Clear"
+msgstr "Vyčistit"
+
+#: front/src/components/playlists/Editor.vue:50
+#: front/src/components/playlists/Editor.vue:55
+msgctxt "*/Playlist/Button.Label/Verb"
+msgid "Clear playlist"
+msgstr "Vyčistit playlist"
+
+#: front/src/components/ShortcutsModal.vue:144
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Clear queue"
+msgstr "Vymazat frontu"
+
+#: front/src/components/audio/Player.vue:668
+msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
+msgid "Clear your queue"
+msgstr "Vyčistit frontu"
+
+#: front/src/components/mixins/Translations.vue:21
+#: front/src/components/mixins/Translations.vue:22
+msgctxt "Content/Library/Link.Title"
+msgid "Click to display more information about the import process for this upload"
+msgstr "Klikněte pro zobrazení více informací o procesu importování"
+
+#: front/src/components/library/FileUpload.vue:82
+msgctxt "Content/Library/Paragraph/Call to action"
+msgid "Click to select files to upload or drag and drop files or directories"
+msgstr "Klikněte pro výběr souborů nebo myší přetáhněte soubory či složky k nahrání"
+
+#: front/src/components/ShortcutsModal.vue:38
+#: front/src/components/federation/FetchButton.vue:85
+#: front/src/components/library/ImportStatusModal.vue:79
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:34
+msgctxt "*/*/Button.Label/Verb"
+msgid "Close"
+msgstr "Zavřít"
+
+#: front/src/components/federation/FetchButton.vue:88
+msgctxt "*/*/Button.Label/Verb"
+msgid "Close and reload page"
+msgstr "Zavřít a obnovit stránku"
+
+#: front/src/components/About.vue:94
+msgctxt "*/*/*/State of registrations"
+msgid "Closed"
+msgstr "Uzavřeno"
+
+#: front/src/components/manage/users/InvitationForm.vue:26
+#: front/src/components/manage/users/InvitationsTable.vue:42
+msgctxt "Content/Admin/Table.Label/Noun"
+msgid "Code"
+msgstr "Kód"
+
+#: front/src/components/audio/album/Card.vue:41
+#: front/src/components/common/CollapseLink.vue:3
+msgctxt "*/*/Button,Label"
+msgid "Collapse"
+msgstr "Sbalit"
+
+#: front/src/components/library/radios/Builder.vue:63
+msgctxt "Content/Radio/Table.Label/Verb (Value is a List of Parameters)"
+msgid "Config"
+msgstr "Nastavení"
+
+#: front/src/components/common/DangerousButton.vue:21
+msgctxt "Modal/*/Button.Label/Short, Verb"
+msgid "Confirm"
+msgstr "Potvrdit"
+
+#: front/src/views/auth/EmailConfirm.vue:51
+msgctxt "Head/Signup/Title"
+msgid "Confirm your e-mail address"
+msgstr "Potvrďte svou emailovou adresu"
+
+#: front/src/views/auth/EmailConfirm.vue:13
+msgctxt "Content/Signup/Form.Label"
+msgid "Confirmation code"
+msgstr "Potvrzovací kód"
+
+#: front/src/components/About.vue:67 src/components/Home.vue:65
+msgctxt "Content/Home/Header/Name"
+msgid "Contact"
+msgstr "Kontakt"
+
+#: front/src/components/moderation/FilterModal.vue:90
+msgctxt "*/Moderation/Message"
+msgid "Content filter successfully added"
+msgstr "Filtr obsahu úspěšně přidán"
+
+#: front/src/components/auth/Settings.vue:116
+#: front/src/components/mixins/Translations.vue:108
+#: front/src/components/mixins/Translations.vue:109
+msgctxt "Content/Settings/Title/Noun"
+msgid "Content filters"
+msgstr "Filtry obsahu"
+
+#: front/src/components/auth/Settings.vue:119
+msgctxt "Content/Settings/Paragraph"
+msgid "Content filters help you hide content you don't want to see on the service."
+msgstr "Filtry obsahu vám pomáhají skrýt obsah který ve službě nechcete vidět."
+
+#: front/src/components/common/ActionTable.vue:8
+msgctxt "Content/*/Button.Help text.Paragraph"
+msgid "Content have been updated, click refresh to see up-to-date content"
+msgstr "Obsah byl aktualizován, klikněte na obnovit pro zobrazení aktuálního obsahu"
+
+#: front/src/components/About.vue:46
+msgctxt "Content/About/Header"
+msgid "Contents"
+msgstr "Obsah"
+
+#: front/src/components/Footer.vue:56
+msgctxt "Footer/*/List item.Link"
+msgid "Contribute"
+msgstr "Přispějte"
+
+#: front/src/components/audio/EmbedWizard.vue:29
+#: front/src/components/common/CopyInput.vue:8
+#: front/src/components/forms/PasswordInput.vue:43
+msgctxt "*/*/Button.Label/Short, Verb"
+msgid "Copy"
+msgstr "Kopírovat"
+
+#: front/src/components/playlists/Editor.vue:194
+msgctxt "Content/Playlist/Button.Tooltip/Verb"
+msgid "Copy queued tracks to playlist"
+msgstr "Kopírovat stopy ve frontě do playlistu"
+
+#: front/src/components/auth/Authorize.vue:55
+msgctxt "Content/Auth/Paragraph"
+msgid "Copy-paste the following code in the application:"
+msgstr "Zkopírujte a vložte následující kód do aplikace:"
+
+#: front/src/components/audio/EmbedWizard.vue:31
+msgctxt "Popup/Embed/Paragraph"
+msgid "Copy/paste this code in your website HTML"
+msgstr "Zkopírujte a vložte tento kód do HTML kódu webové stránky"
+
+#: front/src/components/library/TrackDetail.vue:10
+#: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:77
+msgctxt "Content/Track/*/Noun"
+msgid "Copyright"
+msgstr "Copyright"
+
+#: front/src/views/auth/EmailConfirm.vue:7
+msgctxt "Content/Signup/Paragraph"
+msgid "Could not confirm your e-mail address"
+msgstr "Nepovedlo se ověřit vaší emailovou adresu"
+
+#: front/src/views/content/remote/ScanForm.vue:3
+msgctxt "Content/Library/Error message.Title"
+msgid "Could not fetch remote library"
+msgstr "Nepodařilo se získat vzdálenou knihovnu"
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:58
+msgctxt "Content/Moderation/Card.Button.Label/Verb"
+msgid "Create"
+msgstr "Vytvořit"
+
+#: front/src/views/auth/Signup.vue:4
+msgctxt "Content/Signup/Title"
+msgid "Create a funkwhale account"
+msgstr "Vytvořit účet Funkwhale"
+
+#: front/src/components/auth/ApplicationNew.vue:8
+#: front/src/components/auth/ApplicationNew.vue:41
+#: front/src/components/auth/Settings.vue:220
+msgctxt "Content/Settings/Button.Label"
+msgid "Create a new application"
+msgstr "Vytvořit novou aplikaci"
+
+#: front/src/views/content/libraries/Home.vue:14
+msgctxt "Content/Library/Link/Verb"
+msgid "Create a new library"
+msgstr "Vytvořit novou knihovnu"
+
+#: front/src/components/playlists/Form.vue:2
+msgctxt "Popup/Playlist/Title/Verb"
+msgid "Create a new playlist"
+msgstr "Vytvořit nový playlist"
+
+#: front/src/components/Sidebar.vue:57 src/components/auth/LoginForm.vue:15
+msgctxt "*/Signup/Link/Verb"
+msgid "Create an account"
+msgstr "Vytvořit účet"
+
+#: front/src/components/auth/ApplicationForm.vue:65
+msgctxt "Content/Applications/Button.Label/Verb"
+msgid "Create application"
+msgstr "Vytvořit aplikaci"
+
+#: front/src/views/content/libraries/Form.vue:26
+msgctxt "Content/Library/Button.Label/Verb"
+msgid "Create library"
+msgstr "Vytvořit knihovnu"
+
+#: front/src/components/auth/SignupForm.vue:49
+msgctxt "Content/Signup/Button.Label"
+msgid "Create my account"
+msgstr "Vytvořit můj účet"
+
+#: front/src/components/auth/Settings.vue:264
+msgctxt "Content/Applications/Paragraph"
+msgid "Create one to integrate Funkwhale with third-party applications."
+msgstr "Vytvořte nějakou pro spojení Funkwhale s aplikacemi třetí strany."
+
+#: front/src/components/playlists/Form.vue:34
+msgctxt "Content/Playlist/Button.Label/Verb"
+msgid "Create playlist"
+msgstr "Vytvořit playlist"
+
+#: front/src/components/library/Radios.vue:23
+msgctxt "Content/Radio/Button.Label/Verb"
+msgid "Create your own radio"
+msgstr "Vytvořit mé vlastní rádio"
+
+#: front/src/components/auth/Settings.vue:134
+#: src/components/auth/Settings.vue:227
+#: front/src/components/manage/library/AlbumsTable.vue:44
+#: front/src/components/manage/library/ArtistsTable.vue:43
+#: front/src/components/manage/library/LibrariesTable.vue:54
+#: front/src/components/manage/library/TagsTable.vue:45
+#: front/src/components/manage/library/TracksTable.vue:44
+#: front/src/components/manage/library/UploadsTable.vue:66
+#: front/src/components/manage/moderation/ReportCard.vue:43
+#: front/src/components/manage/users/InvitationsTable.vue:40
+#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/mixins/Translations.vue:54
+msgctxt "Content/*/*/Noun"
+msgid "Creation date"
+msgstr "Datum vytvoření"
+
+#: front/src/components/auth/Settings.vue:54
+msgctxt "Content/Settings/Title/Noun"
+msgid "Current avatar"
+msgstr "Současný avatar"
+
+#: front/src/components/admin/SettingsGroup.vue:67
+msgctxt "Content/Settings/Title/Noun"
+msgid "Current image"
+msgstr "Aktuální obrázek"
+
+#: front/src/views/content/libraries/DetailArea.vue:4
+msgctxt "Content/Library/Title"
+msgid "Current library"
+msgstr "Aktuální knihovna"
+
+#: front/src/components/playlists/PlaylistModal.vue:8
+msgctxt "Popup/Playlist/Title"
+msgid "Current track"
+msgstr "Aktuální stopa"
+
+#: front/src/views/content/libraries/Quota.vue:2
+msgctxt "Content/Library/Title"
+msgid "Current usage"
+msgstr "Aktuální využití"
+
+#: front/src/components/Footer.vue:94
+msgctxt "Footer/Settings/Dropdown.Label/Theme name"
+msgid "Dark"
+msgstr "Tmavé"
+
+#: front/src/components/federation/FetchButton.vue:53
+msgctxt "*/*/Error"
+msgid "Data returned by the remote server had invalid or missing attributes"
+msgstr "Data získaná ze vzdáleného serveru mají neplatné nebo chybějící atributy"
+
+#: front/src/components/federation/FetchButton.vue:17
+msgctxt "Popup/*/Message.Content"
+msgid "Data was refreshed successfully from remote server."
+msgstr "Data byla úspěšně aktualizována ze vzdáleného serveru."
+
+#: front/src/views/content/libraries/Detail.vue:27
+msgctxt "Content/Library/Table.Label"
+msgid "Date"
+msgstr "Datum"
+
+#: front/src/components/library/ImportStatusModal.vue:64
+msgctxt "Popup/Import/Table.Label/Noun"
+msgid "Debug information"
+msgstr "Informace pro vývojáře"
+
+#: front/src/components/ShortcutsModal.vue:128
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Decrease volume"
+msgstr "Snížit hlasitost"
+
+#: front/src/components/auth/Settings.vue:150
+#: src/components/auth/Settings.vue:251
+#: front/src/components/library/EditCard.vue:93
+#: front/src/components/library/EditCard.vue:98
+#: front/src/components/manage/library/AlbumsTable.vue:188
+#: front/src/components/manage/library/ArtistsTable.vue:178
+#: front/src/components/manage/library/LibrariesTable.vue:205
+#: front/src/components/manage/library/TagsTable.vue:179
+#: front/src/components/manage/library/TracksTable.vue:188
+#: front/src/components/manage/library/UploadsTable.vue:255
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:61
+#: front/src/components/manage/moderation/NotesThread.vue:24
+#: front/src/components/manage/moderation/NotesThread.vue:29
+#: front/src/components/manage/moderation/ReportCard.vue:360
+#: front/src/components/manage/users/InvitationsTable.vue:167
+#: front/src/views/admin/library/AlbumDetail.vue:78
+#: front/src/views/admin/library/AlbumDetail.vue:83
+#: front/src/views/admin/library/ArtistDetail.vue:76
+#: front/src/views/admin/library/ArtistDetail.vue:81
+#: front/src/views/admin/library/LibraryDetail.vue:58
+#: front/src/views/admin/library/LibraryDetail.vue:63
+#: front/src/views/admin/library/TagDetail.vue:41
+#: front/src/views/admin/library/TagDetail.vue:46
+#: front/src/views/admin/library/TrackDetail.vue:77
+#: front/src/views/admin/library/TrackDetail.vue:82
+#: front/src/views/admin/library/UploadDetail.vue:65
+#: front/src/views/admin/library/UploadDetail.vue:70
+#: front/src/views/content/libraries/FilesTable.vue:222
+#: front/src/views/content/libraries/Form.vue:29
+#: src/views/playlists/Detail.vue:42
+msgctxt "*/*/*/Verb"
+msgid "Delete"
+msgstr "Odstranit"
+
+#: front/src/components/auth/Settings.vue:254
+msgctxt "*/Settings/Button.Label/Verb"
+msgid "Delete application"
+msgstr "Odstranit aplikaci"
+
+#: front/src/components/auth/Settings.vue:252
+msgctxt "Popup/Settings/Title"
+msgid "Delete application \"%{ application }\"?"
+msgstr "Odstranit aplikaci \"%{ application }\"?"
+
+#: front/src/views/content/libraries/Form.vue:39
+msgctxt "Popup/Library/Button.Label/Verb"
+msgid "Delete library"
+msgstr "Odstranit knihovnu"
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:69
+msgctxt "Popup/Moderation/Button.Label/Verb"
+msgid "Delete moderation rule"
+msgstr "Odstranit pravidlo moderování"
+
+#: front/src/components/auth/Settings.vue:274
+#: src/components/auth/Settings.vue:302
+#, fuzzy
+msgctxt "*/*/Button.Label"
+msgid "Delete my account"
+msgstr "Smazat můj účet"
+
+#: front/src/components/auth/Settings.vue:297
+msgctxt "*/*/Button.Label"
+msgid "Delete my account…"
+msgstr "Smazat můj účet…"
+
+#: front/src/views/playlists/Detail.vue:47
+msgctxt "Popup/Playlist/Button.Label/Verb"
+msgid "Delete playlist"
+msgstr "Odstranit playlist"
+
+#: front/src/views/radios/Detail.vue:28
+msgctxt "Popup/Radio/Button.Label/Verb"
+msgid "Delete radio"
+msgstr "Odstranit rádio"
+
+#: front/src/components/manage/moderation/ReportCard.vue:357
+msgctxt "Content/Moderation/Button/Verb"
+msgid "Delete reported object"
+msgstr "Smazat nahlášený objekt"
+
+#: front/src/components/manage/moderation/ReportCard.vue:358
+msgctxt "Content/Moderation/Popup/Header"
+msgid "Delete reported object?"
+msgstr "Smazat nahlášený objekt?"
+
+#: front/src/views/admin/library/AlbumDetail.vue:79
+#: front/src/views/admin/library/TrackDetail.vue:78
+msgctxt "Popup/Library/Title"
+msgid "Delete this album?"
+msgstr "Odstranit toto album?"
+
+#: front/src/views/admin/library/ArtistDetail.vue:77
+msgctxt "Popup/Library/Title"
+msgid "Delete this artist?"
+msgstr "Odstranit tohoto interpreta?"
+
+#: front/src/views/admin/library/LibraryDetail.vue:59
+#: front/src/views/content/libraries/Form.vue:31
+msgctxt "Popup/Library/Title"
+msgid "Delete this library?"
+msgstr "Odstranit tuto knihovnu?"
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:63
+msgctxt "Popup/Moderation/Title"
+msgid "Delete this moderation rule?"
+msgstr "Odstranit toto pravidlo moderace?"
+
+#: front/src/components/manage/moderation/NotesThread.vue:25
+msgctxt "Popup/Moderation/Title"
+msgid "Delete this note?"
+msgstr "Odstranit tuto poznámku?"
+
+#: front/src/components/library/EditCard.vue:94
+msgctxt "Popup/Library/Title"
+msgid "Delete this suggestion?"
+msgstr "Odstranit toto doporučení?"
+
+#: front/src/views/admin/library/TagDetail.vue:42
+msgctxt "Popup/Library/Title"
+msgid "Delete this tag?"
+msgstr "Odstranit tento tag?"
+
+#: front/src/views/admin/library/UploadDetail.vue:66
+msgctxt "Popup/Library/Title"
+msgid "Delete this upload?"
+msgstr "Odstranit tyto nahrané soubory?"
+
+#: front/src/components/favorites/List.vue:35
+#: src/components/library/Albums.vue:30
+#: front/src/components/library/Artists.vue:30
+#: src/components/library/Radios.vue:47
+#: front/src/components/manage/library/AlbumsTable.vue:22
+#: front/src/components/manage/library/ArtistsTable.vue:22
+#: front/src/components/manage/library/EditsCardList.vue:40
+#: front/src/components/manage/library/LibrariesTable.vue:31
+#: front/src/components/manage/library/TagsTable.vue:22
+#: front/src/components/manage/library/TracksTable.vue:22
+#: front/src/components/manage/library/UploadsTable.vue:41
+#: front/src/components/manage/moderation/AccountsTable.vue:22
+#: front/src/components/manage/moderation/DomainsTable.vue:28
+#: front/src/components/manage/users/UsersTable.vue:20
+#: front/src/views/admin/moderation/ReportsList.vue:45
+#: front/src/views/content/libraries/FilesTable.vue:32
+#: front/src/views/playlists/List.vue:28
+msgctxt "Content/Search/Dropdown"
+msgid "Descending"
+msgstr "SestupnÄ›"
+
+#: front/src/components/manage/moderation/NoteForm.vue:37
+msgctxt "Content/Moderation/Placeholder"
+msgid "Describe what actions have been taken, or any other related updates…"
+msgstr "Popište jaká opatření byla podniknuta, případně jiné související aktivity…"
+
+#: front/src/components/library/radios/Builder.vue:25
+#: front/src/views/admin/library/LibraryDetail.vue:132
+#: front/src/views/content/libraries/Form.vue:14
+msgctxt "*/*/*/Noun"
+msgid "Description"
+msgstr "Popis"
+
+#: front/src/views/content/libraries/Card.vue:48
+#: src/views/content/remote/Card.vue:67
+msgctxt "Content/Library/Card.Button.Label/Noun"
+msgid "Details"
+msgstr "Podrobnosti"
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:511
+msgctxt "Content/Moderation/Help text"
+msgid "Determine how much content the user can upload. Leave empty to use the default value of the instance."
+msgstr "Určete kolik obsahu může uživatel nahrát. Ponechte prázdné pro použití výchozí hodnoty této instance."
+
+#: front/src/components/mixins/Translations.vue:8
+#: front/src/components/mixins/Translations.vue:9
+msgctxt "Content/Settings/Dropdown.Help text"
+msgid "Determine the visibility level of your activity"
+msgstr "Určete stupeň viditelnosti vaší aktivity"
+
+#: front/src/components/auth/Settings.vue:104
+#: front/src/components/auth/SubsonicTokenForm.vue:56
+msgctxt "Popup/Settings/Button.Label"
+msgid "Disable access"
+msgstr "Odebrat přístup"
+
+#: front/src/components/auth/SubsonicTokenForm.vue:53
+msgctxt "Content/Settings/Button.Label/Verb"
+msgid "Disable Subsonic access"
+msgstr "Zrušit přístup k Subsonic"
+
+#: front/src/components/auth/SubsonicTokenForm.vue:54
+msgctxt "Popup/Settings/Title"
+msgid "Disable Subsonic API access?"
+msgstr "Vypnout Subsonic API?"
+
+#: front/src/components/About.vue:118 src/components/About.vue:131
+#: front/src/components/About.vue:144
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:18
+#: front/src/views/admin/moderation/AccountsDetail.vue:157
+#: front/src/views/admin/moderation/AccountsDetail.vue:161
+msgctxt "*/*/*/State of feature"
+msgid "Disabled"
+msgstr "Vypnuto"
+
+#: front/src/views/admin/library/TrackDetail.vue:151
+msgctxt "*/*/*/Noun"
+msgid "Disc number"
+msgstr "Číslo disku"
+
+#: front/src/components/Home.vue:157
+msgctxt "Content/Home/Link"
+msgid "Discover everything you need to know about Funkwhale and its features"
+msgstr "Zjistěte vše co chcete vědět o Funkwhale a jeho možnostech"
+
+#: front/src/components/auth/SubsonicTokenForm.vue:13
+msgctxt "Content/Settings/Link"
+msgid "Discover how to use Funkwhale from other apps"
+msgstr "Objevte jak využívat Funkwhale z jiných aplikací"
+
+#: front/src/views/Notifications.vue:45
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Discover other ways to help"
+msgstr "Objevte další způsoby, jak můžete projektu pomoct"
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:132
+msgctxt "'Content/*/*/Noun'"
+msgid "Display name"
+msgstr "Zobrazované jméno"
+
+#: front/src/components/library/radios/Builder.vue:30
+msgctxt "Content/Radio/Checkbox.Label/Verb"
+msgid "Display publicly"
+msgstr "Zobrazit veřejně"
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:122
+msgctxt "Content/Moderation/Help text"
+msgid "Do not download any media file (audio, album cover, account avatar…) from this account or domain. This will purge existing content as well."
+msgstr "Nestahovat žádné mediální soubory (audio, obaly, avatar…) z tohoto účtu nebo domény. Existující obsah bude také smazán."
+
+#: front/src/views/Notifications.vue:36
+msgctxt "Content/Notifications/Header"
+msgid "Do you like Funkwhale?"
+msgstr "Líbí se vám Funkwhale?"
+
+#: front/src/components/playlists/Editor.vue:51
+msgctxt "Popup/Playlist/Title"
+msgid "Do you want to clear the playlist \"%{ playlist }\"?"
+msgstr "Přejete si vyprázdnit playlist \"%{ playlist }\"?"
+
+#: front/src/components/common/DangerousButton.vue:7
+msgctxt "Modal/*/Title"
+msgid "Do you want to confirm this action?"
+msgstr "Přejete si potvrdit tuto akci?"
+
+#: front/src/views/playlists/Detail.vue:43
+msgctxt "Popup/Playlist/Title/Call to action"
+msgid "Do you want to delete the playlist \"%{ playlist }\"?"
+msgstr "Přejete si odstranit playlist \"%{ playlist }\"?"
+
+#: front/src/views/radios/Detail.vue:26
+msgctxt "Popup/Radio/Title"
+msgid "Do you want to delete the radio \"%{ radio }\"?"
+msgstr "Přejete si odstranit rádio \"%{ radio }\"?"
+
+#: front/src/components/auth/Settings.vue:298
+msgctxt "Popup/Settings/Title"
+msgid "Do you want to delete your account?"
+msgstr "Přejete si smazat váš účet?"
+
+#: front/src/components/moderation/FilterModal.vue:3
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Do you want to hide content from artist \"%{ name }\"?"
+msgstr "Přejete si skrýt obsah od interpreta \"%{ name }\"?"
+
+#: front/src/components/common/ActionTable.vue:37
+msgctxt "Modal/*/Title"
+msgid "Do you want to launch %{ action } on %{ count } element?"
+msgid_plural "Do you want to launch %{ action } on %{ count } elements?"
+msgstr[0] "Přejete si provést operaci %{ action } na %{ count } položce?"
+msgstr[1] "Přejete si provést operaci %{ action } na %{ count } položkách?"
+msgstr[2] "Přejete si provést operaci %{ action } na %{ count } položkách?"
+
+#: front/src/components/moderation/ReportModal.vue:3
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Do you want to report this object?"
+msgstr "Přejete si nahlásit tento objekt?"
+
+#: front/src/components/Sidebar.vue:122
+msgctxt "Sidebar/Queue/Message"
+msgid "Do you want to restore your previous queue?"
+msgstr "Přejete si obnovit vaši předchozí frontu?"
+
+#: front/src/components/Footer.vue:31
+msgctxt "Footer/*/List item.Link/Short, Noun"
+msgid "Documentation"
+msgstr "Dokumentace"
+
+#: front/src/components/manage/library/AlbumsTable.vue:41
+#: front/src/components/manage/library/ArtistsTable.vue:40
+#: front/src/components/manage/library/LibrariesTable.vue:50
+#: front/src/components/manage/library/TracksTable.vue:42
+#: front/src/components/manage/library/UploadsTable.vue:62
+#: front/src/components/manage/moderation/AccountsTable.vue:40
+#: front/src/components/manage/moderation/ReportCard.vue:169
+#: front/src/components/manage/moderation/ReportCard.vue:179
+#: front/src/components/mixins/Translations.vue:72
+#: front/src/views/admin/library/AlbumDetail.vue:124
+#: front/src/views/admin/library/ArtistDetail.vue:112
+#: front/src/views/admin/library/LibraryDetail.vue:123
+#: front/src/views/admin/library/TrackDetail.vue:176
+#: front/src/views/admin/library/UploadDetail.vue:121
+#: front/src/views/admin/moderation/AccountsDetail.vue:123
+#: front/src/components/mixins/Translations.vue:73
+msgctxt "Content/Moderation/*/Noun"
+msgid "Domain"
+msgstr "Doména"
+
+#: front/src/views/admin/moderation/Base.vue:8
+#: front/src/views/admin/moderation/DomainsList.vue:3
+#: front/src/views/admin/moderation/DomainsList.vue:54
+msgctxt "*/Moderation/*/Noun"
+msgid "Domains"
+msgstr "Domény"
+
+#: front/src/views/Notifications.vue:42
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Donate"
+msgstr "Přispějte"
+
+#: front/src/components/library/TrackBase.vue:37
+#: front/src/views/admin/library/UploadDetail.vue:58
+msgctxt "Content/Track/Link/Verb"
+msgid "Download"
+msgstr "Stáhnout"
+
+#: front/src/components/playlists/Editor.vue:59
+msgctxt "Content/Playlist/Paragraph/Call to action"
+msgid "Drag and drop rows to reorder tracks in the playlist"
+msgstr "Přetáhněte myší řádky pro změnu pořadí stop v playlistu"
+
+#: front/src/components/audio/track/Table.vue:10
+#: front/src/components/library/TrackDetail.vue:30
+#: front/src/components/mixins/Translations.vue:68
+#: front/src/views/admin/library/UploadDetail.vue:238
+#: front/src/views/content/libraries/FilesTable.vue:60
+#: front/src/components/mixins/Translations.vue:69
+msgctxt "Content/*/*"
+msgid "Duration"
+msgstr "Délka"
+
+#: front/src/views/auth/EmailConfirm.vue:23
+msgctxt "Content/Signup/Message"
+msgid "E-mail address confirmed"
+msgstr "Emailová adresa potvrzena"
+
+#: front/src/components/auth/Settings.vue:246
+#: src/components/library/AlbumBase.vue:73
+#: front/src/components/library/ArtistBase.vue:84
+#: front/src/components/library/TrackBase.vue:89
+#: front/src/components/manage/moderation/InstancePolicyCard.vue:45
+#: front/src/components/radios/Card.vue:23
+#: src/views/admin/library/AlbumDetail.vue:71
+#: front/src/views/admin/library/ArtistDetail.vue:69
+#: front/src/views/admin/library/TrackDetail.vue:70
+#: front/src/views/content/libraries/Detail.vue:9
+#: src/views/playlists/Detail.vue:31
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Edit"
+msgstr "Upravit"
+
+#: front/src/components/auth/ApplicationEdit.vue:30
+#: front/src/components/auth/ApplicationEdit.vue:75
+msgctxt "Content/Applications/Title"
+msgid "Edit application"
+msgstr "Upravit aplikaci"
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:3
+msgctxt "Content/Moderation/Card.Title/Verb"
+msgid "Edit moderation rule"
+msgstr "Upravit pravidlo moderace"
+
+#: front/src/components/library/AlbumEdit.vue:4
+msgctxt "Content/*/Title"
+msgid "Edit this album"
+msgstr "Upravit toto album"
+
+#: front/src/components/library/ArtistEdit.vue:4
+msgctxt "Content/*/Title"
+msgid "Edit this artist"
+msgstr "Upravit tohoto interpreta"
+
+#: front/src/components/library/TrackEdit.vue:4
+msgctxt "Content/*/Title"
+msgid "Edit this track"
+msgstr "Upravit tuto stopu"
+
+#: front/src/components/mixins/Translations.vue:116
+#: front/src/views/admin/library/AlbumDetail.vue:198
+#: front/src/views/admin/library/ArtistDetail.vue:186
+#: front/src/views/admin/library/Base.vue:5
+#: src/views/admin/library/EditsList.vue:24
+#: front/src/views/admin/library/TrackDetail.vue:250
+#: front/src/components/mixins/Translations.vue:117
+msgctxt "*/Admin/*/Noun"
+msgid "Edits"
+msgstr "Úpravy"
+
+#: front/src/components/auth/SignupForm.vue:26
+#: front/src/components/manage/users/UsersTable.vue:38
+#: front/src/components/moderation/ReportModal.vue:31
+msgctxt "Content/*/*/Noun"
+msgid "Email"
+msgstr "Email"
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:140
+msgctxt "Content/*/*"
+msgid "Email address"
+msgstr "Emailová adresa"
+
+#: front/src/components/library/AlbumBase.vue:54
+#: front/src/components/library/ArtistBase.vue:65
+#: front/src/components/library/TrackBase.vue:70
+#: src/views/playlists/Detail.vue:38
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Embed"
+msgstr "Vložit"
+
+#: front/src/components/audio/EmbedWizard.vue:30
+msgctxt "Popup/Embed/Input.Label/Noun"
+msgid "Embed code"
+msgstr "Kód pro vložení"
+
+#: front/src/components/library/AlbumBase.vue:27
+msgctxt "Popup/Album/Title/Verb"
+msgid "Embed this album on your website"
+msgstr "Vložit toto album do webové stránky"
+
+#: front/src/components/library/ArtistBase.vue:38
+msgctxt "Popup/Artist/Title/Verb"
+msgid "Embed this artist work on your website"
+msgstr "Vložit díla tohoto interpreta do webové stránky"
+
+#: front/src/views/playlists/Detail.vue:52
+msgctxt "Popup/Album/Title/Verb"
+msgid "Embed this playlist on your website"
+msgstr "Vložit tento playlist do webové stránky"
+
+#: front/src/components/library/TrackBase.vue:43
+msgctxt "Popup/Track/Title"
+msgid "Embed this track on your website"
+msgstr "Vložit tuto stopu do webové stránky"
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:260
+#: front/src/views/admin/moderation/DomainsDetail.vue:224
+msgctxt "Content/Moderation/Table.Label/Noun"
+msgid "Emitted library follows"
+msgstr "Vydaná sledování knihovny"
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:244
+#: front/src/views/admin/moderation/DomainsDetail.vue:208
+msgctxt "Content/Moderation/Table.Label/Noun"
+msgid "Emitted messages"
+msgstr "Vydané zprávy"
+
+#: front/src/components/About.vue:114 src/components/About.vue:127
+#: front/src/components/About.vue:140
+#: front/src/components/manage/moderation/InstancePolicyCard.vue:8
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:17
+#: front/src/views/admin/moderation/AccountsDetail.vue:156
+#: front/src/views/admin/moderation/AccountsDetail.vue:160
+msgctxt "*/*/*/State of feature"
+msgid "Enabled"
+msgstr "Zapnuto"
+
+#: front/src/views/playlists/Detail.vue:30
+msgctxt "Content/Playlist/Button.Label/Verb"
+msgid "End edition"
+msgstr "Ukončit úpravu"
+
+#: front/src/views/content/remote/ScanForm.vue:50
+msgctxt "Content/Library/Input.Placeholder"
+msgid "Enter a library URL"
+msgstr "Zadejte URL knihovny"
+
+#: front/src/components/library/Radios.vue:141
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Enter a radio name…"
+msgstr "Zadejte název rádia…"
+
+#: front/src/components/library/Albums.vue:128
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Enter album title…"
+msgstr "Zadejte název alba…"
+
+#: front/src/components/library/Artists.vue:116
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Enter artist name…"
+msgstr "Zadejte jméno interpreta…"
+
+#: front/src/views/playlists/List.vue:107
+msgctxt "Content/Playlist/Placeholder/Call to action"
+msgid "Enter playlist name…"
+msgstr "Zadejte název playlistu…"
+
+#: front/src/views/auth/PasswordReset.vue:54
+msgctxt "Content/Signup/Input.Placeholder"
+msgid "Enter the email address linked to your account"
+msgstr "Zadejte emailovou adresu spojenou s vaším účtem"
+
+#: front/src/components/auth/SignupForm.vue:96
+msgctxt "Content/Signup/Form/Placeholder"
+msgid "Enter your email"
+msgstr "Zadejte emailovou adresu"
+
+#: front/src/components/auth/SignupForm.vue:91
+#: src/components/auth/SignupForm.vue:93
+msgctxt "Content/Signup/Form/Placeholder"
+msgid "Enter your invitation code (case insensitive)"
+msgstr "Zadejte kód pozvánky (pozor na velikost písmen)"
+
+#: front/src/components/metadata/Search.vue:114
+msgctxt "Content/Library/Input.Placeholder/Verb"
+msgid "Enter your search query…"
+msgstr "Zadejte vyhledávací řetězec…"
+
+#: front/src/components/auth/SignupForm.vue:95
+msgctxt "Content/Signup/Form/Placeholder"
+msgid "Enter your username"
+msgstr "Zadejte vaše uživatelské jméno"
+
+#: front/src/components/auth/LoginForm.vue:81
+msgctxt "Content/Login/Input.Placeholder"
+msgid "Enter your username or email"
+msgstr "Zadejte vaše uživatelské jméno nebo email"
+
+#: front/src/components/auth/SubsonicTokenForm.vue:19
+#: front/src/views/content/libraries/Form.vue:4
+msgctxt "Content/*/Error message.Title"
+msgid "Error"
+msgstr "Chyba"
+
+#: front/src/components/federation/FetchButton.vue:34
+#: front/src/components/library/ImportStatusModal.vue:32
+msgctxt "Popup/Import/Table.Label/Noun"
+msgid "Error detail"
+msgstr "Detail chyby"
+
+#: front/src/views/admin/Settings.vue:89
+msgctxt "Content/Admin/Menu"
+msgid "Error reporting"
+msgstr "Hlášení chyb"
+
+#: front/src/components/federation/FetchButton.vue:26
+#: front/src/components/library/ImportStatusModal.vue:24
+msgctxt "Popup/Import/Table.Label/Noun"
+msgid "Error type"
+msgstr "Typ chyby"
+
+#: front/src/components/common/ActionTable.vue:94
+msgctxt "Content/*/Error message/Header"
+msgid "Error while applying action"
+msgstr "Chyba při provádění operace"
+
+#: front/src/views/auth/PasswordReset.vue:7
+msgctxt "Content/Signup/Card.Title"
+msgid "Error while asking for a password reset"
+msgstr "Chyba při žádosti o reset hesla"
+
+#: front/src/components/auth/Authorize.vue:6
+msgctxt "Popup/Moderation/Error message"
+msgid "Error while authorizing application"
+msgstr "Chyba při autorizaci aplikace"
+
+#: front/src/views/auth/PasswordResetConfirm.vue:7
+msgctxt "Content/Signup/Card.Title"
+msgid "Error while changing your password"
+msgstr "Chyba při změně hesla"
+
+#: front/src/views/admin/moderation/DomainsList.vue:6
+msgctxt "Content/Moderation/Message.Title"
+msgid "Error while creating domain"
+msgstr "Chyba při vytváření domény"
+
+#: front/src/components/moderation/FilterModal.vue:13
+msgctxt "Popup/Moderation/Error message"
+msgid "Error while creating filter"
+msgstr "Chyba při vytváření filtru"
+
+#: front/src/components/manage/users/InvitationForm.vue:4
+msgctxt "Content/Admin/Error message.Title"
+msgid "Error while creating invitation"
+msgstr "Chyba při vytváření pozvánky"
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:7
+msgctxt "Content/Moderation/Error message.Title"
+msgid "Error while creating rule"
+msgstr "Chyba při vytváření pravidla"
+
+#: front/src/components/auth/Authorize.vue:7
+msgctxt "Popup/Moderation/Error message"
+msgid "Error while fetching application data"
+msgstr "Chyba při získávání dat aplikace"
+
+#: front/src/views/admin/moderation/DomainsDetail.vue:155
+msgctxt "Content/Moderation/Table"
+msgid "Error while fetching node info"
+msgstr "Chyba při získávání dat uzlu"
+
+#: front/src/components/admin/SettingsGroup.vue:5
+#: front/src/components/federation/FetchButton.vue:73
+msgctxt "Content/*/Error message.Title"
+msgid "Error while saving settings"
+msgstr "Chyba při ukládání nastavení"
+
+#: front/src/components/library/EditForm.vue:46
+msgctxt "Content/Library/Error message.Title"
+msgid "Error while submitting edit"
+msgstr "Chyba při odesílání změn"
+
+#: front/src/components/manage/moderation/NoteForm.vue:3
+msgctxt "Content/Moderation/Error message.Title"
+msgid "Error while submitting note"
+msgstr "Chyba při odesílání poznámky"
+
+#: front/src/components/moderation/ReportModal.vue:11
+msgctxt "Popup/Moderation/Error message"
+msgid "Error while submitting report"
+msgstr "Chyba při odesílání hlášení"
+
+#: front/src/components/mixins/Translations.vue:32
+#: front/src/components/mixins/Translations.vue:33
+msgctxt "Content/Library/Table/Short"
+msgid "Errored"
+msgstr "Skončilo chybou"
+
+#: front/src/views/content/libraries/Quota.vue:75
+msgctxt "Content/Library/Label"
+msgid "Errored files"
+msgstr "Soubory s chybou"
+
+#: front/src/components/mixins/Translations.vue:17
+#: front/src/components/mixins/Translations.vue:18
+msgctxt "Content/Settings/Dropdown/Short"
+msgid "Everyone"
+msgstr "VÅ¡ichni"
+
+#: front/src/components/mixins/Translations.vue:11
+#: front/src/components/mixins/Translations.vue:12
+msgctxt "Content/Settings/Dropdown"
+msgid "Everyone on this instance"
+msgstr "Všichni z této instance"
+
+#: front/src/components/mixins/Translations.vue:12
+#: front/src/components/mixins/Translations.vue:13
+msgctxt "Content/Settings/Dropdown"
+msgid "Everyone, across all instances"
+msgstr "Všichni, napříč všemi instancemi"
+
+#: front/src/components/library/radios/Builder.vue:62
+msgctxt "Content/Radio/Table.Label/Verb"
+msgid "Exclude"
+msgstr "Vyloučit"
+
+#: front/src/components/common/CollapseLink.vue:2
+msgctxt "*/*/Button,Label"
+msgid "Expand"
+msgstr "Rozbalit"
+
+#: front/src/components/manage/users/InvitationsTable.vue:41
+#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:60
+msgctxt "Content/Admin/Table.Label/Noun"
+msgid "Expiration date"
+msgstr "Datum vypršení"
+
+#: front/src/components/manage/users/InvitationsTable.vue:50
+msgctxt "Content/Admin/Table"
+msgid "Expired"
+msgstr "Vypršel"
+
+#: front/src/components/manage/users/InvitationsTable.vue:21
+msgctxt "Content/Admin/Dropdown/Adjective"
+msgid "Expired/used"
+msgstr "Vypršel/použit"
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:110
+msgctxt "Content/Moderation/Help text"
+msgid "Explain why you're applying this policy. Depending on your instance configuration, this will help you remember why you acted on this account or domain, and may be displayed publicly to help users understand what moderation rules are in place."
+msgstr "Vysvětlete proč aplikujte tuto zásadu. Bude to informace pro vás a v závislosti na nastavení instance může být viditelná veřejně, aby se uživatelé seznámili s pravidly moderace."
+
+#: front/src/components/manage/library/UploadsTable.vue:25
+#: front/src/views/content/libraries/FilesTable.vue:16
+msgctxt "Content/Library/Dropdown"
+msgid "Failed"
+msgstr "Neúspěšné"
+
+#: front/src/views/content/remote/Card.vue:75
+msgctxt "Content/Library/Card.List item/Noun"
+msgid "Failed tracks:"
+msgstr "Neúspěšné stopy:"
+
+#: front/src/views/admin/library/AlbumDetail.vue:171
+#: front/src/views/admin/library/ArtistDetail.vue:159
+#: front/src/views/admin/library/TrackDetail.vue:223
+msgctxt "*/*/*"
+msgid "Favorited tracks"
+msgstr "Oblíbené stopy"
+
+#: front/src/components/Sidebar.vue:66
+#: src/components/mixins/Translations.vue:88
+#: front/src/components/mixins/Translations.vue:89
+msgctxt "Sidebar/Favorites/List item.Link/Noun"
+msgid "Favorites"
+msgstr "Oblíbené"
+
+#: front/src/components/About.vue:110 src/views/admin/Settings.vue:84
+msgctxt "*/*/*"
+msgid "Federation"
+msgstr "Federace"
+
+#: front/src/components/library/TrackDetail.vue:66
+msgctxt "Content/*/*/Noun"
+msgid "Federation ID"
+msgstr "ID Federace"
+
+#: front/src/components/library/EditCard.vue:45
+msgctxt "Content/Library/Card.Table.Header/Short"
+msgid "Field"
+msgstr "Pole"
+
+#: front/src/components/library/FileUpload.vue:93
+msgctxt "Content/Library/Table.Label"
+msgid "Filename"
+msgstr "Název souboru"
+
+#: front/src/components/library/radios/Builder.vue:61
+msgctxt "Content/Radio/Table.Label/Noun"
+msgid "Filter name"
+msgstr "Název filtru"
+
+#: front/src/components/Home.vue:118
+msgctxt "Content/Home/Link"
+msgid "Find another pod"
+msgstr "Hledat další pody"
+
+#: front/src/components/manage/library/UploadsTable.vue:26
+#: front/src/components/mixins/Translations.vue:36
+#: front/src/views/content/libraries/FilesTable.vue:17
+#: front/src/components/mixins/Translations.vue:37
+msgctxt "Content/Library/*"
+msgid "Finished"
+msgstr "Dokončeno"
+
+#: front/src/components/manage/moderation/AccountsTable.vue:42
+#: front/src/components/manage/moderation/DomainsTable.vue:49
+#: front/src/views/admin/library/AlbumDetail.vue:155
+#: front/src/views/admin/library/ArtistDetail.vue:143
+#: front/src/views/admin/library/LibraryDetail.vue:162
+#: front/src/views/admin/library/TagDetail.vue:98
+#: front/src/views/admin/library/TrackDetail.vue:207
+#: front/src/views/admin/library/UploadDetail.vue:167
+#: front/src/views/admin/moderation/AccountsDetail.vue:236
+#: front/src/views/admin/moderation/DomainsDetail.vue:188
+msgctxt "Content/Moderation/Table.Label/Short (Value is a date)"
+msgid "First seen"
+msgstr "Prvně viděno"
+
+#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:57
+msgctxt "Content/Moderation/Dropdown/Noun"
+msgid "First seen date"
+msgstr "Prvně viděno dne"
+
+#: front/src/components/ShortcutsModal.vue:64
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Focus searchbar"
+msgstr "Přejít do vyhledávacího pole"
+
+#: front/src/views/content/remote/Card.vue:100
+msgctxt "Content/Library/Card.Button.Label/Verb"
+msgid "Follow"
+msgstr "Sledovat"
+
+#: front/src/views/content/Home.vue:16
+msgctxt "Content/Library/Title/Verb"
+msgid "Follow remote libraries"
+msgstr "Sledovat vzdálené knihovny"
+
+#: front/src/views/content/remote/Card.vue:105
+msgctxt "Content/Library/Card.Paragraph"
+msgid "Follow request pending approval"
+msgstr "Žádost o sledování čeká na schválení"
+
+#: front/src/components/manage/library/LibrariesTable.vue:53
+#: front/src/components/mixins/Translations.vue:76
+#: front/src/views/admin/library/LibraryDetail.vue:170
+#: front/src/views/content/libraries/Detail.vue:7
+#: front/src/components/mixins/Translations.vue:77
+msgctxt "Content/Federation/*/Noun"
+msgid "Followers"
+msgstr "Sledující"
+
+#: front/src/views/content/remote/Card.vue:116
+msgctxt "Content/Library/Card.Paragraph"
+msgid "Following"
+msgstr "Sleduje"
+
+#: front/src/components/mixins/Translations.vue:96
+#: front/src/components/mixins/Translations.vue:97
+msgctxt "Content/OAuth Scopes/Label"
+msgid "Follows"
+msgstr "Sleduje"
+
+#: front/src/components/library/TrackBase.vue:245
+msgctxt "Content/Track/Paragraph"
+msgid "From album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgstr "Z alba <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> od <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+
+#: front/src/components/auth/Authorize.vue:28
+msgctxt "Content/Auth/Label/Noun"
+msgid "Full access"
+msgstr "Plný přístup"
+
+#: front/src/components/auth/SubsonicTokenForm.vue:7
+msgctxt "Content/Settings/Paragraph'"
+msgid "Funkwhale is compatible with other music players that support the Subsonic API."
+msgstr "Funkwhale je kompatibilní s přehrávači které podporují Subsonic API."
+
+#: front/src/components/Home.vue:88
+msgctxt "Content/Home/Paragraph"
+msgid "Funkwhale is free and developped by a friendly community of volunteers."
+msgstr "Funkwhale je free software vyvíjený přátelskou komunitou dobrovolníků."
+
+#: front/src/components/About.vue:78
+msgctxt "*/*/*"
+msgid "Funkwhale version"
+msgstr "Verze Funkwhale"
+
+#: front/src/components/ShortcutsModal.vue:56
+msgctxt "Popup/Keyboard shortcuts/Title"
+msgid "General shortcuts"
+msgstr "Obecné klávesové zkratky"
+
+#: front/src/components/manage/users/InvitationForm.vue:16
+msgctxt "Content/Admin/Button.Label/Verb"
+msgid "Get a new invitation"
+msgstr "Získat novou pozvánku"
+
+#: front/src/views/content/Home.vue:12 src/views/content/Home.vue:19
+msgctxt "Content/Library/Button.Label/Verb"
+msgid "Get started"
+msgstr "Začínáme"
+
+#: front/src/components/Footer.vue:45
+#: src/components/library/ImportStatusModal.vue:45
+msgctxt "Footer/*/Link"
+msgid "Getting help"
+msgstr "Získat pomoc"
+
+#: front/src/components/common/ActionTable.vue:35
+#: front/src/components/common/ActionTable.vue:56
+msgctxt "Content/*/Button.Label/Short, Verb"
+msgid "Go"
+msgstr "Pokračovat"
+
+#: front/src/components/PageNotFound.vue:14
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Go to home page"
+msgstr "Přejít na domovskou stránku"
+
+#: front/src/views/Notifications.vue:27 src/views/Notifications.vue:61
+msgctxt "Content/Notifications/Button.Label"
+msgid "Got it!"
+msgstr "Chápu!"
+
+#: front/src/components/auth/Settings.vue:128
+msgctxt "Content/Settings/Title"
+msgid "Hidden artists"
+msgstr "Skrytí interpreti"
+
+#: front/src/components/About.vue:155
+msgctxt "*/*/*/Verb"
+msgid "Hide"
+msgstr "Skrýt"
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:114
+msgctxt "Content/Moderation/Help text"
+msgid "Hide account or domain content, except from followers."
+msgstr "Skrýt obsah účtu nebo domény (neplatí pro sledující)."
+
+#: front/src/components/moderation/FilterModal.vue:40
+msgctxt "Popup/*/Button.Label"
+msgid "Hide content"
+msgstr "Skrýt obsah"
+
+#: front/src/components/audio/PlayButton.vue:31
+msgctxt "*/Queue/Dropdown/Button/Label/Short"
+msgid "Hide content from this artist"
+msgstr "Skrýt obsah od tohoto interpreta"
+
+#: front/src/components/audio/Player.vue:669
+msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
+msgid "Hide content from this artist…"
+msgstr "Skrýt obsah od tohoto interpreta…"
+
+#: front/src/components/library/Home.vue:65
+msgctxt "Head/Home/Title"
+msgid "Home"
+msgstr "Domů"
+
+#: front/src/components/auth/SubsonicTokenForm.vue:10
+msgctxt "Content/Settings/Paragraph"
+msgid "However, accessing Funkwhale from those clients require a separate password you can set below."
+msgstr "Přistupovat k Funkwhale z těchto klientů ale vyžaduje samostatné heslo, které můžete nastavit níže."
+
+#: front/src/views/auth/PasswordResetConfirm.vue:24
+msgctxt "Content/Signup/Paragraph"
+msgid "If the email address provided in the previous step is valid and linked to a user account, you should receive an email with reset instructions in the next couple of minutes."
+msgstr "Pokud je emailová adresa zadaná v předchozím kroku validní a náleží k uživatelskému účtu, obdržíte během několika minut email s pokyny pro reset hesla."
+
+#: front/src/components/auth/Settings.vue:205
+msgctxt "Content/Applications/Paragraph"
+msgid "If you authorize third-party applications to access your data, those applications will be listed here."
+msgstr "Zde jsou vypsány aplikace třetích stran, kterým byl udělen přístup k vašim datům."
+
+#: front/src/components/mixins/Translations.vue:46
+#: front/src/components/mixins/Translations.vue:47
+msgctxt "Content/Moderation/Dropdown"
+msgid "Illegal content"
+msgstr "Nelegální obsah"
+
+#: front/src/components/library/ImportStatusModal.vue:3
+msgctxt "Popup/Import/Title"
+msgid "Import detail"
+msgstr "Detaily importu"
+
+#: front/src/components/library/FileUpload.vue:50
+msgctxt "Content/Library/Input.Label/Noun"
+msgid "Import reference"
+msgstr "Odkaz importu"
+
+#: front/src/components/manage/library/UploadsTable.vue:20
+#: front/src/components/manage/library/UploadsTable.vue:64
+#: front/src/views/admin/library/UploadDetail.vue:131
+#: front/src/views/content/libraries/FilesTable.vue:11
+#: front/src/views/content/libraries/FilesTable.vue:59
+msgctxt "Content/*/*/Noun"
+msgid "Import status"
+msgstr "Stav importu"
+
+#: front/src/components/mixins/Translations.vue:37
+#: front/src/components/mixins/Translations.vue:38
+msgctxt "Content/Library/Help text"
+msgid "Imported"
+msgstr "Importováno"
+
+#: front/src/components/federation/FetchButton.vue:47
+msgctxt "*/*/Error"
+msgid "Impossible to connect to the remote server"
+msgstr "Ke vzdáleném serveru se nelze připojit"
+
+#: front/src/components/moderation/FilterModal.vue:26
+msgctxt "Popup/Moderation/List item"
+msgid "In \"Recently added\" widget"
+msgstr "Ve widgetu \"Poslední přidané\""
+
+#: front/src/components/moderation/FilterModal.vue:27
+msgctxt "Popup/Moderation/List item"
+msgid "In artists and album listings"
+msgstr "Ve výpisu interpretů a alb"
+
+#: front/src/components/favorites/TrackFavoriteIcon.vue:3
+msgctxt "Content/Track/Button.Message"
+msgid "In favorites"
+msgstr "V oblíbených"
+
+#: front/src/components/moderation/FilterModal.vue:25
+msgctxt "Popup/Moderation/List item"
+msgid "In other users favorites and listening history"
+msgstr "V oblíbených a historii poslechu jiných uživatelů"
+
+#: front/src/components/moderation/FilterModal.vue:28
+msgctxt "Popup/Moderation/List item"
+msgid "In radio suggestions"
+msgstr "V návrzích rádia"
+
+#: front/src/components/manage/users/UsersTable.vue:55
+msgctxt "Content/Admin/Table"
+msgid "Inactive"
+msgstr "Neaktivní"
+
+#: front/src/components/ShortcutsModal.vue:124
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Increase volume"
+msgstr "Zvýšit hlasitost"
+
+#: front/src/components/playlists/Editor.vue:41
+msgctxt "Content/Playlist/Button.Label/Verb"
+msgid "Insert from queue (%{ count } track)"
+msgid_plural "Insert from queue (%{ count } tracks)"
+msgstr[0] "Vložit z fronty (%{ count } stopa)"
+msgstr[1] "Vložit z fronty (%{ count } stopy)"
+msgstr[2] "Vložit z fronty (%{ count } stop)"
+
+#: front/src/components/mixins/Translations.vue:16
+#: front/src/components/mixins/Translations.vue:17
+msgctxt "Content/Settings/Dropdown/Short"
+msgid "Instance"
+msgstr "Instance"
+
+#: front/src/views/admin/moderation/DomainsDetail.vue:99
+msgctxt "Content/Moderation/Title"
+msgid "Instance data"
+msgstr "Data instance"
+
+#: front/src/views/admin/Settings.vue:80
+msgctxt "Content/Admin/Menu"
+msgid "Instance information"
+msgstr "Informace o instanci"
+
+#: front/src/components/library/Radios.vue:9
+msgctxt "Content/Radio/Title"
+msgid "Instance radios"
+msgstr "Rádia instance"
+
+#: front/src/views/admin/Settings.vue:75
+msgctxt "Head/Admin/Title"
+msgid "Instance settings"
+msgstr "Nastavení instance"
+
+#: front/src/components/SetInstanceModal.vue:19
+msgctxt "Popup/Instance/Input.Label/Noun"
+msgid "Instance URL"
+msgstr "URL instance"
+
+#: front/src/components/manage/moderation/ReportCard.vue:92
+#: front/src/components/manage/moderation/ReportCard.vue:203
+msgctxt "Content/*/*/Noun"
+msgid "Internal notes"
+msgstr "Interní poznámka"
+
+#: front/src/components/library/FileUpload.vue:268
+msgctxt "Content/Library/Help text"
+msgid "Invalid file type, ensure you are uploading an audio file. Supported file extensions are %{ extensions }"
+msgstr "Neplatný typ souboru. Ujistěte se, že nahrávate zvukový soubor. Podporovány jsou soubory typu %{ extensions }"
+
+#: front/src/components/library/ImportStatusModal.vue:139
+#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:46
+msgctxt "Popup/Import/Error.Label"
+msgid "Invalid metadata"
+msgstr "Neplatná metadata"
+
+#: front/src/components/auth/SignupForm.vue:40
+#: front/src/components/manage/users/InvitationForm.vue:11
+msgctxt "Content/*/Input.Label"
+msgid "Invitation code"
+msgstr "Kód pozvánky"
+
+#: front/src/views/admin/users/Base.vue:8
+#: front/src/views/admin/users/InvitationsList.vue:24
+msgctxt "*/Admin/*/Noun"
+msgid "Invitations"
+msgstr "Pozvánky"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:9
+#: front/src/views/admin/moderation/DomainsDetail.vue:106
+msgctxt "Content/Moderation/*/Adjective"
+msgid "Is present on allow-list"
+msgstr "Nachází se na seznamu povolených"
+
+#: front/src/components/Footer.vue:49
+msgctxt "Footer/*/List item.Link"
+msgid "Issue tracker"
+msgstr "Databáze problémů"
+
+#: front/src/components/SetInstanceModal.vue:5
+msgctxt "Popup/Instance/Error message.Title"
+msgid "It is not possible to connect to the given URL"
+msgstr "Na zadanou adresu URL se nelze připojit"
+
+#: front/src/components/mixins/Translations.vue:65
+#: front/src/components/mixins/Translations.vue:66
+msgctxt "*/*/*/Noun"
+msgid "Items"
+msgstr "Položky"
+
+#: front/src/components/Footer.vue:33 src/components/ShortcutsModal.vue:3
+msgctxt "*/*/*/Noun"
+msgid "Keyboard shortcuts"
+msgstr "Klávesové zkratky"
+
+#: front/src/views/admin/moderation/DomainsDetail.vue:198
+msgctxt "Content/Moderation/Table.Label.Link"
+msgid "Known accounts"
+msgstr "Známé účty"
+
+#: front/src/views/content/remote/Home.vue:14
+msgctxt "Content/Library/Title"
+msgid "Known libraries"
+msgstr "Známé knihovny"
+
+#: front/src/components/manage/users/UsersTable.vue:41
+#: front/src/components/mixins/Translations.vue:70
+#: front/src/views/admin/moderation/AccountsDetail.vue:206
+#: front/src/components/mixins/Translations.vue:71
+msgctxt "Content/Profile/Table.Label/Short, Noun (Value is a date)"
+msgid "Last activity"
+msgstr "Poslední aktivita"
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:189
+#: front/src/views/admin/moderation/DomainsDetail.vue:115
+msgctxt "Content/*/Table.Label"
+msgid "Last checked"
+msgstr "Naposledy kontrolováno"
+
+#: front/src/components/playlists/PlaylistModal.vue:46
+msgctxt "Popup/Playlist/Table.Label/Short"
+msgid "Last modification"
+msgstr "Poslední změna"
+
+#: front/src/components/manage/moderation/AccountsTable.vue:43
+msgctxt "Content/Moderation/Table.Label/Noun"
+msgid "Last seen"
+msgstr "Naposledy viděno"
+
+#: front/src/components/mixins/Translations.vue:57
+#: front/src/components/mixins/Translations.vue:58
+msgctxt "Content/Moderation/Dropdown/Noun"
+msgid "Last seen date"
+msgstr "Naposledy viděno dne"
+
+#: front/src/views/content/remote/Card.vue:73
+msgctxt "Content/Library/Card.List item/Noun"
+msgid "Last update:"
+msgstr "Poslední aktualizace:"
+
+#: front/src/components/common/ActionTable.vue:49
+msgctxt "Modal/*/Button.Label/Short, Verb"
+msgid "Launch"
+msgstr "Spustit"
+
+#: front/src/components/Home.vue:35
+msgctxt "Content/Home/Link"
+msgid "Learn more"
+msgstr "Dozvědět se více"
+
+#: front/src/components/manage/users/InvitationForm.vue:58
+msgctxt "Content/Admin/Input.Placeholder"
+msgid "Leave empty for a random code"
+msgstr "Ponechte prázdné pro náhodný kód"
+
+#: front/src/components/audio/EmbedWizard.vue:17
+msgctxt "Popup/Embed/Paragraph"
+msgid "Leave empty for a responsive widget"
+msgstr "Ponechte prázdné pro responzivní widget"
+
+#: front/src/components/mixins/Translations.vue:64
+#: front/src/components/mixins/Translations.vue:65
+msgctxt "*/*/*/Noun"
+msgid "Length"
+msgstr "Délka"
+
+#: front/src/views/admin/library/AlbumDetail.vue:248
+#: front/src/views/admin/library/ArtistDetail.vue:236
+#: front/src/views/admin/library/Base.vue:17
+#: front/src/views/admin/library/LibrariesList.vue:24
+#: front/src/views/admin/library/TrackDetail.vue:300
+#: front/src/views/admin/moderation/AccountsDetail.vue:339
+#: front/src/views/admin/moderation/DomainsDetail.vue:271
+#: front/src/views/content/Base.vue:5
+msgctxt "*/*/*/Noun"
+msgid "Libraries"
+msgstr "Knihovny"
+
+#: front/src/components/mixins/Translations.vue:84
+#: front/src/components/mixins/Translations.vue:85
+msgctxt "Content/OAuth Scopes/Label"
+msgid "Libraries and uploads"
+msgstr "Knihovny a nahrané soubory"
+
+#: front/src/views/content/libraries/Form.vue:2
+msgctxt "Content/Library/Paragraph"
+msgid "Libraries help you organize and share your music collections. You can upload your own music collection to Funkwhale and share it with your friends and family."
+msgstr "Knihovny vám pomáhají organizovat a sdílet vaše sbírky hudby. Můžete nahrát svou vlastní hudební kolekci na Funkwhale a sdílet se svými přáteli a rodinou."
+
+#: front/src/components/Sidebar.vue:85
+#: front/src/components/manage/library/UploadsTable.vue:60
+#: front/src/components/manage/users/UsersTable.vue:174
+#: front/src/components/mixins/Report.vue:77
+#: front/src/views/admin/library/UploadDetail.vue:144
+#: front/src/views/admin/moderation/AccountsDetail.vue:518 src/entities.js:132
+#: front/src/components/mixins/Report.vue:78
+#, fuzzy
+msgctxt "*/*/*/Noun"
+msgid "Library"
+msgstr "Knihovna"
+
+#: front/src/views/content/libraries/Form.vue:103
+msgctxt "Content/Library/Message"
+msgid "Library created"
+msgstr "Knihovna vytvořena"
+
+#: front/src/views/admin/library/LibraryDetail.vue:78
+msgctxt "Content/Moderation/Title"
+msgid "Library data"
+msgstr "Data knihovny"
+
+#: front/src/views/content/libraries/Form.vue:123
+msgctxt "Content/Library/Message"
+msgid "Library deleted"
+msgstr "Knihovna odstraněna"
+
+#: front/src/views/admin/library/EditsList.vue:4
+msgctxt "Content/Admin/Title/Noun"
+msgid "Library edits"
+msgstr "Úpravy knihovny"
+
+#: front/src/views/content/libraries/Form.vue:100
+msgctxt "Content/Library/Message"
+msgid "Library updated"
+msgstr "Knihovna aktualizována"
+
+#: front/src/components/library/TrackDetail.vue:19
+#: front/src/components/manage/library/TracksTable.vue:43
+#: front/src/views/admin/library/TrackDetail.vue:165 src/edits.js:84
+#: front/src/entities.js:115
+msgctxt "Content/*/*/Noun"
+msgid "License"
+msgstr "Licence"
+
+#: front/src/components/Footer.vue:90
+msgctxt "Footer/Settings/Dropdown.Label/Theme name"
+msgid "Light"
+msgstr "Světlé"
+
+#: front/src/views/admin/library/AlbumDetail.vue:188
+#: front/src/views/admin/library/ArtistDetail.vue:176
+#: front/src/views/admin/library/LibraryDetail.vue:179
+#: front/src/views/admin/library/TrackDetail.vue:240
+#: front/src/views/admin/moderation/AccountsDetail.vue:269
+msgctxt "Content/Moderation/Table.Label/Noun"
+msgid "Linked reports"
+msgstr "Odkazy na hlášení"
+
+#: front/src/components/Home.vue:135
+msgctxt "Content/Home/Link"
+msgid "Listen to public albums and playlists shared on this pod"
+msgstr "Poslouchat veřejně dostupná alba a playlisty sdílené na tomto podu"
+
+#: front/src/components/mixins/Translations.vue:92
+#: front/src/views/admin/library/AlbumDetail.vue:163
+#: front/src/views/admin/library/ArtistDetail.vue:151
+#: front/src/views/admin/library/TrackDetail.vue:215
+#: front/src/components/mixins/Translations.vue:93
+msgctxt "*/*/*/Noun"
+msgid "Listenings"
+msgstr "Poslechy"
+
+#: front/src/components/audio/track/Table.vue:25
+#: front/src/components/library/ArtistDetail.vue:28
+msgctxt "Content/*/Button.Label"
+msgid "Load more…"
+msgstr "Načíst další…"
+
+#: front/src/views/content/libraries/Detail.vue:21
+msgctxt "Content/Library/Paragraph"
+msgid "Loading followers…"
+msgstr "Načítání sledujících…"
+
+#: front/src/views/content/libraries/Home.vue:3
+msgctxt "Content/Library/Paragraph"
+msgid "Loading Libraries…"
+msgstr "Načítání knihoven…"
+
+#: front/src/views/content/libraries/Detail.vue:3
+#: front/src/views/content/libraries/Upload.vue:3
+msgctxt "Content/Library/Paragraph"
+msgid "Loading library data…"
+msgstr "Načítání dat knihovny…"
+
+#: front/src/views/Notifications.vue:84
+msgctxt "Content/Notifications/Paragraph"
+msgid "Loading notifications…"
+msgstr "Načítání upozornění…"
+
+#: front/src/views/content/remote/Home.vue:3
+msgctxt "Content/Library/Paragraph"
+msgid "Loading remote libraries…"
+msgstr "Načítání vzdálených knihoven…"
+
+#: front/src/views/content/libraries/Quota.vue:4
+msgctxt "Content/Library/Paragraph"
+msgid "Loading usage data…"
+msgstr "Načítání informací o využití…"
+
+#: front/src/components/favorites/List.vue:5
+msgctxt "Content/Favorites/Message"
+msgid "Loading your favorites…"
+msgstr "Načítání vašich oblíbených…"
+
+#: front/src/components/manage/library/AlbumsTable.vue:65
+#: front/src/components/manage/library/ArtistsTable.vue:58
+#: front/src/components/manage/library/LibrariesTable.vue:75
+#: front/src/components/manage/library/TracksTable.vue:71
+#: front/src/components/manage/library/UploadsTable.vue:99
+#: front/src/components/manage/moderation/ReportCard.vue:173
+#: front/src/views/admin/library/AlbumDetail.vue:19
+#: front/src/views/admin/library/ArtistDetail.vue:18
+#: front/src/views/admin/library/LibraryDetail.vue:18
+#: front/src/views/admin/library/TrackDetail.vue:18
+#: front/src/views/admin/library/UploadDetail.vue:19
+msgctxt "Content/Moderation/*/Short, Noun"
+msgid "Local"
+msgstr "Místní"
+
+#: front/src/components/manage/moderation/AccountsTable.vue:59
+#: front/src/views/admin/moderation/AccountsDetail.vue:18
+msgctxt "Content/Moderation/*/Short, Noun"
+msgid "Local account"
+msgstr "Místní účet"
+
+#: front/src/components/Home.vue:96 src/views/auth/Login.vue:29
+msgctxt "Head/Login/Title"
+msgid "Log In"
+msgstr "Přihlásit se"
+
+#: front/src/views/auth/Login.vue:4
+msgctxt "Content/Login/Title/Verb"
+msgid "Log in to your Funkwhale account"
+msgstr "Přihlásit k vašemu Funkwhale účtu"
+
+#: front/src/components/auth/Logout.vue:20
+msgctxt "Head/Login/Title"
+msgid "Log Out"
+msgstr "Odhlásit se"
+
+#: front/src/components/Sidebar.vue:38
+msgctxt "Sidebar/Profile/List item.Link"
+msgid "Logged in as %{ username }"
+msgstr "Přihlášen jako %{ username }"
+
+#: front/src/components/Sidebar.vue:54 src/components/auth/LoginForm.vue:41
+msgctxt "*/Login/*/Verb"
+msgid "Login"
+msgstr "Přihlášení"
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:148
+msgctxt "Content/*/*/Noun"
+msgid "Login status"
+msgstr "Stav přihlášení"
+
+#: front/src/components/Sidebar.vue:52
+msgctxt "Sidebar/Login/List item.Link/Verb"
+msgid "Logout"
+msgstr "Odhlášení"
+
+#: front/src/views/content/libraries/Home.vue:9
+msgctxt "Content/Library/Paragraph"
+msgid "Looks like you don't have a library, it's time to create one."
+msgstr "Zdá se že nemáte žádnou knihovnu, je na čase nějakou vytvořit."
+
+#: front/src/components/audio/Player.vue:658
+#: src/components/audio/Player.vue:659
+msgctxt "Sidebar/Player/Icon.Tooltip"
+msgid "Looping disabled. Click to switch to single-track looping."
+msgstr "Opakování vypnuto. Klikněte pro opakování jedné stopy."
+
+#: front/src/components/audio/Player.vue:661
+#: src/components/audio/Player.vue:662
+msgctxt "Sidebar/Player/Icon.Tooltip"
+msgid "Looping on a single track. Click to switch to whole queue looping."
+msgstr "Opakování jedné stopy. Klikněte pro opakování celé fronty."
+
+#: front/src/components/audio/Player.vue:664
+#: src/components/audio/Player.vue:665
+msgctxt "Sidebar/Player/Icon.Tooltip"
+msgid "Looping on whole queue. Click to disable looping."
+msgstr "Opakování celé fronty. Klikněte pro vypnutí opakování."
+
+#: front/src/components/Sidebar.vue:230
+msgctxt "Sidebar/*/Hidden text"
+msgid "Main menu"
+msgstr "Hlavní menu"
+
+#: front/src/views/admin/library/Base.vue:34
+msgctxt "Head/Admin/Title"
+msgid "Manage library"
+msgstr "Spravovat knihovnu"
+
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:8
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Manage moderation rules for %{ obj }"
+msgstr "Spravovat pravidla moderování pro %{ obj }"
+
+#: front/src/components/playlists/PlaylistModal.vue:3
+msgctxt "Popup/Playlist/Title/Verb"
+msgid "Manage playlists"
+msgstr "Spravovat playlisty"
+
+#: front/src/views/admin/users/Base.vue:20
+msgctxt "Head/Admin/Title"
+msgid "Manage users"
+msgstr "Spravovat uživatele"
+
+#: front/src/views/playlists/List.vue:8
+msgctxt "Content/Playlist/Button.Label/Verb"
+msgid "Manage your playlists"
+msgstr "Spravovat vaše playlisty"
+
+#: front/src/views/Notifications.vue:79
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Mark all as read"
+msgstr "Označit vše jako přečtené"
+
+#: front/src/components/notifications/NotificationRow.vue:46
+msgctxt "Content/Notifications/Button.Tooltip/Verb"
+msgid "Mark as read"
+msgstr "Označit jako přečtené"
+
+#: front/src/components/notifications/NotificationRow.vue:47
+msgctxt "Content/Notifications/Button.Tooltip/Verb"
+msgid "Mark as unread"
+msgstr "Označit jako nepřečtené"
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:321
+msgctxt "Content/*/*/Unit"
+msgid "MB"
+msgstr "MB"
+
+#: front/src/components/audio/Player.vue:651
+msgctxt "Sidebar/Player/Hidden text"
+msgid "Media player"
+msgstr "Hudební přehrávač"
+
+#: front/src/components/auth/Profile.vue:12
+msgctxt "Content/Profile/Paragraph"
+msgid "Member since %{ date }"
+msgstr "ÄŒlenem od %{ date }"
+
+#: front/src/components/manage/moderation/ReportCard.vue:109
+#: front/src/components/moderation/ReportModal.vue:41
+msgctxt "*/*/Field.Label/Noun"
+msgid "Message"
+msgstr "Zpráva"
+
+#: front/src/components/Footer.vue:32
+msgctxt "Footer/*/List item.Link"
+msgid "Mobile and desktop apps"
+msgstr "Aplikace pro mobily a desktop"
+
+#: front/src/components/Home.vue:143
+msgctxt "Content/Home/Link"
+msgid "Mobile apps"
+msgstr "Aplikace pro mobily"
+
+#: front/src/components/Sidebar.vue:96
+#: src/components/manage/users/UsersTable.vue:178
+#: front/src/views/admin/Settings.vue:85
+#: front/src/views/admin/moderation/AccountsDetail.vue:522
+#: front/src/views/admin/moderation/Base.vue:43
+msgctxt "*/Moderation/*"
+msgid "Moderation"
+msgstr "Moderování"
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:78
+#: front/src/views/admin/moderation/DomainsDetail.vue:70
+msgctxt "Content/Moderation/Card.Paragraph"
+msgid "Moderation policies help you control how your instance interact with a given domain or account."
+msgstr "Zásady moderování vám pomáhají řídit interakci mezi vaší instancí a danou doménou nebo účtem."
+
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:4
+msgctxt "Content/Moderation/Button.Label"
+msgid "Moderation rules…"
+msgstr "Pravidla moderace…"
+
+#: front/src/components/library/EditCard.vue:5
+msgctxt "Content/Library/Card/Short"
+msgid "Modification %{ id }"
+msgstr "Úprava %{ id }"
+
+#: front/src/components/mixins/Translations.vue:58
+#: front/src/components/mixins/Translations.vue:59
+msgctxt "Content/Playlist/Dropdown/Noun"
+msgid "Modification date"
+msgstr "Datum úpravy"
+
+#: front/src/components/audio/PlayButton.vue:100
+#: front/src/components/library/AlbumBase.vue:43
+#: front/src/components/library/ArtistBase.vue:54
+#: front/src/components/library/TrackBase.vue:59
+msgctxt "*/*/Button.Label/Noun"
+msgid "More…"
+msgstr "Další…"
+
+#: front/src/components/Sidebar.vue:63 src/views/admin/Settings.vue:82
+msgctxt "*/*/*/Noun"
+msgid "Music"
+msgstr "Hudba"
+
+#: front/src/components/audio/Player.vue:657
+msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
+msgid "Mute"
+msgstr "Ztišit"
+
+#: front/src/components/manage/moderation/InstancePolicyCard.vue:24
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:115
+msgctxt "Content/Moderation/*/Verb"
+msgid "Mute activity"
+msgstr "Ztišit aktivitu"
+
+#: front/src/components/manage/moderation/InstancePolicyCard.vue:28
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:119
+msgctxt "Content/Moderation/*/Verb"
+msgid "Mute notifications"
+msgstr "Ztišit oznámení"
+
+#: front/src/components/Sidebar.vue:34
+msgctxt "Sidebar/Profile/Title"
+msgid "My account"
+msgstr "Můj účet"
+
+#: front/src/components/library/radios/Builder.vue:238
+msgctxt "Content/Radio/Input.Placeholder"
+msgid "My awesome description"
+msgstr "Můj úžasný popis"
+
+#: front/src/views/content/libraries/Form.vue:72
+msgctxt "Content/Library/Input.Placeholder"
+msgid "My awesome library"
+msgstr "Moje úžasná knihovna"
+
+#: front/src/components/playlists/Form.vue:76
+msgctxt "Content/Playlist/Input.Placeholder"
+msgid "My awesome playlist"
+msgstr "Můj úžasný playlist"
+
+#: front/src/components/library/radios/Builder.vue:237
+msgctxt "Content/Radio/Input.Placeholder"
+msgid "My awesome radio"
+msgstr "Moje úžasné rádio"
+
+#: front/src/views/content/libraries/Home.vue:6
+msgctxt "Content/Library/Title"
+msgid "My libraries"
+msgstr "Moje knihovny"
+
+#: front/src/components/About.vue:105 src/components/audio/track/Row.vue:40
+#: front/src/components/library/EditCard.vue:60
+#: front/src/components/library/EditForm.vue:70
+#: front/src/components/library/TrackDetail.vue:34
+#: front/src/components/library/TrackDetail.vue:43
+#: front/src/components/library/TrackDetail.vue:52
+#: front/src/components/library/TrackDetail.vue:61
+#: front/src/components/manage/library/AlbumsTable.vue:73
+#: front/src/components/manage/library/TracksTable.vue:76
+#: front/src/components/manage/library/UploadsTable.vue:121
+#: front/src/components/manage/library/UploadsTable.vue:128
+#: front/src/components/manage/moderation/ReportCard.vue:78
+#: front/src/components/manage/moderation/ReportCard.vue:87
+#: front/src/components/manage/moderation/ReportCard.vue:193
+#: front/src/components/manage/users/UsersTable.vue:62
+#: front/src/views/admin/library/UploadDetail.vue:179
+#: front/src/views/admin/library/UploadDetail.vue:214
+#: front/src/views/admin/library/UploadDetail.vue:233
+#: front/src/views/admin/library/UploadDetail.vue:244
+#: front/src/views/admin/library/UploadDetail.vue:257
+#: front/src/views/admin/moderation/AccountsDetail.vue:193
+#: front/src/views/admin/moderation/DomainsDetail.vue:119
+#: front/src/views/content/libraries/FilesTable.vue:95
+#: front/src/views/content/libraries/FilesTable.vue:101
+msgctxt "*/*/*"
+msgid "N/A"
+msgstr "N/A"
+
+#: front/src/components/auth/ApplicationForm.vue:9
+#: front/src/components/auth/Settings.vue:133
+#: front/src/components/manage/library/ArtistsTable.vue:39
+#: front/src/components/manage/library/LibrariesTable.vue:48
+#: front/src/components/manage/library/TagsTable.vue:41
+#: front/src/components/manage/library/UploadsTable.vue:59
+#: front/src/components/manage/moderation/AccountsTable.vue:39
+#: front/src/components/manage/moderation/DomainsTable.vue:46
+#: front/src/components/mixins/Translations.vue:63
+#: front/src/components/playlists/PlaylistModal.vue:45
+#: front/src/views/admin/library/ArtistDetail.vue:103
+#: front/src/views/admin/library/LibraryDetail.vue:85
+#: front/src/views/admin/library/TagDetail.vue:68
+#: front/src/views/admin/library/UploadDetail.vue:92
+#: front/src/views/admin/moderation/DomainsDetail.vue:134
+#: front/src/views/content/libraries/Form.vue:10 src/edits.js:17
+#: front/src/components/mixins/Translations.vue:64
+msgctxt "*/*/*/Noun"
+msgid "Name"
+msgstr "Název"
+
+#: front/src/views/Notifications.vue:24 src/views/Notifications.vue:58
+msgctxt "*/*/*"
+msgid "Never"
+msgstr "Nikdy"
+
+#: front/src/components/auth/Settings.vue:88
+#: front/src/views/auth/PasswordResetConfirm.vue:14
+msgctxt "Content/Settings/Input.Label"
+msgid "New password"
+msgstr "Nové heslo"
+
+#: front/src/components/Sidebar.vue:177
+msgctxt "Sidebar/Player/Paragraph"
+msgid "New tracks will be appended here automatically."
+msgstr "Nové stopy se sem přidají automaticky."
+
+#: front/src/components/library/EditCard.vue:47
+msgctxt "Content/Library/Card.Table.Header/Short"
+msgid "New value"
+msgstr "Nová hodnota"
+
+#: front/src/components/audio/Player.vue:655
+msgctxt "Sidebar/Player/Icon.Tooltip"
+msgid "Next track"
+msgstr "Další stopa"
+
+#: front/src/components/Sidebar.vue:134
+#: front/src/components/manage/moderation/DomainsTable.vue:13
+#: front/src/views/admin/moderation/DomainsDetail.vue:110
+msgctxt "*/*/*"
+msgid "No"
+msgstr "Ne"
+
+#: front/src/components/audio/Search.vue:25
+msgctxt "Content/Search/Paragraph"
+msgid "No album matched your query"
+msgstr "Žádné album neodpovídá zadání"
+
+#: front/src/components/audio/Search.vue:16
+msgctxt "Content/Search/Paragraph"
+msgid "No artist matched your query"
+msgstr "Žádný interpret neodpovídá zadání"
+
+#: front/src/components/library/TrackDetail.vue:14
+msgctxt "Content/Track/Table.Paragraph"
+msgid "No copyright information available for this track"
+msgstr "Tato stopa neobsahuje informaci o autorských právech"
+
+#: front/src/components/About.vue:25 src/components/Home.vue:25
+msgctxt "Content/Home/Paragraph"
+msgid "No description available."
+msgstr "Popis není dostupný."
+
+#: front/src/components/library/TrackDetail.vue:25
+msgctxt "Content/Track/Table.Paragraph"
+msgid "No licensing information for this track"
+msgstr "Tato stopa neobsahuje informaci o licenci"
+
+#: front/src/components/federation/LibraryWidget.vue:6
+msgctxt "Content/Federation/Paragraph"
+msgid "No matching library."
+msgstr "Žádná odpovídající knihovna."
+
+#: front/src/views/Notifications.vue:93
+msgctxt "Content/Notifications/Paragraph"
+msgid "No notification to show."
+msgstr "Žádná oznámení ke zobrazení."
+
+#: front/src/components/common/EmptyState.vue:7
+msgctxt "Content/*/Paragraph"
+msgid "No results were found."
+msgstr "Žádné výsledky nebyly nalezeny."
+
+#: front/src/components/About.vue:32
+msgctxt "Content/Home/Paragraph"
+msgid "No rules available."
+msgstr "Nejsou dostupná žádná pravidla."
+
+#: front/src/components/About.vue:39
+msgctxt "Content/Home/Paragraph"
+msgid "No terms available."
+msgstr "Bez podmínek užití."
+
+#: front/src/components/mixins/Translations.vue:10
+#: front/src/components/mixins/Translations.vue:11
+msgctxt "Content/Settings/Dropdown"
+msgid "Nobody except me"
+msgstr "Nikdo kromÄ› mÄ›"
+
+#: front/src/views/content/libraries/Detail.vue:57
+msgctxt "Content/Library/Paragraph"
+msgid "Nobody is following this library"
+msgstr "Nikdo nesleduje tuto knihovnu"
+
+#: front/src/components/manage/users/InvitationsTable.vue:51
+msgctxt "Content/Admin/Table"
+msgid "Not used"
+msgstr "Nevyužito"
+
+#: front/src/components/Sidebar.vue:46
+#: src/components/mixins/Translations.vue:112
+#: front/src/views/Notifications.vue:151
+#: src/components/mixins/Translations.vue:113
+msgctxt "*/Notifications/*"
+msgid "Notifications"
+msgstr "Oznámení"
+
+#: front/src/components/mixins/Translations.vue:47
+#: front/src/components/mixins/Translations.vue:48
+msgctxt "Content/Moderation/Dropdown"
+msgid "Offensive content"
+msgstr "Urážlivý obsah"
+
+#: front/src/components/Footer.vue:55
+msgctxt "Footer/*/List item.Link"
+msgid "Official website"
+msgstr "Oficiální web"
+
+#: front/src/components/auth/Settings.vue:83
+msgctxt "Content/Settings/Input.Label"
+msgid "Old password"
+msgstr "Staré heslo"
+
+#: front/src/components/library/EditCard.vue:46
+msgctxt "Content/Library/Card.Table.Header/Short"
+msgid "Old value"
+msgstr "Původní hodnota"
+
+#: front/src/components/About.vue:90
+msgctxt "*/*/*/State of registrations"
+msgid "Open"
+msgstr "Otevřít"
+
+#: front/src/components/manage/users/InvitationsTable.vue:20
+msgctxt "Content/Admin/Dropdown/Adjective"
+msgid "Open"
+msgstr "Otevřít"
+
+#: front/src/components/library/ImportStatusModal.vue:56
+msgctxt "Popup/Import/Table.Label/Value"
+msgid "Open a support thread (include the debug information below in your message)"
+msgstr "Založit vlákno na podpoře (vložit informace pro ladění do zprávy)"
+
+#: front/src/components/library/AlbumBase.vue:87
+#: front/src/components/library/ArtistBase.vue:99
+#: front/src/components/library/TagDetail.vue:11
+#: front/src/components/library/TrackBase.vue:103
+#: front/src/components/manage/moderation/ReportCard.vue:128
+msgctxt "Content/Moderation/Link"
+msgid "Open in moderation interface"
+msgstr "Otevřít v rozhraní pro moderaci"
+
+#: front/src/views/admin/library/AlbumDetail.vue:37
+#: front/src/views/admin/library/ArtistDetail.vue:35
+#: front/src/views/admin/library/TagDetail.vue:21
+#: front/src/views/admin/library/TrackDetail.vue:36
+msgctxt "Content/Moderation/Link/Verb"
+msgid "Open local profile"
+msgstr "Otevřít místní profil"
+
+#: front/src/views/admin/library/AlbumDetail.vue:52
+#: front/src/views/admin/library/ArtistDetail.vue:50
+#: front/src/views/admin/library/TrackDetail.vue:51
+msgctxt "Content/Moderation/Link/Verb"
+msgid "Open on MusicBrainz"
+msgstr "Otevřít na MusicBrainz"
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:23
+msgctxt "Content/Moderation/Link/Verb"
+msgid "Open profile"
+msgstr "Otevřít profil"
+
+#: front/src/views/admin/library/AlbumDetail.vue:60
+#: front/src/views/admin/library/ArtistDetail.vue:58
+#: front/src/views/admin/library/LibraryDetail.vue:49
+#: front/src/views/admin/library/TrackDetail.vue:59
+#: front/src/views/admin/library/UploadDetail.vue:50
+#: front/src/views/admin/moderation/AccountsDetail.vue:52
+msgctxt "Content/Moderation/Link/Verb"
+msgid "Open remote profile"
+msgstr "Otevřít vzdálený profil"
+
+#: front/src/views/admin/moderation/DomainsDetail.vue:16
+msgctxt "Content/Moderation/Link/Verb"
+msgid "Open website"
+msgstr "Otevřít web"
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:40
+msgctxt "Content/Moderation/Card.Title"
+msgid "Or customize your rule"
+msgstr "Nebo upravte vaše pravidlo"
+
+#: front/src/components/favorites/List.vue:32
+#: src/components/library/Radios.vue:41
+#: front/src/components/manage/library/EditsCardList.vue:37
+#: front/src/components/manage/users/UsersTable.vue:17
+#: front/src/views/admin/moderation/ReportsList.vue:42
+#: front/src/views/playlists/List.vue:25
+msgctxt "Content/Search/Dropdown.Label/Noun"
+msgid "Order"
+msgstr "Pořadí"
+
+#: front/src/components/favorites/List.vue:24
+#: src/components/library/Albums.vue:15
+#: front/src/components/library/Artists.vue:19
+#: src/components/library/Radios.vue:33
+#: front/src/components/manage/library/AlbumsTable.vue:11
+#: front/src/components/manage/library/ArtistsTable.vue:11
+#: front/src/components/manage/library/EditsCardList.vue:29
+#: front/src/components/manage/library/LibrariesTable.vue:20
+#: front/src/components/manage/library/TagsTable.vue:11
+#: front/src/components/manage/library/TracksTable.vue:11
+#: front/src/components/manage/library/UploadsTable.vue:30
+#: front/src/components/manage/moderation/AccountsTable.vue:11
+#: front/src/components/manage/moderation/DomainsTable.vue:17
+#: front/src/components/manage/users/InvitationsTable.vue:9
+#: front/src/components/manage/users/UsersTable.vue:9
+#: front/src/views/admin/moderation/ReportsList.vue:34
+#: front/src/views/content/libraries/FilesTable.vue:21
+#: front/src/views/playlists/List.vue:17
+msgctxt "Content/Search/Dropdown.Label/Noun"
+msgid "Ordering"
+msgstr "Řazení"
+
+#: front/src/components/library/Albums.vue:27
+#: src/components/library/Artists.vue:27
+#: front/src/components/manage/library/AlbumsTable.vue:19
+#: front/src/components/manage/library/ArtistsTable.vue:19
+#: front/src/components/manage/library/LibrariesTable.vue:28
+#: front/src/components/manage/library/TagsTable.vue:19
+#: front/src/components/manage/library/TracksTable.vue:19
+#: front/src/components/manage/library/UploadsTable.vue:38
+#: front/src/components/manage/moderation/AccountsTable.vue:19
+#: front/src/components/manage/moderation/DomainsTable.vue:25
+#: front/src/views/content/libraries/FilesTable.vue:29
+msgctxt "Content/Search/Dropdown.Label/Noun"
+msgid "Ordering direction"
+msgstr "Směr řazení"
+
+#: front/src/components/mixins/Translations.vue:48
+#: front/src/components/mixins/Translations.vue:49
+msgctxt "Content/Moderation/Dropdown"
+msgid "Other"
+msgstr "Ostatní"
+
+#: front/src/components/manage/moderation/ReportCard.vue:143
+#: front/src/components/manage/users/InvitationsTable.vue:38
+msgctxt "*/*/*"
+msgid "Owner"
+msgstr "Vlastník"
+
+#: front/src/components/PageNotFound.vue:33
+msgctxt "Head/*/Title"
+msgid "Page Not Found"
+msgstr "Stránka nenalezena"
+
+#: front/src/components/PageNotFound.vue:7
+msgctxt "Content/*/Title"
+msgid "Page not found!"
+msgstr "Stránka nenalezena!"
+
+#: front/src/components/Pagination.vue:39
+msgctxt "Content/*/Hidden text/Noun"
+msgid "Pagination"
+msgstr "Stránkování"
+
+#: front/src/components/auth/LoginForm.vue:32
+#: src/components/auth/Settings.vue:291
+#: front/src/components/auth/SignupForm.vue:36
+msgctxt "*/*/*"
+msgid "Password"
+msgstr "Heslo"
+
+#: front/src/components/auth/SubsonicTokenForm.vue:100
+msgctxt "Content/Settings/Message"
+msgid "Password updated"
+msgstr "Heslo změněno"
+
+#: front/src/views/auth/PasswordResetConfirm.vue:28
+msgctxt "Content/Signup/Card.Title"
+msgid "Password updated successfully"
+msgstr "Heslo úspěšně změněno"
+
+#: front/src/components/audio/Player.vue:654
+msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
+msgid "Pause track"
+msgstr "Pozastavit stopu"
+
+#: front/src/components/ShortcutsModal.vue:96
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Pause/play the current track"
+msgstr "Pozastavit/spustit aktuální stopu"
+
+#: front/src/components/manage/moderation/InstancePolicyCard.vue:12
+msgctxt "Content/Moderation/Card.List item"
+msgid "Paused"
+msgstr "Pozastaveno"
+
+#: front/src/components/library/FileUpload.vue:116
+#: front/src/components/manage/library/UploadsTable.vue:23
+#: front/src/components/mixins/Translations.vue:28
+#: front/src/views/content/libraries/FilesTable.vue:14
+#: front/src/components/mixins/Translations.vue:29
+msgctxt "Content/Library/*/Short"
+msgid "Pending"
+msgstr "Čeká"
+
+#: front/src/views/content/libraries/Detail.vue:37
+msgctxt "Content/Library/Table/Short"
+msgid "Pending approval"
+msgstr "Čeká na schválení"
+
+#: front/src/views/content/libraries/Quota.vue:22
+msgctxt "Content/Library/Label"
+msgid "Pending files"
+msgstr "Čekající soubory"
+
+#: front/src/components/Sidebar.vue:232
+msgctxt "Sidebar/Notifications/Hidden text"
+msgid "Pending follow requests"
+msgstr "Čekající žádosti o sledování"
+
+#: front/src/components/library/EditCard.vue:29
+#: front/src/components/manage/library/EditsCardList.vue:18
+msgctxt "Content/Admin/*/Noun"
+msgid "Pending review"
+msgstr "Čekající na kontrolu"
+
+#: front/src/components/Sidebar.vue:233
+msgctxt "Sidebar/Moderation/Hidden text"
+msgid "Pending review edits"
+msgstr "Úpravy čekající na kontrolu"
+
+#: front/src/components/auth/Settings.vue:176
+#: front/src/components/manage/users/UsersTable.vue:42
+#: front/src/views/admin/moderation/AccountsDetail.vue:166
+msgctxt "Content/*/*/Noun"
+msgid "Permissions"
+msgstr "Oprávnění"
+
+#: front/src/components/audio/PlayButton.vue:9
+#: front/src/components/library/TrackBase.vue:24
+msgctxt "*/Queue/Button.Label/Short, Verb"
+msgid "Play"
+msgstr "Přehrát"
+
+#: front/src/components/audio/album/Card.vue:48
+#: front/src/components/library/AlbumBase.vue:21
+#: front/src/components/library/AlbumDetail.vue:11
+#: src/views/playlists/Detail.vue:24
+msgctxt "Content/Queue/Button.Label/Short, Verb"
+msgid "Play all"
+msgstr "Přehrát vše"
+
+#: front/src/components/library/ArtistBase.vue:32
+msgctxt "Content/Artist/Button.Label/Verb"
+msgid "Play all albums"
+msgstr "Přehrát všechna alba"
+
+#: front/src/components/audio/PlayButton.vue:92
+msgctxt "*/Queue/Dropdown/Button/Title"
+msgid "Play next"
+msgstr "Přehrát následující"
+
+#: front/src/components/ShortcutsModal.vue:120
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Play next track"
+msgstr "Přehrát následující stopu"
+
+#: front/src/components/audio/PlayButton.vue:90
+msgctxt "*/Queue/Dropdown/Button/Title"
+msgid "Play now"
+msgstr "Přehrát teď"
+
+#: front/src/components/ShortcutsModal.vue:116
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Play previous track"
+msgstr "Přehrát předchozí stopu"
+
+#: front/src/components/audio/PlayButton.vue:93
+msgctxt "*/Queue/Dropdown/Button/Title"
+msgid "Play similar songs"
+msgstr "Hrát podobnou hudbu"
+
+#: front/src/components/Sidebar.vue:231
+msgctxt "Sidebar/Player/Hidden text"
+msgid "Play this track"
+msgstr "Přehrát tuto stopu"
+
+#: front/src/components/audio/Player.vue:653
+msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
+msgid "Play track"
+msgstr "Přehrát stopu"
+
+#: front/src/components/mixins/Report.vue:66 src/views/playlists/Detail.vue:121
+#: front/src/components/mixins/Report.vue:67
+msgctxt "*/*/*"
+msgid "Playlist"
+msgstr "Playlist"
+
+#: front/src/views/playlists/Detail.vue:12
+msgctxt "Content/Playlist/Header.Subtitle"
+msgid "Playlist containing %{ count } track, by %{ username }"
+msgid_plural "Playlist containing %{ count } tracks, by %{ username }"
+msgstr[0] "Playlist obsahující %{ count } stopu, od %{ username }"
+msgstr[1] "Playlist obsahující %{ count } stopy, od %{ username }"
+msgstr[2] "Playlist obsahující %{ count } stop, od %{ username }"
+
+#: front/src/components/playlists/Form.vue:9
+msgctxt "Content/Playlist/Message"
+msgid "Playlist created"
+msgstr "Playlist vytvořen"
+
+#: front/src/components/playlists/Editor.vue:4
+msgctxt "Content/Playlist/Title"
+msgid "Playlist editor"
+msgstr "Editor playlistu"
+
+#: front/src/components/playlists/Form.vue:21
+msgctxt "Content/Playlist/Input.Label"
+msgid "Playlist name"
+msgstr "Název playlistu"
+
+#: front/src/components/playlists/Form.vue:6
+msgctxt "Content/Playlist/Message"
+msgid "Playlist updated"
+msgstr "Playlist aktualizován"
+
+#: front/src/components/playlists/Form.vue:25
+msgctxt "Content/Playlist/Dropdown.Label"
+msgid "Playlist visibility"
+msgstr "Viditelnost playlistu"
+
+#: front/src/components/Sidebar.vue:71 src/components/library/Home.vue:16
+#: front/src/components/library/Library.vue:16
+#: front/src/components/mixins/Translations.vue:100
+#: src/views/admin/Settings.vue:83
+#: front/src/views/admin/library/AlbumDetail.vue:179
+#: front/src/views/admin/library/ArtistDetail.vue:167
+#: front/src/views/admin/library/TrackDetail.vue:231
+#: src/views/playlists/List.vue:106
+#: front/src/components/mixins/Translations.vue:101
+msgctxt "*/*/*"
+msgid "Playlists"
+msgstr "Playlisty"
+
+#: front/src/components/audio/EmbedWizard.vue:9
+msgctxt "Content/Embed/Message"
+msgid "Please contact your admins and ask them to update the corresponding setting."
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:79
+msgctxt "Content/Settings/Error message.List item/Call to action"
+msgid "Please double-check your password is correct"
+msgstr "Prosím ujistěte se, že jste zadali správné heslo"
+
+#: front/src/components/auth/LoginForm.vue:5
+msgctxt "Content/Login/Error message.List item/Call to action"
+msgid "Please double-check your username/password couple is correct"
+msgstr "Prosím ujistěte se, že zadané uživatelské jméno a heslo je správné"
+
+#: front/src/components/auth/Settings.vue:46
+msgctxt "Content/Settings/Paragraph"
+msgid "PNG, GIF or JPG. At most 2MB. Will be downscaled to 400x400px."
+msgstr "PNG, GIF nebo JPG. Maximálně 2MB. Bude zmenšen na 400x400px."
+
+#: front/src/components/About.vue:72
+msgctxt "Content/About/Header/Name"
+msgid "Pod configuration"
+msgstr "Konfigurace podu"
+
+#: front/src/views/admin/library/TrackDetail.vue:143 src/edits.js:70
+msgctxt "*/*/*/Short, Noun"
+msgid "Position"
+msgstr "Pozice"
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:118
+msgctxt "Content/Moderation/Help text"
+msgid "Prevent account or domain from triggering notifications, except from followers."
+msgstr "Zabránit účtu nebo doméně vyvolat oznámení (neplatí pro sledující)."
+
+#: front/src/components/audio/EmbedWizard.vue:43
+msgctxt "Popup/Embed/Title/Noun"
+msgid "Preview"
+msgstr "Náhled"
+
+#: front/src/components/audio/Player.vue:652
+msgctxt "Sidebar/Player/Icon.Tooltip"
+msgid "Previous track"
+msgstr "Předchozí stopa"
+
+#: front/src/components/mixins/Translations.vue:15
+#: front/src/components/mixins/Translations.vue:16
+msgctxt "Content/Settings/Dropdown/Short"
+msgid "Private"
+msgstr "Soukromé"
+
+#: front/src/views/content/remote/Card.vue:56
+msgctxt "Content/Library/Card.List item"
+msgid "Problem during scanning"
+msgstr "Během skenování se vyskytl problém"
+
+#: front/src/components/library/FileUpload.vue:57
+msgctxt "Content/Library/Button.Label"
+msgid "Proceed"
+msgstr "Pokračovat"
+
+#: front/src/views/auth/EmailConfirm.vue:26
+#: front/src/views/auth/PasswordResetConfirm.vue:31
+msgctxt "Content/Signup/Link/Verb"
+msgid "Proceed to login"
+msgstr "Pokračovat k přihlášení"
+
+#: front/src/components/library/FileUpload.vue:17
+msgctxt "Content/Library/Tab.Title/Short"
+msgid "Processing"
+msgstr "Zpracování"
+
+#: front/src/components/mixins/Translations.vue:80
+#: front/src/components/mixins/Translations.vue:81
+msgctxt "Content/OAuth Scopes/Label"
+msgid "Profile"
+msgstr "Profil"
+
+#: front/src/components/auth/SignupForm.vue:5
+msgctxt "Content/Signup/Form/Paragraph"
+msgid "Public registrations are not possible on this instance. You will need an invitation code to sign up."
+msgstr "Registrace není na této instanci povolena. Pro založení účtu budete potřebovat pozvánku."
+
+#: front/src/components/manage/moderation/AccountsTable.vue:188
+#: front/src/components/manage/moderation/DomainsTable.vue:186
+#: front/src/views/content/libraries/Quota.vue:36
+#: front/src/views/content/libraries/Quota.vue:39
+#: front/src/views/content/libraries/Quota.vue:62
+#: front/src/views/content/libraries/Quota.vue:65
+#: front/src/views/content/libraries/Quota.vue:88
+#: front/src/views/content/libraries/Quota.vue:91
+msgctxt "*/*/*/Verb"
+msgid "Purge"
+msgstr "Vyčistit"
+
+#: front/src/views/content/libraries/Quota.vue:89
+msgctxt "Popup/Library/Title"
+msgid "Purge errored files?"
+msgstr "Vyčistit soubory s chybou?"
+
+#: front/src/views/content/libraries/Quota.vue:37
+msgctxt "Popup/Library/Title"
+msgid "Purge pending files?"
+msgstr "Vyčistit čekající soubory?"
+
+#: front/src/views/content/libraries/Quota.vue:63
+msgctxt "Popup/Library/Title"
+msgid "Purge skipped files?"
+msgstr "Vyčistit vynechané soubory?"
+
+#: front/src/components/Sidebar.vue:20
+msgctxt "Sidebar/Queue/Tab.Title/Noun"
+msgid "Queue"
+msgstr "Fronta"
+
+#: front/src/components/audio/Player.vue:329
+msgctxt "Content/Queue/Message"
+msgid "Queue shuffled!"
+msgstr "Fronta zamíchána!"
+
+#: front/src/views/radios/Detail.vue:80
+msgctxt "Head/Radio/Title"
+msgid "Radio"
+msgstr "Rádio"
+
+#: front/src/components/library/radios/Builder.vue:235
+msgctxt "Head/Radio/Title"
+msgid "Radio Builder"
+msgstr "Výroba rádia"
+
+#: front/src/components/library/radios/Builder.vue:15
+msgctxt "Content/Radio/Message"
+msgid "Radio created"
+msgstr "Rádio vytvořeno"
+
+#: front/src/components/library/radios/Builder.vue:21
+msgctxt "Content/Radio/Input.Label/Noun"
+msgid "Radio name"
+msgstr "Název rádia"
+
+#: front/src/components/library/radios/Builder.vue:12
+msgctxt "Content/Radio/Message"
+msgid "Radio updated"
+msgstr "Rádio aktualizováno"
+
+#: front/src/components/library/Library.vue:13
+#: src/components/library/Radios.vue:142
+#: front/src/components/mixins/Translations.vue:104
+#: front/src/components/mixins/Translations.vue:105
+msgctxt "*/*/*"
+msgid "Radios"
+msgstr "Rádia"
+
+#: front/src/components/auth/ApplicationForm.vue:151
+msgctxt "Content/OAuth Scopes/Label/Verb"
+msgid "Read"
+msgstr "Číst"
+
+#: front/src/components/library/ImportStatusModal.vue:51
+msgctxt "Popup/Import/Table.Label/Value"
+msgid "Read our documentation for this error"
+msgstr "Přečíst dokumentaci k této chybě"
+
+#: front/src/components/auth/Authorize.vue:24
+msgctxt "Content/Auth/Label/Noun"
+msgid "Read-only"
+msgstr "Pouze ke čtení"
+
+#: front/src/components/auth/ApplicationForm.vue:152
+msgctxt "Content/OAuth Scopes/Help Text"
+msgid "Read-only access to user data"
+msgstr "Přístup k uživatelským datům pouze ke čtení"
+
+#: front/src/components/manage/moderation/InstancePolicyCard.vue:39
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:25
+msgctxt "Content/Moderation/*/Noun"
+msgid "Reason"
+msgstr "Důvod"
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:252
+#: front/src/views/admin/moderation/DomainsDetail.vue:216
+msgctxt "Content/Moderation/Table.Label/Noun"
+msgid "Received library follows"
+msgstr "Přijatá sledování knihovny"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:48
+#: front/src/components/mixins/Translations.vue:74
+#: front/src/components/mixins/Translations.vue:75
+msgctxt "Content/Moderation/*/Noun"
+msgid "Received messages"
+msgstr "Přijaté zprávy"
+
+#: front/src/components/library/EditForm.vue:27
+msgctxt "Content/Library/Paragraph"
+msgid "Recent edits"
+msgstr "Přijaté úpravy"
+
+#: front/src/components/library/EditForm.vue:17
+msgctxt "Content/Library/Paragraph"
+msgid "Recent edits awaiting review"
+msgstr "Poslední úpravy čekající na kontrolu"
+
+#: front/src/components/library/Home.vue:24
+msgctxt "Content/Home/Title"
+msgid "Recently added"
+msgstr "Poslední přidané"
+
+#: front/src/components/Home.vue:167
+msgctxt "Content/Home/Title"
+msgid "Recently added albums"
+msgstr "Nedávno přidaná alba"
+
+#: front/src/components/library/Home.vue:11
+msgctxt "Content/Home/Title"
+msgid "Recently favorited"
+msgstr "Poslední oblíbené"
+
+#: front/src/components/library/Home.vue:6
+msgctxt "Content/Home/Title"
+msgid "Recently listened"
+msgstr "Poslední poslechnuté"
+
+#: front/src/components/auth/ApplicationForm.vue:13
+msgctxt "Content/Applications/Input.Label/Noun"
+msgid "Redirect URI"
+msgstr "Adresa přesměrování"
+
+#: front/src/components/auth/Settings.vue:125
+#: src/components/auth/Settings.vue:170
+#: front/src/components/common/EmptyState.vue:16
+#: src/views/content/remote/Home.vue:15
+msgctxt "Content/*/Button.Label/Short, Verb"
+msgid "Refresh"
+msgstr "Obnovit"
+
+#: front/src/components/federation/FetchButton.vue:20
+msgctxt "Popup/*/Message.Title"
+msgid "Refresh error"
+msgstr "Chyba obnovení"
+
+#: front/src/views/admin/library/AlbumDetail.vue:56
+#: front/src/views/admin/library/ArtistDetail.vue:54
+#: front/src/views/admin/library/TrackDetail.vue:55
+msgctxt "Content/Moderation/Button/Verb"
+msgid "Refresh from remote server"
+msgstr "Obnovit ze vzdáleného serveru"
+
+#: front/src/views/admin/moderation/DomainsDetail.vue:164
+msgctxt "Content/Moderation/Button.Label/Verb"
+msgid "Refresh node info"
+msgstr "Obnovit informace o uzlu"
+
+#: front/src/components/federation/FetchButton.vue:79
+msgctxt "Popup/*/Message.Title"
+msgid "Refresh pending"
+msgstr "Obnovit čekající"
+
+#: front/src/components/federation/FetchButton.vue:80
+msgctxt "Popup/*/Message.Content"
+msgid "Refresh request wasn't proceed in time by our server. It will be processed later."
+msgstr "Požadavek o obnovení nebyl serverem zpracován ve vymezeném čase. Bude zpracován později."
+
+#: front/src/components/federation/FetchButton.vue:16
+msgctxt "Popup/*/Message.Title"
+msgid "Refresh successful"
+msgstr "Obnovení úspěšné"
+
+#: front/src/components/common/ActionTable.vue:275
+msgctxt "Content/*/Button.Tooltip/Verb"
+msgid "Refresh table content"
+msgstr "Obnovit obsah tabulky"
+
+#: front/src/components/federation/FetchButton.vue:12
+msgctxt "Popup/*/Message.Title"
+msgid "Refresh was skipped"
+msgstr "Obnovení bylo přeskočeno"
+
+#: front/src/components/federation/FetchButton.vue:7
+msgctxt "Popup/*/Title"
+msgid "Refreshing object from remote…"
+msgstr "Obnova objektu ze vzdáleného serveru…"
+
+#: front/src/components/About.vue:86
+msgctxt "*/*/*"
+msgid "Registrations"
+msgstr "Registrace"
+
+#: front/src/components/manage/users/UsersTable.vue:72
+msgctxt "Content/Admin/Table, User role"
+msgid "Regular user"
+msgstr "Běžný uživatel"
+
+#: front/src/components/library/EditCard.vue:87
+#: front/src/views/content/libraries/Detail.vue:51
+msgctxt "Content/Library/Button.Label"
+msgid "Reject"
+msgstr "Odmítnout"
+
+#: front/src/components/manage/moderation/InstancePolicyCard.vue:32
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:123
+msgctxt "Content/Moderation/*/Verb"
+msgid "Reject media"
+msgstr "Odmítnout mediální soubory"
+
+#: front/src/components/library/EditCard.vue:33
+#: front/src/components/manage/library/EditsCardList.vue:24
+#: front/src/views/content/libraries/Detail.vue:43
+msgctxt "Content/Library/*/Short"
+msgid "Rejected"
+msgstr "Odmítnuto"
+
+#: front/src/components/manage/library/AlbumsTable.vue:43
+#: front/src/components/mixins/Translations.vue:54 src/edits.js:43
+#: front/src/components/mixins/Translations.vue:55
+msgctxt "Content/*/*/Noun"
+msgid "Release date"
+msgstr "Datum vydání"
+
+#: front/src/components/library/FileUpload.vue:63
+msgctxt "Content/Library/Paragraph"
+msgid "Remaining storage space"
+msgstr "Zbývající prostor úložiště"
+
+#: front/src/views/Notifications.vue:18 src/views/Notifications.vue:52
+msgctxt "Content/Notifications/Label"
+msgid "Remind me in:"
+msgstr "Připomenout za:"
+
+#: front/src/views/content/remote/Home.vue:6
+msgctxt "Content/Library/Title/Noun"
+msgid "Remote libraries"
+msgstr "Vzdálené knihovny"
+
+#: front/src/views/content/remote/Home.vue:7
+msgctxt "Content/Library/Paragraph"
+msgid "Remote libraries are owned by other users on the network. You can access them as long as they are public or you are granted access."
+msgstr "Vzdálené knihovny jsou vlastněny ostatními uživateli na síti. Můžete k nim přistupovat pokud jsou veřejné, nebo pokud je vám udělen přístup."
+
+#: front/src/components/library/radios/Filter.vue:59
+msgctxt "Content/Radio/Button.Label/Verb"
+msgid "Remove"
+msgstr "Odstranit"
+
+#: front/src/components/auth/Settings.vue:58
+msgctxt "Content/Settings/Button.Label/Verb"
+msgid "Remove avatar"
+msgstr "Odstranit avatar"
+
+#: front/src/components/library/ArtistDetail.vue:12
+msgctxt "Content/Moderation/Button.Label"
+msgid "Remove filter"
+msgstr "Odstranit filtr"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:198
+#: front/src/views/admin/moderation/DomainsDetail.vue:39
+msgctxt "Content/Moderation/Action/Verb"
+msgid "Remove from allow-list"
+msgstr "Odebrat ze seznamu povolených"
+
+#: front/src/components/favorites/TrackFavoriteIcon.vue:26
+msgctxt "Content/Track/Icon.Tooltip/Verb"
+msgid "Remove from favorites"
+msgstr "Odebrat z oblíbených"
+
+#: front/src/views/content/libraries/Quota.vue:38
+msgctxt "Popup/Library/Paragraph"
+msgid "Removes uploaded but yet to be processed tracks completely, adding the corresponding data to your quota."
+msgstr "Uvolní místo vymazáním nahraných ale zatím nezpracovaných stop."
+
+#: front/src/views/content/libraries/Quota.vue:64
+msgctxt "Popup/Library/Paragraph"
+msgid "Removes uploaded tracks skipped during the import processes completely, adding the corresponding data to your quota."
+msgstr "Uvolní místo vymazáním nahraných stop, které byly přeskočeny během importu."
+
+#: front/src/views/content/libraries/Quota.vue:90
+msgctxt "Popup/Library/Paragraph"
+msgid "Removes uploaded tracks that could not be processed by the server completely, adding the corresponding data to your quota."
+msgstr "Uvolní místo vymazáním nahraných stop, které nemohly být zpracovány serverem."
+
+#: front/src/components/audio/PlayButton.vue:94
+msgctxt "*/Queue/Dropdown/Button/Title"
+msgid "Replace current queue"
+msgstr "Nahradit stávající frontu"
+
+#: front/src/components/mixins/Report.vue:6 src/components/mixins/Report.vue:7
+msgctxt "*/Moderation/*/Verb"
+msgid "Report @%{ username }…"
+msgstr "Ohlásit @%{ username }…"
+
+#: front/src/components/manage/moderation/ReportCard.vue:5
+msgctxt "Content/Moderation/Card/Short"
+msgid "Report %{ id }"
+msgstr "Ohlásit %{ id }"
+
+#: front/src/components/moderation/ReportModal.vue:139
+msgctxt "*/Moderation/Message"
+msgid "Report successfully submitted, thank you"
+msgstr "Hlášení úspěšně odesláno, děkujeme"
+
+#: front/src/components/mixins/Report.vue:36
+#: src/components/mixins/Report.vue:37
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this album…"
+msgstr "Nahlásit toto album…"
+
+#: front/src/components/mixins/Report.vue:50
+#: src/components/mixins/Report.vue:51
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this artist…"
+msgstr "Nahlásit tohoto interpreta…"
+
+#: front/src/components/mixins/Report.vue:72
+#: src/components/mixins/Report.vue:73
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this library…"
+msgstr "Nahlásit tuto knihovnu…"
+
+#: front/src/components/mixins/Report.vue:61
+#: src/components/mixins/Report.vue:62
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this playlist…"
+msgstr "Nahlásit tento playlist…"
+
+#: front/src/components/mixins/Report.vue:23
+#: src/components/mixins/Report.vue:24
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this track…"
+msgstr "Nahlásit tuto stopu…"
+
+#: front/src/components/audio/PlayButton.vue:95
+msgctxt "*/Moderation/*/Button/Label,Verb"
+msgid "Report…"
+msgstr "Ohlásit…"
+
+#: front/src/components/manage/moderation/ReportCard.vue:117
+msgctxt "Content/*/*/Short"
+msgid "Reported object"
+msgstr "Ohlášený objekt"
+
+#: front/src/views/admin/moderation/Base.vue:5
+#: front/src/views/admin/moderation/ReportsList.vue:3
+#: front/src/views/admin/moderation/ReportsList.vue:208
+msgctxt "*/Moderation/*/Noun"
+msgid "Reports"
+msgstr "Hlášení"
+
+#: front/src/components/auth/SubsonicTokenForm.vue:38
+#: front/src/components/auth/SubsonicTokenForm.vue:41
+msgctxt "*/Settings/Button.Label/Verb"
+msgid "Request a new password"
+msgstr "Požádat o nové heslo"
+
+#: front/src/components/auth/SubsonicTokenForm.vue:39
+msgctxt "Popup/Settings/Title"
+msgid "Request a new Subsonic API password?"
+msgstr "Požádat o nové heslo k Subsonic API?"
+
+#: front/src/components/auth/SubsonicTokenForm.vue:47
+msgctxt "Content/Settings/Button.Label/Verb"
+msgid "Request a password"
+msgstr "Požádat o heslo"
+
+#: front/src/components/federation/FetchButton.vue:64
+msgctxt "Popup/*/Loading.Title"
+msgid "Requesting a fetch…"
+msgstr "Posílám požadavek o stažení…"
+
+#: front/src/components/library/EditForm.vue:94
+msgctxt "Content/Library/Button.Label"
+msgid "Reset to initial value"
+msgstr "Resetovat na výchozí hodnotu"
+
+#: front/src/components/auth/LoginForm.vue:34
+#: src/views/auth/PasswordReset.vue:4 front/src/views/auth/PasswordReset.vue:53
+msgctxt "*/Login/*/Verb"
+msgid "Reset your password"
+msgstr "Resetovat heslo"
+
+#: front/src/components/manage/moderation/ReportCard.vue:83
+msgctxt "Content/*/*/Noun"
+msgid "Resolution date"
+msgstr "Datum vyřešení"
+
+#: front/src/components/manage/moderation/ReportCard.vue:218
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Resolve"
+msgstr "Vyřešit"
+
+#: front/src/components/manage/moderation/ReportCard.vue:62
+#: front/src/views/admin/moderation/ReportsList.vue:20
+msgctxt "Content/*/*/Short"
+msgid "Resolved"
+msgstr "Vyřešeno"
+
+#: front/src/views/content/libraries/FilesTable.vue:223
+msgctxt "Content/Library/Dropdown/Verb"
+msgid "Restart import"
+msgstr "Znovu spustit import"
+
+#: front/src/components/library/EditForm.vue:31
+msgctxt "Content/Library/Button.Label"
+msgid "Restrict to unreviewed edits"
+msgstr "Omezit na úpravy bez revize"
+
+#: front/src/components/favorites/List.vue:39
+#: src/components/library/Albums.vue:34
+#: front/src/components/library/Artists.vue:34
+#: src/components/library/Radios.vue:52 front/src/views/playlists/List.vue:32
+msgctxt "Content/Search/Dropdown.Label/Noun"
+msgid "Results per page"
+msgstr "Výsledků na stránku"
+
+#: front/src/views/auth/EmailConfirm.vue:17
+msgctxt "Content/Signup/Link/Verb"
+msgid "Return to login"
+msgstr "Návrat k přihlášení"
+
+#: front/src/components/library/ArtistDetail.vue:9
+msgctxt "Content/Moderation/Link"
+msgid "Review my filters"
+msgstr "Přehled filtrů"
+
+#: front/src/components/auth/Settings.vue:192
+msgctxt "*/*/*/Verb"
+msgid "Revoke"
+msgstr "Odvolat"
+
+#: front/src/components/auth/Settings.vue:195
+msgctxt "*/Settings/Button.Label/Verb"
+msgid "Revoke access"
+msgstr "Odvolat přístupová práva"
+
+#: front/src/components/auth/Settings.vue:193
+msgctxt "Popup/Settings/Title"
+msgid "Revoke access for application \"%{ application }\"?"
+msgstr "Odvolat přístup pro aplikaci \"%{ application }\"?"
+
+#: front/src/components/manage/moderation/InstancePolicyCard.vue:16
+msgctxt "Content/Moderation/Card.Title/Noun"
+msgid "Rule"
+msgstr "Pravidlo"
+
+#: front/src/components/About.vue:28 src/components/About.vue:56
+msgctxt "Content/About/Header"
+msgid "Rules"
+msgstr "Pravidla"
+
+#: front/src/components/admin/SettingsGroup.vue:75
+#: front/src/components/library/radios/Builder.vue:34
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Save"
+msgstr "Uložit"
+
+#: front/src/views/content/remote/Card.vue:203
+msgctxt "Content/Library/Message"
+msgid "Scan launched"
+msgstr "Skenování zahájeno"
+
+#: front/src/views/content/remote/Card.vue:80
+msgctxt "Content/Library/Card.Button.Label/Verb"
+msgid "Scan now"
+msgstr "Skenuj teď"
+
+#: front/src/views/content/remote/Card.vue:48
+msgctxt "Content/Library/Card.List item"
+msgid "Scan pending"
+msgstr "Čeká na sken"
+
+#: front/src/views/content/remote/Card.vue:204
+msgctxt "Content/Library/Message"
+msgid "Scan skipped (previous scan is too recent)"
+msgstr "Skenování vynecháno (příliš brzy po předchozím skenu)"
+
+#: front/src/views/content/remote/Card.vue:60
+msgctxt "Content/Library/Card.List item"
+msgid "Scanned"
+msgstr "Skenováno"
+
+#: front/src/views/content/remote/Card.vue:64
+msgctxt "Content/Library/Card.List item"
+msgid "Scanned with errors"
+msgstr "Skenováno s chybami"
+
+#: front/src/views/content/remote/Card.vue:52
+msgctxt "Content/Library/Card.List item"
+msgid "Scanning… (%{ progress }%)"
+msgstr "Skenuji… (%{ progress }%)"
+
+#: front/src/components/auth/ApplicationForm.vue:22
+#: front/src/components/auth/Settings.vue:226
+msgctxt "Content/*/*/Noun"
+msgid "Scopes"
+msgstr "Pohledy"
+
+#: front/src/components/library/Albums.vue:10
+#: src/components/library/Artists.vue:10
+#: front/src/components/library/Radios.vue:29
+#: front/src/components/manage/library/AlbumsTable.vue:5
+#: front/src/components/manage/library/ArtistsTable.vue:5
+#: front/src/components/manage/library/EditsCardList.vue:6
+#: front/src/components/manage/library/LibrariesTable.vue:5
+#: front/src/components/manage/library/TagsTable.vue:5
+#: front/src/components/manage/library/TracksTable.vue:5
+#: front/src/components/manage/library/UploadsTable.vue:5
+#: front/src/components/manage/moderation/AccountsTable.vue:5
+#: front/src/components/manage/moderation/DomainsTable.vue:5
+#: front/src/components/manage/users/InvitationsTable.vue:5
+#: front/src/components/manage/users/UsersTable.vue:5
+#: front/src/views/admin/moderation/ReportsList.vue:8
+#: front/src/views/content/libraries/FilesTable.vue:5
+#: src/views/playlists/List.vue:13
+msgctxt "Content/Search/Input.Label/Noun"
+msgid "Search"
+msgstr "Hledat"
+
+#: front/src/views/content/remote/ScanForm.vue:9
+msgctxt "Content/Library/Input.Label/Verb"
+msgid "Search a remote library"
+msgstr "Hledat ve vzdálené knihovně"
+
+#: front/src/components/manage/library/EditsCardList.vue:211
+#: front/src/views/admin/moderation/ReportsList.vue:207
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by account, summary, domain…"
+msgstr "Hledat dle účtu, shrnutí, domény…"
+
+#: front/src/components/manage/library/LibrariesTable.vue:191
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by domain, actor, name, description…"
+msgstr "Hledat dle domény, názvu, popisu…"
+
+#: front/src/components/manage/library/UploadsTable.vue:241
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by domain, actor, name, reference, source…"
+msgstr "Hledat dle domény, názvu, odkazu, zdroje…"
+
+#: front/src/components/manage/library/ArtistsTable.vue:164
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by domain, name, MusicBrainz ID…"
+msgstr "Hledat dle domény, názvu, MusicBrainz ID…"
+
+#: front/src/components/manage/library/TracksTable.vue:174
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by domain, title, artist, album, MusicBrainz ID…"
+msgstr "Hledat dle domény, názvu, interpreta, alba, MusicBrainz ID…"
+
+#: front/src/components/manage/library/AlbumsTable.vue:174
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by domain, title, artist, MusicBrainz ID…"
+msgstr "Hledat dle domény, názvu, interpreta, MusicBrainz ID…"
+
+#: front/src/components/manage/moderation/AccountsTable.vue:171
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by domain, username, bio…"
+msgstr "Hledat dle domény, uživatele, biografie…"
+
+#: front/src/components/manage/library/TagsTable.vue:165
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by name"
+msgstr "Hledat dle názvu"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:168
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by name…"
+msgstr "Hledat dle názvu…"
+
+#: front/src/views/content/libraries/FilesTable.vue:208
+msgctxt "Content/Library/Input.Placeholder"
+msgid "Search by title, artist, album…"
+msgstr "Hledat dle názvu, interpreta, alba…"
+
+#: front/src/components/manage/users/InvitationsTable.vue:153
+msgctxt "Content/Admin/Input.Placeholder/Verb"
+msgid "Search by username, e-mail address, code…"
+msgstr "Hledat dle uživatele, emailové adresy, kódu…"
+
+#: front/src/components/manage/users/UsersTable.vue:164
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by username, e-mail address, name…"
+msgstr "Hledat dle uživatele, emailové adresy, názvu…"
+
+#: front/src/components/audio/SearchBar.vue:27
+msgctxt "Sidebar/Search/Input.Placeholder"
+msgid "Search for artists, albums, tracks…"
+msgstr "Hledat interprety, alba, stopy…"
+
+#: front/src/components/audio/Search.vue:2
+msgctxt "Content/Search/Title"
+msgid "Search for some music"
+msgstr "Hledat trochu muziky"
+
+#: front/src/components/library/TagsSelector.vue:6
+msgctxt "*/Dropdown/Placeholder/Verb"
+msgid "Search for tags…"
+msgstr "Hledat dle tagu…"
+
+#: front/src/components/library/AlbumBase.vue:66
+#: front/src/components/library/ArtistBase.vue:77
+#: front/src/components/library/TrackBase.vue:82
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Search on Discogs"
+msgstr "Hledat na Discogs"
+
+#: front/src/components/library/AlbumBase.vue:58
+#: front/src/components/library/ArtistBase.vue:69
+#: front/src/components/library/TrackBase.vue:74
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Search on Wikipedia"
+msgstr "Hledat na Wikipedii"
+
+#: front/src/components/library/Library.vue:35
+#: src/views/admin/library/Base.vue:35
+#: front/src/views/admin/moderation/Base.vue:44
+#: src/views/admin/users/Base.vue:21 front/src/views/content/Base.vue:19
+msgctxt "Menu/*/Hidden text"
+msgid "Secondary menu"
+msgstr "Podmenu"
+
+#: front/src/views/admin/Settings.vue:15
+msgctxt "Content/Admin/Menu.Title"
+msgid "Sections"
+msgstr "Sekce"
+
+#: front/src/components/ShortcutsModal.vue:108
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek backwards 30s"
+msgstr "Posunout zpět o 30s"
+
+#: front/src/components/ShortcutsModal.vue:100
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek backwards 5s"
+msgstr "Posunout zpět o 5s"
+
+#: front/src/components/ShortcutsModal.vue:112
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek forwards 30s"
+msgstr "Posunout dopředu o 30s"
+
+#: front/src/components/ShortcutsModal.vue:104
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek forwards 5s"
+msgstr "Posunout dopředu o 5s"
+
+#: front/src/components/library/radios/Builder.vue:46
+msgctxt "Content/Radio/Dropdown.Placeholder/Verb"
+msgid "Select a filter"
+msgstr "Vybrat filtr"
+
+#: front/src/components/common/ActionTable.vue:79
+msgctxt "Content/*/Link/Verb"
+msgid "Select all %{ total } elements"
+msgid_plural "Select all %{ total } elements"
+msgstr[0] "Vybrat %{ total } prvek"
+msgstr[1] "Vybrat všechny %{ total } prvky"
+msgstr[2] "Vybrat všech %{ total } prvků"
+
+#: front/src/components/common/ActionTable.vue:88
+msgctxt "Content/*/Link/Verb"
+msgid "Select only current page"
+msgstr "Vybrat pouze aktuální stránku"
+
+#: front/src/components/Home.vue:43
+msgctxt "Content/Home/Link"
+msgid "Server rules"
+msgstr "Pravidla serveru"
+
+#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:112
+#: front/src/components/manage/users/UsersTable.vue:182
+#: front/src/views/admin/moderation/AccountsDetail.vue:526
+msgctxt "*/*/*/Noun"
+msgid "Settings"
+msgstr "Nastavení"
+
+#: front/src/components/auth/Settings.vue:10
+msgctxt "Content/Settings/Message"
+msgid "Settings updated"
+msgstr "Nastavení aktualizováno"
+
+#: front/src/components/admin/SettingsGroup.vue:11
+msgctxt "Content/Settings/Paragraph"
+msgid "Settings updated successfully."
+msgstr "Nastavení úspěšně aktualizováno."
+
+#: front/src/components/manage/users/InvitationForm.vue:27
+msgctxt "Content/Admin/Table.Label/Noun"
+msgid "Share link"
+msgstr "Odkaz pro sdílení"
+
+#: front/src/views/content/libraries/Detail.vue:15
+msgctxt "Content/Library/Paragraph"
+msgid "Share this link with other users so they can request access to your library."
+msgstr "Sdílejte tento odkaz s ostatními, aby mohli požádat o přístup k vaší knihovně."
+
+#: front/src/views/content/libraries/Detail.vue:14
+#: front/src/views/content/remote/Card.vue:90
+msgctxt "Content/Library/Title"
+msgid "Sharing link"
+msgstr "Odkaz pro sdílení"
+
+#: front/src/components/audio/EmbedWizard.vue:5
+msgctxt "Content/Embed/Message"
+msgid "Sharing will not work because this pod doesn't allow anonymous users to access content."
+msgstr ""
+
+#: front/src/components/About.vue:156
+msgctxt "*/*/*/Verb"
+msgid "Show"
+msgstr "Zobrazit"
+
+#: front/src/components/audio/album/Card.vue:38
+msgctxt "Content/Album/Card.Link/Verb"
+msgid "Show %{ count } more track"
+msgid_plural "Show %{ count } more tracks"
+msgstr[0] "Zobrazit %{ count } další stopu"
+msgstr[1] "Zobrazit %{ count } další stopy"
+msgstr[2] "Zobrazit %{ count } dalších stop"
+
+#: front/src/components/tags/List.vue:11
+msgctxt "Content/*/Button/Label/Verb"
+msgid "Show 1 more tag"
+msgid_plural "Show %{ count } more tags"
+msgstr[0] "Zobrazit 1 další tag"
+msgstr[1] "Zobrazit %{ count } další tagy"
+msgstr[2] "Zobrazit %{ count } dalších tagů"
+
+#: front/src/components/library/EditForm.vue:21
+msgctxt "Content/Library/Button.Label"
+msgid "Show all edits"
+msgstr "Zobrazit všechny úpravy"
+
+#: front/src/components/ShortcutsModal.vue:60
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Show available keyboard shortcuts"
+msgstr "Zobrazit dostupné klávesové zkratky"
+
+#: front/src/components/common/ExpandableDiv.vue:7
+msgctxt "*/*/Button,Label"
+msgid "Show less"
+msgstr "Zobrazit méně"
+
+#: front/src/components/common/ExpandableDiv.vue:8
+msgctxt "*/*/Button,Label"
+msgid "Show more"
+msgstr "Zobrazit více"
+
+#: front/src/views/Notifications.vue:72
+msgctxt "Content/Notifications/Form.Label/Verb"
+msgid "Show read notifications"
+msgstr "Zobrazit přečtená oznámení"
+
+#: front/src/components/forms/PasswordInput.vue:42
+msgctxt "Content/Settings/Button.Tooltip/Verb"
+msgid "Show/hide password"
+msgstr "Zobrazit/skrýt heslo"
+
+#: front/src/components/manage/library/AlbumsTable.vue:93
+#: front/src/components/manage/library/ArtistsTable.vue:84
+#: front/src/components/manage/library/EditsCardList.vue:72
+#: front/src/components/manage/library/LibrariesTable.vue:110
+#: front/src/components/manage/library/TagsTable.vue:79
+#: front/src/components/manage/library/TracksTable.vue:95
+#: front/src/components/manage/library/UploadsTable.vue:144
+#: front/src/components/manage/moderation/AccountsTable.vue:88
+#: front/src/components/manage/moderation/DomainsTable.vue:85
+#: front/src/components/manage/users/InvitationsTable.vue:76
+#: front/src/components/manage/users/UsersTable.vue:88
+#: front/src/views/content/libraries/FilesTable.vue:117
+msgctxt "Content/*/Paragraph"
+msgid "Showing results %{ start }-%{ end } on %{ total }"
+msgstr "Zobrazeny výsledky %{ start }-%{ end } z %{ total }"
+
+#: front/src/components/ShortcutsModal.vue:140
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Shuffle queue"
+msgstr "Zamíchat frontu"
+
+#: front/src/components/audio/Player.vue:667
+msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
+msgid "Shuffle your queue"
+msgstr "Zamíchejte svou frontu"
+
+#: front/src/components/Home.vue:103
+msgctxt "*/Signup/Title"
+msgid "Sign up"
+msgstr "Zaregistrovat se"
+
+#: front/src/views/auth/Signup.vue:37
+msgctxt "*/Signup/Title"
+msgid "Sign Up"
+msgstr "Zaregistrovat se"
+
+#: front/src/components/Home.vue:107
+msgctxt "Content/Home/Paragraph"
+msgid "Sign up now to keep a track of your favorites, create playlists, discover new content and much more!"
+msgstr "Zaregistrujte se abyste mohli vytvářet vlastní playlisty, sledovat oblíbené položky, objevovat nový obsah a mnoho dalšího!"
+
+#: front/src/components/manage/users/UsersTable.vue:40
+msgctxt "Content/Admin/Table.Label/Short, Noun (Value is a date)"
+msgid "Sign-up"
+msgstr "Registrace"
+
+#: front/src/components/mixins/Translations.vue:69
+#: front/src/views/admin/moderation/AccountsDetail.vue:198
+#: front/src/components/mixins/Translations.vue:70
+msgctxt "Content/Admin/Table.Label/Noun"
+msgid "Sign-up date"
+msgstr "Datum registrace"
+
+#: front/src/components/library/FileUpload.vue:94
+#: front/src/components/library/TrackDetail.vue:39
+#: front/src/components/manage/library/UploadsTable.vue:65
+#: front/src/components/mixins/Translations.vue:66
+#: front/src/views/admin/library/UploadDetail.vue:219
+#: front/src/views/content/libraries/FilesTable.vue:61
+#: front/src/components/mixins/Translations.vue:67
+msgctxt "Content/*/*/Noun"
+msgid "Size"
+msgstr "Velikost"
+
+#: front/src/components/manage/library/UploadsTable.vue:24
+#: front/src/components/mixins/Translations.vue:24
+#: front/src/views/content/libraries/FilesTable.vue:15
+#: front/src/components/mixins/Translations.vue:25
+msgctxt "Content/Library/*"
+msgid "Skipped"
+msgstr "Vynecháno"
+
+#: front/src/views/content/libraries/Quota.vue:49
+msgctxt "Content/Library/Label"
+msgid "Skipped files"
+msgstr "Vynechané soubory"
+
+#: front/src/views/admin/moderation/DomainsDetail.vue:126
+msgctxt "Content/Moderation/Table.Label"
+msgid "Software"
+msgstr "Software"
+
+#: front/src/components/playlists/Editor.vue:21
+msgctxt "Content/Playlist/Paragraph"
+msgid "Some tracks in your queue are already in this playlist:"
+msgstr "Některé stopy ve frontě se v tomto playlistu již nacházejí:"
+
+#: front/src/components/PageNotFound.vue:10
+msgctxt "Content/*/Paragraph"
+msgid "Sorry, the page you asked for does not exist:"
+msgstr "Stránka, kterou požadujete, bohužel neexistuje:"
+
+#: front/src/components/Footer.vue:57
+msgctxt "Footer/*/List item.Link"
+msgid "Source code"
+msgstr "Zdrojový kód"
+
+#: front/src/components/auth/Profile.vue:23
+#: front/src/components/manage/users/UsersTable.vue:71
+msgctxt "Content/Profile/User role"
+msgid "Staff member"
+msgstr "ÄŒlen teamu"
+
+#: front/src/components/audio/PlayButton.vue:27
+#: src/components/radios/Button.vue:4
+msgctxt "*/Queue/Button.Label/Short, Verb"
+msgid "Start radio"
+msgstr "Spustit radio"
+
+#: front/src/components/About.vue:170 src/components/Home.vue:53
+#: front/src/views/admin/Settings.vue:87
+msgctxt "Content/Home/Header"
+msgid "Statistics"
+msgstr "Statistiky"
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:510
+msgctxt "Content/Moderation/Help text"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this account"
+msgstr "Statistiky jsou generovány na základě aktivity a obsahu na vaší instanci. Nereflektují obecnou aktivitu tohoto účtu."
+
+#: front/src/views/admin/moderation/DomainsDetail.vue:418
+msgctxt "Content/Moderation/Help text"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this domain"
+msgstr "Statistiky jsou generovány na základě aktivity a obsahu na vaší instanci. Nereflektují obecnou aktivitu této domény."
+
+#: front/src/views/admin/library/AlbumDetail.vue:346
+#: front/src/views/admin/library/ArtistDetail.vue:345
+#: front/src/views/admin/library/LibraryDetail.vue:356
+#: front/src/views/admin/library/TagDetail.vue:210
+#: front/src/views/admin/library/TrackDetail.vue:389
+#: front/src/views/admin/library/UploadDetail.vue:335
+msgctxt "Content/Moderation/Help text"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this object"
+msgstr "Statistiky jsou generovány na základě aktivity a obsahu na vaší instanci. Nereflektují obecnou aktivitu tohoto objektu."
+
+#: front/src/components/library/FileUpload.vue:95
+#: front/src/components/manage/library/EditsCardList.vue:12
+#: front/src/components/manage/moderation/ReportCard.vue:57
+#: front/src/components/manage/users/InvitationsTable.vue:17
+#: front/src/components/manage/users/InvitationsTable.vue:39
+#: front/src/components/manage/users/UsersTable.vue:43
+#: front/src/views/admin/moderation/DomainsDetail.vue:152
+#: front/src/views/admin/moderation/ReportsList.vue:14
+#: front/src/views/content/libraries/Detail.vue:28
+msgctxt "*/*/*"
+msgid "Status"
+msgstr "Stav"
+
+#: front/src/components/Sidebar.vue:178 src/components/radios/Button.vue:3
+msgctxt "*/Player/Button.Label/Short, Verb"
+msgid "Stop radio"
+msgstr "Zastavit rádio"
+
+#: front/src/components/SetInstanceModal.vue:23
+msgctxt "*/*/Button.Label/Verb"
+msgid "Submit"
+msgstr "Odeslat"
+
+#: front/src/components/library/EditForm.vue:110
+msgctxt "Content/Library/Button.Label/Verb"
+msgid "Submit and apply edit"
+msgstr "Odeslat a aplikovat úpravu"
+
+#: front/src/components/library/EditForm.vue:7
+msgctxt "Content/Library/Button.Label"
+msgid "Submit another edit"
+msgstr "Odeslat další úpravu"
+
+#: front/src/components/moderation/ReportModal.vue:64
+msgctxt "Popup/*/Button.Label"
+msgid "Submit report"
+msgstr "Odeslat hlášení"
+
+#: front/src/components/library/EditForm.vue:111
+msgctxt "Content/Library/Button.Label/Verb"
+msgid "Submit suggestion"
+msgstr "Odeslat návrh"
+
+#: front/src/components/manage/moderation/ReportCard.vue:17
+msgctxt "Content/Moderation/*"
+msgid "Submitted by"
+msgstr "Odeslal"
+
+#: front/src/views/admin/Settings.vue:86
+msgctxt "Content/Admin/Menu"
+msgid "Subsonic"
+msgstr "Subsonic"
+
+#: front/src/components/auth/SubsonicTokenForm.vue:2
+msgctxt "Content/Settings/Title"
+msgid "Subsonic API password"
+msgstr "Heslo k Subsonic API"
+
+#: front/src/components/library/EditForm.vue:38
+msgctxt "Content/Library/Paragraph"
+msgid "Suggest a change using the form below."
+msgstr "Navrhněte změnu prostřednictvím formuláře níže."
+
+#: front/src/components/library/AlbumEdit.vue:5
+msgctxt "Content/*/Title"
+msgid "Suggest an edit on this album"
+msgstr "Navrhněte úpravu u tohoto alba"
+
+#: front/src/components/library/ArtistEdit.vue:5
+msgctxt "Content/*/Title"
+msgid "Suggest an edit on this artist"
+msgstr "Navrhněte úpravu u tohoto interpreta"
+
+#: front/src/components/library/TrackEdit.vue:5
+msgctxt "Content/*/Title"
+msgid "Suggest an edit on this track"
+msgstr "Navrhněte úpravu u této stopy"
+
+#: front/src/components/SetInstanceModal.vue:31
+msgctxt "Popup/Instance/List.Label"
+msgid "Suggested choices"
+msgstr "Navržené volby"
+
+#: front/src/components/library/FileUpload.vue:3
+msgctxt "Content/Library/Tab.Title/Short"
+msgid "Summary"
+msgstr "Shrnutí"
+
+#: front/src/components/library/EditForm.vue:99
+msgctxt "*/*/*"
+msgid "Summary (optional)"
+msgstr "Shrnutí (volitelné)"
+
+#: front/src/components/Footer.vue:47
+msgctxt "Footer/*/Listitem.Link"
+msgid "Support forum"
+msgstr "Fórum podpory"
+
+#: front/src/views/Notifications.vue:10
+msgctxt "Content/Notifications/Header"
+msgid "Support this Funkwhale pod"
+msgstr "Podpořte tento Funkwhale pod"
+
+#: front/src/components/library/FileUpload.vue:85
+msgctxt "Content/Library/Paragraph"
+msgid "Supported extensions: %{ extensions }"
+msgstr "Podporované přípony: %{ extensions }"
+
+#: front/src/components/playlists/Editor.vue:9
+msgctxt "Content/Playlist/Paragraph"
+msgid "Syncing changes to server…"
+msgstr "Synchronizace změn na server…"
+
+#: front/src/components/audio/SearchBar.vue:35
+msgctxt "*/*/*/Noun"
+msgid "Tag"
+msgstr "Tag"
+
+#: front/src/views/admin/library/TagDetail.vue:61
+msgctxt "Content/Moderation/Title"
+msgid "Tag data"
+msgstr "Tagy"
+
+#: front/src/components/library/Albums.vue:23
+#: src/components/library/Artists.vue:15
+#: front/src/views/admin/library/Base.vue:23
+#: src/views/admin/library/TagsList.vue:24 front/src/edits.js:24
+#: src/edits.js:50 src/edits.js:91 src/entities.js:120
+msgctxt "*/*/*/Noun"
+msgid "Tags"
+msgstr "Tagy"
+
+#: front/src/components/mixins/Translations.vue:44
+#: front/src/components/mixins/Translations.vue:45
+msgctxt "Content/Moderation/Dropdown"
+msgid "Takedown request"
+msgstr "Požadavek o odstranění"
+
+#: front/src/components/About.vue:35 src/components/About.vue:61
+msgctxt "Content/About/Header"
+msgid "Terms and privacy policy"
+msgstr "Podmínky a zásady ochrany osobních údajů"
+
+#: front/src/components/audio/EmbedWizard.vue:35
+#: front/src/components/common/CopyInput.vue:3
+msgctxt "Content/*/Paragraph"
+msgid "Text copied to clipboard!"
+msgstr "Text vložen do schránky!"
+
+#: front/src/views/admin/library/AlbumDetail.vue:81
+msgctxt "Content/Moderation/Paragraph"
+msgid "The album will be removed, as well as associated uploads, tracks, favorites and listening history. This action is irreversible."
+msgstr "Album bude odstraněno, společně se  souvisejícími nahranými soubory, stopami, oblíbenými položkami a historií poslechu. Tato akce je nevratná."
+
+#: front/src/components/auth/Authorize.vue:39
+msgctxt "Content/Auth/Paragraph"
+msgid "The application is also requesting the following unknown permissions:"
+msgstr "Aplikace dále požaduje následující neznámá oprávnění:"
+
+#: front/src/views/admin/library/ArtistDetail.vue:79
+msgctxt "Content/Moderation/Paragraph"
+msgid "The artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible."
+msgstr "Interpret bude odstraněn, společně se  souvisejícími nahranými soubory, stopami, alby, oblíbenými položkami a historií poslechu. Tato akce je nevratná."
+
+#: front/src/components/Footer.vue:61
+msgctxt "Footer/*/List item.Link"
+msgid "The funkwhale logo was kindly designed and provided by Francis Gading."
+msgstr "Logo Funkwhale vytvořil a poskytl Francis Gading."
+
+#: front/src/components/SetInstanceModal.vue:8
+msgctxt "Popup/Instance/Error message.List item"
+msgid "The given address is not a Funkwhale server"
+msgstr "Na zadané adrese neběží žádný Funkwhale server"
+
+#: front/src/views/content/libraries/Form.vue:34
+msgctxt "Popup/Library/Paragraph"
+msgid "The library and all its tracks will be deleted. This can not be undone."
+msgstr "Knihovna a veškerý její obsah budou odstraněny. Tato akce je nevratná."
+
+#: front/src/views/admin/library/LibraryDetail.vue:61
+msgctxt "Content/Moderation/Paragraph"
+msgid "The library will be removed, as well as associated uploads, and follows. This action is irreversible."
+msgstr "Knihovna bude odstraněna, společně se souvisejícími nahranými soubory a sledováními. Tato akce je nevratná."
+
+#: front/src/components/library/ImportStatusModal.vue:140
+msgctxt "Popup/Import/Error.Label"
+msgid "The metadata included in the file is invalid or some mandatory fields are missing."
+msgstr "Metadata v souboru jsou neplatná, nebo některé povinné položky chybí."
+
+#: front/src/components/library/FileUpload.vue:38
+msgctxt "Content/Library/List item"
+msgid "The music files you are uploading are tagged properly."
+msgstr "Nahrávané hudební soubory jsou otagovány korektně."
+
+#: front/src/components/audio/Player.vue:65
+msgctxt "Sidebar/Player/Error message.Paragraph"
+msgid "The next track will play automatically in a few seconds…"
+msgstr "Další stopa se automaticky spustí za několik sekund…"
+
+#: front/src/components/manage/moderation/NotesThread.vue:27
+msgctxt "Content/Moderation/Paragraph"
+msgid "The note will be removed. This action is irreversible."
+msgstr "Poznámka bude ostraněna. Tato akce je nevratná."
+
+#: front/src/components/manage/moderation/ReportCard.vue:120
+msgctxt "Content/Moderation/Message"
+msgid "The object associated with this report was deleted."
+msgstr "Objekt náležící k tomuto hlášení byl odstraněn."
+
+#: front/src/components/playlists/Form.vue:14
+msgctxt "Content/Playlist/Error message.Title"
+msgid "The playlist could not be created"
+msgstr "Playlist nemůže být vytvořen"
+
+#: front/src/components/federation/FetchButton.vue:37
+msgctxt "*/*/Error"
+msgid "The remote server answered with HTTP %{ status }"
+msgstr "Vzdálený server vrátil odpověď HTTP %{ status }"
+
+#: front/src/components/federation/FetchButton.vue:13
+msgctxt "Popup/*/Message.Content"
+msgid "The remote server answered, but returned data was unsupported by Funkwhale."
+msgstr "Vzdálený server odpověděl, ale vrácená data nejsou podporována Funkwhale."
+
+#: front/src/components/federation/FetchButton.vue:44
+msgctxt "*/*/Error"
+msgid "The remote server didn't respond quickly enough"
+msgstr "Vzdálený server neodpověděl dostatečně rychle"
+
+#: front/src/components/federation/FetchButton.vue:50
+msgctxt "*/*/Error"
+msgid "The remote server returned invalid JSON or JSON-LD data"
+msgstr "Vzdálený server vrátil neplatná JSON nebo JSON-LD data"
+
+#: front/src/components/manage/library/AlbumsTable.vue:189
+msgctxt "Popup/*/Paragraph"
+msgid "The selected albums will be removed, as well as associated tracks, uploads, favorites and listening history. This action is irreversible."
+msgstr "Vybraná alba budou odstraněna, společně se  souvisejícími nahranými soubory, stopami, oblíbenými položkami a historií poslechu. Tato akce je nevratná."
+
+#: front/src/components/manage/library/ArtistsTable.vue:179
+msgctxt "Popup/*/Paragraph"
+msgid "The selected artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible."
+msgstr "Vybraný interpret bude odstraněn, společně se  souvisejícími nahranými soubory, stopami, alby, oblíbenými položkami a historií poslechu. Tato akce je nevratná."
+
+#: front/src/components/manage/library/LibrariesTable.vue:206
+msgctxt "Popup/*/Paragraph"
+msgid "The selected library will be removed, as well as associated uploads and follows. This action is irreversible."
+msgstr "Vybraná knihovna bude odstraněna, společně se  souvisejícími nahranými soubory a sledováními. Tato akce je nevratná."
+
+#: front/src/components/manage/library/TagsTable.vue:180
+msgctxt "Popup/*/Paragraph"
+msgid "The selected tag will be removed and unlinked with existing content, if any. This action is irreversible."
+msgstr "Zvolený tag bude odstraněn včetně všech případných vazeb na existující obsah. Tato akce je nevratná."
+
+#: front/src/components/manage/library/TracksTable.vue:189
+msgctxt "Popup/*/Paragraph"
+msgid "The selected tracks will be removed, as well as associated uploads, favorites and listening history. This action is irreversible."
+msgstr "Vybrané stopy budou odstraněny, společně se  souvisejícími nahranými soubory, oblíbenými položkami a historií poslechu. Tato akce je nevratná."
+
+#: front/src/components/manage/library/UploadsTable.vue:256
+msgctxt "Popup/*/Paragraph"
+msgid "The selected upload will be removed. This action is irreversible."
+msgstr "Vybrané nahrané soubory budou odstraněny. Tato akce je nevratná."
+
+#: front/src/components/SetInstanceModal.vue:7
+msgctxt "Popup/Instance/Error message.List item"
+msgid "The server might be down"
+msgstr "Server je možná vypnutý"
+
+#: front/src/components/auth/SubsonicTokenForm.vue:4
+msgctxt "Content/Settings/Paragraph"
+msgid "The Subsonic API is not available on this Funkwhale instance."
+msgstr "Subsonic API není na této instanci dostupné."
+
+#: front/src/components/library/EditCard.vue:96
+msgctxt "Popup/Library/Paragraph"
+msgid "The suggestion will be completely removed, this action is irreversible."
+msgstr "Doporučení bude kompletně odstraněno, tato akce je nevratná."
+
+#: front/src/views/admin/library/TagDetail.vue:44
+msgctxt "Content/Moderation/Paragraph"
+msgid "The tag will be removed and unlinked from any existing entity. This action is irreversible."
+msgstr "Tag bude odstraněn včetně všech vazeb na existující položky. Tato akce je nevratná."
+
+#: front/src/components/playlists/PlaylistModal.vue:34
+msgctxt "Popup/Playlist/Error message.Title"
+msgid "The track can't be added to a playlist"
+msgstr "Stopu nelze přidat do playlistu"
+
+#: front/src/components/audio/Player.vue:62
+msgctxt "Sidebar/Player/Error message.Title"
+msgid "The track cannot be loaded"
+msgstr "Stopu nelze načíst"
+
+#: front/src/views/admin/library/TrackDetail.vue:80
+msgctxt "Content/Moderation/Paragraph"
+msgid "The track will be removed, as well as associated uploads, favorites and listening history. This action is irreversible."
+msgstr "Stopa bude odstraněna, společně se všemi souvisejícími nahranými soubory, oblíbenými a historií poslechů. Tato akce je nevratná."
+
+#: front/src/views/admin/library/UploadDetail.vue:68
+msgctxt "Content/Moderation/Paragraph"
+msgid "The upload will be removed. This action is irreversible."
+msgstr "Nahraný soubor bude odstraněn. Tato akce je nevratná."
+
+#: front/src/components/library/FileUpload.vue:42
+msgctxt "Content/Library/List item"
+msgid "The uploaded music files are in OGG, Flac or MP3 format"
+msgstr "Nahrané soubory jsou ve formátu OGG, Flac nebo MP3"
+
+#: front/src/views/content/Home.vue:4
+msgctxt "Content/Library/Paragraph"
+msgid "There are various ways to grab new content and make it available here."
+msgstr "Jsou různé cesty jak získat nový obsah a zpřístupnit ho zde."
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:66
+msgctxt "Popup/Moderation/Paragraph"
+msgid "This action is irreversible."
+msgstr "Tato akce je nevratná."
+
+#: front/src/components/library/AlbumDetail.vue:29
+msgctxt "Content/Album/Paragraph"
+msgid "This album is present in the following libraries:"
+msgstr "Toto album se vyskytuje v následujících knihovnách:"
+
+#: front/src/components/library/ArtistDetail.vue:42
+msgctxt "Content/Artist/Paragraph"
+msgid "This artist is present in the following libraries:"
+msgstr "Tento interpret se vyskytuje v následujících knihovnách:"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:169
+msgctxt "Content/Moderation/Popup"
+msgid "This domain is present in your allow-list"
+msgstr "Tato doména se vyskytuje na vašem seznamu povolených"
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:84
+#: front/src/views/admin/moderation/DomainsDetail.vue:76
+msgctxt "Content/Moderation/Card.Title"
+msgid "This domain is subject to specific moderation rules"
+msgstr "Na tuto doménu jsou aplikována specifická pravidla moderace"
+
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:16
+msgctxt "Content/Moderation/Card.Title"
+msgid "This entity is subject to specific moderation rules"
+msgstr "Na tuto entitu jsou aplikována specifická pravidla moderace"
+
+#: front/src/views/content/Home.vue:9
+msgctxt "Content/Library/Paragraph"
+msgid "This instance offers up to %{quota} of storage space for every user."
+msgstr "Tato instance nabízí každému uživateli až %{quota} diskového prostoru."
+
+#: front/src/components/auth/Settings.vue:300
+msgctxt "Popup/Settings/Paragraph"
+msgid "This is irreversible and will permanently remove your data from our servers. You will we immediatly logged out."
+msgstr "Tato akce je nevratná a trvale odstraní všechna vaše data ze serveru. Budete okamžitě odhlášen."
+
+#: front/src/components/auth/Settings.vue:165
+msgctxt "Content/Settings/Paragraph"
+msgid "This is the list of applications that have access to your account data."
+msgstr "Tento seznam obsahuje všechny aplikace které mají přístup k datům vašeho účtu."
+
+#: front/src/components/auth/Settings.vue:218
+msgctxt "Content/Settings/Paragraph"
+msgid "This is the list of applications that you have created."
+msgstr "Tento seznam obsahuje všechny aplikace které jste vytvořili."
+
+#: front/src/components/auth/Profile.vue:16
+msgctxt "Content/Profile/Button.Paragraph"
+msgid "This is you!"
+msgstr "To jste vy!"
+
+#: front/src/views/content/libraries/Form.vue:73
+msgctxt "Content/Library/Input.Placeholder"
+msgid "This library contains my personal music, I hope you like it."
+msgstr "Tato knihovna obsahuje mou hudbu, doufám že se vám líbí."
+
+#: front/src/views/content/remote/Card.vue:169
+msgctxt "Content/Library/Card.Help text"
+msgid "This library is private and your approval from its owner is needed to access its content"
+msgstr "Tato knihovna je soukromá a pro přístup k ní je nutný souhlas vlastníka"
+
+#: front/src/views/content/remote/Card.vue:170
+msgctxt "Content/Library/Card.Help text"
+msgid "This library is public and you can access its content freely"
+msgstr "Tato knihovna je veřejná a její obsah je volně přístupný"
+
+#: front/src/components/common/ActionTable.vue:47
+msgctxt "Modal/*/Paragraph"
+msgid "This may affect a lot of elements or have irreversible consequences, please double check this is really what you want."
+msgstr "Tato akce může ovlivnit mnoho prvků nebo může mít nevratné následky - prosím ujistěte se, že si to opravdu přejete."
+
+#: front/src/components/library/AlbumEdit.vue:8
+#: front/src/components/library/ArtistEdit.vue:8
+#: front/src/components/library/TrackEdit.vue:8
+msgctxt "Content/*/Message"
+msgid "This object is managed by another server, you cannot edit it."
+msgstr "Tento objekt je spravován jiným serverem, nemůžete ho upravovat."
+
+#: front/src/components/Home.vue:87
+msgctxt "Content/Home/Paragraph"
+msgid "This pod runs Funkwhale, a community-driven project that lets you listen and share music and audio within a decentralized, open network."
+msgstr "Tento \"pod\" provozuje Funkwhale - projekt podporovaný komunitou, umožňující poslouchat a sdílet hudbu v rámci otevřené, decentralizované sítě."
+
+#: front/src/components/library/FileUpload.vue:51
+msgctxt "Content/Library/Paragraph"
+msgid "This reference will be used to group imported files together."
+msgstr "Tento odkaz bude použit pro seskupení importovaných souborů."
+
+#: front/src/components/mixins/Translations.vue:33
+#: front/src/components/mixins/Translations.vue:34
+msgctxt "Content/Library/Help text"
+msgid "This track could not be processed, please make sure it is tagged correctly"
+msgstr "Tato stopa nemůže být zpracována, prosím zajistěte její korektní otagování"
+
+#: front/src/components/mixins/Translations.vue:29
+#: front/src/components/mixins/Translations.vue:30
+msgctxt "Content/Library/Help text"
+msgid "This track has been uploaded, but hasn't been processed by the server yet"
+msgstr "Tato stopa byla nahrána a čeká na zpracování serverem"
+
+#: front/src/components/mixins/Translations.vue:25
+#: front/src/components/mixins/Translations.vue:26
+msgctxt "Content/Library/Help text"
+msgid "This track is already present in one of your libraries"
+msgstr "Tato stopa se již nachází v některé z vašich knihoven"
+
+#: front/src/components/audio/PlayButton.vue:103
+msgctxt "*/Queue/Button/Title"
+msgid "This track is not available in any library you have access to"
+msgstr "Tato stopa není dostupná v žádné vám přístupné knihovně"
+
+#: front/src/components/library/TrackDetail.vue:82
+msgctxt "Content/Track/Paragraph"
+msgid "This track is present in the following libraries:"
+msgstr "Tato stopa se nachází v následujících knihovnách:"
+
+#: front/src/views/playlists/Detail.vue:46
+msgctxt "Popup/Playlist/Paragraph"
+msgid "This will completely delete this playlist and cannot be undone."
+msgstr "Kompletně a nevratně smaže tento playlist."
+
+#: front/src/views/radios/Detail.vue:27
+msgctxt "Popup/Radio/Paragraph"
+msgid "This will completely delete this radio and cannot be undone."
+msgstr "Kompletně a nevratně smaže toto rádio."
+
+#: front/src/components/auth/SubsonicTokenForm.vue:55
+msgctxt "Popup/Settings/Paragraph"
+msgid "This will completely disable access to the Subsonic API using from account."
+msgstr "Kompletně zakáže přístup k Subsonic API pro tento účet."
+
+#: front/src/components/manage/moderation/ReportCard.vue:359
+msgctxt "Content/Moderation/Popup,Paragraph"
+msgid "This will delete the object associated with this report and mark the report as resolved. The deletion is irreversible."
+msgstr "Objekt související s tímto hlášením bude odstraněn a hlášení bude označeno jako vyřešené. Odstranění je nevratné."
+
+#: front/src/components/auth/SubsonicTokenForm.vue:40
+msgctxt "Popup/Settings/Paragraph"
+msgid "This will log you out from existing devices that use the current password."
+msgstr "Toto vás odhlásí z existujících zařízení, které používají současné heslo."
+
+#: front/src/components/auth/Settings.vue:253
+msgctxt "Popup/Settings/Paragraph"
+msgid "This will permanently delete the application and all the associated tokens."
+msgstr "Kompletně odstraní aplikaci a všechny přidružené tokeny."
+
+#: front/src/components/auth/Settings.vue:194
+msgctxt "Popup/Settings/Paragraph"
+msgid "This will prevent this application from accessing the service on your behalf."
+msgstr "Zabrání této aplikaci v přístupu ke službě pod vaším účtem."
+
+#: front/src/components/playlists/Editor.vue:54
+msgctxt "Popup/Playlist/Paragraph"
+msgid "This will remove all tracks from this playlist and cannot be undone."
+msgstr "Odstraní nevratně všechny stopy z tohoto playlistu."
+
+#: front/src/components/audio/track/Table.vue:7
+#: front/src/components/manage/library/AlbumsTable.vue:39
+#: front/src/components/manage/library/TracksTable.vue:39
+#: front/src/views/admin/library/AlbumDetail.vue:105
+#: front/src/views/admin/library/TrackDetail.vue:104
+#: front/src/views/content/libraries/FilesTable.vue:55 src/edits.js:36
+#: front/src/edits.js:62
+msgctxt "*/*/*/Noun"
+msgid "Title"
+msgstr "Název"
+
+#: front/src/components/SetInstanceModal.vue:16
+msgctxt "Popup/Instance/Paragraph"
+msgid "To continue, please select the Funkwhale instance you want to connect to. Enter the address directly, or select one of the suggested choices."
+msgstr "Pro pokračování prosím zvolte Funkwhale instanci ke které se chcete připojit. Zadejte adresu přímo, nebo vyberte jednu z nabízených možností."
+
+#: front/src/components/ShortcutsModal.vue:148
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle favorite"
+msgstr "Přepnout příznak Oblíbené"
+
+#: front/src/components/ShortcutsModal.vue:132
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle mute"
+msgstr "Přepnout ztlumení"
+
+#: front/src/components/ShortcutsModal.vue:136
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle queue looping"
+msgstr "Přepnout opakování fronty"
+
+#: front/src/views/admin/library/AlbumDetail.vue:238
+#: front/src/views/admin/library/ArtistDetail.vue:226
+#: front/src/views/admin/library/LibraryDetail.vue:219
+#: front/src/views/admin/library/TrackDetail.vue:290
+#: front/src/views/admin/moderation/AccountsDetail.vue:329
+#: front/src/views/admin/moderation/DomainsDetail.vue:262
+msgctxt "Content/Moderation/Table.Label"
+msgid "Total size"
+msgstr "Celková velikost"
+
+#: front/src/views/content/libraries/Card.vue:68
+msgctxt "Content/Library/Card.Help text"
+msgid "Total size of the files in this library"
+msgstr "Celková velikost souborů v této knihovně"
+
+#: front/src/views/admin/moderation/DomainsDetail.vue:142
+msgctxt "Content/*/*"
+msgid "Total users"
+msgstr "Celkem uživatelů"
+
+#: front/src/components/audio/SearchBar.vue:34
+#: front/src/components/library/TrackBase.vue:188
+#: front/src/components/library/TrackDetail.vue:128
+#: front/src/components/metadata/Search.vue:138
+#: src/components/mixins/Report.vue:28
+#: front/src/views/admin/library/UploadDetail.vue:199
+#: front/src/components/mixins/Report.vue:29
+msgctxt "*/*/*/Noun"
+msgid "Track"
+msgstr "Stopa"
+
+#: front/src/components/library/EditCard.vue:13
+msgctxt "Content/Library/Card/Short"
+msgid "Track #%{ id } - %{ name }"
+msgstr "Stopa #%{ id } - %{ name }"
+
+#: front/src/views/admin/library/TrackDetail.vue:97
+msgctxt "Content/Moderation/Title"
+msgid "Track data"
+msgstr "Data stopy"
+
+#: front/src/components/library/TrackDetail.vue:4
+msgctxt "Content/Track/Title/Noun"
+msgid "Track information"
+msgstr "Informace stopy"
+
+#: front/src/components/mixins/Translations.vue:60
+#: front/src/components/mixins/Translations.vue:61
+msgctxt "Content/*/Dropdown/Noun"
+msgid "Track name"
+msgstr "Název stopy"
+
+#: front/src/components/library/AlbumDetail.vue:19
+#: front/src/components/library/TagDetail.vue:36
+#: front/src/components/manage/library/AlbumsTable.vue:42
+#: front/src/components/manage/library/ArtistsTable.vue:42
+#: front/src/components/manage/library/TagsTable.vue:44
+#: front/src/components/playlists/PlaylistModal.vue:47
+#: front/src/views/admin/library/AlbumDetail.vue:268
+#: front/src/views/admin/library/ArtistDetail.vue:266
+#: front/src/views/admin/library/Base.vue:14
+#: front/src/views/admin/library/LibraryDetail.vue:248
+#: front/src/views/admin/library/TagDetail.vue:143
+#: front/src/views/admin/library/TracksList.vue:24
+#: front/src/views/admin/moderation/AccountsDetail.vue:374
+#: front/src/views/admin/moderation/DomainsDetail.vue:311
+#: front/src/views/content/Base.vue:8 src/views/content/libraries/Detail.vue:8
+#: front/src/views/playlists/Detail.vue:76 src/views/radios/Detail.vue:34
+msgctxt "*/*/*"
+msgid "Tracks"
+msgstr "Stopy"
+
+#: front/src/components/library/ArtistDetail.vue:33
+msgctxt "Content/Artist/Title"
+msgid "Tracks by this artist"
+msgstr "Stopy od tohoto interpreta"
+
+#: front/src/components/library/radios/Filter.vue:44
+msgctxt "Popup/Radio/Title/Noun"
+msgid "Tracks matching filter"
+msgstr "Stopy které odpovídají filtru"
+
+#: front/src/components/library/TrackDetail.vue:57
+#: front/src/components/manage/moderation/ReportCard.vue:134
+#: front/src/views/admin/library/UploadDetail.vue:250
+#: front/src/views/admin/moderation/AccountsDetail.vue:181
+msgctxt "Content/Track/Table.Label/Noun"
+msgid "Type"
+msgstr "Typ"
+
+#: front/src/components/manage/moderation/AccountsTable.vue:44
+#: front/src/components/manage/moderation/DomainsTable.vue:50
+msgctxt "Content/Moderation/Table.Label/Short"
+msgid "Under moderation rule"
+msgstr "Pod moderačním pravidlem"
+
+#: front/src/components/ShortcutsModal.vue:68
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Unfocus searchbar"
+msgstr "Opustit vyhledávací pole"
+
+#: front/src/views/content/remote/Card.vue:122
+#: src/views/content/remote/Card.vue:127
+msgctxt "*/Library/Button.Label/Verb"
+msgid "Unfollow"
+msgstr "Přestat sledovat"
+
+#: front/src/views/content/remote/Card.vue:123
+msgctxt "Popup/Library/Title"
+msgid "Unfollow this library?"
+msgstr "Přestat sledovat tuto knihovnu?"
+
+#: front/src/components/federation/FetchButton.vue:54
+#: front/src/components/federation/FetchButton.vue:55
+#: front/src/components/library/ImportStatusModal.vue:144
+msgctxt "*/*/Error"
+msgid "Unknown error"
+msgstr "Neznámá chyba"
+
+#: front/src/components/audio/Player.vue:656
+msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
+msgid "Unmute"
+msgstr "Zrušit ztišení"
+
+#: front/src/components/manage/moderation/ReportCard.vue:225
+msgctxt "Content/*/Button.Label"
+msgid "Unresolve"
+msgstr "Není vyřešeno"
+
+#: front/src/components/manage/moderation/ReportCard.vue:67
+#: front/src/views/admin/moderation/ReportsList.vue:23
+msgctxt "Content/*/*/Short"
+msgid "Unresolved"
+msgstr "Nevyřešeno"
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:57
+msgctxt "Content/Moderation/Card.Button.Label/Verb"
+msgid "Update"
+msgstr "Aktualizovat"
+
+#: front/src/components/auth/ApplicationForm.vue:64
+msgctxt "Content/Applications/Button.Label/Verb"
+msgid "Update application"
+msgstr "Aktualizovat aplikaci"
+
+#: front/src/components/auth/Settings.vue:50
+msgctxt "Content/Settings/Button.Label/Verb"
+msgid "Update avatar"
+msgstr "Aktualizovat avatara"
+
+#: front/src/views/content/libraries/Form.vue:25
+msgctxt "Content/Library/Button.Label/Verb"
+msgid "Update library"
+msgstr "Aktualizovat knihovnu"
+
+#: front/src/components/playlists/Form.vue:33
+msgctxt "Content/Playlist/Button.Label/Verb"
+msgid "Update playlist"
+msgstr "Aktualizovat playlist"
+
+#: front/src/components/auth/Settings.vue:27
+msgctxt "Content/Settings/Button.Label/Verb"
+msgid "Update settings"
+msgstr "Aktualizovat nastavení"
+
+#: front/src/views/auth/PasswordResetConfirm.vue:21
+msgctxt "Content/Signup/Button.Label"
+msgid "Update your password"
+msgstr "Aktualizovat vaše heslo"
+
+#: front/src/views/content/libraries/Card.vue:45
+#: front/src/views/content/libraries/DetailArea.vue:24
+msgctxt "Content/Library/Card.Button.Label/Verb"
+msgid "Upload"
+msgstr "Nahrát"
+
+#: front/src/components/auth/Settings.vue:45
+msgctxt "Content/Settings/Title/Verb"
+msgid "Upload a new avatar"
+msgstr "Nahrát nového avatara"
+
+#: front/src/views/content/Home.vue:6
+msgctxt "Content/Library/Title/Verb"
+msgid "Upload audio content"
+msgstr "Nahrát nový hudební obsah"
+
+#: front/src/views/admin/library/UploadDetail.vue:85
+msgctxt "Content/Moderation/Title"
+msgid "Upload data"
+msgstr "Nahrát data"
+
+#: front/src/views/content/libraries/FilesTable.vue:58
+msgctxt "*/*/*/Noun"
+msgid "Upload date"
+msgstr "Datum nahrání"
+
+#: front/src/components/library/FileUpload.vue:258
+msgctxt "Content/Library/Help text"
+msgid "Upload denied, ensure the file is not too big and that you have not reached your quota"
+msgstr "Nahrání zamítnuto, zkontrolujte zda soubor není příliš velký a že nedošlo k vyčerpání povolené kapacity"
+
+#: front/src/components/library/ImportStatusModal.vue:8
+msgctxt "Popup/Import/Message"
+msgid "Upload is still pending and will soon be processed by the server."
+msgstr "Nahrávání je ve frontě a bude brzy serverem zpracováno."
+
+#: front/src/views/content/Home.vue:7
+msgctxt "Content/Library/Paragraph"
+msgid "Upload music files (MP3, OGG, FLAC, etc.) from your personal library directly from your browser to enjoy them here."
+msgstr "Nahrajte hudební soubory (MP3, OGG, FLAC a další) z vaší osobní sbírky přímo ze svého prohlížeče a mějte je tu k dispozici."
+
+#: front/src/components/library/FileUpload.vue:30
+msgctxt "Content/Library/Title/Verb"
+msgid "Upload new tracks"
+msgstr "Nahrát nové stopy"
+
+#: front/src/components/About.vue:99
+#: front/src/views/admin/moderation/AccountsDetail.vue:309
+msgctxt "*/*/*"
+msgid "Upload quota"
+msgstr "Vyhrazený prostor pro nahrávání"
+
+#: front/src/components/library/FileUpload.vue:267
+msgctxt "Content/Library/Help text"
+msgid "Upload timeout, please try again"
+msgstr "Vypršel čas nahrávání, zkuste to prosím znovu"
+
+#: front/src/components/library/ImportStatusModal.vue:14
+msgctxt "Popup/Import/Message"
+msgid "Upload was skipped because a similar one is already available in one of your libraries."
+msgstr "Nahrávání bylo přeskočeno, protože podobný soubor se již nachází v jedné z vašich knihoven."
+
+#: front/src/components/library/ImportStatusModal.vue:11
+msgctxt "Popup/Import/Message"
+msgid "Upload was successfully processed by the server."
+msgstr "Nahrávání bylo serverem úspěšně zpracováno."
+
+#: front/src/components/library/FileUpload.vue:109
+msgctxt "Content/Library/Table"
+msgid "Uploaded"
+msgstr "Nahráno"
+
+#: front/src/components/library/FileUpload.vue:5
+msgctxt "Content/Library/Tab.Title/Short"
+msgid "Uploading"
+msgstr "Nahrávání"
+
+#: front/src/components/library/FileUpload.vue:112
+msgctxt "Content/Library/Table"
+msgid "Uploading…"
+msgstr "Nahrávání…"
+
+#: front/src/components/manage/library/LibrariesTable.vue:52
+#: front/src/components/manage/moderation/AccountsTable.vue:41
+#: front/src/components/mixins/Translations.vue:75
+#: front/src/views/admin/library/AlbumDetail.vue:258
+#: front/src/views/admin/library/ArtistDetail.vue:246
+#: front/src/views/admin/library/Base.vue:20
+#: front/src/views/admin/library/LibraryDetail.vue:258
+#: front/src/views/admin/library/TrackDetail.vue:310
+#: front/src/views/admin/library/UploadsList.vue:24
+#: front/src/views/admin/moderation/AccountsDetail.vue:349
+#: front/src/views/admin/moderation/DomainsDetail.vue:281
+#: front/src/components/mixins/Translations.vue:76
+msgctxt "*/*/*"
+msgid "Uploads"
+msgstr "Nahrané soubory"
+
+#: front/src/components/auth/ApplicationForm.vue:16
+msgctxt "Content/Applications/Help Text"
+msgid "Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is not served on the web."
+msgstr "Použijte \"urn:ietf:wg:oauth:2.0:oob\" jako URI pro přesměrování, pokud vaše aplikace není přístupná na webu."
+
+#: front/src/components/Footer.vue:16
+msgctxt "Footer/*/List item.Link"
+msgid "Use another instance"
+msgstr "Použít jinou instanci"
+
+#: front/src/components/Home.vue:146
+msgctxt "Content/Home/Link"
+msgid "Use Funkwhale on other devices with our apps"
+msgstr "Používejte Funkwhale na dalších zařízeních s našimi aplikacemi"
+
+#: front/src/components/moderation/ReportModal.vue:44
+msgctxt "*/*/Field,Help"
+msgid "Use this field to provide additional context to the moderator that will handle your report."
+msgstr "Použijte toto pole pro poskytnutí doplňujících informací pro moderátora, který bude zpracovávat vaše hlášení."
+
+#: front/src/views/auth/PasswordReset.vue:12
+msgctxt "Content/Signup/Paragraph"
+msgid "Use this form to request a password reset. We will send an email to the given address with instructions to reset your password."
+msgstr "Použijte tento formulář pro žádost o reset hesla. Na zadanou adresu bude odeslán email s instrukcemi pro změnu vašeho hesla."
+
+#: front/src/components/moderation/ReportModal.vue:18
+msgctxt "*/Moderation/Popup,Paragraph"
+msgid "Use this form to submit a report to our moderation team."
+msgstr "Použijte tento formulář pro odeslání hlášení našemu týmu moderátorů."
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:111
+msgctxt "Content/Moderation/Help text"
+msgid "Use this setting to temporarily enable/disable the policy without completely removing it."
+msgstr "Použijte tuto volbu pro dočasnou (de)aktivaci zásady, bez jejího odstranění."
+
+#: front/src/components/manage/users/InvitationsTable.vue:49
+msgctxt "Content/Admin/Table"
+msgid "Used"
+msgstr "Využito"
+
+#: front/src/components/Home.vue:125
+msgctxt "Content/Home/Header"
+msgid "Useful links"
+msgstr "Užitečné odkazy"
+
+#: front/src/views/content/libraries/Detail.vue:26
+msgctxt "Content/Library/Table.Label"
+msgid "User"
+msgstr "Uživatel"
+
+#: front/src/components/Home.vue:154
+msgctxt "Content/Home/Link"
+msgid "User guides"
+msgstr "Uživatelské příručky"
+
+#: front/src/views/admin/Settings.vue:88
+msgctxt "Content/Admin/Menu"
+msgid "User Interface"
+msgstr "Uživatelské rozhraní"
+
+#: front/src/components/library/AlbumDetail.vue:26
+#: front/src/components/library/ArtistDetail.vue:39
+#: front/src/components/library/TrackDetail.vue:79
+msgctxt "Content/*/Title/Noun"
+msgid "User libraries"
+msgstr "Knihovny uživatele"
+
+#: front/src/components/library/Radios.vue:20
+msgctxt "Content/Radio/Title"
+msgid "User radios"
+msgstr "Rádia uživatele"
+
+#: front/src/components/auth/SignupForm.vue:15
+#: front/src/components/manage/users/UsersTable.vue:37
+#: front/src/components/mixins/Translations.vue:71
+#: front/src/views/admin/moderation/AccountsDetail.vue:114
+#: front/src/components/mixins/Translations.vue:72
+msgctxt "Content/*/*"
+msgid "Username"
+msgstr "Uživatelské jméno"
+
+#: front/src/components/auth/LoginForm.vue:11
+msgctxt "Content/Login/Input.Label/Noun"
+msgid "Username or email"
+msgstr "Uživatelské jméno nebo email"
+
+#: front/src/components/Sidebar.vue:106
+#: front/src/components/manage/moderation/DomainsTable.vue:47
+#: front/src/components/mixins/Translations.vue:73
+#: src/views/admin/Settings.vue:81 front/src/views/admin/users/Base.vue:5
+#: src/views/admin/users/UsersList.vue:21
+#: front/src/components/mixins/Translations.vue:74
+msgctxt "*/*/*/Noun"
+msgid "Users"
+msgstr "Uživatelé"
+
+#: front/src/components/Home.vue:110
+msgctxt "Content/Home/Paragraph"
+msgid "Users on this pod also get %{ quota } of free storage to upload their own content!"
+msgstr "Uživatelé tohoto podu mají také k dispozici %{ quota } volného prostoru pro nahrání vlastního obsahu!"
+
+#: front/src/components/Footer.vue:29
+msgctxt "Footer/*/Title"
+msgid "Using Funkwhale"
+msgstr "Použití Funkwhale"
+
+#: front/src/components/Footer.vue:13
+msgctxt "Footer/*/List item"
+msgid "Version %{version}"
+msgstr "Verze %{version}"
+
+#: front/src/views/content/libraries/Quota.vue:29
+#: front/src/views/content/libraries/Quota.vue:56
+#: front/src/views/content/libraries/Quota.vue:82
+msgctxt "Content/Library/Link/Verb"
+msgid "View files"
+msgstr "Zobrazit soubory"
+
+#: front/src/components/library/AlbumBase.vue:95
+#: front/src/components/library/ArtistBase.vue:107
+#: front/src/components/library/TrackBase.vue:111
+#: front/src/views/admin/library/AlbumDetail.vue:48
+#: front/src/views/admin/library/ArtistDetail.vue:46
+#: front/src/views/admin/library/LibraryDetail.vue:34
+#: front/src/views/admin/library/LibraryDetail.vue:45
+#: front/src/views/admin/library/TagDetail.vue:32
+#: front/src/views/admin/library/TrackDetail.vue:47
+#: front/src/views/admin/library/UploadDetail.vue:35
+#: front/src/views/admin/library/UploadDetail.vue:46
+#: front/src/views/admin/moderation/AccountsDetail.vue:37
+#: front/src/views/admin/moderation/AccountsDetail.vue:45
+#: front/src/views/admin/moderation/DomainsDetail.vue:30
+msgctxt "Content/Moderation/Link/Verb"
+msgid "View in Django's admin"
+msgstr "Zobrazit v administraci Django"
+
+#: front/src/components/Home.vue:169
+msgctxt "Content/Home/Link"
+msgid "View more…"
+msgstr "Zobrazit další…"
+
+#: front/src/components/library/AlbumBase.vue:62
+#: front/src/components/library/ArtistBase.vue:73
+#: front/src/components/library/TrackBase.vue:78
+#: front/src/components/metadata/ArtistCard.vue:49
+#: front/src/components/metadata/ReleaseCard.vue:53
+msgctxt "Content/*/*/Clickable, Verb"
+msgid "View on MusicBrainz"
+msgstr "Zobrazit na MusicBrainz"
+
+#: front/src/components/manage/moderation/ReportCard.vue:124
+msgctxt "Content/Moderation/Link"
+msgid "View public page"
+msgstr "Zobrazit veřejnou stránku"
+
+#: front/src/components/manage/library/LibrariesTable.vue:11
+#: front/src/components/manage/library/LibrariesTable.vue:51
+#: front/src/components/manage/library/UploadsTable.vue:11
+#: front/src/components/manage/library/UploadsTable.vue:63
+#: front/src/views/admin/library/LibraryDetail.vue:94
+#: front/src/views/admin/library/UploadDetail.vue:101
+#: front/src/views/content/libraries/Form.vue:18
+msgctxt "*/*/*"
+msgid "Visibility"
+msgstr "Viditelnost"
+
+#: front/src/components/Home.vue:91
+msgctxt "Content/Home/Link"
+msgid "Visit funkwhale.audio"
+msgstr "Navštívit funkwhale.audio"
+
+#: front/src/components/library/AlbumDetail.vue:4
+msgctxt "Content/Album/"
+msgid "Volume %{ number }"
+msgstr "Hlasitost %{ number }"
+
+#: front/src/components/federation/FetchButton.vue:69
+msgctxt "Popup/*/Loading.Title"
+msgid "Waiting for result…"
+msgstr "Čekání na výsledek…"
+
+#: front/src/components/auth/Settings.vue:285
+msgctxt "Content/Settings/Error message.Title"
+msgid "We cannot delete your account"
+msgstr "Nemůžeme smazat váš účet"
+
+#: front/src/components/auth/LoginForm.vue:3
+msgctxt "Content/Login/Error message.Title"
+msgid "We cannot log you in"
+msgstr "Nemůžeme vás přihlásit"
+
+#: front/src/components/auth/ApplicationForm.vue:3
+msgctxt "Content/*/Error message.Title"
+msgid "We cannot save your changes"
+msgstr "Nemůžeme uložit vaše změny"
+
+#: front/src/views/Notifications.vue:39
+msgctxt "Content/Notifications/Paragraph"
+msgid "We noticed you've been here for a while. If Funkwhale is useful to you, we could use your help to make it even better!"
+msgstr "Všimli jsme si že se zde již nějaký čas nacházíte. Pokud je pro vás Funkwhale přínosný, pomozte nám ho prosím dále vylepšovat!"
+
+#: front/src/components/library/FileUpload.vue:39
+msgctxt "Content/Library/Link"
+msgid "We recommend using Picard for that purpose."
+msgstr "Doporučujeme pro tyto účely použít MusicBrainz Picard."
+
+#: front/src/components/moderation/ReportModal.vue:35
+msgctxt "*/*/Field,Help"
+msgid "We'll use this email if we need to contact you regarding this report."
+msgstr "Použijeme uvedený email v případě potřeby vás kontaktovat ohledně tohoto hlášení."
+
+#: front/src/components/Home.vue:207
+msgctxt "Head/Home/Title"
+msgid "Welcome"
+msgstr "Vítejte"
+
+#: front/src/components/Home.vue:5
+msgctxt "Content/Home/Header"
+msgid "Welcome to %{ podName }!"
+msgstr "Vítejte na %{ podName }!"
+
+#: front/src/components/audio/EmbedWizard.vue:23
+msgctxt "Popup/Embed/Input.Label"
+msgid "Widget height"
+msgstr "Výška widgetu"
+
+#: front/src/components/audio/EmbedWizard.vue:16
+msgctxt "Popup/Embed/Input.Label"
+msgid "Widget width"
+msgstr "Šířka widgetu"
+
+#: front/src/components/auth/ApplicationForm.vue:157
+msgctxt "Content/OAuth Scopes/Label/Verb"
+msgid "Write"
+msgstr "Zapsat"
+
+#: front/src/components/auth/Authorize.vue:21
+msgctxt "Content/Auth/Label/Noun"
+msgid "Write-only"
+msgstr "Pouze pro zápis"
+
+#: front/src/components/auth/ApplicationForm.vue:158
+msgctxt "Content/OAuth Scopes/Help Text"
+msgid "Write-only access to user data"
+msgstr "Přístup k uživatelským datům pouze pro zápis"
+
+#: front/src/components/Sidebar.vue:133
+#: front/src/components/manage/moderation/AccountsTable.vue:72
+#: front/src/components/manage/moderation/DomainsTable.vue:12
+#: front/src/components/manage/moderation/DomainsTable.vue:69
+#: front/src/views/admin/moderation/DomainsDetail.vue:109
+msgctxt "*/*/*"
+msgid "Yes"
+msgstr "Ano"
+
+#: front/src/components/auth/Logout.vue:8
+msgctxt "Content/Login/Button.Label"
+msgid "Yes, log me out!"
+msgstr "Ano, odhlaste mÄ›!"
+
+#: front/src/views/content/libraries/Form.vue:19
+msgctxt "Content/Library/Paragraph"
+msgid "You are able to share your library with other people, regardless of its visibility."
+msgstr "Můžete sdílet svou knihovnu s jinými lidmi, bez ohledu na její viditelnost."
+
+#: front/src/components/library/FileUpload.vue:32
+msgctxt "Content/Library/Paragraph"
+msgid "You are about to upload music to your library. Before proceeding, please ensure that:"
+msgstr "Chystáte se nahrát hudbu do své knihovny. Před zahájením prosím zajistěte, že:"
+
+#: front/src/components/SetInstanceModal.vue:12
+msgctxt "Popup/Login/Paragraph"
+msgid "You are currently connected to <a href=\"%{ url }\" target=\"_blank\">%{ hostname }&nbsp;<i class=\"external icon\"/></a>. If you continue, you will be disconnected from your current instance and all your local data will be deleted."
+msgstr "Momentálně jste připojen k <a href=\"%{ url }\" target=\"_blank\">%{ hostname }&nbsp;<i class=\"external icon\"/></a>. Pokud budete pokračovat budete odpojeni z vaší současné instance a všechna vaše místní data budou odstraněna."
+
+#: front/src/components/library/ArtistDetail.vue:6
+msgctxt "Content/Artist/Paragraph"
+msgid "You are currently hiding content related to this artist."
+msgstr "Některý obsah související s tímto interpretem je nastaven jako skrytý."
+
+#: front/src/components/auth/Logout.vue:7
+msgctxt "Content/Login/Paragraph"
+msgid "You are currently logged in as %{ username }"
+msgstr "Jste přihlášen jako %{ username }"
+
+#: front/src/components/library/FileUpload.vue:35
+msgctxt "Content/Library/List item"
+msgid "You are not uploading copyrighted content in a public library, otherwise you may be infringing the law"
+msgstr "Nenahrávejte obsah chráněný copyrightem do veřejné knihovny, mohlo by dojít k porušení zákona"
+
+#: front/src/components/SetInstanceModal.vue:98
+msgctxt "*/Instance/Message"
+msgid "You are now using the Funkwhale instance at %{ url }"
+msgstr "Právě využíváte Funkwhale instanci na adrese %{ url }"
+
+#: front/src/views/content/Home.vue:17
+msgctxt "Content/Library/Paragraph"
+msgid "You can follow libraries from other users to get access to new music. Public libraries can be followed immediately, while following a private library requires approval from its owner."
+msgstr "Můžete sledovat knihovny jiných uživatelů pro získání přístupu k nové hudbě. Veřejné knihovny můžete začít sledovat okamžitě, privátní knihovny vyžadují schválení vlastníka."
+
+#: front/src/components/moderation/FilterModal.vue:31
+msgctxt "Popup/Moderation/Paragraph"
+msgid "You can manage and update your filters any time from your account settings."
+msgstr "Můžete spravovat a aktualizovat své filtry kdykoliv v nastavení vašeho účtu."
+
+#: front/src/views/auth/EmailConfirm.vue:24
+msgctxt "Content/Signup/Paragraph"
+msgid "You can now use the service without limitations."
+msgstr "Nyní můžete službu využívat bez omezení."
+
+#: front/src/components/auth/Settings.vue:278
+msgctxt "Content/Settings/Paragraph'"
+msgid "You can permanently and irreversibly delete your account and all the associated data using the form below. You will be asked for confirmation."
+msgstr "Můžete natrvalo a nevratně smazat svůj účet a všechna související data pomocí formuláře níže. Budete požádáni o další potvrzení akce."
+
+#: front/src/components/library/radios/Builder.vue:7
+msgctxt "Content/Radio/Paragraph"
+msgid "You can use this interface to build your own custom radio, which will play tracks according to your criteria."
+msgstr "Můžete použít toto rozhraní k výrobě vlastního rádia, které bude hrát hudbu dle vašich kritérií."
+
+#: front/src/components/auth/SubsonicTokenForm.vue:7
+msgctxt "Content/Settings/Paragraph"
+msgid "You can use those to enjoy your playlist and music in offline mode, on your smartphone or tablet, for instance."
+msgstr "Můžete je použít k poslechu oblíbené hudby v offline režimu, například na telefonu nebo tabletu."
+
+#: front/src/components/auth/Settings.vue:202
+msgctxt "Content/Applications/Paragraph"
+msgid "You don't have any application connected with your account."
+msgstr "K vašemu účtu nejsou připojeny žádné aplikace."
+
+#: front/src/components/auth/Settings.vue:261
+msgctxt "Content/Applications/Paragraph"
+msgid "You don't have any configured application yet."
+msgstr "Zatím nemáte nastaveny žádné aplikace."
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:75
+msgctxt "Content/Moderation/Card.Title"
+msgid "You don't have any rule in place for this account."
+msgstr "Pro tento účet nemáte aplikována žádná pravidla."
+
+#: front/src/views/admin/moderation/DomainsDetail.vue:67
+msgctxt "Content/Moderation/Card.Title"
+msgid "You don't have any rule in place for this domain."
+msgstr "Pro tuto doménu nemáte aplikována žádná pravidla."
+
+#: front/src/components/library/EditForm.vue:52
+msgctxt "Content/Library/Paragraph"
+msgid "You don't have the permission to edit this object, but you can suggest changes. Once submitted, suggestions will be reviewed before approval."
+msgstr "Nemáte oprávnění upravovat tento objekt, ale můžete navrhnout jeho změnu. Návrh na změnu bude po odeslání zkontrolován a případně schválen."
+
+#: front/src/components/Sidebar.vue:175
+msgctxt "Sidebar/Player/Title"
+msgid "You have a radio playing"
+msgstr "Hraje vám rádio"
+
+#: front/src/components/audio/Player.vue:69
+msgctxt "Sidebar/Player/Error message.Paragraph"
+msgid "You may have a connectivity issue."
+msgstr "Možná máte problémy s připojením."
+
+#: front/src/components/auth/Settings.vue:100
+msgctxt "Popup/Settings/List item"
+msgid "You will be logged out from this session and have to log in with the new one"
+msgstr "Budete odhlášeni z tohoto sezení a musíte se přihlásit znovu"
+
+#: front/src/components/auth/Authorize.vue:51
+msgctxt "Content/Auth/Paragraph"
+msgid "You will be redirected to <strong>%{ url }</strong>"
+msgstr "Budete přesměrováni na <strong>%{ url }</strong>"
+
+#: front/src/components/auth/Authorize.vue:49
+msgctxt "Content/Auth/Paragraph"
+msgid "You will be shown a code to copy-paste in the application."
+msgstr "Zobrazí se vám kód pro vložení do aplikace."
+
+#: front/src/components/auth/Settings.vue:71
+msgctxt "Content/Settings/Paragraph"
+msgid "You will have to update your password on your clients that use this password."
+msgstr "Budete muset aktualizovat heslo na všech klientech kde je používáno."
+
+#: front/src/components/moderation/FilterModal.vue:20
+msgctxt "Popup/Moderation/Paragraph"
+msgid "You will not see tracks, albums and user activity linked to this artist any more:"
+msgstr "Neuvidíte stopy, alba a uživatelskou aktivitu spojenou s tímto interpretem:"
+
+#: front/src/components/auth/SignupForm.vue:9
+msgctxt "Content/Signup/Form/Paragraph"
+msgid "Your account cannot be created."
+msgstr "Váš účet nemůže být vytvořen."
+
+#: front/src/components/auth/Settings.vue:281
+msgctxt "Content/Settings/Paragraph'"
+msgid "Your account will be deleted from our servers within a few minutes. We will also notify other servers who may have a copy of some of your data so they can proceed to deletion. Please note that some of these servers may be offline or unwilling to comply though."
+msgstr "Váš účet bude ze serveru smazán během několika minut. Akce bude předána také ostatním serverům které mohou mít kopie některých vašich dat, tak aby případně došlo k jejich odstranění. Mějte prosím na vědomí, že některé z těchto serverů mohou být nedostupné nebo mohou nevyhovět tomuto požadavku."
+
+#: front/src/components/auth/Settings.vue:215
+msgctxt "Content/Settings/Title/Noun"
+msgid "Your applications"
+msgstr "Vaše aplikace"
+
+#: front/src/components/auth/Settings.vue:38
+msgctxt "Content/Settings/Error message.Title"
+msgid "Your avatar cannot be saved"
+msgstr "Váš avatar nemůže být uložen"
+
+#: front/src/components/auth/Settings.vue:527
+msgctxt "*/Auth/Message"
+msgid "Your deletion request was submitted, your account and content will be deleted shortly"
+msgstr "Požadavek o smazání byl odeslán, váš účet a obsah bude zanedlouho vymazán"
+
+#: front/src/components/library/EditForm.vue:3
+msgctxt "Content/Library/Paragraph"
+msgid "Your edit was successfully submitted."
+msgstr "Vaše úprava byla úspěšně odeslána."
+
+#: front/src/components/favorites/List.vue:116
+msgctxt "Head/Favorites/Title"
+msgid "Your Favorites"
+msgstr "Vaše Oblíbené"
+
+#: front/src/views/Notifications.vue:5
+msgctxt "Content/Notifications/Title"
+msgid "Your messages"
+msgstr "Vaše zprávy"
+
+#: front/src/views/Notifications.vue:69
+msgctxt "Content/Notifications/Title"
+msgid "Your notifications"
+msgstr "Vaše oznámení"
+
+#: front/src/components/auth/Settings.vue:76
+msgctxt "Content/Settings/Error message.Title"
+msgid "Your password cannot be changed"
+msgstr "Vaše heslo nemůže být změněno"
+
+#: front/src/views/auth/PasswordResetConfirm.vue:29
+msgctxt "Content/Signup/Card.Paragraph"
+msgid "Your password has been updated successfully."
+msgstr "Vaše heslo bylo úspěšně změněno."
+
+#: front/src/components/auth/Settings.vue:14
+msgctxt "Content/Settings/Error message.Title"
+msgid "Your settings can't be updated"
+msgstr "Vaše nastavení nemůže být aktualizováno"
+
+#: front/src/components/auth/Settings.vue:101
+msgctxt "Popup/Settings/List item"
+msgid "Your Subsonic password will be changed to a new, random one, logging you out from devices that used the old Subsonic password"
+msgstr "Vaše Subsonic heslo bude změněno na nové, náhodně vygenerované. Všechna zařízení využívající původní heslo se odhlásí."
+
+#: front/src/entities.js:126
+msgctxt "*/*/*/Noun"
+msgid "MusicBrainz ID"
+msgstr "MusicBrainz ID"
+
+#: front/src/main.js:110
+msgctxt "*/Error/Paragraph"
+msgid "You sent too many requests and have been rate limited, please try again in %{ delay }"
+msgstr "Překročili jste limit počtu požadavků, zkuste to prosím znovu za %{ delay }"
+
+#: front/src/main.js:113
+msgctxt "*/Error/Paragraph"
+msgid "You sent too many requests and have been rate limited, please try again later"
+msgstr "Překročili jste limit počtu požadavků, zkuste to prosím znovu později"
+
+#: front/src/components/library/AlbumBase.vue:208
+msgctxt "Content/Album/Header.Title"
+msgid "Album containing %{ count } track, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgid_plural "Album containing %{ count } tracks, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgstr[0] "Album obsahuje %{ count } stopu, od <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgstr[1] "Album obsahuje %{ count } stopy, od <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgstr[2] "Album obsahuje %{ count } stop, od <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+
+#: front/src/components/audio/PlayButton.vue:246
+msgctxt "*/Queue/Message"
+msgid "%{ count } track was added to your queue"
+msgid_plural "%{ count } tracks were added to your queue"
+msgstr[0] "%{ count } stopa byla přidána do fronty"
+msgstr[1] "%{ count } stopy byly přidány do fronty"
+msgstr[2] "%{ count } stop bylo přidáno do fronty"
diff --git a/front/locales/de/LC_MESSAGES/app.po b/front/locales/de/LC_MESSAGES/app.po
index c6f1a8611c4d03227c965e65e254b899bae18719..caeb4d80846e36fc09782e834a5731812c6a590d 100644
--- a/front/locales/de/LC_MESSAGES/app.po
+++ b/front/locales/de/LC_MESSAGES/app.po
@@ -7,16 +7,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: front 1.0.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-05-16 10:35+0200\n"
-"PO-Revision-Date: 2019-05-14 07:46+0000\n"
-"Last-Translator: Thomas Brockmöller <tho.b.j@gmx.de>\n"
+"POT-Creation-Date: 2019-10-01 15:15+0200\n"
+"PO-Revision-Date: 2019-08-25 13:34+0000\n"
+"Last-Translator: Tobias Reisinger <tobias@serguzim.me>\n"
 "Language-Team: none\n"
 "Language: de\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.2.2\n"
+"X-Generator: Weblate 3.7\n"
 
 #: front/src/components/playlists/PlaylistModal.vue:9
 msgctxt "Popup/Playlist/Paragraph"
@@ -38,6 +38,53 @@ msgctxt "Content/Auth/Title"
 msgid "%{ app } wants to access your Funkwhale account"
 msgstr "Melde Dich bei Deinem Funkwhale-Konto an"
 
+#: front/src/components/About.vue:173 src/components/Home.vue:56
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } active user"
+msgid_plural "%{ count } active users"
+msgstr[0] "%{ count } Titel"
+msgstr[1] "%{ count } Titel"
+
+#: front/src/components/About.vue:182
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } albums"
+msgid_plural "%{ count } albums"
+msgstr[0] "%{ count } Titel"
+msgstr[1] "%{ count } Titel"
+
+#: front/src/components/About.vue:152
+msgctxt "*/*/*"
+msgid "%{ count } allowed domains"
+msgid_plural "%{ count } allowed domains"
+msgstr[0] ""
+msgstr[1] ""
+
+#: front/src/components/About.vue:179
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } artists"
+msgid_plural "%{ count } artists"
+msgstr[0] "%{ count } Titel"
+msgstr[1] "%{ count } Titel"
+
+#: front/src/components/About.vue:176 src/components/Home.vue:59
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } hour of music"
+msgid_plural "%{ count } hours of music"
+msgstr[0] "%{ count } Titel"
+msgstr[1] "%{ count } Titel"
+
+#: front/src/components/About.vue:188
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } listenings"
+msgid_plural "%{ count } listenings"
+msgstr[0] "%{ count } Titel"
+msgstr[1] "%{ count } Titel"
+
 #: front/src/components/common/ActionTable.vue:68
 msgctxt "Content/*/Paragraph"
 msgid "%{ count } on %{ total } selected"
@@ -45,9 +92,9 @@ msgid_plural "%{ count } on %{ total } selected"
 msgstr[0] "%{ count } von %{ total } ausgewählt"
 msgstr[1] "%{ count } von %{ total } ausgewählt"
 
-#: front/src/components/Sidebar.vue:121 src/components/audio/album/Card.vue:52
+#: front/src/components/Sidebar.vue:125 src/components/audio/album/Card.vue:52
 #: front/src/views/content/libraries/Card.vue:40
-#: src/views/content/remote/Card.vue:30
+#: src/views/content/remote/Card.vue:43
 msgctxt "*/*/*"
 msgid "%{ count } track"
 msgid_plural "%{ count } tracks"
@@ -68,7 +115,15 @@ msgid_plural "%{ count } tracks matching combined filters"
 msgstr[0] "%{ count } Track entspricht den ausgewählten Filtern"
 msgstr[1] "%{ count } Tracks entsprechen den ausgewählten Filtern"
 
-#: front/src/components/playlists/Card.vue:18
+#: front/src/components/About.vue:185
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } tracks"
+msgid_plural "%{ count } tracks"
+msgstr[0] "%{ count } Titel"
+msgstr[1] "%{ count } Titel"
+
+#: front/src/components/playlists/Card.vue:28
 msgctxt "Content/*/Card/List item"
 msgid "%{ count} track"
 msgid_plural "%{ count } tracks"
@@ -93,9 +148,7 @@ msgstr "%{ minutes } min"
 #: front/src/components/notifications/NotificationRow.vue:40
 msgctxt "Content/Notifications/Paragraph"
 msgid "%{ username } accepted your follow on library \"%{ library }\""
-msgstr ""
-"Die Abonnieren-Anfrage zur Meditahek \"%{ library }\" wurde von %{ username "
-"} bestätigt"
+msgstr "Die Abonnieren-Anfrage zur Meditahek \"%{ library }\" wurde von %{ username } bestätigt"
 
 #: front/src/components/notifications/NotificationRow.vue:39
 msgctxt "Content/Notifications/Paragraph"
@@ -114,13 +167,10 @@ msgstr "Profil von %{ username }"
 
 #: front/src/components/playlists/PlaylistModal.vue:21
 msgctxt "Popup/Playlist/Paragraph"
-msgid ""
-"<strong>%{ track }</strong> is already in <strong>%{ playlist }</strong>."
-msgstr ""
-"<strong>%{ track }</strong> befindet sich bereits in <strong>%{ playlist "
-"}</strong>."
+msgid "<strong>%{ track }</strong> is already in <strong>%{ playlist }</strong>."
+msgstr "<strong>%{ track }</strong> befindet sich bereits in <strong>%{ playlist }</strong>."
 
-#: front/src/components/audio/artist/Card.vue:41
+#: front/src/components/audio/artist/Card.vue:11
 msgctxt "Content/Artist/Card"
 msgid "1 album"
 msgid_plural "%{ count } albums"
@@ -134,24 +184,44 @@ msgid_plural "%{ count } favorites"
 msgstr[0] "1 Favorit"
 msgstr[1] "%{ count } Favoriten"
 
-#: front/src/components/Home.vue:64
-msgctxt "Content/Home/Title"
-msgid "A clean library"
-msgstr "Eine übersichtliche Mediathek"
+#: front/src/components/audio/artist/Card.vue:15
+#, fuzzy
+msgctxt "Content/Artist/Card"
+msgid "1 track"
+msgid_plural "%{ count } tracks"
+msgstr[0] "Titel hinzufügen"
+msgstr[1] "Titel hinzufügen"
+
+#: front/src/views/Notifications.vue:21 src/views/Notifications.vue:55
+msgctxt "*/*/*"
+msgid "30 days"
+msgstr ""
+
+#: front/src/views/Notifications.vue:22 src/views/Notifications.vue:56
+msgctxt "*/*/*"
+msgid "60 days"
+msgstr ""
+
+#: front/src/views/Notifications.vue:23 src/views/Notifications.vue:57
+msgctxt "*/*/*"
+msgid "90 days"
+msgstr ""
 
 #: front/src/components/library/FileUpload.vue:264
+#, fuzzy
 msgctxt "Content/Library/Help text"
-msgid "A network error occured while uploading this file"
+msgid "A network error occurred while uploading this file"
 msgstr "Beim Hochladen ist ein Netzwerkfehler aufgetreten"
 
-#: front/src/components/library/EditForm.vue:145
+#: front/src/components/library/EditForm.vue:161
 msgctxt "*/*/Placeholder"
 msgid "A short summary describing your changes."
 msgstr "Kurze Beschreibung der Änderungen."
 
 #: front/src/components/About.vue:5
-msgctxt "Content/About/Title/Short, Noun"
-msgid "About %{ instance }"
+#, fuzzy
+msgctxt "Content/Home/Header"
+msgid "About %{ podName }"
 msgstr "Ãœber %{ instance }"
 
 #: front/src/components/Footer.vue:6
@@ -159,7 +229,7 @@ msgctxt "Footer/About/Title"
 msgid "About %{instanceName}"
 msgstr "Ãœber %{ instanceName }"
 
-#: front/src/components/Footer.vue:45
+#: front/src/components/Footer.vue:53 src/components/Home.vue:85
 msgctxt "Footer/*/Title/Short"
 msgid "About Funkwhale"
 msgstr "Ãœber Funkwhale"
@@ -169,9 +239,16 @@ msgctxt "Footer/About/List item.Link"
 msgid "About page"
 msgstr "Mehr erfahren"
 
-#: front/src/components/About.vue:8 src/components/About.vue:67
-msgctxt "Content/About/Title"
-msgid "About this instance"
+#: front/src/components/Home.vue:19
+#, fuzzy
+msgctxt "Content/Home/Header"
+msgid "About this Funkwhale pod"
+msgstr "Ãœber Funkwhale"
+
+#: front/src/components/About.vue:21 src/components/About.vue:51
+#, fuzzy
+msgctxt "Content/About/Header"
+msgid "About this pod"
 msgstr "Ãœber diese Instanz"
 
 #: front/src/views/content/libraries/Detail.vue:48
@@ -184,96 +261,87 @@ msgctxt "Content/Library/Table/Short"
 msgid "Accepted"
 msgstr "Akzeptiert"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:110
+#: front/src/components/auth/SubsonicTokenForm.vue:117
 msgctxt "Content/Settings/Message"
 msgid "Access disabled"
 msgstr "Zugriff deaktiviert"
 
-#: front/src/components/mixins/Translations.vue:73
-#: front/src/components/mixins/Translations.vue:74
+#: front/src/components/mixins/Translations.vue:85
+#: front/src/components/mixins/Translations.vue:86
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to audio files, libraries, artists, albums and tracks"
 msgstr "Zugriff auf Audio Dateien, Bibliotheken, Künstler, Alben und Lieder"
 
-#: front/src/components/mixins/Translations.vue:97
-#: front/src/components/mixins/Translations.vue:98
+#: front/src/components/mixins/Translations.vue:109
+#: front/src/components/mixins/Translations.vue:110
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to content filters"
 msgstr "Filter auswählen"
 
-#: front/src/components/mixins/Translations.vue:105
-#: front/src/components/mixins/Translations.vue:106
+#: front/src/components/mixins/Translations.vue:117
+#: front/src/components/mixins/Translations.vue:118
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to edits"
 msgstr "Zugriff deaktiviert"
 
-#: front/src/components/mixins/Translations.vue:69
-#: front/src/components/mixins/Translations.vue:70
+#: front/src/components/mixins/Translations.vue:81
+#: front/src/components/mixins/Translations.vue:82
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to email, username, and profile information"
 msgstr "Zugriff auf E-Mail Adresse, Benutzernamen und Profilinformationen"
 
-#: front/src/components/mixins/Translations.vue:77
-#: front/src/components/mixins/Translations.vue:78
+#: front/src/components/mixins/Translations.vue:89
+#: front/src/components/mixins/Translations.vue:90
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to favorites"
 msgstr "Zu deinen Favoriten hinzufügen"
 
-#: front/src/components/mixins/Translations.vue:85
-#: front/src/components/mixins/Translations.vue:86
+#: front/src/components/mixins/Translations.vue:97
+#: front/src/components/mixins/Translations.vue:98
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to follows"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:81
-#: front/src/components/mixins/Translations.vue:82
+#: front/src/components/mixins/Translations.vue:93
+#: front/src/components/mixins/Translations.vue:94
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to listening history"
 msgstr "In den Favoriten- oder Abspiellisten anderer Nutzer"
 
-#: front/src/components/mixins/Translations.vue:101
-#: front/src/components/mixins/Translations.vue:102
+#: front/src/components/mixins/Translations.vue:113
+#: front/src/components/mixins/Translations.vue:114
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to notifications"
 msgstr "Zugriff zu Benachrichtigungen"
 
-#: front/src/components/mixins/Translations.vue:89
-#: front/src/components/mixins/Translations.vue:90
+#: front/src/components/mixins/Translations.vue:101
+#: front/src/components/mixins/Translations.vue:102
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to playlists"
 msgstr "Zu einer Wiedergabeliste hinzufügen…"
 
-#: front/src/components/mixins/Translations.vue:93
-#: front/src/components/mixins/Translations.vue:94
+#: front/src/components/mixins/Translations.vue:105
+#: front/src/components/mixins/Translations.vue:106
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to radios"
 msgstr "Zugang zu den Radios"
 
-#: front/src/components/Home.vue:101
-msgctxt "Content/Home/List item"
-msgid ""
-"Access your music from a clean interface that focuses on what really matters"
-msgstr ""
-"Greife auf Deine Musik mit einer übersichtlichen Oberfläche zu, die sich auf"
-" das beschränkt, was wirklich wichtig ist"
-
 #: front/src/components/manage/library/UploadsTable.vue:67
-#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:55
 #: front/src/views/admin/library/UploadDetail.vue:175
-#: front/src/components/mixins/Translations.vue:46
+#: front/src/components/mixins/Translations.vue:56
 msgctxt "Content/*/*/Noun"
 msgid "Accessed date"
 msgstr "Zugriffsdatum"
 
-#: front/src/views/admin/library/LibraryDetail.vue:104
-#: front/src/views/admin/library/UploadDetail.vue:111
-msgctxt "*/*/*/Noun"
-msgid "Account"
-msgstr "Konto"
-
 #: front/src/components/manage/library/LibrariesTable.vue:49
 #: front/src/components/manage/library/UploadsTable.vue:61
-msgctxt "*/*/*"
+#: front/src/components/manage/moderation/ReportCard.vue:156
+#: front/src/components/mixins/Report.vue:13
+#: front/src/views/admin/library/LibraryDetail.vue:113
+#: front/src/views/admin/library/UploadDetail.vue:111
+#: front/src/components/mixins/Report.vue:14
+msgctxt "*/*/*/Noun"
 msgid "Account"
 msgstr "Konto"
 
@@ -287,7 +355,7 @@ msgctxt "Content/Settings/Title"
 msgid "Account settings"
 msgstr "Kontoeinstellungen"
 
-#: front/src/components/auth/Settings.vue:479
+#: front/src/components/auth/Settings.vue:544
 msgctxt "Head/Settings/Title"
 msgid "Account Settings"
 msgstr "Kontoeinstellungen"
@@ -304,7 +372,7 @@ msgstr "Konto-E-Mail-Adresse"
 
 #: front/src/views/admin/moderation/AccountsList.vue:3
 #: front/src/views/admin/moderation/AccountsList.vue:24
-#: front/src/views/admin/moderation/Base.vue:8
+#: front/src/views/admin/moderation/Base.vue:11
 msgctxt "*/Moderation/Title"
 msgid "Accounts"
 msgstr "Konto"
@@ -317,31 +385,30 @@ msgstr "Aktion"
 #: front/src/components/common/ActionTable.vue:101
 msgctxt "Content/*/Paragraph"
 msgid "Action %{ action } was launched successfully on %{ count } element"
-msgid_plural ""
-"Action %{ action } was launched successfully on %{ count } elements"
-msgstr[0] ""
-"Die Aktion %{ action } wurde erfolgreich für %{ count } Element gestartet"
-msgstr[1] ""
-"Die Aktion %{ action } wurde erfolgreich für %{ count } Elemente gestartet"
+msgid_plural "Action %{ action } was launched successfully on %{ count } elements"
+msgstr[0] "Die Aktion %{ action } wurde erfolgreich für %{ count } Element gestartet"
+msgstr[1] "Die Aktion %{ action } wurde erfolgreich für %{ count } Elemente gestartet"
 
 #: front/src/components/common/ActionTable.vue:22
 #: front/src/components/library/radios/Builder.vue:65
+#: front/src/components/manage/moderation/ReportCard.vue:210
 msgctxt "Content/*/*/Noun"
 msgid "Actions"
 msgstr "Aktionen"
 
-#: front/src/components/manage/users/UsersTable.vue:53
+#: front/src/components/manage/users/UsersTable.vue:54
 msgctxt "Content/Admin/Table"
 msgid "Active"
 msgstr "Aktiv"
 
-#: front/src/views/admin/library/AlbumDetail.vue:134
-#: front/src/views/admin/library/ArtistDetail.vue:123
-#: front/src/views/admin/library/LibraryDetail.vue:138
-#: front/src/views/admin/library/TrackDetail.vue:186
+#: front/src/views/admin/library/AlbumDetail.vue:140
+#: front/src/views/admin/library/ArtistDetail.vue:128
+#: front/src/views/admin/library/LibraryDetail.vue:147
+#: front/src/views/admin/library/TagDetail.vue:83
+#: front/src/views/admin/library/TrackDetail.vue:192
 #: front/src/views/admin/library/UploadDetail.vue:160
-#: front/src/views/admin/moderation/AccountsDetail.vue:220
-#: front/src/views/admin/moderation/DomainsDetail.vue:136
+#: front/src/views/admin/moderation/AccountsDetail.vue:221
+#: front/src/views/admin/moderation/DomainsDetail.vue:173
 msgctxt "Content/Moderation/Title"
 msgid "Activity"
 msgstr "Aktivität"
@@ -352,7 +419,7 @@ msgctxt "Content/Settings/Dropdown.Label/Noun"
 msgid "Activity visibility"
 msgstr "Sichtbarkeit der Aktivitäten"
 
-#: front/src/views/admin/moderation/DomainsList.vue:18
+#: front/src/views/admin/moderation/DomainsList.vue:22
 msgctxt "Content/Moderation/Button/Verb"
 msgid "Add"
 msgstr "Hinzufügen"
@@ -398,7 +465,21 @@ msgctxt "Content/Radio/Paragraph"
 msgid "Add filters to customize your radio"
 msgstr "Füge Filter hinzu, um dein Radio zu personalisieren"
 
-#: front/src/components/audio/PlayButton.vue:75
+#: front/src/components/manage/moderation/NoteForm.vue:12
+#, fuzzy
+msgctxt "Content/Moderation/Button.Label/Verb"
+msgid "Add note"
+msgstr "Inhalte hinzufügen"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:191
+#: front/src/views/admin/moderation/DomainsDetail.vue:46
+#: front/src/views/admin/moderation/DomainsList.vue:18
+#, fuzzy
+msgctxt "Content/Moderation/Action/Verb"
+msgid "Add to allow-list"
+msgstr "Zu einer Wiedergabeliste hinzufügen…"
+
+#: front/src/components/audio/PlayButton.vue:91
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Add to current queue"
 msgstr "Zur Warteschlange hinzufügen"
@@ -430,7 +511,7 @@ msgctxt "Popup/Playlist/Table.Button.Label/Verb"
 msgid "Add track"
 msgstr "Titel hinzufügen"
 
-#: front/src/components/manage/users/UsersTable.vue:69
+#: front/src/components/manage/users/UsersTable.vue:70
 msgctxt "Content/Admin/Table.User role"
 msgid "Admin"
 msgstr "Admin"
@@ -440,49 +521,49 @@ msgctxt "Sidebar/Admin/Title/Noun"
 msgid "Administration"
 msgstr "Verwaltung"
 
-#: front/src/views/admin/library/TrackDetail.vue:107
-msgctxt "*/*/*/Noun"
-msgid "Album"
-msgstr "Album"
-
-#: front/src/components/audio/SearchBar.vue:26
+#: front/src/components/audio/SearchBar.vue:33
 #: src/components/audio/track/Table.vue:9
-#: front/src/components/library/AlbumBase.vue:152
-#: front/src/components/library/ArtistBase.vue:194
+#: front/src/components/library/AlbumBase.vue:170
+#: front/src/components/library/ArtistBase.vue:212
 #: front/src/components/manage/library/TracksTable.vue:40
 #: front/src/components/metadata/Search.vue:134
+#: src/components/mixins/Report.vue:41
+#: front/src/views/admin/library/TrackDetail.vue:113
 #: front/src/views/content/libraries/FilesTable.vue:57
+#: front/src/components/mixins/Report.vue:42
 msgctxt "*/*/*"
 msgid "Album"
 msgstr "Album"
 
-#: front/src/views/admin/library/TrackDetail.vue:128
+#: front/src/views/admin/library/TrackDetail.vue:134
 msgctxt "*/*/*/Noun"
 msgid "Album artist"
 msgstr "Alben von diesem/-r Künstler/in"
 
-#: front/src/views/admin/library/AlbumDetail.vue:92
+#: front/src/views/admin/library/AlbumDetail.vue:98
 msgctxt "Content/Moderation/Title"
 msgid "Album data"
 msgstr "Albumname"
 
-#: front/src/components/mixins/Translations.vue:51
-#: front/src/components/mixins/Translations.vue:52
+#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/mixins/Translations.vue:62
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Album name"
 msgstr "Albumname"
 
 #: front/src/components/audio/Search.vue:19
-#: src/components/instance/Stats.vue:48
-#: front/src/components/library/Albums.vue:120
-#: src/components/library/Library.vue:7
+#: src/components/library/Albums.vue:129
+#: front/src/components/library/Library.vue:7
+#: src/components/library/TagDetail.vue:28
 #: front/src/components/manage/library/ArtistsTable.vue:41
+#: front/src/components/manage/library/TagsTable.vue:43
 #: front/src/views/admin/library/AlbumsList.vue:24
-#: front/src/views/admin/library/ArtistDetail.vue:241
+#: front/src/views/admin/library/ArtistDetail.vue:256
 #: front/src/views/admin/library/Base.vue:11
-#: front/src/views/admin/library/LibraryDetail.vue:219
-#: front/src/views/admin/moderation/AccountsDetail.vue:354
-#: front/src/views/admin/moderation/DomainsDetail.vue:264
+#: front/src/views/admin/library/LibraryDetail.vue:238
+#: front/src/views/admin/library/TagDetail.vue:133
+#: front/src/views/admin/moderation/AccountsDetail.vue:366
+#: front/src/views/admin/moderation/DomainsDetail.vue:301
 msgctxt "*/*/*"
 msgid "Albums"
 msgstr "Alben"
@@ -496,7 +577,10 @@ msgstr "Alben von diesem/-r Künstler/in"
 #: front/src/components/manage/library/LibrariesTable.vue:13
 #: front/src/components/manage/library/UploadsTable.vue:13
 #: front/src/components/manage/library/UploadsTable.vue:22
+#: front/src/components/manage/moderation/DomainsTable.vue:11
 #: front/src/components/manage/users/InvitationsTable.vue:19
+#: front/src/components/moderation/ReportCategoryDropdown.vue:32
+#: front/src/views/admin/moderation/ReportsList.vue:17
 #: front/src/views/content/libraries/FilesTable.vue:13
 msgctxt "Content/*/Dropdown"
 msgid "All"
@@ -514,44 +598,57 @@ msgctxt "Head/Authorize/Title"
 msgid "Allow application"
 msgstr "Anwendung zulassen"
 
+#: front/src/components/About.vue:136
+msgctxt "*/*/*"
+msgid "Allow-list"
+msgstr ""
+
+#: front/src/components/About.vue:149
+#, fuzzy
+msgctxt "*/*/*"
+msgid "Allowed domains"
+msgstr "Domain hinzufügen"
+
 #: front/src/components/library/ImportStatusModal.vue:17
+#, fuzzy
 msgctxt "Popup/Import/Message"
-msgid ""
-"An error occured during upload processing. You will find more information "
-"below."
-msgstr ""
-"Ein Fehler ist während des Uploads aufgetreten. Weitere Informationen "
-"befinden sich unten."
+msgid "An error occurred during upload processing. You will find more information below."
+msgstr "Ein Fehler ist während des Uploads aufgetreten. Weitere Informationen befinden sich unten."
 
 #: front/src/components/playlists/Editor.vue:13
+#, fuzzy
 msgctxt "Content/Playlist/Error message.Title"
-msgid "An error occured while saving your changes"
+msgid "An error occurred while saving your changes"
 msgstr "Beim Speichern Deiner Änderungen ist ein Fehler aufgetreten"
 
 #: front/src/components/federation/FetchButton.vue:21
+#, fuzzy
 msgctxt "Popup/*/Message.Content"
-msgid "An error occured while trying to refresh data:"
+msgid "An error occurred while trying to refresh data:"
 msgstr "Beim Speichern Deiner Änderungen ist ein Fehler aufgetreten"
 
 #: front/src/components/federation/FetchButton.vue:41
+#, fuzzy
 msgctxt "*/*/Error"
-msgid "An HTTP error occured while contacting the remote server"
+msgid "An HTTP error occurred while contacting the remote server"
 msgstr "Ein HTTP Fehler ist beim Verbinden zum Remove Server aufgetreten"
 
-#: front/src/components/auth/Login.vue:10
-msgctxt "Content/Login/Error message/List item"
-msgid ""
-"An unknown error happend, this can mean the server is down or cannot be "
-"reached"
-msgstr ""
-"Ein unbekannter Fehler ist aufgetreten. Eventuell ist der Server "
-"ausgeschaltet oder er kann nicht erreicht werden"
-
 #: front/src/components/library/ImportStatusModal.vue:145
+#, fuzzy
 msgctxt "Popup/Import/Error.Label"
-msgid "An unkwown error occured"
+msgid "An unknown error occurred"
 msgstr "Ein unbekannten Fehler ist aufgetreten"
 
+#: front/src/components/About.vue:123
+msgctxt "*/*/*"
+msgid "Anonymous access"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:54
+msgctxt "Popup/Moderation/Error message"
+msgid "Anonymous reports are disabled, please sign-in to submit a report."
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:175
 #: src/components/auth/Settings.vue:225
 msgctxt "*/*/*/Noun"
@@ -570,9 +667,7 @@ msgstr "Anwendungs-ID"
 
 #: front/src/components/auth/ApplicationEdit.vue:16
 msgctxt "Content/Application/Paragraph/"
-msgid ""
-"Application ID and secret are really sensitive values and must be treated "
-"like passwords. Do not share those with anyone else."
+msgid "Application ID and secret are really sensitive values and must be treated like passwords. Do not share those with anyone else."
 msgstr ""
 
 #: front/src/components/auth/ApplicationEdit.vue:25
@@ -602,29 +697,27 @@ msgctxt "Content/Login/Title"
 msgid "Are you sure you want to log out?"
 msgstr "Möchtest du dich wirklich abmelden?"
 
+#: front/src/components/audio/SearchBar.vue:32
+#: src/components/audio/track/Table.vue:8
 #: front/src/components/manage/library/AlbumsTable.vue:40
 #: front/src/components/manage/library/TracksTable.vue:41
-msgctxt "*/*/*"
-msgid "Artist"
-msgstr "Künstler·in"
-
-#: front/src/components/audio/SearchBar.vue:25
-#: src/components/audio/track/Table.vue:8
 #: front/src/components/metadata/Search.vue:130
-#: front/src/views/admin/library/AlbumDetail.vue:108
-#: front/src/views/admin/library/TrackDetail.vue:118
-#: front/src/views/content/libraries/FilesTable.vue:56
+#: src/components/mixins/Report.vue:55
+#: front/src/views/admin/library/AlbumDetail.vue:114
+#: front/src/views/admin/library/TrackDetail.vue:124
+#: front/src/views/content/libraries/FilesTable.vue:56 src/entities.js:12
+#: front/src/components/mixins/Report.vue:56
 msgctxt "*/*/*/Noun"
 msgid "Artist"
 msgstr "Künstler·in"
 
-#: front/src/views/admin/library/ArtistDetail.vue:91
+#: front/src/views/admin/library/ArtistDetail.vue:96
 msgctxt "Content/Moderation/Title"
 msgid "Artist data"
 msgstr "Künstlername"
 
-#: front/src/components/mixins/Translations.vue:52
-#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/mixins/Translations.vue:62
+#: front/src/components/mixins/Translations.vue:63
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Artist name"
 msgstr "Künstlername"
@@ -634,36 +727,36 @@ msgctxt "*/Search/Input.Placeholder"
 msgid "Artist, album, track…"
 msgstr "Künstler·in, Album, Titel…"
 
+#: front/src/components/audio/Search.vue:10
+#: src/components/library/Artists.vue:117
+#: front/src/components/library/Library.vue:10
+#: front/src/components/library/TagDetail.vue:19
+#: front/src/components/manage/library/TagsTable.vue:42
 #: front/src/views/admin/library/ArtistsList.vue:24
 #: front/src/views/admin/library/Base.vue:8
-#: front/src/views/admin/library/LibraryDetail.vue:209
-msgctxt "*/*/*"
-msgid "Artists"
-msgstr "Künstler·innen"
-
-#: front/src/components/audio/Search.vue:10
-#: src/components/instance/Stats.vue:42
-#: front/src/components/library/Artists.vue:117
-#: src/components/library/Library.vue:10
-#: front/src/views/admin/moderation/AccountsDetail.vue:346
-#: front/src/views/admin/moderation/DomainsDetail.vue:254
+#: front/src/views/admin/library/LibraryDetail.vue:228
+#: front/src/views/admin/library/TagDetail.vue:123
+#: front/src/views/admin/moderation/AccountsDetail.vue:358
+#: front/src/views/admin/moderation/DomainsDetail.vue:291
 msgctxt "*/*/*/Noun"
 msgid "Artists"
 msgstr "Künstler·innen"
 
 #: front/src/components/favorites/List.vue:34
-#: src/components/library/Albums.vue:25
-#: front/src/components/library/Artists.vue:25
+#: src/components/library/Albums.vue:29
+#: front/src/components/library/Artists.vue:29
 #: src/components/library/Radios.vue:44
 #: front/src/components/manage/library/AlbumsTable.vue:21
 #: front/src/components/manage/library/ArtistsTable.vue:21
 #: front/src/components/manage/library/EditsCardList.vue:39
 #: front/src/components/manage/library/LibrariesTable.vue:30
+#: front/src/components/manage/library/TagsTable.vue:21
 #: front/src/components/manage/library/TracksTable.vue:21
 #: front/src/components/manage/library/UploadsTable.vue:40
 #: front/src/components/manage/moderation/AccountsTable.vue:21
-#: front/src/components/manage/moderation/DomainsTable.vue:19
+#: front/src/components/manage/moderation/DomainsTable.vue:27
 #: front/src/components/manage/users/UsersTable.vue:19
+#: front/src/views/admin/moderation/ReportsList.vue:44
 #: front/src/views/content/libraries/FilesTable.vue:31
 #: front/src/views/playlists/List.vue:27
 msgctxt "Content/Search/Dropdown"
@@ -675,18 +768,24 @@ msgctxt "Content/Signup/Button.Label/Verb"
 msgid "Ask for a password reset"
 msgstr "Zurücksetzen des Kennworts beantragen"
 
-#: front/src/views/admin/library/AlbumDetail.vue:198
-#: front/src/views/admin/library/ArtistDetail.vue:187
-#: front/src/views/admin/library/LibraryDetail.vue:176
-#: front/src/views/admin/library/TrackDetail.vue:250
+#: front/src/components/manage/moderation/ReportCard.vue:72
+msgctxt "Content/Moderation/*"
+msgid "Assigned to"
+msgstr ""
+
+#: front/src/views/admin/library/AlbumDetail.vue:214
+#: front/src/views/admin/library/ArtistDetail.vue:202
+#: front/src/views/admin/library/LibraryDetail.vue:195
+#: front/src/views/admin/library/TagDetail.vue:113
+#: front/src/views/admin/library/TrackDetail.vue:266
 #: front/src/views/admin/library/UploadDetail.vue:191
-#: front/src/views/admin/moderation/AccountsDetail.vue:274
-#: front/src/views/admin/moderation/DomainsDetail.vue:202
+#: front/src/views/admin/moderation/AccountsDetail.vue:285
+#: front/src/views/admin/moderation/DomainsDetail.vue:239
 msgctxt "Content/Moderation/Title"
 msgid "Audio content"
 msgstr "Audio-Inhalt"
 
-#: front/src/components/ShortcutsModal.vue:55
+#: front/src/components/ShortcutsModal.vue:92
 msgctxt "Popup/Keyboard shortcuts/Title"
 msgid "Audio player shortcuts"
 msgstr "Audio-Player-Tastenkombinationen"
@@ -729,9 +828,9 @@ msgid "Back to settings"
 msgstr "Einstellungen aktualisieren"
 
 #: front/src/components/library/TrackDetail.vue:48
-#: front/src/components/mixins/Translations.vue:55
+#: front/src/components/mixins/Translations.vue:67
 #: front/src/views/admin/library/UploadDetail.vue:227
-#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:68
 msgctxt "Content/Track/*/Noun"
 msgid "Bitrate"
 msgstr "Bitrate"
@@ -744,14 +843,8 @@ msgstr "Alles blockieren"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:112
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Block everything from this account or domain. This will prevent any "
-"interaction with the entity, and purge related content (uploads, libraries, "
-"follows, etc.)"
-msgstr ""
-"Alles von diesem Konto oder dieser Domain blockieren. Das unterbindet "
-"jedwede Interaktion mit dieser Instanz, und alle zugehörigen Inhalte (Titel,"
-" Mediatheken, Abonnements, usw.) werden gelöscht"
+msgid "Block everything from this account or domain. This will prevent any interaction with the entity, and purge related content (uploads, libraries, follows, etc.)"
+msgstr "Alles von diesem Konto oder dieser Domain blockieren. Das unterbindet jedwede Interaktion mit dieser Instanz, und alle zugehörigen Inhalte (Titel, Mediatheken, Abonnements, usw.) werden gelöscht"
 
 #: front/src/components/Sidebar.vue:18 src/components/library/Library.vue:4
 msgctxt "*/Library/*/Verb"
@@ -763,6 +856,12 @@ msgctxt "Sidebar/Library/List item.Link/Verb"
 msgid "Browse library"
 msgstr "Die Mediathek durchsuchen"
 
+#: front/src/components/Home.vue:132
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Browse public content"
+msgstr "Tabelleninhalt aktualisieren"
+
 #: front/src/components/library/Albums.vue:4
 msgctxt "Content/Album/Title"
 msgid "Browsing albums"
@@ -793,40 +892,40 @@ msgctxt "Content/Album/Card"
 msgid "By %{ artist }"
 msgstr "Von %{ artist }"
 
-#: front/src/views/content/remote/Card.vue:112
+#: front/src/views/content/remote/Card.vue:125
 msgctxt "Popup/Library/Paragraph"
 msgid "By unfollowing this library, you loose access to its content."
-msgstr ""
-"Wenn du diese Mediathek nicht mehr folgst, verlierst du den Zugriff auf alle"
-" ihre Inhalte."
+msgstr "Wenn du diese Mediathek nicht mehr folgst, verlierst du den Zugriff auf alle ihre Inhalte."
 
-#: front/src/views/admin/library/AlbumDetail.vue:214
-#: front/src/views/admin/library/ArtistDetail.vue:203
-#: front/src/views/admin/library/LibraryDetail.vue:192
-#: front/src/views/admin/library/TrackDetail.vue:266
+#: front/src/views/admin/library/AlbumDetail.vue:230
+#: front/src/views/admin/library/ArtistDetail.vue:218
+#: front/src/views/admin/library/LibraryDetail.vue:211
+#: front/src/views/admin/library/TrackDetail.vue:282
 #: front/src/views/admin/library/UploadDetail.vue:208
-#: front/src/views/admin/moderation/AccountsDetail.vue:290
-#: front/src/views/admin/moderation/DomainsDetail.vue:217
+#: front/src/views/admin/moderation/AccountsDetail.vue:301
+#: front/src/views/admin/moderation/DomainsDetail.vue:254
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Cached size"
 msgstr "Cache-Größe"
 
 #: front/src/components/SetInstanceModal.vue:37
 #: front/src/components/common/DangerousButton.vue:17
-#: front/src/components/library/AlbumBase.vue:36
-#: front/src/components/library/ArtistBase.vue:47
-#: front/src/components/library/EditForm.vue:95
-#: front/src/components/library/TrackBase.vue:55
+#: front/src/components/library/AlbumBase.vue:37
+#: front/src/components/library/ArtistBase.vue:48
+#: front/src/components/library/EditForm.vue:107
+#: front/src/components/library/TrackBase.vue:53
 #: front/src/components/library/radios/Filter.vue:53
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:54
 #: front/src/components/moderation/FilterModal.vue:39
+#: front/src/components/moderation/ReportModal.vue:59
 #: front/src/components/playlists/PlaylistModal.vue:26
 #: front/src/components/playlists/PlaylistModal.vue:77
+#: front/src/views/playlists/Detail.vue:62
 msgctxt "*/*/Button.Label/Verb"
 msgid "Cancel"
 msgstr "Abbrechen"
 
-#: front/src/views/content/remote/Card.vue:97
+#: front/src/views/content/remote/Card.vue:110
 #, fuzzy
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Cancel follow request"
@@ -840,9 +939,15 @@ msgstr "Entsprechende Tracks"
 #: front/src/components/library/FileUpload.vue:261
 msgctxt "Content/Library/Help text"
 msgid "Cannot upload this file, ensure it is not too big"
+msgstr "Die Datei kann nicht hochgeladen werden. Bitte prüfe, dass sie nicht zu groß ist"
+
+#: front/src/components/manage/moderation/ReportCard.vue:30
+#: front/src/components/mixins/Translations.vue:42
+#: front/src/components/moderation/ReportCategoryDropdown.vue:2
+#: front/src/components/mixins/Translations.vue:43
+msgctxt "*/*/*"
+msgid "Category"
 msgstr ""
-"Die Datei kann nicht hochgeladen werden. Bitte prüfe, dass sie nicht zu groß"
-" ist"
 
 #: front/src/components/Footer.vue:21
 msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
@@ -859,6 +964,11 @@ msgctxt "Content/Settings/Button.Label"
 msgid "Change password"
 msgstr "Kennwort ändern"
 
+#: front/src/components/Footer.vue:37
+msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
+msgid "Change theme"
+msgstr ""
+
 #: front/src/views/auth/PasswordResetConfirm.vue:62
 msgctxt "*/Signup/Title"
 msgid "Change your password"
@@ -876,28 +986,22 @@ msgstr "Änderungen synchronisiert"
 
 #: front/src/components/auth/Settings.vue:71
 msgctxt "Content/Settings/Paragraph'"
-msgid ""
-"Changing your password will also change your Subsonic API password if you "
-"have requested one."
-msgstr ""
-"Beim Ändern deines Kennworts wird das Kennwort für die Subsonic-API "
-"zurückgesetzt, sofern du eins erstellt hast."
+msgid "Changing your password will also change your Subsonic API password if you have requested one."
+msgstr "Beim Ändern deines Kennworts wird das Kennwort für die Subsonic-API zurückgesetzt, sofern du eins erstellt hast."
 
 #: front/src/components/auth/Settings.vue:98
 msgctxt "Popup/Settings/Paragraph"
 msgid "Changing your password will have the following consequences:"
 msgstr "Wenn du dein Kennwort änderst, hat dies folgende Auswirkungen:"
 
-#: front/src/components/Footer.vue:40
+#: front/src/components/Footer.vue:48
 msgctxt "Footer/*/List item.Link"
 msgid "Chat room"
 msgstr "Chat-Raum"
 
 #: front/src/components/auth/ApplicationForm.vue:24
 msgctxt "Content/Applications/Paragraph/"
-msgid ""
-"Checking the parent \"Read\" or \"Write\" scopes implies access to all the "
-"corresponding children scopes."
+msgid "Checking the parent \"Read\" or \"Write\" scopes implies access to all the corresponding children scopes."
 msgstr ""
 
 #: front/src/components/SetInstanceModal.vue:2
@@ -905,12 +1009,9 @@ msgctxt "Popup/Instance/Title"
 msgid "Choose your instance"
 msgstr "Wähle deine Instanz"
 
-#: front/src/components/manage/users/InvitationForm.vue:37
-msgctxt "Content/Admin/Button.Label/Verb"
-msgid "Clear"
-msgstr "Löschen"
-
 #: front/src/components/library/EditForm.vue:75
+#: front/src/components/library/EditForm.vue:88
+#: front/src/components/manage/users/InvitationForm.vue:37
 msgctxt "Content/Library/Button.Label"
 msgid "Clear"
 msgstr "Löschen"
@@ -921,46 +1022,47 @@ msgctxt "*/Playlist/Button.Label/Verb"
 msgid "Clear playlist"
 msgstr "Wiedergabeliste leeren"
 
-#: front/src/components/audio/Player.vue:642
+#: front/src/components/ShortcutsModal.vue:144
+#, fuzzy
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Clear queue"
+msgstr "Warteschlange leeren"
+
+#: front/src/components/audio/Player.vue:668
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Clear your queue"
 msgstr "Warteschlange leeren"
 
-#: front/src/components/Home.vue:44
-msgctxt "Content/Home/List item/Verb"
-msgid "Click once, listen for hours using built-in radios"
-msgstr "Klicke einmal und höre dank der eingebauten Radios studenlang Musik"
-
 #: front/src/components/mixins/Translations.vue:21
 #: front/src/components/mixins/Translations.vue:22
 msgctxt "Content/Library/Link.Title"
-msgid ""
-"Click to display more information about the import process for this upload"
-msgstr ""
-"Klicke um mehr Informationen zum Importprozess für diesen Upload anzuzeigen"
+msgid "Click to display more information about the import process for this upload"
+msgstr "Klicke um mehr Informationen zum Importprozess für diesen Upload anzuzeigen"
 
 #: front/src/components/library/FileUpload.vue:82
 msgctxt "Content/Library/Paragraph/Call to action"
 msgid "Click to select files to upload or drag and drop files or directories"
-msgstr ""
-"Zum Hochladen klicken oder Dateien und Ordner hierher ziehen und ablegen"
+msgstr "Zum Hochladen klicken oder Dateien und Ordner hierher ziehen und ablegen"
 
+#: front/src/components/ShortcutsModal.vue:38
 #: front/src/components/federation/FetchButton.vue:85
 #: front/src/components/library/ImportStatusModal.vue:79
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:34
 msgctxt "*/*/Button.Label/Verb"
 msgid "Close"
 msgstr "Schließen"
 
-#: front/src/components/ShortcutsModal.vue:20
-msgctxt "Popup/Keyboard shortcuts/Button.Label/Verb"
-msgid "Close"
-msgstr "Schließen"
-
 #: front/src/components/federation/FetchButton.vue:88
 msgctxt "*/*/Button.Label/Verb"
 msgid "Close and reload page"
 msgstr "Schließen und Seite neu laden"
 
+#: front/src/components/About.vue:94
+#, fuzzy
+msgctxt "*/*/*/State of registrations"
+msgid "Closed"
+msgstr "Schließen"
+
 #: front/src/components/manage/users/InvitationForm.vue:26
 #: front/src/components/manage/users/InvitationsTable.vue:42
 msgctxt "Content/Admin/Table.Label/Noun"
@@ -968,8 +1070,9 @@ msgid "Code"
 msgstr "Code"
 
 #: front/src/components/audio/album/Card.vue:41
-#: front/src/components/audio/artist/Card.vue:33
-msgctxt "Content/*/Card.Link/Verb"
+#: front/src/components/common/CollapseLink.vue:3
+#, fuzzy
+msgctxt "*/*/Button,Label"
 msgid "Collapse"
 msgstr "Zuklappen"
 
@@ -993,44 +1096,47 @@ msgctxt "Content/Signup/Form.Label"
 msgid "Confirmation code"
 msgstr "Bestätigungscode"
 
+#: front/src/components/About.vue:67 src/components/Home.vue:65
+msgctxt "Content/Home/Header/Name"
+msgid "Contact"
+msgstr ""
+
 #: front/src/components/moderation/FilterModal.vue:90
 msgctxt "*/Moderation/Message"
 msgid "Content filter successfully added"
 msgstr "Filter erfolgreich hinzugefügt"
 
-#: front/src/components/mixins/Translations.vue:96
-#: front/src/components/mixins/Translations.vue:97
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Content filters"
-msgstr "Filter auswählen"
-
 #: front/src/components/auth/Settings.vue:116
+#: front/src/components/mixins/Translations.vue:108
+#: front/src/components/mixins/Translations.vue:109
 msgctxt "Content/Settings/Title/Noun"
 msgid "Content filters"
 msgstr "Filter auswählen"
 
 #: front/src/components/auth/Settings.vue:119
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"Content filters help you hide content you don't want to see on the service."
-msgstr ""
-"Mit Filtern können Inhalte verborgen werden, die nicht angezeigt werdern "
-"sollen."
+msgid "Content filters help you hide content you don't want to see on the service."
+msgstr "Mit Filtern können Inhalte verborgen werden, die nicht angezeigt werdern sollen."
 
 #: front/src/components/common/ActionTable.vue:8
 msgctxt "Content/*/Button.Help text.Paragraph"
 msgid "Content have been updated, click refresh to see up-to-date content"
-msgstr ""
-"Der Inhalt wurde aktualisiert. Um den neuesten Inhalt zu sehen, geh auf "
-"Aktualisieren"
+msgstr "Der Inhalt wurde aktualisiert. Um den neuesten Inhalt zu sehen, geh auf Aktualisieren"
 
-#: front/src/components/Footer.vue:48
+#: front/src/components/About.vue:46
+#, fuzzy
+msgctxt "Content/About/Header"
+msgid "Contents"
+msgstr "Filter auswählen"
+
+#: front/src/components/Footer.vue:56
 msgctxt "Footer/*/List item.Link"
 msgid "Contribute"
 msgstr "Mitmachen"
 
-#: front/src/components/audio/EmbedWizard.vue:19
+#: front/src/components/audio/EmbedWizard.vue:29
 #: front/src/components/common/CopyInput.vue:8
+#: front/src/components/forms/PasswordInput.vue:43
 msgctxt "*/*/Button.Label/Short, Verb"
 msgid "Copy"
 msgstr "Kopieren"
@@ -1045,14 +1151,14 @@ msgctxt "Content/Auth/Paragraph"
 msgid "Copy-paste the following code in the application:"
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:21
+#: front/src/components/audio/EmbedWizard.vue:31
 msgctxt "Popup/Embed/Paragraph"
 msgid "Copy/paste this code in your website HTML"
 msgstr "Füge diesen Code in Deine HTML-Webseite ein"
 
 #: front/src/components/library/TrackDetail.vue:10
-#: front/src/views/admin/library/TrackDetail.vue:153
-msgctxt "Content/Track/Table.Label/Noun"
+#: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:77
+msgctxt "Content/Track/*/Noun"
 msgid "Copyright"
 msgstr "Urheberrecht"
 
@@ -1066,29 +1172,20 @@ msgctxt "Content/Library/Error message.Title"
 msgid "Could not fetch remote library"
 msgstr "Die entfernte Mediathek konnte nicht abgerufen werden"
 
-#: front/src/components/Home.vue:80
-msgctxt "Content/Home/List item"
-msgid "Covers, lyrics, our goal is to have them all ;)"
-msgstr "Albumcover, Liedtexte - unser Ziel ist es, alle zu haben ;)"
-
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:58
 msgctxt "Content/Moderation/Card.Button.Label/Verb"
 msgid "Create"
 msgstr "Erstellen"
 
-#: front/src/components/auth/Signup.vue:4
+#: front/src/views/auth/Signup.vue:4
 msgctxt "Content/Signup/Title"
 msgid "Create a funkwhale account"
 msgstr "Funkwhale-Konto erstellen"
 
-#: front/src/components/auth/Settings.vue:220
-msgctxt "Content/Settings/Button.Label"
-msgid "Create a new application"
-msgstr "Eine neue Anwendung erstellen"
-
 #: front/src/components/auth/ApplicationNew.vue:8
 #: front/src/components/auth/ApplicationNew.vue:41
-msgctxt "Content/Applications/Title"
+#: front/src/components/auth/Settings.vue:220
+msgctxt "Content/Settings/Button.Label"
 msgid "Create a new application"
 msgstr "Eine neue Anwendung erstellen"
 
@@ -1102,7 +1199,7 @@ msgctxt "Popup/Playlist/Title/Verb"
 msgid "Create a new playlist"
 msgstr "Eine neue Wiedergabeliste erstellen"
 
-#: front/src/components/Sidebar.vue:57 src/components/auth/Login.vue:17
+#: front/src/components/Sidebar.vue:57 src/components/auth/LoginForm.vue:15
 msgctxt "*/Signup/Link/Verb"
 msgid "Create an account"
 msgstr "Konto erstellen"
@@ -1117,7 +1214,7 @@ msgctxt "Content/Library/Button.Label/Verb"
 msgid "Create library"
 msgstr "Mediathek erstellen"
 
-#: front/src/components/auth/Signup.vue:53
+#: front/src/components/auth/SignupForm.vue:49
 msgctxt "Content/Signup/Button.Label"
 msgid "Create my account"
 msgstr "Mein Konto erstellen"
@@ -1142,11 +1239,13 @@ msgstr "Dein eigenes Radio erstellen"
 #: front/src/components/manage/library/AlbumsTable.vue:44
 #: front/src/components/manage/library/ArtistsTable.vue:43
 #: front/src/components/manage/library/LibrariesTable.vue:54
+#: front/src/components/manage/library/TagsTable.vue:45
 #: front/src/components/manage/library/TracksTable.vue:44
 #: front/src/components/manage/library/UploadsTable.vue:66
+#: front/src/components/manage/moderation/ReportCard.vue:43
 #: front/src/components/manage/users/InvitationsTable.vue:40
-#: front/src/components/mixins/Translations.vue:43
-#: front/src/components/mixins/Translations.vue:44
+#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/mixins/Translations.vue:54
 msgctxt "Content/*/*/Noun"
 msgid "Creation date"
 msgstr "Erstellungsdatum"
@@ -1156,6 +1255,12 @@ msgctxt "Content/Settings/Title/Noun"
 msgid "Current avatar"
 msgstr "Aktuelles Profilbild"
 
+#: front/src/components/admin/SettingsGroup.vue:67
+#, fuzzy
+msgctxt "Content/Settings/Title/Noun"
+msgid "Current image"
+msgstr "Aktuelle Nutzung"
+
 #: front/src/views/content/libraries/DetailArea.vue:4
 msgctxt "Content/Library/Title"
 msgid "Current library"
@@ -1171,6 +1276,11 @@ msgctxt "Content/Library/Title"
 msgid "Current usage"
 msgstr "Aktuelle Nutzung"
 
+#: front/src/components/Footer.vue:94
+msgctxt "Footer/Settings/Dropdown.Label/Theme name"
+msgid "Dark"
+msgstr ""
+
 #: front/src/components/federation/FetchButton.vue:53
 msgctxt "*/*/Error"
 msgid "Data returned by the remote server had invalid or missing attributes"
@@ -1191,7 +1301,7 @@ msgctxt "Popup/Import/Table.Label/Noun"
 msgid "Debug information"
 msgstr "Titelinformation"
 
-#: front/src/components/ShortcutsModal.vue:75
+#: front/src/components/ShortcutsModal.vue:128
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Decrease volume"
 msgstr "Lautstärke verringern"
@@ -1203,23 +1313,29 @@ msgstr "Lautstärke verringern"
 #: front/src/components/manage/library/AlbumsTable.vue:188
 #: front/src/components/manage/library/ArtistsTable.vue:178
 #: front/src/components/manage/library/LibrariesTable.vue:205
+#: front/src/components/manage/library/TagsTable.vue:179
 #: front/src/components/manage/library/TracksTable.vue:188
 #: front/src/components/manage/library/UploadsTable.vue:255
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:61
+#: front/src/components/manage/moderation/NotesThread.vue:24
+#: front/src/components/manage/moderation/NotesThread.vue:29
+#: front/src/components/manage/moderation/ReportCard.vue:360
 #: front/src/components/manage/users/InvitationsTable.vue:167
-#: front/src/views/admin/library/AlbumDetail.vue:72
-#: front/src/views/admin/library/AlbumDetail.vue:77
-#: front/src/views/admin/library/ArtistDetail.vue:71
+#: front/src/views/admin/library/AlbumDetail.vue:78
+#: front/src/views/admin/library/AlbumDetail.vue:83
 #: front/src/views/admin/library/ArtistDetail.vue:76
+#: front/src/views/admin/library/ArtistDetail.vue:81
 #: front/src/views/admin/library/LibraryDetail.vue:58
 #: front/src/views/admin/library/LibraryDetail.vue:63
-#: front/src/views/admin/library/TrackDetail.vue:71
-#: front/src/views/admin/library/TrackDetail.vue:76
+#: front/src/views/admin/library/TagDetail.vue:41
+#: front/src/views/admin/library/TagDetail.vue:46
+#: front/src/views/admin/library/TrackDetail.vue:77
+#: front/src/views/admin/library/TrackDetail.vue:82
 #: front/src/views/admin/library/UploadDetail.vue:65
 #: front/src/views/admin/library/UploadDetail.vue:70
 #: front/src/views/content/libraries/FilesTable.vue:222
 #: front/src/views/content/libraries/Form.vue:29
-#: src/views/playlists/Detail.vue:34
+#: src/views/playlists/Detail.vue:42
 msgctxt "*/*/*/Verb"
 msgid "Delete"
 msgstr "Löschen"
@@ -1244,23 +1360,46 @@ msgctxt "Popup/Moderation/Button.Label/Verb"
 msgid "Delete moderation rule"
 msgstr "Moderationsregel löschen"
 
-#: front/src/views/playlists/Detail.vue:39
-msgctxt "Popup/Playlist/Button.Label/Verb"
-msgid "Delete playlist"
-msgstr "Wiedergabeliste löschen"
+#: front/src/components/auth/Settings.vue:274
+#: src/components/auth/Settings.vue:302
+#, fuzzy
+msgctxt "*/*/Button.Label"
+msgid "Delete my account"
+msgstr "Mein Konto erstellen"
+
+#: front/src/components/auth/Settings.vue:297
+#, fuzzy
+msgctxt "*/*/Button.Label"
+msgid "Delete my account…"
+msgstr "Mein Konto erstellen"
+
+#: front/src/views/playlists/Detail.vue:47
+msgctxt "Popup/Playlist/Button.Label/Verb"
+msgid "Delete playlist"
+msgstr "Wiedergabeliste löschen"
 
 #: front/src/views/radios/Detail.vue:28
 msgctxt "Popup/Radio/Button.Label/Verb"
 msgid "Delete radio"
 msgstr "Radio löschen"
 
-#: front/src/views/admin/library/AlbumDetail.vue:73
-#: front/src/views/admin/library/TrackDetail.vue:72
+#: front/src/components/manage/moderation/ReportCard.vue:357
+msgctxt "Content/Moderation/Button/Verb"
+msgid "Delete reported object"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:358
+msgctxt "Content/Moderation/Popup/Header"
+msgid "Delete reported object?"
+msgstr ""
+
+#: front/src/views/admin/library/AlbumDetail.vue:79
+#: front/src/views/admin/library/TrackDetail.vue:78
 msgctxt "Popup/Library/Title"
 msgid "Delete this album?"
 msgstr "Soll diesen Album gelöscht werden?"
 
-#: front/src/views/admin/library/ArtistDetail.vue:72
+#: front/src/views/admin/library/ArtistDetail.vue:77
 msgctxt "Popup/Library/Title"
 msgid "Delete this artist?"
 msgstr "Diese Mediathek löschen?"
@@ -1276,60 +1415,71 @@ msgctxt "Popup/Moderation/Title"
 msgid "Delete this moderation rule?"
 msgstr "Diese Moderationsregel löschen?"
 
+#: front/src/components/manage/moderation/NotesThread.vue:25
+#, fuzzy
+msgctxt "Popup/Moderation/Title"
+msgid "Delete this note?"
+msgstr "Diese Mediathek löschen?"
+
 #: front/src/components/library/EditCard.vue:94
 msgctxt "Popup/Library/Title"
 msgid "Delete this suggestion?"
 msgstr "Soll dieser Vorschlag gelöscht werden?"
 
+#: front/src/views/admin/library/TagDetail.vue:42
+#, fuzzy
+msgctxt "Popup/Library/Title"
+msgid "Delete this tag?"
+msgstr "Soll diesen Album gelöscht werden?"
+
 #: front/src/views/admin/library/UploadDetail.vue:66
 msgctxt "Popup/Library/Title"
 msgid "Delete this upload?"
 msgstr "Soll dieser Upload gelöscht werden?"
 
 #: front/src/components/favorites/List.vue:35
-#: src/components/library/Albums.vue:26
-#: front/src/components/library/Artists.vue:26
+#: src/components/library/Albums.vue:30
+#: front/src/components/library/Artists.vue:30
 #: src/components/library/Radios.vue:47
 #: front/src/components/manage/library/AlbumsTable.vue:22
 #: front/src/components/manage/library/ArtistsTable.vue:22
 #: front/src/components/manage/library/EditsCardList.vue:40
 #: front/src/components/manage/library/LibrariesTable.vue:31
+#: front/src/components/manage/library/TagsTable.vue:22
 #: front/src/components/manage/library/TracksTable.vue:22
 #: front/src/components/manage/library/UploadsTable.vue:41
 #: front/src/components/manage/moderation/AccountsTable.vue:22
-#: front/src/components/manage/moderation/DomainsTable.vue:20
+#: front/src/components/manage/moderation/DomainsTable.vue:28
 #: front/src/components/manage/users/UsersTable.vue:20
+#: front/src/views/admin/moderation/ReportsList.vue:45
 #: front/src/views/content/libraries/FilesTable.vue:32
 #: front/src/views/playlists/List.vue:28
 msgctxt "Content/Search/Dropdown"
 msgid "Descending"
 msgstr "Absteigend"
 
-#: front/src/views/admin/library/LibraryDetail.vue:123
-msgctxt "*/*/*/Noun"
-msgid "Description"
-msgstr "Beschreibung"
+#: front/src/components/manage/moderation/NoteForm.vue:37
+msgctxt "Content/Moderation/Placeholder"
+msgid "Describe what actions have been taken, or any other related updates…"
+msgstr ""
 
 #: front/src/components/library/radios/Builder.vue:25
+#: front/src/views/admin/library/LibraryDetail.vue:132
 #: front/src/views/content/libraries/Form.vue:14
-msgctxt "Content/*/Input.Label/Noun"
+msgctxt "*/*/*/Noun"
 msgid "Description"
 msgstr "Beschreibung"
 
 #: front/src/views/content/libraries/Card.vue:48
-#: src/views/content/remote/Card.vue:54
+#: src/views/content/remote/Card.vue:67
 msgctxt "Content/Library/Card.Button.Label/Noun"
 msgid "Details"
 msgstr "Details"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:491
+#: front/src/views/admin/moderation/AccountsDetail.vue:511
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Determine how much content the user can upload. Leave empty to use the "
-"default value of the instance."
-msgstr ""
-"Lege das Speichervolumen des Nutzers fest. Wird kein Wert angegeben, wird "
-"der Standardwert der Instanz verwendet."
+msgid "Determine how much content the user can upload. Leave empty to use the default value of the instance."
+msgstr "Lege das Speichervolumen des Nutzers fest. Wird kein Wert angegeben, wird der Standardwert der Instanz verwendet."
 
 #: front/src/components/mixins/Translations.vue:8
 #: front/src/components/mixins/Translations.vue:9
@@ -1338,38 +1488,51 @@ msgid "Determine the visibility level of your activity"
 msgstr "Lege fest, wer deine Aktivität sehen kann"
 
 #: front/src/components/auth/Settings.vue:104
-#: front/src/components/auth/SubsonicTokenForm.vue:51
+#: front/src/components/auth/SubsonicTokenForm.vue:56
 msgctxt "Popup/Settings/Button.Label"
 msgid "Disable access"
 msgstr "Zugriff deaktivieren"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:48
+#: front/src/components/auth/SubsonicTokenForm.vue:53
 msgctxt "Content/Settings/Button.Label/Verb"
 msgid "Disable Subsonic access"
 msgstr "Subsonic-Zugriff deaktivieren"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:49
+#: front/src/components/auth/SubsonicTokenForm.vue:54
 msgctxt "Popup/Settings/Title"
 msgid "Disable Subsonic API access?"
 msgstr "Subsonic-API-Zugriff deaktivieren?"
 
+#: front/src/components/About.vue:118 src/components/About.vue:131
+#: front/src/components/About.vue:144
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:18
 #: front/src/views/admin/moderation/AccountsDetail.vue:157
 #: front/src/views/admin/moderation/AccountsDetail.vue:161
-msgctxt "*/*/*"
+#, fuzzy
+msgctxt "*/*/*/State of feature"
 msgid "Disabled"
 msgstr "Deaktiviert"
 
-#: front/src/views/admin/library/TrackDetail.vue:145
+#: front/src/views/admin/library/TrackDetail.vue:151
 msgctxt "*/*/*/Noun"
 msgid "Disc number"
 msgstr "CD-Nummer"
 
+#: front/src/components/Home.vue:157
+msgctxt "Content/Home/Link"
+msgid "Discover everything you need to know about Funkwhale and its features"
+msgstr ""
+
 #: front/src/components/auth/SubsonicTokenForm.vue:13
 msgctxt "Content/Settings/Link"
 msgid "Discover how to use Funkwhale from other apps"
 msgstr "Entdecke, wie du Funkwhale von anderen Apps aus benutzen kannst"
 
+#: front/src/views/Notifications.vue:45
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Discover other ways to help"
+msgstr ""
+
 #: front/src/views/admin/moderation/AccountsDetail.vue:132
 msgctxt "'Content/*/*/Noun'"
 msgid "Display name"
@@ -1382,12 +1545,14 @@ msgstr "Öffentlich anzeigen"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:122
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Do not download any media file (audio, album cover, account avatar…) from "
-"this account or domain. This will purge existing content as well."
-msgstr ""
-"Lade keine Medien (Audio-Inhalt, Album-Cover, Profilbild, usw.) aus diesem "
-"Konto oder Domain. Alle existierenden Inhalte werden ebenfalls gelöscht."
+msgid "Do not download any media file (audio, album cover, account avatar…) from this account or domain. This will purge existing content as well."
+msgstr "Lade keine Medien (Audio-Inhalt, Album-Cover, Profilbild, usw.) aus diesem Konto oder Domain. Alle existierenden Inhalte werden ebenfalls gelöscht."
+
+#: front/src/views/Notifications.vue:36
+#, fuzzy
+msgctxt "Content/Notifications/Header"
+msgid "Do you like Funkwhale?"
+msgstr "Ãœber Funkwhale"
 
 #: front/src/components/playlists/Editor.vue:51
 msgctxt "Popup/Playlist/Title"
@@ -1399,7 +1564,7 @@ msgctxt "Modal/*/Title"
 msgid "Do you want to confirm this action?"
 msgstr "Vorgang bestätigen?"
 
-#: front/src/views/playlists/Detail.vue:35
+#: front/src/views/playlists/Detail.vue:43
 msgctxt "Popup/Playlist/Title/Call to action"
 msgid "Do you want to delete the playlist \"%{ playlist }\"?"
 msgstr "Möchtest du die Wiedergabeliste \"%{ playlist }\" löschen?"
@@ -1409,6 +1574,12 @@ msgctxt "Popup/Radio/Title"
 msgid "Do you want to delete the radio \"%{ radio }\"?"
 msgstr "Möchtest du das Radio \"%{ radio }\" löschen?"
 
+#: front/src/components/auth/Settings.vue:298
+#, fuzzy
+msgctxt "Popup/Settings/Title"
+msgid "Do you want to delete your account?"
+msgstr "Möchtest du die vorherige Warteschlange wiederherstellen?"
+
 #: front/src/components/moderation/FilterModal.vue:3
 msgctxt "Popup/Moderation/Title/Verb"
 msgid "Do you want to hide content from artist \"%{ name }\"?"
@@ -1421,7 +1592,13 @@ msgid_plural "Do you want to launch %{ action } on %{ count } elements?"
 msgstr[0] "Möchtest du %{ action } auf %{ count } Element ausführen?"
 msgstr[1] "Möchtest du %{ action } auf %{ count } Elemente ausführen?"
 
-#: front/src/components/Sidebar.vue:118
+#: front/src/components/moderation/ReportModal.vue:3
+#, fuzzy
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Do you want to report this object?"
+msgstr "Vorgang bestätigen?"
+
+#: front/src/components/Sidebar.vue:122
 msgctxt "Sidebar/Queue/Message"
 msgid "Do you want to restore your previous queue?"
 msgstr "Möchtest du die vorherige Warteschlange wiederherstellen?"
@@ -1437,26 +1614,33 @@ msgstr "Dokumentation"
 #: front/src/components/manage/library/TracksTable.vue:42
 #: front/src/components/manage/library/UploadsTable.vue:62
 #: front/src/components/manage/moderation/AccountsTable.vue:40
-#: front/src/components/mixins/Translations.vue:60
-#: front/src/views/admin/library/AlbumDetail.vue:118
-#: front/src/views/admin/library/ArtistDetail.vue:107
-#: front/src/views/admin/library/LibraryDetail.vue:114
-#: front/src/views/admin/library/TrackDetail.vue:170
+#: front/src/components/manage/moderation/ReportCard.vue:169
+#: front/src/components/manage/moderation/ReportCard.vue:179
+#: front/src/components/mixins/Translations.vue:72
+#: front/src/views/admin/library/AlbumDetail.vue:124
+#: front/src/views/admin/library/ArtistDetail.vue:112
+#: front/src/views/admin/library/LibraryDetail.vue:123
+#: front/src/views/admin/library/TrackDetail.vue:176
 #: front/src/views/admin/library/UploadDetail.vue:121
 #: front/src/views/admin/moderation/AccountsDetail.vue:123
-#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/mixins/Translations.vue:73
 msgctxt "Content/Moderation/*/Noun"
 msgid "Domain"
 msgstr "Domain"
 
-#: front/src/views/admin/moderation/Base.vue:5
+#: front/src/views/admin/moderation/Base.vue:8
 #: front/src/views/admin/moderation/DomainsList.vue:3
-#: front/src/views/admin/moderation/DomainsList.vue:48
+#: front/src/views/admin/moderation/DomainsList.vue:54
 msgctxt "*/Moderation/*/Noun"
 msgid "Domains"
 msgstr "Domains"
 
-#: front/src/components/library/TrackBase.vue:39
+#: front/src/views/Notifications.vue:42
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Donate"
+msgstr ""
+
+#: front/src/components/library/TrackBase.vue:37
 #: front/src/views/admin/library/UploadDetail.vue:58
 msgctxt "Content/Track/Link/Verb"
 msgid "Download"
@@ -1465,15 +1649,14 @@ msgstr "Herunterladen"
 #: front/src/components/playlists/Editor.vue:59
 msgctxt "Content/Playlist/Paragraph/Call to action"
 msgid "Drag and drop rows to reorder tracks in the playlist"
-msgstr ""
-"Klicke die Titel an und verschiebe sie, um die Wiedergabeliste umzuordnen"
+msgstr "Klicke die Titel an und verschiebe sie, um die Wiedergabeliste umzuordnen"
 
 #: front/src/components/audio/track/Table.vue:10
 #: front/src/components/library/TrackDetail.vue:30
-#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:68
 #: front/src/views/admin/library/UploadDetail.vue:238
 #: front/src/views/content/libraries/FilesTable.vue:60
-#: front/src/components/mixins/Translations.vue:57
+#: front/src/components/mixins/Translations.vue:69
 msgctxt "Content/*/*"
 msgid "Duration"
 msgstr "Dauer"
@@ -1483,41 +1666,27 @@ msgctxt "Content/Signup/Message"
 msgid "E-mail address confirmed"
 msgstr "E-Mail-Adresse bestätigt"
 
-#: front/src/components/Home.vue:88
-msgctxt "Content/Home/Title"
-msgid "Easy to use"
-msgstr "Benutzerfreundlich"
-
-#: front/src/components/library/AlbumBase.vue:68
-#: front/src/components/library/ArtistBase.vue:79
-#: front/src/components/library/TrackBase.vue:87
+#: front/src/components/auth/Settings.vue:246
+#: src/components/library/AlbumBase.vue:73
+#: front/src/components/library/ArtistBase.vue:84
+#: front/src/components/library/TrackBase.vue:89
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:45
 #: front/src/components/radios/Card.vue:23
-#: src/views/admin/library/AlbumDetail.vue:65
-#: front/src/views/admin/library/ArtistDetail.vue:64
-#: front/src/views/admin/library/TrackDetail.vue:64
+#: src/views/admin/library/AlbumDetail.vue:71
+#: front/src/views/admin/library/ArtistDetail.vue:69
+#: front/src/views/admin/library/TrackDetail.vue:70
 #: front/src/views/content/libraries/Detail.vue:9
 #: src/views/playlists/Detail.vue:31
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Edit"
 msgstr "Bearbeiten"
 
-#: front/src/components/auth/Settings.vue:246
-msgctxt "Content/Settings/Button.Label"
-msgid "Edit"
-msgstr "Bearbeiten"
-
 #: front/src/components/auth/ApplicationEdit.vue:30
 #: front/src/components/auth/ApplicationEdit.vue:75
 msgctxt "Content/Applications/Title"
 msgid "Edit application"
 msgstr "Anwendung bearbeiten"
 
-#: front/src/components/About.vue:22
-msgctxt "Content/Settings/Button.Label/Verb"
-msgid "Edit instance info"
-msgstr "Instanzdaten bearbeiten"
-
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:3
 msgctxt "Content/Moderation/Card.Title/Verb"
 msgid "Edit moderation rule"
@@ -1538,23 +1707,20 @@ msgctxt "Content/*/Title"
 msgid "Edit this track"
 msgstr "Diesen Titel ändern"
 
-#: front/src/views/admin/library/AlbumDetail.vue:182
-#: front/src/views/admin/library/ArtistDetail.vue:171
+#: front/src/components/mixins/Translations.vue:116
+#: front/src/views/admin/library/AlbumDetail.vue:198
+#: front/src/views/admin/library/ArtistDetail.vue:186
 #: front/src/views/admin/library/Base.vue:5
 #: src/views/admin/library/EditsList.vue:24
-#: front/src/views/admin/library/TrackDetail.vue:234
+#: front/src/views/admin/library/TrackDetail.vue:250
+#: front/src/components/mixins/Translations.vue:117
 msgctxt "*/Admin/*/Noun"
 msgid "Edits"
 msgstr "Bearbeitungen"
 
-#: front/src/components/mixins/Translations.vue:104
-#: front/src/components/mixins/Translations.vue:105
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Edits"
-msgstr "Bearbeitungen"
-
-#: front/src/components/auth/Signup.vue:30
+#: front/src/components/auth/SignupForm.vue:26
 #: front/src/components/manage/users/UsersTable.vue:38
+#: front/src/components/moderation/ReportModal.vue:31
 msgctxt "Content/*/*/Noun"
 msgid "Email"
 msgstr "E-Mail-Adresse"
@@ -1564,50 +1730,60 @@ msgctxt "Content/*/*"
 msgid "Email address"
 msgstr "E-Mail-Adresse"
 
-#: front/src/components/library/AlbumBase.vue:53
-#: front/src/components/library/ArtistBase.vue:64
-#: front/src/components/library/TrackBase.vue:72
+#: front/src/components/library/AlbumBase.vue:54
+#: front/src/components/library/ArtistBase.vue:65
+#: front/src/components/library/TrackBase.vue:70
+#: src/views/playlists/Detail.vue:38
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Embed"
 msgstr "Integrieren"
 
-#: front/src/components/audio/EmbedWizard.vue:20
+#: front/src/components/audio/EmbedWizard.vue:30
 msgctxt "Popup/Embed/Input.Label/Noun"
 msgid "Embed code"
 msgstr "Code integrieren"
 
-#: front/src/components/library/AlbumBase.vue:26
+#: front/src/components/library/AlbumBase.vue:27
 msgctxt "Popup/Album/Title/Verb"
 msgid "Embed this album on your website"
 msgstr "Bette dieses Album auf Deiner Webseite ein"
 
-#: front/src/components/library/ArtistBase.vue:37
+#: front/src/components/library/ArtistBase.vue:38
 msgctxt "Popup/Artist/Title/Verb"
 msgid "Embed this artist work on your website"
 msgstr "Bette diesen Track auf Deiner Webseite ein"
 
-#: front/src/components/library/TrackBase.vue:45
+#: front/src/views/playlists/Detail.vue:52
+#, fuzzy
+msgctxt "Popup/Album/Title/Verb"
+msgid "Embed this playlist on your website"
+msgstr "Bette dieses Album auf Deiner Webseite ein"
+
+#: front/src/components/library/TrackBase.vue:43
 msgctxt "Popup/Track/Title"
 msgid "Embed this track on your website"
 msgstr "Bette diesen Track auf Deiner Webseite ein"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:259
-#: front/src/views/admin/moderation/DomainsDetail.vue:187
+#: front/src/views/admin/moderation/AccountsDetail.vue:260
+#: front/src/views/admin/moderation/DomainsDetail.vue:224
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Emitted library follows"
 msgstr "Ausgehende Mediatheks-Abonnements"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:243
-#: front/src/views/admin/moderation/DomainsDetail.vue:171
+#: front/src/views/admin/moderation/AccountsDetail.vue:244
+#: front/src/views/admin/moderation/DomainsDetail.vue:208
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Emitted messages"
 msgstr "Verschickte Nachrichten"
 
+#: front/src/components/About.vue:114 src/components/About.vue:127
+#: front/src/components/About.vue:140
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:8
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:17
 #: front/src/views/admin/moderation/AccountsDetail.vue:156
 #: front/src/views/admin/moderation/AccountsDetail.vue:160
-msgctxt "*/*/*"
+#, fuzzy
+msgctxt "*/*/*/State of feature"
 msgid "Enabled"
 msgstr "Aktiviert"
 
@@ -1626,10 +1802,10 @@ msgctxt "Content/Search/Input.Placeholder"
 msgid "Enter a radio name…"
 msgstr "Name des Radios eingeben…"
 
-#: front/src/components/library/Albums.vue:119
+#: front/src/components/library/Albums.vue:128
 msgctxt "Content/Search/Input.Placeholder"
-msgid "Enter album title..."
-msgstr "Album Titel eingeben..."
+msgid "Enter album title…"
+msgstr "Album Titel eingeben…"
 
 #: front/src/components/library/Artists.vue:116
 msgctxt "Content/Search/Input.Placeholder"
@@ -1642,33 +1818,33 @@ msgid "Enter playlist name…"
 msgstr "Name der Wiedergabeliste eingeben…"
 
 #: front/src/views/auth/PasswordReset.vue:54
+#, fuzzy
 msgctxt "Content/Signup/Input.Placeholder"
-msgid "Enter the email address binded to your account"
+msgid "Enter the email address linked to your account"
 msgstr "Gib die E-Mail-Adresse ein, die mit deinem Konto verknüpft ist"
 
-#: front/src/components/auth/Signup.vue:103
+#: front/src/components/auth/SignupForm.vue:96
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your email"
 msgstr "Gib deine E-Mail-Adresse ein"
 
-#: front/src/components/auth/Signup.vue:98 src/components/auth/Signup.vue:100
+#: front/src/components/auth/SignupForm.vue:91
+#: src/components/auth/SignupForm.vue:93
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your invitation code (case insensitive)"
-msgstr ""
-"Gib deinen Einladungscode ein (Groß- und Kleinschreibung wird nicht "
-"berücksichtigt)"
+msgstr "Gib deinen Einladungscode ein (Groß- und Kleinschreibung wird nicht berücksichtigt)"
 
 #: front/src/components/metadata/Search.vue:114
 msgctxt "Content/Library/Input.Placeholder/Verb"
 msgid "Enter your search query…"
 msgstr "Suche eingeben…"
 
-#: front/src/components/auth/Signup.vue:102
+#: front/src/components/auth/SignupForm.vue:95
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your username"
 msgstr "Benutzername eingeben"
 
-#: front/src/components/auth/Login.vue:83
+#: front/src/components/auth/LoginForm.vue:81
 msgctxt "Content/Login/Input.Placeholder"
 msgid "Enter your username or email"
 msgstr "Benutzername oder E-Mail-Adresse eingeben"
@@ -1685,7 +1861,7 @@ msgctxt "Popup/Import/Table.Label/Noun"
 msgid "Error detail"
 msgstr "Fehlerbericht"
 
-#: front/src/views/admin/Settings.vue:87
+#: front/src/views/admin/Settings.vue:89
 msgctxt "Content/Admin/Menu"
 msgid "Error reporting"
 msgstr "Fehlerbericht"
@@ -1741,16 +1917,12 @@ msgctxt "Popup/Moderation/Error message"
 msgid "Error while fetching application data"
 msgstr "Fehler beim Abrufen der Anwendungsdaten"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:118
+#: front/src/views/admin/moderation/DomainsDetail.vue:155
 msgctxt "Content/Moderation/Table"
 msgid "Error while fetching node info"
 msgstr "Fehler beim Abrufen der Knoten-Information"
 
 #: front/src/components/admin/SettingsGroup.vue:5
-msgctxt "Content/Settings/Error message.Title"
-msgid "Error while saving settings"
-msgstr "Fehler beim Speichern der Einstellungen"
-
 #: front/src/components/federation/FetchButton.vue:73
 msgctxt "Content/*/Error message.Title"
 msgid "Error while saving settings"
@@ -1761,6 +1933,18 @@ msgctxt "Content/Library/Error message.Title"
 msgid "Error while submitting edit"
 msgstr "Fehler beim Speichern der Einstellungen"
 
+#: front/src/components/manage/moderation/NoteForm.vue:3
+#, fuzzy
+msgctxt "Content/Moderation/Error message.Title"
+msgid "Error while submitting note"
+msgstr "Fehler beim Speichern der Einstellungen"
+
+#: front/src/components/moderation/ReportModal.vue:11
+#, fuzzy
+msgctxt "Popup/Moderation/Error message"
+msgid "Error while submitting report"
+msgstr "Fehler beim Speichern der Einstellungen"
+
 #: front/src/components/mixins/Translations.vue:32
 #: front/src/components/mixins/Translations.vue:33
 msgctxt "Content/Library/Table/Short"
@@ -1782,7 +1966,7 @@ msgstr "Jeder"
 #: front/src/components/mixins/Translations.vue:12
 msgctxt "Content/Settings/Dropdown"
 msgid "Everyone on this instance"
-msgstr "Jerder auf dieser Instanz"
+msgstr "Jeder auf dieser Instanz"
 
 #: front/src/components/mixins/Translations.vue:12
 #: front/src/components/mixins/Translations.vue:13
@@ -1795,9 +1979,14 @@ msgctxt "Content/Radio/Table.Label/Verb"
 msgid "Exclude"
 msgstr "Ausschließen"
 
+#: front/src/components/common/CollapseLink.vue:2
+msgctxt "*/*/Button,Label"
+msgid "Expand"
+msgstr ""
+
 #: front/src/components/manage/users/InvitationsTable.vue:41
-#: front/src/components/mixins/Translations.vue:49
-#: front/src/components/mixins/Translations.vue:50
+#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:60
 msgctxt "Content/Admin/Table.Label/Noun"
 msgid "Expiration date"
 msgstr "Ablaufdatum"
@@ -1814,17 +2003,8 @@ msgstr "Abgelaufen bzw. benutzt"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:110
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Explain why you're applying this policy. Depending on your instance "
-"configuration, this will help you remember why you acted on this account or "
-"domain, and may be displayed publicly to help users understand what "
-"moderation rules are in place."
-msgstr ""
-"Erkläre, warum Du die Regel festlegst. Abhängig von Deiner "
-"Instanzkonfiguration hilft Dir das, Dich daran zu erinnern, warum Du bzgl. "
-"des Kontos oder dieser Domäne so gehandelt hast. Dies kann öffentlich "
-"eingesehen werden damit die Benutzer verstehen, welche Moderationsregeln "
-"gelten."
+msgid "Explain why you're applying this policy. Depending on your instance configuration, this will help you remember why you acted on this account or domain, and may be displayed publicly to help users understand what moderation rules are in place."
+msgstr "Erkläre, warum Du die Regel festlegst. Abhängig von Deiner Instanzkonfiguration hilft Dir das, Dich daran zu erinnern, warum Du bzgl. des Kontos oder dieser Domäne so gehandelt hast. Dies kann öffentlich eingesehen werden damit die Benutzer verstehen, welche Moderationsregeln gelten."
 
 #: front/src/components/manage/library/UploadsTable.vue:25
 #: front/src/views/content/libraries/FilesTable.vue:16
@@ -1832,31 +2012,28 @@ msgctxt "Content/Library/Dropdown"
 msgid "Failed"
 msgstr "Fehlgeschlagen"
 
-#: front/src/views/content/remote/Card.vue:62
+#: front/src/views/content/remote/Card.vue:75
 msgctxt "Content/Library/Card.List item/Noun"
 msgid "Failed tracks:"
 msgstr "Fehlgeschlagene Titel:"
 
-#: front/src/views/admin/library/AlbumDetail.vue:165
-#: front/src/views/admin/library/ArtistDetail.vue:154
-#: front/src/views/admin/library/TrackDetail.vue:217
+#: front/src/views/admin/library/AlbumDetail.vue:171
+#: front/src/views/admin/library/ArtistDetail.vue:159
+#: front/src/views/admin/library/TrackDetail.vue:223
 msgctxt "*/*/*"
 msgid "Favorited tracks"
 msgstr "Lieblingstitel"
 
 #: front/src/components/Sidebar.vue:66
+#: src/components/mixins/Translations.vue:88
+#: front/src/components/mixins/Translations.vue:89
 msgctxt "Sidebar/Favorites/List item.Link/Noun"
 msgid "Favorites"
 msgstr "Favoriten"
 
-#: front/src/components/mixins/Translations.vue:76
-#: front/src/components/mixins/Translations.vue:77
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Favorites"
-msgstr "Favoriten"
-
-#: front/src/views/admin/Settings.vue:84
-msgctxt "Content/Admin/Menu"
+#: front/src/components/About.vue:110 src/views/admin/Settings.vue:84
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Federation"
 msgstr "Föderation"
 
@@ -1880,6 +2057,11 @@ msgctxt "Content/Radio/Table.Label/Noun"
 msgid "Filter name"
 msgstr "Filtername"
 
+#: front/src/components/Home.vue:118
+msgctxt "Content/Home/Link"
+msgid "Find another pod"
+msgstr ""
+
 #: front/src/components/manage/library/UploadsTable.vue:26
 #: front/src/components/mixins/Translations.vue:36
 #: front/src/views/content/libraries/FilesTable.vue:17
@@ -1889,25 +2071,31 @@ msgid "Finished"
 msgstr "Beendet"
 
 #: front/src/components/manage/moderation/AccountsTable.vue:42
-#: front/src/components/manage/moderation/DomainsTable.vue:41
-#: front/src/views/admin/library/AlbumDetail.vue:149
-#: front/src/views/admin/library/ArtistDetail.vue:138
-#: front/src/views/admin/library/LibraryDetail.vue:153
-#: front/src/views/admin/library/TrackDetail.vue:201
+#: front/src/components/manage/moderation/DomainsTable.vue:49
+#: front/src/views/admin/library/AlbumDetail.vue:155
+#: front/src/views/admin/library/ArtistDetail.vue:143
+#: front/src/views/admin/library/LibraryDetail.vue:162
+#: front/src/views/admin/library/TagDetail.vue:98
+#: front/src/views/admin/library/TrackDetail.vue:207
 #: front/src/views/admin/library/UploadDetail.vue:167
-#: front/src/views/admin/moderation/AccountsDetail.vue:235
-#: front/src/views/admin/moderation/DomainsDetail.vue:151
+#: front/src/views/admin/moderation/AccountsDetail.vue:236
+#: front/src/views/admin/moderation/DomainsDetail.vue:188
 msgctxt "Content/Moderation/Table.Label/Short (Value is a date)"
 msgid "First seen"
 msgstr "Erstmals gesehen"
 
-#: front/src/components/mixins/Translations.vue:46
-#: front/src/components/mixins/Translations.vue:47
+#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:57
 msgctxt "Content/Moderation/Dropdown/Noun"
 msgid "First seen date"
 msgstr "Erstmals gesehen"
 
-#: front/src/views/content/remote/Card.vue:87
+#: front/src/components/ShortcutsModal.vue:64
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Focus searchbar"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:100
 msgctxt "Content/Library/Card.Button.Label/Verb"
 msgid "Follow"
 msgstr "Abonnieren"
@@ -1917,40 +2105,34 @@ msgctxt "Content/Library/Title/Verb"
 msgid "Follow remote libraries"
 msgstr "Fernmediatheken abonnieren"
 
-#: front/src/views/content/remote/Card.vue:92
+#: front/src/views/content/remote/Card.vue:105
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Follow request pending approval"
 msgstr "Ausstehende Abonnements-Anfrage"
 
-#: front/src/components/mixins/Translations.vue:64
-#: front/src/views/admin/library/LibraryDetail.vue:161
+#: front/src/components/manage/library/LibrariesTable.vue:53
+#: front/src/components/mixins/Translations.vue:76
+#: front/src/views/admin/library/LibraryDetail.vue:170
 #: front/src/views/content/libraries/Detail.vue:7
-#: front/src/components/mixins/Translations.vue:65
+#: front/src/components/mixins/Translations.vue:77
 msgctxt "Content/Federation/*/Noun"
 msgid "Followers"
 msgstr "Abonnenten"
 
-#: front/src/components/manage/library/LibrariesTable.vue:53
-msgctxt "Content/*/*/Noun"
-msgid "Followers"
-msgstr "Abonnenten"
-
-#: front/src/views/content/remote/Card.vue:103
+#: front/src/views/content/remote/Card.vue:116
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Following"
 msgstr "Abonniert"
 
-#: front/src/components/mixins/Translations.vue:84
-#: front/src/components/mixins/Translations.vue:85
+#: front/src/components/mixins/Translations.vue:96
+#: front/src/components/mixins/Translations.vue:97
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Follows"
 msgstr "Abonnieren"
 
-#: front/src/components/library/TrackBase.vue:17
+#: front/src/components/library/TrackBase.vue:245
 msgctxt "Content/Track/Paragraph"
-msgid ""
-"From album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> by <a"
-" class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgid "From album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
 msgstr ""
 
 #: front/src/components/auth/Authorize.vue:28
@@ -1960,38 +2142,21 @@ msgstr "Zugriff deaktivieren"
 
 #: front/src/components/auth/SubsonicTokenForm.vue:7
 msgctxt "Content/Settings/Paragraph'"
-msgid ""
-"Funkwhale is compatible with other music players that support the Subsonic "
-"API."
-msgstr ""
-"Funkwhale ist kompatibel mit anderen Mediaplayern, die die Subsonic-API "
-"unterstützen."
-
-#: front/src/components/Home.vue:90
-msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale is dead simple to use."
-msgstr "Funkwhale ist absolut einfach zu benutzen."
-
-#: front/src/components/Home.vue:39
-msgctxt "Content/Home/Paragraph"
-msgid ""
-"Funkwhale is designed to make it easy to listen to music you like, or to "
-"discover new artists."
-msgstr ""
-"Funkwhale macht es Dir leicht, Deine Lieblingsmusik anzuhören und neue "
-"Künstler·innen zu entdecken."
+msgid "Funkwhale is compatible with other music players that support the Subsonic API."
+msgstr "Funkwhale ist kompatibel mit anderen Mediaplayern, die die Subsonic-API unterstützen."
 
-#: front/src/components/Home.vue:111
+#: front/src/components/Home.vue:88
+#, fuzzy
 msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale is free and gives you control on your music."
+msgid "Funkwhale is free and developped by a friendly community of volunteers."
 msgstr "Funkwhale ist kostenlos und gibt dir die Kontrolle über deine Musik."
 
-#: front/src/components/Home.vue:66
-msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale takes care of handling your music"
-msgstr "Funkwhale kümmert sich um deine Musik"
+#: front/src/components/About.vue:78
+msgctxt "*/*/*"
+msgid "Funkwhale version"
+msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:38
+#: front/src/components/ShortcutsModal.vue:56
 msgctxt "Popup/Keyboard shortcuts/Title"
 msgid "General shortcuts"
 msgstr "Allgemeine Tastenkombinationen"
@@ -2001,35 +2166,17 @@ msgctxt "Content/Admin/Button.Label/Verb"
 msgid "Get a new invitation"
 msgstr "Eine neue Einladung bekommen"
 
-#: front/src/components/Home.vue:13
-msgctxt "Content/Home/Button.Label/Verb"
-msgid "Get me to the library"
-msgstr "Bring mich zur Mediathek"
-
-#: front/src/components/Home.vue:70
-msgctxt "Content/Home/List item/Verb"
-msgid ""
-"Get quality metadata about your music thanks to <a href=\"%{ url }\" "
-"target=\"_blank\">MusicBrainz</a>"
-msgstr ""
-"Dank <a href=\"https://musicbrainz.org\" target=\"_blank\">MusicBrainz</a> "
-"kannst du deine Musik mit hochwertigen Metadaten verschlagworten"
-
 #: front/src/views/content/Home.vue:12 src/views/content/Home.vue:19
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Get started"
 msgstr "Loslegen"
 
-#: front/src/components/Footer.vue:37
+#: front/src/components/Footer.vue:45
+#: src/components/library/ImportStatusModal.vue:45
 msgctxt "Footer/*/Link"
 msgid "Getting help"
 msgstr "Hilfe bekommen"
 
-#: front/src/components/library/ImportStatusModal.vue:45
-msgctxt "Popup/Import/Table.Label/Noun"
-msgid "Getting help"
-msgstr "Hilfe bekommen"
-
 #: front/src/components/common/ActionTable.vue:35
 #: front/src/components/common/ActionTable.vue:56
 msgctxt "Content/*/Button.Label/Short, Verb"
@@ -2041,11 +2188,21 @@ msgctxt "Content/*/Button.Label/Verb"
 msgid "Go to home page"
 msgstr "Zurück zur Startseite"
 
+#: front/src/views/Notifications.vue:27 src/views/Notifications.vue:61
+msgctxt "Content/Notifications/Button.Label"
+msgid "Got it!"
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:128
 msgctxt "Content/Settings/Title"
 msgid "Hidden artists"
 msgstr "verborgene Künstler·innen"
 
+#: front/src/components/About.vue:155
+msgctxt "*/*/*/Verb"
+msgid "Hide"
+msgstr ""
+
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:114
 msgctxt "Content/Moderation/Help text"
 msgid "Hide account or domain content, except from followers."
@@ -2056,12 +2213,12 @@ msgctxt "Popup/*/Button.Label"
 msgid "Hide content"
 msgstr "Inhalte verbergen"
 
-#: front/src/components/audio/PlayButton.vue:26
+#: front/src/components/audio/PlayButton.vue:31
 msgctxt "*/Queue/Dropdown/Button/Label/Short"
 msgid "Hide content from this artist"
 msgstr "Inhalte dieses Künsters verbergen"
 
-#: front/src/components/audio/Player.vue:643
+#: front/src/components/audio/Player.vue:669
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Hide content from this artist…"
 msgstr "Inhalte dieses Künsters verbergen"
@@ -2071,38 +2228,29 @@ msgctxt "Head/Home/Title"
 msgid "Home"
 msgstr "Start"
 
-#: front/src/components/instance/Stats.vue:36
-msgctxt "Content/About/Paragraph/Unit"
-msgid "Hours of music"
-msgstr "Stunden Musik"
-
 #: front/src/components/auth/SubsonicTokenForm.vue:10
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"However, accessing Funkwhale from those clients require a separate password "
-"you can set below."
-msgstr ""
-"Der Zugriff auf Funkwhale von diesen Apps benötigt ein zusätzliches "
-"Kennwort. Du kannst dieses Kennwort hier erstellen."
+msgid "However, accessing Funkwhale from those clients require a separate password you can set below."
+msgstr "Der Zugriff auf Funkwhale von diesen Apps benötigt ein zusätzliches Kennwort. Du kannst dieses Kennwort hier erstellen."
 
 #: front/src/views/auth/PasswordResetConfirm.vue:24
+#, fuzzy
 msgctxt "Content/Signup/Paragraph"
-msgid ""
-"If the email address provided in the previous step is valid and binded to a "
-"user account, you should receive an email with reset instructions in the "
-"next couple of minutes."
-msgstr ""
-"Ist die angegebene E-Mail-Adresse mit einem Benutzerkonto verknüpft, wirst "
-"du in Kürze eine E-Mail mit einer Anleitung zum Rücksetzen deines Passworts "
-"bekommen."
+msgid "If the email address provided in the previous step is valid and linked to a user account, you should receive an email with reset instructions in the next couple of minutes."
+msgstr "Ist die angegebene E-Mail-Adresse mit einem Benutzerkonto verknüpft, wirst du in Kürze eine E-Mail mit einer Anleitung zum Rücksetzen deines Passworts bekommen."
 
 #: front/src/components/auth/Settings.vue:205
 msgctxt "Content/Applications/Paragraph"
-msgid ""
-"If you authorize third-party applications to access your data, those "
-"applications will be listed here."
+msgid "If you authorize third-party applications to access your data, those applications will be listed here."
 msgstr ""
 
+#: front/src/components/mixins/Translations.vue:46
+#: front/src/components/mixins/Translations.vue:47
+#, fuzzy
+msgctxt "Content/Moderation/Dropdown"
+msgid "Illegal content"
+msgstr "Inhalte verbergen"
+
 #: front/src/components/library/ImportStatusModal.vue:3
 msgctxt "Popup/Import/Title"
 msgid "Import detail"
@@ -2114,14 +2262,10 @@ msgid "Import reference"
 msgstr "Importreferenz"
 
 #: front/src/components/manage/library/UploadsTable.vue:20
-#: front/src/views/content/libraries/FilesTable.vue:11
-#: front/src/views/content/libraries/FilesTable.vue:59
-msgctxt "Content/Library/*/Noun"
-msgid "Import status"
-msgstr "Importstatus"
-
 #: front/src/components/manage/library/UploadsTable.vue:64
 #: front/src/views/admin/library/UploadDetail.vue:131
+#: front/src/views/content/libraries/FilesTable.vue:11
+#: front/src/views/content/libraries/FilesTable.vue:59
 msgctxt "Content/*/*/Noun"
 msgid "Import status"
 msgstr "Importstatus"
@@ -2162,12 +2306,12 @@ msgctxt "Popup/Moderation/List item"
 msgid "In radio suggestions"
 msgstr ""
 
-#: front/src/components/manage/users/UsersTable.vue:54
+#: front/src/components/manage/users/UsersTable.vue:55
 msgctxt "Content/Admin/Table"
 msgid "Inactive"
 msgstr "Inaktiv"
 
-#: front/src/components/ShortcutsModal.vue:71
+#: front/src/components/ShortcutsModal.vue:124
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Increase volume"
 msgstr "Lautstärke erhöhen"
@@ -2185,7 +2329,7 @@ msgctxt "Content/Settings/Dropdown/Short"
 msgid "Instance"
 msgstr "Instanzdaten"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:71
+#: front/src/views/admin/moderation/DomainsDetail.vue:99
 msgctxt "Content/Moderation/Title"
 msgid "Instance data"
 msgstr "Instanzdaten"
@@ -2210,22 +2354,25 @@ msgctxt "Popup/Instance/Input.Label/Noun"
 msgid "Instance URL"
 msgstr "Instanzdaten"
 
+#: front/src/components/manage/moderation/ReportCard.vue:92
+#: front/src/components/manage/moderation/ReportCard.vue:203
+msgctxt "Content/*/*/Noun"
+msgid "Internal notes"
+msgstr ""
+
 #: front/src/components/library/FileUpload.vue:268
 msgctxt "Content/Library/Help text"
-msgid ""
-"Invalid file type, ensure you are uploading an audio file. Supported file "
-"extensions are %{ extensions }"
-msgstr ""
-"Das Dateiformat ist ungültig. Stelle bitte sicher, dass du eine Audio-Datei "
-"hochladen möchtest. Die folgenden Dateiformate sind unterstützt: %{ "
-"extensions }"
+msgid "Invalid file type, ensure you are uploading an audio file. Supported file extensions are %{ extensions }"
+msgstr "Das Dateiformat ist ungültig. Stelle bitte sicher, dass du eine Audio-Datei hochladen möchtest. Die folgenden Dateiformate sind unterstützt: %{ extensions }"
 
 #: front/src/components/library/ImportStatusModal.vue:139
+#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:46
 msgctxt "Popup/Import/Error.Label"
 msgid "Invalid metadata"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:44
+#: front/src/components/auth/SignupForm.vue:40
 #: front/src/components/manage/users/InvitationForm.vue:11
 msgctxt "Content/*/Input.Label"
 msgid "Invitation code"
@@ -2237,7 +2384,13 @@ msgctxt "*/Admin/*/Noun"
 msgid "Invitations"
 msgstr "Einladungen"
 
-#: front/src/components/Footer.vue:41
+#: front/src/components/manage/moderation/DomainsTable.vue:9
+#: front/src/views/admin/moderation/DomainsDetail.vue:106
+msgctxt "Content/Moderation/*/Adjective"
+msgid "Is present on allow-list"
+msgstr ""
+
+#: front/src/components/Footer.vue:49
 msgctxt "Footer/*/List item.Link"
 msgid "Issue tracker"
 msgstr "Bugtracker"
@@ -2247,17 +2400,18 @@ msgctxt "Popup/Instance/Error message.Title"
 msgid "It is not possible to connect to the given URL"
 msgstr "Es lässt sich keine Verbindung zur angegebenen Adresse herstellen"
 
-#: front/src/components/Home.vue:50
-msgctxt "Content/Home/List item/Verb"
-msgid "Keep a track of your favorite songs"
-msgstr "Behalte einen Überblick über deine Lieblingsmusik"
+#: front/src/components/mixins/Translations.vue:65
+#: front/src/components/mixins/Translations.vue:66
+msgctxt "*/*/*/Noun"
+msgid "Items"
+msgstr ""
 
 #: front/src/components/Footer.vue:33 src/components/ShortcutsModal.vue:3
 msgctxt "*/*/*/Noun"
 msgid "Keyboard shortcuts"
 msgstr "Tastenkombinationen"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:161
+#: front/src/views/admin/moderation/DomainsDetail.vue:198
 msgctxt "Content/Moderation/Table.Label.Link"
 msgid "Known accounts"
 msgstr "Bekannte Konten"
@@ -2268,15 +2422,15 @@ msgid "Known libraries"
 msgstr "Bekannte Mediatheken"
 
 #: front/src/components/manage/users/UsersTable.vue:41
-#: front/src/components/mixins/Translations.vue:58
-#: front/src/views/admin/moderation/AccountsDetail.vue:205
-#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:70
+#: front/src/views/admin/moderation/AccountsDetail.vue:206
+#: front/src/components/mixins/Translations.vue:71
 msgctxt "Content/Profile/Table.Label/Short, Noun (Value is a date)"
 msgid "Last activity"
 msgstr "Letzte Aktivität"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:188
-#: front/src/views/admin/moderation/DomainsDetail.vue:78
+#: front/src/views/admin/moderation/AccountsDetail.vue:189
+#: front/src/views/admin/moderation/DomainsDetail.vue:115
 msgctxt "Content/*/Table.Label"
 msgid "Last checked"
 msgstr "Letzte Überprüfung"
@@ -2291,13 +2445,13 @@ msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Last seen"
 msgstr "Zuletzt gesehen"
 
-#: front/src/components/mixins/Translations.vue:47
-#: front/src/components/mixins/Translations.vue:48
+#: front/src/components/mixins/Translations.vue:57
+#: front/src/components/mixins/Translations.vue:58
 msgctxt "Content/Moderation/Dropdown/Noun"
 msgid "Last seen date"
 msgstr "Zuletzt gesehen am"
 
-#: front/src/views/content/remote/Card.vue:60
+#: front/src/views/content/remote/Card.vue:73
 msgctxt "Content/Library/Card.List item/Noun"
 msgid "Last update:"
 msgstr "Letzte Aktualisierung:"
@@ -2307,60 +2461,60 @@ msgctxt "Modal/*/Button.Label/Short, Verb"
 msgid "Launch"
 msgstr "Starten"
 
-#: front/src/components/Home.vue:10
-msgctxt "Content/Home/Button.Label/Verb"
-msgid "Learn more about this instance"
-msgstr "Mehr über diese Instanz erfahren"
+#: front/src/components/Home.vue:35
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Learn more"
+msgstr "Abonnenten werden geladen…"
 
 #: front/src/components/manage/users/InvitationForm.vue:58
 msgctxt "Content/Admin/Input.Placeholder"
 msgid "Leave empty for a random code"
 msgstr "Leerlassen für einen zufälligen Code"
 
-#: front/src/components/audio/EmbedWizard.vue:7
+#: front/src/components/audio/EmbedWizard.vue:17
 msgctxt "Popup/Embed/Paragraph"
 msgid "Leave empty for a responsive widget"
 msgstr "Leerlassen für ein reaktionsfähiges Widget"
 
-#: front/src/views/admin/library/AlbumDetail.vue:232
-#: front/src/views/admin/library/ArtistDetail.vue:221
-#: front/src/views/admin/library/TrackDetail.vue:284
-#: front/src/views/admin/moderation/AccountsDetail.vue:327
-#: front/src/views/admin/moderation/DomainsDetail.vue:234
-#: front/src/views/content/Base.vue:5
+#: front/src/components/mixins/Translations.vue:64
+#: front/src/components/mixins/Translations.vue:65
 msgctxt "*/*/*/Noun"
-msgid "Libraries"
-msgstr "Mediatheken"
+msgid "Length"
+msgstr ""
 
+#: front/src/views/admin/library/AlbumDetail.vue:248
+#: front/src/views/admin/library/ArtistDetail.vue:236
 #: front/src/views/admin/library/Base.vue:17
 #: front/src/views/admin/library/LibrariesList.vue:24
-msgctxt "*/*/*"
+#: front/src/views/admin/library/TrackDetail.vue:300
+#: front/src/views/admin/moderation/AccountsDetail.vue:339
+#: front/src/views/admin/moderation/DomainsDetail.vue:271
+#: front/src/views/content/Base.vue:5
+msgctxt "*/*/*/Noun"
 msgid "Libraries"
 msgstr "Mediatheken"
 
-#: front/src/components/mixins/Translations.vue:72
-#: front/src/components/mixins/Translations.vue:73
+#: front/src/components/mixins/Translations.vue:84
+#: front/src/components/mixins/Translations.vue:85
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Libraries and uploads"
 msgstr "Mediathek aktualisiert"
 
 #: front/src/views/content/libraries/Form.vue:2
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Libraries help you organize and share your music collections. You can upload"
-" your own music collection to Funkwhale and share it with your friends and "
-"family."
-msgstr ""
-"Bibliotheken helfen Dir deine Musiksammlungen zu organisieren und teilen. Du"
-" kannst deine eigene Musiksammlung zu Funkwhale hochladen und mit deinen "
-"Freunden und deiner Familie teilen."
+msgid "Libraries help you organize and share your music collections. You can upload your own music collection to Funkwhale and share it with your friends and family."
+msgstr "Bibliotheken helfen Dir deine Musiksammlungen zu organisieren und teilen. Du kannst deine eigene Musiksammlung zu Funkwhale hochladen und mit deinen Freunden und deiner Familie teilen."
 
-#: front/src/components/Sidebar.vue:85 src/components/instance/Stats.vue:30
+#: front/src/components/Sidebar.vue:85
 #: front/src/components/manage/library/UploadsTable.vue:60
-#: front/src/components/manage/users/UsersTable.vue:173
+#: front/src/components/manage/users/UsersTable.vue:174
+#: front/src/components/mixins/Report.vue:77
 #: front/src/views/admin/library/UploadDetail.vue:144
-#: front/src/views/admin/moderation/AccountsDetail.vue:498
-msgctxt "*/*/*"
+#: front/src/views/admin/moderation/AccountsDetail.vue:518 src/entities.js:132
+#: front/src/components/mixins/Report.vue:78
+#, fuzzy
+msgctxt "*/*/*/Noun"
 msgid "Library"
 msgstr "Mediathek"
 
@@ -2391,21 +2545,37 @@ msgstr "Mediathek aktualisiert"
 
 #: front/src/components/library/TrackDetail.vue:19
 #: front/src/components/manage/library/TracksTable.vue:43
-#: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:61
+#: front/src/views/admin/library/TrackDetail.vue:165 src/edits.js:84
+#: front/src/entities.js:115
 msgctxt "Content/*/*/Noun"
 msgid "License"
 msgstr "Lizenz"
 
-#: front/src/views/admin/library/AlbumDetail.vue:157
-#: front/src/views/admin/library/ArtistDetail.vue:146
-#: front/src/views/admin/library/TrackDetail.vue:209
-msgctxt "*/*/*/Noun"
-msgid "Listenings"
+#: front/src/components/Footer.vue:90
+msgctxt "Footer/Settings/Dropdown.Label/Theme name"
+msgid "Light"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:80
-#: front/src/components/mixins/Translations.vue:81
-msgctxt "Content/OAuth Scopes/Label"
+#: front/src/views/admin/library/AlbumDetail.vue:188
+#: front/src/views/admin/library/ArtistDetail.vue:176
+#: front/src/views/admin/library/LibraryDetail.vue:179
+#: front/src/views/admin/library/TrackDetail.vue:240
+#: front/src/views/admin/moderation/AccountsDetail.vue:269
+msgctxt "Content/Moderation/Table.Label/Noun"
+msgid "Linked reports"
+msgstr ""
+
+#: front/src/components/Home.vue:135
+msgctxt "Content/Home/Link"
+msgid "Listen to public albums and playlists shared on this pod"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:92
+#: front/src/views/admin/library/AlbumDetail.vue:163
+#: front/src/views/admin/library/ArtistDetail.vue:151
+#: front/src/views/admin/library/TrackDetail.vue:215
+#: front/src/components/mixins/Translations.vue:93
+msgctxt "*/*/*/Noun"
 msgid "Listenings"
 msgstr ""
 
@@ -2431,7 +2601,7 @@ msgctxt "Content/Library/Paragraph"
 msgid "Loading library data…"
 msgstr "Die Mediathekdaten werden geladen…"
 
-#: front/src/views/Notifications.vue:19
+#: front/src/views/Notifications.vue:84
 msgctxt "Content/Notifications/Paragraph"
 msgid "Loading notifications…"
 msgstr "Die Benachrichtigungen werden geladen…"
@@ -2456,6 +2626,7 @@ msgstr "Deine Favoriten werden geladen…"
 #: front/src/components/manage/library/LibrariesTable.vue:75
 #: front/src/components/manage/library/TracksTable.vue:71
 #: front/src/components/manage/library/UploadsTable.vue:99
+#: front/src/components/manage/moderation/ReportCard.vue:173
 #: front/src/views/admin/library/AlbumDetail.vue:19
 #: front/src/views/admin/library/ArtistDetail.vue:18
 #: front/src/views/admin/library/LibraryDetail.vue:18
@@ -2471,12 +2642,12 @@ msgctxt "Content/Moderation/*/Short, Noun"
 msgid "Local account"
 msgstr "Lokales Konto"
 
-#: front/src/components/auth/Login.vue:84
+#: front/src/components/Home.vue:96 src/views/auth/Login.vue:29
 msgctxt "Head/Login/Title"
 msgid "Log In"
 msgstr "Anmelden"
 
-#: front/src/components/auth/Login.vue:4
+#: front/src/views/auth/Login.vue:4
 msgctxt "Content/Login/Title/Verb"
 msgid "Log in to your Funkwhale account"
 msgstr "Melde Dich bei Deinem Funkwhale-Konto an"
@@ -2491,7 +2662,7 @@ msgctxt "Sidebar/Profile/List item.Link"
 msgid "Logged in as %{ username }"
 msgstr "Angemeldet als %{ username }"
 
-#: front/src/components/Sidebar.vue:54 src/components/auth/Login.vue:42
+#: front/src/components/Sidebar.vue:54 src/components/auth/LoginForm.vue:41
 msgctxt "*/Login/*/Verb"
 msgid "Login"
 msgstr "Anmelden"
@@ -2509,43 +2680,42 @@ msgstr "Abmelden"
 #: front/src/views/content/libraries/Home.vue:9
 msgctxt "Content/Library/Paragraph"
 msgid "Looks like you don't have a library, it's time to create one."
-msgstr ""
-"Es sieht aus, als hättest du noch keine Mediathek, höchste Zeit eine "
-"anzulegen."
+msgstr "Es sieht aus, als hättest du noch keine Mediathek, höchste Zeit eine anzulegen."
 
-#: front/src/components/audio/Player.vue:632
-#: src/components/audio/Player.vue:633
+#: front/src/components/audio/Player.vue:658
+#: src/components/audio/Player.vue:659
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping disabled. Click to switch to single-track looping."
-msgstr ""
-"Wiederholung deaktiviert. Klicke um den aktuellen Track zu wiederholen."
+msgstr "Wiederholung deaktiviert. Klicke um den aktuellen Track zu wiederholen."
 
-#: front/src/components/audio/Player.vue:635
-#: src/components/audio/Player.vue:636
+#: front/src/components/audio/Player.vue:661
+#: src/components/audio/Player.vue:662
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping on a single track. Click to switch to whole queue looping."
-msgstr ""
-"Wiederholung des aktuellen Titels. Klicken um die ganze Warteschlange zu "
-"wiederholen."
+msgstr "Wiederholung des aktuellen Titels. Klicken um die ganze Warteschlange zu wiederholen."
 
-#: front/src/components/audio/Player.vue:638
-#: src/components/audio/Player.vue:639
+#: front/src/components/audio/Player.vue:664
+#: src/components/audio/Player.vue:665
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping on whole queue. Click to disable looping."
-msgstr ""
-"Wiederholung der kompletten Warteschlange. Deaktiviere die Wiederholung "
-"durch Klicken."
+msgstr "Wiederholung der kompletten Warteschlange. Deaktiviere die Wiederholung durch Klicken."
 
-#: front/src/components/Sidebar.vue:223
+#: front/src/components/Sidebar.vue:230
 msgctxt "Sidebar/*/Hidden text"
 msgid "Main menu"
 msgstr "Hauptmenü"
 
-#: front/src/views/admin/library/Base.vue:31
+#: front/src/views/admin/library/Base.vue:34
 msgctxt "Head/Admin/Title"
 msgid "Manage library"
 msgstr "Mediathek verwalten"
 
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:8
+#, fuzzy
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Manage moderation rules for %{ obj }"
+msgstr "Unterliegt einer Moderationsregel"
+
 #: front/src/components/playlists/PlaylistModal.vue:3
 msgctxt "Popup/Playlist/Title/Verb"
 msgid "Manage playlists"
@@ -2561,7 +2731,7 @@ msgctxt "Content/Playlist/Button.Label/Verb"
 msgid "Manage your playlists"
 msgstr "Verwalte deine Wiedergabelisten"
 
-#: front/src/views/Notifications.vue:14
+#: front/src/views/Notifications.vue:79
 msgctxt "Content/Notifications/Button.Label/Verb"
 msgid "Mark all as read"
 msgstr "Alles als gelesen markieren"
@@ -2576,12 +2746,12 @@ msgctxt "Content/Notifications/Button.Tooltip/Verb"
 msgid "Mark as unread"
 msgstr "Als ungelesen markieren"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:310
+#: front/src/views/admin/moderation/AccountsDetail.vue:321
 msgctxt "Content/*/*/Unit"
 msgid "MB"
 msgstr "MB"
 
-#: front/src/components/audio/Player.vue:625
+#: front/src/components/audio/Player.vue:651
 msgctxt "Sidebar/Player/Hidden text"
 msgid "Media player"
 msgstr "Medienspieler"
@@ -2591,43 +2761,59 @@ msgctxt "Content/Profile/Paragraph"
 msgid "Member since %{ date }"
 msgstr "Mitglied seit %{ date }"
 
+#: front/src/components/manage/moderation/ReportCard.vue:109
+#: front/src/components/moderation/ReportModal.vue:41
+msgctxt "*/*/Field.Label/Noun"
+msgid "Message"
+msgstr ""
+
 #: front/src/components/Footer.vue:32
 msgctxt "Footer/*/List item.Link"
 msgid "Mobile and desktop apps"
 msgstr "Mobile und desktopbasierte Anwendungen"
 
+#: front/src/components/Home.vue:143
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Mobile apps"
+msgstr "Mobile und desktopbasierte Anwendungen"
+
 #: front/src/components/Sidebar.vue:96
-#: src/components/manage/users/UsersTable.vue:177
-#: front/src/views/admin/moderation/AccountsDetail.vue:502
-#: front/src/views/admin/moderation/Base.vue:21
+#: src/components/manage/users/UsersTable.vue:178
+#: front/src/views/admin/Settings.vue:85
+#: front/src/views/admin/moderation/AccountsDetail.vue:522
+#: front/src/views/admin/moderation/Base.vue:43
 msgctxt "*/Moderation/*"
 msgid "Moderation"
 msgstr "Moderation"
 
 #: front/src/views/admin/moderation/AccountsDetail.vue:78
-#: front/src/views/admin/moderation/DomainsDetail.vue:42
+#: front/src/views/admin/moderation/DomainsDetail.vue:70
 msgctxt "Content/Moderation/Card.Paragraph"
-msgid ""
-"Moderation policies help you control how your instance interact with a given"
-" domain or account."
-msgstr ""
-"Moderationsregeln lassen Dich festlegen, wie Deine Instanz mit einer "
-"bestimmten Domain oder einem bestimmten Konto interagiert."
+msgid "Moderation policies help you control how your instance interact with a given domain or account."
+msgstr "Moderationsregeln lassen Dich festlegen, wie Deine Instanz mit einer bestimmten Domain oder einem bestimmten Konto interagiert."
+
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:4
+#, fuzzy
+msgctxt "Content/Moderation/Button.Label"
+msgid "Moderation rules…"
+msgstr "Moderationsregel ändern"
 
 #: front/src/components/library/EditCard.vue:5
 msgctxt "Content/Library/Card/Short"
 msgid "Modification %{ id }"
 msgstr "Änderungsdatum"
 
-#: front/src/components/mixins/Translations.vue:48
-#: front/src/components/mixins/Translations.vue:49
+#: front/src/components/mixins/Translations.vue:58
+#: front/src/components/mixins/Translations.vue:59
 msgctxt "Content/Playlist/Dropdown/Noun"
 msgid "Modification date"
 msgstr "Änderungsdatum"
 
-#: front/src/components/library/AlbumBase.vue:42
-#: front/src/components/library/ArtistBase.vue:53
-#: front/src/components/library/TrackBase.vue:61
+#: front/src/components/audio/PlayButton.vue:100
+#: front/src/components/library/AlbumBase.vue:43
+#: front/src/components/library/ArtistBase.vue:54
+#: front/src/components/library/TrackBase.vue:59
 msgctxt "*/*/Button.Label/Noun"
 msgid "More…"
 msgstr ""
@@ -2637,7 +2823,7 @@ msgctxt "*/*/*/Noun"
 msgid "Music"
 msgstr "Musik"
 
-#: front/src/components/audio/Player.vue:631
+#: front/src/components/audio/Player.vue:657
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Mute"
 msgstr "Stummschalten"
@@ -2684,8 +2870,8 @@ msgctxt "Content/Library/Title"
 msgid "My libraries"
 msgstr "Meine Mediatheken"
 
-#: front/src/components/audio/track/Row.vue:40
-#: src/components/library/EditCard.vue:60
+#: front/src/components/About.vue:105 src/components/audio/track/Row.vue:40
+#: front/src/components/library/EditCard.vue:60
 #: front/src/components/library/EditForm.vue:70
 #: front/src/components/library/TrackDetail.vue:34
 #: front/src/components/library/TrackDetail.vue:43
@@ -2695,54 +2881,56 @@ msgstr "Meine Mediatheken"
 #: front/src/components/manage/library/TracksTable.vue:76
 #: front/src/components/manage/library/UploadsTable.vue:121
 #: front/src/components/manage/library/UploadsTable.vue:128
-#: front/src/components/manage/users/UsersTable.vue:61
+#: front/src/components/manage/moderation/ReportCard.vue:78
+#: front/src/components/manage/moderation/ReportCard.vue:87
+#: front/src/components/manage/moderation/ReportCard.vue:193
+#: front/src/components/manage/users/UsersTable.vue:62
 #: front/src/views/admin/library/UploadDetail.vue:179
 #: front/src/views/admin/library/UploadDetail.vue:214
 #: front/src/views/admin/library/UploadDetail.vue:233
 #: front/src/views/admin/library/UploadDetail.vue:244
 #: front/src/views/admin/library/UploadDetail.vue:257
-#: front/src/views/admin/moderation/AccountsDetail.vue:192
-#: front/src/views/admin/moderation/DomainsDetail.vue:82
+#: front/src/views/admin/moderation/AccountsDetail.vue:193
+#: front/src/views/admin/moderation/DomainsDetail.vue:119
 #: front/src/views/content/libraries/FilesTable.vue:95
 #: front/src/views/content/libraries/FilesTable.vue:101
 msgctxt "*/*/*"
 msgid "N/A"
 msgstr "k.A."
 
-#: front/src/components/manage/library/LibrariesTable.vue:48
-#: front/src/components/manage/library/UploadsTable.vue:59
-msgctxt "*/*/*"
-msgid "Name"
-msgstr "Name"
-
 #: front/src/components/auth/ApplicationForm.vue:9
-msgctxt "Content/Applications/Input.Label/Noun"
-msgid "Name"
-msgstr "Name"
-
 #: front/src/components/auth/Settings.vue:133
 #: front/src/components/manage/library/ArtistsTable.vue:39
+#: front/src/components/manage/library/LibrariesTable.vue:48
+#: front/src/components/manage/library/TagsTable.vue:41
+#: front/src/components/manage/library/UploadsTable.vue:59
 #: front/src/components/manage/moderation/AccountsTable.vue:39
-#: front/src/components/manage/moderation/DomainsTable.vue:38
-#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/manage/moderation/DomainsTable.vue:46
+#: front/src/components/mixins/Translations.vue:63
 #: front/src/components/playlists/PlaylistModal.vue:45
-#: front/src/views/admin/library/ArtistDetail.vue:98
+#: front/src/views/admin/library/ArtistDetail.vue:103
 #: front/src/views/admin/library/LibraryDetail.vue:85
+#: front/src/views/admin/library/TagDetail.vue:68
 #: front/src/views/admin/library/UploadDetail.vue:92
-#: front/src/views/admin/moderation/DomainsDetail.vue:97
-#: front/src/views/content/libraries/Form.vue:10 src/edits.js:10
-#: front/src/components/mixins/Translations.vue:54
+#: front/src/views/admin/moderation/DomainsDetail.vue:134
+#: front/src/views/content/libraries/Form.vue:10 src/edits.js:17
+#: front/src/components/mixins/Translations.vue:64
 msgctxt "*/*/*/Noun"
 msgid "Name"
 msgstr "Name"
 
+#: front/src/views/Notifications.vue:24 src/views/Notifications.vue:58
+msgctxt "*/*/*"
+msgid "Never"
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:88
 #: front/src/views/auth/PasswordResetConfirm.vue:14
 msgctxt "Content/Settings/Input.Label"
 msgid "New password"
 msgstr "Neues Kennwort"
 
-#: front/src/components/Sidebar.vue:173
+#: front/src/components/Sidebar.vue:177
 msgctxt "Sidebar/Player/Paragraph"
 msgid "New tracks will be appended here automatically."
 msgstr "Neue Tracks werden hier automatisch hinzugefügt."
@@ -2752,22 +2940,18 @@ msgctxt "Content/Library/Card.Table.Header/Short"
 msgid "New value"
 msgstr "Neuer Wert"
 
-#: front/src/components/audio/Player.vue:629
+#: front/src/components/audio/Player.vue:655
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Next track"
 msgstr "Nächster Track"
 
-#: front/src/components/Sidebar.vue:130
+#: front/src/components/Sidebar.vue:134
+#: front/src/components/manage/moderation/DomainsTable.vue:13
+#: front/src/views/admin/moderation/DomainsDetail.vue:110
 msgctxt "*/*/*"
 msgid "No"
 msgstr "Nein"
 
-#: front/src/components/Home.vue:95
-msgctxt "Content/Home/List item"
-msgid "No add-ons, no plugins : you only need a web library"
-msgstr ""
-"Keine Erweiterungen, keine Plugins: du brauchst nur eine online Mediathek"
-
 #: front/src/components/audio/Search.vue:25
 msgctxt "Content/Search/Paragraph"
 msgid "No album matched your query"
@@ -2783,6 +2967,11 @@ msgctxt "Content/Track/Table.Paragraph"
 msgid "No copyright information available for this track"
 msgstr "Kein Liedtext für diesen Titel verfügbar"
 
+#: front/src/components/About.vue:25 src/components/Home.vue:25
+msgctxt "Content/Home/Paragraph"
+msgid "No description available."
+msgstr ""
+
 #: front/src/components/library/TrackDetail.vue:25
 msgctxt "Content/Track/Table.Paragraph"
 msgid "No licensing information for this track"
@@ -2793,7 +2982,7 @@ msgctxt "Content/Federation/Paragraph"
 msgid "No matching library."
 msgstr "Keine passende Mediathek gefunden."
 
-#: front/src/views/Notifications.vue:28
+#: front/src/views/Notifications.vue:93
 msgctxt "Content/Notifications/Paragraph"
 msgid "No notification to show."
 msgstr "Keine Benachrichtigungen zum Anzeigen."
@@ -2803,6 +2992,16 @@ msgctxt "Content/*/Paragraph"
 msgid "No results were found."
 msgstr "Nichts gefunden."
 
+#: front/src/components/About.vue:32
+msgctxt "Content/Home/Paragraph"
+msgid "No rules available."
+msgstr ""
+
+#: front/src/components/About.vue:39
+msgctxt "Content/Home/Paragraph"
+msgid "No terms available."
+msgstr ""
+
 #: front/src/components/mixins/Translations.vue:10
 #: front/src/components/mixins/Translations.vue:11
 msgctxt "Content/Settings/Dropdown"
@@ -2819,18 +3018,22 @@ msgctxt "Content/Admin/Table"
 msgid "Not used"
 msgstr "Nicht verwendet"
 
-#: front/src/components/mixins/Translations.vue:100
-#: front/src/components/mixins/Translations.vue:101
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Notifications"
-msgstr "Benachrichtigungen"
-
-#: front/src/components/Sidebar.vue:46 src/views/Notifications.vue:76
+#: front/src/components/Sidebar.vue:46
+#: src/components/mixins/Translations.vue:112
+#: front/src/views/Notifications.vue:151
+#: src/components/mixins/Translations.vue:113
 msgctxt "*/Notifications/*"
 msgid "Notifications"
 msgstr "Benachrichtigungen"
 
-#: front/src/components/Footer.vue:47
+#: front/src/components/mixins/Translations.vue:47
+#: front/src/components/mixins/Translations.vue:48
+#, fuzzy
+msgctxt "Content/Moderation/Dropdown"
+msgid "Offensive content"
+msgstr "Inhalte verbergen"
+
+#: front/src/components/Footer.vue:55
 msgctxt "Footer/*/List item.Link"
 msgid "Official website"
 msgstr "Offizielle Webseite"
@@ -2845,6 +3048,12 @@ msgctxt "Content/Library/Card.Table.Header/Short"
 msgid "Old value"
 msgstr "Alter Wert"
 
+#: front/src/components/About.vue:90
+#, fuzzy
+msgctxt "*/*/*/State of registrations"
+msgid "Open"
+msgstr "Frei"
+
 #: front/src/components/manage/users/InvitationsTable.vue:20
 msgctxt "Content/Admin/Dropdown/Adjective"
 msgid "Open"
@@ -2852,27 +3061,29 @@ msgstr "Frei"
 
 #: front/src/components/library/ImportStatusModal.vue:56
 msgctxt "Popup/Import/Table.Label/Value"
-msgid ""
-"Open a support thread (include the debug information below in your message)"
+msgid "Open a support thread (include the debug information below in your message)"
 msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:73
-#: front/src/components/library/ArtistBase.vue:84
-#: front/src/components/library/TrackBase.vue:92
+#: front/src/components/library/AlbumBase.vue:87
+#: front/src/components/library/ArtistBase.vue:99
+#: front/src/components/library/TagDetail.vue:11
+#: front/src/components/library/TrackBase.vue:103
+#: front/src/components/manage/moderation/ReportCard.vue:128
 msgctxt "Content/Moderation/Link"
 msgid "Open in moderation interface"
 msgstr "Moderationsregel ändern"
 
-#: front/src/views/admin/library/AlbumDetail.vue:31
-#: front/src/views/admin/library/ArtistDetail.vue:30
-#: front/src/views/admin/library/TrackDetail.vue:30
+#: front/src/views/admin/library/AlbumDetail.vue:37
+#: front/src/views/admin/library/ArtistDetail.vue:35
+#: front/src/views/admin/library/TagDetail.vue:21
+#: front/src/views/admin/library/TrackDetail.vue:36
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open local profile"
 msgstr "Profil öffnen"
 
-#: front/src/views/admin/library/AlbumDetail.vue:46
-#: front/src/views/admin/library/ArtistDetail.vue:45
-#: front/src/views/admin/library/TrackDetail.vue:45
+#: front/src/views/admin/library/AlbumDetail.vue:52
+#: front/src/views/admin/library/ArtistDetail.vue:50
+#: front/src/views/admin/library/TrackDetail.vue:51
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open on MusicBrainz"
 msgstr "Auf MusicBrainz ansehen"
@@ -2882,10 +3093,10 @@ msgctxt "Content/Moderation/Link/Verb"
 msgid "Open profile"
 msgstr "Profil öffnen"
 
-#: front/src/views/admin/library/AlbumDetail.vue:54
-#: front/src/views/admin/library/ArtistDetail.vue:53
+#: front/src/views/admin/library/AlbumDetail.vue:60
+#: front/src/views/admin/library/ArtistDetail.vue:58
 #: front/src/views/admin/library/LibraryDetail.vue:49
-#: front/src/views/admin/library/TrackDetail.vue:53
+#: front/src/views/admin/library/TrackDetail.vue:59
 #: front/src/views/admin/library/UploadDetail.vue:50
 #: front/src/views/admin/moderation/AccountsDetail.vue:52
 msgctxt "Content/Moderation/Link/Verb"
@@ -2906,6 +3117,7 @@ msgstr "Oder die Moderationsregel anpassen"
 #: src/components/library/Radios.vue:41
 #: front/src/components/manage/library/EditsCardList.vue:37
 #: front/src/components/manage/users/UsersTable.vue:17
+#: front/src/views/admin/moderation/ReportsList.vue:42
 #: front/src/views/playlists/List.vue:25
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Order"
@@ -2913,40 +3125,51 @@ msgstr "Sortierung"
 
 #: front/src/components/favorites/List.vue:24
 #: src/components/library/Albums.vue:15
-#: front/src/components/library/Artists.vue:15
+#: front/src/components/library/Artists.vue:19
 #: src/components/library/Radios.vue:33
 #: front/src/components/manage/library/AlbumsTable.vue:11
 #: front/src/components/manage/library/ArtistsTable.vue:11
 #: front/src/components/manage/library/EditsCardList.vue:29
 #: front/src/components/manage/library/LibrariesTable.vue:20
+#: front/src/components/manage/library/TagsTable.vue:11
 #: front/src/components/manage/library/TracksTable.vue:11
 #: front/src/components/manage/library/UploadsTable.vue:30
 #: front/src/components/manage/moderation/AccountsTable.vue:11
-#: front/src/components/manage/moderation/DomainsTable.vue:9
+#: front/src/components/manage/moderation/DomainsTable.vue:17
 #: front/src/components/manage/users/InvitationsTable.vue:9
 #: front/src/components/manage/users/UsersTable.vue:9
+#: front/src/views/admin/moderation/ReportsList.vue:34
 #: front/src/views/content/libraries/FilesTable.vue:21
 #: front/src/views/playlists/List.vue:17
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Ordering"
 msgstr "Reihenfolge"
 
-#: front/src/components/library/Albums.vue:23
-#: src/components/library/Artists.vue:23
+#: front/src/components/library/Albums.vue:27
+#: src/components/library/Artists.vue:27
 #: front/src/components/manage/library/AlbumsTable.vue:19
 #: front/src/components/manage/library/ArtistsTable.vue:19
 #: front/src/components/manage/library/LibrariesTable.vue:28
+#: front/src/components/manage/library/TagsTable.vue:19
 #: front/src/components/manage/library/TracksTable.vue:19
 #: front/src/components/manage/library/UploadsTable.vue:38
 #: front/src/components/manage/moderation/AccountsTable.vue:19
-#: front/src/components/manage/moderation/DomainsTable.vue:17
+#: front/src/components/manage/moderation/DomainsTable.vue:25
 #: front/src/views/content/libraries/FilesTable.vue:29
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Ordering direction"
 msgstr "Sortierreihenfolge"
 
+#: front/src/components/mixins/Translations.vue:48
+#: front/src/components/mixins/Translations.vue:49
+msgctxt "Content/Moderation/Dropdown"
+msgid "Other"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:143
 #: front/src/components/manage/users/InvitationsTable.vue:38
-msgctxt "Content/Admin/Table.Label"
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Owner"
 msgstr "Besitzer"
 
@@ -2965,12 +3188,15 @@ msgctxt "Content/*/Hidden text/Noun"
 msgid "Pagination"
 msgstr "Seitennummerierung"
 
-#: front/src/components/auth/Login.vue:33 src/components/auth/Signup.vue:40
-msgctxt "Content/*/Input.Label"
+#: front/src/components/auth/LoginForm.vue:32
+#: src/components/auth/Settings.vue:291
+#: front/src/components/auth/SignupForm.vue:36
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Password"
 msgstr "Kennwort"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:94
+#: front/src/components/auth/SubsonicTokenForm.vue:100
 msgctxt "Content/Settings/Message"
 msgid "Password updated"
 msgstr "Kennwort aktualisiert"
@@ -2980,12 +3206,12 @@ msgctxt "Content/Signup/Card.Title"
 msgid "Password updated successfully"
 msgstr "Kennwort erfolgreich aktualisiert"
 
-#: front/src/components/audio/Player.vue:628
+#: front/src/components/audio/Player.vue:654
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Pause track"
 msgstr "Titel pausieren"
 
-#: front/src/components/ShortcutsModal.vue:59
+#: front/src/components/ShortcutsModal.vue:96
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Pause/play the current track"
 msgstr "Titel pausieren bzw. wiedergeben"
@@ -3014,7 +3240,7 @@ msgctxt "Content/Library/Label"
 msgid "Pending files"
 msgstr "Ausstehende Dateien"
 
-#: front/src/components/Sidebar.vue:225
+#: front/src/components/Sidebar.vue:232
 msgctxt "Sidebar/Notifications/Hidden text"
 msgid "Pending follow requests"
 msgstr "Ausstehende Abonnieren-Anfrage"
@@ -3025,84 +3251,76 @@ msgctxt "Content/Admin/*/Noun"
 msgid "Pending review"
 msgstr "Ausstehende Dateien"
 
-#: front/src/components/Sidebar.vue:226
+#: front/src/components/Sidebar.vue:233
 msgctxt "Sidebar/Moderation/Hidden text"
 msgid "Pending review edits"
 msgstr "Ausstehende Dateien"
 
+#: front/src/components/auth/Settings.vue:176
 #: front/src/components/manage/users/UsersTable.vue:42
 #: front/src/views/admin/moderation/AccountsDetail.vue:166
-msgctxt "Content/Admin/Table.Label/Noun"
-msgid "Permissions"
-msgstr "Berechtigungen"
-
-#: front/src/components/auth/Settings.vue:176
 msgctxt "Content/*/*/Noun"
 msgid "Permissions"
 msgstr "Berechtigungen"
 
 #: front/src/components/audio/PlayButton.vue:9
-#: front/src/components/library/TrackBase.vue:26
+#: front/src/components/library/TrackBase.vue:24
 msgctxt "*/Queue/Button.Label/Short, Verb"
 msgid "Play"
 msgstr "Abspielen"
 
 #: front/src/components/audio/album/Card.vue:48
-#: front/src/components/audio/artist/Card.vue:44
-#: front/src/components/library/AlbumBase.vue:20
+#: front/src/components/library/AlbumBase.vue:21
 #: front/src/components/library/AlbumDetail.vue:11
 #: src/views/playlists/Detail.vue:24
 msgctxt "Content/Queue/Button.Label/Short, Verb"
 msgid "Play all"
 msgstr "Alles abspielen"
 
-#: front/src/components/library/ArtistBase.vue:31
+#: front/src/components/library/ArtistBase.vue:32
 msgctxt "Content/Artist/Button.Label/Verb"
 msgid "Play all albums"
 msgstr "Alle Alben abspielen"
 
-#: front/src/components/audio/PlayButton.vue:76
+#: front/src/components/audio/PlayButton.vue:92
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play next"
 msgstr "Danach abspielen"
 
-#: front/src/components/ShortcutsModal.vue:67
+#: front/src/components/ShortcutsModal.vue:120
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Play next track"
 msgstr "Nächster Track abspielen"
 
-#: front/src/components/audio/PlayButton.vue:74
+#: front/src/components/audio/PlayButton.vue:90
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play now"
 msgstr "Jetzt abspielen"
 
-#: front/src/components/ShortcutsModal.vue:63
+#: front/src/components/ShortcutsModal.vue:116
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Play previous track"
 msgstr "Vorheriger Track abspielen"
 
-#: front/src/components/audio/PlayButton.vue:77
+#: front/src/components/audio/PlayButton.vue:93
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play similar songs"
 msgstr "Spiele ähnliche Stücke"
 
-#: front/src/components/Sidebar.vue:224
+#: front/src/components/Sidebar.vue:231
 msgctxt "Sidebar/Player/Hidden text"
 msgid "Play this track"
 msgstr "Diesen Track abspielen"
 
-#: front/src/components/audio/Player.vue:627
+#: front/src/components/audio/Player.vue:653
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Play track"
 msgstr "Abspielen"
 
-#: front/src/components/audio/PlayButton.vue:82
-msgctxt "*/Queue/Button/Title"
-msgid "Play..."
-msgstr "Abspielen..."
-
-#: front/src/views/playlists/Detail.vue:91
-msgctxt "Head/Playlist/Title"
+#: front/src/components/mixins/Report.vue:66 src/views/playlists/Detail.vue:121
+#: front/src/components/mixins/Report.vue:67
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Playlist"
 msgstr "Wiedergabeliste"
 
@@ -3139,65 +3357,60 @@ msgctxt "Content/Playlist/Dropdown.Label"
 msgid "Playlist visibility"
 msgstr "Sichtbarkeit der Wiedergabeliste"
 
-#: front/src/components/mixins/Translations.vue:88
-#: front/src/components/mixins/Translations.vue:89
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Playlists"
-msgstr "Wiedergabelisten"
-
 #: front/src/components/Sidebar.vue:71 src/components/library/Home.vue:16
-#: front/src/components/library/Library.vue:16 src/views/admin/Settings.vue:83
-#: front/src/views/admin/library/AlbumDetail.vue:173
-#: front/src/views/admin/library/ArtistDetail.vue:162
-#: front/src/views/admin/library/TrackDetail.vue:225
+#: front/src/components/library/Library.vue:16
+#: front/src/components/mixins/Translations.vue:100
+#: src/views/admin/Settings.vue:83
+#: front/src/views/admin/library/AlbumDetail.vue:179
+#: front/src/views/admin/library/ArtistDetail.vue:167
+#: front/src/views/admin/library/TrackDetail.vue:231
 #: src/views/playlists/List.vue:106
+#: front/src/components/mixins/Translations.vue:101
 msgctxt "*/*/*"
 msgid "Playlists"
 msgstr "Wiedergabelisten"
 
-#: front/src/components/Home.vue:56
-msgctxt "Content/Home/List item"
-msgid "Playlists? We got them"
-msgstr "Wiedergabelisten? Haben wir auch!"
+#: front/src/components/audio/EmbedWizard.vue:9
+msgctxt "Content/Embed/Message"
+msgid "Please contact your admins and ask them to update the corresponding setting."
+msgstr ""
 
 #: front/src/components/auth/Settings.vue:79
 msgctxt "Content/Settings/Error message.List item/Call to action"
 msgid "Please double-check your password is correct"
 msgstr "Prüfe bitte genau, ob dein Kennwort stimmt"
 
-#: front/src/components/auth/Login.vue:9
+#: front/src/components/auth/LoginForm.vue:5
 msgctxt "Content/Login/Error message.List item/Call to action"
 msgid "Please double-check your username/password couple is correct"
-msgstr ""
-"Bitte prüfe genau, ob deine Benutzernamen- und Kennwortkombination stimmen"
+msgstr "Bitte prüfe genau, ob deine Benutzernamen- und Kennwortkombination stimmen"
 
 #: front/src/components/auth/Settings.vue:46
 msgctxt "Content/Settings/Paragraph"
 msgid "PNG, GIF or JPG. At most 2MB. Will be downscaled to 400x400px."
+msgstr "PNG, GIF oder JPG. Max. 2 MB. Das Bild wird ggf. auf 400x400 Bildpunkte verkleinert."
+
+#: front/src/components/About.vue:72
+msgctxt "Content/About/Header/Name"
+msgid "Pod configuration"
 msgstr ""
-"PNG, GIF oder JPG. Max. 2 MB. Das Bild wird ggf. auf 400x400 Bildpunkte "
-"verkleinert."
 
-#: front/src/views/admin/library/TrackDetail.vue:137
-msgctxt "*/*/*/Noun"
+#: front/src/views/admin/library/TrackDetail.vue:143 src/edits.js:70
+msgctxt "*/*/*/Short, Noun"
 msgid "Position"
 msgstr "Seitennummerierung"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:118
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Prevent account or domain from triggering notifications, except from "
-"followers."
-msgstr ""
-"Verhindert, dass Konto oder Domain Benachrichtigungen auslösen. Ausnahme "
-"sind Abonnenten."
+msgid "Prevent account or domain from triggering notifications, except from followers."
+msgstr "Verhindert, dass Konto oder Domain Benachrichtigungen auslösen. Ausnahme sind Abonnenten."
 
-#: front/src/components/audio/EmbedWizard.vue:33
+#: front/src/components/audio/EmbedWizard.vue:43
 msgctxt "Popup/Embed/Title/Noun"
 msgid "Preview"
 msgstr "Vorschau"
 
-#: front/src/components/audio/Player.vue:626
+#: front/src/components/audio/Player.vue:652
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Previous track"
 msgstr "Vorheriger Track"
@@ -3208,7 +3421,7 @@ msgctxt "Content/Settings/Dropdown/Short"
 msgid "Private"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:43
+#: front/src/views/content/remote/Card.vue:56
 msgctxt "Content/Library/Card.List item"
 msgid "Problem during scanning"
 msgstr "Fehler beim Durchsuchen"
@@ -3229,14 +3442,20 @@ msgctxt "Content/Library/Tab.Title/Short"
 msgid "Processing"
 msgstr "In Bearbeitung"
 
-#: front/src/components/mixins/Translations.vue:68
-#: front/src/components/mixins/Translations.vue:69
+#: front/src/components/mixins/Translations.vue:80
+#: front/src/components/mixins/Translations.vue:81
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Profile"
 msgstr "Profil öffnen"
 
+#: front/src/components/auth/SignupForm.vue:5
+#, fuzzy
+msgctxt "Content/Signup/Form/Paragraph"
+msgid "Public registrations are not possible on this instance. You will need an invitation code to sign up."
+msgstr "Die Anmeldung auf dieser Instanz ist geschlossen. Du brauchst einen Einladungskode, um dich anmelden zu können."
+
 #: front/src/components/manage/moderation/AccountsTable.vue:188
-#: front/src/components/manage/moderation/DomainsTable.vue:168
+#: front/src/components/manage/moderation/DomainsTable.vue:186
 #: front/src/views/content/libraries/Quota.vue:36
 #: front/src/views/content/libraries/Quota.vue:39
 #: front/src/views/content/libraries/Quota.vue:62
@@ -3267,7 +3486,7 @@ msgctxt "Sidebar/Queue/Tab.Title/Noun"
 msgid "Queue"
 msgstr "Warteschlange"
 
-#: front/src/components/audio/Player.vue:322
+#: front/src/components/audio/Player.vue:329
 msgctxt "Content/Queue/Message"
 msgid "Queue shuffled!"
 msgstr "Warteschlange gemischt!"
@@ -3299,16 +3518,12 @@ msgstr "Radio aktualisiert"
 
 #: front/src/components/library/Library.vue:13
 #: src/components/library/Radios.vue:142
+#: front/src/components/mixins/Translations.vue:104
+#: front/src/components/mixins/Translations.vue:105
 msgctxt "*/*/*"
 msgid "Radios"
 msgstr "Radios"
 
-#: front/src/components/mixins/Translations.vue:92
-#: front/src/components/mixins/Translations.vue:93
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Radios"
-msgstr "Radios"
-
 #: front/src/components/auth/ApplicationForm.vue:151
 msgctxt "Content/OAuth Scopes/Label/Verb"
 msgid "Read"
@@ -3335,15 +3550,15 @@ msgctxt "Content/Moderation/*/Noun"
 msgid "Reason"
 msgstr "Begründung"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:251
-#: front/src/views/admin/moderation/DomainsDetail.vue:179
+#: front/src/views/admin/moderation/AccountsDetail.vue:252
+#: front/src/views/admin/moderation/DomainsDetail.vue:216
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Received library follows"
 msgstr "Empfangene Abonnements"
 
-#: front/src/components/manage/moderation/DomainsTable.vue:40
-#: front/src/components/mixins/Translations.vue:62
-#: front/src/components/mixins/Translations.vue:63
+#: front/src/components/manage/moderation/DomainsTable.vue:48
+#: front/src/components/mixins/Translations.vue:74
+#: front/src/components/mixins/Translations.vue:75
 msgctxt "Content/Moderation/*/Noun"
 msgid "Received messages"
 msgstr "Empfangene Nachrichten"
@@ -3363,6 +3578,12 @@ msgctxt "Content/Home/Title"
 msgid "Recently added"
 msgstr "Kürzlich hinzugefügt"
 
+#: front/src/components/Home.vue:167
+#, fuzzy
+msgctxt "Content/Home/Title"
+msgid "Recently added albums"
+msgstr "Kürzlich hinzugefügt"
+
 #: front/src/components/library/Home.vue:11
 msgctxt "Content/Home/Title"
 msgid "Recently favorited"
@@ -3391,14 +3612,14 @@ msgctxt "Popup/*/Message.Title"
 msgid "Refresh error"
 msgstr "Aktualisieren"
 
-#: front/src/views/admin/library/AlbumDetail.vue:50
-#: front/src/views/admin/library/ArtistDetail.vue:49
-#: front/src/views/admin/library/TrackDetail.vue:49
+#: front/src/views/admin/library/AlbumDetail.vue:56
+#: front/src/views/admin/library/ArtistDetail.vue:54
+#: front/src/views/admin/library/TrackDetail.vue:55
 msgctxt "Content/Moderation/Button/Verb"
 msgid "Refresh from remote server"
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:127
+#: front/src/views/admin/moderation/DomainsDetail.vue:164
 msgctxt "Content/Moderation/Button.Label/Verb"
 msgid "Refresh node info"
 msgstr "Knoteninformationen aktualisieren"
@@ -3410,9 +3631,7 @@ msgstr "Knoteninformationen aktualisieren"
 
 #: front/src/components/federation/FetchButton.vue:80
 msgctxt "Popup/*/Message.Content"
-msgid ""
-"Refresh request wasn't proceed in time by our server. It will be processed "
-"later."
+msgid "Refresh request wasn't proceed in time by our server. It will be processed later."
 msgstr ""
 
 #: front/src/components/federation/FetchButton.vue:16
@@ -3435,16 +3654,13 @@ msgctxt "Popup/*/Title"
 msgid "Refreshing object from remote…"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:9
-msgctxt "Content/Signup/Form/Paragraph"
-msgid ""
-"Registration are closed on this instance, you will need an invitation code "
-"to signup."
-msgstr ""
-"Die Anmeldung auf dieser Instanz ist geschlossen. Du brauchst einen "
-"Einladungskode, um dich anmelden zu können."
+#: front/src/components/About.vue:86
+#, fuzzy
+msgctxt "*/*/*"
+msgid "Registrations"
+msgstr "Verwaltung"
 
-#: front/src/components/manage/users/UsersTable.vue:71
+#: front/src/components/manage/users/UsersTable.vue:72
 msgctxt "Content/Admin/Table, User role"
 msgid "Regular user"
 msgstr "herkömmlicher Benutzer"
@@ -3469,8 +3685,8 @@ msgid "Rejected"
 msgstr "Abgewiesen"
 
 #: front/src/components/manage/library/AlbumsTable.vue:43
-#: front/src/components/mixins/Translations.vue:44 src/edits.js:28
-#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:54 src/edits.js:43
+#: front/src/components/mixins/Translations.vue:55
 msgctxt "Content/*/*/Noun"
 msgid "Release date"
 msgstr "Zuletzt gesehen am"
@@ -3480,6 +3696,11 @@ msgctxt "Content/Library/Paragraph"
 msgid "Remaining storage space"
 msgstr ""
 
+#: front/src/views/Notifications.vue:18 src/views/Notifications.vue:52
+msgctxt "Content/Notifications/Label"
+msgid "Remind me in:"
+msgstr ""
+
 #: front/src/views/content/remote/Home.vue:6
 msgctxt "Content/Library/Title/Noun"
 msgid "Remote libraries"
@@ -3487,12 +3708,8 @@ msgstr "Fernmediatheken"
 
 #: front/src/views/content/remote/Home.vue:7
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Remote libraries are owned by other users on the network. You can access "
-"them as long as they are public or you are granted access."
-msgstr ""
-"Entfernte Mediatheken sind im Besitz anderer Nutzer des Netzwerks. Du kannst"
-" darauf zugreifen, wenn diese öffentlich sind, oder du die Erlaubnis hast."
+msgid "Remote libraries are owned by other users on the network. You can access them as long as they are public or you are granted access."
+msgstr "Entfernte Mediatheken sind im Besitz anderer Nutzer des Netzwerks. Du kannst darauf zugreifen, wenn diese öffentlich sind, oder du die Erlaubnis hast."
 
 #: front/src/components/library/radios/Filter.vue:59
 msgctxt "Content/Radio/Button.Label/Verb"
@@ -3509,6 +3726,13 @@ msgctxt "Content/Moderation/Button.Label"
 msgid "Remove filter"
 msgstr "Profilbild löschen"
 
+#: front/src/components/manage/moderation/DomainsTable.vue:198
+#: front/src/views/admin/moderation/DomainsDetail.vue:39
+#, fuzzy
+msgctxt "Content/Moderation/Action/Verb"
+msgid "Remove from allow-list"
+msgstr "Aus den Favoriten entfernen"
+
 #: front/src/components/favorites/TrackFavoriteIcon.vue:26
 msgctxt "Content/Track/Icon.Tooltip/Verb"
 msgid "Remove from favorites"
@@ -3516,43 +3740,105 @@ msgstr "Aus den Favoriten entfernen"
 
 #: front/src/views/content/libraries/Quota.vue:38
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded but yet to be processed tracks completely, adding the "
-"corresponding data to your quota."
-msgstr ""
-"Die importierten Titel, die noch nicht vom Server verarbeitet wurden, werden"
-" vollständig entfernt. Du erhältst den entsprechenden Speicherplatz zurück."
+msgid "Removes uploaded but yet to be processed tracks completely, adding the corresponding data to your quota."
+msgstr "Die importierten Titel, die noch nicht vom Server verarbeitet wurden, werden vollständig entfernt. Du erhältst den entsprechenden Speicherplatz zurück."
 
 #: front/src/views/content/libraries/Quota.vue:64
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded tracks skipped during the import processes completely, "
-"adding the corresponding data to your quota."
-msgstr ""
-"Die hochgeladenen Titel, die beim Import übersprungen wurden, werden "
-"vollständig entfernt. Du erhältst den entsprechenden Speicherplatz zurück."
+msgid "Removes uploaded tracks skipped during the import processes completely, adding the corresponding data to your quota."
+msgstr "Die hochgeladenen Titel, die beim Import übersprungen wurden, werden vollständig entfernt. Du erhältst den entsprechenden Speicherplatz zurück."
 
 #: front/src/views/content/libraries/Quota.vue:90
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded tracks that could not be processed by the server "
-"completely, adding the corresponding data to your quota."
+msgid "Removes uploaded tracks that could not be processed by the server completely, adding the corresponding data to your quota."
+msgstr "Die hochgeladenen Titel, die vom Server nicht verarbeitet wurden, werden vollständig entfernt. Du erhältst den entsprechenden Speicherplatz zurück."
+
+#: front/src/components/audio/PlayButton.vue:94
+#, fuzzy
+msgctxt "*/Queue/Dropdown/Button/Title"
+msgid "Replace current queue"
+msgstr "Zur Warteschlange hinzufügen"
+
+#: front/src/components/mixins/Report.vue:6 src/components/mixins/Report.vue:7
+msgctxt "*/Moderation/*/Verb"
+msgid "Report @%{ username }…"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:5
+msgctxt "Content/Moderation/Card/Short"
+msgid "Report %{ id }"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:139
+#, fuzzy
+msgctxt "*/Moderation/Message"
+msgid "Report successfully submitted, thank you"
+msgstr "Die Änderung wurde erfolgreich übertragen."
+
+#: front/src/components/mixins/Report.vue:36
+#: src/components/mixins/Report.vue:37
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this album…"
+msgstr "Dieses Album bearbeiten"
+
+#: front/src/components/mixins/Report.vue:50
+#: src/components/mixins/Report.vue:51
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this artist…"
+msgstr "Diesen Titel ändern"
+
+#: front/src/components/mixins/Report.vue:72
+#: src/components/mixins/Report.vue:73
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this library…"
+msgstr "Diese Mediathek löschen?"
+
+#: front/src/components/mixins/Report.vue:61
+#: src/components/mixins/Report.vue:62
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this playlist…"
+msgstr "Zur Wiedergabeliste hinzufügen"
+
+#: front/src/components/mixins/Report.vue:23
+#: src/components/mixins/Report.vue:24
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this track…"
+msgstr "Diesen Titel ändern"
+
+#: front/src/components/audio/PlayButton.vue:95
+msgctxt "*/Moderation/*/Button/Label,Verb"
+msgid "Report…"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:117
+msgctxt "Content/*/*/Short"
+msgid "Reported object"
+msgstr ""
+
+#: front/src/views/admin/moderation/Base.vue:5
+#: front/src/views/admin/moderation/ReportsList.vue:3
+#: front/src/views/admin/moderation/ReportsList.vue:208
+msgctxt "*/Moderation/*/Noun"
+msgid "Reports"
 msgstr ""
-"Die hochgeladenen Titel, die vom Server nicht verarbeitet wurden, werden "
-"vollständig entfernt. Du erhältst den entsprechenden Speicherplatz zurück."
 
-#: front/src/components/auth/SubsonicTokenForm.vue:33
-#: front/src/components/auth/SubsonicTokenForm.vue:36
+#: front/src/components/auth/SubsonicTokenForm.vue:38
+#: front/src/components/auth/SubsonicTokenForm.vue:41
 msgctxt "*/Settings/Button.Label/Verb"
 msgid "Request a new password"
 msgstr "Neues Kennwort beantragen"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:34
+#: front/src/components/auth/SubsonicTokenForm.vue:39
 msgctxt "Popup/Settings/Title"
 msgid "Request a new Subsonic API password?"
 msgstr "Neues Subsonic-API-Kennwort beantragen?"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:42
+#: front/src/components/auth/SubsonicTokenForm.vue:47
 msgctxt "Content/Settings/Button.Label/Verb"
 msgid "Request a password"
 msgstr "Kennwort beantragen"
@@ -3562,35 +3848,52 @@ msgctxt "Popup/*/Loading.Title"
 msgid "Requesting a fetch…"
 msgstr ""
 
-#: front/src/components/library/EditForm.vue:82
+#: front/src/components/library/EditForm.vue:94
 msgctxt "Content/Library/Button.Label"
-msgid "Reset to initial value: %{ value }"
+msgid "Reset to initial value"
 msgstr ""
 
-#: front/src/components/auth/Login.vue:35 src/views/auth/PasswordReset.vue:4
-#: front/src/views/auth/PasswordReset.vue:53
+#: front/src/components/auth/LoginForm.vue:34
+#: src/views/auth/PasswordReset.vue:4 front/src/views/auth/PasswordReset.vue:53
 msgctxt "*/Login/*/Verb"
 msgid "Reset your password"
 msgstr "Kennwort zurücksetzen"
 
+#: front/src/components/manage/moderation/ReportCard.vue:83
+#, fuzzy
+msgctxt "Content/*/*/Noun"
+msgid "Resolution date"
+msgstr "Erstellungsdatum"
+
+#: front/src/components/manage/moderation/ReportCard.vue:218
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Resolve"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:62
+#: front/src/views/admin/moderation/ReportsList.vue:20
+msgctxt "Content/*/*/Short"
+msgid "Resolved"
+msgstr ""
+
 #: front/src/views/content/libraries/FilesTable.vue:223
 msgctxt "Content/Library/Dropdown/Verb"
 msgid "Restart import"
 msgstr "Import erneut starten"
 
+#: front/src/components/library/EditForm.vue:31
+msgctxt "Content/Library/Button.Label"
+msgid "Restrict to unreviewed edits"
+msgstr "Begrenze auf unbestätigte Änderungen"
+
 #: front/src/components/favorites/List.vue:39
-#: src/components/library/Albums.vue:30
-#: front/src/components/library/Artists.vue:30
+#: src/components/library/Albums.vue:34
+#: front/src/components/library/Artists.vue:34
 #: src/components/library/Radios.vue:52 front/src/views/playlists/List.vue:32
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Results per page"
 msgstr "Ergebnisse pro Seite"
 
-#: front/src/components/library/EditForm.vue:31
-msgctxt "Content/Library/Button.Label"
-msgid "Retrict to unreviewed edits"
-msgstr "Begrenze auf unbestätigte Änderungen"
-
 #: front/src/views/auth/EmailConfirm.vue:17
 msgctxt "Content/Signup/Link/Verb"
 msgid "Return to login"
@@ -3621,52 +3924,54 @@ msgctxt "Content/Moderation/Card.Title/Noun"
 msgid "Rule"
 msgstr "Regel"
 
-#: front/src/components/admin/SettingsGroup.vue:67
+#: front/src/components/About.vue:28 src/components/About.vue:56
+#, fuzzy
+msgctxt "Content/About/Header"
+msgid "Rules"
+msgstr "Regel"
+
+#: front/src/components/admin/SettingsGroup.vue:75
 #: front/src/components/library/radios/Builder.vue:34
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Save"
 msgstr "Speichern"
 
-#: front/src/views/content/remote/Card.vue:175
+#: front/src/views/content/remote/Card.vue:203
 msgctxt "Content/Library/Message"
 msgid "Scan launched"
 msgstr "Scan gestartet"
 
-#: front/src/views/content/remote/Card.vue:67
+#: front/src/views/content/remote/Card.vue:80
 msgctxt "Content/Library/Card.Button.Label/Verb"
 msgid "Scan now"
 msgstr "Jetzt scannen"
 
-#: front/src/views/content/remote/Card.vue:35
+#: front/src/views/content/remote/Card.vue:48
 msgctxt "Content/Library/Card.List item"
 msgid "Scan pending"
 msgstr "Aufsteigend"
 
-#: front/src/views/content/remote/Card.vue:176
+#: front/src/views/content/remote/Card.vue:204
 msgctxt "Content/Library/Message"
 msgid "Scan skipped (previous scan is too recent)"
 msgstr "Scan ausgelassen (der letzte Scan fand kurz zuvor statt)"
 
-#: front/src/views/content/remote/Card.vue:47
+#: front/src/views/content/remote/Card.vue:60
 msgctxt "Content/Library/Card.List item"
 msgid "Scanned"
 msgstr "Scan abgeschlossen"
 
-#: front/src/views/content/remote/Card.vue:51
+#: front/src/views/content/remote/Card.vue:64
 msgctxt "Content/Library/Card.List item"
 msgid "Scanned with errors"
 msgstr "Scan mit Fehlern abgeschlossen"
 
-#: front/src/views/content/remote/Card.vue:39
+#: front/src/views/content/remote/Card.vue:52
 msgctxt "Content/Library/Card.List item"
 msgid "Scanning… (%{ progress }%)"
 msgstr "Scan läuft… (%{ progress }%)"
 
 #: front/src/components/auth/ApplicationForm.vue:22
-msgctxt "Content/Applications/Input.Label/Noun"
-msgid "Scopes"
-msgstr ""
-
 #: front/src/components/auth/Settings.vue:226
 msgctxt "Content/*/*/Noun"
 msgid "Scopes"
@@ -3679,12 +3984,14 @@ msgstr ""
 #: front/src/components/manage/library/ArtistsTable.vue:5
 #: front/src/components/manage/library/EditsCardList.vue:6
 #: front/src/components/manage/library/LibrariesTable.vue:5
+#: front/src/components/manage/library/TagsTable.vue:5
 #: front/src/components/manage/library/TracksTable.vue:5
 #: front/src/components/manage/library/UploadsTable.vue:5
 #: front/src/components/manage/moderation/AccountsTable.vue:5
 #: front/src/components/manage/moderation/DomainsTable.vue:5
 #: front/src/components/manage/users/InvitationsTable.vue:5
 #: front/src/components/manage/users/UsersTable.vue:5
+#: front/src/views/admin/moderation/ReportsList.vue:8
 #: front/src/views/content/libraries/FilesTable.vue:5
 #: src/views/playlists/List.vue:13
 msgctxt "Content/Search/Input.Label/Noun"
@@ -3697,6 +4004,7 @@ msgid "Search a remote library"
 msgstr "Eine Fernmediathek suchen"
 
 #: front/src/components/manage/library/EditsCardList.vue:211
+#: front/src/views/admin/moderation/ReportsList.vue:207
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by account, summary, domain…"
 msgstr "Nach Titel, Künstler·innen oder Domain suchen…"
@@ -3731,7 +4039,13 @@ msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by domain, username, bio…"
 msgstr "Suche nach Domain, Benutzernamen, Biografie…"
 
-#: front/src/components/manage/moderation/DomainsTable.vue:151
+#: front/src/components/manage/library/TagsTable.vue:165
+#, fuzzy
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by name"
+msgstr "Suchen nach Name…"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:168
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by name…"
 msgstr "Suchen nach Name…"
@@ -3746,12 +4060,12 @@ msgctxt "Content/Admin/Input.Placeholder/Verb"
 msgid "Search by username, e-mail address, code…"
 msgstr "Benutzernamen, E-Mail-Adresse, Kode suchen…"
 
-#: front/src/components/manage/users/UsersTable.vue:163
+#: front/src/components/manage/users/UsersTable.vue:164
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by username, e-mail address, name…"
 msgstr "Benutzernamen, E-Mail-Adresse, Namen suchen…"
 
-#: front/src/components/audio/SearchBar.vue:20
+#: front/src/components/audio/SearchBar.vue:27
 msgctxt "Sidebar/Search/Input.Placeholder"
 msgid "Search for artists, albums, tracks…"
 msgstr "Nach Künstler·innen, Alben und Titeln suchen…"
@@ -3761,16 +4075,30 @@ msgctxt "Content/Search/Title"
 msgid "Search for some music"
 msgstr "Musik suchen"
 
-#: front/src/components/library/AlbumBase.vue:57
-#: front/src/components/library/ArtistBase.vue:68
-#: front/src/components/library/TrackBase.vue:76
+#: front/src/components/library/TagsSelector.vue:6
+#, fuzzy
+msgctxt "*/Dropdown/Placeholder/Verb"
+msgid "Search for tags…"
+msgstr "Suchen nach Name…"
+
+#: front/src/components/library/AlbumBase.vue:66
+#: front/src/components/library/ArtistBase.vue:77
+#: front/src/components/library/TrackBase.vue:82
+#, fuzzy
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Search on Discogs"
+msgstr "Musik suchen"
+
+#: front/src/components/library/AlbumBase.vue:58
+#: front/src/components/library/ArtistBase.vue:69
+#: front/src/components/library/TrackBase.vue:74
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Search on Wikipedia"
 msgstr "Auf Wikipedia suchen"
 
 #: front/src/components/library/Library.vue:35
-#: src/views/admin/library/Base.vue:32
-#: front/src/views/admin/moderation/Base.vue:22
+#: src/views/admin/library/Base.vue:35
+#: front/src/views/admin/moderation/Base.vue:44
 #: src/views/admin/users/Base.vue:21 front/src/views/content/Base.vue:19
 msgctxt "Menu/*/Hidden text"
 msgid "Secondary menu"
@@ -3781,6 +4109,26 @@ msgctxt "Content/Admin/Menu.Title"
 msgid "Sections"
 msgstr "Abschnitte"
 
+#: front/src/components/ShortcutsModal.vue:108
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek backwards 30s"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:100
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek backwards 5s"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:112
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek forwards 30s"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:104
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek forwards 5s"
+msgstr ""
+
 #: front/src/components/library/radios/Builder.vue:46
 msgctxt "Content/Radio/Dropdown.Placeholder/Verb"
 msgid "Select a filter"
@@ -3799,9 +4147,14 @@ msgctxt "Content/*/Link/Verb"
 msgid "Select only current page"
 msgstr "Nur die aktuelle Seite auswählen"
 
-#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:108
-#: front/src/components/manage/users/UsersTable.vue:181
-#: front/src/views/admin/moderation/AccountsDetail.vue:506
+#: front/src/components/Home.vue:43
+msgctxt "Content/Home/Link"
+msgid "Server rules"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:112
+#: front/src/components/manage/users/UsersTable.vue:182
+#: front/src/views/admin/moderation/AccountsDetail.vue:526
 msgctxt "*/*/*/Noun"
 msgid "Settings"
 msgstr "Einstellungen"
@@ -3823,18 +4176,25 @@ msgstr "Freigabe-Link"
 
 #: front/src/views/content/libraries/Detail.vue:15
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Share this link with other users so they can request access to your library."
-msgstr ""
-"Teile diesen Link mit anderen Nutzenden, damit diese Zugriff auf deine "
-"Mediathek anfordern können."
+msgid "Share this link with other users so they can request access to your library."
+msgstr "Teile diesen Link mit anderen Nutzenden, damit diese Zugriff auf deine Mediathek anfordern können."
 
 #: front/src/views/content/libraries/Detail.vue:14
-#: front/src/views/content/remote/Card.vue:77
+#: front/src/views/content/remote/Card.vue:90
 msgctxt "Content/Library/Title"
 msgid "Sharing link"
 msgstr "Freigabe-Link"
 
+#: front/src/components/audio/EmbedWizard.vue:5
+msgctxt "Content/Embed/Message"
+msgid "Sharing will not work because this pod doesn't allow anonymous users to access content."
+msgstr ""
+
+#: front/src/components/About.vue:156
+msgctxt "*/*/*/Verb"
+msgid "Show"
+msgstr ""
+
 #: front/src/components/audio/album/Card.vue:38
 #, fuzzy
 msgctxt "Content/Album/Card.Link/Verb"
@@ -3843,10 +4203,11 @@ msgid_plural "Show %{ count } more tracks"
 msgstr[0] "%{ count } weiteren Track zeigen"
 msgstr[1] "%{ count } weitere Tracks zeigen"
 
-#: front/src/components/audio/artist/Card.vue:30
-msgctxt "Content/Artist/Card.Link"
-msgid "Show 1 more album"
-msgid_plural "Show %{ count } more albums"
+#: front/src/components/tags/List.vue:11
+#, fuzzy
+msgctxt "Content/*/Button/Label/Verb"
+msgid "Show 1 more tag"
+msgid_plural "Show %{ count } more tags"
 msgstr[0] "1 weiteres Album zeigen"
 msgstr[1] "%{ count } weitere Alben zeigen"
 
@@ -3855,17 +4216,29 @@ msgctxt "Content/Library/Button.Label"
 msgid "Show all edits"
 msgstr "Zeige alle Änderungen"
 
-#: front/src/components/ShortcutsModal.vue:42
+#: front/src/components/ShortcutsModal.vue:60
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Show available keyboard shortcuts"
 msgstr "Verfügbare Tastenkombinationen zeigen"
 
-#: front/src/views/Notifications.vue:7
+#: front/src/components/common/ExpandableDiv.vue:7
+#, fuzzy
+msgctxt "*/*/Button,Label"
+msgid "Show less"
+msgstr "Zeige alle Änderungen"
+
+#: front/src/components/common/ExpandableDiv.vue:8
+#, fuzzy
+msgctxt "*/*/Button,Label"
+msgid "Show more"
+msgstr "1 weiteres Album zeigen"
+
+#: front/src/views/Notifications.vue:72
 msgctxt "Content/Notifications/Form.Label/Verb"
 msgid "Show read notifications"
 msgstr "Gelesene Benachrichtigungen zeigen"
 
-#: front/src/components/forms/PasswordInput.vue:26
+#: front/src/components/forms/PasswordInput.vue:42
 msgctxt "Content/Settings/Button.Tooltip/Verb"
 msgid "Show/hide password"
 msgstr "Passwort verstecken bzw. zeigen"
@@ -3874,56 +4247,64 @@ msgstr "Passwort verstecken bzw. zeigen"
 #: front/src/components/manage/library/ArtistsTable.vue:84
 #: front/src/components/manage/library/EditsCardList.vue:72
 #: front/src/components/manage/library/LibrariesTable.vue:110
+#: front/src/components/manage/library/TagsTable.vue:79
 #: front/src/components/manage/library/TracksTable.vue:95
 #: front/src/components/manage/library/UploadsTable.vue:144
 #: front/src/components/manage/moderation/AccountsTable.vue:88
-#: front/src/components/manage/moderation/DomainsTable.vue:74
+#: front/src/components/manage/moderation/DomainsTable.vue:85
 #: front/src/components/manage/users/InvitationsTable.vue:76
-#: front/src/components/manage/users/UsersTable.vue:87
+#: front/src/components/manage/users/UsersTable.vue:88
 #: front/src/views/content/libraries/FilesTable.vue:117
 msgctxt "Content/*/Paragraph"
 msgid "Showing results %{ start }-%{ end } on %{ total }"
 msgstr "Ergebnisse %{ start } bis %{ end } von %{ total }"
 
-#: front/src/components/ShortcutsModal.vue:83
+#: front/src/components/ShortcutsModal.vue:140
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Shuffle queue"
 msgstr "Warteschlange mischen"
 
-#: front/src/components/audio/Player.vue:641
+#: front/src/components/audio/Player.vue:667
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Shuffle your queue"
 msgstr "Warteschlange mischen"
 
-#: front/src/components/auth/Signup.vue:97
+#: front/src/components/Home.vue:103
+#, fuzzy
+msgctxt "*/Signup/Title"
+msgid "Sign up"
+msgstr "Anmeldung"
+
+#: front/src/views/auth/Signup.vue:37
 msgctxt "*/Signup/Title"
 msgid "Sign Up"
 msgstr "Anmeldung"
 
+#: front/src/components/Home.vue:107
+msgctxt "Content/Home/Paragraph"
+msgid "Sign up now to keep a track of your favorites, create playlists, discover new content and much more!"
+msgstr ""
+
 #: front/src/components/manage/users/UsersTable.vue:40
 msgctxt "Content/Admin/Table.Label/Short, Noun (Value is a date)"
 msgid "Sign-up"
 msgstr "Anmeldung"
 
-#: front/src/components/mixins/Translations.vue:57
-#: front/src/views/admin/moderation/AccountsDetail.vue:197
-#: front/src/components/mixins/Translations.vue:58
+#: front/src/components/mixins/Translations.vue:69
+#: front/src/views/admin/moderation/AccountsDetail.vue:198
+#: front/src/components/mixins/Translations.vue:70
 msgctxt "Content/Admin/Table.Label/Noun"
 msgid "Sign-up date"
 msgstr "Anmeldedatum"
 
-#: front/src/components/manage/library/UploadsTable.vue:65
-#: front/src/views/admin/library/UploadDetail.vue:219
-msgctxt "Content/*/*/Noun"
-msgid "Size"
-msgstr "Größe"
-
 #: front/src/components/library/FileUpload.vue:94
 #: front/src/components/library/TrackDetail.vue:39
-#: front/src/components/mixins/Translations.vue:54
+#: front/src/components/manage/library/UploadsTable.vue:65
+#: front/src/components/mixins/Translations.vue:66
+#: front/src/views/admin/library/UploadDetail.vue:219
 #: front/src/views/content/libraries/FilesTable.vue:61
-#: front/src/components/mixins/Translations.vue:55
-msgctxt "Content/Library/*/in MB"
+#: front/src/components/mixins/Translations.vue:67
+msgctxt "Content/*/*/Noun"
 msgid "Size"
 msgstr "Größe"
 
@@ -3940,7 +4321,7 @@ msgctxt "Content/Library/Label"
 msgid "Skipped files"
 msgstr "Ãœbersprungene Dateien"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:89
+#: front/src/views/admin/moderation/DomainsDetail.vue:126
 msgctxt "Content/Moderation/Table.Label"
 msgid "Software"
 msgstr "Software"
@@ -3955,96 +4336,65 @@ msgctxt "Content/*/Paragraph"
 msgid "Sorry, the page you asked for does not exist:"
 msgstr "Entschuldigung, die aufgerufene Seite existiert nicht:"
 
-#: front/src/components/Footer.vue:49
+#: front/src/components/Footer.vue:57
 msgctxt "Footer/*/List item.Link"
 msgid "Source code"
 msgstr "Quellcode"
 
 #: front/src/components/auth/Profile.vue:23
-#: front/src/components/manage/users/UsersTable.vue:70
+#: front/src/components/manage/users/UsersTable.vue:71
 msgctxt "Content/Profile/User role"
 msgid "Staff member"
 msgstr "Teammember"
 
-#: front/src/components/audio/PlayButton.vue:23
+#: front/src/components/audio/PlayButton.vue:27
 #: src/components/radios/Button.vue:4
 msgctxt "*/Queue/Button.Label/Short, Verb"
 msgid "Start radio"
 msgstr "Radio einschalten"
 
-#: front/src/views/admin/Settings.vue:86
-msgctxt "Content/Admin/Menu"
+#: front/src/components/About.vue:170 src/components/Home.vue:53
+#: front/src/views/admin/Settings.vue:87
+#, fuzzy
+msgctxt "Content/Home/Header"
 msgid "Statistics"
 msgstr "Statistik"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:490
+#: front/src/views/admin/moderation/AccountsDetail.vue:510
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this account"
-msgstr ""
-"Statistiken betrachten ausschließlich die Aktivität und den Inhalt, die von "
-"deiner Instanz bekannt sind, und stellen nicht die gesamte Aktivität dieses "
-"Kontos dar"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this account"
+msgstr "Statistiken betrachten ausschließlich die Aktivität und den Inhalt, die von deiner Instanz bekannt sind, und stellen nicht die gesamte Aktivität dieses Kontos dar"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:371
+#: front/src/views/admin/moderation/DomainsDetail.vue:418
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this domain"
-msgstr ""
-"Statistiken betrachten ausschließlich die Aktivität und den Inhalt, die von "
-"deiner Instanz bekannt sind, und stellen nicht die gesamte Aktivität dieses "
-"Domains dar"
-
-#: front/src/views/admin/library/AlbumDetail.vue:329
-#: front/src/views/admin/library/ArtistDetail.vue:328
-#: front/src/views/admin/library/LibraryDetail.vue:316
-#: front/src/views/admin/library/TrackDetail.vue:371
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this domain"
+msgstr "Statistiken betrachten ausschließlich die Aktivität und den Inhalt, die von deiner Instanz bekannt sind, und stellen nicht die gesamte Aktivität dieses Domains dar"
+
+#: front/src/views/admin/library/AlbumDetail.vue:346
+#: front/src/views/admin/library/ArtistDetail.vue:345
+#: front/src/views/admin/library/LibraryDetail.vue:356
+#: front/src/views/admin/library/TagDetail.vue:210
+#: front/src/views/admin/library/TrackDetail.vue:389
 #: front/src/views/admin/library/UploadDetail.vue:335
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this object"
-msgstr ""
-"Statistiken betrachten ausschließlich die Aktivität und den Inhalt, die von "
-"deiner Instanz bekannt sind, und stellen nicht die gesamte Aktivität dieses "
-"Kontos dar"
-
-#: front/src/views/admin/moderation/DomainsDetail.vue:115
-msgctxt "Content/Moderation/Table.Label (Value is Error message)"
-msgid "Status"
-msgstr "Status"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this object"
+msgstr "Statistiken betrachten ausschließlich die Aktivität und den Inhalt, die von deiner Instanz bekannt sind, und stellen nicht die gesamte Aktivität dieses Kontos dar"
 
 #: front/src/components/library/FileUpload.vue:95
-msgctxt "Content/Library/Table.Label (Value is Uploading/Uploaded/Error)"
-msgid "Status"
-msgstr "Status"
-
-#: front/src/views/content/libraries/Detail.vue:28
-msgctxt "Content/Library.Federation/Table.Label (Value is Approved/Rejected)"
-msgid "Status"
-msgstr "Status"
-
+#: front/src/components/manage/library/EditsCardList.vue:12
+#: front/src/components/manage/moderation/ReportCard.vue:57
 #: front/src/components/manage/users/InvitationsTable.vue:17
 #: front/src/components/manage/users/InvitationsTable.vue:39
-msgctxt "Content/Admin/*/Noun (Value is Used/Not used)"
-msgid "Status"
-msgstr "Status"
-
 #: front/src/components/manage/users/UsersTable.vue:43
-msgctxt "Content/Admin/Table.Label/Noun (Value is Regular user/Admin)"
-msgid "Status"
-msgstr "Status"
-
-#: front/src/components/manage/library/EditsCardList.vue:12
-msgctxt ""
-"Content/Search/Dropdown.Label (Value is All/Pending "
-"review/Approved/Rejected)"
+#: front/src/views/admin/moderation/DomainsDetail.vue:152
+#: front/src/views/admin/moderation/ReportsList.vue:14
+#: front/src/views/content/libraries/Detail.vue:28
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Status"
 msgstr "Status"
 
-#: front/src/components/Sidebar.vue:174 src/components/radios/Button.vue:3
+#: front/src/components/Sidebar.vue:178 src/components/radios/Button.vue:3
 msgctxt "*/Player/Button.Label/Short, Verb"
 msgid "Stop radio"
 msgstr "Radio ausschalten"
@@ -4054,7 +4404,7 @@ msgctxt "*/*/Button.Label/Verb"
 msgid "Submit"
 msgstr "Abschicken"
 
-#: front/src/components/library/EditForm.vue:98
+#: front/src/components/library/EditForm.vue:110
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Submit and apply edit"
 msgstr "Senden und anwenden"
@@ -4064,12 +4414,24 @@ msgctxt "Content/Library/Button.Label"
 msgid "Submit another edit"
 msgstr ""
 
-#: front/src/components/library/EditForm.vue:99
+#: front/src/components/moderation/ReportModal.vue:64
+#, fuzzy
+msgctxt "Popup/*/Button.Label"
+msgid "Submit report"
+msgstr "Abschicken"
+
+#: front/src/components/library/EditForm.vue:111
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Submit suggestion"
 msgstr ""
 
-#: front/src/views/admin/Settings.vue:85
+#: front/src/components/manage/moderation/ReportCard.vue:17
+#, fuzzy
+msgctxt "Content/Moderation/*"
+msgid "Submitted by"
+msgstr "Abschicken"
+
+#: front/src/views/admin/Settings.vue:86
 msgctxt "Content/Admin/Menu"
 msgid "Subsonic"
 msgstr "Subsonic"
@@ -4109,16 +4471,21 @@ msgctxt "Content/Library/Tab.Title/Short"
 msgid "Summary"
 msgstr "Zusammenfassung"
 
-#: front/src/components/library/EditForm.vue:87
+#: front/src/components/library/EditForm.vue:99
 msgctxt "*/*/*"
 msgid "Summary (optional)"
 msgstr "Zusammenfassung (optional)"
 
-#: front/src/components/Footer.vue:39
+#: front/src/components/Footer.vue:47
 msgctxt "Footer/*/Listitem.Link"
 msgid "Support forum"
 msgstr "Hilfe-Forum"
 
+#: front/src/views/Notifications.vue:10
+msgctxt "Content/Notifications/Header"
+msgid "Support this Funkwhale pod"
+msgstr ""
+
 #: front/src/components/library/FileUpload.vue:85
 msgctxt "Content/Library/Paragraph"
 msgid "Supported extensions: %{ extensions }"
@@ -4129,26 +4496,47 @@ msgctxt "Content/Playlist/Paragraph"
 msgid "Syncing changes to server…"
 msgstr "Synchronisierung der Änderungen auf dem Server…"
 
-#: front/src/components/audio/EmbedWizard.vue:25
+#: front/src/components/audio/SearchBar.vue:35
+msgctxt "*/*/*/Noun"
+msgid "Tag"
+msgstr ""
+
+#: front/src/views/admin/library/TagDetail.vue:61
+#, fuzzy
+msgctxt "Content/Moderation/Title"
+msgid "Tag data"
+msgstr "Trackname"
+
+#: front/src/components/library/Albums.vue:23
+#: src/components/library/Artists.vue:15
+#: front/src/views/admin/library/Base.vue:23
+#: src/views/admin/library/TagsList.vue:24 front/src/edits.js:24
+#: src/edits.js:50 src/edits.js:91 src/entities.js:120
+msgctxt "*/*/*/Noun"
+msgid "Tags"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:44
+#: front/src/components/mixins/Translations.vue:45
+#, fuzzy
+msgctxt "Content/Moderation/Dropdown"
+msgid "Takedown request"
+msgstr "Ausstehende Abonnieren-Anfrage"
+
+#: front/src/components/About.vue:35 src/components/About.vue:61
+msgctxt "Content/About/Header"
+msgid "Terms and privacy policy"
+msgstr ""
+
+#: front/src/components/audio/EmbedWizard.vue:35
 #: front/src/components/common/CopyInput.vue:3
 msgctxt "Content/*/Paragraph"
 msgid "Text copied to clipboard!"
 msgstr "Text in die Zwischenablage kopiert!"
 
-#: front/src/components/Home.vue:26
-msgctxt "Content/Home/Paragraph"
-msgid ""
-"That's simple: we loved Grooveshark and we want to build something even "
-"better."
-msgstr ""
-"So einfach ist es: wir liebten Grooveshark und wollen noch etwas viel "
-"besseres aufbauen."
-
-#: front/src/views/admin/library/AlbumDetail.vue:75
+#: front/src/views/admin/library/AlbumDetail.vue:81
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The album will be removed, as well as associated uploads, tracks, favorites "
-"and listening history. This action is irreversible."
+msgid "The album will be removed, as well as associated uploads, tracks, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/components/auth/Authorize.vue:39
@@ -4156,19 +4544,15 @@ msgctxt "Content/Auth/Paragraph"
 msgid "The application is also requesting the following unknown permissions:"
 msgstr ""
 
-#: front/src/views/admin/library/ArtistDetail.vue:74
+#: front/src/views/admin/library/ArtistDetail.vue:79
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The artist will be removed, as well as associated uploads, tracks, albums, "
-"favorites and listening history. This action is irreversible."
+msgid "The artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible."
 msgstr ""
 
-#: front/src/components/Footer.vue:53
+#: front/src/components/Footer.vue:61
 msgctxt "Footer/*/List item.Link"
 msgid "The funkwhale logo was kindly designed and provided by Francis Gading."
-msgstr ""
-"Das Funkwhale-Logo wurde gestaltet und freundlicherweise zur Verfügung "
-"gestellt von Francis Gading."
+msgstr "Das Funkwhale-Logo wurde gestaltet und freundlicherweise zur Verfügung gestellt von Francis Gading."
 
 #: front/src/components/SetInstanceModal.vue:8
 msgctxt "Popup/Instance/Error message.List item"
@@ -4177,24 +4561,17 @@ msgstr "Die angegebene Adresse ist kein Funkwhale-Server"
 
 #: front/src/views/content/libraries/Form.vue:34
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"The library and all its tracks will be deleted. This can not be undone."
-msgstr ""
-"Die Mediathek und all ihre Titel werden gelöscht. Dieser Vorgang kann nicht "
-"rückgängig gemacht werden."
+msgid "The library and all its tracks will be deleted. This can not be undone."
+msgstr "Die Mediathek und all ihre Titel werden gelöscht. Dieser Vorgang kann nicht rückgängig gemacht werden."
 
 #: front/src/views/admin/library/LibraryDetail.vue:61
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The library will be removed, as well as associated uploads, and follows. "
-"This action is irreversible."
+msgid "The library will be removed, as well as associated uploads, and follows. This action is irreversible."
 msgstr ""
 
 #: front/src/components/library/ImportStatusModal.vue:140
 msgctxt "Popup/Import/Error.Label"
-msgid ""
-"The metadata included in the file is invalid or some mandatory fields are "
-"missing."
+msgid "The metadata included in the file is invalid or some mandatory fields are missing."
 msgstr ""
 
 #: front/src/components/library/FileUpload.vue:38
@@ -4207,14 +4584,16 @@ msgctxt "Sidebar/Player/Error message.Paragraph"
 msgid "The next track will play automatically in a few seconds…"
 msgstr "Der nächste Titel wird automatisch in wenigen Sekunden wiedergegeben…"
 
-#: front/src/components/Home.vue:116
-msgctxt "Content/Home/List item"
-msgid ""
-"The plaform is free and open-source, you can install it and modify it "
-"without worries"
+#: front/src/components/manage/moderation/NotesThread.vue:27
+#, fuzzy
+msgctxt "Content/Moderation/Paragraph"
+msgid "The note will be removed. This action is irreversible."
+msgstr "Der Vorschlag wird entgültig gelöscht. Das kann nicht rückgängig gemacht werden."
+
+#: front/src/components/manage/moderation/ReportCard.vue:120
+msgctxt "Content/Moderation/Message"
+msgid "The object associated with this report was deleted."
 msgstr ""
-"Die Plattform ist kostenlos und Open-Source, du kannst sie installieren und "
-"anpassen ohne Beschränkung"
 
 #: front/src/components/playlists/Form.vue:14
 msgctxt "Content/Playlist/Error message.Title"
@@ -4228,54 +4607,49 @@ msgstr ""
 
 #: front/src/components/federation/FetchButton.vue:13
 msgctxt "Popup/*/Message.Content"
-msgid ""
-"The remote server answered, but returned data was unsupported by Funkwhale."
+msgid "The remote server answered, but returned data was unsupported by Funkwhale."
 msgstr ""
 
 #: front/src/components/federation/FetchButton.vue:44
 msgctxt "*/*/Error"
-msgid "The remote server didn't answered fast enough"
+msgid "The remote server didn't respond quickly enough"
 msgstr ""
 
 #: front/src/components/federation/FetchButton.vue:50
 msgctxt "*/*/Error"
-msgid "The return server returned invalid JSON or JSON-LD data"
+msgid "The remote server returned invalid JSON or JSON-LD data"
 msgstr ""
 
 #: front/src/components/manage/library/AlbumsTable.vue:189
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected albums will be removed, as well as associated tracks, uploads, "
-"favorites and listening history. This action is irreversible."
+msgid "The selected albums will be removed, as well as associated tracks, uploads, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/components/manage/library/ArtistsTable.vue:179
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected artist will be removed, as well as associated uploads, tracks, "
-"albums, favorites and listening history. This action is irreversible."
+msgid "The selected artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/components/manage/library/LibrariesTable.vue:206
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected library will be removed, as well as associated uploads and "
-"follows. This action is irreversible."
+msgid "The selected library will be removed, as well as associated uploads and follows. This action is irreversible."
 msgstr ""
 
+#: front/src/components/manage/library/TagsTable.vue:180
+#, fuzzy
+msgctxt "Popup/*/Paragraph"
+msgid "The selected tag will be removed and unlinked with existing content, if any. This action is irreversible."
+msgstr "Der Vorschlag wird entgültig gelöscht. Das kann nicht rückgängig gemacht werden."
+
 #: front/src/components/manage/library/TracksTable.vue:189
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected tracks will be removed, as well as associated uploads, "
-"favorites and listening history. This action is irreversible."
+msgid "The selected tracks will be removed, as well as associated uploads, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/components/manage/library/UploadsTable.vue:256
 msgctxt "Popup/*/Paragraph"
 msgid "The selected upload will be removed. This action is irreversible."
-msgstr ""
-"Der Vorschlag wird entgültig gelöscht. Das kann nicht rückgängig gemacht "
-"werden."
+msgstr "Der Vorschlag wird entgültig gelöscht. Das kann nicht rückgängig gemacht werden."
 
 #: front/src/components/SetInstanceModal.vue:7
 msgctxt "Popup/Instance/Error message.List item"
@@ -4289,11 +4663,14 @@ msgstr "Die Subsonic-API ist auf dieser Instanz nicht verfügbar."
 
 #: front/src/components/library/EditCard.vue:96
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"The suggestion will be completely removed, this action is irreversible."
-msgstr ""
-"Der Vorschlag wird entgültig gelöscht. Das kann nicht rückgängig gemacht "
-"werden."
+msgid "The suggestion will be completely removed, this action is irreversible."
+msgstr "Der Vorschlag wird entgültig gelöscht. Das kann nicht rückgängig gemacht werden."
+
+#: front/src/views/admin/library/TagDetail.vue:44
+#, fuzzy
+msgctxt "Content/Moderation/Paragraph"
+msgid "The tag will be removed and unlinked from any existing entity. This action is irreversible."
+msgstr "Der Vorschlag wird entgültig gelöscht. Das kann nicht rückgängig gemacht werden."
 
 #: front/src/components/playlists/PlaylistModal.vue:34
 msgctxt "Popup/Playlist/Error message.Title"
@@ -4305,19 +4682,15 @@ msgctxt "Sidebar/Player/Error message.Title"
 msgid "The track cannot be loaded"
 msgstr "Der Titel kann nicht geladen werden"
 
-#: front/src/views/admin/library/TrackDetail.vue:74
+#: front/src/views/admin/library/TrackDetail.vue:80
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The track will be removed, as well as associated uploads, favorites and "
-"listening history. This action is irreversible."
+msgid "The track will be removed, as well as associated uploads, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/views/admin/library/UploadDetail.vue:68
 msgctxt "Content/Moderation/Paragraph"
 msgid "The upload will be removed. This action is irreversible."
-msgstr ""
-"Der Vorschlag wird entgültig gelöscht. Das kann nicht rückgängig gemacht "
-"werden."
+msgstr "Der Vorschlag wird entgültig gelöscht. Das kann nicht rückgängig gemacht werden."
 
 #: front/src/components/library/FileUpload.vue:42
 msgctxt "Content/Library/List item"
@@ -4327,8 +4700,7 @@ msgstr "Die hochgeladenen Musikdateien sind im OGG-, Flac- oder MP3-Format"
 #: front/src/views/content/Home.vue:4
 msgctxt "Content/Library/Paragraph"
 msgid "There are various ways to grab new content and make it available here."
-msgstr ""
-"Es gibt zahlreiche Wege, neue Inhalte abzurufen und hier zu veröffentlichen."
+msgstr "Es gibt zahlreiche Wege, neue Inhalte abzurufen und hier zu veröffentlichen."
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:66
 msgctxt "Popup/Moderation/Paragraph"
@@ -4345,21 +4717,37 @@ msgctxt "Content/Artist/Paragraph"
 msgid "This artist is present in the following libraries:"
 msgstr "Dieser Künstler kommt in den folgenden Mediatheken vor:"
 
+#: front/src/components/manage/moderation/DomainsTable.vue:169
+#, fuzzy
+msgctxt "Content/Moderation/Popup"
+msgid "This domain is present in your allow-list"
+msgstr "Dieser Künstler kommt in den folgenden Mediatheken vor:"
+
 #: front/src/views/admin/moderation/AccountsDetail.vue:84
-#: front/src/views/admin/moderation/DomainsDetail.vue:48
+#: front/src/views/admin/moderation/DomainsDetail.vue:76
 msgctxt "Content/Moderation/Card.Title"
 msgid "This domain is subject to specific moderation rules"
 msgstr "Für diese Domain gelten besondere Moderationsregeln"
 
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:16
+#, fuzzy
+msgctxt "Content/Moderation/Card.Title"
+msgid "This entity is subject to specific moderation rules"
+msgstr "Für diese Domain gelten besondere Moderationsregeln"
+
 #: front/src/views/content/Home.vue:9
 msgctxt "Content/Library/Paragraph"
 msgid "This instance offers up to %{quota} of storage space for every user."
 msgstr "Diese Instanz bietet den Nutzenden bis zu %{quota} Speicherplatz."
 
+#: front/src/components/auth/Settings.vue:300
+msgctxt "Popup/Settings/Paragraph"
+msgid "This is irreversible and will permanently remove your data from our servers. You will we immediatly logged out."
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:165
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"This is the list of applications that have access to your account data."
+msgid "This is the list of applications that have access to your account data."
 msgstr ""
 
 #: front/src/components/auth/Settings.vue:218
@@ -4375,33 +4763,22 @@ msgstr "Das bist du!"
 #: front/src/views/content/libraries/Form.vue:73
 msgctxt "Content/Library/Input.Placeholder"
 msgid "This library contains my personal music, I hope you like it."
-msgstr ""
-"Diese Mediathek enthält meine persönliche Musik. Ich hoffe sie gefällt euch."
+msgstr "Diese Mediathek enthält meine persönliche Musik. Ich hoffe sie gefällt euch."
 
-#: front/src/views/content/remote/Card.vue:141
+#: front/src/views/content/remote/Card.vue:169
 msgctxt "Content/Library/Card.Help text"
-msgid ""
-"This library is private and your approval from its owner is needed to access"
-" its content"
-msgstr ""
-"Diese Mediathek ist privat. Dein Zugriff auf sie benötigt die Genehmigung "
-"des Eigentümers / der Eigentümerin"
+msgid "This library is private and your approval from its owner is needed to access its content"
+msgstr "Diese Mediathek ist privat. Dein Zugriff auf sie benötigt die Genehmigung des Eigentümers / der Eigentümerin"
 
-#: front/src/views/content/remote/Card.vue:142
+#: front/src/views/content/remote/Card.vue:170
 msgctxt "Content/Library/Card.Help text"
 msgid "This library is public and you can access its content freely"
-msgstr ""
-"Diese Mediathek ist öffentlich. Du kannst auf den Inhalt ohne "
-"Einschränkungen zugreifen"
+msgstr "Diese Mediathek ist öffentlich. Du kannst auf den Inhalt ohne Einschränkungen zugreifen"
 
 #: front/src/components/common/ActionTable.vue:47
 msgctxt "Modal/*/Paragraph"
-msgid ""
-"This may affect a lot of elements or have irreversible consequences, please "
-"double check this is really what you want."
-msgstr ""
-"Durch diese Aktion können mehrere Elemente betroffen sein. Überlege, ob du "
-"es wirklich so willst."
+msgid "This may affect a lot of elements or have irreversible consequences, please double check this is really what you want."
+msgstr "Durch diese Aktion können mehrere Elemente betroffen sein. Überlege, ob du es wirklich so willst."
 
 #: front/src/components/library/AlbumEdit.vue:8
 #: front/src/components/library/ArtistEdit.vue:8
@@ -4410,6 +4787,11 @@ msgctxt "Content/*/Message"
 msgid "This object is managed by another server, you cannot edit it."
 msgstr ""
 
+#: front/src/components/Home.vue:87
+msgctxt "Content/Home/Paragraph"
+msgid "This pod runs Funkwhale, a community-driven project that lets you listen and share music and audio within a decentralized, open network."
+msgstr ""
+
 #: front/src/components/library/FileUpload.vue:51
 msgctxt "Content/Library/Paragraph"
 msgid "This reference will be used to group imported files together."
@@ -4417,20 +4799,16 @@ msgstr "Diese Referenz wird verwendet, um importierte Dateien zu gruppieren."
 
 #: front/src/components/mixins/Translations.vue:33
 #: front/src/components/mixins/Translations.vue:34
+#, fuzzy
 msgctxt "Content/Library/Help text"
-msgid "This track could not be processed, please it is tagged correctly"
-msgstr ""
-"Bei der Verarbeitung des Titels ist ein Fehler aufgetreten. Überprüfe bitte,"
-" dass er richtig verschlagwortet ist"
+msgid "This track could not be processed, please make sure it is tagged correctly"
+msgstr "Bei der Verarbeitung des Titels ist ein Fehler aufgetreten. Überprüfe bitte, dass er richtig verschlagwortet ist"
 
 #: front/src/components/mixins/Translations.vue:29
 #: front/src/components/mixins/Translations.vue:30
 msgctxt "Content/Library/Help text"
-msgid ""
-"This track has been uploaded, but hasn't been processed by the server yet"
-msgstr ""
-"Der Titel wurde hochgeladen, er ist aber noch nicht vom Server verarbeitet "
-"worden"
+msgid "This track has been uploaded, but hasn't been processed by the server yet"
+msgstr "Der Titel wurde hochgeladen, er ist aber noch nicht vom Server verarbeitet worden"
 
 #: front/src/components/mixins/Translations.vue:25
 #: front/src/components/mixins/Translations.vue:26
@@ -4438,7 +4816,7 @@ msgctxt "Content/Library/Help text"
 msgid "This track is already present in one of your libraries"
 msgstr "Eine deiner Mediatheken enthält bereits diesen Titel"
 
-#: front/src/components/audio/PlayButton.vue:85
+#: front/src/components/audio/PlayButton.vue:103
 msgctxt "*/Queue/Button/Title"
 msgid "This track is not available in any library you have access to"
 msgstr "Dieser Titel ist in keiner deiner verfügbaren Mediatheken enthalten"
@@ -4448,93 +4826,84 @@ msgctxt "Content/Track/Paragraph"
 msgid "This track is present in the following libraries:"
 msgstr "Dieser Track ist in den folgenden Mediatheken enthalten:"
 
-#: front/src/views/playlists/Detail.vue:38
+#: front/src/views/playlists/Detail.vue:46
 msgctxt "Popup/Playlist/Paragraph"
 msgid "This will completely delete this playlist and cannot be undone."
-msgstr ""
-"Die Wiedergabeliste wird dauerhaft gelöscht und kann nicht zurückerstellt "
-"werden."
+msgstr "Die Wiedergabeliste wird dauerhaft gelöscht und kann nicht zurückerstellt werden."
 
 #: front/src/views/radios/Detail.vue:27
 msgctxt "Popup/Radio/Paragraph"
 msgid "This will completely delete this radio and cannot be undone."
-msgstr ""
-"Das Radio wird dauerhaft gelöscht und kann nicht wiederhergestellt werden."
+msgstr "Das Radio wird dauerhaft gelöscht und kann nicht wiederhergestellt werden."
 
-#: front/src/components/auth/SubsonicTokenForm.vue:50
+#: front/src/components/auth/SubsonicTokenForm.vue:55
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will completely disable access to the Subsonic API using from account."
+msgid "This will completely disable access to the Subsonic API using from account."
 msgstr "Der Zugriff zur Subsonic-API von diesem Konto wird deaktiviert."
 
-#: front/src/components/auth/SubsonicTokenForm.vue:35
-msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will log you out from existing devices that use the current password."
+#: front/src/components/manage/moderation/ReportCard.vue:359
+msgctxt "Content/Moderation/Popup,Paragraph"
+msgid "This will delete the object associated with this report and mark the report as resolved. The deletion is irreversible."
 msgstr ""
-"Du wirst von den vorhandenen Geräten abgemeldet, die dieses Passwort nutzen."
+
+#: front/src/components/auth/SubsonicTokenForm.vue:40
+msgctxt "Popup/Settings/Paragraph"
+msgid "This will log you out from existing devices that use the current password."
+msgstr "Du wirst von den vorhandenen Geräten abgemeldet, die dieses Passwort nutzen."
 
 #: front/src/components/auth/Settings.vue:253
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will permanently delete the application and all the associated tokens."
-msgstr ""
-"Die Wiedergabeliste wird dauerhaft gelöscht und kann nicht zurückerstellt "
-"werden."
+msgid "This will permanently delete the application and all the associated tokens."
+msgstr "Die Wiedergabeliste wird dauerhaft gelöscht und kann nicht zurückerstellt werden."
 
 #: front/src/components/auth/Settings.vue:194
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will prevent this application from accessing the service on your "
-"behalf."
+msgid "This will prevent this application from accessing the service on your behalf."
 msgstr ""
 
 #: front/src/components/playlists/Editor.vue:54
 msgctxt "Popup/Playlist/Paragraph"
 msgid "This will remove all tracks from this playlist and cannot be undone."
-msgstr ""
-"Damit werden alle Titel von der Playlist gelöscht. Das kann nicht rückgängig"
-" gemacht werden."
-
-#: front/src/views/admin/library/AlbumDetail.vue:99
-#: front/src/views/admin/library/TrackDetail.vue:98 src/edits.js:21
-#: src/edits.js:39
-msgctxt "*/*/*/Noun"
-msgid "Title"
-msgstr "Titel"
+msgstr "Damit werden alle Titel von der Playlist gelöscht. Das kann nicht rückgängig gemacht werden."
 
 #: front/src/components/audio/track/Table.vue:7
-#: front/src/views/content/libraries/FilesTable.vue:55
-msgctxt "Content/Track/*/Noun"
-msgid "Title"
-msgstr "Titel"
-
 #: front/src/components/manage/library/AlbumsTable.vue:39
 #: front/src/components/manage/library/TracksTable.vue:39
-msgctxt "*/*/*"
+#: front/src/views/admin/library/AlbumDetail.vue:105
+#: front/src/views/admin/library/TrackDetail.vue:104
+#: front/src/views/content/libraries/FilesTable.vue:55 src/edits.js:36
+#: front/src/edits.js:62
+msgctxt "*/*/*/Noun"
 msgid "Title"
 msgstr "Titel"
 
 #: front/src/components/SetInstanceModal.vue:16
 msgctxt "Popup/Instance/Paragraph"
-msgid ""
-"To continue, please select the Funkwhale instance you want to connect to. "
-"Enter the address directly, or select one of the suggested choices."
+msgid "To continue, please select the Funkwhale instance you want to connect to. Enter the address directly, or select one of the suggested choices."
+msgstr "Wähle bitte nun die Funkhwhale-Instanz aus, zu der Du dich verbinden möchtest. Gib die Adresse direkt an, oder wähle einen der Vorschläge aus."
+
+#: front/src/components/ShortcutsModal.vue:148
+#, fuzzy
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle favorite"
+msgstr "1 Favorit"
+
+#: front/src/components/ShortcutsModal.vue:132
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle mute"
 msgstr ""
-"Wähle bitte nun die Funkhwhale-Instanz aus, zu der Du dich verbinden "
-"möchtest. Gib die Adresse direkt an, oder wähle einen der Vorschläge aus."
 
-#: front/src/components/ShortcutsModal.vue:79
+#: front/src/components/ShortcutsModal.vue:136
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Toggle queue looping"
 msgstr "Warteschlangenwiederholung umschalten"
 
-#: front/src/views/admin/library/AlbumDetail.vue:222
-#: front/src/views/admin/library/ArtistDetail.vue:211
-#: front/src/views/admin/library/LibraryDetail.vue:200
-#: front/src/views/admin/library/TrackDetail.vue:274
-#: front/src/views/admin/moderation/AccountsDetail.vue:317
-#: front/src/views/admin/moderation/DomainsDetail.vue:225
+#: front/src/views/admin/library/AlbumDetail.vue:238
+#: front/src/views/admin/library/ArtistDetail.vue:226
+#: front/src/views/admin/library/LibraryDetail.vue:219
+#: front/src/views/admin/library/TrackDetail.vue:290
+#: front/src/views/admin/moderation/AccountsDetail.vue:329
+#: front/src/views/admin/moderation/DomainsDetail.vue:262
 msgctxt "Content/Moderation/Table.Label"
 msgid "Total size"
 msgstr "Gesamtvolumen"
@@ -4544,20 +4913,18 @@ msgctxt "Content/Library/Card.Help text"
 msgid "Total size of the files in this library"
 msgstr "Gesamtgröße der Dateien in dieser Mediathek"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:105
+#: front/src/views/admin/moderation/DomainsDetail.vue:142
 msgctxt "Content/*/*"
 msgid "Total users"
 msgstr "Gesamtanzahl der Nutzenden"
 
-#: front/src/views/admin/library/UploadDetail.vue:199
-msgctxt "*/*/*"
-msgid "Track"
-msgstr "Track"
-
-#: front/src/components/audio/SearchBar.vue:27
-#: front/src/components/library/TrackBase.vue:173
+#: front/src/components/audio/SearchBar.vue:34
+#: front/src/components/library/TrackBase.vue:188
 #: front/src/components/library/TrackDetail.vue:128
 #: front/src/components/metadata/Search.vue:138
+#: src/components/mixins/Report.vue:28
+#: front/src/views/admin/library/UploadDetail.vue:199
+#: front/src/components/mixins/Report.vue:29
 msgctxt "*/*/*/Noun"
 msgid "Track"
 msgstr "Track"
@@ -4567,7 +4934,7 @@ msgctxt "Content/Library/Card/Short"
 msgid "Track #%{ id } - %{ name }"
 msgstr ""
 
-#: front/src/views/admin/library/TrackDetail.vue:91
+#: front/src/views/admin/library/TrackDetail.vue:97
 msgctxt "Content/Moderation/Title"
 msgid "Track data"
 msgstr "Trackname"
@@ -4577,30 +4944,28 @@ msgctxt "Content/Track/Title/Noun"
 msgid "Track information"
 msgstr "Titelinformation"
 
-#: front/src/components/mixins/Translations.vue:50
-#: front/src/components/mixins/Translations.vue:51
+#: front/src/components/mixins/Translations.vue:60
+#: front/src/components/mixins/Translations.vue:61
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Track name"
 msgstr "Trackname"
 
-#: front/src/components/instance/Stats.vue:54
 #: front/src/components/library/AlbumDetail.vue:19
-#: front/src/components/playlists/PlaylistModal.vue:47
-#: front/src/views/admin/moderation/AccountsDetail.vue:362
-#: front/src/views/admin/moderation/DomainsDetail.vue:274
-#: front/src/views/content/Base.vue:8 src/views/content/libraries/Detail.vue:8
-#: front/src/views/playlists/Detail.vue:51 src/views/radios/Detail.vue:34
-msgctxt "*/*/*/Noun"
-msgid "Tracks"
-msgstr "Tracks"
-
+#: front/src/components/library/TagDetail.vue:36
 #: front/src/components/manage/library/AlbumsTable.vue:42
 #: front/src/components/manage/library/ArtistsTable.vue:42
-#: front/src/views/admin/library/AlbumDetail.vue:252
-#: front/src/views/admin/library/ArtistDetail.vue:251
+#: front/src/components/manage/library/TagsTable.vue:44
+#: front/src/components/playlists/PlaylistModal.vue:47
+#: front/src/views/admin/library/AlbumDetail.vue:268
+#: front/src/views/admin/library/ArtistDetail.vue:266
 #: front/src/views/admin/library/Base.vue:14
-#: front/src/views/admin/library/LibraryDetail.vue:229
+#: front/src/views/admin/library/LibraryDetail.vue:248
+#: front/src/views/admin/library/TagDetail.vue:143
 #: front/src/views/admin/library/TracksList.vue:24
+#: front/src/views/admin/moderation/AccountsDetail.vue:374
+#: front/src/views/admin/moderation/DomainsDetail.vue:311
+#: front/src/views/content/Base.vue:8 src/views/content/libraries/Detail.vue:8
+#: front/src/views/playlists/Detail.vue:76 src/views/radios/Detail.vue:34
 msgctxt "*/*/*"
 msgid "Tracks"
 msgstr "Tracks"
@@ -4610,79 +4975,64 @@ msgctxt "Content/Artist/Title"
 msgid "Tracks by this artist"
 msgstr "Titel von diesem Künstler oder Künstlerin"
 
-#: front/src/components/instance/Stats.vue:25
-msgctxt "Content/About/Paragraph/Unit"
-msgid "Tracks favorited"
-msgstr "Tracks in den Favoriten"
-
-#: front/src/components/instance/Stats.vue:19
-msgctxt "Content/About/Paragraph/Unit"
-msgid "tracks listened"
-msgstr "Angehörte Tracks"
-
 #: front/src/components/library/radios/Filter.vue:44
 msgctxt "Popup/Radio/Title/Noun"
 msgid "Tracks matching filter"
 msgstr "Titel Auswahl Filter"
 
 #: front/src/components/library/TrackDetail.vue:57
+#: front/src/components/manage/moderation/ReportCard.vue:134
 #: front/src/views/admin/library/UploadDetail.vue:250
+#: front/src/views/admin/moderation/AccountsDetail.vue:181
 msgctxt "Content/Track/Table.Label/Noun"
 msgid "Type"
 msgstr "Typ"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:180
-msgctxt "Content/Moderation/Table.Label/Noun"
-msgid "Type"
-msgstr "Typ"
-
 #: front/src/components/manage/moderation/AccountsTable.vue:44
-#: front/src/components/manage/moderation/DomainsTable.vue:42
+#: front/src/components/manage/moderation/DomainsTable.vue:50
 msgctxt "Content/Moderation/Table.Label/Short"
 msgid "Under moderation rule"
 msgstr "Unterliegt einer Moderationsregel"
 
-#: front/src/views/content/remote/Card.vue:109
-#: src/views/content/remote/Card.vue:114
+#: front/src/components/ShortcutsModal.vue:68
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Unfocus searchbar"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:122
+#: src/views/content/remote/Card.vue:127
 msgctxt "*/Library/Button.Label/Verb"
 msgid "Unfollow"
 msgstr "Abonnement beenden"
 
-#: front/src/views/content/remote/Card.vue:110
+#: front/src/views/content/remote/Card.vue:123
 msgctxt "Popup/Library/Title"
 msgid "Unfollow this library?"
 msgstr "Das Abonnement an dieser Mediathek beenden?"
 
-#: front/src/components/About.vue:17
-msgctxt "Content/About/Paragraph"
-msgid ""
-"Unfortunately, the owners of this instance did not yet take the time to "
-"complete this page."
-msgstr ""
-"Leider haben die Eintümer dieser Instanz diese Seite noch nicht fertig "
-"gestellt."
-
 #: front/src/components/federation/FetchButton.vue:54
 #: front/src/components/federation/FetchButton.vue:55
-msgctxt "*/*/Error"
-msgid "Unknowkn error"
-msgstr ""
-
 #: front/src/components/library/ImportStatusModal.vue:144
-msgctxt "Popup/Import/Error.Label"
-msgid "Unkwown error"
+msgctxt "*/*/Error"
+msgid "Unknown error"
 msgstr ""
 
-#: front/src/components/Home.vue:37
-msgctxt "Content/Home/Title"
-msgid "Unlimited music"
-msgstr "Unbegrenzt Musik anhören"
-
-#: front/src/components/audio/Player.vue:630
+#: front/src/components/audio/Player.vue:656
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Unmute"
 msgstr "Stummschaltung aufheben"
 
+#: front/src/components/manage/moderation/ReportCard.vue:225
+msgctxt "Content/*/Button.Label"
+msgid "Unresolve"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:67
+#: front/src/views/admin/moderation/ReportsList.vue:23
+msgctxt "Content/*/*/Short"
+msgid "Unresolved"
+msgstr ""
+
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:57
 msgctxt "Content/Moderation/Card.Button.Label/Verb"
 msgid "Update"
@@ -4746,12 +5096,8 @@ msgstr "Hochladedatum"
 
 #: front/src/components/library/FileUpload.vue:258
 msgctxt "Content/Library/Help text"
-msgid ""
-"Upload denied, ensure the file is not too big and that you have not reached "
-"your quota"
-msgstr ""
-"Hochladen abgelehnt. Bitte prüfe, dass die Datei nicht zu groß ist, und dass"
-" du noch über genügenden Speicherplatz verfügst"
+msgid "Upload denied, ensure the file is not too big and that you have not reached your quota"
+msgstr "Hochladen abgelehnt. Bitte prüfe, dass die Datei nicht zu groß ist, und dass du noch über genügenden Speicherplatz verfügst"
 
 #: front/src/components/library/ImportStatusModal.vue:8
 msgctxt "Popup/Import/Message"
@@ -4760,20 +5106,18 @@ msgstr ""
 
 #: front/src/views/content/Home.vue:7
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Upload music files (MP3, OGG, FLAC, etc.) from your personal library "
-"directly from your browser to enjoy them here."
-msgstr ""
-"Lade Musikdatei (MP3, OGG, Flac, usw.) von deiner eigenen Mediathek direkt "
-"im Browser hoch, und höre sie hier an."
+msgid "Upload music files (MP3, OGG, FLAC, etc.) from your personal library directly from your browser to enjoy them here."
+msgstr "Lade Musikdatei (MP3, OGG, Flac, usw.) von deiner eigenen Mediathek direkt im Browser hoch, und höre sie hier an."
 
 #: front/src/components/library/FileUpload.vue:30
 msgctxt "Content/Library/Title/Verb"
 msgid "Upload new tracks"
 msgstr "Neue Tracks hochladen"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:298
-msgctxt "Content/Moderation/Table.Label/Noun"
+#: front/src/components/About.vue:99
+#: front/src/views/admin/moderation/AccountsDetail.vue:309
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Upload quota"
 msgstr "Speichervolumen"
 
@@ -4784,9 +5128,7 @@ msgstr "Hochladezeit abgelaufen. Bitte versuche es erneut"
 
 #: front/src/components/library/ImportStatusModal.vue:14
 msgctxt "Popup/Import/Message"
-msgid ""
-"Upload was skipped because a similar one is already available in one of your"
-" libraries."
+msgid "Upload was skipped because a similar one is already available in one of your libraries."
 msgstr ""
 
 #: front/src/components/library/ImportStatusModal.vue:11
@@ -4809,35 +5151,25 @@ msgctxt "Content/Library/Table"
 msgid "Uploading…"
 msgstr "Hochladen läuft…"
 
+#: front/src/components/manage/library/LibrariesTable.vue:52
+#: front/src/components/manage/moderation/AccountsTable.vue:41
+#: front/src/components/mixins/Translations.vue:75
+#: front/src/views/admin/library/AlbumDetail.vue:258
+#: front/src/views/admin/library/ArtistDetail.vue:246
 #: front/src/views/admin/library/Base.vue:20
+#: front/src/views/admin/library/LibraryDetail.vue:258
+#: front/src/views/admin/library/TrackDetail.vue:310
 #: front/src/views/admin/library/UploadsList.vue:24
+#: front/src/views/admin/moderation/AccountsDetail.vue:349
+#: front/src/views/admin/moderation/DomainsDetail.vue:281
+#: front/src/components/mixins/Translations.vue:76
 msgctxt "*/*/*"
 msgid "Uploads"
 msgstr "Hochladen"
 
-#: front/src/components/manage/moderation/AccountsTable.vue:41
-#: front/src/components/mixins/Translations.vue:63
-#: front/src/views/admin/library/AlbumDetail.vue:242
-#: front/src/views/admin/library/ArtistDetail.vue:231
-#: front/src/views/admin/library/LibraryDetail.vue:239
-#: front/src/views/admin/library/TrackDetail.vue:294
-#: front/src/views/admin/moderation/AccountsDetail.vue:337
-#: front/src/views/admin/moderation/DomainsDetail.vue:244
-#: front/src/components/mixins/Translations.vue:64
-msgctxt "Content/Moderation/Table.Label/Noun"
-msgid "Uploads"
-msgstr "Hochladen"
-
-#: front/src/components/manage/library/LibrariesTable.vue:52
-msgctxt "Content/*/*/Noun"
-msgid "Uploads"
-msgstr "Hochladen"
-
 #: front/src/components/auth/ApplicationForm.vue:16
 msgctxt "Content/Applications/Help Text"
-msgid ""
-"Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is "
-"not served on the web."
+msgid "Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is not served on the web."
 msgstr ""
 
 #: front/src/components/Footer.vue:16
@@ -4845,39 +5177,57 @@ msgctxt "Footer/*/List item.Link"
 msgid "Use another instance"
 msgstr "Eine andere Instanz benutzen"
 
+#: front/src/components/Home.vue:146
+msgctxt "Content/Home/Link"
+msgid "Use Funkwhale on other devices with our apps"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:44
+msgctxt "*/*/Field,Help"
+msgid "Use this field to provide additional context to the moderator that will handle your report."
+msgstr ""
+
 #: front/src/views/auth/PasswordReset.vue:12
 msgctxt "Content/Signup/Paragraph"
-msgid ""
-"Use this form to request a password reset. We will send an email to the "
-"given address with instructions to reset your password."
+msgid "Use this form to request a password reset. We will send an email to the given address with instructions to reset your password."
+msgstr "Mit diesem Formular kannst du ein neues Kennwort beantragen. In Kürze erhältst du von uns eine Nachricht an die angegebene E-Mail-Adresse mit den Anleitungen."
+
+#: front/src/components/moderation/ReportModal.vue:18
+msgctxt "*/Moderation/Popup,Paragraph"
+msgid "Use this form to submit a report to our moderation team."
 msgstr ""
-"Mit diesem Formular kannst du ein neues Kennwort beantragen. In Kürze "
-"erhältst du von uns eine Nachricht an die angegebene E-Mail-Adresse mit den "
-"Anleitungen."
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:111
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Use this setting to temporarily enable/disable the policy without completely"
-" removing it."
-msgstr ""
-"Mit dieser Einstellung kannst du die Moderationsregel temporär umschalten, "
-"ohne sie zu löschen."
+msgid "Use this setting to temporarily enable/disable the policy without completely removing it."
+msgstr "Mit dieser Einstellung kannst du die Moderationsregel temporär umschalten, ohne sie zu löschen."
 
 #: front/src/components/manage/users/InvitationsTable.vue:49
 msgctxt "Content/Admin/Table"
 msgid "Used"
 msgstr "Verwendet"
 
+#: front/src/components/Home.vue:125
+msgctxt "Content/Home/Header"
+msgid "Useful links"
+msgstr ""
+
 #: front/src/views/content/libraries/Detail.vue:26
 msgctxt "Content/Library/Table.Label"
 msgid "User"
 msgstr "Benutzer"
 
-#: front/src/components/instance/Stats.vue:5
-msgctxt "Content/About/Title/Noun"
-msgid "User activity"
-msgstr "Aktivität der Nutzenden"
+#: front/src/components/Home.vue:154
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "User guides"
+msgstr "Mediatheken der Nutzenden"
+
+#: front/src/views/admin/Settings.vue:88
+#, fuzzy
+msgctxt "Content/Admin/Menu"
+msgid "User Interface"
+msgstr "Benutzername"
 
 #: front/src/components/library/AlbumDetail.vue:26
 #: front/src/components/library/ArtistDetail.vue:39
@@ -4891,35 +5241,35 @@ msgctxt "Content/Radio/Title"
 msgid "User radios"
 msgstr "Radios der Nutzenden"
 
-#: front/src/components/auth/Signup.vue:19
+#: front/src/components/auth/SignupForm.vue:15
 #: front/src/components/manage/users/UsersTable.vue:37
-#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:71
 #: front/src/views/admin/moderation/AccountsDetail.vue:114
-#: front/src/components/mixins/Translations.vue:60
+#: front/src/components/mixins/Translations.vue:72
 msgctxt "Content/*/*"
 msgid "Username"
 msgstr "Benutzername"
 
-#: front/src/components/auth/Login.vue:15
+#: front/src/components/auth/LoginForm.vue:11
 msgctxt "Content/Login/Input.Label/Noun"
 msgid "Username or email"
 msgstr "Benutzername oder E-Mail-Adresse"
 
-#: front/src/components/instance/Stats.vue:13
-msgctxt "Content/About/Paragraph/Unit"
-msgid "users"
-msgstr "Nutzende"
-
-#: front/src/components/Sidebar.vue:102
-#: front/src/components/manage/moderation/DomainsTable.vue:39
-#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/Sidebar.vue:106
+#: front/src/components/manage/moderation/DomainsTable.vue:47
+#: front/src/components/mixins/Translations.vue:73
 #: src/views/admin/Settings.vue:81 front/src/views/admin/users/Base.vue:5
 #: src/views/admin/users/UsersList.vue:21
-#: front/src/components/mixins/Translations.vue:62
+#: front/src/components/mixins/Translations.vue:74
 msgctxt "*/*/*/Noun"
 msgid "Users"
 msgstr "Nutzende"
 
+#: front/src/components/Home.vue:110
+msgctxt "Content/Home/Paragraph"
+msgid "Users on this pod also get %{ quota } of free storage to upload their own content!"
+msgstr ""
+
 #: front/src/components/Footer.vue:29
 msgctxt "Footer/*/Title"
 msgid "Using Funkwhale"
@@ -4937,45 +5287,60 @@ msgctxt "Content/Library/Link/Verb"
 msgid "View files"
 msgstr "Dateien ansehen"
 
-#: front/src/components/library/AlbumBase.vue:81
-#: front/src/components/library/ArtistBase.vue:92
-#: front/src/components/library/TrackBase.vue:100
-#: front/src/views/admin/library/AlbumDetail.vue:42
-#: front/src/views/admin/library/ArtistDetail.vue:41
+#: front/src/components/library/AlbumBase.vue:95
+#: front/src/components/library/ArtistBase.vue:107
+#: front/src/components/library/TrackBase.vue:111
+#: front/src/views/admin/library/AlbumDetail.vue:48
+#: front/src/views/admin/library/ArtistDetail.vue:46
 #: front/src/views/admin/library/LibraryDetail.vue:34
 #: front/src/views/admin/library/LibraryDetail.vue:45
-#: front/src/views/admin/library/TrackDetail.vue:41
+#: front/src/views/admin/library/TagDetail.vue:32
+#: front/src/views/admin/library/TrackDetail.vue:47
 #: front/src/views/admin/library/UploadDetail.vue:35
 #: front/src/views/admin/library/UploadDetail.vue:46
 #: front/src/views/admin/moderation/AccountsDetail.vue:37
 #: front/src/views/admin/moderation/AccountsDetail.vue:45
+#: front/src/views/admin/moderation/DomainsDetail.vue:30
 msgctxt "Content/Moderation/Link/Verb"
 msgid "View in Django's admin"
 msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:61
-#: front/src/components/library/ArtistBase.vue:72
-#: front/src/components/library/TrackBase.vue:80
+#: front/src/components/Home.vue:169
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "View more…"
+msgstr "Abonnenten werden geladen…"
+
+#: front/src/components/library/AlbumBase.vue:62
+#: front/src/components/library/ArtistBase.vue:73
+#: front/src/components/library/TrackBase.vue:78
 #: front/src/components/metadata/ArtistCard.vue:49
 #: front/src/components/metadata/ReleaseCard.vue:53
 msgctxt "Content/*/*/Clickable, Verb"
 msgid "View on MusicBrainz"
 msgstr "Auf MusicBrainz ansehen"
 
+#: front/src/components/manage/moderation/ReportCard.vue:124
+msgctxt "Content/Moderation/Link"
+msgid "View public page"
+msgstr ""
+
 #: front/src/components/manage/library/LibrariesTable.vue:11
 #: front/src/components/manage/library/LibrariesTable.vue:51
 #: front/src/components/manage/library/UploadsTable.vue:11
 #: front/src/components/manage/library/UploadsTable.vue:63
 #: front/src/views/admin/library/LibraryDetail.vue:94
 #: front/src/views/admin/library/UploadDetail.vue:101
+#: front/src/views/content/libraries/Form.vue:18
 msgctxt "*/*/*"
 msgid "Visibility"
 msgstr "Sichtbarkeit"
 
-#: front/src/views/content/libraries/Form.vue:18
-msgctxt "Content/Library/Dropdown.Label"
-msgid "Visibility"
-msgstr "Sichtbarkeit"
+#: front/src/components/Home.vue:91
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Visit funkwhale.audio"
+msgstr "Funwhale nutzen"
 
 #: front/src/components/library/AlbumDetail.vue:4
 msgctxt "Content/Album/"
@@ -4987,7 +5352,13 @@ msgctxt "Popup/*/Loading.Title"
 msgid "Waiting for result…"
 msgstr "Deine Favoriten werden geladen…"
 
-#: front/src/components/auth/Login.vue:7
+#: front/src/components/auth/Settings.vue:285
+#, fuzzy
+msgctxt "Content/Settings/Error message.Title"
+msgid "We cannot delete your account"
+msgstr "Wir können dich nicht einloggen"
+
+#: front/src/components/auth/LoginForm.vue:3
 msgctxt "Content/Login/Error message.Title"
 msgid "We cannot log you in"
 msgstr "Wir können dich nicht einloggen"
@@ -4997,42 +5368,37 @@ msgctxt "Content/*/Error message.Title"
 msgid "We cannot save your changes"
 msgstr "Dein Konto kann nicht erstellt werden"
 
-#: front/src/components/Home.vue:122
-msgctxt "Content/Home/List item"
-msgid "We do not track you or bother you with ads"
-msgstr "Weder verfolgen wir dich noch stören wir dich mit Werbung"
+#: front/src/views/Notifications.vue:39
+msgctxt "Content/Notifications/Paragraph"
+msgid "We noticed you've been here for a while. If Funkwhale is useful to you, we could use your help to make it even better!"
+msgstr ""
 
 #: front/src/components/library/FileUpload.vue:39
 msgctxt "Content/Library/Link"
 msgid "We recommend using Picard for that purpose."
 msgstr "Zu diesem Zweck wird Picard empfohlen."
 
-#: front/src/components/Home.vue:7
-msgctxt "Content/Home/Title"
-msgid "We think listening to music should be simple."
-msgstr "Wir denken, Musik hören sollte möglichst einfach sein."
+#: front/src/components/moderation/ReportModal.vue:35
+msgctxt "*/*/Field,Help"
+msgid "We'll use this email if we need to contact you regarding this report."
+msgstr ""
 
-#: front/src/components/Home.vue:148
+#: front/src/components/Home.vue:207
 msgctxt "Head/Home/Title"
 msgid "Welcome"
 msgstr "Willkommen"
 
 #: front/src/components/Home.vue:5
-msgctxt "Content/Home/Title/Verb"
-msgid "Welcome on Funkwhale"
-msgstr "Willkommen auf Funkwhale"
-
-#: front/src/components/Home.vue:24
-msgctxt "Content/Home/Title"
-msgid "Why funkwhale?"
-msgstr "Warum Funkwhale?"
+msgctxt "Content/Home/Header"
+msgid "Welcome to %{ podName }!"
+msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:13
+#: front/src/components/audio/EmbedWizard.vue:23
 msgctxt "Popup/Embed/Input.Label"
 msgid "Widget height"
 msgstr "Grafikobjektshöhe"
 
-#: front/src/components/audio/EmbedWizard.vue:6
+#: front/src/components/audio/EmbedWizard.vue:16
 msgctxt "Popup/Embed/Input.Label"
 msgid "Widget width"
 msgstr "Grafikobjektsbreite"
@@ -5052,9 +5418,11 @@ msgctxt "Content/OAuth Scopes/Help Text"
 msgid "Write-only access to user data"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:129
+#: front/src/components/Sidebar.vue:133
 #: front/src/components/manage/moderation/AccountsTable.vue:72
-#: front/src/components/manage/moderation/DomainsTable.vue:58
+#: front/src/components/manage/moderation/DomainsTable.vue:12
+#: front/src/components/manage/moderation/DomainsTable.vue:69
+#: front/src/views/admin/moderation/DomainsDetail.vue:109
 msgctxt "*/*/*"
 msgid "Yes"
 msgstr "Ja"
@@ -5066,28 +5434,17 @@ msgstr "Ja, logge mich aus!"
 
 #: front/src/views/content/libraries/Form.vue:19
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You are able to share your library with other people, regardless of its "
-"visibility."
-msgstr ""
-"Du kannst deine Mediathek mit Anderen teilen, auch wenn sie privat ist."
+msgid "You are able to share your library with other people, regardless of its visibility."
+msgstr "Du kannst deine Mediathek mit Anderen teilen, auch wenn sie privat ist."
 
 #: front/src/components/library/FileUpload.vue:32
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You are about to upload music to your library. Before proceeding, please "
-"ensure that:"
-msgstr ""
-"Die Musik wird bald zu deiner Mediathek hochgeladen. Prüfe bitte vorab, "
-"dass:"
+msgid "You are about to upload music to your library. Before proceeding, please ensure that:"
+msgstr "Die Musik wird bald zu deiner Mediathek hochgeladen. Prüfe bitte vorab, dass:"
 
 #: front/src/components/SetInstanceModal.vue:12
 msgctxt "Popup/Login/Paragraph"
-msgid ""
-"You are currently connected to <a href=\"%{ url }\" target=\"_blank\">%{ "
-"hostname }&nbsp;<i class=\"external icon\"/></a>. If you continue, you will "
-"be disconnected from your current instance and all your local data will be "
-"deleted."
+msgid "You are currently connected to <a href=\"%{ url }\" target=\"_blank\">%{ hostname }&nbsp;<i class=\"external icon\"/></a>. If you continue, you will be disconnected from your current instance and all your local data will be deleted."
 msgstr ""
 
 #: front/src/components/library/ArtistDetail.vue:6
@@ -5102,12 +5459,8 @@ msgstr "Du bist als %{ username } angemeldet"
 
 #: front/src/components/library/FileUpload.vue:35
 msgctxt "Content/Library/List item"
-msgid ""
-"You are not uploading copyrighted content in a public library, otherwise you"
-" may be infringing the law"
-msgstr ""
-"Die lädst kein urheberrechtlich geschütztes Material in eine öffentliche "
-"Mediathek hoch. Wenn doch, missachtest Du das Gesetz"
+msgid "You are not uploading copyrighted content in a public library, otherwise you may be infringing the law"
+msgstr "Die lädst kein urheberrechtlich geschütztes Material in eine öffentliche Mediathek hoch. Wenn doch, missachtest Du das Gesetz"
 
 #: front/src/components/SetInstanceModal.vue:98
 msgctxt "*/Instance/Message"
@@ -5115,30 +5468,14 @@ msgid "You are now using the Funkwhale instance at %{ url }"
 msgstr ""
 
 #: front/src/views/content/Home.vue:17
+#, fuzzy
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You can follow libraries from other users to get access to new music. Public"
-" libraries can be followed immediatly, while following a private library "
-"requires approval from its owner."
-msgstr ""
-"Folge Mediatheken von anderen Hörern, um auf neue Musik zu stoßen. "
-"Öffentlichen Mediatheken kann sofort gefolgt werden, wohingegen geschlossene"
-" Mediatheken die Erlaubnis von ihrem Eigentümer / von ihrer Eigentümerin "
-"bedürfen."
-
-#: front/src/components/Home.vue:128
-msgctxt "Content/Home/List item"
-msgid ""
-"You can invite friends and family to your instance so they can enjoy your "
-"music"
-msgstr ""
-"Du kannst Freunde und Deine Familie auf Deine eigene Instanz einladen, "
-"sodass sie Deine Musik genießen können"
+msgid "You can follow libraries from other users to get access to new music. Public libraries can be followed immediately, while following a private library requires approval from its owner."
+msgstr "Folge Mediatheken von anderen Hörern, um auf neue Musik zu stoßen. Öffentlichen Mediatheken kann sofort gefolgt werden, wohingegen geschlossene Mediatheken die Erlaubnis von ihrem Eigentümer / von ihrer Eigentümerin bedürfen."
 
 #: front/src/components/moderation/FilterModal.vue:31
 msgctxt "Popup/Moderation/Paragraph"
-msgid ""
-"You can manage and update your filters anytime from your account settings."
+msgid "You can manage and update your filters any time from your account settings."
 msgstr ""
 
 #: front/src/views/auth/EmailConfirm.vue:24
@@ -5146,23 +5483,20 @@ msgctxt "Content/Signup/Paragraph"
 msgid "You can now use the service without limitations."
 msgstr "Du kannst jetzt den Service unbegrenzt nutzen."
 
+#: front/src/components/auth/Settings.vue:278
+msgctxt "Content/Settings/Paragraph'"
+msgid "You can permanently and irreversibly delete your account and all the associated data using the form below. You will be asked for confirmation."
+msgstr ""
+
 #: front/src/components/library/radios/Builder.vue:7
 msgctxt "Content/Radio/Paragraph"
-msgid ""
-"You can use this interface to build your own custom radio, which will play "
-"tracks according to your criteria."
-msgstr ""
-"Dank dieser Schnittstelle kannst du dein eigenes Radio aufbauen, das die "
-"entsprechenden Tracks abspielt."
+msgid "You can use this interface to build your own custom radio, which will play tracks according to your criteria."
+msgstr "Dank dieser Schnittstelle kannst du dein eigenes Radio aufbauen, das die entsprechenden Tracks abspielt."
 
 #: front/src/components/auth/SubsonicTokenForm.vue:7
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"You can use those to enjoy your playlist and music in offline mode, on your "
-"smartphone or tablet, for instance."
-msgstr ""
-"Damit kannst du deine Wiedergabelisten und Musik offline genießen, zum "
-"Beispiel auf deinem Smartphone bzw. Tablett."
+msgid "You can use those to enjoy your playlist and music in offline mode, on your smartphone or tablet, for instance."
+msgstr "Damit kannst du deine Wiedergabelisten und Musik offline genießen, zum Beispiel auf deinem Smartphone bzw. Tablett."
 
 #: front/src/components/auth/Settings.vue:202
 msgctxt "Content/Applications/Paragraph"
@@ -5179,19 +5513,17 @@ msgctxt "Content/Moderation/Card.Title"
 msgid "You don't have any rule in place for this account."
 msgstr "Du hast keine Moderationsregeln in Kraft für dieses Konto."
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:39
+#: front/src/views/admin/moderation/DomainsDetail.vue:67
 msgctxt "Content/Moderation/Card.Title"
 msgid "You don't have any rule in place for this domain."
 msgstr "Du hast keine Moderationsregeln in Kraft für diese Domain."
 
 #: front/src/components/library/EditForm.vue:52
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You don't have the permission to edit this object, but you can suggest "
-"changes. Once submitted, suggestions will be reviewed before approval."
+msgid "You don't have the permission to edit this object, but you can suggest changes. Once submitted, suggestions will be reviewed before approval."
 msgstr ""
 
-#: front/src/components/Sidebar.vue:171
+#: front/src/components/Sidebar.vue:175
 msgctxt "Sidebar/Player/Title"
 msgid "You have a radio playing"
 msgstr "Du hörst gerade ein Radio an"
@@ -5203,11 +5535,8 @@ msgstr "Du kannst Verbindungsproblemen erfahren."
 
 #: front/src/components/auth/Settings.vue:100
 msgctxt "Popup/Settings/List item"
-msgid ""
-"You will be logged out from this session and have to log in with the new one"
-msgstr ""
-"Du wirst von dieser Sitzung ausgeloggt und du musst dich mit deinem neuen "
-"Kennwort einloggen"
+msgid "You will be logged out from this session and have to log in with the new one"
+msgstr "Du wirst von dieser Sitzung ausgeloggt und du musst dich mit deinem neuen Kennwort einloggen"
 
 #: front/src/components/auth/Authorize.vue:51
 msgctxt "Content/Auth/Paragraph"
@@ -5221,25 +5550,24 @@ msgstr ""
 
 #: front/src/components/auth/Settings.vue:71
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"You will have to update your password on your clients that use this "
-"password."
-msgstr ""
-"Du musst dann das Kennwort auf allen Deiner verbundenen Geräte "
-"aktualisieren."
+msgid "You will have to update your password on your clients that use this password."
+msgstr "Du musst dann das Kennwort auf allen Deiner verbundenen Geräte aktualisieren."
 
 #: front/src/components/moderation/FilterModal.vue:20
 msgctxt "Popup/Moderation/Paragraph"
-msgid ""
-"You will not see tracks, albums and user activity linked to this artist "
-"anymore:"
+msgid "You will not see tracks, albums and user activity linked to this artist any more:"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:13
+#: front/src/components/auth/SignupForm.vue:9
 msgctxt "Content/Signup/Form/Paragraph"
 msgid "Your account cannot be created."
 msgstr "Dein Avatar kann nicht gespeichert werden"
 
+#: front/src/components/auth/Settings.vue:281
+msgctxt "Content/Settings/Paragraph'"
+msgid "Your account will be deleted from our servers within a few minutes. We will also notify other servers who may have a copy of some of your data so they can proceed to deletion. Please note that some of these servers may be offline or unwilling to comply though."
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:215
 msgctxt "Content/Settings/Title/Noun"
 msgid "Your applications"
@@ -5250,6 +5578,11 @@ msgctxt "Content/Settings/Error message.Title"
 msgid "Your avatar cannot be saved"
 msgstr "Dein Avatar kann nicht gespeichert werden"
 
+#: front/src/components/auth/Settings.vue:527
+msgctxt "*/Auth/Message"
+msgid "Your deletion request was submitted, your account and content will be deleted shortly"
+msgstr ""
+
 #: front/src/components/library/EditForm.vue:3
 msgctxt "Content/Library/Paragraph"
 msgid "Your edit was successfully submitted."
@@ -5260,12 +5593,13 @@ msgctxt "Head/Favorites/Title"
 msgid "Your Favorites"
 msgstr "Deine Favoriten"
 
-#: front/src/components/Home.vue:109
-msgctxt "Content/Home/Title"
-msgid "Your music, your way"
-msgstr "Deine Musik, so wie du willst"
+#: front/src/views/Notifications.vue:5
+#, fuzzy
+msgctxt "Content/Notifications/Title"
+msgid "Your messages"
+msgstr "Verschickte Nachrichten"
 
-#: front/src/views/Notifications.vue:4
+#: front/src/views/Notifications.vue:69
 msgctxt "Content/Notifications/Title"
 msgid "Your notifications"
 msgstr "Deine Benachrichtigungen"
@@ -5281,43 +5615,41 @@ msgid "Your password has been updated successfully."
 msgstr "Dein Kennwort wurde erfolgreich aktualisiert."
 
 #: front/src/components/auth/Settings.vue:14
+#, fuzzy
 msgctxt "Content/Settings/Error message.Title"
-msgid "Your settings can't be updateds"
+msgid "Your settings can't be updated"
 msgstr "Einstellungen konnten nicht aktualisiert werden"
 
 #: front/src/components/auth/Settings.vue:101
 msgctxt "Popup/Settings/List item"
-msgid ""
-"Your Subsonic password will be changed to a new, random one, logging you out"
-" from devices that used the old Subsonic password"
-msgstr ""
-"Dein Subsonic-Kennwort wird mit einem neuen zufälligen Kennwort ersetzt. Du "
-"wirst auf allen aktuell verbundenen Geräten ausgeloggt, die noch das alte "
-"Kennwort nutzen"
+msgid "Your Subsonic password will be changed to a new, random one, logging you out from devices that used the old Subsonic password"
+msgstr "Dein Subsonic-Kennwort wird mit einem neuen zufälligen Kennwort ersetzt. Du wirst auf allen aktuell verbundenen Geräten ausgeloggt, die noch das alte Kennwort nutzen"
 
-#: front/src/edits.js:47
-msgctxt "*/*/*/Short, Noun"
-msgid "Position"
-msgstr "Seitennummerierung"
+#: front/src/entities.js:126
+#, fuzzy
+msgctxt "*/*/*/Noun"
+msgid "MusicBrainz ID"
+msgstr "Auf MusicBrainz ansehen"
 
-#: front/src/edits.js:54
-msgctxt "Content/Track/*/Noun"
-msgid "Copyright"
-msgstr "Urheberrecht"
+#: front/src/main.js:110
+msgctxt "*/Error/Paragraph"
+msgid "You sent too many requests and have been rate limited, please try again in %{ delay }"
+msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:183
+#: front/src/main.js:113
+msgctxt "*/Error/Paragraph"
+msgid "You sent too many requests and have been rate limited, please try again later"
+msgstr ""
+
+#: front/src/components/library/AlbumBase.vue:208
 #, fuzzy
 msgctxt "Content/Album/Header.Title"
-msgid ""
-"Album containing %{ count } track, by <a class=\"internal\" href=\"%{ "
-"artistUrl }\">%{ artist }</a>"
-msgid_plural ""
-"Album containing %{ count } tracks, by <a class=\"internal\" href=\"%{ "
-"artistUrl }\">%{ artist }</a>"
+msgid "Album containing %{ count } track, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgid_plural "Album containing %{ count } tracks, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
 msgstr[0] "Album mit %{ count } Track, von %{ artist }"
 msgstr[1] "Album mit %{ count } Tracks, von %{ artist }"
 
-#: front/src/components/audio/PlayButton.vue:220
+#: front/src/components/audio/PlayButton.vue:246
 msgctxt "*/Queue/Message"
 msgid "%{ count } track was added to your queue"
 msgid_plural "%{ count } tracks were added to your queue"
diff --git a/front/locales/en_GB/LC_MESSAGES/app.po b/front/locales/en_GB/LC_MESSAGES/app.po
index 0300026f43472ca639c7546acb08af968ca335d8..97ce6731c36b06443439c2de1521396ef569afb1 100644
--- a/front/locales/en_GB/LC_MESSAGES/app.po
+++ b/front/locales/en_GB/LC_MESSAGES/app.po
@@ -1,2988 +1,5560 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# English translations for front package.
+# Copyright (C) 2019 THE front'S COPYRIGHT HOLDER
 # This file is distributed under the same license as the front package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+# Automatically generated, 2019.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: front 0.1.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-01-29 10:47+0100\n"
-"PO-Revision-Date: 2019-03-07 12:44+0000\n"
-"Last-Translator: gerry_the_hat <gerd-schumann@web.de>\n"
+"POT-Creation-Date: 2019-10-01 15:15+0200\n"
+"PO-Revision-Date: 2019-10-03 17:13+0000\n"
+"Last-Translator: Ciarán Ainsworth <ciaranainsworth@posteo.net>\n"
 "Language-Team: none\n"
 "Language: en_GB\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.2.2\n"
+"X-Generator: Weblate 3.7\n"
 
 #: front/src/components/playlists/PlaylistModal.vue:9
+msgctxt "Popup/Playlist/Paragraph"
 msgid "\"%{ title }\", by %{ artist }"
 msgstr "\"%{ title }\", by %{ artist }"
 
 #: front/src/components/Sidebar.vue:24
+msgctxt "Sidebar/Queue/Tab.Title"
 msgid "(%{ index } of %{ length })"
 msgstr "(%{ index } of %{ length })"
 
 #: front/src/components/Sidebar.vue:22
+msgctxt "Sidebar/Queue/Tab.Title"
 msgid "(empty)"
 msgstr "(empty)"
 
-#: front/src/components/common/ActionTable.vue:57
-#: front/src/components/common/ActionTable.vue:66
+#: front/src/components/auth/Authorize.vue:16
+msgctxt "Content/Auth/Title"
+msgid "%{ app } wants to access your Funkwhale account"
+msgstr "%{ app } wants to access your Funkwhale account"
+
+#: front/src/components/About.vue:173 src/components/Home.vue:56
+msgctxt "Content/Home/Stat"
+msgid "%{ count } active user"
+msgid_plural "%{ count } active users"
+msgstr[0] "%{ count } active user"
+msgstr[1] "%{ count } active users"
+
+#: front/src/components/About.vue:182
+msgctxt "Content/Home/Stat"
+msgid "%{ count } albums"
+msgid_plural "%{ count } albums"
+msgstr[0] "%{ count } albums"
+msgstr[1] "%{ count } albums"
+
+#: front/src/components/About.vue:152
+msgctxt "*/*/*"
+msgid "%{ count } allowed domains"
+msgid_plural "%{ count } allowed domains"
+msgstr[0] "%{ count } allowed domains"
+msgstr[1] "%{ count } allowed domains"
+
+#: front/src/components/About.vue:179
+msgctxt "Content/Home/Stat"
+msgid "%{ count } artists"
+msgid_plural "%{ count } artists"
+msgstr[0] "%{ count } artists"
+msgstr[1] "%{ count } artists"
+
+#: front/src/components/About.vue:176 src/components/Home.vue:59
+msgctxt "Content/Home/Stat"
+msgid "%{ count } hour of music"
+msgid_plural "%{ count } hours of music"
+msgstr[0] "%{ count } hour of music"
+msgstr[1] "%{ count } hours of music"
+
+#: front/src/components/About.vue:188
+msgctxt "Content/Home/Stat"
+msgid "%{ count } listenings"
+msgid_plural "%{ count } listenings"
+msgstr[0] "%{ count } listenings"
+msgstr[1] "%{ count } listenings"
+
+#: front/src/components/common/ActionTable.vue:68
+msgctxt "Content/*/Paragraph"
 msgid "%{ count } on %{ total } selected"
 msgid_plural "%{ count } on %{ total } selected"
 msgstr[0] "%{ count } on %{ total } selected"
 msgstr[1] "%{ count } on %{ total } selected"
 
-#: front/src/components/Sidebar.vue:110 src/components/audio/album/Card.vue:54
-#: front/src/views/content/libraries/Card.vue:39 src/views/content/remote/Card.vue:26
+#: front/src/components/Sidebar.vue:125 src/components/audio/album/Card.vue:52
+#: front/src/views/content/libraries/Card.vue:40
+#: src/views/content/remote/Card.vue:43
+msgctxt "*/*/*"
 msgid "%{ count } track"
 msgid_plural "%{ count } tracks"
 msgstr[0] "%{ count } track"
 msgstr[1] "%{ count } tracks"
 
-#: front/src/components/library/Artist.vue:13
+#: front/src/components/library/ArtistBase.vue:13
+msgctxt "Content/Artist/Paragraph"
 msgid "%{ count } track in %{ albumsCount } albums"
 msgid_plural "%{ count } tracks in %{ albumsCount } albums"
 msgstr[0] "%{ count } track in %{ albumsCount } albums"
 msgstr[1] "%{ count } tracks in %{ albumsCount } albums"
 
-#: front/src/components/library/radios/Builder.vue:80
+#: front/src/components/library/radios/Builder.vue:81
+msgctxt "Content/Radio/Table.Paragraph/Short"
 msgid "%{ count } track matching combined filters"
 msgid_plural "%{ count } tracks matching combined filters"
 msgstr[0] "%{ count } track matching combined filters"
 msgstr[1] "%{ count } tracks matching combined filters"
 
-#: front/src/components/audio/PlayButton.vue:180
-msgid "%{ count } track was added to your queue"
-msgid_plural "%{ count } tracks were added to your queue"
-msgstr[0] "%{ count } track was added to your queue"
-msgstr[1] "%{ count } tracks were added to your queue"
+#: front/src/components/About.vue:185
+msgctxt "Content/Home/Stat"
+msgid "%{ count } tracks"
+msgid_plural "%{ count } tracks"
+msgstr[0] "%{ count } tracks"
+msgstr[1] "%{ count } tracks"
 
-#: front/src/components/playlists/Card.vue:18
+#: front/src/components/playlists/Card.vue:28
+msgctxt "Content/*/Card/List item"
 msgid "%{ count} track"
 msgid_plural "%{ count } tracks"
 msgstr[0] "%{ count} track"
 msgstr[1] "%{ count } tracks"
 
 #: front/src/views/content/libraries/Quota.vue:11
+msgctxt "Content/Library/Paragraph"
 msgid "%{ current } used on %{ max } allowed"
 msgstr "%{ current } used on %{ max } allowed"
 
 #: front/src/components/common/Duration.vue:2
+msgctxt "Content/*/Paragraph"
 msgid "%{ hours } h %{ minutes } min"
 msgstr "%{ hours } h %{ minutes } min"
 
 #: front/src/components/common/Duration.vue:5
+msgctxt "Content/*/Paragraph"
 msgid "%{ minutes } min"
 msgstr "%{ minutes } min"
 
 #: front/src/components/notifications/NotificationRow.vue:40
+msgctxt "Content/Notifications/Paragraph"
 msgid "%{ username } accepted your follow on library \"%{ library }\""
 msgstr "%{ username } accepted your follow on library \"%{ library }\""
 
 #: front/src/components/notifications/NotificationRow.vue:39
+msgctxt "Content/Notifications/Paragraph"
 msgid "%{ username } followed your library \"%{ library }\""
 msgstr "%{ username } followed your library \"%{ library }\""
 
 #: front/src/components/notifications/NotificationRow.vue:41
+msgctxt "Content/Notifications/Paragraph"
 msgid "%{ username } wants to follow your library \"%{ library }\""
 msgstr "%{ username } wants to follow your library \"%{ library }\""
 
 #: front/src/components/auth/Profile.vue:46
+msgctxt "Head/Profile/Title"
 msgid "%{ username }'s profile"
 msgstr "%{ username }'s profile"
 
-#: front/src/components/audio/artist/Card.vue:41
+#: front/src/components/playlists/PlaylistModal.vue:21
+msgctxt "Popup/Playlist/Paragraph"
+msgid "<strong>%{ track }</strong> is already in <strong>%{ playlist }</strong>."
+msgstr "<strong>%{ track }</strong> is already in <strong>%{ playlist }</strong>."
+
+#: front/src/components/audio/artist/Card.vue:11
+msgctxt "Content/Artist/Card"
 msgid "1 album"
 msgid_plural "%{ count } albums"
 msgstr[0] "1 album"
 msgstr[1] "%{ count } albums"
 
 #: front/src/components/favorites/List.vue:10
+msgctxt "Content/Favorites/Title"
 msgid "1 favorite"
 msgid_plural "%{ count } favorites"
 msgstr[0] "1 favourite"
 msgstr[1] "%{ count } favourites"
 
-#: front/src/components/library/FileUpload.vue:226
-#: front/src/components/library/FileUpload.vue:227
-msgid "A network error occured while uploading this file"
+#: front/src/components/audio/artist/Card.vue:15
+msgctxt "Content/Artist/Card"
+msgid "1 track"
+msgid_plural "%{ count } tracks"
+msgstr[0] "1 track"
+msgstr[1] "%{ count } tracks"
+
+#: front/src/views/Notifications.vue:21 src/views/Notifications.vue:55
+msgctxt "*/*/*"
+msgid "30 days"
+msgstr "30 days"
+
+#: front/src/views/Notifications.vue:22 src/views/Notifications.vue:56
+msgctxt "*/*/*"
+msgid "60 days"
+msgstr "60 days"
+
+#: front/src/views/Notifications.vue:23 src/views/Notifications.vue:57
+msgctxt "*/*/*"
+msgid "90 days"
+msgstr "90 days"
+
+#: front/src/components/library/FileUpload.vue:264
+msgctxt "Content/Library/Help text"
+msgid "A network error occurred while uploading this file"
 msgstr "A network error occurred while uploading this file"
 
+#: front/src/components/library/EditForm.vue:161
+msgctxt "*/*/Placeholder"
+msgid "A short summary describing your changes."
+msgstr "A short summary describing your changes."
+
 #: front/src/components/About.vue:5
-msgid "About %{ instance }"
-msgstr "About %{ instance }"
+msgctxt "Content/Home/Header"
+msgid "About %{ podName }"
+msgstr "About %{ podName }"
 
 #: front/src/components/Footer.vue:6
+msgctxt "Footer/About/Title"
 msgid "About %{instanceName}"
 msgstr "About %{instanceName}"
 
-#: front/src/components/Footer.vue:45
+#: front/src/components/Footer.vue:53 src/components/Home.vue:85
+msgctxt "Footer/*/Title/Short"
 msgid "About Funkwhale"
 msgstr "About Funkwhale"
 
 #: front/src/components/Footer.vue:10
+msgctxt "Footer/About/List item.Link"
 msgid "About page"
 msgstr "About page"
 
-#: front/src/components/About.vue:8 src/components/About.vue:67
-msgid "About this instance"
-msgstr "About this instance"
+#: front/src/components/Home.vue:19
+msgctxt "Content/Home/Header"
+msgid "About this Funkwhale pod"
+msgstr "About this Funkwhale pod"
+
+#: front/src/components/About.vue:21 src/components/About.vue:51
+msgctxt "Content/About/Header"
+msgid "About this pod"
+msgstr "About this pod"
 
 #: front/src/views/content/libraries/Detail.vue:48
+msgctxt "Content/Library/Button.Label"
 msgid "Accept"
 msgstr "Accept"
 
 #: front/src/views/content/libraries/Detail.vue:40
+msgctxt "Content/Library/Table/Short"
 msgid "Accepted"
 msgstr "Accepted"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:110
+#: front/src/components/auth/SubsonicTokenForm.vue:117
+msgctxt "Content/Settings/Message"
 msgid "Access disabled"
 msgstr "Access disabled"
 
-#: front/src/components/Home.vue:106
-msgid "Access your music from a clean interface that focus on what really matters"
-msgstr ""
-"Access your music from a clean interface that focuses on what really matters"
-
-#: front/src/components/mixins/Translations.vue:19
-#: front/src/components/mixins/Translations.vue:20
+#: front/src/components/mixins/Translations.vue:85
+#: front/src/components/mixins/Translations.vue:86
+msgctxt "Content/OAuth Scopes/Paragraph"
+msgid "Access to audio files, libraries, artists, albums and tracks"
+msgstr "Access to audio files, libraries, artists, albums and tracks"
+
+#: front/src/components/mixins/Translations.vue:109
+#: front/src/components/mixins/Translations.vue:110
+msgctxt "Content/OAuth Scopes/Paragraph"
+msgid "Access to content filters"
+msgstr "Access to content filters"
+
+#: front/src/components/mixins/Translations.vue:117
+#: front/src/components/mixins/Translations.vue:118
+msgctxt "Content/OAuth Scopes/Paragraph"
+msgid "Access to edits"
+msgstr "Access to edits"
+
+#: front/src/components/mixins/Translations.vue:81
+#: front/src/components/mixins/Translations.vue:82
+msgctxt "Content/OAuth Scopes/Paragraph"
+msgid "Access to email, username, and profile information"
+msgstr "Access to email, username, and profile information"
+
+#: front/src/components/mixins/Translations.vue:89
+#: front/src/components/mixins/Translations.vue:90
+msgctxt "Content/OAuth Scopes/Paragraph"
+msgid "Access to favorites"
+msgstr "Access to favourites"
+
+#: front/src/components/mixins/Translations.vue:97
+#: front/src/components/mixins/Translations.vue:98
+msgctxt "Content/OAuth Scopes/Paragraph"
+msgid "Access to follows"
+msgstr "Access to follows"
+
+#: front/src/components/mixins/Translations.vue:93
+#: front/src/components/mixins/Translations.vue:94
+msgctxt "Content/OAuth Scopes/Paragraph"
+msgid "Access to listening history"
+msgstr "Access to listening history"
+
+#: front/src/components/mixins/Translations.vue:113
+#: front/src/components/mixins/Translations.vue:114
+msgctxt "Content/OAuth Scopes/Paragraph"
+msgid "Access to notifications"
+msgstr "Access to notifications"
+
+#: front/src/components/mixins/Translations.vue:101
+#: front/src/components/mixins/Translations.vue:102
+msgctxt "Content/OAuth Scopes/Paragraph"
+msgid "Access to playlists"
+msgstr "Access to playlists"
+
+#: front/src/components/mixins/Translations.vue:105
+#: front/src/components/mixins/Translations.vue:106
+msgctxt "Content/OAuth Scopes/Paragraph"
+msgid "Access to radios"
+msgstr "Access to radios"
+
+#: front/src/components/manage/library/UploadsTable.vue:67
+#: front/src/components/mixins/Translations.vue:55
+#: front/src/views/admin/library/UploadDetail.vue:175
+#: front/src/components/mixins/Translations.vue:56
+msgctxt "Content/*/*/Noun"
 msgid "Accessed date"
-msgstr "Access date"
-
-#: front/src/views/admin/moderation/AccountsDetail.vue:78
+msgstr "Accessed date"
+
+#: front/src/components/manage/library/LibrariesTable.vue:49
+#: front/src/components/manage/library/UploadsTable.vue:61
+#: front/src/components/manage/moderation/ReportCard.vue:156
+#: front/src/components/mixins/Report.vue:13
+#: front/src/views/admin/library/LibraryDetail.vue:113
+#: front/src/views/admin/library/UploadDetail.vue:111
+#: front/src/components/mixins/Report.vue:14
+msgctxt "*/*/*/Noun"
+msgid "Account"
+msgstr "Account"
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:107
+msgctxt "Content/Moderation/Title"
 msgid "Account data"
 msgstr "Account data"
 
 #: front/src/components/auth/Settings.vue:5
+msgctxt "Content/Settings/Title"
 msgid "Account settings"
 msgstr "Account settings"
 
-#: front/src/components/auth/Settings.vue:263
+#: front/src/components/auth/Settings.vue:544
+msgctxt "Head/Settings/Title"
 msgid "Account Settings"
 msgstr "Account Settings"
 
 #: front/src/components/manage/users/UsersTable.vue:39
+msgctxt "Content/Admin/Table.Label/Short, Noun"
 msgid "Account status"
 msgstr "Account status"
 
 #: front/src/views/auth/PasswordReset.vue:14
+msgctxt "Content/Signup/Input.Label"
 msgid "Account's email"
 msgstr "Account's email"
 
 #: front/src/views/admin/moderation/AccountsList.vue:3
 #: front/src/views/admin/moderation/AccountsList.vue:24
-#: front/src/views/admin/moderation/Base.vue:8
+#: front/src/views/admin/moderation/Base.vue:11
+msgctxt "*/Moderation/Title"
 msgid "Accounts"
 msgstr "Accounts"
 
 #: front/src/views/content/libraries/Detail.vue:29
+msgctxt "Content/Library/Table.Label"
 msgid "Action"
 msgstr "Action"
 
-#: front/src/components/common/ActionTable.vue:99
+#: front/src/components/common/ActionTable.vue:101
+msgctxt "Content/*/Paragraph"
 msgid "Action %{ action } was launched successfully on %{ count } element"
 msgid_plural "Action %{ action } was launched successfully on %{ count } elements"
 msgstr[0] "Action %{ action } was launched successfully on %{ count } element"
 msgstr[1] "Action %{ action } was launched successfully on %{ count } elements"
 
-#: front/src/components/common/ActionTable.vue:21
-#: front/src/components/library/radios/Builder.vue:64
+#: front/src/components/common/ActionTable.vue:22
+#: front/src/components/library/radios/Builder.vue:65
+#: front/src/components/manage/moderation/ReportCard.vue:210
+msgctxt "Content/*/*/Noun"
 msgid "Actions"
 msgstr "Actions"
 
-#: front/src/components/manage/users/UsersTable.vue:53
+#: front/src/components/manage/users/UsersTable.vue:54
+msgctxt "Content/Admin/Table"
 msgid "Active"
 msgstr "Active"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:199
-#: front/src/views/admin/moderation/DomainsDetail.vue:144
+#: front/src/views/admin/library/AlbumDetail.vue:140
+#: front/src/views/admin/library/ArtistDetail.vue:128
+#: front/src/views/admin/library/LibraryDetail.vue:147
+#: front/src/views/admin/library/TagDetail.vue:83
+#: front/src/views/admin/library/TrackDetail.vue:192
+#: front/src/views/admin/library/UploadDetail.vue:160
+#: front/src/views/admin/moderation/AccountsDetail.vue:221
+#: front/src/views/admin/moderation/DomainsDetail.vue:173
+msgctxt "Content/Moderation/Title"
 msgid "Activity"
 msgstr "Activity"
 
 #: front/src/components/mixins/Translations.vue:7
 #: front/src/components/mixins/Translations.vue:8
+msgctxt "Content/Settings/Dropdown.Label/Noun"
 msgid "Activity visibility"
 msgstr "Activity visibility"
 
-#: front/src/views/admin/moderation/DomainsList.vue:18
+#: front/src/views/admin/moderation/DomainsList.vue:22
+msgctxt "Content/Moderation/Button/Verb"
 msgid "Add"
 msgstr "Add"
 
 #: front/src/views/admin/moderation/DomainsList.vue:13
+msgctxt "Content/Moderation/Form.Label/Verb"
 msgid "Add a domain"
 msgstr "Add a domain"
 
+#: front/src/views/admin/moderation/AccountsDetail.vue:79
+msgctxt "Content/Moderation/Button/Verb"
+msgid "Add a moderation policy"
+msgstr "Add a moderation policy"
+
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:4
+msgctxt "Content/Moderation/Card.Button.Label/Verb"
 msgid "Add a new moderation rule"
 msgstr "Add a new moderation rule"
 
 #: front/src/views/content/Home.vue:35
+msgctxt "Content/Library/Title/Verb"
 msgid "Add and manage content"
 msgstr "Add and manage content"
 
+#: front/src/components/playlists/Editor.vue:28
+#: front/src/components/playlists/PlaylistModal.vue:31
+msgctxt "*/Playlist/Button.Label/Verb"
+msgid "Add anyways"
+msgstr "Add anyway"
+
 #: front/src/components/Sidebar.vue:75 src/views/content/Base.vue:18
+msgctxt "*/Library/*/Verb"
 msgid "Add content"
 msgstr "Add content"
 
-#: front/src/components/library/radios/Builder.vue:50
+#: front/src/components/library/radios/Builder.vue:51
+msgctxt "Content/Radio/Button.Label/Verb"
 msgid "Add filter"
 msgstr "Add filter"
 
-#: front/src/components/library/radios/Builder.vue:40
+#: front/src/components/library/radios/Builder.vue:41
+msgctxt "Content/Radio/Paragraph"
 msgid "Add filters to customize your radio"
 msgstr "Add filters to customise your radio"
 
-#: front/src/components/audio/PlayButton.vue:64
+#: front/src/components/manage/moderation/NoteForm.vue:12
+msgctxt "Content/Moderation/Button.Label/Verb"
+msgid "Add note"
+msgstr "Add note"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:191
+#: front/src/views/admin/moderation/DomainsDetail.vue:46
+#: front/src/views/admin/moderation/DomainsList.vue:18
+msgctxt "Content/Moderation/Action/Verb"
+msgid "Add to allow-list"
+msgstr "Add to allow-list"
+
+#: front/src/components/audio/PlayButton.vue:91
+msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Add to current queue"
 msgstr "Add to current queue"
 
 #: front/src/components/favorites/TrackFavoriteIcon.vue:4
 #: front/src/components/favorites/TrackFavoriteIcon.vue:28
+msgctxt "Content/Track/*/Verb"
 msgid "Add to favorites"
 msgstr "Add to favourites"
 
 #: front/src/components/playlists/TrackPlaylistIcon.vue:6
 #: front/src/components/playlists/TrackPlaylistIcon.vue:34
+msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Add to playlist…"
 msgstr "Add to playlist…"
 
-#: front/src/components/audio/PlayButton.vue:14
+#: front/src/components/audio/PlayButton.vue:15
+msgctxt "*/Queue/Dropdown/Button/Label/Short"
 msgid "Add to queue"
 msgstr "Add to queue"
 
-#: front/src/components/playlists/PlaylistModal.vue:116
+#: front/src/components/playlists/PlaylistModal.vue:142
+msgctxt "Popup/Playlist/Table.Button.Tooltip/Verb"
 msgid "Add to this playlist"
 msgstr "Add to this playlist"
 
-#: front/src/components/playlists/PlaylistModal.vue:54
+#: front/src/components/playlists/PlaylistModal.vue:68
+msgctxt "Popup/Playlist/Table.Button.Label/Verb"
 msgid "Add track"
 msgstr "Add track"
 
-#: front/src/components/manage/users/UsersTable.vue:69
+#: front/src/components/manage/users/UsersTable.vue:70
+msgctxt "Content/Admin/Table.User role"
 msgid "Admin"
 msgstr "Admin"
 
 #: front/src/components/Sidebar.vue:79
+msgctxt "Sidebar/Admin/Title/Noun"
 msgid "Administration"
 msgstr "Administration"
 
-#: front/src/components/audio/SearchBar.vue:26 src/components/audio/track/Table.vue:8
-#: front/src/components/library/Album.vue:153
-#: front/src/components/manage/library/FilesTable.vue:39
+#: front/src/components/audio/SearchBar.vue:33
+#: src/components/audio/track/Table.vue:9
+#: front/src/components/library/AlbumBase.vue:170
+#: front/src/components/library/ArtistBase.vue:212
+#: front/src/components/manage/library/TracksTable.vue:40
 #: front/src/components/metadata/Search.vue:134
-#: front/src/views/content/libraries/FilesTable.vue:56
+#: src/components/mixins/Report.vue:41
+#: front/src/views/admin/library/TrackDetail.vue:113
+#: front/src/views/content/libraries/FilesTable.vue:57
+#: front/src/components/mixins/Report.vue:42
+msgctxt "*/*/*"
 msgid "Album"
 msgstr "Album"
 
-#: front/src/components/library/Album.vue:183
-msgid "Album containing %{ count } track, by %{ artist }"
-msgid_plural "Album containing %{ count } tracks, by %{ artist }"
-msgstr[0] "Album containing %{ count } track, by %{ artist }"
-msgstr[1] "Album containing %{ count } tracks, by %{ artist }"
+#: front/src/views/admin/library/TrackDetail.vue:134
+msgctxt "*/*/*/Noun"
+msgid "Album artist"
+msgstr "Album artist"
 
-#: front/src/components/mixins/Translations.vue:24
-#: front/src/components/mixins/Translations.vue:25
+#: front/src/views/admin/library/AlbumDetail.vue:98
+msgctxt "Content/Moderation/Title"
+msgid "Album data"
+msgstr "Album data"
+
+#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/mixins/Translations.vue:62
+msgctxt "Content/*/Dropdown/Noun"
 msgid "Album name"
 msgstr "Album name"
 
-#: front/src/components/library/Track.vue:27
-msgid "Album page"
-msgstr "Album page"
-
-#: front/src/components/audio/Search.vue:19 src/components/instance/Stats.vue:48
-#: front/src/views/admin/moderation/AccountsDetail.vue:321
-#: front/src/views/admin/moderation/DomainsDetail.vue:257
+#: front/src/components/audio/Search.vue:19
+#: src/components/library/Albums.vue:129
+#: front/src/components/library/Library.vue:7
+#: src/components/library/TagDetail.vue:28
+#: front/src/components/manage/library/ArtistsTable.vue:41
+#: front/src/components/manage/library/TagsTable.vue:43
+#: front/src/views/admin/library/AlbumsList.vue:24
+#: front/src/views/admin/library/ArtistDetail.vue:256
+#: front/src/views/admin/library/Base.vue:11
+#: front/src/views/admin/library/LibraryDetail.vue:238
+#: front/src/views/admin/library/TagDetail.vue:133
+#: front/src/views/admin/moderation/AccountsDetail.vue:366
+#: front/src/views/admin/moderation/DomainsDetail.vue:301
+msgctxt "*/*/*"
 msgid "Albums"
 msgstr "Albums"
 
-#: front/src/components/library/Artist.vue:44
+#: front/src/components/library/ArtistDetail.vue:21
+msgctxt "Content/Artist/Title"
 msgid "Albums by this artist"
 msgstr "Albums by this artist"
 
+#: front/src/components/manage/library/EditsCardList.vue:15
+#: front/src/components/manage/library/LibrariesTable.vue:13
+#: front/src/components/manage/library/UploadsTable.vue:13
+#: front/src/components/manage/library/UploadsTable.vue:22
+#: front/src/components/manage/moderation/DomainsTable.vue:11
 #: front/src/components/manage/users/InvitationsTable.vue:19
+#: front/src/components/moderation/ReportCategoryDropdown.vue:32
+#: front/src/views/admin/moderation/ReportsList.vue:17
 #: front/src/views/content/libraries/FilesTable.vue:13
+msgctxt "Content/*/Dropdown"
 msgid "All"
 msgstr "All"
 
+#: front/src/components/common/ActionTable.vue:59
+msgctxt "Content/*/Paragraph"
+msgid "All %{ count } element selected"
+msgid_plural "All %{ count } elements selected"
+msgstr[0] "All %{ count } element selected"
+msgstr[1] "All %{ count } elements selected"
+
+#: front/src/components/auth/Authorize.vue:107
+msgctxt "Head/Authorize/Title"
+msgid "Allow application"
+msgstr "Allow application"
+
+#: front/src/components/About.vue:136
+msgctxt "*/*/*"
+msgid "Allow-list"
+msgstr "Allow-list"
+
+#: front/src/components/About.vue:149
+msgctxt "*/*/*"
+msgid "Allowed domains"
+msgstr "Allowed domains"
+
+#: front/src/components/library/ImportStatusModal.vue:17
+msgctxt "Popup/Import/Message"
+msgid "An error occurred during upload processing. You will find more information below."
+msgstr "An error occurred during upload processing. You will find more information below."
+
 #: front/src/components/playlists/Editor.vue:13
-msgid "An error occured while saving your changes"
+msgctxt "Content/Playlist/Error message.Title"
+msgid "An error occurred while saving your changes"
 msgstr "An error occurred while saving your changes"
 
-#: front/src/components/auth/Login.vue:10
-msgid "An unknown error happend, this can mean the server is down or cannot be reached"
-msgstr ""
-"An unknown error happened, this can mean the server is down or cannot be "
-"reached"
-
+#: front/src/components/federation/FetchButton.vue:21
+msgctxt "Popup/*/Message.Content"
+msgid "An error occurred while trying to refresh data:"
+msgstr "An error occurred while trying to refresh data:"
+
+#: front/src/components/federation/FetchButton.vue:41
+msgctxt "*/*/Error"
+msgid "An HTTP error occurred while contacting the remote server"
+msgstr "An HTTP error occurred while contacting the remote server"
+
+#: front/src/components/library/ImportStatusModal.vue:145
+msgctxt "Popup/Import/Error.Label"
+msgid "An unknown error occurred"
+msgstr "An unknown error occurred"
+
+#: front/src/components/About.vue:123
+msgctxt "*/*/*"
+msgid "Anonymous access"
+msgstr "Anonymous access"
+
+#: front/src/components/moderation/ReportModal.vue:54
+msgctxt "Popup/Moderation/Error message"
+msgid "Anonymous reports are disabled, please sign-in to submit a report."
+msgstr "Anonymous reports are disabled, please sign-in to submit a report."
+
+#: front/src/components/auth/Settings.vue:175
+#: src/components/auth/Settings.vue:225
+msgctxt "*/*/*/Noun"
+msgid "Application"
+msgstr "Application"
+
+#: front/src/components/auth/ApplicationEdit.vue:12
+msgctxt "Content/Applications/Title"
+msgid "Application details"
+msgstr "Application details"
+
+#: front/src/components/auth/ApplicationEdit.vue:21
+msgctxt "Content/Applications/Label"
+msgid "Application ID"
+msgstr "Application ID"
+
+#: front/src/components/auth/ApplicationEdit.vue:16
+msgctxt "Content/Application/Paragraph/"
+msgid "Application ID and secret are really sensitive values and must be treated like passwords. Do not share those with anyone else."
+msgstr "Application ID and secret are really sensitive values and must be treated like passwords. Do not share those with anyone else."
+
+#: front/src/components/auth/ApplicationEdit.vue:25
+msgctxt "Content/Applications/Label"
+msgid "Application secret"
+msgstr "Application secret"
+
+#: front/src/components/library/EditCard.vue:81
 #: front/src/components/notifications/NotificationRow.vue:66
+msgctxt "Content/*/Button.Label/Verb"
 msgid "Approve"
 msgstr "Approve"
 
+#: front/src/components/library/EditCard.vue:25
+#: front/src/components/manage/library/EditsCardList.vue:21
+msgctxt "Content/*/*/Short"
+msgid "Approved"
+msgstr "Approved"
+
+#: front/src/components/library/EditCard.vue:21
+msgctxt "Content/Library/Card/Short"
+msgid "Approved and applied"
+msgstr "Approved and applied"
+
 #: front/src/components/auth/Logout.vue:5
+msgctxt "Content/Login/Title"
 msgid "Are you sure you want to log out?"
 msgstr "Are you sure you want to log out?"
 
-#: front/src/components/audio/SearchBar.vue:25 src/components/audio/track/Table.vue:7
-#: front/src/components/library/Artist.vue:137
-#: front/src/components/manage/library/FilesTable.vue:38
+#: front/src/components/audio/SearchBar.vue:32
+#: src/components/audio/track/Table.vue:8
+#: front/src/components/manage/library/AlbumsTable.vue:40
+#: front/src/components/manage/library/TracksTable.vue:41
 #: front/src/components/metadata/Search.vue:130
-#: front/src/views/content/libraries/FilesTable.vue:55
+#: src/components/mixins/Report.vue:55
+#: front/src/views/admin/library/AlbumDetail.vue:114
+#: front/src/views/admin/library/TrackDetail.vue:124
+#: front/src/views/content/libraries/FilesTable.vue:56 src/entities.js:12
+#: front/src/components/mixins/Report.vue:56
+msgctxt "*/*/*/Noun"
 msgid "Artist"
 msgstr "Artist"
 
-#: front/src/components/mixins/Translations.vue:25
-#: front/src/components/mixins/Translations.vue:26
+#: front/src/views/admin/library/ArtistDetail.vue:96
+msgctxt "Content/Moderation/Title"
+msgid "Artist data"
+msgstr "Artist data"
+
+#: front/src/components/mixins/Translations.vue:62
+#: front/src/components/mixins/Translations.vue:63
+msgctxt "Content/*/Dropdown/Noun"
 msgid "Artist name"
 msgstr "Artist name"
 
-#: front/src/components/library/Album.vue:16 src/components/library/Track.vue:33
-msgid "Artist page"
-msgstr "Artist page"
-
 #: front/src/components/audio/Search.vue:65
+msgctxt "*/Search/Input.Placeholder"
 msgid "Artist, album, track…"
 msgstr "Artist, album, track…"
 
-#: front/src/components/audio/Search.vue:10 src/components/instance/Stats.vue:42
-#: front/src/components/library/Artists.vue:119 src/components/library/Library.vue:7
-#: front/src/views/admin/moderation/AccountsDetail.vue:313
-#: front/src/views/admin/moderation/DomainsDetail.vue:249
+#: front/src/components/audio/Search.vue:10
+#: src/components/library/Artists.vue:117
+#: front/src/components/library/Library.vue:10
+#: front/src/components/library/TagDetail.vue:19
+#: front/src/components/manage/library/TagsTable.vue:42
+#: front/src/views/admin/library/ArtistsList.vue:24
+#: front/src/views/admin/library/Base.vue:8
+#: front/src/views/admin/library/LibraryDetail.vue:228
+#: front/src/views/admin/library/TagDetail.vue:123
+#: front/src/views/admin/moderation/AccountsDetail.vue:358
+#: front/src/views/admin/moderation/DomainsDetail.vue:291
+msgctxt "*/*/*/Noun"
 msgid "Artists"
 msgstr "Artists"
 
-#: front/src/components/favorites/List.vue:33 src/components/library/Artists.vue:25
-#: front/src/components/library/Radios.vue:44
-#: front/src/components/manage/library/FilesTable.vue:19
+#: front/src/components/favorites/List.vue:34
+#: src/components/library/Albums.vue:29
+#: front/src/components/library/Artists.vue:29
+#: src/components/library/Radios.vue:44
+#: front/src/components/manage/library/AlbumsTable.vue:21
+#: front/src/components/manage/library/ArtistsTable.vue:21
+#: front/src/components/manage/library/EditsCardList.vue:39
+#: front/src/components/manage/library/LibrariesTable.vue:30
+#: front/src/components/manage/library/TagsTable.vue:21
+#: front/src/components/manage/library/TracksTable.vue:21
+#: front/src/components/manage/library/UploadsTable.vue:40
 #: front/src/components/manage/moderation/AccountsTable.vue:21
-#: front/src/components/manage/moderation/DomainsTable.vue:19
+#: front/src/components/manage/moderation/DomainsTable.vue:27
 #: front/src/components/manage/users/UsersTable.vue:19
+#: front/src/views/admin/moderation/ReportsList.vue:44
 #: front/src/views/content/libraries/FilesTable.vue:31
 #: front/src/views/playlists/List.vue:27
+msgctxt "Content/Search/Dropdown"
 msgid "Ascending"
 msgstr "Ascending"
 
 #: front/src/views/auth/PasswordReset.vue:28
+msgctxt "Content/Signup/Button.Label/Verb"
 msgid "Ask for a password reset"
 msgstr "Ask for a password reset"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:245
-#: front/src/views/admin/moderation/DomainsDetail.vue:202
+#: front/src/components/manage/moderation/ReportCard.vue:72
+msgctxt "Content/Moderation/*"
+msgid "Assigned to"
+msgstr "Assigned to"
+
+#: front/src/views/admin/library/AlbumDetail.vue:214
+#: front/src/views/admin/library/ArtistDetail.vue:202
+#: front/src/views/admin/library/LibraryDetail.vue:195
+#: front/src/views/admin/library/TagDetail.vue:113
+#: front/src/views/admin/library/TrackDetail.vue:266
+#: front/src/views/admin/library/UploadDetail.vue:191
+#: front/src/views/admin/moderation/AccountsDetail.vue:285
+#: front/src/views/admin/moderation/DomainsDetail.vue:239
+msgctxt "Content/Moderation/Title"
 msgid "Audio content"
 msgstr "Audio content"
 
-#: front/src/components/ShortcutsModal.vue:55
+#: front/src/components/ShortcutsModal.vue:92
+msgctxt "Popup/Keyboard shortcuts/Title"
 msgid "Audio player shortcuts"
 msgstr "Audio player shortcuts"
 
-#: front/src/components/playlists/PlaylistModal.vue:26
+#: front/src/components/auth/Authorize.vue:47
+msgctxt "Content/Signup/Button.Label/Verb"
+msgid "Authorize %{ app }"
+msgstr "Authorise %{ app }"
+
+#: front/src/components/auth/Authorize.vue:4
+msgctxt "Content/Auth/Title/Verb"
+msgid "Authorize third-party app"
+msgstr "Authorise third-party app"
+
+#: front/src/components/auth/Settings.vue:162
+msgctxt "Content/Settings/Title/Noun"
+msgid "Authorized apps"
+msgstr "Authorised apps"
+
+#: front/src/components/playlists/PlaylistModal.vue:40
+msgctxt "Popup/Playlist/Title"
 msgid "Available playlists"
 msgstr "Available playlists"
 
 #: front/src/components/auth/Settings.vue:34
+msgctxt "Content/Settings/Title"
 msgid "Avatar"
 msgstr "Avatar"
 
 #: front/src/views/auth/PasswordReset.vue:25
 #: front/src/views/auth/PasswordResetConfirm.vue:18
+msgctxt "Content/Signup/Link"
 msgid "Back to login"
 msgstr "Back to login"
 
-#: front/src/components/library/Track.vue:129
-#: front/src/components/manage/library/FilesTable.vue:42
-#: front/src/components/mixins/Translations.vue:29
-#: front/src/components/mixins/Translations.vue:30
+#: front/src/components/auth/ApplicationEdit.vue:9
+#: front/src/components/auth/ApplicationNew.vue:5
+msgctxt "Content/Applications/Link"
+msgid "Back to settings"
+msgstr "Back to settings"
+
+#: front/src/components/library/TrackDetail.vue:48
+#: front/src/components/mixins/Translations.vue:67
+#: front/src/views/admin/library/UploadDetail.vue:227
+#: front/src/components/mixins/Translations.vue:68
+msgctxt "Content/Track/*/Noun"
 msgid "Bitrate"
 msgstr "Bitrate"
 
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:19
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:34
+msgctxt "Content/Moderation/*/Verb"
 msgid "Block everything"
 msgstr "Block everything"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:112
+msgctxt "Content/Moderation/Help text"
 msgid "Block everything from this account or domain. This will prevent any interaction with the entity, and purge related content (uploads, libraries, follows, etc.)"
-msgstr ""
-"Block everything from this account or domain. This will prevent any "
-"interaction with the entity, and purge related content (uploads, libraries, "
-"follows, etc.)"
+msgstr "Block everything from this account or domain. This will prevent any interaction with the entity, and purge related content (uploads, libraries, follows, etc.)"
 
 #: front/src/components/Sidebar.vue:18 src/components/library/Library.vue:4
+msgctxt "*/Library/*/Verb"
 msgid "Browse"
 msgstr "Browse"
 
 #: front/src/components/Sidebar.vue:65
+msgctxt "Sidebar/Library/List item.Link/Verb"
 msgid "Browse library"
 msgstr "Browse library"
 
+#: front/src/components/Home.vue:132
+msgctxt "Content/Home/Link"
+msgid "Browse public content"
+msgstr "Browse public content"
+
+#: front/src/components/library/Albums.vue:4
+msgctxt "Content/Album/Title"
+msgid "Browsing albums"
+msgstr "Browsing albums"
+
 #: front/src/components/library/Artists.vue:4
+msgctxt "Content/Artist/Title"
 msgid "Browsing artists"
 msgstr "Browsing artists"
 
 #: front/src/views/playlists/List.vue:3
+msgctxt "Content/Playlist/Title"
 msgid "Browsing playlists"
 msgstr "Browsing playlists"
 
 #: front/src/components/library/Radios.vue:4
+msgctxt "Content/Radio/Title"
 msgid "Browsing radios"
 msgstr "Browsing radios"
 
 #: front/src/components/library/radios/Builder.vue:5
+msgctxt "Content/Radio/Title"
 msgid "Builder"
 msgstr "Builder"
 
 #: front/src/components/audio/album/Card.vue:13
+msgctxt "Content/Album/Card"
 msgid "By %{ artist }"
 msgstr "By %{ artist }"
 
-#: front/src/views/content/remote/Card.vue:103
+#: front/src/views/content/remote/Card.vue:125
+msgctxt "Popup/Library/Paragraph"
 msgid "By unfollowing this library, you loose access to its content."
 msgstr "By unfollowing this library, you lose access to its content."
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:261
-#: front/src/views/admin/moderation/DomainsDetail.vue:217
+#: front/src/views/admin/library/AlbumDetail.vue:230
+#: front/src/views/admin/library/ArtistDetail.vue:218
+#: front/src/views/admin/library/LibraryDetail.vue:211
+#: front/src/views/admin/library/TrackDetail.vue:282
+#: front/src/views/admin/library/UploadDetail.vue:208
+#: front/src/views/admin/moderation/AccountsDetail.vue:301
+#: front/src/views/admin/moderation/DomainsDetail.vue:254
+msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Cached size"
 msgstr "Cached size"
 
+#: front/src/components/SetInstanceModal.vue:37
 #: front/src/components/common/DangerousButton.vue:17
-#: front/src/components/library/Album.vue:52 src/components/library/Track.vue:76
+#: front/src/components/library/AlbumBase.vue:37
+#: front/src/components/library/ArtistBase.vue:48
+#: front/src/components/library/EditForm.vue:107
+#: front/src/components/library/TrackBase.vue:53
 #: front/src/components/library/radios/Filter.vue:53
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:54
-#: front/src/components/playlists/PlaylistModal.vue:63
+#: front/src/components/moderation/FilterModal.vue:39
+#: front/src/components/moderation/ReportModal.vue:59
+#: front/src/components/playlists/PlaylistModal.vue:26
+#: front/src/components/playlists/PlaylistModal.vue:77
+#: front/src/views/playlists/Detail.vue:62
+msgctxt "*/*/Button.Label/Verb"
 msgid "Cancel"
 msgstr "Cancel"
 
-#: front/src/components/library/radios/Builder.vue:63
+#: front/src/views/content/remote/Card.vue:110
+msgctxt "Content/Library/Card.Paragraph"
+msgid "Cancel follow request"
+msgstr "Cancel follow request"
+
+#: front/src/components/library/radios/Builder.vue:64
+msgctxt "Content/Radio/Table.Label/Noun (Value is a number of Tracks)"
 msgid "Candidates"
 msgstr "Candidates"
 
-#: front/src/components/auth/Settings.vue:75
-msgid "Cannot change your password"
-msgstr "Cannot change your password"
-
-#: front/src/components/library/FileUpload.vue:223
-#: front/src/components/library/FileUpload.vue:224
+#: front/src/components/library/FileUpload.vue:261
+msgctxt "Content/Library/Help text"
 msgid "Cannot upload this file, ensure it is not too big"
 msgstr "Cannot upload this file, ensure it is not too big"
 
+#: front/src/components/manage/moderation/ReportCard.vue:30
+#: front/src/components/mixins/Translations.vue:42
+#: front/src/components/moderation/ReportCategoryDropdown.vue:2
+#: front/src/components/mixins/Translations.vue:43
+msgctxt "*/*/*"
+msgid "Category"
+msgstr "Category"
+
 #: front/src/components/Footer.vue:21
+msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
 msgid "Change language"
 msgstr "Change language"
 
-#: front/src/components/auth/Settings.vue:67
+#: front/src/components/auth/Settings.vue:68
+msgctxt "Content/Settings/Title/Verb"
 msgid "Change my password"
 msgstr "Change my password"
 
-#: front/src/components/auth/Settings.vue:94
+#: front/src/components/auth/Settings.vue:95
+msgctxt "Content/Settings/Button.Label"
 msgid "Change password"
 msgstr "Change password"
 
-#: front/src/views/auth/PasswordResetConfirm.vue:4
+#: front/src/components/Footer.vue:37
+msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
+msgid "Change theme"
+msgstr "Change theme"
+
 #: front/src/views/auth/PasswordResetConfirm.vue:62
+msgctxt "*/Signup/Title"
 msgid "Change your password"
 msgstr "Change your password"
 
-#: front/src/components/auth/Settings.vue:95
+#: front/src/components/auth/Settings.vue:96
+msgctxt "Popup/Settings/Title"
 msgid "Change your password?"
 msgstr "Change your password?"
 
-#: front/src/components/playlists/Editor.vue:21
+#: front/src/components/playlists/Editor.vue:31
+msgctxt "Content/Playlist/Paragraph"
 msgid "Changes synced with server"
 msgstr "Changes synced with server"
 
-#: front/src/components/auth/Settings.vue:70
+#: front/src/components/auth/Settings.vue:71
+msgctxt "Content/Settings/Paragraph'"
 msgid "Changing your password will also change your Subsonic API password if you have requested one."
-msgstr ""
-"Changing your password will also change your Subsonic API password if you "
-"have requested one."
+msgstr "Changing your password will also change your Subsonic API password if you have requested one."
 
-#: front/src/components/auth/Settings.vue:97
-msgid "Changing your password will have the following consequences"
-msgstr "Changing your password will have the following consequences"
+#: front/src/components/auth/Settings.vue:98
+msgctxt "Popup/Settings/Paragraph"
+msgid "Changing your password will have the following consequences:"
+msgstr "Changing your password will have the following consequences:"
 
-#: front/src/components/Footer.vue:40
+#: front/src/components/Footer.vue:48
+msgctxt "Footer/*/List item.Link"
 msgid "Chat room"
 msgstr "Chat room"
 
-#: front/src/App.vue:13
+#: front/src/components/auth/ApplicationForm.vue:24
+msgctxt "Content/Applications/Paragraph/"
+msgid "Checking the parent \"Read\" or \"Write\" scopes implies access to all the corresponding children scopes."
+msgstr "Checking the parent \"Read\" or \"Write\" scopes implies access to all the corresponding children scopes."
+
+#: front/src/components/SetInstanceModal.vue:2
+msgctxt "Popup/Instance/Title"
 msgid "Choose your instance"
 msgstr "Choose your instance"
 
-#: front/src/components/Home.vue:64
-msgid "Clean library"
-msgstr "Clean library"
-
+#: front/src/components/library/EditForm.vue:75
+#: front/src/components/library/EditForm.vue:88
 #: front/src/components/manage/users/InvitationForm.vue:37
+msgctxt "Content/Library/Button.Label"
 msgid "Clear"
 msgstr "Clear"
 
-#: front/src/components/playlists/Editor.vue:40
-#: front/src/components/playlists/Editor.vue:45
+#: front/src/components/playlists/Editor.vue:50
+#: front/src/components/playlists/Editor.vue:55
+msgctxt "*/Playlist/Button.Label/Verb"
 msgid "Clear playlist"
 msgstr "Clear playlist"
 
-#: front/src/components/audio/Player.vue:366
+#: front/src/components/ShortcutsModal.vue:144
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Clear queue"
+msgstr "Clear queue"
+
+#: front/src/components/audio/Player.vue:668
+msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Clear your queue"
 msgstr "Clear your queue"
 
-#: front/src/components/Home.vue:44
-msgid "Click once, listen for hours using built-in radios"
-msgstr "Click once, listen for hours using built-in radios"
+#: front/src/components/mixins/Translations.vue:21
+#: front/src/components/mixins/Translations.vue:22
+msgctxt "Content/Library/Link.Title"
+msgid "Click to display more information about the import process for this upload"
+msgstr "Click to display more information about the import process for this upload"
 
-#: front/src/components/library/FileUpload.vue:75
+#: front/src/components/library/FileUpload.vue:82
+msgctxt "Content/Library/Paragraph/Call to action"
 msgid "Click to select files to upload or drag and drop files or directories"
 msgstr "Click to select files to upload or drag and drop files or directories"
 
-#: front/src/components/ShortcutsModal.vue:20
+#: front/src/components/ShortcutsModal.vue:38
+#: front/src/components/federation/FetchButton.vue:85
+#: front/src/components/library/ImportStatusModal.vue:79
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:34
+msgctxt "*/*/Button.Label/Verb"
 msgid "Close"
 msgstr "Close"
 
+#: front/src/components/federation/FetchButton.vue:88
+msgctxt "*/*/Button.Label/Verb"
+msgid "Close and reload page"
+msgstr "Close and reload page"
+
+#: front/src/components/About.vue:94
+msgctxt "*/*/*/State of registrations"
+msgid "Closed"
+msgstr "Closed"
+
 #: front/src/components/manage/users/InvitationForm.vue:26
 #: front/src/components/manage/users/InvitationsTable.vue:42
+msgctxt "Content/Admin/Table.Label/Noun"
 msgid "Code"
 msgstr "Code"
 
-#: front/src/components/audio/album/Card.vue:43
-#: front/src/components/audio/artist/Card.vue:33
+#: front/src/components/audio/album/Card.vue:41
+#: front/src/components/common/CollapseLink.vue:3
+msgctxt "*/*/Button,Label"
 msgid "Collapse"
 msgstr "Collapse"
 
-#: front/src/components/library/radios/Builder.vue:62
+#: front/src/components/library/radios/Builder.vue:63
+msgctxt "Content/Radio/Table.Label/Verb (Value is a List of Parameters)"
 msgid "Config"
 msgstr "Config"
 
 #: front/src/components/common/DangerousButton.vue:21
+msgctxt "Modal/*/Button.Label/Short, Verb"
 msgid "Confirm"
 msgstr "Confirm"
 
-#: front/src/views/auth/EmailConfirm.vue:4 src/views/auth/EmailConfirm.vue:20
 #: front/src/views/auth/EmailConfirm.vue:51
+msgctxt "Head/Signup/Title"
 msgid "Confirm your e-mail address"
 msgstr "Confirm your e-mail address"
 
 #: front/src/views/auth/EmailConfirm.vue:13
+msgctxt "Content/Signup/Form.Label"
 msgid "Confirmation code"
 msgstr "Confirmation code"
 
-#: front/src/components/common/ActionTable.vue:7
+#: front/src/components/About.vue:67 src/components/Home.vue:65
+msgctxt "Content/Home/Header/Name"
+msgid "Contact"
+msgstr "Contact"
+
+#: front/src/components/moderation/FilterModal.vue:90
+msgctxt "*/Moderation/Message"
+msgid "Content filter successfully added"
+msgstr "Content filter successfully added"
+
+#: front/src/components/auth/Settings.vue:116
+#: front/src/components/mixins/Translations.vue:108
+#: front/src/components/mixins/Translations.vue:109
+msgctxt "Content/Settings/Title/Noun"
+msgid "Content filters"
+msgstr "Content filters"
+
+#: front/src/components/auth/Settings.vue:119
+msgctxt "Content/Settings/Paragraph"
+msgid "Content filters help you hide content you don't want to see on the service."
+msgstr "Content filters help you hide content you don't want to see on the service."
+
+#: front/src/components/common/ActionTable.vue:8
+msgctxt "Content/*/Button.Help text.Paragraph"
 msgid "Content have been updated, click refresh to see up-to-date content"
-msgstr "Content has been updated. Click refresh to see up-to-date content"
+msgstr "Content have been updated, click refresh to see up-to-date content"
 
-#: front/src/components/Footer.vue:48
+#: front/src/components/About.vue:46
+msgctxt "Content/About/Header"
+msgid "Contents"
+msgstr "Contents"
+
+#: front/src/components/Footer.vue:56
+msgctxt "Footer/*/List item.Link"
 msgid "Contribute"
 msgstr "Contribute"
 
-#: front/src/components/audio/EmbedWizard.vue:19
+#: front/src/components/audio/EmbedWizard.vue:29
 #: front/src/components/common/CopyInput.vue:8
+#: front/src/components/forms/PasswordInput.vue:43
+msgctxt "*/*/Button.Label/Short, Verb"
 msgid "Copy"
 msgstr "Copy"
 
-#: front/src/components/playlists/Editor.vue:163
+#: front/src/components/playlists/Editor.vue:194
+msgctxt "Content/Playlist/Button.Tooltip/Verb"
 msgid "Copy queued tracks to playlist"
 msgstr "Copy queued tracks to playlist"
 
-#: front/src/components/audio/EmbedWizard.vue:21
+#: front/src/components/auth/Authorize.vue:55
+msgctxt "Content/Auth/Paragraph"
+msgid "Copy-paste the following code in the application:"
+msgstr "Copy-paste the following code in the application:"
+
+#: front/src/components/audio/EmbedWizard.vue:31
+msgctxt "Popup/Embed/Paragraph"
 msgid "Copy/paste this code in your website HTML"
 msgstr "Copy/paste this code in your website HTML"
 
-#: front/src/components/library/Track.vue:91
+#: front/src/components/library/TrackDetail.vue:10
+#: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:77
+msgctxt "Content/Track/*/Noun"
 msgid "Copyright"
 msgstr "Copyright"
 
 #: front/src/views/auth/EmailConfirm.vue:7
+msgctxt "Content/Signup/Paragraph"
 msgid "Could not confirm your e-mail address"
 msgstr "Could not confirm your e-mail address"
 
 #: front/src/views/content/remote/ScanForm.vue:3
+msgctxt "Content/Library/Error message.Title"
 msgid "Could not fetch remote library"
 msgstr "Could not fetch remote library"
 
-#: front/src/views/content/libraries/FilesTable.vue:213
-msgid "Could not process this track, ensure it is tagged correctly"
-msgstr "Could not process this track, ensure it is tagged correctly"
-
-#: front/src/components/Home.vue:85
-msgid "Covers, lyrics, our goal is to have them all ;)"
-msgstr "Covers, lyrics, our goal is to have them all ;)"
-
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:58
+msgctxt "Content/Moderation/Card.Button.Label/Verb"
 msgid "Create"
 msgstr "Create"
 
-#: front/src/components/auth/Signup.vue:4
+#: front/src/views/auth/Signup.vue:4
+msgctxt "Content/Signup/Title"
 msgid "Create a funkwhale account"
-msgstr "Create a Funkwhale account"
+msgstr "Create a funkwhale account"
+
+#: front/src/components/auth/ApplicationNew.vue:8
+#: front/src/components/auth/ApplicationNew.vue:41
+#: front/src/components/auth/Settings.vue:220
+msgctxt "Content/Settings/Button.Label"
+msgid "Create a new application"
+msgstr "Create a new application"
 
 #: front/src/views/content/libraries/Home.vue:14
+msgctxt "Content/Library/Link/Verb"
 msgid "Create a new library"
 msgstr "Create a new library"
 
 #: front/src/components/playlists/Form.vue:2
+msgctxt "Popup/Playlist/Title/Verb"
 msgid "Create a new playlist"
 msgstr "Create a new playlist"
 
-#: front/src/components/Sidebar.vue:57 src/components/auth/Login.vue:17
+#: front/src/components/Sidebar.vue:57 src/components/auth/LoginForm.vue:15
+msgctxt "*/Signup/Link/Verb"
 msgid "Create an account"
 msgstr "Create an account"
 
+#: front/src/components/auth/ApplicationForm.vue:65
+msgctxt "Content/Applications/Button.Label/Verb"
+msgid "Create application"
+msgstr "Create application"
+
 #: front/src/views/content/libraries/Form.vue:26
+msgctxt "Content/Library/Button.Label/Verb"
 msgid "Create library"
 msgstr "Create library"
 
-#: front/src/components/auth/Signup.vue:53
+#: front/src/components/auth/SignupForm.vue:49
+msgctxt "Content/Signup/Button.Label"
 msgid "Create my account"
 msgstr "Create my account"
 
+#: front/src/components/auth/Settings.vue:264
+msgctxt "Content/Applications/Paragraph"
+msgid "Create one to integrate Funkwhale with third-party applications."
+msgstr "Create one to integrate Funkwhale with third-party applications."
+
 #: front/src/components/playlists/Form.vue:34
+msgctxt "Content/Playlist/Button.Label/Verb"
 msgid "Create playlist"
 msgstr "Create playlist"
 
 #: front/src/components/library/Radios.vue:23
+msgctxt "Content/Radio/Button.Label/Verb"
 msgid "Create your own radio"
 msgstr "Create your own radio"
 
+#: front/src/components/auth/Settings.vue:134
+#: src/components/auth/Settings.vue:227
+#: front/src/components/manage/library/AlbumsTable.vue:44
+#: front/src/components/manage/library/ArtistsTable.vue:43
+#: front/src/components/manage/library/LibrariesTable.vue:54
+#: front/src/components/manage/library/TagsTable.vue:45
+#: front/src/components/manage/library/TracksTable.vue:44
+#: front/src/components/manage/library/UploadsTable.vue:66
+#: front/src/components/manage/moderation/ReportCard.vue:43
 #: front/src/components/manage/users/InvitationsTable.vue:40
-#: front/src/components/mixins/Translations.vue:16
-#: front/src/components/mixins/Translations.vue:17
+#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/mixins/Translations.vue:54
+msgctxt "Content/*/*/Noun"
 msgid "Creation date"
 msgstr "Creation date"
 
 #: front/src/components/auth/Settings.vue:54
+msgctxt "Content/Settings/Title/Noun"
 msgid "Current avatar"
 msgstr "Current avatar"
 
+#: front/src/components/admin/SettingsGroup.vue:67
+msgctxt "Content/Settings/Title/Noun"
+msgid "Current image"
+msgstr "Current image"
+
 #: front/src/views/content/libraries/DetailArea.vue:4
+msgctxt "Content/Library/Title"
 msgid "Current library"
 msgstr "Current library"
 
 #: front/src/components/playlists/PlaylistModal.vue:8
+msgctxt "Popup/Playlist/Title"
 msgid "Current track"
 msgstr "Current track"
 
 #: front/src/views/content/libraries/Quota.vue:2
+msgctxt "Content/Library/Title"
 msgid "Current usage"
 msgstr "Current usage"
 
+#: front/src/components/Footer.vue:94
+msgctxt "Footer/Settings/Dropdown.Label/Theme name"
+msgid "Dark"
+msgstr "Dark"
+
+#: front/src/components/federation/FetchButton.vue:53
+msgctxt "*/*/Error"
+msgid "Data returned by the remote server had invalid or missing attributes"
+msgstr "Data returned by the remote server had invalid or missing attributes"
+
+#: front/src/components/federation/FetchButton.vue:17
+msgctxt "Popup/*/Message.Content"
+msgid "Data was refreshed successfully from remote server."
+msgstr "Data was refreshed successfully from remote server."
+
 #: front/src/views/content/libraries/Detail.vue:27
+msgctxt "Content/Library/Table.Label"
 msgid "Date"
 msgstr "Date"
 
-#: front/src/components/ShortcutsModal.vue:75
+#: front/src/components/library/ImportStatusModal.vue:64
+msgctxt "Popup/Import/Table.Label/Noun"
+msgid "Debug information"
+msgstr "Debug information"
+
+#: front/src/components/ShortcutsModal.vue:128
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Decrease volume"
 msgstr "Decrease volume"
 
-#: front/src/components/manage/library/FilesTable.vue:190
+#: front/src/components/auth/Settings.vue:150
+#: src/components/auth/Settings.vue:251
+#: front/src/components/library/EditCard.vue:93
+#: front/src/components/library/EditCard.vue:98
+#: front/src/components/manage/library/AlbumsTable.vue:188
+#: front/src/components/manage/library/ArtistsTable.vue:178
+#: front/src/components/manage/library/LibrariesTable.vue:205
+#: front/src/components/manage/library/TagsTable.vue:179
+#: front/src/components/manage/library/TracksTable.vue:188
+#: front/src/components/manage/library/UploadsTable.vue:255
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:61
+#: front/src/components/manage/moderation/NotesThread.vue:24
+#: front/src/components/manage/moderation/NotesThread.vue:29
+#: front/src/components/manage/moderation/ReportCard.vue:360
 #: front/src/components/manage/users/InvitationsTable.vue:167
-#: front/src/views/content/libraries/FilesTable.vue:233
-#: front/src/views/content/libraries/Form.vue:29 src/views/playlists/Detail.vue:33
+#: front/src/views/admin/library/AlbumDetail.vue:78
+#: front/src/views/admin/library/AlbumDetail.vue:83
+#: front/src/views/admin/library/ArtistDetail.vue:76
+#: front/src/views/admin/library/ArtistDetail.vue:81
+#: front/src/views/admin/library/LibraryDetail.vue:58
+#: front/src/views/admin/library/LibraryDetail.vue:63
+#: front/src/views/admin/library/TagDetail.vue:41
+#: front/src/views/admin/library/TagDetail.vue:46
+#: front/src/views/admin/library/TrackDetail.vue:77
+#: front/src/views/admin/library/TrackDetail.vue:82
+#: front/src/views/admin/library/UploadDetail.vue:65
+#: front/src/views/admin/library/UploadDetail.vue:70
+#: front/src/views/content/libraries/FilesTable.vue:222
+#: front/src/views/content/libraries/Form.vue:29
+#: src/views/playlists/Detail.vue:42
+msgctxt "*/*/*/Verb"
 msgid "Delete"
 msgstr "Delete"
 
+#: front/src/components/auth/Settings.vue:254
+msgctxt "*/Settings/Button.Label/Verb"
+msgid "Delete application"
+msgstr "Delete application"
+
+#: front/src/components/auth/Settings.vue:252
+msgctxt "Popup/Settings/Title"
+msgid "Delete application \"%{ application }\"?"
+msgstr "Delete application \"%{ application }\"?"
+
 #: front/src/views/content/libraries/Form.vue:39
+msgctxt "Popup/Library/Button.Label/Verb"
 msgid "Delete library"
 msgstr "Delete library"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:69
+msgctxt "Popup/Moderation/Button.Label/Verb"
 msgid "Delete moderation rule"
 msgstr "Delete moderation rule"
 
-#: front/src/views/playlists/Detail.vue:38
+#: front/src/components/auth/Settings.vue:274
+#: src/components/auth/Settings.vue:302
+msgctxt "*/*/Button.Label"
+msgid "Delete my account"
+msgstr "Delete my account"
+
+#: front/src/components/auth/Settings.vue:297
+msgctxt "*/*/Button.Label"
+msgid "Delete my account…"
+msgstr "Delete my account…"
+
+#: front/src/views/playlists/Detail.vue:47
+msgctxt "Popup/Playlist/Button.Label/Verb"
 msgid "Delete playlist"
 msgstr "Delete playlist"
 
 #: front/src/views/radios/Detail.vue:28
+msgctxt "Popup/Radio/Button.Label/Verb"
 msgid "Delete radio"
 msgstr "Delete radio"
 
+#: front/src/components/manage/moderation/ReportCard.vue:357
+msgctxt "Content/Moderation/Button/Verb"
+msgid "Delete reported object"
+msgstr "Delete reported object"
+
+#: front/src/components/manage/moderation/ReportCard.vue:358
+msgctxt "Content/Moderation/Popup/Header"
+msgid "Delete reported object?"
+msgstr "Delete reported object?"
+
+#: front/src/views/admin/library/AlbumDetail.vue:79
+#: front/src/views/admin/library/TrackDetail.vue:78
+msgctxt "Popup/Library/Title"
+msgid "Delete this album?"
+msgstr "Delete this album?"
+
+#: front/src/views/admin/library/ArtistDetail.vue:77
+msgctxt "Popup/Library/Title"
+msgid "Delete this artist?"
+msgstr "Delete this artist?"
+
+#: front/src/views/admin/library/LibraryDetail.vue:59
 #: front/src/views/content/libraries/Form.vue:31
+msgctxt "Popup/Library/Title"
 msgid "Delete this library?"
 msgstr "Delete this library?"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:63
+msgctxt "Popup/Moderation/Title"
 msgid "Delete this moderation rule?"
 msgstr "Delete this moderation rule?"
 
-#: front/src/components/favorites/List.vue:34 src/components/library/Artists.vue:26
-#: front/src/components/library/Radios.vue:47
-#: front/src/components/manage/library/FilesTable.vue:20
+#: front/src/components/manage/moderation/NotesThread.vue:25
+msgctxt "Popup/Moderation/Title"
+msgid "Delete this note?"
+msgstr "Delete this note?"
+
+#: front/src/components/library/EditCard.vue:94
+msgctxt "Popup/Library/Title"
+msgid "Delete this suggestion?"
+msgstr "Delete this suggestion?"
+
+#: front/src/views/admin/library/TagDetail.vue:42
+msgctxt "Popup/Library/Title"
+msgid "Delete this tag?"
+msgstr "Delete this tag?"
+
+#: front/src/views/admin/library/UploadDetail.vue:66
+msgctxt "Popup/Library/Title"
+msgid "Delete this upload?"
+msgstr "Delete this upload?"
+
+#: front/src/components/favorites/List.vue:35
+#: src/components/library/Albums.vue:30
+#: front/src/components/library/Artists.vue:30
+#: src/components/library/Radios.vue:47
+#: front/src/components/manage/library/AlbumsTable.vue:22
+#: front/src/components/manage/library/ArtistsTable.vue:22
+#: front/src/components/manage/library/EditsCardList.vue:40
+#: front/src/components/manage/library/LibrariesTable.vue:31
+#: front/src/components/manage/library/TagsTable.vue:22
+#: front/src/components/manage/library/TracksTable.vue:22
+#: front/src/components/manage/library/UploadsTable.vue:41
 #: front/src/components/manage/moderation/AccountsTable.vue:22
-#: front/src/components/manage/moderation/DomainsTable.vue:20
+#: front/src/components/manage/moderation/DomainsTable.vue:28
 #: front/src/components/manage/users/UsersTable.vue:20
+#: front/src/views/admin/moderation/ReportsList.vue:45
 #: front/src/views/content/libraries/FilesTable.vue:32
 #: front/src/views/playlists/List.vue:28
+msgctxt "Content/Search/Dropdown"
 msgid "Descending"
 msgstr "Descending"
 
+#: front/src/components/manage/moderation/NoteForm.vue:37
+msgctxt "Content/Moderation/Placeholder"
+msgid "Describe what actions have been taken, or any other related updates…"
+msgstr "Describe what actions have been taken, or any other related updates…"
+
 #: front/src/components/library/radios/Builder.vue:25
+#: front/src/views/admin/library/LibraryDetail.vue:132
 #: front/src/views/content/libraries/Form.vue:14
+msgctxt "*/*/*/Noun"
 msgid "Description"
 msgstr "Description"
 
-#: front/src/views/content/libraries/Card.vue:47
-msgid "Detail"
-msgstr "Detail"
-
-#: front/src/views/content/remote/Card.vue:50
+#: front/src/views/content/libraries/Card.vue:48
+#: src/views/content/remote/Card.vue:67
+msgctxt "Content/Library/Card.Button.Label/Noun"
 msgid "Details"
 msgstr "Details"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:455
+#: front/src/views/admin/moderation/AccountsDetail.vue:511
+msgctxt "Content/Moderation/Help text"
 msgid "Determine how much content the user can upload. Leave empty to use the default value of the instance."
-msgstr ""
-"Determine how much content the user can upload. Leave empty to use the "
-"default value of the instance."
+msgstr "Determine how much content the user can upload. Leave empty to use the default value of the instance."
 
 #: front/src/components/mixins/Translations.vue:8
 #: front/src/components/mixins/Translations.vue:9
+msgctxt "Content/Settings/Dropdown.Help text"
 msgid "Determine the visibility level of your activity"
 msgstr "Determine the visibility level of your activity"
 
-#: front/src/components/auth/Settings.vue:103
-#: front/src/components/auth/SubsonicTokenForm.vue:51
+#: front/src/components/auth/Settings.vue:104
+#: front/src/components/auth/SubsonicTokenForm.vue:56
+msgctxt "Popup/Settings/Button.Label"
 msgid "Disable access"
 msgstr "Disable access"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:48
+#: front/src/components/auth/SubsonicTokenForm.vue:53
+msgctxt "Content/Settings/Button.Label/Verb"
 msgid "Disable Subsonic access"
 msgstr "Disable Subsonic access"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:49
+#: front/src/components/auth/SubsonicTokenForm.vue:54
+msgctxt "Popup/Settings/Title"
 msgid "Disable Subsonic API access?"
 msgstr "Disable Subsonic API access?"
 
+#: front/src/components/About.vue:118 src/components/About.vue:131
+#: front/src/components/About.vue:144
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:18
-#: front/src/views/admin/moderation/AccountsDetail.vue:128
-#: front/src/views/admin/moderation/AccountsDetail.vue:132
+#: front/src/views/admin/moderation/AccountsDetail.vue:157
+#: front/src/views/admin/moderation/AccountsDetail.vue:161
+msgctxt "*/*/*/State of feature"
 msgid "Disabled"
 msgstr "Disabled"
 
+#: front/src/views/admin/library/TrackDetail.vue:151
+msgctxt "*/*/*/Noun"
+msgid "Disc number"
+msgstr "Disc number"
+
+#: front/src/components/Home.vue:157
+msgctxt "Content/Home/Link"
+msgid "Discover everything you need to know about Funkwhale and its features"
+msgstr "Discover everything you need to know about Funkwhale and its features"
+
 #: front/src/components/auth/SubsonicTokenForm.vue:13
+msgctxt "Content/Settings/Link"
 msgid "Discover how to use Funkwhale from other apps"
 msgstr "Discover how to use Funkwhale from other apps"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:103
+#: front/src/views/Notifications.vue:45
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Discover other ways to help"
+msgstr "Discover other ways to help"
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:132
+msgctxt "'Content/*/*/Noun'"
 msgid "Display name"
 msgstr "Display name"
 
 #: front/src/components/library/radios/Builder.vue:30
+msgctxt "Content/Radio/Checkbox.Label/Verb"
 msgid "Display publicly"
 msgstr "Display publicly"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:122
+msgctxt "Content/Moderation/Help text"
 msgid "Do not download any media file (audio, album cover, account avatar…) from this account or domain. This will purge existing content as well."
-msgstr ""
-"Do not download any media files (audio, album cover, account avatar…) from "
-"this account or domain. This will purge existing content as well."
+msgstr "Do not download any media file (audio, album cover, account avatar…) from this account or domain. This will purge existing content as well."
+
+#: front/src/views/Notifications.vue:36
+msgctxt "Content/Notifications/Header"
+msgid "Do you like Funkwhale?"
+msgstr "Do you like Funkwhale?"
 
-#: front/src/components/playlists/Editor.vue:42
+#: front/src/components/playlists/Editor.vue:51
+msgctxt "Popup/Playlist/Title"
 msgid "Do you want to clear the playlist \"%{ playlist }\"?"
 msgstr "Do you want to clear the playlist \"%{ playlist }\"?"
 
 #: front/src/components/common/DangerousButton.vue:7
+msgctxt "Modal/*/Title"
 msgid "Do you want to confirm this action?"
 msgstr "Do you want to confirm this action?"
 
-#: front/src/views/playlists/Detail.vue:35
+#: front/src/views/playlists/Detail.vue:43
+msgctxt "Popup/Playlist/Title/Call to action"
 msgid "Do you want to delete the playlist \"%{ playlist }\"?"
 msgstr "Do you want to delete the playlist \"%{ playlist }\"?"
 
 #: front/src/views/radios/Detail.vue:26
+msgctxt "Popup/Radio/Title"
 msgid "Do you want to delete the radio \"%{ radio }\"?"
 msgstr "Do you want to delete the radio \"%{ radio }\"?"
 
-#: front/src/components/common/ActionTable.vue:36
+#: front/src/components/auth/Settings.vue:298
+msgctxt "Popup/Settings/Title"
+msgid "Do you want to delete your account?"
+msgstr "Do you want to delete your account?"
+
+#: front/src/components/moderation/FilterModal.vue:3
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Do you want to hide content from artist \"%{ name }\"?"
+msgstr "Do you want to hide content from artist \"%{ name }\"?"
+
+#: front/src/components/common/ActionTable.vue:37
+msgctxt "Modal/*/Title"
 msgid "Do you want to launch %{ action } on %{ count } element?"
 msgid_plural "Do you want to launch %{ action } on %{ count } elements?"
 msgstr[0] "Do you want to launch %{ action } on %{ count } element?"
 msgstr[1] "Do you want to launch %{ action } on %{ count } elements?"
 
-#: front/src/components/Sidebar.vue:107
+#: front/src/components/moderation/ReportModal.vue:3
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Do you want to report this object?"
+msgstr "Do you want to report this object?"
+
+#: front/src/components/Sidebar.vue:122
+msgctxt "Sidebar/Queue/Message"
 msgid "Do you want to restore your previous queue?"
 msgstr "Do you want to restore your previous queue?"
 
 #: front/src/components/Footer.vue:31
+msgctxt "Footer/*/List item.Link/Short, Noun"
 msgid "Documentation"
 msgstr "Documentation"
 
+#: front/src/components/manage/library/AlbumsTable.vue:41
+#: front/src/components/manage/library/ArtistsTable.vue:40
+#: front/src/components/manage/library/LibrariesTable.vue:50
+#: front/src/components/manage/library/TracksTable.vue:42
+#: front/src/components/manage/library/UploadsTable.vue:62
 #: front/src/components/manage/moderation/AccountsTable.vue:40
-#: front/src/components/mixins/Translations.vue:34
-#: front/src/views/admin/moderation/AccountsDetail.vue:93
-#: front/src/components/mixins/Translations.vue:35
+#: front/src/components/manage/moderation/ReportCard.vue:169
+#: front/src/components/manage/moderation/ReportCard.vue:179
+#: front/src/components/mixins/Translations.vue:72
+#: front/src/views/admin/library/AlbumDetail.vue:124
+#: front/src/views/admin/library/ArtistDetail.vue:112
+#: front/src/views/admin/library/LibraryDetail.vue:123
+#: front/src/views/admin/library/TrackDetail.vue:176
+#: front/src/views/admin/library/UploadDetail.vue:121
+#: front/src/views/admin/moderation/AccountsDetail.vue:123
+#: front/src/components/mixins/Translations.vue:73
+msgctxt "Content/Moderation/*/Noun"
 msgid "Domain"
 msgstr "Domain"
 
-#: front/src/views/admin/moderation/Base.vue:5
+#: front/src/views/admin/moderation/Base.vue:8
 #: front/src/views/admin/moderation/DomainsList.vue:3
-#: front/src/views/admin/moderation/DomainsList.vue:48
+#: front/src/views/admin/moderation/DomainsList.vue:54
+msgctxt "*/Moderation/*/Noun"
 msgid "Domains"
 msgstr "Domains"
 
-#: front/src/components/library/Track.vue:55
+#: front/src/views/Notifications.vue:42
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Donate"
+msgstr "Donate"
+
+#: front/src/components/library/TrackBase.vue:37
+#: front/src/views/admin/library/UploadDetail.vue:58
+msgctxt "Content/Track/Link/Verb"
 msgid "Download"
 msgstr "Download"
 
-#: front/src/components/playlists/Editor.vue:49
+#: front/src/components/playlists/Editor.vue:59
+msgctxt "Content/Playlist/Paragraph/Call to action"
 msgid "Drag and drop rows to reorder tracks in the playlist"
 msgstr "Drag and drop rows to reorder tracks in the playlist"
 
-#: front/src/components/audio/track/Table.vue:9 src/components/library/Track.vue:111
-#: front/src/components/manage/library/FilesTable.vue:43
-#: front/src/components/mixins/Translations.vue:30
-#: front/src/views/content/libraries/FilesTable.vue:59
-#: front/src/components/mixins/Translations.vue:31
+#: front/src/components/audio/track/Table.vue:10
+#: front/src/components/library/TrackDetail.vue:30
+#: front/src/components/mixins/Translations.vue:68
+#: front/src/views/admin/library/UploadDetail.vue:238
+#: front/src/views/content/libraries/FilesTable.vue:60
+#: front/src/components/mixins/Translations.vue:69
+msgctxt "Content/*/*"
 msgid "Duration"
 msgstr "Duration"
 
 #: front/src/views/auth/EmailConfirm.vue:23
+msgctxt "Content/Signup/Message"
 msgid "E-mail address confirmed"
 msgstr "E-mail address confirmed"
 
-#: front/src/components/Home.vue:93
-msgid "Easy to use"
-msgstr "Easy to use"
-
+#: front/src/components/auth/Settings.vue:246
+#: src/components/library/AlbumBase.vue:73
+#: front/src/components/library/ArtistBase.vue:84
+#: front/src/components/library/TrackBase.vue:89
+#: front/src/components/manage/moderation/InstancePolicyCard.vue:45
+#: front/src/components/radios/Card.vue:23
+#: src/views/admin/library/AlbumDetail.vue:71
+#: front/src/views/admin/library/ArtistDetail.vue:69
+#: front/src/views/admin/library/TrackDetail.vue:70
 #: front/src/views/content/libraries/Detail.vue:9
+#: src/views/playlists/Detail.vue:31
+msgctxt "Content/*/Button.Label/Verb"
 msgid "Edit"
 msgstr "Edit"
 
-#: front/src/components/About.vue:22
-msgid "Edit instance info"
-msgstr "Edit instance info"
+#: front/src/components/auth/ApplicationEdit.vue:30
+#: front/src/components/auth/ApplicationEdit.vue:75
+msgctxt "Content/Applications/Title"
+msgid "Edit application"
+msgstr "Edit application"
 
-#: front/src/components/radios/Card.vue:22 src/views/playlists/Detail.vue:30
-msgid "Edit…"
-msgstr "Edit…"
-
-#: front/src/components/auth/Signup.vue:30
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:3
+msgctxt "Content/Moderation/Card.Title/Verb"
+msgid "Edit moderation rule"
+msgstr "Edit moderation rule"
+
+#: front/src/components/library/AlbumEdit.vue:4
+msgctxt "Content/*/Title"
+msgid "Edit this album"
+msgstr "Edit this album"
+
+#: front/src/components/library/ArtistEdit.vue:4
+msgctxt "Content/*/Title"
+msgid "Edit this artist"
+msgstr "Edit this artist"
+
+#: front/src/components/library/TrackEdit.vue:4
+msgctxt "Content/*/Title"
+msgid "Edit this track"
+msgstr "Edit this track"
+
+#: front/src/components/mixins/Translations.vue:116
+#: front/src/views/admin/library/AlbumDetail.vue:198
+#: front/src/views/admin/library/ArtistDetail.vue:186
+#: front/src/views/admin/library/Base.vue:5
+#: src/views/admin/library/EditsList.vue:24
+#: front/src/views/admin/library/TrackDetail.vue:250
+#: front/src/components/mixins/Translations.vue:117
+msgctxt "*/Admin/*/Noun"
+msgid "Edits"
+msgstr "Edits"
+
+#: front/src/components/auth/SignupForm.vue:26
 #: front/src/components/manage/users/UsersTable.vue:38
+#: front/src/components/moderation/ReportModal.vue:31
+msgctxt "Content/*/*/Noun"
 msgid "Email"
 msgstr "Email"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:111
+#: front/src/views/admin/moderation/AccountsDetail.vue:140
+msgctxt "Content/*/*"
 msgid "Email address"
 msgstr "Email address"
 
-#: front/src/components/library/Album.vue:38 src/components/library/Track.vue:62
+#: front/src/components/library/AlbumBase.vue:54
+#: front/src/components/library/ArtistBase.vue:65
+#: front/src/components/library/TrackBase.vue:70
+#: src/views/playlists/Detail.vue:38
+msgctxt "Content/*/Button.Label/Verb"
 msgid "Embed"
 msgstr "Embed"
 
-#: front/src/components/audio/EmbedWizard.vue:20
+#: front/src/components/audio/EmbedWizard.vue:30
+msgctxt "Popup/Embed/Input.Label/Noun"
 msgid "Embed code"
 msgstr "Embed code"
 
-#: front/src/components/library/Album.vue:42
+#: front/src/components/library/AlbumBase.vue:27
+msgctxt "Popup/Album/Title/Verb"
 msgid "Embed this album on your website"
 msgstr "Embed this album on your website"
 
-#: front/src/components/library/Track.vue:66
+#: front/src/components/library/ArtistBase.vue:38
+msgctxt "Popup/Artist/Title/Verb"
+msgid "Embed this artist work on your website"
+msgstr "Embed this artist work on your website"
+
+#: front/src/views/playlists/Detail.vue:52
+msgctxt "Popup/Album/Title/Verb"
+msgid "Embed this playlist on your website"
+msgstr "Embed this playlist on your website"
+
+#: front/src/components/library/TrackBase.vue:43
+msgctxt "Popup/Track/Title"
 msgid "Embed this track on your website"
 msgstr "Embed this track on your website"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:230
-#: front/src/views/admin/moderation/DomainsDetail.vue:187
+#: front/src/views/admin/moderation/AccountsDetail.vue:260
+#: front/src/views/admin/moderation/DomainsDetail.vue:224
+msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Emitted library follows"
 msgstr "Emitted library follows"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:214
-#: front/src/views/admin/moderation/DomainsDetail.vue:171
+#: front/src/views/admin/moderation/AccountsDetail.vue:244
+#: front/src/views/admin/moderation/DomainsDetail.vue:208
+msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Emitted messages"
 msgstr "Emitted messages"
 
+#: front/src/components/About.vue:114 src/components/About.vue:127
+#: front/src/components/About.vue:140
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:8
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:17
-#: front/src/views/admin/moderation/AccountsDetail.vue:127
-#: front/src/views/admin/moderation/AccountsDetail.vue:131
+#: front/src/views/admin/moderation/AccountsDetail.vue:156
+#: front/src/views/admin/moderation/AccountsDetail.vue:160
+msgctxt "*/*/*/State of feature"
 msgid "Enabled"
 msgstr "Enabled"
 
-#: front/src/views/playlists/Detail.vue:29
+#: front/src/views/playlists/Detail.vue:30
+msgctxt "Content/Playlist/Button.Label/Verb"
 msgid "End edition"
 msgstr "End edition"
 
 #: front/src/views/content/remote/ScanForm.vue:50
+msgctxt "Content/Library/Input.Placeholder"
 msgid "Enter a library URL"
 msgstr "Enter a library URL"
 
-#: front/src/components/library/Radios.vue:140
+#: front/src/components/library/Radios.vue:141
+msgctxt "Content/Search/Input.Placeholder"
 msgid "Enter a radio name…"
 msgstr "Enter a radio name…"
 
-#: front/src/components/library/Artists.vue:118
+#: front/src/components/library/Albums.vue:128
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Enter album title…"
+msgstr "Enter album title…"
+
+#: front/src/components/library/Artists.vue:116
+msgctxt "Content/Search/Input.Placeholder"
 msgid "Enter artist name…"
 msgstr "Enter artist name…"
 
 #: front/src/views/playlists/List.vue:107
+msgctxt "Content/Playlist/Placeholder/Call to action"
 msgid "Enter playlist name…"
 msgstr "Enter playlist name…"
 
-#: front/src/components/auth/Signup.vue:102
+#: front/src/views/auth/PasswordReset.vue:54
+msgctxt "Content/Signup/Input.Placeholder"
+msgid "Enter the email address linked to your account"
+msgstr "Enter the email address linked to your account"
+
+#: front/src/components/auth/SignupForm.vue:96
+msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your email"
 msgstr "Enter your email"
 
-#: front/src/components/auth/Signup.vue:98 src/components/auth/Signup.vue:99
+#: front/src/components/auth/SignupForm.vue:91
+#: src/components/auth/SignupForm.vue:93
+msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your invitation code (case insensitive)"
 msgstr "Enter your invitation code (case insensitive)"
 
 #: front/src/components/metadata/Search.vue:114
+msgctxt "Content/Library/Input.Placeholder/Verb"
 msgid "Enter your search query…"
 msgstr "Enter your search query…"
 
-#: front/src/components/auth/Signup.vue:101
+#: front/src/components/auth/SignupForm.vue:95
+msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your username"
 msgstr "Enter your username"
 
-#: front/src/components/auth/Login.vue:83
+#: front/src/components/auth/LoginForm.vue:81
+msgctxt "Content/Login/Input.Placeholder"
 msgid "Enter your username or email"
 msgstr "Enter your username or email"
 
 #: front/src/components/auth/SubsonicTokenForm.vue:19
 #: front/src/views/content/libraries/Form.vue:4
+msgctxt "Content/*/Error message.Title"
 msgid "Error"
 msgstr "Error"
 
-#: front/src/views/admin/Settings.vue:87
+#: front/src/components/federation/FetchButton.vue:34
+#: front/src/components/library/ImportStatusModal.vue:32
+msgctxt "Popup/Import/Table.Label/Noun"
+msgid "Error detail"
+msgstr "Error detail"
+
+#: front/src/views/admin/Settings.vue:89
+msgctxt "Content/Admin/Menu"
 msgid "Error reporting"
 msgstr "Error reporting"
 
-#: front/src/components/common/ActionTable.vue:92
+#: front/src/components/federation/FetchButton.vue:26
+#: front/src/components/library/ImportStatusModal.vue:24
+msgctxt "Popup/Import/Table.Label/Noun"
+msgid "Error type"
+msgstr "Error type"
+
+#: front/src/components/common/ActionTable.vue:94
+msgctxt "Content/*/Error message/Header"
 msgid "Error while applying action"
 msgstr "Error while applying action"
 
 #: front/src/views/auth/PasswordReset.vue:7
+msgctxt "Content/Signup/Card.Title"
 msgid "Error while asking for a password reset"
 msgstr "Error while asking for a password reset"
 
+#: front/src/components/auth/Authorize.vue:6
+msgctxt "Popup/Moderation/Error message"
+msgid "Error while authorizing application"
+msgstr "Error while authorising application"
+
 #: front/src/views/auth/PasswordResetConfirm.vue:7
+msgctxt "Content/Signup/Card.Title"
 msgid "Error while changing your password"
 msgstr "Error while changing your password"
 
 #: front/src/views/admin/moderation/DomainsList.vue:6
+msgctxt "Content/Moderation/Message.Title"
 msgid "Error while creating domain"
 msgstr "Error while creating domain"
 
+#: front/src/components/moderation/FilterModal.vue:13
+msgctxt "Popup/Moderation/Error message"
+msgid "Error while creating filter"
+msgstr "Error while creating filter"
+
 #: front/src/components/manage/users/InvitationForm.vue:4
+msgctxt "Content/Admin/Error message.Title"
 msgid "Error while creating invitation"
 msgstr "Error while creating invitation"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:7
+msgctxt "Content/Moderation/Error message.Title"
 msgid "Error while creating rule"
 msgstr "Error while creating rule"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:126
+#: front/src/components/auth/Authorize.vue:7
+msgctxt "Popup/Moderation/Error message"
+msgid "Error while fetching application data"
+msgstr "Error while fetching application data"
+
+#: front/src/views/admin/moderation/DomainsDetail.vue:155
+msgctxt "Content/Moderation/Table"
 msgid "Error while fetching node info"
 msgstr "Error while fetching node info"
 
 #: front/src/components/admin/SettingsGroup.vue:5
+#: front/src/components/federation/FetchButton.vue:73
+msgctxt "Content/*/Error message.Title"
 msgid "Error while saving settings"
 msgstr "Error while saving settings"
 
-#: front/src/views/content/libraries/FilesTable.vue:212
+#: front/src/components/library/EditForm.vue:46
+msgctxt "Content/Library/Error message.Title"
+msgid "Error while submitting edit"
+msgstr "Error while submitting edit"
+
+#: front/src/components/manage/moderation/NoteForm.vue:3
+msgctxt "Content/Moderation/Error message.Title"
+msgid "Error while submitting note"
+msgstr "Error while submitting note"
+
+#: front/src/components/moderation/ReportModal.vue:11
+msgctxt "Popup/Moderation/Error message"
+msgid "Error while submitting report"
+msgstr "Error while submitting report"
+
+#: front/src/components/mixins/Translations.vue:32
+#: front/src/components/mixins/Translations.vue:33
+msgctxt "Content/Library/Table/Short"
 msgid "Errored"
 msgstr "Errored"
 
 #: front/src/views/content/libraries/Quota.vue:75
+msgctxt "Content/Library/Label"
 msgid "Errored files"
 msgstr "Errored files"
 
-#: front/src/components/playlists/Form.vue:89
+#: front/src/components/mixins/Translations.vue:17
+#: front/src/components/mixins/Translations.vue:18
+msgctxt "Content/Settings/Dropdown/Short"
 msgid "Everyone"
 msgstr "Everyone"
 
 #: front/src/components/mixins/Translations.vue:11
-#: front/src/components/playlists/Form.vue:85 src/views/content/libraries/Form.vue:73
 #: front/src/components/mixins/Translations.vue:12
+msgctxt "Content/Settings/Dropdown"
 msgid "Everyone on this instance"
 msgstr "Everyone on this instance"
 
-#: front/src/views/content/libraries/Form.vue:74
+#: front/src/components/mixins/Translations.vue:12
+#: front/src/components/mixins/Translations.vue:13
+msgctxt "Content/Settings/Dropdown"
 msgid "Everyone, across all instances"
 msgstr "Everyone, across all instances"
 
-#: front/src/components/library/radios/Builder.vue:61
+#: front/src/components/library/radios/Builder.vue:62
+msgctxt "Content/Radio/Table.Label/Verb"
 msgid "Exclude"
 msgstr "Exclude"
 
+#: front/src/components/common/CollapseLink.vue:2
+msgctxt "*/*/Button,Label"
+msgid "Expand"
+msgstr "Expand"
+
 #: front/src/components/manage/users/InvitationsTable.vue:41
-#: front/src/components/mixins/Translations.vue:22
-#: front/src/components/mixins/Translations.vue:23
+#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:60
+msgctxt "Content/Admin/Table.Label/Noun"
 msgid "Expiration date"
 msgstr "Expiry date"
 
 #: front/src/components/manage/users/InvitationsTable.vue:50
+msgctxt "Content/Admin/Table"
 msgid "Expired"
 msgstr "Expired"
 
 #: front/src/components/manage/users/InvitationsTable.vue:21
+msgctxt "Content/Admin/Dropdown/Adjective"
 msgid "Expired/used"
 msgstr "Expired/used"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:110
+msgctxt "Content/Moderation/Help text"
 msgid "Explain why you're applying this policy. Depending on your instance configuration, this will help you remember why you acted on this account or domain, and may be displayed publicly to help users understand what moderation rules are in place."
-msgstr ""
-"Explain why you're applying this policy. Depending on your instance "
-"configuration, this will help you remember why you acted on this account or "
-"domain, and may be displayed publicly to help users understand what "
-"moderation rules are in place."
+msgstr "Explain why you're applying this policy. Depending on your instance configuration, this will help you remember why you acted on this account or domain, and may be displayed publicly to help users understand what moderation rules are in place."
 
+#: front/src/components/manage/library/UploadsTable.vue:25
 #: front/src/views/content/libraries/FilesTable.vue:16
+msgctxt "Content/Library/Dropdown"
 msgid "Failed"
 msgstr "Failed"
 
-#: front/src/views/content/remote/Card.vue:58
+#: front/src/views/content/remote/Card.vue:75
+msgctxt "Content/Library/Card.List item/Noun"
 msgid "Failed tracks:"
 msgstr "Failed tracks:"
 
+#: front/src/views/admin/library/AlbumDetail.vue:171
+#: front/src/views/admin/library/ArtistDetail.vue:159
+#: front/src/views/admin/library/TrackDetail.vue:223
+msgctxt "*/*/*"
+msgid "Favorited tracks"
+msgstr "Favourited tracks"
+
 #: front/src/components/Sidebar.vue:66
+#: src/components/mixins/Translations.vue:88
+#: front/src/components/mixins/Translations.vue:89
+msgctxt "Sidebar/Favorites/List item.Link/Noun"
 msgid "Favorites"
 msgstr "Favourites"
 
-#: front/src/views/admin/Settings.vue:84
+#: front/src/components/About.vue:110 src/views/admin/Settings.vue:84
+msgctxt "*/*/*"
 msgid "Federation"
 msgstr "Federation"
 
-#: front/src/components/library/FileUpload.vue:84
+#: front/src/components/library/TrackDetail.vue:66
+msgctxt "Content/*/*/Noun"
+msgid "Federation ID"
+msgstr "Federation ID"
+
+#: front/src/components/library/EditCard.vue:45
+msgctxt "Content/Library/Card.Table.Header/Short"
+msgid "Field"
+msgstr "Field"
+
+#: front/src/components/library/FileUpload.vue:93
+msgctxt "Content/Library/Table.Label"
 msgid "Filename"
 msgstr "Filename"
 
-#: front/src/views/admin/library/Base.vue:5 src/views/admin/library/FilesList.vue:21
-msgid "Files"
-msgstr "Files"
-
-#: front/src/components/library/radios/Builder.vue:60
+#: front/src/components/library/radios/Builder.vue:61
+msgctxt "Content/Radio/Table.Label/Noun"
 msgid "Filter name"
 msgstr "Filter name"
 
+#: front/src/components/Home.vue:118
+msgctxt "Content/Home/Link"
+msgid "Find another pod"
+msgstr "Find another pod"
+
+#: front/src/components/manage/library/UploadsTable.vue:26
+#: front/src/components/mixins/Translations.vue:36
 #: front/src/views/content/libraries/FilesTable.vue:17
-#: front/src/views/content/libraries/FilesTable.vue:216
+#: front/src/components/mixins/Translations.vue:37
+msgctxt "Content/Library/*"
 msgid "Finished"
 msgstr "Finished"
 
 #: front/src/components/manage/moderation/AccountsTable.vue:42
-#: front/src/components/manage/moderation/DomainsTable.vue:41
-#: front/src/views/admin/moderation/AccountsDetail.vue:159
-#: front/src/views/admin/moderation/DomainsDetail.vue:78
+#: front/src/components/manage/moderation/DomainsTable.vue:49
+#: front/src/views/admin/library/AlbumDetail.vue:155
+#: front/src/views/admin/library/ArtistDetail.vue:143
+#: front/src/views/admin/library/LibraryDetail.vue:162
+#: front/src/views/admin/library/TagDetail.vue:98
+#: front/src/views/admin/library/TrackDetail.vue:207
+#: front/src/views/admin/library/UploadDetail.vue:167
+#: front/src/views/admin/moderation/AccountsDetail.vue:236
+#: front/src/views/admin/moderation/DomainsDetail.vue:188
+msgctxt "Content/Moderation/Table.Label/Short (Value is a date)"
 msgid "First seen"
 msgstr "First seen"
 
-#: front/src/components/mixins/Translations.vue:17
-#: front/src/components/mixins/Translations.vue:18
+#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:57
+msgctxt "Content/Moderation/Dropdown/Noun"
 msgid "First seen date"
 msgstr "First seen date"
 
-#: front/src/views/content/remote/Card.vue:83
+#: front/src/components/ShortcutsModal.vue:64
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Focus searchbar"
+msgstr "Focus searchbar"
+
+#: front/src/views/content/remote/Card.vue:100
+msgctxt "Content/Library/Card.Button.Label/Verb"
 msgid "Follow"
 msgstr "Follow"
 
 #: front/src/views/content/Home.vue:16
+msgctxt "Content/Library/Title/Verb"
 msgid "Follow remote libraries"
 msgstr "Follow remote libraries"
 
-#: front/src/views/content/remote/Card.vue:88
+#: front/src/views/content/remote/Card.vue:105
+msgctxt "Content/Library/Card.Paragraph"
 msgid "Follow request pending approval"
 msgstr "Follow request pending approval"
 
-#: front/src/components/mixins/Translations.vue:38
+#: front/src/components/manage/library/LibrariesTable.vue:53
+#: front/src/components/mixins/Translations.vue:76
+#: front/src/views/admin/library/LibraryDetail.vue:170
 #: front/src/views/content/libraries/Detail.vue:7
-#: front/src/components/mixins/Translations.vue:39
+#: front/src/components/mixins/Translations.vue:77
+msgctxt "Content/Federation/*/Noun"
 msgid "Followers"
 msgstr "Followers"
 
-#: front/src/views/content/remote/Card.vue:93
+#: front/src/views/content/remote/Card.vue:116
+msgctxt "Content/Library/Card.Paragraph"
 msgid "Following"
 msgstr "Following"
 
-#: front/src/components/library/Track.vue:17
-msgid "From album %{ album } by %{ artist }"
-msgstr "From album %{ album } by %{ artist }"
+#: front/src/components/mixins/Translations.vue:96
+#: front/src/components/mixins/Translations.vue:97
+msgctxt "Content/OAuth Scopes/Label"
+msgid "Follows"
+msgstr "Follows"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:7
-msgid "Funkwhale is compatible with other music players that support the Subsonic API."
-msgstr ""
-"Funkwhale is compatible with other music players that support the Subsonic "
-"API."
+#: front/src/components/library/TrackBase.vue:245
+msgctxt "Content/Track/Paragraph"
+msgid "From album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgstr "From album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
 
-#: front/src/components/Home.vue:95
-msgid "Funkwhale is dead simple to use."
-msgstr "Funkwhale is dead simple to use."
+#: front/src/components/auth/Authorize.vue:28
+msgctxt "Content/Auth/Label/Noun"
+msgid "Full access"
+msgstr "Full access"
 
-#: front/src/components/Home.vue:39
-msgid "Funkwhale is designed to make it easy to listen to music you like, or to discover new artists."
-msgstr ""
-"Funkwhale is designed to make it easy to listen to music you like, or to "
-"discover new artists."
+#: front/src/components/auth/SubsonicTokenForm.vue:7
+msgctxt "Content/Settings/Paragraph'"
+msgid "Funkwhale is compatible with other music players that support the Subsonic API."
+msgstr "Funkwhale is compatible with other music players that support the Subsonic API."
 
-#: front/src/components/Home.vue:116
-msgid "Funkwhale is free and gives you control on your music."
-msgstr "Funkwhale is free and gives you control of your music."
+#: front/src/components/Home.vue:88
+msgctxt "Content/Home/Paragraph"
+msgid "Funkwhale is free and developped by a friendly community of volunteers."
+msgstr "Funkwhale is free and developed by a friendly community of volunteers."
 
-#: front/src/components/Home.vue:66
-msgid "Funkwhale takes care of handling your music"
-msgstr "Funkwhale takes care of handling your music"
+#: front/src/components/About.vue:78
+msgctxt "*/*/*"
+msgid "Funkwhale version"
+msgstr "Funkwhale version"
 
-#: front/src/components/ShortcutsModal.vue:38
+#: front/src/components/ShortcutsModal.vue:56
+msgctxt "Popup/Keyboard shortcuts/Title"
 msgid "General shortcuts"
 msgstr "General shortcuts"
 
 #: front/src/components/manage/users/InvitationForm.vue:16
+msgctxt "Content/Admin/Button.Label/Verb"
 msgid "Get a new invitation"
 msgstr "Get a new invitation"
 
-#: front/src/components/Home.vue:13
-msgid "Get me to the library"
-msgstr "Get me to the library"
-
-#: front/src/components/Home.vue:76
-msgid "Get quality metadata about your music thanks to <a href=\"%{ url }\" target=\"_blank\">MusicBrainz</a>"
-msgstr ""
-"Get quality metadata about your music thanks to <a href=\"%{ url }\" target="
-"\"_blank\">MusicBrainz</a>"
-
 #: front/src/views/content/Home.vue:12 src/views/content/Home.vue:19
+msgctxt "Content/Library/Button.Label/Verb"
 msgid "Get started"
 msgstr "Get started"
 
-#: front/src/components/Footer.vue:37
+#: front/src/components/Footer.vue:45
+#: src/components/library/ImportStatusModal.vue:45
+msgctxt "Footer/*/Link"
 msgid "Getting help"
 msgstr "Getting help"
 
-#: front/src/components/common/ActionTable.vue:34
-#: front/src/components/common/ActionTable.vue:54
+#: front/src/components/common/ActionTable.vue:35
+#: front/src/components/common/ActionTable.vue:56
+msgctxt "Content/*/Button.Label/Short, Verb"
 msgid "Go"
 msgstr "Go"
 
 #: front/src/components/PageNotFound.vue:14
+msgctxt "Content/*/Button.Label/Verb"
 msgid "Go to home page"
 msgstr "Go to home page"
 
+#: front/src/views/Notifications.vue:27 src/views/Notifications.vue:61
+msgctxt "Content/Notifications/Button.Label"
+msgid "Got it!"
+msgstr "Got it!"
+
+#: front/src/components/auth/Settings.vue:128
+msgctxt "Content/Settings/Title"
+msgid "Hidden artists"
+msgstr "Hidden artists"
+
+#: front/src/components/About.vue:155
+msgctxt "*/*/*/Verb"
+msgid "Hide"
+msgstr "Hide"
+
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:114
+msgctxt "Content/Moderation/Help text"
 msgid "Hide account or domain content, except from followers."
 msgstr "Hide account or domain content, except from followers."
 
+#: front/src/components/moderation/FilterModal.vue:40
+msgctxt "Popup/*/Button.Label"
+msgid "Hide content"
+msgstr "Hide content"
+
+#: front/src/components/audio/PlayButton.vue:31
+msgctxt "*/Queue/Dropdown/Button/Label/Short"
+msgid "Hide content from this artist"
+msgstr "Hide content from this artist"
+
+#: front/src/components/audio/Player.vue:669
+msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
+msgid "Hide content from this artist…"
+msgstr "Hide content from this artist…"
+
 #: front/src/components/library/Home.vue:65
+msgctxt "Head/Home/Title"
 msgid "Home"
 msgstr "Home"
 
-#: front/src/components/instance/Stats.vue:36
-msgid "Hours of music"
-msgstr "Hours of music"
-
 #: front/src/components/auth/SubsonicTokenForm.vue:10
+msgctxt "Content/Settings/Paragraph"
 msgid "However, accessing Funkwhale from those clients require a separate password you can set below."
-msgstr ""
-"However, accessing Funkwhale from those clients requires a separate password "
-"you can set below."
+msgstr "However, accessing Funkwhale from those clients require a separate password you can set below."
 
 #: front/src/views/auth/PasswordResetConfirm.vue:24
-msgid "If the email address provided in the previous step is valid and binded to a user account, you should receive an email with reset instructions in the next couple of minutes."
-msgstr ""
-"If the email address provided in the previous step is valid and binded to a "
-"user account, you should receive an email with reset instructions in the "
-"next couple of minutes."
-
-#: front/src/components/manage/library/FilesTable.vue:40
-msgid "Import date"
-msgstr "Import date"
-
-#: front/src/components/Home.vue:71
-msgid "Import music from various platforms, such as YouTube or SoundCloud"
-msgstr "Import music from various platforms, such as YouTube or SoundCloud"
-
-#: front/src/components/library/FileUpload.vue:51
+msgctxt "Content/Signup/Paragraph"
+msgid "If the email address provided in the previous step is valid and linked to a user account, you should receive an email with reset instructions in the next couple of minutes."
+msgstr "If the email address provided in the previous step is valid and linked to a user account, you should receive an email with reset instructions in the next couple of minutes."
+
+#: front/src/components/auth/Settings.vue:205
+msgctxt "Content/Applications/Paragraph"
+msgid "If you authorize third-party applications to access your data, those applications will be listed here."
+msgstr "If you authorise third-party applications to access your data, those applications will be listed here."
+
+#: front/src/components/mixins/Translations.vue:46
+#: front/src/components/mixins/Translations.vue:47
+msgctxt "Content/Moderation/Dropdown"
+msgid "Illegal content"
+msgstr "Illegal content"
+
+#: front/src/components/library/ImportStatusModal.vue:3
+msgctxt "Popup/Import/Title"
+msgid "Import detail"
+msgstr "Import detail"
+
+#: front/src/components/library/FileUpload.vue:50
+msgctxt "Content/Library/Input.Label/Noun"
 msgid "Import reference"
 msgstr "Import reference"
 
+#: front/src/components/manage/library/UploadsTable.vue:20
+#: front/src/components/manage/library/UploadsTable.vue:64
+#: front/src/views/admin/library/UploadDetail.vue:131
 #: front/src/views/content/libraries/FilesTable.vue:11
-#: front/src/views/content/libraries/FilesTable.vue:58
+#: front/src/views/content/libraries/FilesTable.vue:59
+msgctxt "Content/*/*/Noun"
 msgid "Import status"
 msgstr "Import status"
 
-#: front/src/views/content/libraries/FilesTable.vue:217
+#: front/src/components/mixins/Translations.vue:37
+#: front/src/components/mixins/Translations.vue:38
+msgctxt "Content/Library/Help text"
 msgid "Imported"
 msgstr "Imported"
 
-#: front/src/components/mixins/Translations.vue:21
-#: front/src/components/mixins/Translations.vue:22
-msgid "Imported date"
-msgstr "Imported date"
+#: front/src/components/federation/FetchButton.vue:47
+msgctxt "*/*/Error"
+msgid "Impossible to connect to the remote server"
+msgstr "Impossible to connect to the remote server"
+
+#: front/src/components/moderation/FilterModal.vue:26
+msgctxt "Popup/Moderation/List item"
+msgid "In \"Recently added\" widget"
+msgstr "In \"Recently added\" widget"
+
+#: front/src/components/moderation/FilterModal.vue:27
+msgctxt "Popup/Moderation/List item"
+msgid "In artists and album listings"
+msgstr "In artists and album listings"
 
 #: front/src/components/favorites/TrackFavoriteIcon.vue:3
+msgctxt "Content/Track/Button.Message"
 msgid "In favorites"
 msgstr "In favourites"
 
-#: front/src/components/manage/users/UsersTable.vue:54
+#: front/src/components/moderation/FilterModal.vue:25
+msgctxt "Popup/Moderation/List item"
+msgid "In other users favorites and listening history"
+msgstr "In other users' favourites and listening history"
+
+#: front/src/components/moderation/FilterModal.vue:28
+msgctxt "Popup/Moderation/List item"
+msgid "In radio suggestions"
+msgstr "In radio suggestions"
+
+#: front/src/components/manage/users/UsersTable.vue:55
+msgctxt "Content/Admin/Table"
 msgid "Inactive"
 msgstr "Inactive"
 
-#: front/src/components/ShortcutsModal.vue:71
+#: front/src/components/ShortcutsModal.vue:124
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Increase volume"
 msgstr "Increase volume"
 
-#: front/src/views/auth/PasswordReset.vue:54
-msgid "Input the email address binded to your account"
-msgstr "Input the email address bound to your account"
-
-#: front/src/components/playlists/Editor.vue:31
+#: front/src/components/playlists/Editor.vue:41
+msgctxt "Content/Playlist/Button.Label/Verb"
 msgid "Insert from queue (%{ count } track)"
 msgid_plural "Insert from queue (%{ count } tracks)"
 msgstr[0] "Insert from queue (%{ count } track)"
 msgstr[1] "Insert from queue (%{ count } tracks)"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:71
+#: front/src/components/mixins/Translations.vue:16
+#: front/src/components/mixins/Translations.vue:17
+msgctxt "Content/Settings/Dropdown/Short"
+msgid "Instance"
+msgstr "Instance"
+
+#: front/src/views/admin/moderation/DomainsDetail.vue:99
+msgctxt "Content/Moderation/Title"
 msgid "Instance data"
 msgstr "Instance data"
 
 #: front/src/views/admin/Settings.vue:80
+msgctxt "Content/Admin/Menu"
 msgid "Instance information"
 msgstr "Instance information"
 
 #: front/src/components/library/Radios.vue:9
+msgctxt "Content/Radio/Title"
 msgid "Instance radios"
 msgstr "Instance radios"
 
 #: front/src/views/admin/Settings.vue:75
+msgctxt "Head/Admin/Title"
 msgid "Instance settings"
 msgstr "Instance settings"
 
-#: front/src/components/library/FileUpload.vue:230
-#: front/src/components/library/FileUpload.vue:231
+#: front/src/components/SetInstanceModal.vue:19
+msgctxt "Popup/Instance/Input.Label/Noun"
+msgid "Instance URL"
+msgstr "Instance URL"
+
+#: front/src/components/manage/moderation/ReportCard.vue:92
+#: front/src/components/manage/moderation/ReportCard.vue:203
+msgctxt "Content/*/*/Noun"
+msgid "Internal notes"
+msgstr "Internal notes"
+
+#: front/src/components/library/FileUpload.vue:268
+msgctxt "Content/Library/Help text"
 msgid "Invalid file type, ensure you are uploading an audio file. Supported file extensions are %{ extensions }"
-msgstr ""
-"Invalid file type, ensure you are uploading an audio file. Supported file "
-"extensions are %{ extensions }"
+msgstr "Invalid file type, ensure you are uploading an audio file. Supported file extensions are %{ extensions }"
 
-#: front/src/components/auth/Signup.vue:44
+#: front/src/components/library/ImportStatusModal.vue:139
+#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:46
+msgctxt "Popup/Import/Error.Label"
+msgid "Invalid metadata"
+msgstr "Invalid metadata"
+
+#: front/src/components/auth/SignupForm.vue:40
 #: front/src/components/manage/users/InvitationForm.vue:11
+msgctxt "Content/*/Input.Label"
 msgid "Invitation code"
 msgstr "Invitation code"
 
-#: front/src/views/admin/users/Base.vue:8 src/views/admin/users/InvitationsList.vue:3
+#: front/src/views/admin/users/Base.vue:8
 #: front/src/views/admin/users/InvitationsList.vue:24
+msgctxt "*/Admin/*/Noun"
 msgid "Invitations"
 msgstr "Invitations"
 
-#: front/src/components/Footer.vue:41
+#: front/src/components/manage/moderation/DomainsTable.vue:9
+#: front/src/views/admin/moderation/DomainsDetail.vue:106
+msgctxt "Content/Moderation/*/Adjective"
+msgid "Is present on allow-list"
+msgstr "Is present on allow-list"
+
+#: front/src/components/Footer.vue:49
+msgctxt "Footer/*/List item.Link"
 msgid "Issue tracker"
 msgstr "Issue tracker"
 
-#: front/src/components/Home.vue:50
-msgid "Keep a track of your favorite songs"
-msgstr "Keep track of your favourite songs"
+#: front/src/components/SetInstanceModal.vue:5
+msgctxt "Popup/Instance/Error message.Title"
+msgid "It is not possible to connect to the given URL"
+msgstr "It is not possible to connect to the given URL"
+
+#: front/src/components/mixins/Translations.vue:65
+#: front/src/components/mixins/Translations.vue:66
+msgctxt "*/*/*/Noun"
+msgid "Items"
+msgstr "Items"
 
 #: front/src/components/Footer.vue:33 src/components/ShortcutsModal.vue:3
+msgctxt "*/*/*/Noun"
 msgid "Keyboard shortcuts"
 msgstr "Keyboard shortcuts"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:161
+#: front/src/views/admin/moderation/DomainsDetail.vue:198
+msgctxt "Content/Moderation/Table.Label.Link"
 msgid "Known accounts"
 msgstr "Known accounts"
 
 #: front/src/views/content/remote/Home.vue:14
+msgctxt "Content/Library/Title"
 msgid "Known libraries"
 msgstr "Known libraries"
 
 #: front/src/components/manage/users/UsersTable.vue:41
-#: front/src/components/mixins/Translations.vue:32
-#: front/src/views/admin/moderation/AccountsDetail.vue:184
-#: front/src/components/mixins/Translations.vue:33
+#: front/src/components/mixins/Translations.vue:70
+#: front/src/views/admin/moderation/AccountsDetail.vue:206
+#: front/src/components/mixins/Translations.vue:71
+msgctxt "Content/Profile/Table.Label/Short, Noun (Value is a date)"
 msgid "Last activity"
 msgstr "Last activity"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:167
-#: front/src/views/admin/moderation/DomainsDetail.vue:86
+#: front/src/views/admin/moderation/AccountsDetail.vue:189
+#: front/src/views/admin/moderation/DomainsDetail.vue:115
+msgctxt "Content/*/Table.Label"
 msgid "Last checked"
 msgstr "Last checked"
 
-#: front/src/components/playlists/PlaylistModal.vue:32
+#: front/src/components/playlists/PlaylistModal.vue:46
+msgctxt "Popup/Playlist/Table.Label/Short"
 msgid "Last modification"
 msgstr "Last modification"
 
 #: front/src/components/manage/moderation/AccountsTable.vue:43
+msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Last seen"
 msgstr "Last seen"
 
-#: front/src/components/mixins/Translations.vue:18
-#: front/src/components/mixins/Translations.vue:19
+#: front/src/components/mixins/Translations.vue:57
+#: front/src/components/mixins/Translations.vue:58
+msgctxt "Content/Moderation/Dropdown/Noun"
 msgid "Last seen date"
 msgstr "Last seen date"
 
-#: front/src/views/content/remote/Card.vue:56
+#: front/src/views/content/remote/Card.vue:73
+msgctxt "Content/Library/Card.List item/Noun"
 msgid "Last update:"
 msgstr "Last update:"
 
-#: front/src/components/common/ActionTable.vue:47
+#: front/src/components/common/ActionTable.vue:49
+msgctxt "Modal/*/Button.Label/Short, Verb"
 msgid "Launch"
 msgstr "Launch"
 
-#: front/src/components/Home.vue:10
-msgid "Learn more about this instance"
-msgstr "Learn more about this instance"
+#: front/src/components/Home.vue:35
+msgctxt "Content/Home/Link"
+msgid "Learn more"
+msgstr "Learn more"
 
 #: front/src/components/manage/users/InvitationForm.vue:58
+msgctxt "Content/Admin/Input.Placeholder"
 msgid "Leave empty for a random code"
 msgstr "Leave empty for a random code"
 
-#: front/src/components/audio/EmbedWizard.vue:7
+#: front/src/components/audio/EmbedWizard.vue:17
+msgctxt "Popup/Embed/Paragraph"
 msgid "Leave empty for a responsive widget"
 msgstr "Leave empty for a responsive widget"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:297
-#: front/src/views/admin/moderation/DomainsDetail.vue:233
+#: front/src/components/mixins/Translations.vue:64
+#: front/src/components/mixins/Translations.vue:65
+msgctxt "*/*/*/Noun"
+msgid "Length"
+msgstr "Length"
+
+#: front/src/views/admin/library/AlbumDetail.vue:248
+#: front/src/views/admin/library/ArtistDetail.vue:236
+#: front/src/views/admin/library/Base.vue:17
+#: front/src/views/admin/library/LibrariesList.vue:24
+#: front/src/views/admin/library/TrackDetail.vue:300
+#: front/src/views/admin/moderation/AccountsDetail.vue:339
+#: front/src/views/admin/moderation/DomainsDetail.vue:271
 #: front/src/views/content/Base.vue:5
+msgctxt "*/*/*/Noun"
 msgid "Libraries"
 msgstr "Libraries"
 
+#: front/src/components/mixins/Translations.vue:84
+#: front/src/components/mixins/Translations.vue:85
+msgctxt "Content/OAuth Scopes/Label"
+msgid "Libraries and uploads"
+msgstr "Libraries and uploads"
+
 #: front/src/views/content/libraries/Form.vue:2
+msgctxt "Content/Library/Paragraph"
 msgid "Libraries help you organize and share your music collections. You can upload your own music collection to Funkwhale and share it with your friends and family."
-msgstr ""
-"Libraries help you organise and share your music collections. You can upload "
-"your own music collection to Funkwhale and share it with your friends and "
-"family."
-
-#: front/src/components/instance/Stats.vue:30
-#: front/src/components/manage/users/UsersTable.vue:173
-#: front/src/views/admin/moderation/AccountsDetail.vue:464
+msgstr "Libraries help you organise and share your music collections. You can upload your own music collection to Funkwhale and share it with your friends and family."
+
+#: front/src/components/Sidebar.vue:85
+#: front/src/components/manage/library/UploadsTable.vue:60
+#: front/src/components/manage/users/UsersTable.vue:174
+#: front/src/components/mixins/Report.vue:77
+#: front/src/views/admin/library/UploadDetail.vue:144
+#: front/src/views/admin/moderation/AccountsDetail.vue:518 src/entities.js:132
+#: front/src/components/mixins/Report.vue:78
+msgctxt "*/*/*/Noun"
 msgid "Library"
 msgstr "Library"
 
-#: front/src/views/content/libraries/Form.vue:109
+#: front/src/views/content/libraries/Form.vue:103
+msgctxt "Content/Library/Message"
 msgid "Library created"
 msgstr "Library created"
 
-#: front/src/views/content/libraries/Form.vue:129
+#: front/src/views/admin/library/LibraryDetail.vue:78
+msgctxt "Content/Moderation/Title"
+msgid "Library data"
+msgstr "Library data"
+
+#: front/src/views/content/libraries/Form.vue:123
+msgctxt "Content/Library/Message"
 msgid "Library deleted"
 msgstr "Library deleted"
 
-#: front/src/views/admin/library/FilesList.vue:3
-msgid "Library files"
-msgstr "Library files"
+#: front/src/views/admin/library/EditsList.vue:4
+msgctxt "Content/Admin/Title/Noun"
+msgid "Library edits"
+msgstr "Library edits"
 
-#: front/src/views/content/libraries/Form.vue:106
+#: front/src/views/content/libraries/Form.vue:100
+msgctxt "Content/Library/Message"
 msgid "Library updated"
 msgstr "Library updated"
 
-#: front/src/components/library/Track.vue:100
+#: front/src/components/library/TrackDetail.vue:19
+#: front/src/components/manage/library/TracksTable.vue:43
+#: front/src/views/admin/library/TrackDetail.vue:165 src/edits.js:84
+#: front/src/entities.js:115
+msgctxt "Content/*/*/Noun"
 msgid "License"
 msgstr "License"
 
+#: front/src/components/Footer.vue:90
+msgctxt "Footer/Settings/Dropdown.Label/Theme name"
+msgid "Light"
+msgstr "Light"
+
+#: front/src/views/admin/library/AlbumDetail.vue:188
+#: front/src/views/admin/library/ArtistDetail.vue:176
+#: front/src/views/admin/library/LibraryDetail.vue:179
+#: front/src/views/admin/library/TrackDetail.vue:240
+#: front/src/views/admin/moderation/AccountsDetail.vue:269
+msgctxt "Content/Moderation/Table.Label/Noun"
+msgid "Linked reports"
+msgstr "Linked reports"
+
+#: front/src/components/Home.vue:135
+msgctxt "Content/Home/Link"
+msgid "Listen to public albums and playlists shared on this pod"
+msgstr "Listen to public albums and playlists shared on this pod"
+
+#: front/src/components/mixins/Translations.vue:92
+#: front/src/views/admin/library/AlbumDetail.vue:163
+#: front/src/views/admin/library/ArtistDetail.vue:151
+#: front/src/views/admin/library/TrackDetail.vue:215
+#: front/src/components/mixins/Translations.vue:93
+msgctxt "*/*/*/Noun"
+msgid "Listenings"
+msgstr "Listenings"
+
+#: front/src/components/audio/track/Table.vue:25
+#: front/src/components/library/ArtistDetail.vue:28
+msgctxt "Content/*/Button.Label"
+msgid "Load more…"
+msgstr "Load more…"
+
 #: front/src/views/content/libraries/Detail.vue:21
+msgctxt "Content/Library/Paragraph"
 msgid "Loading followers…"
 msgstr "Loading followers…"
 
 #: front/src/views/content/libraries/Home.vue:3
+msgctxt "Content/Library/Paragraph"
 msgid "Loading Libraries…"
 msgstr "Loading Libraries…"
 
 #: front/src/views/content/libraries/Detail.vue:3
 #: front/src/views/content/libraries/Upload.vue:3
+msgctxt "Content/Library/Paragraph"
 msgid "Loading library data…"
 msgstr "Loading library data…"
 
-#: front/src/views/Notifications.vue:4
+#: front/src/views/Notifications.vue:84
+msgctxt "Content/Notifications/Paragraph"
 msgid "Loading notifications…"
 msgstr "Loading notifications…"
 
 #: front/src/views/content/remote/Home.vue:3
+msgctxt "Content/Library/Paragraph"
 msgid "Loading remote libraries…"
 msgstr "Loading remote libraries…"
 
 #: front/src/views/content/libraries/Quota.vue:4
+msgctxt "Content/Library/Paragraph"
 msgid "Loading usage data…"
 msgstr "Loading usage data…"
 
 #: front/src/components/favorites/List.vue:5
+msgctxt "Content/Favorites/Message"
 msgid "Loading your favorites…"
 msgstr "Loading your favourites…"
 
+#: front/src/components/manage/library/AlbumsTable.vue:65
+#: front/src/components/manage/library/ArtistsTable.vue:58
+#: front/src/components/manage/library/LibrariesTable.vue:75
+#: front/src/components/manage/library/TracksTable.vue:71
+#: front/src/components/manage/library/UploadsTable.vue:99
+#: front/src/components/manage/moderation/ReportCard.vue:173
+#: front/src/views/admin/library/AlbumDetail.vue:19
+#: front/src/views/admin/library/ArtistDetail.vue:18
+#: front/src/views/admin/library/LibraryDetail.vue:18
+#: front/src/views/admin/library/TrackDetail.vue:18
+#: front/src/views/admin/library/UploadDetail.vue:19
+msgctxt "Content/Moderation/*/Short, Noun"
+msgid "Local"
+msgstr "Local"
+
 #: front/src/components/manage/moderation/AccountsTable.vue:59
 #: front/src/views/admin/moderation/AccountsDetail.vue:18
+msgctxt "Content/Moderation/*/Short, Noun"
 msgid "Local account"
 msgstr "Local account"
 
-#: front/src/components/auth/Login.vue:84
+#: front/src/components/Home.vue:96 src/views/auth/Login.vue:29
+msgctxt "Head/Login/Title"
 msgid "Log In"
 msgstr "Log In"
 
-#: front/src/components/auth/Login.vue:4
+#: front/src/views/auth/Login.vue:4
+msgctxt "Content/Login/Title/Verb"
 msgid "Log in to your Funkwhale account"
 msgstr "Log in to your Funkwhale account"
 
 #: front/src/components/auth/Logout.vue:20
+msgctxt "Head/Login/Title"
 msgid "Log Out"
 msgstr "Log Out"
 
 #: front/src/components/Sidebar.vue:38
+msgctxt "Sidebar/Profile/List item.Link"
 msgid "Logged in as %{ username }"
 msgstr "Logged in as %{ username }"
 
-#: front/src/components/Sidebar.vue:54 src/components/auth/Login.vue:42
+#: front/src/components/Sidebar.vue:54 src/components/auth/LoginForm.vue:41
+msgctxt "*/Login/*/Verb"
 msgid "Login"
 msgstr "Login"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:119
+#: front/src/views/admin/moderation/AccountsDetail.vue:148
+msgctxt "Content/*/*/Noun"
 msgid "Login status"
 msgstr "Login status"
 
 #: front/src/components/Sidebar.vue:52
+msgctxt "Sidebar/Login/List item.Link/Verb"
 msgid "Logout"
 msgstr "Logout"
 
 #: front/src/views/content/libraries/Home.vue:9
+msgctxt "Content/Library/Paragraph"
 msgid "Looks like you don't have a library, it's time to create one."
 msgstr "Looks like you don't have a library, it's time to create one."
 
-#: front/src/components/audio/Player.vue:356 src/components/audio/Player.vue:357
+#: front/src/components/audio/Player.vue:658
+#: src/components/audio/Player.vue:659
+msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping disabled. Click to switch to single-track looping."
 msgstr "Looping disabled. Click to switch to single-track looping."
 
-#: front/src/components/audio/Player.vue:359 src/components/audio/Player.vue:360
+#: front/src/components/audio/Player.vue:661
+#: src/components/audio/Player.vue:662
+msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping on a single track. Click to switch to whole queue looping."
 msgstr "Looping on a single track. Click to switch to whole queue looping."
 
-#: front/src/components/audio/Player.vue:362 src/components/audio/Player.vue:363
+#: front/src/components/audio/Player.vue:664
+#: src/components/audio/Player.vue:665
+msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping on whole queue. Click to disable looping."
 msgstr "Looping on whole queue. Click to disable looping."
 
-#: front/src/components/library/Track.vue:150
-msgid "Lyrics"
-msgstr "Lyrics"
-
-#: front/src/components/Sidebar.vue:210
+#: front/src/components/Sidebar.vue:230
+msgctxt "Sidebar/*/Hidden text"
 msgid "Main menu"
 msgstr "Main menu"
 
-#: front/src/views/admin/library/Base.vue:16
+#: front/src/views/admin/library/Base.vue:34
+msgctxt "Head/Admin/Title"
 msgid "Manage library"
 msgstr "Manage library"
 
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:8
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Manage moderation rules for %{ obj }"
+msgstr "Manage moderation rules for %{ obj }"
+
 #: front/src/components/playlists/PlaylistModal.vue:3
+msgctxt "Popup/Playlist/Title/Verb"
 msgid "Manage playlists"
 msgstr "Manage playlists"
 
 #: front/src/views/admin/users/Base.vue:20
+msgctxt "Head/Admin/Title"
 msgid "Manage users"
 msgstr "Manage users"
 
 #: front/src/views/playlists/List.vue:8
+msgctxt "Content/Playlist/Button.Label/Verb"
 msgid "Manage your playlists"
 msgstr "Manage your playlists"
 
-#: front/src/views/Notifications.vue:17
+#: front/src/views/Notifications.vue:79
+msgctxt "Content/Notifications/Button.Label/Verb"
 msgid "Mark all as read"
 msgstr "Mark all as read"
 
 #: front/src/components/notifications/NotificationRow.vue:46
+msgctxt "Content/Notifications/Button.Tooltip/Verb"
 msgid "Mark as read"
 msgstr "Mark as read"
 
 #: front/src/components/notifications/NotificationRow.vue:47
+msgctxt "Content/Notifications/Button.Tooltip/Verb"
 msgid "Mark as unread"
 msgstr "Mark as unread"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:281
+#: front/src/views/admin/moderation/AccountsDetail.vue:321
+msgctxt "Content/*/*/Unit"
 msgid "MB"
 msgstr "MB"
 
-#: front/src/components/audio/Player.vue:349
+#: front/src/components/audio/Player.vue:651
+msgctxt "Sidebar/Player/Hidden text"
 msgid "Media player"
 msgstr "Media player"
 
 #: front/src/components/auth/Profile.vue:12
+msgctxt "Content/Profile/Paragraph"
 msgid "Member since %{ date }"
 msgstr "Member since %{ date }"
 
+#: front/src/components/manage/moderation/ReportCard.vue:109
+#: front/src/components/moderation/ReportModal.vue:41
+msgctxt "*/*/Field.Label/Noun"
+msgid "Message"
+msgstr "Message"
+
 #: front/src/components/Footer.vue:32
+msgctxt "Footer/*/List item.Link"
 msgid "Mobile and desktop apps"
 msgstr "Mobile and desktop apps"
 
-#: front/src/components/Sidebar.vue:97 src/components/manage/users/UsersTable.vue:177
-#: front/src/views/admin/moderation/AccountsDetail.vue:468
-#: front/src/views/admin/moderation/Base.vue:21
+#: front/src/components/Home.vue:143
+msgctxt "Content/Home/Link"
+msgid "Mobile apps"
+msgstr "Mobile apps"
+
+#: front/src/components/Sidebar.vue:96
+#: src/components/manage/users/UsersTable.vue:178
+#: front/src/views/admin/Settings.vue:85
+#: front/src/views/admin/moderation/AccountsDetail.vue:522
+#: front/src/views/admin/moderation/Base.vue:43
+msgctxt "*/Moderation/*"
 msgid "Moderation"
 msgstr "Moderation"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:49
-#: front/src/views/admin/moderation/DomainsDetail.vue:42
+#: front/src/views/admin/moderation/AccountsDetail.vue:78
+#: front/src/views/admin/moderation/DomainsDetail.vue:70
+msgctxt "Content/Moderation/Card.Paragraph"
 msgid "Moderation policies help you control how your instance interact with a given domain or account."
-msgstr ""
-"Moderation policies help you control how your instance interact with a given "
-"domain or account."
+msgstr "Moderation policies help you control how your instance interact with a given domain or account."
 
-#: front/src/components/mixins/Translations.vue:20
-#: front/src/components/mixins/Translations.vue:21
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:4
+msgctxt "Content/Moderation/Button.Label"
+msgid "Moderation rules…"
+msgstr "Moderation rules…"
+
+#: front/src/components/library/EditCard.vue:5
+msgctxt "Content/Library/Card/Short"
+msgid "Modification %{ id }"
+msgstr "Modification %{ id }"
+
+#: front/src/components/mixins/Translations.vue:58
+#: front/src/components/mixins/Translations.vue:59
+msgctxt "Content/Playlist/Dropdown/Noun"
 msgid "Modification date"
 msgstr "Modification date"
 
+#: front/src/components/audio/PlayButton.vue:100
+#: front/src/components/library/AlbumBase.vue:43
+#: front/src/components/library/ArtistBase.vue:54
+#: front/src/components/library/TrackBase.vue:59
+msgctxt "*/*/Button.Label/Noun"
+msgid "More…"
+msgstr "More…"
+
 #: front/src/components/Sidebar.vue:63 src/views/admin/Settings.vue:82
+msgctxt "*/*/*/Noun"
 msgid "Music"
 msgstr "Music"
 
-#: front/src/components/audio/Player.vue:355
+#: front/src/components/audio/Player.vue:657
+msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Mute"
 msgstr "Mute"
 
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:24
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:115
+msgctxt "Content/Moderation/*/Verb"
 msgid "Mute activity"
 msgstr "Mute activity"
 
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:28
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:119
+msgctxt "Content/Moderation/*/Verb"
 msgid "Mute notifications"
 msgstr "Mute notifications"
 
 #: front/src/components/Sidebar.vue:34
+msgctxt "Sidebar/Profile/Title"
 msgid "My account"
 msgstr "My account"
 
-#: front/src/components/library/radios/Builder.vue:236
+#: front/src/components/library/radios/Builder.vue:238
+msgctxt "Content/Radio/Input.Placeholder"
 msgid "My awesome description"
 msgstr "My awesome description"
 
-#: front/src/views/content/libraries/Form.vue:70
+#: front/src/views/content/libraries/Form.vue:72
+msgctxt "Content/Library/Input.Placeholder"
 msgid "My awesome library"
 msgstr "My awesome library"
 
-#: front/src/components/playlists/Form.vue:74
+#: front/src/components/playlists/Form.vue:76
+msgctxt "Content/Playlist/Input.Placeholder"
 msgid "My awesome playlist"
 msgstr "My awesome playlist"
 
-#: front/src/components/library/radios/Builder.vue:235
+#: front/src/components/library/radios/Builder.vue:237
+msgctxt "Content/Radio/Input.Placeholder"
 msgid "My awesome radio"
 msgstr "My awesome radio"
 
 #: front/src/views/content/libraries/Home.vue:6
+msgctxt "Content/Library/Title"
 msgid "My libraries"
 msgstr "My libraries"
 
-#: front/src/components/audio/track/Row.vue:40 src/components/library/Track.vue:115
-#: front/src/components/library/Track.vue:124 src/components/library/Track.vue:133
-#: front/src/components/library/Track.vue:142
-#: front/src/components/manage/library/FilesTable.vue:63
-#: front/src/components/manage/library/FilesTable.vue:69
-#: front/src/components/manage/library/FilesTable.vue:75
-#: front/src/components/manage/library/FilesTable.vue:81
-#: front/src/components/manage/users/UsersTable.vue:61
-#: front/src/views/admin/moderation/AccountsDetail.vue:171
-#: front/src/views/admin/moderation/DomainsDetail.vue:90
-#: front/src/views/content/libraries/FilesTable.vue:92
-#: front/src/views/content/libraries/FilesTable.vue:98
-#: front/src/views/admin/moderation/DomainsDetail.vue:109
-#: front/src/views/admin/moderation/DomainsDetail.vue:117
+#: front/src/components/About.vue:105 src/components/audio/track/Row.vue:40
+#: front/src/components/library/EditCard.vue:60
+#: front/src/components/library/EditForm.vue:70
+#: front/src/components/library/TrackDetail.vue:34
+#: front/src/components/library/TrackDetail.vue:43
+#: front/src/components/library/TrackDetail.vue:52
+#: front/src/components/library/TrackDetail.vue:61
+#: front/src/components/manage/library/AlbumsTable.vue:73
+#: front/src/components/manage/library/TracksTable.vue:76
+#: front/src/components/manage/library/UploadsTable.vue:121
+#: front/src/components/manage/library/UploadsTable.vue:128
+#: front/src/components/manage/moderation/ReportCard.vue:78
+#: front/src/components/manage/moderation/ReportCard.vue:87
+#: front/src/components/manage/moderation/ReportCard.vue:193
+#: front/src/components/manage/users/UsersTable.vue:62
+#: front/src/views/admin/library/UploadDetail.vue:179
+#: front/src/views/admin/library/UploadDetail.vue:214
+#: front/src/views/admin/library/UploadDetail.vue:233
+#: front/src/views/admin/library/UploadDetail.vue:244
+#: front/src/views/admin/library/UploadDetail.vue:257
+#: front/src/views/admin/moderation/AccountsDetail.vue:193
+#: front/src/views/admin/moderation/DomainsDetail.vue:119
+#: front/src/views/content/libraries/FilesTable.vue:95
+#: front/src/views/content/libraries/FilesTable.vue:101
+msgctxt "*/*/*"
 msgid "N/A"
 msgstr "N/A"
 
+#: front/src/components/auth/ApplicationForm.vue:9
+#: front/src/components/auth/Settings.vue:133
+#: front/src/components/manage/library/ArtistsTable.vue:39
+#: front/src/components/manage/library/LibrariesTable.vue:48
+#: front/src/components/manage/library/TagsTable.vue:41
+#: front/src/components/manage/library/UploadsTable.vue:59
 #: front/src/components/manage/moderation/AccountsTable.vue:39
-#: front/src/components/manage/moderation/DomainsTable.vue:38
-#: front/src/components/mixins/Translations.vue:26
-#: front/src/components/playlists/PlaylistModal.vue:31
-#: front/src/views/admin/moderation/DomainsDetail.vue:105
-#: front/src/views/content/libraries/Form.vue:10
-#: front/src/components/mixins/Translations.vue:27
+#: front/src/components/manage/moderation/DomainsTable.vue:46
+#: front/src/components/mixins/Translations.vue:63
+#: front/src/components/playlists/PlaylistModal.vue:45
+#: front/src/views/admin/library/ArtistDetail.vue:103
+#: front/src/views/admin/library/LibraryDetail.vue:85
+#: front/src/views/admin/library/TagDetail.vue:68
+#: front/src/views/admin/library/UploadDetail.vue:92
+#: front/src/views/admin/moderation/DomainsDetail.vue:134
+#: front/src/views/content/libraries/Form.vue:10 src/edits.js:17
+#: front/src/components/mixins/Translations.vue:64
+msgctxt "*/*/*/Noun"
 msgid "Name"
 msgstr "Name"
 
-#: front/src/components/auth/Settings.vue:87
+#: front/src/views/Notifications.vue:24 src/views/Notifications.vue:58
+msgctxt "*/*/*"
+msgid "Never"
+msgstr "Never"
+
+#: front/src/components/auth/Settings.vue:88
 #: front/src/views/auth/PasswordResetConfirm.vue:14
+msgctxt "Content/Settings/Input.Label"
 msgid "New password"
 msgstr "New password"
 
-#: front/src/components/Sidebar.vue:160
+#: front/src/components/Sidebar.vue:177
+msgctxt "Sidebar/Player/Paragraph"
 msgid "New tracks will be appended here automatically."
 msgstr "New tracks will be appended here automatically."
 
-#: front/src/components/audio/Player.vue:353
+#: front/src/components/library/EditCard.vue:47
+msgctxt "Content/Library/Card.Table.Header/Short"
+msgid "New value"
+msgstr "New value"
+
+#: front/src/components/audio/Player.vue:655
+msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Next track"
 msgstr "Next track"
 
-#: front/src/components/Sidebar.vue:119
+#: front/src/components/Sidebar.vue:134
+#: front/src/components/manage/moderation/DomainsTable.vue:13
+#: front/src/views/admin/moderation/DomainsDetail.vue:110
+msgctxt "*/*/*"
 msgid "No"
 msgstr "No"
 
-#: front/src/components/Home.vue:100
-msgid "No add-ons, no plugins : you only need a web library"
-msgstr "No add-ons, no plugins : you only need a web library"
-
 #: front/src/components/audio/Search.vue:25
+msgctxt "Content/Search/Paragraph"
 msgid "No album matched your query"
 msgstr "No album matched your query"
 
 #: front/src/components/audio/Search.vue:16
+msgctxt "Content/Search/Paragraph"
 msgid "No artist matched your query"
 msgstr "No artist matched your query"
 
-#: front/src/components/library/Track.vue:158
-msgid "No lyrics available for this track."
-msgstr "No lyrics available for this track."
+#: front/src/components/library/TrackDetail.vue:14
+msgctxt "Content/Track/Table.Paragraph"
+msgid "No copyright information available for this track"
+msgstr "No copyright information available for this track"
+
+#: front/src/components/About.vue:25 src/components/Home.vue:25
+msgctxt "Content/Home/Paragraph"
+msgid "No description available."
+msgstr "No description available."
+
+#: front/src/components/library/TrackDetail.vue:25
+msgctxt "Content/Track/Table.Paragraph"
+msgid "No licensing information for this track"
+msgstr "No licensing information for this track"
 
 #: front/src/components/federation/LibraryWidget.vue:6
+msgctxt "Content/Federation/Paragraph"
 msgid "No matching library."
 msgstr "No matching library."
 
-#: front/src/views/Notifications.vue:26
+#: front/src/views/Notifications.vue:93
+msgctxt "Content/Notifications/Paragraph"
 msgid "No notification to show."
 msgstr "No notification to show."
 
-#: front/src/components/mixins/Translations.vue:10
-#: front/src/components/playlists/Form.vue:81 src/views/content/libraries/Form.vue:72
+#: front/src/components/common/EmptyState.vue:7
+msgctxt "Content/*/Paragraph"
+msgid "No results were found."
+msgstr "No results were found."
+
+#: front/src/components/About.vue:32
+msgctxt "Content/Home/Paragraph"
+msgid "No rules available."
+msgstr "No rules available."
+
+#: front/src/components/About.vue:39
+msgctxt "Content/Home/Paragraph"
+msgid "No terms available."
+msgstr "No terms available."
+
+#: front/src/components/mixins/Translations.vue:10
 #: front/src/components/mixins/Translations.vue:11
+msgctxt "Content/Settings/Dropdown"
 msgid "Nobody except me"
 msgstr "Nobody except me"
 
 #: front/src/views/content/libraries/Detail.vue:57
+msgctxt "Content/Library/Paragraph"
 msgid "Nobody is following this library"
 msgstr "Nobody is following this library"
 
 #: front/src/components/manage/users/InvitationsTable.vue:51
+msgctxt "Content/Admin/Table"
 msgid "Not used"
 msgstr "Not used"
 
-#: front/src/components/Sidebar.vue:46 src/views/Notifications.vue:74
+#: front/src/components/Sidebar.vue:46
+#: src/components/mixins/Translations.vue:112
+#: front/src/views/Notifications.vue:151
+#: src/components/mixins/Translations.vue:113
+msgctxt "*/Notifications/*"
 msgid "Notifications"
 msgstr "Notifications"
 
-#: front/src/components/Footer.vue:47
+#: front/src/components/mixins/Translations.vue:47
+#: front/src/components/mixins/Translations.vue:48
+msgctxt "Content/Moderation/Dropdown"
+msgid "Offensive content"
+msgstr "Offensive content"
+
+#: front/src/components/Footer.vue:55
+msgctxt "Footer/*/List item.Link"
 msgid "Official website"
 msgstr "Official website"
 
-#: front/src/components/auth/Settings.vue:82
+#: front/src/components/auth/Settings.vue:83
+msgctxt "Content/Settings/Input.Label"
 msgid "Old password"
 msgstr "Old password"
 
+#: front/src/components/library/EditCard.vue:46
+msgctxt "Content/Library/Card.Table.Header/Short"
+msgid "Old value"
+msgstr "Old value"
+
+#: front/src/components/About.vue:90
+msgctxt "*/*/*/State of registrations"
+msgid "Open"
+msgstr "Open"
+
 #: front/src/components/manage/users/InvitationsTable.vue:20
+msgctxt "Content/Admin/Dropdown/Adjective"
 msgid "Open"
 msgstr "Open"
 
+#: front/src/components/library/ImportStatusModal.vue:56
+msgctxt "Popup/Import/Table.Label/Value"
+msgid "Open a support thread (include the debug information below in your message)"
+msgstr "Open a support thread (include the debug information below in your message)"
+
+#: front/src/components/library/AlbumBase.vue:87
+#: front/src/components/library/ArtistBase.vue:99
+#: front/src/components/library/TagDetail.vue:11
+#: front/src/components/library/TrackBase.vue:103
+#: front/src/components/manage/moderation/ReportCard.vue:128
+msgctxt "Content/Moderation/Link"
+msgid "Open in moderation interface"
+msgstr "Open in moderation interface"
+
+#: front/src/views/admin/library/AlbumDetail.vue:37
+#: front/src/views/admin/library/ArtistDetail.vue:35
+#: front/src/views/admin/library/TagDetail.vue:21
+#: front/src/views/admin/library/TrackDetail.vue:36
+msgctxt "Content/Moderation/Link/Verb"
+msgid "Open local profile"
+msgstr "Open local profile"
+
+#: front/src/views/admin/library/AlbumDetail.vue:52
+#: front/src/views/admin/library/ArtistDetail.vue:50
+#: front/src/views/admin/library/TrackDetail.vue:51
+msgctxt "Content/Moderation/Link/Verb"
+msgid "Open on MusicBrainz"
+msgstr "Open on MusicBrainz"
+
 #: front/src/views/admin/moderation/AccountsDetail.vue:23
+msgctxt "Content/Moderation/Link/Verb"
 msgid "Open profile"
 msgstr "Open profile"
 
+#: front/src/views/admin/library/AlbumDetail.vue:60
+#: front/src/views/admin/library/ArtistDetail.vue:58
+#: front/src/views/admin/library/LibraryDetail.vue:49
+#: front/src/views/admin/library/TrackDetail.vue:59
+#: front/src/views/admin/library/UploadDetail.vue:50
+#: front/src/views/admin/moderation/AccountsDetail.vue:52
+msgctxt "Content/Moderation/Link/Verb"
+msgid "Open remote profile"
+msgstr "Open remote profile"
+
 #: front/src/views/admin/moderation/DomainsDetail.vue:16
+msgctxt "Content/Moderation/Link/Verb"
 msgid "Open website"
 msgstr "Open website"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:40
+msgctxt "Content/Moderation/Card.Title"
 msgid "Or customize your rule"
 msgstr "Or customise your rule"
 
-#: front/src/components/favorites/List.vue:31 src/components/library/Radios.vue:41
-#: front/src/components/manage/library/FilesTable.vue:17
+#: front/src/components/favorites/List.vue:32
+#: src/components/library/Radios.vue:41
+#: front/src/components/manage/library/EditsCardList.vue:37
 #: front/src/components/manage/users/UsersTable.vue:17
+#: front/src/views/admin/moderation/ReportsList.vue:42
 #: front/src/views/playlists/List.vue:25
+msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Order"
 msgstr "Order"
 
-#: front/src/components/favorites/List.vue:23 src/components/library/Artists.vue:15
-#: front/src/components/library/Radios.vue:33
-#: front/src/components/manage/library/FilesTable.vue:9
+#: front/src/components/favorites/List.vue:24
+#: src/components/library/Albums.vue:15
+#: front/src/components/library/Artists.vue:19
+#: src/components/library/Radios.vue:33
+#: front/src/components/manage/library/AlbumsTable.vue:11
+#: front/src/components/manage/library/ArtistsTable.vue:11
+#: front/src/components/manage/library/EditsCardList.vue:29
+#: front/src/components/manage/library/LibrariesTable.vue:20
+#: front/src/components/manage/library/TagsTable.vue:11
+#: front/src/components/manage/library/TracksTable.vue:11
+#: front/src/components/manage/library/UploadsTable.vue:30
 #: front/src/components/manage/moderation/AccountsTable.vue:11
-#: front/src/components/manage/moderation/DomainsTable.vue:9
+#: front/src/components/manage/moderation/DomainsTable.vue:17
 #: front/src/components/manage/users/InvitationsTable.vue:9
 #: front/src/components/manage/users/UsersTable.vue:9
+#: front/src/views/admin/moderation/ReportsList.vue:34
 #: front/src/views/content/libraries/FilesTable.vue:21
 #: front/src/views/playlists/List.vue:17
+msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Ordering"
 msgstr "Ordering"
 
-#: front/src/components/library/Artists.vue:23
+#: front/src/components/library/Albums.vue:27
+#: src/components/library/Artists.vue:27
+#: front/src/components/manage/library/AlbumsTable.vue:19
+#: front/src/components/manage/library/ArtistsTable.vue:19
+#: front/src/components/manage/library/LibrariesTable.vue:28
+#: front/src/components/manage/library/TagsTable.vue:19
+#: front/src/components/manage/library/TracksTable.vue:19
+#: front/src/components/manage/library/UploadsTable.vue:38
 #: front/src/components/manage/moderation/AccountsTable.vue:19
-#: front/src/components/manage/moderation/DomainsTable.vue:17
+#: front/src/components/manage/moderation/DomainsTable.vue:25
 #: front/src/views/content/libraries/FilesTable.vue:29
+msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Ordering direction"
 msgstr "Ordering direction"
 
+#: front/src/components/mixins/Translations.vue:48
+#: front/src/components/mixins/Translations.vue:49
+msgctxt "Content/Moderation/Dropdown"
+msgid "Other"
+msgstr "Other"
+
+#: front/src/components/manage/moderation/ReportCard.vue:143
 #: front/src/components/manage/users/InvitationsTable.vue:38
+msgctxt "*/*/*"
 msgid "Owner"
 msgstr "Owner"
 
 #: front/src/components/PageNotFound.vue:33
+msgctxt "Head/*/Title"
 msgid "Page Not Found"
 msgstr "Page Not Found"
 
 #: front/src/components/PageNotFound.vue:7
+msgctxt "Content/*/Title"
 msgid "Page not found!"
 msgstr "Page not found!"
 
 #: front/src/components/Pagination.vue:39
+msgctxt "Content/*/Hidden text/Noun"
 msgid "Pagination"
 msgstr "Pagination"
 
-#: front/src/components/auth/Login.vue:33 src/components/auth/Signup.vue:40
+#: front/src/components/auth/LoginForm.vue:32
+#: src/components/auth/Settings.vue:291
+#: front/src/components/auth/SignupForm.vue:36
+msgctxt "*/*/*"
 msgid "Password"
 msgstr "Password"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:94
+#: front/src/components/auth/SubsonicTokenForm.vue:100
+msgctxt "Content/Settings/Message"
 msgid "Password updated"
 msgstr "Password updated"
 
 #: front/src/views/auth/PasswordResetConfirm.vue:28
+msgctxt "Content/Signup/Card.Title"
 msgid "Password updated successfully"
 msgstr "Password updated successfully"
 
-#: front/src/components/audio/Player.vue:352
+#: front/src/components/audio/Player.vue:654
+msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Pause track"
 msgstr "Pause track"
 
-#: front/src/components/ShortcutsModal.vue:59
+#: front/src/components/ShortcutsModal.vue:96
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Pause/play the current track"
 msgstr "Pause/play the current track"
 
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:12
+msgctxt "Content/Moderation/Card.List item"
 msgid "Paused"
 msgstr "Paused"
 
-#: front/src/components/library/FileUpload.vue:107
+#: front/src/components/library/FileUpload.vue:116
+#: front/src/components/manage/library/UploadsTable.vue:23
+#: front/src/components/mixins/Translations.vue:28
 #: front/src/views/content/libraries/FilesTable.vue:14
-#: front/src/views/content/libraries/FilesTable.vue:208
+#: front/src/components/mixins/Translations.vue:29
+msgctxt "Content/Library/*/Short"
 msgid "Pending"
 msgstr "Pending"
 
 #: front/src/views/content/libraries/Detail.vue:37
+msgctxt "Content/Library/Table/Short"
 msgid "Pending approval"
 msgstr "Pending approval"
 
 #: front/src/views/content/libraries/Quota.vue:22
+msgctxt "Content/Library/Label"
 msgid "Pending files"
 msgstr "Pending files"
 
-#: front/src/components/Sidebar.vue:212
+#: front/src/components/Sidebar.vue:232
+msgctxt "Sidebar/Notifications/Hidden text"
 msgid "Pending follow requests"
 msgstr "Pending follow requests"
 
+#: front/src/components/library/EditCard.vue:29
+#: front/src/components/manage/library/EditsCardList.vue:18
+msgctxt "Content/Admin/*/Noun"
+msgid "Pending review"
+msgstr "Pending review"
+
+#: front/src/components/Sidebar.vue:233
+msgctxt "Sidebar/Moderation/Hidden text"
+msgid "Pending review edits"
+msgstr "Pending review edits"
+
+#: front/src/components/auth/Settings.vue:176
 #: front/src/components/manage/users/UsersTable.vue:42
-#: front/src/views/admin/moderation/AccountsDetail.vue:137
+#: front/src/views/admin/moderation/AccountsDetail.vue:166
+msgctxt "Content/*/*/Noun"
 msgid "Permissions"
 msgstr "Permissions"
 
-#: front/src/components/audio/PlayButton.vue:9 src/components/library/Track.vue:40
+#: front/src/components/audio/PlayButton.vue:9
+#: front/src/components/library/TrackBase.vue:24
+msgctxt "*/Queue/Button.Label/Short, Verb"
 msgid "Play"
 msgstr "Play"
 
-#: front/src/components/audio/album/Card.vue:50
-#: front/src/components/audio/artist/Card.vue:44 src/components/library/Album.vue:22
-#: front/src/components/library/Album.vue:67 src/views/playlists/Detail.vue:23
+#: front/src/components/audio/album/Card.vue:48
+#: front/src/components/library/AlbumBase.vue:21
+#: front/src/components/library/AlbumDetail.vue:11
+#: src/views/playlists/Detail.vue:24
+msgctxt "Content/Queue/Button.Label/Short, Verb"
 msgid "Play all"
 msgstr "Play all"
 
-#: front/src/components/library/Artist.vue:26
+#: front/src/components/library/ArtistBase.vue:32
+msgctxt "Content/Artist/Button.Label/Verb"
 msgid "Play all albums"
 msgstr "Play all albums"
 
-#: front/src/components/audio/PlayButton.vue:15
-#: front/src/components/audio/PlayButton.vue:65
+#: front/src/components/audio/PlayButton.vue:92
+msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play next"
 msgstr "Play next"
 
-#: front/src/components/ShortcutsModal.vue:67
+#: front/src/components/ShortcutsModal.vue:120
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Play next track"
 msgstr "Play next track"
 
-#: front/src/components/audio/PlayButton.vue:16
-#: front/src/components/audio/PlayButton.vue:63
+#: front/src/components/audio/PlayButton.vue:90
+msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play now"
 msgstr "Play now"
 
-#: front/src/components/ShortcutsModal.vue:63
+#: front/src/components/ShortcutsModal.vue:116
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Play previous track"
 msgstr "Play previous track"
 
-#: front/src/components/Sidebar.vue:211
+#: front/src/components/audio/PlayButton.vue:93
+msgctxt "*/Queue/Dropdown/Button/Title"
+msgid "Play similar songs"
+msgstr "Play similar songs"
+
+#: front/src/components/Sidebar.vue:231
+msgctxt "Sidebar/Player/Hidden text"
 msgid "Play this track"
 msgstr "Play this track"
 
-#: front/src/components/audio/Player.vue:351
+#: front/src/components/audio/Player.vue:653
+msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Play track"
 msgstr "Play track"
 
-#: front/src/components/audio/PlayButton.vue:70
-msgid "Play..."
-msgstr "Play…"
-
-#: front/src/views/playlists/Detail.vue:90
+#: front/src/components/mixins/Report.vue:66 src/views/playlists/Detail.vue:121
+#: front/src/components/mixins/Report.vue:67
+msgctxt "*/*/*"
 msgid "Playlist"
 msgstr "Playlist"
 
 #: front/src/views/playlists/Detail.vue:12
+msgctxt "Content/Playlist/Header.Subtitle"
 msgid "Playlist containing %{ count } track, by %{ username }"
 msgid_plural "Playlist containing %{ count } tracks, by %{ username }"
 msgstr[0] "Playlist containing %{ count } track, by %{ username }"
 msgstr[1] "Playlist containing %{ count } tracks, by %{ username }"
 
 #: front/src/components/playlists/Form.vue:9
+msgctxt "Content/Playlist/Message"
 msgid "Playlist created"
 msgstr "Playlist created"
 
 #: front/src/components/playlists/Editor.vue:4
+msgctxt "Content/Playlist/Title"
 msgid "Playlist editor"
 msgstr "Playlist editor"
 
 #: front/src/components/playlists/Form.vue:21
+msgctxt "Content/Playlist/Input.Label"
 msgid "Playlist name"
 msgstr "Playlist name"
 
 #: front/src/components/playlists/Form.vue:6
+msgctxt "Content/Playlist/Message"
 msgid "Playlist updated"
 msgstr "Playlist updated"
 
 #: front/src/components/playlists/Form.vue:25
+msgctxt "Content/Playlist/Dropdown.Label"
 msgid "Playlist visibility"
 msgstr "Playlist visibility"
 
 #: front/src/components/Sidebar.vue:71 src/components/library/Home.vue:16
-#: front/src/components/library/Library.vue:13 src/views/admin/Settings.vue:83
-#: front/src/views/playlists/List.vue:106
+#: front/src/components/library/Library.vue:16
+#: front/src/components/mixins/Translations.vue:100
+#: src/views/admin/Settings.vue:83
+#: front/src/views/admin/library/AlbumDetail.vue:179
+#: front/src/views/admin/library/ArtistDetail.vue:167
+#: front/src/views/admin/library/TrackDetail.vue:231
+#: src/views/playlists/List.vue:106
+#: front/src/components/mixins/Translations.vue:101
+msgctxt "*/*/*"
 msgid "Playlists"
 msgstr "Playlists"
 
-#: front/src/components/Home.vue:56
-msgid "Playlists? We got them"
-msgstr "Playlists? We got them"
+#: front/src/components/audio/EmbedWizard.vue:9
+msgctxt "Content/Embed/Message"
+msgid "Please contact your admins and ask them to update the corresponding setting."
+msgstr ""
+"Please contact your admins and ask them to update the corresponding setting."
 
-#: front/src/components/auth/Settings.vue:78
+#: front/src/components/auth/Settings.vue:79
+msgctxt "Content/Settings/Error message.List item/Call to action"
 msgid "Please double-check your password is correct"
 msgstr "Please double-check your password is correct"
 
-#: front/src/components/auth/Login.vue:9
+#: front/src/components/auth/LoginForm.vue:5
+msgctxt "Content/Login/Error message.List item/Call to action"
 msgid "Please double-check your username/password couple is correct"
 msgstr "Please double-check your username/password couple is correct"
 
 #: front/src/components/auth/Settings.vue:46
+msgctxt "Content/Settings/Paragraph"
 msgid "PNG, GIF or JPG. At most 2MB. Will be downscaled to 400x400px."
 msgstr "PNG, GIF or JPG. At most 2MB. Will be downscaled to 400x400px."
 
+#: front/src/components/About.vue:72
+msgctxt "Content/About/Header/Name"
+msgid "Pod configuration"
+msgstr "Pod configuration"
+
+#: front/src/views/admin/library/TrackDetail.vue:143 src/edits.js:70
+msgctxt "*/*/*/Short, Noun"
+msgid "Position"
+msgstr "Position"
+
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:118
+msgctxt "Content/Moderation/Help text"
 msgid "Prevent account or domain from triggering notifications, except from followers."
-msgstr ""
-"Prevent account or domain from triggering notifications, except from "
-"followers."
+msgstr "Prevent account or domain from triggering notifications, except from followers."
 
-#: front/src/components/audio/EmbedWizard.vue:29
+#: front/src/components/audio/EmbedWizard.vue:43
+msgctxt "Popup/Embed/Title/Noun"
 msgid "Preview"
 msgstr "Preview"
 
-#: front/src/components/audio/Player.vue:350
+#: front/src/components/audio/Player.vue:652
+msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Previous track"
 msgstr "Previous track"
 
-#: front/src/views/content/remote/Card.vue:39
+#: front/src/components/mixins/Translations.vue:15
+#: front/src/components/mixins/Translations.vue:16
+msgctxt "Content/Settings/Dropdown/Short"
+msgid "Private"
+msgstr "Private"
+
+#: front/src/views/content/remote/Card.vue:56
+msgctxt "Content/Library/Card.List item"
 msgid "Problem during scanning"
 msgstr "Problem during scanning"
 
-#: front/src/components/library/FileUpload.vue:58
+#: front/src/components/library/FileUpload.vue:57
+msgctxt "Content/Library/Button.Label"
 msgid "Proceed"
 msgstr "Proceed"
 
 #: front/src/views/auth/EmailConfirm.vue:26
 #: front/src/views/auth/PasswordResetConfirm.vue:31
+msgctxt "Content/Signup/Link/Verb"
 msgid "Proceed to login"
 msgstr "Proceed to login"
 
 #: front/src/components/library/FileUpload.vue:17
+msgctxt "Content/Library/Tab.Title/Short"
 msgid "Processing"
 msgstr "Processing"
 
+#: front/src/components/mixins/Translations.vue:80
+#: front/src/components/mixins/Translations.vue:81
+msgctxt "Content/OAuth Scopes/Label"
+msgid "Profile"
+msgstr "Profile"
+
+#: front/src/components/auth/SignupForm.vue:5
+msgctxt "Content/Signup/Form/Paragraph"
+msgid "Public registrations are not possible on this instance. You will need an invitation code to sign up."
+msgstr "Public registrations are not possible on this instance. You will need an invitation code to sign up."
+
 #: front/src/components/manage/moderation/AccountsTable.vue:188
-#: front/src/components/manage/moderation/DomainsTable.vue:168
+#: front/src/components/manage/moderation/DomainsTable.vue:186
 #: front/src/views/content/libraries/Quota.vue:36
 #: front/src/views/content/libraries/Quota.vue:39
 #: front/src/views/content/libraries/Quota.vue:62
 #: front/src/views/content/libraries/Quota.vue:65
 #: front/src/views/content/libraries/Quota.vue:88
 #: front/src/views/content/libraries/Quota.vue:91
+msgctxt "*/*/*/Verb"
 msgid "Purge"
 msgstr "Purge"
 
 #: front/src/views/content/libraries/Quota.vue:89
+msgctxt "Popup/Library/Title"
 msgid "Purge errored files?"
 msgstr "Purge errored files?"
 
 #: front/src/views/content/libraries/Quota.vue:37
+msgctxt "Popup/Library/Title"
 msgid "Purge pending files?"
 msgstr "Purge pending files?"
 
 #: front/src/views/content/libraries/Quota.vue:63
+msgctxt "Popup/Library/Title"
 msgid "Purge skipped files?"
 msgstr "Purge skipped files?"
 
 #: front/src/components/Sidebar.vue:20
+msgctxt "Sidebar/Queue/Tab.Title/Noun"
 msgid "Queue"
 msgstr "Queue"
 
-#: front/src/components/audio/Player.vue:283
+#: front/src/components/audio/Player.vue:329
+msgctxt "Content/Queue/Message"
 msgid "Queue shuffled!"
 msgstr "Queue shuffled!"
 
 #: front/src/views/radios/Detail.vue:80
+msgctxt "Head/Radio/Title"
 msgid "Radio"
 msgstr "Radio"
 
-#: front/src/components/library/radios/Builder.vue:233
+#: front/src/components/library/radios/Builder.vue:235
+msgctxt "Head/Radio/Title"
 msgid "Radio Builder"
 msgstr "Radio Builder"
 
 #: front/src/components/library/radios/Builder.vue:15
+msgctxt "Content/Radio/Message"
 msgid "Radio created"
 msgstr "Radio created"
 
 #: front/src/components/library/radios/Builder.vue:21
+msgctxt "Content/Radio/Input.Label/Noun"
 msgid "Radio name"
 msgstr "Radio name"
 
 #: front/src/components/library/radios/Builder.vue:12
+msgctxt "Content/Radio/Message"
 msgid "Radio updated"
 msgstr "Radio updated"
 
-#: front/src/components/library/Library.vue:10 src/components/library/Radios.vue:141
+#: front/src/components/library/Library.vue:13
+#: src/components/library/Radios.vue:142
+#: front/src/components/mixins/Translations.vue:104
+#: front/src/components/mixins/Translations.vue:105
+msgctxt "*/*/*"
 msgid "Radios"
 msgstr "Radios"
 
+#: front/src/components/auth/ApplicationForm.vue:151
+msgctxt "Content/OAuth Scopes/Label/Verb"
+msgid "Read"
+msgstr "Read"
+
+#: front/src/components/library/ImportStatusModal.vue:51
+msgctxt "Popup/Import/Table.Label/Value"
+msgid "Read our documentation for this error"
+msgstr "Read our documentation for this error"
+
+#: front/src/components/auth/Authorize.vue:24
+msgctxt "Content/Auth/Label/Noun"
+msgid "Read-only"
+msgstr "Read-only"
+
+#: front/src/components/auth/ApplicationForm.vue:152
+msgctxt "Content/OAuth Scopes/Help Text"
+msgid "Read-only access to user data"
+msgstr "Read-only access to user data"
+
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:39
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:25
+msgctxt "Content/Moderation/*/Noun"
 msgid "Reason"
 msgstr "Reason"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:222
-#: front/src/views/admin/moderation/DomainsDetail.vue:179
+#: front/src/views/admin/moderation/AccountsDetail.vue:252
+#: front/src/views/admin/moderation/DomainsDetail.vue:216
+msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Received library follows"
 msgstr "Received library follows"
 
-#: front/src/components/manage/moderation/DomainsTable.vue:40
-#: front/src/components/mixins/Translations.vue:36
-#: front/src/components/mixins/Translations.vue:37
+#: front/src/components/manage/moderation/DomainsTable.vue:48
+#: front/src/components/mixins/Translations.vue:74
+#: front/src/components/mixins/Translations.vue:75
+msgctxt "Content/Moderation/*/Noun"
 msgid "Received messages"
 msgstr "Received messages"
 
+#: front/src/components/library/EditForm.vue:27
+msgctxt "Content/Library/Paragraph"
+msgid "Recent edits"
+msgstr "Recent edits"
+
+#: front/src/components/library/EditForm.vue:17
+msgctxt "Content/Library/Paragraph"
+msgid "Recent edits awaiting review"
+msgstr "Recent edits awaiting review"
+
 #: front/src/components/library/Home.vue:24
+msgctxt "Content/Home/Title"
 msgid "Recently added"
 msgstr "Recently added"
 
+#: front/src/components/Home.vue:167
+msgctxt "Content/Home/Title"
+msgid "Recently added albums"
+msgstr "Recently added albums"
+
 #: front/src/components/library/Home.vue:11
+msgctxt "Content/Home/Title"
 msgid "Recently favorited"
 msgstr "Recently favourited"
 
 #: front/src/components/library/Home.vue:6
+msgctxt "Content/Home/Title"
 msgid "Recently listened"
 msgstr "Recently listened"
 
-#: front/src/views/content/remote/Home.vue:15
+#: front/src/components/auth/ApplicationForm.vue:13
+msgctxt "Content/Applications/Input.Label/Noun"
+msgid "Redirect URI"
+msgstr "Redirect URI"
+
+#: front/src/components/auth/Settings.vue:125
+#: src/components/auth/Settings.vue:170
+#: front/src/components/common/EmptyState.vue:16
+#: src/views/content/remote/Home.vue:15
+msgctxt "Content/*/Button.Label/Short, Verb"
 msgid "Refresh"
 msgstr "Refresh"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:135
+#: front/src/components/federation/FetchButton.vue:20
+msgctxt "Popup/*/Message.Title"
+msgid "Refresh error"
+msgstr "Refresh error"
+
+#: front/src/views/admin/library/AlbumDetail.vue:56
+#: front/src/views/admin/library/ArtistDetail.vue:54
+#: front/src/views/admin/library/TrackDetail.vue:55
+msgctxt "Content/Moderation/Button/Verb"
+msgid "Refresh from remote server"
+msgstr "Refresh from remote server"
+
+#: front/src/views/admin/moderation/DomainsDetail.vue:164
+msgctxt "Content/Moderation/Button.Label/Verb"
 msgid "Refresh node info"
 msgstr "Refresh node info"
 
-#: front/src/components/common/ActionTable.vue:272
+#: front/src/components/federation/FetchButton.vue:79
+msgctxt "Popup/*/Message.Title"
+msgid "Refresh pending"
+msgstr "Refresh pending"
+
+#: front/src/components/federation/FetchButton.vue:80
+msgctxt "Popup/*/Message.Content"
+msgid "Refresh request wasn't proceed in time by our server. It will be processed later."
+msgstr "Refresh request wasn't proceed in time by our server. It will be processed later."
+
+#: front/src/components/federation/FetchButton.vue:16
+msgctxt "Popup/*/Message.Title"
+msgid "Refresh successful"
+msgstr "Refresh successful"
+
+#: front/src/components/common/ActionTable.vue:275
+msgctxt "Content/*/Button.Tooltip/Verb"
 msgid "Refresh table content"
 msgstr "Refresh table content"
 
-#: front/src/components/auth/Signup.vue:9
-msgid "Registration are closed on this instance, you will need an invitation code to signup."
-msgstr ""
-"Registration are closed on this instance, you will need an invitation code "
-"to signup."
+#: front/src/components/federation/FetchButton.vue:12
+msgctxt "Popup/*/Message.Title"
+msgid "Refresh was skipped"
+msgstr "Refresh was skipped"
 
-#: front/src/components/manage/users/UsersTable.vue:71
-msgid "regular user"
-msgstr "regular user"
+#: front/src/components/federation/FetchButton.vue:7
+msgctxt "Popup/*/Title"
+msgid "Refreshing object from remote…"
+msgstr "Refreshing object from remote…"
+
+#: front/src/components/About.vue:86
+msgctxt "*/*/*"
+msgid "Registrations"
+msgstr "Registrations"
+
+#: front/src/components/manage/users/UsersTable.vue:72
+msgctxt "Content/Admin/Table, User role"
+msgid "Regular user"
+msgstr "Regular user"
 
+#: front/src/components/library/EditCard.vue:87
 #: front/src/views/content/libraries/Detail.vue:51
+msgctxt "Content/Library/Button.Label"
 msgid "Reject"
 msgstr "Reject"
 
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:32
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:123
+msgctxt "Content/Moderation/*/Verb"
 msgid "Reject media"
 msgstr "Reject media"
 
+#: front/src/components/library/EditCard.vue:33
+#: front/src/components/manage/library/EditsCardList.vue:24
 #: front/src/views/content/libraries/Detail.vue:43
+msgctxt "Content/Library/*/Short"
 msgid "Rejected"
 msgstr "Rejected"
 
-#: front/src/views/content/libraries/FilesTable.vue:234
-msgid "Relaunch import"
-msgstr "Relaunch import"
+#: front/src/components/manage/library/AlbumsTable.vue:43
+#: front/src/components/mixins/Translations.vue:54 src/edits.js:43
+#: front/src/components/mixins/Translations.vue:55
+msgctxt "Content/*/*/Noun"
+msgid "Release date"
+msgstr "Release date"
+
+#: front/src/components/library/FileUpload.vue:63
+msgctxt "Content/Library/Paragraph"
+msgid "Remaining storage space"
+msgstr "Remaining storage space"
+
+#: front/src/views/Notifications.vue:18 src/views/Notifications.vue:52
+msgctxt "Content/Notifications/Label"
+msgid "Remind me in:"
+msgstr "Remind me in:"
 
 #: front/src/views/content/remote/Home.vue:6
+msgctxt "Content/Library/Title/Noun"
 msgid "Remote libraries"
 msgstr "Remote libraries"
 
 #: front/src/views/content/remote/Home.vue:7
+msgctxt "Content/Library/Paragraph"
 msgid "Remote libraries are owned by other users on the network. You can access them as long as they are public or you are granted access."
-msgstr ""
-"Remote libraries are owned by other users on the network. You can access "
-"them as long as they are public or you are granted access."
+msgstr "Remote libraries are owned by other users on the network. You can access them as long as they are public or you are granted access."
 
 #: front/src/components/library/radios/Filter.vue:59
+msgctxt "Content/Radio/Button.Label/Verb"
 msgid "Remove"
 msgstr "Remove"
 
 #: front/src/components/auth/Settings.vue:58
+msgctxt "Content/Settings/Button.Label/Verb"
 msgid "Remove avatar"
 msgstr "Remove avatar"
 
+#: front/src/components/library/ArtistDetail.vue:12
+msgctxt "Content/Moderation/Button.Label"
+msgid "Remove filter"
+msgstr "Remove filter"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:198
+#: front/src/views/admin/moderation/DomainsDetail.vue:39
+msgctxt "Content/Moderation/Action/Verb"
+msgid "Remove from allow-list"
+msgstr "Remove from allow-list"
+
 #: front/src/components/favorites/TrackFavoriteIcon.vue:26
+msgctxt "Content/Track/Icon.Tooltip/Verb"
 msgid "Remove from favorites"
 msgstr "Remove from favourites"
 
 #: front/src/views/content/libraries/Quota.vue:38
+msgctxt "Popup/Library/Paragraph"
 msgid "Removes uploaded but yet to be processed tracks completely, adding the corresponding data to your quota."
-msgstr ""
-"Removes uploaded but yet to be processed tracks completely, adding the "
-"corresponding data to your quota."
+msgstr "Removes uploaded but yet to be processed tracks completely, adding the corresponding data to your quota."
 
 #: front/src/views/content/libraries/Quota.vue:64
+msgctxt "Popup/Library/Paragraph"
 msgid "Removes uploaded tracks skipped during the import processes completely, adding the corresponding data to your quota."
-msgstr ""
-"Removes uploaded tracks skipped during the import processes completely, "
-"adding the corresponding data to your quota."
+msgstr "Removes uploaded tracks skipped during the import processes completely, adding the corresponding data to your quota."
 
 #: front/src/views/content/libraries/Quota.vue:90
+msgctxt "Popup/Library/Paragraph"
 msgid "Removes uploaded tracks that could not be processed by the server completely, adding the corresponding data to your quota."
-msgstr ""
-"Removes uploaded tracks that could not be processed by the server "
-"completely, adding the corresponding data to your quota."
+msgstr "Removes uploaded tracks that could not be processed by the server completely, adding the corresponding data to your quota."
+
+#: front/src/components/audio/PlayButton.vue:94
+msgctxt "*/Queue/Dropdown/Button/Title"
+msgid "Replace current queue"
+msgstr "Replace current queue"
+
+#: front/src/components/mixins/Report.vue:6 src/components/mixins/Report.vue:7
+msgctxt "*/Moderation/*/Verb"
+msgid "Report @%{ username }…"
+msgstr "Report @%{ username }…"
+
+#: front/src/components/manage/moderation/ReportCard.vue:5
+msgctxt "Content/Moderation/Card/Short"
+msgid "Report %{ id }"
+msgstr "Report %{ id }"
+
+#: front/src/components/moderation/ReportModal.vue:139
+msgctxt "*/Moderation/Message"
+msgid "Report successfully submitted, thank you"
+msgstr "Report successfully submitted, thank you"
+
+#: front/src/components/mixins/Report.vue:36
+#: src/components/mixins/Report.vue:37
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this album…"
+msgstr "Report this album…"
+
+#: front/src/components/mixins/Report.vue:50
+#: src/components/mixins/Report.vue:51
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this artist…"
+msgstr "Report this artist…"
+
+#: front/src/components/mixins/Report.vue:72
+#: src/components/mixins/Report.vue:73
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this library…"
+msgstr "Report this library…"
+
+#: front/src/components/mixins/Report.vue:61
+#: src/components/mixins/Report.vue:62
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this playlist…"
+msgstr "Report this playlist…"
+
+#: front/src/components/mixins/Report.vue:23
+#: src/components/mixins/Report.vue:24
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this track…"
+msgstr "Report this track…"
+
+#: front/src/components/audio/PlayButton.vue:95
+msgctxt "*/Moderation/*/Button/Label,Verb"
+msgid "Report…"
+msgstr "Report…"
+
+#: front/src/components/manage/moderation/ReportCard.vue:117
+msgctxt "Content/*/*/Short"
+msgid "Reported object"
+msgstr "Reported object"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:33
-#: front/src/components/auth/SubsonicTokenForm.vue:36
+#: front/src/views/admin/moderation/Base.vue:5
+#: front/src/views/admin/moderation/ReportsList.vue:3
+#: front/src/views/admin/moderation/ReportsList.vue:208
+msgctxt "*/Moderation/*/Noun"
+msgid "Reports"
+msgstr "Reports"
+
+#: front/src/components/auth/SubsonicTokenForm.vue:38
+#: front/src/components/auth/SubsonicTokenForm.vue:41
+msgctxt "*/Settings/Button.Label/Verb"
 msgid "Request a new password"
 msgstr "Request a new password"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:34
+#: front/src/components/auth/SubsonicTokenForm.vue:39
+msgctxt "Popup/Settings/Title"
 msgid "Request a new Subsonic API password?"
 msgstr "Request a new Subsonic API password?"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:42
+#: front/src/components/auth/SubsonicTokenForm.vue:47
+msgctxt "Content/Settings/Button.Label/Verb"
 msgid "Request a password"
 msgstr "Request a password"
 
-#: front/src/components/auth/Login.vue:35 src/views/auth/PasswordReset.vue:4
-#: front/src/views/auth/PasswordReset.vue:53
+#: front/src/components/federation/FetchButton.vue:64
+msgctxt "Popup/*/Loading.Title"
+msgid "Requesting a fetch…"
+msgstr "Requesting a fetch…"
+
+#: front/src/components/library/EditForm.vue:94
+msgctxt "Content/Library/Button.Label"
+msgid "Reset to initial value"
+msgstr "Reset to initial value"
+
+#: front/src/components/auth/LoginForm.vue:34
+#: src/views/auth/PasswordReset.vue:4 front/src/views/auth/PasswordReset.vue:53
+msgctxt "*/Login/*/Verb"
 msgid "Reset your password"
 msgstr "Reset your password"
 
-#: front/src/components/favorites/List.vue:38 src/components/library/Artists.vue:30
-#: front/src/components/library/Radios.vue:52 src/views/playlists/List.vue:32
+#: front/src/components/manage/moderation/ReportCard.vue:83
+msgctxt "Content/*/*/Noun"
+msgid "Resolution date"
+msgstr "Resolution date"
+
+#: front/src/components/manage/moderation/ReportCard.vue:218
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Resolve"
+msgstr "Resolve"
+
+#: front/src/components/manage/moderation/ReportCard.vue:62
+#: front/src/views/admin/moderation/ReportsList.vue:20
+msgctxt "Content/*/*/Short"
+msgid "Resolved"
+msgstr "Resolved"
+
+#: front/src/views/content/libraries/FilesTable.vue:223
+msgctxt "Content/Library/Dropdown/Verb"
+msgid "Restart import"
+msgstr "Restart import"
+
+#: front/src/components/library/EditForm.vue:31
+msgctxt "Content/Library/Button.Label"
+msgid "Restrict to unreviewed edits"
+msgstr "Restrict to unreviewed edits"
+
+#: front/src/components/favorites/List.vue:39
+#: src/components/library/Albums.vue:34
+#: front/src/components/library/Artists.vue:34
+#: src/components/library/Radios.vue:52 front/src/views/playlists/List.vue:32
+msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Results per page"
 msgstr "Results per page"
 
 #: front/src/views/auth/EmailConfirm.vue:17
+msgctxt "Content/Signup/Link/Verb"
 msgid "Return to login"
 msgstr "Return to login"
 
+#: front/src/components/library/ArtistDetail.vue:9
+msgctxt "Content/Moderation/Link"
+msgid "Review my filters"
+msgstr "Review my filters"
+
+#: front/src/components/auth/Settings.vue:192
+msgctxt "*/*/*/Verb"
+msgid "Revoke"
+msgstr "Revoke"
+
+#: front/src/components/auth/Settings.vue:195
+msgctxt "*/Settings/Button.Label/Verb"
+msgid "Revoke access"
+msgstr "Revoke access"
+
+#: front/src/components/auth/Settings.vue:193
+msgctxt "Popup/Settings/Title"
+msgid "Revoke access for application \"%{ application }\"?"
+msgstr "Revoke access for application \"%{ application }\"?"
+
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:16
+msgctxt "Content/Moderation/Card.Title/Noun"
 msgid "Rule"
 msgstr "Rule"
 
-#: front/src/components/admin/SettingsGroup.vue:67
-#: front/src/components/library/radios/Builder.vue:33
+#: front/src/components/About.vue:28 src/components/About.vue:56
+msgctxt "Content/About/Header"
+msgid "Rules"
+msgstr "Rules"
+
+#: front/src/components/admin/SettingsGroup.vue:75
+#: front/src/components/library/radios/Builder.vue:34
+msgctxt "Content/*/Button.Label/Verb"
 msgid "Save"
 msgstr "Save"
 
-#: front/src/views/content/remote/Card.vue:165
+#: front/src/views/content/remote/Card.vue:203
+msgctxt "Content/Library/Message"
 msgid "Scan launched"
 msgstr "Scan launched"
 
-#: front/src/views/content/remote/Card.vue:63
+#: front/src/views/content/remote/Card.vue:80
+msgctxt "Content/Library/Card.Button.Label/Verb"
 msgid "Scan now"
 msgstr "Scan now"
 
-#: front/src/views/content/remote/Card.vue:166
+#: front/src/views/content/remote/Card.vue:48
+msgctxt "Content/Library/Card.List item"
+msgid "Scan pending"
+msgstr "Scan pending"
+
+#: front/src/views/content/remote/Card.vue:204
+msgctxt "Content/Library/Message"
 msgid "Scan skipped (previous scan is too recent)"
 msgstr "Scan skipped (previous scan is too recent)"
 
-#: front/src/views/content/remote/Card.vue:31
-msgid "Scan waiting"
-msgstr "Scan waiting"
-
-#: front/src/views/content/remote/Card.vue:43
+#: front/src/views/content/remote/Card.vue:60
+msgctxt "Content/Library/Card.List item"
 msgid "Scanned"
 msgstr "Scanned"
 
-#: front/src/views/content/remote/Card.vue:47
+#: front/src/views/content/remote/Card.vue:64
+msgctxt "Content/Library/Card.List item"
 msgid "Scanned with errors"
 msgstr "Scanned with errors"
 
-#: front/src/views/content/remote/Card.vue:35
+#: front/src/views/content/remote/Card.vue:52
+msgctxt "Content/Library/Card.List item"
 msgid "Scanning… (%{ progress }%)"
 msgstr "Scanning… (%{ progress }%)"
 
-#: front/src/components/library/Artists.vue:10 src/components/library/Radios.vue:29
-#: front/src/components/manage/library/FilesTable.vue:5
+#: front/src/components/auth/ApplicationForm.vue:22
+#: front/src/components/auth/Settings.vue:226
+msgctxt "Content/*/*/Noun"
+msgid "Scopes"
+msgstr "Scopes"
+
+#: front/src/components/library/Albums.vue:10
+#: src/components/library/Artists.vue:10
+#: front/src/components/library/Radios.vue:29
+#: front/src/components/manage/library/AlbumsTable.vue:5
+#: front/src/components/manage/library/ArtistsTable.vue:5
+#: front/src/components/manage/library/EditsCardList.vue:6
+#: front/src/components/manage/library/LibrariesTable.vue:5
+#: front/src/components/manage/library/TagsTable.vue:5
+#: front/src/components/manage/library/TracksTable.vue:5
+#: front/src/components/manage/library/UploadsTable.vue:5
 #: front/src/components/manage/moderation/AccountsTable.vue:5
 #: front/src/components/manage/moderation/DomainsTable.vue:5
 #: front/src/components/manage/users/InvitationsTable.vue:5
 #: front/src/components/manage/users/UsersTable.vue:5
-#: front/src/views/content/libraries/FilesTable.vue:5 src/views/playlists/List.vue:13
+#: front/src/views/admin/moderation/ReportsList.vue:8
+#: front/src/views/content/libraries/FilesTable.vue:5
+#: src/views/playlists/List.vue:13
+msgctxt "Content/Search/Input.Label/Noun"
 msgid "Search"
 msgstr "Search"
 
 #: front/src/views/content/remote/ScanForm.vue:9
+msgctxt "Content/Library/Input.Label/Verb"
 msgid "Search a remote library"
 msgstr "Search a remote library"
 
+#: front/src/components/manage/library/EditsCardList.vue:211
+#: front/src/views/admin/moderation/ReportsList.vue:207
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by account, summary, domain…"
+msgstr "Search by account, summary, domain…"
+
+#: front/src/components/manage/library/LibrariesTable.vue:191
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by domain, actor, name, description…"
+msgstr "Search by domain, actor, name, description…"
+
+#: front/src/components/manage/library/UploadsTable.vue:241
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by domain, actor, name, reference, source…"
+msgstr "Search by domain, actor, name, reference, source…"
+
+#: front/src/components/manage/library/ArtistsTable.vue:164
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by domain, name, MusicBrainz ID…"
+msgstr "Search by domain, name, MusicBrainz ID…"
+
+#: front/src/components/manage/library/TracksTable.vue:174
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by domain, title, artist, album, MusicBrainz ID…"
+msgstr "Search by domain, title, artist, album, MusicBrainz ID…"
+
+#: front/src/components/manage/library/AlbumsTable.vue:174
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by domain, title, artist, MusicBrainz ID…"
+msgstr "Search by domain, title, artist, MusicBrainz ID…"
+
 #: front/src/components/manage/moderation/AccountsTable.vue:171
+msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by domain, username, bio…"
 msgstr "Search by domain, username, bio…"
 
-#: front/src/components/manage/moderation/DomainsTable.vue:151
+#: front/src/components/manage/library/TagsTable.vue:165
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by name"
+msgstr "Search by name"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:168
+msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by name…"
 msgstr "Search by name…"
 
-#: front/src/views/content/libraries/FilesTable.vue:201
+#: front/src/views/content/libraries/FilesTable.vue:208
+msgctxt "Content/Library/Input.Placeholder"
 msgid "Search by title, artist, album…"
 msgstr "Search by title, artist, album…"
 
-#: front/src/components/manage/library/FilesTable.vue:176
-msgid "Search by title, artist, domain…"
-msgstr "Search by title, artist, domain…"
-
 #: front/src/components/manage/users/InvitationsTable.vue:153
+msgctxt "Content/Admin/Input.Placeholder/Verb"
 msgid "Search by username, e-mail address, code…"
 msgstr "Search by username, e-mail address, code…"
 
-#: front/src/components/manage/users/UsersTable.vue:163
+#: front/src/components/manage/users/UsersTable.vue:164
+msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by username, e-mail address, name…"
 msgstr "Search by username, e-mail address, name…"
 
-#: front/src/components/audio/SearchBar.vue:20
+#: front/src/components/audio/SearchBar.vue:27
+msgctxt "Sidebar/Search/Input.Placeholder"
 msgid "Search for artists, albums, tracks…"
 msgstr "Search for artists, albums, tracks…"
 
 #: front/src/components/audio/Search.vue:2
+msgctxt "Content/Search/Title"
 msgid "Search for some music"
 msgstr "Search for some music"
 
-#: front/src/components/library/Track.vue:162
-msgid "Search on lyrics.wikia.com"
-msgstr "Search on lyrics.wikia.com"
-
-#: front/src/components/library/Album.vue:27 src/components/library/Artist.vue:31
-#: front/src/components/library/Track.vue:47
+#: front/src/components/library/TagsSelector.vue:6
+msgctxt "*/Dropdown/Placeholder/Verb"
+msgid "Search for tags…"
+msgstr "Search for tags…"
+
+#: front/src/components/library/AlbumBase.vue:66
+#: front/src/components/library/ArtistBase.vue:77
+#: front/src/components/library/TrackBase.vue:82
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Search on Discogs"
+msgstr "Search on Discogs"
+
+#: front/src/components/library/AlbumBase.vue:58
+#: front/src/components/library/ArtistBase.vue:69
+#: front/src/components/library/TrackBase.vue:74
+msgctxt "Content/*/Button.Label/Verb"
 msgid "Search on Wikipedia"
 msgstr "Search on Wikipedia"
 
-#: front/src/components/library/Library.vue:32 src/views/admin/library/Base.vue:17
-#: front/src/views/admin/moderation/Base.vue:22 src/views/admin/users/Base.vue:21
-#: front/src/views/content/Base.vue:19
+#: front/src/components/library/Library.vue:35
+#: src/views/admin/library/Base.vue:35
+#: front/src/views/admin/moderation/Base.vue:44
+#: src/views/admin/users/Base.vue:21 front/src/views/content/Base.vue:19
+msgctxt "Menu/*/Hidden text"
 msgid "Secondary menu"
 msgstr "Secondary menu"
 
 #: front/src/views/admin/Settings.vue:15
+msgctxt "Content/Admin/Menu.Title"
 msgid "Sections"
 msgstr "Sections"
 
-#: front/src/components/library/radios/Builder.vue:45
+#: front/src/components/ShortcutsModal.vue:108
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek backwards 30s"
+msgstr "Seek backwards 30s"
+
+#: front/src/components/ShortcutsModal.vue:100
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek backwards 5s"
+msgstr "Seek backwards 5s"
+
+#: front/src/components/ShortcutsModal.vue:112
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek forwards 30s"
+msgstr "Seek forwards 30s"
+
+#: front/src/components/ShortcutsModal.vue:104
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek forwards 5s"
+msgstr "Seek forwards 5s"
+
+#: front/src/components/library/radios/Builder.vue:46
+msgctxt "Content/Radio/Dropdown.Placeholder/Verb"
 msgid "Select a filter"
 msgstr "Select a filter"
 
-#: front/src/components/common/ActionTable.vue:77
+#: front/src/components/common/ActionTable.vue:79
+msgctxt "Content/*/Link/Verb"
 msgid "Select all %{ total } elements"
 msgid_plural "Select all %{ total } elements"
 msgstr[0] "Select all %{ total } elements"
 msgstr[1] "Select all %{ total } elements"
 
-#: front/src/components/common/ActionTable.vue:86
+#: front/src/components/common/ActionTable.vue:88
+msgctxt "Content/*/Link/Verb"
 msgid "Select only current page"
 msgstr "Select only current page"
 
-#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:85
-#: front/src/components/manage/users/UsersTable.vue:181
-#: front/src/views/admin/moderation/AccountsDetail.vue:472
+#: front/src/components/Home.vue:43
+msgctxt "Content/Home/Link"
+msgid "Server rules"
+msgstr "Server rules"
+
+#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:112
+#: front/src/components/manage/users/UsersTable.vue:182
+#: front/src/views/admin/moderation/AccountsDetail.vue:526
+msgctxt "*/*/*/Noun"
 msgid "Settings"
 msgstr "Settings"
 
 #: front/src/components/auth/Settings.vue:10
+msgctxt "Content/Settings/Message"
 msgid "Settings updated"
 msgstr "Settings updated"
 
 #: front/src/components/admin/SettingsGroup.vue:11
+msgctxt "Content/Settings/Paragraph"
 msgid "Settings updated successfully."
 msgstr "Settings updated successfully."
 
 #: front/src/components/manage/users/InvitationForm.vue:27
+msgctxt "Content/Admin/Table.Label/Noun"
 msgid "Share link"
 msgstr "Share link"
 
 #: front/src/views/content/libraries/Detail.vue:15
+msgctxt "Content/Library/Paragraph"
 msgid "Share this link with other users so they can request access to your library."
-msgstr ""
-"Share this link with other users so they can request access to your library."
+msgstr "Share this link with other users so they can request access to your library."
 
 #: front/src/views/content/libraries/Detail.vue:14
-#: front/src/views/content/remote/Card.vue:73
+#: front/src/views/content/remote/Card.vue:90
+msgctxt "Content/Library/Title"
 msgid "Sharing link"
 msgstr "Sharing link"
 
-#: front/src/components/audio/album/Card.vue:40
+#: front/src/components/audio/EmbedWizard.vue:5
+msgctxt "Content/Embed/Message"
+msgid "Sharing will not work because this pod doesn't allow anonymous users to access content."
+msgstr ""
+"Sharing will not work because this pod doesn't allow anonymous users to "
+"access content."
+
+#: front/src/components/About.vue:156
+msgctxt "*/*/*/Verb"
+msgid "Show"
+msgstr "Show"
+
+#: front/src/components/audio/album/Card.vue:38
+msgctxt "Content/Album/Card.Link/Verb"
 msgid "Show %{ count } more track"
 msgid_plural "Show %{ count } more tracks"
 msgstr[0] "Show %{ count } more track"
 msgstr[1] "Show %{ count } more tracks"
 
-#: front/src/components/audio/artist/Card.vue:30
-msgid "Show 1 more album"
-msgid_plural "Show %{ count } more albums"
-msgstr[0] "Show 1 more album"
-msgstr[1] "Show %{ count } more albums"
+#: front/src/components/tags/List.vue:11
+msgctxt "Content/*/Button/Label/Verb"
+msgid "Show 1 more tag"
+msgid_plural "Show %{ count } more tags"
+msgstr[0] "Show 1 more tag"
+msgstr[1] "Show %{ count } more tags"
 
-#: front/src/components/ShortcutsModal.vue:42
+#: front/src/components/library/EditForm.vue:21
+msgctxt "Content/Library/Button.Label"
+msgid "Show all edits"
+msgstr "Show all edits"
+
+#: front/src/components/ShortcutsModal.vue:60
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Show available keyboard shortcuts"
 msgstr "Show available keyboard shortcuts"
 
-#: front/src/views/Notifications.vue:10
+#: front/src/components/common/ExpandableDiv.vue:7
+msgctxt "*/*/Button,Label"
+msgid "Show less"
+msgstr "Show less"
+
+#: front/src/components/common/ExpandableDiv.vue:8
+msgctxt "*/*/Button,Label"
+msgid "Show more"
+msgstr "Show more"
+
+#: front/src/views/Notifications.vue:72
+msgctxt "Content/Notifications/Form.Label/Verb"
 msgid "Show read notifications"
 msgstr "Show read notifications"
 
-#: front/src/components/forms/PasswordInput.vue:26
+#: front/src/components/forms/PasswordInput.vue:42
+msgctxt "Content/Settings/Button.Tooltip/Verb"
 msgid "Show/hide password"
 msgstr "Show/hide password"
 
-#: front/src/components/manage/library/FilesTable.vue:97
+#: front/src/components/manage/library/AlbumsTable.vue:93
+#: front/src/components/manage/library/ArtistsTable.vue:84
+#: front/src/components/manage/library/EditsCardList.vue:72
+#: front/src/components/manage/library/LibrariesTable.vue:110
+#: front/src/components/manage/library/TagsTable.vue:79
+#: front/src/components/manage/library/TracksTable.vue:95
+#: front/src/components/manage/library/UploadsTable.vue:144
 #: front/src/components/manage/moderation/AccountsTable.vue:88
-#: front/src/components/manage/moderation/DomainsTable.vue:74
+#: front/src/components/manage/moderation/DomainsTable.vue:85
 #: front/src/components/manage/users/InvitationsTable.vue:76
-#: front/src/components/manage/users/UsersTable.vue:87
-#: front/src/views/content/libraries/FilesTable.vue:114
+#: front/src/components/manage/users/UsersTable.vue:88
+#: front/src/views/content/libraries/FilesTable.vue:117
+msgctxt "Content/*/Paragraph"
 msgid "Showing results %{ start }-%{ end } on %{ total }"
 msgstr "Showing results %{ start }-%{ end } on %{ total }"
 
-#: front/src/components/ShortcutsModal.vue:83
+#: front/src/components/ShortcutsModal.vue:140
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Shuffle queue"
 msgstr "Shuffle queue"
 
-#: front/src/components/audio/Player.vue:365
+#: front/src/components/audio/Player.vue:667
+msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Shuffle your queue"
 msgstr "Shuffle your queue"
 
-#: front/src/components/auth/Signup.vue:97
+#: front/src/components/Home.vue:103
+msgctxt "*/Signup/Title"
+msgid "Sign up"
+msgstr "Sign up"
+
+#: front/src/views/auth/Signup.vue:37
+msgctxt "*/Signup/Title"
 msgid "Sign Up"
 msgstr "Sign Up"
 
+#: front/src/components/Home.vue:107
+msgctxt "Content/Home/Paragraph"
+msgid "Sign up now to keep a track of your favorites, create playlists, discover new content and much more!"
+msgstr "Sign up now to keep a track of your favourites, create playlists, discover new content and much more!"
+
 #: front/src/components/manage/users/UsersTable.vue:40
+msgctxt "Content/Admin/Table.Label/Short, Noun (Value is a date)"
 msgid "Sign-up"
 msgstr "Sign-up"
 
-#: front/src/components/mixins/Translations.vue:31
-#: front/src/views/admin/moderation/AccountsDetail.vue:176
-#: front/src/components/mixins/Translations.vue:32
+#: front/src/components/mixins/Translations.vue:69
+#: front/src/views/admin/moderation/AccountsDetail.vue:198
+#: front/src/components/mixins/Translations.vue:70
+msgctxt "Content/Admin/Table.Label/Noun"
 msgid "Sign-up date"
 msgstr "Sign-up date"
 
-#: front/src/components/manage/moderation/InstancePolicyForm.vue:119
-msgid "Silence notifications"
-msgstr "Silence notifications"
-
-#: front/src/components/library/FileUpload.vue:85
-#: front/src/components/library/Track.vue:120
-#: front/src/components/manage/library/FilesTable.vue:44
-#: front/src/components/mixins/Translations.vue:28
-#: front/src/views/content/libraries/FilesTable.vue:60
-#: front/src/components/mixins/Translations.vue:29
+#: front/src/components/library/FileUpload.vue:94
+#: front/src/components/library/TrackDetail.vue:39
+#: front/src/components/manage/library/UploadsTable.vue:65
+#: front/src/components/mixins/Translations.vue:66
+#: front/src/views/admin/library/UploadDetail.vue:219
+#: front/src/views/content/libraries/FilesTable.vue:61
+#: front/src/components/mixins/Translations.vue:67
+msgctxt "Content/*/*/Noun"
 msgid "Size"
 msgstr "Size"
 
+#: front/src/components/manage/library/UploadsTable.vue:24
+#: front/src/components/mixins/Translations.vue:24
 #: front/src/views/content/libraries/FilesTable.vue:15
-#: front/src/views/content/libraries/FilesTable.vue:204
+#: front/src/components/mixins/Translations.vue:25
+msgctxt "Content/Library/*"
 msgid "Skipped"
 msgstr "Skipped"
 
 #: front/src/views/content/libraries/Quota.vue:49
+msgctxt "Content/Library/Label"
 msgid "Skipped files"
 msgstr "Skipped files"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:97
+#: front/src/views/admin/moderation/DomainsDetail.vue:126
+msgctxt "Content/Moderation/Table.Label"
 msgid "Software"
 msgstr "Software"
 
-#: front/src/components/Footer.vue:49
+#: front/src/components/playlists/Editor.vue:21
+msgctxt "Content/Playlist/Paragraph"
+msgid "Some tracks in your queue are already in this playlist:"
+msgstr "Some tracks in your queue are already in this playlist:"
+
+#: front/src/components/PageNotFound.vue:10
+msgctxt "Content/*/Paragraph"
+msgid "Sorry, the page you asked for does not exist:"
+msgstr "Sorry, the page you asked for does not exist:"
+
+#: front/src/components/Footer.vue:57
+msgctxt "Footer/*/List item.Link"
 msgid "Source code"
 msgstr "Source code"
 
 #: front/src/components/auth/Profile.vue:23
-#: front/src/components/manage/users/UsersTable.vue:70
+#: front/src/components/manage/users/UsersTable.vue:71
+msgctxt "Content/Profile/User role"
 msgid "Staff member"
 msgstr "Staff member"
 
-#: front/src/components/radios/Button.vue:4
-msgid "Start"
-msgstr "Start"
+#: front/src/components/audio/PlayButton.vue:27
+#: src/components/radios/Button.vue:4
+msgctxt "*/Queue/Button.Label/Short, Verb"
+msgid "Start radio"
+msgstr "Start radio"
 
-#: front/src/views/admin/Settings.vue:86
+#: front/src/components/About.vue:170 src/components/Home.vue:53
+#: front/src/views/admin/Settings.vue:87
+msgctxt "Content/Home/Header"
 msgid "Statistics"
 msgstr "Statistics"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:454
+#: front/src/views/admin/moderation/AccountsDetail.vue:510
+msgctxt "Content/Moderation/Help text"
 msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this account"
-msgstr ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this account"
+msgstr "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this account"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:358
+#: front/src/views/admin/moderation/DomainsDetail.vue:418
+msgctxt "Content/Moderation/Help text"
 msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this domain"
-msgstr ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this domain"
-
-#: front/src/components/library/FileUpload.vue:86
+msgstr "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this domain"
+
+#: front/src/views/admin/library/AlbumDetail.vue:346
+#: front/src/views/admin/library/ArtistDetail.vue:345
+#: front/src/views/admin/library/LibraryDetail.vue:356
+#: front/src/views/admin/library/TagDetail.vue:210
+#: front/src/views/admin/library/TrackDetail.vue:389
+#: front/src/views/admin/library/UploadDetail.vue:335
+msgctxt "Content/Moderation/Help text"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this object"
+msgstr "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this object"
+
+#: front/src/components/library/FileUpload.vue:95
+#: front/src/components/manage/library/EditsCardList.vue:12
+#: front/src/components/manage/moderation/ReportCard.vue:57
 #: front/src/components/manage/users/InvitationsTable.vue:17
 #: front/src/components/manage/users/InvitationsTable.vue:39
 #: front/src/components/manage/users/UsersTable.vue:43
-#: front/src/views/admin/moderation/DomainsDetail.vue:123
+#: front/src/views/admin/moderation/DomainsDetail.vue:152
+#: front/src/views/admin/moderation/ReportsList.vue:14
 #: front/src/views/content/libraries/Detail.vue:28
+msgctxt "*/*/*"
 msgid "Status"
 msgstr "Status"
 
-#: front/src/components/radios/Button.vue:3
-msgid "Stop"
-msgstr "Stop"
-
-#: front/src/components/Sidebar.vue:161
+#: front/src/components/Sidebar.vue:178 src/components/radios/Button.vue:3
+msgctxt "*/Player/Button.Label/Short, Verb"
 msgid "Stop radio"
 msgstr "Stop radio"
 
-#: front/src/App.vue:22
+#: front/src/components/SetInstanceModal.vue:23
+msgctxt "*/*/Button.Label/Verb"
 msgid "Submit"
 msgstr "Submit"
 
-#: front/src/views/admin/Settings.vue:85
+#: front/src/components/library/EditForm.vue:110
+msgctxt "Content/Library/Button.Label/Verb"
+msgid "Submit and apply edit"
+msgstr "Submit and apply edit"
+
+#: front/src/components/library/EditForm.vue:7
+msgctxt "Content/Library/Button.Label"
+msgid "Submit another edit"
+msgstr "Submit another edit"
+
+#: front/src/components/moderation/ReportModal.vue:64
+msgctxt "Popup/*/Button.Label"
+msgid "Submit report"
+msgstr "Submit report"
+
+#: front/src/components/library/EditForm.vue:111
+msgctxt "Content/Library/Button.Label/Verb"
+msgid "Submit suggestion"
+msgstr "Submit suggestion"
+
+#: front/src/components/manage/moderation/ReportCard.vue:17
+msgctxt "Content/Moderation/*"
+msgid "Submitted by"
+msgstr "Submitted by"
+
+#: front/src/views/admin/Settings.vue:86
+msgctxt "Content/Admin/Menu"
 msgid "Subsonic"
 msgstr "Subsonic"
 
 #: front/src/components/auth/SubsonicTokenForm.vue:2
+msgctxt "Content/Settings/Title"
 msgid "Subsonic API password"
 msgstr "Subsonic API password"
 
-#: front/src/App.vue:26
+#: front/src/components/library/EditForm.vue:38
+msgctxt "Content/Library/Paragraph"
+msgid "Suggest a change using the form below."
+msgstr "Suggest a change using the form below."
+
+#: front/src/components/library/AlbumEdit.vue:5
+msgctxt "Content/*/Title"
+msgid "Suggest an edit on this album"
+msgstr "Suggest an edit on this album"
+
+#: front/src/components/library/ArtistEdit.vue:5
+msgctxt "Content/*/Title"
+msgid "Suggest an edit on this artist"
+msgstr "Suggest an edit on this artist"
+
+#: front/src/components/library/TrackEdit.vue:5
+msgctxt "Content/*/Title"
+msgid "Suggest an edit on this track"
+msgstr "Suggest an edit on this track"
+
+#: front/src/components/SetInstanceModal.vue:31
+msgctxt "Popup/Instance/List.Label"
 msgid "Suggested choices"
 msgstr "Suggested choices"
 
 #: front/src/components/library/FileUpload.vue:3
+msgctxt "Content/Library/Tab.Title/Short"
 msgid "Summary"
 msgstr "Summary"
 
-#: front/src/components/Footer.vue:39
+#: front/src/components/library/EditForm.vue:99
+msgctxt "*/*/*"
+msgid "Summary (optional)"
+msgstr "Summary (optional)"
+
+#: front/src/components/Footer.vue:47
+msgctxt "Footer/*/Listitem.Link"
 msgid "Support forum"
 msgstr "Support forum"
 
-#: front/src/components/library/FileUpload.vue:78
+#: front/src/views/Notifications.vue:10
+msgctxt "Content/Notifications/Header"
+msgid "Support this Funkwhale pod"
+msgstr "Support this Funkwhale pod"
+
+#: front/src/components/library/FileUpload.vue:85
+msgctxt "Content/Library/Paragraph"
 msgid "Supported extensions: %{ extensions }"
 msgstr "Supported extensions: %{ extensions }"
 
 #: front/src/components/playlists/Editor.vue:9
+msgctxt "Content/Playlist/Paragraph"
 msgid "Syncing changes to server…"
 msgstr "Syncing changes to server…"
 
+#: front/src/components/audio/SearchBar.vue:35
+msgctxt "*/*/*/Noun"
+msgid "Tag"
+msgstr "Tag"
+
+#: front/src/views/admin/library/TagDetail.vue:61
+msgctxt "Content/Moderation/Title"
+msgid "Tag data"
+msgstr "Tag data"
+
+#: front/src/components/library/Albums.vue:23
+#: src/components/library/Artists.vue:15
+#: front/src/views/admin/library/Base.vue:23
+#: src/views/admin/library/TagsList.vue:24 front/src/edits.js:24
+#: src/edits.js:50 src/edits.js:91 src/entities.js:120
+msgctxt "*/*/*/Noun"
+msgid "Tags"
+msgstr "Tags"
+
+#: front/src/components/mixins/Translations.vue:44
+#: front/src/components/mixins/Translations.vue:45
+msgctxt "Content/Moderation/Dropdown"
+msgid "Takedown request"
+msgstr "Takedown request"
+
+#: front/src/components/About.vue:35 src/components/About.vue:61
+msgctxt "Content/About/Header"
+msgid "Terms and privacy policy"
+msgstr "Terms and privacy policy"
+
+#: front/src/components/audio/EmbedWizard.vue:35
 #: front/src/components/common/CopyInput.vue:3
+msgctxt "Content/*/Paragraph"
 msgid "Text copied to clipboard!"
 msgstr "Text copied to clipboard!"
 
-#: front/src/components/Home.vue:26
-msgid "That's simple: we loved Grooveshark and we want to build something even better."
-msgstr ""
-"That's simple: we loved Grooveshark and we want to build something even "
-"better."
+#: front/src/views/admin/library/AlbumDetail.vue:81
+msgctxt "Content/Moderation/Paragraph"
+msgid "The album will be removed, as well as associated uploads, tracks, favorites and listening history. This action is irreversible."
+msgstr "The album will be removed, as well as associated uploads, tracks, favourites and listening history. This action is irreversible."
 
-#: front/src/components/Footer.vue:53
+#: front/src/components/auth/Authorize.vue:39
+msgctxt "Content/Auth/Paragraph"
+msgid "The application is also requesting the following unknown permissions:"
+msgstr "The application is also requesting the following unknown permissions:"
+
+#: front/src/views/admin/library/ArtistDetail.vue:79
+msgctxt "Content/Moderation/Paragraph"
+msgid "The artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible."
+msgstr "The artist will be removed, as well as associated uploads, tracks, albums, favourites and listening history. This action is irreversible."
+
+#: front/src/components/Footer.vue:61
+msgctxt "Footer/*/List item.Link"
 msgid "The funkwhale logo was kindly designed and provided by Francis Gading."
 msgstr "The funkwhale logo was kindly designed and provided by Francis Gading."
 
+#: front/src/components/SetInstanceModal.vue:8
+msgctxt "Popup/Instance/Error message.List item"
+msgid "The given address is not a Funkwhale server"
+msgstr "The given address is not a Funkwhale server"
+
 #: front/src/views/content/libraries/Form.vue:34
+msgctxt "Popup/Library/Paragraph"
 msgid "The library and all its tracks will be deleted. This can not be undone."
 msgstr "The library and all its tracks will be deleted. This can not be undone."
 
-#: front/src/components/library/FileUpload.vue:39
-msgid "The music files you are uploading are tagged properly:"
-msgstr "The music files you are uploading are tagged properly:"
+#: front/src/views/admin/library/LibraryDetail.vue:61
+msgctxt "Content/Moderation/Paragraph"
+msgid "The library will be removed, as well as associated uploads, and follows. This action is irreversible."
+msgstr "The library will be removed, as well as associated uploads, and follows. This action is irreversible."
+
+#: front/src/components/library/ImportStatusModal.vue:140
+msgctxt "Popup/Import/Error.Label"
+msgid "The metadata included in the file is invalid or some mandatory fields are missing."
+msgstr "The metadata included in the file is invalid or some mandatory fields are missing."
 
-#: front/src/components/audio/Player.vue:67
+#: front/src/components/library/FileUpload.vue:38
+msgctxt "Content/Library/List item"
+msgid "The music files you are uploading are tagged properly."
+msgstr "The music files you are uploading are tagged properly."
+
+#: front/src/components/audio/Player.vue:65
+msgctxt "Sidebar/Player/Error message.Paragraph"
 msgid "The next track will play automatically in a few seconds…"
 msgstr "The next track will play automatically in a few seconds…"
 
-#: front/src/components/Home.vue:121
-msgid "The plaform is free and open-source, you can install it and modify it without worries"
-msgstr ""
-"The platform is free and open-source, you can install it and modify it "
-"without worries"
+#: front/src/components/manage/moderation/NotesThread.vue:27
+msgctxt "Content/Moderation/Paragraph"
+msgid "The note will be removed. This action is irreversible."
+msgstr "The note will be removed. This action is irreversible."
+
+#: front/src/components/manage/moderation/ReportCard.vue:120
+msgctxt "Content/Moderation/Message"
+msgid "The object associated with this report was deleted."
+msgstr "The object associated with this report was deleted."
+
+#: front/src/components/playlists/Form.vue:14
+msgctxt "Content/Playlist/Error message.Title"
+msgid "The playlist could not be created"
+msgstr "The playlist could not be created"
+
+#: front/src/components/federation/FetchButton.vue:37
+msgctxt "*/*/Error"
+msgid "The remote server answered with HTTP %{ status }"
+msgstr "The remote server answered with HTTP %{ status }"
+
+#: front/src/components/federation/FetchButton.vue:13
+msgctxt "Popup/*/Message.Content"
+msgid "The remote server answered, but returned data was unsupported by Funkwhale."
+msgstr "The remote server answered, but returned data was unsupported by Funkwhale."
+
+#: front/src/components/federation/FetchButton.vue:44
+msgctxt "*/*/Error"
+msgid "The remote server didn't respond quickly enough"
+msgstr "The remote server didn't respond quickly enough"
+
+#: front/src/components/federation/FetchButton.vue:50
+msgctxt "*/*/Error"
+msgid "The remote server returned invalid JSON or JSON-LD data"
+msgstr "The remote server returned invalid JSON or JSON-LD data"
+
+#: front/src/components/manage/library/AlbumsTable.vue:189
+msgctxt "Popup/*/Paragraph"
+msgid "The selected albums will be removed, as well as associated tracks, uploads, favorites and listening history. This action is irreversible."
+msgstr "The selected albums will be removed, as well as associated tracks, uploads, favourites and listening history. This action is irreversible."
+
+#: front/src/components/manage/library/ArtistsTable.vue:179
+msgctxt "Popup/*/Paragraph"
+msgid "The selected artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible."
+msgstr "The selected artist will be removed, as well as associated uploads, tracks, albums, favourites and listening history. This action is irreversible."
+
+#: front/src/components/manage/library/LibrariesTable.vue:206
+msgctxt "Popup/*/Paragraph"
+msgid "The selected library will be removed, as well as associated uploads and follows. This action is irreversible."
+msgstr "The selected library will be removed, as well as associated uploads and follows. This action is irreversible."
+
+#: front/src/components/manage/library/TagsTable.vue:180
+msgctxt "Popup/*/Paragraph"
+msgid "The selected tag will be removed and unlinked with existing content, if any. This action is irreversible."
+msgstr "The selected tag will be removed and unlinked with existing content, if any. This action is irreversible."
+
+#: front/src/components/manage/library/TracksTable.vue:189
+msgctxt "Popup/*/Paragraph"
+msgid "The selected tracks will be removed, as well as associated uploads, favorites and listening history. This action is irreversible."
+msgstr "The selected tracks will be removed, as well as associated uploads, favourites and listening history. This action is irreversible."
+
+#: front/src/components/manage/library/UploadsTable.vue:256
+msgctxt "Popup/*/Paragraph"
+msgid "The selected upload will be removed. This action is irreversible."
+msgstr "The selected upload will be removed. This action is irreversible."
+
+#: front/src/components/SetInstanceModal.vue:7
+msgctxt "Popup/Instance/Error message.List item"
+msgid "The server might be down"
+msgstr "The server might be down"
 
 #: front/src/components/auth/SubsonicTokenForm.vue:4
+msgctxt "Content/Settings/Paragraph"
 msgid "The Subsonic API is not available on this Funkwhale instance."
 msgstr "The Subsonic API is not available on this Funkwhale instance."
 
-#: front/src/components/library/FileUpload.vue:43
+#: front/src/components/library/EditCard.vue:96
+msgctxt "Popup/Library/Paragraph"
+msgid "The suggestion will be completely removed, this action is irreversible."
+msgstr "The suggestion will be completely removed, this action is irreversible."
+
+#: front/src/views/admin/library/TagDetail.vue:44
+msgctxt "Content/Moderation/Paragraph"
+msgid "The tag will be removed and unlinked from any existing entity. This action is irreversible."
+msgstr "The tag will be removed and unlinked from any existing entity. This action is irreversible."
+
+#: front/src/components/playlists/PlaylistModal.vue:34
+msgctxt "Popup/Playlist/Error message.Title"
+msgid "The track can't be added to a playlist"
+msgstr "The track can't be added to a playlist"
+
+#: front/src/components/audio/Player.vue:62
+msgctxt "Sidebar/Player/Error message.Title"
+msgid "The track cannot be loaded"
+msgstr "The track cannot be loaded"
+
+#: front/src/views/admin/library/TrackDetail.vue:80
+msgctxt "Content/Moderation/Paragraph"
+msgid "The track will be removed, as well as associated uploads, favorites and listening history. This action is irreversible."
+msgstr "The track will be removed, as well as associated uploads, favourites and listening history. This action is irreversible."
+
+#: front/src/views/admin/library/UploadDetail.vue:68
+msgctxt "Content/Moderation/Paragraph"
+msgid "The upload will be removed. This action is irreversible."
+msgstr "The upload will be removed. This action is irreversible."
+
+#: front/src/components/library/FileUpload.vue:42
+msgctxt "Content/Library/List item"
 msgid "The uploaded music files are in OGG, Flac or MP3 format"
 msgstr "The uploaded music files are in OGG, Flac or MP3 format"
 
 #: front/src/views/content/Home.vue:4
+msgctxt "Content/Library/Paragraph"
 msgid "There are various ways to grab new content and make it available here."
 msgstr "There are various ways to grab new content and make it available here."
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:66
+msgctxt "Popup/Moderation/Paragraph"
 msgid "This action is irreversible."
 msgstr "This action is irreversible."
 
-#: front/src/components/library/Album.vue:85
+#: front/src/components/library/AlbumDetail.vue:29
+msgctxt "Content/Album/Paragraph"
 msgid "This album is present in the following libraries:"
 msgstr "This album is present in the following libraries:"
 
-#: front/src/components/library/Artist.vue:63
+#: front/src/components/library/ArtistDetail.vue:42
+msgctxt "Content/Artist/Paragraph"
 msgid "This artist is present in the following libraries:"
 msgstr "This artist is present in the following libraries:"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:55
-#: front/src/views/admin/moderation/DomainsDetail.vue:48
+#: front/src/components/manage/moderation/DomainsTable.vue:169
+msgctxt "Content/Moderation/Popup"
+msgid "This domain is present in your allow-list"
+msgstr "This domain is present in your allow-list"
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:84
+#: front/src/views/admin/moderation/DomainsDetail.vue:76
+msgctxt "Content/Moderation/Card.Title"
 msgid "This domain is subject to specific moderation rules"
 msgstr "This domain is subject to specific moderation rules"
 
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:16
+msgctxt "Content/Moderation/Card.Title"
+msgid "This entity is subject to specific moderation rules"
+msgstr "This entity is subject to specific moderation rules"
+
 #: front/src/views/content/Home.vue:9
+msgctxt "Content/Library/Paragraph"
 msgid "This instance offers up to %{quota} of storage space for every user."
 msgstr "This instance offers up to %{quota} of storage space for every user."
 
+#: front/src/components/auth/Settings.vue:300
+msgctxt "Popup/Settings/Paragraph"
+msgid "This is irreversible and will permanently remove your data from our servers. You will we immediatly logged out."
+msgstr "This is irreversible and will permanently remove your data from our servers. You will we immediately logged out."
+
+#: front/src/components/auth/Settings.vue:165
+msgctxt "Content/Settings/Paragraph"
+msgid "This is the list of applications that have access to your account data."
+msgstr "This is the list of applications that have access to your account data."
+
+#: front/src/components/auth/Settings.vue:218
+msgctxt "Content/Settings/Paragraph"
+msgid "This is the list of applications that you have created."
+msgstr "This is the list of applications that you have created."
+
 #: front/src/components/auth/Profile.vue:16
+msgctxt "Content/Profile/Button.Paragraph"
 msgid "This is you!"
 msgstr "This is you!"
 
-#: front/src/views/content/libraries/Form.vue:71
+#: front/src/views/content/libraries/Form.vue:73
+msgctxt "Content/Library/Input.Placeholder"
 msgid "This library contains my personal music, I hope you like it."
 msgstr "This library contains my personal music, I hope you like it."
 
-#: front/src/views/content/remote/Card.vue:131
+#: front/src/views/content/remote/Card.vue:169
+msgctxt "Content/Library/Card.Help text"
 msgid "This library is private and your approval from its owner is needed to access its content"
-msgstr ""
-"This library is private and approval from its owner is needed to access its "
-"content"
+msgstr "This library is private and your approval from its owner is needed to access its content"
 
-#: front/src/views/content/remote/Card.vue:132
+#: front/src/views/content/remote/Card.vue:170
+msgctxt "Content/Library/Card.Help text"
 msgid "This library is public and you can access its content freely"
 msgstr "This library is public and you can access its content freely"
 
-#: front/src/components/common/ActionTable.vue:45
+#: front/src/components/common/ActionTable.vue:47
+msgctxt "Modal/*/Paragraph"
 msgid "This may affect a lot of elements or have irreversible consequences, please double check this is really what you want."
-msgstr ""
-"This may affect a lot of elements or have irreversible consequences, please "
-"double check this is really what you want."
+msgstr "This may affect a lot of elements or have irreversible consequences, please double check this is really what you want."
+
+#: front/src/components/library/AlbumEdit.vue:8
+#: front/src/components/library/ArtistEdit.vue:8
+#: front/src/components/library/TrackEdit.vue:8
+msgctxt "Content/*/Message"
+msgid "This object is managed by another server, you cannot edit it."
+msgstr "This object is managed by another server, you cannot edit it."
+
+#: front/src/components/Home.vue:87
+msgctxt "Content/Home/Paragraph"
+msgid "This pod runs Funkwhale, a community-driven project that lets you listen and share music and audio within a decentralized, open network."
+msgstr "This pod runs Funkwhale, a community-driven project that lets you listen and share music and audio within a decentralised, open network."
 
-#: front/src/components/library/FileUpload.vue:52
+#: front/src/components/library/FileUpload.vue:51
+msgctxt "Content/Library/Paragraph"
 msgid "This reference will be used to group imported files together."
-msgstr "his reference will be used to group imported files together."
+msgstr "This reference will be used to group imported files together."
 
-#: front/src/components/audio/PlayButton.vue:73
+#: front/src/components/mixins/Translations.vue:33
+#: front/src/components/mixins/Translations.vue:34
+msgctxt "Content/Library/Help text"
+msgid "This track could not be processed, please make sure it is tagged correctly"
+msgstr "This track could not be processed, please make sure it is tagged correctly"
+
+#: front/src/components/mixins/Translations.vue:29
+#: front/src/components/mixins/Translations.vue:30
+msgctxt "Content/Library/Help text"
+msgid "This track has been uploaded, but hasn't been processed by the server yet"
+msgstr "This track has been uploaded, but hasn't been processed by the server yet"
+
+#: front/src/components/mixins/Translations.vue:25
+#: front/src/components/mixins/Translations.vue:26
+msgctxt "Content/Library/Help text"
+msgid "This track is already present in one of your libraries"
+msgstr "This track is already present in one of your libraries"
+
+#: front/src/components/audio/PlayButton.vue:103
+msgctxt "*/Queue/Button/Title"
 msgid "This track is not available in any library you have access to"
 msgstr "This track is not available in any library you have access to"
 
-#: front/src/components/library/Track.vue:171
+#: front/src/components/library/TrackDetail.vue:82
+msgctxt "Content/Track/Paragraph"
 msgid "This track is present in the following libraries:"
 msgstr "This track is present in the following libraries:"
 
-#: front/src/views/playlists/Detail.vue:37
+#: front/src/views/playlists/Detail.vue:46
+msgctxt "Popup/Playlist/Paragraph"
 msgid "This will completely delete this playlist and cannot be undone."
 msgstr "This will completely delete this playlist and cannot be undone."
 
 #: front/src/views/radios/Detail.vue:27
+msgctxt "Popup/Radio/Paragraph"
 msgid "This will completely delete this radio and cannot be undone."
 msgstr "This will completely delete this radio and cannot be undone."
 
-#: front/src/components/auth/SubsonicTokenForm.vue:50
+#: front/src/components/auth/SubsonicTokenForm.vue:55
+msgctxt "Popup/Settings/Paragraph"
 msgid "This will completely disable access to the Subsonic API using from account."
-msgstr ""
-"This will completely disable access to the Subsonic API using from account."
+msgstr "This will completely disable access to the Subsonic API using from account."
 
-#: front/src/App.vue:132 src/components/Footer.vue:72
-msgid "This will erase your local data and disconnect you, do you want to continue?"
-msgstr ""
-"This will erase your local data and disconnect you, do you want to continue?"
+#: front/src/components/manage/moderation/ReportCard.vue:359
+msgctxt "Content/Moderation/Popup,Paragraph"
+msgid "This will delete the object associated with this report and mark the report as resolved. The deletion is irreversible."
+msgstr "This will delete the object associated with this report and mark the report as resolved. The deletion is irreversible."
 
-#: front/src/components/auth/SubsonicTokenForm.vue:35
+#: front/src/components/auth/SubsonicTokenForm.vue:40
+msgctxt "Popup/Settings/Paragraph"
 msgid "This will log you out from existing devices that use the current password."
-msgstr ""
-"This will log you out from existing devices that use the current password."
+msgstr "This will log you out from existing devices that use the current password."
+
+#: front/src/components/auth/Settings.vue:253
+msgctxt "Popup/Settings/Paragraph"
+msgid "This will permanently delete the application and all the associated tokens."
+msgstr "This will permanently delete the application and all the associated tokens."
 
-#: front/src/components/playlists/Editor.vue:44
+#: front/src/components/auth/Settings.vue:194
+msgctxt "Popup/Settings/Paragraph"
+msgid "This will prevent this application from accessing the service on your behalf."
+msgstr "This will prevent this application from accessing the service on your behalf."
+
+#: front/src/components/playlists/Editor.vue:54
+msgctxt "Popup/Playlist/Paragraph"
 msgid "This will remove all tracks from this playlist and cannot be undone."
 msgstr "This will remove all tracks from this playlist and cannot be undone."
 
-#: front/src/components/audio/track/Table.vue:6
-#: front/src/components/manage/library/FilesTable.vue:37
-#: front/src/components/mixins/Translations.vue:27
-#: front/src/views/content/libraries/FilesTable.vue:54
-#: front/src/components/mixins/Translations.vue:28
+#: front/src/components/audio/track/Table.vue:7
+#: front/src/components/manage/library/AlbumsTable.vue:39
+#: front/src/components/manage/library/TracksTable.vue:39
+#: front/src/views/admin/library/AlbumDetail.vue:105
+#: front/src/views/admin/library/TrackDetail.vue:104
+#: front/src/views/content/libraries/FilesTable.vue:55 src/edits.js:36
+#: front/src/edits.js:62
+msgctxt "*/*/*/Noun"
 msgid "Title"
 msgstr "Title"
 
-#: front/src/components/ShortcutsModal.vue:79
+#: front/src/components/SetInstanceModal.vue:16
+msgctxt "Popup/Instance/Paragraph"
+msgid "To continue, please select the Funkwhale instance you want to connect to. Enter the address directly, or select one of the suggested choices."
+msgstr "To continue, please select the Funkwhale instance you want to connect to. Enter the address directly, or select one of the suggested choices."
+
+#: front/src/components/ShortcutsModal.vue:148
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle favorite"
+msgstr "Toggle favourite"
+
+#: front/src/components/ShortcutsModal.vue:132
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle mute"
+msgstr "Toggle mute"
+
+#: front/src/components/ShortcutsModal.vue:136
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Toggle queue looping"
 msgstr "Toggle queue looping"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:288
-#: front/src/views/admin/moderation/DomainsDetail.vue:225
+#: front/src/views/admin/library/AlbumDetail.vue:238
+#: front/src/views/admin/library/ArtistDetail.vue:226
+#: front/src/views/admin/library/LibraryDetail.vue:219
+#: front/src/views/admin/library/TrackDetail.vue:290
+#: front/src/views/admin/moderation/AccountsDetail.vue:329
+#: front/src/views/admin/moderation/DomainsDetail.vue:262
+msgctxt "Content/Moderation/Table.Label"
 msgid "Total size"
 msgstr "Total size"
 
-#: front/src/views/content/libraries/Card.vue:61
+#: front/src/views/content/libraries/Card.vue:68
+msgctxt "Content/Library/Card.Help text"
 msgid "Total size of the files in this library"
 msgstr "Total size of the files in this library"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:113
+#: front/src/views/admin/moderation/DomainsDetail.vue:142
+msgctxt "Content/*/*"
 msgid "Total users"
 msgstr "Total users"
 
-#: front/src/components/audio/SearchBar.vue:27 src/components/library/Track.vue:262
+#: front/src/components/audio/SearchBar.vue:34
+#: front/src/components/library/TrackBase.vue:188
+#: front/src/components/library/TrackDetail.vue:128
 #: front/src/components/metadata/Search.vue:138
+#: src/components/mixins/Report.vue:28
+#: front/src/views/admin/library/UploadDetail.vue:199
+#: front/src/components/mixins/Report.vue:29
+msgctxt "*/*/*/Noun"
 msgid "Track"
 msgstr "Track"
 
-#: front/src/views/content/libraries/FilesTable.vue:205
-msgid "Track already present in one of your libraries"
-msgstr "Track already present in one of your libraries"
+#: front/src/components/library/EditCard.vue:13
+msgctxt "Content/Library/Card/Short"
+msgid "Track #%{ id } - %{ name }"
+msgstr "Track #%{ id } - %{ name }"
+
+#: front/src/views/admin/library/TrackDetail.vue:97
+msgctxt "Content/Moderation/Title"
+msgid "Track data"
+msgstr "Track data"
 
-#: front/src/components/library/Track.vue:85
+#: front/src/components/library/TrackDetail.vue:4
+msgctxt "Content/Track/Title/Noun"
 msgid "Track information"
 msgstr "Track information"
 
-#: front/src/components/library/radios/Filter.vue:44
-msgid "Track matching filter"
-msgstr "Track matching filter"
-
-#: front/src/components/mixins/Translations.vue:23
-#: front/src/components/mixins/Translations.vue:24
+#: front/src/components/mixins/Translations.vue:60
+#: front/src/components/mixins/Translations.vue:61
+msgctxt "Content/*/Dropdown/Noun"
 msgid "Track name"
 msgstr "Track name"
 
-#: front/src/views/content/libraries/FilesTable.vue:209
-msgid "Track uploaded, but not processed by the server yet"
-msgstr "Track uploaded, but not processed by the server yet"
-
-#: front/src/components/instance/Stats.vue:54
-msgid "tracks"
-msgstr "tracks"
-
-#: front/src/components/library/Album.vue:75
-#: front/src/components/playlists/PlaylistModal.vue:33
-#: front/src/views/admin/moderation/AccountsDetail.vue:329
-#: front/src/views/admin/moderation/DomainsDetail.vue:265
+#: front/src/components/library/AlbumDetail.vue:19
+#: front/src/components/library/TagDetail.vue:36
+#: front/src/components/manage/library/AlbumsTable.vue:42
+#: front/src/components/manage/library/ArtistsTable.vue:42
+#: front/src/components/manage/library/TagsTable.vue:44
+#: front/src/components/playlists/PlaylistModal.vue:47
+#: front/src/views/admin/library/AlbumDetail.vue:268
+#: front/src/views/admin/library/ArtistDetail.vue:266
+#: front/src/views/admin/library/Base.vue:14
+#: front/src/views/admin/library/LibraryDetail.vue:248
+#: front/src/views/admin/library/TagDetail.vue:143
+#: front/src/views/admin/library/TracksList.vue:24
+#: front/src/views/admin/moderation/AccountsDetail.vue:374
+#: front/src/views/admin/moderation/DomainsDetail.vue:311
 #: front/src/views/content/Base.vue:8 src/views/content/libraries/Detail.vue:8
-#: front/src/views/playlists/Detail.vue:50 src/views/radios/Detail.vue:34
+#: front/src/views/playlists/Detail.vue:76 src/views/radios/Detail.vue:34
+msgctxt "*/*/*"
 msgid "Tracks"
 msgstr "Tracks"
 
-#: front/src/components/library/Artist.vue:54
+#: front/src/components/library/ArtistDetail.vue:33
+msgctxt "Content/Artist/Title"
 msgid "Tracks by this artist"
 msgstr "Tracks by this artist"
 
-#: front/src/components/instance/Stats.vue:25
-msgid "Tracks favorited"
-msgstr "Tracks favourited"
-
-#: front/src/components/instance/Stats.vue:19
-msgid "tracks listened"
-msgstr "tracks listened"
-
-#: front/src/components/library/Track.vue:138
-#: front/src/components/manage/library/FilesTable.vue:41
-#: front/src/views/admin/moderation/AccountsDetail.vue:151
+#: front/src/components/library/radios/Filter.vue:44
+msgctxt "Popup/Radio/Title/Noun"
+msgid "Tracks matching filter"
+msgstr "Tracks matching filter"
+
+#: front/src/components/library/TrackDetail.vue:57
+#: front/src/components/manage/moderation/ReportCard.vue:134
+#: front/src/views/admin/library/UploadDetail.vue:250
+#: front/src/views/admin/moderation/AccountsDetail.vue:181
+msgctxt "Content/Track/Table.Label/Noun"
 msgid "Type"
 msgstr "Type"
 
 #: front/src/components/manage/moderation/AccountsTable.vue:44
-#: front/src/components/manage/moderation/DomainsTable.vue:42
+#: front/src/components/manage/moderation/DomainsTable.vue:50
+msgctxt "Content/Moderation/Table.Label/Short"
 msgid "Under moderation rule"
 msgstr "Under moderation rule"
 
-#: front/src/views/content/remote/Card.vue:100 src/views/content/remote/Card.vue:105
+#: front/src/components/ShortcutsModal.vue:68
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Unfocus searchbar"
+msgstr "Unfocus searchbar"
+
+#: front/src/views/content/remote/Card.vue:122
+#: src/views/content/remote/Card.vue:127
+msgctxt "*/Library/Button.Label/Verb"
 msgid "Unfollow"
 msgstr "Unfollow"
 
-#: front/src/views/content/remote/Card.vue:101
+#: front/src/views/content/remote/Card.vue:123
+msgctxt "Popup/Library/Title"
 msgid "Unfollow this library?"
 msgstr "Unfollow this library?"
 
-#: front/src/components/About.vue:17
-msgid "Unfortunately, owners of this instance did not yet take the time to complete this page."
-msgstr ""
-"Unfortunately, owners of this instance did not yet take the time to complete "
-"this page."
-
-#: front/src/components/Home.vue:37
-msgid "Unlimited music"
-msgstr "Unlimited music"
+#: front/src/components/federation/FetchButton.vue:54
+#: front/src/components/federation/FetchButton.vue:55
+#: front/src/components/library/ImportStatusModal.vue:144
+msgctxt "*/*/Error"
+msgid "Unknown error"
+msgstr "Unknown error"
 
-#: front/src/components/audio/Player.vue:354
+#: front/src/components/audio/Player.vue:656
+msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Unmute"
 msgstr "Unmute"
 
-#: front/src/components/manage/moderation/InstancePolicyCard.vue:45
+#: front/src/components/manage/moderation/ReportCard.vue:225
+msgctxt "Content/*/Button.Label"
+msgid "Unresolve"
+msgstr "Unresolve"
+
+#: front/src/components/manage/moderation/ReportCard.vue:67
+#: front/src/views/admin/moderation/ReportsList.vue:23
+msgctxt "Content/*/*/Short"
+msgid "Unresolved"
+msgstr "Unresolved"
+
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:57
+msgctxt "Content/Moderation/Card.Button.Label/Verb"
 msgid "Update"
 msgstr "Update"
 
+#: front/src/components/auth/ApplicationForm.vue:64
+msgctxt "Content/Applications/Button.Label/Verb"
+msgid "Update application"
+msgstr "Update application"
+
 #: front/src/components/auth/Settings.vue:50
+msgctxt "Content/Settings/Button.Label/Verb"
 msgid "Update avatar"
 msgstr "Update avatar"
 
 #: front/src/views/content/libraries/Form.vue:25
+msgctxt "Content/Library/Button.Label/Verb"
 msgid "Update library"
 msgstr "Update library"
 
-#: front/src/components/manage/moderation/InstancePolicyForm.vue:3
-msgid "Update moderation rule"
-msgstr "Update moderation rule"
-
 #: front/src/components/playlists/Form.vue:33
+msgctxt "Content/Playlist/Button.Label/Verb"
 msgid "Update playlist"
 msgstr "Update playlist"
 
 #: front/src/components/auth/Settings.vue:27
+msgctxt "Content/Settings/Button.Label/Verb"
 msgid "Update settings"
 msgstr "Update settings"
 
 #: front/src/views/auth/PasswordResetConfirm.vue:21
+msgctxt "Content/Signup/Button.Label"
 msgid "Update your password"
 msgstr "Update your password"
 
-#: front/src/views/content/libraries/Card.vue:44
+#: front/src/views/content/libraries/Card.vue:45
 #: front/src/views/content/libraries/DetailArea.vue:24
+msgctxt "Content/Library/Card.Button.Label/Verb"
 msgid "Upload"
 msgstr "Upload"
 
 #: front/src/components/auth/Settings.vue:45
+msgctxt "Content/Settings/Title/Verb"
 msgid "Upload a new avatar"
 msgstr "Upload a new avatar"
 
 #: front/src/views/content/Home.vue:6
+msgctxt "Content/Library/Title/Verb"
 msgid "Upload audio content"
 msgstr "Upload audio content"
 
-#: front/src/views/content/libraries/FilesTable.vue:57
+#: front/src/views/admin/library/UploadDetail.vue:85
+msgctxt "Content/Moderation/Title"
+msgid "Upload data"
+msgstr "Upload data"
+
+#: front/src/views/content/libraries/FilesTable.vue:58
+msgctxt "*/*/*/Noun"
 msgid "Upload date"
 msgstr "Upload date"
 
-#: front/src/components/library/FileUpload.vue:220
-#: front/src/components/library/FileUpload.vue:221
+#: front/src/components/library/FileUpload.vue:258
+msgctxt "Content/Library/Help text"
 msgid "Upload denied, ensure the file is not too big and that you have not reached your quota"
-msgstr ""
-"Upload denied, ensure the file is not too big and that you have not reached "
-"your quota"
+msgstr "Upload denied, ensure the file is not too big and that you have not reached your quota"
+
+#: front/src/components/library/ImportStatusModal.vue:8
+msgctxt "Popup/Import/Message"
+msgid "Upload is still pending and will soon be processed by the server."
+msgstr "Upload is still pending and will soon be processed by the server."
 
 #: front/src/views/content/Home.vue:7
+msgctxt "Content/Library/Paragraph"
 msgid "Upload music files (MP3, OGG, FLAC, etc.) from your personal library directly from your browser to enjoy them here."
-msgstr ""
-"Upload music files (MP3, OGG, FLAC, etc.) from your personal library "
-"directly from your browser to enjoy them here."
+msgstr "Upload music files (MP3, OGG, FLAC, etc.) from your personal library directly from your browser to enjoy them here."
 
-#: front/src/components/library/FileUpload.vue:31
+#: front/src/components/library/FileUpload.vue:30
+msgctxt "Content/Library/Title/Verb"
 msgid "Upload new tracks"
 msgstr "Upload new tracks"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:269
+#: front/src/components/About.vue:99
+#: front/src/views/admin/moderation/AccountsDetail.vue:309
+msgctxt "*/*/*"
 msgid "Upload quota"
 msgstr "Upload quota"
 
-#: front/src/components/library/FileUpload.vue:229
+#: front/src/components/library/FileUpload.vue:267
+msgctxt "Content/Library/Help text"
 msgid "Upload timeout, please try again"
 msgstr "Upload timeout, please try again"
 
-#: front/src/components/library/FileUpload.vue:100
+#: front/src/components/library/ImportStatusModal.vue:14
+msgctxt "Popup/Import/Message"
+msgid "Upload was skipped because a similar one is already available in one of your libraries."
+msgstr "Upload was skipped because a similar one is already available in one of your libraries."
+
+#: front/src/components/library/ImportStatusModal.vue:11
+msgctxt "Popup/Import/Message"
+msgid "Upload was successfully processed by the server."
+msgstr "Upload was successfully processed by the server."
+
+#: front/src/components/library/FileUpload.vue:109
+msgctxt "Content/Library/Table"
 msgid "Uploaded"
 msgstr "Uploaded"
 
 #: front/src/components/library/FileUpload.vue:5
+msgctxt "Content/Library/Tab.Title/Short"
 msgid "Uploading"
 msgstr "Uploading"
 
-#: front/src/components/library/FileUpload.vue:103
+#: front/src/components/library/FileUpload.vue:112
+msgctxt "Content/Library/Table"
 msgid "Uploading…"
 msgstr "Uploading…"
 
+#: front/src/components/manage/library/LibrariesTable.vue:52
 #: front/src/components/manage/moderation/AccountsTable.vue:41
-#: front/src/components/mixins/Translations.vue:37
-#: front/src/views/admin/moderation/AccountsDetail.vue:305
-#: front/src/views/admin/moderation/DomainsDetail.vue:241
-#: front/src/components/mixins/Translations.vue:38
+#: front/src/components/mixins/Translations.vue:75
+#: front/src/views/admin/library/AlbumDetail.vue:258
+#: front/src/views/admin/library/ArtistDetail.vue:246
+#: front/src/views/admin/library/Base.vue:20
+#: front/src/views/admin/library/LibraryDetail.vue:258
+#: front/src/views/admin/library/TrackDetail.vue:310
+#: front/src/views/admin/library/UploadsList.vue:24
+#: front/src/views/admin/moderation/AccountsDetail.vue:349
+#: front/src/views/admin/moderation/DomainsDetail.vue:281
+#: front/src/components/mixins/Translations.vue:76
+msgctxt "*/*/*"
 msgid "Uploads"
 msgstr "Uploads"
 
+#: front/src/components/auth/ApplicationForm.vue:16
+msgctxt "Content/Applications/Help Text"
+msgid "Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is not served on the web."
+msgstr "Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is not served on the web."
+
 #: front/src/components/Footer.vue:16
+msgctxt "Footer/*/List item.Link"
 msgid "Use another instance"
 msgstr "Use another instance"
 
+#: front/src/components/Home.vue:146
+msgctxt "Content/Home/Link"
+msgid "Use Funkwhale on other devices with our apps"
+msgstr "Use Funkwhale on other devices with our apps"
+
+#: front/src/components/moderation/ReportModal.vue:44
+msgctxt "*/*/Field,Help"
+msgid "Use this field to provide additional context to the moderator that will handle your report."
+msgstr "Use this field to provide additional context to the moderator that will handle your report."
+
 #: front/src/views/auth/PasswordReset.vue:12
+msgctxt "Content/Signup/Paragraph"
 msgid "Use this form to request a password reset. We will send an email to the given address with instructions to reset your password."
-msgstr ""
-"Use this form to request a password reset. We will send an email to the "
-"given address with instructions to reset your password."
+msgstr "Use this form to request a password reset. We will send an email to the given address with instructions to reset your password."
+
+#: front/src/components/moderation/ReportModal.vue:18
+msgctxt "*/Moderation/Popup,Paragraph"
+msgid "Use this form to submit a report to our moderation team."
+msgstr "Use this form to submit a report to our moderation team."
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:111
+msgctxt "Content/Moderation/Help text"
 msgid "Use this setting to temporarily enable/disable the policy without completely removing it."
-msgstr ""
-"Use this setting to temporarily enable/disable the policy without completely "
-"removing it."
+msgstr "Use this setting to temporarily enable/disable the policy without completely removing it."
 
 #: front/src/components/manage/users/InvitationsTable.vue:49
+msgctxt "Content/Admin/Table"
 msgid "Used"
 msgstr "Used"
 
+#: front/src/components/Home.vue:125
+msgctxt "Content/Home/Header"
+msgid "Useful links"
+msgstr "Useful links"
+
 #: front/src/views/content/libraries/Detail.vue:26
+msgctxt "Content/Library/Table.Label"
 msgid "User"
 msgstr "User"
 
-#: front/src/components/instance/Stats.vue:5
-msgid "User activity"
-msgstr "User activity"
+#: front/src/components/Home.vue:154
+msgctxt "Content/Home/Link"
+msgid "User guides"
+msgstr "User guides"
 
-#: front/src/components/library/Album.vue:82 src/components/library/Artist.vue:60
-#: front/src/components/library/Track.vue:168
+#: front/src/views/admin/Settings.vue:88
+msgctxt "Content/Admin/Menu"
+msgid "User Interface"
+msgstr "User Interface"
+
+#: front/src/components/library/AlbumDetail.vue:26
+#: front/src/components/library/ArtistDetail.vue:39
+#: front/src/components/library/TrackDetail.vue:79
+msgctxt "Content/*/Title/Noun"
 msgid "User libraries"
 msgstr "User libraries"
 
 #: front/src/components/library/Radios.vue:20
+msgctxt "Content/Radio/Title"
 msgid "User radios"
 msgstr "User radios"
 
-#: front/src/components/auth/Signup.vue:19
+#: front/src/components/auth/SignupForm.vue:15
 #: front/src/components/manage/users/UsersTable.vue:37
-#: front/src/components/mixins/Translations.vue:33
-#: front/src/views/admin/moderation/AccountsDetail.vue:85
-#: front/src/components/mixins/Translations.vue:34
+#: front/src/components/mixins/Translations.vue:71
+#: front/src/views/admin/moderation/AccountsDetail.vue:114
+#: front/src/components/mixins/Translations.vue:72
+msgctxt "Content/*/*"
 msgid "Username"
 msgstr "Username"
 
-#: front/src/components/auth/Login.vue:15
+#: front/src/components/auth/LoginForm.vue:11
+msgctxt "Content/Login/Input.Label/Noun"
 msgid "Username or email"
 msgstr "Username or email"
 
-#: front/src/components/instance/Stats.vue:13
-msgid "users"
-msgstr "users"
-
-#: front/src/components/Sidebar.vue:91
-#: front/src/components/manage/moderation/DomainsTable.vue:39
-#: front/src/components/mixins/Translations.vue:35 src/views/admin/Settings.vue:81
-#: front/src/views/admin/users/Base.vue:5 src/views/admin/users/UsersList.vue:3
-#: front/src/views/admin/users/UsersList.vue:21
-#: front/src/components/mixins/Translations.vue:36
+#: front/src/components/Sidebar.vue:106
+#: front/src/components/manage/moderation/DomainsTable.vue:47
+#: front/src/components/mixins/Translations.vue:73
+#: src/views/admin/Settings.vue:81 front/src/views/admin/users/Base.vue:5
+#: src/views/admin/users/UsersList.vue:21
+#: front/src/components/mixins/Translations.vue:74
+msgctxt "*/*/*/Noun"
 msgid "Users"
 msgstr "Users"
 
+#: front/src/components/Home.vue:110
+msgctxt "Content/Home/Paragraph"
+msgid "Users on this pod also get %{ quota } of free storage to upload their own content!"
+msgstr "Users on this pod also get %{ quota } of free storage to upload their own content!"
+
 #: front/src/components/Footer.vue:29
+msgctxt "Footer/*/Title"
 msgid "Using Funkwhale"
 msgstr "Using Funkwhale"
 
 #: front/src/components/Footer.vue:13
+msgctxt "Footer/*/List item"
 msgid "Version %{version}"
 msgstr "Version %{version}"
 
 #: front/src/views/content/libraries/Quota.vue:29
 #: front/src/views/content/libraries/Quota.vue:56
 #: front/src/views/content/libraries/Quota.vue:82
+msgctxt "Content/Library/Link/Verb"
 msgid "View files"
 msgstr "View files"
 
-#: front/src/components/library/Album.vue:31 src/components/library/Artist.vue:35
-#: front/src/components/library/Track.vue:51
+#: front/src/components/library/AlbumBase.vue:95
+#: front/src/components/library/ArtistBase.vue:107
+#: front/src/components/library/TrackBase.vue:111
+#: front/src/views/admin/library/AlbumDetail.vue:48
+#: front/src/views/admin/library/ArtistDetail.vue:46
+#: front/src/views/admin/library/LibraryDetail.vue:34
+#: front/src/views/admin/library/LibraryDetail.vue:45
+#: front/src/views/admin/library/TagDetail.vue:32
+#: front/src/views/admin/library/TrackDetail.vue:47
+#: front/src/views/admin/library/UploadDetail.vue:35
+#: front/src/views/admin/library/UploadDetail.vue:46
+#: front/src/views/admin/moderation/AccountsDetail.vue:37
+#: front/src/views/admin/moderation/AccountsDetail.vue:45
+#: front/src/views/admin/moderation/DomainsDetail.vue:30
+msgctxt "Content/Moderation/Link/Verb"
+msgid "View in Django's admin"
+msgstr "View in Django's admin"
+
+#: front/src/components/Home.vue:169
+msgctxt "Content/Home/Link"
+msgid "View more…"
+msgstr "View more…"
+
+#: front/src/components/library/AlbumBase.vue:62
+#: front/src/components/library/ArtistBase.vue:73
+#: front/src/components/library/TrackBase.vue:78
 #: front/src/components/metadata/ArtistCard.vue:49
 #: front/src/components/metadata/ReleaseCard.vue:53
+msgctxt "Content/*/*/Clickable, Verb"
 msgid "View on MusicBrainz"
 msgstr "View on MusicBrainz"
 
+#: front/src/components/manage/moderation/ReportCard.vue:124
+msgctxt "Content/Moderation/Link"
+msgid "View public page"
+msgstr "View public page"
+
+#: front/src/components/manage/library/LibrariesTable.vue:11
+#: front/src/components/manage/library/LibrariesTable.vue:51
+#: front/src/components/manage/library/UploadsTable.vue:11
+#: front/src/components/manage/library/UploadsTable.vue:63
+#: front/src/views/admin/library/LibraryDetail.vue:94
+#: front/src/views/admin/library/UploadDetail.vue:101
 #: front/src/views/content/libraries/Form.vue:18
+msgctxt "*/*/*"
 msgid "Visibility"
 msgstr "Visibility"
 
-#: front/src/views/content/libraries/Card.vue:59
-msgid "Visibility: everyone on this instance"
-msgstr "Visibility: everyone on this instance"
-
-#: front/src/views/content/libraries/Card.vue:60
-msgid "Visibility: everyone, including other instances"
-msgstr "Visibility: everyone, including other instances"
-
-#: front/src/views/content/libraries/Card.vue:58
-msgid "Visibility: nobody except me"
-msgstr "Visibility: nobody except me"
+#: front/src/components/Home.vue:91
+msgctxt "Content/Home/Link"
+msgid "Visit funkwhale.audio"
+msgstr "Visit funkwhale.audio"
 
-#: front/src/components/library/Album.vue:61
+#: front/src/components/library/AlbumDetail.vue:4
+msgctxt "Content/Album/"
 msgid "Volume %{ number }"
 msgstr "Volume %{ number }"
 
-#: front/src/components/playlists/PlaylistModal.vue:20
-msgid "We cannot add the track to a playlist"
-msgstr "We cannot add the track to a playlist"
+#: front/src/components/federation/FetchButton.vue:69
+msgctxt "Popup/*/Loading.Title"
+msgid "Waiting for result…"
+msgstr "Waiting for result…"
 
-#: front/src/components/playlists/Form.vue:14
-msgid "We cannot create the playlist"
-msgstr "We cannot create the playlist"
-
-#: front/src/components/auth/Signup.vue:13
-msgid "We cannot create your account"
-msgstr "We cannot create your account"
-
-#: front/src/components/audio/Player.vue:64
-msgid "We cannot load this track"
-msgstr "We cannot load this track"
+#: front/src/components/auth/Settings.vue:285
+msgctxt "Content/Settings/Error message.Title"
+msgid "We cannot delete your account"
+msgstr "We cannot delete your account"
 
-#: front/src/components/auth/Login.vue:7
+#: front/src/components/auth/LoginForm.vue:3
+msgctxt "Content/Login/Error message.Title"
 msgid "We cannot log you in"
 msgstr "We cannot log you in"
 
-#: front/src/components/auth/Settings.vue:38
-msgid "We cannot save your avatar"
-msgstr "We cannot save your avatar"
+#: front/src/components/auth/ApplicationForm.vue:3
+msgctxt "Content/*/Error message.Title"
+msgid "We cannot save your changes"
+msgstr "We cannot save your changes"
 
-#: front/src/components/auth/Settings.vue:14
-msgid "We cannot save your settings"
-msgstr "We cannot save your settings"
+#: front/src/views/Notifications.vue:39
+msgctxt "Content/Notifications/Paragraph"
+msgid "We noticed you've been here for a while. If Funkwhale is useful to you, we could use your help to make it even better!"
+msgstr "We noticed you've been here for a while. If Funkwhale is useful to you, we could use your help to make it even better!"
 
-#: front/src/components/Home.vue:127
-msgid "We do not track you or bother you with ads"
-msgstr "We do not track you or bother you with ads"
-
-#: front/src/components/library/Track.vue:95
-msgid "We don't have any copyright information for this track"
-msgstr "We don't have any copyright information for this track"
-
-#: front/src/components/library/Track.vue:106
-msgid "We don't have any licensing information for this track"
-msgstr "We don't have any licensing information for this track"
-
-#: front/src/components/library/FileUpload.vue:40
+#: front/src/components/library/FileUpload.vue:39
+msgctxt "Content/Library/Link"
 msgid "We recommend using Picard for that purpose."
 msgstr "We recommend using Picard for that purpose."
 
-#: front/src/components/Home.vue:7
-msgid "We think listening to music should be simple."
-msgstr "We think listening to music should be simple."
+#: front/src/components/moderation/ReportModal.vue:35
+msgctxt "*/*/Field,Help"
+msgid "We'll use this email if we need to contact you regarding this report."
+msgstr "We'll use this email if we need to contact you regarding this report."
 
-#: front/src/components/PageNotFound.vue:10
-msgid "We're sorry, the page you asked for does not exist:"
-msgstr "We're sorry, the page you asked for does not exist:"
-
-#: front/src/components/Home.vue:153
+#: front/src/components/Home.vue:207
+msgctxt "Head/Home/Title"
 msgid "Welcome"
 msgstr "Welcome"
 
 #: front/src/components/Home.vue:5
-msgid "Welcome on Funkwhale"
-msgstr "Welcome to Funkwhale"
+msgctxt "Content/Home/Header"
+msgid "Welcome to %{ podName }!"
+msgstr "Welcome to %{ podName }!"
 
-#: front/src/components/Home.vue:24
-msgid "Why funkwhale?"
-msgstr "Why funkwhale?"
-
-#: front/src/components/audio/EmbedWizard.vue:13
+#: front/src/components/audio/EmbedWizard.vue:23
+msgctxt "Popup/Embed/Input.Label"
 msgid "Widget height"
 msgstr "Widget height"
 
-#: front/src/components/audio/EmbedWizard.vue:6
+#: front/src/components/audio/EmbedWizard.vue:16
+msgctxt "Popup/Embed/Input.Label"
 msgid "Widget width"
 msgstr "Widget width"
 
-#: front/src/components/Sidebar.vue:118
+#: front/src/components/auth/ApplicationForm.vue:157
+msgctxt "Content/OAuth Scopes/Label/Verb"
+msgid "Write"
+msgstr "Write"
+
+#: front/src/components/auth/Authorize.vue:21
+msgctxt "Content/Auth/Label/Noun"
+msgid "Write-only"
+msgstr "Write-only"
+
+#: front/src/components/auth/ApplicationForm.vue:158
+msgctxt "Content/OAuth Scopes/Help Text"
+msgid "Write-only access to user data"
+msgstr "Write-only access to user data"
+
+#: front/src/components/Sidebar.vue:133
 #: front/src/components/manage/moderation/AccountsTable.vue:72
-#: front/src/components/manage/moderation/DomainsTable.vue:58
+#: front/src/components/manage/moderation/DomainsTable.vue:12
+#: front/src/components/manage/moderation/DomainsTable.vue:69
+#: front/src/views/admin/moderation/DomainsDetail.vue:109
+msgctxt "*/*/*"
 msgid "Yes"
 msgstr "Yes"
 
 #: front/src/components/auth/Logout.vue:8
+msgctxt "Content/Login/Button.Label"
 msgid "Yes, log me out!"
 msgstr "Yes, log me out!"
 
 #: front/src/views/content/libraries/Form.vue:19
+msgctxt "Content/Library/Paragraph"
 msgid "You are able to share your library with other people, regardless of its visibility."
-msgstr ""
-"You are able to share your library with other people, regardless of its "
-"visibility."
+msgstr "You are able to share your library with other people, regardless of its visibility."
 
-#: front/src/components/library/FileUpload.vue:33
+#: front/src/components/library/FileUpload.vue:32
+msgctxt "Content/Library/Paragraph"
 msgid "You are about to upload music to your library. Before proceeding, please ensure that:"
-msgstr ""
-"You are about to upload music to your library. Before proceeding, please "
-"ensure that:"
+msgstr "You are about to upload music to your library. Before proceeding, please ensure that:"
+
+#: front/src/components/SetInstanceModal.vue:12
+msgctxt "Popup/Login/Paragraph"
+msgid "You are currently connected to <a href=\"%{ url }\" target=\"_blank\">%{ hostname }&nbsp;<i class=\"external icon\"/></a>. If you continue, you will be disconnected from your current instance and all your local data will be deleted."
+msgstr "You are currently connected to <a href=\"%{ url }\" target=\"_blank\">%{ hostname }&nbsp;<i class=\"external icon\"/></a>. If you continue, you will be disconnected from your current instance and all your local data will be deleted."
+
+#: front/src/components/library/ArtistDetail.vue:6
+msgctxt "Content/Artist/Paragraph"
+msgid "You are currently hiding content related to this artist."
+msgstr "You are currently hiding content related to this artist."
 
 #: front/src/components/auth/Logout.vue:7
+msgctxt "Content/Login/Paragraph"
 msgid "You are currently logged in as %{ username }"
 msgstr "You are currently logged in as %{ username }"
 
+#: front/src/components/library/FileUpload.vue:35
+msgctxt "Content/Library/List item"
+msgid "You are not uploading copyrighted content in a public library, otherwise you may be infringing the law"
+msgstr "You are not uploading copyrighted content in a public library, otherwise you may be infringing the law"
+
+#: front/src/components/SetInstanceModal.vue:98
+msgctxt "*/Instance/Message"
+msgid "You are now using the Funkwhale instance at %{ url }"
+msgstr "You are now using the Funkwhale instance at %{ url }"
+
 #: front/src/views/content/Home.vue:17
-msgid "You can follow libraries from other users to get access to new music. Public libraries can be followed immediatly, while following a private library requires approval from its owner."
-msgstr ""
-"You can follow libraries from other users to get access to new music. Public "
-"libraries can be followed immediately, while following a private library "
-"requires approval from its owner."
+msgctxt "Content/Library/Paragraph"
+msgid "You can follow libraries from other users to get access to new music. Public libraries can be followed immediately, while following a private library requires approval from its owner."
+msgstr "You can follow libraries from other users to get access to new music. Public libraries can be followed immediately, while following a private library requires approval from its owner."
 
-#: front/src/components/Home.vue:133
-msgid "You can invite friends and family to your instance so they can enjoy your music"
-msgstr ""
-"You can invite friends and family to your instance so they can enjoy your "
-"music"
+#: front/src/components/moderation/FilterModal.vue:31
+msgctxt "Popup/Moderation/Paragraph"
+msgid "You can manage and update your filters any time from your account settings."
+msgstr "You can manage and update your filters any time from your account settings."
 
 #: front/src/views/auth/EmailConfirm.vue:24
+msgctxt "Content/Signup/Paragraph"
 msgid "You can now use the service without limitations."
 msgstr "You can now use the service without limitations."
 
+#: front/src/components/auth/Settings.vue:278
+msgctxt "Content/Settings/Paragraph'"
+msgid "You can permanently and irreversibly delete your account and all the associated data using the form below. You will be asked for confirmation."
+msgstr "You can permanently and irreversibly delete your account and all the associated data using the form below. You will be asked for confirmation."
+
 #: front/src/components/library/radios/Builder.vue:7
+msgctxt "Content/Radio/Paragraph"
 msgid "You can use this interface to build your own custom radio, which will play tracks according to your criteria."
-msgstr ""
-"You can use this interface to build your own custom radio, which will play "
-"tracks according to your criteria."
+msgstr "You can use this interface to build your own custom radio, which will play tracks according to your criteria."
 
 #: front/src/components/auth/SubsonicTokenForm.vue:7
+msgctxt "Content/Settings/Paragraph"
 msgid "You can use those to enjoy your playlist and music in offline mode, on your smartphone or tablet, for instance."
-msgstr ""
-"You can use those to enjoy your playlist and music in offline mode, on your "
-"smartphone or tablet, for instance."
+msgstr "You can use those to enjoy your playlist and music in offline mode, on your smartphone or tablet, for instance."
+
+#: front/src/components/auth/Settings.vue:202
+msgctxt "Content/Applications/Paragraph"
+msgid "You don't have any application connected with your account."
+msgstr "You don't have any application connected with your account."
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:46
+#: front/src/components/auth/Settings.vue:261
+msgctxt "Content/Applications/Paragraph"
+msgid "You don't have any configured application yet."
+msgstr "You don't have any configured applications yet."
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:75
+msgctxt "Content/Moderation/Card.Title"
 msgid "You don't have any rule in place for this account."
 msgstr "You don't have any rule in place for this account."
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:39
+#: front/src/views/admin/moderation/DomainsDetail.vue:67
+msgctxt "Content/Moderation/Card.Title"
 msgid "You don't have any rule in place for this domain."
 msgstr "You don't have any rule in place for this domain."
 
-#: front/src/components/Sidebar.vue:158
+#: front/src/components/library/EditForm.vue:52
+msgctxt "Content/Library/Paragraph"
+msgid "You don't have the permission to edit this object, but you can suggest changes. Once submitted, suggestions will be reviewed before approval."
+msgstr "You don't have the permission to edit this object, but you can suggest changes. Once submitted, suggestions will be reviewed before approval."
+
+#: front/src/components/Sidebar.vue:175
+msgctxt "Sidebar/Player/Title"
 msgid "You have a radio playing"
 msgstr "You have a radio playing"
 
-#: front/src/components/audio/Player.vue:71
+#: front/src/components/audio/Player.vue:69
+msgctxt "Sidebar/Player/Error message.Paragraph"
 msgid "You may have a connectivity issue."
 msgstr "You may have a connectivity issue."
 
-#: front/src/App.vue:17
-msgid "You need to select an instance in order to continue"
-msgstr "You need to select an instance in order to continue"
-
-#: front/src/components/auth/Settings.vue:99
+#: front/src/components/auth/Settings.vue:100
+msgctxt "Popup/Settings/List item"
 msgid "You will be logged out from this session and have to log in with the new one"
-msgstr ""
-"You will be logged out from this session and have to log in with the new one"
+msgstr "You will be logged out from this session and have to log in with the new one"
 
-#: front/src/components/auth/Settings.vue:70
+#: front/src/components/auth/Authorize.vue:51
+msgctxt "Content/Auth/Paragraph"
+msgid "You will be redirected to <strong>%{ url }</strong>"
+msgstr "You will be redirected to <strong>%{ url }</strong>"
+
+#: front/src/components/auth/Authorize.vue:49
+msgctxt "Content/Auth/Paragraph"
+msgid "You will be shown a code to copy-paste in the application."
+msgstr "You will be shown a code to copy-paste in the application."
+
+#: front/src/components/auth/Settings.vue:71
+msgctxt "Content/Settings/Paragraph"
 msgid "You will have to update your password on your clients that use this password."
-msgstr ""
-"You will have to update your password on your clients that use this password."
+msgstr "You will have to update your password on your clients that use this password."
+
+#: front/src/components/moderation/FilterModal.vue:20
+msgctxt "Popup/Moderation/Paragraph"
+msgid "You will not see tracks, albums and user activity linked to this artist any more:"
+msgstr "You will not see tracks, albums and user activity linked to this artist any more:"
+
+#: front/src/components/auth/SignupForm.vue:9
+msgctxt "Content/Signup/Form/Paragraph"
+msgid "Your account cannot be created."
+msgstr "Your account cannot be created."
 
-#: front/src/components/favorites/List.vue:115
+#: front/src/components/auth/Settings.vue:281
+msgctxt "Content/Settings/Paragraph'"
+msgid "Your account will be deleted from our servers within a few minutes. We will also notify other servers who may have a copy of some of your data so they can proceed to deletion. Please note that some of these servers may be offline or unwilling to comply though."
+msgstr "Your account will be deleted from our servers within a few minutes. We will also notify other servers who may have a copy of some of your data so they can proceed to deletion. Please note that some of these servers may be offline or unwilling to comply though."
+
+#: front/src/components/auth/Settings.vue:215
+msgctxt "Content/Settings/Title/Noun"
+msgid "Your applications"
+msgstr "Your applications"
+
+#: front/src/components/auth/Settings.vue:38
+msgctxt "Content/Settings/Error message.Title"
+msgid "Your avatar cannot be saved"
+msgstr "Your avatar cannot be saved"
+
+#: front/src/components/auth/Settings.vue:527
+msgctxt "*/Auth/Message"
+msgid "Your deletion request was submitted, your account and content will be deleted shortly"
+msgstr "Your deletion request was submitted, your account and content will be deleted shortly"
+
+#: front/src/components/library/EditForm.vue:3
+msgctxt "Content/Library/Paragraph"
+msgid "Your edit was successfully submitted."
+msgstr "Your edit was successfully submitted."
+
+#: front/src/components/favorites/List.vue:116
+msgctxt "Head/Favorites/Title"
 msgid "Your Favorites"
 msgstr "Your Favourites"
 
-#: front/src/components/Home.vue:114
-msgid "Your music, your way"
-msgstr "Your music, your way"
+#: front/src/views/Notifications.vue:5
+msgctxt "Content/Notifications/Title"
+msgid "Your messages"
+msgstr "Your messages"
 
-#: front/src/views/Notifications.vue:7
+#: front/src/views/Notifications.vue:69
+msgctxt "Content/Notifications/Title"
 msgid "Your notifications"
 msgstr "Your notifications"
 
+#: front/src/components/auth/Settings.vue:76
+msgctxt "Content/Settings/Error message.Title"
+msgid "Your password cannot be changed"
+msgstr "Your password cannot be changed"
+
 #: front/src/views/auth/PasswordResetConfirm.vue:29
+msgctxt "Content/Signup/Card.Paragraph"
 msgid "Your password has been updated successfully."
 msgstr "Your password has been updated successfully."
 
-#: front/src/components/auth/Settings.vue:100
+#: front/src/components/auth/Settings.vue:14
+msgctxt "Content/Settings/Error message.Title"
+msgid "Your settings can't be updated"
+msgstr "Your settings can't be updated"
+
+#: front/src/components/auth/Settings.vue:101
+msgctxt "Popup/Settings/List item"
 msgid "Your Subsonic password will be changed to a new, random one, logging you out from devices that used the old Subsonic password"
-msgstr ""
-"Your Subsonic password will be changed to a new, random one, logging you out "
-"from devices that used the old Subsonic password"
+msgstr "Your Subsonic password will be changed to a new, random one, logging you out from devices that used the old Subsonic password"
+
+#: front/src/entities.js:126
+msgctxt "*/*/*/Noun"
+msgid "MusicBrainz ID"
+msgstr "MusicBrainz ID"
+
+#: front/src/main.js:110
+msgctxt "*/Error/Paragraph"
+msgid "You sent too many requests and have been rate limited, please try again in %{ delay }"
+msgstr "You sent too many requests and have been rate limited, please try again in %{ delay }"
+
+#: front/src/main.js:113
+msgctxt "*/Error/Paragraph"
+msgid "You sent too many requests and have been rate limited, please try again later"
+msgstr "You sent too many requests and have been rate limited, please try again later"
+
+#: front/src/components/library/AlbumBase.vue:208
+msgctxt "Content/Album/Header.Title"
+msgid "Album containing %{ count } track, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgid_plural "Album containing %{ count } tracks, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgstr[0] "Album containing %{ count } track, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgstr[1] "Album containing %{ count } tracks, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+
+#: front/src/components/audio/PlayButton.vue:246
+msgctxt "*/Queue/Message"
+msgid "%{ count } track was added to your queue"
+msgid_plural "%{ count } tracks were added to your queue"
+msgstr[0] "%{ count } track was added to your queue"
+msgstr[1] "%{ count } tracks were added to your queue"
diff --git a/front/locales/eo/LC_MESSAGES/app.po b/front/locales/eo/LC_MESSAGES/app.po
index 31b480d5924c176acdeb98bb5ae9b0e43ad32468..7b11b54a8fa5acad6b22bb3a19138863196f4bed 100644
--- a/front/locales/eo/LC_MESSAGES/app.po
+++ b/front/locales/eo/LC_MESSAGES/app.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: front 1.0.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-05-16 10:35+0200\n"
+"POT-Creation-Date: 2019-10-01 15:15+0200\n"
 "PO-Revision-Date: 2019-03-19 16:47+0000\n"
 "Last-Translator: Mélanie Chauvel <perso@hack-libre.org>\n"
 "Language-Team: none\n"
@@ -38,6 +38,53 @@ msgctxt "Content/Auth/Title"
 msgid "%{ app } wants to access your Funkwhale account"
 msgstr "Ensaluti en via Funkwhale konto"
 
+#: front/src/components/About.vue:173 src/components/Home.vue:56
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } active user"
+msgid_plural "%{ count } active users"
+msgstr[0] "%{ count } kanto"
+msgstr[1] "%{ count } kantoj"
+
+#: front/src/components/About.vue:182
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } albums"
+msgid_plural "%{ count } albums"
+msgstr[0] "%{ count } kanto"
+msgstr[1] "%{ count } kantoj"
+
+#: front/src/components/About.vue:152
+msgctxt "*/*/*"
+msgid "%{ count } allowed domains"
+msgid_plural "%{ count } allowed domains"
+msgstr[0] ""
+msgstr[1] ""
+
+#: front/src/components/About.vue:179
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } artists"
+msgid_plural "%{ count } artists"
+msgstr[0] "%{ count } kanto"
+msgstr[1] "%{ count } kantoj"
+
+#: front/src/components/About.vue:176 src/components/Home.vue:59
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } hour of music"
+msgid_plural "%{ count } hours of music"
+msgstr[0] "%{ count } kanto"
+msgstr[1] "%{ count } kantoj"
+
+#: front/src/components/About.vue:188
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } listenings"
+msgid_plural "%{ count } listenings"
+msgstr[0] "%{ count } kanto"
+msgstr[1] "%{ count } kantoj"
+
 #: front/src/components/common/ActionTable.vue:68
 msgctxt "Content/*/Paragraph"
 msgid "%{ count } on %{ total } selected"
@@ -45,9 +92,9 @@ msgid_plural "%{ count } on %{ total } selected"
 msgstr[0] "Unu el %{ total } estas selektita"
 msgstr[1] "%{ count } el %{ total } estas selektitaj"
 
-#: front/src/components/Sidebar.vue:121 src/components/audio/album/Card.vue:52
+#: front/src/components/Sidebar.vue:125 src/components/audio/album/Card.vue:52
 #: front/src/views/content/libraries/Card.vue:40
-#: src/views/content/remote/Card.vue:30
+#: src/views/content/remote/Card.vue:43
 #, fuzzy
 msgctxt "*/*/*"
 msgid "%{ count } track"
@@ -70,7 +117,15 @@ msgid_plural "%{ count } tracks matching combined filters"
 msgstr[0] "%{count} kanto kongruas kun la tutaj filtriloj"
 msgstr[1] "%{count} kantoj kongruas kun la tutaj filtriloj"
 
-#: front/src/components/playlists/Card.vue:18
+#: front/src/components/About.vue:185
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } tracks"
+msgid_plural "%{ count } tracks"
+msgstr[0] "%{ count } kanto"
+msgstr[1] "%{ count } kantoj"
+
+#: front/src/components/playlists/Card.vue:28
 msgctxt "Content/*/Card/List item"
 msgid "%{ count} track"
 msgid_plural "%{ count } tracks"
@@ -114,11 +169,10 @@ msgstr "Profilo de %{username}"
 
 #: front/src/components/playlists/PlaylistModal.vue:21
 msgctxt "Popup/Playlist/Paragraph"
-msgid ""
-"<strong>%{ track }</strong> is already in <strong>%{ playlist }</strong>."
+msgid "<strong>%{ track }</strong> is already in <strong>%{ playlist }</strong>."
 msgstr ""
 
-#: front/src/components/audio/artist/Card.vue:41
+#: front/src/components/audio/artist/Card.vue:11
 msgctxt "Content/Artist/Card"
 msgid "1 album"
 msgid_plural "%{ count } albums"
@@ -132,24 +186,44 @@ msgid_plural "%{ count } favorites"
 msgstr[0] "Unu stelumo"
 msgstr[1] "%{ count } stelumoj"
 
-#: front/src/components/Home.vue:64
-msgctxt "Content/Home/Title"
-msgid "A clean library"
-msgstr "Orda muzikejo"
+#: front/src/components/audio/artist/Card.vue:15
+#, fuzzy
+msgctxt "Content/Artist/Card"
+msgid "1 track"
+msgid_plural "%{ count } tracks"
+msgstr[0] "Aldoni kanton"
+msgstr[1] "Aldoni kanton"
+
+#: front/src/views/Notifications.vue:21 src/views/Notifications.vue:55
+msgctxt "*/*/*"
+msgid "30 days"
+msgstr ""
+
+#: front/src/views/Notifications.vue:22 src/views/Notifications.vue:56
+msgctxt "*/*/*"
+msgid "60 days"
+msgstr ""
+
+#: front/src/views/Notifications.vue:23 src/views/Notifications.vue:57
+msgctxt "*/*/*"
+msgid "90 days"
+msgstr ""
 
 #: front/src/components/library/FileUpload.vue:264
+#, fuzzy
 msgctxt "Content/Library/Help text"
-msgid "A network error occured while uploading this file"
+msgid "A network error occurred while uploading this file"
 msgstr "Reta eraro okazis dum alŝuto de tiu dosiero"
 
-#: front/src/components/library/EditForm.vue:145
+#: front/src/components/library/EditForm.vue:161
 msgctxt "*/*/Placeholder"
 msgid "A short summary describing your changes."
 msgstr "Mallonga resumo priskribante viaj ŝanĝoj"
 
 #: front/src/components/About.vue:5
-msgctxt "Content/About/Title/Short, Noun"
-msgid "About %{ instance }"
+#, fuzzy
+msgctxt "Content/Home/Header"
+msgid "About %{ podName }"
 msgstr "Pri %{instance}"
 
 #: front/src/components/Footer.vue:6
@@ -157,7 +231,7 @@ msgctxt "Footer/About/Title"
 msgid "About %{instanceName}"
 msgstr "Pri %{instanceName}"
 
-#: front/src/components/Footer.vue:45
+#: front/src/components/Footer.vue:53 src/components/Home.vue:85
 msgctxt "Footer/*/Title/Short"
 msgid "About Funkwhale"
 msgstr "Pri Funkwhale"
@@ -167,9 +241,16 @@ msgctxt "Footer/About/List item.Link"
 msgid "About page"
 msgstr "Pripaĝo"
 
-#: front/src/components/About.vue:8 src/components/About.vue:67
-msgctxt "Content/About/Title"
-msgid "About this instance"
+#: front/src/components/Home.vue:19
+#, fuzzy
+msgctxt "Content/Home/Header"
+msgid "About this Funkwhale pod"
+msgstr "Pri Funkwhale"
+
+#: front/src/components/About.vue:21 src/components/About.vue:51
+#, fuzzy
+msgctxt "Content/About/Header"
+msgid "About this pod"
 msgstr "Pri ĉi tiu instanco"
 
 #: front/src/views/content/libraries/Detail.vue:48
@@ -182,94 +263,87 @@ msgctxt "Content/Library/Table/Short"
 msgid "Accepted"
 msgstr "Akceptita"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:110
+#: front/src/components/auth/SubsonicTokenForm.vue:117
 msgctxt "Content/Settings/Message"
 msgid "Access disabled"
 msgstr "Atingo malaktivigas"
 
-#: front/src/components/mixins/Translations.vue:73
-#: front/src/components/mixins/Translations.vue:74
+#: front/src/components/mixins/Translations.vue:85
+#: front/src/components/mixins/Translations.vue:86
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to audio files, libraries, artists, albums and tracks"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:97
-#: front/src/components/mixins/Translations.vue:98
+#: front/src/components/mixins/Translations.vue:109
+#: front/src/components/mixins/Translations.vue:110
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to content filters"
 msgstr "Elekti filtrilon"
 
-#: front/src/components/mixins/Translations.vue:105
-#: front/src/components/mixins/Translations.vue:106
+#: front/src/components/mixins/Translations.vue:117
+#: front/src/components/mixins/Translations.vue:118
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to edits"
 msgstr "Atingo malaktivigas"
 
-#: front/src/components/mixins/Translations.vue:69
-#: front/src/components/mixins/Translations.vue:70
+#: front/src/components/mixins/Translations.vue:81
+#: front/src/components/mixins/Translations.vue:82
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to email, username, and profile information"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:77
-#: front/src/components/mixins/Translations.vue:78
+#: front/src/components/mixins/Translations.vue:89
+#: front/src/components/mixins/Translations.vue:90
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to favorites"
 msgstr "Aldoni al stelumoj"
 
-#: front/src/components/mixins/Translations.vue:85
-#: front/src/components/mixins/Translations.vue:86
+#: front/src/components/mixins/Translations.vue:97
+#: front/src/components/mixins/Translations.vue:98
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to follows"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:81
-#: front/src/components/mixins/Translations.vue:82
+#: front/src/components/mixins/Translations.vue:93
+#: front/src/components/mixins/Translations.vue:94
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to listening history"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:101
-#: front/src/components/mixins/Translations.vue:102
+#: front/src/components/mixins/Translations.vue:113
+#: front/src/components/mixins/Translations.vue:114
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to notifications"
 msgstr "Viaj sciigoj"
 
-#: front/src/components/mixins/Translations.vue:89
-#: front/src/components/mixins/Translations.vue:90
+#: front/src/components/mixins/Translations.vue:101
+#: front/src/components/mixins/Translations.vue:102
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to playlists"
 msgstr "Aldoni al ludlisto…"
 
-#: front/src/components/mixins/Translations.vue:93
-#: front/src/components/mixins/Translations.vue:94
+#: front/src/components/mixins/Translations.vue:105
+#: front/src/components/mixins/Translations.vue:106
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to radios"
 msgstr "Atingo malaktivigas"
 
-#: front/src/components/Home.vue:101
-msgctxt "Content/Home/List item"
-msgid ""
-"Access your music from a clean interface that focuses on what really matters"
-msgstr "Atingas vian muzikon kun pura interfaco ke koncentras ĝin sur gravaĵo"
-
 #: front/src/components/manage/library/UploadsTable.vue:67
-#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:55
 #: front/src/views/admin/library/UploadDetail.vue:175
-#: front/src/components/mixins/Translations.vue:46
+#: front/src/components/mixins/Translations.vue:56
 msgctxt "Content/*/*/Noun"
 msgid "Accessed date"
 msgstr "Atingo malaktivigas"
 
-#: front/src/views/admin/library/LibraryDetail.vue:104
-#: front/src/views/admin/library/UploadDetail.vue:111
-msgctxt "*/*/*/Noun"
-msgid "Account"
-msgstr "Kontoj"
-
 #: front/src/components/manage/library/LibrariesTable.vue:49
 #: front/src/components/manage/library/UploadsTable.vue:61
-msgctxt "*/*/*"
+#: front/src/components/manage/moderation/ReportCard.vue:156
+#: front/src/components/mixins/Report.vue:13
+#: front/src/views/admin/library/LibraryDetail.vue:113
+#: front/src/views/admin/library/UploadDetail.vue:111
+#: front/src/components/mixins/Report.vue:14
+msgctxt "*/*/*/Noun"
 msgid "Account"
 msgstr "Kontoj"
 
@@ -283,7 +357,7 @@ msgctxt "Content/Settings/Title"
 msgid "Account settings"
 msgstr "Preferoj de via konto"
 
-#: front/src/components/auth/Settings.vue:479
+#: front/src/components/auth/Settings.vue:544
 msgctxt "Head/Settings/Title"
 msgid "Account Settings"
 msgstr "Preferoj de via konto"
@@ -300,7 +374,7 @@ msgstr "Konta retadreso"
 
 #: front/src/views/admin/moderation/AccountsList.vue:3
 #: front/src/views/admin/moderation/AccountsList.vue:24
-#: front/src/views/admin/moderation/Base.vue:8
+#: front/src/views/admin/moderation/Base.vue:11
 msgctxt "*/Moderation/Title"
 msgid "Accounts"
 msgstr "Kontoj"
@@ -313,29 +387,30 @@ msgstr "Ago"
 #: front/src/components/common/ActionTable.vue:101
 msgctxt "Content/*/Paragraph"
 msgid "Action %{ action } was launched successfully on %{ count } element"
-msgid_plural ""
-"Action %{ action } was launched successfully on %{ count } elements"
+msgid_plural "Action %{ action } was launched successfully on %{ count } elements"
 msgstr[0] "Ago %{ action } sukcese komenciĝis por %{ count } ero"
 msgstr[1] "Agoj %{ action } sukcese komenciĝis por %{ count } eroj"
 
 #: front/src/components/common/ActionTable.vue:22
 #: front/src/components/library/radios/Builder.vue:65
+#: front/src/components/manage/moderation/ReportCard.vue:210
 msgctxt "Content/*/*/Noun"
 msgid "Actions"
 msgstr "Agoj"
 
-#: front/src/components/manage/users/UsersTable.vue:53
+#: front/src/components/manage/users/UsersTable.vue:54
 msgctxt "Content/Admin/Table"
 msgid "Active"
 msgstr "Aktiva"
 
-#: front/src/views/admin/library/AlbumDetail.vue:134
-#: front/src/views/admin/library/ArtistDetail.vue:123
-#: front/src/views/admin/library/LibraryDetail.vue:138
-#: front/src/views/admin/library/TrackDetail.vue:186
+#: front/src/views/admin/library/AlbumDetail.vue:140
+#: front/src/views/admin/library/ArtistDetail.vue:128
+#: front/src/views/admin/library/LibraryDetail.vue:147
+#: front/src/views/admin/library/TagDetail.vue:83
+#: front/src/views/admin/library/TrackDetail.vue:192
 #: front/src/views/admin/library/UploadDetail.vue:160
-#: front/src/views/admin/moderation/AccountsDetail.vue:220
-#: front/src/views/admin/moderation/DomainsDetail.vue:136
+#: front/src/views/admin/moderation/AccountsDetail.vue:221
+#: front/src/views/admin/moderation/DomainsDetail.vue:173
 msgctxt "Content/Moderation/Title"
 msgid "Activity"
 msgstr "Aktivo"
@@ -346,7 +421,7 @@ msgctxt "Content/Settings/Dropdown.Label/Noun"
 msgid "Activity visibility"
 msgstr "Videblo de Aktivo"
 
-#: front/src/views/admin/moderation/DomainsList.vue:18
+#: front/src/views/admin/moderation/DomainsList.vue:22
 msgctxt "Content/Moderation/Button/Verb"
 msgid "Add"
 msgstr "Aldoni"
@@ -392,7 +467,21 @@ msgctxt "Content/Radio/Paragraph"
 msgid "Add filters to customize your radio"
 msgstr "Aldonu filtrilojn por tajlori vian radion"
 
-#: front/src/components/audio/PlayButton.vue:75
+#: front/src/components/manage/moderation/NoteForm.vue:12
+#, fuzzy
+msgctxt "Content/Moderation/Button.Label/Verb"
+msgid "Add note"
+msgstr "Aldoni enhavon"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:191
+#: front/src/views/admin/moderation/DomainsDetail.vue:46
+#: front/src/views/admin/moderation/DomainsList.vue:18
+#, fuzzy
+msgctxt "Content/Moderation/Action/Verb"
+msgid "Add to allow-list"
+msgstr "Aldoni al ludlisto…"
+
+#: front/src/components/audio/PlayButton.vue:91
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Add to current queue"
 msgstr "Aldoni al aktuala atendovico"
@@ -424,7 +513,7 @@ msgctxt "Popup/Playlist/Table.Button.Label/Verb"
 msgid "Add track"
 msgstr "Aldoni kanton"
 
-#: front/src/components/manage/users/UsersTable.vue:69
+#: front/src/components/manage/users/UsersTable.vue:70
 msgctxt "Content/Admin/Table.User role"
 msgid "Admin"
 msgstr "Administranto"
@@ -434,49 +523,49 @@ msgctxt "Sidebar/Admin/Title/Noun"
 msgid "Administration"
 msgstr "Administrejo"
 
-#: front/src/views/admin/library/TrackDetail.vue:107
-msgctxt "*/*/*/Noun"
-msgid "Album"
-msgstr "Albumo"
-
-#: front/src/components/audio/SearchBar.vue:26
+#: front/src/components/audio/SearchBar.vue:33
 #: src/components/audio/track/Table.vue:9
-#: front/src/components/library/AlbumBase.vue:152
-#: front/src/components/library/ArtistBase.vue:194
+#: front/src/components/library/AlbumBase.vue:170
+#: front/src/components/library/ArtistBase.vue:212
 #: front/src/components/manage/library/TracksTable.vue:40
 #: front/src/components/metadata/Search.vue:134
+#: src/components/mixins/Report.vue:41
+#: front/src/views/admin/library/TrackDetail.vue:113
 #: front/src/views/content/libraries/FilesTable.vue:57
+#: front/src/components/mixins/Report.vue:42
 msgctxt "*/*/*"
 msgid "Album"
 msgstr "Albumo"
 
-#: front/src/views/admin/library/TrackDetail.vue:128
+#: front/src/views/admin/library/TrackDetail.vue:134
 msgctxt "*/*/*/Noun"
 msgid "Album artist"
 msgstr "Albumoj je ĉi-tiu artisto"
 
-#: front/src/views/admin/library/AlbumDetail.vue:92
+#: front/src/views/admin/library/AlbumDetail.vue:98
 msgctxt "Content/Moderation/Title"
 msgid "Album data"
 msgstr "Nomo de albumo"
 
-#: front/src/components/mixins/Translations.vue:51
-#: front/src/components/mixins/Translations.vue:52
+#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/mixins/Translations.vue:62
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Album name"
 msgstr "Nomo de albumo"
 
 #: front/src/components/audio/Search.vue:19
-#: src/components/instance/Stats.vue:48
-#: front/src/components/library/Albums.vue:120
-#: src/components/library/Library.vue:7
+#: src/components/library/Albums.vue:129
+#: front/src/components/library/Library.vue:7
+#: src/components/library/TagDetail.vue:28
 #: front/src/components/manage/library/ArtistsTable.vue:41
+#: front/src/components/manage/library/TagsTable.vue:43
 #: front/src/views/admin/library/AlbumsList.vue:24
-#: front/src/views/admin/library/ArtistDetail.vue:241
+#: front/src/views/admin/library/ArtistDetail.vue:256
 #: front/src/views/admin/library/Base.vue:11
-#: front/src/views/admin/library/LibraryDetail.vue:219
-#: front/src/views/admin/moderation/AccountsDetail.vue:354
-#: front/src/views/admin/moderation/DomainsDetail.vue:264
+#: front/src/views/admin/library/LibraryDetail.vue:238
+#: front/src/views/admin/library/TagDetail.vue:133
+#: front/src/views/admin/moderation/AccountsDetail.vue:366
+#: front/src/views/admin/moderation/DomainsDetail.vue:301
 msgctxt "*/*/*"
 msgid "Albums"
 msgstr "Albumoj"
@@ -490,7 +579,10 @@ msgstr "Albumoj je ĉi-tiu artisto"
 #: front/src/components/manage/library/LibrariesTable.vue:13
 #: front/src/components/manage/library/UploadsTable.vue:13
 #: front/src/components/manage/library/UploadsTable.vue:22
+#: front/src/components/manage/moderation/DomainsTable.vue:11
 #: front/src/components/manage/users/InvitationsTable.vue:19
+#: front/src/components/moderation/ReportCategoryDropdown.vue:32
+#: front/src/views/admin/moderation/ReportsList.vue:17
 #: front/src/views/content/libraries/FilesTable.vue:13
 msgctxt "Content/*/Dropdown"
 msgid "All"
@@ -508,40 +600,53 @@ msgctxt "Head/Authorize/Title"
 msgid "Allow application"
 msgstr ""
 
+#: front/src/components/About.vue:136
+msgctxt "*/*/*"
+msgid "Allow-list"
+msgstr ""
+
+#: front/src/components/About.vue:149
+#, fuzzy
+msgctxt "*/*/*"
+msgid "Allowed domains"
+msgstr "Aldoni domajnon"
+
 #: front/src/components/library/ImportStatusModal.vue:17
 msgctxt "Popup/Import/Message"
-msgid ""
-"An error occured during upload processing. You will find more information "
-"below."
+msgid "An error occurred during upload processing. You will find more information below."
 msgstr ""
 
 #: front/src/components/playlists/Editor.vue:13
+#, fuzzy
 msgctxt "Content/Playlist/Error message.Title"
-msgid "An error occured while saving your changes"
+msgid "An error occurred while saving your changes"
 msgstr "Eraro okazis dum konservo de viaj ŝanĝoj"
 
 #: front/src/components/federation/FetchButton.vue:21
+#, fuzzy
 msgctxt "Popup/*/Message.Content"
-msgid "An error occured while trying to refresh data:"
+msgid "An error occurred while trying to refresh data:"
 msgstr "Eraro okazis dum konservo de viaj ŝanĝoj"
 
 #: front/src/components/federation/FetchButton.vue:41
+#, fuzzy
 msgctxt "*/*/Error"
-msgid "An HTTP error occured while contacting the remote server"
+msgid "An HTTP error occurred while contacting the remote server"
 msgstr "Eraro okazis dum konservo de viaj ŝanĝoj"
 
-#: front/src/components/auth/Login.vue:10
-msgctxt "Content/Login/Error message/List item"
-msgid ""
-"An unknown error happend, this can mean the server is down or cannot be "
-"reached"
-msgstr ""
-"Nekonata eraro okazis, povus signifi ke la servilo paneas aÅ­ ne estas "
-"atingebla"
-
 #: front/src/components/library/ImportStatusModal.vue:145
 msgctxt "Popup/Import/Error.Label"
-msgid "An unkwown error occured"
+msgid "An unknown error occurred"
+msgstr ""
+
+#: front/src/components/About.vue:123
+msgctxt "*/*/*"
+msgid "Anonymous access"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:54
+msgctxt "Popup/Moderation/Error message"
+msgid "Anonymous reports are disabled, please sign-in to submit a report."
 msgstr ""
 
 #: front/src/components/auth/Settings.vue:175
@@ -562,9 +667,7 @@ msgstr ""
 
 #: front/src/components/auth/ApplicationEdit.vue:16
 msgctxt "Content/Application/Paragraph/"
-msgid ""
-"Application ID and secret are really sensitive values and must be treated "
-"like passwords. Do not share those with anyone else."
+msgid "Application ID and secret are really sensitive values and must be treated like passwords. Do not share those with anyone else."
 msgstr ""
 
 #: front/src/components/auth/ApplicationEdit.vue:25
@@ -594,29 +697,27 @@ msgctxt "Content/Login/Title"
 msgid "Are you sure you want to log out?"
 msgstr "Ĉu vi vere volas elsaluti?"
 
+#: front/src/components/audio/SearchBar.vue:32
+#: src/components/audio/track/Table.vue:8
 #: front/src/components/manage/library/AlbumsTable.vue:40
 #: front/src/components/manage/library/TracksTable.vue:41
-msgctxt "*/*/*"
-msgid "Artist"
-msgstr "Artisto"
-
-#: front/src/components/audio/SearchBar.vue:25
-#: src/components/audio/track/Table.vue:8
 #: front/src/components/metadata/Search.vue:130
-#: front/src/views/admin/library/AlbumDetail.vue:108
-#: front/src/views/admin/library/TrackDetail.vue:118
-#: front/src/views/content/libraries/FilesTable.vue:56
+#: src/components/mixins/Report.vue:55
+#: front/src/views/admin/library/AlbumDetail.vue:114
+#: front/src/views/admin/library/TrackDetail.vue:124
+#: front/src/views/content/libraries/FilesTable.vue:56 src/entities.js:12
+#: front/src/components/mixins/Report.vue:56
 msgctxt "*/*/*/Noun"
 msgid "Artist"
 msgstr "Artisto"
 
-#: front/src/views/admin/library/ArtistDetail.vue:91
+#: front/src/views/admin/library/ArtistDetail.vue:96
 msgctxt "Content/Moderation/Title"
 msgid "Artist data"
 msgstr "Nomo de artisto"
 
-#: front/src/components/mixins/Translations.vue:52
-#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/mixins/Translations.vue:62
+#: front/src/components/mixins/Translations.vue:63
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Artist name"
 msgstr "Nomo de artisto"
@@ -626,36 +727,36 @@ msgctxt "*/Search/Input.Placeholder"
 msgid "Artist, album, track…"
 msgstr "Artisto, albumo, kanto…"
 
+#: front/src/components/audio/Search.vue:10
+#: src/components/library/Artists.vue:117
+#: front/src/components/library/Library.vue:10
+#: front/src/components/library/TagDetail.vue:19
+#: front/src/components/manage/library/TagsTable.vue:42
 #: front/src/views/admin/library/ArtistsList.vue:24
 #: front/src/views/admin/library/Base.vue:8
-#: front/src/views/admin/library/LibraryDetail.vue:209
-msgctxt "*/*/*"
-msgid "Artists"
-msgstr "Artistoj"
-
-#: front/src/components/audio/Search.vue:10
-#: src/components/instance/Stats.vue:42
-#: front/src/components/library/Artists.vue:117
-#: src/components/library/Library.vue:10
-#: front/src/views/admin/moderation/AccountsDetail.vue:346
-#: front/src/views/admin/moderation/DomainsDetail.vue:254
+#: front/src/views/admin/library/LibraryDetail.vue:228
+#: front/src/views/admin/library/TagDetail.vue:123
+#: front/src/views/admin/moderation/AccountsDetail.vue:358
+#: front/src/views/admin/moderation/DomainsDetail.vue:291
 msgctxt "*/*/*/Noun"
 msgid "Artists"
 msgstr "Artistoj"
 
 #: front/src/components/favorites/List.vue:34
-#: src/components/library/Albums.vue:25
-#: front/src/components/library/Artists.vue:25
+#: src/components/library/Albums.vue:29
+#: front/src/components/library/Artists.vue:29
 #: src/components/library/Radios.vue:44
 #: front/src/components/manage/library/AlbumsTable.vue:21
 #: front/src/components/manage/library/ArtistsTable.vue:21
 #: front/src/components/manage/library/EditsCardList.vue:39
 #: front/src/components/manage/library/LibrariesTable.vue:30
+#: front/src/components/manage/library/TagsTable.vue:21
 #: front/src/components/manage/library/TracksTable.vue:21
 #: front/src/components/manage/library/UploadsTable.vue:40
 #: front/src/components/manage/moderation/AccountsTable.vue:21
-#: front/src/components/manage/moderation/DomainsTable.vue:19
+#: front/src/components/manage/moderation/DomainsTable.vue:27
 #: front/src/components/manage/users/UsersTable.vue:19
+#: front/src/views/admin/moderation/ReportsList.vue:44
 #: front/src/views/content/libraries/FilesTable.vue:31
 #: front/src/views/playlists/List.vue:27
 msgctxt "Content/Search/Dropdown"
@@ -667,18 +768,24 @@ msgctxt "Content/Signup/Button.Label/Verb"
 msgid "Ask for a password reset"
 msgstr "Demandi pasvortrenuligadon"
 
-#: front/src/views/admin/library/AlbumDetail.vue:198
-#: front/src/views/admin/library/ArtistDetail.vue:187
-#: front/src/views/admin/library/LibraryDetail.vue:176
-#: front/src/views/admin/library/TrackDetail.vue:250
+#: front/src/components/manage/moderation/ReportCard.vue:72
+msgctxt "Content/Moderation/*"
+msgid "Assigned to"
+msgstr ""
+
+#: front/src/views/admin/library/AlbumDetail.vue:214
+#: front/src/views/admin/library/ArtistDetail.vue:202
+#: front/src/views/admin/library/LibraryDetail.vue:195
+#: front/src/views/admin/library/TagDetail.vue:113
+#: front/src/views/admin/library/TrackDetail.vue:266
 #: front/src/views/admin/library/UploadDetail.vue:191
-#: front/src/views/admin/moderation/AccountsDetail.vue:274
-#: front/src/views/admin/moderation/DomainsDetail.vue:202
+#: front/src/views/admin/moderation/AccountsDetail.vue:285
+#: front/src/views/admin/moderation/DomainsDetail.vue:239
 msgctxt "Content/Moderation/Title"
 msgid "Audio content"
 msgstr "Muzika datumo"
 
-#: front/src/components/ShortcutsModal.vue:55
+#: front/src/components/ShortcutsModal.vue:92
 msgctxt "Popup/Keyboard shortcuts/Title"
 msgid "Audio player shortcuts"
 msgstr "Fulmoklavoj de muzika ludilo"
@@ -721,9 +828,9 @@ msgid "Back to settings"
 msgstr "Äœisdati agordojn"
 
 #: front/src/components/library/TrackDetail.vue:48
-#: front/src/components/mixins/Translations.vue:55
+#: front/src/components/mixins/Translations.vue:67
 #: front/src/views/admin/library/UploadDetail.vue:227
-#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:68
 msgctxt "Content/Track/*/Noun"
 msgid "Bitrate"
 msgstr "Bitrapido"
@@ -736,13 +843,8 @@ msgstr "Bloki ĉiu"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:112
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Block everything from this account or domain. This will prevent any "
-"interaction with the entity, and purge related content (uploads, libraries, "
-"follows, etc.)"
-msgstr ""
-"Bloki ĉiu el tiu konto aŭ domajno. Preventos interagojn kaj malaperigis ĝian"
-" datumon (dosieroj, muzikejoj, sekvadoj…)"
+msgid "Block everything from this account or domain. This will prevent any interaction with the entity, and purge related content (uploads, libraries, follows, etc.)"
+msgstr "Bloki ĉiu el tiu konto aŭ domajno. Preventos interagojn kaj malaperigis ĝian datumon (dosieroj, muzikejoj, sekvadoj…)"
 
 #: front/src/components/Sidebar.vue:18 src/components/library/Library.vue:4
 msgctxt "*/Library/*/Verb"
@@ -754,6 +856,12 @@ msgctxt "Sidebar/Library/List item.Link/Verb"
 msgid "Browse library"
 msgstr "Folii muzikejon"
 
+#: front/src/components/Home.vue:132
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Browse public content"
+msgstr "Aktualiĝi datumon de tabelo"
+
 #: front/src/components/library/Albums.vue:4
 msgctxt "Content/Album/Title"
 msgid "Browsing albums"
@@ -784,38 +892,40 @@ msgctxt "Content/Album/Card"
 msgid "By %{ artist }"
 msgstr "Je %{artist}"
 
-#: front/src/views/content/remote/Card.vue:112
+#: front/src/views/content/remote/Card.vue:125
 msgctxt "Popup/Library/Paragraph"
 msgid "By unfollowing this library, you loose access to its content."
 msgstr "Se vi malsekvantus tiun muzikejon, vi perdus ĝian muzikon."
 
-#: front/src/views/admin/library/AlbumDetail.vue:214
-#: front/src/views/admin/library/ArtistDetail.vue:203
-#: front/src/views/admin/library/LibraryDetail.vue:192
-#: front/src/views/admin/library/TrackDetail.vue:266
+#: front/src/views/admin/library/AlbumDetail.vue:230
+#: front/src/views/admin/library/ArtistDetail.vue:218
+#: front/src/views/admin/library/LibraryDetail.vue:211
+#: front/src/views/admin/library/TrackDetail.vue:282
 #: front/src/views/admin/library/UploadDetail.vue:208
-#: front/src/views/admin/moderation/AccountsDetail.vue:290
-#: front/src/views/admin/moderation/DomainsDetail.vue:217
+#: front/src/views/admin/moderation/AccountsDetail.vue:301
+#: front/src/views/admin/moderation/DomainsDetail.vue:254
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Cached size"
 msgstr "Kaŝmemora grando"
 
 #: front/src/components/SetInstanceModal.vue:37
 #: front/src/components/common/DangerousButton.vue:17
-#: front/src/components/library/AlbumBase.vue:36
-#: front/src/components/library/ArtistBase.vue:47
-#: front/src/components/library/EditForm.vue:95
-#: front/src/components/library/TrackBase.vue:55
+#: front/src/components/library/AlbumBase.vue:37
+#: front/src/components/library/ArtistBase.vue:48
+#: front/src/components/library/EditForm.vue:107
+#: front/src/components/library/TrackBase.vue:53
 #: front/src/components/library/radios/Filter.vue:53
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:54
 #: front/src/components/moderation/FilterModal.vue:39
+#: front/src/components/moderation/ReportModal.vue:59
 #: front/src/components/playlists/PlaylistModal.vue:26
 #: front/src/components/playlists/PlaylistModal.vue:77
+#: front/src/views/playlists/Detail.vue:62
 msgctxt "*/*/Button.Label/Verb"
 msgid "Cancel"
 msgstr "Nuligi"
 
-#: front/src/views/content/remote/Card.vue:97
+#: front/src/views/content/remote/Card.vue:110
 #, fuzzy
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Cancel follow request"
@@ -831,6 +941,14 @@ msgctxt "Content/Library/Help text"
 msgid "Cannot upload this file, ensure it is not too big"
 msgstr "Ne povis alŝuti tiun dosieron, certigi ne tro grandas"
 
+#: front/src/components/manage/moderation/ReportCard.vue:30
+#: front/src/components/mixins/Translations.vue:42
+#: front/src/components/moderation/ReportCategoryDropdown.vue:2
+#: front/src/components/mixins/Translations.vue:43
+msgctxt "*/*/*"
+msgid "Category"
+msgstr ""
+
 #: front/src/components/Footer.vue:21
 msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
 msgid "Change language"
@@ -846,6 +964,11 @@ msgctxt "Content/Settings/Button.Label"
 msgid "Change password"
 msgstr "Ŝanĝi pasvorton"
 
+#: front/src/components/Footer.vue:37
+msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
+msgid "Change theme"
+msgstr ""
+
 #: front/src/views/auth/PasswordResetConfirm.vue:62
 msgctxt "*/Signup/Title"
 msgid "Change your password"
@@ -863,28 +986,22 @@ msgstr "Konservis ŝanĝoj"
 
 #: front/src/components/auth/Settings.vue:71
 msgctxt "Content/Settings/Paragraph'"
-msgid ""
-"Changing your password will also change your Subsonic API password if you "
-"have requested one."
-msgstr ""
-"Ŝanĝi vian pasvorton ankaŭ ŝanĝos vian Subsonic API pasvorto se vi petis "
-"tiun."
+msgid "Changing your password will also change your Subsonic API password if you have requested one."
+msgstr "Ŝanĝi vian pasvorton ankaŭ ŝanĝos vian Subsonic API pasvorto se vi petis tiun."
 
 #: front/src/components/auth/Settings.vue:98
 msgctxt "Popup/Settings/Paragraph"
 msgid "Changing your password will have the following consequences:"
 msgstr "Ŝanĝi vian pasvorton tiel rezultigos"
 
-#: front/src/components/Footer.vue:40
+#: front/src/components/Footer.vue:48
 msgctxt "Footer/*/List item.Link"
 msgid "Chat room"
 msgstr "Babilejo"
 
 #: front/src/components/auth/ApplicationForm.vue:24
 msgctxt "Content/Applications/Paragraph/"
-msgid ""
-"Checking the parent \"Read\" or \"Write\" scopes implies access to all the "
-"corresponding children scopes."
+msgid "Checking the parent \"Read\" or \"Write\" scopes implies access to all the corresponding children scopes."
 msgstr ""
 
 #: front/src/components/SetInstanceModal.vue:2
@@ -892,12 +1009,9 @@ msgctxt "Popup/Instance/Title"
 msgid "Choose your instance"
 msgstr "Elekti vian instanco"
 
-#: front/src/components/manage/users/InvitationForm.vue:37
-msgctxt "Content/Admin/Button.Label/Verb"
-msgid "Clear"
-msgstr "Purigi"
-
 #: front/src/components/library/EditForm.vue:75
+#: front/src/components/library/EditForm.vue:88
+#: front/src/components/manage/users/InvitationForm.vue:37
 msgctxt "Content/Library/Button.Label"
 msgid "Clear"
 msgstr "Purigi"
@@ -908,46 +1022,47 @@ msgctxt "*/Playlist/Button.Label/Verb"
 msgid "Clear playlist"
 msgstr "Purigi ludliston"
 
-#: front/src/components/audio/Player.vue:642
+#: front/src/components/ShortcutsModal.vue:144
+#, fuzzy
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Clear queue"
+msgstr "Purigi vian atendovico"
+
+#: front/src/components/audio/Player.vue:668
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Clear your queue"
 msgstr "Purigi vian atendovico"
 
-#: front/src/components/Home.vue:44
-msgctxt "Content/Home/List item/Verb"
-msgid "Click once, listen for hours using built-in radios"
-msgstr "Alklaki unu foje, aÅ­skulti enkonstruitajn radiojn dum horoj"
-
 #: front/src/components/mixins/Translations.vue:21
 #: front/src/components/mixins/Translations.vue:22
 msgctxt "Content/Library/Link.Title"
-msgid ""
-"Click to display more information about the import process for this upload"
+msgid "Click to display more information about the import process for this upload"
 msgstr ""
 
 #: front/src/components/library/FileUpload.vue:82
 msgctxt "Content/Library/Paragraph/Call to action"
 msgid "Click to select files to upload or drag and drop files or directories"
-msgstr ""
-"Alklaki por selekti elŝutontaj dosieroj, aŭ ŝovi kaj demeti dosierojn aŭ "
-"dosierujojn"
+msgstr "Alklaki por selekti elŝutontaj dosieroj, aŭ ŝovi kaj demeti dosierojn aŭ dosierujojn"
 
+#: front/src/components/ShortcutsModal.vue:38
 #: front/src/components/federation/FetchButton.vue:85
 #: front/src/components/library/ImportStatusModal.vue:79
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:34
 msgctxt "*/*/Button.Label/Verb"
 msgid "Close"
 msgstr "Fermi"
 
-#: front/src/components/ShortcutsModal.vue:20
-msgctxt "Popup/Keyboard shortcuts/Button.Label/Verb"
-msgid "Close"
-msgstr "Fermi"
-
 #: front/src/components/federation/FetchButton.vue:88
 msgctxt "*/*/Button.Label/Verb"
 msgid "Close and reload page"
 msgstr ""
 
+#: front/src/components/About.vue:94
+#, fuzzy
+msgctxt "*/*/*/State of registrations"
+msgid "Closed"
+msgstr "Fermi"
+
 #: front/src/components/manage/users/InvitationForm.vue:26
 #: front/src/components/manage/users/InvitationsTable.vue:42
 msgctxt "Content/Admin/Table.Label/Noun"
@@ -955,8 +1070,9 @@ msgid "Code"
 msgstr "Kodo"
 
 #: front/src/components/audio/album/Card.vue:41
-#: front/src/components/audio/artist/Card.vue:33
-msgctxt "Content/*/Card.Link/Verb"
+#: front/src/components/common/CollapseLink.vue:3
+#, fuzzy
+msgctxt "*/*/Button,Label"
 msgid "Collapse"
 msgstr "Malgrandigi"
 
@@ -980,26 +1096,26 @@ msgctxt "Content/Signup/Form.Label"
 msgid "Confirmation code"
 msgstr "Konfirmada kodo"
 
+#: front/src/components/About.vue:67 src/components/Home.vue:65
+msgctxt "Content/Home/Header/Name"
+msgid "Contact"
+msgstr ""
+
 #: front/src/components/moderation/FilterModal.vue:90
 msgctxt "*/Moderation/Message"
 msgid "Content filter successfully added"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:96
-#: front/src/components/mixins/Translations.vue:97
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Content filters"
-msgstr "Elekti filtrilon"
-
 #: front/src/components/auth/Settings.vue:116
+#: front/src/components/mixins/Translations.vue:108
+#: front/src/components/mixins/Translations.vue:109
 msgctxt "Content/Settings/Title/Noun"
 msgid "Content filters"
 msgstr "Elekti filtrilon"
 
 #: front/src/components/auth/Settings.vue:119
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"Content filters help you hide content you don't want to see on the service."
+msgid "Content filters help you hide content you don't want to see on the service."
 msgstr ""
 
 #: front/src/components/common/ActionTable.vue:8
@@ -1007,13 +1123,20 @@ msgctxt "Content/*/Button.Help text.Paragraph"
 msgid "Content have been updated, click refresh to see up-to-date content"
 msgstr "Äœisdatigis datumon, alklaku aktualigi por vidi novan datumon"
 
-#: front/src/components/Footer.vue:48
+#: front/src/components/About.vue:46
+#, fuzzy
+msgctxt "Content/About/Header"
+msgid "Contents"
+msgstr "Elekti filtrilon"
+
+#: front/src/components/Footer.vue:56
 msgctxt "Footer/*/List item.Link"
 msgid "Contribute"
 msgstr "Kontribui"
 
-#: front/src/components/audio/EmbedWizard.vue:19
+#: front/src/components/audio/EmbedWizard.vue:29
 #: front/src/components/common/CopyInput.vue:8
+#: front/src/components/forms/PasswordInput.vue:43
 msgctxt "*/*/Button.Label/Short, Verb"
 msgid "Copy"
 msgstr "Kopii"
@@ -1028,14 +1151,14 @@ msgctxt "Content/Auth/Paragraph"
 msgid "Copy-paste the following code in the application:"
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:21
+#: front/src/components/audio/EmbedWizard.vue:31
 msgctxt "Popup/Embed/Paragraph"
 msgid "Copy/paste this code in your website HTML"
 msgstr "Kopi kaj alglui tiun kodon en via retejo"
 
 #: front/src/components/library/TrackDetail.vue:10
-#: front/src/views/admin/library/TrackDetail.vue:153
-msgctxt "Content/Track/Table.Label/Noun"
+#: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:77
+msgctxt "Content/Track/*/Noun"
 msgid "Copyright"
 msgstr "Kopirajto"
 
@@ -1049,29 +1172,20 @@ msgctxt "Content/Library/Error message.Title"
 msgid "Could not fetch remote library"
 msgstr "Eraro dum skano de malloka muzikejo"
 
-#: front/src/components/Home.vue:80
-msgctxt "Content/Home/List item"
-msgid "Covers, lyrics, our goal is to have them all ;)"
-msgstr "Reludversioj, kantparoloj, nian celon estas havi ĉiujn ;)"
-
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:58
 msgctxt "Content/Moderation/Card.Button.Label/Verb"
 msgid "Create"
 msgstr "Krei"
 
-#: front/src/components/auth/Signup.vue:4
+#: front/src/views/auth/Signup.vue:4
 msgctxt "Content/Signup/Title"
 msgid "Create a funkwhale account"
 msgstr "Krei Funkwhale konton"
 
-#: front/src/components/auth/Settings.vue:220
-msgctxt "Content/Settings/Button.Label"
-msgid "Create a new application"
-msgstr "Krei novan ludliston"
-
 #: front/src/components/auth/ApplicationNew.vue:8
 #: front/src/components/auth/ApplicationNew.vue:41
-msgctxt "Content/Applications/Title"
+#: front/src/components/auth/Settings.vue:220
+msgctxt "Content/Settings/Button.Label"
 msgid "Create a new application"
 msgstr "Krei novan ludliston"
 
@@ -1085,7 +1199,7 @@ msgctxt "Popup/Playlist/Title/Verb"
 msgid "Create a new playlist"
 msgstr "Krei novan ludliston"
 
-#: front/src/components/Sidebar.vue:57 src/components/auth/Login.vue:17
+#: front/src/components/Sidebar.vue:57 src/components/auth/LoginForm.vue:15
 msgctxt "*/Signup/Link/Verb"
 msgid "Create an account"
 msgstr "Krei konton"
@@ -1100,7 +1214,7 @@ msgctxt "Content/Library/Button.Label/Verb"
 msgid "Create library"
 msgstr "Krei muzikejon"
 
-#: front/src/components/auth/Signup.vue:53
+#: front/src/components/auth/SignupForm.vue:49
 msgctxt "Content/Signup/Button.Label"
 msgid "Create my account"
 msgstr "Kreu mian konton"
@@ -1125,11 +1239,13 @@ msgstr "Krei vian propran radion"
 #: front/src/components/manage/library/AlbumsTable.vue:44
 #: front/src/components/manage/library/ArtistsTable.vue:43
 #: front/src/components/manage/library/LibrariesTable.vue:54
+#: front/src/components/manage/library/TagsTable.vue:45
 #: front/src/components/manage/library/TracksTable.vue:44
 #: front/src/components/manage/library/UploadsTable.vue:66
+#: front/src/components/manage/moderation/ReportCard.vue:43
 #: front/src/components/manage/users/InvitationsTable.vue:40
-#: front/src/components/mixins/Translations.vue:43
-#: front/src/components/mixins/Translations.vue:44
+#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/mixins/Translations.vue:54
 msgctxt "Content/*/*/Noun"
 msgid "Creation date"
 msgstr "Kreodato"
@@ -1139,6 +1255,12 @@ msgctxt "Content/Settings/Title/Noun"
 msgid "Current avatar"
 msgstr "Aktuala avataro"
 
+#: front/src/components/admin/SettingsGroup.vue:67
+#, fuzzy
+msgctxt "Content/Settings/Title/Noun"
+msgid "Current image"
+msgstr "Aktuala uzo"
+
 #: front/src/views/content/libraries/DetailArea.vue:4
 msgctxt "Content/Library/Title"
 msgid "Current library"
@@ -1154,6 +1276,11 @@ msgctxt "Content/Library/Title"
 msgid "Current usage"
 msgstr "Aktuala uzo"
 
+#: front/src/components/Footer.vue:94
+msgctxt "Footer/Settings/Dropdown.Label/Theme name"
+msgid "Dark"
+msgstr ""
+
 #: front/src/components/federation/FetchButton.vue:53
 msgctxt "*/*/Error"
 msgid "Data returned by the remote server had invalid or missing attributes"
@@ -1174,7 +1301,7 @@ msgctxt "Popup/Import/Table.Label/Noun"
 msgid "Debug information"
 msgstr "Kantodatumo"
 
-#: front/src/components/ShortcutsModal.vue:75
+#: front/src/components/ShortcutsModal.vue:128
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Decrease volume"
 msgstr "Malgrandigi volumo"
@@ -1186,23 +1313,29 @@ msgstr "Malgrandigi volumo"
 #: front/src/components/manage/library/AlbumsTable.vue:188
 #: front/src/components/manage/library/ArtistsTable.vue:178
 #: front/src/components/manage/library/LibrariesTable.vue:205
+#: front/src/components/manage/library/TagsTable.vue:179
 #: front/src/components/manage/library/TracksTable.vue:188
 #: front/src/components/manage/library/UploadsTable.vue:255
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:61
+#: front/src/components/manage/moderation/NotesThread.vue:24
+#: front/src/components/manage/moderation/NotesThread.vue:29
+#: front/src/components/manage/moderation/ReportCard.vue:360
 #: front/src/components/manage/users/InvitationsTable.vue:167
-#: front/src/views/admin/library/AlbumDetail.vue:72
-#: front/src/views/admin/library/AlbumDetail.vue:77
-#: front/src/views/admin/library/ArtistDetail.vue:71
+#: front/src/views/admin/library/AlbumDetail.vue:78
+#: front/src/views/admin/library/AlbumDetail.vue:83
 #: front/src/views/admin/library/ArtistDetail.vue:76
+#: front/src/views/admin/library/ArtistDetail.vue:81
 #: front/src/views/admin/library/LibraryDetail.vue:58
 #: front/src/views/admin/library/LibraryDetail.vue:63
-#: front/src/views/admin/library/TrackDetail.vue:71
-#: front/src/views/admin/library/TrackDetail.vue:76
+#: front/src/views/admin/library/TagDetail.vue:41
+#: front/src/views/admin/library/TagDetail.vue:46
+#: front/src/views/admin/library/TrackDetail.vue:77
+#: front/src/views/admin/library/TrackDetail.vue:82
 #: front/src/views/admin/library/UploadDetail.vue:65
 #: front/src/views/admin/library/UploadDetail.vue:70
 #: front/src/views/content/libraries/FilesTable.vue:222
 #: front/src/views/content/libraries/Form.vue:29
-#: src/views/playlists/Detail.vue:34
+#: src/views/playlists/Detail.vue:42
 msgctxt "*/*/*/Verb"
 msgid "Delete"
 msgstr "Forigi"
@@ -1227,7 +1360,20 @@ msgctxt "Popup/Moderation/Button.Label/Verb"
 msgid "Delete moderation rule"
 msgstr "Forigi moderecan regulon"
 
-#: front/src/views/playlists/Detail.vue:39
+#: front/src/components/auth/Settings.vue:274
+#: src/components/auth/Settings.vue:302
+#, fuzzy
+msgctxt "*/*/Button.Label"
+msgid "Delete my account"
+msgstr "Kreu mian konton"
+
+#: front/src/components/auth/Settings.vue:297
+#, fuzzy
+msgctxt "*/*/Button.Label"
+msgid "Delete my account…"
+msgstr "Kreu mian konton"
+
+#: front/src/views/playlists/Detail.vue:47
 msgctxt "Popup/Playlist/Button.Label/Verb"
 msgid "Delete playlist"
 msgstr "Forigi ludliston"
@@ -1237,13 +1383,23 @@ msgctxt "Popup/Radio/Button.Label/Verb"
 msgid "Delete radio"
 msgstr "Forigi radion"
 
-#: front/src/views/admin/library/AlbumDetail.vue:73
-#: front/src/views/admin/library/TrackDetail.vue:72
+#: front/src/components/manage/moderation/ReportCard.vue:357
+msgctxt "Content/Moderation/Button/Verb"
+msgid "Delete reported object"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:358
+msgctxt "Content/Moderation/Popup/Header"
+msgid "Delete reported object?"
+msgstr ""
+
+#: front/src/views/admin/library/AlbumDetail.vue:79
+#: front/src/views/admin/library/TrackDetail.vue:78
 msgctxt "Popup/Library/Title"
 msgid "Delete this album?"
 msgstr "Forigi tiun muzikejon?"
 
-#: front/src/views/admin/library/ArtistDetail.vue:72
+#: front/src/views/admin/library/ArtistDetail.vue:77
 msgctxt "Popup/Library/Title"
 msgid "Delete this artist?"
 msgstr "Forigi tiun muzikejon?"
@@ -1259,60 +1415,71 @@ msgctxt "Popup/Moderation/Title"
 msgid "Delete this moderation rule?"
 msgstr "Forigi tiun moderecan regulon?"
 
+#: front/src/components/manage/moderation/NotesThread.vue:25
+#, fuzzy
+msgctxt "Popup/Moderation/Title"
+msgid "Delete this note?"
+msgstr "Forigi tiun muzikejon?"
+
 #: front/src/components/library/EditCard.vue:94
 msgctxt "Popup/Library/Title"
 msgid "Delete this suggestion?"
 msgstr "Forigi tiun moderecan regulon?"
 
-#: front/src/views/admin/library/UploadDetail.vue:66
+#: front/src/views/admin/library/TagDetail.vue:42
+#, fuzzy
 msgctxt "Popup/Library/Title"
-msgid "Delete this upload?"
+msgid "Delete this tag?"
+msgstr "Forigi tiun muzikejon?"
+
+#: front/src/views/admin/library/UploadDetail.vue:66
+msgctxt "Popup/Library/Title"
+msgid "Delete this upload?"
 msgstr "Forigi tiun muzikejon?"
 
 #: front/src/components/favorites/List.vue:35
-#: src/components/library/Albums.vue:26
-#: front/src/components/library/Artists.vue:26
+#: src/components/library/Albums.vue:30
+#: front/src/components/library/Artists.vue:30
 #: src/components/library/Radios.vue:47
 #: front/src/components/manage/library/AlbumsTable.vue:22
 #: front/src/components/manage/library/ArtistsTable.vue:22
 #: front/src/components/manage/library/EditsCardList.vue:40
 #: front/src/components/manage/library/LibrariesTable.vue:31
+#: front/src/components/manage/library/TagsTable.vue:22
 #: front/src/components/manage/library/TracksTable.vue:22
 #: front/src/components/manage/library/UploadsTable.vue:41
 #: front/src/components/manage/moderation/AccountsTable.vue:22
-#: front/src/components/manage/moderation/DomainsTable.vue:20
+#: front/src/components/manage/moderation/DomainsTable.vue:28
 #: front/src/components/manage/users/UsersTable.vue:20
+#: front/src/views/admin/moderation/ReportsList.vue:45
 #: front/src/views/content/libraries/FilesTable.vue:32
 #: front/src/views/playlists/List.vue:28
 msgctxt "Content/Search/Dropdown"
 msgid "Descending"
 msgstr "Malfoste"
 
-#: front/src/views/admin/library/LibraryDetail.vue:123
-msgctxt "*/*/*/Noun"
-msgid "Description"
-msgstr "Resumo"
+#: front/src/components/manage/moderation/NoteForm.vue:37
+msgctxt "Content/Moderation/Placeholder"
+msgid "Describe what actions have been taken, or any other related updates…"
+msgstr ""
 
 #: front/src/components/library/radios/Builder.vue:25
+#: front/src/views/admin/library/LibraryDetail.vue:132
 #: front/src/views/content/libraries/Form.vue:14
-msgctxt "Content/*/Input.Label/Noun"
+msgctxt "*/*/*/Noun"
 msgid "Description"
 msgstr "Resumo"
 
 #: front/src/views/content/libraries/Card.vue:48
-#: src/views/content/remote/Card.vue:54
+#: src/views/content/remote/Card.vue:67
 msgctxt "Content/Library/Card.Button.Label/Noun"
 msgid "Details"
 msgstr "Detaloj"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:491
+#: front/src/views/admin/moderation/AccountsDetail.vue:511
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Determine how much content the user can upload. Leave empty to use the "
-"default value of the instance."
-msgstr ""
-"Kiom da datumo la uzanto povas elŝuti. Lasi malplene por uzi la defaŭlta "
-"valoro de la instanco."
+msgid "Determine how much content the user can upload. Leave empty to use the default value of the instance."
+msgstr "Kiom da datumo la uzanto povas elŝuti. Lasi malplene por uzi la defaŭlta valoro de la instanco."
 
 #: front/src/components/mixins/Translations.vue:8
 #: front/src/components/mixins/Translations.vue:9
@@ -1321,38 +1488,51 @@ msgid "Determine the visibility level of your activity"
 msgstr "Kiu estas la videblo de viaj aktoj"
 
 #: front/src/components/auth/Settings.vue:104
-#: front/src/components/auth/SubsonicTokenForm.vue:51
+#: front/src/components/auth/SubsonicTokenForm.vue:56
 msgctxt "Popup/Settings/Button.Label"
 msgid "Disable access"
 msgstr "Malatingeblu"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:48
+#: front/src/components/auth/SubsonicTokenForm.vue:53
 msgctxt "Content/Settings/Button.Label/Verb"
 msgid "Disable Subsonic access"
 msgstr "Malatingeblu Subsonic"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:49
+#: front/src/components/auth/SubsonicTokenForm.vue:54
 msgctxt "Popup/Settings/Title"
 msgid "Disable Subsonic API access?"
 msgstr "Ĉu vi volas malatingeblu la Subsonic API?"
 
+#: front/src/components/About.vue:118 src/components/About.vue:131
+#: front/src/components/About.vue:144
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:18
 #: front/src/views/admin/moderation/AccountsDetail.vue:157
 #: front/src/views/admin/moderation/AccountsDetail.vue:161
-msgctxt "*/*/*"
+#, fuzzy
+msgctxt "*/*/*/State of feature"
 msgid "Disabled"
 msgstr "Malaktiva"
 
-#: front/src/views/admin/library/TrackDetail.vue:145
+#: front/src/views/admin/library/TrackDetail.vue:151
 msgctxt "*/*/*/Noun"
 msgid "Disc number"
 msgstr ""
 
+#: front/src/components/Home.vue:157
+msgctxt "Content/Home/Link"
+msgid "Discover everything you need to know about Funkwhale and its features"
+msgstr ""
+
 #: front/src/components/auth/SubsonicTokenForm.vue:13
 msgctxt "Content/Settings/Link"
 msgid "Discover how to use Funkwhale from other apps"
 msgstr "Malkovri kiel vi povas uzi Funkwhale el aliaj aplikaĵoj"
 
+#: front/src/views/Notifications.vue:45
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Discover other ways to help"
+msgstr ""
+
 #: front/src/views/admin/moderation/AccountsDetail.vue:132
 msgctxt "'Content/*/*/Noun'"
 msgid "Display name"
@@ -1365,12 +1545,14 @@ msgstr "Publike montri"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:122
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Do not download any media file (audio, album cover, account avatar…) from "
-"this account or domain. This will purge existing content as well."
-msgstr ""
-"Neniam alŝuti aŭdovidaĵojn (muzikoj, albumbildoj, avataroj…) el tiu konto aŭ"
-" domajno. AnkaÅ­ forigos aktualajn datumojn."
+msgid "Do not download any media file (audio, album cover, account avatar…) from this account or domain. This will purge existing content as well."
+msgstr "Neniam alŝuti aŭdovidaĵojn (muzikoj, albumbildoj, avataroj…) el tiu konto aŭ domajno. Ankaŭ forigos aktualajn datumojn."
+
+#: front/src/views/Notifications.vue:36
+#, fuzzy
+msgctxt "Content/Notifications/Header"
+msgid "Do you like Funkwhale?"
+msgstr "Pri Funkwhale"
 
 #: front/src/components/playlists/Editor.vue:51
 msgctxt "Popup/Playlist/Title"
@@ -1382,7 +1564,7 @@ msgctxt "Modal/*/Title"
 msgid "Do you want to confirm this action?"
 msgstr "Ĉu vi volas konfirmi tiun akton?"
 
-#: front/src/views/playlists/Detail.vue:35
+#: front/src/views/playlists/Detail.vue:43
 msgctxt "Popup/Playlist/Title/Call to action"
 msgid "Do you want to delete the playlist \"%{ playlist }\"?"
 msgstr "Ĉu vi volas forigi la \"%{playlist}\" ludliston?"
@@ -1392,6 +1574,12 @@ msgctxt "Popup/Radio/Title"
 msgid "Do you want to delete the radio \"%{ radio }\"?"
 msgstr "Ĉu vi volas forigi la \"%{radio}\" radion?"
 
+#: front/src/components/auth/Settings.vue:298
+#, fuzzy
+msgctxt "Popup/Settings/Title"
+msgid "Do you want to delete your account?"
+msgstr "Ĉu vi volas reŝargi vian antaŭan atendovicon?"
+
 #: front/src/components/moderation/FilterModal.vue:3
 msgctxt "Popup/Moderation/Title/Verb"
 msgid "Do you want to hide content from artist \"%{ name }\"?"
@@ -1405,7 +1593,13 @@ msgid_plural "Do you want to launch %{ action } on %{ count } elements?"
 msgstr[0] "Ĉu vi volas komenci %{action} por %{count} ero?"
 msgstr[1] "Ĉu vi volas komenci %{action} por %{count} eroj?"
 
-#: front/src/components/Sidebar.vue:118
+#: front/src/components/moderation/ReportModal.vue:3
+#, fuzzy
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Do you want to report this object?"
+msgstr "Ĉu vi volas konfirmi tiun akton?"
+
+#: front/src/components/Sidebar.vue:122
 msgctxt "Sidebar/Queue/Message"
 msgid "Do you want to restore your previous queue?"
 msgstr "Ĉu vi volas reŝargi vian antaŭan atendovicon?"
@@ -1421,26 +1615,33 @@ msgstr "Dokumentaro"
 #: front/src/components/manage/library/TracksTable.vue:42
 #: front/src/components/manage/library/UploadsTable.vue:62
 #: front/src/components/manage/moderation/AccountsTable.vue:40
-#: front/src/components/mixins/Translations.vue:60
-#: front/src/views/admin/library/AlbumDetail.vue:118
-#: front/src/views/admin/library/ArtistDetail.vue:107
-#: front/src/views/admin/library/LibraryDetail.vue:114
-#: front/src/views/admin/library/TrackDetail.vue:170
+#: front/src/components/manage/moderation/ReportCard.vue:169
+#: front/src/components/manage/moderation/ReportCard.vue:179
+#: front/src/components/mixins/Translations.vue:72
+#: front/src/views/admin/library/AlbumDetail.vue:124
+#: front/src/views/admin/library/ArtistDetail.vue:112
+#: front/src/views/admin/library/LibraryDetail.vue:123
+#: front/src/views/admin/library/TrackDetail.vue:176
 #: front/src/views/admin/library/UploadDetail.vue:121
 #: front/src/views/admin/moderation/AccountsDetail.vue:123
-#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/mixins/Translations.vue:73
 msgctxt "Content/Moderation/*/Noun"
 msgid "Domain"
 msgstr "Domajno"
 
-#: front/src/views/admin/moderation/Base.vue:5
+#: front/src/views/admin/moderation/Base.vue:8
 #: front/src/views/admin/moderation/DomainsList.vue:3
-#: front/src/views/admin/moderation/DomainsList.vue:48
+#: front/src/views/admin/moderation/DomainsList.vue:54
 msgctxt "*/Moderation/*/Noun"
 msgid "Domains"
 msgstr "Domajnoj"
 
-#: front/src/components/library/TrackBase.vue:39
+#: front/src/views/Notifications.vue:42
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Donate"
+msgstr ""
+
+#: front/src/components/library/TrackBase.vue:37
 #: front/src/views/admin/library/UploadDetail.vue:58
 msgctxt "Content/Track/Link/Verb"
 msgid "Download"
@@ -1453,10 +1654,10 @@ msgstr "Treni kaj guti horizontaloj por reordigi kantojn en la ludlisto"
 
 #: front/src/components/audio/track/Table.vue:10
 #: front/src/components/library/TrackDetail.vue:30
-#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:68
 #: front/src/views/admin/library/UploadDetail.vue:238
 #: front/src/views/content/libraries/FilesTable.vue:60
-#: front/src/components/mixins/Translations.vue:57
+#: front/src/components/mixins/Translations.vue:69
 msgctxt "Content/*/*"
 msgid "Duration"
 msgstr "DaÅ­ro"
@@ -1466,41 +1667,27 @@ msgctxt "Content/Signup/Message"
 msgid "E-mail address confirmed"
 msgstr "Konfirmintas retadreson"
 
-#: front/src/components/Home.vue:88
-msgctxt "Content/Home/Title"
-msgid "Easy to use"
-msgstr "Facila uzo"
-
-#: front/src/components/library/AlbumBase.vue:68
-#: front/src/components/library/ArtistBase.vue:79
-#: front/src/components/library/TrackBase.vue:87
+#: front/src/components/auth/Settings.vue:246
+#: src/components/library/AlbumBase.vue:73
+#: front/src/components/library/ArtistBase.vue:84
+#: front/src/components/library/TrackBase.vue:89
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:45
 #: front/src/components/radios/Card.vue:23
-#: src/views/admin/library/AlbumDetail.vue:65
-#: front/src/views/admin/library/ArtistDetail.vue:64
-#: front/src/views/admin/library/TrackDetail.vue:64
+#: src/views/admin/library/AlbumDetail.vue:71
+#: front/src/views/admin/library/ArtistDetail.vue:69
+#: front/src/views/admin/library/TrackDetail.vue:70
 #: front/src/views/content/libraries/Detail.vue:9
 #: src/views/playlists/Detail.vue:31
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Edit"
 msgstr "Redakti"
 
-#: front/src/components/auth/Settings.vue:246
-msgctxt "Content/Settings/Button.Label"
-msgid "Edit"
-msgstr "Redakti"
-
 #: front/src/components/auth/ApplicationEdit.vue:30
 #: front/src/components/auth/ApplicationEdit.vue:75
 msgctxt "Content/Applications/Title"
 msgid "Edit application"
 msgstr "Eraro kiam ruli akton"
 
-#: front/src/components/About.vue:22
-msgctxt "Content/Settings/Button.Label/Verb"
-msgid "Edit instance info"
-msgstr "Redakti informoj de instanco"
-
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:3
 msgctxt "Content/Moderation/Card.Title/Verb"
 msgid "Edit moderation rule"
@@ -1521,23 +1708,20 @@ msgctxt "Content/*/Title"
 msgid "Edit this track"
 msgstr "Ludi tiun kanton"
 
-#: front/src/views/admin/library/AlbumDetail.vue:182
-#: front/src/views/admin/library/ArtistDetail.vue:171
+#: front/src/components/mixins/Translations.vue:116
+#: front/src/views/admin/library/AlbumDetail.vue:198
+#: front/src/views/admin/library/ArtistDetail.vue:186
 #: front/src/views/admin/library/Base.vue:5
 #: src/views/admin/library/EditsList.vue:24
-#: front/src/views/admin/library/TrackDetail.vue:234
+#: front/src/views/admin/library/TrackDetail.vue:250
+#: front/src/components/mixins/Translations.vue:117
 msgctxt "*/Admin/*/Noun"
 msgid "Edits"
 msgstr "Redakti"
 
-#: front/src/components/mixins/Translations.vue:104
-#: front/src/components/mixins/Translations.vue:105
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Edits"
-msgstr "Redakti"
-
-#: front/src/components/auth/Signup.vue:30
+#: front/src/components/auth/SignupForm.vue:26
 #: front/src/components/manage/users/UsersTable.vue:38
+#: front/src/components/moderation/ReportModal.vue:31
 msgctxt "Content/*/*/Noun"
 msgid "Email"
 msgstr "Retmesaĝo"
@@ -1547,50 +1731,60 @@ msgctxt "Content/*/*"
 msgid "Email address"
 msgstr "Retadreso"
 
-#: front/src/components/library/AlbumBase.vue:53
-#: front/src/components/library/ArtistBase.vue:64
-#: front/src/components/library/TrackBase.vue:72
+#: front/src/components/library/AlbumBase.vue:54
+#: front/src/components/library/ArtistBase.vue:65
+#: front/src/components/library/TrackBase.vue:70
+#: src/views/playlists/Detail.vue:38
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Embed"
 msgstr "Enkorpigi"
 
-#: front/src/components/audio/EmbedWizard.vue:20
+#: front/src/components/audio/EmbedWizard.vue:30
 msgctxt "Popup/Embed/Input.Label/Noun"
 msgid "Embed code"
 msgstr "Enkorpiga kodo"
 
-#: front/src/components/library/AlbumBase.vue:26
+#: front/src/components/library/AlbumBase.vue:27
 msgctxt "Popup/Album/Title/Verb"
 msgid "Embed this album on your website"
 msgstr "Enkorpigi tiun albumon en via retejo"
 
-#: front/src/components/library/ArtistBase.vue:37
+#: front/src/components/library/ArtistBase.vue:38
 msgctxt "Popup/Artist/Title/Verb"
 msgid "Embed this artist work on your website"
 msgstr "Enkorpigi tiun kanton en via retejo"
 
-#: front/src/components/library/TrackBase.vue:45
+#: front/src/views/playlists/Detail.vue:52
+#, fuzzy
+msgctxt "Popup/Album/Title/Verb"
+msgid "Embed this playlist on your website"
+msgstr "Enkorpigi tiun albumon en via retejo"
+
+#: front/src/components/library/TrackBase.vue:43
 msgctxt "Popup/Track/Title"
 msgid "Embed this track on your website"
 msgstr "Enkorpigi tiun kanton en via retejo"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:259
-#: front/src/views/admin/moderation/DomainsDetail.vue:187
+#: front/src/views/admin/moderation/AccountsDetail.vue:260
+#: front/src/views/admin/moderation/DomainsDetail.vue:224
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Emitted library follows"
 msgstr "Sendintaj sekvadoj de muzikejo"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:243
-#: front/src/views/admin/moderation/DomainsDetail.vue:171
+#: front/src/views/admin/moderation/AccountsDetail.vue:244
+#: front/src/views/admin/moderation/DomainsDetail.vue:208
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Emitted messages"
 msgstr "Sendintaj mesaĝoj"
 
+#: front/src/components/About.vue:114 src/components/About.vue:127
+#: front/src/components/About.vue:140
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:8
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:17
 #: front/src/views/admin/moderation/AccountsDetail.vue:156
 #: front/src/views/admin/moderation/AccountsDetail.vue:160
-msgctxt "*/*/*"
+#, fuzzy
+msgctxt "*/*/*/State of feature"
 msgid "Enabled"
 msgstr "Aktiva"
 
@@ -1609,9 +1803,9 @@ msgctxt "Content/Search/Input.Placeholder"
 msgid "Enter a radio name…"
 msgstr "Tajpu nomon de radio…"
 
-#: front/src/components/library/Albums.vue:119
+#: front/src/components/library/Albums.vue:128
 msgctxt "Content/Search/Input.Placeholder"
-msgid "Enter album title..."
+msgid "Enter album title…"
 msgstr ""
 
 #: front/src/components/library/Artists.vue:116
@@ -1625,16 +1819,18 @@ msgid "Enter playlist name…"
 msgstr "Tajpu nomon de ludlisto…"
 
 #: front/src/views/auth/PasswordReset.vue:54
+#, fuzzy
 msgctxt "Content/Signup/Input.Placeholder"
-msgid "Enter the email address binded to your account"
+msgid "Enter the email address linked to your account"
 msgstr "Tajpu la retadreson bindanta al via konto"
 
-#: front/src/components/auth/Signup.vue:103
+#: front/src/components/auth/SignupForm.vue:96
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your email"
 msgstr "Tajpu vian retadreson"
 
-#: front/src/components/auth/Signup.vue:98 src/components/auth/Signup.vue:100
+#: front/src/components/auth/SignupForm.vue:91
+#: src/components/auth/SignupForm.vue:93
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your invitation code (case insensitive)"
 msgstr "Tajpu vian invitkodon (usklecoblindan)"
@@ -1644,12 +1840,12 @@ msgctxt "Content/Library/Input.Placeholder/Verb"
 msgid "Enter your search query…"
 msgstr "Tajpu vian serĉon…"
 
-#: front/src/components/auth/Signup.vue:102
+#: front/src/components/auth/SignupForm.vue:95
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your username"
 msgstr "Tajpu vian uzantnomon"
 
-#: front/src/components/auth/Login.vue:83
+#: front/src/components/auth/LoginForm.vue:81
 msgctxt "Content/Login/Input.Placeholder"
 msgid "Enter your username or email"
 msgstr "Tajpu vian uzantnomon aÅ­ retadreson"
@@ -1666,7 +1862,7 @@ msgctxt "Popup/Import/Table.Label/Noun"
 msgid "Error detail"
 msgstr "Eraroraportado"
 
-#: front/src/views/admin/Settings.vue:87
+#: front/src/views/admin/Settings.vue:89
 msgctxt "Content/Admin/Menu"
 msgid "Error reporting"
 msgstr "Eraroraportado"
@@ -1722,16 +1918,12 @@ msgctxt "Popup/Moderation/Error message"
 msgid "Error while fetching application data"
 msgstr "Eraro kiam krei inviton"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:118
+#: front/src/views/admin/moderation/DomainsDetail.vue:155
 msgctxt "Content/Moderation/Table"
 msgid "Error while fetching node info"
 msgstr "Eraro dum skano de malloka instanco"
 
 #: front/src/components/admin/SettingsGroup.vue:5
-msgctxt "Content/Settings/Error message.Title"
-msgid "Error while saving settings"
-msgstr "Eraro kiam konservi preferojn"
-
 #: front/src/components/federation/FetchButton.vue:73
 msgctxt "Content/*/Error message.Title"
 msgid "Error while saving settings"
@@ -1742,6 +1934,18 @@ msgctxt "Content/Library/Error message.Title"
 msgid "Error while submitting edit"
 msgstr "Eraro kiam konservi preferojn"
 
+#: front/src/components/manage/moderation/NoteForm.vue:3
+#, fuzzy
+msgctxt "Content/Moderation/Error message.Title"
+msgid "Error while submitting note"
+msgstr "Eraro kiam konservi preferojn"
+
+#: front/src/components/moderation/ReportModal.vue:11
+#, fuzzy
+msgctxt "Popup/Moderation/Error message"
+msgid "Error while submitting report"
+msgstr "Eraro kiam konservi preferojn"
+
 #: front/src/components/mixins/Translations.vue:32
 #: front/src/components/mixins/Translations.vue:33
 msgctxt "Content/Library/Table/Short"
@@ -1776,9 +1980,14 @@ msgctxt "Content/Radio/Table.Label/Verb"
 msgid "Exclude"
 msgstr "Ekskluzivi"
 
+#: front/src/components/common/CollapseLink.vue:2
+msgctxt "*/*/Button,Label"
+msgid "Expand"
+msgstr ""
+
 #: front/src/components/manage/users/InvitationsTable.vue:41
-#: front/src/components/mixins/Translations.vue:49
-#: front/src/components/mixins/Translations.vue:50
+#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:60
 msgctxt "Content/Admin/Table.Label/Noun"
 msgid "Expiration date"
 msgstr "Fortempiĝa dato"
@@ -1795,15 +2004,8 @@ msgstr "Fortempiĝis aŭ uzantiĝis"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:110
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Explain why you're applying this policy. Depending on your instance "
-"configuration, this will help you remember why you acted on this account or "
-"domain, and may be displayed publicly to help users understand what "
-"moderation rules are in place."
-msgstr ""
-"Ekspliku kial vi aplikas tiun regularon. Depende de la preferado de via "
-"instanco, ĝi helpos vin memori kial vi agis sur tiu konto aŭ domajno, kaj "
-"povus esti afiŝa por helpi uzantoj kompreni kiuj moderecaj reguloj ekzistas."
+msgid "Explain why you're applying this policy. Depending on your instance configuration, this will help you remember why you acted on this account or domain, and may be displayed publicly to help users understand what moderation rules are in place."
+msgstr "Ekspliku kial vi aplikas tiun regularon. Depende de la preferado de via instanco, ĝi helpos vin memori kial vi agis sur tiu konto aŭ domajno, kaj povus esti afiŝa por helpi uzantoj kompreni kiuj moderecaj reguloj ekzistas."
 
 #: front/src/components/manage/library/UploadsTable.vue:25
 #: front/src/views/content/libraries/FilesTable.vue:16
@@ -1811,31 +2013,28 @@ msgctxt "Content/Library/Dropdown"
 msgid "Failed"
 msgstr "Eraris"
 
-#: front/src/views/content/remote/Card.vue:62
+#: front/src/views/content/remote/Card.vue:75
 msgctxt "Content/Library/Card.List item/Noun"
 msgid "Failed tracks:"
 msgstr "Erarintaj kantoj:"
 
-#: front/src/views/admin/library/AlbumDetail.vue:165
-#: front/src/views/admin/library/ArtistDetail.vue:154
-#: front/src/views/admin/library/TrackDetail.vue:217
+#: front/src/views/admin/library/AlbumDetail.vue:171
+#: front/src/views/admin/library/ArtistDetail.vue:159
+#: front/src/views/admin/library/TrackDetail.vue:223
 msgctxt "*/*/*"
 msgid "Favorited tracks"
 msgstr "Erarintaj kantoj:"
 
 #: front/src/components/Sidebar.vue:66
+#: src/components/mixins/Translations.vue:88
+#: front/src/components/mixins/Translations.vue:89
 msgctxt "Sidebar/Favorites/List item.Link/Noun"
 msgid "Favorites"
 msgstr "Stelumoj"
 
-#: front/src/components/mixins/Translations.vue:76
-#: front/src/components/mixins/Translations.vue:77
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Favorites"
-msgstr "Stelumoj"
-
-#: front/src/views/admin/Settings.vue:84
-msgctxt "Content/Admin/Menu"
+#: front/src/components/About.vue:110 src/views/admin/Settings.vue:84
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Federation"
 msgstr "Federo"
 
@@ -1859,6 +2058,11 @@ msgctxt "Content/Radio/Table.Label/Noun"
 msgid "Filter name"
 msgstr "Filtri nomon"
 
+#: front/src/components/Home.vue:118
+msgctxt "Content/Home/Link"
+msgid "Find another pod"
+msgstr ""
+
 #: front/src/components/manage/library/UploadsTable.vue:26
 #: front/src/components/mixins/Translations.vue:36
 #: front/src/views/content/libraries/FilesTable.vue:17
@@ -1868,25 +2072,31 @@ msgid "Finished"
 msgstr "Finanto"
 
 #: front/src/components/manage/moderation/AccountsTable.vue:42
-#: front/src/components/manage/moderation/DomainsTable.vue:41
-#: front/src/views/admin/library/AlbumDetail.vue:149
-#: front/src/views/admin/library/ArtistDetail.vue:138
-#: front/src/views/admin/library/LibraryDetail.vue:153
-#: front/src/views/admin/library/TrackDetail.vue:201
+#: front/src/components/manage/moderation/DomainsTable.vue:49
+#: front/src/views/admin/library/AlbumDetail.vue:155
+#: front/src/views/admin/library/ArtistDetail.vue:143
+#: front/src/views/admin/library/LibraryDetail.vue:162
+#: front/src/views/admin/library/TagDetail.vue:98
+#: front/src/views/admin/library/TrackDetail.vue:207
 #: front/src/views/admin/library/UploadDetail.vue:167
-#: front/src/views/admin/moderation/AccountsDetail.vue:235
-#: front/src/views/admin/moderation/DomainsDetail.vue:151
+#: front/src/views/admin/moderation/AccountsDetail.vue:236
+#: front/src/views/admin/moderation/DomainsDetail.vue:188
 msgctxt "Content/Moderation/Table.Label/Short (Value is a date)"
 msgid "First seen"
 msgstr "Unua vido"
 
-#: front/src/components/mixins/Translations.vue:46
-#: front/src/components/mixins/Translations.vue:47
+#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:57
 msgctxt "Content/Moderation/Dropdown/Noun"
 msgid "First seen date"
 msgstr "Dato de unua vido"
 
-#: front/src/views/content/remote/Card.vue:87
+#: front/src/components/ShortcutsModal.vue:64
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Focus searchbar"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:100
 msgctxt "Content/Library/Card.Button.Label/Verb"
 msgid "Follow"
 msgstr "Sekvi"
@@ -1896,40 +2106,34 @@ msgctxt "Content/Library/Title/Verb"
 msgid "Follow remote libraries"
 msgstr "Sekvi mallokajn muzikejojn"
 
-#: front/src/views/content/remote/Card.vue:92
+#: front/src/views/content/remote/Card.vue:105
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Follow request pending approval"
 msgstr "Peto da sekvado atendanta konsenton"
 
-#: front/src/components/mixins/Translations.vue:64
-#: front/src/views/admin/library/LibraryDetail.vue:161
+#: front/src/components/manage/library/LibrariesTable.vue:53
+#: front/src/components/mixins/Translations.vue:76
+#: front/src/views/admin/library/LibraryDetail.vue:170
 #: front/src/views/content/libraries/Detail.vue:7
-#: front/src/components/mixins/Translations.vue:65
+#: front/src/components/mixins/Translations.vue:77
 msgctxt "Content/Federation/*/Noun"
 msgid "Followers"
 msgstr "Sekvantoj"
 
-#: front/src/components/manage/library/LibrariesTable.vue:53
-msgctxt "Content/*/*/Noun"
-msgid "Followers"
-msgstr "Sekvantoj"
-
-#: front/src/views/content/remote/Card.vue:103
+#: front/src/views/content/remote/Card.vue:116
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Following"
 msgstr "Sekvata"
 
-#: front/src/components/mixins/Translations.vue:84
-#: front/src/components/mixins/Translations.vue:85
+#: front/src/components/mixins/Translations.vue:96
+#: front/src/components/mixins/Translations.vue:97
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Follows"
 msgstr "Sekvi"
 
-#: front/src/components/library/TrackBase.vue:17
+#: front/src/components/library/TrackBase.vue:245
 msgctxt "Content/Track/Paragraph"
-msgid ""
-"From album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> by <a"
-" class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgid "From album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
 msgstr ""
 
 #: front/src/components/auth/Authorize.vue:28
@@ -1939,36 +2143,21 @@ msgstr "Malatingeblu"
 
 #: front/src/components/auth/SubsonicTokenForm.vue:7
 msgctxt "Content/Settings/Paragraph'"
-msgid ""
-"Funkwhale is compatible with other music players that support the Subsonic "
-"API."
+msgid "Funkwhale is compatible with other music players that support the Subsonic API."
 msgstr "Funkwhale funkcias kun aliaj muzikludiloj ke apogas la Subsonic API."
 
-#: front/src/components/Home.vue:90
-msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale is dead simple to use."
-msgstr "Uzi Funkwhale facilegas."
-
-#: front/src/components/Home.vue:39
-msgctxt "Content/Home/Paragraph"
-msgid ""
-"Funkwhale is designed to make it easy to listen to music you like, or to "
-"discover new artists."
-msgstr ""
-"Funkwhale estas dizajna tiel ke estas facile aŭskulti muzikon vi ŝatas, aŭ "
-"malkovri novajn artistojn."
-
-#: front/src/components/Home.vue:111
+#: front/src/components/Home.vue:88
+#, fuzzy
 msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale is free and gives you control on your music."
+msgid "Funkwhale is free and developped by a friendly community of volunteers."
 msgstr "Funkwhale estas senpaga kaj lasis vin estri vian muzikon."
 
-#: front/src/components/Home.vue:66
-msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale takes care of handling your music"
-msgstr "Funkwhale atentas manipuli vian muzikon"
+#: front/src/components/About.vue:78
+msgctxt "*/*/*"
+msgid "Funkwhale version"
+msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:38
+#: front/src/components/ShortcutsModal.vue:56
 msgctxt "Popup/Keyboard shortcuts/Title"
 msgid "General shortcuts"
 msgstr "Generalaj fulmoklavoj"
@@ -1978,35 +2167,17 @@ msgctxt "Content/Admin/Button.Label/Verb"
 msgid "Get a new invitation"
 msgstr "Akiri novan inviton"
 
-#: front/src/components/Home.vue:13
-msgctxt "Content/Home/Button.Label/Verb"
-msgid "Get me to the library"
-msgstr "Iru al la muzikejo"
-
-#: front/src/components/Home.vue:70
-msgctxt "Content/Home/List item/Verb"
-msgid ""
-"Get quality metadata about your music thanks to <a href=\"%{ url }\" "
-"target=\"_blank\">MusicBrainz</a>"
-msgstr ""
-"Akiri kvalitaj metadatumoj pri vian muzikon kun <a href=\"%{url}\" "
-"target=\"_blank\">MusicBrainz</a>"
-
 #: front/src/views/content/Home.vue:12 src/views/content/Home.vue:19
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Get started"
 msgstr "Komencu"
 
-#: front/src/components/Footer.vue:37
+#: front/src/components/Footer.vue:45
+#: src/components/library/ImportStatusModal.vue:45
 msgctxt "Footer/*/Link"
 msgid "Getting help"
 msgstr "Ricevi helpon"
 
-#: front/src/components/library/ImportStatusModal.vue:45
-msgctxt "Popup/Import/Table.Label/Noun"
-msgid "Getting help"
-msgstr "Ricevi helpon"
-
 #: front/src/components/common/ActionTable.vue:35
 #: front/src/components/common/ActionTable.vue:56
 msgctxt "Content/*/Button.Label/Short, Verb"
@@ -2018,11 +2189,21 @@ msgctxt "Content/*/Button.Label/Verb"
 msgid "Go to home page"
 msgstr "Iru hejme"
 
+#: front/src/views/Notifications.vue:27 src/views/Notifications.vue:61
+msgctxt "Content/Notifications/Button.Label"
+msgid "Got it!"
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:128
 msgctxt "Content/Settings/Title"
 msgid "Hidden artists"
 msgstr "Folii artistojn"
 
+#: front/src/components/About.vue:155
+msgctxt "*/*/*/Verb"
+msgid "Hide"
+msgstr ""
+
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:114
 msgctxt "Content/Moderation/Help text"
 msgid "Hide account or domain content, except from followers."
@@ -2033,12 +2214,12 @@ msgctxt "Popup/*/Button.Label"
 msgid "Hide content"
 msgstr "Aldoni muzikon"
 
-#: front/src/components/audio/PlayButton.vue:26
+#: front/src/components/audio/PlayButton.vue:31
 msgctxt "*/Queue/Dropdown/Button/Label/Short"
 msgid "Hide content from this artist"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:643
+#: front/src/components/audio/Player.vue:669
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Hide content from this artist…"
 msgstr ""
@@ -2048,37 +2229,29 @@ msgctxt "Head/Home/Title"
 msgid "Home"
 msgstr "Hejmo"
 
-#: front/src/components/instance/Stats.vue:36
-msgctxt "Content/About/Paragraph/Unit"
-msgid "Hours of music"
-msgstr "Muzikhoroj"
-
 #: front/src/components/auth/SubsonicTokenForm.vue:10
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"However, accessing Funkwhale from those clients require a separate password "
-"you can set below."
-msgstr ""
-"Tamen, atingi Funkwhale el tiuj aplikaĵo bezonas alian pasvorton ke vi povas"
-" difini malsupre."
+msgid "However, accessing Funkwhale from those clients require a separate password you can set below."
+msgstr "Tamen, atingi Funkwhale el tiuj aplikaĵo bezonas alian pasvorton ke vi povas difini malsupre."
 
 #: front/src/views/auth/PasswordResetConfirm.vue:24
+#, fuzzy
 msgctxt "Content/Signup/Paragraph"
-msgid ""
-"If the email address provided in the previous step is valid and binded to a "
-"user account, you should receive an email with reset instructions in the "
-"next couple of minutes."
-msgstr ""
-"Se la retadreso provizanta dum la antaÅ­a etapo korektas kaj bindas al "
-"uzantkonto, vi baldaŭ ricevus retmesaĝon kun renuligadaj instrukcioj."
+msgid "If the email address provided in the previous step is valid and linked to a user account, you should receive an email with reset instructions in the next couple of minutes."
+msgstr "Se la retadreso provizanta dum la antaŭa etapo korektas kaj bindas al uzantkonto, vi baldaŭ ricevus retmesaĝon kun renuligadaj instrukcioj."
 
 #: front/src/components/auth/Settings.vue:205
 msgctxt "Content/Applications/Paragraph"
-msgid ""
-"If you authorize third-party applications to access your data, those "
-"applications will be listed here."
+msgid "If you authorize third-party applications to access your data, those applications will be listed here."
 msgstr ""
 
+#: front/src/components/mixins/Translations.vue:46
+#: front/src/components/mixins/Translations.vue:47
+#, fuzzy
+msgctxt "Content/Moderation/Dropdown"
+msgid "Illegal content"
+msgstr "Aldoni muzikon"
+
 #: front/src/components/library/ImportStatusModal.vue:3
 msgctxt "Popup/Import/Title"
 msgid "Import detail"
@@ -2090,14 +2263,10 @@ msgid "Import reference"
 msgstr "Importfonto"
 
 #: front/src/components/manage/library/UploadsTable.vue:20
-#: front/src/views/content/libraries/FilesTable.vue:11
-#: front/src/views/content/libraries/FilesTable.vue:59
-msgctxt "Content/Library/*/Noun"
-msgid "Import status"
-msgstr "Importstato"
-
 #: front/src/components/manage/library/UploadsTable.vue:64
 #: front/src/views/admin/library/UploadDetail.vue:131
+#: front/src/views/content/libraries/FilesTable.vue:11
+#: front/src/views/content/libraries/FilesTable.vue:59
 msgctxt "Content/*/*/Noun"
 msgid "Import status"
 msgstr "Importstato"
@@ -2138,12 +2307,12 @@ msgctxt "Popup/Moderation/List item"
 msgid "In radio suggestions"
 msgstr ""
 
-#: front/src/components/manage/users/UsersTable.vue:54
+#: front/src/components/manage/users/UsersTable.vue:55
 msgctxt "Content/Admin/Table"
 msgid "Inactive"
 msgstr "Malaktiva"
 
-#: front/src/components/ShortcutsModal.vue:71
+#: front/src/components/ShortcutsModal.vue:124
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Increase volume"
 msgstr "Pliigi volumon"
@@ -2162,7 +2331,7 @@ msgctxt "Content/Settings/Dropdown/Short"
 msgid "Instance"
 msgstr "Instanca datumo"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:71
+#: front/src/views/admin/moderation/DomainsDetail.vue:99
 msgctxt "Content/Moderation/Title"
 msgid "Instance data"
 msgstr "Instanca datumo"
@@ -2187,20 +2356,25 @@ msgctxt "Popup/Instance/Input.Label/Noun"
 msgid "Instance URL"
 msgstr "Instanca datumo"
 
+#: front/src/components/manage/moderation/ReportCard.vue:92
+#: front/src/components/manage/moderation/ReportCard.vue:203
+msgctxt "Content/*/*/Noun"
+msgid "Internal notes"
+msgstr ""
+
 #: front/src/components/library/FileUpload.vue:268
 msgctxt "Content/Library/Help text"
-msgid ""
-"Invalid file type, ensure you are uploading an audio file. Supported file "
-"extensions are %{ extensions }"
-msgstr ""
-"Malbona dosiertipo, aserti ĝi estas aŭda dosiero. %{ extensions } funkcias"
+msgid "Invalid file type, ensure you are uploading an audio file. Supported file extensions are %{ extensions }"
+msgstr "Malbona dosiertipo, aserti ĝi estas aŭda dosiero. %{ extensions } funkcias"
 
 #: front/src/components/library/ImportStatusModal.vue:139
+#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:46
 msgctxt "Popup/Import/Error.Label"
 msgid "Invalid metadata"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:44
+#: front/src/components/auth/SignupForm.vue:40
 #: front/src/components/manage/users/InvitationForm.vue:11
 msgctxt "Content/*/Input.Label"
 msgid "Invitation code"
@@ -2212,7 +2386,13 @@ msgctxt "*/Admin/*/Noun"
 msgid "Invitations"
 msgstr "Invitoj"
 
-#: front/src/components/Footer.vue:41
+#: front/src/components/manage/moderation/DomainsTable.vue:9
+#: front/src/views/admin/moderation/DomainsDetail.vue:106
+msgctxt "Content/Moderation/*/Adjective"
+msgid "Is present on allow-list"
+msgstr ""
+
+#: front/src/components/Footer.vue:49
 msgctxt "Footer/*/List item.Link"
 msgid "Issue tracker"
 msgstr "Cimspuradilo"
@@ -2222,17 +2402,18 @@ msgctxt "Popup/Instance/Error message.Title"
 msgid "It is not possible to connect to the given URL"
 msgstr ""
 
-#: front/src/components/Home.vue:50
-msgctxt "Content/Home/List item/Verb"
-msgid "Keep a track of your favorite songs"
-msgstr "Konservi postsignojn de viaj preferitaj kantoj"
+#: front/src/components/mixins/Translations.vue:65
+#: front/src/components/mixins/Translations.vue:66
+msgctxt "*/*/*/Noun"
+msgid "Items"
+msgstr ""
 
 #: front/src/components/Footer.vue:33 src/components/ShortcutsModal.vue:3
 msgctxt "*/*/*/Noun"
 msgid "Keyboard shortcuts"
 msgstr "Fulmoklavo"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:161
+#: front/src/views/admin/moderation/DomainsDetail.vue:198
 msgctxt "Content/Moderation/Table.Label.Link"
 msgid "Known accounts"
 msgstr "Konataj kontoj"
@@ -2243,15 +2424,15 @@ msgid "Known libraries"
 msgstr "Konataj muzikejoj"
 
 #: front/src/components/manage/users/UsersTable.vue:41
-#: front/src/components/mixins/Translations.vue:58
-#: front/src/views/admin/moderation/AccountsDetail.vue:205
-#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:70
+#: front/src/views/admin/moderation/AccountsDetail.vue:206
+#: front/src/components/mixins/Translations.vue:71
 msgctxt "Content/Profile/Table.Label/Short, Noun (Value is a date)"
 msgid "Last activity"
 msgstr "Lasta akto"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:188
-#: front/src/views/admin/moderation/DomainsDetail.vue:78
+#: front/src/views/admin/moderation/AccountsDetail.vue:189
+#: front/src/views/admin/moderation/DomainsDetail.vue:115
 msgctxt "Content/*/Table.Label"
 msgid "Last checked"
 msgstr "Lasta kontrolado"
@@ -2266,13 +2447,13 @@ msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Last seen"
 msgstr "Lasta vidanto"
 
-#: front/src/components/mixins/Translations.vue:47
-#: front/src/components/mixins/Translations.vue:48
+#: front/src/components/mixins/Translations.vue:57
+#: front/src/components/mixins/Translations.vue:58
 msgctxt "Content/Moderation/Dropdown/Noun"
 msgid "Last seen date"
 msgstr "Dato de lasta vido"
 
-#: front/src/views/content/remote/Card.vue:60
+#: front/src/views/content/remote/Card.vue:73
 msgctxt "Content/Library/Card.List item/Noun"
 msgid "Last update:"
 msgstr "Lasta ĝisdatigo:"
@@ -2282,60 +2463,60 @@ msgctxt "Modal/*/Button.Label/Short, Verb"
 msgid "Launch"
 msgstr "Lanĉi"
 
-#: front/src/components/Home.vue:10
-msgctxt "Content/Home/Button.Label/Verb"
-msgid "Learn more about this instance"
-msgstr "Lerni pli pri tiu instanco"
+#: front/src/components/Home.vue:35
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Learn more"
+msgstr "Ŝargas sekvantojn…"
 
 #: front/src/components/manage/users/InvitationForm.vue:58
 msgctxt "Content/Admin/Input.Placeholder"
 msgid "Leave empty for a random code"
 msgstr "Lasu malplena por hazarda kodo"
 
-#: front/src/components/audio/EmbedWizard.vue:7
+#: front/src/components/audio/EmbedWizard.vue:17
 msgctxt "Popup/Embed/Paragraph"
 msgid "Leave empty for a responsive widget"
 msgstr "Lasu malplena por adaptiĝema fenestraĵo"
 
-#: front/src/views/admin/library/AlbumDetail.vue:232
-#: front/src/views/admin/library/ArtistDetail.vue:221
-#: front/src/views/admin/library/TrackDetail.vue:284
-#: front/src/views/admin/moderation/AccountsDetail.vue:327
-#: front/src/views/admin/moderation/DomainsDetail.vue:234
-#: front/src/views/content/Base.vue:5
+#: front/src/components/mixins/Translations.vue:64
+#: front/src/components/mixins/Translations.vue:65
 msgctxt "*/*/*/Noun"
-msgid "Libraries"
-msgstr "Muzikejoj"
+msgid "Length"
+msgstr ""
 
+#: front/src/views/admin/library/AlbumDetail.vue:248
+#: front/src/views/admin/library/ArtistDetail.vue:236
 #: front/src/views/admin/library/Base.vue:17
 #: front/src/views/admin/library/LibrariesList.vue:24
-msgctxt "*/*/*"
+#: front/src/views/admin/library/TrackDetail.vue:300
+#: front/src/views/admin/moderation/AccountsDetail.vue:339
+#: front/src/views/admin/moderation/DomainsDetail.vue:271
+#: front/src/views/content/Base.vue:5
+msgctxt "*/*/*/Noun"
 msgid "Libraries"
 msgstr "Muzikejoj"
 
-#: front/src/components/mixins/Translations.vue:72
-#: front/src/components/mixins/Translations.vue:73
+#: front/src/components/mixins/Translations.vue:84
+#: front/src/components/mixins/Translations.vue:85
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Libraries and uploads"
 msgstr "Äœisdatigas muzikejon"
 
 #: front/src/views/content/libraries/Form.vue:2
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Libraries help you organize and share your music collections. You can upload"
-" your own music collection to Funkwhale and share it with your friends and "
-"family."
-msgstr ""
-"Muzikejoj helpas vin organizi kaj diskonigi viajn muzikarojn. Vi povas "
-"elŝuti vian propran muzikaron je Funkwhale kaj diskonigi ĝin kun viajn "
-"amikojn kaj familio."
+msgid "Libraries help you organize and share your music collections. You can upload your own music collection to Funkwhale and share it with your friends and family."
+msgstr "Muzikejoj helpas vin organizi kaj diskonigi viajn muzikarojn. Vi povas elŝuti vian propran muzikaron je Funkwhale kaj diskonigi ĝin kun viajn amikojn kaj familio."
 
-#: front/src/components/Sidebar.vue:85 src/components/instance/Stats.vue:30
+#: front/src/components/Sidebar.vue:85
 #: front/src/components/manage/library/UploadsTable.vue:60
-#: front/src/components/manage/users/UsersTable.vue:173
+#: front/src/components/manage/users/UsersTable.vue:174
+#: front/src/components/mixins/Report.vue:77
 #: front/src/views/admin/library/UploadDetail.vue:144
-#: front/src/views/admin/moderation/AccountsDetail.vue:498
-msgctxt "*/*/*"
+#: front/src/views/admin/moderation/AccountsDetail.vue:518 src/entities.js:132
+#: front/src/components/mixins/Report.vue:78
+#, fuzzy
+msgctxt "*/*/*/Noun"
 msgid "Library"
 msgstr "Muzikejo"
 
@@ -2366,21 +2547,37 @@ msgstr "Äœisdatigas muzikejon"
 
 #: front/src/components/library/TrackDetail.vue:19
 #: front/src/components/manage/library/TracksTable.vue:43
-#: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:61
+#: front/src/views/admin/library/TrackDetail.vue:165 src/edits.js:84
+#: front/src/entities.js:115
 msgctxt "Content/*/*/Noun"
 msgid "License"
 msgstr "Permesilo"
 
-#: front/src/views/admin/library/AlbumDetail.vue:157
-#: front/src/views/admin/library/ArtistDetail.vue:146
-#: front/src/views/admin/library/TrackDetail.vue:209
-msgctxt "*/*/*/Noun"
-msgid "Listenings"
+#: front/src/components/Footer.vue:90
+msgctxt "Footer/Settings/Dropdown.Label/Theme name"
+msgid "Light"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:80
-#: front/src/components/mixins/Translations.vue:81
-msgctxt "Content/OAuth Scopes/Label"
+#: front/src/views/admin/library/AlbumDetail.vue:188
+#: front/src/views/admin/library/ArtistDetail.vue:176
+#: front/src/views/admin/library/LibraryDetail.vue:179
+#: front/src/views/admin/library/TrackDetail.vue:240
+#: front/src/views/admin/moderation/AccountsDetail.vue:269
+msgctxt "Content/Moderation/Table.Label/Noun"
+msgid "Linked reports"
+msgstr ""
+
+#: front/src/components/Home.vue:135
+msgctxt "Content/Home/Link"
+msgid "Listen to public albums and playlists shared on this pod"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:92
+#: front/src/views/admin/library/AlbumDetail.vue:163
+#: front/src/views/admin/library/ArtistDetail.vue:151
+#: front/src/views/admin/library/TrackDetail.vue:215
+#: front/src/components/mixins/Translations.vue:93
+msgctxt "*/*/*/Noun"
 msgid "Listenings"
 msgstr ""
 
@@ -2406,7 +2603,7 @@ msgctxt "Content/Library/Paragraph"
 msgid "Loading library data…"
 msgstr "Ŝargas datumon de muzikejo…"
 
-#: front/src/views/Notifications.vue:19
+#: front/src/views/Notifications.vue:84
 msgctxt "Content/Notifications/Paragraph"
 msgid "Loading notifications…"
 msgstr "Ŝarĝas sciigojn…"
@@ -2431,6 +2628,7 @@ msgstr "Ŝarĝas viajn stelumojn…"
 #: front/src/components/manage/library/LibrariesTable.vue:75
 #: front/src/components/manage/library/TracksTable.vue:71
 #: front/src/components/manage/library/UploadsTable.vue:99
+#: front/src/components/manage/moderation/ReportCard.vue:173
 #: front/src/views/admin/library/AlbumDetail.vue:19
 #: front/src/views/admin/library/ArtistDetail.vue:18
 #: front/src/views/admin/library/LibraryDetail.vue:18
@@ -2446,12 +2644,12 @@ msgctxt "Content/Moderation/*/Short, Noun"
 msgid "Local account"
 msgstr "Loka konto"
 
-#: front/src/components/auth/Login.vue:84
+#: front/src/components/Home.vue:96 src/views/auth/Login.vue:29
 msgctxt "Head/Login/Title"
 msgid "Log In"
 msgstr "Ensaluti"
 
-#: front/src/components/auth/Login.vue:4
+#: front/src/views/auth/Login.vue:4
 msgctxt "Content/Login/Title/Verb"
 msgid "Log in to your Funkwhale account"
 msgstr "Ensaluti en via Funkwhale konto"
@@ -2466,7 +2664,7 @@ msgctxt "Sidebar/Profile/List item.Link"
 msgid "Logged in as %{ username }"
 msgstr "Elsuta je %{username}"
 
-#: front/src/components/Sidebar.vue:54 src/components/auth/Login.vue:42
+#: front/src/components/Sidebar.vue:54 src/components/auth/LoginForm.vue:41
 msgctxt "*/Login/*/Verb"
 msgid "Login"
 msgstr "Ensaluti"
@@ -2486,35 +2684,40 @@ msgctxt "Content/Library/Paragraph"
 msgid "Looks like you don't have a library, it's time to create one."
 msgstr "Åœajni ke vi ne jam havas muzikejon, kreu unu."
 
-#: front/src/components/audio/Player.vue:632
-#: src/components/audio/Player.vue:633
+#: front/src/components/audio/Player.vue:658
+#: src/components/audio/Player.vue:659
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping disabled. Click to switch to single-track looping."
 msgstr "Ripeto malaktivas. Alklaki por aktivi ripetado de la aktuala kanto."
 
-#: front/src/components/audio/Player.vue:635
-#: src/components/audio/Player.vue:636
+#: front/src/components/audio/Player.vue:661
+#: src/components/audio/Player.vue:662
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping on a single track. Click to switch to whole queue looping."
-msgstr ""
-"Ripetas unu kanton. Alklaki por aktivi ripetado de la tutan atendovico."
+msgstr "Ripetas unu kanton. Alklaki por aktivi ripetado de la tutan atendovico."
 
-#: front/src/components/audio/Player.vue:638
-#: src/components/audio/Player.vue:639
+#: front/src/components/audio/Player.vue:664
+#: src/components/audio/Player.vue:665
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping on whole queue. Click to disable looping."
 msgstr "Ripetas la tutan atendovicon. Alklaki por malaktivi ripeto."
 
-#: front/src/components/Sidebar.vue:223
+#: front/src/components/Sidebar.vue:230
 msgctxt "Sidebar/*/Hidden text"
 msgid "Main menu"
 msgstr "Precipa menuo"
 
-#: front/src/views/admin/library/Base.vue:31
+#: front/src/views/admin/library/Base.vue:34
 msgctxt "Head/Admin/Title"
 msgid "Manage library"
 msgstr "Administri muzikejon"
 
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:8
+#, fuzzy
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Manage moderation rules for %{ obj }"
+msgstr "Moderece"
+
 #: front/src/components/playlists/PlaylistModal.vue:3
 msgctxt "Popup/Playlist/Title/Verb"
 msgid "Manage playlists"
@@ -2530,7 +2733,7 @@ msgctxt "Content/Playlist/Button.Label/Verb"
 msgid "Manage your playlists"
 msgstr "Manipuli viajn ludlistojn"
 
-#: front/src/views/Notifications.vue:14
+#: front/src/views/Notifications.vue:79
 msgctxt "Content/Notifications/Button.Label/Verb"
 msgid "Mark all as read"
 msgstr "Marki ĉiujn legata"
@@ -2545,12 +2748,12 @@ msgctxt "Content/Notifications/Button.Tooltip/Verb"
 msgid "Mark as unread"
 msgstr "Marki mallegata"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:310
+#: front/src/views/admin/moderation/AccountsDetail.vue:321
 msgctxt "Content/*/*/Unit"
 msgid "MB"
 msgstr "Mb"
 
-#: front/src/components/audio/Player.vue:625
+#: front/src/components/audio/Player.vue:651
 msgctxt "Sidebar/Player/Hidden text"
 msgid "Media player"
 msgstr "AÅ­dilo"
@@ -2560,43 +2763,59 @@ msgctxt "Content/Profile/Paragraph"
 msgid "Member since %{ date }"
 msgstr "Aligis je %{date}"
 
+#: front/src/components/manage/moderation/ReportCard.vue:109
+#: front/src/components/moderation/ReportModal.vue:41
+msgctxt "*/*/Field.Label/Noun"
+msgid "Message"
+msgstr ""
+
 #: front/src/components/Footer.vue:32
 msgctxt "Footer/*/List item.Link"
 msgid "Mobile and desktop apps"
 msgstr "Poŝkomputilaj kaj komputilaj aplikaĵoj"
 
+#: front/src/components/Home.vue:143
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Mobile apps"
+msgstr "Poŝkomputilaj kaj komputilaj aplikaĵoj"
+
 #: front/src/components/Sidebar.vue:96
-#: src/components/manage/users/UsersTable.vue:177
-#: front/src/views/admin/moderation/AccountsDetail.vue:502
-#: front/src/views/admin/moderation/Base.vue:21
+#: src/components/manage/users/UsersTable.vue:178
+#: front/src/views/admin/Settings.vue:85
+#: front/src/views/admin/moderation/AccountsDetail.vue:522
+#: front/src/views/admin/moderation/Base.vue:43
 msgctxt "*/Moderation/*"
 msgid "Moderation"
 msgstr "Modereco"
 
 #: front/src/views/admin/moderation/AccountsDetail.vue:78
-#: front/src/views/admin/moderation/DomainsDetail.vue:42
+#: front/src/views/admin/moderation/DomainsDetail.vue:70
 msgctxt "Content/Moderation/Card.Paragraph"
-msgid ""
-"Moderation policies help you control how your instance interact with a given"
-" domain or account."
-msgstr ""
-"Moderecaj regularoj helpas vin kontroli kial via instanco interagis kun "
-"domajnon aÅ­ konton."
+msgid "Moderation policies help you control how your instance interact with a given domain or account."
+msgstr "Moderecaj regularoj helpas vin kontroli kial via instanco interagis kun domajnon aÅ­ konton."
+
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:4
+#, fuzzy
+msgctxt "Content/Moderation/Button.Label"
+msgid "Moderation rules…"
+msgstr "Äœisdati moderecan regulon"
 
 #: front/src/components/library/EditCard.vue:5
 msgctxt "Content/Library/Card/Short"
 msgid "Modification %{ id }"
 msgstr "Modifdato"
 
-#: front/src/components/mixins/Translations.vue:48
-#: front/src/components/mixins/Translations.vue:49
+#: front/src/components/mixins/Translations.vue:58
+#: front/src/components/mixins/Translations.vue:59
 msgctxt "Content/Playlist/Dropdown/Noun"
 msgid "Modification date"
 msgstr "Modifdato"
 
-#: front/src/components/library/AlbumBase.vue:42
-#: front/src/components/library/ArtistBase.vue:53
-#: front/src/components/library/TrackBase.vue:61
+#: front/src/components/audio/PlayButton.vue:100
+#: front/src/components/library/AlbumBase.vue:43
+#: front/src/components/library/ArtistBase.vue:54
+#: front/src/components/library/TrackBase.vue:59
 msgctxt "*/*/Button.Label/Noun"
 msgid "More…"
 msgstr ""
@@ -2606,7 +2825,7 @@ msgctxt "*/*/*/Noun"
 msgid "Music"
 msgstr "Muziko"
 
-#: front/src/components/audio/Player.vue:631
+#: front/src/components/audio/Player.vue:657
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Mute"
 msgstr "Silentigi"
@@ -2653,8 +2872,8 @@ msgctxt "Content/Library/Title"
 msgid "My libraries"
 msgstr "Miaj muzikejoj"
 
-#: front/src/components/audio/track/Row.vue:40
-#: src/components/library/EditCard.vue:60
+#: front/src/components/About.vue:105 src/components/audio/track/Row.vue:40
+#: front/src/components/library/EditCard.vue:60
 #: front/src/components/library/EditForm.vue:70
 #: front/src/components/library/TrackDetail.vue:34
 #: front/src/components/library/TrackDetail.vue:43
@@ -2664,54 +2883,56 @@ msgstr "Miaj muzikejoj"
 #: front/src/components/manage/library/TracksTable.vue:76
 #: front/src/components/manage/library/UploadsTable.vue:121
 #: front/src/components/manage/library/UploadsTable.vue:128
-#: front/src/components/manage/users/UsersTable.vue:61
+#: front/src/components/manage/moderation/ReportCard.vue:78
+#: front/src/components/manage/moderation/ReportCard.vue:87
+#: front/src/components/manage/moderation/ReportCard.vue:193
+#: front/src/components/manage/users/UsersTable.vue:62
 #: front/src/views/admin/library/UploadDetail.vue:179
 #: front/src/views/admin/library/UploadDetail.vue:214
 #: front/src/views/admin/library/UploadDetail.vue:233
 #: front/src/views/admin/library/UploadDetail.vue:244
 #: front/src/views/admin/library/UploadDetail.vue:257
-#: front/src/views/admin/moderation/AccountsDetail.vue:192
-#: front/src/views/admin/moderation/DomainsDetail.vue:82
+#: front/src/views/admin/moderation/AccountsDetail.vue:193
+#: front/src/views/admin/moderation/DomainsDetail.vue:119
 #: front/src/views/content/libraries/FilesTable.vue:95
 #: front/src/views/content/libraries/FilesTable.vue:101
 msgctxt "*/*/*"
 msgid "N/A"
 msgstr "ND"
 
-#: front/src/components/manage/library/LibrariesTable.vue:48
-#: front/src/components/manage/library/UploadsTable.vue:59
-msgctxt "*/*/*"
-msgid "Name"
-msgstr "Nomo"
-
 #: front/src/components/auth/ApplicationForm.vue:9
-msgctxt "Content/Applications/Input.Label/Noun"
-msgid "Name"
-msgstr "Nomo"
-
 #: front/src/components/auth/Settings.vue:133
 #: front/src/components/manage/library/ArtistsTable.vue:39
+#: front/src/components/manage/library/LibrariesTable.vue:48
+#: front/src/components/manage/library/TagsTable.vue:41
+#: front/src/components/manage/library/UploadsTable.vue:59
 #: front/src/components/manage/moderation/AccountsTable.vue:39
-#: front/src/components/manage/moderation/DomainsTable.vue:38
-#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/manage/moderation/DomainsTable.vue:46
+#: front/src/components/mixins/Translations.vue:63
 #: front/src/components/playlists/PlaylistModal.vue:45
-#: front/src/views/admin/library/ArtistDetail.vue:98
+#: front/src/views/admin/library/ArtistDetail.vue:103
 #: front/src/views/admin/library/LibraryDetail.vue:85
+#: front/src/views/admin/library/TagDetail.vue:68
 #: front/src/views/admin/library/UploadDetail.vue:92
-#: front/src/views/admin/moderation/DomainsDetail.vue:97
-#: front/src/views/content/libraries/Form.vue:10 src/edits.js:10
-#: front/src/components/mixins/Translations.vue:54
+#: front/src/views/admin/moderation/DomainsDetail.vue:134
+#: front/src/views/content/libraries/Form.vue:10 src/edits.js:17
+#: front/src/components/mixins/Translations.vue:64
 msgctxt "*/*/*/Noun"
 msgid "Name"
 msgstr "Nomo"
 
+#: front/src/views/Notifications.vue:24 src/views/Notifications.vue:58
+msgctxt "*/*/*"
+msgid "Never"
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:88
 #: front/src/views/auth/PasswordResetConfirm.vue:14
 msgctxt "Content/Settings/Input.Label"
 msgid "New password"
 msgstr "Nova pasvorto"
 
-#: front/src/components/Sidebar.vue:173
+#: front/src/components/Sidebar.vue:177
 msgctxt "Sidebar/Player/Paragraph"
 msgid "New tracks will be appended here automatically."
 msgstr "Novaj kantoj estos aldonataj ĉi-tie aŭtomate."
@@ -2721,21 +2942,18 @@ msgctxt "Content/Library/Card.Table.Header/Short"
 msgid "New value"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:629
+#: front/src/components/audio/Player.vue:655
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Next track"
 msgstr "BaldaÅ­a kanto"
 
-#: front/src/components/Sidebar.vue:130
+#: front/src/components/Sidebar.vue:134
+#: front/src/components/manage/moderation/DomainsTable.vue:13
+#: front/src/views/admin/moderation/DomainsDetail.vue:110
 msgctxt "*/*/*"
 msgid "No"
 msgstr "Ne"
 
-#: front/src/components/Home.vue:95
-msgctxt "Content/Home/List item"
-msgid "No add-ons, no plugins : you only need a web library"
-msgstr "Nek aldonaĵoj, nek kromprogramoj: vi nur bezonas retmuzikejo"
-
 #: front/src/components/audio/Search.vue:25
 msgctxt "Content/Search/Paragraph"
 msgid "No album matched your query"
@@ -2751,6 +2969,11 @@ msgctxt "Content/Track/Table.Paragraph"
 msgid "No copyright information available for this track"
 msgstr "Nenio teksto disponeblas por tiu kanto."
 
+#: front/src/components/About.vue:25 src/components/Home.vue:25
+msgctxt "Content/Home/Paragraph"
+msgid "No description available."
+msgstr ""
+
 #: front/src/components/library/TrackDetail.vue:25
 msgctxt "Content/Track/Table.Paragraph"
 msgid "No licensing information for this track"
@@ -2761,7 +2984,7 @@ msgctxt "Content/Federation/Paragraph"
 msgid "No matching library."
 msgstr "Neniu muzikejo korespondas."
 
-#: front/src/views/Notifications.vue:28
+#: front/src/views/Notifications.vue:93
 msgctxt "Content/Notifications/Paragraph"
 msgid "No notification to show."
 msgstr "Nenio sciigoj jam."
@@ -2771,6 +2994,16 @@ msgctxt "Content/*/Paragraph"
 msgid "No results were found."
 msgstr ""
 
+#: front/src/components/About.vue:32
+msgctxt "Content/Home/Paragraph"
+msgid "No rules available."
+msgstr ""
+
+#: front/src/components/About.vue:39
+msgctxt "Content/Home/Paragraph"
+msgid "No terms available."
+msgstr ""
+
 #: front/src/components/mixins/Translations.vue:10
 #: front/src/components/mixins/Translations.vue:11
 msgctxt "Content/Settings/Dropdown"
@@ -2787,18 +3020,22 @@ msgctxt "Content/Admin/Table"
 msgid "Not used"
 msgstr "Ne uzantata"
 
-#: front/src/components/mixins/Translations.vue:100
-#: front/src/components/mixins/Translations.vue:101
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Notifications"
-msgstr "Sciigoj"
-
-#: front/src/components/Sidebar.vue:46 src/views/Notifications.vue:76
+#: front/src/components/Sidebar.vue:46
+#: src/components/mixins/Translations.vue:112
+#: front/src/views/Notifications.vue:151
+#: src/components/mixins/Translations.vue:113
 msgctxt "*/Notifications/*"
 msgid "Notifications"
 msgstr "Sciigoj"
 
-#: front/src/components/Footer.vue:47
+#: front/src/components/mixins/Translations.vue:47
+#: front/src/components/mixins/Translations.vue:48
+#, fuzzy
+msgctxt "Content/Moderation/Dropdown"
+msgid "Offensive content"
+msgstr "Aldoni muzikon"
+
+#: front/src/components/Footer.vue:55
 msgctxt "Footer/*/List item.Link"
 msgid "Official website"
 msgstr "Oficiala retejo"
@@ -2813,6 +3050,12 @@ msgctxt "Content/Library/Card.Table.Header/Short"
 msgid "Old value"
 msgstr ""
 
+#: front/src/components/About.vue:90
+#, fuzzy
+msgctxt "*/*/*/State of registrations"
+msgid "Open"
+msgstr "Malferma"
+
 #: front/src/components/manage/users/InvitationsTable.vue:20
 msgctxt "Content/Admin/Dropdown/Adjective"
 msgid "Open"
@@ -2820,27 +3063,29 @@ msgstr "Malferma"
 
 #: front/src/components/library/ImportStatusModal.vue:56
 msgctxt "Popup/Import/Table.Label/Value"
-msgid ""
-"Open a support thread (include the debug information below in your message)"
+msgid "Open a support thread (include the debug information below in your message)"
 msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:73
-#: front/src/components/library/ArtistBase.vue:84
-#: front/src/components/library/TrackBase.vue:92
+#: front/src/components/library/AlbumBase.vue:87
+#: front/src/components/library/ArtistBase.vue:99
+#: front/src/components/library/TagDetail.vue:11
+#: front/src/components/library/TrackBase.vue:103
+#: front/src/components/manage/moderation/ReportCard.vue:128
 msgctxt "Content/Moderation/Link"
 msgid "Open in moderation interface"
 msgstr "Äœisdati moderecan regulon"
 
-#: front/src/views/admin/library/AlbumDetail.vue:31
-#: front/src/views/admin/library/ArtistDetail.vue:30
-#: front/src/views/admin/library/TrackDetail.vue:30
+#: front/src/views/admin/library/AlbumDetail.vue:37
+#: front/src/views/admin/library/ArtistDetail.vue:35
+#: front/src/views/admin/library/TagDetail.vue:21
+#: front/src/views/admin/library/TrackDetail.vue:36
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open local profile"
 msgstr "Malfermi profilon"
 
-#: front/src/views/admin/library/AlbumDetail.vue:46
-#: front/src/views/admin/library/ArtistDetail.vue:45
-#: front/src/views/admin/library/TrackDetail.vue:45
+#: front/src/views/admin/library/AlbumDetail.vue:52
+#: front/src/views/admin/library/ArtistDetail.vue:50
+#: front/src/views/admin/library/TrackDetail.vue:51
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open on MusicBrainz"
 msgstr "Vidi en MusicBrainz"
@@ -2850,10 +3095,10 @@ msgctxt "Content/Moderation/Link/Verb"
 msgid "Open profile"
 msgstr "Malfermi profilon"
 
-#: front/src/views/admin/library/AlbumDetail.vue:54
-#: front/src/views/admin/library/ArtistDetail.vue:53
+#: front/src/views/admin/library/AlbumDetail.vue:60
+#: front/src/views/admin/library/ArtistDetail.vue:58
 #: front/src/views/admin/library/LibraryDetail.vue:49
-#: front/src/views/admin/library/TrackDetail.vue:53
+#: front/src/views/admin/library/TrackDetail.vue:59
 #: front/src/views/admin/library/UploadDetail.vue:50
 #: front/src/views/admin/moderation/AccountsDetail.vue:52
 msgctxt "Content/Moderation/Link/Verb"
@@ -2874,6 +3119,7 @@ msgstr "AÅ­ agordi vian regulon"
 #: src/components/library/Radios.vue:41
 #: front/src/components/manage/library/EditsCardList.vue:37
 #: front/src/components/manage/users/UsersTable.vue:17
+#: front/src/views/admin/moderation/ReportsList.vue:42
 #: front/src/views/playlists/List.vue:25
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Order"
@@ -2881,40 +3127,51 @@ msgstr "Ordo"
 
 #: front/src/components/favorites/List.vue:24
 #: src/components/library/Albums.vue:15
-#: front/src/components/library/Artists.vue:15
+#: front/src/components/library/Artists.vue:19
 #: src/components/library/Radios.vue:33
 #: front/src/components/manage/library/AlbumsTable.vue:11
 #: front/src/components/manage/library/ArtistsTable.vue:11
 #: front/src/components/manage/library/EditsCardList.vue:29
 #: front/src/components/manage/library/LibrariesTable.vue:20
+#: front/src/components/manage/library/TagsTable.vue:11
 #: front/src/components/manage/library/TracksTable.vue:11
 #: front/src/components/manage/library/UploadsTable.vue:30
 #: front/src/components/manage/moderation/AccountsTable.vue:11
-#: front/src/components/manage/moderation/DomainsTable.vue:9
+#: front/src/components/manage/moderation/DomainsTable.vue:17
 #: front/src/components/manage/users/InvitationsTable.vue:9
 #: front/src/components/manage/users/UsersTable.vue:9
+#: front/src/views/admin/moderation/ReportsList.vue:34
 #: front/src/views/content/libraries/FilesTable.vue:21
 #: front/src/views/playlists/List.vue:17
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Ordering"
 msgstr "Ordo"
 
-#: front/src/components/library/Albums.vue:23
-#: src/components/library/Artists.vue:23
+#: front/src/components/library/Albums.vue:27
+#: src/components/library/Artists.vue:27
 #: front/src/components/manage/library/AlbumsTable.vue:19
 #: front/src/components/manage/library/ArtistsTable.vue:19
 #: front/src/components/manage/library/LibrariesTable.vue:28
+#: front/src/components/manage/library/TagsTable.vue:19
 #: front/src/components/manage/library/TracksTable.vue:19
 #: front/src/components/manage/library/UploadsTable.vue:38
 #: front/src/components/manage/moderation/AccountsTable.vue:19
-#: front/src/components/manage/moderation/DomainsTable.vue:17
+#: front/src/components/manage/moderation/DomainsTable.vue:25
 #: front/src/views/content/libraries/FilesTable.vue:29
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Ordering direction"
 msgstr "Orda direkto"
 
+#: front/src/components/mixins/Translations.vue:48
+#: front/src/components/mixins/Translations.vue:49
+msgctxt "Content/Moderation/Dropdown"
+msgid "Other"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:143
 #: front/src/components/manage/users/InvitationsTable.vue:38
-msgctxt "Content/Admin/Table.Label"
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Owner"
 msgstr "Proprietulo"
 
@@ -2933,12 +3190,15 @@ msgctxt "Content/*/Hidden text/Noun"
 msgid "Pagination"
 msgstr "Paĝeco"
 
-#: front/src/components/auth/Login.vue:33 src/components/auth/Signup.vue:40
-msgctxt "Content/*/Input.Label"
+#: front/src/components/auth/LoginForm.vue:32
+#: src/components/auth/Settings.vue:291
+#: front/src/components/auth/SignupForm.vue:36
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Password"
 msgstr "Pasvorto"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:94
+#: front/src/components/auth/SubsonicTokenForm.vue:100
 msgctxt "Content/Settings/Message"
 msgid "Password updated"
 msgstr "Pasvorto aktuliginta"
@@ -2948,12 +3208,12 @@ msgctxt "Content/Signup/Card.Title"
 msgid "Password updated successfully"
 msgstr "Pasvorto sukcese aktualiginta"
 
-#: front/src/components/audio/Player.vue:628
+#: front/src/components/audio/Player.vue:654
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Pause track"
 msgstr "PaÅ­zi kanton"
 
-#: front/src/components/ShortcutsModal.vue:59
+#: front/src/components/ShortcutsModal.vue:96
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Pause/play the current track"
 msgstr "PaÅ­zi/ludi la aktualan kanton"
@@ -2982,7 +3242,7 @@ msgctxt "Content/Library/Label"
 msgid "Pending files"
 msgstr "Atendantaj dosieroj"
 
-#: front/src/components/Sidebar.vue:225
+#: front/src/components/Sidebar.vue:232
 msgctxt "Sidebar/Notifications/Hidden text"
 msgid "Pending follow requests"
 msgstr "Atendantaj petoj da sekvado"
@@ -2993,84 +3253,76 @@ msgctxt "Content/Admin/*/Noun"
 msgid "Pending review"
 msgstr "Atendantaj dosieroj"
 
-#: front/src/components/Sidebar.vue:226
+#: front/src/components/Sidebar.vue:233
 msgctxt "Sidebar/Moderation/Hidden text"
 msgid "Pending review edits"
 msgstr "Atendantaj dosieroj"
 
+#: front/src/components/auth/Settings.vue:176
 #: front/src/components/manage/users/UsersTable.vue:42
 #: front/src/views/admin/moderation/AccountsDetail.vue:166
-msgctxt "Content/Admin/Table.Label/Noun"
-msgid "Permissions"
-msgstr "Rajtoj"
-
-#: front/src/components/auth/Settings.vue:176
 msgctxt "Content/*/*/Noun"
 msgid "Permissions"
 msgstr "Rajtoj"
 
 #: front/src/components/audio/PlayButton.vue:9
-#: front/src/components/library/TrackBase.vue:26
+#: front/src/components/library/TrackBase.vue:24
 msgctxt "*/Queue/Button.Label/Short, Verb"
 msgid "Play"
 msgstr "Ludi"
 
 #: front/src/components/audio/album/Card.vue:48
-#: front/src/components/audio/artist/Card.vue:44
-#: front/src/components/library/AlbumBase.vue:20
+#: front/src/components/library/AlbumBase.vue:21
 #: front/src/components/library/AlbumDetail.vue:11
 #: src/views/playlists/Detail.vue:24
 msgctxt "Content/Queue/Button.Label/Short, Verb"
 msgid "Play all"
 msgstr "Ludi ĉiu"
 
-#: front/src/components/library/ArtistBase.vue:31
+#: front/src/components/library/ArtistBase.vue:32
 msgctxt "Content/Artist/Button.Label/Verb"
 msgid "Play all albums"
 msgstr "Ludi ĉiuj albumoj"
 
-#: front/src/components/audio/PlayButton.vue:76
+#: front/src/components/audio/PlayButton.vue:92
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play next"
 msgstr "Ludi baldaÅ­e"
 
-#: front/src/components/ShortcutsModal.vue:67
+#: front/src/components/ShortcutsModal.vue:120
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Play next track"
 msgstr "Ludi sekvan kanton"
 
-#: front/src/components/audio/PlayButton.vue:74
+#: front/src/components/audio/PlayButton.vue:90
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play now"
 msgstr "Ludi tuj"
 
-#: front/src/components/ShortcutsModal.vue:63
+#: front/src/components/ShortcutsModal.vue:116
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Play previous track"
 msgstr "Ludi antaÅ­a kanto"
 
-#: front/src/components/audio/PlayButton.vue:77
+#: front/src/components/audio/PlayButton.vue:93
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play similar songs"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:224
+#: front/src/components/Sidebar.vue:231
 msgctxt "Sidebar/Player/Hidden text"
 msgid "Play this track"
 msgstr "Ludi tiun kanton"
 
-#: front/src/components/audio/Player.vue:627
+#: front/src/components/audio/Player.vue:653
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Play track"
 msgstr "Ludi kanton"
 
-#: front/src/components/audio/PlayButton.vue:82
-msgctxt "*/Queue/Button/Title"
-msgid "Play..."
-msgstr "Ludi…"
-
-#: front/src/views/playlists/Detail.vue:91
-msgctxt "Head/Playlist/Title"
+#: front/src/components/mixins/Report.vue:66 src/views/playlists/Detail.vue:121
+#: front/src/components/mixins/Report.vue:67
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Playlist"
 msgstr "Ludlisto"
 
@@ -3107,33 +3359,30 @@ msgctxt "Content/Playlist/Dropdown.Label"
 msgid "Playlist visibility"
 msgstr "Ludlistvideblo"
 
-#: front/src/components/mixins/Translations.vue:88
-#: front/src/components/mixins/Translations.vue:89
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Playlists"
-msgstr "Ludlistoj"
-
 #: front/src/components/Sidebar.vue:71 src/components/library/Home.vue:16
-#: front/src/components/library/Library.vue:16 src/views/admin/Settings.vue:83
-#: front/src/views/admin/library/AlbumDetail.vue:173
-#: front/src/views/admin/library/ArtistDetail.vue:162
-#: front/src/views/admin/library/TrackDetail.vue:225
+#: front/src/components/library/Library.vue:16
+#: front/src/components/mixins/Translations.vue:100
+#: src/views/admin/Settings.vue:83
+#: front/src/views/admin/library/AlbumDetail.vue:179
+#: front/src/views/admin/library/ArtistDetail.vue:167
+#: front/src/views/admin/library/TrackDetail.vue:231
 #: src/views/playlists/List.vue:106
+#: front/src/components/mixins/Translations.vue:101
 msgctxt "*/*/*"
 msgid "Playlists"
 msgstr "Ludlistoj"
 
-#: front/src/components/Home.vue:56
-msgctxt "Content/Home/List item"
-msgid "Playlists? We got them"
-msgstr "Ludlistoj? Jen"
+#: front/src/components/audio/EmbedWizard.vue:9
+msgctxt "Content/Embed/Message"
+msgid "Please contact your admins and ask them to update the corresponding setting."
+msgstr ""
 
 #: front/src/components/auth/Settings.vue:79
 msgctxt "Content/Settings/Error message.List item/Call to action"
 msgid "Please double-check your password is correct"
 msgstr "Bonvolu rekontroli ke via pasvorto ĝustas"
 
-#: front/src/components/auth/Login.vue:9
+#: front/src/components/auth/LoginForm.vue:5
 msgctxt "Content/Login/Error message.List item/Call to action"
 msgid "Please double-check your username/password couple is correct"
 msgstr "Bonvolu rekontroli ke vian uzantnomo kaj pasvorto ĝustas"
@@ -3141,28 +3390,29 @@ msgstr "Bonvolu rekontroli ke vian uzantnomo kaj pasvorto ĝustas"
 #: front/src/components/auth/Settings.vue:46
 msgctxt "Content/Settings/Paragraph"
 msgid "PNG, GIF or JPG. At most 2MB. Will be downscaled to 400x400px."
+msgstr "PNG, GIF, aŭ JPG. Maksimume 2Mo. La bildo malgrandigos al 400×400 rastrumero."
+
+#: front/src/components/About.vue:72
+msgctxt "Content/About/Header/Name"
+msgid "Pod configuration"
 msgstr ""
-"PNG, GIF, aŭ JPG. Maksimume 2Mo. La bildo malgrandigos al 400×400 "
-"rastrumero."
 
-#: front/src/views/admin/library/TrackDetail.vue:137
-msgctxt "*/*/*/Noun"
+#: front/src/views/admin/library/TrackDetail.vue:143 src/edits.js:70
+msgctxt "*/*/*/Short, Noun"
 msgid "Position"
 msgstr "Paĝeco"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:118
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Prevent account or domain from triggering notifications, except from "
-"followers."
+msgid "Prevent account or domain from triggering notifications, except from followers."
 msgstr "Preventi konton aÅ­ domajno de sendi sciigoj, krom el sekvantoj."
 
-#: front/src/components/audio/EmbedWizard.vue:33
+#: front/src/components/audio/EmbedWizard.vue:43
 msgctxt "Popup/Embed/Title/Noun"
 msgid "Preview"
 msgstr "AntaÅ­vido"
 
-#: front/src/components/audio/Player.vue:626
+#: front/src/components/audio/Player.vue:652
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Previous track"
 msgstr "AntaÅ­a kanto"
@@ -3173,7 +3423,7 @@ msgctxt "Content/Settings/Dropdown/Short"
 msgid "Private"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:43
+#: front/src/views/content/remote/Card.vue:56
 msgctxt "Content/Library/Card.List item"
 msgid "Problem during scanning"
 msgstr "Eraro dum skano"
@@ -3194,14 +3444,20 @@ msgctxt "Content/Library/Tab.Title/Short"
 msgid "Processing"
 msgstr "Procedas"
 
-#: front/src/components/mixins/Translations.vue:68
-#: front/src/components/mixins/Translations.vue:69
+#: front/src/components/mixins/Translations.vue:80
+#: front/src/components/mixins/Translations.vue:81
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Profile"
 msgstr "Malfermi profilon"
 
+#: front/src/components/auth/SignupForm.vue:5
+#, fuzzy
+msgctxt "Content/Signup/Form/Paragraph"
+msgid "Public registrations are not possible on this instance. You will need an invitation code to sign up."
+msgstr "Registrigadoj fermitas je tiu instanco, vi bezonos invitkodon por registrigi."
+
 #: front/src/components/manage/moderation/AccountsTable.vue:188
-#: front/src/components/manage/moderation/DomainsTable.vue:168
+#: front/src/components/manage/moderation/DomainsTable.vue:186
 #: front/src/views/content/libraries/Quota.vue:36
 #: front/src/views/content/libraries/Quota.vue:39
 #: front/src/views/content/libraries/Quota.vue:62
@@ -3232,7 +3488,7 @@ msgctxt "Sidebar/Queue/Tab.Title/Noun"
 msgid "Queue"
 msgstr "Atendovico"
 
-#: front/src/components/audio/Player.vue:322
+#: front/src/components/audio/Player.vue:329
 msgctxt "Content/Queue/Message"
 msgid "Queue shuffled!"
 msgstr "Atendovico miksiĝis!"
@@ -3264,16 +3520,12 @@ msgstr "Äœisdatigas radion"
 
 #: front/src/components/library/Library.vue:13
 #: src/components/library/Radios.vue:142
+#: front/src/components/mixins/Translations.vue:104
+#: front/src/components/mixins/Translations.vue:105
 msgctxt "*/*/*"
 msgid "Radios"
 msgstr "Radioj"
 
-#: front/src/components/mixins/Translations.vue:92
-#: front/src/components/mixins/Translations.vue:93
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Radios"
-msgstr "Radioj"
-
 #: front/src/components/auth/ApplicationForm.vue:151
 msgctxt "Content/OAuth Scopes/Label/Verb"
 msgid "Read"
@@ -3300,15 +3552,15 @@ msgctxt "Content/Moderation/*/Noun"
 msgid "Reason"
 msgstr "Kialo"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:251
-#: front/src/views/admin/moderation/DomainsDetail.vue:179
+#: front/src/views/admin/moderation/AccountsDetail.vue:252
+#: front/src/views/admin/moderation/DomainsDetail.vue:216
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Received library follows"
 msgstr "Ricevintaj sekvadoj de muzikejo"
 
-#: front/src/components/manage/moderation/DomainsTable.vue:40
-#: front/src/components/mixins/Translations.vue:62
-#: front/src/components/mixins/Translations.vue:63
+#: front/src/components/manage/moderation/DomainsTable.vue:48
+#: front/src/components/mixins/Translations.vue:74
+#: front/src/components/mixins/Translations.vue:75
 msgctxt "Content/Moderation/*/Noun"
 msgid "Received messages"
 msgstr "Ricevintaj mesaĝoj"
@@ -3328,6 +3580,12 @@ msgctxt "Content/Home/Title"
 msgid "Recently added"
 msgstr "Novaj aldonoj"
 
+#: front/src/components/Home.vue:167
+#, fuzzy
+msgctxt "Content/Home/Title"
+msgid "Recently added albums"
+msgstr "Novaj aldonoj"
+
 #: front/src/components/library/Home.vue:11
 msgctxt "Content/Home/Title"
 msgid "Recently favorited"
@@ -3356,14 +3614,14 @@ msgctxt "Popup/*/Message.Title"
 msgid "Refresh error"
 msgstr "Äœisdatigi"
 
-#: front/src/views/admin/library/AlbumDetail.vue:50
-#: front/src/views/admin/library/ArtistDetail.vue:49
-#: front/src/views/admin/library/TrackDetail.vue:49
+#: front/src/views/admin/library/AlbumDetail.vue:56
+#: front/src/views/admin/library/ArtistDetail.vue:54
+#: front/src/views/admin/library/TrackDetail.vue:55
 msgctxt "Content/Moderation/Button/Verb"
 msgid "Refresh from remote server"
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:127
+#: front/src/views/admin/moderation/DomainsDetail.vue:164
 msgctxt "Content/Moderation/Button.Label/Verb"
 msgid "Refresh node info"
 msgstr "Aktualigi instancinformon"
@@ -3375,9 +3633,7 @@ msgstr "Aktualigi instancinformon"
 
 #: front/src/components/federation/FetchButton.vue:80
 msgctxt "Popup/*/Message.Content"
-msgid ""
-"Refresh request wasn't proceed in time by our server. It will be processed "
-"later."
+msgid "Refresh request wasn't proceed in time by our server. It will be processed later."
 msgstr ""
 
 #: front/src/components/federation/FetchButton.vue:16
@@ -3400,16 +3656,13 @@ msgctxt "Popup/*/Title"
 msgid "Refreshing object from remote…"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:9
-msgctxt "Content/Signup/Form/Paragraph"
-msgid ""
-"Registration are closed on this instance, you will need an invitation code "
-"to signup."
-msgstr ""
-"Registrigadoj fermitas je tiu instanco, vi bezonos invitkodon por "
-"registrigi."
+#: front/src/components/About.vue:86
+#, fuzzy
+msgctxt "*/*/*"
+msgid "Registrations"
+msgstr "Administrejo"
 
-#: front/src/components/manage/users/UsersTable.vue:71
+#: front/src/components/manage/users/UsersTable.vue:72
 msgctxt "Content/Admin/Table, User role"
 msgid "Regular user"
 msgstr "normala uzanto"
@@ -3434,8 +3687,8 @@ msgid "Rejected"
 msgstr "Malakceptinta"
 
 #: front/src/components/manage/library/AlbumsTable.vue:43
-#: front/src/components/mixins/Translations.vue:44 src/edits.js:28
-#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:54 src/edits.js:43
+#: front/src/components/mixins/Translations.vue:55
 msgctxt "Content/*/*/Noun"
 msgid "Release date"
 msgstr "Dato de lasta vido"
@@ -3445,6 +3698,11 @@ msgctxt "Content/Library/Paragraph"
 msgid "Remaining storage space"
 msgstr ""
 
+#: front/src/views/Notifications.vue:18 src/views/Notifications.vue:52
+msgctxt "Content/Notifications/Label"
+msgid "Remind me in:"
+msgstr ""
+
 #: front/src/views/content/remote/Home.vue:6
 msgctxt "Content/Library/Title/Noun"
 msgid "Remote libraries"
@@ -3452,12 +3710,8 @@ msgstr "Mallokaj muzikejoj"
 
 #: front/src/views/content/remote/Home.vue:7
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Remote libraries are owned by other users on the network. You can access "
-"them as long as they are public or you are granted access."
-msgstr ""
-"Mallokaj muzikejoj apartenas al aliaj uzantoj el la reto. Vi povas atingi "
-"ilin se ili estas publika aÅ­ vi estas akceptinta."
+msgid "Remote libraries are owned by other users on the network. You can access them as long as they are public or you are granted access."
+msgstr "Mallokaj muzikejoj apartenas al aliaj uzantoj el la reto. Vi povas atingi ilin se ili estas publika aÅ­ vi estas akceptinta."
 
 #: front/src/components/library/radios/Filter.vue:59
 msgctxt "Content/Radio/Button.Label/Verb"
@@ -3474,6 +3728,13 @@ msgctxt "Content/Moderation/Button.Label"
 msgid "Remove filter"
 msgstr "Forigi profilbildon"
 
+#: front/src/components/manage/moderation/DomainsTable.vue:198
+#: front/src/views/admin/moderation/DomainsDetail.vue:39
+#, fuzzy
+msgctxt "Content/Moderation/Action/Verb"
+msgid "Remove from allow-list"
+msgstr "Forigi el stelumoj"
+
 #: front/src/components/favorites/TrackFavoriteIcon.vue:26
 msgctxt "Content/Track/Icon.Tooltip/Verb"
 msgid "Remove from favorites"
@@ -3481,42 +3742,104 @@ msgstr "Forigi el stelumoj"
 
 #: front/src/views/content/libraries/Quota.vue:38
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded but yet to be processed tracks completely, adding the "
-"corresponding data to your quota."
-msgstr ""
-"Forigas elŝutatajn sed jam procezontajn kantojn, aldonante tiu datumo al via"
-" kvoto."
+msgid "Removes uploaded but yet to be processed tracks completely, adding the corresponding data to your quota."
+msgstr "Forigas elŝutatajn sed jam procezontajn kantojn, aldonante tiu datumo al via kvoto."
 
 #: front/src/views/content/libraries/Quota.vue:64
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded tracks skipped during the import processes completely, "
-"adding the corresponding data to your quota."
-msgstr ""
-"Forigas elŝutatajn preterlasinta kantojn, aldonante tiu datumo al via kvoto."
+msgid "Removes uploaded tracks skipped during the import processes completely, adding the corresponding data to your quota."
+msgstr "Forigas elŝutatajn preterlasinta kantojn, aldonante tiu datumo al via kvoto."
 
 #: front/src/views/content/libraries/Quota.vue:90
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded tracks that could not be processed by the server "
-"completely, adding the corresponding data to your quota."
+msgid "Removes uploaded tracks that could not be processed by the server completely, adding the corresponding data to your quota."
+msgstr "Forigas elŝutatajn kantojn ke la servilo ne povis procezi, aldonante tiu datumo al via kvoto."
+
+#: front/src/components/audio/PlayButton.vue:94
+#, fuzzy
+msgctxt "*/Queue/Dropdown/Button/Title"
+msgid "Replace current queue"
+msgstr "Aldoni al aktuala atendovico"
+
+#: front/src/components/mixins/Report.vue:6 src/components/mixins/Report.vue:7
+msgctxt "*/Moderation/*/Verb"
+msgid "Report @%{ username }…"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:5
+msgctxt "Content/Moderation/Card/Short"
+msgid "Report %{ id }"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:139
+msgctxt "*/Moderation/Message"
+msgid "Report successfully submitted, thank you"
+msgstr ""
+
+#: front/src/components/mixins/Report.vue:36
+#: src/components/mixins/Report.vue:37
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this album…"
+msgstr "Ludi tiun kanton"
+
+#: front/src/components/mixins/Report.vue:50
+#: src/components/mixins/Report.vue:51
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this artist…"
+msgstr "Ludi tiun kanton"
+
+#: front/src/components/mixins/Report.vue:72
+#: src/components/mixins/Report.vue:73
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this library…"
+msgstr "Forigi tiun muzikejon?"
+
+#: front/src/components/mixins/Report.vue:61
+#: src/components/mixins/Report.vue:62
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this playlist…"
+msgstr "Aldoni al ĉi tiu ludlisto"
+
+#: front/src/components/mixins/Report.vue:23
+#: src/components/mixins/Report.vue:24
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this track…"
+msgstr "Ludi tiun kanton"
+
+#: front/src/components/audio/PlayButton.vue:95
+msgctxt "*/Moderation/*/Button/Label,Verb"
+msgid "Report…"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:117
+msgctxt "Content/*/*/Short"
+msgid "Reported object"
+msgstr ""
+
+#: front/src/views/admin/moderation/Base.vue:5
+#: front/src/views/admin/moderation/ReportsList.vue:3
+#: front/src/views/admin/moderation/ReportsList.vue:208
+msgctxt "*/Moderation/*/Noun"
+msgid "Reports"
 msgstr ""
-"Forigas elŝutatajn kantojn ke la servilo ne povis procezi, aldonante tiu "
-"datumo al via kvoto."
 
-#: front/src/components/auth/SubsonicTokenForm.vue:33
-#: front/src/components/auth/SubsonicTokenForm.vue:36
+#: front/src/components/auth/SubsonicTokenForm.vue:38
+#: front/src/components/auth/SubsonicTokenForm.vue:41
 msgctxt "*/Settings/Button.Label/Verb"
 msgid "Request a new password"
 msgstr "Demandi novan pasvorton"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:34
+#: front/src/components/auth/SubsonicTokenForm.vue:39
 msgctxt "Popup/Settings/Title"
 msgid "Request a new Subsonic API password?"
 msgstr "Demandi novan Subsonic API pasvorton?"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:42
+#: front/src/components/auth/SubsonicTokenForm.vue:47
 msgctxt "Content/Settings/Button.Label/Verb"
 msgid "Request a password"
 msgstr "Demandi pasvorton"
@@ -3526,35 +3849,52 @@ msgctxt "Popup/*/Loading.Title"
 msgid "Requesting a fetch…"
 msgstr ""
 
-#: front/src/components/library/EditForm.vue:82
+#: front/src/components/library/EditForm.vue:94
 msgctxt "Content/Library/Button.Label"
-msgid "Reset to initial value: %{ value }"
+msgid "Reset to initial value"
 msgstr ""
 
-#: front/src/components/auth/Login.vue:35 src/views/auth/PasswordReset.vue:4
-#: front/src/views/auth/PasswordReset.vue:53
+#: front/src/components/auth/LoginForm.vue:34
+#: src/views/auth/PasswordReset.vue:4 front/src/views/auth/PasswordReset.vue:53
 msgctxt "*/Login/*/Verb"
 msgid "Reset your password"
 msgstr "Renuligadi vian pasvorton"
 
+#: front/src/components/manage/moderation/ReportCard.vue:83
+#, fuzzy
+msgctxt "Content/*/*/Noun"
+msgid "Resolution date"
+msgstr "Kreodato"
+
+#: front/src/components/manage/moderation/ReportCard.vue:218
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Resolve"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:62
+#: front/src/views/admin/moderation/ReportsList.vue:20
+msgctxt "Content/*/*/Short"
+msgid "Resolved"
+msgstr ""
+
 #: front/src/views/content/libraries/FilesTable.vue:223
 msgctxt "Content/Library/Dropdown/Verb"
 msgid "Restart import"
 msgstr "Rekomenci importadon"
 
+#: front/src/components/library/EditForm.vue:31
+msgctxt "Content/Library/Button.Label"
+msgid "Restrict to unreviewed edits"
+msgstr ""
+
 #: front/src/components/favorites/List.vue:39
-#: src/components/library/Albums.vue:30
-#: front/src/components/library/Artists.vue:30
+#: src/components/library/Albums.vue:34
+#: front/src/components/library/Artists.vue:34
 #: src/components/library/Radios.vue:52 front/src/views/playlists/List.vue:32
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Results per page"
 msgstr "Rezultoj per paĝo"
 
-#: front/src/components/library/EditForm.vue:31
-msgctxt "Content/Library/Button.Label"
-msgid "Retrict to unreviewed edits"
-msgstr ""
-
 #: front/src/views/auth/EmailConfirm.vue:17
 msgctxt "Content/Signup/Link/Verb"
 msgid "Return to login"
@@ -3585,52 +3925,54 @@ msgctxt "Content/Moderation/Card.Title/Noun"
 msgid "Rule"
 msgstr "Regulo"
 
-#: front/src/components/admin/SettingsGroup.vue:67
+#: front/src/components/About.vue:28 src/components/About.vue:56
+#, fuzzy
+msgctxt "Content/About/Header"
+msgid "Rules"
+msgstr "Regulo"
+
+#: front/src/components/admin/SettingsGroup.vue:75
 #: front/src/components/library/radios/Builder.vue:34
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Save"
 msgstr "Konservi"
 
-#: front/src/views/content/remote/Card.vue:175
+#: front/src/views/content/remote/Card.vue:203
 msgctxt "Content/Library/Message"
 msgid "Scan launched"
 msgstr "Skano komencis"
 
-#: front/src/views/content/remote/Card.vue:67
+#: front/src/views/content/remote/Card.vue:80
 msgctxt "Content/Library/Card.Button.Label/Verb"
 msgid "Scan now"
 msgstr "Skani nun"
 
-#: front/src/views/content/remote/Card.vue:35
+#: front/src/views/content/remote/Card.vue:48
 msgctxt "Content/Library/Card.List item"
 msgid "Scan pending"
 msgstr "Foste"
 
-#: front/src/views/content/remote/Card.vue:176
+#: front/src/views/content/remote/Card.vue:204
 msgctxt "Content/Library/Message"
 msgid "Scan skipped (previous scan is too recent)"
 msgstr "Preterlasis skanon (antaÅ­a skano tro junas)"
 
-#: front/src/views/content/remote/Card.vue:47
+#: front/src/views/content/remote/Card.vue:60
 msgctxt "Content/Library/Card.List item"
 msgid "Scanned"
 msgstr "Skana"
 
-#: front/src/views/content/remote/Card.vue:51
+#: front/src/views/content/remote/Card.vue:64
 msgctxt "Content/Library/Card.List item"
 msgid "Scanned with errors"
 msgstr "Malsukcese skanis"
 
-#: front/src/views/content/remote/Card.vue:39
+#: front/src/views/content/remote/Card.vue:52
 msgctxt "Content/Library/Card.List item"
 msgid "Scanning… (%{ progress }%)"
 msgstr "Skanas… (%{progress}%)"
 
 #: front/src/components/auth/ApplicationForm.vue:22
-msgctxt "Content/Applications/Input.Label/Noun"
-msgid "Scopes"
-msgstr ""
-
 #: front/src/components/auth/Settings.vue:226
 msgctxt "Content/*/*/Noun"
 msgid "Scopes"
@@ -3643,12 +3985,14 @@ msgstr ""
 #: front/src/components/manage/library/ArtistsTable.vue:5
 #: front/src/components/manage/library/EditsCardList.vue:6
 #: front/src/components/manage/library/LibrariesTable.vue:5
+#: front/src/components/manage/library/TagsTable.vue:5
 #: front/src/components/manage/library/TracksTable.vue:5
 #: front/src/components/manage/library/UploadsTable.vue:5
 #: front/src/components/manage/moderation/AccountsTable.vue:5
 #: front/src/components/manage/moderation/DomainsTable.vue:5
 #: front/src/components/manage/users/InvitationsTable.vue:5
 #: front/src/components/manage/users/UsersTable.vue:5
+#: front/src/views/admin/moderation/ReportsList.vue:8
 #: front/src/views/content/libraries/FilesTable.vue:5
 #: src/views/playlists/List.vue:13
 msgctxt "Content/Search/Input.Label/Noun"
@@ -3661,6 +4005,7 @@ msgid "Search a remote library"
 msgstr "Serĉi mallokan muzikejon"
 
 #: front/src/components/manage/library/EditsCardList.vue:211
+#: front/src/views/admin/moderation/ReportsList.vue:207
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by account, summary, domain…"
 msgstr "Serĉu per titolo, artisto, domajno…"
@@ -3695,7 +4040,13 @@ msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by domain, username, bio…"
 msgstr "Serĉu per domajno, uzantnomo, biografio…"
 
-#: front/src/components/manage/moderation/DomainsTable.vue:151
+#: front/src/components/manage/library/TagsTable.vue:165
+#, fuzzy
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by name"
+msgstr "Serĉu per nomo…"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:168
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by name…"
 msgstr "Serĉu per nomo…"
@@ -3710,12 +4061,12 @@ msgctxt "Content/Admin/Input.Placeholder/Verb"
 msgid "Search by username, e-mail address, code…"
 msgstr "Serĉu per uzantnomo, retpoŝtdreso, kodo…"
 
-#: front/src/components/manage/users/UsersTable.vue:163
+#: front/src/components/manage/users/UsersTable.vue:164
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by username, e-mail address, name…"
 msgstr "Serĉu per uzantnomo, retpoŝtadreso, nomo…"
 
-#: front/src/components/audio/SearchBar.vue:20
+#: front/src/components/audio/SearchBar.vue:27
 msgctxt "Sidebar/Search/Input.Placeholder"
 msgid "Search for artists, albums, tracks…"
 msgstr "Serĉu artistoj, albumoj, kantoj…"
@@ -3725,16 +4076,30 @@ msgctxt "Content/Search/Title"
 msgid "Search for some music"
 msgstr "Serĉi muzikon"
 
-#: front/src/components/library/AlbumBase.vue:57
-#: front/src/components/library/ArtistBase.vue:68
-#: front/src/components/library/TrackBase.vue:76
+#: front/src/components/library/TagsSelector.vue:6
+#, fuzzy
+msgctxt "*/Dropdown/Placeholder/Verb"
+msgid "Search for tags…"
+msgstr "Serĉu per nomo…"
+
+#: front/src/components/library/AlbumBase.vue:66
+#: front/src/components/library/ArtistBase.vue:77
+#: front/src/components/library/TrackBase.vue:82
+#, fuzzy
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Search on Discogs"
+msgstr "Serĉi muzikon"
+
+#: front/src/components/library/AlbumBase.vue:58
+#: front/src/components/library/ArtistBase.vue:69
+#: front/src/components/library/TrackBase.vue:74
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Search on Wikipedia"
 msgstr "Serĉi je Vikipedio"
 
 #: front/src/components/library/Library.vue:35
-#: src/views/admin/library/Base.vue:32
-#: front/src/views/admin/moderation/Base.vue:22
+#: src/views/admin/library/Base.vue:35
+#: front/src/views/admin/moderation/Base.vue:44
 #: src/views/admin/users/Base.vue:21 front/src/views/content/Base.vue:19
 msgctxt "Menu/*/Hidden text"
 msgid "Secondary menu"
@@ -3745,6 +4110,26 @@ msgctxt "Content/Admin/Menu.Title"
 msgid "Sections"
 msgstr "Sekcioj"
 
+#: front/src/components/ShortcutsModal.vue:108
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek backwards 30s"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:100
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek backwards 5s"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:112
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek forwards 30s"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:104
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek forwards 5s"
+msgstr ""
+
 #: front/src/components/library/radios/Builder.vue:46
 msgctxt "Content/Radio/Dropdown.Placeholder/Verb"
 msgid "Select a filter"
@@ -3763,9 +4148,14 @@ msgctxt "Content/*/Link/Verb"
 msgid "Select only current page"
 msgstr "Elekti nur la aktualan uzon"
 
-#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:108
-#: front/src/components/manage/users/UsersTable.vue:181
-#: front/src/views/admin/moderation/AccountsDetail.vue:506
+#: front/src/components/Home.vue:43
+msgctxt "Content/Home/Link"
+msgid "Server rules"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:112
+#: front/src/components/manage/users/UsersTable.vue:182
+#: front/src/views/admin/moderation/AccountsDetail.vue:526
 msgctxt "*/*/*/Noun"
 msgid "Settings"
 msgstr "Agordoj"
@@ -3787,18 +4177,25 @@ msgstr "Diskonigi ligilon"
 
 #: front/src/views/content/libraries/Detail.vue:15
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Share this link with other users so they can request access to your library."
-msgstr ""
-"Diskonigu tiu ligilo kun aliaj uzantoj, do ili povas peti atingon al via "
-"muzikejo."
+msgid "Share this link with other users so they can request access to your library."
+msgstr "Diskonigu tiu ligilo kun aliaj uzantoj, do ili povas peti atingon al via muzikejo."
 
 #: front/src/views/content/libraries/Detail.vue:14
-#: front/src/views/content/remote/Card.vue:77
+#: front/src/views/content/remote/Card.vue:90
 msgctxt "Content/Library/Title"
 msgid "Sharing link"
 msgstr "Diskoniga ligilo"
 
+#: front/src/components/audio/EmbedWizard.vue:5
+msgctxt "Content/Embed/Message"
+msgid "Sharing will not work because this pod doesn't allow anonymous users to access content."
+msgstr ""
+
+#: front/src/components/About.vue:156
+msgctxt "*/*/*/Verb"
+msgid "Show"
+msgstr ""
+
 #: front/src/components/audio/album/Card.vue:38
 #, fuzzy
 msgctxt "Content/Album/Card.Link/Verb"
@@ -3807,11 +4204,11 @@ msgid_plural "Show %{ count } more tracks"
 msgstr[0] "Afiŝi %{count} kanto"
 msgstr[1] "Afŝi %{count} kantoj"
 
-#: front/src/components/audio/artist/Card.vue:30
+#: front/src/components/tags/List.vue:11
 #, fuzzy
-msgctxt "Content/Artist/Card.Link"
-msgid "Show 1 more album"
-msgid_plural "Show %{ count } more albums"
+msgctxt "Content/*/Button/Label/Verb"
+msgid "Show 1 more tag"
+msgid_plural "Show %{ count } more tags"
 msgstr[0] "Afiŝi unu alian albumon"
 msgstr[1] "Afiŝi %{count} aliajn albumojn"
 
@@ -3820,17 +4217,28 @@ msgctxt "Content/Library/Button.Label"
 msgid "Show all edits"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:42
+#: front/src/components/ShortcutsModal.vue:60
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Show available keyboard shortcuts"
 msgstr "Afiŝi disponeblajn fulmoklavojn"
 
-#: front/src/views/Notifications.vue:7
+#: front/src/components/common/ExpandableDiv.vue:7
+msgctxt "*/*/Button,Label"
+msgid "Show less"
+msgstr ""
+
+#: front/src/components/common/ExpandableDiv.vue:8
+#, fuzzy
+msgctxt "*/*/Button,Label"
+msgid "Show more"
+msgstr "Afiŝi unu alian albumon"
+
+#: front/src/views/Notifications.vue:72
 msgctxt "Content/Notifications/Form.Label/Verb"
 msgid "Show read notifications"
 msgstr "Afiŝi mallegintajn sciigojn"
 
-#: front/src/components/forms/PasswordInput.vue:26
+#: front/src/components/forms/PasswordInput.vue:42
 msgctxt "Content/Settings/Button.Tooltip/Verb"
 msgid "Show/hide password"
 msgstr "Afiŝi/kaŝi pasvorton"
@@ -3839,56 +4247,64 @@ msgstr "Afiŝi/kaŝi pasvorton"
 #: front/src/components/manage/library/ArtistsTable.vue:84
 #: front/src/components/manage/library/EditsCardList.vue:72
 #: front/src/components/manage/library/LibrariesTable.vue:110
+#: front/src/components/manage/library/TagsTable.vue:79
 #: front/src/components/manage/library/TracksTable.vue:95
 #: front/src/components/manage/library/UploadsTable.vue:144
 #: front/src/components/manage/moderation/AccountsTable.vue:88
-#: front/src/components/manage/moderation/DomainsTable.vue:74
+#: front/src/components/manage/moderation/DomainsTable.vue:85
 #: front/src/components/manage/users/InvitationsTable.vue:76
-#: front/src/components/manage/users/UsersTable.vue:87
+#: front/src/components/manage/users/UsersTable.vue:88
 #: front/src/views/content/libraries/FilesTable.vue:117
 msgctxt "Content/*/Paragraph"
 msgid "Showing results %{ start }-%{ end } on %{ total }"
 msgstr "Afiŝas rezultoj de %{start} al %{end} de %{total}"
 
-#: front/src/components/ShortcutsModal.vue:83
+#: front/src/components/ShortcutsModal.vue:140
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Shuffle queue"
 msgstr "Miksi atendocivo"
 
-#: front/src/components/audio/Player.vue:641
+#: front/src/components/audio/Player.vue:667
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Shuffle your queue"
 msgstr "Miksi vian atendovico"
 
-#: front/src/components/auth/Signup.vue:97
+#: front/src/components/Home.vue:103
+#, fuzzy
+msgctxt "*/Signup/Title"
+msgid "Sign up"
+msgstr "Registriĝi"
+
+#: front/src/views/auth/Signup.vue:37
 msgctxt "*/Signup/Title"
 msgid "Sign Up"
 msgstr "Registriĝi"
 
+#: front/src/components/Home.vue:107
+msgctxt "Content/Home/Paragraph"
+msgid "Sign up now to keep a track of your favorites, create playlists, discover new content and much more!"
+msgstr ""
+
 #: front/src/components/manage/users/UsersTable.vue:40
 msgctxt "Content/Admin/Table.Label/Short, Noun (Value is a date)"
 msgid "Sign-up"
 msgstr "Registriĝi"
 
-#: front/src/components/mixins/Translations.vue:57
-#: front/src/views/admin/moderation/AccountsDetail.vue:197
-#: front/src/components/mixins/Translations.vue:58
+#: front/src/components/mixins/Translations.vue:69
+#: front/src/views/admin/moderation/AccountsDetail.vue:198
+#: front/src/components/mixins/Translations.vue:70
 msgctxt "Content/Admin/Table.Label/Noun"
 msgid "Sign-up date"
 msgstr "Registrada dato"
 
-#: front/src/components/manage/library/UploadsTable.vue:65
-#: front/src/views/admin/library/UploadDetail.vue:219
-msgctxt "Content/*/*/Noun"
-msgid "Size"
-msgstr "Grando"
-
 #: front/src/components/library/FileUpload.vue:94
 #: front/src/components/library/TrackDetail.vue:39
-#: front/src/components/mixins/Translations.vue:54
+#: front/src/components/manage/library/UploadsTable.vue:65
+#: front/src/components/mixins/Translations.vue:66
+#: front/src/views/admin/library/UploadDetail.vue:219
 #: front/src/views/content/libraries/FilesTable.vue:61
-#: front/src/components/mixins/Translations.vue:55
-msgctxt "Content/Library/*/in MB"
+#: front/src/components/mixins/Translations.vue:67
+msgctxt "Content/*/*/Noun"
 msgid "Size"
 msgstr "Grando"
 
@@ -3905,7 +4321,7 @@ msgctxt "Content/Library/Label"
 msgid "Skipped files"
 msgstr "Preterlasintaj dosieroj"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:89
+#: front/src/views/admin/moderation/DomainsDetail.vue:126
 msgctxt "Content/Moderation/Table.Label"
 msgid "Software"
 msgstr "Aplikaĵo"
@@ -3920,93 +4336,65 @@ msgctxt "Content/*/Paragraph"
 msgid "Sorry, the page you asked for does not exist:"
 msgstr "Pardonon, la paĝo vi petis ne ekzistas:"
 
-#: front/src/components/Footer.vue:49
+#: front/src/components/Footer.vue:57
 msgctxt "Footer/*/List item.Link"
 msgid "Source code"
 msgstr "Fontkodo"
 
 #: front/src/components/auth/Profile.vue:23
-#: front/src/components/manage/users/UsersTable.vue:70
+#: front/src/components/manage/users/UsersTable.vue:71
 msgctxt "Content/Profile/User role"
 msgid "Staff member"
 msgstr "Skipano"
 
-#: front/src/components/audio/PlayButton.vue:23
+#: front/src/components/audio/PlayButton.vue:27
 #: src/components/radios/Button.vue:4
 msgctxt "*/Queue/Button.Label/Short, Verb"
 msgid "Start radio"
 msgstr "Stopi radion"
 
-#: front/src/views/admin/Settings.vue:86
-msgctxt "Content/Admin/Menu"
-msgid "Statistics"
+#: front/src/components/About.vue:170 src/components/Home.vue:53
+#: front/src/views/admin/Settings.vue:87
+#, fuzzy
+msgctxt "Content/Home/Header"
+msgid "Statistics"
 msgstr "Statistikoj"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:490
+#: front/src/views/admin/moderation/AccountsDetail.vue:510
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this account"
-msgstr ""
-"Statistikoj estas kalkula el konata aktiveco kaj datumoj de via instanco, "
-"kaj ne kongruas la generalan aktivecon de tiu konto"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this account"
+msgstr "Statistikoj estas kalkula el konata aktiveco kaj datumoj de via instanco, kaj ne kongruas la generalan aktivecon de tiu konto"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:371
+#: front/src/views/admin/moderation/DomainsDetail.vue:418
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this domain"
-msgstr ""
-"Statistikoj estas kalkula el konata aktiveco kaj datumoj de via instanco, "
-"kaj ne kongruas la generalan aktivecon de tiu domajno"
-
-#: front/src/views/admin/library/AlbumDetail.vue:329
-#: front/src/views/admin/library/ArtistDetail.vue:328
-#: front/src/views/admin/library/LibraryDetail.vue:316
-#: front/src/views/admin/library/TrackDetail.vue:371
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this domain"
+msgstr "Statistikoj estas kalkula el konata aktiveco kaj datumoj de via instanco, kaj ne kongruas la generalan aktivecon de tiu domajno"
+
+#: front/src/views/admin/library/AlbumDetail.vue:346
+#: front/src/views/admin/library/ArtistDetail.vue:345
+#: front/src/views/admin/library/LibraryDetail.vue:356
+#: front/src/views/admin/library/TagDetail.vue:210
+#: front/src/views/admin/library/TrackDetail.vue:389
 #: front/src/views/admin/library/UploadDetail.vue:335
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this object"
-msgstr ""
-"Statistikoj estas kalkula el konata aktiveco kaj datumoj de via instanco, "
-"kaj ne kongruas la generalan aktivecon de tiu konto"
-
-#: front/src/views/admin/moderation/DomainsDetail.vue:115
-msgctxt "Content/Moderation/Table.Label (Value is Error message)"
-msgid "Status"
-msgstr "Stato"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this object"
+msgstr "Statistikoj estas kalkula el konata aktiveco kaj datumoj de via instanco, kaj ne kongruas la generalan aktivecon de tiu konto"
 
 #: front/src/components/library/FileUpload.vue:95
-msgctxt "Content/Library/Table.Label (Value is Uploading/Uploaded/Error)"
-msgid "Status"
-msgstr "Stato"
-
-#: front/src/views/content/libraries/Detail.vue:28
-msgctxt "Content/Library.Federation/Table.Label (Value is Approved/Rejected)"
-msgid "Status"
-msgstr "Stato"
-
+#: front/src/components/manage/library/EditsCardList.vue:12
+#: front/src/components/manage/moderation/ReportCard.vue:57
 #: front/src/components/manage/users/InvitationsTable.vue:17
 #: front/src/components/manage/users/InvitationsTable.vue:39
-msgctxt "Content/Admin/*/Noun (Value is Used/Not used)"
-msgid "Status"
-msgstr "Stato"
-
 #: front/src/components/manage/users/UsersTable.vue:43
-msgctxt "Content/Admin/Table.Label/Noun (Value is Regular user/Admin)"
-msgid "Status"
-msgstr "Stato"
-
-#: front/src/components/manage/library/EditsCardList.vue:12
-msgctxt ""
-"Content/Search/Dropdown.Label (Value is All/Pending "
-"review/Approved/Rejected)"
+#: front/src/views/admin/moderation/DomainsDetail.vue:152
+#: front/src/views/admin/moderation/ReportsList.vue:14
+#: front/src/views/content/libraries/Detail.vue:28
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Status"
 msgstr "Stato"
 
-#: front/src/components/Sidebar.vue:174 src/components/radios/Button.vue:3
+#: front/src/components/Sidebar.vue:178 src/components/radios/Button.vue:3
 msgctxt "*/Player/Button.Label/Short, Verb"
 msgid "Stop radio"
 msgstr "Stopi radion"
@@ -4016,7 +4404,7 @@ msgctxt "*/*/Button.Label/Verb"
 msgid "Submit"
 msgstr "Submeti"
 
-#: front/src/components/library/EditForm.vue:98
+#: front/src/components/library/EditForm.vue:110
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Submit and apply edit"
 msgstr ""
@@ -4026,12 +4414,24 @@ msgctxt "Content/Library/Button.Label"
 msgid "Submit another edit"
 msgstr ""
 
-#: front/src/components/library/EditForm.vue:99
+#: front/src/components/moderation/ReportModal.vue:64
+#, fuzzy
+msgctxt "Popup/*/Button.Label"
+msgid "Submit report"
+msgstr "Submeti"
+
+#: front/src/components/library/EditForm.vue:111
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Submit suggestion"
 msgstr ""
 
-#: front/src/views/admin/Settings.vue:85
+#: front/src/components/manage/moderation/ReportCard.vue:17
+#, fuzzy
+msgctxt "Content/Moderation/*"
+msgid "Submitted by"
+msgstr "Submeti"
+
+#: front/src/views/admin/Settings.vue:86
 msgctxt "Content/Admin/Menu"
 msgid "Subsonic"
 msgstr "Subsono"
@@ -4071,16 +4471,21 @@ msgctxt "Content/Library/Tab.Title/Short"
 msgid "Summary"
 msgstr "Resumo"
 
-#: front/src/components/library/EditForm.vue:87
+#: front/src/components/library/EditForm.vue:99
 msgctxt "*/*/*"
 msgid "Summary (optional)"
 msgstr ""
 
-#: front/src/components/Footer.vue:39
+#: front/src/components/Footer.vue:47
 msgctxt "Footer/*/Listitem.Link"
 msgid "Support forum"
 msgstr "Helpretejo"
 
+#: front/src/views/Notifications.vue:10
+msgctxt "Content/Notifications/Header"
+msgid "Support this Funkwhale pod"
+msgstr ""
+
 #: front/src/components/library/FileUpload.vue:85
 msgctxt "Content/Library/Paragraph"
 msgid "Supported extensions: %{ extensions }"
@@ -4091,24 +4496,47 @@ msgctxt "Content/Playlist/Paragraph"
 msgid "Syncing changes to server…"
 msgstr "Sinkronigas ŝanĝojn al servilo…"
 
-#: front/src/components/audio/EmbedWizard.vue:25
+#: front/src/components/audio/SearchBar.vue:35
+msgctxt "*/*/*/Noun"
+msgid "Tag"
+msgstr ""
+
+#: front/src/views/admin/library/TagDetail.vue:61
+#, fuzzy
+msgctxt "Content/Moderation/Title"
+msgid "Tag data"
+msgstr "Nomo de kanto"
+
+#: front/src/components/library/Albums.vue:23
+#: src/components/library/Artists.vue:15
+#: front/src/views/admin/library/Base.vue:23
+#: src/views/admin/library/TagsList.vue:24 front/src/edits.js:24
+#: src/edits.js:50 src/edits.js:91 src/entities.js:120
+msgctxt "*/*/*/Noun"
+msgid "Tags"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:44
+#: front/src/components/mixins/Translations.vue:45
+#, fuzzy
+msgctxt "Content/Moderation/Dropdown"
+msgid "Takedown request"
+msgstr "Atendantaj petoj da sekvado"
+
+#: front/src/components/About.vue:35 src/components/About.vue:61
+msgctxt "Content/About/Header"
+msgid "Terms and privacy policy"
+msgstr ""
+
+#: front/src/components/audio/EmbedWizard.vue:35
 #: front/src/components/common/CopyInput.vue:3
 msgctxt "Content/*/Paragraph"
 msgid "Text copied to clipboard!"
 msgstr "Kopiis teksto al tondujo!"
 
-#: front/src/components/Home.vue:26
-msgctxt "Content/Home/Paragraph"
-msgid ""
-"That's simple: we loved Grooveshark and we want to build something even "
-"better."
-msgstr "Simplas: ni amis Grooveshark kaj ni volas konstrui iu plue bona."
-
-#: front/src/views/admin/library/AlbumDetail.vue:75
+#: front/src/views/admin/library/AlbumDetail.vue:81
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The album will be removed, as well as associated uploads, tracks, favorites "
-"and listening history. This action is irreversible."
+msgid "The album will be removed, as well as associated uploads, tracks, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/components/auth/Authorize.vue:39
@@ -4116,18 +4544,15 @@ msgctxt "Content/Auth/Paragraph"
 msgid "The application is also requesting the following unknown permissions:"
 msgstr ""
 
-#: front/src/views/admin/library/ArtistDetail.vue:74
+#: front/src/views/admin/library/ArtistDetail.vue:79
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The artist will be removed, as well as associated uploads, tracks, albums, "
-"favorites and listening history. This action is irreversible."
+msgid "The artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible."
 msgstr ""
 
-#: front/src/components/Footer.vue:53
+#: front/src/components/Footer.vue:61
 msgctxt "Footer/*/List item.Link"
 msgid "The funkwhale logo was kindly designed and provided by Francis Gading."
-msgstr ""
-"La emblemo de Funkwhale estis dizajni kaj disponigi je Francis Gading."
+msgstr "La emblemo de Funkwhale estis dizajni kaj disponigi je Francis Gading."
 
 #: front/src/components/SetInstanceModal.vue:8
 msgctxt "Popup/Instance/Error message.List item"
@@ -4136,22 +4561,17 @@ msgstr ""
 
 #: front/src/views/content/libraries/Form.vue:34
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"The library and all its tracks will be deleted. This can not be undone."
+msgid "The library and all its tracks will be deleted. This can not be undone."
 msgstr "La muzikejo kaj ĉiuj ĝiaj kantoj forigos. Ne povos malfari."
 
 #: front/src/views/admin/library/LibraryDetail.vue:61
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The library will be removed, as well as associated uploads, and follows. "
-"This action is irreversible."
+msgid "The library will be removed, as well as associated uploads, and follows. This action is irreversible."
 msgstr ""
 
 #: front/src/components/library/ImportStatusModal.vue:140
 msgctxt "Popup/Import/Error.Label"
-msgid ""
-"The metadata included in the file is invalid or some mandatory fields are "
-"missing."
+msgid "The metadata included in the file is invalid or some mandatory fields are missing."
 msgstr ""
 
 #: front/src/components/library/FileUpload.vue:38
@@ -4164,13 +4584,16 @@ msgctxt "Sidebar/Player/Error message.Paragraph"
 msgid "The next track will play automatically in a few seconds…"
 msgstr "La sekva kanto ludos aŭtomate je kelkajn sekundoj…"
 
-#: front/src/components/Home.vue:116
-msgctxt "Content/Home/List item"
-msgid ""
-"The plaform is free and open-source, you can install it and modify it "
-"without worries"
+#: front/src/components/manage/moderation/NotesThread.vue:27
+#, fuzzy
+msgctxt "Content/Moderation/Paragraph"
+msgid "The note will be removed. This action is irreversible."
+msgstr "Tiu akto ne estas malfaronta."
+
+#: front/src/components/manage/moderation/ReportCard.vue:120
+msgctxt "Content/Moderation/Message"
+msgid "The object associated with this report was deleted."
 msgstr ""
-"La platformo estas libera kaj malfermitkoda, vi povas instali ĝin malzorge"
 
 #: front/src/components/playlists/Form.vue:14
 msgctxt "Content/Playlist/Error message.Title"
@@ -4184,46 +4607,43 @@ msgstr ""
 
 #: front/src/components/federation/FetchButton.vue:13
 msgctxt "Popup/*/Message.Content"
-msgid ""
-"The remote server answered, but returned data was unsupported by Funkwhale."
+msgid "The remote server answered, but returned data was unsupported by Funkwhale."
 msgstr ""
 
 #: front/src/components/federation/FetchButton.vue:44
 msgctxt "*/*/Error"
-msgid "The remote server didn't answered fast enough"
+msgid "The remote server didn't respond quickly enough"
 msgstr ""
 
 #: front/src/components/federation/FetchButton.vue:50
 msgctxt "*/*/Error"
-msgid "The return server returned invalid JSON or JSON-LD data"
+msgid "The remote server returned invalid JSON or JSON-LD data"
 msgstr ""
 
 #: front/src/components/manage/library/AlbumsTable.vue:189
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected albums will be removed, as well as associated tracks, uploads, "
-"favorites and listening history. This action is irreversible."
+msgid "The selected albums will be removed, as well as associated tracks, uploads, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/components/manage/library/ArtistsTable.vue:179
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected artist will be removed, as well as associated uploads, tracks, "
-"albums, favorites and listening history. This action is irreversible."
+msgid "The selected artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/components/manage/library/LibrariesTable.vue:206
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected library will be removed, as well as associated uploads and "
-"follows. This action is irreversible."
+msgid "The selected library will be removed, as well as associated uploads and follows. This action is irreversible."
 msgstr ""
 
+#: front/src/components/manage/library/TagsTable.vue:180
+#, fuzzy
+msgctxt "Popup/*/Paragraph"
+msgid "The selected tag will be removed and unlinked with existing content, if any. This action is irreversible."
+msgstr "Tiu akto ne estas malfaronta."
+
 #: front/src/components/manage/library/TracksTable.vue:189
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected tracks will be removed, as well as associated uploads, "
-"favorites and listening history. This action is irreversible."
+msgid "The selected tracks will be removed, as well as associated uploads, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/components/manage/library/UploadsTable.vue:256
@@ -4243,10 +4663,15 @@ msgstr "La Subsona API ne disponeblas en tiu Funkwhale instanco."
 
 #: front/src/components/library/EditCard.vue:96
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"The suggestion will be completely removed, this action is irreversible."
+msgid "The suggestion will be completely removed, this action is irreversible."
 msgstr ""
 
+#: front/src/views/admin/library/TagDetail.vue:44
+#, fuzzy
+msgctxt "Content/Moderation/Paragraph"
+msgid "The tag will be removed and unlinked from any existing entity. This action is irreversible."
+msgstr "Tiu akto ne estas malfaronta."
+
 #: front/src/components/playlists/PlaylistModal.vue:34
 msgctxt "Popup/Playlist/Error message.Title"
 msgid "The track can't be added to a playlist"
@@ -4257,11 +4682,9 @@ msgctxt "Sidebar/Player/Error message.Title"
 msgid "The track cannot be loaded"
 msgstr ""
 
-#: front/src/views/admin/library/TrackDetail.vue:74
+#: front/src/views/admin/library/TrackDetail.vue:80
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The track will be removed, as well as associated uploads, favorites and "
-"listening history. This action is irreversible."
+msgid "The track will be removed, as well as associated uploads, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/views/admin/library/UploadDetail.vue:68
@@ -4294,21 +4717,37 @@ msgctxt "Content/Artist/Paragraph"
 msgid "This artist is present in the following libraries:"
 msgstr "Tiu artisto estas en ĉi-tiuj muzikejoj:"
 
+#: front/src/components/manage/moderation/DomainsTable.vue:169
+#, fuzzy
+msgctxt "Content/Moderation/Popup"
+msgid "This domain is present in your allow-list"
+msgstr "Tiu artisto estas en ĉi-tiuj muzikejoj:"
+
 #: front/src/views/admin/moderation/AccountsDetail.vue:84
-#: front/src/views/admin/moderation/DomainsDetail.vue:48
+#: front/src/views/admin/moderation/DomainsDetail.vue:76
 msgctxt "Content/Moderation/Card.Title"
 msgid "This domain is subject to specific moderation rules"
 msgstr "Tiu domajno havas specialajn moderecajn regulojn"
 
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:16
+#, fuzzy
+msgctxt "Content/Moderation/Card.Title"
+msgid "This entity is subject to specific moderation rules"
+msgstr "Tiu domajno havas specialajn moderecajn regulojn"
+
 #: front/src/views/content/Home.vue:9
 msgctxt "Content/Library/Paragraph"
 msgid "This instance offers up to %{quota} of storage space for every user."
 msgstr "Tiu instanco oferi ĝis %{quota} de memorado per uzanto."
 
+#: front/src/components/auth/Settings.vue:300
+msgctxt "Popup/Settings/Paragraph"
+msgid "This is irreversible and will permanently remove your data from our servers. You will we immediatly logged out."
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:165
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"This is the list of applications that have access to your account data."
+msgid "This is the list of applications that have access to your account data."
 msgstr ""
 
 #: front/src/components/auth/Settings.vue:218
@@ -4326,28 +4765,20 @@ msgctxt "Content/Library/Input.Placeholder"
 msgid "This library contains my personal music, I hope you like it."
 msgstr "Tiu muzikejo enhavas mian personan muzikon, mi esperas vi ŝatas ĝin."
 
-#: front/src/views/content/remote/Card.vue:141
+#: front/src/views/content/remote/Card.vue:169
 msgctxt "Content/Library/Card.Help text"
-msgid ""
-"This library is private and your approval from its owner is needed to access"
-" its content"
-msgstr ""
-"Tiu muzikejo estas privata kaj vi bezonas akceptadon el ĝia proprulo por "
-"vidi ĝia enhavo"
+msgid "This library is private and your approval from its owner is needed to access its content"
+msgstr "Tiu muzikejo estas privata kaj vi bezonas akceptadon el ĝia proprulo por vidi ĝia enhavo"
 
-#: front/src/views/content/remote/Card.vue:142
+#: front/src/views/content/remote/Card.vue:170
 msgctxt "Content/Library/Card.Help text"
 msgid "This library is public and you can access its content freely"
 msgstr "Tiu muzikejo estas publika do vi povas vidi ĝia enhavo libere"
 
 #: front/src/components/common/ActionTable.vue:47
 msgctxt "Modal/*/Paragraph"
-msgid ""
-"This may affect a lot of elements or have irreversible consequences, please "
-"double check this is really what you want."
-msgstr ""
-"Tiu efektus multe da ero aÅ­ havus malfarontajn konsekvencojn, bonvolu "
-"recertiĝi vi vere volas tiun."
+msgid "This may affect a lot of elements or have irreversible consequences, please double check this is really what you want."
+msgstr "Tiu efektus multe da ero aŭ havus malfarontajn konsekvencojn, bonvolu recertiĝi vi vere volas tiun."
 
 #: front/src/components/library/AlbumEdit.vue:8
 #: front/src/components/library/ArtistEdit.vue:8
@@ -4356,6 +4787,11 @@ msgctxt "Content/*/Message"
 msgid "This object is managed by another server, you cannot edit it."
 msgstr ""
 
+#: front/src/components/Home.vue:87
+msgctxt "Content/Home/Paragraph"
+msgid "This pod runs Funkwhale, a community-driven project that lets you listen and share music and audio within a decentralized, open network."
+msgstr ""
+
 #: front/src/components/library/FileUpload.vue:51
 msgctxt "Content/Library/Paragraph"
 msgid "This reference will be used to group imported files together."
@@ -4363,15 +4799,15 @@ msgstr "Tiu referenco estus uzonta por grupigi importadajn dosierojn kune."
 
 #: front/src/components/mixins/Translations.vue:33
 #: front/src/components/mixins/Translations.vue:34
+#, fuzzy
 msgctxt "Content/Library/Help text"
-msgid "This track could not be processed, please it is tagged correctly"
+msgid "This track could not be processed, please make sure it is tagged correctly"
 msgstr "Ne povis traktadi tiun kanton, certiĝi ĝi estas bone etikedata"
 
 #: front/src/components/mixins/Translations.vue:29
 #: front/src/components/mixins/Translations.vue:30
 msgctxt "Content/Library/Help text"
-msgid ""
-"This track has been uploaded, but hasn't been processed by the server yet"
+msgid "This track has been uploaded, but hasn't been processed by the server yet"
 msgstr "Kanto elŝutanta, sed la servilo ne jam procezis ĝin"
 
 #: front/src/components/mixins/Translations.vue:25
@@ -4380,7 +4816,7 @@ msgctxt "Content/Library/Help text"
 msgid "This track is already present in one of your libraries"
 msgstr "Kanto jam estas en unu de viaj muzikejoj"
 
-#: front/src/components/audio/PlayButton.vue:85
+#: front/src/components/audio/PlayButton.vue:103
 msgctxt "*/Queue/Button/Title"
 msgid "This track is not available in any library you have access to"
 msgstr "Tiu kanto ne disponeblas en iu aj muzikejo vi povas atingi"
@@ -4390,7 +4826,7 @@ msgctxt "Content/Track/Paragraph"
 msgid "This track is present in the following libraries:"
 msgstr "Tiu kanto ne estas en ĉi-tiu muzikejoj:"
 
-#: front/src/views/playlists/Detail.vue:38
+#: front/src/views/playlists/Detail.vue:46
 msgctxt "Popup/Playlist/Paragraph"
 msgid "This will completely delete this playlist and cannot be undone."
 msgstr "Tute forigos tiun ludliston kaj ne povus esti malfaronta."
@@ -4400,29 +4836,29 @@ msgctxt "Popup/Radio/Paragraph"
 msgid "This will completely delete this radio and cannot be undone."
 msgstr "Tute forigos tiun radion kaj ne povus esti malfaronta."
 
-#: front/src/components/auth/SubsonicTokenForm.vue:50
+#: front/src/components/auth/SubsonicTokenForm.vue:55
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will completely disable access to the Subsonic API using from account."
+msgid "This will completely disable access to the Subsonic API using from account."
 msgstr "Tute malaktivas atingo al la subsona API el tiu konto."
 
-#: front/src/components/auth/SubsonicTokenForm.vue:35
+#: front/src/components/manage/moderation/ReportCard.vue:359
+msgctxt "Content/Moderation/Popup,Paragraph"
+msgid "This will delete the object associated with this report and mark the report as resolved. The deletion is irreversible."
+msgstr ""
+
+#: front/src/components/auth/SubsonicTokenForm.vue:40
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will log you out from existing devices that use the current password."
+msgid "This will log you out from existing devices that use the current password."
 msgstr "Elsalutos vin el ĉiu viaj aparatoj ke uzas la aktualan pasvorton."
 
 #: front/src/components/auth/Settings.vue:253
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will permanently delete the application and all the associated tokens."
+msgid "This will permanently delete the application and all the associated tokens."
 msgstr "Tute forigos tiun ludliston kaj ne povus esti malfaronta."
 
 #: front/src/components/auth/Settings.vue:194
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will prevent this application from accessing the service on your "
-"behalf."
+msgid "This will prevent this application from accessing the service on your behalf."
 msgstr ""
 
 #: front/src/components/playlists/Editor.vue:54
@@ -4430,43 +4866,44 @@ msgctxt "Popup/Playlist/Paragraph"
 msgid "This will remove all tracks from this playlist and cannot be undone."
 msgstr "Forigos ĉiujn kantojn el tiu ludlisto kaj ne povus esti malfaronta."
 
-#: front/src/views/admin/library/AlbumDetail.vue:99
-#: front/src/views/admin/library/TrackDetail.vue:98 src/edits.js:21
-#: src/edits.js:39
-msgctxt "*/*/*/Noun"
-msgid "Title"
-msgstr "Titolo"
-
 #: front/src/components/audio/track/Table.vue:7
-#: front/src/views/content/libraries/FilesTable.vue:55
-msgctxt "Content/Track/*/Noun"
-msgid "Title"
-msgstr "Titolo"
-
 #: front/src/components/manage/library/AlbumsTable.vue:39
 #: front/src/components/manage/library/TracksTable.vue:39
-msgctxt "*/*/*"
+#: front/src/views/admin/library/AlbumDetail.vue:105
+#: front/src/views/admin/library/TrackDetail.vue:104
+#: front/src/views/content/libraries/FilesTable.vue:55 src/edits.js:36
+#: front/src/edits.js:62
+msgctxt "*/*/*/Noun"
 msgid "Title"
 msgstr "Titolo"
 
 #: front/src/components/SetInstanceModal.vue:16
 msgctxt "Popup/Instance/Paragraph"
-msgid ""
-"To continue, please select the Funkwhale instance you want to connect to. "
-"Enter the address directly, or select one of the suggested choices."
+msgid "To continue, please select the Funkwhale instance you want to connect to. Enter the address directly, or select one of the suggested choices."
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:148
+#, fuzzy
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle favorite"
+msgstr "Unu stelumo"
+
+#: front/src/components/ShortcutsModal.vue:132
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle mute"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:79
+#: front/src/components/ShortcutsModal.vue:136
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Toggle queue looping"
 msgstr "Baskuli ripetadon de la atendovico"
 
-#: front/src/views/admin/library/AlbumDetail.vue:222
-#: front/src/views/admin/library/ArtistDetail.vue:211
-#: front/src/views/admin/library/LibraryDetail.vue:200
-#: front/src/views/admin/library/TrackDetail.vue:274
-#: front/src/views/admin/moderation/AccountsDetail.vue:317
-#: front/src/views/admin/moderation/DomainsDetail.vue:225
+#: front/src/views/admin/library/AlbumDetail.vue:238
+#: front/src/views/admin/library/ArtistDetail.vue:226
+#: front/src/views/admin/library/LibraryDetail.vue:219
+#: front/src/views/admin/library/TrackDetail.vue:290
+#: front/src/views/admin/moderation/AccountsDetail.vue:329
+#: front/src/views/admin/moderation/DomainsDetail.vue:262
 msgctxt "Content/Moderation/Table.Label"
 msgid "Total size"
 msgstr "Tuta grando"
@@ -4476,20 +4913,18 @@ msgctxt "Content/Library/Card.Help text"
 msgid "Total size of the files in this library"
 msgstr "Tuta grando de tiu muzikejo"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:105
+#: front/src/views/admin/moderation/DomainsDetail.vue:142
 msgctxt "Content/*/*"
 msgid "Total users"
 msgstr "Tutaj uzantoj"
 
-#: front/src/views/admin/library/UploadDetail.vue:199
-msgctxt "*/*/*"
-msgid "Track"
-msgstr "Kanto"
-
-#: front/src/components/audio/SearchBar.vue:27
-#: front/src/components/library/TrackBase.vue:173
+#: front/src/components/audio/SearchBar.vue:34
+#: front/src/components/library/TrackBase.vue:188
 #: front/src/components/library/TrackDetail.vue:128
 #: front/src/components/metadata/Search.vue:138
+#: src/components/mixins/Report.vue:28
+#: front/src/views/admin/library/UploadDetail.vue:199
+#: front/src/components/mixins/Report.vue:29
 msgctxt "*/*/*/Noun"
 msgid "Track"
 msgstr "Kanto"
@@ -4499,7 +4934,7 @@ msgctxt "Content/Library/Card/Short"
 msgid "Track #%{ id } - %{ name }"
 msgstr ""
 
-#: front/src/views/admin/library/TrackDetail.vue:91
+#: front/src/views/admin/library/TrackDetail.vue:97
 msgctxt "Content/Moderation/Title"
 msgid "Track data"
 msgstr "Nomo de kanto"
@@ -4509,30 +4944,28 @@ msgctxt "Content/Track/Title/Noun"
 msgid "Track information"
 msgstr "Kantodatumo"
 
-#: front/src/components/mixins/Translations.vue:50
-#: front/src/components/mixins/Translations.vue:51
+#: front/src/components/mixins/Translations.vue:60
+#: front/src/components/mixins/Translations.vue:61
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Track name"
 msgstr "Nomo de kanto"
 
-#: front/src/components/instance/Stats.vue:54
 #: front/src/components/library/AlbumDetail.vue:19
-#: front/src/components/playlists/PlaylistModal.vue:47
-#: front/src/views/admin/moderation/AccountsDetail.vue:362
-#: front/src/views/admin/moderation/DomainsDetail.vue:274
-#: front/src/views/content/Base.vue:8 src/views/content/libraries/Detail.vue:8
-#: front/src/views/playlists/Detail.vue:51 src/views/radios/Detail.vue:34
-msgctxt "*/*/*/Noun"
-msgid "Tracks"
-msgstr "Kantoj"
-
+#: front/src/components/library/TagDetail.vue:36
 #: front/src/components/manage/library/AlbumsTable.vue:42
 #: front/src/components/manage/library/ArtistsTable.vue:42
-#: front/src/views/admin/library/AlbumDetail.vue:252
-#: front/src/views/admin/library/ArtistDetail.vue:251
+#: front/src/components/manage/library/TagsTable.vue:44
+#: front/src/components/playlists/PlaylistModal.vue:47
+#: front/src/views/admin/library/AlbumDetail.vue:268
+#: front/src/views/admin/library/ArtistDetail.vue:266
 #: front/src/views/admin/library/Base.vue:14
-#: front/src/views/admin/library/LibraryDetail.vue:229
+#: front/src/views/admin/library/LibraryDetail.vue:248
+#: front/src/views/admin/library/TagDetail.vue:143
 #: front/src/views/admin/library/TracksList.vue:24
+#: front/src/views/admin/moderation/AccountsDetail.vue:374
+#: front/src/views/admin/moderation/DomainsDetail.vue:311
+#: front/src/views/content/Base.vue:8 src/views/content/libraries/Detail.vue:8
+#: front/src/views/playlists/Detail.vue:76 src/views/radios/Detail.vue:34
 msgctxt "*/*/*"
 msgid "Tracks"
 msgstr "Kantoj"
@@ -4542,77 +4975,64 @@ msgctxt "Content/Artist/Title"
 msgid "Tracks by this artist"
 msgstr "Kantoj je tiu artisto"
 
-#: front/src/components/instance/Stats.vue:25
-msgctxt "Content/About/Paragraph/Unit"
-msgid "Tracks favorited"
-msgstr "Stelumantaj kantoj"
-
-#: front/src/components/instance/Stats.vue:19
-msgctxt "Content/About/Paragraph/Unit"
-msgid "tracks listened"
-msgstr "aÅ­skultintaj kantoj"
-
 #: front/src/components/library/radios/Filter.vue:44
 msgctxt "Popup/Radio/Title/Noun"
 msgid "Tracks matching filter"
 msgstr "Kanto kongruanta filtrilo"
 
 #: front/src/components/library/TrackDetail.vue:57
+#: front/src/components/manage/moderation/ReportCard.vue:134
 #: front/src/views/admin/library/UploadDetail.vue:250
+#: front/src/views/admin/moderation/AccountsDetail.vue:181
 msgctxt "Content/Track/Table.Label/Noun"
 msgid "Type"
 msgstr "Tipo"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:180
-msgctxt "Content/Moderation/Table.Label/Noun"
-msgid "Type"
-msgstr "Tipo"
-
 #: front/src/components/manage/moderation/AccountsTable.vue:44
-#: front/src/components/manage/moderation/DomainsTable.vue:42
+#: front/src/components/manage/moderation/DomainsTable.vue:50
 msgctxt "Content/Moderation/Table.Label/Short"
 msgid "Under moderation rule"
 msgstr "Moderece"
 
-#: front/src/views/content/remote/Card.vue:109
-#: src/views/content/remote/Card.vue:114
+#: front/src/components/ShortcutsModal.vue:68
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Unfocus searchbar"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:122
+#: src/views/content/remote/Card.vue:127
 msgctxt "*/Library/Button.Label/Verb"
 msgid "Unfollow"
 msgstr "Malsekvi"
 
-#: front/src/views/content/remote/Card.vue:110
+#: front/src/views/content/remote/Card.vue:123
 msgctxt "Popup/Library/Title"
 msgid "Unfollow this library?"
 msgstr "Malsekvi tiun muzikejon?"
 
-#: front/src/components/About.vue:17
-msgctxt "Content/About/Paragraph"
-msgid ""
-"Unfortunately, the owners of this instance did not yet take the time to "
-"complete this page."
-msgstr "Malfeliĉe, proprulo de tiu instanco ne jam plenigis tiu paĝon."
-
 #: front/src/components/federation/FetchButton.vue:54
 #: front/src/components/federation/FetchButton.vue:55
-msgctxt "*/*/Error"
-msgid "Unknowkn error"
-msgstr ""
-
 #: front/src/components/library/ImportStatusModal.vue:144
-msgctxt "Popup/Import/Error.Label"
-msgid "Unkwown error"
+msgctxt "*/*/Error"
+msgid "Unknown error"
 msgstr ""
 
-#: front/src/components/Home.vue:37
-msgctxt "Content/Home/Title"
-msgid "Unlimited music"
-msgstr "Infinita muziko"
-
-#: front/src/components/audio/Player.vue:630
+#: front/src/components/audio/Player.vue:656
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Unmute"
 msgstr "Malmutigi"
 
+#: front/src/components/manage/moderation/ReportCard.vue:225
+msgctxt "Content/*/Button.Label"
+msgid "Unresolve"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:67
+#: front/src/views/admin/moderation/ReportsList.vue:23
+msgctxt "Content/*/*/Short"
+msgid "Unresolved"
+msgstr ""
+
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:57
 msgctxt "Content/Moderation/Card.Button.Label/Verb"
 msgid "Update"
@@ -4676,11 +5096,8 @@ msgstr "Elŝutdato"
 
 #: front/src/components/library/FileUpload.vue:258
 msgctxt "Content/Library/Help text"
-msgid ""
-"Upload denied, ensure the file is not too big and that you have not reached "
-"your quota"
-msgstr ""
-"Malakcepti elŝuto, certiĝi la dosieron ne tro grandas kaj vi nur havas spaco"
+msgid "Upload denied, ensure the file is not too big and that you have not reached your quota"
+msgstr "Malakcepti elŝuto, certiĝi la dosieron ne tro grandas kaj vi nur havas spaco"
 
 #: front/src/components/library/ImportStatusModal.vue:8
 msgctxt "Popup/Import/Message"
@@ -4689,20 +5106,18 @@ msgstr ""
 
 #: front/src/views/content/Home.vue:7
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Upload music files (MP3, OGG, FLAC, etc.) from your personal library "
-"directly from your browser to enjoy them here."
-msgstr ""
-"Elŝuti muzikajn dosierojn (MP3, OGG, FLAC, ktp.) el via persona muzika "
-"dosierujo direkte en via retumilo por ĝui ilin ĉi-tie."
+msgid "Upload music files (MP3, OGG, FLAC, etc.) from your personal library directly from your browser to enjoy them here."
+msgstr "Elŝuti muzikajn dosierojn (MP3, OGG, FLAC, ktp.) el via persona muzika dosierujo direkte en via retumilo por ĝui ilin ĉi-tie."
 
 #: front/src/components/library/FileUpload.vue:30
 msgctxt "Content/Library/Title/Verb"
 msgid "Upload new tracks"
 msgstr "Elŝuti novajn kantojn"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:298
-msgctxt "Content/Moderation/Table.Label/Noun"
+#: front/src/components/About.vue:99
+#: front/src/views/admin/moderation/AccountsDetail.vue:309
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Upload quota"
 msgstr "Elŝutlimito"
 
@@ -4713,9 +5128,7 @@ msgstr "Elŝuto tempolimis, bonvolu reprovi"
 
 #: front/src/components/library/ImportStatusModal.vue:14
 msgctxt "Popup/Import/Message"
-msgid ""
-"Upload was skipped because a similar one is already available in one of your"
-" libraries."
+msgid "Upload was skipped because a similar one is already available in one of your libraries."
 msgstr ""
 
 #: front/src/components/library/ImportStatusModal.vue:11
@@ -4738,35 +5151,25 @@ msgctxt "Content/Library/Table"
 msgid "Uploading…"
 msgstr "Elŝutanta…"
 
+#: front/src/components/manage/library/LibrariesTable.vue:52
+#: front/src/components/manage/moderation/AccountsTable.vue:41
+#: front/src/components/mixins/Translations.vue:75
+#: front/src/views/admin/library/AlbumDetail.vue:258
+#: front/src/views/admin/library/ArtistDetail.vue:246
 #: front/src/views/admin/library/Base.vue:20
+#: front/src/views/admin/library/LibraryDetail.vue:258
+#: front/src/views/admin/library/TrackDetail.vue:310
 #: front/src/views/admin/library/UploadsList.vue:24
+#: front/src/views/admin/moderation/AccountsDetail.vue:349
+#: front/src/views/admin/moderation/DomainsDetail.vue:281
+#: front/src/components/mixins/Translations.vue:76
 msgctxt "*/*/*"
 msgid "Uploads"
 msgstr "Elŝutoj"
 
-#: front/src/components/manage/moderation/AccountsTable.vue:41
-#: front/src/components/mixins/Translations.vue:63
-#: front/src/views/admin/library/AlbumDetail.vue:242
-#: front/src/views/admin/library/ArtistDetail.vue:231
-#: front/src/views/admin/library/LibraryDetail.vue:239
-#: front/src/views/admin/library/TrackDetail.vue:294
-#: front/src/views/admin/moderation/AccountsDetail.vue:337
-#: front/src/views/admin/moderation/DomainsDetail.vue:244
-#: front/src/components/mixins/Translations.vue:64
-msgctxt "Content/Moderation/Table.Label/Noun"
-msgid "Uploads"
-msgstr "Elŝutoj"
-
-#: front/src/components/manage/library/LibrariesTable.vue:52
-msgctxt "Content/*/*/Noun"
-msgid "Uploads"
-msgstr "Elŝutoj"
-
 #: front/src/components/auth/ApplicationForm.vue:16
 msgctxt "Content/Applications/Help Text"
-msgid ""
-"Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is "
-"not served on the web."
+msgid "Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is not served on the web."
 msgstr ""
 
 #: front/src/components/Footer.vue:16
@@ -4774,38 +5177,57 @@ msgctxt "Footer/*/List item.Link"
 msgid "Use another instance"
 msgstr "Uzi alian instancon"
 
+#: front/src/components/Home.vue:146
+msgctxt "Content/Home/Link"
+msgid "Use Funkwhale on other devices with our apps"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:44
+msgctxt "*/*/Field,Help"
+msgid "Use this field to provide additional context to the moderator that will handle your report."
+msgstr ""
+
 #: front/src/views/auth/PasswordReset.vue:12
 msgctxt "Content/Signup/Paragraph"
-msgid ""
-"Use this form to request a password reset. We will send an email to the "
-"given address with instructions to reset your password."
+msgid "Use this form to request a password reset. We will send an email to the given address with instructions to reset your password."
+msgstr "Uzu tiun formularo por peti pasvortnuligado. Ni sendos retpoŝtmesaĝon kun instrukcioj por nuligi vian pasvorton."
+
+#: front/src/components/moderation/ReportModal.vue:18
+msgctxt "*/Moderation/Popup,Paragraph"
+msgid "Use this form to submit a report to our moderation team."
 msgstr ""
-"Uzu tiun formularo por peti pasvortnuligado. Ni sendos retpoŝtmesaĝon kun "
-"instrukcioj por nuligi vian pasvorton."
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:111
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Use this setting to temporarily enable/disable the policy without completely"
-" removing it."
-msgstr ""
-"Uzu tiun agordon por tempe aktivigi/malaktivigi la regularon sen tute forigi"
-" ĝin."
+msgid "Use this setting to temporarily enable/disable the policy without completely removing it."
+msgstr "Uzu tiun agordon por tempe aktivigi/malaktivigi la regularon sen tute forigi ĝin."
 
 #: front/src/components/manage/users/InvitationsTable.vue:49
 msgctxt "Content/Admin/Table"
 msgid "Used"
 msgstr "Uzinta"
 
+#: front/src/components/Home.vue:125
+msgctxt "Content/Home/Header"
+msgid "Useful links"
+msgstr ""
+
 #: front/src/views/content/libraries/Detail.vue:26
 msgctxt "Content/Library/Table.Label"
 msgid "User"
 msgstr "Uzanto"
 
-#: front/src/components/instance/Stats.vue:5
-msgctxt "Content/About/Title/Noun"
-msgid "User activity"
-msgstr "Uzanta aktivado"
+#: front/src/components/Home.vue:154
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "User guides"
+msgstr "Uzantaj muzikejoj"
+
+#: front/src/views/admin/Settings.vue:88
+#, fuzzy
+msgctxt "Content/Admin/Menu"
+msgid "User Interface"
+msgstr "Uzantnomo"
 
 #: front/src/components/library/AlbumDetail.vue:26
 #: front/src/components/library/ArtistDetail.vue:39
@@ -4819,35 +5241,35 @@ msgctxt "Content/Radio/Title"
 msgid "User radios"
 msgstr "Uzantaj radioj"
 
-#: front/src/components/auth/Signup.vue:19
+#: front/src/components/auth/SignupForm.vue:15
 #: front/src/components/manage/users/UsersTable.vue:37
-#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:71
 #: front/src/views/admin/moderation/AccountsDetail.vue:114
-#: front/src/components/mixins/Translations.vue:60
+#: front/src/components/mixins/Translations.vue:72
 msgctxt "Content/*/*"
 msgid "Username"
 msgstr "Uzantnomo"
 
-#: front/src/components/auth/Login.vue:15
+#: front/src/components/auth/LoginForm.vue:11
 msgctxt "Content/Login/Input.Label/Noun"
 msgid "Username or email"
 msgstr "Uzantnomo aŭ retpoŝtadreso"
 
-#: front/src/components/instance/Stats.vue:13
-msgctxt "Content/About/Paragraph/Unit"
-msgid "users"
-msgstr "uzantoj"
-
-#: front/src/components/Sidebar.vue:102
-#: front/src/components/manage/moderation/DomainsTable.vue:39
-#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/Sidebar.vue:106
+#: front/src/components/manage/moderation/DomainsTable.vue:47
+#: front/src/components/mixins/Translations.vue:73
 #: src/views/admin/Settings.vue:81 front/src/views/admin/users/Base.vue:5
 #: src/views/admin/users/UsersList.vue:21
-#: front/src/components/mixins/Translations.vue:62
+#: front/src/components/mixins/Translations.vue:74
 msgctxt "*/*/*/Noun"
 msgid "Users"
 msgstr "Uzantoj"
 
+#: front/src/components/Home.vue:110
+msgctxt "Content/Home/Paragraph"
+msgid "Users on this pod also get %{ quota } of free storage to upload their own content!"
+msgstr ""
+
 #: front/src/components/Footer.vue:29
 msgctxt "Footer/*/Title"
 msgid "Using Funkwhale"
@@ -4865,45 +5287,60 @@ msgctxt "Content/Library/Link/Verb"
 msgid "View files"
 msgstr "Vidi dosierojn"
 
-#: front/src/components/library/AlbumBase.vue:81
-#: front/src/components/library/ArtistBase.vue:92
-#: front/src/components/library/TrackBase.vue:100
-#: front/src/views/admin/library/AlbumDetail.vue:42
-#: front/src/views/admin/library/ArtistDetail.vue:41
+#: front/src/components/library/AlbumBase.vue:95
+#: front/src/components/library/ArtistBase.vue:107
+#: front/src/components/library/TrackBase.vue:111
+#: front/src/views/admin/library/AlbumDetail.vue:48
+#: front/src/views/admin/library/ArtistDetail.vue:46
 #: front/src/views/admin/library/LibraryDetail.vue:34
 #: front/src/views/admin/library/LibraryDetail.vue:45
-#: front/src/views/admin/library/TrackDetail.vue:41
+#: front/src/views/admin/library/TagDetail.vue:32
+#: front/src/views/admin/library/TrackDetail.vue:47
 #: front/src/views/admin/library/UploadDetail.vue:35
 #: front/src/views/admin/library/UploadDetail.vue:46
 #: front/src/views/admin/moderation/AccountsDetail.vue:37
 #: front/src/views/admin/moderation/AccountsDetail.vue:45
+#: front/src/views/admin/moderation/DomainsDetail.vue:30
 msgctxt "Content/Moderation/Link/Verb"
 msgid "View in Django's admin"
 msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:61
-#: front/src/components/library/ArtistBase.vue:72
-#: front/src/components/library/TrackBase.vue:80
+#: front/src/components/Home.vue:169
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "View more…"
+msgstr "Ŝargas sekvantojn…"
+
+#: front/src/components/library/AlbumBase.vue:62
+#: front/src/components/library/ArtistBase.vue:73
+#: front/src/components/library/TrackBase.vue:78
 #: front/src/components/metadata/ArtistCard.vue:49
 #: front/src/components/metadata/ReleaseCard.vue:53
 msgctxt "Content/*/*/Clickable, Verb"
 msgid "View on MusicBrainz"
 msgstr "Vidi en MusicBrainz"
 
+#: front/src/components/manage/moderation/ReportCard.vue:124
+msgctxt "Content/Moderation/Link"
+msgid "View public page"
+msgstr ""
+
 #: front/src/components/manage/library/LibrariesTable.vue:11
 #: front/src/components/manage/library/LibrariesTable.vue:51
 #: front/src/components/manage/library/UploadsTable.vue:11
 #: front/src/components/manage/library/UploadsTable.vue:63
 #: front/src/views/admin/library/LibraryDetail.vue:94
 #: front/src/views/admin/library/UploadDetail.vue:101
+#: front/src/views/content/libraries/Form.vue:18
 msgctxt "*/*/*"
 msgid "Visibility"
 msgstr "Videblo"
 
-#: front/src/views/content/libraries/Form.vue:18
-msgctxt "Content/Library/Dropdown.Label"
-msgid "Visibility"
-msgstr "Videblo"
+#: front/src/components/Home.vue:91
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Visit funkwhale.audio"
+msgstr "Uzi Funkwhale"
 
 #: front/src/components/library/AlbumDetail.vue:4
 msgctxt "Content/Album/"
@@ -4915,7 +5352,13 @@ msgctxt "Popup/*/Loading.Title"
 msgid "Waiting for result…"
 msgstr "Ŝarĝas viajn stelumojn…"
 
-#: front/src/components/auth/Login.vue:7
+#: front/src/components/auth/Settings.vue:285
+#, fuzzy
+msgctxt "Content/Settings/Error message.Title"
+msgid "We cannot delete your account"
+msgstr "Ni ne povis ensaluti vin"
+
+#: front/src/components/auth/LoginForm.vue:3
 msgctxt "Content/Login/Error message.Title"
 msgid "We cannot log you in"
 msgstr "Ni ne povis ensaluti vin"
@@ -4925,42 +5368,37 @@ msgctxt "Content/*/Error message.Title"
 msgid "We cannot save your changes"
 msgstr "Ni ne povis krei vian konton"
 
-#: front/src/components/Home.vue:122
-msgctxt "Content/Home/List item"
-msgid "We do not track you or bother you with ads"
-msgstr "Ni ne spionas vin aŭ ĝenas vin kun reklamoj"
+#: front/src/views/Notifications.vue:39
+msgctxt "Content/Notifications/Paragraph"
+msgid "We noticed you've been here for a while. If Funkwhale is useful to you, we could use your help to make it even better!"
+msgstr ""
 
 #: front/src/components/library/FileUpload.vue:39
 msgctxt "Content/Library/Link"
 msgid "We recommend using Picard for that purpose."
 msgstr "Ni rekomendas Picard pro fari tiun."
 
-#: front/src/components/Home.vue:7
-msgctxt "Content/Home/Title"
-msgid "We think listening to music should be simple."
-msgstr "Ni pensas ke aÅ­skulti muzikon devus simpli."
+#: front/src/components/moderation/ReportModal.vue:35
+msgctxt "*/*/Field,Help"
+msgid "We'll use this email if we need to contact you regarding this report."
+msgstr ""
 
-#: front/src/components/Home.vue:148
+#: front/src/components/Home.vue:207
 msgctxt "Head/Home/Title"
 msgid "Welcome"
 msgstr "Bonvenon"
 
 #: front/src/components/Home.vue:5
-msgctxt "Content/Home/Title/Verb"
-msgid "Welcome on Funkwhale"
-msgstr "Bonvenon en Funkwhale"
-
-#: front/src/components/Home.vue:24
-msgctxt "Content/Home/Title"
-msgid "Why funkwhale?"
-msgstr "Kial Funkwhale?"
+msgctxt "Content/Home/Header"
+msgid "Welcome to %{ podName }!"
+msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:13
+#: front/src/components/audio/EmbedWizard.vue:23
 msgctxt "Popup/Embed/Input.Label"
 msgid "Widget height"
 msgstr "Alto de fenestraĵo"
 
-#: front/src/components/audio/EmbedWizard.vue:6
+#: front/src/components/audio/EmbedWizard.vue:16
 msgctxt "Popup/Embed/Input.Label"
 msgid "Widget width"
 msgstr "Larĝo de fenestraĵo"
@@ -4980,9 +5418,11 @@ msgctxt "Content/OAuth Scopes/Help Text"
 msgid "Write-only access to user data"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:129
+#: front/src/components/Sidebar.vue:133
 #: front/src/components/manage/moderation/AccountsTable.vue:72
-#: front/src/components/manage/moderation/DomainsTable.vue:58
+#: front/src/components/manage/moderation/DomainsTable.vue:12
+#: front/src/components/manage/moderation/DomainsTable.vue:69
+#: front/src/views/admin/moderation/DomainsDetail.vue:109
 msgctxt "*/*/*"
 msgid "Yes"
 msgstr "Jes"
@@ -4994,27 +5434,17 @@ msgstr "Jes, elsaluti min!"
 
 #: front/src/views/content/libraries/Form.vue:19
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You are able to share your library with other people, regardless of its "
-"visibility."
-msgstr ""
-"Vi povas diskonigi vian muzikejon kun aliaj uloj, sendepende ĝia videblo."
+msgid "You are able to share your library with other people, regardless of its visibility."
+msgstr "Vi povas diskonigi vian muzikejon kun aliaj uloj, sendepende ĝia videblo."
 
 #: front/src/components/library/FileUpload.vue:32
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You are about to upload music to your library. Before proceeding, please "
-"ensure that:"
-msgstr ""
-"Vi estas elŝutota muziko al via muzikejo. Antaŭ komenci, bonvolu certiĝi ke:"
+msgid "You are about to upload music to your library. Before proceeding, please ensure that:"
+msgstr "Vi estas elŝutota muziko al via muzikejo. Antaŭ komenci, bonvolu certiĝi ke:"
 
 #: front/src/components/SetInstanceModal.vue:12
 msgctxt "Popup/Login/Paragraph"
-msgid ""
-"You are currently connected to <a href=\"%{ url }\" target=\"_blank\">%{ "
-"hostname }&nbsp;<i class=\"external icon\"/></a>. If you continue, you will "
-"be disconnected from your current instance and all your local data will be "
-"deleted."
+msgid "You are currently connected to <a href=\"%{ url }\" target=\"_blank\">%{ hostname }&nbsp;<i class=\"external icon\"/></a>. If you continue, you will be disconnected from your current instance and all your local data will be deleted."
 msgstr ""
 
 #: front/src/components/library/ArtistDetail.vue:6
@@ -5029,9 +5459,7 @@ msgstr "Vi aktuale estas ensaluta al %{username}"
 
 #: front/src/components/library/FileUpload.vue:35
 msgctxt "Content/Library/List item"
-msgid ""
-"You are not uploading copyrighted content in a public library, otherwise you"
-" may be infringing the law"
+msgid "You are not uploading copyrighted content in a public library, otherwise you may be infringing the law"
 msgstr ""
 
 #: front/src/components/SetInstanceModal.vue:98
@@ -5040,29 +5468,14 @@ msgid "You are now using the Funkwhale instance at %{ url }"
 msgstr ""
 
 #: front/src/views/content/Home.vue:17
+#, fuzzy
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You can follow libraries from other users to get access to new music. Public"
-" libraries can be followed immediatly, while following a private library "
-"requires approval from its owner."
-msgstr ""
-"Vi povas sekvi muzikejoj el aliaj uzantoj por atingi novan muzikon. Publikaj"
-" muzikejoj sekvadeblas rekte, sed sekvado de privataj muzikejoj bezonas "
-"akceptado el ĝia proprulo."
-
-#: front/src/components/Home.vue:128
-msgctxt "Content/Home/List item"
-msgid ""
-"You can invite friends and family to your instance so they can enjoy your "
-"music"
-msgstr ""
-"Vi povas inviti amikojn kaj familio en via instanco do ili povas ĝui vian "
-"muzikon"
+msgid "You can follow libraries from other users to get access to new music. Public libraries can be followed immediately, while following a private library requires approval from its owner."
+msgstr "Vi povas sekvi muzikejoj el aliaj uzantoj por atingi novan muzikon. Publikaj muzikejoj sekvadeblas rekte, sed sekvado de privataj muzikejoj bezonas akceptado el ĝia proprulo."
 
 #: front/src/components/moderation/FilterModal.vue:31
 msgctxt "Popup/Moderation/Paragraph"
-msgid ""
-"You can manage and update your filters anytime from your account settings."
+msgid "You can manage and update your filters any time from your account settings."
 msgstr ""
 
 #: front/src/views/auth/EmailConfirm.vue:24
@@ -5070,23 +5483,20 @@ msgctxt "Content/Signup/Paragraph"
 msgid "You can now use the service without limitations."
 msgstr "Vi nun povas uzi la servico senlime."
 
+#: front/src/components/auth/Settings.vue:278
+msgctxt "Content/Settings/Paragraph'"
+msgid "You can permanently and irreversibly delete your account and all the associated data using the form below. You will be asked for confirmation."
+msgstr ""
+
 #: front/src/components/library/radios/Builder.vue:7
 msgctxt "Content/Radio/Paragraph"
-msgid ""
-"You can use this interface to build your own custom radio, which will play "
-"tracks according to your criteria."
-msgstr ""
-"Vi povas uzi tiun interfaco por konstrui viajn proprajn radiojn, ke ludos "
-"kantojn laÅ­ viaj reguloj."
+msgid "You can use this interface to build your own custom radio, which will play tracks according to your criteria."
+msgstr "Vi povas uzi tiun interfaco por konstrui viajn proprajn radiojn, ke ludos kantojn laÅ­ viaj reguloj."
 
 #: front/src/components/auth/SubsonicTokenForm.vue:7
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"You can use those to enjoy your playlist and music in offline mode, on your "
-"smartphone or tablet, for instance."
-msgstr ""
-"Vi povas uzi tiujn por ĝui vian muzikon kaj ludlistojn nekonektite, kun via "
-"poŝtelefono aŭ tabuleto ekzemple."
+msgid "You can use those to enjoy your playlist and music in offline mode, on your smartphone or tablet, for instance."
+msgstr "Vi povas uzi tiujn por ĝui vian muzikon kaj ludlistojn nekonektite, kun via poŝtelefono aŭ tabuleto ekzemple."
 
 #: front/src/components/auth/Settings.vue:202
 msgctxt "Content/Applications/Paragraph"
@@ -5103,19 +5513,17 @@ msgctxt "Content/Moderation/Card.Title"
 msgid "You don't have any rule in place for this account."
 msgstr "Vi ne havas iu ajn regulon por tiu konto."
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:39
+#: front/src/views/admin/moderation/DomainsDetail.vue:67
 msgctxt "Content/Moderation/Card.Title"
 msgid "You don't have any rule in place for this domain."
 msgstr "Vi ne havas iu ajn regulon por tiu domajno."
 
 #: front/src/components/library/EditForm.vue:52
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You don't have the permission to edit this object, but you can suggest "
-"changes. Once submitted, suggestions will be reviewed before approval."
+msgid "You don't have the permission to edit this object, but you can suggest changes. Once submitted, suggestions will be reviewed before approval."
 msgstr ""
 
-#: front/src/components/Sidebar.vue:171
+#: front/src/components/Sidebar.vue:175
 msgctxt "Sidebar/Player/Title"
 msgid "You have a radio playing"
 msgstr "Vi ludas radion"
@@ -5127,8 +5535,7 @@ msgstr "Vi havus konekta problemo."
 
 #: front/src/components/auth/Settings.vue:100
 msgctxt "Popup/Settings/List item"
-msgid ""
-"You will be logged out from this session and have to log in with the new one"
+msgid "You will be logged out from this session and have to log in with the new one"
 msgstr "Vi estos elŝaluta el tiu seanco kaj devus ensaluti denove"
 
 #: front/src/components/auth/Authorize.vue:51
@@ -5143,23 +5550,24 @@ msgstr ""
 
 #: front/src/components/auth/Settings.vue:71
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"You will have to update your password on your clients that use this "
-"password."
+msgid "You will have to update your password on your clients that use this password."
 msgstr "Vi devos rekte ŝanĝi vian pasvorton en la aplikaĵo ke uzas ĝin."
 
 #: front/src/components/moderation/FilterModal.vue:20
 msgctxt "Popup/Moderation/Paragraph"
-msgid ""
-"You will not see tracks, albums and user activity linked to this artist "
-"anymore:"
+msgid "You will not see tracks, albums and user activity linked to this artist any more:"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:13
+#: front/src/components/auth/SignupForm.vue:9
 msgctxt "Content/Signup/Form/Paragraph"
 msgid "Your account cannot be created."
 msgstr "Ludlisto kreiintas"
 
+#: front/src/components/auth/Settings.vue:281
+msgctxt "Content/Settings/Paragraph'"
+msgid "Your account will be deleted from our servers within a few minutes. We will also notify other servers who may have a copy of some of your data so they can proceed to deletion. Please note that some of these servers may be offline or unwilling to comply though."
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:215
 msgctxt "Content/Settings/Title/Noun"
 msgid "Your applications"
@@ -5170,6 +5578,11 @@ msgctxt "Content/Settings/Error message.Title"
 msgid "Your avatar cannot be saved"
 msgstr ""
 
+#: front/src/components/auth/Settings.vue:527
+msgctxt "*/Auth/Message"
+msgid "Your deletion request was submitted, your account and content will be deleted shortly"
+msgstr ""
+
 #: front/src/components/library/EditForm.vue:3
 msgctxt "Content/Library/Paragraph"
 msgid "Your edit was successfully submitted."
@@ -5180,12 +5593,13 @@ msgctxt "Head/Favorites/Title"
 msgid "Your Favorites"
 msgstr "Viaj stelumoj"
 
-#: front/src/components/Home.vue:109
-msgctxt "Content/Home/Title"
-msgid "Your music, your way"
-msgstr "Via muziko, via vojo"
+#: front/src/views/Notifications.vue:5
+#, fuzzy
+msgctxt "Content/Notifications/Title"
+msgid "Your messages"
+msgstr "Sendintaj mesaĝoj"
 
-#: front/src/views/Notifications.vue:4
+#: front/src/views/Notifications.vue:69
 msgctxt "Content/Notifications/Title"
 msgid "Your notifications"
 msgstr "Viaj sciigoj"
@@ -5201,42 +5615,41 @@ msgid "Your password has been updated successfully."
 msgstr "Via pasvorto sukcese ŝanĝis."
 
 #: front/src/components/auth/Settings.vue:14
+#, fuzzy
 msgctxt "Content/Settings/Error message.Title"
-msgid "Your settings can't be updateds"
+msgid "Your settings can't be updated"
 msgstr "Agordoj ĝisdatigas"
 
 #: front/src/components/auth/Settings.vue:101
 msgctxt "Popup/Settings/List item"
-msgid ""
-"Your Subsonic password will be changed to a new, random one, logging you out"
-" from devices that used the old Subsonic password"
-msgstr ""
-"Via Subsona pasvorto ŝanĝos hazarde, elsalutontas vin el aparetoj ke uzis la"
-" malnovan pasvorton"
+msgid "Your Subsonic password will be changed to a new, random one, logging you out from devices that used the old Subsonic password"
+msgstr "Via Subsona pasvorto ŝanĝos hazarde, elsalutontas vin el aparetoj ke uzis la malnovan pasvorton"
 
-#: front/src/edits.js:47
-msgctxt "*/*/*/Short, Noun"
-msgid "Position"
-msgstr "Paĝeco"
+#: front/src/entities.js:126
+#, fuzzy
+msgctxt "*/*/*/Noun"
+msgid "MusicBrainz ID"
+msgstr "Vidi en MusicBrainz"
 
-#: front/src/edits.js:54
-msgctxt "Content/Track/*/Noun"
-msgid "Copyright"
-msgstr "Kopirajto"
+#: front/src/main.js:110
+msgctxt "*/Error/Paragraph"
+msgid "You sent too many requests and have been rate limited, please try again in %{ delay }"
+msgstr ""
+
+#: front/src/main.js:113
+msgctxt "*/Error/Paragraph"
+msgid "You sent too many requests and have been rate limited, please try again later"
+msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:183
+#: front/src/components/library/AlbumBase.vue:208
 #, fuzzy
 msgctxt "Content/Album/Header.Title"
-msgid ""
-"Album containing %{ count } track, by <a class=\"internal\" href=\"%{ "
-"artistUrl }\">%{ artist }</a>"
-msgid_plural ""
-"Album containing %{ count } tracks, by <a class=\"internal\" href=\"%{ "
-"artistUrl }\">%{ artist }</a>"
+msgid "Album containing %{ count } track, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgid_plural "Album containing %{ count } tracks, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
 msgstr[0] "Albumo kun %{count} kanto, je %{artist}"
 msgstr[1] "Albumo kun %{count} kantoj, je %{artist}"
 
-#: front/src/components/audio/PlayButton.vue:220
+#: front/src/components/audio/PlayButton.vue:246
 #, fuzzy
 msgctxt "*/Queue/Message"
 msgid "%{ count } track was added to your queue"
diff --git a/front/locales/es/LC_MESSAGES/app.po b/front/locales/es/LC_MESSAGES/app.po
index 84b65b60f80ca5a923f93a9f8eb9b3ab08ae917d..ffea531fb5c61c4dd07c25571b444d85433201c0 100644
--- a/front/locales/es/LC_MESSAGES/app.po
+++ b/front/locales/es/LC_MESSAGES/app.po
@@ -7,9 +7,9 @@ msgid ""
 msgstr ""
 "Project-Id-Version: front 1.0.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-05-16 10:35+0200\n"
-"PO-Revision-Date: 2019-02-25 08:45+0000\n"
-"Last-Translator: Ale London <alelondon@gmail.com>\n"
+"POT-Creation-Date: 2019-10-01 15:15+0200\n"
+"PO-Revision-Date: 2019-06-08 19:03+0000\n"
+"Last-Translator: Manuel Cortez <manuel@manuelcortez.net>\n"
 "Language-Team: none\n"
 "Language: es\n"
 "MIME-Version: 1.0\n"
@@ -38,17 +38,63 @@ msgctxt "Content/Auth/Title"
 msgid "%{ app } wants to access your Funkwhale account"
 msgstr "Iniciar sesión con tu cuenta de Funkwhale"
 
-#: front/src/components/common/ActionTable.vue:68
+#: front/src/components/About.vue:173 src/components/Home.vue:56
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } active user"
+msgid_plural "%{ count } active users"
+msgstr[0] "%{ count } canción"
+msgstr[1] "%{ count } canciones"
+
+#: front/src/components/About.vue:182
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } albums"
+msgid_plural "%{ count } albums"
+msgstr[0] "%{ count } canción"
+msgstr[1] "%{ count } canciones"
+
+#: front/src/components/About.vue:152
+msgctxt "*/*/*"
+msgid "%{ count } allowed domains"
+msgid_plural "%{ count } allowed domains"
+msgstr[0] ""
+msgstr[1] ""
+
+#: front/src/components/About.vue:179
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } artists"
+msgid_plural "%{ count } artists"
+msgstr[0] "%{ count } canción"
+msgstr[1] "%{ count } canciones"
+
+#: front/src/components/About.vue:176 src/components/Home.vue:59
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } hour of music"
+msgid_plural "%{ count } hours of music"
+msgstr[0] "%{ count } canción"
+msgstr[1] "%{ count } canciones"
+
+#: front/src/components/About.vue:188
 #, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } listenings"
+msgid_plural "%{ count } listenings"
+msgstr[0] "%{ count } canción"
+msgstr[1] "%{ count } canciones"
+
+#: front/src/components/common/ActionTable.vue:68
 msgctxt "Content/*/Paragraph"
 msgid "%{ count } on %{ total } selected"
 msgid_plural "%{ count } on %{ total } selected"
-msgstr[0] "%{ count } de %{ total } elemento seleccionado"
-msgstr[1] "%{ count } de %{ total } elementos seleccionados"
+msgstr[0] "Seleccionado %{ count } de %{ total }"
+msgstr[1] "Seleccionados %{ count } de %{ total }"
 
-#: front/src/components/Sidebar.vue:121 src/components/audio/album/Card.vue:52
+#: front/src/components/Sidebar.vue:125 src/components/audio/album/Card.vue:52
 #: front/src/views/content/libraries/Card.vue:40
-#: src/views/content/remote/Card.vue:30
+#: src/views/content/remote/Card.vue:43
 #, fuzzy
 msgctxt "*/*/*"
 msgid "%{ count } track"
@@ -72,7 +118,15 @@ msgid_plural "%{ count } tracks matching combined filters"
 msgstr[0] "%{ count } canción coincidiendo con filtros combinados"
 msgstr[1] "%{ count } canciones coincidiendo con filtros combinados"
 
-#: front/src/components/playlists/Card.vue:18
+#: front/src/components/About.vue:185
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } tracks"
+msgid_plural "%{ count } tracks"
+msgstr[0] "%{ count } canción"
+msgstr[1] "%{ count } canciones"
+
+#: front/src/components/playlists/Card.vue:28
 #, fuzzy
 msgctxt "Content/*/Card/List item"
 msgid "%{ count} track"
@@ -117,11 +171,10 @@ msgstr "Perfil de %{ username }"
 
 #: front/src/components/playlists/PlaylistModal.vue:21
 msgctxt "Popup/Playlist/Paragraph"
-msgid ""
-"<strong>%{ track }</strong> is already in <strong>%{ playlist }</strong>."
+msgid "<strong>%{ track }</strong> is already in <strong>%{ playlist }</strong>."
 msgstr ""
 
-#: front/src/components/audio/artist/Card.vue:41
+#: front/src/components/audio/artist/Card.vue:11
 #, fuzzy
 msgctxt "Content/Artist/Card"
 msgid "1 album"
@@ -137,24 +190,44 @@ msgid_plural "%{ count } favorites"
 msgstr[0] "1 favorito"
 msgstr[1] "%{ count } favoritos"
 
-#: front/src/components/Home.vue:64
-msgctxt "Content/Home/Title"
-msgid "A clean library"
-msgstr "Una biblioteca impecable"
+#: front/src/components/audio/artist/Card.vue:15
+#, fuzzy
+msgctxt "Content/Artist/Card"
+msgid "1 track"
+msgid_plural "%{ count } tracks"
+msgstr[0] "Añadir canción"
+msgstr[1] "Añadir canción"
+
+#: front/src/views/Notifications.vue:21 src/views/Notifications.vue:55
+msgctxt "*/*/*"
+msgid "30 days"
+msgstr ""
+
+#: front/src/views/Notifications.vue:22 src/views/Notifications.vue:56
+msgctxt "*/*/*"
+msgid "60 days"
+msgstr ""
+
+#: front/src/views/Notifications.vue:23 src/views/Notifications.vue:57
+msgctxt "*/*/*"
+msgid "90 days"
+msgstr ""
 
 #: front/src/components/library/FileUpload.vue:264
+#, fuzzy
 msgctxt "Content/Library/Help text"
-msgid "A network error occured while uploading this file"
+msgid "A network error occurred while uploading this file"
 msgstr "Ha ocurrido un error al subir este archivo"
 
-#: front/src/components/library/EditForm.vue:145
+#: front/src/components/library/EditForm.vue:161
 msgctxt "*/*/Placeholder"
 msgid "A short summary describing your changes."
 msgstr "Ha ocurrido un error al guardar los cambios"
 
 #: front/src/components/About.vue:5
-msgctxt "Content/About/Title/Short, Noun"
-msgid "About %{ instance }"
+#, fuzzy
+msgctxt "Content/Home/Header"
+msgid "About %{ podName }"
 msgstr "Sobre %{ instance }"
 
 #: front/src/components/Footer.vue:6
@@ -162,7 +235,7 @@ msgctxt "Footer/About/Title"
 msgid "About %{instanceName}"
 msgstr "Sobre %{ instance }"
 
-#: front/src/components/Footer.vue:45
+#: front/src/components/Footer.vue:53 src/components/Home.vue:85
 msgctxt "Footer/*/Title/Short"
 msgid "About Funkwhale"
 msgstr "Acerca de Funkwhale"
@@ -172,9 +245,16 @@ msgctxt "Footer/About/List item.Link"
 msgid "About page"
 msgstr "Acerca de"
 
-#: front/src/components/About.vue:8 src/components/About.vue:67
-msgctxt "Content/About/Title"
-msgid "About this instance"
+#: front/src/components/Home.vue:19
+#, fuzzy
+msgctxt "Content/Home/Header"
+msgid "About this Funkwhale pod"
+msgstr "Acerca de Funkwhale"
+
+#: front/src/components/About.vue:21 src/components/About.vue:51
+#, fuzzy
+msgctxt "Content/About/Header"
+msgid "About this pod"
 msgstr "Acerca de esta instancia"
 
 #: front/src/views/content/libraries/Detail.vue:48
@@ -187,96 +267,87 @@ msgctxt "Content/Library/Table/Short"
 msgid "Accepted"
 msgstr "Aceptado"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:110
+#: front/src/components/auth/SubsonicTokenForm.vue:117
 msgctxt "Content/Settings/Message"
 msgid "Access disabled"
 msgstr "Acceso deshabilitado"
 
-#: front/src/components/mixins/Translations.vue:73
-#: front/src/components/mixins/Translations.vue:74
+#: front/src/components/mixins/Translations.vue:85
+#: front/src/components/mixins/Translations.vue:86
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to audio files, libraries, artists, albums and tracks"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:97
-#: front/src/components/mixins/Translations.vue:98
+#: front/src/components/mixins/Translations.vue:109
+#: front/src/components/mixins/Translations.vue:110
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to content filters"
 msgstr "Seleccionar un filtro"
 
-#: front/src/components/mixins/Translations.vue:105
-#: front/src/components/mixins/Translations.vue:106
+#: front/src/components/mixins/Translations.vue:117
+#: front/src/components/mixins/Translations.vue:118
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to edits"
 msgstr "Acceso deshabilitado"
 
-#: front/src/components/mixins/Translations.vue:69
-#: front/src/components/mixins/Translations.vue:70
+#: front/src/components/mixins/Translations.vue:81
+#: front/src/components/mixins/Translations.vue:82
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to email, username, and profile information"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:77
-#: front/src/components/mixins/Translations.vue:78
+#: front/src/components/mixins/Translations.vue:89
+#: front/src/components/mixins/Translations.vue:90
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to favorites"
 msgstr "Añadir a favoritos"
 
-#: front/src/components/mixins/Translations.vue:85
-#: front/src/components/mixins/Translations.vue:86
+#: front/src/components/mixins/Translations.vue:97
+#: front/src/components/mixins/Translations.vue:98
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to follows"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:81
-#: front/src/components/mixins/Translations.vue:82
+#: front/src/components/mixins/Translations.vue:93
+#: front/src/components/mixins/Translations.vue:94
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to listening history"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:101
-#: front/src/components/mixins/Translations.vue:102
+#: front/src/components/mixins/Translations.vue:113
+#: front/src/components/mixins/Translations.vue:114
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to notifications"
 msgstr "Silenciar notificaciones"
 
-#: front/src/components/mixins/Translations.vue:89
-#: front/src/components/mixins/Translations.vue:90
+#: front/src/components/mixins/Translations.vue:101
+#: front/src/components/mixins/Translations.vue:102
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to playlists"
 msgstr "Añadir a lista de reproducción…"
 
-#: front/src/components/mixins/Translations.vue:93
-#: front/src/components/mixins/Translations.vue:94
+#: front/src/components/mixins/Translations.vue:105
+#: front/src/components/mixins/Translations.vue:106
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to radios"
 msgstr "Acceso deshabilitado"
 
-#: front/src/components/Home.vue:101
-msgctxt "Content/Home/List item"
-msgid ""
-"Access your music from a clean interface that focuses on what really matters"
-msgstr ""
-"Accede a tu música con una interfaz limpia enfocada a lo que realmente "
-"importa"
-
 #: front/src/components/manage/library/UploadsTable.vue:67
-#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:55
 #: front/src/views/admin/library/UploadDetail.vue:175
-#: front/src/components/mixins/Translations.vue:46
+#: front/src/components/mixins/Translations.vue:56
 msgctxt "Content/*/*/Noun"
 msgid "Accessed date"
 msgstr "Acceso deshabilitado"
 
-#: front/src/views/admin/library/LibraryDetail.vue:104
-#: front/src/views/admin/library/UploadDetail.vue:111
-msgctxt "*/*/*/Noun"
-msgid "Account"
-msgstr "Cuentas"
-
 #: front/src/components/manage/library/LibrariesTable.vue:49
 #: front/src/components/manage/library/UploadsTable.vue:61
-msgctxt "*/*/*"
+#: front/src/components/manage/moderation/ReportCard.vue:156
+#: front/src/components/mixins/Report.vue:13
+#: front/src/views/admin/library/LibraryDetail.vue:113
+#: front/src/views/admin/library/UploadDetail.vue:111
+#: front/src/components/mixins/Report.vue:14
+msgctxt "*/*/*/Noun"
 msgid "Account"
 msgstr "Cuentas"
 
@@ -290,7 +361,7 @@ msgctxt "Content/Settings/Title"
 msgid "Account settings"
 msgstr "Configuración de cuenta"
 
-#: front/src/components/auth/Settings.vue:479
+#: front/src/components/auth/Settings.vue:544
 msgctxt "Head/Settings/Title"
 msgid "Account Settings"
 msgstr "Configuración de Cuenta"
@@ -307,7 +378,7 @@ msgstr "Correo de la cuenta"
 
 #: front/src/views/admin/moderation/AccountsList.vue:3
 #: front/src/views/admin/moderation/AccountsList.vue:24
-#: front/src/views/admin/moderation/Base.vue:8
+#: front/src/views/admin/moderation/Base.vue:11
 msgctxt "*/Moderation/Title"
 msgid "Accounts"
 msgstr "Cuentas"
@@ -321,31 +392,30 @@ msgstr "Acción"
 #, fuzzy
 msgctxt "Content/*/Paragraph"
 msgid "Action %{ action } was launched successfully on %{ count } element"
-msgid_plural ""
-"Action %{ action } was launched successfully on %{ count } elements"
-msgstr[0] ""
-"Acción %{ action } fue iniciado exitosamente en %{ count } elemento"
-msgstr[1] ""
-"Acción %{ action } fue iniciado exitosamente en %{ count } elementos"
+msgid_plural "Action %{ action } was launched successfully on %{ count } elements"
+msgstr[0] "Acción %{ action } fue iniciado exitosamente en %{ count } elemento"
+msgstr[1] "Acción %{ action } fue iniciado exitosamente en %{ count } elementos"
 
 #: front/src/components/common/ActionTable.vue:22
 #: front/src/components/library/radios/Builder.vue:65
+#: front/src/components/manage/moderation/ReportCard.vue:210
 msgctxt "Content/*/*/Noun"
 msgid "Actions"
 msgstr "Acciones"
 
-#: front/src/components/manage/users/UsersTable.vue:53
+#: front/src/components/manage/users/UsersTable.vue:54
 msgctxt "Content/Admin/Table"
 msgid "Active"
 msgstr "Activo"
 
-#: front/src/views/admin/library/AlbumDetail.vue:134
-#: front/src/views/admin/library/ArtistDetail.vue:123
-#: front/src/views/admin/library/LibraryDetail.vue:138
-#: front/src/views/admin/library/TrackDetail.vue:186
+#: front/src/views/admin/library/AlbumDetail.vue:140
+#: front/src/views/admin/library/ArtistDetail.vue:128
+#: front/src/views/admin/library/LibraryDetail.vue:147
+#: front/src/views/admin/library/TagDetail.vue:83
+#: front/src/views/admin/library/TrackDetail.vue:192
 #: front/src/views/admin/library/UploadDetail.vue:160
-#: front/src/views/admin/moderation/AccountsDetail.vue:220
-#: front/src/views/admin/moderation/DomainsDetail.vue:136
+#: front/src/views/admin/moderation/AccountsDetail.vue:221
+#: front/src/views/admin/moderation/DomainsDetail.vue:173
 msgctxt "Content/Moderation/Title"
 msgid "Activity"
 msgstr "Actividad"
@@ -356,7 +426,7 @@ msgctxt "Content/Settings/Dropdown.Label/Noun"
 msgid "Activity visibility"
 msgstr "Mostrar mi actividad"
 
-#: front/src/views/admin/moderation/DomainsList.vue:18
+#: front/src/views/admin/moderation/DomainsList.vue:22
 msgctxt "Content/Moderation/Button/Verb"
 msgid "Add"
 msgstr "Añadir"
@@ -402,7 +472,21 @@ msgctxt "Content/Radio/Paragraph"
 msgid "Add filters to customize your radio"
 msgstr "Añade filtros para personalizar tu radio"
 
-#: front/src/components/audio/PlayButton.vue:75
+#: front/src/components/manage/moderation/NoteForm.vue:12
+#, fuzzy
+msgctxt "Content/Moderation/Button.Label/Verb"
+msgid "Add note"
+msgstr "Añadir contenido"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:191
+#: front/src/views/admin/moderation/DomainsDetail.vue:46
+#: front/src/views/admin/moderation/DomainsList.vue:18
+#, fuzzy
+msgctxt "Content/Moderation/Action/Verb"
+msgid "Add to allow-list"
+msgstr "Añadir a lista de reproducción…"
+
+#: front/src/components/audio/PlayButton.vue:91
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Add to current queue"
 msgstr "Añadir a la cola de reproducción actual"
@@ -434,7 +518,7 @@ msgctxt "Popup/Playlist/Table.Button.Label/Verb"
 msgid "Add track"
 msgstr "Añadir canción"
 
-#: front/src/components/manage/users/UsersTable.vue:69
+#: front/src/components/manage/users/UsersTable.vue:70
 msgctxt "Content/Admin/Table.User role"
 msgid "Admin"
 msgstr "Admin"
@@ -444,49 +528,49 @@ msgctxt "Sidebar/Admin/Title/Noun"
 msgid "Administration"
 msgstr "Administración"
 
-#: front/src/views/admin/library/TrackDetail.vue:107
-msgctxt "*/*/*/Noun"
-msgid "Album"
-msgstr "Álbum"
-
-#: front/src/components/audio/SearchBar.vue:26
+#: front/src/components/audio/SearchBar.vue:33
 #: src/components/audio/track/Table.vue:9
-#: front/src/components/library/AlbumBase.vue:152
-#: front/src/components/library/ArtistBase.vue:194
+#: front/src/components/library/AlbumBase.vue:170
+#: front/src/components/library/ArtistBase.vue:212
 #: front/src/components/manage/library/TracksTable.vue:40
 #: front/src/components/metadata/Search.vue:134
+#: src/components/mixins/Report.vue:41
+#: front/src/views/admin/library/TrackDetail.vue:113
 #: front/src/views/content/libraries/FilesTable.vue:57
+#: front/src/components/mixins/Report.vue:42
 msgctxt "*/*/*"
 msgid "Album"
 msgstr "Álbum"
 
-#: front/src/views/admin/library/TrackDetail.vue:128
+#: front/src/views/admin/library/TrackDetail.vue:134
 msgctxt "*/*/*/Noun"
 msgid "Album artist"
 msgstr "Álbumes de este artista"
 
-#: front/src/views/admin/library/AlbumDetail.vue:92
+#: front/src/views/admin/library/AlbumDetail.vue:98
 msgctxt "Content/Moderation/Title"
 msgid "Album data"
 msgstr "Álbum"
 
-#: front/src/components/mixins/Translations.vue:51
-#: front/src/components/mixins/Translations.vue:52
+#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/mixins/Translations.vue:62
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Album name"
 msgstr "Álbum"
 
 #: front/src/components/audio/Search.vue:19
-#: src/components/instance/Stats.vue:48
-#: front/src/components/library/Albums.vue:120
-#: src/components/library/Library.vue:7
+#: src/components/library/Albums.vue:129
+#: front/src/components/library/Library.vue:7
+#: src/components/library/TagDetail.vue:28
 #: front/src/components/manage/library/ArtistsTable.vue:41
+#: front/src/components/manage/library/TagsTable.vue:43
 #: front/src/views/admin/library/AlbumsList.vue:24
-#: front/src/views/admin/library/ArtistDetail.vue:241
+#: front/src/views/admin/library/ArtistDetail.vue:256
 #: front/src/views/admin/library/Base.vue:11
-#: front/src/views/admin/library/LibraryDetail.vue:219
-#: front/src/views/admin/moderation/AccountsDetail.vue:354
-#: front/src/views/admin/moderation/DomainsDetail.vue:264
+#: front/src/views/admin/library/LibraryDetail.vue:238
+#: front/src/views/admin/library/TagDetail.vue:133
+#: front/src/views/admin/moderation/AccountsDetail.vue:366
+#: front/src/views/admin/moderation/DomainsDetail.vue:301
 msgctxt "*/*/*"
 msgid "Albums"
 msgstr "Álbumes"
@@ -500,7 +584,10 @@ msgstr "Álbumes de este artista"
 #: front/src/components/manage/library/LibrariesTable.vue:13
 #: front/src/components/manage/library/UploadsTable.vue:13
 #: front/src/components/manage/library/UploadsTable.vue:22
+#: front/src/components/manage/moderation/DomainsTable.vue:11
 #: front/src/components/manage/users/InvitationsTable.vue:19
+#: front/src/components/moderation/ReportCategoryDropdown.vue:32
+#: front/src/views/admin/moderation/ReportsList.vue:17
 #: front/src/views/content/libraries/FilesTable.vue:13
 msgctxt "Content/*/Dropdown"
 msgid "All"
@@ -519,40 +606,53 @@ msgctxt "Head/Authorize/Title"
 msgid "Allow application"
 msgstr ""
 
+#: front/src/components/About.vue:136
+msgctxt "*/*/*"
+msgid "Allow-list"
+msgstr ""
+
+#: front/src/components/About.vue:149
+#, fuzzy
+msgctxt "*/*/*"
+msgid "Allowed domains"
+msgstr "Añadir un dominio"
+
 #: front/src/components/library/ImportStatusModal.vue:17
 msgctxt "Popup/Import/Message"
-msgid ""
-"An error occured during upload processing. You will find more information "
-"below."
+msgid "An error occurred during upload processing. You will find more information below."
 msgstr ""
 
 #: front/src/components/playlists/Editor.vue:13
+#, fuzzy
 msgctxt "Content/Playlist/Error message.Title"
-msgid "An error occured while saving your changes"
+msgid "An error occurred while saving your changes"
 msgstr "Ha ocurrido un error al guardar los cambios"
 
 #: front/src/components/federation/FetchButton.vue:21
+#, fuzzy
 msgctxt "Popup/*/Message.Content"
-msgid "An error occured while trying to refresh data:"
+msgid "An error occurred while trying to refresh data:"
 msgstr "Ha ocurrido un error al guardar los cambios"
 
 #: front/src/components/federation/FetchButton.vue:41
+#, fuzzy
 msgctxt "*/*/Error"
-msgid "An HTTP error occured while contacting the remote server"
+msgid "An HTTP error occurred while contacting the remote server"
 msgstr "Ha ocurrido un error al guardar los cambios"
 
-#: front/src/components/auth/Login.vue:10
-msgctxt "Content/Login/Error message/List item"
-msgid ""
-"An unknown error happend, this can mean the server is down or cannot be "
-"reached"
-msgstr ""
-"Ha ocurrido un error desconocido, esto puede significar que el servidor está"
-" fuera de servicio o no se puede conectar"
-
 #: front/src/components/library/ImportStatusModal.vue:145
 msgctxt "Popup/Import/Error.Label"
-msgid "An unkwown error occured"
+msgid "An unknown error occurred"
+msgstr ""
+
+#: front/src/components/About.vue:123
+msgctxt "*/*/*"
+msgid "Anonymous access"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:54
+msgctxt "Popup/Moderation/Error message"
+msgid "Anonymous reports are disabled, please sign-in to submit a report."
 msgstr ""
 
 #: front/src/components/auth/Settings.vue:175
@@ -573,9 +673,7 @@ msgstr ""
 
 #: front/src/components/auth/ApplicationEdit.vue:16
 msgctxt "Content/Application/Paragraph/"
-msgid ""
-"Application ID and secret are really sensitive values and must be treated "
-"like passwords. Do not share those with anyone else."
+msgid "Application ID and secret are really sensitive values and must be treated like passwords. Do not share those with anyone else."
 msgstr ""
 
 #: front/src/components/auth/ApplicationEdit.vue:25
@@ -605,29 +703,27 @@ msgctxt "Content/Login/Title"
 msgid "Are you sure you want to log out?"
 msgstr "¿Seguro que quieres cerrar la sesión?"
 
+#: front/src/components/audio/SearchBar.vue:32
+#: src/components/audio/track/Table.vue:8
 #: front/src/components/manage/library/AlbumsTable.vue:40
 #: front/src/components/manage/library/TracksTable.vue:41
-msgctxt "*/*/*"
-msgid "Artist"
-msgstr "Artista"
-
-#: front/src/components/audio/SearchBar.vue:25
-#: src/components/audio/track/Table.vue:8
 #: front/src/components/metadata/Search.vue:130
-#: front/src/views/admin/library/AlbumDetail.vue:108
-#: front/src/views/admin/library/TrackDetail.vue:118
-#: front/src/views/content/libraries/FilesTable.vue:56
+#: src/components/mixins/Report.vue:55
+#: front/src/views/admin/library/AlbumDetail.vue:114
+#: front/src/views/admin/library/TrackDetail.vue:124
+#: front/src/views/content/libraries/FilesTable.vue:56 src/entities.js:12
+#: front/src/components/mixins/Report.vue:56
 msgctxt "*/*/*/Noun"
 msgid "Artist"
 msgstr "Artista"
 
-#: front/src/views/admin/library/ArtistDetail.vue:91
+#: front/src/views/admin/library/ArtistDetail.vue:96
 msgctxt "Content/Moderation/Title"
 msgid "Artist data"
 msgstr "Nombre del artista"
 
-#: front/src/components/mixins/Translations.vue:52
-#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/mixins/Translations.vue:62
+#: front/src/components/mixins/Translations.vue:63
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Artist name"
 msgstr "Nombre del artista"
@@ -637,36 +733,36 @@ msgctxt "*/Search/Input.Placeholder"
 msgid "Artist, album, track…"
 msgstr "Artista, álbum, canción…"
 
+#: front/src/components/audio/Search.vue:10
+#: src/components/library/Artists.vue:117
+#: front/src/components/library/Library.vue:10
+#: front/src/components/library/TagDetail.vue:19
+#: front/src/components/manage/library/TagsTable.vue:42
 #: front/src/views/admin/library/ArtistsList.vue:24
 #: front/src/views/admin/library/Base.vue:8
-#: front/src/views/admin/library/LibraryDetail.vue:209
-msgctxt "*/*/*"
-msgid "Artists"
-msgstr "Artistas"
-
-#: front/src/components/audio/Search.vue:10
-#: src/components/instance/Stats.vue:42
-#: front/src/components/library/Artists.vue:117
-#: src/components/library/Library.vue:10
-#: front/src/views/admin/moderation/AccountsDetail.vue:346
-#: front/src/views/admin/moderation/DomainsDetail.vue:254
+#: front/src/views/admin/library/LibraryDetail.vue:228
+#: front/src/views/admin/library/TagDetail.vue:123
+#: front/src/views/admin/moderation/AccountsDetail.vue:358
+#: front/src/views/admin/moderation/DomainsDetail.vue:291
 msgctxt "*/*/*/Noun"
 msgid "Artists"
 msgstr "Artistas"
 
 #: front/src/components/favorites/List.vue:34
-#: src/components/library/Albums.vue:25
-#: front/src/components/library/Artists.vue:25
+#: src/components/library/Albums.vue:29
+#: front/src/components/library/Artists.vue:29
 #: src/components/library/Radios.vue:44
 #: front/src/components/manage/library/AlbumsTable.vue:21
 #: front/src/components/manage/library/ArtistsTable.vue:21
 #: front/src/components/manage/library/EditsCardList.vue:39
 #: front/src/components/manage/library/LibrariesTable.vue:30
+#: front/src/components/manage/library/TagsTable.vue:21
 #: front/src/components/manage/library/TracksTable.vue:21
 #: front/src/components/manage/library/UploadsTable.vue:40
 #: front/src/components/manage/moderation/AccountsTable.vue:21
-#: front/src/components/manage/moderation/DomainsTable.vue:19
+#: front/src/components/manage/moderation/DomainsTable.vue:27
 #: front/src/components/manage/users/UsersTable.vue:19
+#: front/src/views/admin/moderation/ReportsList.vue:44
 #: front/src/views/content/libraries/FilesTable.vue:31
 #: front/src/views/playlists/List.vue:27
 msgctxt "Content/Search/Dropdown"
@@ -678,18 +774,24 @@ msgctxt "Content/Signup/Button.Label/Verb"
 msgid "Ask for a password reset"
 msgstr "Restablecer contraseña"
 
-#: front/src/views/admin/library/AlbumDetail.vue:198
-#: front/src/views/admin/library/ArtistDetail.vue:187
-#: front/src/views/admin/library/LibraryDetail.vue:176
-#: front/src/views/admin/library/TrackDetail.vue:250
+#: front/src/components/manage/moderation/ReportCard.vue:72
+msgctxt "Content/Moderation/*"
+msgid "Assigned to"
+msgstr ""
+
+#: front/src/views/admin/library/AlbumDetail.vue:214
+#: front/src/views/admin/library/ArtistDetail.vue:202
+#: front/src/views/admin/library/LibraryDetail.vue:195
+#: front/src/views/admin/library/TagDetail.vue:113
+#: front/src/views/admin/library/TrackDetail.vue:266
 #: front/src/views/admin/library/UploadDetail.vue:191
-#: front/src/views/admin/moderation/AccountsDetail.vue:274
-#: front/src/views/admin/moderation/DomainsDetail.vue:202
+#: front/src/views/admin/moderation/AccountsDetail.vue:285
+#: front/src/views/admin/moderation/DomainsDetail.vue:239
 msgctxt "Content/Moderation/Title"
 msgid "Audio content"
 msgstr "Contenido de Audio"
 
-#: front/src/components/ShortcutsModal.vue:55
+#: front/src/components/ShortcutsModal.vue:92
 msgctxt "Popup/Keyboard shortcuts/Title"
 msgid "Audio player shortcuts"
 msgstr "Atajos de teclado del reproductor de Audio"
@@ -732,9 +834,9 @@ msgid "Back to settings"
 msgstr "Actualizar ajustes"
 
 #: front/src/components/library/TrackDetail.vue:48
-#: front/src/components/mixins/Translations.vue:55
+#: front/src/components/mixins/Translations.vue:67
 #: front/src/views/admin/library/UploadDetail.vue:227
-#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:68
 msgctxt "Content/Track/*/Noun"
 msgid "Bitrate"
 msgstr "Bitrate"
@@ -747,14 +849,8 @@ msgstr "Bloquear todo"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:112
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Block everything from this account or domain. This will prevent any "
-"interaction with the entity, and purge related content (uploads, libraries, "
-"follows, etc.)"
-msgstr ""
-"Bloquear todo de esta cuenta o dominio. Ésto prevendrá cualquier interacción"
-" con la entidad, y eliminará los contenidos relacionados (subidas, "
-"librerías, follows, etc.)"
+msgid "Block everything from this account or domain. This will prevent any interaction with the entity, and purge related content (uploads, libraries, follows, etc.)"
+msgstr "Bloquear todo de esta cuenta o dominio. Ésto prevendrá cualquier interacción con la entidad, y eliminará los contenidos relacionados (subidas, librerías, follows, etc.)"
 
 #: front/src/components/Sidebar.vue:18 src/components/library/Library.vue:4
 msgctxt "*/Library/*/Verb"
@@ -766,6 +862,12 @@ msgctxt "Sidebar/Library/List item.Link/Verb"
 msgid "Browse library"
 msgstr "Explorar biblioteca"
 
+#: front/src/components/Home.vue:132
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Browse public content"
+msgstr "Actualiza el contenido de la tabla"
+
 #: front/src/components/library/Albums.vue:4
 msgctxt "Content/Album/Title"
 msgid "Browsing albums"
@@ -796,38 +898,40 @@ msgctxt "Content/Album/Card"
 msgid "By %{ artist }"
 msgstr "De %{ artist }"
 
-#: front/src/views/content/remote/Card.vue:112
+#: front/src/views/content/remote/Card.vue:125
 msgctxt "Popup/Library/Paragraph"
 msgid "By unfollowing this library, you loose access to its content."
 msgstr "Si dejas de seguir esta biblioteca, perderás acceso a su contenido."
 
-#: front/src/views/admin/library/AlbumDetail.vue:214
-#: front/src/views/admin/library/ArtistDetail.vue:203
-#: front/src/views/admin/library/LibraryDetail.vue:192
-#: front/src/views/admin/library/TrackDetail.vue:266
+#: front/src/views/admin/library/AlbumDetail.vue:230
+#: front/src/views/admin/library/ArtistDetail.vue:218
+#: front/src/views/admin/library/LibraryDetail.vue:211
+#: front/src/views/admin/library/TrackDetail.vue:282
 #: front/src/views/admin/library/UploadDetail.vue:208
-#: front/src/views/admin/moderation/AccountsDetail.vue:290
-#: front/src/views/admin/moderation/DomainsDetail.vue:217
+#: front/src/views/admin/moderation/AccountsDetail.vue:301
+#: front/src/views/admin/moderation/DomainsDetail.vue:254
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Cached size"
 msgstr "Tamaño en caché"
 
 #: front/src/components/SetInstanceModal.vue:37
 #: front/src/components/common/DangerousButton.vue:17
-#: front/src/components/library/AlbumBase.vue:36
-#: front/src/components/library/ArtistBase.vue:47
-#: front/src/components/library/EditForm.vue:95
-#: front/src/components/library/TrackBase.vue:55
+#: front/src/components/library/AlbumBase.vue:37
+#: front/src/components/library/ArtistBase.vue:48
+#: front/src/components/library/EditForm.vue:107
+#: front/src/components/library/TrackBase.vue:53
 #: front/src/components/library/radios/Filter.vue:53
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:54
 #: front/src/components/moderation/FilterModal.vue:39
+#: front/src/components/moderation/ReportModal.vue:59
 #: front/src/components/playlists/PlaylistModal.vue:26
 #: front/src/components/playlists/PlaylistModal.vue:77
+#: front/src/views/playlists/Detail.vue:62
 msgctxt "*/*/Button.Label/Verb"
 msgid "Cancel"
 msgstr "Cancelar"
 
-#: front/src/views/content/remote/Card.vue:97
+#: front/src/views/content/remote/Card.vue:110
 #, fuzzy
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Cancel follow request"
@@ -841,8 +945,15 @@ msgstr "Candidatos"
 #: front/src/components/library/FileUpload.vue:261
 msgctxt "Content/Library/Help text"
 msgid "Cannot upload this file, ensure it is not too big"
+msgstr "No es posible subir este archivo, asegúrate que no es demasiado grande"
+
+#: front/src/components/manage/moderation/ReportCard.vue:30
+#: front/src/components/mixins/Translations.vue:42
+#: front/src/components/moderation/ReportCategoryDropdown.vue:2
+#: front/src/components/mixins/Translations.vue:43
+msgctxt "*/*/*"
+msgid "Category"
 msgstr ""
-"No es posible subir este archivo, asegúrate que no es demasiado grande"
 
 #: front/src/components/Footer.vue:21
 msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
@@ -859,6 +970,11 @@ msgctxt "Content/Settings/Button.Label"
 msgid "Change password"
 msgstr "Cambiar contraseña"
 
+#: front/src/components/Footer.vue:37
+msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
+msgid "Change theme"
+msgstr ""
+
 #: front/src/views/auth/PasswordResetConfirm.vue:62
 msgctxt "*/Signup/Title"
 msgid "Change your password"
@@ -876,28 +992,22 @@ msgstr "Cambios sincronizados con el servidor"
 
 #: front/src/components/auth/Settings.vue:71
 msgctxt "Content/Settings/Paragraph'"
-msgid ""
-"Changing your password will also change your Subsonic API password if you "
-"have requested one."
-msgstr ""
-"Cambiar tu contraseña también cambiará tu contraseña Subsonic API si pediste"
-" una."
+msgid "Changing your password will also change your Subsonic API password if you have requested one."
+msgstr "Cambiar tu contraseña también cambiará tu contraseña Subsonic API si pediste una."
 
 #: front/src/components/auth/Settings.vue:98
 msgctxt "Popup/Settings/Paragraph"
 msgid "Changing your password will have the following consequences:"
 msgstr "Cambiar tu contraseña tendrá las siguientes consecuencias"
 
-#: front/src/components/Footer.vue:40
+#: front/src/components/Footer.vue:48
 msgctxt "Footer/*/List item.Link"
 msgid "Chat room"
 msgstr "Sala Chat"
 
 #: front/src/components/auth/ApplicationForm.vue:24
 msgctxt "Content/Applications/Paragraph/"
-msgid ""
-"Checking the parent \"Read\" or \"Write\" scopes implies access to all the "
-"corresponding children scopes."
+msgid "Checking the parent \"Read\" or \"Write\" scopes implies access to all the corresponding children scopes."
 msgstr ""
 
 #: front/src/components/SetInstanceModal.vue:2
@@ -905,12 +1015,9 @@ msgctxt "Popup/Instance/Title"
 msgid "Choose your instance"
 msgstr "Escoge tu instancia"
 
-#: front/src/components/manage/users/InvitationForm.vue:37
-msgctxt "Content/Admin/Button.Label/Verb"
-msgid "Clear"
-msgstr "Limpiar"
-
 #: front/src/components/library/EditForm.vue:75
+#: front/src/components/library/EditForm.vue:88
+#: front/src/components/manage/users/InvitationForm.vue:37
 msgctxt "Content/Library/Button.Label"
 msgid "Clear"
 msgstr "Limpiar"
@@ -921,22 +1028,21 @@ msgctxt "*/Playlist/Button.Label/Verb"
 msgid "Clear playlist"
 msgstr "Vaciar lista de reproducción"
 
-#: front/src/components/audio/Player.vue:642
+#: front/src/components/ShortcutsModal.vue:144
+#, fuzzy
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Clear queue"
+msgstr "Vaciar cola de reproducción"
+
+#: front/src/components/audio/Player.vue:668
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Clear your queue"
 msgstr "Vaciar cola de reproducción"
 
-#: front/src/components/Home.vue:44
-msgctxt "Content/Home/List item/Verb"
-msgid "Click once, listen for hours using built-in radios"
-msgstr ""
-"Pulsa una sola vez y escucha durante horas, gracias a las radios integradas"
-
 #: front/src/components/mixins/Translations.vue:21
 #: front/src/components/mixins/Translations.vue:22
 msgctxt "Content/Library/Link.Title"
-msgid ""
-"Click to display more information about the import process for this upload"
+msgid "Click to display more information about the import process for this upload"
 msgstr ""
 
 #: front/src/components/library/FileUpload.vue:82
@@ -944,22 +1050,25 @@ msgctxt "Content/Library/Paragraph/Call to action"
 msgid "Click to select files to upload or drag and drop files or directories"
 msgstr "Haz click para seleccionar archivos o arrastralos aquí para subirlos"
 
+#: front/src/components/ShortcutsModal.vue:38
 #: front/src/components/federation/FetchButton.vue:85
 #: front/src/components/library/ImportStatusModal.vue:79
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:34
 msgctxt "*/*/Button.Label/Verb"
 msgid "Close"
 msgstr "Cerrar"
 
-#: front/src/components/ShortcutsModal.vue:20
-msgctxt "Popup/Keyboard shortcuts/Button.Label/Verb"
-msgid "Close"
-msgstr "Cerrar"
-
 #: front/src/components/federation/FetchButton.vue:88
 msgctxt "*/*/Button.Label/Verb"
 msgid "Close and reload page"
 msgstr ""
 
+#: front/src/components/About.vue:94
+#, fuzzy
+msgctxt "*/*/*/State of registrations"
+msgid "Closed"
+msgstr "Cerrar"
+
 #: front/src/components/manage/users/InvitationForm.vue:26
 #: front/src/components/manage/users/InvitationsTable.vue:42
 msgctxt "Content/Admin/Table.Label/Noun"
@@ -967,8 +1076,9 @@ msgid "Code"
 msgstr "Código"
 
 #: front/src/components/audio/album/Card.vue:41
-#: front/src/components/audio/artist/Card.vue:33
-msgctxt "Content/*/Card.Link/Verb"
+#: front/src/components/common/CollapseLink.vue:3
+#, fuzzy
+msgctxt "*/*/Button,Label"
 msgid "Collapse"
 msgstr "Contraer"
 
@@ -992,42 +1102,47 @@ msgctxt "Content/Signup/Form.Label"
 msgid "Confirmation code"
 msgstr "Código de confirmación"
 
+#: front/src/components/About.vue:67 src/components/Home.vue:65
+msgctxt "Content/Home/Header/Name"
+msgid "Contact"
+msgstr ""
+
 #: front/src/components/moderation/FilterModal.vue:90
 msgctxt "*/Moderation/Message"
 msgid "Content filter successfully added"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:96
-#: front/src/components/mixins/Translations.vue:97
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Content filters"
-msgstr "Seleccionar un filtro"
-
 #: front/src/components/auth/Settings.vue:116
+#: front/src/components/mixins/Translations.vue:108
+#: front/src/components/mixins/Translations.vue:109
 msgctxt "Content/Settings/Title/Noun"
 msgid "Content filters"
 msgstr "Seleccionar un filtro"
 
 #: front/src/components/auth/Settings.vue:119
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"Content filters help you hide content you don't want to see on the service."
+msgid "Content filters help you hide content you don't want to see on the service."
 msgstr ""
 
 #: front/src/components/common/ActionTable.vue:8
 msgctxt "Content/*/Button.Help text.Paragraph"
 msgid "Content have been updated, click refresh to see up-to-date content"
-msgstr ""
-"El contenido ha sido actualizado, haz click en refrescar para ver el "
-"contenido actualizado"
+msgstr "El contenido ha sido actualizado, haz click en refrescar para ver el contenido actualizado"
 
-#: front/src/components/Footer.vue:48
+#: front/src/components/About.vue:46
+#, fuzzy
+msgctxt "Content/About/Header"
+msgid "Contents"
+msgstr "Seleccionar un filtro"
+
+#: front/src/components/Footer.vue:56
 msgctxt "Footer/*/List item.Link"
 msgid "Contribute"
 msgstr "Contribuye"
 
-#: front/src/components/audio/EmbedWizard.vue:19
+#: front/src/components/audio/EmbedWizard.vue:29
 #: front/src/components/common/CopyInput.vue:8
+#: front/src/components/forms/PasswordInput.vue:43
 msgctxt "*/*/Button.Label/Short, Verb"
 msgid "Copy"
 msgstr "Copiar"
@@ -1042,14 +1157,14 @@ msgctxt "Content/Auth/Paragraph"
 msgid "Copy-paste the following code in the application:"
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:21
+#: front/src/components/audio/EmbedWizard.vue:31
 msgctxt "Popup/Embed/Paragraph"
 msgid "Copy/paste this code in your website HTML"
 msgstr "Copia/Pega este código en el HTML de tu página web"
 
 #: front/src/components/library/TrackDetail.vue:10
-#: front/src/views/admin/library/TrackDetail.vue:153
-msgctxt "Content/Track/Table.Label/Noun"
+#: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:77
+msgctxt "Content/Track/*/Noun"
 msgid "Copyright"
 msgstr "Copyright"
 
@@ -1063,29 +1178,20 @@ msgctxt "Content/Library/Error message.Title"
 msgid "Could not fetch remote library"
 msgstr "Error al importar la biblioteca remote"
 
-#: front/src/components/Home.vue:80
-msgctxt "Content/Home/List item"
-msgid "Covers, lyrics, our goal is to have them all ;)"
-msgstr "Covers, letras, queremos conseguirlo todo ;)"
-
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:58
 msgctxt "Content/Moderation/Card.Button.Label/Verb"
 msgid "Create"
 msgstr "Crear"
 
-#: front/src/components/auth/Signup.vue:4
+#: front/src/views/auth/Signup.vue:4
 msgctxt "Content/Signup/Title"
 msgid "Create a funkwhale account"
 msgstr "Crear una cuenta de funkwhale"
 
-#: front/src/components/auth/Settings.vue:220
-msgctxt "Content/Settings/Button.Label"
-msgid "Create a new application"
-msgstr "Crear una nueva lista de reproducción"
-
 #: front/src/components/auth/ApplicationNew.vue:8
 #: front/src/components/auth/ApplicationNew.vue:41
-msgctxt "Content/Applications/Title"
+#: front/src/components/auth/Settings.vue:220
+msgctxt "Content/Settings/Button.Label"
 msgid "Create a new application"
 msgstr "Crear una nueva lista de reproducción"
 
@@ -1099,7 +1205,7 @@ msgctxt "Popup/Playlist/Title/Verb"
 msgid "Create a new playlist"
 msgstr "Crear una nueva lista de reproducción"
 
-#: front/src/components/Sidebar.vue:57 src/components/auth/Login.vue:17
+#: front/src/components/Sidebar.vue:57 src/components/auth/LoginForm.vue:15
 msgctxt "*/Signup/Link/Verb"
 msgid "Create an account"
 msgstr "Crear una cuenta"
@@ -1114,7 +1220,7 @@ msgctxt "Content/Library/Button.Label/Verb"
 msgid "Create library"
 msgstr "Crear biblioteca"
 
-#: front/src/components/auth/Signup.vue:53
+#: front/src/components/auth/SignupForm.vue:49
 msgctxt "Content/Signup/Button.Label"
 msgid "Create my account"
 msgstr "Crear mi cuenta"
@@ -1139,11 +1245,13 @@ msgstr "Crear tu propia radio"
 #: front/src/components/manage/library/AlbumsTable.vue:44
 #: front/src/components/manage/library/ArtistsTable.vue:43
 #: front/src/components/manage/library/LibrariesTable.vue:54
+#: front/src/components/manage/library/TagsTable.vue:45
 #: front/src/components/manage/library/TracksTable.vue:44
 #: front/src/components/manage/library/UploadsTable.vue:66
+#: front/src/components/manage/moderation/ReportCard.vue:43
 #: front/src/components/manage/users/InvitationsTable.vue:40
-#: front/src/components/mixins/Translations.vue:43
-#: front/src/components/mixins/Translations.vue:44
+#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/mixins/Translations.vue:54
 msgctxt "Content/*/*/Noun"
 msgid "Creation date"
 msgstr "Fecha de creación"
@@ -1153,6 +1261,12 @@ msgctxt "Content/Settings/Title/Noun"
 msgid "Current avatar"
 msgstr "Avatar actual"
 
+#: front/src/components/admin/SettingsGroup.vue:67
+#, fuzzy
+msgctxt "Content/Settings/Title/Noun"
+msgid "Current image"
+msgstr "Uso actual"
+
 #: front/src/views/content/libraries/DetailArea.vue:4
 msgctxt "Content/Library/Title"
 msgid "Current library"
@@ -1168,6 +1282,11 @@ msgctxt "Content/Library/Title"
 msgid "Current usage"
 msgstr "Uso actual"
 
+#: front/src/components/Footer.vue:94
+msgctxt "Footer/Settings/Dropdown.Label/Theme name"
+msgid "Dark"
+msgstr ""
+
 #: front/src/components/federation/FetchButton.vue:53
 msgctxt "*/*/Error"
 msgid "Data returned by the remote server had invalid or missing attributes"
@@ -1188,7 +1307,7 @@ msgctxt "Popup/Import/Table.Label/Noun"
 msgid "Debug information"
 msgstr "Información de la canción"
 
-#: front/src/components/ShortcutsModal.vue:75
+#: front/src/components/ShortcutsModal.vue:128
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Decrease volume"
 msgstr "Reducir volumen"
@@ -1200,23 +1319,29 @@ msgstr "Reducir volumen"
 #: front/src/components/manage/library/AlbumsTable.vue:188
 #: front/src/components/manage/library/ArtistsTable.vue:178
 #: front/src/components/manage/library/LibrariesTable.vue:205
+#: front/src/components/manage/library/TagsTable.vue:179
 #: front/src/components/manage/library/TracksTable.vue:188
 #: front/src/components/manage/library/UploadsTable.vue:255
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:61
+#: front/src/components/manage/moderation/NotesThread.vue:24
+#: front/src/components/manage/moderation/NotesThread.vue:29
+#: front/src/components/manage/moderation/ReportCard.vue:360
 #: front/src/components/manage/users/InvitationsTable.vue:167
-#: front/src/views/admin/library/AlbumDetail.vue:72
-#: front/src/views/admin/library/AlbumDetail.vue:77
-#: front/src/views/admin/library/ArtistDetail.vue:71
+#: front/src/views/admin/library/AlbumDetail.vue:78
+#: front/src/views/admin/library/AlbumDetail.vue:83
 #: front/src/views/admin/library/ArtistDetail.vue:76
+#: front/src/views/admin/library/ArtistDetail.vue:81
 #: front/src/views/admin/library/LibraryDetail.vue:58
 #: front/src/views/admin/library/LibraryDetail.vue:63
-#: front/src/views/admin/library/TrackDetail.vue:71
-#: front/src/views/admin/library/TrackDetail.vue:76
+#: front/src/views/admin/library/TagDetail.vue:41
+#: front/src/views/admin/library/TagDetail.vue:46
+#: front/src/views/admin/library/TrackDetail.vue:77
+#: front/src/views/admin/library/TrackDetail.vue:82
 #: front/src/views/admin/library/UploadDetail.vue:65
 #: front/src/views/admin/library/UploadDetail.vue:70
 #: front/src/views/content/libraries/FilesTable.vue:222
 #: front/src/views/content/libraries/Form.vue:29
-#: src/views/playlists/Detail.vue:34
+#: src/views/playlists/Detail.vue:42
 msgctxt "*/*/*/Verb"
 msgid "Delete"
 msgstr "Borrar"
@@ -1241,7 +1366,20 @@ msgctxt "Popup/Moderation/Button.Label/Verb"
 msgid "Delete moderation rule"
 msgstr "Borrar regla de moderación"
 
-#: front/src/views/playlists/Detail.vue:39
+#: front/src/components/auth/Settings.vue:274
+#: src/components/auth/Settings.vue:302
+#, fuzzy
+msgctxt "*/*/Button.Label"
+msgid "Delete my account"
+msgstr "Crear mi cuenta"
+
+#: front/src/components/auth/Settings.vue:297
+#, fuzzy
+msgctxt "*/*/Button.Label"
+msgid "Delete my account…"
+msgstr "Crear mi cuenta"
+
+#: front/src/views/playlists/Detail.vue:47
 msgctxt "Popup/Playlist/Button.Label/Verb"
 msgid "Delete playlist"
 msgstr "Borrar lista de reproducción"
@@ -1251,13 +1389,23 @@ msgctxt "Popup/Radio/Button.Label/Verb"
 msgid "Delete radio"
 msgstr "Borrar radio"
 
-#: front/src/views/admin/library/AlbumDetail.vue:73
-#: front/src/views/admin/library/TrackDetail.vue:72
-msgctxt "Popup/Library/Title"
-msgid "Delete this album?"
-msgstr "¿Eliminar la biblioteca?"
-
-#: front/src/views/admin/library/ArtistDetail.vue:72
+#: front/src/components/manage/moderation/ReportCard.vue:357
+msgctxt "Content/Moderation/Button/Verb"
+msgid "Delete reported object"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:358
+msgctxt "Content/Moderation/Popup/Header"
+msgid "Delete reported object?"
+msgstr ""
+
+#: front/src/views/admin/library/AlbumDetail.vue:79
+#: front/src/views/admin/library/TrackDetail.vue:78
+msgctxt "Popup/Library/Title"
+msgid "Delete this album?"
+msgstr "¿Eliminar la biblioteca?"
+
+#: front/src/views/admin/library/ArtistDetail.vue:77
 msgctxt "Popup/Library/Title"
 msgid "Delete this artist?"
 msgstr "¿Eliminar la biblioteca?"
@@ -1273,60 +1421,71 @@ msgctxt "Popup/Moderation/Title"
 msgid "Delete this moderation rule?"
 msgstr "¿Eliminar ésta regla de moderación?"
 
+#: front/src/components/manage/moderation/NotesThread.vue:25
+#, fuzzy
+msgctxt "Popup/Moderation/Title"
+msgid "Delete this note?"
+msgstr "¿Eliminar la biblioteca?"
+
 #: front/src/components/library/EditCard.vue:94
 msgctxt "Popup/Library/Title"
 msgid "Delete this suggestion?"
 msgstr "¿Eliminar ésta regla de moderación?"
 
+#: front/src/views/admin/library/TagDetail.vue:42
+#, fuzzy
+msgctxt "Popup/Library/Title"
+msgid "Delete this tag?"
+msgstr "¿Eliminar la biblioteca?"
+
 #: front/src/views/admin/library/UploadDetail.vue:66
 msgctxt "Popup/Library/Title"
 msgid "Delete this upload?"
 msgstr "¿Eliminar la biblioteca?"
 
 #: front/src/components/favorites/List.vue:35
-#: src/components/library/Albums.vue:26
-#: front/src/components/library/Artists.vue:26
+#: src/components/library/Albums.vue:30
+#: front/src/components/library/Artists.vue:30
 #: src/components/library/Radios.vue:47
 #: front/src/components/manage/library/AlbumsTable.vue:22
 #: front/src/components/manage/library/ArtistsTable.vue:22
 #: front/src/components/manage/library/EditsCardList.vue:40
 #: front/src/components/manage/library/LibrariesTable.vue:31
+#: front/src/components/manage/library/TagsTable.vue:22
 #: front/src/components/manage/library/TracksTable.vue:22
 #: front/src/components/manage/library/UploadsTable.vue:41
 #: front/src/components/manage/moderation/AccountsTable.vue:22
-#: front/src/components/manage/moderation/DomainsTable.vue:20
+#: front/src/components/manage/moderation/DomainsTable.vue:28
 #: front/src/components/manage/users/UsersTable.vue:20
+#: front/src/views/admin/moderation/ReportsList.vue:45
 #: front/src/views/content/libraries/FilesTable.vue:32
 #: front/src/views/playlists/List.vue:28
 msgctxt "Content/Search/Dropdown"
 msgid "Descending"
 msgstr "Descendente"
 
-#: front/src/views/admin/library/LibraryDetail.vue:123
-msgctxt "*/*/*/Noun"
-msgid "Description"
-msgstr "Descripción"
+#: front/src/components/manage/moderation/NoteForm.vue:37
+msgctxt "Content/Moderation/Placeholder"
+msgid "Describe what actions have been taken, or any other related updates…"
+msgstr ""
 
 #: front/src/components/library/radios/Builder.vue:25
+#: front/src/views/admin/library/LibraryDetail.vue:132
 #: front/src/views/content/libraries/Form.vue:14
-msgctxt "Content/*/Input.Label/Noun"
+msgctxt "*/*/*/Noun"
 msgid "Description"
 msgstr "Descripción"
 
 #: front/src/views/content/libraries/Card.vue:48
-#: src/views/content/remote/Card.vue:54
+#: src/views/content/remote/Card.vue:67
 msgctxt "Content/Library/Card.Button.Label/Noun"
 msgid "Details"
 msgstr "Detalles"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:491
+#: front/src/views/admin/moderation/AccountsDetail.vue:511
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Determine how much content the user can upload. Leave empty to use the "
-"default value of the instance."
-msgstr ""
-"Establecer cuanto contenido puede subir el usuario. Déjalo en blanco para "
-"usar el valor por defecto de la instancia."
+msgid "Determine how much content the user can upload. Leave empty to use the default value of the instance."
+msgstr "Establecer cuanto contenido puede subir el usuario. Déjalo en blanco para usar el valor por defecto de la instancia."
 
 #: front/src/components/mixins/Translations.vue:8
 #: front/src/components/mixins/Translations.vue:9
@@ -1335,38 +1494,51 @@ msgid "Determine the visibility level of your activity"
 msgstr "Determina el nivel de visibilidad de tu actividad"
 
 #: front/src/components/auth/Settings.vue:104
-#: front/src/components/auth/SubsonicTokenForm.vue:51
+#: front/src/components/auth/SubsonicTokenForm.vue:56
 msgctxt "Popup/Settings/Button.Label"
 msgid "Disable access"
 msgstr "Desactivar acceso"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:48
+#: front/src/components/auth/SubsonicTokenForm.vue:53
 msgctxt "Content/Settings/Button.Label/Verb"
 msgid "Disable Subsonic access"
 msgstr "Desactivar el acceso Subsonic"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:49
+#: front/src/components/auth/SubsonicTokenForm.vue:54
 msgctxt "Popup/Settings/Title"
 msgid "Disable Subsonic API access?"
 msgstr "¿Desactivar el acceso al API de Subsonic?"
 
+#: front/src/components/About.vue:118 src/components/About.vue:131
+#: front/src/components/About.vue:144
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:18
 #: front/src/views/admin/moderation/AccountsDetail.vue:157
 #: front/src/views/admin/moderation/AccountsDetail.vue:161
-msgctxt "*/*/*"
+#, fuzzy
+msgctxt "*/*/*/State of feature"
 msgid "Disabled"
 msgstr "Desactivado"
 
-#: front/src/views/admin/library/TrackDetail.vue:145
+#: front/src/views/admin/library/TrackDetail.vue:151
 msgctxt "*/*/*/Noun"
 msgid "Disc number"
 msgstr ""
 
+#: front/src/components/Home.vue:157
+msgctxt "Content/Home/Link"
+msgid "Discover everything you need to know about Funkwhale and its features"
+msgstr ""
+
 #: front/src/components/auth/SubsonicTokenForm.vue:13
 msgctxt "Content/Settings/Link"
 msgid "Discover how to use Funkwhale from other apps"
 msgstr "Descubre cómo utilizar Funkwhale desde otras aplicaciones"
 
+#: front/src/views/Notifications.vue:45
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Discover other ways to help"
+msgstr ""
+
 #: front/src/views/admin/moderation/AccountsDetail.vue:132
 msgctxt "'Content/*/*/Noun'"
 msgid "Display name"
@@ -1379,13 +1551,14 @@ msgstr "Mostrar públicamente"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:122
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Do not download any media file (audio, album cover, account avatar…) from "
-"this account or domain. This will purge existing content as well."
-msgstr ""
-"No descargar ningún archivo media (audio, portada de album, avatar de "
-"cuenta...) de ésta cuenta o dominio. Ésto borrará el contenido existente "
-"también."
+msgid "Do not download any media file (audio, album cover, account avatar…) from this account or domain. This will purge existing content as well."
+msgstr "No descargar ningún archivo media (audio, portada de album, avatar de cuenta…) de ésta cuenta o dominio. Ésto borrará el contenido existente también."
+
+#: front/src/views/Notifications.vue:36
+#, fuzzy
+msgctxt "Content/Notifications/Header"
+msgid "Do you like Funkwhale?"
+msgstr "Acerca de Funkwhale"
 
 #: front/src/components/playlists/Editor.vue:51
 msgctxt "Popup/Playlist/Title"
@@ -1397,7 +1570,7 @@ msgctxt "Modal/*/Title"
 msgid "Do you want to confirm this action?"
 msgstr "¿Quieres confirmar esta acción?"
 
-#: front/src/views/playlists/Detail.vue:35
+#: front/src/views/playlists/Detail.vue:43
 msgctxt "Popup/Playlist/Title/Call to action"
 msgid "Do you want to delete the playlist \"%{ playlist }\"?"
 msgstr "¿Quieres borrar la lista de reproducción \"%{ playlist }\"?"
@@ -1407,6 +1580,12 @@ msgctxt "Popup/Radio/Title"
 msgid "Do you want to delete the radio \"%{ radio }\"?"
 msgstr "¿Quieres borrar la radio \"%{ radio }\"?"
 
+#: front/src/components/auth/Settings.vue:298
+#, fuzzy
+msgctxt "Popup/Settings/Title"
+msgid "Do you want to delete your account?"
+msgstr "¿Quieres restaurar tu cola de reproducción anterior?"
+
 #: front/src/components/moderation/FilterModal.vue:3
 msgctxt "Popup/Moderation/Title/Verb"
 msgid "Do you want to hide content from artist \"%{ name }\"?"
@@ -1420,7 +1599,13 @@ msgid_plural "Do you want to launch %{ action } on %{ count } elements?"
 msgstr[0] "¿Quieres realizar la acción %{ action } en %{ count } elemento?"
 msgstr[1] "¿Quieres realizar la acción %{ action } en %{ count } elementos?"
 
-#: front/src/components/Sidebar.vue:118
+#: front/src/components/moderation/ReportModal.vue:3
+#, fuzzy
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Do you want to report this object?"
+msgstr "¿Quieres confirmar esta acción?"
+
+#: front/src/components/Sidebar.vue:122
 msgctxt "Sidebar/Queue/Message"
 msgid "Do you want to restore your previous queue?"
 msgstr "¿Quieres restaurar tu cola de reproducción anterior?"
@@ -1436,26 +1621,33 @@ msgstr "Documentación"
 #: front/src/components/manage/library/TracksTable.vue:42
 #: front/src/components/manage/library/UploadsTable.vue:62
 #: front/src/components/manage/moderation/AccountsTable.vue:40
-#: front/src/components/mixins/Translations.vue:60
-#: front/src/views/admin/library/AlbumDetail.vue:118
-#: front/src/views/admin/library/ArtistDetail.vue:107
-#: front/src/views/admin/library/LibraryDetail.vue:114
-#: front/src/views/admin/library/TrackDetail.vue:170
+#: front/src/components/manage/moderation/ReportCard.vue:169
+#: front/src/components/manage/moderation/ReportCard.vue:179
+#: front/src/components/mixins/Translations.vue:72
+#: front/src/views/admin/library/AlbumDetail.vue:124
+#: front/src/views/admin/library/ArtistDetail.vue:112
+#: front/src/views/admin/library/LibraryDetail.vue:123
+#: front/src/views/admin/library/TrackDetail.vue:176
 #: front/src/views/admin/library/UploadDetail.vue:121
 #: front/src/views/admin/moderation/AccountsDetail.vue:123
-#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/mixins/Translations.vue:73
 msgctxt "Content/Moderation/*/Noun"
 msgid "Domain"
 msgstr "Dominio"
 
-#: front/src/views/admin/moderation/Base.vue:5
+#: front/src/views/admin/moderation/Base.vue:8
 #: front/src/views/admin/moderation/DomainsList.vue:3
-#: front/src/views/admin/moderation/DomainsList.vue:48
+#: front/src/views/admin/moderation/DomainsList.vue:54
 msgctxt "*/Moderation/*/Noun"
 msgid "Domains"
 msgstr "Dominios"
 
-#: front/src/components/library/TrackBase.vue:39
+#: front/src/views/Notifications.vue:42
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Donate"
+msgstr ""
+
+#: front/src/components/library/TrackBase.vue:37
 #: front/src/views/admin/library/UploadDetail.vue:58
 msgctxt "Content/Track/Link/Verb"
 msgid "Download"
@@ -1464,16 +1656,14 @@ msgstr "Descargar"
 #: front/src/components/playlists/Editor.vue:59
 msgctxt "Content/Playlist/Paragraph/Call to action"
 msgid "Drag and drop rows to reorder tracks in the playlist"
-msgstr ""
-"Arrastra y suelta las filas para reordenar canciones en la lista de "
-"reproducción"
+msgstr "Arrastra y suelta las filas para reordenar canciones en la lista de reproducción"
 
 #: front/src/components/audio/track/Table.vue:10
 #: front/src/components/library/TrackDetail.vue:30
-#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:68
 #: front/src/views/admin/library/UploadDetail.vue:238
 #: front/src/views/content/libraries/FilesTable.vue:60
-#: front/src/components/mixins/Translations.vue:57
+#: front/src/components/mixins/Translations.vue:69
 msgctxt "Content/*/*"
 msgid "Duration"
 msgstr "Duración"
@@ -1483,41 +1673,27 @@ msgctxt "Content/Signup/Message"
 msgid "E-mail address confirmed"
 msgstr "Dirección e-mail confirmada"
 
-#: front/src/components/Home.vue:88
-msgctxt "Content/Home/Title"
-msgid "Easy to use"
-msgstr "Fácil de usar"
-
-#: front/src/components/library/AlbumBase.vue:68
-#: front/src/components/library/ArtistBase.vue:79
-#: front/src/components/library/TrackBase.vue:87
+#: front/src/components/auth/Settings.vue:246
+#: src/components/library/AlbumBase.vue:73
+#: front/src/components/library/ArtistBase.vue:84
+#: front/src/components/library/TrackBase.vue:89
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:45
 #: front/src/components/radios/Card.vue:23
-#: src/views/admin/library/AlbumDetail.vue:65
-#: front/src/views/admin/library/ArtistDetail.vue:64
-#: front/src/views/admin/library/TrackDetail.vue:64
+#: src/views/admin/library/AlbumDetail.vue:71
+#: front/src/views/admin/library/ArtistDetail.vue:69
+#: front/src/views/admin/library/TrackDetail.vue:70
 #: front/src/views/content/libraries/Detail.vue:9
 #: src/views/playlists/Detail.vue:31
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Edit"
 msgstr "Editar"
 
-#: front/src/components/auth/Settings.vue:246
-msgctxt "Content/Settings/Button.Label"
-msgid "Edit"
-msgstr "Editar"
-
 #: front/src/components/auth/ApplicationEdit.vue:30
 #: front/src/components/auth/ApplicationEdit.vue:75
 msgctxt "Content/Applications/Title"
 msgid "Edit application"
 msgstr "Error al aplicar la acción"
 
-#: front/src/components/About.vue:22
-msgctxt "Content/Settings/Button.Label/Verb"
-msgid "Edit instance info"
-msgstr "Editar la información de esta instancia"
-
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:3
 msgctxt "Content/Moderation/Card.Title/Verb"
 msgid "Edit moderation rule"
@@ -1538,23 +1714,20 @@ msgctxt "Content/*/Title"
 msgid "Edit this track"
 msgstr "Reproducir canción"
 
-#: front/src/views/admin/library/AlbumDetail.vue:182
-#: front/src/views/admin/library/ArtistDetail.vue:171
+#: front/src/components/mixins/Translations.vue:116
+#: front/src/views/admin/library/AlbumDetail.vue:198
+#: front/src/views/admin/library/ArtistDetail.vue:186
 #: front/src/views/admin/library/Base.vue:5
 #: src/views/admin/library/EditsList.vue:24
-#: front/src/views/admin/library/TrackDetail.vue:234
+#: front/src/views/admin/library/TrackDetail.vue:250
+#: front/src/components/mixins/Translations.vue:117
 msgctxt "*/Admin/*/Noun"
 msgid "Edits"
 msgstr "Editar"
 
-#: front/src/components/mixins/Translations.vue:104
-#: front/src/components/mixins/Translations.vue:105
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Edits"
-msgstr "Editar"
-
-#: front/src/components/auth/Signup.vue:30
+#: front/src/components/auth/SignupForm.vue:26
 #: front/src/components/manage/users/UsersTable.vue:38
+#: front/src/components/moderation/ReportModal.vue:31
 msgctxt "Content/*/*/Noun"
 msgid "Email"
 msgstr "Correo electrónico"
@@ -1564,50 +1737,60 @@ msgctxt "Content/*/*"
 msgid "Email address"
 msgstr "Dirección de correo electrónico"
 
-#: front/src/components/library/AlbumBase.vue:53
-#: front/src/components/library/ArtistBase.vue:64
-#: front/src/components/library/TrackBase.vue:72
+#: front/src/components/library/AlbumBase.vue:54
+#: front/src/components/library/ArtistBase.vue:65
+#: front/src/components/library/TrackBase.vue:70
+#: src/views/playlists/Detail.vue:38
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Embed"
 msgstr "Incrustar"
 
-#: front/src/components/audio/EmbedWizard.vue:20
+#: front/src/components/audio/EmbedWizard.vue:30
 msgctxt "Popup/Embed/Input.Label/Noun"
 msgid "Embed code"
 msgstr "Código empotrado"
 
-#: front/src/components/library/AlbumBase.vue:26
+#: front/src/components/library/AlbumBase.vue:27
 msgctxt "Popup/Album/Title/Verb"
 msgid "Embed this album on your website"
 msgstr "Inserta éste álbum en tu página web"
 
-#: front/src/components/library/ArtistBase.vue:37
+#: front/src/components/library/ArtistBase.vue:38
 msgctxt "Popup/Artist/Title/Verb"
 msgid "Embed this artist work on your website"
 msgstr "Inserta esta canción en tu página web"
 
-#: front/src/components/library/TrackBase.vue:45
+#: front/src/views/playlists/Detail.vue:52
+#, fuzzy
+msgctxt "Popup/Album/Title/Verb"
+msgid "Embed this playlist on your website"
+msgstr "Inserta éste álbum en tu página web"
+
+#: front/src/components/library/TrackBase.vue:43
 msgctxt "Popup/Track/Title"
 msgid "Embed this track on your website"
 msgstr "Inserta esta canción en tu página web"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:259
-#: front/src/views/admin/moderation/DomainsDetail.vue:187
+#: front/src/views/admin/moderation/AccountsDetail.vue:260
+#: front/src/views/admin/moderation/DomainsDetail.vue:224
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Emitted library follows"
 msgstr "La biblioteca emitida sigue"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:243
-#: front/src/views/admin/moderation/DomainsDetail.vue:171
+#: front/src/views/admin/moderation/AccountsDetail.vue:244
+#: front/src/views/admin/moderation/DomainsDetail.vue:208
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Emitted messages"
 msgstr "Mensajes emitidos"
 
+#: front/src/components/About.vue:114 src/components/About.vue:127
+#: front/src/components/About.vue:140
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:8
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:17
 #: front/src/views/admin/moderation/AccountsDetail.vue:156
 #: front/src/views/admin/moderation/AccountsDetail.vue:160
-msgctxt "*/*/*"
+#, fuzzy
+msgctxt "*/*/*/State of feature"
 msgid "Enabled"
 msgstr "Habilitado"
 
@@ -1626,9 +1809,9 @@ msgctxt "Content/Search/Input.Placeholder"
 msgid "Enter a radio name…"
 msgstr "Introducir un nombre de radio…"
 
-#: front/src/components/library/Albums.vue:119
+#: front/src/components/library/Albums.vue:128
 msgctxt "Content/Search/Input.Placeholder"
-msgid "Enter album title..."
+msgid "Enter album title…"
 msgstr ""
 
 #: front/src/components/library/Artists.vue:116
@@ -1642,32 +1825,33 @@ msgid "Enter playlist name…"
 msgstr "Introduce un nombre de lista de reproducción…"
 
 #: front/src/views/auth/PasswordReset.vue:54
+#, fuzzy
 msgctxt "Content/Signup/Input.Placeholder"
-msgid "Enter the email address binded to your account"
+msgid "Enter the email address linked to your account"
 msgstr "Ingresa la dirección de correo electrónico vinculada a tu cuenta"
 
-#: front/src/components/auth/Signup.vue:103
+#: front/src/components/auth/SignupForm.vue:96
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your email"
 msgstr "Introducir tu correo electrónico"
 
-#: front/src/components/auth/Signup.vue:98 src/components/auth/Signup.vue:100
+#: front/src/components/auth/SignupForm.vue:91
+#: src/components/auth/SignupForm.vue:93
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your invitation code (case insensitive)"
-msgstr ""
-"Introducir tu código de invitación (no distingue mayúsculas de minúsculas)"
+msgstr "Introducir tu código de invitación (no distingue mayúsculas de minúsculas)"
 
 #: front/src/components/metadata/Search.vue:114
 msgctxt "Content/Library/Input.Placeholder/Verb"
 msgid "Enter your search query…"
 msgstr "Introduce tu búsqueda…"
 
-#: front/src/components/auth/Signup.vue:102
+#: front/src/components/auth/SignupForm.vue:95
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your username"
 msgstr "Introduce tu nombre de usuario"
 
-#: front/src/components/auth/Login.vue:83
+#: front/src/components/auth/LoginForm.vue:81
 msgctxt "Content/Login/Input.Placeholder"
 msgid "Enter your username or email"
 msgstr "Introduce tu nombre de usuario o correo electrónico"
@@ -1684,7 +1868,7 @@ msgctxt "Popup/Import/Table.Label/Noun"
 msgid "Error detail"
 msgstr "Informes de error"
 
-#: front/src/views/admin/Settings.vue:87
+#: front/src/views/admin/Settings.vue:89
 msgctxt "Content/Admin/Menu"
 msgid "Error reporting"
 msgstr "Informes de error"
@@ -1740,16 +1924,12 @@ msgctxt "Popup/Moderation/Error message"
 msgid "Error while fetching application data"
 msgstr "Error al crear la invitación"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:118
+#: front/src/views/admin/moderation/DomainsDetail.vue:155
 msgctxt "Content/Moderation/Table"
 msgid "Error while fetching node info"
 msgstr "Error al obtener información del nodo"
 
 #: front/src/components/admin/SettingsGroup.vue:5
-msgctxt "Content/Settings/Error message.Title"
-msgid "Error while saving settings"
-msgstr "Error al guardar los cambios"
-
 #: front/src/components/federation/FetchButton.vue:73
 msgctxt "Content/*/Error message.Title"
 msgid "Error while saving settings"
@@ -1760,6 +1940,18 @@ msgctxt "Content/Library/Error message.Title"
 msgid "Error while submitting edit"
 msgstr "Error al guardar los cambios"
 
+#: front/src/components/manage/moderation/NoteForm.vue:3
+#, fuzzy
+msgctxt "Content/Moderation/Error message.Title"
+msgid "Error while submitting note"
+msgstr "Error al guardar los cambios"
+
+#: front/src/components/moderation/ReportModal.vue:11
+#, fuzzy
+msgctxt "Popup/Moderation/Error message"
+msgid "Error while submitting report"
+msgstr "Error al guardar los cambios"
+
 #: front/src/components/mixins/Translations.vue:32
 #: front/src/components/mixins/Translations.vue:33
 msgctxt "Content/Library/Table/Short"
@@ -1794,9 +1986,14 @@ msgctxt "Content/Radio/Table.Label/Verb"
 msgid "Exclude"
 msgstr "Excluir"
 
+#: front/src/components/common/CollapseLink.vue:2
+msgctxt "*/*/Button,Label"
+msgid "Expand"
+msgstr ""
+
 #: front/src/components/manage/users/InvitationsTable.vue:41
-#: front/src/components/mixins/Translations.vue:49
-#: front/src/components/mixins/Translations.vue:50
+#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:60
 msgctxt "Content/Admin/Table.Label/Noun"
 msgid "Expiration date"
 msgstr "Fecha de caducidad"
@@ -1813,16 +2010,8 @@ msgstr "Caducada/usada"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:110
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Explain why you're applying this policy. Depending on your instance "
-"configuration, this will help you remember why you acted on this account or "
-"domain, and may be displayed publicly to help users understand what "
-"moderation rules are in place."
-msgstr ""
-"Explique por qué está aplicando esta política. Dependiendo de la "
-"configuración de su instancia, esto le ayudará a recordar por qué actuó en "
-"esta cuenta o dominio, y puede mostrarse públicamente para ayudar a los "
-"usuarios a comprender qué reglas de moderación existen."
+msgid "Explain why you're applying this policy. Depending on your instance configuration, this will help you remember why you acted on this account or domain, and may be displayed publicly to help users understand what moderation rules are in place."
+msgstr "Explique por qué está aplicando esta política. Dependiendo de la configuración de su instancia, esto le ayudará a recordar por qué actuó en esta cuenta o dominio, y puede mostrarse públicamente para ayudar a los usuarios a comprender qué reglas de moderación existen."
 
 #: front/src/components/manage/library/UploadsTable.vue:25
 #: front/src/views/content/libraries/FilesTable.vue:16
@@ -1830,31 +2019,28 @@ msgctxt "Content/Library/Dropdown"
 msgid "Failed"
 msgstr "Ha fallado"
 
-#: front/src/views/content/remote/Card.vue:62
+#: front/src/views/content/remote/Card.vue:75
 msgctxt "Content/Library/Card.List item/Noun"
 msgid "Failed tracks:"
 msgstr "Pistas fallidas:"
 
-#: front/src/views/admin/library/AlbumDetail.vue:165
-#: front/src/views/admin/library/ArtistDetail.vue:154
-#: front/src/views/admin/library/TrackDetail.vue:217
+#: front/src/views/admin/library/AlbumDetail.vue:171
+#: front/src/views/admin/library/ArtistDetail.vue:159
+#: front/src/views/admin/library/TrackDetail.vue:223
 msgctxt "*/*/*"
 msgid "Favorited tracks"
 msgstr "Pistas fallidas:"
 
 #: front/src/components/Sidebar.vue:66
+#: src/components/mixins/Translations.vue:88
+#: front/src/components/mixins/Translations.vue:89
 msgctxt "Sidebar/Favorites/List item.Link/Noun"
 msgid "Favorites"
 msgstr "Favoritos"
 
-#: front/src/components/mixins/Translations.vue:76
-#: front/src/components/mixins/Translations.vue:77
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Favorites"
-msgstr "Favoritos"
-
-#: front/src/views/admin/Settings.vue:84
-msgctxt "Content/Admin/Menu"
+#: front/src/components/About.vue:110 src/views/admin/Settings.vue:84
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Federation"
 msgstr "Federación"
 
@@ -1878,6 +2064,11 @@ msgctxt "Content/Radio/Table.Label/Noun"
 msgid "Filter name"
 msgstr "Nombre del filtro"
 
+#: front/src/components/Home.vue:118
+msgctxt "Content/Home/Link"
+msgid "Find another pod"
+msgstr ""
+
 #: front/src/components/manage/library/UploadsTable.vue:26
 #: front/src/components/mixins/Translations.vue:36
 #: front/src/views/content/libraries/FilesTable.vue:17
@@ -1887,25 +2078,31 @@ msgid "Finished"
 msgstr "Terminado"
 
 #: front/src/components/manage/moderation/AccountsTable.vue:42
-#: front/src/components/manage/moderation/DomainsTable.vue:41
-#: front/src/views/admin/library/AlbumDetail.vue:149
-#: front/src/views/admin/library/ArtistDetail.vue:138
-#: front/src/views/admin/library/LibraryDetail.vue:153
-#: front/src/views/admin/library/TrackDetail.vue:201
+#: front/src/components/manage/moderation/DomainsTable.vue:49
+#: front/src/views/admin/library/AlbumDetail.vue:155
+#: front/src/views/admin/library/ArtistDetail.vue:143
+#: front/src/views/admin/library/LibraryDetail.vue:162
+#: front/src/views/admin/library/TagDetail.vue:98
+#: front/src/views/admin/library/TrackDetail.vue:207
 #: front/src/views/admin/library/UploadDetail.vue:167
-#: front/src/views/admin/moderation/AccountsDetail.vue:235
-#: front/src/views/admin/moderation/DomainsDetail.vue:151
+#: front/src/views/admin/moderation/AccountsDetail.vue:236
+#: front/src/views/admin/moderation/DomainsDetail.vue:188
 msgctxt "Content/Moderation/Table.Label/Short (Value is a date)"
 msgid "First seen"
 msgstr "Primera vista"
 
-#: front/src/components/mixins/Translations.vue:46
-#: front/src/components/mixins/Translations.vue:47
+#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:57
 msgctxt "Content/Moderation/Dropdown/Noun"
 msgid "First seen date"
 msgstr "Primera fecha de visualización"
 
-#: front/src/views/content/remote/Card.vue:87
+#: front/src/components/ShortcutsModal.vue:64
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Focus searchbar"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:100
 msgctxt "Content/Library/Card.Button.Label/Verb"
 msgid "Follow"
 msgstr "Seguir"
@@ -1915,40 +2112,34 @@ msgctxt "Content/Library/Title/Verb"
 msgid "Follow remote libraries"
 msgstr "Seguir bibliotecas remotas"
 
-#: front/src/views/content/remote/Card.vue:92
+#: front/src/views/content/remote/Card.vue:105
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Follow request pending approval"
 msgstr "Solicitud de seguimiento pendiente de aprobación"
 
-#: front/src/components/mixins/Translations.vue:64
-#: front/src/views/admin/library/LibraryDetail.vue:161
+#: front/src/components/manage/library/LibrariesTable.vue:53
+#: front/src/components/mixins/Translations.vue:76
+#: front/src/views/admin/library/LibraryDetail.vue:170
 #: front/src/views/content/libraries/Detail.vue:7
-#: front/src/components/mixins/Translations.vue:65
+#: front/src/components/mixins/Translations.vue:77
 msgctxt "Content/Federation/*/Noun"
 msgid "Followers"
 msgstr "Seguidores"
 
-#: front/src/components/manage/library/LibrariesTable.vue:53
-msgctxt "Content/*/*/Noun"
-msgid "Followers"
-msgstr "Seguidores"
-
-#: front/src/views/content/remote/Card.vue:103
+#: front/src/views/content/remote/Card.vue:116
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Following"
 msgstr "Siguiendo"
 
-#: front/src/components/mixins/Translations.vue:84
-#: front/src/components/mixins/Translations.vue:85
+#: front/src/components/mixins/Translations.vue:96
+#: front/src/components/mixins/Translations.vue:97
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Follows"
 msgstr "Seguir"
 
-#: front/src/components/library/TrackBase.vue:17
+#: front/src/components/library/TrackBase.vue:245
 msgctxt "Content/Track/Paragraph"
-msgid ""
-"From album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> by <a"
-" class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgid "From album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
 msgstr ""
 
 #: front/src/components/auth/Authorize.vue:28
@@ -1958,38 +2149,21 @@ msgstr "Desactivar acceso"
 
 #: front/src/components/auth/SubsonicTokenForm.vue:7
 msgctxt "Content/Settings/Paragraph'"
-msgid ""
-"Funkwhale is compatible with other music players that support the Subsonic "
-"API."
-msgstr ""
-"Funkwhale es compatible con otros reproductores de música que soportan la "
-"API Subsonic."
-
-#: front/src/components/Home.vue:90
-msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale is dead simple to use."
-msgstr "Funkwhale es facilísimo de usar."
-
-#: front/src/components/Home.vue:39
-msgctxt "Content/Home/Paragraph"
-msgid ""
-"Funkwhale is designed to make it easy to listen to music you like, or to "
-"discover new artists."
-msgstr ""
-"Funkwhale está diseñado para que sea fácil escuchar la música que te gusta, "
-"o descubrir nuevos artistas."
+msgid "Funkwhale is compatible with other music players that support the Subsonic API."
+msgstr "Funkwhale es compatible con otros reproductores de música que soportan la API Subsonic."
 
-#: front/src/components/Home.vue:111
+#: front/src/components/Home.vue:88
+#, fuzzy
 msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale is free and gives you control on your music."
+msgid "Funkwhale is free and developped by a friendly community of volunteers."
 msgstr "Funkwhale es gratis y te da el control de tu música."
 
-#: front/src/components/Home.vue:66
-msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale takes care of handling your music"
-msgstr "Funkwhale te ayuda a gestionar tu música"
+#: front/src/components/About.vue:78
+msgctxt "*/*/*"
+msgid "Funkwhale version"
+msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:38
+#: front/src/components/ShortcutsModal.vue:56
 msgctxt "Popup/Keyboard shortcuts/Title"
 msgid "General shortcuts"
 msgstr "Atajos generales"
@@ -1999,35 +2173,17 @@ msgctxt "Content/Admin/Button.Label/Verb"
 msgid "Get a new invitation"
 msgstr "Obtener una nueva invitación"
 
-#: front/src/components/Home.vue:13
-msgctxt "Content/Home/Button.Label/Verb"
-msgid "Get me to the library"
-msgstr "Llévame a la biblioteca"
-
-#: front/src/components/Home.vue:70
-msgctxt "Content/Home/List item/Verb"
-msgid ""
-"Get quality metadata about your music thanks to <a href=\"%{ url }\" "
-"target=\"_blank\">MusicBrainz</a>"
-msgstr ""
-"Obtén metadatos de calidad para tu música con <a href=\"%{ url }\" "
-"target=\"_blank\">MusicBrainz</a>"
-
 #: front/src/views/content/Home.vue:12 src/views/content/Home.vue:19
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Get started"
 msgstr "Comenzar"
 
-#: front/src/components/Footer.vue:37
+#: front/src/components/Footer.vue:45
+#: src/components/library/ImportStatusModal.vue:45
 msgctxt "Footer/*/Link"
 msgid "Getting help"
 msgstr "Obteniendo ayuda"
 
-#: front/src/components/library/ImportStatusModal.vue:45
-msgctxt "Popup/Import/Table.Label/Noun"
-msgid "Getting help"
-msgstr "Obteniendo ayuda"
-
 #: front/src/components/common/ActionTable.vue:35
 #: front/src/components/common/ActionTable.vue:56
 msgctxt "Content/*/Button.Label/Short, Verb"
@@ -2039,11 +2195,21 @@ msgctxt "Content/*/Button.Label/Verb"
 msgid "Go to home page"
 msgstr "Ir a la página principal"
 
+#: front/src/views/Notifications.vue:27 src/views/Notifications.vue:61
+msgctxt "Content/Notifications/Button.Label"
+msgid "Got it!"
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:128
 msgctxt "Content/Settings/Title"
 msgid "Hidden artists"
 msgstr "Explorando artistas"
 
+#: front/src/components/About.vue:155
+msgctxt "*/*/*/Verb"
+msgid "Hide"
+msgstr ""
+
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:114
 msgctxt "Content/Moderation/Help text"
 msgid "Hide account or domain content, except from followers."
@@ -2054,12 +2220,12 @@ msgctxt "Popup/*/Button.Label"
 msgid "Hide content"
 msgstr "Añadir contenido"
 
-#: front/src/components/audio/PlayButton.vue:26
+#: front/src/components/audio/PlayButton.vue:31
 msgctxt "*/Queue/Dropdown/Button/Label/Short"
 msgid "Hide content from this artist"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:643
+#: front/src/components/audio/Player.vue:669
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Hide content from this artist…"
 msgstr ""
@@ -2069,39 +2235,29 @@ msgctxt "Head/Home/Title"
 msgid "Home"
 msgstr "Inicio"
 
-#: front/src/components/instance/Stats.vue:36
-msgctxt "Content/About/Paragraph/Unit"
-msgid "Hours of music"
-msgstr "Horas de música"
-
 #: front/src/components/auth/SubsonicTokenForm.vue:10
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"However, accessing Funkwhale from those clients require a separate password "
-"you can set below."
-msgstr ""
-"Sin embargo, acceder a Funkwhale desde estos clientes requiere una "
-"contraseña distinta que podrás configurar a continuación."
+msgid "However, accessing Funkwhale from those clients require a separate password you can set below."
+msgstr "Sin embargo, acceder a Funkwhale desde estos clientes requiere una contraseña distinta que podrás configurar a continuación."
 
 #: front/src/views/auth/PasswordResetConfirm.vue:24
+#, fuzzy
 msgctxt "Content/Signup/Paragraph"
-msgid ""
-"If the email address provided in the previous step is valid and binded to a "
-"user account, you should receive an email with reset instructions in the "
-"next couple of minutes."
-msgstr ""
-"Si la dirección de correo electrónico proporcionada en el paso anterior es "
-"válida y asociada a una cuenta de usuario, deberías recibir un correo "
-"electrónico con las instrucciones de restablecimiento dentro de unos "
-"minutos."
+msgid "If the email address provided in the previous step is valid and linked to a user account, you should receive an email with reset instructions in the next couple of minutes."
+msgstr "Si la dirección de correo electrónico proporcionada en el paso anterior es válida y asociada a una cuenta de usuario, deberías recibir un correo electrónico con las instrucciones de restablecimiento dentro de unos minutos."
 
 #: front/src/components/auth/Settings.vue:205
 msgctxt "Content/Applications/Paragraph"
-msgid ""
-"If you authorize third-party applications to access your data, those "
-"applications will be listed here."
+msgid "If you authorize third-party applications to access your data, those applications will be listed here."
 msgstr ""
 
+#: front/src/components/mixins/Translations.vue:46
+#: front/src/components/mixins/Translations.vue:47
+#, fuzzy
+msgctxt "Content/Moderation/Dropdown"
+msgid "Illegal content"
+msgstr "Añadir contenido"
+
 #: front/src/components/library/ImportStatusModal.vue:3
 msgctxt "Popup/Import/Title"
 msgid "Import detail"
@@ -2113,14 +2269,10 @@ msgid "Import reference"
 msgstr "Fuente de la importación"
 
 #: front/src/components/manage/library/UploadsTable.vue:20
-#: front/src/views/content/libraries/FilesTable.vue:11
-#: front/src/views/content/libraries/FilesTable.vue:59
-msgctxt "Content/Library/*/Noun"
-msgid "Import status"
-msgstr "Estado de la importación"
-
 #: front/src/components/manage/library/UploadsTable.vue:64
 #: front/src/views/admin/library/UploadDetail.vue:131
+#: front/src/views/content/libraries/FilesTable.vue:11
+#: front/src/views/content/libraries/FilesTable.vue:59
 msgctxt "Content/*/*/Noun"
 msgid "Import status"
 msgstr "Estado de la importación"
@@ -2161,12 +2313,12 @@ msgctxt "Popup/Moderation/List item"
 msgid "In radio suggestions"
 msgstr ""
 
-#: front/src/components/manage/users/UsersTable.vue:54
+#: front/src/components/manage/users/UsersTable.vue:55
 msgctxt "Content/Admin/Table"
 msgid "Inactive"
 msgstr "Inactivo"
 
-#: front/src/components/ShortcutsModal.vue:71
+#: front/src/components/ShortcutsModal.vue:124
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Increase volume"
 msgstr "Aumentar volument"
@@ -2185,7 +2337,7 @@ msgctxt "Content/Settings/Dropdown/Short"
 msgid "Instance"
 msgstr "Datos de Instancia"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:71
+#: front/src/views/admin/moderation/DomainsDetail.vue:99
 msgctxt "Content/Moderation/Title"
 msgid "Instance data"
 msgstr "Datos de Instancia"
@@ -2210,21 +2362,25 @@ msgctxt "Popup/Instance/Input.Label/Noun"
 msgid "Instance URL"
 msgstr "Datos de Instancia"
 
+#: front/src/components/manage/moderation/ReportCard.vue:92
+#: front/src/components/manage/moderation/ReportCard.vue:203
+msgctxt "Content/*/*/Noun"
+msgid "Internal notes"
+msgstr ""
+
 #: front/src/components/library/FileUpload.vue:268
 msgctxt "Content/Library/Help text"
-msgid ""
-"Invalid file type, ensure you are uploading an audio file. Supported file "
-"extensions are %{ extensions }"
-msgstr ""
-"Tipo de archivo no válido, asegúrese de que está cargando un archivo de "
-"audio. Las extensiones de archivo admitidas son %{ extensions }"
+msgid "Invalid file type, ensure you are uploading an audio file. Supported file extensions are %{ extensions }"
+msgstr "Tipo de archivo no válido, asegúrese de que está cargando un archivo de audio. Las extensiones de archivo admitidas son %{ extensions }"
 
 #: front/src/components/library/ImportStatusModal.vue:139
+#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:46
 msgctxt "Popup/Import/Error.Label"
 msgid "Invalid metadata"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:44
+#: front/src/components/auth/SignupForm.vue:40
 #: front/src/components/manage/users/InvitationForm.vue:11
 msgctxt "Content/*/Input.Label"
 msgid "Invitation code"
@@ -2236,7 +2392,13 @@ msgctxt "*/Admin/*/Noun"
 msgid "Invitations"
 msgstr "Invitaciones"
 
-#: front/src/components/Footer.vue:41
+#: front/src/components/manage/moderation/DomainsTable.vue:9
+#: front/src/views/admin/moderation/DomainsDetail.vue:106
+msgctxt "Content/Moderation/*/Adjective"
+msgid "Is present on allow-list"
+msgstr ""
+
+#: front/src/components/Footer.vue:49
 msgctxt "Footer/*/List item.Link"
 msgid "Issue tracker"
 msgstr "Sistema de seguimiento de incidentes"
@@ -2246,17 +2408,18 @@ msgctxt "Popup/Instance/Error message.Title"
 msgid "It is not possible to connect to the given URL"
 msgstr ""
 
-#: front/src/components/Home.vue:50
-msgctxt "Content/Home/List item/Verb"
-msgid "Keep a track of your favorite songs"
-msgstr "Apunta tus canciones favoritas"
+#: front/src/components/mixins/Translations.vue:65
+#: front/src/components/mixins/Translations.vue:66
+msgctxt "*/*/*/Noun"
+msgid "Items"
+msgstr ""
 
 #: front/src/components/Footer.vue:33 src/components/ShortcutsModal.vue:3
 msgctxt "*/*/*/Noun"
 msgid "Keyboard shortcuts"
 msgstr "Atajos de teclado"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:161
+#: front/src/views/admin/moderation/DomainsDetail.vue:198
 msgctxt "Content/Moderation/Table.Label.Link"
 msgid "Known accounts"
 msgstr "Cuentas conocidas"
@@ -2267,15 +2430,15 @@ msgid "Known libraries"
 msgstr "Bibliotecas conocidas"
 
 #: front/src/components/manage/users/UsersTable.vue:41
-#: front/src/components/mixins/Translations.vue:58
-#: front/src/views/admin/moderation/AccountsDetail.vue:205
-#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:70
+#: front/src/views/admin/moderation/AccountsDetail.vue:206
+#: front/src/components/mixins/Translations.vue:71
 msgctxt "Content/Profile/Table.Label/Short, Noun (Value is a date)"
 msgid "Last activity"
 msgstr "Última actividad"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:188
-#: front/src/views/admin/moderation/DomainsDetail.vue:78
+#: front/src/views/admin/moderation/AccountsDetail.vue:189
+#: front/src/views/admin/moderation/DomainsDetail.vue:115
 msgctxt "Content/*/Table.Label"
 msgid "Last checked"
 msgstr "Última comprobación"
@@ -2290,13 +2453,13 @@ msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Last seen"
 msgstr "Visto por última vez"
 
-#: front/src/components/mixins/Translations.vue:47
-#: front/src/components/mixins/Translations.vue:48
+#: front/src/components/mixins/Translations.vue:57
+#: front/src/components/mixins/Translations.vue:58
 msgctxt "Content/Moderation/Dropdown/Noun"
 msgid "Last seen date"
 msgstr "Última visualización"
 
-#: front/src/views/content/remote/Card.vue:60
+#: front/src/views/content/remote/Card.vue:73
 msgctxt "Content/Library/Card.List item/Noun"
 msgid "Last update:"
 msgstr "Última actualización:"
@@ -2306,60 +2469,60 @@ msgctxt "Modal/*/Button.Label/Short, Verb"
 msgid "Launch"
 msgstr "Iniciar"
 
-#: front/src/components/Home.vue:10
-msgctxt "Content/Home/Button.Label/Verb"
-msgid "Learn more about this instance"
-msgstr "Aprender más acerca de esta instancia"
+#: front/src/components/Home.vue:35
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Learn more"
+msgstr "Cargando seguidores…"
 
 #: front/src/components/manage/users/InvitationForm.vue:58
 msgctxt "Content/Admin/Input.Placeholder"
 msgid "Leave empty for a random code"
 msgstr "Dejar en blanco para un código aleatorio"
 
-#: front/src/components/audio/EmbedWizard.vue:7
+#: front/src/components/audio/EmbedWizard.vue:17
 msgctxt "Popup/Embed/Paragraph"
 msgid "Leave empty for a responsive widget"
 msgstr "Dejar en blanco para widget responsive"
 
-#: front/src/views/admin/library/AlbumDetail.vue:232
-#: front/src/views/admin/library/ArtistDetail.vue:221
-#: front/src/views/admin/library/TrackDetail.vue:284
-#: front/src/views/admin/moderation/AccountsDetail.vue:327
-#: front/src/views/admin/moderation/DomainsDetail.vue:234
-#: front/src/views/content/Base.vue:5
+#: front/src/components/mixins/Translations.vue:64
+#: front/src/components/mixins/Translations.vue:65
 msgctxt "*/*/*/Noun"
-msgid "Libraries"
-msgstr "Bibliotecas"
+msgid "Length"
+msgstr ""
 
+#: front/src/views/admin/library/AlbumDetail.vue:248
+#: front/src/views/admin/library/ArtistDetail.vue:236
 #: front/src/views/admin/library/Base.vue:17
 #: front/src/views/admin/library/LibrariesList.vue:24
-msgctxt "*/*/*"
+#: front/src/views/admin/library/TrackDetail.vue:300
+#: front/src/views/admin/moderation/AccountsDetail.vue:339
+#: front/src/views/admin/moderation/DomainsDetail.vue:271
+#: front/src/views/content/Base.vue:5
+msgctxt "*/*/*/Noun"
 msgid "Libraries"
 msgstr "Bibliotecas"
 
-#: front/src/components/mixins/Translations.vue:72
-#: front/src/components/mixins/Translations.vue:73
+#: front/src/components/mixins/Translations.vue:84
+#: front/src/components/mixins/Translations.vue:85
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Libraries and uploads"
 msgstr "Biblioteca actualizada"
 
 #: front/src/views/content/libraries/Form.vue:2
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Libraries help you organize and share your music collections. You can upload"
-" your own music collection to Funkwhale and share it with your friends and "
-"family."
-msgstr ""
-"Las bibliotecas te ayudan a organizar tu colección de música. Puedes subir "
-"tu propia colección de musica a Funkwhale y compartirla con tus familiares y"
-" amigos."
+msgid "Libraries help you organize and share your music collections. You can upload your own music collection to Funkwhale and share it with your friends and family."
+msgstr "Las bibliotecas te ayudan a organizar tu colección de música. Puedes subir tu propia colección de musica a Funkwhale y compartirla con tus familiares y amigos."
 
-#: front/src/components/Sidebar.vue:85 src/components/instance/Stats.vue:30
+#: front/src/components/Sidebar.vue:85
 #: front/src/components/manage/library/UploadsTable.vue:60
-#: front/src/components/manage/users/UsersTable.vue:173
+#: front/src/components/manage/users/UsersTable.vue:174
+#: front/src/components/mixins/Report.vue:77
 #: front/src/views/admin/library/UploadDetail.vue:144
-#: front/src/views/admin/moderation/AccountsDetail.vue:498
-msgctxt "*/*/*"
+#: front/src/views/admin/moderation/AccountsDetail.vue:518 src/entities.js:132
+#: front/src/components/mixins/Report.vue:78
+#, fuzzy
+msgctxt "*/*/*/Noun"
 msgid "Library"
 msgstr "Biblioteca"
 
@@ -2390,21 +2553,37 @@ msgstr "Biblioteca actualizada"
 
 #: front/src/components/library/TrackDetail.vue:19
 #: front/src/components/manage/library/TracksTable.vue:43
-#: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:61
+#: front/src/views/admin/library/TrackDetail.vue:165 src/edits.js:84
+#: front/src/entities.js:115
 msgctxt "Content/*/*/Noun"
 msgid "License"
 msgstr "Licencia"
 
-#: front/src/views/admin/library/AlbumDetail.vue:157
-#: front/src/views/admin/library/ArtistDetail.vue:146
-#: front/src/views/admin/library/TrackDetail.vue:209
-msgctxt "*/*/*/Noun"
-msgid "Listenings"
+#: front/src/components/Footer.vue:90
+msgctxt "Footer/Settings/Dropdown.Label/Theme name"
+msgid "Light"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:80
-#: front/src/components/mixins/Translations.vue:81
-msgctxt "Content/OAuth Scopes/Label"
+#: front/src/views/admin/library/AlbumDetail.vue:188
+#: front/src/views/admin/library/ArtistDetail.vue:176
+#: front/src/views/admin/library/LibraryDetail.vue:179
+#: front/src/views/admin/library/TrackDetail.vue:240
+#: front/src/views/admin/moderation/AccountsDetail.vue:269
+msgctxt "Content/Moderation/Table.Label/Noun"
+msgid "Linked reports"
+msgstr ""
+
+#: front/src/components/Home.vue:135
+msgctxt "Content/Home/Link"
+msgid "Listen to public albums and playlists shared on this pod"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:92
+#: front/src/views/admin/library/AlbumDetail.vue:163
+#: front/src/views/admin/library/ArtistDetail.vue:151
+#: front/src/views/admin/library/TrackDetail.vue:215
+#: front/src/components/mixins/Translations.vue:93
+msgctxt "*/*/*/Noun"
 msgid "Listenings"
 msgstr ""
 
@@ -2430,7 +2609,7 @@ msgctxt "Content/Library/Paragraph"
 msgid "Loading library data…"
 msgstr "Cargando datos de la biblioteca…"
 
-#: front/src/views/Notifications.vue:19
+#: front/src/views/Notifications.vue:84
 msgctxt "Content/Notifications/Paragraph"
 msgid "Loading notifications…"
 msgstr "Cargando notificaciones…"
@@ -2455,6 +2634,7 @@ msgstr "Cargando tus favoritos…"
 #: front/src/components/manage/library/LibrariesTable.vue:75
 #: front/src/components/manage/library/TracksTable.vue:71
 #: front/src/components/manage/library/UploadsTable.vue:99
+#: front/src/components/manage/moderation/ReportCard.vue:173
 #: front/src/views/admin/library/AlbumDetail.vue:19
 #: front/src/views/admin/library/ArtistDetail.vue:18
 #: front/src/views/admin/library/LibraryDetail.vue:18
@@ -2470,12 +2650,12 @@ msgctxt "Content/Moderation/*/Short, Noun"
 msgid "Local account"
 msgstr "Mi cuenta"
 
-#: front/src/components/auth/Login.vue:84
+#: front/src/components/Home.vue:96 src/views/auth/Login.vue:29
 msgctxt "Head/Login/Title"
 msgid "Log In"
 msgstr "Iniciar sesión"
 
-#: front/src/components/auth/Login.vue:4
+#: front/src/views/auth/Login.vue:4
 msgctxt "Content/Login/Title/Verb"
 msgid "Log in to your Funkwhale account"
 msgstr "Iniciar sesión con tu cuenta de Funkwhale"
@@ -2490,7 +2670,7 @@ msgctxt "Sidebar/Profile/List item.Link"
 msgid "Logged in as %{ username }"
 msgstr "Sesión iniciada como %{ username }"
 
-#: front/src/components/Sidebar.vue:54 src/components/auth/Login.vue:42
+#: front/src/components/Sidebar.vue:54 src/components/auth/LoginForm.vue:41
 msgctxt "*/Login/*/Verb"
 msgid "Login"
 msgstr "Iniciar sesión"
@@ -2510,40 +2690,40 @@ msgctxt "Content/Library/Paragraph"
 msgid "Looks like you don't have a library, it's time to create one."
 msgstr "Parece que aún no tienes ninguna biblioteca, Es hora de crear una!"
 
-#: front/src/components/audio/Player.vue:632
-#: src/components/audio/Player.vue:633
+#: front/src/components/audio/Player.vue:658
+#: src/components/audio/Player.vue:659
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping disabled. Click to switch to single-track looping."
-msgstr ""
-"Bucle deshabilitado. Pulsa para cambiar a reproducción en bucle de la "
-"canción actual."
+msgstr "Bucle deshabilitado. Pulsa para cambiar a reproducción en bucle de la canción actual."
 
-#: front/src/components/audio/Player.vue:635
-#: src/components/audio/Player.vue:636
+#: front/src/components/audio/Player.vue:661
+#: src/components/audio/Player.vue:662
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping on a single track. Click to switch to whole queue looping."
-msgstr ""
-"Bucle de la canción actual. Pulsa para cambiar a la reproducción en bucle de"
-" la cola de reproducción entera."
+msgstr "Bucle de la canción actual. Pulsa para cambiar a la reproducción en bucle de la cola de reproducción entera."
 
-#: front/src/components/audio/Player.vue:638
-#: src/components/audio/Player.vue:639
+#: front/src/components/audio/Player.vue:664
+#: src/components/audio/Player.vue:665
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping on whole queue. Click to disable looping."
-msgstr ""
-"Bucle de la cola de reproducción entera. Pulsa para desactivar la "
-"reproducción en bucle."
+msgstr "Bucle de la cola de reproducción entera. Pulsa para desactivar la reproducción en bucle."
 
-#: front/src/components/Sidebar.vue:223
+#: front/src/components/Sidebar.vue:230
 msgctxt "Sidebar/*/Hidden text"
 msgid "Main menu"
 msgstr "Menú principal"
 
-#: front/src/views/admin/library/Base.vue:31
+#: front/src/views/admin/library/Base.vue:34
 msgctxt "Head/Admin/Title"
 msgid "Manage library"
 msgstr "Gestionar biblioteca"
 
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:8
+#, fuzzy
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Manage moderation rules for %{ obj }"
+msgstr "Bajo regla de moderación"
+
 #: front/src/components/playlists/PlaylistModal.vue:3
 msgctxt "Popup/Playlist/Title/Verb"
 msgid "Manage playlists"
@@ -2559,7 +2739,7 @@ msgctxt "Content/Playlist/Button.Label/Verb"
 msgid "Manage your playlists"
 msgstr "Gestionar tus listas de reproducción"
 
-#: front/src/views/Notifications.vue:14
+#: front/src/views/Notifications.vue:79
 msgctxt "Content/Notifications/Button.Label/Verb"
 msgid "Mark all as read"
 msgstr "Marcar todo como leído"
@@ -2574,12 +2754,12 @@ msgctxt "Content/Notifications/Button.Tooltip/Verb"
 msgid "Mark as unread"
 msgstr "Marcar como leído"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:310
+#: front/src/views/admin/moderation/AccountsDetail.vue:321
 msgctxt "Content/*/*/Unit"
 msgid "MB"
 msgstr "MB"
 
-#: front/src/components/audio/Player.vue:625
+#: front/src/components/audio/Player.vue:651
 msgctxt "Sidebar/Player/Hidden text"
 msgid "Media player"
 msgstr "Reproductor multimedia"
@@ -2589,43 +2769,59 @@ msgctxt "Content/Profile/Paragraph"
 msgid "Member since %{ date }"
 msgstr "Miembro desde %{ date }"
 
+#: front/src/components/manage/moderation/ReportCard.vue:109
+#: front/src/components/moderation/ReportModal.vue:41
+msgctxt "*/*/Field.Label/Noun"
+msgid "Message"
+msgstr ""
+
 #: front/src/components/Footer.vue:32
 msgctxt "Footer/*/List item.Link"
 msgid "Mobile and desktop apps"
 msgstr "Apps móviles y de escritorio"
 
+#: front/src/components/Home.vue:143
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Mobile apps"
+msgstr "Apps móviles y de escritorio"
+
 #: front/src/components/Sidebar.vue:96
-#: src/components/manage/users/UsersTable.vue:177
-#: front/src/views/admin/moderation/AccountsDetail.vue:502
-#: front/src/views/admin/moderation/Base.vue:21
+#: src/components/manage/users/UsersTable.vue:178
+#: front/src/views/admin/Settings.vue:85
+#: front/src/views/admin/moderation/AccountsDetail.vue:522
+#: front/src/views/admin/moderation/Base.vue:43
 msgctxt "*/Moderation/*"
 msgid "Moderation"
 msgstr "Moderación"
 
 #: front/src/views/admin/moderation/AccountsDetail.vue:78
-#: front/src/views/admin/moderation/DomainsDetail.vue:42
+#: front/src/views/admin/moderation/DomainsDetail.vue:70
 msgctxt "Content/Moderation/Card.Paragraph"
-msgid ""
-"Moderation policies help you control how your instance interact with a given"
-" domain or account."
-msgstr ""
-"Las políticas de moderación te ayudan a controlar cómo tu instancia "
-"interactúa con un dominio o cuenta concretos."
+msgid "Moderation policies help you control how your instance interact with a given domain or account."
+msgstr "Las políticas de moderación te ayudan a controlar cómo tu instancia interactúa con un dominio o cuenta concretos."
+
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:4
+#, fuzzy
+msgctxt "Content/Moderation/Button.Label"
+msgid "Moderation rules…"
+msgstr "Actualizar regla de moderación"
 
 #: front/src/components/library/EditCard.vue:5
 msgctxt "Content/Library/Card/Short"
 msgid "Modification %{ id }"
 msgstr "Fecha de modificación"
 
-#: front/src/components/mixins/Translations.vue:48
-#: front/src/components/mixins/Translations.vue:49
+#: front/src/components/mixins/Translations.vue:58
+#: front/src/components/mixins/Translations.vue:59
 msgctxt "Content/Playlist/Dropdown/Noun"
 msgid "Modification date"
 msgstr "Fecha de modificación"
 
-#: front/src/components/library/AlbumBase.vue:42
-#: front/src/components/library/ArtistBase.vue:53
-#: front/src/components/library/TrackBase.vue:61
+#: front/src/components/audio/PlayButton.vue:100
+#: front/src/components/library/AlbumBase.vue:43
+#: front/src/components/library/ArtistBase.vue:54
+#: front/src/components/library/TrackBase.vue:59
 msgctxt "*/*/Button.Label/Noun"
 msgid "More…"
 msgstr ""
@@ -2635,7 +2831,7 @@ msgctxt "*/*/*/Noun"
 msgid "Music"
 msgstr "Música"
 
-#: front/src/components/audio/Player.vue:631
+#: front/src/components/audio/Player.vue:657
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Mute"
 msgstr "Silencio"
@@ -2682,8 +2878,8 @@ msgctxt "Content/Library/Title"
 msgid "My libraries"
 msgstr "Mis bibliotecas"
 
-#: front/src/components/audio/track/Row.vue:40
-#: src/components/library/EditCard.vue:60
+#: front/src/components/About.vue:105 src/components/audio/track/Row.vue:40
+#: front/src/components/library/EditCard.vue:60
 #: front/src/components/library/EditForm.vue:70
 #: front/src/components/library/TrackDetail.vue:34
 #: front/src/components/library/TrackDetail.vue:43
@@ -2693,54 +2889,56 @@ msgstr "Mis bibliotecas"
 #: front/src/components/manage/library/TracksTable.vue:76
 #: front/src/components/manage/library/UploadsTable.vue:121
 #: front/src/components/manage/library/UploadsTable.vue:128
-#: front/src/components/manage/users/UsersTable.vue:61
+#: front/src/components/manage/moderation/ReportCard.vue:78
+#: front/src/components/manage/moderation/ReportCard.vue:87
+#: front/src/components/manage/moderation/ReportCard.vue:193
+#: front/src/components/manage/users/UsersTable.vue:62
 #: front/src/views/admin/library/UploadDetail.vue:179
 #: front/src/views/admin/library/UploadDetail.vue:214
 #: front/src/views/admin/library/UploadDetail.vue:233
 #: front/src/views/admin/library/UploadDetail.vue:244
 #: front/src/views/admin/library/UploadDetail.vue:257
-#: front/src/views/admin/moderation/AccountsDetail.vue:192
-#: front/src/views/admin/moderation/DomainsDetail.vue:82
+#: front/src/views/admin/moderation/AccountsDetail.vue:193
+#: front/src/views/admin/moderation/DomainsDetail.vue:119
 #: front/src/views/content/libraries/FilesTable.vue:95
 #: front/src/views/content/libraries/FilesTable.vue:101
 msgctxt "*/*/*"
 msgid "N/A"
 msgstr "N/A"
 
-#: front/src/components/manage/library/LibrariesTable.vue:48
-#: front/src/components/manage/library/UploadsTable.vue:59
-msgctxt "*/*/*"
-msgid "Name"
-msgstr "Nombre"
-
 #: front/src/components/auth/ApplicationForm.vue:9
-msgctxt "Content/Applications/Input.Label/Noun"
-msgid "Name"
-msgstr "Nombre"
-
 #: front/src/components/auth/Settings.vue:133
 #: front/src/components/manage/library/ArtistsTable.vue:39
+#: front/src/components/manage/library/LibrariesTable.vue:48
+#: front/src/components/manage/library/TagsTable.vue:41
+#: front/src/components/manage/library/UploadsTable.vue:59
 #: front/src/components/manage/moderation/AccountsTable.vue:39
-#: front/src/components/manage/moderation/DomainsTable.vue:38
-#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/manage/moderation/DomainsTable.vue:46
+#: front/src/components/mixins/Translations.vue:63
 #: front/src/components/playlists/PlaylistModal.vue:45
-#: front/src/views/admin/library/ArtistDetail.vue:98
+#: front/src/views/admin/library/ArtistDetail.vue:103
 #: front/src/views/admin/library/LibraryDetail.vue:85
+#: front/src/views/admin/library/TagDetail.vue:68
 #: front/src/views/admin/library/UploadDetail.vue:92
-#: front/src/views/admin/moderation/DomainsDetail.vue:97
-#: front/src/views/content/libraries/Form.vue:10 src/edits.js:10
-#: front/src/components/mixins/Translations.vue:54
+#: front/src/views/admin/moderation/DomainsDetail.vue:134
+#: front/src/views/content/libraries/Form.vue:10 src/edits.js:17
+#: front/src/components/mixins/Translations.vue:64
 msgctxt "*/*/*/Noun"
 msgid "Name"
 msgstr "Nombre"
 
+#: front/src/views/Notifications.vue:24 src/views/Notifications.vue:58
+msgctxt "*/*/*"
+msgid "Never"
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:88
 #: front/src/views/auth/PasswordResetConfirm.vue:14
 msgctxt "Content/Settings/Input.Label"
 msgid "New password"
 msgstr "Nueva contraseña"
 
-#: front/src/components/Sidebar.vue:173
+#: front/src/components/Sidebar.vue:177
 msgctxt "Sidebar/Player/Paragraph"
 msgid "New tracks will be appended here automatically."
 msgstr "Las nuevas canciones se agregarán aquí de forma automática."
@@ -2750,41 +2948,38 @@ msgctxt "Content/Library/Card.Table.Header/Short"
 msgid "New value"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:629
+#: front/src/components/audio/Player.vue:655
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Next track"
 msgstr "Próxima canción"
 
-#: front/src/components/Sidebar.vue:130
+#: front/src/components/Sidebar.vue:134
+#: front/src/components/manage/moderation/DomainsTable.vue:13
+#: front/src/views/admin/moderation/DomainsDetail.vue:110
 msgctxt "*/*/*"
 msgid "No"
 msgstr "No"
 
-#: front/src/components/Home.vue:95
-msgctxt "Content/Home/List item"
-msgid "No add-ons, no plugins : you only need a web library"
-msgstr ""
-"Sin complementos, sin extensiones : basta con una biblioteca en la web"
-
 #: front/src/components/audio/Search.vue:25
 msgctxt "Content/Search/Paragraph"
 msgid "No album matched your query"
-msgstr ""
-"Lo sentimos, no hemos encontrado ningún álbum que corresponda con tu "
-"búsqueda"
+msgstr "Lo sentimos, no hemos encontrado ningún álbum que corresponda con tu búsqueda"
 
 #: front/src/components/audio/Search.vue:16
 msgctxt "Content/Search/Paragraph"
 msgid "No artist matched your query"
-msgstr ""
-"Lo sentimos, no hemos encontrado ningún artista que corresponda con tu "
-"búsqueda"
+msgstr "Lo sentimos, no hemos encontrado ningún artista que corresponda con tu búsqueda"
 
 #: front/src/components/library/TrackDetail.vue:14
 msgctxt "Content/Track/Table.Paragraph"
 msgid "No copyright information available for this track"
 msgstr "No hay letra disponible para esta canción."
 
+#: front/src/components/About.vue:25 src/components/Home.vue:25
+msgctxt "Content/Home/Paragraph"
+msgid "No description available."
+msgstr ""
+
 #: front/src/components/library/TrackDetail.vue:25
 msgctxt "Content/Track/Table.Paragraph"
 msgid "No licensing information for this track"
@@ -2795,7 +2990,7 @@ msgctxt "Content/Federation/Paragraph"
 msgid "No matching library."
 msgstr "Biblioteca no encontrada."
 
-#: front/src/views/Notifications.vue:28
+#: front/src/views/Notifications.vue:93
 msgctxt "Content/Notifications/Paragraph"
 msgid "No notification to show."
 msgstr "No hay notificaciones para mostrar."
@@ -2805,6 +3000,16 @@ msgctxt "Content/*/Paragraph"
 msgid "No results were found."
 msgstr ""
 
+#: front/src/components/About.vue:32
+msgctxt "Content/Home/Paragraph"
+msgid "No rules available."
+msgstr ""
+
+#: front/src/components/About.vue:39
+msgctxt "Content/Home/Paragraph"
+msgid "No terms available."
+msgstr ""
+
 #: front/src/components/mixins/Translations.vue:10
 #: front/src/components/mixins/Translations.vue:11
 msgctxt "Content/Settings/Dropdown"
@@ -2821,18 +3026,22 @@ msgctxt "Content/Admin/Table"
 msgid "Not used"
 msgstr "No usado"
 
-#: front/src/components/mixins/Translations.vue:100
-#: front/src/components/mixins/Translations.vue:101
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Notifications"
-msgstr "Notificaciones"
-
-#: front/src/components/Sidebar.vue:46 src/views/Notifications.vue:76
+#: front/src/components/Sidebar.vue:46
+#: src/components/mixins/Translations.vue:112
+#: front/src/views/Notifications.vue:151
+#: src/components/mixins/Translations.vue:113
 msgctxt "*/Notifications/*"
 msgid "Notifications"
 msgstr "Notificaciones"
 
-#: front/src/components/Footer.vue:47
+#: front/src/components/mixins/Translations.vue:47
+#: front/src/components/mixins/Translations.vue:48
+#, fuzzy
+msgctxt "Content/Moderation/Dropdown"
+msgid "Offensive content"
+msgstr "Añadir contenido"
+
+#: front/src/components/Footer.vue:55
 msgctxt "Footer/*/List item.Link"
 msgid "Official website"
 msgstr "Página oficial"
@@ -2847,6 +3056,12 @@ msgctxt "Content/Library/Card.Table.Header/Short"
 msgid "Old value"
 msgstr ""
 
+#: front/src/components/About.vue:90
+#, fuzzy
+msgctxt "*/*/*/State of registrations"
+msgid "Open"
+msgstr "Abierta"
+
 #: front/src/components/manage/users/InvitationsTable.vue:20
 msgctxt "Content/Admin/Dropdown/Adjective"
 msgid "Open"
@@ -2854,27 +3069,29 @@ msgstr "Abierta"
 
 #: front/src/components/library/ImportStatusModal.vue:56
 msgctxt "Popup/Import/Table.Label/Value"
-msgid ""
-"Open a support thread (include the debug information below in your message)"
+msgid "Open a support thread (include the debug information below in your message)"
 msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:73
-#: front/src/components/library/ArtistBase.vue:84
-#: front/src/components/library/TrackBase.vue:92
+#: front/src/components/library/AlbumBase.vue:87
+#: front/src/components/library/ArtistBase.vue:99
+#: front/src/components/library/TagDetail.vue:11
+#: front/src/components/library/TrackBase.vue:103
+#: front/src/components/manage/moderation/ReportCard.vue:128
 msgctxt "Content/Moderation/Link"
 msgid "Open in moderation interface"
 msgstr "Actualizar regla de moderación"
 
-#: front/src/views/admin/library/AlbumDetail.vue:31
-#: front/src/views/admin/library/ArtistDetail.vue:30
-#: front/src/views/admin/library/TrackDetail.vue:30
+#: front/src/views/admin/library/AlbumDetail.vue:37
+#: front/src/views/admin/library/ArtistDetail.vue:35
+#: front/src/views/admin/library/TagDetail.vue:21
+#: front/src/views/admin/library/TrackDetail.vue:36
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open local profile"
 msgstr "Abrir perfil"
 
-#: front/src/views/admin/library/AlbumDetail.vue:46
-#: front/src/views/admin/library/ArtistDetail.vue:45
-#: front/src/views/admin/library/TrackDetail.vue:45
+#: front/src/views/admin/library/AlbumDetail.vue:52
+#: front/src/views/admin/library/ArtistDetail.vue:50
+#: front/src/views/admin/library/TrackDetail.vue:51
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open on MusicBrainz"
 msgstr "Ver en MusicBrainz"
@@ -2884,10 +3101,10 @@ msgctxt "Content/Moderation/Link/Verb"
 msgid "Open profile"
 msgstr "Abrir perfil"
 
-#: front/src/views/admin/library/AlbumDetail.vue:54
-#: front/src/views/admin/library/ArtistDetail.vue:53
+#: front/src/views/admin/library/AlbumDetail.vue:60
+#: front/src/views/admin/library/ArtistDetail.vue:58
 #: front/src/views/admin/library/LibraryDetail.vue:49
-#: front/src/views/admin/library/TrackDetail.vue:53
+#: front/src/views/admin/library/TrackDetail.vue:59
 #: front/src/views/admin/library/UploadDetail.vue:50
 #: front/src/views/admin/moderation/AccountsDetail.vue:52
 msgctxt "Content/Moderation/Link/Verb"
@@ -2908,6 +3125,7 @@ msgstr "Añade filtros para personalizar tus reglas"
 #: src/components/library/Radios.vue:41
 #: front/src/components/manage/library/EditsCardList.vue:37
 #: front/src/components/manage/users/UsersTable.vue:17
+#: front/src/views/admin/moderation/ReportsList.vue:42
 #: front/src/views/playlists/List.vue:25
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Order"
@@ -2915,40 +3133,51 @@ msgstr "Orden"
 
 #: front/src/components/favorites/List.vue:24
 #: src/components/library/Albums.vue:15
-#: front/src/components/library/Artists.vue:15
+#: front/src/components/library/Artists.vue:19
 #: src/components/library/Radios.vue:33
 #: front/src/components/manage/library/AlbumsTable.vue:11
 #: front/src/components/manage/library/ArtistsTable.vue:11
 #: front/src/components/manage/library/EditsCardList.vue:29
 #: front/src/components/manage/library/LibrariesTable.vue:20
+#: front/src/components/manage/library/TagsTable.vue:11
 #: front/src/components/manage/library/TracksTable.vue:11
 #: front/src/components/manage/library/UploadsTable.vue:30
 #: front/src/components/manage/moderation/AccountsTable.vue:11
-#: front/src/components/manage/moderation/DomainsTable.vue:9
+#: front/src/components/manage/moderation/DomainsTable.vue:17
 #: front/src/components/manage/users/InvitationsTable.vue:9
 #: front/src/components/manage/users/UsersTable.vue:9
+#: front/src/views/admin/moderation/ReportsList.vue:34
 #: front/src/views/content/libraries/FilesTable.vue:21
 #: front/src/views/playlists/List.vue:17
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Ordering"
 msgstr "Orden"
 
-#: front/src/components/library/Albums.vue:23
-#: src/components/library/Artists.vue:23
+#: front/src/components/library/Albums.vue:27
+#: src/components/library/Artists.vue:27
 #: front/src/components/manage/library/AlbumsTable.vue:19
 #: front/src/components/manage/library/ArtistsTable.vue:19
 #: front/src/components/manage/library/LibrariesTable.vue:28
+#: front/src/components/manage/library/TagsTable.vue:19
 #: front/src/components/manage/library/TracksTable.vue:19
 #: front/src/components/manage/library/UploadsTable.vue:38
 #: front/src/components/manage/moderation/AccountsTable.vue:19
-#: front/src/components/manage/moderation/DomainsTable.vue:17
+#: front/src/components/manage/moderation/DomainsTable.vue:25
 #: front/src/views/content/libraries/FilesTable.vue:29
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Ordering direction"
 msgstr "Dirección del orden"
 
+#: front/src/components/mixins/Translations.vue:48
+#: front/src/components/mixins/Translations.vue:49
+msgctxt "Content/Moderation/Dropdown"
+msgid "Other"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:143
 #: front/src/components/manage/users/InvitationsTable.vue:38
-msgctxt "Content/Admin/Table.Label"
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Owner"
 msgstr "Propietario"
 
@@ -2967,12 +3196,15 @@ msgctxt "Content/*/Hidden text/Noun"
 msgid "Pagination"
 msgstr "Paginación"
 
-#: front/src/components/auth/Login.vue:33 src/components/auth/Signup.vue:40
-msgctxt "Content/*/Input.Label"
+#: front/src/components/auth/LoginForm.vue:32
+#: src/components/auth/Settings.vue:291
+#: front/src/components/auth/SignupForm.vue:36
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Password"
 msgstr "Contraseña"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:94
+#: front/src/components/auth/SubsonicTokenForm.vue:100
 msgctxt "Content/Settings/Message"
 msgid "Password updated"
 msgstr "Contraseña actualizada"
@@ -2982,12 +3214,12 @@ msgctxt "Content/Signup/Card.Title"
 msgid "Password updated successfully"
 msgstr "Contraseña actualizada con éxito"
 
-#: front/src/components/audio/Player.vue:628
+#: front/src/components/audio/Player.vue:654
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Pause track"
 msgstr "Pausar la canción"
 
-#: front/src/components/ShortcutsModal.vue:59
+#: front/src/components/ShortcutsModal.vue:96
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Pause/play the current track"
 msgstr "Pausar / reproducir la pista actual"
@@ -3016,7 +3248,7 @@ msgctxt "Content/Library/Label"
 msgid "Pending files"
 msgstr "Archivos pendientes"
 
-#: front/src/components/Sidebar.vue:225
+#: front/src/components/Sidebar.vue:232
 msgctxt "Sidebar/Notifications/Hidden text"
 msgid "Pending follow requests"
 msgstr "Solicitudes de seguimiento pendientes"
@@ -3027,84 +3259,76 @@ msgctxt "Content/Admin/*/Noun"
 msgid "Pending review"
 msgstr "Archivos pendientes"
 
-#: front/src/components/Sidebar.vue:226
+#: front/src/components/Sidebar.vue:233
 msgctxt "Sidebar/Moderation/Hidden text"
 msgid "Pending review edits"
 msgstr "Archivos pendientes"
 
+#: front/src/components/auth/Settings.vue:176
 #: front/src/components/manage/users/UsersTable.vue:42
 #: front/src/views/admin/moderation/AccountsDetail.vue:166
-msgctxt "Content/Admin/Table.Label/Noun"
-msgid "Permissions"
-msgstr "Permisos"
-
-#: front/src/components/auth/Settings.vue:176
 msgctxt "Content/*/*/Noun"
 msgid "Permissions"
 msgstr "Permisos"
 
 #: front/src/components/audio/PlayButton.vue:9
-#: front/src/components/library/TrackBase.vue:26
+#: front/src/components/library/TrackBase.vue:24
 msgctxt "*/Queue/Button.Label/Short, Verb"
 msgid "Play"
 msgstr "Reproducir"
 
 #: front/src/components/audio/album/Card.vue:48
-#: front/src/components/audio/artist/Card.vue:44
-#: front/src/components/library/AlbumBase.vue:20
+#: front/src/components/library/AlbumBase.vue:21
 #: front/src/components/library/AlbumDetail.vue:11
 #: src/views/playlists/Detail.vue:24
 msgctxt "Content/Queue/Button.Label/Short, Verb"
 msgid "Play all"
 msgstr "Reproducir todo"
 
-#: front/src/components/library/ArtistBase.vue:31
+#: front/src/components/library/ArtistBase.vue:32
 msgctxt "Content/Artist/Button.Label/Verb"
 msgid "Play all albums"
 msgstr "Reproducir todos los álbumes"
 
-#: front/src/components/audio/PlayButton.vue:76
+#: front/src/components/audio/PlayButton.vue:92
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play next"
 msgstr "Reproducir siguiente"
 
-#: front/src/components/ShortcutsModal.vue:67
+#: front/src/components/ShortcutsModal.vue:120
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Play next track"
 msgstr "Reproducir siguiente canción"
 
-#: front/src/components/audio/PlayButton.vue:74
+#: front/src/components/audio/PlayButton.vue:90
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play now"
 msgstr "Reproducir ahora"
 
-#: front/src/components/ShortcutsModal.vue:63
+#: front/src/components/ShortcutsModal.vue:116
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Play previous track"
 msgstr "Canción anterior"
 
-#: front/src/components/audio/PlayButton.vue:77
+#: front/src/components/audio/PlayButton.vue:93
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play similar songs"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:224
+#: front/src/components/Sidebar.vue:231
 msgctxt "Sidebar/Player/Hidden text"
 msgid "Play this track"
 msgstr "Reproducir canción"
 
-#: front/src/components/audio/Player.vue:627
+#: front/src/components/audio/Player.vue:653
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Play track"
 msgstr "Reproducir canción"
 
-#: front/src/components/audio/PlayButton.vue:82
-msgctxt "*/Queue/Button/Title"
-msgid "Play..."
-msgstr "Reproducir..."
-
-#: front/src/views/playlists/Detail.vue:91
-msgctxt "Head/Playlist/Title"
+#: front/src/components/mixins/Report.vue:66 src/views/playlists/Detail.vue:121
+#: front/src/components/mixins/Report.vue:67
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Playlist"
 msgstr "Lista de reproducción"
 
@@ -3141,63 +3365,60 @@ msgctxt "Content/Playlist/Dropdown.Label"
 msgid "Playlist visibility"
 msgstr "Visibilidad de lista de reproducción"
 
-#: front/src/components/mixins/Translations.vue:88
-#: front/src/components/mixins/Translations.vue:89
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Playlists"
-msgstr "Listas de reproducción"
-
 #: front/src/components/Sidebar.vue:71 src/components/library/Home.vue:16
-#: front/src/components/library/Library.vue:16 src/views/admin/Settings.vue:83
-#: front/src/views/admin/library/AlbumDetail.vue:173
-#: front/src/views/admin/library/ArtistDetail.vue:162
-#: front/src/views/admin/library/TrackDetail.vue:225
+#: front/src/components/library/Library.vue:16
+#: front/src/components/mixins/Translations.vue:100
+#: src/views/admin/Settings.vue:83
+#: front/src/views/admin/library/AlbumDetail.vue:179
+#: front/src/views/admin/library/ArtistDetail.vue:167
+#: front/src/views/admin/library/TrackDetail.vue:231
 #: src/views/playlists/List.vue:106
+#: front/src/components/mixins/Translations.vue:101
 msgctxt "*/*/*"
 msgid "Playlists"
 msgstr "Listas de reproducción"
 
-#: front/src/components/Home.vue:56
-msgctxt "Content/Home/List item"
-msgid "Playlists? We got them"
-msgstr "¿Listas de reproducción? Las tenemos"
+#: front/src/components/audio/EmbedWizard.vue:9
+msgctxt "Content/Embed/Message"
+msgid "Please contact your admins and ask them to update the corresponding setting."
+msgstr ""
 
 #: front/src/components/auth/Settings.vue:79
 msgctxt "Content/Settings/Error message.List item/Call to action"
 msgid "Please double-check your password is correct"
 msgstr "Por favor, comprueba que tu contraseña es correcta"
 
-#: front/src/components/auth/Login.vue:9
+#: front/src/components/auth/LoginForm.vue:5
 msgctxt "Content/Login/Error message.List item/Call to action"
 msgid "Please double-check your username/password couple is correct"
-msgstr ""
-"Por favor, comprueba que tu nombre de usuario y contraseña son correctos"
+msgstr "Por favor, comprueba que tu nombre de usuario y contraseña son correctos"
 
 #: front/src/components/auth/Settings.vue:46
 msgctxt "Content/Settings/Paragraph"
 msgid "PNG, GIF or JPG. At most 2MB. Will be downscaled to 400x400px."
 msgstr "PNG, GIF o JPG. Máximo de 2MB. La imagen será reducida a 400x400px."
 
-#: front/src/views/admin/library/TrackDetail.vue:137
-msgctxt "*/*/*/Noun"
+#: front/src/components/About.vue:72
+msgctxt "Content/About/Header/Name"
+msgid "Pod configuration"
+msgstr ""
+
+#: front/src/views/admin/library/TrackDetail.vue:143 src/edits.js:70
+msgctxt "*/*/*/Short, Noun"
 msgid "Position"
 msgstr "Paginación"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:118
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Prevent account or domain from triggering notifications, except from "
-"followers."
-msgstr ""
-"Evita que la cuenta o el dominio activen notificaciones, excepto de los "
-"seguidores."
+msgid "Prevent account or domain from triggering notifications, except from followers."
+msgstr "Evita que la cuenta o el dominio activen notificaciones, excepto de los seguidores."
 
-#: front/src/components/audio/EmbedWizard.vue:33
+#: front/src/components/audio/EmbedWizard.vue:43
 msgctxt "Popup/Embed/Title/Noun"
 msgid "Preview"
 msgstr "Previsualización"
 
-#: front/src/components/audio/Player.vue:626
+#: front/src/components/audio/Player.vue:652
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Previous track"
 msgstr "Canción anterior"
@@ -3208,7 +3429,7 @@ msgctxt "Content/Settings/Dropdown/Short"
 msgid "Private"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:43
+#: front/src/views/content/remote/Card.vue:56
 msgctxt "Content/Library/Card.List item"
 msgid "Problem during scanning"
 msgstr "Error durante el análisis"
@@ -3229,14 +3450,20 @@ msgctxt "Content/Library/Tab.Title/Short"
 msgid "Processing"
 msgstr "Procesando"
 
-#: front/src/components/mixins/Translations.vue:68
-#: front/src/components/mixins/Translations.vue:69
+#: front/src/components/mixins/Translations.vue:80
+#: front/src/components/mixins/Translations.vue:81
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Profile"
 msgstr "Abrir perfil"
 
+#: front/src/components/auth/SignupForm.vue:5
+#, fuzzy
+msgctxt "Content/Signup/Form/Paragraph"
+msgid "Public registrations are not possible on this instance. You will need an invitation code to sign up."
+msgstr "La inscripción a esta instancia está cerrada, necesitarás un código de invitación para inscribirte."
+
 #: front/src/components/manage/moderation/AccountsTable.vue:188
-#: front/src/components/manage/moderation/DomainsTable.vue:168
+#: front/src/components/manage/moderation/DomainsTable.vue:186
 #: front/src/views/content/libraries/Quota.vue:36
 #: front/src/views/content/libraries/Quota.vue:39
 #: front/src/views/content/libraries/Quota.vue:62
@@ -3267,7 +3494,7 @@ msgctxt "Sidebar/Queue/Tab.Title/Noun"
 msgid "Queue"
 msgstr "Cola de reproducción"
 
-#: front/src/components/audio/Player.vue:322
+#: front/src/components/audio/Player.vue:329
 msgctxt "Content/Queue/Message"
 msgid "Queue shuffled!"
 msgstr "¡Cola de reproducción mezclada!"
@@ -3299,16 +3526,12 @@ msgstr "Radio actualizada"
 
 #: front/src/components/library/Library.vue:13
 #: src/components/library/Radios.vue:142
+#: front/src/components/mixins/Translations.vue:104
+#: front/src/components/mixins/Translations.vue:105
 msgctxt "*/*/*"
 msgid "Radios"
 msgstr "Radios"
 
-#: front/src/components/mixins/Translations.vue:92
-#: front/src/components/mixins/Translations.vue:93
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Radios"
-msgstr "Radios"
-
 #: front/src/components/auth/ApplicationForm.vue:151
 msgctxt "Content/OAuth Scopes/Label/Verb"
 msgid "Read"
@@ -3335,15 +3558,15 @@ msgctxt "Content/Moderation/*/Noun"
 msgid "Reason"
 msgstr "Razón"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:251
-#: front/src/views/admin/moderation/DomainsDetail.vue:179
+#: front/src/views/admin/moderation/AccountsDetail.vue:252
+#: front/src/views/admin/moderation/DomainsDetail.vue:216
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Received library follows"
 msgstr "Seguidores recibidos en la biblioteca"
 
-#: front/src/components/manage/moderation/DomainsTable.vue:40
-#: front/src/components/mixins/Translations.vue:62
-#: front/src/components/mixins/Translations.vue:63
+#: front/src/components/manage/moderation/DomainsTable.vue:48
+#: front/src/components/mixins/Translations.vue:74
+#: front/src/components/mixins/Translations.vue:75
 msgctxt "Content/Moderation/*/Noun"
 msgid "Received messages"
 msgstr "Mensajes recibidos"
@@ -3363,6 +3586,12 @@ msgctxt "Content/Home/Title"
 msgid "Recently added"
 msgstr "Añadidos recientemente"
 
+#: front/src/components/Home.vue:167
+#, fuzzy
+msgctxt "Content/Home/Title"
+msgid "Recently added albums"
+msgstr "Añadidos recientemente"
+
 #: front/src/components/library/Home.vue:11
 msgctxt "Content/Home/Title"
 msgid "Recently favorited"
@@ -3391,14 +3620,14 @@ msgctxt "Popup/*/Message.Title"
 msgid "Refresh error"
 msgstr "Recargar"
 
-#: front/src/views/admin/library/AlbumDetail.vue:50
-#: front/src/views/admin/library/ArtistDetail.vue:49
-#: front/src/views/admin/library/TrackDetail.vue:49
+#: front/src/views/admin/library/AlbumDetail.vue:56
+#: front/src/views/admin/library/ArtistDetail.vue:54
+#: front/src/views/admin/library/TrackDetail.vue:55
 msgctxt "Content/Moderation/Button/Verb"
 msgid "Refresh from remote server"
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:127
+#: front/src/views/admin/moderation/DomainsDetail.vue:164
 msgctxt "Content/Moderation/Button.Label/Verb"
 msgid "Refresh node info"
 msgstr "Actualizar la información del nodo"
@@ -3410,9 +3639,7 @@ msgstr "Actualizar la información del nodo"
 
 #: front/src/components/federation/FetchButton.vue:80
 msgctxt "Popup/*/Message.Content"
-msgid ""
-"Refresh request wasn't proceed in time by our server. It will be processed "
-"later."
+msgid "Refresh request wasn't proceed in time by our server. It will be processed later."
 msgstr ""
 
 #: front/src/components/federation/FetchButton.vue:16
@@ -3435,16 +3662,13 @@ msgctxt "Popup/*/Title"
 msgid "Refreshing object from remote…"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:9
-msgctxt "Content/Signup/Form/Paragraph"
-msgid ""
-"Registration are closed on this instance, you will need an invitation code "
-"to signup."
-msgstr ""
-"La inscripción a esta instancia está cerrada, necesitarás un código de "
-"invitación para inscribirte."
+#: front/src/components/About.vue:86
+#, fuzzy
+msgctxt "*/*/*"
+msgid "Registrations"
+msgstr "Administración"
 
-#: front/src/components/manage/users/UsersTable.vue:71
+#: front/src/components/manage/users/UsersTable.vue:72
 msgctxt "Content/Admin/Table, User role"
 msgid "Regular user"
 msgstr "Usuario estándar"
@@ -3469,8 +3693,8 @@ msgid "Rejected"
 msgstr "Rechazada"
 
 #: front/src/components/manage/library/AlbumsTable.vue:43
-#: front/src/components/mixins/Translations.vue:44 src/edits.js:28
-#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:54 src/edits.js:43
+#: front/src/components/mixins/Translations.vue:55
 msgctxt "Content/*/*/Noun"
 msgid "Release date"
 msgstr "Última visualización"
@@ -3480,6 +3704,11 @@ msgctxt "Content/Library/Paragraph"
 msgid "Remaining storage space"
 msgstr ""
 
+#: front/src/views/Notifications.vue:18 src/views/Notifications.vue:52
+msgctxt "Content/Notifications/Label"
+msgid "Remind me in:"
+msgstr ""
+
 #: front/src/views/content/remote/Home.vue:6
 msgctxt "Content/Library/Title/Noun"
 msgid "Remote libraries"
@@ -3487,12 +3716,8 @@ msgstr "Bibliotecas remotas"
 
 #: front/src/views/content/remote/Home.vue:7
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Remote libraries are owned by other users on the network. You can access "
-"them as long as they are public or you are granted access."
-msgstr ""
-"Las bibliotecas remotas pertenecen a otros usuarios de internet. Podrás "
-"acceder a ellas cuando sean públicas o cuando te permitan el acceso."
+msgid "Remote libraries are owned by other users on the network. You can access them as long as they are public or you are granted access."
+msgstr "Las bibliotecas remotas pertenecen a otros usuarios de internet. Podrás acceder a ellas cuando sean públicas o cuando te permitan el acceso."
 
 #: front/src/components/library/radios/Filter.vue:59
 msgctxt "Content/Radio/Button.Label/Verb"
@@ -3509,6 +3734,13 @@ msgctxt "Content/Moderation/Button.Label"
 msgid "Remove filter"
 msgstr "Quitar avatar"
 
+#: front/src/components/manage/moderation/DomainsTable.vue:198
+#: front/src/views/admin/moderation/DomainsDetail.vue:39
+#, fuzzy
+msgctxt "Content/Moderation/Action/Verb"
+msgid "Remove from allow-list"
+msgstr "Quitar de favoritos"
+
 #: front/src/components/favorites/TrackFavoriteIcon.vue:26
 msgctxt "Content/Track/Icon.Tooltip/Verb"
 msgid "Remove from favorites"
@@ -3516,43 +3748,104 @@ msgstr "Quitar de favoritos"
 
 #: front/src/views/content/libraries/Quota.vue:38
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded but yet to be processed tracks completely, adding the "
-"corresponding data to your quota."
-msgstr ""
-"Elimina las pistas cargadas pero aún no procesadas, agregando los datos "
-"correspondientes a su cuota."
+msgid "Removes uploaded but yet to be processed tracks completely, adding the corresponding data to your quota."
+msgstr "Elimina las pistas cargadas pero aún no procesadas, agregando los datos correspondientes a su cuota."
 
 #: front/src/views/content/libraries/Quota.vue:64
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded tracks skipped during the import processes completely, "
-"adding the corresponding data to your quota."
-msgstr ""
-"Esto borrará las pistas que fueron subidas pero se omitieron por alguna "
-"razón. Se borrarán completamente y recuperarás la cuota correspondiente."
+msgid "Removes uploaded tracks skipped during the import processes completely, adding the corresponding data to your quota."
+msgstr "Esto borrará las pistas que fueron subidas pero se omitieron por alguna razón. Se borrarán completamente y recuperarás la cuota correspondiente."
 
 #: front/src/views/content/libraries/Quota.vue:90
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded tracks that could not be processed by the server "
-"completely, adding the corresponding data to your quota."
+msgid "Removes uploaded tracks that could not be processed by the server completely, adding the corresponding data to your quota."
+msgstr "Esto borrará las pistas que fueron subidas pero no se procesaron en el servidor. Se borrarán completamente y recuperarás la cuota correspondiente."
+
+#: front/src/components/audio/PlayButton.vue:94
+#, fuzzy
+msgctxt "*/Queue/Dropdown/Button/Title"
+msgid "Replace current queue"
+msgstr "Añadir a la cola de reproducción actual"
+
+#: front/src/components/mixins/Report.vue:6 src/components/mixins/Report.vue:7
+msgctxt "*/Moderation/*/Verb"
+msgid "Report @%{ username }…"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:5
+msgctxt "Content/Moderation/Card/Short"
+msgid "Report %{ id }"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:139
+msgctxt "*/Moderation/Message"
+msgid "Report successfully submitted, thank you"
 msgstr ""
-"Esto borrará las pistas que fueron subidas pero no se procesaron en el "
-"servidor. Se borrarán completamente y recuperarás la cuota correspondiente."
 
-#: front/src/components/auth/SubsonicTokenForm.vue:33
-#: front/src/components/auth/SubsonicTokenForm.vue:36
+#: front/src/components/mixins/Report.vue:36
+#: src/components/mixins/Report.vue:37
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this album…"
+msgstr "Reproducir canción"
+
+#: front/src/components/mixins/Report.vue:50
+#: src/components/mixins/Report.vue:51
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this artist…"
+msgstr "Reproducir canción"
+
+#: front/src/components/mixins/Report.vue:72
+#: src/components/mixins/Report.vue:73
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this library…"
+msgstr "¿Eliminar la biblioteca?"
+
+#: front/src/components/mixins/Report.vue:61
+#: src/components/mixins/Report.vue:62
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this playlist…"
+msgstr "Añadir a esta lista de reproducción"
+
+#: front/src/components/mixins/Report.vue:23
+#: src/components/mixins/Report.vue:24
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this track…"
+msgstr "Reproducir canción"
+
+#: front/src/components/audio/PlayButton.vue:95
+msgctxt "*/Moderation/*/Button/Label,Verb"
+msgid "Report…"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:117
+msgctxt "Content/*/*/Short"
+msgid "Reported object"
+msgstr ""
+
+#: front/src/views/admin/moderation/Base.vue:5
+#: front/src/views/admin/moderation/ReportsList.vue:3
+#: front/src/views/admin/moderation/ReportsList.vue:208
+msgctxt "*/Moderation/*/Noun"
+msgid "Reports"
+msgstr ""
+
+#: front/src/components/auth/SubsonicTokenForm.vue:38
+#: front/src/components/auth/SubsonicTokenForm.vue:41
 msgctxt "*/Settings/Button.Label/Verb"
 msgid "Request a new password"
 msgstr "Solicitar una nueva contraseña"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:34
+#: front/src/components/auth/SubsonicTokenForm.vue:39
 msgctxt "Popup/Settings/Title"
 msgid "Request a new Subsonic API password?"
 msgstr "¿Solicitar una nueva contraseña de la API Subsonic?"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:42
+#: front/src/components/auth/SubsonicTokenForm.vue:47
 msgctxt "Content/Settings/Button.Label/Verb"
 msgid "Request a password"
 msgstr "Solicitar una contraseña"
@@ -3562,35 +3855,52 @@ msgctxt "Popup/*/Loading.Title"
 msgid "Requesting a fetch…"
 msgstr ""
 
-#: front/src/components/library/EditForm.vue:82
+#: front/src/components/library/EditForm.vue:94
 msgctxt "Content/Library/Button.Label"
-msgid "Reset to initial value: %{ value }"
+msgid "Reset to initial value"
 msgstr ""
 
-#: front/src/components/auth/Login.vue:35 src/views/auth/PasswordReset.vue:4
-#: front/src/views/auth/PasswordReset.vue:53
+#: front/src/components/auth/LoginForm.vue:34
+#: src/views/auth/PasswordReset.vue:4 front/src/views/auth/PasswordReset.vue:53
 msgctxt "*/Login/*/Verb"
 msgid "Reset your password"
 msgstr "Restablecer tu contraseña"
 
+#: front/src/components/manage/moderation/ReportCard.vue:83
+#, fuzzy
+msgctxt "Content/*/*/Noun"
+msgid "Resolution date"
+msgstr "Fecha de creación"
+
+#: front/src/components/manage/moderation/ReportCard.vue:218
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Resolve"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:62
+#: front/src/views/admin/moderation/ReportsList.vue:20
+msgctxt "Content/*/*/Short"
+msgid "Resolved"
+msgstr ""
+
 #: front/src/views/content/libraries/FilesTable.vue:223
 msgctxt "Content/Library/Dropdown/Verb"
 msgid "Restart import"
 msgstr "Reiniciar importación"
 
+#: front/src/components/library/EditForm.vue:31
+msgctxt "Content/Library/Button.Label"
+msgid "Restrict to unreviewed edits"
+msgstr ""
+
 #: front/src/components/favorites/List.vue:39
-#: src/components/library/Albums.vue:30
-#: front/src/components/library/Artists.vue:30
+#: src/components/library/Albums.vue:34
+#: front/src/components/library/Artists.vue:34
 #: src/components/library/Radios.vue:52 front/src/views/playlists/List.vue:32
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Results per page"
 msgstr "Resultados por página"
 
-#: front/src/components/library/EditForm.vue:31
-msgctxt "Content/Library/Button.Label"
-msgid "Retrict to unreviewed edits"
-msgstr ""
-
 #: front/src/views/auth/EmailConfirm.vue:17
 msgctxt "Content/Signup/Link/Verb"
 msgid "Return to login"
@@ -3621,52 +3931,54 @@ msgctxt "Content/Moderation/Card.Title/Noun"
 msgid "Rule"
 msgstr "Regla"
 
-#: front/src/components/admin/SettingsGroup.vue:67
+#: front/src/components/About.vue:28 src/components/About.vue:56
+#, fuzzy
+msgctxt "Content/About/Header"
+msgid "Rules"
+msgstr "Regla"
+
+#: front/src/components/admin/SettingsGroup.vue:75
 #: front/src/components/library/radios/Builder.vue:34
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Save"
 msgstr "Guardar"
 
-#: front/src/views/content/remote/Card.vue:175
+#: front/src/views/content/remote/Card.vue:203
 msgctxt "Content/Library/Message"
 msgid "Scan launched"
 msgstr "Análisis iniciado"
 
-#: front/src/views/content/remote/Card.vue:67
+#: front/src/views/content/remote/Card.vue:80
 msgctxt "Content/Library/Card.Button.Label/Verb"
 msgid "Scan now"
 msgstr "Analizar ahora"
 
-#: front/src/views/content/remote/Card.vue:35
+#: front/src/views/content/remote/Card.vue:48
 msgctxt "Content/Library/Card.List item"
 msgid "Scan pending"
 msgstr "Ascendente"
 
-#: front/src/views/content/remote/Card.vue:176
+#: front/src/views/content/remote/Card.vue:204
 msgctxt "Content/Library/Message"
 msgid "Scan skipped (previous scan is too recent)"
 msgstr "Análisis omitido (el anterior análisis es demasiado reciente)"
 
-#: front/src/views/content/remote/Card.vue:47
+#: front/src/views/content/remote/Card.vue:60
 msgctxt "Content/Library/Card.List item"
 msgid "Scanned"
 msgstr "Análisis finalizado"
 
-#: front/src/views/content/remote/Card.vue:51
+#: front/src/views/content/remote/Card.vue:64
 msgctxt "Content/Library/Card.List item"
 msgid "Scanned with errors"
 msgstr "Análisis erróneo"
 
-#: front/src/views/content/remote/Card.vue:39
+#: front/src/views/content/remote/Card.vue:52
 msgctxt "Content/Library/Card.List item"
 msgid "Scanning… (%{ progress }%)"
 msgstr "Analizando…(%{ progress }%)"
 
 #: front/src/components/auth/ApplicationForm.vue:22
-msgctxt "Content/Applications/Input.Label/Noun"
-msgid "Scopes"
-msgstr ""
-
 #: front/src/components/auth/Settings.vue:226
 msgctxt "Content/*/*/Noun"
 msgid "Scopes"
@@ -3679,12 +3991,14 @@ msgstr ""
 #: front/src/components/manage/library/ArtistsTable.vue:5
 #: front/src/components/manage/library/EditsCardList.vue:6
 #: front/src/components/manage/library/LibrariesTable.vue:5
+#: front/src/components/manage/library/TagsTable.vue:5
 #: front/src/components/manage/library/TracksTable.vue:5
 #: front/src/components/manage/library/UploadsTable.vue:5
 #: front/src/components/manage/moderation/AccountsTable.vue:5
 #: front/src/components/manage/moderation/DomainsTable.vue:5
 #: front/src/components/manage/users/InvitationsTable.vue:5
 #: front/src/components/manage/users/UsersTable.vue:5
+#: front/src/views/admin/moderation/ReportsList.vue:8
 #: front/src/views/content/libraries/FilesTable.vue:5
 #: src/views/playlists/List.vue:13
 msgctxt "Content/Search/Input.Label/Noun"
@@ -3697,6 +4011,7 @@ msgid "Search a remote library"
 msgstr "Buscar una biblioteca externa"
 
 #: front/src/components/manage/library/EditsCardList.vue:211
+#: front/src/views/admin/moderation/ReportsList.vue:207
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by account, summary, domain…"
 msgstr "Buscar por título, artista, dominio…"
@@ -3731,7 +4046,13 @@ msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by domain, username, bio…"
 msgstr "Buscar por dominio, nombre de usuario, bio…"
 
-#: front/src/components/manage/moderation/DomainsTable.vue:151
+#: front/src/components/manage/library/TagsTable.vue:165
+#, fuzzy
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by name"
+msgstr "Buscar por nombre…"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:168
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by name…"
 msgstr "Buscar por nombre…"
@@ -3746,12 +4067,12 @@ msgctxt "Content/Admin/Input.Placeholder/Verb"
 msgid "Search by username, e-mail address, code…"
 msgstr "Buscar por nombre de usuario, correo electrónico, código…"
 
-#: front/src/components/manage/users/UsersTable.vue:163
+#: front/src/components/manage/users/UsersTable.vue:164
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by username, e-mail address, name…"
 msgstr "Buscar por usuario, correo electrónico, nombre…"
 
-#: front/src/components/audio/SearchBar.vue:20
+#: front/src/components/audio/SearchBar.vue:27
 msgctxt "Sidebar/Search/Input.Placeholder"
 msgid "Search for artists, albums, tracks…"
 msgstr "Buscar artistas, álbumes, canciones…"
@@ -3761,16 +4082,30 @@ msgctxt "Content/Search/Title"
 msgid "Search for some music"
 msgstr "Buscar música"
 
-#: front/src/components/library/AlbumBase.vue:57
-#: front/src/components/library/ArtistBase.vue:68
-#: front/src/components/library/TrackBase.vue:76
+#: front/src/components/library/TagsSelector.vue:6
+#, fuzzy
+msgctxt "*/Dropdown/Placeholder/Verb"
+msgid "Search for tags…"
+msgstr "Buscar por nombre…"
+
+#: front/src/components/library/AlbumBase.vue:66
+#: front/src/components/library/ArtistBase.vue:77
+#: front/src/components/library/TrackBase.vue:82
+#, fuzzy
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Search on Discogs"
+msgstr "Buscar música"
+
+#: front/src/components/library/AlbumBase.vue:58
+#: front/src/components/library/ArtistBase.vue:69
+#: front/src/components/library/TrackBase.vue:74
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Search on Wikipedia"
 msgstr "Buscar en Wikipedia"
 
 #: front/src/components/library/Library.vue:35
-#: src/views/admin/library/Base.vue:32
-#: front/src/views/admin/moderation/Base.vue:22
+#: src/views/admin/library/Base.vue:35
+#: front/src/views/admin/moderation/Base.vue:44
 #: src/views/admin/users/Base.vue:21 front/src/views/content/Base.vue:19
 msgctxt "Menu/*/Hidden text"
 msgid "Secondary menu"
@@ -3781,6 +4116,26 @@ msgctxt "Content/Admin/Menu.Title"
 msgid "Sections"
 msgstr "Secciones"
 
+#: front/src/components/ShortcutsModal.vue:108
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek backwards 30s"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:100
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek backwards 5s"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:112
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek forwards 30s"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:104
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek forwards 5s"
+msgstr ""
+
 #: front/src/components/library/radios/Builder.vue:46
 msgctxt "Content/Radio/Dropdown.Placeholder/Verb"
 msgid "Select a filter"
@@ -3799,9 +4154,14 @@ msgctxt "Content/*/Link/Verb"
 msgid "Select only current page"
 msgstr "Seleccionar solo la página actual"
 
-#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:108
-#: front/src/components/manage/users/UsersTable.vue:181
-#: front/src/views/admin/moderation/AccountsDetail.vue:506
+#: front/src/components/Home.vue:43
+msgctxt "Content/Home/Link"
+msgid "Server rules"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:112
+#: front/src/components/manage/users/UsersTable.vue:182
+#: front/src/views/admin/moderation/AccountsDetail.vue:526
 msgctxt "*/*/*/Noun"
 msgid "Settings"
 msgstr "Ajustes"
@@ -3823,18 +4183,25 @@ msgstr "Compartir enlace"
 
 #: front/src/views/content/libraries/Detail.vue:15
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Share this link with other users so they can request access to your library."
-msgstr ""
-"Comparte este link con otros usuarios para que puedan pedir acceso a tu "
-"biblioteca."
+msgid "Share this link with other users so they can request access to your library."
+msgstr "Comparte este link con otros usuarios para que puedan pedir acceso a tu biblioteca."
 
 #: front/src/views/content/libraries/Detail.vue:14
-#: front/src/views/content/remote/Card.vue:77
+#: front/src/views/content/remote/Card.vue:90
 msgctxt "Content/Library/Title"
 msgid "Sharing link"
 msgstr "Compartir enlace"
 
+#: front/src/components/audio/EmbedWizard.vue:5
+msgctxt "Content/Embed/Message"
+msgid "Sharing will not work because this pod doesn't allow anonymous users to access content."
+msgstr ""
+
+#: front/src/components/About.vue:156
+msgctxt "*/*/*/Verb"
+msgid "Show"
+msgstr ""
+
 #: front/src/components/audio/album/Card.vue:38
 #, fuzzy
 msgctxt "Content/Album/Card.Link/Verb"
@@ -3843,11 +4210,11 @@ msgid_plural "Show %{ count } more tracks"
 msgstr[0] "Mostrar %{ count } canción más"
 msgstr[1] "Mostrar %{ count } canciones más"
 
-#: front/src/components/audio/artist/Card.vue:30
+#: front/src/components/tags/List.vue:11
 #, fuzzy
-msgctxt "Content/Artist/Card.Link"
-msgid "Show 1 more album"
-msgid_plural "Show %{ count } more albums"
+msgctxt "Content/*/Button/Label/Verb"
+msgid "Show 1 more tag"
+msgid_plural "Show %{ count } more tags"
 msgstr[0] "Mostrar 1 álbum adicional"
 msgstr[1] "Mostrar %{ count } álbumes adicionales"
 
@@ -3856,17 +4223,28 @@ msgctxt "Content/Library/Button.Label"
 msgid "Show all edits"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:42
+#: front/src/components/ShortcutsModal.vue:60
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Show available keyboard shortcuts"
 msgstr "Mostrar atajos de teclado disponibles"
 
-#: front/src/views/Notifications.vue:7
+#: front/src/components/common/ExpandableDiv.vue:7
+msgctxt "*/*/Button,Label"
+msgid "Show less"
+msgstr ""
+
+#: front/src/components/common/ExpandableDiv.vue:8
+#, fuzzy
+msgctxt "*/*/Button,Label"
+msgid "Show more"
+msgstr "Mostrar 1 álbum adicional"
+
+#: front/src/views/Notifications.vue:72
 msgctxt "Content/Notifications/Form.Label/Verb"
 msgid "Show read notifications"
 msgstr "Mostrar notificaciones leídas"
 
-#: front/src/components/forms/PasswordInput.vue:26
+#: front/src/components/forms/PasswordInput.vue:42
 msgctxt "Content/Settings/Button.Tooltip/Verb"
 msgid "Show/hide password"
 msgstr "Mostrar/ocultar contraseña"
@@ -3875,56 +4253,64 @@ msgstr "Mostrar/ocultar contraseña"
 #: front/src/components/manage/library/ArtistsTable.vue:84
 #: front/src/components/manage/library/EditsCardList.vue:72
 #: front/src/components/manage/library/LibrariesTable.vue:110
+#: front/src/components/manage/library/TagsTable.vue:79
 #: front/src/components/manage/library/TracksTable.vue:95
 #: front/src/components/manage/library/UploadsTable.vue:144
 #: front/src/components/manage/moderation/AccountsTable.vue:88
-#: front/src/components/manage/moderation/DomainsTable.vue:74
+#: front/src/components/manage/moderation/DomainsTable.vue:85
 #: front/src/components/manage/users/InvitationsTable.vue:76
-#: front/src/components/manage/users/UsersTable.vue:87
+#: front/src/components/manage/users/UsersTable.vue:88
 #: front/src/views/content/libraries/FilesTable.vue:117
 msgctxt "Content/*/Paragraph"
 msgid "Showing results %{ start }-%{ end } on %{ total }"
 msgstr "Mostrando resultados %{ start }-%{ end } de %{ total }"
 
-#: front/src/components/ShortcutsModal.vue:83
+#: front/src/components/ShortcutsModal.vue:140
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Shuffle queue"
 msgstr "Mezclar tu cola de reproducción"
 
-#: front/src/components/audio/Player.vue:641
+#: front/src/components/audio/Player.vue:667
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Shuffle your queue"
 msgstr "Mezclar tu cola de reproducción"
 
-#: front/src/components/auth/Signup.vue:97
+#: front/src/components/Home.vue:103
+#, fuzzy
+msgctxt "*/Signup/Title"
+msgid "Sign up"
+msgstr "Inscripción"
+
+#: front/src/views/auth/Signup.vue:37
 msgctxt "*/Signup/Title"
 msgid "Sign Up"
 msgstr "Inscripción"
 
-#: front/src/components/manage/users/UsersTable.vue:40
+#: front/src/components/Home.vue:107
+msgctxt "Content/Home/Paragraph"
+msgid "Sign up now to keep a track of your favorites, create playlists, discover new content and much more!"
+msgstr ""
+
+#: front/src/components/manage/users/UsersTable.vue:40
 msgctxt "Content/Admin/Table.Label/Short, Noun (Value is a date)"
 msgid "Sign-up"
 msgstr "Inscripción"
 
-#: front/src/components/mixins/Translations.vue:57
-#: front/src/views/admin/moderation/AccountsDetail.vue:197
-#: front/src/components/mixins/Translations.vue:58
+#: front/src/components/mixins/Translations.vue:69
+#: front/src/views/admin/moderation/AccountsDetail.vue:198
+#: front/src/components/mixins/Translations.vue:70
 msgctxt "Content/Admin/Table.Label/Noun"
 msgid "Sign-up date"
 msgstr "Fecha de inscripción"
 
-#: front/src/components/manage/library/UploadsTable.vue:65
-#: front/src/views/admin/library/UploadDetail.vue:219
-msgctxt "Content/*/*/Noun"
-msgid "Size"
-msgstr "Tamaño"
-
 #: front/src/components/library/FileUpload.vue:94
 #: front/src/components/library/TrackDetail.vue:39
-#: front/src/components/mixins/Translations.vue:54
+#: front/src/components/manage/library/UploadsTable.vue:65
+#: front/src/components/mixins/Translations.vue:66
+#: front/src/views/admin/library/UploadDetail.vue:219
 #: front/src/views/content/libraries/FilesTable.vue:61
-#: front/src/components/mixins/Translations.vue:55
-msgctxt "Content/Library/*/in MB"
+#: front/src/components/mixins/Translations.vue:67
+msgctxt "Content/*/*/Noun"
 msgid "Size"
 msgstr "Tamaño"
 
@@ -3941,7 +4327,7 @@ msgctxt "Content/Library/Label"
 msgid "Skipped files"
 msgstr "Archivos omitidos"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:89
+#: front/src/views/admin/moderation/DomainsDetail.vue:126
 msgctxt "Content/Moderation/Table.Label"
 msgid "Software"
 msgstr "Software"
@@ -3956,93 +4342,65 @@ msgctxt "Content/*/Paragraph"
 msgid "Sorry, the page you asked for does not exist:"
 msgstr "Lo sentimos, la página solicitada no existe:"
 
-#: front/src/components/Footer.vue:49
+#: front/src/components/Footer.vue:57
 msgctxt "Footer/*/List item.Link"
 msgid "Source code"
 msgstr "Código fuente"
 
 #: front/src/components/auth/Profile.vue:23
-#: front/src/components/manage/users/UsersTable.vue:70
+#: front/src/components/manage/users/UsersTable.vue:71
 msgctxt "Content/Profile/User role"
 msgid "Staff member"
 msgstr "Miembro del equipo"
 
-#: front/src/components/audio/PlayButton.vue:23
+#: front/src/components/audio/PlayButton.vue:27
 #: src/components/radios/Button.vue:4
 msgctxt "*/Queue/Button.Label/Short, Verb"
 msgid "Start radio"
 msgstr "Parar radio"
 
-#: front/src/views/admin/Settings.vue:86
-msgctxt "Content/Admin/Menu"
+#: front/src/components/About.vue:170 src/components/Home.vue:53
+#: front/src/views/admin/Settings.vue:87
+#, fuzzy
+msgctxt "Content/Home/Header"
 msgid "Statistics"
 msgstr "Estadísticas"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:490
+#: front/src/views/admin/moderation/AccountsDetail.vue:510
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this account"
-msgstr ""
-"Las estadísticas se calculan a partir de la actividad y el contenido "
-"conocidos en tu instancia y no reflejan la actividad general de esta cuenta"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this account"
+msgstr "Las estadísticas se calculan a partir de la actividad y el contenido conocidos en tu instancia y no reflejan la actividad general de esta cuenta"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:371
+#: front/src/views/admin/moderation/DomainsDetail.vue:418
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this domain"
-msgstr ""
-"Las estadísticas se calculan a partir de la actividad y el contenido "
-"conocidos en tu instancia y no reflejan la actividad general de éste dominio"
-
-#: front/src/views/admin/library/AlbumDetail.vue:329
-#: front/src/views/admin/library/ArtistDetail.vue:328
-#: front/src/views/admin/library/LibraryDetail.vue:316
-#: front/src/views/admin/library/TrackDetail.vue:371
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this domain"
+msgstr "Las estadísticas se calculan a partir de la actividad y el contenido conocidos en tu instancia y no reflejan la actividad general de éste dominio"
+
+#: front/src/views/admin/library/AlbumDetail.vue:346
+#: front/src/views/admin/library/ArtistDetail.vue:345
+#: front/src/views/admin/library/LibraryDetail.vue:356
+#: front/src/views/admin/library/TagDetail.vue:210
+#: front/src/views/admin/library/TrackDetail.vue:389
 #: front/src/views/admin/library/UploadDetail.vue:335
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this object"
-msgstr ""
-"Las estadísticas se calculan a partir de la actividad y el contenido "
-"conocidos en tu instancia y no reflejan la actividad general de esta cuenta"
-
-#: front/src/views/admin/moderation/DomainsDetail.vue:115
-msgctxt "Content/Moderation/Table.Label (Value is Error message)"
-msgid "Status"
-msgstr "Estado"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this object"
+msgstr "Las estadísticas se calculan a partir de la actividad y el contenido conocidos en tu instancia y no reflejan la actividad general de esta cuenta"
 
 #: front/src/components/library/FileUpload.vue:95
-msgctxt "Content/Library/Table.Label (Value is Uploading/Uploaded/Error)"
-msgid "Status"
-msgstr "Estado"
-
-#: front/src/views/content/libraries/Detail.vue:28
-msgctxt "Content/Library.Federation/Table.Label (Value is Approved/Rejected)"
-msgid "Status"
-msgstr "Estado"
-
+#: front/src/components/manage/library/EditsCardList.vue:12
+#: front/src/components/manage/moderation/ReportCard.vue:57
 #: front/src/components/manage/users/InvitationsTable.vue:17
 #: front/src/components/manage/users/InvitationsTable.vue:39
-msgctxt "Content/Admin/*/Noun (Value is Used/Not used)"
-msgid "Status"
-msgstr "Estado"
-
 #: front/src/components/manage/users/UsersTable.vue:43
-msgctxt "Content/Admin/Table.Label/Noun (Value is Regular user/Admin)"
-msgid "Status"
-msgstr "Estado"
-
-#: front/src/components/manage/library/EditsCardList.vue:12
-msgctxt ""
-"Content/Search/Dropdown.Label (Value is All/Pending "
-"review/Approved/Rejected)"
+#: front/src/views/admin/moderation/DomainsDetail.vue:152
+#: front/src/views/admin/moderation/ReportsList.vue:14
+#: front/src/views/content/libraries/Detail.vue:28
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Status"
 msgstr "Estado"
 
-#: front/src/components/Sidebar.vue:174 src/components/radios/Button.vue:3
+#: front/src/components/Sidebar.vue:178 src/components/radios/Button.vue:3
 msgctxt "*/Player/Button.Label/Short, Verb"
 msgid "Stop radio"
 msgstr "Parar radio"
@@ -4052,7 +4410,7 @@ msgctxt "*/*/Button.Label/Verb"
 msgid "Submit"
 msgstr "Enviar"
 
-#: front/src/components/library/EditForm.vue:98
+#: front/src/components/library/EditForm.vue:110
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Submit and apply edit"
 msgstr ""
@@ -4062,12 +4420,24 @@ msgctxt "Content/Library/Button.Label"
 msgid "Submit another edit"
 msgstr ""
 
-#: front/src/components/library/EditForm.vue:99
+#: front/src/components/moderation/ReportModal.vue:64
+#, fuzzy
+msgctxt "Popup/*/Button.Label"
+msgid "Submit report"
+msgstr "Enviar"
+
+#: front/src/components/library/EditForm.vue:111
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Submit suggestion"
 msgstr ""
 
-#: front/src/views/admin/Settings.vue:85
+#: front/src/components/manage/moderation/ReportCard.vue:17
+#, fuzzy
+msgctxt "Content/Moderation/*"
+msgid "Submitted by"
+msgstr "Enviar"
+
+#: front/src/views/admin/Settings.vue:86
 msgctxt "Content/Admin/Menu"
 msgid "Subsonic"
 msgstr "Subsonic"
@@ -4107,16 +4477,21 @@ msgctxt "Content/Library/Tab.Title/Short"
 msgid "Summary"
 msgstr "Resumen"
 
-#: front/src/components/library/EditForm.vue:87
+#: front/src/components/library/EditForm.vue:99
 msgctxt "*/*/*"
 msgid "Summary (optional)"
 msgstr ""
 
-#: front/src/components/Footer.vue:39
+#: front/src/components/Footer.vue:47
 msgctxt "Footer/*/Listitem.Link"
 msgid "Support forum"
 msgstr "Foro de soporte"
 
+#: front/src/views/Notifications.vue:10
+msgctxt "Content/Notifications/Header"
+msgid "Support this Funkwhale pod"
+msgstr ""
+
 #: front/src/components/library/FileUpload.vue:85
 msgctxt "Content/Library/Paragraph"
 msgid "Supported extensions: %{ extensions }"
@@ -4127,25 +4502,47 @@ msgctxt "Content/Playlist/Paragraph"
 msgid "Syncing changes to server…"
 msgstr "Sincronizando los cambios con el servidor…"
 
-#: front/src/components/audio/EmbedWizard.vue:25
+#: front/src/components/audio/SearchBar.vue:35
+msgctxt "*/*/*/Noun"
+msgid "Tag"
+msgstr ""
+
+#: front/src/views/admin/library/TagDetail.vue:61
+#, fuzzy
+msgctxt "Content/Moderation/Title"
+msgid "Tag data"
+msgstr "Nombre"
+
+#: front/src/components/library/Albums.vue:23
+#: src/components/library/Artists.vue:15
+#: front/src/views/admin/library/Base.vue:23
+#: src/views/admin/library/TagsList.vue:24 front/src/edits.js:24
+#: src/edits.js:50 src/edits.js:91 src/entities.js:120
+msgctxt "*/*/*/Noun"
+msgid "Tags"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:44
+#: front/src/components/mixins/Translations.vue:45
+#, fuzzy
+msgctxt "Content/Moderation/Dropdown"
+msgid "Takedown request"
+msgstr "Solicitudes de seguimiento pendientes"
+
+#: front/src/components/About.vue:35 src/components/About.vue:61
+msgctxt "Content/About/Header"
+msgid "Terms and privacy policy"
+msgstr ""
+
+#: front/src/components/audio/EmbedWizard.vue:35
 #: front/src/components/common/CopyInput.vue:3
 msgctxt "Content/*/Paragraph"
 msgid "Text copied to clipboard!"
 msgstr "¡Texto copiado al portapapeles!"
 
-#: front/src/components/Home.vue:26
-msgctxt "Content/Home/Paragraph"
-msgid ""
-"That's simple: we loved Grooveshark and we want to build something even "
-"better."
-msgstr ""
-"Así de simple: nos encantó Grooveshark y quisimos hacer algo incluso mejor."
-
-#: front/src/views/admin/library/AlbumDetail.vue:75
+#: front/src/views/admin/library/AlbumDetail.vue:81
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The album will be removed, as well as associated uploads, tracks, favorites "
-"and listening history. This action is irreversible."
+msgid "The album will be removed, as well as associated uploads, tracks, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/components/auth/Authorize.vue:39
@@ -4153,19 +4550,15 @@ msgctxt "Content/Auth/Paragraph"
 msgid "The application is also requesting the following unknown permissions:"
 msgstr ""
 
-#: front/src/views/admin/library/ArtistDetail.vue:74
+#: front/src/views/admin/library/ArtistDetail.vue:79
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The artist will be removed, as well as associated uploads, tracks, albums, "
-"favorites and listening history. This action is irreversible."
+msgid "The artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible."
 msgstr ""
 
-#: front/src/components/Footer.vue:53
+#: front/src/components/Footer.vue:61
 msgctxt "Footer/*/List item.Link"
 msgid "The funkwhale logo was kindly designed and provided by Francis Gading."
-msgstr ""
-"El logotipo de Funkwhale fue generosamente diseñado y suplido por Francis "
-"Gading."
+msgstr "El logotipo de Funkwhale fue generosamente diseñado y suplido por Francis Gading."
 
 #: front/src/components/SetInstanceModal.vue:8
 msgctxt "Popup/Instance/Error message.List item"
@@ -4174,24 +4567,17 @@ msgstr ""
 
 #: front/src/views/content/libraries/Form.vue:34
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"The library and all its tracks will be deleted. This can not be undone."
-msgstr ""
-"La biblioteca y todas sus pistas serán borradas. Esta acción es "
-"irreversible."
+msgid "The library and all its tracks will be deleted. This can not be undone."
+msgstr "La biblioteca y todas sus pistas serán borradas. Esta acción es irreversible."
 
 #: front/src/views/admin/library/LibraryDetail.vue:61
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The library will be removed, as well as associated uploads, and follows. "
-"This action is irreversible."
+msgid "The library will be removed, as well as associated uploads, and follows. This action is irreversible."
 msgstr ""
 
 #: front/src/components/library/ImportStatusModal.vue:140
 msgctxt "Popup/Import/Error.Label"
-msgid ""
-"The metadata included in the file is invalid or some mandatory fields are "
-"missing."
+msgid "The metadata included in the file is invalid or some mandatory fields are missing."
 msgstr ""
 
 #: front/src/components/library/FileUpload.vue:38
@@ -4204,14 +4590,16 @@ msgctxt "Sidebar/Player/Error message.Paragraph"
 msgid "The next track will play automatically in a few seconds…"
 msgstr "La siguiente pista se reproducirá automáticamente en unos segundos…"
 
-#: front/src/components/Home.vue:116
-msgctxt "Content/Home/List item"
-msgid ""
-"The plaform is free and open-source, you can install it and modify it "
-"without worries"
+#: front/src/components/manage/moderation/NotesThread.vue:27
+#, fuzzy
+msgctxt "Content/Moderation/Paragraph"
+msgid "The note will be removed. This action is irreversible."
+msgstr "Ésta acción es irreversible."
+
+#: front/src/components/manage/moderation/ReportCard.vue:120
+msgctxt "Content/Moderation/Message"
+msgid "The object associated with this report was deleted."
 msgstr ""
-"La plataforma es gratuita y de código fuente libre, puedes instalarla y "
-"modificarla sin restricciones"
 
 #: front/src/components/playlists/Form.vue:14
 msgctxt "Content/Playlist/Error message.Title"
@@ -4225,46 +4613,43 @@ msgstr ""
 
 #: front/src/components/federation/FetchButton.vue:13
 msgctxt "Popup/*/Message.Content"
-msgid ""
-"The remote server answered, but returned data was unsupported by Funkwhale."
+msgid "The remote server answered, but returned data was unsupported by Funkwhale."
 msgstr ""
 
 #: front/src/components/federation/FetchButton.vue:44
 msgctxt "*/*/Error"
-msgid "The remote server didn't answered fast enough"
+msgid "The remote server didn't respond quickly enough"
 msgstr ""
 
 #: front/src/components/federation/FetchButton.vue:50
 msgctxt "*/*/Error"
-msgid "The return server returned invalid JSON or JSON-LD data"
+msgid "The remote server returned invalid JSON or JSON-LD data"
 msgstr ""
 
 #: front/src/components/manage/library/AlbumsTable.vue:189
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected albums will be removed, as well as associated tracks, uploads, "
-"favorites and listening history. This action is irreversible."
+msgid "The selected albums will be removed, as well as associated tracks, uploads, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/components/manage/library/ArtistsTable.vue:179
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected artist will be removed, as well as associated uploads, tracks, "
-"albums, favorites and listening history. This action is irreversible."
+msgid "The selected artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/components/manage/library/LibrariesTable.vue:206
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected library will be removed, as well as associated uploads and "
-"follows. This action is irreversible."
+msgid "The selected library will be removed, as well as associated uploads and follows. This action is irreversible."
 msgstr ""
 
+#: front/src/components/manage/library/TagsTable.vue:180
+#, fuzzy
+msgctxt "Popup/*/Paragraph"
+msgid "The selected tag will be removed and unlinked with existing content, if any. This action is irreversible."
+msgstr "Ésta acción es irreversible."
+
 #: front/src/components/manage/library/TracksTable.vue:189
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected tracks will be removed, as well as associated uploads, "
-"favorites and listening history. This action is irreversible."
+msgid "The selected tracks will be removed, as well as associated uploads, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/components/manage/library/UploadsTable.vue:256
@@ -4284,10 +4669,15 @@ msgstr "La API Subsonic no está disponible en esta instancia de Funkwhale."
 
 #: front/src/components/library/EditCard.vue:96
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"The suggestion will be completely removed, this action is irreversible."
+msgid "The suggestion will be completely removed, this action is irreversible."
 msgstr ""
 
+#: front/src/views/admin/library/TagDetail.vue:44
+#, fuzzy
+msgctxt "Content/Moderation/Paragraph"
+msgid "The tag will be removed and unlinked from any existing entity. This action is irreversible."
+msgstr "Ésta acción es irreversible."
+
 #: front/src/components/playlists/PlaylistModal.vue:34
 msgctxt "Popup/Playlist/Error message.Title"
 msgid "The track can't be added to a playlist"
@@ -4298,11 +4688,9 @@ msgctxt "Sidebar/Player/Error message.Title"
 msgid "The track cannot be loaded"
 msgstr ""
 
-#: front/src/views/admin/library/TrackDetail.vue:74
+#: front/src/views/admin/library/TrackDetail.vue:80
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The track will be removed, as well as associated uploads, favorites and "
-"listening history. This action is irreversible."
+msgid "The track will be removed, as well as associated uploads, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/views/admin/library/UploadDetail.vue:68
@@ -4318,9 +4706,7 @@ msgstr "Las canciones subidas estén en formato OGG, Flac o MP3"
 #: front/src/views/content/Home.vue:4
 msgctxt "Content/Library/Paragraph"
 msgid "There are various ways to grab new content and make it available here."
-msgstr ""
-"Ofrecemos varias formas de obtener nuevo contenido para hacerlo disponible "
-"aquí."
+msgstr "Ofrecemos varias formas de obtener nuevo contenido para hacerlo disponible aquí."
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:66
 msgctxt "Popup/Moderation/Paragraph"
@@ -4337,21 +4723,37 @@ msgctxt "Content/Artist/Paragraph"
 msgid "This artist is present in the following libraries:"
 msgstr "Este artista ya está en las siguientes bibliotecas:"
 
+#: front/src/components/manage/moderation/DomainsTable.vue:169
+#, fuzzy
+msgctxt "Content/Moderation/Popup"
+msgid "This domain is present in your allow-list"
+msgstr "Este artista ya está en las siguientes bibliotecas:"
+
 #: front/src/views/admin/moderation/AccountsDetail.vue:84
-#: front/src/views/admin/moderation/DomainsDetail.vue:48
+#: front/src/views/admin/moderation/DomainsDetail.vue:76
 msgctxt "Content/Moderation/Card.Title"
 msgid "This domain is subject to specific moderation rules"
 msgstr "Este dominio está sujeto a reglas de moderación específicas"
 
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:16
+#, fuzzy
+msgctxt "Content/Moderation/Card.Title"
+msgid "This entity is subject to specific moderation rules"
+msgstr "Este dominio está sujeto a reglas de moderación específicas"
+
 #: front/src/views/content/Home.vue:9
 msgctxt "Content/Library/Paragraph"
 msgid "This instance offers up to %{quota} of storage space for every user."
 msgstr "Esta instancia ofrece %{ quota } de almacenamiento a cada usuario."
 
+#: front/src/components/auth/Settings.vue:300
+msgctxt "Popup/Settings/Paragraph"
+msgid "This is irreversible and will permanently remove your data from our servers. You will we immediatly logged out."
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:165
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"This is the list of applications that have access to your account data."
+msgid "This is the list of applications that have access to your account data."
 msgstr ""
 
 #: front/src/components/auth/Settings.vue:218
@@ -4369,28 +4771,20 @@ msgctxt "Content/Library/Input.Placeholder"
 msgid "This library contains my personal music, I hope you like it."
 msgstr "Esta biblioteca contiene mi música personal, ¡espero que te guste!"
 
-#: front/src/views/content/remote/Card.vue:141
+#: front/src/views/content/remote/Card.vue:169
 msgctxt "Content/Library/Card.Help text"
-msgid ""
-"This library is private and your approval from its owner is needed to access"
-" its content"
-msgstr ""
-"Esta biblioteca es privada y se necesita la aprobación de su propietario "
-"para acceder a su contenido"
+msgid "This library is private and your approval from its owner is needed to access its content"
+msgstr "Esta biblioteca es privada y se necesita la aprobación de su propietario para acceder a su contenido"
 
-#: front/src/views/content/remote/Card.vue:142
+#: front/src/views/content/remote/Card.vue:170
 msgctxt "Content/Library/Card.Help text"
 msgid "This library is public and you can access its content freely"
 msgstr "Esta biblioteca es pública y puedes acceder a su contenido libremente"
 
 #: front/src/components/common/ActionTable.vue:47
 msgctxt "Modal/*/Paragraph"
-msgid ""
-"This may affect a lot of elements or have irreversible consequences, please "
-"double check this is really what you want."
-msgstr ""
-"Esto puede afectar a muchos elementos, por favor comprueba si esto es "
-"realmente lo que quieres."
+msgid "This may affect a lot of elements or have irreversible consequences, please double check this is really what you want."
+msgstr "Esto puede afectar a muchos elementos, por favor comprueba si esto es realmente lo que quieres."
 
 #: front/src/components/library/AlbumEdit.vue:8
 #: front/src/components/library/ArtistEdit.vue:8
@@ -4399,6 +4793,11 @@ msgctxt "Content/*/Message"
 msgid "This object is managed by another server, you cannot edit it."
 msgstr ""
 
+#: front/src/components/Home.vue:87
+msgctxt "Content/Home/Paragraph"
+msgid "This pod runs Funkwhale, a community-driven project that lets you listen and share music and audio within a decentralized, open network."
+msgstr ""
+
 #: front/src/components/library/FileUpload.vue:51
 msgctxt "Content/Library/Paragraph"
 msgid "This reference will be used to group imported files together."
@@ -4406,17 +4805,15 @@ msgstr "Esta referencia será usada para agrupar los archivos subidos."
 
 #: front/src/components/mixins/Translations.vue:33
 #: front/src/components/mixins/Translations.vue:34
+#, fuzzy
 msgctxt "Content/Library/Help text"
-msgid "This track could not be processed, please it is tagged correctly"
-msgstr ""
-"Ha ocurrido un error al procesar esta pista, asegúrate que está etiquetada "
-"correctamente"
+msgid "This track could not be processed, please make sure it is tagged correctly"
+msgstr "Ha ocurrido un error al procesar esta pista, asegúrate que está etiquetada correctamente"
 
 #: front/src/components/mixins/Translations.vue:29
 #: front/src/components/mixins/Translations.vue:30
 msgctxt "Content/Library/Help text"
-msgid ""
-"This track has been uploaded, but hasn't been processed by the server yet"
+msgid "This track has been uploaded, but hasn't been processed by the server yet"
 msgstr "La pista se ha subido pero aún no la ha procesado el servidor"
 
 #: front/src/components/mixins/Translations.vue:25
@@ -4425,100 +4822,94 @@ msgctxt "Content/Library/Help text"
 msgid "This track is already present in one of your libraries"
 msgstr "La pista ya está en alguna de tus bibliotecas"
 
-#: front/src/components/audio/PlayButton.vue:85
+#: front/src/components/audio/PlayButton.vue:103
 msgctxt "*/Queue/Button/Title"
 msgid "This track is not available in any library you have access to"
-msgstr ""
-"Esta pista no está disponible en ninguna biblioteca a la que tenga acceso"
+msgstr "Esta pista no está disponible en ninguna biblioteca a la que tenga acceso"
 
 #: front/src/components/library/TrackDetail.vue:82
 msgctxt "Content/Track/Paragraph"
 msgid "This track is present in the following libraries:"
 msgstr "Esta canción ya está en las siguientes bibliotecas:"
 
-#: front/src/views/playlists/Detail.vue:38
+#: front/src/views/playlists/Detail.vue:46
 msgctxt "Popup/Playlist/Paragraph"
 msgid "This will completely delete this playlist and cannot be undone."
-msgstr ""
-"Esto borrará por completo esta lista de reproducción y no se podrá deshacer."
+msgstr "Esto borrará por completo esta lista de reproducción y no se podrá deshacer."
 
 #: front/src/views/radios/Detail.vue:27
 msgctxt "Popup/Radio/Paragraph"
 msgid "This will completely delete this radio and cannot be undone."
 msgstr "Esto borrará por completo esta radio y no se podrá deshacer."
 
-#: front/src/components/auth/SubsonicTokenForm.vue:50
+#: front/src/components/auth/SubsonicTokenForm.vue:55
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will completely disable access to the Subsonic API using from account."
+msgid "This will completely disable access to the Subsonic API using from account."
+msgstr "Esto desactivará por completo el acceso a la API Subsonic desde esta cuenta."
+
+#: front/src/components/manage/moderation/ReportCard.vue:359
+msgctxt "Content/Moderation/Popup,Paragraph"
+msgid "This will delete the object associated with this report and mark the report as resolved. The deletion is irreversible."
 msgstr ""
-"Esto desactivará por completo el acceso a la API Subsonic desde esta cuenta."
 
-#: front/src/components/auth/SubsonicTokenForm.vue:35
+#: front/src/components/auth/SubsonicTokenForm.vue:40
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will log you out from existing devices that use the current password."
-msgstr ""
-"Esto cerrará tus sesiones en todos los dispositivos que usan esa contraseña."
+msgid "This will log you out from existing devices that use the current password."
+msgstr "Esto cerrará tus sesiones en todos los dispositivos que usan esa contraseña."
 
 #: front/src/components/auth/Settings.vue:253
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will permanently delete the application and all the associated tokens."
-msgstr ""
-"Esto borrará por completo esta lista de reproducción y no se podrá deshacer."
+msgid "This will permanently delete the application and all the associated tokens."
+msgstr "Esto borrará por completo esta lista de reproducción y no se podrá deshacer."
 
 #: front/src/components/auth/Settings.vue:194
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will prevent this application from accessing the service on your "
-"behalf."
+msgid "This will prevent this application from accessing the service on your behalf."
 msgstr ""
 
 #: front/src/components/playlists/Editor.vue:54
 msgctxt "Popup/Playlist/Paragraph"
 msgid "This will remove all tracks from this playlist and cannot be undone."
-msgstr ""
-"Esto borrará todas las canciones de esta lista de reproducción y no se podrá"
-" deshacer."
-
-#: front/src/views/admin/library/AlbumDetail.vue:99
-#: front/src/views/admin/library/TrackDetail.vue:98 src/edits.js:21
-#: src/edits.js:39
-msgctxt "*/*/*/Noun"
-msgid "Title"
-msgstr "Título"
+msgstr "Esto borrará todas las canciones de esta lista de reproducción y no se podrá deshacer."
 
 #: front/src/components/audio/track/Table.vue:7
-#: front/src/views/content/libraries/FilesTable.vue:55
-msgctxt "Content/Track/*/Noun"
-msgid "Title"
-msgstr "Título"
-
 #: front/src/components/manage/library/AlbumsTable.vue:39
 #: front/src/components/manage/library/TracksTable.vue:39
-msgctxt "*/*/*"
+#: front/src/views/admin/library/AlbumDetail.vue:105
+#: front/src/views/admin/library/TrackDetail.vue:104
+#: front/src/views/content/libraries/FilesTable.vue:55 src/edits.js:36
+#: front/src/edits.js:62
+msgctxt "*/*/*/Noun"
 msgid "Title"
 msgstr "Título"
 
 #: front/src/components/SetInstanceModal.vue:16
 msgctxt "Popup/Instance/Paragraph"
-msgid ""
-"To continue, please select the Funkwhale instance you want to connect to. "
-"Enter the address directly, or select one of the suggested choices."
+msgid "To continue, please select the Funkwhale instance you want to connect to. Enter the address directly, or select one of the suggested choices."
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:148
+#, fuzzy
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle favorite"
+msgstr "1 favorito"
+
+#: front/src/components/ShortcutsModal.vue:132
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle mute"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:79
+#: front/src/components/ShortcutsModal.vue:136
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Toggle queue looping"
 msgstr "Alternar cola en bucle"
 
-#: front/src/views/admin/library/AlbumDetail.vue:222
-#: front/src/views/admin/library/ArtistDetail.vue:211
-#: front/src/views/admin/library/LibraryDetail.vue:200
-#: front/src/views/admin/library/TrackDetail.vue:274
-#: front/src/views/admin/moderation/AccountsDetail.vue:317
-#: front/src/views/admin/moderation/DomainsDetail.vue:225
+#: front/src/views/admin/library/AlbumDetail.vue:238
+#: front/src/views/admin/library/ArtistDetail.vue:226
+#: front/src/views/admin/library/LibraryDetail.vue:219
+#: front/src/views/admin/library/TrackDetail.vue:290
+#: front/src/views/admin/moderation/AccountsDetail.vue:329
+#: front/src/views/admin/moderation/DomainsDetail.vue:262
 msgctxt "Content/Moderation/Table.Label"
 msgid "Total size"
 msgstr "Tamaño total"
@@ -4528,20 +4919,18 @@ msgctxt "Content/Library/Card.Help text"
 msgid "Total size of the files in this library"
 msgstr "Tamaño total de la biblioteca"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:105
+#: front/src/views/admin/moderation/DomainsDetail.vue:142
 msgctxt "Content/*/*"
 msgid "Total users"
 msgstr "Usuarios totales"
 
-#: front/src/views/admin/library/UploadDetail.vue:199
-msgctxt "*/*/*"
-msgid "Track"
-msgstr "Canción"
-
-#: front/src/components/audio/SearchBar.vue:27
-#: front/src/components/library/TrackBase.vue:173
+#: front/src/components/audio/SearchBar.vue:34
+#: front/src/components/library/TrackBase.vue:188
 #: front/src/components/library/TrackDetail.vue:128
 #: front/src/components/metadata/Search.vue:138
+#: src/components/mixins/Report.vue:28
+#: front/src/views/admin/library/UploadDetail.vue:199
+#: front/src/components/mixins/Report.vue:29
 msgctxt "*/*/*/Noun"
 msgid "Track"
 msgstr "Canción"
@@ -4551,7 +4940,7 @@ msgctxt "Content/Library/Card/Short"
 msgid "Track #%{ id } - %{ name }"
 msgstr ""
 
-#: front/src/views/admin/library/TrackDetail.vue:91
+#: front/src/views/admin/library/TrackDetail.vue:97
 msgctxt "Content/Moderation/Title"
 msgid "Track data"
 msgstr "Nombre"
@@ -4561,30 +4950,28 @@ msgctxt "Content/Track/Title/Noun"
 msgid "Track information"
 msgstr "Información de la canción"
 
-#: front/src/components/mixins/Translations.vue:50
-#: front/src/components/mixins/Translations.vue:51
+#: front/src/components/mixins/Translations.vue:60
+#: front/src/components/mixins/Translations.vue:61
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Track name"
 msgstr "Nombre"
 
-#: front/src/components/instance/Stats.vue:54
 #: front/src/components/library/AlbumDetail.vue:19
-#: front/src/components/playlists/PlaylistModal.vue:47
-#: front/src/views/admin/moderation/AccountsDetail.vue:362
-#: front/src/views/admin/moderation/DomainsDetail.vue:274
-#: front/src/views/content/Base.vue:8 src/views/content/libraries/Detail.vue:8
-#: front/src/views/playlists/Detail.vue:51 src/views/radios/Detail.vue:34
-msgctxt "*/*/*/Noun"
-msgid "Tracks"
-msgstr "Canciones"
-
+#: front/src/components/library/TagDetail.vue:36
 #: front/src/components/manage/library/AlbumsTable.vue:42
 #: front/src/components/manage/library/ArtistsTable.vue:42
-#: front/src/views/admin/library/AlbumDetail.vue:252
-#: front/src/views/admin/library/ArtistDetail.vue:251
+#: front/src/components/manage/library/TagsTable.vue:44
+#: front/src/components/playlists/PlaylistModal.vue:47
+#: front/src/views/admin/library/AlbumDetail.vue:268
+#: front/src/views/admin/library/ArtistDetail.vue:266
 #: front/src/views/admin/library/Base.vue:14
-#: front/src/views/admin/library/LibraryDetail.vue:229
+#: front/src/views/admin/library/LibraryDetail.vue:248
+#: front/src/views/admin/library/TagDetail.vue:143
 #: front/src/views/admin/library/TracksList.vue:24
+#: front/src/views/admin/moderation/AccountsDetail.vue:374
+#: front/src/views/admin/moderation/DomainsDetail.vue:311
+#: front/src/views/content/Base.vue:8 src/views/content/libraries/Detail.vue:8
+#: front/src/views/playlists/Detail.vue:76 src/views/radios/Detail.vue:34
 msgctxt "*/*/*"
 msgid "Tracks"
 msgstr "Canciones"
@@ -4594,79 +4981,64 @@ msgctxt "Content/Artist/Title"
 msgid "Tracks by this artist"
 msgstr "Canciones de este artista"
 
-#: front/src/components/instance/Stats.vue:25
-msgctxt "Content/About/Paragraph/Unit"
-msgid "Tracks favorited"
-msgstr "Canciones en favoritos"
-
-#: front/src/components/instance/Stats.vue:19
-msgctxt "Content/About/Paragraph/Unit"
-msgid "tracks listened"
-msgstr "Canciones escuchadas"
-
 #: front/src/components/library/radios/Filter.vue:44
 msgctxt "Popup/Radio/Title/Noun"
 msgid "Tracks matching filter"
 msgstr "Canción correspondiente al filtro"
 
 #: front/src/components/library/TrackDetail.vue:57
+#: front/src/components/manage/moderation/ReportCard.vue:134
 #: front/src/views/admin/library/UploadDetail.vue:250
+#: front/src/views/admin/moderation/AccountsDetail.vue:181
 msgctxt "Content/Track/Table.Label/Noun"
 msgid "Type"
 msgstr "Tipo"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:180
-msgctxt "Content/Moderation/Table.Label/Noun"
-msgid "Type"
-msgstr "Tipo"
-
 #: front/src/components/manage/moderation/AccountsTable.vue:44
-#: front/src/components/manage/moderation/DomainsTable.vue:42
+#: front/src/components/manage/moderation/DomainsTable.vue:50
 msgctxt "Content/Moderation/Table.Label/Short"
 msgid "Under moderation rule"
 msgstr "Bajo regla de moderación"
 
-#: front/src/views/content/remote/Card.vue:109
-#: src/views/content/remote/Card.vue:114
+#: front/src/components/ShortcutsModal.vue:68
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Unfocus searchbar"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:122
+#: src/views/content/remote/Card.vue:127
 msgctxt "*/Library/Button.Label/Verb"
 msgid "Unfollow"
 msgstr "Dejar de seguir"
 
-#: front/src/views/content/remote/Card.vue:110
+#: front/src/views/content/remote/Card.vue:123
 msgctxt "Popup/Library/Title"
 msgid "Unfollow this library?"
 msgstr "¿Dejar de seguir esta biblioteca?"
 
-#: front/src/components/About.vue:17
-msgctxt "Content/About/Paragraph"
-msgid ""
-"Unfortunately, the owners of this instance did not yet take the time to "
-"complete this page."
-msgstr ""
-"Desafortunadamente, lxs propietarixs de esta instancia aún no han tomado el "
-"tiempo para completar esta página."
-
 #: front/src/components/federation/FetchButton.vue:54
 #: front/src/components/federation/FetchButton.vue:55
-msgctxt "*/*/Error"
-msgid "Unknowkn error"
-msgstr ""
-
 #: front/src/components/library/ImportStatusModal.vue:144
-msgctxt "Popup/Import/Error.Label"
-msgid "Unkwown error"
+msgctxt "*/*/Error"
+msgid "Unknown error"
 msgstr ""
 
-#: front/src/components/Home.vue:37
-msgctxt "Content/Home/Title"
-msgid "Unlimited music"
-msgstr "Música ilimitada"
-
-#: front/src/components/audio/Player.vue:630
+#: front/src/components/audio/Player.vue:656
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Unmute"
 msgstr "Activar sonido"
 
+#: front/src/components/manage/moderation/ReportCard.vue:225
+msgctxt "Content/*/Button.Label"
+msgid "Unresolve"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:67
+#: front/src/views/admin/moderation/ReportsList.vue:23
+msgctxt "Content/*/*/Short"
+msgid "Unresolved"
+msgstr ""
+
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:57
 msgctxt "Content/Moderation/Card.Button.Label/Verb"
 msgid "Update"
@@ -4730,12 +5102,8 @@ msgstr "Fecha de subida"
 
 #: front/src/components/library/FileUpload.vue:258
 msgctxt "Content/Library/Help text"
-msgid ""
-"Upload denied, ensure the file is not too big and that you have not reached "
-"your quota"
-msgstr ""
-"Subida rechazada, asegúrate que el archivo no es demasiado grande y que no "
-"has alcanzado tu cuota"
+msgid "Upload denied, ensure the file is not too big and that you have not reached your quota"
+msgstr "Subida rechazada, asegúrate que el archivo no es demasiado grande y que no has alcanzado tu cuota"
 
 #: front/src/components/library/ImportStatusModal.vue:8
 msgctxt "Popup/Import/Message"
@@ -4744,20 +5112,18 @@ msgstr ""
 
 #: front/src/views/content/Home.vue:7
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Upload music files (MP3, OGG, FLAC, etc.) from your personal library "
-"directly from your browser to enjoy them here."
-msgstr ""
-"Sube archivos de música (mp3, OGG, Flac, etc…) de tu biblioteca personal a "
-"tu navegador y disfrútala aquí."
+msgid "Upload music files (MP3, OGG, FLAC, etc.) from your personal library directly from your browser to enjoy them here."
+msgstr "Sube archivos de música (mp3, OGG, Flac, etc…) de tu biblioteca personal a tu navegador y disfrútala aquí."
 
 #: front/src/components/library/FileUpload.vue:30
 msgctxt "Content/Library/Title/Verb"
 msgid "Upload new tracks"
 msgstr "Subir nuevas pistas"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:298
-msgctxt "Content/Moderation/Table.Label/Noun"
+#: front/src/components/About.vue:99
+#: front/src/views/admin/moderation/AccountsDetail.vue:309
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Upload quota"
 msgstr "Cuota de subida"
 
@@ -4768,9 +5134,7 @@ msgstr "Timeout en la subida, intentalo de nuevo"
 
 #: front/src/components/library/ImportStatusModal.vue:14
 msgctxt "Popup/Import/Message"
-msgid ""
-"Upload was skipped because a similar one is already available in one of your"
-" libraries."
+msgid "Upload was skipped because a similar one is already available in one of your libraries."
 msgstr ""
 
 #: front/src/components/library/ImportStatusModal.vue:11
@@ -4793,35 +5157,25 @@ msgctxt "Content/Library/Table"
 msgid "Uploading…"
 msgstr "Subiendo…"
 
+#: front/src/components/manage/library/LibrariesTable.vue:52
+#: front/src/components/manage/moderation/AccountsTable.vue:41
+#: front/src/components/mixins/Translations.vue:75
+#: front/src/views/admin/library/AlbumDetail.vue:258
+#: front/src/views/admin/library/ArtistDetail.vue:246
 #: front/src/views/admin/library/Base.vue:20
+#: front/src/views/admin/library/LibraryDetail.vue:258
+#: front/src/views/admin/library/TrackDetail.vue:310
 #: front/src/views/admin/library/UploadsList.vue:24
+#: front/src/views/admin/moderation/AccountsDetail.vue:349
+#: front/src/views/admin/moderation/DomainsDetail.vue:281
+#: front/src/components/mixins/Translations.vue:76
 msgctxt "*/*/*"
 msgid "Uploads"
 msgstr "Subidas"
 
-#: front/src/components/manage/moderation/AccountsTable.vue:41
-#: front/src/components/mixins/Translations.vue:63
-#: front/src/views/admin/library/AlbumDetail.vue:242
-#: front/src/views/admin/library/ArtistDetail.vue:231
-#: front/src/views/admin/library/LibraryDetail.vue:239
-#: front/src/views/admin/library/TrackDetail.vue:294
-#: front/src/views/admin/moderation/AccountsDetail.vue:337
-#: front/src/views/admin/moderation/DomainsDetail.vue:244
-#: front/src/components/mixins/Translations.vue:64
-msgctxt "Content/Moderation/Table.Label/Noun"
-msgid "Uploads"
-msgstr "Subidas"
-
-#: front/src/components/manage/library/LibrariesTable.vue:52
-msgctxt "Content/*/*/Noun"
-msgid "Uploads"
-msgstr "Subidas"
-
 #: front/src/components/auth/ApplicationForm.vue:16
 msgctxt "Content/Applications/Help Text"
-msgid ""
-"Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is "
-"not served on the web."
+msgid "Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is not served on the web."
 msgstr ""
 
 #: front/src/components/Footer.vue:16
@@ -4829,39 +5183,57 @@ msgctxt "Footer/*/List item.Link"
 msgid "Use another instance"
 msgstr "Usar otra instancia"
 
+#: front/src/components/Home.vue:146
+msgctxt "Content/Home/Link"
+msgid "Use Funkwhale on other devices with our apps"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:44
+msgctxt "*/*/Field,Help"
+msgid "Use this field to provide additional context to the moderator that will handle your report."
+msgstr ""
+
 #: front/src/views/auth/PasswordReset.vue:12
 msgctxt "Content/Signup/Paragraph"
-msgid ""
-"Use this form to request a password reset. We will send an email to the "
-"given address with instructions to reset your password."
+msgid "Use this form to request a password reset. We will send an email to the given address with instructions to reset your password."
+msgstr "Usa este formulario para solicitar un restablecimiento de contraseña. Te mandaremos un correo electrónico a la dirección proporcionada con instrucciones para restablecer tu contraseña."
+
+#: front/src/components/moderation/ReportModal.vue:18
+msgctxt "*/Moderation/Popup,Paragraph"
+msgid "Use this form to submit a report to our moderation team."
 msgstr ""
-"Usa este formulario para solicitar un restablecimiento de contraseña. Te "
-"mandaremos un correo electrónico a la dirección proporcionada con "
-"instrucciones para restablecer tu contraseña."
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:111
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Use this setting to temporarily enable/disable the policy without completely"
-" removing it."
-msgstr ""
-"Use esta configuración para habilitar / deshabilitar temporalmente la "
-"política sin eliminarla por completo."
+msgid "Use this setting to temporarily enable/disable the policy without completely removing it."
+msgstr "Use esta configuración para habilitar / deshabilitar temporalmente la política sin eliminarla por completo."
 
 #: front/src/components/manage/users/InvitationsTable.vue:49
 msgctxt "Content/Admin/Table"
 msgid "Used"
 msgstr "Usado"
 
+#: front/src/components/Home.vue:125
+msgctxt "Content/Home/Header"
+msgid "Useful links"
+msgstr ""
+
 #: front/src/views/content/libraries/Detail.vue:26
 msgctxt "Content/Library/Table.Label"
 msgid "User"
 msgstr "Usuario"
 
-#: front/src/components/instance/Stats.vue:5
-msgctxt "Content/About/Title/Noun"
-msgid "User activity"
-msgstr "Actividad de usuario"
+#: front/src/components/Home.vue:154
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "User guides"
+msgstr "Bibliotecas de usuarios"
+
+#: front/src/views/admin/Settings.vue:88
+#, fuzzy
+msgctxt "Content/Admin/Menu"
+msgid "User Interface"
+msgstr "Nombre de usuario"
 
 #: front/src/components/library/AlbumDetail.vue:26
 #: front/src/components/library/ArtistDetail.vue:39
@@ -4875,35 +5247,35 @@ msgctxt "Content/Radio/Title"
 msgid "User radios"
 msgstr "Radios de los usuarios"
 
-#: front/src/components/auth/Signup.vue:19
+#: front/src/components/auth/SignupForm.vue:15
 #: front/src/components/manage/users/UsersTable.vue:37
-#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:71
 #: front/src/views/admin/moderation/AccountsDetail.vue:114
-#: front/src/components/mixins/Translations.vue:60
+#: front/src/components/mixins/Translations.vue:72
 msgctxt "Content/*/*"
 msgid "Username"
 msgstr "Nombre de usuario"
 
-#: front/src/components/auth/Login.vue:15
+#: front/src/components/auth/LoginForm.vue:11
 msgctxt "Content/Login/Input.Label/Noun"
 msgid "Username or email"
 msgstr "Nombre de usuario o correo electónico"
 
-#: front/src/components/instance/Stats.vue:13
-msgctxt "Content/About/Paragraph/Unit"
-msgid "users"
-msgstr "usuario"
-
-#: front/src/components/Sidebar.vue:102
-#: front/src/components/manage/moderation/DomainsTable.vue:39
-#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/Sidebar.vue:106
+#: front/src/components/manage/moderation/DomainsTable.vue:47
+#: front/src/components/mixins/Translations.vue:73
 #: src/views/admin/Settings.vue:81 front/src/views/admin/users/Base.vue:5
 #: src/views/admin/users/UsersList.vue:21
-#: front/src/components/mixins/Translations.vue:62
+#: front/src/components/mixins/Translations.vue:74
 msgctxt "*/*/*/Noun"
 msgid "Users"
 msgstr "Usuario"
 
+#: front/src/components/Home.vue:110
+msgctxt "Content/Home/Paragraph"
+msgid "Users on this pod also get %{ quota } of free storage to upload their own content!"
+msgstr ""
+
 #: front/src/components/Footer.vue:29
 msgctxt "Footer/*/Title"
 msgid "Using Funkwhale"
@@ -4921,45 +5293,60 @@ msgctxt "Content/Library/Link/Verb"
 msgid "View files"
 msgstr "Ver archivos"
 
-#: front/src/components/library/AlbumBase.vue:81
-#: front/src/components/library/ArtistBase.vue:92
-#: front/src/components/library/TrackBase.vue:100
-#: front/src/views/admin/library/AlbumDetail.vue:42
-#: front/src/views/admin/library/ArtistDetail.vue:41
+#: front/src/components/library/AlbumBase.vue:95
+#: front/src/components/library/ArtistBase.vue:107
+#: front/src/components/library/TrackBase.vue:111
+#: front/src/views/admin/library/AlbumDetail.vue:48
+#: front/src/views/admin/library/ArtistDetail.vue:46
 #: front/src/views/admin/library/LibraryDetail.vue:34
 #: front/src/views/admin/library/LibraryDetail.vue:45
-#: front/src/views/admin/library/TrackDetail.vue:41
+#: front/src/views/admin/library/TagDetail.vue:32
+#: front/src/views/admin/library/TrackDetail.vue:47
 #: front/src/views/admin/library/UploadDetail.vue:35
 #: front/src/views/admin/library/UploadDetail.vue:46
 #: front/src/views/admin/moderation/AccountsDetail.vue:37
 #: front/src/views/admin/moderation/AccountsDetail.vue:45
+#: front/src/views/admin/moderation/DomainsDetail.vue:30
 msgctxt "Content/Moderation/Link/Verb"
 msgid "View in Django's admin"
 msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:61
-#: front/src/components/library/ArtistBase.vue:72
-#: front/src/components/library/TrackBase.vue:80
+#: front/src/components/Home.vue:169
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "View more…"
+msgstr "Cargando seguidores…"
+
+#: front/src/components/library/AlbumBase.vue:62
+#: front/src/components/library/ArtistBase.vue:73
+#: front/src/components/library/TrackBase.vue:78
 #: front/src/components/metadata/ArtistCard.vue:49
 #: front/src/components/metadata/ReleaseCard.vue:53
 msgctxt "Content/*/*/Clickable, Verb"
 msgid "View on MusicBrainz"
 msgstr "Ver en MusicBrainz"
 
+#: front/src/components/manage/moderation/ReportCard.vue:124
+msgctxt "Content/Moderation/Link"
+msgid "View public page"
+msgstr ""
+
 #: front/src/components/manage/library/LibrariesTable.vue:11
 #: front/src/components/manage/library/LibrariesTable.vue:51
 #: front/src/components/manage/library/UploadsTable.vue:11
 #: front/src/components/manage/library/UploadsTable.vue:63
 #: front/src/views/admin/library/LibraryDetail.vue:94
 #: front/src/views/admin/library/UploadDetail.vue:101
+#: front/src/views/content/libraries/Form.vue:18
 msgctxt "*/*/*"
 msgid "Visibility"
 msgstr "Visibilidad"
 
-#: front/src/views/content/libraries/Form.vue:18
-msgctxt "Content/Library/Dropdown.Label"
-msgid "Visibility"
-msgstr "Visibilidad"
+#: front/src/components/Home.vue:91
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Visit funkwhale.audio"
+msgstr "Usando Funkwhale"
 
 #: front/src/components/library/AlbumDetail.vue:4
 msgctxt "Content/Album/"
@@ -4971,7 +5358,13 @@ msgctxt "Popup/*/Loading.Title"
 msgid "Waiting for result…"
 msgstr "Cargando tus favoritos…"
 
-#: front/src/components/auth/Login.vue:7
+#: front/src/components/auth/Settings.vue:285
+#, fuzzy
+msgctxt "Content/Settings/Error message.Title"
+msgid "We cannot delete your account"
+msgstr "No se puede iniciar la sesión"
+
+#: front/src/components/auth/LoginForm.vue:3
 msgctxt "Content/Login/Error message.Title"
 msgid "We cannot log you in"
 msgstr "No se puede iniciar la sesión"
@@ -4981,42 +5374,37 @@ msgctxt "Content/*/Error message.Title"
 msgid "We cannot save your changes"
 msgstr "No podemos crear tu cuenta"
 
-#: front/src/components/Home.vue:122
-msgctxt "Content/Home/List item"
-msgid "We do not track you or bother you with ads"
-msgstr "No te rastreamos y no te molestamos con anuncios"
+#: front/src/views/Notifications.vue:39
+msgctxt "Content/Notifications/Paragraph"
+msgid "We noticed you've been here for a while. If Funkwhale is useful to you, we could use your help to make it even better!"
+msgstr ""
 
 #: front/src/components/library/FileUpload.vue:39
 msgctxt "Content/Library/Link"
 msgid "We recommend using Picard for that purpose."
 msgstr "Recomendamos usar Picard para este propósito."
 
-#: front/src/components/Home.vue:7
-msgctxt "Content/Home/Title"
-msgid "We think listening to music should be simple."
-msgstr "Pensamos que debe ser simple escuchar música."
+#: front/src/components/moderation/ReportModal.vue:35
+msgctxt "*/*/Field,Help"
+msgid "We'll use this email if we need to contact you regarding this report."
+msgstr ""
 
-#: front/src/components/Home.vue:148
+#: front/src/components/Home.vue:207
 msgctxt "Head/Home/Title"
 msgid "Welcome"
 msgstr "Bienvenido"
 
 #: front/src/components/Home.vue:5
-msgctxt "Content/Home/Title/Verb"
-msgid "Welcome on Funkwhale"
-msgstr "Bienvenidx a Funkwhale"
-
-#: front/src/components/Home.vue:24
-msgctxt "Content/Home/Title"
-msgid "Why funkwhale?"
-msgstr "¿Por qué funkwhale?"
+msgctxt "Content/Home/Header"
+msgid "Welcome to %{ podName }!"
+msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:13
+#: front/src/components/audio/EmbedWizard.vue:23
 msgctxt "Popup/Embed/Input.Label"
 msgid "Widget height"
 msgstr "Altura del widget"
 
-#: front/src/components/audio/EmbedWizard.vue:6
+#: front/src/components/audio/EmbedWizard.vue:16
 msgctxt "Popup/Embed/Input.Label"
 msgid "Widget width"
 msgstr "Ancho del widget"
@@ -5036,9 +5424,11 @@ msgctxt "Content/OAuth Scopes/Help Text"
 msgid "Write-only access to user data"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:129
+#: front/src/components/Sidebar.vue:133
 #: front/src/components/manage/moderation/AccountsTable.vue:72
-#: front/src/components/manage/moderation/DomainsTable.vue:58
+#: front/src/components/manage/moderation/DomainsTable.vue:12
+#: front/src/components/manage/moderation/DomainsTable.vue:69
+#: front/src/views/admin/moderation/DomainsDetail.vue:109
 msgctxt "*/*/*"
 msgid "Yes"
 msgstr "Sí"
@@ -5050,29 +5440,17 @@ msgstr "Sí, cierra mi sesión!"
 
 #: front/src/views/content/libraries/Form.vue:19
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You are able to share your library with other people, regardless of its "
-"visibility."
-msgstr ""
-"Puedes compartir tu biblioteca con otras personas, independientemente de su "
-"vilibilidad."
+msgid "You are able to share your library with other people, regardless of its visibility."
+msgstr "Puedes compartir tu biblioteca con otras personas, independientemente de su vilibilidad."
 
 #: front/src/components/library/FileUpload.vue:32
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You are about to upload music to your library. Before proceeding, please "
-"ensure that:"
-msgstr ""
-"Estás a punto de subir música a tu biblioteca. Antes de continuar asegúrate "
-"que:"
+msgid "You are about to upload music to your library. Before proceeding, please ensure that:"
+msgstr "Estás a punto de subir música a tu biblioteca. Antes de continuar asegúrate que:"
 
 #: front/src/components/SetInstanceModal.vue:12
 msgctxt "Popup/Login/Paragraph"
-msgid ""
-"You are currently connected to <a href=\"%{ url }\" target=\"_blank\">%{ "
-"hostname }&nbsp;<i class=\"external icon\"/></a>. If you continue, you will "
-"be disconnected from your current instance and all your local data will be "
-"deleted."
+msgid "You are currently connected to <a href=\"%{ url }\" target=\"_blank\">%{ hostname }&nbsp;<i class=\"external icon\"/></a>. If you continue, you will be disconnected from your current instance and all your local data will be deleted."
 msgstr ""
 
 #: front/src/components/library/ArtistDetail.vue:6
@@ -5087,9 +5465,7 @@ msgstr "Tienes iniciada actualmente sesión como %{ username }"
 
 #: front/src/components/library/FileUpload.vue:35
 msgctxt "Content/Library/List item"
-msgid ""
-"You are not uploading copyrighted content in a public library, otherwise you"
-" may be infringing the law"
+msgid "You are not uploading copyrighted content in a public library, otherwise you may be infringing the law"
 msgstr ""
 
 #: front/src/components/SetInstanceModal.vue:98
@@ -5098,29 +5474,14 @@ msgid "You are now using the Funkwhale instance at %{ url }"
 msgstr ""
 
 #: front/src/views/content/Home.vue:17
+#, fuzzy
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You can follow libraries from other users to get access to new music. Public"
-" libraries can be followed immediatly, while following a private library "
-"requires approval from its owner."
-msgstr ""
-"Puedes seguir bibliotecas de otros usuarios para obtener nueva música. "
-"Puedes seguir bibliotecas públicas instantáneamente, mientras que las "
-"biliotecas privadas necesitan aprovación por parte de su dueño."
-
-#: front/src/components/Home.vue:128
-msgctxt "Content/Home/List item"
-msgid ""
-"You can invite friends and family to your instance so they can enjoy your "
-"music"
-msgstr ""
-"Puedes invitar a tus amigxs y tu familia a tu instancia para que ellxs "
-"puedan disfrutar de tu música"
+msgid "You can follow libraries from other users to get access to new music. Public libraries can be followed immediately, while following a private library requires approval from its owner."
+msgstr "Puedes seguir bibliotecas de otros usuarios para obtener nueva música. Puedes seguir bibliotecas públicas instantáneamente, mientras que las biliotecas privadas necesitan aprovación por parte de su dueño."
 
 #: front/src/components/moderation/FilterModal.vue:31
 msgctxt "Popup/Moderation/Paragraph"
-msgid ""
-"You can manage and update your filters anytime from your account settings."
+msgid "You can manage and update your filters any time from your account settings."
 msgstr ""
 
 #: front/src/views/auth/EmailConfirm.vue:24
@@ -5128,23 +5489,20 @@ msgctxt "Content/Signup/Paragraph"
 msgid "You can now use the service without limitations."
 msgstr "Ahora puede utilizar el servicio sin limitaciones."
 
+#: front/src/components/auth/Settings.vue:278
+msgctxt "Content/Settings/Paragraph'"
+msgid "You can permanently and irreversibly delete your account and all the associated data using the form below. You will be asked for confirmation."
+msgstr ""
+
 #: front/src/components/library/radios/Builder.vue:7
 msgctxt "Content/Radio/Paragraph"
-msgid ""
-"You can use this interface to build your own custom radio, which will play "
-"tracks according to your criteria."
-msgstr ""
-"Puedes usar esta interfaz para hacer tu propia radio personalizada, que "
-"reproducirá canciones según tus criterios."
+msgid "You can use this interface to build your own custom radio, which will play tracks according to your criteria."
+msgstr "Puedes usar esta interfaz para hacer tu propia radio personalizada, que reproducirá canciones según tus criterios."
 
 #: front/src/components/auth/SubsonicTokenForm.vue:7
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"You can use those to enjoy your playlist and music in offline mode, on your "
-"smartphone or tablet, for instance."
-msgstr ""
-"Puedes usarlos para disfrutar de tus listas de reproducción y tu música en "
-"modo sin conexión, en tu smartphone o tu tablet, por ejemplo."
+msgid "You can use those to enjoy your playlist and music in offline mode, on your smartphone or tablet, for instance."
+msgstr "Puedes usarlos para disfrutar de tus listas de reproducción y tu música en modo sin conexión, en tu smartphone o tu tablet, por ejemplo."
 
 #: front/src/components/auth/Settings.vue:202
 msgctxt "Content/Applications/Paragraph"
@@ -5161,19 +5519,17 @@ msgctxt "Content/Moderation/Card.Title"
 msgid "You don't have any rule in place for this account."
 msgstr "No tienes ninguna regla para esta cuenta."
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:39
+#: front/src/views/admin/moderation/DomainsDetail.vue:67
 msgctxt "Content/Moderation/Card.Title"
 msgid "You don't have any rule in place for this domain."
 msgstr "No tienes ninguna regla para este dominio."
 
 #: front/src/components/library/EditForm.vue:52
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You don't have the permission to edit this object, but you can suggest "
-"changes. Once submitted, suggestions will be reviewed before approval."
+msgid "You don't have the permission to edit this object, but you can suggest changes. Once submitted, suggestions will be reviewed before approval."
 msgstr ""
 
-#: front/src/components/Sidebar.vue:171
+#: front/src/components/Sidebar.vue:175
 msgctxt "Sidebar/Player/Title"
 msgid "You have a radio playing"
 msgstr "Estás escuchando una radio"
@@ -5185,11 +5541,8 @@ msgstr "Puede tener un problema de conectividad."
 
 #: front/src/components/auth/Settings.vue:100
 msgctxt "Popup/Settings/List item"
-msgid ""
-"You will be logged out from this session and have to log in with the new one"
-msgstr ""
-"Se cerrará esta sesión y tendrás que reiniciar sesión con la nueva "
-"contraseña"
+msgid "You will be logged out from this session and have to log in with the new one"
+msgstr "Se cerrará esta sesión y tendrás que reiniciar sesión con la nueva contraseña"
 
 #: front/src/components/auth/Authorize.vue:51
 msgctxt "Content/Auth/Paragraph"
@@ -5203,25 +5556,24 @@ msgstr ""
 
 #: front/src/components/auth/Settings.vue:71
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"You will have to update your password on your clients that use this "
-"password."
-msgstr ""
-"Tendrás que actualizar tu contraseña en los clientes que usan esta "
-"contraseña."
+msgid "You will have to update your password on your clients that use this password."
+msgstr "Tendrás que actualizar tu contraseña en los clientes que usan esta contraseña."
 
 #: front/src/components/moderation/FilterModal.vue:20
 msgctxt "Popup/Moderation/Paragraph"
-msgid ""
-"You will not see tracks, albums and user activity linked to this artist "
-"anymore:"
+msgid "You will not see tracks, albums and user activity linked to this artist any more:"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:13
+#: front/src/components/auth/SignupForm.vue:9
 msgctxt "Content/Signup/Form/Paragraph"
 msgid "Your account cannot be created."
 msgstr "Lista de reproducción creada"
 
+#: front/src/components/auth/Settings.vue:281
+msgctxt "Content/Settings/Paragraph'"
+msgid "Your account will be deleted from our servers within a few minutes. We will also notify other servers who may have a copy of some of your data so they can proceed to deletion. Please note that some of these servers may be offline or unwilling to comply though."
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:215
 msgctxt "Content/Settings/Title/Noun"
 msgid "Your applications"
@@ -5232,6 +5584,11 @@ msgctxt "Content/Settings/Error message.Title"
 msgid "Your avatar cannot be saved"
 msgstr ""
 
+#: front/src/components/auth/Settings.vue:527
+msgctxt "*/Auth/Message"
+msgid "Your deletion request was submitted, your account and content will be deleted shortly"
+msgstr ""
+
 #: front/src/components/library/EditForm.vue:3
 msgctxt "Content/Library/Paragraph"
 msgid "Your edit was successfully submitted."
@@ -5242,12 +5599,13 @@ msgctxt "Head/Favorites/Title"
 msgid "Your Favorites"
 msgstr "Tus favoritos"
 
-#: front/src/components/Home.vue:109
-msgctxt "Content/Home/Title"
-msgid "Your music, your way"
-msgstr "Tu música, a tu manera"
+#: front/src/views/Notifications.vue:5
+#, fuzzy
+msgctxt "Content/Notifications/Title"
+msgid "Your messages"
+msgstr "Mensajes emitidos"
 
-#: front/src/views/Notifications.vue:4
+#: front/src/views/Notifications.vue:69
 msgctxt "Content/Notifications/Title"
 msgid "Your notifications"
 msgstr "Tus notificaciones"
@@ -5263,43 +5621,41 @@ msgid "Your password has been updated successfully."
 msgstr "Tu contraseña ha sido cambiada con éxito."
 
 #: front/src/components/auth/Settings.vue:14
+#, fuzzy
 msgctxt "Content/Settings/Error message.Title"
-msgid "Your settings can't be updateds"
+msgid "Your settings can't be updated"
 msgstr "Ajustes actualizados"
 
 #: front/src/components/auth/Settings.vue:101
 msgctxt "Popup/Settings/List item"
-msgid ""
-"Your Subsonic password will be changed to a new, random one, logging you out"
-" from devices that used the old Subsonic password"
-msgstr ""
-"Tu contraseña Subsonic se cambiará a una nueva contraseña aleatoria, "
-"cerrando tus sesiones en los dispositivos que usaban la antigua contraseña "
-"Subsonic"
+msgid "Your Subsonic password will be changed to a new, random one, logging you out from devices that used the old Subsonic password"
+msgstr "Tu contraseña Subsonic se cambiará a una nueva contraseña aleatoria, cerrando tus sesiones en los dispositivos que usaban la antigua contraseña Subsonic"
 
-#: front/src/edits.js:47
-msgctxt "*/*/*/Short, Noun"
-msgid "Position"
-msgstr "Paginación"
+#: front/src/entities.js:126
+#, fuzzy
+msgctxt "*/*/*/Noun"
+msgid "MusicBrainz ID"
+msgstr "Ver en MusicBrainz"
 
-#: front/src/edits.js:54
-msgctxt "Content/Track/*/Noun"
-msgid "Copyright"
-msgstr "Copyright"
+#: front/src/main.js:110
+msgctxt "*/Error/Paragraph"
+msgid "You sent too many requests and have been rate limited, please try again in %{ delay }"
+msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:183
+#: front/src/main.js:113
+msgctxt "*/Error/Paragraph"
+msgid "You sent too many requests and have been rate limited, please try again later"
+msgstr ""
+
+#: front/src/components/library/AlbumBase.vue:208
 #, fuzzy
 msgctxt "Content/Album/Header.Title"
-msgid ""
-"Album containing %{ count } track, by <a class=\"internal\" href=\"%{ "
-"artistUrl }\">%{ artist }</a>"
-msgid_plural ""
-"Album containing %{ count } tracks, by <a class=\"internal\" href=\"%{ "
-"artistUrl }\">%{ artist }</a>"
+msgid "Album containing %{ count } track, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgid_plural "Album containing %{ count } tracks, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
 msgstr[0] "Álbum que contiene %{ count } canción, de %{ artist }"
 msgstr[1] "Álbum que contiene %{ count } canciones, de %{ artist }"
 
-#: front/src/components/audio/PlayButton.vue:220
+#: front/src/components/audio/PlayButton.vue:246
 #, fuzzy
 msgctxt "*/Queue/Message"
 msgid "%{ count } track was added to your queue"
diff --git a/front/locales/eu/LC_MESSAGES/app.po b/front/locales/eu/LC_MESSAGES/app.po
index 833a9b4dc698d3eb3beae5aa8b44e4648958e794..69f9bbaf2aedfb01f118c5227b66f85a0a0da06d 100644
--- a/front/locales/eu/LC_MESSAGES/app.po
+++ b/front/locales/eu/LC_MESSAGES/app.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: front 0.1.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-05-16 10:35+0200\n"
+"POT-Creation-Date: 2019-10-01 15:15+0200\n"
 "PO-Revision-Date: 2019-01-22 08:45+0000\n"
 "Last-Translator: Urtzi Odriozola <uodriozola@codesyntax.com>\n"
 "Language-Team: none\n"
@@ -39,6 +39,53 @@ msgctxt "Content/Auth/Title"
 msgid "%{ app } wants to access your Funkwhale account"
 msgstr "Sartu zure Funkwhale kontura"
 
+#: front/src/components/About.vue:173 src/components/Home.vue:56
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } active user"
+msgid_plural "%{ count } active users"
+msgstr[0] "abesti %{ count }"
+msgstr[1] "%{ count } abesti"
+
+#: front/src/components/About.vue:182
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } albums"
+msgid_plural "%{ count } albums"
+msgstr[0] "abesti %{ count }"
+msgstr[1] "%{ count } abesti"
+
+#: front/src/components/About.vue:152
+msgctxt "*/*/*"
+msgid "%{ count } allowed domains"
+msgid_plural "%{ count } allowed domains"
+msgstr[0] ""
+msgstr[1] ""
+
+#: front/src/components/About.vue:179
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } artists"
+msgid_plural "%{ count } artists"
+msgstr[0] "abesti %{ count }"
+msgstr[1] "%{ count } abesti"
+
+#: front/src/components/About.vue:176 src/components/Home.vue:59
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } hour of music"
+msgid_plural "%{ count } hours of music"
+msgstr[0] "abesti %{ count }"
+msgstr[1] "%{ count } abesti"
+
+#: front/src/components/About.vue:188
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } listenings"
+msgid_plural "%{ count } listenings"
+msgstr[0] "abesti %{ count }"
+msgstr[1] "%{ count } abesti"
+
 #: front/src/components/common/ActionTable.vue:68
 #, fuzzy
 msgctxt "Content/*/Paragraph"
@@ -47,9 +94,9 @@ msgid_plural "%{ count } on %{ total } selected"
 msgstr[0] "%{ count } aukeratutako %{ total }-(e)tik"
 msgstr[1] "%{ count } aukeratutako %{ total }-(e)tik"
 
-#: front/src/components/Sidebar.vue:121 src/components/audio/album/Card.vue:52
+#: front/src/components/Sidebar.vue:125 src/components/audio/album/Card.vue:52
 #: front/src/views/content/libraries/Card.vue:40
-#: src/views/content/remote/Card.vue:30
+#: src/views/content/remote/Card.vue:43
 #, fuzzy
 msgctxt "*/*/*"
 msgid "%{ count } track"
@@ -73,7 +120,15 @@ msgid_plural "%{ count } tracks matching combined filters"
 msgstr[0] "abesti %{ count } dator bat iragazki konbinatuekin"
 msgstr[1] "%{ count } abesti datoz bat iragazki konbinatuekin"
 
-#: front/src/components/playlists/Card.vue:18
+#: front/src/components/About.vue:185
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } tracks"
+msgid_plural "%{ count } tracks"
+msgstr[0] "abesti %{ count }"
+msgstr[1] "%{ count } abesti"
+
+#: front/src/components/playlists/Card.vue:28
 #, fuzzy
 msgctxt "Content/*/Card/List item"
 msgid "%{ count} track"
@@ -118,11 +173,10 @@ msgstr ""
 
 #: front/src/components/playlists/PlaylistModal.vue:21
 msgctxt "Popup/Playlist/Paragraph"
-msgid ""
-"<strong>%{ track }</strong> is already in <strong>%{ playlist }</strong>."
+msgid "<strong>%{ track }</strong> is already in <strong>%{ playlist }</strong>."
 msgstr ""
 
-#: front/src/components/audio/artist/Card.vue:41
+#: front/src/components/audio/artist/Card.vue:11
 #, fuzzy
 msgctxt "Content/Artist/Card"
 msgid "1 album"
@@ -138,27 +192,45 @@ msgid_plural "%{ count } favorites"
 msgstr[0] "gogoko 1"
 msgstr[1] "%{ count } gogoko"
 
-#: front/src/components/Home.vue:64
+#: front/src/components/audio/artist/Card.vue:15
 #, fuzzy
-msgctxt "Content/Home/Title"
-msgid "A clean library"
-msgstr "Garbitu liburutegia"
+msgctxt "Content/Artist/Card"
+msgid "1 track"
+msgid_plural "%{ count } tracks"
+msgstr[0] "Abestia sartu"
+msgstr[1] "Abestia sartu"
+
+#: front/src/views/Notifications.vue:21 src/views/Notifications.vue:55
+msgctxt "*/*/*"
+msgid "30 days"
+msgstr ""
+
+#: front/src/views/Notifications.vue:22 src/views/Notifications.vue:56
+msgctxt "*/*/*"
+msgid "60 days"
+msgstr ""
+
+#: front/src/views/Notifications.vue:23 src/views/Notifications.vue:57
+msgctxt "*/*/*"
+msgid "90 days"
+msgstr ""
 
 #: front/src/components/library/FileUpload.vue:264
 #, fuzzy
 msgctxt "Content/Library/Help text"
-msgid "A network error occured while uploading this file"
+msgid "A network error occurred while uploading this file"
 msgstr "Errorea aldaketak gordetzerakoan"
 
-#: front/src/components/library/EditForm.vue:145
+#: front/src/components/library/EditForm.vue:161
 #, fuzzy
 msgctxt "*/*/Placeholder"
 msgid "A short summary describing your changes."
 msgstr "Errorea aldaketak gordetzerakoan"
 
 #: front/src/components/About.vue:5
-msgctxt "Content/About/Title/Short, Noun"
-msgid "About %{ instance }"
+#, fuzzy
+msgctxt "Content/Home/Header"
+msgid "About %{ podName }"
 msgstr "%{ instance }-ri buruz"
 
 #: front/src/components/Footer.vue:6
@@ -167,7 +239,7 @@ msgctxt "Footer/About/Title"
 msgid "About %{instanceName}"
 msgstr "%{ instance }-ri buruz"
 
-#: front/src/components/Footer.vue:45
+#: front/src/components/Footer.vue:53 src/components/Home.vue:85
 msgctxt "Footer/*/Title/Short"
 msgid "About Funkwhale"
 msgstr "Funkwhale-ri buruz"
@@ -178,9 +250,16 @@ msgctxt "Footer/About/List item.Link"
 msgid "About page"
 msgstr "Album orria"
 
-#: front/src/components/About.vue:8 src/components/About.vue:67
-msgctxt "Content/About/Title"
-msgid "About this instance"
+#: front/src/components/Home.vue:19
+#, fuzzy
+msgctxt "Content/Home/Header"
+msgid "About this Funkwhale pod"
+msgstr "Funkwhale-ri buruz"
+
+#: front/src/components/About.vue:21 src/components/About.vue:51
+#, fuzzy
+msgctxt "Content/About/Header"
+msgid "About this pod"
 msgstr "Instantzia honi buruz"
 
 #: front/src/views/content/libraries/Detail.vue:48
@@ -193,103 +272,92 @@ msgctxt "Content/Library/Table/Short"
 msgid "Accepted"
 msgstr "Onartuta"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:110
+#: front/src/components/auth/SubsonicTokenForm.vue:117
 msgctxt "Content/Settings/Message"
 msgid "Access disabled"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:73
-#: front/src/components/mixins/Translations.vue:74
+#: front/src/components/mixins/Translations.vue:85
+#: front/src/components/mixins/Translations.vue:86
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to audio files, libraries, artists, albums and tracks"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:97
-#: front/src/components/mixins/Translations.vue:98
+#: front/src/components/mixins/Translations.vue:109
+#: front/src/components/mixins/Translations.vue:110
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to content filters"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:105
-#: front/src/components/mixins/Translations.vue:106
+#: front/src/components/mixins/Translations.vue:117
+#: front/src/components/mixins/Translations.vue:118
 #, fuzzy
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to edits"
 msgstr "Onartuta"
 
-#: front/src/components/mixins/Translations.vue:69
-#: front/src/components/mixins/Translations.vue:70
+#: front/src/components/mixins/Translations.vue:81
+#: front/src/components/mixins/Translations.vue:82
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to email, username, and profile information"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:77
-#: front/src/components/mixins/Translations.vue:78
+#: front/src/components/mixins/Translations.vue:89
+#: front/src/components/mixins/Translations.vue:90
 #, fuzzy
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to favorites"
 msgstr "Gogokoetan sartu"
 
-#: front/src/components/mixins/Translations.vue:85
-#: front/src/components/mixins/Translations.vue:86
+#: front/src/components/mixins/Translations.vue:97
+#: front/src/components/mixins/Translations.vue:98
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to follows"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:81
-#: front/src/components/mixins/Translations.vue:82
+#: front/src/components/mixins/Translations.vue:93
+#: front/src/components/mixins/Translations.vue:94
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to listening history"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:101
-#: front/src/components/mixins/Translations.vue:102
+#: front/src/components/mixins/Translations.vue:113
+#: front/src/components/mixins/Translations.vue:114
 #, fuzzy
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to notifications"
 msgstr "Jakinarazpenak"
 
-#: front/src/components/mixins/Translations.vue:89
-#: front/src/components/mixins/Translations.vue:90
+#: front/src/components/mixins/Translations.vue:101
+#: front/src/components/mixins/Translations.vue:102
 #, fuzzy
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to playlists"
-msgstr "Zerrendan sartu..."
+msgstr "Zerrendan sartu…"
 
-#: front/src/components/mixins/Translations.vue:93
-#: front/src/components/mixins/Translations.vue:94
+#: front/src/components/mixins/Translations.vue:105
+#: front/src/components/mixins/Translations.vue:106
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to radios"
 msgstr ""
 
-#: front/src/components/Home.vue:101
-#, fuzzy
-msgctxt "Content/Home/List item"
-msgid ""
-"Access your music from a clean interface that focuses on what really matters"
-msgstr ""
-"Lortu zure musika benetan axola duen lekuan zentratzen den interfaze garbi "
-"batetik"
-
 #: front/src/components/manage/library/UploadsTable.vue:67
-#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:55
 #: front/src/views/admin/library/UploadDetail.vue:175
-#: front/src/components/mixins/Translations.vue:46
+#: front/src/components/mixins/Translations.vue:56
 msgctxt "Content/*/*/Noun"
 msgid "Accessed date"
 msgstr ""
 
-#: front/src/views/admin/library/LibraryDetail.vue:104
-#: front/src/views/admin/library/UploadDetail.vue:111
-#, fuzzy
-msgctxt "*/*/*/Noun"
-msgid "Account"
-msgstr "Nire kontua"
-
 #: front/src/components/manage/library/LibrariesTable.vue:49
 #: front/src/components/manage/library/UploadsTable.vue:61
+#: front/src/components/manage/moderation/ReportCard.vue:156
+#: front/src/components/mixins/Report.vue:13
+#: front/src/views/admin/library/LibraryDetail.vue:113
+#: front/src/views/admin/library/UploadDetail.vue:111
+#: front/src/components/mixins/Report.vue:14
 #, fuzzy
-msgctxt "*/*/*"
+msgctxt "*/*/*/Noun"
 msgid "Account"
 msgstr "Nire kontua"
 
@@ -304,7 +372,7 @@ msgctxt "Content/Settings/Title"
 msgid "Account settings"
 msgstr "Kontuaren ezarpenak"
 
-#: front/src/components/auth/Settings.vue:479
+#: front/src/components/auth/Settings.vue:544
 #, fuzzy
 msgctxt "Head/Settings/Title"
 msgid "Account Settings"
@@ -322,7 +390,7 @@ msgstr "Kontuaren e-maila"
 
 #: front/src/views/admin/moderation/AccountsList.vue:3
 #: front/src/views/admin/moderation/AccountsList.vue:24
-#: front/src/views/admin/moderation/Base.vue:8
+#: front/src/views/admin/moderation/Base.vue:11
 #, fuzzy
 msgctxt "*/Moderation/Title"
 msgid "Accounts"
@@ -337,29 +405,30 @@ msgstr "Akzioa"
 #, fuzzy
 msgctxt "Content/*/Paragraph"
 msgid "Action %{ action } was launched successfully on %{ count } element"
-msgid_plural ""
-"Action %{ action } was launched successfully on %{ count } elements"
+msgid_plural "Action %{ action } was launched successfully on %{ count } elements"
 msgstr[0] "%{ action } akzioa arrakastaz gauzatu da elementu %{ count }ean"
 msgstr[1] "%{ action } akzioa arrakastaz gauzatu da %{ count } elementutan"
 
 #: front/src/components/common/ActionTable.vue:22
 #: front/src/components/library/radios/Builder.vue:65
+#: front/src/components/manage/moderation/ReportCard.vue:210
 msgctxt "Content/*/*/Noun"
 msgid "Actions"
 msgstr "Akzioak"
 
-#: front/src/components/manage/users/UsersTable.vue:53
+#: front/src/components/manage/users/UsersTable.vue:54
 msgctxt "Content/Admin/Table"
 msgid "Active"
 msgstr "Aktibo"
 
-#: front/src/views/admin/library/AlbumDetail.vue:134
-#: front/src/views/admin/library/ArtistDetail.vue:123
-#: front/src/views/admin/library/LibraryDetail.vue:138
-#: front/src/views/admin/library/TrackDetail.vue:186
+#: front/src/views/admin/library/AlbumDetail.vue:140
+#: front/src/views/admin/library/ArtistDetail.vue:128
+#: front/src/views/admin/library/LibraryDetail.vue:147
+#: front/src/views/admin/library/TagDetail.vue:83
+#: front/src/views/admin/library/TrackDetail.vue:192
 #: front/src/views/admin/library/UploadDetail.vue:160
-#: front/src/views/admin/moderation/AccountsDetail.vue:220
-#: front/src/views/admin/moderation/DomainsDetail.vue:136
+#: front/src/views/admin/moderation/AccountsDetail.vue:221
+#: front/src/views/admin/moderation/DomainsDetail.vue:173
 msgctxt "Content/Moderation/Title"
 msgid "Activity"
 msgstr "Jarduera"
@@ -371,7 +440,7 @@ msgctxt "Content/Settings/Dropdown.Label/Noun"
 msgid "Activity visibility"
 msgstr "Zerrenda ikuspena"
 
-#: front/src/views/admin/moderation/DomainsList.vue:18
+#: front/src/views/admin/moderation/DomainsList.vue:22
 msgctxt "Content/Moderation/Button/Verb"
 msgid "Add"
 msgstr ""
@@ -418,7 +487,21 @@ msgctxt "Content/Radio/Paragraph"
 msgid "Add filters to customize your radio"
 msgstr "Iragazkiak sortu zure irratia pertsonalizatzeko"
 
-#: front/src/components/audio/PlayButton.vue:75
+#: front/src/components/manage/moderation/NoteForm.vue:12
+#, fuzzy
+msgctxt "Content/Moderation/Button.Label/Verb"
+msgid "Add note"
+msgstr "Edukia sartu"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:191
+#: front/src/views/admin/moderation/DomainsDetail.vue:46
+#: front/src/views/admin/moderation/DomainsList.vue:18
+#, fuzzy
+msgctxt "Content/Moderation/Action/Verb"
+msgid "Add to allow-list"
+msgstr "Zerrendan sartu…"
+
+#: front/src/components/audio/PlayButton.vue:91
 #, fuzzy
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Add to current queue"
@@ -435,7 +518,7 @@ msgstr "Gogokoetan sartu"
 #, fuzzy
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Add to playlist…"
-msgstr "Zerrendan sartu..."
+msgstr "Zerrendan sartu…"
 
 #: front/src/components/audio/PlayButton.vue:15
 msgctxt "*/Queue/Dropdown/Button/Label/Short"
@@ -446,14 +529,14 @@ msgstr "Ilaran gehitu"
 #, fuzzy
 msgctxt "Popup/Playlist/Table.Button.Tooltip/Verb"
 msgid "Add to this playlist"
-msgstr "Zerrendan sartu..."
+msgstr "Zerrendan sartu…"
 
 #: front/src/components/playlists/PlaylistModal.vue:68
 msgctxt "Popup/Playlist/Table.Button.Label/Verb"
 msgid "Add track"
 msgstr "Abestia sartu"
 
-#: front/src/components/manage/users/UsersTable.vue:69
+#: front/src/components/manage/users/UsersTable.vue:70
 msgctxt "Content/Admin/Table.User role"
 msgid "Admin"
 msgstr "Admin"
@@ -463,52 +546,52 @@ msgctxt "Sidebar/Admin/Title/Noun"
 msgid "Administration"
 msgstr "Administrazioa"
 
-#: front/src/views/admin/library/TrackDetail.vue:107
-msgctxt "*/*/*/Noun"
-msgid "Album"
-msgstr "Albuma"
-
-#: front/src/components/audio/SearchBar.vue:26
+#: front/src/components/audio/SearchBar.vue:33
 #: src/components/audio/track/Table.vue:9
-#: front/src/components/library/AlbumBase.vue:152
-#: front/src/components/library/ArtistBase.vue:194
+#: front/src/components/library/AlbumBase.vue:170
+#: front/src/components/library/ArtistBase.vue:212
 #: front/src/components/manage/library/TracksTable.vue:40
 #: front/src/components/metadata/Search.vue:134
+#: src/components/mixins/Report.vue:41
+#: front/src/views/admin/library/TrackDetail.vue:113
 #: front/src/views/content/libraries/FilesTable.vue:57
+#: front/src/components/mixins/Report.vue:42
 msgctxt "*/*/*"
 msgid "Album"
 msgstr "Albuma"
 
-#: front/src/views/admin/library/TrackDetail.vue:128
+#: front/src/views/admin/library/TrackDetail.vue:134
 #, fuzzy
 msgctxt "*/*/*/Noun"
 msgid "Album artist"
 msgstr "Artista honen albumak"
 
-#: front/src/views/admin/library/AlbumDetail.vue:92
+#: front/src/views/admin/library/AlbumDetail.vue:98
 #, fuzzy
 msgctxt "Content/Moderation/Title"
 msgid "Album data"
 msgstr "Album orria"
 
-#: front/src/components/mixins/Translations.vue:51
-#: front/src/components/mixins/Translations.vue:52
+#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/mixins/Translations.vue:62
 #, fuzzy
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Album name"
 msgstr "Album orria"
 
 #: front/src/components/audio/Search.vue:19
-#: src/components/instance/Stats.vue:48
-#: front/src/components/library/Albums.vue:120
-#: src/components/library/Library.vue:7
+#: src/components/library/Albums.vue:129
+#: front/src/components/library/Library.vue:7
+#: src/components/library/TagDetail.vue:28
 #: front/src/components/manage/library/ArtistsTable.vue:41
+#: front/src/components/manage/library/TagsTable.vue:43
 #: front/src/views/admin/library/AlbumsList.vue:24
-#: front/src/views/admin/library/ArtistDetail.vue:241
+#: front/src/views/admin/library/ArtistDetail.vue:256
 #: front/src/views/admin/library/Base.vue:11
-#: front/src/views/admin/library/LibraryDetail.vue:219
-#: front/src/views/admin/moderation/AccountsDetail.vue:354
-#: front/src/views/admin/moderation/DomainsDetail.vue:264
+#: front/src/views/admin/library/LibraryDetail.vue:238
+#: front/src/views/admin/library/TagDetail.vue:133
+#: front/src/views/admin/moderation/AccountsDetail.vue:366
+#: front/src/views/admin/moderation/DomainsDetail.vue:301
 msgctxt "*/*/*"
 msgid "Albums"
 msgstr "Albumak"
@@ -522,7 +605,10 @@ msgstr "Artista honen albumak"
 #: front/src/components/manage/library/LibrariesTable.vue:13
 #: front/src/components/manage/library/UploadsTable.vue:13
 #: front/src/components/manage/library/UploadsTable.vue:22
+#: front/src/components/manage/moderation/DomainsTable.vue:11
 #: front/src/components/manage/users/InvitationsTable.vue:19
+#: front/src/components/moderation/ReportCategoryDropdown.vue:32
+#: front/src/views/admin/moderation/ReportsList.vue:17
 #: front/src/views/content/libraries/FilesTable.vue:13
 msgctxt "Content/*/Dropdown"
 msgid "All"
@@ -541,42 +627,52 @@ msgctxt "Head/Authorize/Title"
 msgid "Allow application"
 msgstr ""
 
+#: front/src/components/About.vue:136
+msgctxt "*/*/*"
+msgid "Allow-list"
+msgstr ""
+
+#: front/src/components/About.vue:149
+msgctxt "*/*/*"
+msgid "Allowed domains"
+msgstr ""
+
 #: front/src/components/library/ImportStatusModal.vue:17
 msgctxt "Popup/Import/Message"
-msgid ""
-"An error occured during upload processing. You will find more information "
-"below."
+msgid "An error occurred during upload processing. You will find more information below."
 msgstr ""
 
 #: front/src/components/playlists/Editor.vue:13
+#, fuzzy
 msgctxt "Content/Playlist/Error message.Title"
-msgid "An error occured while saving your changes"
+msgid "An error occurred while saving your changes"
 msgstr "Errorea aldaketak gordetzerakoan"
 
 #: front/src/components/federation/FetchButton.vue:21
 #, fuzzy
 msgctxt "Popup/*/Message.Content"
-msgid "An error occured while trying to refresh data:"
+msgid "An error occurred while trying to refresh data:"
 msgstr "Errorea aldaketak gordetzerakoan"
 
 #: front/src/components/federation/FetchButton.vue:41
 #, fuzzy
 msgctxt "*/*/Error"
-msgid "An HTTP error occured while contacting the remote server"
+msgid "An HTTP error occurred while contacting the remote server"
 msgstr "Errorea aldaketak gordetzerakoan"
 
-#: front/src/components/auth/Login.vue:10
-msgctxt "Content/Login/Error message/List item"
-msgid ""
-"An unknown error happend, this can mean the server is down or cannot be "
-"reached"
-msgstr ""
-"Errore ezezaguna gertatu da. Honek, zerbitzaria erori dela edota ezin dela "
-"atzeman esan nahi du"
-
 #: front/src/components/library/ImportStatusModal.vue:145
 msgctxt "Popup/Import/Error.Label"
-msgid "An unkwown error occured"
+msgid "An unknown error occurred"
+msgstr ""
+
+#: front/src/components/About.vue:123
+msgctxt "*/*/*"
+msgid "Anonymous access"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:54
+msgctxt "Popup/Moderation/Error message"
+msgid "Anonymous reports are disabled, please sign-in to submit a report."
 msgstr ""
 
 #: front/src/components/auth/Settings.vue:175
@@ -599,9 +695,7 @@ msgstr "Akzioa"
 
 #: front/src/components/auth/ApplicationEdit.vue:16
 msgctxt "Content/Application/Paragraph/"
-msgid ""
-"Application ID and secret are really sensitive values and must be treated "
-"like passwords. Do not share those with anyone else."
+msgid "Application ID and secret are really sensitive values and must be treated like passwords. Do not share those with anyone else."
 msgstr ""
 
 #: front/src/components/auth/ApplicationEdit.vue:25
@@ -631,30 +725,28 @@ msgctxt "Content/Login/Title"
 msgid "Are you sure you want to log out?"
 msgstr "Zir al zaude saioa itxi nahi duzula?"
 
+#: front/src/components/audio/SearchBar.vue:32
+#: src/components/audio/track/Table.vue:8
 #: front/src/components/manage/library/AlbumsTable.vue:40
 #: front/src/components/manage/library/TracksTable.vue:41
-msgctxt "*/*/*"
-msgid "Artist"
-msgstr "Artista"
-
-#: front/src/components/audio/SearchBar.vue:25
-#: src/components/audio/track/Table.vue:8
 #: front/src/components/metadata/Search.vue:130
-#: front/src/views/admin/library/AlbumDetail.vue:108
-#: front/src/views/admin/library/TrackDetail.vue:118
-#: front/src/views/content/libraries/FilesTable.vue:56
+#: src/components/mixins/Report.vue:55
+#: front/src/views/admin/library/AlbumDetail.vue:114
+#: front/src/views/admin/library/TrackDetail.vue:124
+#: front/src/views/content/libraries/FilesTable.vue:56 src/entities.js:12
+#: front/src/components/mixins/Report.vue:56
 msgctxt "*/*/*/Noun"
 msgid "Artist"
 msgstr "Artista"
 
-#: front/src/views/admin/library/ArtistDetail.vue:91
+#: front/src/views/admin/library/ArtistDetail.vue:96
 #, fuzzy
 msgctxt "Content/Moderation/Title"
 msgid "Artist data"
 msgstr "Artistaren izena"
 
-#: front/src/components/mixins/Translations.vue:52
-#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/mixins/Translations.vue:62
+#: front/src/components/mixins/Translations.vue:63
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Artist name"
 msgstr "Artistaren izena"
@@ -664,36 +756,36 @@ msgctxt "*/Search/Input.Placeholder"
 msgid "Artist, album, track…"
 msgstr ""
 
+#: front/src/components/audio/Search.vue:10
+#: src/components/library/Artists.vue:117
+#: front/src/components/library/Library.vue:10
+#: front/src/components/library/TagDetail.vue:19
+#: front/src/components/manage/library/TagsTable.vue:42
 #: front/src/views/admin/library/ArtistsList.vue:24
 #: front/src/views/admin/library/Base.vue:8
-#: front/src/views/admin/library/LibraryDetail.vue:209
-msgctxt "*/*/*"
-msgid "Artists"
-msgstr "Artistak"
-
-#: front/src/components/audio/Search.vue:10
-#: src/components/instance/Stats.vue:42
-#: front/src/components/library/Artists.vue:117
-#: src/components/library/Library.vue:10
-#: front/src/views/admin/moderation/AccountsDetail.vue:346
-#: front/src/views/admin/moderation/DomainsDetail.vue:254
+#: front/src/views/admin/library/LibraryDetail.vue:228
+#: front/src/views/admin/library/TagDetail.vue:123
+#: front/src/views/admin/moderation/AccountsDetail.vue:358
+#: front/src/views/admin/moderation/DomainsDetail.vue:291
 msgctxt "*/*/*/Noun"
 msgid "Artists"
 msgstr "Artistak"
 
 #: front/src/components/favorites/List.vue:34
-#: src/components/library/Albums.vue:25
-#: front/src/components/library/Artists.vue:25
+#: src/components/library/Albums.vue:29
+#: front/src/components/library/Artists.vue:29
 #: src/components/library/Radios.vue:44
 #: front/src/components/manage/library/AlbumsTable.vue:21
 #: front/src/components/manage/library/ArtistsTable.vue:21
 #: front/src/components/manage/library/EditsCardList.vue:39
 #: front/src/components/manage/library/LibrariesTable.vue:30
+#: front/src/components/manage/library/TagsTable.vue:21
 #: front/src/components/manage/library/TracksTable.vue:21
 #: front/src/components/manage/library/UploadsTable.vue:40
 #: front/src/components/manage/moderation/AccountsTable.vue:21
-#: front/src/components/manage/moderation/DomainsTable.vue:19
+#: front/src/components/manage/moderation/DomainsTable.vue:27
 #: front/src/components/manage/users/UsersTable.vue:19
+#: front/src/views/admin/moderation/ReportsList.vue:44
 #: front/src/views/content/libraries/FilesTable.vue:31
 #: front/src/views/playlists/List.vue:27
 msgctxt "Content/Search/Dropdown"
@@ -705,19 +797,25 @@ msgctxt "Content/Signup/Button.Label/Verb"
 msgid "Ask for a password reset"
 msgstr "Eskatu pasahitza berrezartzeko"
 
-#: front/src/views/admin/library/AlbumDetail.vue:198
-#: front/src/views/admin/library/ArtistDetail.vue:187
-#: front/src/views/admin/library/LibraryDetail.vue:176
-#: front/src/views/admin/library/TrackDetail.vue:250
+#: front/src/components/manage/moderation/ReportCard.vue:72
+msgctxt "Content/Moderation/*"
+msgid "Assigned to"
+msgstr ""
+
+#: front/src/views/admin/library/AlbumDetail.vue:214
+#: front/src/views/admin/library/ArtistDetail.vue:202
+#: front/src/views/admin/library/LibraryDetail.vue:195
+#: front/src/views/admin/library/TagDetail.vue:113
+#: front/src/views/admin/library/TrackDetail.vue:266
 #: front/src/views/admin/library/UploadDetail.vue:191
-#: front/src/views/admin/moderation/AccountsDetail.vue:274
-#: front/src/views/admin/moderation/DomainsDetail.vue:202
+#: front/src/views/admin/moderation/AccountsDetail.vue:285
+#: front/src/views/admin/moderation/DomainsDetail.vue:239
 #, fuzzy
 msgctxt "Content/Moderation/Title"
 msgid "Audio content"
 msgstr "Edukia sartu"
 
-#: front/src/components/ShortcutsModal.vue:55
+#: front/src/components/ShortcutsModal.vue:92
 msgctxt "Popup/Keyboard shortcuts/Title"
 msgid "Audio player shortcuts"
 msgstr ""
@@ -761,9 +859,9 @@ msgid "Back to settings"
 msgstr "Itzuli sarrerara"
 
 #: front/src/components/library/TrackDetail.vue:48
-#: front/src/components/mixins/Translations.vue:55
+#: front/src/components/mixins/Translations.vue:67
 #: front/src/views/admin/library/UploadDetail.vue:227
-#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:68
 msgctxt "Content/Track/*/Noun"
 msgid "Bitrate"
 msgstr "Bitrate"
@@ -776,10 +874,7 @@ msgstr ""
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:112
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Block everything from this account or domain. This will prevent any "
-"interaction with the entity, and purge related content (uploads, libraries, "
-"follows, etc.)"
+msgid "Block everything from this account or domain. This will prevent any interaction with the entity, and purge related content (uploads, libraries, follows, etc.)"
 msgstr ""
 
 #: front/src/components/Sidebar.vue:18 src/components/library/Library.vue:4
@@ -792,6 +887,11 @@ msgctxt "Sidebar/Library/List item.Link/Verb"
 msgid "Browse library"
 msgstr "Bilatu liburutegia"
 
+#: front/src/components/Home.vue:132
+msgctxt "Content/Home/Link"
+msgid "Browse public content"
+msgstr ""
+
 #: front/src/components/library/Albums.vue:4
 #, fuzzy
 msgctxt "Content/Album/Title"
@@ -823,40 +923,41 @@ msgctxt "Content/Album/Card"
 msgid "By %{ artist }"
 msgstr "Artista:  %{ artist }"
 
-#: front/src/views/content/remote/Card.vue:112
+#: front/src/views/content/remote/Card.vue:125
 #, fuzzy
 msgctxt "Popup/Library/Paragraph"
 msgid "By unfollowing this library, you loose access to its content."
-msgstr ""
-"Liburutegi hau jarraitzeari utzita, bere edukirako sarbidea galduko duzu."
+msgstr "Liburutegi hau jarraitzeari utzita, bere edukirako sarbidea galduko duzu."
 
-#: front/src/views/admin/library/AlbumDetail.vue:214
-#: front/src/views/admin/library/ArtistDetail.vue:203
-#: front/src/views/admin/library/LibraryDetail.vue:192
-#: front/src/views/admin/library/TrackDetail.vue:266
+#: front/src/views/admin/library/AlbumDetail.vue:230
+#: front/src/views/admin/library/ArtistDetail.vue:218
+#: front/src/views/admin/library/LibraryDetail.vue:211
+#: front/src/views/admin/library/TrackDetail.vue:282
 #: front/src/views/admin/library/UploadDetail.vue:208
-#: front/src/views/admin/moderation/AccountsDetail.vue:290
-#: front/src/views/admin/moderation/DomainsDetail.vue:217
+#: front/src/views/admin/moderation/AccountsDetail.vue:301
+#: front/src/views/admin/moderation/DomainsDetail.vue:254
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Cached size"
 msgstr ""
 
 #: front/src/components/SetInstanceModal.vue:37
 #: front/src/components/common/DangerousButton.vue:17
-#: front/src/components/library/AlbumBase.vue:36
-#: front/src/components/library/ArtistBase.vue:47
-#: front/src/components/library/EditForm.vue:95
-#: front/src/components/library/TrackBase.vue:55
+#: front/src/components/library/AlbumBase.vue:37
+#: front/src/components/library/ArtistBase.vue:48
+#: front/src/components/library/EditForm.vue:107
+#: front/src/components/library/TrackBase.vue:53
 #: front/src/components/library/radios/Filter.vue:53
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:54
 #: front/src/components/moderation/FilterModal.vue:39
+#: front/src/components/moderation/ReportModal.vue:59
 #: front/src/components/playlists/PlaylistModal.vue:26
 #: front/src/components/playlists/PlaylistModal.vue:77
+#: front/src/views/playlists/Detail.vue:62
 msgctxt "*/*/Button.Label/Verb"
 msgid "Cancel"
 msgstr "Ezeztatu"
 
-#: front/src/views/content/remote/Card.vue:97
+#: front/src/views/content/remote/Card.vue:110
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Cancel follow request"
 msgstr ""
@@ -871,6 +972,14 @@ msgctxt "Content/Library/Help text"
 msgid "Cannot upload this file, ensure it is not too big"
 msgstr ""
 
+#: front/src/components/manage/moderation/ReportCard.vue:30
+#: front/src/components/mixins/Translations.vue:42
+#: front/src/components/moderation/ReportCategoryDropdown.vue:2
+#: front/src/components/mixins/Translations.vue:43
+msgctxt "*/*/*"
+msgid "Category"
+msgstr ""
+
 #: front/src/components/Footer.vue:21
 msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
 msgid "Change language"
@@ -886,6 +995,11 @@ msgctxt "Content/Settings/Button.Label"
 msgid "Change password"
 msgstr "Pasahitza aldatu"
 
+#: front/src/components/Footer.vue:37
+msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
+msgid "Change theme"
+msgstr ""
+
 #: front/src/views/auth/PasswordResetConfirm.vue:62
 msgctxt "*/Signup/Title"
 msgid "Change your password"
@@ -903,12 +1017,8 @@ msgstr "Aldaketak zerbitzariarekin sinkronizatuta"
 
 #: front/src/components/auth/Settings.vue:71
 msgctxt "Content/Settings/Paragraph'"
-msgid ""
-"Changing your password will also change your Subsonic API password if you "
-"have requested one."
-msgstr ""
-"Zure pasahitza aldatzeak Subsonic APIko pasahitza ere aldatuko du, baten bat"
-" eskatuta baduzu."
+msgid "Changing your password will also change your Subsonic API password if you have requested one."
+msgstr "Zure pasahitza aldatzeak Subsonic APIko pasahitza ere aldatuko du, baten bat eskatuta baduzu."
 
 #: front/src/components/auth/Settings.vue:98
 #, fuzzy
@@ -916,16 +1026,14 @@ msgctxt "Popup/Settings/Paragraph"
 msgid "Changing your password will have the following consequences:"
 msgstr "Pasahitza aldatzeak hurrengo ondorioak izango ditu"
 
-#: front/src/components/Footer.vue:40
+#: front/src/components/Footer.vue:48
 msgctxt "Footer/*/List item.Link"
 msgid "Chat room"
 msgstr ""
 
 #: front/src/components/auth/ApplicationForm.vue:24
 msgctxt "Content/Applications/Paragraph/"
-msgid ""
-"Checking the parent \"Read\" or \"Write\" scopes implies access to all the "
-"corresponding children scopes."
+msgid "Checking the parent \"Read\" or \"Write\" scopes implies access to all the corresponding children scopes."
 msgstr ""
 
 #: front/src/components/SetInstanceModal.vue:2
@@ -933,12 +1041,9 @@ msgctxt "Popup/Instance/Title"
 msgid "Choose your instance"
 msgstr "Zure instantzia hautatu"
 
-#: front/src/components/manage/users/InvitationForm.vue:37
-msgctxt "Content/Admin/Button.Label/Verb"
-msgid "Clear"
-msgstr "Garbitu"
-
 #: front/src/components/library/EditForm.vue:75
+#: front/src/components/library/EditForm.vue:88
+#: front/src/components/manage/users/InvitationForm.vue:37
 msgctxt "Content/Library/Button.Label"
 msgid "Clear"
 msgstr "Garbitu"
@@ -949,46 +1054,46 @@ msgctxt "*/Playlist/Button.Label/Verb"
 msgid "Clear playlist"
 msgstr "Garbitu zerrenda"
 
-#: front/src/components/audio/Player.vue:642
+#: front/src/components/ShortcutsModal.vue:144
+#, fuzzy
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Clear queue"
+msgstr "Garbitu"
+
+#: front/src/components/audio/Player.vue:668
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Clear your queue"
 msgstr ""
 
-#: front/src/components/Home.vue:44
-msgctxt "Content/Home/List item/Verb"
-msgid "Click once, listen for hours using built-in radios"
-msgstr "Klik egin behin, entzun orduetan irratiak erabiliz"
-
 #: front/src/components/mixins/Translations.vue:21
 #: front/src/components/mixins/Translations.vue:22
 msgctxt "Content/Library/Link.Title"
-msgid ""
-"Click to display more information about the import process for this upload"
+msgid "Click to display more information about the import process for this upload"
 msgstr ""
 
 #: front/src/components/library/FileUpload.vue:82
 msgctxt "Content/Library/Paragraph/Call to action"
 msgid "Click to select files to upload or drag and drop files or directories"
-msgstr ""
-"Klik egin igotzeko fitxategiak aukeratzeko edo arrastatu eta jaregin "
-"fitxategi edo karpetak"
+msgstr "Klik egin igotzeko fitxategiak aukeratzeko edo arrastatu eta jaregin fitxategi edo karpetak"
 
+#: front/src/components/ShortcutsModal.vue:38
 #: front/src/components/federation/FetchButton.vue:85
 #: front/src/components/library/ImportStatusModal.vue:79
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:34
 msgctxt "*/*/Button.Label/Verb"
 msgid "Close"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:20
-msgctxt "Popup/Keyboard shortcuts/Button.Label/Verb"
-msgid "Close"
-msgstr ""
-
 #: front/src/components/federation/FetchButton.vue:88
 msgctxt "*/*/Button.Label/Verb"
 msgid "Close and reload page"
 msgstr ""
 
+#: front/src/components/About.vue:94
+msgctxt "*/*/*/State of registrations"
+msgid "Closed"
+msgstr ""
+
 #: front/src/components/manage/users/InvitationForm.vue:26
 #: front/src/components/manage/users/InvitationsTable.vue:42
 msgctxt "Content/Admin/Table.Label/Noun"
@@ -996,8 +1101,9 @@ msgid "Code"
 msgstr "Kodea"
 
 #: front/src/components/audio/album/Card.vue:41
-#: front/src/components/audio/artist/Card.vue:33
-msgctxt "Content/*/Card.Link/Verb"
+#: front/src/components/common/CollapseLink.vue:3
+#, fuzzy
+msgctxt "*/*/Button,Label"
 msgid "Collapse"
 msgstr "Itxi"
 
@@ -1022,20 +1128,20 @@ msgctxt "Content/Signup/Form.Label"
 msgid "Confirmation code"
 msgstr "Baieztapen kodea"
 
+#: front/src/components/About.vue:67 src/components/Home.vue:65
+msgctxt "Content/Home/Header/Name"
+msgid "Contact"
+msgstr ""
+
 #: front/src/components/moderation/FilterModal.vue:90
 #, fuzzy
 msgctxt "*/Moderation/Message"
 msgid "Content filter successfully added"
 msgstr "Arrakastaz eskaneatuta"
 
-#: front/src/components/mixins/Translations.vue:96
-#: front/src/components/mixins/Translations.vue:97
-#, fuzzy
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Content filters"
-msgstr "Aukeratu filtroa"
-
 #: front/src/components/auth/Settings.vue:116
+#: front/src/components/mixins/Translations.vue:108
+#: front/src/components/mixins/Translations.vue:109
 #, fuzzy
 msgctxt "Content/Settings/Title/Noun"
 msgid "Content filters"
@@ -1043,8 +1149,7 @@ msgstr "Aukeratu filtroa"
 
 #: front/src/components/auth/Settings.vue:119
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"Content filters help you hide content you don't want to see on the service."
+msgid "Content filters help you hide content you don't want to see on the service."
 msgstr ""
 
 #: front/src/components/common/ActionTable.vue:8
@@ -1052,13 +1157,20 @@ msgctxt "Content/*/Button.Help text.Paragraph"
 msgid "Content have been updated, click refresh to see up-to-date content"
 msgstr ""
 
-#: front/src/components/Footer.vue:48
+#: front/src/components/About.vue:46
+#, fuzzy
+msgctxt "Content/About/Header"
+msgid "Contents"
+msgstr "Aukeratu filtroa"
+
+#: front/src/components/Footer.vue:56
 msgctxt "Footer/*/List item.Link"
 msgid "Contribute"
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:19
+#: front/src/components/audio/EmbedWizard.vue:29
 #: front/src/components/common/CopyInput.vue:8
+#: front/src/components/forms/PasswordInput.vue:43
 msgctxt "*/*/Button.Label/Short, Verb"
 msgid "Copy"
 msgstr "Kopiatu"
@@ -1073,15 +1185,15 @@ msgctxt "Content/Auth/Paragraph"
 msgid "Copy-paste the following code in the application:"
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:21
+#: front/src/components/audio/EmbedWizard.vue:31
 msgctxt "Popup/Embed/Paragraph"
 msgid "Copy/paste this code in your website HTML"
 msgstr ""
 
 #: front/src/components/library/TrackDetail.vue:10
-#: front/src/views/admin/library/TrackDetail.vue:153
+#: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:77
 #, fuzzy
-msgctxt "Content/Track/Table.Label/Noun"
+msgctxt "Content/Track/*/Noun"
 msgid "Copyright"
 msgstr "Kopiatu"
 
@@ -1097,32 +1209,22 @@ msgctxt "Content/Library/Error message.Title"
 msgid "Could not fetch remote library"
 msgstr "Errorea urruneko liburutegia atzitzean"
 
-#: front/src/components/Home.vue:80
-msgctxt "Content/Home/List item"
-msgid "Covers, lyrics, our goal is to have them all ;)"
-msgstr "Azalak, letrak, gure helburua horiek denak edukitzea da ;)"
-
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:58
 #, fuzzy
 msgctxt "Content/Moderation/Card.Button.Label/Verb"
 msgid "Create"
 msgstr "Inportazioa sortu"
 
-#: front/src/components/auth/Signup.vue:4
+#: front/src/views/auth/Signup.vue:4
 msgctxt "Content/Signup/Title"
 msgid "Create a funkwhale account"
 msgstr "Sortu funkwhale kontua"
 
-#: front/src/components/auth/Settings.vue:220
-#, fuzzy
-msgctxt "Content/Settings/Button.Label"
-msgid "Create a new application"
-msgstr "Zerrenda berria sortu"
-
 #: front/src/components/auth/ApplicationNew.vue:8
 #: front/src/components/auth/ApplicationNew.vue:41
+#: front/src/components/auth/Settings.vue:220
 #, fuzzy
-msgctxt "Content/Applications/Title"
+msgctxt "Content/Settings/Button.Label"
 msgid "Create a new application"
 msgstr "Zerrenda berria sortu"
 
@@ -1136,7 +1238,7 @@ msgctxt "Popup/Playlist/Title/Verb"
 msgid "Create a new playlist"
 msgstr "Zerrenda berria sortu"
 
-#: front/src/components/Sidebar.vue:57 src/components/auth/Login.vue:17
+#: front/src/components/Sidebar.vue:57 src/components/auth/LoginForm.vue:15
 msgctxt "*/Signup/Link/Verb"
 msgid "Create an account"
 msgstr "Kontua sortu"
@@ -1152,7 +1254,7 @@ msgctxt "Content/Library/Button.Label/Verb"
 msgid "Create library"
 msgstr "Liburutegia sortu"
 
-#: front/src/components/auth/Signup.vue:53
+#: front/src/components/auth/SignupForm.vue:49
 msgctxt "Content/Signup/Button.Label"
 msgid "Create my account"
 msgstr "Sortu nire kontua"
@@ -1177,11 +1279,13 @@ msgstr "Sortu zure irrati propioa"
 #: front/src/components/manage/library/AlbumsTable.vue:44
 #: front/src/components/manage/library/ArtistsTable.vue:43
 #: front/src/components/manage/library/LibrariesTable.vue:54
+#: front/src/components/manage/library/TagsTable.vue:45
 #: front/src/components/manage/library/TracksTable.vue:44
 #: front/src/components/manage/library/UploadsTable.vue:66
+#: front/src/components/manage/moderation/ReportCard.vue:43
 #: front/src/components/manage/users/InvitationsTable.vue:40
-#: front/src/components/mixins/Translations.vue:43
-#: front/src/components/mixins/Translations.vue:44
+#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/mixins/Translations.vue:54
 msgctxt "Content/*/*/Noun"
 msgid "Creation date"
 msgstr "Sortze data"
@@ -1191,6 +1295,12 @@ msgctxt "Content/Settings/Title/Noun"
 msgid "Current avatar"
 msgstr "Oraingo irudia"
 
+#: front/src/components/admin/SettingsGroup.vue:67
+#, fuzzy
+msgctxt "Content/Settings/Title/Noun"
+msgid "Current image"
+msgstr "Oraingo erabilera"
+
 #: front/src/views/content/libraries/DetailArea.vue:4
 msgctxt "Content/Library/Title"
 msgid "Current library"
@@ -1206,6 +1316,11 @@ msgctxt "Content/Library/Title"
 msgid "Current usage"
 msgstr "Oraingo erabilera"
 
+#: front/src/components/Footer.vue:94
+msgctxt "Footer/Settings/Dropdown.Label/Theme name"
+msgid "Dark"
+msgstr ""
+
 #: front/src/components/federation/FetchButton.vue:53
 msgctxt "*/*/Error"
 msgid "Data returned by the remote server had invalid or missing attributes"
@@ -1227,7 +1342,7 @@ msgctxt "Popup/Import/Table.Label/Noun"
 msgid "Debug information"
 msgstr "Iraupena"
 
-#: front/src/components/ShortcutsModal.vue:75
+#: front/src/components/ShortcutsModal.vue:128
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Decrease volume"
 msgstr ""
@@ -1239,23 +1354,29 @@ msgstr ""
 #: front/src/components/manage/library/AlbumsTable.vue:188
 #: front/src/components/manage/library/ArtistsTable.vue:178
 #: front/src/components/manage/library/LibrariesTable.vue:205
+#: front/src/components/manage/library/TagsTable.vue:179
 #: front/src/components/manage/library/TracksTable.vue:188
 #: front/src/components/manage/library/UploadsTable.vue:255
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:61
+#: front/src/components/manage/moderation/NotesThread.vue:24
+#: front/src/components/manage/moderation/NotesThread.vue:29
+#: front/src/components/manage/moderation/ReportCard.vue:360
 #: front/src/components/manage/users/InvitationsTable.vue:167
-#: front/src/views/admin/library/AlbumDetail.vue:72
-#: front/src/views/admin/library/AlbumDetail.vue:77
-#: front/src/views/admin/library/ArtistDetail.vue:71
+#: front/src/views/admin/library/AlbumDetail.vue:78
+#: front/src/views/admin/library/AlbumDetail.vue:83
 #: front/src/views/admin/library/ArtistDetail.vue:76
+#: front/src/views/admin/library/ArtistDetail.vue:81
 #: front/src/views/admin/library/LibraryDetail.vue:58
 #: front/src/views/admin/library/LibraryDetail.vue:63
-#: front/src/views/admin/library/TrackDetail.vue:71
-#: front/src/views/admin/library/TrackDetail.vue:76
+#: front/src/views/admin/library/TagDetail.vue:41
+#: front/src/views/admin/library/TagDetail.vue:46
+#: front/src/views/admin/library/TrackDetail.vue:77
+#: front/src/views/admin/library/TrackDetail.vue:82
 #: front/src/views/admin/library/UploadDetail.vue:65
 #: front/src/views/admin/library/UploadDetail.vue:70
 #: front/src/views/content/libraries/FilesTable.vue:222
 #: front/src/views/content/libraries/Form.vue:29
-#: src/views/playlists/Detail.vue:34
+#: src/views/playlists/Detail.vue:42
 msgctxt "*/*/*/Verb"
 msgid "Delete"
 msgstr "Ezabatu"
@@ -1282,7 +1403,20 @@ msgctxt "Popup/Moderation/Button.Label/Verb"
 msgid "Delete moderation rule"
 msgstr "Irratia ezabatu"
 
-#: front/src/views/playlists/Detail.vue:39
+#: front/src/components/auth/Settings.vue:274
+#: src/components/auth/Settings.vue:302
+#, fuzzy
+msgctxt "*/*/Button.Label"
+msgid "Delete my account"
+msgstr "Sortu nire kontua"
+
+#: front/src/components/auth/Settings.vue:297
+#, fuzzy
+msgctxt "*/*/Button.Label"
+msgid "Delete my account…"
+msgstr "Sortu nire kontua"
+
+#: front/src/views/playlists/Detail.vue:47
 msgctxt "Popup/Playlist/Button.Label/Verb"
 msgid "Delete playlist"
 msgstr "Zerrenda ezabatu"
@@ -1292,14 +1426,24 @@ msgctxt "Popup/Radio/Button.Label/Verb"
 msgid "Delete radio"
 msgstr "Irratia ezabatu"
 
-#: front/src/views/admin/library/AlbumDetail.vue:73
-#: front/src/views/admin/library/TrackDetail.vue:72
+#: front/src/components/manage/moderation/ReportCard.vue:357
+msgctxt "Content/Moderation/Button/Verb"
+msgid "Delete reported object"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:358
+msgctxt "Content/Moderation/Popup/Header"
+msgid "Delete reported object?"
+msgstr ""
+
+#: front/src/views/admin/library/AlbumDetail.vue:79
+#: front/src/views/admin/library/TrackDetail.vue:78
 #, fuzzy
 msgctxt "Popup/Library/Title"
 msgid "Delete this album?"
 msgstr "Liburutegi hau ezabatu?"
 
-#: front/src/views/admin/library/ArtistDetail.vue:72
+#: front/src/views/admin/library/ArtistDetail.vue:77
 #, fuzzy
 msgctxt "Popup/Library/Title"
 msgid "Delete this artist?"
@@ -1317,59 +1461,72 @@ msgctxt "Popup/Moderation/Title"
 msgid "Delete this moderation rule?"
 msgstr "Liburutegi hau ezabatu?"
 
+#: front/src/components/manage/moderation/NotesThread.vue:25
+#, fuzzy
+msgctxt "Popup/Moderation/Title"
+msgid "Delete this note?"
+msgstr "Liburutegi hau ezabatu?"
+
 #: front/src/components/library/EditCard.vue:94
 #, fuzzy
 msgctxt "Popup/Library/Title"
 msgid "Delete this suggestion?"
 msgstr "Liburutegi hau ezabatu?"
 
-#: front/src/views/admin/library/UploadDetail.vue:66
+#: front/src/views/admin/library/TagDetail.vue:42
 #, fuzzy
 msgctxt "Popup/Library/Title"
-msgid "Delete this upload?"
+msgid "Delete this tag?"
 msgstr "Liburutegi hau ezabatu?"
 
-#: front/src/components/favorites/List.vue:35
-#: src/components/library/Albums.vue:26
-#: front/src/components/library/Artists.vue:26
+#: front/src/views/admin/library/UploadDetail.vue:66
+#, fuzzy
+msgctxt "Popup/Library/Title"
+msgid "Delete this upload?"
+msgstr "Liburutegi hau ezabatu?"
+
+#: front/src/components/favorites/List.vue:35
+#: src/components/library/Albums.vue:30
+#: front/src/components/library/Artists.vue:30
 #: src/components/library/Radios.vue:47
 #: front/src/components/manage/library/AlbumsTable.vue:22
 #: front/src/components/manage/library/ArtistsTable.vue:22
 #: front/src/components/manage/library/EditsCardList.vue:40
 #: front/src/components/manage/library/LibrariesTable.vue:31
+#: front/src/components/manage/library/TagsTable.vue:22
 #: front/src/components/manage/library/TracksTable.vue:22
 #: front/src/components/manage/library/UploadsTable.vue:41
 #: front/src/components/manage/moderation/AccountsTable.vue:22
-#: front/src/components/manage/moderation/DomainsTable.vue:20
+#: front/src/components/manage/moderation/DomainsTable.vue:28
 #: front/src/components/manage/users/UsersTable.vue:20
+#: front/src/views/admin/moderation/ReportsList.vue:45
 #: front/src/views/content/libraries/FilesTable.vue:32
 #: front/src/views/playlists/List.vue:28
 msgctxt "Content/Search/Dropdown"
 msgid "Descending"
 msgstr "Beheranzkoa"
 
-#: front/src/views/admin/library/LibraryDetail.vue:123
-msgctxt "*/*/*/Noun"
-msgid "Description"
-msgstr "Deskribapena"
+#: front/src/components/manage/moderation/NoteForm.vue:37
+msgctxt "Content/Moderation/Placeholder"
+msgid "Describe what actions have been taken, or any other related updates…"
+msgstr ""
 
 #: front/src/components/library/radios/Builder.vue:25
+#: front/src/views/admin/library/LibraryDetail.vue:132
 #: front/src/views/content/libraries/Form.vue:14
-msgctxt "Content/*/Input.Label/Noun"
+msgctxt "*/*/*/Noun"
 msgid "Description"
 msgstr "Deskribapena"
 
 #: front/src/views/content/libraries/Card.vue:48
-#: src/views/content/remote/Card.vue:54
+#: src/views/content/remote/Card.vue:67
 msgctxt "Content/Library/Card.Button.Label/Noun"
 msgid "Details"
 msgstr "Xehetasunak"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:491
+#: front/src/views/admin/moderation/AccountsDetail.vue:511
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Determine how much content the user can upload. Leave empty to use the "
-"default value of the instance."
+msgid "Determine how much content the user can upload. Leave empty to use the default value of the instance."
 msgstr ""
 
 #: front/src/components/mixins/Translations.vue:8
@@ -1379,39 +1536,51 @@ msgid "Determine the visibility level of your activity"
 msgstr ""
 
 #: front/src/components/auth/Settings.vue:104
-#: front/src/components/auth/SubsonicTokenForm.vue:51
+#: front/src/components/auth/SubsonicTokenForm.vue:56
 msgctxt "Popup/Settings/Button.Label"
 msgid "Disable access"
 msgstr "Sarbidea ezgaitu"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:48
+#: front/src/components/auth/SubsonicTokenForm.vue:53
 msgctxt "Content/Settings/Button.Label/Verb"
 msgid "Disable Subsonic access"
 msgstr "Subsonic sarbidea ezgaitu"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:49
+#: front/src/components/auth/SubsonicTokenForm.vue:54
 msgctxt "Popup/Settings/Title"
 msgid "Disable Subsonic API access?"
 msgstr "Subsonic API sarbidea ezgaitu?"
 
+#: front/src/components/About.vue:118 src/components/About.vue:131
+#: front/src/components/About.vue:144
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:18
 #: front/src/views/admin/moderation/AccountsDetail.vue:157
 #: front/src/views/admin/moderation/AccountsDetail.vue:161
 #, fuzzy
-msgctxt "*/*/*"
+msgctxt "*/*/*/State of feature"
 msgid "Disabled"
 msgstr "Sarbidea ezgaitu"
 
-#: front/src/views/admin/library/TrackDetail.vue:145
+#: front/src/views/admin/library/TrackDetail.vue:151
 msgctxt "*/*/*/Noun"
 msgid "Disc number"
 msgstr ""
 
+#: front/src/components/Home.vue:157
+msgctxt "Content/Home/Link"
+msgid "Discover everything you need to know about Funkwhale and its features"
+msgstr ""
+
 #: front/src/components/auth/SubsonicTokenForm.vue:13
 msgctxt "Content/Settings/Link"
 msgid "Discover how to use Funkwhale from other apps"
 msgstr "Ezagutu nola erabili Funkwhale beste aplikazio batzuetatik"
 
+#: front/src/views/Notifications.vue:45
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Discover other ways to help"
+msgstr ""
+
 #: front/src/views/admin/moderation/AccountsDetail.vue:132
 #, fuzzy
 msgctxt "'Content/*/*/Noun'"
@@ -1425,11 +1594,15 @@ msgstr "Erakutsi publikoki"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:122
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Do not download any media file (audio, album cover, account avatar…) from "
-"this account or domain. This will purge existing content as well."
+msgid "Do not download any media file (audio, album cover, account avatar…) from this account or domain. This will purge existing content as well."
 msgstr ""
 
+#: front/src/views/Notifications.vue:36
+#, fuzzy
+msgctxt "Content/Notifications/Header"
+msgid "Do you like Funkwhale?"
+msgstr "Funkwhale-ri buruz"
+
 #: front/src/components/playlists/Editor.vue:51
 msgctxt "Popup/Playlist/Title"
 msgid "Do you want to clear the playlist \"%{ playlist }\"?"
@@ -1440,7 +1613,7 @@ msgctxt "Modal/*/Title"
 msgid "Do you want to confirm this action?"
 msgstr "Nahi duzu akzio hau baieztatzea?"
 
-#: front/src/views/playlists/Detail.vue:35
+#: front/src/views/playlists/Detail.vue:43
 msgctxt "Popup/Playlist/Title/Call to action"
 msgid "Do you want to delete the playlist \"%{ playlist }\"?"
 msgstr "Nahi duzu \"%{ playlist }\" zerrenda ezabatzea?"
@@ -1450,6 +1623,12 @@ msgctxt "Popup/Radio/Title"
 msgid "Do you want to delete the radio \"%{ radio }\"?"
 msgstr "Nahi duzu \"%{ radio }\" irratia ezabatzea?"
 
+#: front/src/components/auth/Settings.vue:298
+#, fuzzy
+msgctxt "Popup/Settings/Title"
+msgid "Do you want to delete your account?"
+msgstr "Nahi duzu aurreko ilara berrezartzea?"
+
 #: front/src/components/moderation/FilterModal.vue:3
 #, fuzzy
 msgctxt "Popup/Moderation/Title/Verb"
@@ -1464,7 +1643,13 @@ msgid_plural "Do you want to launch %{ action } on %{ count } elements?"
 msgstr[0] "Nahi duzu %{ action } abiatzea elementu %{ count }ean?"
 msgstr[1] "Nahi duzu %{ action } abiatzea %{ count } elementutan?"
 
-#: front/src/components/Sidebar.vue:118
+#: front/src/components/moderation/ReportModal.vue:3
+#, fuzzy
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Do you want to report this object?"
+msgstr "Nahi duzu akzio hau baieztatzea?"
+
+#: front/src/components/Sidebar.vue:122
 msgctxt "Sidebar/Queue/Message"
 msgid "Do you want to restore your previous queue?"
 msgstr "Nahi duzu aurreko ilara berrezartzea?"
@@ -1480,26 +1665,33 @@ msgstr "Dokumentazioa"
 #: front/src/components/manage/library/TracksTable.vue:42
 #: front/src/components/manage/library/UploadsTable.vue:62
 #: front/src/components/manage/moderation/AccountsTable.vue:40
-#: front/src/components/mixins/Translations.vue:60
-#: front/src/views/admin/library/AlbumDetail.vue:118
-#: front/src/views/admin/library/ArtistDetail.vue:107
-#: front/src/views/admin/library/LibraryDetail.vue:114
-#: front/src/views/admin/library/TrackDetail.vue:170
+#: front/src/components/manage/moderation/ReportCard.vue:169
+#: front/src/components/manage/moderation/ReportCard.vue:179
+#: front/src/components/mixins/Translations.vue:72
+#: front/src/views/admin/library/AlbumDetail.vue:124
+#: front/src/views/admin/library/ArtistDetail.vue:112
+#: front/src/views/admin/library/LibraryDetail.vue:123
+#: front/src/views/admin/library/TrackDetail.vue:176
 #: front/src/views/admin/library/UploadDetail.vue:121
 #: front/src/views/admin/moderation/AccountsDetail.vue:123
-#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/mixins/Translations.vue:73
 msgctxt "Content/Moderation/*/Noun"
 msgid "Domain"
 msgstr ""
 
-#: front/src/views/admin/moderation/Base.vue:5
+#: front/src/views/admin/moderation/Base.vue:8
 #: front/src/views/admin/moderation/DomainsList.vue:3
-#: front/src/views/admin/moderation/DomainsList.vue:48
+#: front/src/views/admin/moderation/DomainsList.vue:54
 msgctxt "*/Moderation/*/Noun"
 msgid "Domains"
 msgstr ""
 
-#: front/src/components/library/TrackBase.vue:39
+#: front/src/views/Notifications.vue:42
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Donate"
+msgstr ""
+
+#: front/src/components/library/TrackBase.vue:37
 #: front/src/views/admin/library/UploadDetail.vue:58
 msgctxt "Content/Track/Link/Verb"
 msgid "Download"
@@ -1512,10 +1704,10 @@ msgstr "Arrastatu eta jaregin lerroak abestiak zerrendan berrordenatzeko"
 
 #: front/src/components/audio/track/Table.vue:10
 #: front/src/components/library/TrackDetail.vue:30
-#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:68
 #: front/src/views/admin/library/UploadDetail.vue:238
 #: front/src/views/content/libraries/FilesTable.vue:60
-#: front/src/components/mixins/Translations.vue:57
+#: front/src/components/mixins/Translations.vue:69
 msgctxt "Content/*/*"
 msgid "Duration"
 msgstr "Iraupena"
@@ -1526,30 +1718,21 @@ msgctxt "Content/Signup/Message"
 msgid "E-mail address confirmed"
 msgstr "Emaila baieztatuta"
 
-#: front/src/components/Home.vue:88
-msgctxt "Content/Home/Title"
-msgid "Easy to use"
-msgstr "Erabiltzeko erraza"
-
-#: front/src/components/library/AlbumBase.vue:68
-#: front/src/components/library/ArtistBase.vue:79
-#: front/src/components/library/TrackBase.vue:87
+#: front/src/components/auth/Settings.vue:246
+#: src/components/library/AlbumBase.vue:73
+#: front/src/components/library/ArtistBase.vue:84
+#: front/src/components/library/TrackBase.vue:89
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:45
 #: front/src/components/radios/Card.vue:23
-#: src/views/admin/library/AlbumDetail.vue:65
-#: front/src/views/admin/library/ArtistDetail.vue:64
-#: front/src/views/admin/library/TrackDetail.vue:64
+#: src/views/admin/library/AlbumDetail.vue:71
+#: front/src/views/admin/library/ArtistDetail.vue:69
+#: front/src/views/admin/library/TrackDetail.vue:70
 #: front/src/views/content/libraries/Detail.vue:9
 #: src/views/playlists/Detail.vue:31
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Edit"
 msgstr "Editatu"
 
-#: front/src/components/auth/Settings.vue:246
-msgctxt "Content/Settings/Button.Label"
-msgid "Edit"
-msgstr "Editatu"
-
 #: front/src/components/auth/ApplicationEdit.vue:30
 #: front/src/components/auth/ApplicationEdit.vue:75
 #, fuzzy
@@ -1557,11 +1740,6 @@ msgctxt "Content/Applications/Title"
 msgid "Edit application"
 msgstr "Errorea akzioa aplikatzen zen bitartean"
 
-#: front/src/components/About.vue:22
-msgctxt "Content/Settings/Button.Label/Verb"
-msgid "Edit instance info"
-msgstr "Editatu instantzia infoa"
-
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:3
 msgctxt "Content/Moderation/Card.Title/Verb"
 msgid "Edit moderation rule"
@@ -1584,25 +1762,21 @@ msgctxt "Content/*/Title"
 msgid "Edit this track"
 msgstr "Editatu instantzia infoa"
 
-#: front/src/views/admin/library/AlbumDetail.vue:182
-#: front/src/views/admin/library/ArtistDetail.vue:171
+#: front/src/components/mixins/Translations.vue:116
+#: front/src/views/admin/library/AlbumDetail.vue:198
+#: front/src/views/admin/library/ArtistDetail.vue:186
 #: front/src/views/admin/library/Base.vue:5
 #: src/views/admin/library/EditsList.vue:24
-#: front/src/views/admin/library/TrackDetail.vue:234
+#: front/src/views/admin/library/TrackDetail.vue:250
+#: front/src/components/mixins/Translations.vue:117
 #, fuzzy
 msgctxt "*/Admin/*/Noun"
 msgid "Edits"
 msgstr "Editatu"
 
-#: front/src/components/mixins/Translations.vue:104
-#: front/src/components/mixins/Translations.vue:105
-#, fuzzy
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Edits"
-msgstr "Editatu"
-
-#: front/src/components/auth/Signup.vue:30
+#: front/src/components/auth/SignupForm.vue:26
 #: front/src/components/manage/users/UsersTable.vue:38
+#: front/src/components/moderation/ReportModal.vue:31
 msgctxt "Content/*/*/Noun"
 msgid "Email"
 msgstr "Emaila"
@@ -1612,52 +1786,61 @@ msgctxt "Content/*/*"
 msgid "Email address"
 msgstr "Email helbidea"
 
-#: front/src/components/library/AlbumBase.vue:53
-#: front/src/components/library/ArtistBase.vue:64
-#: front/src/components/library/TrackBase.vue:72
+#: front/src/components/library/AlbumBase.vue:54
+#: front/src/components/library/ArtistBase.vue:65
+#: front/src/components/library/TrackBase.vue:70
+#: src/views/playlists/Detail.vue:38
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Embed"
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:20
+#: front/src/components/audio/EmbedWizard.vue:30
 msgctxt "Popup/Embed/Input.Label/Noun"
 msgid "Embed code"
 msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:26
+#: front/src/components/library/AlbumBase.vue:27
 msgctxt "Popup/Album/Title/Verb"
 msgid "Embed this album on your website"
 msgstr ""
 
-#: front/src/components/library/ArtistBase.vue:37
+#: front/src/components/library/ArtistBase.vue:38
 msgctxt "Popup/Artist/Title/Verb"
 msgid "Embed this artist work on your website"
 msgstr ""
 
-#: front/src/components/library/TrackBase.vue:45
+#: front/src/views/playlists/Detail.vue:52
+msgctxt "Popup/Album/Title/Verb"
+msgid "Embed this playlist on your website"
+msgstr ""
+
+#: front/src/components/library/TrackBase.vue:43
 msgctxt "Popup/Track/Title"
 msgid "Embed this track on your website"
 msgstr ""
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:259
-#: front/src/views/admin/moderation/DomainsDetail.vue:187
+#: front/src/views/admin/moderation/AccountsDetail.vue:260
+#: front/src/views/admin/moderation/DomainsDetail.vue:224
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Emitted library follows"
 msgstr ""
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:243
-#: front/src/views/admin/moderation/DomainsDetail.vue:171
+#: front/src/views/admin/moderation/AccountsDetail.vue:244
+#: front/src/views/admin/moderation/DomainsDetail.vue:208
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Emitted messages"
 msgstr ""
 
+#: front/src/components/About.vue:114 src/components/About.vue:127
+#: front/src/components/About.vue:140
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:8
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:17
 #: front/src/views/admin/moderation/AccountsDetail.vue:156
 #: front/src/views/admin/moderation/AccountsDetail.vue:160
-msgctxt "*/*/*"
+#, fuzzy
+msgctxt "*/*/*/State of feature"
 msgid "Enabled"
-msgstr ""
+msgstr "Sarbidea ezgaitu"
 
 #: front/src/views/playlists/Detail.vue:30
 msgctxt "Content/Playlist/Button.Label/Verb"
@@ -1675,9 +1858,9 @@ msgctxt "Content/Search/Input.Placeholder"
 msgid "Enter a radio name…"
 msgstr ""
 
-#: front/src/components/library/Albums.vue:119
+#: front/src/components/library/Albums.vue:128
 msgctxt "Content/Search/Input.Placeholder"
-msgid "Enter album title..."
+msgid "Enter album title…"
 msgstr ""
 
 #: front/src/components/library/Artists.vue:116
@@ -1694,16 +1877,17 @@ msgstr "Zerrenda izena"
 
 #: front/src/views/auth/PasswordReset.vue:54
 msgctxt "Content/Signup/Input.Placeholder"
-msgid "Enter the email address binded to your account"
+msgid "Enter the email address linked to your account"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:103
+#: front/src/components/auth/SignupForm.vue:96
 #, fuzzy
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your email"
 msgstr "E-maila baieztatu"
 
-#: front/src/components/auth/Signup.vue:98 src/components/auth/Signup.vue:100
+#: front/src/components/auth/SignupForm.vue:91
+#: src/components/auth/SignupForm.vue:93
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your invitation code (case insensitive)"
 msgstr ""
@@ -1713,12 +1897,12 @@ msgctxt "Content/Library/Input.Placeholder/Verb"
 msgid "Enter your search query…"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:102
+#: front/src/components/auth/SignupForm.vue:95
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your username"
 msgstr ""
 
-#: front/src/components/auth/Login.vue:83
+#: front/src/components/auth/LoginForm.vue:81
 msgctxt "Content/Login/Input.Placeholder"
 msgid "Enter your username or email"
 msgstr ""
@@ -1736,7 +1920,7 @@ msgctxt "Popup/Import/Table.Label/Noun"
 msgid "Error detail"
 msgstr "Erroredun fitxategiak"
 
-#: front/src/views/admin/Settings.vue:87
+#: front/src/views/admin/Settings.vue:89
 #, fuzzy
 msgctxt "Content/Admin/Menu"
 msgid "Error reporting"
@@ -1799,17 +1983,13 @@ msgctxt "Popup/Moderation/Error message"
 msgid "Error while fetching application data"
 msgstr "Errorea gonbidapena sortzean"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:118
+#: front/src/views/admin/moderation/DomainsDetail.vue:155
 #, fuzzy
 msgctxt "Content/Moderation/Table"
 msgid "Error while fetching node info"
 msgstr "Errorea urruneko liburutegia atzitzean"
 
 #: front/src/components/admin/SettingsGroup.vue:5
-msgctxt "Content/Settings/Error message.Title"
-msgid "Error while saving settings"
-msgstr "Errorea ezarpenak gordetzean"
-
 #: front/src/components/federation/FetchButton.vue:73
 msgctxt "Content/*/Error message.Title"
 msgid "Error while saving settings"
@@ -1821,6 +2001,18 @@ msgctxt "Content/Library/Error message.Title"
 msgid "Error while submitting edit"
 msgstr "Errorea ezarpenak gordetzean"
 
+#: front/src/components/manage/moderation/NoteForm.vue:3
+#, fuzzy
+msgctxt "Content/Moderation/Error message.Title"
+msgid "Error while submitting note"
+msgstr "Errorea ezarpenak gordetzean"
+
+#: front/src/components/moderation/ReportModal.vue:11
+#, fuzzy
+msgctxt "Popup/Moderation/Error message"
+msgid "Error while submitting report"
+msgstr "Errorea ezarpenak gordetzean"
+
 #: front/src/components/mixins/Translations.vue:32
 #: front/src/components/mixins/Translations.vue:33
 msgctxt "Content/Library/Table/Short"
@@ -1856,9 +2048,14 @@ msgctxt "Content/Radio/Table.Label/Verb"
 msgid "Exclude"
 msgstr "Baztertu"
 
+#: front/src/components/common/CollapseLink.vue:2
+msgctxt "*/*/Button,Label"
+msgid "Expand"
+msgstr ""
+
 #: front/src/components/manage/users/InvitationsTable.vue:41
-#: front/src/components/mixins/Translations.vue:49
-#: front/src/components/mixins/Translations.vue:50
+#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:60
 msgctxt "Content/Admin/Table.Label/Noun"
 msgid "Expiration date"
 msgstr "Iraungitze data"
@@ -1875,11 +2072,7 @@ msgstr "Iraungita/erabilita"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:110
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Explain why you're applying this policy. Depending on your instance "
-"configuration, this will help you remember why you acted on this account or "
-"domain, and may be displayed publicly to help users understand what "
-"moderation rules are in place."
+msgid "Explain why you're applying this policy. Depending on your instance configuration, this will help you remember why you acted on this account or domain, and may be displayed publicly to help users understand what moderation rules are in place."
 msgstr ""
 
 #: front/src/components/manage/library/UploadsTable.vue:25
@@ -1888,34 +2081,30 @@ msgctxt "Content/Library/Dropdown"
 msgid "Failed"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:62
+#: front/src/views/content/remote/Card.vue:75
 #, fuzzy
 msgctxt "Content/Library/Card.List item/Noun"
 msgid "Failed tracks:"
 msgstr "Erroredun abestiak:"
 
-#: front/src/views/admin/library/AlbumDetail.vue:165
-#: front/src/views/admin/library/ArtistDetail.vue:154
-#: front/src/views/admin/library/TrackDetail.vue:217
+#: front/src/views/admin/library/AlbumDetail.vue:171
+#: front/src/views/admin/library/ArtistDetail.vue:159
+#: front/src/views/admin/library/TrackDetail.vue:223
 #, fuzzy
 msgctxt "*/*/*"
 msgid "Favorited tracks"
 msgstr "Gogokoak"
 
 #: front/src/components/Sidebar.vue:66
+#: src/components/mixins/Translations.vue:88
+#: front/src/components/mixins/Translations.vue:89
 msgctxt "Sidebar/Favorites/List item.Link/Noun"
 msgid "Favorites"
 msgstr "Gogokoak"
 
-#: front/src/components/mixins/Translations.vue:76
-#: front/src/components/mixins/Translations.vue:77
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Favorites"
-msgstr "Gogokoak"
-
-#: front/src/views/admin/Settings.vue:84
+#: front/src/components/About.vue:110 src/views/admin/Settings.vue:84
 #, fuzzy
-msgctxt "Content/Admin/Menu"
+msgctxt "*/*/*"
 msgid "Federation"
 msgstr "Iraupena"
 
@@ -1940,6 +2129,11 @@ msgctxt "Content/Radio/Table.Label/Noun"
 msgid "Filter name"
 msgstr "Iragazki izena"
 
+#: front/src/components/Home.vue:118
+msgctxt "Content/Home/Link"
+msgid "Find another pod"
+msgstr ""
+
 #: front/src/components/manage/library/UploadsTable.vue:26
 #: front/src/components/mixins/Translations.vue:36
 #: front/src/views/content/libraries/FilesTable.vue:17
@@ -1949,26 +2143,32 @@ msgid "Finished"
 msgstr "Amaituta"
 
 #: front/src/components/manage/moderation/AccountsTable.vue:42
-#: front/src/components/manage/moderation/DomainsTable.vue:41
-#: front/src/views/admin/library/AlbumDetail.vue:149
-#: front/src/views/admin/library/ArtistDetail.vue:138
-#: front/src/views/admin/library/LibraryDetail.vue:153
-#: front/src/views/admin/library/TrackDetail.vue:201
+#: front/src/components/manage/moderation/DomainsTable.vue:49
+#: front/src/views/admin/library/AlbumDetail.vue:155
+#: front/src/views/admin/library/ArtistDetail.vue:143
+#: front/src/views/admin/library/LibraryDetail.vue:162
+#: front/src/views/admin/library/TagDetail.vue:98
+#: front/src/views/admin/library/TrackDetail.vue:207
 #: front/src/views/admin/library/UploadDetail.vue:167
-#: front/src/views/admin/moderation/AccountsDetail.vue:235
-#: front/src/views/admin/moderation/DomainsDetail.vue:151
+#: front/src/views/admin/moderation/AccountsDetail.vue:236
+#: front/src/views/admin/moderation/DomainsDetail.vue:188
 msgctxt "Content/Moderation/Table.Label/Short (Value is a date)"
 msgid "First seen"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:46
-#: front/src/components/mixins/Translations.vue:47
+#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:57
 #, fuzzy
 msgctxt "Content/Moderation/Dropdown/Noun"
 msgid "First seen date"
 msgstr "Iraungitze data"
 
-#: front/src/views/content/remote/Card.vue:87
+#: front/src/components/ShortcutsModal.vue:64
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Focus searchbar"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:100
 msgctxt "Content/Library/Card.Button.Label/Verb"
 msgid "Follow"
 msgstr "Jarraitu"
@@ -1978,42 +2178,36 @@ msgctxt "Content/Library/Title/Verb"
 msgid "Follow remote libraries"
 msgstr "Jarraitu urruneko liburutegiak"
 
-#: front/src/views/content/remote/Card.vue:92
+#: front/src/views/content/remote/Card.vue:105
 #, fuzzy
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Follow request pending approval"
 msgstr "Jarraipena onarpenaren zain"
 
-#: front/src/components/mixins/Translations.vue:64
-#: front/src/views/admin/library/LibraryDetail.vue:161
+#: front/src/components/manage/library/LibrariesTable.vue:53
+#: front/src/components/mixins/Translations.vue:76
+#: front/src/views/admin/library/LibraryDetail.vue:170
 #: front/src/views/content/libraries/Detail.vue:7
-#: front/src/components/mixins/Translations.vue:65
+#: front/src/components/mixins/Translations.vue:77
 msgctxt "Content/Federation/*/Noun"
 msgid "Followers"
 msgstr "Jarraitzaileak"
 
-#: front/src/components/manage/library/LibrariesTable.vue:53
-msgctxt "Content/*/*/Noun"
-msgid "Followers"
-msgstr "Jarraitzaileak"
-
-#: front/src/views/content/remote/Card.vue:103
+#: front/src/views/content/remote/Card.vue:116
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Following"
 msgstr "Jarraitzen"
 
-#: front/src/components/mixins/Translations.vue:84
-#: front/src/components/mixins/Translations.vue:85
+#: front/src/components/mixins/Translations.vue:96
+#: front/src/components/mixins/Translations.vue:97
 #, fuzzy
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Follows"
 msgstr "Jarraitu"
 
-#: front/src/components/library/TrackBase.vue:17
+#: front/src/components/library/TrackBase.vue:245
 msgctxt "Content/Track/Paragraph"
-msgid ""
-"From album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> by <a"
-" class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgid "From album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
 msgstr ""
 
 #: front/src/components/auth/Authorize.vue:28
@@ -2024,38 +2218,21 @@ msgstr "Sarbidea ezgaitu"
 
 #: front/src/components/auth/SubsonicTokenForm.vue:7
 msgctxt "Content/Settings/Paragraph'"
-msgid ""
-"Funkwhale is compatible with other music players that support the Subsonic "
-"API."
-msgstr ""
-"Funkwhale Subsonic APIa darabilten beste musika erreproduzitzaileekin "
-"bateragarria da."
-
-#: front/src/components/Home.vue:90
-msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale is dead simple to use."
-msgstr "Funkwhale erabiltzeko izugarri erraza da."
-
-#: front/src/components/Home.vue:39
-msgctxt "Content/Home/Paragraph"
-msgid ""
-"Funkwhale is designed to make it easy to listen to music you like, or to "
-"discover new artists."
-msgstr ""
-"Funkwhale gustuko duzun musika erraz entzun edo artista berriak aurkitzeko "
-"diseinatuta dago."
+msgid "Funkwhale is compatible with other music players that support the Subsonic API."
+msgstr "Funkwhale Subsonic APIa darabilten beste musika erreproduzitzaileekin bateragarria da."
 
-#: front/src/components/Home.vue:111
+#: front/src/components/Home.vue:88
+#, fuzzy
 msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale is free and gives you control on your music."
+msgid "Funkwhale is free and developped by a friendly community of volunteers."
 msgstr "Funkwhale doakoa da eta zure musikaren gaineko kontrola ematen dizu."
 
-#: front/src/components/Home.vue:66
-msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale takes care of handling your music"
-msgstr "Funkwhalek zure musika kudeatzeko ardura hartzen du"
+#: front/src/components/About.vue:78
+msgctxt "*/*/*"
+msgid "Funkwhale version"
+msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:38
+#: front/src/components/ShortcutsModal.vue:56
 msgctxt "Popup/Keyboard shortcuts/Title"
 msgid "General shortcuts"
 msgstr ""
@@ -2065,37 +2242,18 @@ msgctxt "Content/Admin/Button.Label/Verb"
 msgid "Get a new invitation"
 msgstr "Lortu gonbidapen berria"
 
-#: front/src/components/Home.vue:13
-msgctxt "Content/Home/Button.Label/Verb"
-msgid "Get me to the library"
-msgstr "Eraman liburutegira"
-
-#: front/src/components/Home.vue:70
-msgctxt "Content/Home/List item/Verb"
-msgid ""
-"Get quality metadata about your music thanks to <a href=\"%{ url }\" "
-"target=\"_blank\">MusicBrainz</a>"
-msgstr ""
-"Lortu zure musikari buruzko kalitatezko metadatuak <a href=\"%{ url }\" "
-"target=\"_blank\">MusicBrainz</a> plataformari esker"
-
 #: front/src/views/content/Home.vue:12 src/views/content/Home.vue:19
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Get started"
 msgstr "Hasi"
 
-#: front/src/components/Footer.vue:37
+#: front/src/components/Footer.vue:45
+#: src/components/library/ImportStatusModal.vue:45
 #, fuzzy
 msgctxt "Footer/*/Link"
 msgid "Getting help"
 msgstr "Ezarpenak"
 
-#: front/src/components/library/ImportStatusModal.vue:45
-#, fuzzy
-msgctxt "Popup/Import/Table.Label/Noun"
-msgid "Getting help"
-msgstr "Ezarpenak"
-
 #: front/src/components/common/ActionTable.vue:35
 #: front/src/components/common/ActionTable.vue:56
 msgctxt "Content/*/Button.Label/Short, Verb"
@@ -2107,12 +2265,22 @@ msgctxt "Content/*/Button.Label/Verb"
 msgid "Go to home page"
 msgstr "Joan hasiera orrira"
 
+#: front/src/views/Notifications.vue:27 src/views/Notifications.vue:61
+msgctxt "Content/Notifications/Button.Label"
+msgid "Got it!"
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:128
 #, fuzzy
 msgctxt "Content/Settings/Title"
 msgid "Hidden artists"
 msgstr "Bilatu artistak"
 
+#: front/src/components/About.vue:155
+msgctxt "*/*/*/Verb"
+msgid "Hide"
+msgstr ""
+
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:114
 msgctxt "Content/Moderation/Help text"
 msgid "Hide account or domain content, except from followers."
@@ -2124,12 +2292,12 @@ msgctxt "Popup/*/Button.Label"
 msgid "Hide content"
 msgstr "Edukia sartu"
 
-#: front/src/components/audio/PlayButton.vue:26
+#: front/src/components/audio/PlayButton.vue:31
 msgctxt "*/Queue/Dropdown/Button/Label/Short"
 msgid "Hide content from this artist"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:643
+#: front/src/components/audio/Player.vue:669
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Hide content from this artist…"
 msgstr ""
@@ -2139,38 +2307,29 @@ msgctxt "Head/Home/Title"
 msgid "Home"
 msgstr ""
 
-#: front/src/components/instance/Stats.vue:36
-msgctxt "Content/About/Paragraph/Unit"
-msgid "Hours of music"
-msgstr "Ordutako musika"
-
 #: front/src/components/auth/SubsonicTokenForm.vue:10
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"However, accessing Funkwhale from those clients require a separate password "
-"you can set below."
-msgstr ""
-"Hala ere, beste bezero batzuetatik Funkwhalera sarbidea lortzeko behean ezar"
-" dezakezun aparteko pasahitz bat behar duzu."
+msgid "However, accessing Funkwhale from those clients require a separate password you can set below."
+msgstr "Hala ere, beste bezero batzuetatik Funkwhalera sarbidea lortzeko behean ezar dezakezun aparteko pasahitz bat behar duzu."
 
 #: front/src/views/auth/PasswordResetConfirm.vue:24
+#, fuzzy
 msgctxt "Content/Signup/Paragraph"
-msgid ""
-"If the email address provided in the previous step is valid and binded to a "
-"user account, you should receive an email with reset instructions in the "
-"next couple of minutes."
-msgstr ""
-"Aurreko pausoan emandako emaila zuzena bada eta erabiltzaile kontu bati "
-"lotua, datozen minutuetan email bat jaso beharko zenuke pasahitza "
-"berrezartzeko pausoekin."
+msgid "If the email address provided in the previous step is valid and linked to a user account, you should receive an email with reset instructions in the next couple of minutes."
+msgstr "Aurreko pausoan emandako emaila zuzena bada eta erabiltzaile kontu bati lotua, datozen minutuetan email bat jaso beharko zenuke pasahitza berrezartzeko pausoekin."
 
 #: front/src/components/auth/Settings.vue:205
 msgctxt "Content/Applications/Paragraph"
-msgid ""
-"If you authorize third-party applications to access your data, those "
-"applications will be listed here."
+msgid "If you authorize third-party applications to access your data, those applications will be listed here."
 msgstr ""
 
+#: front/src/components/mixins/Translations.vue:46
+#: front/src/components/mixins/Translations.vue:47
+#, fuzzy
+msgctxt "Content/Moderation/Dropdown"
+msgid "Illegal content"
+msgstr "Edukia sartu"
+
 #: front/src/components/library/ImportStatusModal.vue:3
 #, fuzzy
 msgctxt "Popup/Import/Title"
@@ -2183,14 +2342,10 @@ msgid "Import reference"
 msgstr "Inportazio erreferentzia"
 
 #: front/src/components/manage/library/UploadsTable.vue:20
-#: front/src/views/content/libraries/FilesTable.vue:11
-#: front/src/views/content/libraries/FilesTable.vue:59
-msgctxt "Content/Library/*/Noun"
-msgid "Import status"
-msgstr "Inportazio egoera"
-
 #: front/src/components/manage/library/UploadsTable.vue:64
 #: front/src/views/admin/library/UploadDetail.vue:131
+#: front/src/views/content/libraries/FilesTable.vue:11
+#: front/src/views/content/libraries/FilesTable.vue:59
 msgctxt "Content/*/*/Noun"
 msgid "Import status"
 msgstr "Inportazio egoera"
@@ -2233,12 +2388,12 @@ msgctxt "Popup/Moderation/List item"
 msgid "In radio suggestions"
 msgstr ""
 
-#: front/src/components/manage/users/UsersTable.vue:54
+#: front/src/components/manage/users/UsersTable.vue:55
 msgctxt "Content/Admin/Table"
 msgid "Inactive"
 msgstr "Ez gaituta"
 
-#: front/src/components/ShortcutsModal.vue:71
+#: front/src/components/ShortcutsModal.vue:124
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Increase volume"
 msgstr ""
@@ -2258,7 +2413,7 @@ msgctxt "Content/Settings/Dropdown/Short"
 msgid "Instance"
 msgstr "Instantziako irratiak"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:71
+#: front/src/views/admin/moderation/DomainsDetail.vue:99
 #, fuzzy
 msgctxt "Content/Moderation/Title"
 msgid "Instance data"
@@ -2287,19 +2442,25 @@ msgctxt "Popup/Instance/Input.Label/Noun"
 msgid "Instance URL"
 msgstr "Instantziako irratiak"
 
+#: front/src/components/manage/moderation/ReportCard.vue:92
+#: front/src/components/manage/moderation/ReportCard.vue:203
+msgctxt "Content/*/*/Noun"
+msgid "Internal notes"
+msgstr ""
+
 #: front/src/components/library/FileUpload.vue:268
 msgctxt "Content/Library/Help text"
-msgid ""
-"Invalid file type, ensure you are uploading an audio file. Supported file "
-"extensions are %{ extensions }"
+msgid "Invalid file type, ensure you are uploading an audio file. Supported file extensions are %{ extensions }"
 msgstr ""
 
 #: front/src/components/library/ImportStatusModal.vue:139
+#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:46
 msgctxt "Popup/Import/Error.Label"
 msgid "Invalid metadata"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:44
+#: front/src/components/auth/SignupForm.vue:40
 #: front/src/components/manage/users/InvitationForm.vue:11
 msgctxt "Content/*/Input.Label"
 msgid "Invitation code"
@@ -2311,7 +2472,13 @@ msgctxt "*/Admin/*/Noun"
 msgid "Invitations"
 msgstr "Gonbidapenak"
 
-#: front/src/components/Footer.vue:41
+#: front/src/components/manage/moderation/DomainsTable.vue:9
+#: front/src/views/admin/moderation/DomainsDetail.vue:106
+msgctxt "Content/Moderation/*/Adjective"
+msgid "Is present on allow-list"
+msgstr ""
+
+#: front/src/components/Footer.vue:49
 msgctxt "Footer/*/List item.Link"
 msgid "Issue tracker"
 msgstr "Arazoen jarraipena"
@@ -2321,17 +2488,18 @@ msgctxt "Popup/Instance/Error message.Title"
 msgid "It is not possible to connect to the given URL"
 msgstr ""
 
-#: front/src/components/Home.vue:50
-msgctxt "Content/Home/List item/Verb"
-msgid "Keep a track of your favorite songs"
-msgstr "Izan zure gogoko abestien jarraipena"
+#: front/src/components/mixins/Translations.vue:65
+#: front/src/components/mixins/Translations.vue:66
+msgctxt "*/*/*/Noun"
+msgid "Items"
+msgstr ""
 
 #: front/src/components/Footer.vue:33 src/components/ShortcutsModal.vue:3
 msgctxt "*/*/*/Noun"
 msgid "Keyboard shortcuts"
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:161
+#: front/src/views/admin/moderation/DomainsDetail.vue:198
 #, fuzzy
 msgctxt "Content/Moderation/Table.Label.Link"
 msgid "Known accounts"
@@ -2343,15 +2511,15 @@ msgid "Known libraries"
 msgstr "Liburutegi ezagunak"
 
 #: front/src/components/manage/users/UsersTable.vue:41
-#: front/src/components/mixins/Translations.vue:58
-#: front/src/views/admin/moderation/AccountsDetail.vue:205
-#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:70
+#: front/src/views/admin/moderation/AccountsDetail.vue:206
+#: front/src/components/mixins/Translations.vue:71
 msgctxt "Content/Profile/Table.Label/Short, Noun (Value is a date)"
 msgid "Last activity"
 msgstr "Azken jarduera"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:188
-#: front/src/views/admin/moderation/DomainsDetail.vue:78
+#: front/src/views/admin/moderation/AccountsDetail.vue:189
+#: front/src/views/admin/moderation/DomainsDetail.vue:115
 msgctxt "Content/*/Table.Label"
 msgid "Last checked"
 msgstr ""
@@ -2366,14 +2534,14 @@ msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Last seen"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:47
-#: front/src/components/mixins/Translations.vue:48
+#: front/src/components/mixins/Translations.vue:57
+#: front/src/components/mixins/Translations.vue:58
 #, fuzzy
 msgctxt "Content/Moderation/Dropdown/Noun"
 msgid "Last seen date"
 msgstr "Azken eguneraketa:"
 
-#: front/src/views/content/remote/Card.vue:60
+#: front/src/views/content/remote/Card.vue:73
 msgctxt "Content/Library/Card.List item/Noun"
 msgid "Last update:"
 msgstr "Azken eguneraketa:"
@@ -2383,39 +2551,41 @@ msgctxt "Modal/*/Button.Label/Short, Verb"
 msgid "Launch"
 msgstr "Abiarazi"
 
-#: front/src/components/Home.vue:10
-msgctxt "Content/Home/Button.Label/Verb"
-msgid "Learn more about this instance"
-msgstr "Ikasi gehiago instantzia honi buruz"
+#: front/src/components/Home.vue:35
+msgctxt "Content/Home/Link"
+msgid "Learn more"
+msgstr ""
 
 #: front/src/components/manage/users/InvitationForm.vue:58
 msgctxt "Content/Admin/Input.Placeholder"
 msgid "Leave empty for a random code"
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:7
+#: front/src/components/audio/EmbedWizard.vue:17
 msgctxt "Popup/Embed/Paragraph"
 msgid "Leave empty for a responsive widget"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:232
-#: front/src/views/admin/library/ArtistDetail.vue:221
-#: front/src/views/admin/library/TrackDetail.vue:284
-#: front/src/views/admin/moderation/AccountsDetail.vue:327
-#: front/src/views/admin/moderation/DomainsDetail.vue:234
-#: front/src/views/content/Base.vue:5
+#: front/src/components/mixins/Translations.vue:64
+#: front/src/components/mixins/Translations.vue:65
 msgctxt "*/*/*/Noun"
-msgid "Libraries"
-msgstr "Liburutegiak"
+msgid "Length"
+msgstr ""
 
+#: front/src/views/admin/library/AlbumDetail.vue:248
+#: front/src/views/admin/library/ArtistDetail.vue:236
 #: front/src/views/admin/library/Base.vue:17
 #: front/src/views/admin/library/LibrariesList.vue:24
-msgctxt "*/*/*"
+#: front/src/views/admin/library/TrackDetail.vue:300
+#: front/src/views/admin/moderation/AccountsDetail.vue:339
+#: front/src/views/admin/moderation/DomainsDetail.vue:271
+#: front/src/views/content/Base.vue:5
+msgctxt "*/*/*/Noun"
 msgid "Libraries"
 msgstr "Liburutegiak"
 
-#: front/src/components/mixins/Translations.vue:72
-#: front/src/components/mixins/Translations.vue:73
+#: front/src/components/mixins/Translations.vue:84
+#: front/src/components/mixins/Translations.vue:85
 #, fuzzy
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Libraries and uploads"
@@ -2423,21 +2593,18 @@ msgstr "Liburutegiak"
 
 #: front/src/views/content/libraries/Form.vue:2
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Libraries help you organize and share your music collections. You can upload"
-" your own music collection to Funkwhale and share it with your friends and "
-"family."
-msgstr ""
-"Liburutegiak zure musika bildumak antolatzen eta partekatzen laguntze "
-"dizute. Zure musika bilduma igo dezakezu Funkwhalera eta zure familia eta "
-"lagunekin partekatu."
+msgid "Libraries help you organize and share your music collections. You can upload your own music collection to Funkwhale and share it with your friends and family."
+msgstr "Liburutegiak zure musika bildumak antolatzen eta partekatzen laguntze dizute. Zure musika bilduma igo dezakezu Funkwhalera eta zure familia eta lagunekin partekatu."
 
-#: front/src/components/Sidebar.vue:85 src/components/instance/Stats.vue:30
+#: front/src/components/Sidebar.vue:85
 #: front/src/components/manage/library/UploadsTable.vue:60
-#: front/src/components/manage/users/UsersTable.vue:173
+#: front/src/components/manage/users/UsersTable.vue:174
+#: front/src/components/mixins/Report.vue:77
 #: front/src/views/admin/library/UploadDetail.vue:144
-#: front/src/views/admin/moderation/AccountsDetail.vue:498
-msgctxt "*/*/*"
+#: front/src/views/admin/moderation/AccountsDetail.vue:518 src/entities.js:132
+#: front/src/components/mixins/Report.vue:78
+#, fuzzy
+msgctxt "*/*/*/Noun"
 msgid "Library"
 msgstr "Liburutegia"
 
@@ -2473,21 +2640,37 @@ msgstr "Azken eguneraketa:"
 
 #: front/src/components/library/TrackDetail.vue:19
 #: front/src/components/manage/library/TracksTable.vue:43
-#: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:61
+#: front/src/views/admin/library/TrackDetail.vue:165 src/edits.js:84
+#: front/src/entities.js:115
 msgctxt "Content/*/*/Noun"
 msgid "License"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:157
-#: front/src/views/admin/library/ArtistDetail.vue:146
-#: front/src/views/admin/library/TrackDetail.vue:209
-msgctxt "*/*/*/Noun"
-msgid "Listenings"
+#: front/src/components/Footer.vue:90
+msgctxt "Footer/Settings/Dropdown.Label/Theme name"
+msgid "Light"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:80
-#: front/src/components/mixins/Translations.vue:81
-msgctxt "Content/OAuth Scopes/Label"
+#: front/src/views/admin/library/AlbumDetail.vue:188
+#: front/src/views/admin/library/ArtistDetail.vue:176
+#: front/src/views/admin/library/LibraryDetail.vue:179
+#: front/src/views/admin/library/TrackDetail.vue:240
+#: front/src/views/admin/moderation/AccountsDetail.vue:269
+msgctxt "Content/Moderation/Table.Label/Noun"
+msgid "Linked reports"
+msgstr ""
+
+#: front/src/components/Home.vue:135
+msgctxt "Content/Home/Link"
+msgid "Listen to public albums and playlists shared on this pod"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:92
+#: front/src/views/admin/library/AlbumDetail.vue:163
+#: front/src/views/admin/library/ArtistDetail.vue:151
+#: front/src/views/admin/library/TrackDetail.vue:215
+#: front/src/components/mixins/Translations.vue:93
+msgctxt "*/*/*/Noun"
 msgid "Listenings"
 msgstr ""
 
@@ -2501,50 +2684,51 @@ msgstr ""
 #, fuzzy
 msgctxt "Content/Library/Paragraph"
 msgid "Loading followers…"
-msgstr "Jarraitzaileak kargatzen..."
+msgstr "Jarraitzaileak kargatzen…"
 
 #: front/src/views/content/libraries/Home.vue:3
 #, fuzzy
 msgctxt "Content/Library/Paragraph"
 msgid "Loading Libraries…"
-msgstr "Liburutegiak kargatzen..."
+msgstr "Liburutegiak kargatzen…"
 
 #: front/src/views/content/libraries/Detail.vue:3
 #: front/src/views/content/libraries/Upload.vue:3
 #, fuzzy
 msgctxt "Content/Library/Paragraph"
 msgid "Loading library data…"
-msgstr "Liburutegi datuak kargatzen..."
+msgstr "Liburutegi datuak kargatzen…"
 
-#: front/src/views/Notifications.vue:19
+#: front/src/views/Notifications.vue:84
 #, fuzzy
 msgctxt "Content/Notifications/Paragraph"
 msgid "Loading notifications…"
-msgstr "Jakinarazpenak kargatzen..."
+msgstr "Jakinarazpenak kargatzen…"
 
 #: front/src/views/content/remote/Home.vue:3
 #, fuzzy
 msgctxt "Content/Library/Paragraph"
 msgid "Loading remote libraries…"
-msgstr "Urruneko liburutegiak kargatzen..."
+msgstr "Urruneko liburutegiak kargatzen…"
 
 #: front/src/views/content/libraries/Quota.vue:4
 #, fuzzy
 msgctxt "Content/Library/Paragraph"
 msgid "Loading usage data…"
-msgstr "Erabilpen datuak kargatzen..."
+msgstr "Erabilpen datuak kargatzen…"
 
 #: front/src/components/favorites/List.vue:5
 #, fuzzy
 msgctxt "Content/Favorites/Message"
 msgid "Loading your favorites…"
-msgstr "Zure gogokoak kargatzen..."
+msgstr "Zure gogokoak kargatzen…"
 
 #: front/src/components/manage/library/AlbumsTable.vue:65
 #: front/src/components/manage/library/ArtistsTable.vue:58
 #: front/src/components/manage/library/LibrariesTable.vue:75
 #: front/src/components/manage/library/TracksTable.vue:71
 #: front/src/components/manage/library/UploadsTable.vue:99
+#: front/src/components/manage/moderation/ReportCard.vue:173
 #: front/src/views/admin/library/AlbumDetail.vue:19
 #: front/src/views/admin/library/ArtistDetail.vue:18
 #: front/src/views/admin/library/LibraryDetail.vue:18
@@ -2561,12 +2745,12 @@ msgctxt "Content/Moderation/*/Short, Noun"
 msgid "Local account"
 msgstr "Nire kontua"
 
-#: front/src/components/auth/Login.vue:84
+#: front/src/components/Home.vue:96 src/views/auth/Login.vue:29
 msgctxt "Head/Login/Title"
 msgid "Log In"
 msgstr ""
 
-#: front/src/components/auth/Login.vue:4
+#: front/src/views/auth/Login.vue:4
 msgctxt "Content/Login/Title/Verb"
 msgid "Log in to your Funkwhale account"
 msgstr "Sartu zure Funkwhale kontura"
@@ -2581,7 +2765,7 @@ msgctxt "Sidebar/Profile/List item.Link"
 msgid "Logged in as %{ username }"
 msgstr "%{ username } moduan sartuta"
 
-#: front/src/components/Sidebar.vue:54 src/components/auth/Login.vue:42
+#: front/src/components/Sidebar.vue:54 src/components/auth/LoginForm.vue:41
 msgctxt "*/Login/*/Verb"
 msgid "Login"
 msgstr "Sartu"
@@ -2603,35 +2787,40 @@ msgctxt "Content/Library/Paragraph"
 msgid "Looks like you don't have a library, it's time to create one."
 msgstr "Badirudi ez duzula liburutegirik oraindik, bada bat sortzeko ordua!"
 
-#: front/src/components/audio/Player.vue:632
-#: src/components/audio/Player.vue:633
+#: front/src/components/audio/Player.vue:658
+#: src/components/audio/Player.vue:659
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping disabled. Click to switch to single-track looping."
 msgstr ""
 
-#: front/src/components/audio/Player.vue:635
-#: src/components/audio/Player.vue:636
+#: front/src/components/audio/Player.vue:661
+#: src/components/audio/Player.vue:662
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping on a single track. Click to switch to whole queue looping."
 msgstr ""
 
-#: front/src/components/audio/Player.vue:638
-#: src/components/audio/Player.vue:639
+#: front/src/components/audio/Player.vue:664
+#: src/components/audio/Player.vue:665
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping on whole queue. Click to disable looping."
 msgstr ""
 
-#: front/src/components/Sidebar.vue:223
+#: front/src/components/Sidebar.vue:230
 msgctxt "Sidebar/*/Hidden text"
 msgid "Main menu"
 msgstr ""
 
-#: front/src/views/admin/library/Base.vue:31
+#: front/src/views/admin/library/Base.vue:34
 #, fuzzy
 msgctxt "Head/Admin/Title"
 msgid "Manage library"
 msgstr "Garbitu liburutegia"
 
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:8
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Manage moderation rules for %{ obj }"
+msgstr ""
+
 #: front/src/components/playlists/PlaylistModal.vue:3
 msgctxt "Popup/Playlist/Title/Verb"
 msgid "Manage playlists"
@@ -2648,7 +2837,7 @@ msgctxt "Content/Playlist/Button.Label/Verb"
 msgid "Manage your playlists"
 msgstr "Kudeatu zure zerrendak"
 
-#: front/src/views/Notifications.vue:14
+#: front/src/views/Notifications.vue:79
 msgctxt "Content/Notifications/Button.Label/Verb"
 msgid "Mark all as read"
 msgstr "Markatu dena irakurrita"
@@ -2665,12 +2854,12 @@ msgctxt "Content/Notifications/Button.Tooltip/Verb"
 msgid "Mark as unread"
 msgstr "Markatu dena irakurrita"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:310
+#: front/src/views/admin/moderation/AccountsDetail.vue:321
 msgctxt "Content/*/*/Unit"
 msgid "MB"
 msgstr "MB"
 
-#: front/src/components/audio/Player.vue:625
+#: front/src/components/audio/Player.vue:651
 msgctxt "Sidebar/Player/Hidden text"
 msgid "Media player"
 msgstr ""
@@ -2681,44 +2870,61 @@ msgctxt "Content/Profile/Paragraph"
 msgid "Member since %{ date }"
 msgstr "%{ date }-(e)tik erregistratuta"
 
+#: front/src/components/manage/moderation/ReportCard.vue:109
+#: front/src/components/moderation/ReportModal.vue:41
+msgctxt "*/*/Field.Label/Noun"
+msgid "Message"
+msgstr ""
+
 #: front/src/components/Footer.vue:32
 msgctxt "Footer/*/List item.Link"
 msgid "Mobile and desktop apps"
 msgstr ""
 
+#: front/src/components/Home.vue:143
+msgctxt "Content/Home/Link"
+msgid "Mobile apps"
+msgstr ""
+
 #: front/src/components/Sidebar.vue:96
-#: src/components/manage/users/UsersTable.vue:177
-#: front/src/views/admin/moderation/AccountsDetail.vue:502
-#: front/src/views/admin/moderation/Base.vue:21
+#: src/components/manage/users/UsersTable.vue:178
+#: front/src/views/admin/Settings.vue:85
+#: front/src/views/admin/moderation/AccountsDetail.vue:522
+#: front/src/views/admin/moderation/Base.vue:43
 #, fuzzy
 msgctxt "*/Moderation/*"
 msgid "Moderation"
 msgstr "Iraupena"
 
 #: front/src/views/admin/moderation/AccountsDetail.vue:78
-#: front/src/views/admin/moderation/DomainsDetail.vue:42
+#: front/src/views/admin/moderation/DomainsDetail.vue:70
 msgctxt "Content/Moderation/Card.Paragraph"
-msgid ""
-"Moderation policies help you control how your instance interact with a given"
-" domain or account."
+msgid "Moderation policies help you control how your instance interact with a given domain or account."
 msgstr ""
 
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:4
+#, fuzzy
+msgctxt "Content/Moderation/Button.Label"
+msgid "Moderation rules…"
+msgstr "Iraupena"
+
 #: front/src/components/library/EditCard.vue:5
 #, fuzzy
 msgctxt "Content/Library/Card/Short"
 msgid "Modification %{ id }"
 msgstr "Jakinarazpenak"
 
-#: front/src/components/mixins/Translations.vue:48
-#: front/src/components/mixins/Translations.vue:49
+#: front/src/components/mixins/Translations.vue:58
+#: front/src/components/mixins/Translations.vue:59
 #, fuzzy
 msgctxt "Content/Playlist/Dropdown/Noun"
 msgid "Modification date"
 msgstr "Iraungitze data"
 
-#: front/src/components/library/AlbumBase.vue:42
-#: front/src/components/library/ArtistBase.vue:53
-#: front/src/components/library/TrackBase.vue:61
+#: front/src/components/audio/PlayButton.vue:100
+#: front/src/components/library/AlbumBase.vue:43
+#: front/src/components/library/ArtistBase.vue:54
+#: front/src/components/library/TrackBase.vue:59
 msgctxt "*/*/Button.Label/Noun"
 msgid "More…"
 msgstr ""
@@ -2728,7 +2934,7 @@ msgctxt "*/*/*/Noun"
 msgid "Music"
 msgstr "Musika"
 
-#: front/src/components/audio/Player.vue:631
+#: front/src/components/audio/Player.vue:657
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Mute"
 msgstr ""
@@ -2780,8 +2986,8 @@ msgctxt "Content/Library/Title"
 msgid "My libraries"
 msgstr "Nire liburutegiak"
 
-#: front/src/components/audio/track/Row.vue:40
-#: src/components/library/EditCard.vue:60
+#: front/src/components/About.vue:105 src/components/audio/track/Row.vue:40
+#: front/src/components/library/EditCard.vue:60
 #: front/src/components/library/EditForm.vue:70
 #: front/src/components/library/TrackDetail.vue:34
 #: front/src/components/library/TrackDetail.vue:43
@@ -2791,54 +2997,56 @@ msgstr "Nire liburutegiak"
 #: front/src/components/manage/library/TracksTable.vue:76
 #: front/src/components/manage/library/UploadsTable.vue:121
 #: front/src/components/manage/library/UploadsTable.vue:128
-#: front/src/components/manage/users/UsersTable.vue:61
+#: front/src/components/manage/moderation/ReportCard.vue:78
+#: front/src/components/manage/moderation/ReportCard.vue:87
+#: front/src/components/manage/moderation/ReportCard.vue:193
+#: front/src/components/manage/users/UsersTable.vue:62
 #: front/src/views/admin/library/UploadDetail.vue:179
 #: front/src/views/admin/library/UploadDetail.vue:214
 #: front/src/views/admin/library/UploadDetail.vue:233
 #: front/src/views/admin/library/UploadDetail.vue:244
 #: front/src/views/admin/library/UploadDetail.vue:257
-#: front/src/views/admin/moderation/AccountsDetail.vue:192
-#: front/src/views/admin/moderation/DomainsDetail.vue:82
+#: front/src/views/admin/moderation/AccountsDetail.vue:193
+#: front/src/views/admin/moderation/DomainsDetail.vue:119
 #: front/src/views/content/libraries/FilesTable.vue:95
 #: front/src/views/content/libraries/FilesTable.vue:101
 msgctxt "*/*/*"
 msgid "N/A"
 msgstr "Daturik gabe"
 
+#: front/src/components/auth/ApplicationForm.vue:9
+#: front/src/components/auth/Settings.vue:133
+#: front/src/components/manage/library/ArtistsTable.vue:39
 #: front/src/components/manage/library/LibrariesTable.vue:48
+#: front/src/components/manage/library/TagsTable.vue:41
 #: front/src/components/manage/library/UploadsTable.vue:59
-msgctxt "*/*/*"
-msgid "Name"
-msgstr "Izena"
-
-#: front/src/components/auth/ApplicationForm.vue:9
-msgctxt "Content/Applications/Input.Label/Noun"
-msgid "Name"
-msgstr "Izena"
-
-#: front/src/components/auth/Settings.vue:133
-#: front/src/components/manage/library/ArtistsTable.vue:39
 #: front/src/components/manage/moderation/AccountsTable.vue:39
-#: front/src/components/manage/moderation/DomainsTable.vue:38
-#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/manage/moderation/DomainsTable.vue:46
+#: front/src/components/mixins/Translations.vue:63
 #: front/src/components/playlists/PlaylistModal.vue:45
-#: front/src/views/admin/library/ArtistDetail.vue:98
+#: front/src/views/admin/library/ArtistDetail.vue:103
 #: front/src/views/admin/library/LibraryDetail.vue:85
+#: front/src/views/admin/library/TagDetail.vue:68
 #: front/src/views/admin/library/UploadDetail.vue:92
-#: front/src/views/admin/moderation/DomainsDetail.vue:97
-#: front/src/views/content/libraries/Form.vue:10 src/edits.js:10
-#: front/src/components/mixins/Translations.vue:54
+#: front/src/views/admin/moderation/DomainsDetail.vue:134
+#: front/src/views/content/libraries/Form.vue:10 src/edits.js:17
+#: front/src/components/mixins/Translations.vue:64
 msgctxt "*/*/*/Noun"
 msgid "Name"
 msgstr "Izena"
 
+#: front/src/views/Notifications.vue:24 src/views/Notifications.vue:58
+msgctxt "*/*/*"
+msgid "Never"
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:88
 #: front/src/views/auth/PasswordResetConfirm.vue:14
 msgctxt "Content/Settings/Input.Label"
 msgid "New password"
 msgstr "Pasahitz berria"
 
-#: front/src/components/Sidebar.vue:173
+#: front/src/components/Sidebar.vue:177
 msgctxt "Sidebar/Player/Paragraph"
 msgid "New tracks will be appended here automatically."
 msgstr "Abesti berriak hemen gehituko dira automatikoki."
@@ -2848,22 +3056,19 @@ msgctxt "Content/Library/Card.Table.Header/Short"
 msgid "New value"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:629
+#: front/src/components/audio/Player.vue:655
 #, fuzzy
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Next track"
 msgstr "Oraingo abestia"
 
-#: front/src/components/Sidebar.vue:130
+#: front/src/components/Sidebar.vue:134
+#: front/src/components/manage/moderation/DomainsTable.vue:13
+#: front/src/views/admin/moderation/DomainsDetail.vue:110
 msgctxt "*/*/*"
 msgid "No"
 msgstr "Ez"
 
-#: front/src/components/Home.vue:95
-msgctxt "Content/Home/List item"
-msgid "No add-ons, no plugins : you only need a web library"
-msgstr ""
-
 #: front/src/components/audio/Search.vue:25
 #, fuzzy
 msgctxt "Content/Search/Paragraph"
@@ -2882,6 +3087,11 @@ msgctxt "Content/Track/Table.Paragraph"
 msgid "No copyright information available for this track"
 msgstr "Ez dago letrarik eskuragarri abesti honentzat."
 
+#: front/src/components/About.vue:25 src/components/Home.vue:25
+msgctxt "Content/Home/Paragraph"
+msgid "No description available."
+msgstr ""
+
 #: front/src/components/library/TrackDetail.vue:25
 #, fuzzy
 msgctxt "Content/Track/Table.Paragraph"
@@ -2893,7 +3103,7 @@ msgctxt "Content/Federation/Paragraph"
 msgid "No matching library."
 msgstr "Ez da liburutegirik aurkitu."
 
-#: front/src/views/Notifications.vue:28
+#: front/src/views/Notifications.vue:93
 #, fuzzy
 msgctxt "Content/Notifications/Paragraph"
 msgid "No notification to show."
@@ -2904,6 +3114,16 @@ msgctxt "Content/*/Paragraph"
 msgid "No results were found."
 msgstr ""
 
+#: front/src/components/About.vue:32
+msgctxt "Content/Home/Paragraph"
+msgid "No rules available."
+msgstr ""
+
+#: front/src/components/About.vue:39
+msgctxt "Content/Home/Paragraph"
+msgid "No terms available."
+msgstr ""
+
 #: front/src/components/mixins/Translations.vue:10
 #: front/src/components/mixins/Translations.vue:11
 msgctxt "Content/Settings/Dropdown"
@@ -2920,18 +3140,22 @@ msgctxt "Content/Admin/Table"
 msgid "Not used"
 msgstr "Ez da erabiltzen"
 
-#: front/src/components/mixins/Translations.vue:100
-#: front/src/components/mixins/Translations.vue:101
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Notifications"
-msgstr "Jakinarazpenak"
-
-#: front/src/components/Sidebar.vue:46 src/views/Notifications.vue:76
+#: front/src/components/Sidebar.vue:46
+#: src/components/mixins/Translations.vue:112
+#: front/src/views/Notifications.vue:151
+#: src/components/mixins/Translations.vue:113
 msgctxt "*/Notifications/*"
 msgid "Notifications"
 msgstr "Jakinarazpenak"
 
-#: front/src/components/Footer.vue:47
+#: front/src/components/mixins/Translations.vue:47
+#: front/src/components/mixins/Translations.vue:48
+#, fuzzy
+msgctxt "Content/Moderation/Dropdown"
+msgid "Offensive content"
+msgstr "Edukia sartu"
+
+#: front/src/components/Footer.vue:55
 msgctxt "Footer/*/List item.Link"
 msgid "Official website"
 msgstr "Webgune ofiziala"
@@ -2946,6 +3170,12 @@ msgctxt "Content/Library/Card.Table.Header/Short"
 msgid "Old value"
 msgstr ""
 
+#: front/src/components/About.vue:90
+#, fuzzy
+msgctxt "*/*/*/State of registrations"
+msgid "Open"
+msgstr "Ireki"
+
 #: front/src/components/manage/users/InvitationsTable.vue:20
 msgctxt "Content/Admin/Dropdown/Adjective"
 msgid "Open"
@@ -2953,27 +3183,29 @@ msgstr "Ireki"
 
 #: front/src/components/library/ImportStatusModal.vue:56
 msgctxt "Popup/Import/Table.Label/Value"
-msgid ""
-"Open a support thread (include the debug information below in your message)"
+msgid "Open a support thread (include the debug information below in your message)"
 msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:73
-#: front/src/components/library/ArtistBase.vue:84
-#: front/src/components/library/TrackBase.vue:92
+#: front/src/components/library/AlbumBase.vue:87
+#: front/src/components/library/ArtistBase.vue:99
+#: front/src/components/library/TagDetail.vue:11
+#: front/src/components/library/TrackBase.vue:103
+#: front/src/components/manage/moderation/ReportCard.vue:128
 msgctxt "Content/Moderation/Link"
 msgid "Open in moderation interface"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:31
-#: front/src/views/admin/library/ArtistDetail.vue:30
-#: front/src/views/admin/library/TrackDetail.vue:30
+#: front/src/views/admin/library/AlbumDetail.vue:37
+#: front/src/views/admin/library/ArtistDetail.vue:35
+#: front/src/views/admin/library/TagDetail.vue:21
+#: front/src/views/admin/library/TrackDetail.vue:36
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open local profile"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:46
-#: front/src/views/admin/library/ArtistDetail.vue:45
-#: front/src/views/admin/library/TrackDetail.vue:45
+#: front/src/views/admin/library/AlbumDetail.vue:52
+#: front/src/views/admin/library/ArtistDetail.vue:50
+#: front/src/views/admin/library/TrackDetail.vue:51
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open on MusicBrainz"
 msgstr ""
@@ -2983,10 +3215,10 @@ msgctxt "Content/Moderation/Link/Verb"
 msgid "Open profile"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:54
-#: front/src/views/admin/library/ArtistDetail.vue:53
+#: front/src/views/admin/library/AlbumDetail.vue:60
+#: front/src/views/admin/library/ArtistDetail.vue:58
 #: front/src/views/admin/library/LibraryDetail.vue:49
-#: front/src/views/admin/library/TrackDetail.vue:53
+#: front/src/views/admin/library/TrackDetail.vue:59
 #: front/src/views/admin/library/UploadDetail.vue:50
 #: front/src/views/admin/moderation/AccountsDetail.vue:52
 msgctxt "Content/Moderation/Link/Verb"
@@ -3009,6 +3241,7 @@ msgstr "Iragazkiak sortu zure irratia pertsonalizatzeko"
 #: src/components/library/Radios.vue:41
 #: front/src/components/manage/library/EditsCardList.vue:37
 #: front/src/components/manage/users/UsersTable.vue:17
+#: front/src/views/admin/moderation/ReportsList.vue:42
 #: front/src/views/playlists/List.vue:25
 #, fuzzy
 msgctxt "Content/Search/Dropdown.Label/Noun"
@@ -3017,40 +3250,51 @@ msgstr "Ordena"
 
 #: front/src/components/favorites/List.vue:24
 #: src/components/library/Albums.vue:15
-#: front/src/components/library/Artists.vue:15
+#: front/src/components/library/Artists.vue:19
 #: src/components/library/Radios.vue:33
 #: front/src/components/manage/library/AlbumsTable.vue:11
 #: front/src/components/manage/library/ArtistsTable.vue:11
 #: front/src/components/manage/library/EditsCardList.vue:29
 #: front/src/components/manage/library/LibrariesTable.vue:20
+#: front/src/components/manage/library/TagsTable.vue:11
 #: front/src/components/manage/library/TracksTable.vue:11
 #: front/src/components/manage/library/UploadsTable.vue:30
 #: front/src/components/manage/moderation/AccountsTable.vue:11
-#: front/src/components/manage/moderation/DomainsTable.vue:9
+#: front/src/components/manage/moderation/DomainsTable.vue:17
 #: front/src/components/manage/users/InvitationsTable.vue:9
 #: front/src/components/manage/users/UsersTable.vue:9
+#: front/src/views/admin/moderation/ReportsList.vue:34
 #: front/src/views/content/libraries/FilesTable.vue:21
 #: front/src/views/playlists/List.vue:17
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Ordering"
 msgstr "Ordena"
 
-#: front/src/components/library/Albums.vue:23
-#: src/components/library/Artists.vue:23
+#: front/src/components/library/Albums.vue:27
+#: src/components/library/Artists.vue:27
 #: front/src/components/manage/library/AlbumsTable.vue:19
 #: front/src/components/manage/library/ArtistsTable.vue:19
 #: front/src/components/manage/library/LibrariesTable.vue:28
+#: front/src/components/manage/library/TagsTable.vue:19
 #: front/src/components/manage/library/TracksTable.vue:19
 #: front/src/components/manage/library/UploadsTable.vue:38
 #: front/src/components/manage/moderation/AccountsTable.vue:19
-#: front/src/components/manage/moderation/DomainsTable.vue:17
+#: front/src/components/manage/moderation/DomainsTable.vue:25
 #: front/src/views/content/libraries/FilesTable.vue:29
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Ordering direction"
 msgstr "Ordenazio norabidea"
 
+#: front/src/components/mixins/Translations.vue:48
+#: front/src/components/mixins/Translations.vue:49
+msgctxt "Content/Moderation/Dropdown"
+msgid "Other"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:143
 #: front/src/components/manage/users/InvitationsTable.vue:38
-msgctxt "Content/Admin/Table.Label"
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Owner"
 msgstr "Jabea"
 
@@ -3070,12 +3314,15 @@ msgctxt "Content/*/Hidden text/Noun"
 msgid "Pagination"
 msgstr ""
 
-#: front/src/components/auth/Login.vue:33 src/components/auth/Signup.vue:40
-msgctxt "Content/*/Input.Label"
+#: front/src/components/auth/LoginForm.vue:32
+#: src/components/auth/Settings.vue:291
+#: front/src/components/auth/SignupForm.vue:36
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Password"
 msgstr "Pasahitza"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:94
+#: front/src/components/auth/SubsonicTokenForm.vue:100
 #, fuzzy
 msgctxt "Content/Settings/Message"
 msgid "Password updated"
@@ -3086,13 +3333,13 @@ msgctxt "Content/Signup/Card.Title"
 msgid "Password updated successfully"
 msgstr "Pasahitza arrakastaz eguneratu da"
 
-#: front/src/components/audio/Player.vue:628
+#: front/src/components/audio/Player.vue:654
 #, fuzzy
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Pause track"
 msgstr "Arazoen jarraipena"
 
-#: front/src/components/ShortcutsModal.vue:59
+#: front/src/components/ShortcutsModal.vue:96
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Pause/play the current track"
 msgstr ""
@@ -3121,7 +3368,7 @@ msgctxt "Content/Library/Label"
 msgid "Pending files"
 msgstr "Fitxategiak faltan"
 
-#: front/src/components/Sidebar.vue:225
+#: front/src/components/Sidebar.vue:232
 #, fuzzy
 msgctxt "Sidebar/Notifications/Hidden text"
 msgid "Pending follow requests"
@@ -3134,90 +3381,80 @@ msgctxt "Content/Admin/*/Noun"
 msgid "Pending review"
 msgstr "Fitxategiak faltan"
 
-#: front/src/components/Sidebar.vue:226
+#: front/src/components/Sidebar.vue:233
 #, fuzzy
 msgctxt "Sidebar/Moderation/Hidden text"
 msgid "Pending review edits"
 msgstr "Eskaerak zain"
 
+#: front/src/components/auth/Settings.vue:176
 #: front/src/components/manage/users/UsersTable.vue:42
 #: front/src/views/admin/moderation/AccountsDetail.vue:166
-msgctxt "Content/Admin/Table.Label/Noun"
-msgid "Permissions"
-msgstr "Baimenak"
-
-#: front/src/components/auth/Settings.vue:176
 msgctxt "Content/*/*/Noun"
 msgid "Permissions"
 msgstr "Baimenak"
 
 #: front/src/components/audio/PlayButton.vue:9
-#: front/src/components/library/TrackBase.vue:26
+#: front/src/components/library/TrackBase.vue:24
 msgctxt "*/Queue/Button.Label/Short, Verb"
 msgid "Play"
 msgstr "Erreproduzitu"
 
 #: front/src/components/audio/album/Card.vue:48
-#: front/src/components/audio/artist/Card.vue:44
-#: front/src/components/library/AlbumBase.vue:20
+#: front/src/components/library/AlbumBase.vue:21
 #: front/src/components/library/AlbumDetail.vue:11
 #: src/views/playlists/Detail.vue:24
 msgctxt "Content/Queue/Button.Label/Short, Verb"
 msgid "Play all"
 msgstr "Erreproduzitu dena"
 
-#: front/src/components/library/ArtistBase.vue:31
+#: front/src/components/library/ArtistBase.vue:32
 msgctxt "Content/Artist/Button.Label/Verb"
 msgid "Play all albums"
 msgstr "Erreproduzitu album denak"
 
-#: front/src/components/audio/PlayButton.vue:76
+#: front/src/components/audio/PlayButton.vue:92
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play next"
 msgstr "Erreproduzitu hurrengoa"
 
-#: front/src/components/ShortcutsModal.vue:67
+#: front/src/components/ShortcutsModal.vue:120
 #, fuzzy
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Play next track"
 msgstr "Erreproduzitu hurrengoa"
 
-#: front/src/components/audio/PlayButton.vue:74
+#: front/src/components/audio/PlayButton.vue:90
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play now"
 msgstr "Erreproduzitu orain"
 
-#: front/src/components/ShortcutsModal.vue:63
+#: front/src/components/ShortcutsModal.vue:116
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Play previous track"
 msgstr ""
 
-#: front/src/components/audio/PlayButton.vue:77
+#: front/src/components/audio/PlayButton.vue:93
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play similar songs"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:224
+#: front/src/components/Sidebar.vue:231
 #, fuzzy
 msgctxt "Sidebar/Player/Hidden text"
 msgid "Play this track"
 msgstr "Zerrenda editorea"
 
-#: front/src/components/audio/Player.vue:627
+#: front/src/components/audio/Player.vue:653
 #, fuzzy
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Play track"
 msgstr "Erreproduzitu dena"
 
-#: front/src/components/audio/PlayButton.vue:82
+#: front/src/components/mixins/Report.vue:66 src/views/playlists/Detail.vue:121
+#: front/src/components/mixins/Report.vue:67
 #, fuzzy
-msgctxt "*/Queue/Button/Title"
-msgid "Play..."
-msgstr "Erreproduzitu"
-
-#: front/src/views/playlists/Detail.vue:91
-#, fuzzy
-msgctxt "Head/Playlist/Title"
+msgctxt "*/*/*"
 msgid "Playlist"
 msgstr "Zerrendak"
 
@@ -3254,33 +3491,30 @@ msgctxt "Content/Playlist/Dropdown.Label"
 msgid "Playlist visibility"
 msgstr "Zerrenda ikuspena"
 
-#: front/src/components/mixins/Translations.vue:88
-#: front/src/components/mixins/Translations.vue:89
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Playlists"
-msgstr "Zerrendak"
-
 #: front/src/components/Sidebar.vue:71 src/components/library/Home.vue:16
-#: front/src/components/library/Library.vue:16 src/views/admin/Settings.vue:83
-#: front/src/views/admin/library/AlbumDetail.vue:173
-#: front/src/views/admin/library/ArtistDetail.vue:162
-#: front/src/views/admin/library/TrackDetail.vue:225
+#: front/src/components/library/Library.vue:16
+#: front/src/components/mixins/Translations.vue:100
+#: src/views/admin/Settings.vue:83
+#: front/src/views/admin/library/AlbumDetail.vue:179
+#: front/src/views/admin/library/ArtistDetail.vue:167
+#: front/src/views/admin/library/TrackDetail.vue:231
 #: src/views/playlists/List.vue:106
+#: front/src/components/mixins/Translations.vue:101
 msgctxt "*/*/*"
 msgid "Playlists"
 msgstr "Zerrendak"
 
-#: front/src/components/Home.vue:56
-msgctxt "Content/Home/List item"
-msgid "Playlists? We got them"
-msgstr "Zerrendak? Guk badauzkagu"
+#: front/src/components/audio/EmbedWizard.vue:9
+msgctxt "Content/Embed/Message"
+msgid "Please contact your admins and ask them to update the corresponding setting."
+msgstr ""
 
 #: front/src/components/auth/Settings.vue:79
 msgctxt "Content/Settings/Error message.List item/Call to action"
 msgid "Please double-check your password is correct"
 msgstr "Mesedez egiaztatu bi aldiz pasahitza zuzena dela"
 
-#: front/src/components/auth/Login.vue:9
+#: front/src/components/auth/LoginForm.vue:5
 msgctxt "Content/Login/Error message.List item/Call to action"
 msgid "Please double-check your username/password couple is correct"
 msgstr "Mesedez egiaztatu erabiltzaile izena eta pasahitza zuzenak direla"
@@ -3290,25 +3524,28 @@ msgctxt "Content/Settings/Paragraph"
 msgid "PNG, GIF or JPG. At most 2MB. Will be downscaled to 400x400px."
 msgstr "PNG, GIF edo JPG. Gehienez 2MB. 400x400px tamainara murriztuko da."
 
-#: front/src/views/admin/library/TrackDetail.vue:137
+#: front/src/components/About.vue:72
+msgctxt "Content/About/Header/Name"
+msgid "Pod configuration"
+msgstr ""
+
+#: front/src/views/admin/library/TrackDetail.vue:143 src/edits.js:70
 #, fuzzy
-msgctxt "*/*/*/Noun"
+msgctxt "*/*/*/Short, Noun"
 msgid "Position"
 msgstr "Deskribapena"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:118
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Prevent account or domain from triggering notifications, except from "
-"followers."
+msgid "Prevent account or domain from triggering notifications, except from followers."
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:33
+#: front/src/components/audio/EmbedWizard.vue:43
 msgctxt "Popup/Embed/Title/Noun"
 msgid "Preview"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:626
+#: front/src/components/audio/Player.vue:652
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Previous track"
 msgstr ""
@@ -3319,7 +3556,7 @@ msgctxt "Content/Settings/Dropdown/Short"
 msgid "Private"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:43
+#: front/src/views/content/remote/Card.vue:56
 #, fuzzy
 msgctxt "Content/Library/Card.List item"
 msgid "Problem during scanning"
@@ -3341,15 +3578,21 @@ msgctxt "Content/Library/Tab.Title/Short"
 msgid "Processing"
 msgstr "Prozesatzen"
 
-#: front/src/components/mixins/Translations.vue:68
-#: front/src/components/mixins/Translations.vue:69
+#: front/src/components/mixins/Translations.vue:80
+#: front/src/components/mixins/Translations.vue:81
 #, fuzzy
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Profile"
 msgstr "Erroredun fitxategiak"
 
+#: front/src/components/auth/SignupForm.vue:5
+#, fuzzy
+msgctxt "Content/Signup/Form/Paragraph"
+msgid "Public registrations are not possible on this instance. You will need an invitation code to sign up."
+msgstr "Erregistratzea itxita dago instantzia honetan. Gonbidapen kode bat beharko duzu izena emateko."
+
 #: front/src/components/manage/moderation/AccountsTable.vue:188
-#: front/src/components/manage/moderation/DomainsTable.vue:168
+#: front/src/components/manage/moderation/DomainsTable.vue:186
 #: front/src/views/content/libraries/Quota.vue:36
 #: front/src/views/content/libraries/Quota.vue:39
 #: front/src/views/content/libraries/Quota.vue:62
@@ -3380,7 +3623,7 @@ msgctxt "Sidebar/Queue/Tab.Title/Noun"
 msgid "Queue"
 msgstr "Ilara"
 
-#: front/src/components/audio/Player.vue:322
+#: front/src/components/audio/Player.vue:329
 msgctxt "Content/Queue/Message"
 msgid "Queue shuffled!"
 msgstr ""
@@ -3414,16 +3657,12 @@ msgstr "Irratia eguneratuta"
 
 #: front/src/components/library/Library.vue:13
 #: src/components/library/Radios.vue:142
+#: front/src/components/mixins/Translations.vue:104
+#: front/src/components/mixins/Translations.vue:105
 msgctxt "*/*/*"
 msgid "Radios"
 msgstr "Irratiak"
 
-#: front/src/components/mixins/Translations.vue:92
-#: front/src/components/mixins/Translations.vue:93
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Radios"
-msgstr "Irratiak"
-
 #: front/src/components/auth/ApplicationForm.vue:151
 msgctxt "Content/OAuth Scopes/Label/Verb"
 msgid "Read"
@@ -3450,15 +3689,15 @@ msgctxt "Content/Moderation/*/Noun"
 msgid "Reason"
 msgstr ""
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:251
-#: front/src/views/admin/moderation/DomainsDetail.vue:179
+#: front/src/views/admin/moderation/AccountsDetail.vue:252
+#: front/src/views/admin/moderation/DomainsDetail.vue:216
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Received library follows"
 msgstr ""
 
-#: front/src/components/manage/moderation/DomainsTable.vue:40
-#: front/src/components/mixins/Translations.vue:62
-#: front/src/components/mixins/Translations.vue:63
+#: front/src/components/manage/moderation/DomainsTable.vue:48
+#: front/src/components/mixins/Translations.vue:74
+#: front/src/components/mixins/Translations.vue:75
 msgctxt "Content/Moderation/*/Noun"
 msgid "Received messages"
 msgstr ""
@@ -3479,6 +3718,12 @@ msgctxt "Content/Home/Title"
 msgid "Recently added"
 msgstr "Azken aldian gehituta"
 
+#: front/src/components/Home.vue:167
+#, fuzzy
+msgctxt "Content/Home/Title"
+msgid "Recently added albums"
+msgstr "Azken aldian gehituta"
+
 #: front/src/components/library/Home.vue:11
 msgctxt "Content/Home/Title"
 msgid "Recently favorited"
@@ -3508,14 +3753,14 @@ msgctxt "Popup/*/Message.Title"
 msgid "Refresh error"
 msgstr "Berriztu"
 
-#: front/src/views/admin/library/AlbumDetail.vue:50
-#: front/src/views/admin/library/ArtistDetail.vue:49
-#: front/src/views/admin/library/TrackDetail.vue:49
+#: front/src/views/admin/library/AlbumDetail.vue:56
+#: front/src/views/admin/library/ArtistDetail.vue:54
+#: front/src/views/admin/library/TrackDetail.vue:55
 msgctxt "Content/Moderation/Button/Verb"
 msgid "Refresh from remote server"
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:127
+#: front/src/views/admin/moderation/DomainsDetail.vue:164
 msgctxt "Content/Moderation/Button.Label/Verb"
 msgid "Refresh node info"
 msgstr ""
@@ -3528,9 +3773,7 @@ msgstr "Beheranzkoa"
 
 #: front/src/components/federation/FetchButton.vue:80
 msgctxt "Popup/*/Message.Content"
-msgid ""
-"Refresh request wasn't proceed in time by our server. It will be processed "
-"later."
+msgid "Refresh request wasn't proceed in time by our server. It will be processed later."
 msgstr ""
 
 #: front/src/components/federation/FetchButton.vue:16
@@ -3554,16 +3797,13 @@ msgctxt "Popup/*/Title"
 msgid "Refreshing object from remote…"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:9
-msgctxt "Content/Signup/Form/Paragraph"
-msgid ""
-"Registration are closed on this instance, you will need an invitation code "
-"to signup."
-msgstr ""
-"Erregistratzea itxita dago instantzia honetan. Gonbidapen kode bat beharko "
-"duzu izena emateko."
+#: front/src/components/About.vue:86
+#, fuzzy
+msgctxt "*/*/*"
+msgid "Registrations"
+msgstr "Administrazioa"
 
-#: front/src/components/manage/users/UsersTable.vue:71
+#: front/src/components/manage/users/UsersTable.vue:72
 #, fuzzy
 msgctxt "Content/Admin/Table, User role"
 msgid "Regular user"
@@ -3590,8 +3830,8 @@ msgid "Rejected"
 msgstr "Baztertuta"
 
 #: front/src/components/manage/library/AlbumsTable.vue:43
-#: front/src/components/mixins/Translations.vue:44 src/edits.js:28
-#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:54 src/edits.js:43
+#: front/src/components/mixins/Translations.vue:55
 msgctxt "Content/*/*/Noun"
 msgid "Release date"
 msgstr ""
@@ -3601,6 +3841,11 @@ msgctxt "Content/Library/Paragraph"
 msgid "Remaining storage space"
 msgstr ""
 
+#: front/src/views/Notifications.vue:18 src/views/Notifications.vue:52
+msgctxt "Content/Notifications/Label"
+msgid "Remind me in:"
+msgstr ""
+
 #: front/src/views/content/remote/Home.vue:6
 msgctxt "Content/Library/Title/Noun"
 msgid "Remote libraries"
@@ -3608,13 +3853,8 @@ msgstr "Urruneko liburutegiak"
 
 #: front/src/views/content/remote/Home.vue:7
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Remote libraries are owned by other users on the network. You can access "
-"them as long as they are public or you are granted access."
-msgstr ""
-"Urruneko liburutegiak interneteko beste erabiltzaile batzuenak dira. "
-"Hauetara sarbidea lor dezakezu hauetara baimena lortzen baduzu edo publikoak"
-" diren bitartean."
+msgid "Remote libraries are owned by other users on the network. You can access them as long as they are public or you are granted access."
+msgstr "Urruneko liburutegiak interneteko beste erabiltzaile batzuenak dira. Hauetara sarbidea lor dezakezu hauetara baimena lortzen baduzu edo publikoak diren bitartean."
 
 #: front/src/components/library/radios/Filter.vue:59
 msgctxt "Content/Radio/Button.Label/Verb"
@@ -3632,6 +3872,13 @@ msgctxt "Content/Moderation/Button.Label"
 msgid "Remove filter"
 msgstr "Ezabatu irudia"
 
+#: front/src/components/manage/moderation/DomainsTable.vue:198
+#: front/src/views/admin/moderation/DomainsDetail.vue:39
+#, fuzzy
+msgctxt "Content/Moderation/Action/Verb"
+msgid "Remove from allow-list"
+msgstr "Gogokoetan sartu"
+
 #: front/src/components/favorites/TrackFavoriteIcon.vue:26
 #, fuzzy
 msgctxt "Content/Track/Icon.Tooltip/Verb"
@@ -3640,37 +3887,104 @@ msgstr "Gogokoetan sartu"
 
 #: front/src/views/content/libraries/Quota.vue:38
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded but yet to be processed tracks completely, adding the "
-"corresponding data to your quota."
+msgid "Removes uploaded but yet to be processed tracks completely, adding the corresponding data to your quota."
 msgstr ""
 
 #: front/src/views/content/libraries/Quota.vue:64
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded tracks skipped during the import processes completely, "
-"adding the corresponding data to your quota."
+msgid "Removes uploaded tracks skipped during the import processes completely, adding the corresponding data to your quota."
 msgstr ""
 
 #: front/src/views/content/libraries/Quota.vue:90
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded tracks that could not be processed by the server "
-"completely, adding the corresponding data to your quota."
+msgid "Removes uploaded tracks that could not be processed by the server completely, adding the corresponding data to your quota."
+msgstr ""
+
+#: front/src/components/audio/PlayButton.vue:94
+#, fuzzy
+msgctxt "*/Queue/Dropdown/Button/Title"
+msgid "Replace current queue"
+msgstr "Ilaran gehitu"
+
+#: front/src/components/mixins/Report.vue:6 src/components/mixins/Report.vue:7
+msgctxt "*/Moderation/*/Verb"
+msgid "Report @%{ username }…"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:5
+msgctxt "Content/Moderation/Card/Short"
+msgid "Report %{ id }"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:139
+msgctxt "*/Moderation/Message"
+msgid "Report successfully submitted, thank you"
+msgstr ""
+
+#: front/src/components/mixins/Report.vue:36
+#: src/components/mixins/Report.vue:37
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this album…"
+msgstr "Liburutegi hau ezabatu?"
+
+#: front/src/components/mixins/Report.vue:50
+#: src/components/mixins/Report.vue:51
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this artist…"
+msgstr "Artista honen albumak"
+
+#: front/src/components/mixins/Report.vue:72
+#: src/components/mixins/Report.vue:73
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this library…"
+msgstr "Liburutegi hau ezabatu?"
+
+#: front/src/components/mixins/Report.vue:61
+#: src/components/mixins/Report.vue:62
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this playlist…"
+msgstr "Zerrendan sartu…"
+
+#: front/src/components/mixins/Report.vue:23
+#: src/components/mixins/Report.vue:24
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this track…"
+msgstr "Editatu instantzia infoa"
+
+#: front/src/components/audio/PlayButton.vue:95
+msgctxt "*/Moderation/*/Button/Label,Verb"
+msgid "Report…"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:117
+msgctxt "Content/*/*/Short"
+msgid "Reported object"
+msgstr ""
+
+#: front/src/views/admin/moderation/Base.vue:5
+#: front/src/views/admin/moderation/ReportsList.vue:3
+#: front/src/views/admin/moderation/ReportsList.vue:208
+msgctxt "*/Moderation/*/Noun"
+msgid "Reports"
 msgstr ""
 
-#: front/src/components/auth/SubsonicTokenForm.vue:33
-#: front/src/components/auth/SubsonicTokenForm.vue:36
+#: front/src/components/auth/SubsonicTokenForm.vue:38
+#: front/src/components/auth/SubsonicTokenForm.vue:41
 msgctxt "*/Settings/Button.Label/Verb"
 msgid "Request a new password"
 msgstr "Eskatu pasahitz berria"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:34
+#: front/src/components/auth/SubsonicTokenForm.vue:39
 msgctxt "Popup/Settings/Title"
 msgid "Request a new Subsonic API password?"
 msgstr "Subsonic API pasahitz berria eskatu?"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:42
+#: front/src/components/auth/SubsonicTokenForm.vue:47
 msgctxt "Content/Settings/Button.Label/Verb"
 msgid "Request a password"
 msgstr "Eskatu pasahitza"
@@ -3680,36 +3994,53 @@ msgctxt "Popup/*/Loading.Title"
 msgid "Requesting a fetch…"
 msgstr ""
 
-#: front/src/components/library/EditForm.vue:82
+#: front/src/components/library/EditForm.vue:94
 msgctxt "Content/Library/Button.Label"
-msgid "Reset to initial value: %{ value }"
+msgid "Reset to initial value"
 msgstr ""
 
-#: front/src/components/auth/Login.vue:35 src/views/auth/PasswordReset.vue:4
-#: front/src/views/auth/PasswordReset.vue:53
+#: front/src/components/auth/LoginForm.vue:34
+#: src/views/auth/PasswordReset.vue:4 front/src/views/auth/PasswordReset.vue:53
 msgctxt "*/Login/*/Verb"
 msgid "Reset your password"
 msgstr "Berrezarri pasahitza"
 
+#: front/src/components/manage/moderation/ReportCard.vue:83
+#, fuzzy
+msgctxt "Content/*/*/Noun"
+msgid "Resolution date"
+msgstr "Sortze data"
+
+#: front/src/components/manage/moderation/ReportCard.vue:218
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Resolve"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:62
+#: front/src/views/admin/moderation/ReportsList.vue:20
+msgctxt "Content/*/*/Short"
+msgid "Resolved"
+msgstr ""
+
 #: front/src/views/content/libraries/FilesTable.vue:223
 #, fuzzy
 msgctxt "Content/Library/Dropdown/Verb"
 msgid "Restart import"
 msgstr "Inportazioa sortu"
 
+#: front/src/components/library/EditForm.vue:31
+msgctxt "Content/Library/Button.Label"
+msgid "Restrict to unreviewed edits"
+msgstr ""
+
 #: front/src/components/favorites/List.vue:39
-#: src/components/library/Albums.vue:30
-#: front/src/components/library/Artists.vue:30
+#: src/components/library/Albums.vue:34
+#: front/src/components/library/Artists.vue:34
 #: src/components/library/Radios.vue:52 front/src/views/playlists/List.vue:32
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Results per page"
 msgstr "Emaitzak orrialdeko"
 
-#: front/src/components/library/EditForm.vue:31
-msgctxt "Content/Library/Button.Label"
-msgid "Retrict to unreviewed edits"
-msgstr ""
-
 #: front/src/views/auth/EmailConfirm.vue:17
 #, fuzzy
 msgctxt "Content/Signup/Link/Verb"
@@ -3742,55 +4073,56 @@ msgctxt "Content/Moderation/Card.Title/Noun"
 msgid "Rule"
 msgstr ""
 
-#: front/src/components/admin/SettingsGroup.vue:67
+#: front/src/components/About.vue:28 src/components/About.vue:56
+msgctxt "Content/About/Header"
+msgid "Rules"
+msgstr ""
+
+#: front/src/components/admin/SettingsGroup.vue:75
 #: front/src/components/library/radios/Builder.vue:34
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Save"
 msgstr "Gorde"
 
-#: front/src/views/content/remote/Card.vue:175
+#: front/src/views/content/remote/Card.vue:203
 msgctxt "Content/Library/Message"
 msgid "Scan launched"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:67
+#: front/src/views/content/remote/Card.vue:80
 #, fuzzy
 msgctxt "Content/Library/Card.Button.Label/Verb"
 msgid "Scan now"
 msgstr "Erreproduzitu orain"
 
-#: front/src/views/content/remote/Card.vue:35
+#: front/src/views/content/remote/Card.vue:48
 msgctxt "Content/Library/Card.List item"
 msgid "Scan pending"
 msgstr "Eskaneatzeko zain"
 
-#: front/src/views/content/remote/Card.vue:176
+#: front/src/views/content/remote/Card.vue:204
 msgctxt "Content/Library/Message"
 msgid "Scan skipped (previous scan is too recent)"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:47
+#: front/src/views/content/remote/Card.vue:60
 #, fuzzy
 msgctxt "Content/Library/Card.List item"
 msgid "Scanned"
 msgstr "Eskaneatzeko zain"
 
-#: front/src/views/content/remote/Card.vue:51
+#: front/src/views/content/remote/Card.vue:64
 msgctxt "Content/Library/Card.List item"
 msgid "Scanned with errors"
 msgstr "Erroreak eskaneatzean"
 
-#: front/src/views/content/remote/Card.vue:39
+#: front/src/views/content/remote/Card.vue:52
 #, fuzzy
 msgctxt "Content/Library/Card.List item"
 msgid "Scanning… (%{ progress }%)"
-msgstr "Eskaneatzen... (%{ progress }%)"
+msgstr "Eskaneatzen… (%{ progress }%)"
 
 #: front/src/components/auth/ApplicationForm.vue:22
-msgctxt "Content/Applications/Input.Label/Noun"
-msgid "Scopes"
-msgstr ""
-
 #: front/src/components/auth/Settings.vue:226
 msgctxt "Content/*/*/Noun"
 msgid "Scopes"
@@ -3803,12 +4135,14 @@ msgstr ""
 #: front/src/components/manage/library/ArtistsTable.vue:5
 #: front/src/components/manage/library/EditsCardList.vue:6
 #: front/src/components/manage/library/LibrariesTable.vue:5
+#: front/src/components/manage/library/TagsTable.vue:5
 #: front/src/components/manage/library/TracksTable.vue:5
 #: front/src/components/manage/library/UploadsTable.vue:5
 #: front/src/components/manage/moderation/AccountsTable.vue:5
 #: front/src/components/manage/moderation/DomainsTable.vue:5
 #: front/src/components/manage/users/InvitationsTable.vue:5
 #: front/src/components/manage/users/UsersTable.vue:5
+#: front/src/views/admin/moderation/ReportsList.vue:8
 #: front/src/views/content/libraries/FilesTable.vue:5
 #: src/views/playlists/List.vue:13
 msgctxt "Content/Search/Input.Label/Noun"
@@ -3821,6 +4155,7 @@ msgid "Search a remote library"
 msgstr "Bilatu urruneko liburutegia"
 
 #: front/src/components/manage/library/EditsCardList.vue:211
+#: front/src/views/admin/moderation/ReportsList.vue:207
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by account, summary, domain…"
 msgstr ""
@@ -3855,7 +4190,12 @@ msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by domain, username, bio…"
 msgstr ""
 
-#: front/src/components/manage/moderation/DomainsTable.vue:151
+#: front/src/components/manage/library/TagsTable.vue:165
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by name"
+msgstr ""
+
+#: front/src/components/manage/moderation/DomainsTable.vue:168
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by name…"
 msgstr ""
@@ -3870,12 +4210,12 @@ msgctxt "Content/Admin/Input.Placeholder/Verb"
 msgid "Search by username, e-mail address, code…"
 msgstr ""
 
-#: front/src/components/manage/users/UsersTable.vue:163
+#: front/src/components/manage/users/UsersTable.vue:164
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by username, e-mail address, name…"
 msgstr ""
 
-#: front/src/components/audio/SearchBar.vue:20
+#: front/src/components/audio/SearchBar.vue:27
 msgctxt "Sidebar/Search/Input.Placeholder"
 msgid "Search for artists, albums, tracks…"
 msgstr ""
@@ -3885,16 +4225,30 @@ msgctxt "Content/Search/Title"
 msgid "Search for some music"
 msgstr "Bilatu musika pixka bat"
 
-#: front/src/components/library/AlbumBase.vue:57
-#: front/src/components/library/ArtistBase.vue:68
-#: front/src/components/library/TrackBase.vue:76
+#: front/src/components/library/TagsSelector.vue:6
+#, fuzzy
+msgctxt "*/Dropdown/Placeholder/Verb"
+msgid "Search for tags…"
+msgstr "Bilatu musika pixka bat"
+
+#: front/src/components/library/AlbumBase.vue:66
+#: front/src/components/library/ArtistBase.vue:77
+#: front/src/components/library/TrackBase.vue:82
+#, fuzzy
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Search on Discogs"
+msgstr "Bilatu musika pixka bat"
+
+#: front/src/components/library/AlbumBase.vue:58
+#: front/src/components/library/ArtistBase.vue:69
+#: front/src/components/library/TrackBase.vue:74
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Search on Wikipedia"
 msgstr "Bilatu Wikipedian"
 
 #: front/src/components/library/Library.vue:35
-#: src/views/admin/library/Base.vue:32
-#: front/src/views/admin/moderation/Base.vue:22
+#: src/views/admin/library/Base.vue:35
+#: front/src/views/admin/moderation/Base.vue:44
 #: src/views/admin/users/Base.vue:21 front/src/views/content/Base.vue:19
 msgctxt "Menu/*/Hidden text"
 msgid "Secondary menu"
@@ -3905,6 +4259,26 @@ msgctxt "Content/Admin/Menu.Title"
 msgid "Sections"
 msgstr "Atalak"
 
+#: front/src/components/ShortcutsModal.vue:108
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek backwards 30s"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:100
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek backwards 5s"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:112
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek forwards 30s"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:104
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek forwards 5s"
+msgstr ""
+
 #: front/src/components/library/radios/Builder.vue:46
 msgctxt "Content/Radio/Dropdown.Placeholder/Verb"
 msgid "Select a filter"
@@ -3923,9 +4297,14 @@ msgctxt "Content/*/Link/Verb"
 msgid "Select only current page"
 msgstr "Aukeratu orrialde hau bakarrik"
 
-#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:108
-#: front/src/components/manage/users/UsersTable.vue:181
-#: front/src/views/admin/moderation/AccountsDetail.vue:506
+#: front/src/components/Home.vue:43
+msgctxt "Content/Home/Link"
+msgid "Server rules"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:112
+#: front/src/components/manage/users/UsersTable.vue:182
+#: front/src/views/admin/moderation/AccountsDetail.vue:526
 msgctxt "*/*/*/Noun"
 msgid "Settings"
 msgstr "Ezarpenak"
@@ -3948,18 +4327,25 @@ msgstr "Partekatu esteka"
 #: front/src/views/content/libraries/Detail.vue:15
 #, fuzzy
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Share this link with other users so they can request access to your library."
-msgstr ""
-"Partekatu esteka hau beste erabiltzaile batzuekin zure liburutegira sarbidea"
-" eska dezaten."
+msgid "Share this link with other users so they can request access to your library."
+msgstr "Partekatu esteka hau beste erabiltzaile batzuekin zure liburutegira sarbidea eska dezaten."
 
 #: front/src/views/content/libraries/Detail.vue:14
-#: front/src/views/content/remote/Card.vue:77
+#: front/src/views/content/remote/Card.vue:90
 msgctxt "Content/Library/Title"
 msgid "Sharing link"
 msgstr "Esteka partekatzen"
 
+#: front/src/components/audio/EmbedWizard.vue:5
+msgctxt "Content/Embed/Message"
+msgid "Sharing will not work because this pod doesn't allow anonymous users to access content."
+msgstr ""
+
+#: front/src/components/About.vue:156
+msgctxt "*/*/*/Verb"
+msgid "Show"
+msgstr ""
+
 #: front/src/components/audio/album/Card.vue:38
 #, fuzzy
 msgctxt "Content/Album/Card.Link/Verb"
@@ -3968,11 +4354,11 @@ msgid_plural "Show %{ count } more tracks"
 msgstr[0] "Erakutsi abesti %{ count } gehiago"
 msgstr[1] "Erakutsi %{ count } abesti gehiago"
 
-#: front/src/components/audio/artist/Card.vue:30
+#: front/src/components/tags/List.vue:11
 #, fuzzy
-msgctxt "Content/Artist/Card.Link"
-msgid "Show 1 more album"
-msgid_plural "Show %{ count } more albums"
+msgctxt "Content/*/Button/Label/Verb"
+msgid "Show 1 more tag"
+msgid_plural "Show %{ count } more tags"
 msgstr[0] "Erakutsi album 1 gehiago"
 msgstr[1] "Erakutsi %{ count } album gehiago"
 
@@ -3981,17 +4367,28 @@ msgctxt "Content/Library/Button.Label"
 msgid "Show all edits"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:42
+#: front/src/components/ShortcutsModal.vue:60
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Show available keyboard shortcuts"
 msgstr ""
 
-#: front/src/views/Notifications.vue:7
+#: front/src/components/common/ExpandableDiv.vue:7
+msgctxt "*/*/Button,Label"
+msgid "Show less"
+msgstr ""
+
+#: front/src/components/common/ExpandableDiv.vue:8
+#, fuzzy
+msgctxt "*/*/Button,Label"
+msgid "Show more"
+msgstr "Erakutsi album 1 gehiago"
+
+#: front/src/views/Notifications.vue:72
 msgctxt "Content/Notifications/Form.Label/Verb"
 msgid "Show read notifications"
 msgstr "Erakutsi irakurritako jakinarazpenak"
 
-#: front/src/components/forms/PasswordInput.vue:26
+#: front/src/components/forms/PasswordInput.vue:42
 #, fuzzy
 msgctxt "Content/Settings/Button.Tooltip/Verb"
 msgid "Show/hide password"
@@ -4001,58 +4398,66 @@ msgstr "Pasahitza aldatu"
 #: front/src/components/manage/library/ArtistsTable.vue:84
 #: front/src/components/manage/library/EditsCardList.vue:72
 #: front/src/components/manage/library/LibrariesTable.vue:110
+#: front/src/components/manage/library/TagsTable.vue:79
 #: front/src/components/manage/library/TracksTable.vue:95
 #: front/src/components/manage/library/UploadsTable.vue:144
 #: front/src/components/manage/moderation/AccountsTable.vue:88
-#: front/src/components/manage/moderation/DomainsTable.vue:74
+#: front/src/components/manage/moderation/DomainsTable.vue:85
 #: front/src/components/manage/users/InvitationsTable.vue:76
-#: front/src/components/manage/users/UsersTable.vue:87
+#: front/src/components/manage/users/UsersTable.vue:88
 #: front/src/views/content/libraries/FilesTable.vue:117
 msgctxt "Content/*/Paragraph"
 msgid "Showing results %{ start }-%{ end } on %{ total }"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:83
+#: front/src/components/ShortcutsModal.vue:140
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Shuffle queue"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:641
+#: front/src/components/audio/Player.vue:667
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Shuffle your queue"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:97
+#: front/src/components/Home.vue:103
+#, fuzzy
+msgctxt "*/Signup/Title"
+msgid "Sign up"
+msgstr "Erregistratu"
+
+#: front/src/views/auth/Signup.vue:37
 #, fuzzy
 msgctxt "*/Signup/Title"
 msgid "Sign Up"
 msgstr "Erregistratu"
 
+#: front/src/components/Home.vue:107
+msgctxt "Content/Home/Paragraph"
+msgid "Sign up now to keep a track of your favorites, create playlists, discover new content and much more!"
+msgstr ""
+
 #: front/src/components/manage/users/UsersTable.vue:40
 msgctxt "Content/Admin/Table.Label/Short, Noun (Value is a date)"
 msgid "Sign-up"
 msgstr "Erregistratu"
 
-#: front/src/components/mixins/Translations.vue:57
-#: front/src/views/admin/moderation/AccountsDetail.vue:197
-#: front/src/components/mixins/Translations.vue:58
+#: front/src/components/mixins/Translations.vue:69
+#: front/src/views/admin/moderation/AccountsDetail.vue:198
+#: front/src/components/mixins/Translations.vue:70
 #, fuzzy
 msgctxt "Content/Admin/Table.Label/Noun"
 msgid "Sign-up date"
 msgstr "Erregistratu"
 
-#: front/src/components/manage/library/UploadsTable.vue:65
-#: front/src/views/admin/library/UploadDetail.vue:219
-msgctxt "Content/*/*/Noun"
-msgid "Size"
-msgstr "Tamaina"
-
 #: front/src/components/library/FileUpload.vue:94
 #: front/src/components/library/TrackDetail.vue:39
-#: front/src/components/mixins/Translations.vue:54
+#: front/src/components/manage/library/UploadsTable.vue:65
+#: front/src/components/mixins/Translations.vue:66
+#: front/src/views/admin/library/UploadDetail.vue:219
 #: front/src/views/content/libraries/FilesTable.vue:61
-#: front/src/components/mixins/Translations.vue:55
-msgctxt "Content/Library/*/in MB"
+#: front/src/components/mixins/Translations.vue:67
+msgctxt "Content/*/*/Noun"
 msgid "Size"
 msgstr "Tamaina"
 
@@ -4069,7 +4474,7 @@ msgctxt "Content/Library/Label"
 msgid "Skipped files"
 msgstr "Saltatutako fitxategiak"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:89
+#: front/src/views/admin/moderation/DomainsDetail.vue:126
 msgctxt "Content/Moderation/Table.Label"
 msgid "Software"
 msgstr ""
@@ -4084,88 +4489,64 @@ msgctxt "Content/*/Paragraph"
 msgid "Sorry, the page you asked for does not exist:"
 msgstr ""
 
-#: front/src/components/Footer.vue:49
+#: front/src/components/Footer.vue:57
 msgctxt "Footer/*/List item.Link"
 msgid "Source code"
 msgstr "Iturburu kodea"
 
 #: front/src/components/auth/Profile.vue:23
-#: front/src/components/manage/users/UsersTable.vue:70
+#: front/src/components/manage/users/UsersTable.vue:71
 msgctxt "Content/Profile/User role"
 msgid "Staff member"
 msgstr ""
 
-#: front/src/components/audio/PlayButton.vue:23
+#: front/src/components/audio/PlayButton.vue:27
 #: src/components/radios/Button.vue:4
 #, fuzzy
 msgctxt "*/Queue/Button.Label/Short, Verb"
 msgid "Start radio"
 msgstr "Instantziako irratiak"
 
-#: front/src/views/admin/Settings.vue:86
-msgctxt "Content/Admin/Menu"
+#: front/src/components/About.vue:170 src/components/Home.vue:53
+#: front/src/views/admin/Settings.vue:87
+msgctxt "Content/Home/Header"
 msgid "Statistics"
 msgstr ""
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:490
+#: front/src/views/admin/moderation/AccountsDetail.vue:510
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this account"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this account"
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:371
+#: front/src/views/admin/moderation/DomainsDetail.vue:418
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this domain"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this domain"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:329
-#: front/src/views/admin/library/ArtistDetail.vue:328
-#: front/src/views/admin/library/LibraryDetail.vue:316
-#: front/src/views/admin/library/TrackDetail.vue:371
+#: front/src/views/admin/library/AlbumDetail.vue:346
+#: front/src/views/admin/library/ArtistDetail.vue:345
+#: front/src/views/admin/library/LibraryDetail.vue:356
+#: front/src/views/admin/library/TagDetail.vue:210
+#: front/src/views/admin/library/TrackDetail.vue:389
 #: front/src/views/admin/library/UploadDetail.vue:335
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this object"
-msgstr ""
-
-#: front/src/views/admin/moderation/DomainsDetail.vue:115
-msgctxt "Content/Moderation/Table.Label (Value is Error message)"
-msgid "Status"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this object"
 msgstr ""
 
 #: front/src/components/library/FileUpload.vue:95
-msgctxt "Content/Library/Table.Label (Value is Uploading/Uploaded/Error)"
-msgid "Status"
-msgstr ""
-
-#: front/src/views/content/libraries/Detail.vue:28
-msgctxt "Content/Library.Federation/Table.Label (Value is Approved/Rejected)"
-msgid "Status"
-msgstr ""
-
+#: front/src/components/manage/library/EditsCardList.vue:12
+#: front/src/components/manage/moderation/ReportCard.vue:57
 #: front/src/components/manage/users/InvitationsTable.vue:17
 #: front/src/components/manage/users/InvitationsTable.vue:39
-msgctxt "Content/Admin/*/Noun (Value is Used/Not used)"
-msgid "Status"
-msgstr ""
-
 #: front/src/components/manage/users/UsersTable.vue:43
-msgctxt "Content/Admin/Table.Label/Noun (Value is Regular user/Admin)"
-msgid "Status"
-msgstr ""
-
-#: front/src/components/manage/library/EditsCardList.vue:12
-msgctxt ""
-"Content/Search/Dropdown.Label (Value is All/Pending "
-"review/Approved/Rejected)"
+#: front/src/views/admin/moderation/DomainsDetail.vue:152
+#: front/src/views/admin/moderation/ReportsList.vue:14
+#: front/src/views/content/libraries/Detail.vue:28
+msgctxt "*/*/*"
 msgid "Status"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:174 src/components/radios/Button.vue:3
+#: front/src/components/Sidebar.vue:178 src/components/radios/Button.vue:3
 #, fuzzy
 msgctxt "*/Player/Button.Label/Short, Verb"
 msgid "Stop radio"
@@ -4176,7 +4557,7 @@ msgctxt "*/*/Button.Label/Verb"
 msgid "Submit"
 msgstr ""
 
-#: front/src/components/library/EditForm.vue:98
+#: front/src/components/library/EditForm.vue:110
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Submit and apply edit"
 msgstr ""
@@ -4186,12 +4567,22 @@ msgctxt "Content/Library/Button.Label"
 msgid "Submit another edit"
 msgstr ""
 
-#: front/src/components/library/EditForm.vue:99
+#: front/src/components/moderation/ReportModal.vue:64
+msgctxt "Popup/*/Button.Label"
+msgid "Submit report"
+msgstr ""
+
+#: front/src/components/library/EditForm.vue:111
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Submit suggestion"
 msgstr ""
 
-#: front/src/views/admin/Settings.vue:85
+#: front/src/components/manage/moderation/ReportCard.vue:17
+msgctxt "Content/Moderation/*"
+msgid "Submitted by"
+msgstr ""
+
+#: front/src/views/admin/Settings.vue:86
 msgctxt "Content/Admin/Menu"
 msgid "Subsonic"
 msgstr ""
@@ -4232,16 +4623,21 @@ msgctxt "Content/Library/Tab.Title/Short"
 msgid "Summary"
 msgstr ""
 
-#: front/src/components/library/EditForm.vue:87
+#: front/src/components/library/EditForm.vue:99
 msgctxt "*/*/*"
 msgid "Summary (optional)"
 msgstr ""
 
-#: front/src/components/Footer.vue:39
+#: front/src/components/Footer.vue:47
 msgctxt "Footer/*/Listitem.Link"
 msgid "Support forum"
 msgstr ""
 
+#: front/src/views/Notifications.vue:10
+msgctxt "Content/Notifications/Header"
+msgid "Support this Funkwhale pod"
+msgstr ""
+
 #: front/src/components/library/FileUpload.vue:85
 msgctxt "Content/Library/Paragraph"
 msgid "Supported extensions: %{ extensions }"
@@ -4252,24 +4648,47 @@ msgctxt "Content/Playlist/Paragraph"
 msgid "Syncing changes to server…"
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:25
+#: front/src/components/audio/SearchBar.vue:35
+msgctxt "*/*/*/Noun"
+msgid "Tag"
+msgstr ""
+
+#: front/src/views/admin/library/TagDetail.vue:61
+#, fuzzy
+msgctxt "Content/Moderation/Title"
+msgid "Tag data"
+msgstr "Liburutegia"
+
+#: front/src/components/library/Albums.vue:23
+#: src/components/library/Artists.vue:15
+#: front/src/views/admin/library/Base.vue:23
+#: src/views/admin/library/TagsList.vue:24 front/src/edits.js:24
+#: src/edits.js:50 src/edits.js:91 src/entities.js:120
+msgctxt "*/*/*/Noun"
+msgid "Tags"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:44
+#: front/src/components/mixins/Translations.vue:45
+#, fuzzy
+msgctxt "Content/Moderation/Dropdown"
+msgid "Takedown request"
+msgstr "Eskaerak zain"
+
+#: front/src/components/About.vue:35 src/components/About.vue:61
+msgctxt "Content/About/Header"
+msgid "Terms and privacy policy"
+msgstr ""
+
+#: front/src/components/audio/EmbedWizard.vue:35
 #: front/src/components/common/CopyInput.vue:3
 msgctxt "Content/*/Paragraph"
 msgid "Text copied to clipboard!"
 msgstr ""
 
-#: front/src/components/Home.vue:26
-msgctxt "Content/Home/Paragraph"
-msgid ""
-"That's simple: we loved Grooveshark and we want to build something even "
-"better."
-msgstr ""
-
-#: front/src/views/admin/library/AlbumDetail.vue:75
+#: front/src/views/admin/library/AlbumDetail.vue:81
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The album will be removed, as well as associated uploads, tracks, favorites "
-"and listening history. This action is irreversible."
+msgid "The album will be removed, as well as associated uploads, tracks, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/components/auth/Authorize.vue:39
@@ -4277,14 +4696,12 @@ msgctxt "Content/Auth/Paragraph"
 msgid "The application is also requesting the following unknown permissions:"
 msgstr ""
 
-#: front/src/views/admin/library/ArtistDetail.vue:74
+#: front/src/views/admin/library/ArtistDetail.vue:79
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The artist will be removed, as well as associated uploads, tracks, albums, "
-"favorites and listening history. This action is irreversible."
+msgid "The artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible."
 msgstr ""
 
-#: front/src/components/Footer.vue:53
+#: front/src/components/Footer.vue:61
 msgctxt "Footer/*/List item.Link"
 msgid "The funkwhale logo was kindly designed and provided by Francis Gading."
 msgstr ""
@@ -4296,22 +4713,17 @@ msgstr ""
 
 #: front/src/views/content/libraries/Form.vue:34
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"The library and all its tracks will be deleted. This can not be undone."
+msgid "The library and all its tracks will be deleted. This can not be undone."
 msgstr ""
 
 #: front/src/views/admin/library/LibraryDetail.vue:61
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The library will be removed, as well as associated uploads, and follows. "
-"This action is irreversible."
+msgid "The library will be removed, as well as associated uploads, and follows. This action is irreversible."
 msgstr ""
 
 #: front/src/components/library/ImportStatusModal.vue:140
 msgctxt "Popup/Import/Error.Label"
-msgid ""
-"The metadata included in the file is invalid or some mandatory fields are "
-"missing."
+msgid "The metadata included in the file is invalid or some mandatory fields are missing."
 msgstr ""
 
 #: front/src/components/library/FileUpload.vue:38
@@ -4324,11 +4736,14 @@ msgctxt "Sidebar/Player/Error message.Paragraph"
 msgid "The next track will play automatically in a few seconds…"
 msgstr ""
 
-#: front/src/components/Home.vue:116
-msgctxt "Content/Home/List item"
-msgid ""
-"The plaform is free and open-source, you can install it and modify it "
-"without worries"
+#: front/src/components/manage/moderation/NotesThread.vue:27
+msgctxt "Content/Moderation/Paragraph"
+msgid "The note will be removed. This action is irreversible."
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:120
+msgctxt "Content/Moderation/Message"
+msgid "The object associated with this report was deleted."
 msgstr ""
 
 #: front/src/components/playlists/Form.vue:14
@@ -4344,46 +4759,42 @@ msgstr ""
 
 #: front/src/components/federation/FetchButton.vue:13
 msgctxt "Popup/*/Message.Content"
-msgid ""
-"The remote server answered, but returned data was unsupported by Funkwhale."
+msgid "The remote server answered, but returned data was unsupported by Funkwhale."
 msgstr ""
 
 #: front/src/components/federation/FetchButton.vue:44
 msgctxt "*/*/Error"
-msgid "The remote server didn't answered fast enough"
+msgid "The remote server didn't respond quickly enough"
 msgstr ""
 
 #: front/src/components/federation/FetchButton.vue:50
 msgctxt "*/*/Error"
-msgid "The return server returned invalid JSON or JSON-LD data"
+msgid "The remote server returned invalid JSON or JSON-LD data"
 msgstr ""
 
 #: front/src/components/manage/library/AlbumsTable.vue:189
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected albums will be removed, as well as associated tracks, uploads, "
-"favorites and listening history. This action is irreversible."
+msgid "The selected albums will be removed, as well as associated tracks, uploads, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/components/manage/library/ArtistsTable.vue:179
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected artist will be removed, as well as associated uploads, tracks, "
-"albums, favorites and listening history. This action is irreversible."
+msgid "The selected artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/components/manage/library/LibrariesTable.vue:206
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected library will be removed, as well as associated uploads and "
-"follows. This action is irreversible."
+msgid "The selected library will be removed, as well as associated uploads and follows. This action is irreversible."
+msgstr ""
+
+#: front/src/components/manage/library/TagsTable.vue:180
+msgctxt "Popup/*/Paragraph"
+msgid "The selected tag will be removed and unlinked with existing content, if any. This action is irreversible."
 msgstr ""
 
 #: front/src/components/manage/library/TracksTable.vue:189
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected tracks will be removed, as well as associated uploads, "
-"favorites and listening history. This action is irreversible."
+msgid "The selected tracks will be removed, as well as associated uploads, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/components/manage/library/UploadsTable.vue:256
@@ -4403,8 +4814,12 @@ msgstr ""
 
 #: front/src/components/library/EditCard.vue:96
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"The suggestion will be completely removed, this action is irreversible."
+msgid "The suggestion will be completely removed, this action is irreversible."
+msgstr ""
+
+#: front/src/views/admin/library/TagDetail.vue:44
+msgctxt "Content/Moderation/Paragraph"
+msgid "The tag will be removed and unlinked from any existing entity. This action is irreversible."
 msgstr ""
 
 #: front/src/components/playlists/PlaylistModal.vue:34
@@ -4417,11 +4832,9 @@ msgctxt "Sidebar/Player/Error message.Title"
 msgid "The track cannot be loaded"
 msgstr ""
 
-#: front/src/views/admin/library/TrackDetail.vue:74
+#: front/src/views/admin/library/TrackDetail.vue:80
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The track will be removed, as well as associated uploads, favorites and "
-"listening history. This action is irreversible."
+msgid "The track will be removed, as well as associated uploads, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/views/admin/library/UploadDetail.vue:68
@@ -4454,21 +4867,35 @@ msgctxt "Content/Artist/Paragraph"
 msgid "This artist is present in the following libraries:"
 msgstr ""
 
+#: front/src/components/manage/moderation/DomainsTable.vue:169
+msgctxt "Content/Moderation/Popup"
+msgid "This domain is present in your allow-list"
+msgstr ""
+
 #: front/src/views/admin/moderation/AccountsDetail.vue:84
-#: front/src/views/admin/moderation/DomainsDetail.vue:48
+#: front/src/views/admin/moderation/DomainsDetail.vue:76
 msgctxt "Content/Moderation/Card.Title"
 msgid "This domain is subject to specific moderation rules"
 msgstr ""
 
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:16
+msgctxt "Content/Moderation/Card.Title"
+msgid "This entity is subject to specific moderation rules"
+msgstr ""
+
 #: front/src/views/content/Home.vue:9
 msgctxt "Content/Library/Paragraph"
 msgid "This instance offers up to %{quota} of storage space for every user."
 msgstr ""
 
+#: front/src/components/auth/Settings.vue:300
+msgctxt "Popup/Settings/Paragraph"
+msgid "This is irreversible and will permanently remove your data from our servers. You will we immediatly logged out."
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:165
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"This is the list of applications that have access to your account data."
+msgid "This is the list of applications that have access to your account data."
 msgstr ""
 
 #: front/src/components/auth/Settings.vue:218
@@ -4486,23 +4913,19 @@ msgctxt "Content/Library/Input.Placeholder"
 msgid "This library contains my personal music, I hope you like it."
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:141
+#: front/src/views/content/remote/Card.vue:169
 msgctxt "Content/Library/Card.Help text"
-msgid ""
-"This library is private and your approval from its owner is needed to access"
-" its content"
+msgid "This library is private and your approval from its owner is needed to access its content"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:142
+#: front/src/views/content/remote/Card.vue:170
 msgctxt "Content/Library/Card.Help text"
 msgid "This library is public and you can access its content freely"
 msgstr ""
 
 #: front/src/components/common/ActionTable.vue:47
 msgctxt "Modal/*/Paragraph"
-msgid ""
-"This may affect a lot of elements or have irreversible consequences, please "
-"double check this is really what you want."
+msgid "This may affect a lot of elements or have irreversible consequences, please double check this is really what you want."
 msgstr ""
 
 #: front/src/components/library/AlbumEdit.vue:8
@@ -4512,6 +4935,11 @@ msgctxt "Content/*/Message"
 msgid "This object is managed by another server, you cannot edit it."
 msgstr ""
 
+#: front/src/components/Home.vue:87
+msgctxt "Content/Home/Paragraph"
+msgid "This pod runs Funkwhale, a community-driven project that lets you listen and share music and audio within a decentralized, open network."
+msgstr ""
+
 #: front/src/components/library/FileUpload.vue:51
 msgctxt "Content/Library/Paragraph"
 msgid "This reference will be used to group imported files together."
@@ -4520,14 +4948,13 @@ msgstr ""
 #: front/src/components/mixins/Translations.vue:33
 #: front/src/components/mixins/Translations.vue:34
 msgctxt "Content/Library/Help text"
-msgid "This track could not be processed, please it is tagged correctly"
+msgid "This track could not be processed, please make sure it is tagged correctly"
 msgstr ""
 
 #: front/src/components/mixins/Translations.vue:29
 #: front/src/components/mixins/Translations.vue:30
 msgctxt "Content/Library/Help text"
-msgid ""
-"This track has been uploaded, but hasn't been processed by the server yet"
+msgid "This track has been uploaded, but hasn't been processed by the server yet"
 msgstr ""
 
 #: front/src/components/mixins/Translations.vue:25
@@ -4536,7 +4963,7 @@ msgctxt "Content/Library/Help text"
 msgid "This track is already present in one of your libraries"
 msgstr ""
 
-#: front/src/components/audio/PlayButton.vue:85
+#: front/src/components/audio/PlayButton.vue:103
 msgctxt "*/Queue/Button/Title"
 msgid "This track is not available in any library you have access to"
 msgstr ""
@@ -4546,7 +4973,7 @@ msgctxt "Content/Track/Paragraph"
 msgid "This track is present in the following libraries:"
 msgstr ""
 
-#: front/src/views/playlists/Detail.vue:38
+#: front/src/views/playlists/Detail.vue:46
 msgctxt "Popup/Playlist/Paragraph"
 msgid "This will completely delete this playlist and cannot be undone."
 msgstr ""
@@ -4556,29 +4983,29 @@ msgctxt "Popup/Radio/Paragraph"
 msgid "This will completely delete this radio and cannot be undone."
 msgstr ""
 
-#: front/src/components/auth/SubsonicTokenForm.vue:50
+#: front/src/components/auth/SubsonicTokenForm.vue:55
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will completely disable access to the Subsonic API using from account."
+msgid "This will completely disable access to the Subsonic API using from account."
 msgstr ""
 
-#: front/src/components/auth/SubsonicTokenForm.vue:35
+#: front/src/components/manage/moderation/ReportCard.vue:359
+msgctxt "Content/Moderation/Popup,Paragraph"
+msgid "This will delete the object associated with this report and mark the report as resolved. The deletion is irreversible."
+msgstr ""
+
+#: front/src/components/auth/SubsonicTokenForm.vue:40
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will log you out from existing devices that use the current password."
+msgid "This will log you out from existing devices that use the current password."
 msgstr ""
 
 #: front/src/components/auth/Settings.vue:253
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will permanently delete the application and all the associated tokens."
+msgid "This will permanently delete the application and all the associated tokens."
 msgstr ""
 
 #: front/src/components/auth/Settings.vue:194
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will prevent this application from accessing the service on your "
-"behalf."
+msgid "This will prevent this application from accessing the service on your behalf."
 msgstr ""
 
 #: front/src/components/playlists/Editor.vue:54
@@ -4586,43 +5013,44 @@ msgctxt "Popup/Playlist/Paragraph"
 msgid "This will remove all tracks from this playlist and cannot be undone."
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:99
-#: front/src/views/admin/library/TrackDetail.vue:98 src/edits.js:21
-#: src/edits.js:39
-msgctxt "*/*/*/Noun"
-msgid "Title"
-msgstr ""
-
 #: front/src/components/audio/track/Table.vue:7
-#: front/src/views/content/libraries/FilesTable.vue:55
-msgctxt "Content/Track/*/Noun"
-msgid "Title"
-msgstr ""
-
 #: front/src/components/manage/library/AlbumsTable.vue:39
 #: front/src/components/manage/library/TracksTable.vue:39
-msgctxt "*/*/*"
+#: front/src/views/admin/library/AlbumDetail.vue:105
+#: front/src/views/admin/library/TrackDetail.vue:104
+#: front/src/views/content/libraries/FilesTable.vue:55 src/edits.js:36
+#: front/src/edits.js:62
+msgctxt "*/*/*/Noun"
 msgid "Title"
 msgstr ""
 
 #: front/src/components/SetInstanceModal.vue:16
 msgctxt "Popup/Instance/Paragraph"
-msgid ""
-"To continue, please select the Funkwhale instance you want to connect to. "
-"Enter the address directly, or select one of the suggested choices."
+msgid "To continue, please select the Funkwhale instance you want to connect to. Enter the address directly, or select one of the suggested choices."
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:79
+#: front/src/components/ShortcutsModal.vue:148
+#, fuzzy
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle favorite"
+msgstr "gogoko 1"
+
+#: front/src/components/ShortcutsModal.vue:132
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle mute"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:136
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Toggle queue looping"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:222
-#: front/src/views/admin/library/ArtistDetail.vue:211
-#: front/src/views/admin/library/LibraryDetail.vue:200
-#: front/src/views/admin/library/TrackDetail.vue:274
-#: front/src/views/admin/moderation/AccountsDetail.vue:317
-#: front/src/views/admin/moderation/DomainsDetail.vue:225
+#: front/src/views/admin/library/AlbumDetail.vue:238
+#: front/src/views/admin/library/ArtistDetail.vue:226
+#: front/src/views/admin/library/LibraryDetail.vue:219
+#: front/src/views/admin/library/TrackDetail.vue:290
+#: front/src/views/admin/moderation/AccountsDetail.vue:329
+#: front/src/views/admin/moderation/DomainsDetail.vue:262
 msgctxt "Content/Moderation/Table.Label"
 msgid "Total size"
 msgstr ""
@@ -4632,21 +5060,19 @@ msgctxt "Content/Library/Card.Help text"
 msgid "Total size of the files in this library"
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:105
+#: front/src/views/admin/moderation/DomainsDetail.vue:142
 #, fuzzy
 msgctxt "Content/*/*"
 msgid "Total users"
 msgstr "Ez da erabiltzen"
 
-#: front/src/views/admin/library/UploadDetail.vue:199
-msgctxt "*/*/*"
-msgid "Track"
-msgstr ""
-
-#: front/src/components/audio/SearchBar.vue:27
-#: front/src/components/library/TrackBase.vue:173
+#: front/src/components/audio/SearchBar.vue:34
+#: front/src/components/library/TrackBase.vue:188
 #: front/src/components/library/TrackDetail.vue:128
 #: front/src/components/metadata/Search.vue:138
+#: src/components/mixins/Report.vue:28
+#: front/src/views/admin/library/UploadDetail.vue:199
+#: front/src/components/mixins/Report.vue:29
 msgctxt "*/*/*/Noun"
 msgid "Track"
 msgstr ""
@@ -4656,7 +5082,7 @@ msgctxt "Content/Library/Card/Short"
 msgid "Track #%{ id } - %{ name }"
 msgstr ""
 
-#: front/src/views/admin/library/TrackDetail.vue:91
+#: front/src/views/admin/library/TrackDetail.vue:97
 msgctxt "Content/Moderation/Title"
 msgid "Track data"
 msgstr ""
@@ -4666,31 +5092,29 @@ msgctxt "Content/Track/Title/Noun"
 msgid "Track information"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:50
-#: front/src/components/mixins/Translations.vue:51
+#: front/src/components/mixins/Translations.vue:60
+#: front/src/components/mixins/Translations.vue:61
 #, fuzzy
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Track name"
 msgstr "Irratiaren izena"
 
-#: front/src/components/instance/Stats.vue:54
 #: front/src/components/library/AlbumDetail.vue:19
-#: front/src/components/playlists/PlaylistModal.vue:47
-#: front/src/views/admin/moderation/AccountsDetail.vue:362
-#: front/src/views/admin/moderation/DomainsDetail.vue:274
-#: front/src/views/content/Base.vue:8 src/views/content/libraries/Detail.vue:8
-#: front/src/views/playlists/Detail.vue:51 src/views/radios/Detail.vue:34
-msgctxt "*/*/*/Noun"
-msgid "Tracks"
-msgstr ""
-
+#: front/src/components/library/TagDetail.vue:36
 #: front/src/components/manage/library/AlbumsTable.vue:42
 #: front/src/components/manage/library/ArtistsTable.vue:42
-#: front/src/views/admin/library/AlbumDetail.vue:252
-#: front/src/views/admin/library/ArtistDetail.vue:251
+#: front/src/components/manage/library/TagsTable.vue:44
+#: front/src/components/playlists/PlaylistModal.vue:47
+#: front/src/views/admin/library/AlbumDetail.vue:268
+#: front/src/views/admin/library/ArtistDetail.vue:266
 #: front/src/views/admin/library/Base.vue:14
-#: front/src/views/admin/library/LibraryDetail.vue:229
+#: front/src/views/admin/library/LibraryDetail.vue:248
+#: front/src/views/admin/library/TagDetail.vue:143
 #: front/src/views/admin/library/TracksList.vue:24
+#: front/src/views/admin/moderation/AccountsDetail.vue:374
+#: front/src/views/admin/moderation/DomainsDetail.vue:311
+#: front/src/views/content/Base.vue:8 src/views/content/libraries/Detail.vue:8
+#: front/src/views/playlists/Detail.vue:76 src/views/radios/Detail.vue:34
 msgctxt "*/*/*"
 msgid "Tracks"
 msgstr ""
@@ -4701,18 +5125,6 @@ msgctxt "Content/Artist/Title"
 msgid "Tracks by this artist"
 msgstr "Artista honen albumak"
 
-#: front/src/components/instance/Stats.vue:25
-#, fuzzy
-msgctxt "Content/About/Paragraph/Unit"
-msgid "Tracks favorited"
-msgstr "gogoko 1"
-
-#: front/src/components/instance/Stats.vue:19
-#, fuzzy
-msgctxt "Content/About/Paragraph/Unit"
-msgid "tracks listened"
-msgstr "Azken aldian entzuna"
-
 #: front/src/components/library/radios/Filter.vue:44
 #, fuzzy
 msgctxt "Popup/Radio/Title/Noun"
@@ -4720,61 +5132,58 @@ msgid "Tracks matching filter"
 msgstr "abesti %{ count } dator bat iragazki konbinatuekin"
 
 #: front/src/components/library/TrackDetail.vue:57
+#: front/src/components/manage/moderation/ReportCard.vue:134
 #: front/src/views/admin/library/UploadDetail.vue:250
+#: front/src/views/admin/moderation/AccountsDetail.vue:181
 msgctxt "Content/Track/Table.Label/Noun"
 msgid "Type"
 msgstr ""
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:180
-msgctxt "Content/Moderation/Table.Label/Noun"
-msgid "Type"
-msgstr ""
-
 #: front/src/components/manage/moderation/AccountsTable.vue:44
-#: front/src/components/manage/moderation/DomainsTable.vue:42
+#: front/src/components/manage/moderation/DomainsTable.vue:50
 msgctxt "Content/Moderation/Table.Label/Short"
 msgid "Under moderation rule"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:109
-#: src/views/content/remote/Card.vue:114
+#: front/src/components/ShortcutsModal.vue:68
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Unfocus searchbar"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:122
+#: src/views/content/remote/Card.vue:127
 #, fuzzy
 msgctxt "*/Library/Button.Label/Verb"
 msgid "Unfollow"
 msgstr "Jarraitu"
 
-#: front/src/views/content/remote/Card.vue:110
+#: front/src/views/content/remote/Card.vue:123
 #, fuzzy
 msgctxt "Popup/Library/Title"
 msgid "Unfollow this library?"
 msgstr "Liburutegi hau ezabatu?"
 
-#: front/src/components/About.vue:17
-msgctxt "Content/About/Paragraph"
-msgid ""
-"Unfortunately, the owners of this instance did not yet take the time to "
-"complete this page."
-msgstr ""
-
 #: front/src/components/federation/FetchButton.vue:54
 #: front/src/components/federation/FetchButton.vue:55
+#: front/src/components/library/ImportStatusModal.vue:144
 msgctxt "*/*/Error"
-msgid "Unknowkn error"
+msgid "Unknown error"
 msgstr ""
 
-#: front/src/components/library/ImportStatusModal.vue:144
-msgctxt "Popup/Import/Error.Label"
-msgid "Unkwown error"
+#: front/src/components/audio/Player.vue:656
+msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
+msgid "Unmute"
 msgstr ""
 
-#: front/src/components/Home.vue:37
-msgctxt "Content/Home/Title"
-msgid "Unlimited music"
+#: front/src/components/manage/moderation/ReportCard.vue:225
+msgctxt "Content/*/Button.Label"
+msgid "Unresolve"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:630
-msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
-msgid "Unmute"
+#: front/src/components/manage/moderation/ReportCard.vue:67
+#: front/src/views/admin/moderation/ReportsList.vue:23
+msgctxt "Content/*/*/Short"
+msgid "Unresolved"
 msgstr ""
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:57
@@ -4847,9 +5256,7 @@ msgstr "Inportazio data"
 
 #: front/src/components/library/FileUpload.vue:258
 msgctxt "Content/Library/Help text"
-msgid ""
-"Upload denied, ensure the file is not too big and that you have not reached "
-"your quota"
+msgid "Upload denied, ensure the file is not too big and that you have not reached your quota"
 msgstr ""
 
 #: front/src/components/library/ImportStatusModal.vue:8
@@ -4859,9 +5266,7 @@ msgstr ""
 
 #: front/src/views/content/Home.vue:7
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Upload music files (MP3, OGG, FLAC, etc.) from your personal library "
-"directly from your browser to enjoy them here."
+msgid "Upload music files (MP3, OGG, FLAC, etc.) from your personal library directly from your browser to enjoy them here."
 msgstr ""
 
 #: front/src/components/library/FileUpload.vue:30
@@ -4869,10 +5274,12 @@ msgctxt "Content/Library/Title/Verb"
 msgid "Upload new tracks"
 msgstr ""
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:298
-msgctxt "Content/Moderation/Table.Label/Noun"
+#: front/src/components/About.vue:99
+#: front/src/views/admin/moderation/AccountsDetail.vue:309
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Upload quota"
-msgstr ""
+msgstr "Inportazio data"
 
 #: front/src/components/library/FileUpload.vue:267
 msgctxt "Content/Library/Help text"
@@ -4881,9 +5288,7 @@ msgstr ""
 
 #: front/src/components/library/ImportStatusModal.vue:14
 msgctxt "Popup/Import/Message"
-msgid ""
-"Upload was skipped because a similar one is already available in one of your"
-" libraries."
+msgid "Upload was skipped because a similar one is already available in one of your libraries."
 msgstr ""
 
 #: front/src/components/library/ImportStatusModal.vue:11
@@ -4906,35 +5311,25 @@ msgctxt "Content/Library/Table"
 msgid "Uploading…"
 msgstr ""
 
+#: front/src/components/manage/library/LibrariesTable.vue:52
+#: front/src/components/manage/moderation/AccountsTable.vue:41
+#: front/src/components/mixins/Translations.vue:75
+#: front/src/views/admin/library/AlbumDetail.vue:258
+#: front/src/views/admin/library/ArtistDetail.vue:246
 #: front/src/views/admin/library/Base.vue:20
+#: front/src/views/admin/library/LibraryDetail.vue:258
+#: front/src/views/admin/library/TrackDetail.vue:310
 #: front/src/views/admin/library/UploadsList.vue:24
+#: front/src/views/admin/moderation/AccountsDetail.vue:349
+#: front/src/views/admin/moderation/DomainsDetail.vue:281
+#: front/src/components/mixins/Translations.vue:76
 msgctxt "*/*/*"
 msgid "Uploads"
 msgstr ""
 
-#: front/src/components/manage/moderation/AccountsTable.vue:41
-#: front/src/components/mixins/Translations.vue:63
-#: front/src/views/admin/library/AlbumDetail.vue:242
-#: front/src/views/admin/library/ArtistDetail.vue:231
-#: front/src/views/admin/library/LibraryDetail.vue:239
-#: front/src/views/admin/library/TrackDetail.vue:294
-#: front/src/views/admin/moderation/AccountsDetail.vue:337
-#: front/src/views/admin/moderation/DomainsDetail.vue:244
-#: front/src/components/mixins/Translations.vue:64
-msgctxt "Content/Moderation/Table.Label/Noun"
-msgid "Uploads"
-msgstr ""
-
-#: front/src/components/manage/library/LibrariesTable.vue:52
-msgctxt "Content/*/*/Noun"
-msgid "Uploads"
-msgstr ""
-
 #: front/src/components/auth/ApplicationForm.vue:16
 msgctxt "Content/Applications/Help Text"
-msgid ""
-"Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is "
-"not served on the web."
+msgid "Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is not served on the web."
 msgstr ""
 
 #: front/src/components/Footer.vue:16
@@ -4943,18 +5338,29 @@ msgctxt "Footer/*/List item.Link"
 msgid "Use another instance"
 msgstr "Zure instantzia hautatu"
 
+#: front/src/components/Home.vue:146
+msgctxt "Content/Home/Link"
+msgid "Use Funkwhale on other devices with our apps"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:44
+msgctxt "*/*/Field,Help"
+msgid "Use this field to provide additional context to the moderator that will handle your report."
+msgstr ""
+
 #: front/src/views/auth/PasswordReset.vue:12
 msgctxt "Content/Signup/Paragraph"
-msgid ""
-"Use this form to request a password reset. We will send an email to the "
-"given address with instructions to reset your password."
+msgid "Use this form to request a password reset. We will send an email to the given address with instructions to reset your password."
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:18
+msgctxt "*/Moderation/Popup,Paragraph"
+msgid "Use this form to submit a report to our moderation team."
 msgstr ""
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:111
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Use this setting to temporarily enable/disable the policy without completely"
-" removing it."
+msgid "Use this setting to temporarily enable/disable the policy without completely removing it."
 msgstr ""
 
 #: front/src/components/manage/users/InvitationsTable.vue:49
@@ -4962,16 +5368,27 @@ msgctxt "Content/Admin/Table"
 msgid "Used"
 msgstr ""
 
+#: front/src/components/Home.vue:125
+msgctxt "Content/Home/Header"
+msgid "Useful links"
+msgstr ""
+
 #: front/src/views/content/libraries/Detail.vue:26
 msgctxt "Content/Library/Table.Label"
 msgid "User"
 msgstr ""
 
-#: front/src/components/instance/Stats.vue:5
+#: front/src/components/Home.vue:154
 #, fuzzy
-msgctxt "Content/About/Title/Noun"
-msgid "User activity"
-msgstr "Azken jarduera"
+msgctxt "Content/Home/Link"
+msgid "User guides"
+msgstr "Nire liburutegiak"
+
+#: front/src/views/admin/Settings.vue:88
+#, fuzzy
+msgctxt "Content/Admin/Menu"
+msgid "User Interface"
+msgstr "Iragazki izena"
 
 #: front/src/components/library/AlbumDetail.vue:26
 #: front/src/components/library/ArtistDetail.vue:39
@@ -4987,37 +5404,37 @@ msgctxt "Content/Radio/Title"
 msgid "User radios"
 msgstr "Instantziako irratiak"
 
-#: front/src/components/auth/Signup.vue:19
+#: front/src/components/auth/SignupForm.vue:15
 #: front/src/components/manage/users/UsersTable.vue:37
-#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:71
 #: front/src/views/admin/moderation/AccountsDetail.vue:114
-#: front/src/components/mixins/Translations.vue:60
+#: front/src/components/mixins/Translations.vue:72
 #, fuzzy
 msgctxt "Content/*/*"
 msgid "Username"
 msgstr "Iragazki izena"
 
-#: front/src/components/auth/Login.vue:15
+#: front/src/components/auth/LoginForm.vue:11
 #, fuzzy
 msgctxt "Content/Login/Input.Label/Noun"
 msgid "Username or email"
 msgstr "E-maila baieztatu"
 
-#: front/src/components/instance/Stats.vue:13
-msgctxt "Content/About/Paragraph/Unit"
-msgid "users"
-msgstr ""
-
-#: front/src/components/Sidebar.vue:102
-#: front/src/components/manage/moderation/DomainsTable.vue:39
-#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/Sidebar.vue:106
+#: front/src/components/manage/moderation/DomainsTable.vue:47
+#: front/src/components/mixins/Translations.vue:73
 #: src/views/admin/Settings.vue:81 front/src/views/admin/users/Base.vue:5
 #: src/views/admin/users/UsersList.vue:21
-#: front/src/components/mixins/Translations.vue:62
+#: front/src/components/mixins/Translations.vue:74
 msgctxt "*/*/*/Noun"
 msgid "Users"
 msgstr ""
 
+#: front/src/components/Home.vue:110
+msgctxt "Content/Home/Paragraph"
+msgid "Users on this pod also get %{ quota } of free storage to upload their own content!"
+msgstr ""
+
 #: front/src/components/Footer.vue:29
 #, fuzzy
 msgctxt "Footer/*/Title"
@@ -5038,47 +5455,60 @@ msgctxt "Content/Library/Link/Verb"
 msgid "View files"
 msgstr "Saltatutako fitxategiak"
 
-#: front/src/components/library/AlbumBase.vue:81
-#: front/src/components/library/ArtistBase.vue:92
-#: front/src/components/library/TrackBase.vue:100
-#: front/src/views/admin/library/AlbumDetail.vue:42
-#: front/src/views/admin/library/ArtistDetail.vue:41
+#: front/src/components/library/AlbumBase.vue:95
+#: front/src/components/library/ArtistBase.vue:107
+#: front/src/components/library/TrackBase.vue:111
+#: front/src/views/admin/library/AlbumDetail.vue:48
+#: front/src/views/admin/library/ArtistDetail.vue:46
 #: front/src/views/admin/library/LibraryDetail.vue:34
 #: front/src/views/admin/library/LibraryDetail.vue:45
-#: front/src/views/admin/library/TrackDetail.vue:41
+#: front/src/views/admin/library/TagDetail.vue:32
+#: front/src/views/admin/library/TrackDetail.vue:47
 #: front/src/views/admin/library/UploadDetail.vue:35
 #: front/src/views/admin/library/UploadDetail.vue:46
 #: front/src/views/admin/moderation/AccountsDetail.vue:37
 #: front/src/views/admin/moderation/AccountsDetail.vue:45
+#: front/src/views/admin/moderation/DomainsDetail.vue:30
 msgctxt "Content/Moderation/Link/Verb"
 msgid "View in Django's admin"
 msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:61
-#: front/src/components/library/ArtistBase.vue:72
-#: front/src/components/library/TrackBase.vue:80
+#: front/src/components/Home.vue:169
+msgctxt "Content/Home/Link"
+msgid "View more…"
+msgstr ""
+
+#: front/src/components/library/AlbumBase.vue:62
+#: front/src/components/library/ArtistBase.vue:73
+#: front/src/components/library/TrackBase.vue:78
 #: front/src/components/metadata/ArtistCard.vue:49
 #: front/src/components/metadata/ReleaseCard.vue:53
 msgctxt "Content/*/*/Clickable, Verb"
 msgid "View on MusicBrainz"
 msgstr ""
 
+#: front/src/components/manage/moderation/ReportCard.vue:124
+msgctxt "Content/Moderation/Link"
+msgid "View public page"
+msgstr ""
+
 #: front/src/components/manage/library/LibrariesTable.vue:11
 #: front/src/components/manage/library/LibrariesTable.vue:51
 #: front/src/components/manage/library/UploadsTable.vue:11
 #: front/src/components/manage/library/UploadsTable.vue:63
 #: front/src/views/admin/library/LibraryDetail.vue:94
 #: front/src/views/admin/library/UploadDetail.vue:101
+#: front/src/views/content/libraries/Form.vue:18
 #, fuzzy
 msgctxt "*/*/*"
 msgid "Visibility"
 msgstr "Zerrenda ikuspena"
 
-#: front/src/views/content/libraries/Form.vue:18
+#: front/src/components/Home.vue:91
 #, fuzzy
-msgctxt "Content/Library/Dropdown.Label"
-msgid "Visibility"
-msgstr "Zerrenda ikuspena"
+msgctxt "Content/Home/Link"
+msgid "Visit funkwhale.audio"
+msgstr "Funkwhale-ri buruz"
 
 #: front/src/components/library/AlbumDetail.vue:4
 msgctxt "Content/Album/"
@@ -5090,7 +5520,13 @@ msgctxt "Popup/*/Loading.Title"
 msgid "Waiting for result…"
 msgstr ""
 
-#: front/src/components/auth/Login.vue:7
+#: front/src/components/auth/Settings.vue:285
+#, fuzzy
+msgctxt "Content/Settings/Error message.Title"
+msgid "We cannot delete your account"
+msgstr "Sortu nire kontua"
+
+#: front/src/components/auth/LoginForm.vue:3
 msgctxt "Content/Login/Error message.Title"
 msgid "We cannot log you in"
 msgstr ""
@@ -5100,9 +5536,9 @@ msgctxt "Content/*/Error message.Title"
 msgid "We cannot save your changes"
 msgstr ""
 
-#: front/src/components/Home.vue:122
-msgctxt "Content/Home/List item"
-msgid "We do not track you or bother you with ads"
+#: front/src/views/Notifications.vue:39
+msgctxt "Content/Notifications/Paragraph"
+msgid "We noticed you've been here for a while. If Funkwhale is useful to you, we could use your help to make it even better!"
 msgstr ""
 
 #: front/src/components/library/FileUpload.vue:39
@@ -5110,34 +5546,27 @@ msgctxt "Content/Library/Link"
 msgid "We recommend using Picard for that purpose."
 msgstr ""
 
-#: front/src/components/Home.vue:7
-msgctxt "Content/Home/Title"
-msgid "We think listening to music should be simple."
+#: front/src/components/moderation/ReportModal.vue:35
+msgctxt "*/*/Field,Help"
+msgid "We'll use this email if we need to contact you regarding this report."
 msgstr ""
 
-#: front/src/components/Home.vue:148
+#: front/src/components/Home.vue:207
 msgctxt "Head/Home/Title"
 msgid "Welcome"
 msgstr ""
 
 #: front/src/components/Home.vue:5
-#, fuzzy
-msgctxt "Content/Home/Title/Verb"
-msgid "Welcome on Funkwhale"
-msgstr "Funkwhale-ri buruz"
-
-#: front/src/components/Home.vue:24
-#, fuzzy
-msgctxt "Content/Home/Title"
-msgid "Why funkwhale?"
-msgstr "Funkwhale-ri buruz"
+msgctxt "Content/Home/Header"
+msgid "Welcome to %{ podName }!"
+msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:13
+#: front/src/components/audio/EmbedWizard.vue:23
 msgctxt "Popup/Embed/Input.Label"
 msgid "Widget height"
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:6
+#: front/src/components/audio/EmbedWizard.vue:16
 msgctxt "Popup/Embed/Input.Label"
 msgid "Widget width"
 msgstr ""
@@ -5157,9 +5586,11 @@ msgctxt "Content/OAuth Scopes/Help Text"
 msgid "Write-only access to user data"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:129
+#: front/src/components/Sidebar.vue:133
 #: front/src/components/manage/moderation/AccountsTable.vue:72
-#: front/src/components/manage/moderation/DomainsTable.vue:58
+#: front/src/components/manage/moderation/DomainsTable.vue:12
+#: front/src/components/manage/moderation/DomainsTable.vue:69
+#: front/src/views/admin/moderation/DomainsDetail.vue:109
 msgctxt "*/*/*"
 msgid "Yes"
 msgstr ""
@@ -5171,25 +5602,17 @@ msgstr ""
 
 #: front/src/views/content/libraries/Form.vue:19
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You are able to share your library with other people, regardless of its "
-"visibility."
+msgid "You are able to share your library with other people, regardless of its visibility."
 msgstr ""
 
 #: front/src/components/library/FileUpload.vue:32
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You are about to upload music to your library. Before proceeding, please "
-"ensure that:"
+msgid "You are about to upload music to your library. Before proceeding, please ensure that:"
 msgstr ""
 
 #: front/src/components/SetInstanceModal.vue:12
 msgctxt "Popup/Login/Paragraph"
-msgid ""
-"You are currently connected to <a href=\"%{ url }\" target=\"_blank\">%{ "
-"hostname }&nbsp;<i class=\"external icon\"/></a>. If you continue, you will "
-"be disconnected from your current instance and all your local data will be "
-"deleted."
+msgid "You are currently connected to <a href=\"%{ url }\" target=\"_blank\">%{ hostname }&nbsp;<i class=\"external icon\"/></a>. If you continue, you will be disconnected from your current instance and all your local data will be deleted."
 msgstr ""
 
 #: front/src/components/library/ArtistDetail.vue:6
@@ -5205,9 +5628,7 @@ msgstr "%{ username } moduan sartuta"
 
 #: front/src/components/library/FileUpload.vue:35
 msgctxt "Content/Library/List item"
-msgid ""
-"You are not uploading copyrighted content in a public library, otherwise you"
-" may be infringing the law"
+msgid "You are not uploading copyrighted content in a public library, otherwise you may be infringing the law"
 msgstr ""
 
 #: front/src/components/SetInstanceModal.vue:98
@@ -5217,23 +5638,12 @@ msgstr ""
 
 #: front/src/views/content/Home.vue:17
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You can follow libraries from other users to get access to new music. Public"
-" libraries can be followed immediatly, while following a private library "
-"requires approval from its owner."
-msgstr ""
-
-#: front/src/components/Home.vue:128
-msgctxt "Content/Home/List item"
-msgid ""
-"You can invite friends and family to your instance so they can enjoy your "
-"music"
+msgid "You can follow libraries from other users to get access to new music. Public libraries can be followed immediately, while following a private library requires approval from its owner."
 msgstr ""
 
 #: front/src/components/moderation/FilterModal.vue:31
 msgctxt "Popup/Moderation/Paragraph"
-msgid ""
-"You can manage and update your filters anytime from your account settings."
+msgid "You can manage and update your filters any time from your account settings."
 msgstr ""
 
 #: front/src/views/auth/EmailConfirm.vue:24
@@ -5241,18 +5651,19 @@ msgctxt "Content/Signup/Paragraph"
 msgid "You can now use the service without limitations."
 msgstr ""
 
+#: front/src/components/auth/Settings.vue:278
+msgctxt "Content/Settings/Paragraph'"
+msgid "You can permanently and irreversibly delete your account and all the associated data using the form below. You will be asked for confirmation."
+msgstr ""
+
 #: front/src/components/library/radios/Builder.vue:7
 msgctxt "Content/Radio/Paragraph"
-msgid ""
-"You can use this interface to build your own custom radio, which will play "
-"tracks according to your criteria."
+msgid "You can use this interface to build your own custom radio, which will play tracks according to your criteria."
 msgstr ""
 
 #: front/src/components/auth/SubsonicTokenForm.vue:7
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"You can use those to enjoy your playlist and music in offline mode, on your "
-"smartphone or tablet, for instance."
+msgid "You can use those to enjoy your playlist and music in offline mode, on your smartphone or tablet, for instance."
 msgstr ""
 
 #: front/src/components/auth/Settings.vue:202
@@ -5270,19 +5681,17 @@ msgctxt "Content/Moderation/Card.Title"
 msgid "You don't have any rule in place for this account."
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:39
+#: front/src/views/admin/moderation/DomainsDetail.vue:67
 msgctxt "Content/Moderation/Card.Title"
 msgid "You don't have any rule in place for this domain."
 msgstr ""
 
 #: front/src/components/library/EditForm.vue:52
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You don't have the permission to edit this object, but you can suggest "
-"changes. Once submitted, suggestions will be reviewed before approval."
+msgid "You don't have the permission to edit this object, but you can suggest changes. Once submitted, suggestions will be reviewed before approval."
 msgstr ""
 
-#: front/src/components/Sidebar.vue:171
+#: front/src/components/Sidebar.vue:175
 msgctxt "Sidebar/Player/Title"
 msgid "You have a radio playing"
 msgstr ""
@@ -5294,8 +5703,7 @@ msgstr ""
 
 #: front/src/components/auth/Settings.vue:100
 msgctxt "Popup/Settings/List item"
-msgid ""
-"You will be logged out from this session and have to log in with the new one"
+msgid "You will be logged out from this session and have to log in with the new one"
 msgstr ""
 
 #: front/src/components/auth/Authorize.vue:51
@@ -5310,23 +5718,24 @@ msgstr ""
 
 #: front/src/components/auth/Settings.vue:71
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"You will have to update your password on your clients that use this "
-"password."
+msgid "You will have to update your password on your clients that use this password."
 msgstr ""
 
 #: front/src/components/moderation/FilterModal.vue:20
 msgctxt "Popup/Moderation/Paragraph"
-msgid ""
-"You will not see tracks, albums and user activity linked to this artist "
-"anymore:"
+msgid "You will not see tracks, albums and user activity linked to this artist any more:"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:13
+#: front/src/components/auth/SignupForm.vue:9
 msgctxt "Content/Signup/Form/Paragraph"
 msgid "Your account cannot be created."
 msgstr ""
 
+#: front/src/components/auth/Settings.vue:281
+msgctxt "Content/Settings/Paragraph'"
+msgid "Your account will be deleted from our servers within a few minutes. We will also notify other servers who may have a copy of some of your data so they can proceed to deletion. Please note that some of these servers may be offline or unwilling to comply though."
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:215
 #, fuzzy
 msgctxt "Content/Settings/Title/Noun"
@@ -5338,6 +5747,11 @@ msgctxt "Content/Settings/Error message.Title"
 msgid "Your avatar cannot be saved"
 msgstr ""
 
+#: front/src/components/auth/Settings.vue:527
+msgctxt "*/Auth/Message"
+msgid "Your deletion request was submitted, your account and content will be deleted shortly"
+msgstr ""
+
 #: front/src/components/library/EditForm.vue:3
 msgctxt "Content/Library/Paragraph"
 msgid "Your edit was successfully submitted."
@@ -5349,12 +5763,12 @@ msgctxt "Head/Favorites/Title"
 msgid "Your Favorites"
 msgstr "Gogokoak"
 
-#: front/src/components/Home.vue:109
-msgctxt "Content/Home/Title"
-msgid "Your music, your way"
+#: front/src/views/Notifications.vue:5
+msgctxt "Content/Notifications/Title"
+msgid "Your messages"
 msgstr ""
 
-#: front/src/views/Notifications.vue:4
+#: front/src/views/Notifications.vue:69
 #, fuzzy
 msgctxt "Content/Notifications/Title"
 msgid "Your notifications"
@@ -5374,41 +5788,38 @@ msgstr "Pasahitza arrakastaz eguneratu da"
 #: front/src/components/auth/Settings.vue:14
 #, fuzzy
 msgctxt "Content/Settings/Error message.Title"
-msgid "Your settings can't be updateds"
+msgid "Your settings can't be updated"
 msgstr "Ezarpenak eguneratuta"
 
 #: front/src/components/auth/Settings.vue:101
 msgctxt "Popup/Settings/List item"
-msgid ""
-"Your Subsonic password will be changed to a new, random one, logging you out"
-" from devices that used the old Subsonic password"
+msgid "Your Subsonic password will be changed to a new, random one, logging you out from devices that used the old Subsonic password"
 msgstr ""
 
-#: front/src/edits.js:47
-#, fuzzy
-msgctxt "*/*/*/Short, Noun"
-msgid "Position"
-msgstr "Deskribapena"
+#: front/src/entities.js:126
+msgctxt "*/*/*/Noun"
+msgid "MusicBrainz ID"
+msgstr ""
 
-#: front/src/edits.js:54
-#, fuzzy
-msgctxt "Content/Track/*/Noun"
-msgid "Copyright"
-msgstr "Kopiatu"
+#: front/src/main.js:110
+msgctxt "*/Error/Paragraph"
+msgid "You sent too many requests and have been rate limited, please try again in %{ delay }"
+msgstr ""
+
+#: front/src/main.js:113
+msgctxt "*/Error/Paragraph"
+msgid "You sent too many requests and have been rate limited, please try again later"
+msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:183
+#: front/src/components/library/AlbumBase.vue:208
 #, fuzzy
 msgctxt "Content/Album/Header.Title"
-msgid ""
-"Album containing %{ count } track, by <a class=\"internal\" href=\"%{ "
-"artistUrl }\">%{ artist }</a>"
-msgid_plural ""
-"Album containing %{ count } tracks, by <a class=\"internal\" href=\"%{ "
-"artistUrl }\">%{ artist }</a>"
+msgid "Album containing %{ count } track, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgid_plural "Album containing %{ count } tracks, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
 msgstr[0] "Albumak abesti %{ count } du. Artista: %{ artist }"
 msgstr[1] "Albumak %{ count } abesti ditu. Artista: %{ artist }"
 
-#: front/src/components/audio/PlayButton.vue:220
+#: front/src/components/audio/PlayButton.vue:246
 msgctxt "*/Queue/Message"
 msgid "%{ count } track was added to your queue"
 msgid_plural "%{ count } tracks were added to your queue"
diff --git a/front/locales/fr_FR/LC_MESSAGES/app.po b/front/locales/fr_FR/LC_MESSAGES/app.po
index bb9db8d34749fec1b5e959ac26a00dc9b5d90816..c5b9359d6f052f1769a989b41bd7ad662b18e3d1 100644
--- a/front/locales/fr_FR/LC_MESSAGES/app.po
+++ b/front/locales/fr_FR/LC_MESSAGES/app.po
@@ -3,16 +3,17 @@ msgid ""
 msgstr ""
 "Project-Id-Version: French (Funkwhale)\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-05-16 10:35+0200\n"
-"PO-Revision-Date: 2019-05-16 07:47+0000\n"
-"Last-Translator: Pierrick <contact@pierrick.io>\n"
-"Language-Team: French <https://translate.funkwhale.audio/projects/funkwhale/front/fr/>\n"
+"POT-Creation-Date: 2019-10-01 15:15+0200\n"
+"PO-Revision-Date: 2019-10-03 17:13+0000\n"
+"Last-Translator: Mélanie Chauvel <perso@hack-libre.org>\n"
+"Language-Team: French <https://translate.funkwhale.audio/projects/funkwhale/"
+"front/fr/>\n"
 "Language: fr_FR\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Generator: Weblate 3.2.2\n"
+"X-Generator: Weblate 3.7\n"
 
 #: front/src/components/playlists/PlaylistModal.vue:9
 msgctxt "Popup/Playlist/Paragraph"
@@ -32,7 +33,49 @@ msgstr "(vide)"
 #: front/src/components/auth/Authorize.vue:16
 msgctxt "Content/Auth/Title"
 msgid "%{ app } wants to access your Funkwhale account"
-msgstr "%{ app } Veut accéder à votre compte funkwhale"
+msgstr "%{ app } veut accéder à votre compte Funkwhale"
+
+#: front/src/components/About.vue:173 src/components/Home.vue:56
+msgctxt "Content/Home/Stat"
+msgid "%{ count } active user"
+msgid_plural "%{ count } active users"
+msgstr[0] "%{ count } compte actif"
+msgstr[1] "%{ count } comptes actifs"
+
+#: front/src/components/About.vue:182
+msgctxt "Content/Home/Stat"
+msgid "%{ count } albums"
+msgid_plural "%{ count } albums"
+msgstr[0] "%{ count } album"
+msgstr[1] "%{ count } albums"
+
+#: front/src/components/About.vue:152
+msgctxt "*/*/*"
+msgid "%{ count } allowed domains"
+msgid_plural "%{ count } allowed domains"
+msgstr[0] "%{ count } domaine autorisé"
+msgstr[1] "%{ count } domaines autorisés"
+
+#: front/src/components/About.vue:179
+msgctxt "Content/Home/Stat"
+msgid "%{ count } artists"
+msgid_plural "%{ count } artists"
+msgstr[0] "%{ count } artiste"
+msgstr[1] "%{ count } artistes"
+
+#: front/src/components/About.vue:176 src/components/Home.vue:59
+msgctxt "Content/Home/Stat"
+msgid "%{ count } hour of music"
+msgid_plural "%{ count } hours of music"
+msgstr[0] "%{ count } heure de musique"
+msgstr[1] "%{ count } heures de musique"
+
+#: front/src/components/About.vue:188
+msgctxt "Content/Home/Stat"
+msgid "%{ count } listenings"
+msgid_plural "%{ count } listenings"
+msgstr[0] "%{ count } écoute"
+msgstr[1] "%{ count } écoutes"
 
 #: front/src/components/common/ActionTable.vue:68
 msgctxt "Content/*/Paragraph"
@@ -41,9 +84,9 @@ msgid_plural "%{ count } on %{ total } selected"
 msgstr[0] "%{ count } sur %{ total } élément sélectionné"
 msgstr[1] "%{ count } sur %{ total } éléments sélectionnés"
 
-#: front/src/components/Sidebar.vue:121 src/components/audio/album/Card.vue:52
+#: front/src/components/Sidebar.vue:125 src/components/audio/album/Card.vue:52
 #: front/src/views/content/libraries/Card.vue:40
-#: src/views/content/remote/Card.vue:30
+#: src/views/content/remote/Card.vue:43
 msgctxt "*/*/*"
 msgid "%{ count } track"
 msgid_plural "%{ count } tracks"
@@ -64,7 +107,14 @@ msgid_plural "%{ count } tracks matching combined filters"
 msgstr[0] "%{ count } piste correspondante aux filtres sélectionnés"
 msgstr[1] "%{ count } pistes correspondantes aux filtres sélectionnés"
 
-#: front/src/components/playlists/Card.vue:18
+#: front/src/components/About.vue:185
+msgctxt "Content/Home/Stat"
+msgid "%{ count } tracks"
+msgid_plural "%{ count } tracks"
+msgstr[0] "%{ count } piste"
+msgstr[1] "%{ count } pistes"
+
+#: front/src/components/playlists/Card.vue:28
 msgctxt "Content/*/Card/List item"
 msgid "%{ count} track"
 msgid_plural "%{ count } tracks"
@@ -89,8 +139,7 @@ msgstr "%{ minutes } min"
 #: front/src/components/notifications/NotificationRow.vue:40
 msgctxt "Content/Notifications/Paragraph"
 msgid "%{ username } accepted your follow on library \"%{ library }\""
-msgstr ""
-"%{ username } a accepté votre suivi de la bibliothèque « %{ library } »"
+msgstr "%{ username } a accepté votre suivi de la bibliothèque « %{ library } »"
 
 #: front/src/components/notifications/NotificationRow.vue:39
 msgctxt "Content/Notifications/Paragraph"
@@ -109,12 +158,10 @@ msgstr "Profil de %{ username }"
 
 #: front/src/components/playlists/PlaylistModal.vue:21
 msgctxt "Popup/Playlist/Paragraph"
-msgid ""
-"<strong>%{ track }</strong> is already in <strong>%{ playlist }</strong>."
-msgstr ""
-"<strong>%{ track }</strong> est déjà dans <strong>%{ playlist }</strong>."
+msgid "<strong>%{ track }</strong> is already in <strong>%{ playlist }</strong>."
+msgstr "<strong>%{ track }</strong> est déjà dans <strong>%{ playlist }</strong>."
 
-#: front/src/components/audio/artist/Card.vue:41
+#: front/src/components/audio/artist/Card.vue:11
 msgctxt "Content/Artist/Card"
 msgid "1 album"
 msgid_plural "%{ count } albums"
@@ -128,32 +175,49 @@ msgid_plural "%{ count } favorites"
 msgstr[0] "1 favori"
 msgstr[1] "%{ count } favoris"
 
-#: front/src/components/Home.vue:64
-msgctxt "Content/Home/Title"
-msgid "A clean library"
-msgstr "Une bibliothèque propre"
+#: front/src/components/audio/artist/Card.vue:15
+msgctxt "Content/Artist/Card"
+msgid "1 track"
+msgid_plural "%{ count } tracks"
+msgstr[0] "1 piste"
+msgstr[1] "%{ count } pistes"
+
+#: front/src/views/Notifications.vue:21 src/views/Notifications.vue:55
+msgctxt "*/*/*"
+msgid "30 days"
+msgstr "30 jours"
+
+#: front/src/views/Notifications.vue:22 src/views/Notifications.vue:56
+msgctxt "*/*/*"
+msgid "60 days"
+msgstr "60 jours"
+
+#: front/src/views/Notifications.vue:23 src/views/Notifications.vue:57
+msgctxt "*/*/*"
+msgid "90 days"
+msgstr "90 jours"
 
 #: front/src/components/library/FileUpload.vue:264
 msgctxt "Content/Library/Help text"
-msgid "A network error occured while uploading this file"
-msgstr "Une erreur réseau s'est produite lors du téléversement de ce fichier"
+msgid "A network error occurred while uploading this file"
+msgstr "Une erreur réseau s'est produite lors de l'envoi de ce fichier"
 
-#: front/src/components/library/EditForm.vue:145
+#: front/src/components/library/EditForm.vue:161
 msgctxt "*/*/Placeholder"
 msgid "A short summary describing your changes."
 msgstr "Une courte description décrivant vos changements."
 
 #: front/src/components/About.vue:5
-msgctxt "Content/About/Title/Short, Noun"
-msgid "About %{ instance }"
-msgstr "À propos de %{ instance }"
+msgctxt "Content/Home/Header"
+msgid "About %{ podName }"
+msgstr "À propos de %{ podName }"
 
 #: front/src/components/Footer.vue:6
 msgctxt "Footer/About/Title"
 msgid "About %{instanceName}"
 msgstr "À propos de %{instanceName}"
 
-#: front/src/components/Footer.vue:45
+#: front/src/components/Footer.vue:53 src/components/Home.vue:85
 msgctxt "Footer/*/Title/Short"
 msgid "About Funkwhale"
 msgstr "À propos de Funkwhale"
@@ -163,10 +227,15 @@ msgctxt "Footer/About/List item.Link"
 msgid "About page"
 msgstr "À propos"
 
-#: front/src/components/About.vue:8 src/components/About.vue:67
-msgctxt "Content/About/Title"
-msgid "About this instance"
-msgstr "À propos de cette instance"
+#: front/src/components/Home.vue:19
+msgctxt "Content/Home/Header"
+msgid "About this Funkwhale pod"
+msgstr "À propos de ce pod Funkwhale"
+
+#: front/src/components/About.vue:21 src/components/About.vue:51
+msgctxt "Content/About/Header"
+msgid "About this pod"
+msgstr "À propos de ce pod"
 
 #: front/src/views/content/libraries/Detail.vue:48
 msgctxt "Content/Library/Button.Label"
@@ -178,96 +247,87 @@ msgctxt "Content/Library/Table/Short"
 msgid "Accepted"
 msgstr "Accepté"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:110
+#: front/src/components/auth/SubsonicTokenForm.vue:117
 msgctxt "Content/Settings/Message"
 msgid "Access disabled"
 msgstr "Accès désactivé"
 
-#: front/src/components/mixins/Translations.vue:73
-#: front/src/components/mixins/Translations.vue:74
+#: front/src/components/mixins/Translations.vue:85
+#: front/src/components/mixins/Translations.vue:86
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to audio files, libraries, artists, albums and tracks"
-msgstr "Accès aux fichiers audio, librairies, artistes, albums et pistes"
+msgstr "Accès aux fichiers audio, bibliothèques, artistes, albums et pistes"
 
-#: front/src/components/mixins/Translations.vue:97
-#: front/src/components/mixins/Translations.vue:98
+#: front/src/components/mixins/Translations.vue:109
+#: front/src/components/mixins/Translations.vue:110
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to content filters"
 msgstr "Accès aux filtres de contenu"
 
-#: front/src/components/mixins/Translations.vue:105
-#: front/src/components/mixins/Translations.vue:106
+#: front/src/components/mixins/Translations.vue:117
+#: front/src/components/mixins/Translations.vue:118
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to edits"
 msgstr "Accès aux modifications"
 
-#: front/src/components/mixins/Translations.vue:69
-#: front/src/components/mixins/Translations.vue:70
+#: front/src/components/mixins/Translations.vue:81
+#: front/src/components/mixins/Translations.vue:82
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to email, username, and profile information"
 msgstr "Accès au courriel, nom d'utilisateur et informations du profil"
 
-#: front/src/components/mixins/Translations.vue:77
-#: front/src/components/mixins/Translations.vue:78
+#: front/src/components/mixins/Translations.vue:89
+#: front/src/components/mixins/Translations.vue:90
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to favorites"
 msgstr "Accès aux favoris"
 
-#: front/src/components/mixins/Translations.vue:85
-#: front/src/components/mixins/Translations.vue:86
+#: front/src/components/mixins/Translations.vue:97
+#: front/src/components/mixins/Translations.vue:98
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to follows"
-msgstr "Accès aux suivis"
+msgstr "Accès aux abonnements"
 
-#: front/src/components/mixins/Translations.vue:81
-#: front/src/components/mixins/Translations.vue:82
+#: front/src/components/mixins/Translations.vue:93
+#: front/src/components/mixins/Translations.vue:94
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to listening history"
 msgstr "Accès à l'historique d'écoute"
 
-#: front/src/components/mixins/Translations.vue:101
-#: front/src/components/mixins/Translations.vue:102
+#: front/src/components/mixins/Translations.vue:113
+#: front/src/components/mixins/Translations.vue:114
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to notifications"
 msgstr "Accès aux notifications"
 
-#: front/src/components/mixins/Translations.vue:89
-#: front/src/components/mixins/Translations.vue:90
+#: front/src/components/mixins/Translations.vue:101
+#: front/src/components/mixins/Translations.vue:102
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to playlists"
 msgstr "Accès aux listes de lecture"
 
-#: front/src/components/mixins/Translations.vue:93
-#: front/src/components/mixins/Translations.vue:94
+#: front/src/components/mixins/Translations.vue:105
+#: front/src/components/mixins/Translations.vue:106
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to radios"
 msgstr "Accès aux radios"
 
-#: front/src/components/Home.vue:101
-msgctxt "Content/Home/List item"
-msgid ""
-"Access your music from a clean interface that focuses on what really matters"
-msgstr ""
-"Accédez à votre musique depuis une interface épurée qui se concentre sur ce "
-"qui compte vraiment"
-
 #: front/src/components/manage/library/UploadsTable.vue:67
-#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:55
 #: front/src/views/admin/library/UploadDetail.vue:175
-#: front/src/components/mixins/Translations.vue:46
+#: front/src/components/mixins/Translations.vue:56
 msgctxt "Content/*/*/Noun"
 msgid "Accessed date"
 msgstr "Date d'accès"
 
-#: front/src/views/admin/library/LibraryDetail.vue:104
-#: front/src/views/admin/library/UploadDetail.vue:111
-msgctxt "*/*/*/Noun"
-msgid "Account"
-msgstr "Compte"
-
 #: front/src/components/manage/library/LibrariesTable.vue:49
 #: front/src/components/manage/library/UploadsTable.vue:61
-msgctxt "*/*/*"
+#: front/src/components/manage/moderation/ReportCard.vue:156
+#: front/src/components/mixins/Report.vue:13
+#: front/src/views/admin/library/LibraryDetail.vue:113
+#: front/src/views/admin/library/UploadDetail.vue:111
+#: front/src/components/mixins/Report.vue:14
+msgctxt "*/*/*/Noun"
 msgid "Account"
 msgstr "Compte"
 
@@ -281,7 +341,7 @@ msgctxt "Content/Settings/Title"
 msgid "Account settings"
 msgstr "Paramètres du compte"
 
-#: front/src/components/auth/Settings.vue:479
+#: front/src/components/auth/Settings.vue:544
 msgctxt "Head/Settings/Title"
 msgid "Account Settings"
 msgstr "Paramètres du compte"
@@ -298,7 +358,7 @@ msgstr "Courriel du compte"
 
 #: front/src/views/admin/moderation/AccountsList.vue:3
 #: front/src/views/admin/moderation/AccountsList.vue:24
-#: front/src/views/admin/moderation/Base.vue:8
+#: front/src/views/admin/moderation/Base.vue:11
 msgctxt "*/Moderation/Title"
 msgid "Accounts"
 msgstr "Comptes"
@@ -311,31 +371,30 @@ msgstr "Action"
 #: front/src/components/common/ActionTable.vue:101
 msgctxt "Content/*/Paragraph"
 msgid "Action %{ action } was launched successfully on %{ count } element"
-msgid_plural ""
-"Action %{ action } was launched successfully on %{ count } elements"
-msgstr[0] ""
-"L'action %{ action } a été lancée avec succès sur %{ count } élément"
-msgstr[1] ""
-"L'action %{ action } a été lancée avec succès sur %{ count } éléments"
+msgid_plural "Action %{ action } was launched successfully on %{ count } elements"
+msgstr[0] "L'action %{ action } a été lancée avec succès sur %{ count } élément"
+msgstr[1] "L'action %{ action } a été lancée avec succès sur %{ count } éléments"
 
 #: front/src/components/common/ActionTable.vue:22
 #: front/src/components/library/radios/Builder.vue:65
+#: front/src/components/manage/moderation/ReportCard.vue:210
 msgctxt "Content/*/*/Noun"
 msgid "Actions"
 msgstr "Actions"
 
-#: front/src/components/manage/users/UsersTable.vue:53
+#: front/src/components/manage/users/UsersTable.vue:54
 msgctxt "Content/Admin/Table"
 msgid "Active"
 msgstr "Actif"
 
-#: front/src/views/admin/library/AlbumDetail.vue:134
-#: front/src/views/admin/library/ArtistDetail.vue:123
-#: front/src/views/admin/library/LibraryDetail.vue:138
-#: front/src/views/admin/library/TrackDetail.vue:186
+#: front/src/views/admin/library/AlbumDetail.vue:140
+#: front/src/views/admin/library/ArtistDetail.vue:128
+#: front/src/views/admin/library/LibraryDetail.vue:147
+#: front/src/views/admin/library/TagDetail.vue:83
+#: front/src/views/admin/library/TrackDetail.vue:192
 #: front/src/views/admin/library/UploadDetail.vue:160
-#: front/src/views/admin/moderation/AccountsDetail.vue:220
-#: front/src/views/admin/moderation/DomainsDetail.vue:136
+#: front/src/views/admin/moderation/AccountsDetail.vue:221
+#: front/src/views/admin/moderation/DomainsDetail.vue:173
 msgctxt "Content/Moderation/Title"
 msgid "Activity"
 msgstr "Activité"
@@ -346,7 +405,7 @@ msgctxt "Content/Settings/Dropdown.Label/Noun"
 msgid "Activity visibility"
 msgstr "Visibilité de l'activité"
 
-#: front/src/views/admin/moderation/DomainsList.vue:18
+#: front/src/views/admin/moderation/DomainsList.vue:22
 msgctxt "Content/Moderation/Button/Verb"
 msgid "Add"
 msgstr "Ajouter"
@@ -392,7 +451,19 @@ msgctxt "Content/Radio/Paragraph"
 msgid "Add filters to customize your radio"
 msgstr "Ajouter des filtres pour personnaliser votre radio"
 
-#: front/src/components/audio/PlayButton.vue:75
+#: front/src/components/manage/moderation/NoteForm.vue:12
+msgctxt "Content/Moderation/Button.Label/Verb"
+msgid "Add note"
+msgstr "Ajouter une note"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:191
+#: front/src/views/admin/moderation/DomainsDetail.vue:46
+#: front/src/views/admin/moderation/DomainsList.vue:18
+msgctxt "Content/Moderation/Action/Verb"
+msgid "Add to allow-list"
+msgstr "Ajouter à la liste d'autorisations"
+
+#: front/src/components/audio/PlayButton.vue:91
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Add to current queue"
 msgstr "Ajouter à la file d'attente actuelle"
@@ -424,7 +495,7 @@ msgctxt "Popup/Playlist/Table.Button.Label/Verb"
 msgid "Add track"
 msgstr "Ajouter la piste"
 
-#: front/src/components/manage/users/UsersTable.vue:69
+#: front/src/components/manage/users/UsersTable.vue:70
 msgctxt "Content/Admin/Table.User role"
 msgid "Admin"
 msgstr "Admin"
@@ -434,49 +505,49 @@ msgctxt "Sidebar/Admin/Title/Noun"
 msgid "Administration"
 msgstr "Administration"
 
-#: front/src/views/admin/library/TrackDetail.vue:107
-msgctxt "*/*/*/Noun"
-msgid "Album"
-msgstr "Album"
-
-#: front/src/components/audio/SearchBar.vue:26
+#: front/src/components/audio/SearchBar.vue:33
 #: src/components/audio/track/Table.vue:9
-#: front/src/components/library/AlbumBase.vue:152
-#: front/src/components/library/ArtistBase.vue:194
+#: front/src/components/library/AlbumBase.vue:170
+#: front/src/components/library/ArtistBase.vue:212
 #: front/src/components/manage/library/TracksTable.vue:40
 #: front/src/components/metadata/Search.vue:134
+#: src/components/mixins/Report.vue:41
+#: front/src/views/admin/library/TrackDetail.vue:113
 #: front/src/views/content/libraries/FilesTable.vue:57
+#: front/src/components/mixins/Report.vue:42
 msgctxt "*/*/*"
 msgid "Album"
 msgstr "Album"
 
-#: front/src/views/admin/library/TrackDetail.vue:128
+#: front/src/views/admin/library/TrackDetail.vue:134
 msgctxt "*/*/*/Noun"
 msgid "Album artist"
 msgstr "Artiste de cet album"
 
-#: front/src/views/admin/library/AlbumDetail.vue:92
+#: front/src/views/admin/library/AlbumDetail.vue:98
 msgctxt "Content/Moderation/Title"
 msgid "Album data"
 msgstr "Données de l'album"
 
-#: front/src/components/mixins/Translations.vue:51
-#: front/src/components/mixins/Translations.vue:52
+#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/mixins/Translations.vue:62
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Album name"
 msgstr "Nom de l'album"
 
 #: front/src/components/audio/Search.vue:19
-#: src/components/instance/Stats.vue:48
-#: front/src/components/library/Albums.vue:120
-#: src/components/library/Library.vue:7
+#: src/components/library/Albums.vue:129
+#: front/src/components/library/Library.vue:7
+#: src/components/library/TagDetail.vue:28
 #: front/src/components/manage/library/ArtistsTable.vue:41
+#: front/src/components/manage/library/TagsTable.vue:43
 #: front/src/views/admin/library/AlbumsList.vue:24
-#: front/src/views/admin/library/ArtistDetail.vue:241
+#: front/src/views/admin/library/ArtistDetail.vue:256
 #: front/src/views/admin/library/Base.vue:11
-#: front/src/views/admin/library/LibraryDetail.vue:219
-#: front/src/views/admin/moderation/AccountsDetail.vue:354
-#: front/src/views/admin/moderation/DomainsDetail.vue:264
+#: front/src/views/admin/library/LibraryDetail.vue:238
+#: front/src/views/admin/library/TagDetail.vue:133
+#: front/src/views/admin/moderation/AccountsDetail.vue:366
+#: front/src/views/admin/moderation/DomainsDetail.vue:301
 msgctxt "*/*/*"
 msgid "Albums"
 msgstr "Albums"
@@ -490,7 +561,10 @@ msgstr "Albums de cet·te artiste"
 #: front/src/components/manage/library/LibrariesTable.vue:13
 #: front/src/components/manage/library/UploadsTable.vue:13
 #: front/src/components/manage/library/UploadsTable.vue:22
+#: front/src/components/manage/moderation/DomainsTable.vue:11
 #: front/src/components/manage/users/InvitationsTable.vue:19
+#: front/src/components/moderation/ReportCategoryDropdown.vue:32
+#: front/src/views/admin/moderation/ReportsList.vue:17
 #: front/src/views/content/libraries/FilesTable.vue:13
 msgctxt "Content/*/Dropdown"
 msgid "All"
@@ -508,44 +582,52 @@ msgctxt "Head/Authorize/Title"
 msgid "Allow application"
 msgstr "Autoriser l'application"
 
+#: front/src/components/About.vue:136
+msgctxt "*/*/*"
+msgid "Allow-list"
+msgstr "Liste d'autorisation"
+
+#: front/src/components/About.vue:149
+msgctxt "*/*/*"
+msgid "Allowed domains"
+msgstr "Domaines autorisés"
+
 #: front/src/components/library/ImportStatusModal.vue:17
 msgctxt "Popup/Import/Message"
-msgid ""
-"An error occured during upload processing. You will find more information "
-"below."
+msgid "An error occurred during upload processing. You will find more information below."
 msgstr ""
 "Une erreur a eu lieu durant le processus de téléversement. Vous trouverez "
 "plus d'information ci-dessous."
 
 #: front/src/components/playlists/Editor.vue:13
 msgctxt "Content/Playlist/Error message.Title"
-msgid "An error occured while saving your changes"
-msgstr ""
-"Une erreur s'est produite pendant l'enregistrement de vos modifications"
+msgid "An error occurred while saving your changes"
+msgstr "Une erreur s'est produite pendant l'enregistrement de vos modifications"
 
 #: front/src/components/federation/FetchButton.vue:21
 msgctxt "Popup/*/Message.Content"
-msgid "An error occured while trying to refresh data:"
-msgstr "Une erreur s'est produite pendant la mise à jour des données:"
+msgid "An error occurred while trying to refresh data:"
+msgstr "Une erreur s'est produite pendant la mise à jour des données :"
 
 #: front/src/components/federation/FetchButton.vue:41
 msgctxt "*/*/Error"
-msgid "An HTTP error occured while contacting the remote server"
+msgid "An HTTP error occurred while contacting the remote server"
 msgstr "Une erreur HTTP s'est produite en contactant le serveur distant"
 
-#: front/src/components/auth/Login.vue:10
-msgctxt "Content/Login/Error message/List item"
-msgid ""
-"An unknown error happend, this can mean the server is down or cannot be "
-"reached"
-msgstr ""
-"Une erreur inconnue s'est produite, le serveur est peut-être en panne ou "
-"injoignable"
-
 #: front/src/components/library/ImportStatusModal.vue:145
 msgctxt "Popup/Import/Error.Label"
-msgid "An unkwown error occured"
-msgstr "Une erreur inconnue a eu lieu"
+msgid "An unknown error occurred"
+msgstr "Une erreur inconnue s'est produite"
+
+#: front/src/components/About.vue:123
+msgctxt "*/*/*"
+msgid "Anonymous access"
+msgstr "Accès anonyme"
+
+#: front/src/components/moderation/ReportModal.vue:54
+msgctxt "Popup/Moderation/Error message"
+msgid "Anonymous reports are disabled, please sign-in to submit a report."
+msgstr "Les signalements anonymes sont désactivés, inscrivez-vous pour faire un signalement."
 
 #: front/src/components/auth/Settings.vue:175
 #: src/components/auth/Settings.vue:225
@@ -565,13 +647,8 @@ msgstr "ID de l'application"
 
 #: front/src/components/auth/ApplicationEdit.vue:16
 msgctxt "Content/Application/Paragraph/"
-msgid ""
-"Application ID and secret are really sensitive values and must be treated "
-"like passwords. Do not share those with anyone else."
-msgstr ""
-"L'ID et le \"secret\" de l'application sont des données vraiment sensibles "
-"et doivent être traitées comme des mots de passe. Ne les partagez avec "
-"personne."
+msgid "Application ID and secret are really sensitive values and must be treated like passwords. Do not share those with anyone else."
+msgstr "L'ID et le \"secret\" de l'application sont des données vraiment sensibles et doivent être traitées comme des mots de passe. Ne les partagez avec personne."
 
 #: front/src/components/auth/ApplicationEdit.vue:25
 msgctxt "Content/Applications/Label"
@@ -600,29 +677,27 @@ msgctxt "Content/Login/Title"
 msgid "Are you sure you want to log out?"
 msgstr "Êtes-vous sûr·e de vouloir vous déconnecter ?"
 
+#: front/src/components/audio/SearchBar.vue:32
+#: src/components/audio/track/Table.vue:8
 #: front/src/components/manage/library/AlbumsTable.vue:40
 #: front/src/components/manage/library/TracksTable.vue:41
-msgctxt "*/*/*"
-msgid "Artist"
-msgstr "Artiste"
-
-#: front/src/components/audio/SearchBar.vue:25
-#: src/components/audio/track/Table.vue:8
 #: front/src/components/metadata/Search.vue:130
-#: front/src/views/admin/library/AlbumDetail.vue:108
-#: front/src/views/admin/library/TrackDetail.vue:118
-#: front/src/views/content/libraries/FilesTable.vue:56
+#: src/components/mixins/Report.vue:55
+#: front/src/views/admin/library/AlbumDetail.vue:114
+#: front/src/views/admin/library/TrackDetail.vue:124
+#: front/src/views/content/libraries/FilesTable.vue:56 src/entities.js:12
+#: front/src/components/mixins/Report.vue:56
 msgctxt "*/*/*/Noun"
 msgid "Artist"
 msgstr "Artiste"
 
-#: front/src/views/admin/library/ArtistDetail.vue:91
+#: front/src/views/admin/library/ArtistDetail.vue:96
 msgctxt "Content/Moderation/Title"
 msgid "Artist data"
 msgstr "Données de l'artiste"
 
-#: front/src/components/mixins/Translations.vue:52
-#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/mixins/Translations.vue:62
+#: front/src/components/mixins/Translations.vue:63
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Artist name"
 msgstr "Nom de l'artiste"
@@ -632,36 +707,36 @@ msgctxt "*/Search/Input.Placeholder"
 msgid "Artist, album, track…"
 msgstr "Artiste, album, piste…"
 
+#: front/src/components/audio/Search.vue:10
+#: src/components/library/Artists.vue:117
+#: front/src/components/library/Library.vue:10
+#: front/src/components/library/TagDetail.vue:19
+#: front/src/components/manage/library/TagsTable.vue:42
 #: front/src/views/admin/library/ArtistsList.vue:24
 #: front/src/views/admin/library/Base.vue:8
-#: front/src/views/admin/library/LibraryDetail.vue:209
-msgctxt "*/*/*"
-msgid "Artists"
-msgstr "Artistes"
-
-#: front/src/components/audio/Search.vue:10
-#: src/components/instance/Stats.vue:42
-#: front/src/components/library/Artists.vue:117
-#: src/components/library/Library.vue:10
-#: front/src/views/admin/moderation/AccountsDetail.vue:346
-#: front/src/views/admin/moderation/DomainsDetail.vue:254
+#: front/src/views/admin/library/LibraryDetail.vue:228
+#: front/src/views/admin/library/TagDetail.vue:123
+#: front/src/views/admin/moderation/AccountsDetail.vue:358
+#: front/src/views/admin/moderation/DomainsDetail.vue:291
 msgctxt "*/*/*/Noun"
 msgid "Artists"
 msgstr "Artistes"
 
 #: front/src/components/favorites/List.vue:34
-#: src/components/library/Albums.vue:25
-#: front/src/components/library/Artists.vue:25
+#: src/components/library/Albums.vue:29
+#: front/src/components/library/Artists.vue:29
 #: src/components/library/Radios.vue:44
 #: front/src/components/manage/library/AlbumsTable.vue:21
 #: front/src/components/manage/library/ArtistsTable.vue:21
 #: front/src/components/manage/library/EditsCardList.vue:39
 #: front/src/components/manage/library/LibrariesTable.vue:30
+#: front/src/components/manage/library/TagsTable.vue:21
 #: front/src/components/manage/library/TracksTable.vue:21
 #: front/src/components/manage/library/UploadsTable.vue:40
 #: front/src/components/manage/moderation/AccountsTable.vue:21
-#: front/src/components/manage/moderation/DomainsTable.vue:19
+#: front/src/components/manage/moderation/DomainsTable.vue:27
 #: front/src/components/manage/users/UsersTable.vue:19
+#: front/src/views/admin/moderation/ReportsList.vue:44
 #: front/src/views/content/libraries/FilesTable.vue:31
 #: front/src/views/playlists/List.vue:27
 msgctxt "Content/Search/Dropdown"
@@ -673,18 +748,24 @@ msgctxt "Content/Signup/Button.Label/Verb"
 msgid "Ask for a password reset"
 msgstr "Demander la réinitialisation du mot de passe"
 
-#: front/src/views/admin/library/AlbumDetail.vue:198
-#: front/src/views/admin/library/ArtistDetail.vue:187
-#: front/src/views/admin/library/LibraryDetail.vue:176
-#: front/src/views/admin/library/TrackDetail.vue:250
+#: front/src/components/manage/moderation/ReportCard.vue:72
+msgctxt "Content/Moderation/*"
+msgid "Assigned to"
+msgstr "Assigné à"
+
+#: front/src/views/admin/library/AlbumDetail.vue:214
+#: front/src/views/admin/library/ArtistDetail.vue:202
+#: front/src/views/admin/library/LibraryDetail.vue:195
+#: front/src/views/admin/library/TagDetail.vue:113
+#: front/src/views/admin/library/TrackDetail.vue:266
 #: front/src/views/admin/library/UploadDetail.vue:191
-#: front/src/views/admin/moderation/AccountsDetail.vue:274
-#: front/src/views/admin/moderation/DomainsDetail.vue:202
+#: front/src/views/admin/moderation/AccountsDetail.vue:285
+#: front/src/views/admin/moderation/DomainsDetail.vue:239
 msgctxt "Content/Moderation/Title"
 msgid "Audio content"
 msgstr "Contenu audio"
 
-#: front/src/components/ShortcutsModal.vue:55
+#: front/src/components/ShortcutsModal.vue:92
 msgctxt "Popup/Keyboard shortcuts/Title"
 msgid "Audio player shortcuts"
 msgstr "Raccourcis du lecteur audio"
@@ -727,12 +808,12 @@ msgid "Back to settings"
 msgstr "Retour aux paramètres"
 
 #: front/src/components/library/TrackDetail.vue:48
-#: front/src/components/mixins/Translations.vue:55
+#: front/src/components/mixins/Translations.vue:67
 #: front/src/views/admin/library/UploadDetail.vue:227
-#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:68
 msgctxt "Content/Track/*/Noun"
 msgid "Bitrate"
-msgstr "Débit binaire"
+msgstr "Bitrate"
 
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:19
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:34
@@ -742,13 +823,8 @@ msgstr "Bloquer tout"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:112
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Block everything from this account or domain. This will prevent any "
-"interaction with the entity, and purge related content (uploads, libraries, "
-"follows, etc.)"
-msgstr ""
-"Bloquer tout de ce compte ou domaine. Cela empêche toute interaction avec "
-"l'entité, et purge le contenu lié (pistes, librairies, suivis, etc.)"
+msgid "Block everything from this account or domain. This will prevent any interaction with the entity, and purge related content (uploads, libraries, follows, etc.)"
+msgstr "Bloquer tout de ce compte ou domaine. Cela empêche toute interaction avec l'entité, et purge le contenu lié (pistes, librairies, suivis, etc.)"
 
 #: front/src/components/Sidebar.vue:18 src/components/library/Library.vue:4
 msgctxt "*/Library/*/Verb"
@@ -760,6 +836,11 @@ msgctxt "Sidebar/Library/List item.Link/Verb"
 msgid "Browse library"
 msgstr "Parcourir la bibliothèque"
 
+#: front/src/components/Home.vue:132
+msgctxt "Content/Home/Link"
+msgid "Browse public content"
+msgstr "Parcourir le contenu public"
+
 #: front/src/components/library/Albums.vue:4
 msgctxt "Content/Album/Title"
 msgid "Browsing albums"
@@ -790,43 +871,43 @@ msgctxt "Content/Album/Card"
 msgid "By %{ artist }"
 msgstr "De %{ artist }"
 
-#: front/src/views/content/remote/Card.vue:112
+#: front/src/views/content/remote/Card.vue:125
 msgctxt "Popup/Library/Paragraph"
 msgid "By unfollowing this library, you loose access to its content."
-msgstr ""
-"En cessant de suivre cette bibliothèque, vous perdez l’accès à son contenu."
+msgstr "En cessant de suivre cette bibliothèque, vous perdez l’accès à son contenu."
 
-#: front/src/views/admin/library/AlbumDetail.vue:214
-#: front/src/views/admin/library/ArtistDetail.vue:203
-#: front/src/views/admin/library/LibraryDetail.vue:192
-#: front/src/views/admin/library/TrackDetail.vue:266
+#: front/src/views/admin/library/AlbumDetail.vue:230
+#: front/src/views/admin/library/ArtistDetail.vue:218
+#: front/src/views/admin/library/LibraryDetail.vue:211
+#: front/src/views/admin/library/TrackDetail.vue:282
 #: front/src/views/admin/library/UploadDetail.vue:208
-#: front/src/views/admin/moderation/AccountsDetail.vue:290
-#: front/src/views/admin/moderation/DomainsDetail.vue:217
+#: front/src/views/admin/moderation/AccountsDetail.vue:301
+#: front/src/views/admin/moderation/DomainsDetail.vue:254
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Cached size"
 msgstr "Taille du cache"
 
 #: front/src/components/SetInstanceModal.vue:37
 #: front/src/components/common/DangerousButton.vue:17
-#: front/src/components/library/AlbumBase.vue:36
-#: front/src/components/library/ArtistBase.vue:47
-#: front/src/components/library/EditForm.vue:95
-#: front/src/components/library/TrackBase.vue:55
+#: front/src/components/library/AlbumBase.vue:37
+#: front/src/components/library/ArtistBase.vue:48
+#: front/src/components/library/EditForm.vue:107
+#: front/src/components/library/TrackBase.vue:53
 #: front/src/components/library/radios/Filter.vue:53
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:54
 #: front/src/components/moderation/FilterModal.vue:39
+#: front/src/components/moderation/ReportModal.vue:59
 #: front/src/components/playlists/PlaylistModal.vue:26
 #: front/src/components/playlists/PlaylistModal.vue:77
+#: front/src/views/playlists/Detail.vue:62
 msgctxt "*/*/Button.Label/Verb"
 msgid "Cancel"
 msgstr "Annuler"
 
-#: front/src/views/content/remote/Card.vue:97
-#, fuzzy
+#: front/src/views/content/remote/Card.vue:110
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Cancel follow request"
-msgstr "Demandes d'abonnement en attente"
+msgstr "Annuler la demande d'abonnement"
 
 #: front/src/components/library/radios/Builder.vue:64
 msgctxt "Content/Radio/Table.Label/Noun (Value is a number of Tracks)"
@@ -836,8 +917,15 @@ msgstr "Pistes candidates"
 #: front/src/components/library/FileUpload.vue:261
 msgctxt "Content/Library/Help text"
 msgid "Cannot upload this file, ensure it is not too big"
-msgstr ""
-"Impossible de transférer ce fichier, assurez-vous qu'il n'est pas trop gros"
+msgstr "Impossible de transférer ce fichier, assurez-vous qu'il n'est pas trop gros"
+
+#: front/src/components/manage/moderation/ReportCard.vue:30
+#: front/src/components/mixins/Translations.vue:42
+#: front/src/components/moderation/ReportCategoryDropdown.vue:2
+#: front/src/components/mixins/Translations.vue:43
+msgctxt "*/*/*"
+msgid "Category"
+msgstr "Catégorie"
 
 #: front/src/components/Footer.vue:21
 msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
@@ -854,6 +942,11 @@ msgctxt "Content/Settings/Button.Label"
 msgid "Change password"
 msgstr "Changer le mot de passe"
 
+#: front/src/components/Footer.vue:37
+msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
+msgid "Change theme"
+msgstr "Changer le thème"
+
 #: front/src/views/auth/PasswordResetConfirm.vue:62
 msgctxt "*/Signup/Title"
 msgid "Change your password"
@@ -871,43 +964,32 @@ msgstr "Changements synchronisés avec le serveur"
 
 #: front/src/components/auth/Settings.vue:71
 msgctxt "Content/Settings/Paragraph'"
-msgid ""
-"Changing your password will also change your Subsonic API password if you "
-"have requested one."
-msgstr ""
-"La mise à jour de votre mot de passe changera également le mot de passe de "
-"l'API Subsonic si vous en avez demandé un."
+msgid "Changing your password will also change your Subsonic API password if you have requested one."
+msgstr "La mise à jour de votre mot de passe changera également le mot de passe de l'API Subsonic si vous en avez demandé un."
 
 #: front/src/components/auth/Settings.vue:98
 msgctxt "Popup/Settings/Paragraph"
 msgid "Changing your password will have the following consequences:"
 msgstr "Modifier votre mot de passe aura les conséquences suivantes :"
 
-#: front/src/components/Footer.vue:40
+#: front/src/components/Footer.vue:48
 msgctxt "Footer/*/List item.Link"
 msgid "Chat room"
 msgstr "Salle de discussion"
 
 #: front/src/components/auth/ApplicationForm.vue:24
 msgctxt "Content/Applications/Paragraph/"
-msgid ""
-"Checking the parent \"Read\" or \"Write\" scopes implies access to all the "
-"corresponding children scopes."
-msgstr ""
-"Cocher le périmètre \"Lecture\" ou \"Écriture\" sur le parent implique "
-"l'accès à tous les périmètres enfants correspondants."
+msgid "Checking the parent \"Read\" or \"Write\" scopes implies access to all the corresponding children scopes."
+msgstr "Cocher le périmètre \"Lecture\" ou \"Écriture\" sur le parent implique l'accès à tous les périmètres enfants correspondants."
 
 #: front/src/components/SetInstanceModal.vue:2
 msgctxt "Popup/Instance/Title"
 msgid "Choose your instance"
 msgstr "Choisissez votre instance"
 
-#: front/src/components/manage/users/InvitationForm.vue:37
-msgctxt "Content/Admin/Button.Label/Verb"
-msgid "Clear"
-msgstr "Effacer"
-
 #: front/src/components/library/EditForm.vue:75
+#: front/src/components/library/EditForm.vue:88
+#: front/src/components/manage/users/InvitationForm.vue:37
 msgctxt "Content/Library/Button.Label"
 msgid "Clear"
 msgstr "Effacer"
@@ -918,50 +1000,45 @@ msgctxt "*/Playlist/Button.Label/Verb"
 msgid "Clear playlist"
 msgstr "Vider la liste de lecture"
 
-#: front/src/components/audio/Player.vue:642
+#: front/src/components/ShortcutsModal.vue:144
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Clear queue"
+msgstr "Vider la file d'attente"
+
+#: front/src/components/audio/Player.vue:668
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Clear your queue"
 msgstr "Vider la liste d'attente"
 
-#: front/src/components/Home.vue:44
-msgctxt "Content/Home/List item/Verb"
-msgid "Click once, listen for hours using built-in radios"
-msgstr ""
-"En un clic, écoutez de la musique pendant des heures grâce aux radios "
-"intégrées"
-
 #: front/src/components/mixins/Translations.vue:21
 #: front/src/components/mixins/Translations.vue:22
 msgctxt "Content/Library/Link.Title"
-msgid ""
-"Click to display more information about the import process for this upload"
-msgstr ""
-"Cliquer pour afficher plus d'information à propos du processus d'import pour"
-" cet envoi"
+msgid "Click to display more information about the import process for this upload"
+msgstr "Cliquer pour afficher plus d'information à propos du processus d'import pour cet envoi"
 
 #: front/src/components/library/FileUpload.vue:82
 msgctxt "Content/Library/Paragraph/Call to action"
 msgid "Click to select files to upload or drag and drop files or directories"
-msgstr ""
-"Cliquez pour sélectionner les fichiers a téléverser ou glisser-déposer les "
-"fichiers ou répertoires"
+msgstr "Cliquez pour sélectionner les fichiers a téléverser ou glisser-déposer les fichiers ou répertoires"
 
+#: front/src/components/ShortcutsModal.vue:38
 #: front/src/components/federation/FetchButton.vue:85
 #: front/src/components/library/ImportStatusModal.vue:79
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:34
 msgctxt "*/*/Button.Label/Verb"
 msgid "Close"
 msgstr "Fermer"
 
-#: front/src/components/ShortcutsModal.vue:20
-msgctxt "Popup/Keyboard shortcuts/Button.Label/Verb"
-msgid "Close"
-msgstr "Fermer"
-
 #: front/src/components/federation/FetchButton.vue:88
 msgctxt "*/*/Button.Label/Verb"
 msgid "Close and reload page"
 msgstr "Fermer et recharger la page"
 
+#: front/src/components/About.vue:94
+msgctxt "*/*/*/State of registrations"
+msgid "Closed"
+msgstr "Fermées"
+
 #: front/src/components/manage/users/InvitationForm.vue:26
 #: front/src/components/manage/users/InvitationsTable.vue:42
 msgctxt "Content/Admin/Table.Label/Noun"
@@ -969,8 +1046,8 @@ msgid "Code"
 msgstr "Code"
 
 #: front/src/components/audio/album/Card.vue:41
-#: front/src/components/audio/artist/Card.vue:33
-msgctxt "Content/*/Card.Link/Verb"
+#: front/src/components/common/CollapseLink.vue:3
+msgctxt "*/*/Button,Label"
 msgid "Collapse"
 msgstr "Réduire"
 
@@ -994,43 +1071,46 @@ msgctxt "Content/Signup/Form.Label"
 msgid "Confirmation code"
 msgstr "Code de confirmation"
 
+#: front/src/components/About.vue:67 src/components/Home.vue:65
+msgctxt "Content/Home/Header/Name"
+msgid "Contact"
+msgstr "Contact"
+
 #: front/src/components/moderation/FilterModal.vue:90
 msgctxt "*/Moderation/Message"
 msgid "Content filter successfully added"
 msgstr "Filtre de contenu ajouté avec succès"
 
-#: front/src/components/mixins/Translations.vue:96
-#: front/src/components/mixins/Translations.vue:97
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Content filters"
-msgstr "Filtres de contenu"
-
 #: front/src/components/auth/Settings.vue:116
+#: front/src/components/mixins/Translations.vue:108
+#: front/src/components/mixins/Translations.vue:109
 msgctxt "Content/Settings/Title/Noun"
 msgid "Content filters"
 msgstr "Filtres de contenu"
 
 #: front/src/components/auth/Settings.vue:119
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"Content filters help you hide content you don't want to see on the service."
-msgstr ""
-"Les filtres de contenu vous aident à cacher les contenus que vous ne voulez "
-"pas voir sur ce service."
+msgid "Content filters help you hide content you don't want to see on the service."
+msgstr "Les filtres de contenu vous aident à cacher les contenus que vous ne voulez pas voir sur ce service."
 
 #: front/src/components/common/ActionTable.vue:8
 msgctxt "Content/*/Button.Help text.Paragraph"
 msgid "Content have been updated, click refresh to see up-to-date content"
-msgstr ""
-"Le contenu a été modifié, cliquez sur rafraichir pour voir le contenu à jour"
+msgstr "Le contenu a été modifié, cliquez sur rafraichir pour voir le contenu à jour"
 
-#: front/src/components/Footer.vue:48
+#: front/src/components/About.vue:46
+msgctxt "Content/About/Header"
+msgid "Contents"
+msgstr "Contenu"
+
+#: front/src/components/Footer.vue:56
 msgctxt "Footer/*/List item.Link"
 msgid "Contribute"
 msgstr "Contribuer"
 
-#: front/src/components/audio/EmbedWizard.vue:19
+#: front/src/components/audio/EmbedWizard.vue:29
 #: front/src/components/common/CopyInput.vue:8
+#: front/src/components/forms/PasswordInput.vue:43
 msgctxt "*/*/Button.Label/Short, Verb"
 msgid "Copy"
 msgstr "Copier"
@@ -1043,16 +1123,16 @@ msgstr "Copier les pistes de la file d’attente dans la liste de lecture"
 #: front/src/components/auth/Authorize.vue:55
 msgctxt "Content/Auth/Paragraph"
 msgid "Copy-paste the following code in the application:"
-msgstr "Copiez-coller le code suivant dans votre application:"
+msgstr "Copiez-coller le code suivant dans votre application :"
 
-#: front/src/components/audio/EmbedWizard.vue:21
+#: front/src/components/audio/EmbedWizard.vue:31
 msgctxt "Popup/Embed/Paragraph"
 msgid "Copy/paste this code in your website HTML"
 msgstr "Copiez-collez ce code dans le HTML de votre site web"
 
 #: front/src/components/library/TrackDetail.vue:10
-#: front/src/views/admin/library/TrackDetail.vue:153
-msgctxt "Content/Track/Table.Label/Noun"
+#: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:77
+msgctxt "Content/Track/*/Noun"
 msgid "Copyright"
 msgstr "Copyright"
 
@@ -1066,29 +1146,20 @@ msgctxt "Content/Library/Error message.Title"
 msgid "Could not fetch remote library"
 msgstr "Impossible de récupérer la bibliothèque distante"
 
-#: front/src/components/Home.vue:80
-msgctxt "Content/Home/List item"
-msgid "Covers, lyrics, our goal is to have them all ;)"
-msgstr "Pochettes, paroles, notre but est de tout gérer ;)"
-
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:58
 msgctxt "Content/Moderation/Card.Button.Label/Verb"
 msgid "Create"
 msgstr "Créer"
 
-#: front/src/components/auth/Signup.vue:4
+#: front/src/views/auth/Signup.vue:4
 msgctxt "Content/Signup/Title"
 msgid "Create a funkwhale account"
 msgstr "Créer un compte Funkwhale"
 
-#: front/src/components/auth/Settings.vue:220
-msgctxt "Content/Settings/Button.Label"
-msgid "Create a new application"
-msgstr "Créer une nouvelle application"
-
 #: front/src/components/auth/ApplicationNew.vue:8
 #: front/src/components/auth/ApplicationNew.vue:41
-msgctxt "Content/Applications/Title"
+#: front/src/components/auth/Settings.vue:220
+msgctxt "Content/Settings/Button.Label"
 msgid "Create a new application"
 msgstr "Créer une nouvelle application"
 
@@ -1102,7 +1173,7 @@ msgctxt "Popup/Playlist/Title/Verb"
 msgid "Create a new playlist"
 msgstr "Créer une nouvelle liste de lecture"
 
-#: front/src/components/Sidebar.vue:57 src/components/auth/Login.vue:17
+#: front/src/components/Sidebar.vue:57 src/components/auth/LoginForm.vue:15
 msgctxt "*/Signup/Link/Verb"
 msgid "Create an account"
 msgstr "Créer un compte"
@@ -1117,7 +1188,7 @@ msgctxt "Content/Library/Button.Label/Verb"
 msgid "Create library"
 msgstr "Créer la bibliothèque"
 
-#: front/src/components/auth/Signup.vue:53
+#: front/src/components/auth/SignupForm.vue:49
 msgctxt "Content/Signup/Button.Label"
 msgid "Create my account"
 msgstr "Créer mon compte"
@@ -1142,11 +1213,13 @@ msgstr "Créer votre propre radio"
 #: front/src/components/manage/library/AlbumsTable.vue:44
 #: front/src/components/manage/library/ArtistsTable.vue:43
 #: front/src/components/manage/library/LibrariesTable.vue:54
+#: front/src/components/manage/library/TagsTable.vue:45
 #: front/src/components/manage/library/TracksTable.vue:44
 #: front/src/components/manage/library/UploadsTable.vue:66
+#: front/src/components/manage/moderation/ReportCard.vue:43
 #: front/src/components/manage/users/InvitationsTable.vue:40
-#: front/src/components/mixins/Translations.vue:43
-#: front/src/components/mixins/Translations.vue:44
+#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/mixins/Translations.vue:54
 msgctxt "Content/*/*/Noun"
 msgid "Creation date"
 msgstr "Date de création"
@@ -1156,6 +1229,11 @@ msgctxt "Content/Settings/Title/Noun"
 msgid "Current avatar"
 msgstr "Avatar actuel"
 
+#: front/src/components/admin/SettingsGroup.vue:67
+msgctxt "Content/Settings/Title/Noun"
+msgid "Current image"
+msgstr "Image actuelle"
+
 #: front/src/views/content/libraries/DetailArea.vue:4
 msgctxt "Content/Library/Title"
 msgid "Current library"
@@ -1171,18 +1249,20 @@ msgctxt "Content/Library/Title"
 msgid "Current usage"
 msgstr "Utilisation actuelle"
 
+#: front/src/components/Footer.vue:94
+msgctxt "Footer/Settings/Dropdown.Label/Theme name"
+msgid "Dark"
+msgstr "Sombre"
+
 #: front/src/components/federation/FetchButton.vue:53
 msgctxt "*/*/Error"
 msgid "Data returned by the remote server had invalid or missing attributes"
-msgstr ""
-"Les données renvoyées par le serveur distant ont des attributs manquants ou "
-"invalides"
+msgstr "Les données renvoyées par le serveur distant ont des attributs manquants ou invalides"
 
 #: front/src/components/federation/FetchButton.vue:17
 msgctxt "Popup/*/Message.Content"
 msgid "Data was refreshed successfully from remote server."
-msgstr ""
-"Les données ont été rafraîchies avec succès depuis le serveur distant."
+msgstr "Les données ont été rafraîchies avec succès depuis le serveur distant."
 
 #: front/src/views/content/libraries/Detail.vue:27
 msgctxt "Content/Library/Table.Label"
@@ -1194,7 +1274,7 @@ msgctxt "Popup/Import/Table.Label/Noun"
 msgid "Debug information"
 msgstr "Informations de débogage"
 
-#: front/src/components/ShortcutsModal.vue:75
+#: front/src/components/ShortcutsModal.vue:128
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Decrease volume"
 msgstr "Diminuer le volume"
@@ -1206,23 +1286,29 @@ msgstr "Diminuer le volume"
 #: front/src/components/manage/library/AlbumsTable.vue:188
 #: front/src/components/manage/library/ArtistsTable.vue:178
 #: front/src/components/manage/library/LibrariesTable.vue:205
+#: front/src/components/manage/library/TagsTable.vue:179
 #: front/src/components/manage/library/TracksTable.vue:188
 #: front/src/components/manage/library/UploadsTable.vue:255
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:61
+#: front/src/components/manage/moderation/NotesThread.vue:24
+#: front/src/components/manage/moderation/NotesThread.vue:29
+#: front/src/components/manage/moderation/ReportCard.vue:360
 #: front/src/components/manage/users/InvitationsTable.vue:167
-#: front/src/views/admin/library/AlbumDetail.vue:72
-#: front/src/views/admin/library/AlbumDetail.vue:77
-#: front/src/views/admin/library/ArtistDetail.vue:71
+#: front/src/views/admin/library/AlbumDetail.vue:78
+#: front/src/views/admin/library/AlbumDetail.vue:83
 #: front/src/views/admin/library/ArtistDetail.vue:76
+#: front/src/views/admin/library/ArtistDetail.vue:81
 #: front/src/views/admin/library/LibraryDetail.vue:58
 #: front/src/views/admin/library/LibraryDetail.vue:63
-#: front/src/views/admin/library/TrackDetail.vue:71
-#: front/src/views/admin/library/TrackDetail.vue:76
+#: front/src/views/admin/library/TagDetail.vue:41
+#: front/src/views/admin/library/TagDetail.vue:46
+#: front/src/views/admin/library/TrackDetail.vue:77
+#: front/src/views/admin/library/TrackDetail.vue:82
 #: front/src/views/admin/library/UploadDetail.vue:65
 #: front/src/views/admin/library/UploadDetail.vue:70
 #: front/src/views/content/libraries/FilesTable.vue:222
 #: front/src/views/content/libraries/Form.vue:29
-#: src/views/playlists/Detail.vue:34
+#: src/views/playlists/Detail.vue:42
 msgctxt "*/*/*/Verb"
 msgid "Delete"
 msgstr "Supprimer"
@@ -1235,7 +1321,7 @@ msgstr "Supprimer l'application"
 #: front/src/components/auth/Settings.vue:252
 msgctxt "Popup/Settings/Title"
 msgid "Delete application \"%{ application }\"?"
-msgstr "Supprimer l'application \"%{ application }\"?"
+msgstr "Supprimer l'application « %{ application } » ?"
 
 #: front/src/views/content/libraries/Form.vue:39
 msgctxt "Popup/Library/Button.Label/Verb"
@@ -1247,7 +1333,18 @@ msgctxt "Popup/Moderation/Button.Label/Verb"
 msgid "Delete moderation rule"
 msgstr "Supprimer la règle de modération"
 
-#: front/src/views/playlists/Detail.vue:39
+#: front/src/components/auth/Settings.vue:274
+#: src/components/auth/Settings.vue:302
+msgctxt "*/*/Button.Label"
+msgid "Delete my account"
+msgstr "Supprimer mon compte"
+
+#: front/src/components/auth/Settings.vue:297
+msgctxt "*/*/Button.Label"
+msgid "Delete my account…"
+msgstr "Supprimer mon compte…"
+
+#: front/src/views/playlists/Detail.vue:47
 msgctxt "Popup/Playlist/Button.Label/Verb"
 msgid "Delete playlist"
 msgstr "Supprimer la liste de lecture"
@@ -1257,13 +1354,23 @@ msgctxt "Popup/Radio/Button.Label/Verb"
 msgid "Delete radio"
 msgstr "Supprimer la radio"
 
-#: front/src/views/admin/library/AlbumDetail.vue:73
-#: front/src/views/admin/library/TrackDetail.vue:72
+#: front/src/components/manage/moderation/ReportCard.vue:357
+msgctxt "Content/Moderation/Button/Verb"
+msgid "Delete reported object"
+msgstr "Supprimer l’objet signalé"
+
+#: front/src/components/manage/moderation/ReportCard.vue:358
+msgctxt "Content/Moderation/Popup/Header"
+msgid "Delete reported object?"
+msgstr "Supprimer l’objet signalé ?"
+
+#: front/src/views/admin/library/AlbumDetail.vue:79
+#: front/src/views/admin/library/TrackDetail.vue:78
 msgctxt "Popup/Library/Title"
 msgid "Delete this album?"
 msgstr "Supprimer cet album ?"
 
-#: front/src/views/admin/library/ArtistDetail.vue:72
+#: front/src/views/admin/library/ArtistDetail.vue:77
 msgctxt "Popup/Library/Title"
 msgid "Delete this artist?"
 msgstr "Supprimer cet artiste ?"
@@ -1279,60 +1386,69 @@ msgctxt "Popup/Moderation/Title"
 msgid "Delete this moderation rule?"
 msgstr "Supprimer cette règle de modération ?"
 
+#: front/src/components/manage/moderation/NotesThread.vue:25
+msgctxt "Popup/Moderation/Title"
+msgid "Delete this note?"
+msgstr "Supprimer cette note ?"
+
 #: front/src/components/library/EditCard.vue:94
 msgctxt "Popup/Library/Title"
 msgid "Delete this suggestion?"
 msgstr "Supprimer cette suggestion ?"
 
+#: front/src/views/admin/library/TagDetail.vue:42
+msgctxt "Popup/Library/Title"
+msgid "Delete this tag?"
+msgstr "Supprimer ce tag ?"
+
 #: front/src/views/admin/library/UploadDetail.vue:66
 msgctxt "Popup/Library/Title"
 msgid "Delete this upload?"
 msgstr "Supprimer cet envoi ?"
 
 #: front/src/components/favorites/List.vue:35
-#: src/components/library/Albums.vue:26
-#: front/src/components/library/Artists.vue:26
+#: src/components/library/Albums.vue:30
+#: front/src/components/library/Artists.vue:30
 #: src/components/library/Radios.vue:47
 #: front/src/components/manage/library/AlbumsTable.vue:22
 #: front/src/components/manage/library/ArtistsTable.vue:22
 #: front/src/components/manage/library/EditsCardList.vue:40
 #: front/src/components/manage/library/LibrariesTable.vue:31
+#: front/src/components/manage/library/TagsTable.vue:22
 #: front/src/components/manage/library/TracksTable.vue:22
 #: front/src/components/manage/library/UploadsTable.vue:41
 #: front/src/components/manage/moderation/AccountsTable.vue:22
-#: front/src/components/manage/moderation/DomainsTable.vue:20
+#: front/src/components/manage/moderation/DomainsTable.vue:28
 #: front/src/components/manage/users/UsersTable.vue:20
+#: front/src/views/admin/moderation/ReportsList.vue:45
 #: front/src/views/content/libraries/FilesTable.vue:32
 #: front/src/views/playlists/List.vue:28
 msgctxt "Content/Search/Dropdown"
 msgid "Descending"
 msgstr "Décroissant"
 
-#: front/src/views/admin/library/LibraryDetail.vue:123
-msgctxt "*/*/*/Noun"
-msgid "Description"
-msgstr "Description"
+#: front/src/components/manage/moderation/NoteForm.vue:37
+msgctxt "Content/Moderation/Placeholder"
+msgid "Describe what actions have been taken, or any other related updates…"
+msgstr "Décrivez quelles actions ont été prises, ou toute autre mise à jour liée…"
 
 #: front/src/components/library/radios/Builder.vue:25
+#: front/src/views/admin/library/LibraryDetail.vue:132
 #: front/src/views/content/libraries/Form.vue:14
-msgctxt "Content/*/Input.Label/Noun"
+msgctxt "*/*/*/Noun"
 msgid "Description"
 msgstr "Description"
 
 #: front/src/views/content/libraries/Card.vue:48
-#: src/views/content/remote/Card.vue:54
+#: src/views/content/remote/Card.vue:67
 msgctxt "Content/Library/Card.Button.Label/Noun"
 msgid "Details"
 msgstr "Détails"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:491
+#: front/src/views/admin/moderation/AccountsDetail.vue:511
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Determine how much content the user can upload. Leave empty to use the "
-"default value of the instance."
-msgstr ""
-"Déterminez la quantité de contenu que l'utilisateur peut importer. Laissez "
-"vide pour utiliser la valeur par défaut de l'instance."
+msgid "Determine how much content the user can upload. Leave empty to use the default value of the instance."
+msgstr "Déterminez la quantité de contenu que l'utilisateur peut importer. Laissez vide pour utiliser la valeur par défaut de l'instance."
 
 #: front/src/components/mixins/Translations.vue:8
 #: front/src/components/mixins/Translations.vue:9
@@ -1341,38 +1457,50 @@ msgid "Determine the visibility level of your activity"
 msgstr "Détermine le niveau de visibilité de votre activité"
 
 #: front/src/components/auth/Settings.vue:104
-#: front/src/components/auth/SubsonicTokenForm.vue:51
+#: front/src/components/auth/SubsonicTokenForm.vue:56
 msgctxt "Popup/Settings/Button.Label"
 msgid "Disable access"
 msgstr "Désactiver l'accès"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:48
+#: front/src/components/auth/SubsonicTokenForm.vue:53
 msgctxt "Content/Settings/Button.Label/Verb"
 msgid "Disable Subsonic access"
 msgstr "Désactiver l'accès via Subsonic"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:49
+#: front/src/components/auth/SubsonicTokenForm.vue:54
 msgctxt "Popup/Settings/Title"
 msgid "Disable Subsonic API access?"
 msgstr "Désactiver l'accès à l'API Subsonic ?"
 
+#: front/src/components/About.vue:118 src/components/About.vue:131
+#: front/src/components/About.vue:144
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:18
 #: front/src/views/admin/moderation/AccountsDetail.vue:157
 #: front/src/views/admin/moderation/AccountsDetail.vue:161
-msgctxt "*/*/*"
+msgctxt "*/*/*/State of feature"
 msgid "Disabled"
 msgstr "Désactivé"
 
-#: front/src/views/admin/library/TrackDetail.vue:145
+#: front/src/views/admin/library/TrackDetail.vue:151
 msgctxt "*/*/*/Noun"
 msgid "Disc number"
 msgstr "Numéro de disque"
 
+#: front/src/components/Home.vue:157
+msgctxt "Content/Home/Link"
+msgid "Discover everything you need to know about Funkwhale and its features"
+msgstr "Découvrez tout ce que vous devez savoir à propos de Funkwhale et de ses fonctionnalités"
+
 #: front/src/components/auth/SubsonicTokenForm.vue:13
 msgctxt "Content/Settings/Link"
 msgid "Discover how to use Funkwhale from other apps"
 msgstr "Découvrez comment utiliser Funkwhale depuis d'autres applications"
 
+#: front/src/views/Notifications.vue:45
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Discover other ways to help"
+msgstr "Découvrez d’autres façons d’aider"
+
 #: front/src/views/admin/moderation/AccountsDetail.vue:132
 msgctxt "'Content/*/*/Noun'"
 msgid "Display name"
@@ -1385,12 +1513,13 @@ msgstr "Afficher publiquement"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:122
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Do not download any media file (audio, album cover, account avatar…) from "
-"this account or domain. This will purge existing content as well."
-msgstr ""
-"Ne jamais télécharger de médias (audio, album, couverture, avatar de "
-"compte...) de ce compte ou domaine. Cela purgera aussi le contenu existant."
+msgid "Do not download any media file (audio, album cover, account avatar…) from this account or domain. This will purge existing content as well."
+msgstr "Ne jamais télécharger de médias (audio, album, couverture, avatar de compte…) de ce compte ou domaine. Cela purgera aussi le contenu existant."
+
+#: front/src/views/Notifications.vue:36
+msgctxt "Content/Notifications/Header"
+msgid "Do you like Funkwhale?"
+msgstr "Vous aimez Funkwhale ?"
 
 #: front/src/components/playlists/Editor.vue:51
 msgctxt "Popup/Playlist/Title"
@@ -1402,7 +1531,7 @@ msgctxt "Modal/*/Title"
 msgid "Do you want to confirm this action?"
 msgstr "Souhaitez-vous confirmer cette action ?"
 
-#: front/src/views/playlists/Detail.vue:35
+#: front/src/views/playlists/Detail.vue:43
 msgctxt "Popup/Playlist/Title/Call to action"
 msgid "Do you want to delete the playlist \"%{ playlist }\"?"
 msgstr "Voulez-vous supprimer la liste de lecture « %{ playlist } » ?"
@@ -1412,6 +1541,11 @@ msgctxt "Popup/Radio/Title"
 msgid "Do you want to delete the radio \"%{ radio }\"?"
 msgstr "Voulez-vous supprimer la radio « %{ radio } » ?"
 
+#: front/src/components/auth/Settings.vue:298
+msgctxt "Popup/Settings/Title"
+msgid "Do you want to delete your account?"
+msgstr "Souhaitez-vous supprimer votre compte ?"
+
 #: front/src/components/moderation/FilterModal.vue:3
 msgctxt "Popup/Moderation/Title/Verb"
 msgid "Do you want to hide content from artist \"%{ name }\"?"
@@ -1421,12 +1555,15 @@ msgstr "Voulez-vous cacher le contenu de l’artiste « %{ name } » ?"
 msgctxt "Modal/*/Title"
 msgid "Do you want to launch %{ action } on %{ count } element?"
 msgid_plural "Do you want to launch %{ action } on %{ count } elements?"
-msgstr[0] ""
-"Voulez-vous effectuer l'action « %{ action } » sur %{ count } élément ?"
-msgstr[1] ""
-"Voulez-vous effectuer l'action « \"%{ action } » sur %{ count } éléments ?"
+msgstr[0] "Voulez-vous effectuer l'action « %{ action } » sur %{ count } élément ?"
+msgstr[1] "Voulez-vous effectuer l'action « \"%{ action } » sur %{ count } éléments ?"
 
-#: front/src/components/Sidebar.vue:118
+#: front/src/components/moderation/ReportModal.vue:3
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Do you want to report this object?"
+msgstr "Souhaitez-vous signaler cet élément ?"
+
+#: front/src/components/Sidebar.vue:122
 msgctxt "Sidebar/Queue/Message"
 msgid "Do you want to restore your previous queue?"
 msgstr "Souhaitez-vous restaurer la dernière liste d'attente ?"
@@ -1442,26 +1579,33 @@ msgstr "Documentation"
 #: front/src/components/manage/library/TracksTable.vue:42
 #: front/src/components/manage/library/UploadsTable.vue:62
 #: front/src/components/manage/moderation/AccountsTable.vue:40
-#: front/src/components/mixins/Translations.vue:60
-#: front/src/views/admin/library/AlbumDetail.vue:118
-#: front/src/views/admin/library/ArtistDetail.vue:107
-#: front/src/views/admin/library/LibraryDetail.vue:114
-#: front/src/views/admin/library/TrackDetail.vue:170
+#: front/src/components/manage/moderation/ReportCard.vue:169
+#: front/src/components/manage/moderation/ReportCard.vue:179
+#: front/src/components/mixins/Translations.vue:72
+#: front/src/views/admin/library/AlbumDetail.vue:124
+#: front/src/views/admin/library/ArtistDetail.vue:112
+#: front/src/views/admin/library/LibraryDetail.vue:123
+#: front/src/views/admin/library/TrackDetail.vue:176
 #: front/src/views/admin/library/UploadDetail.vue:121
 #: front/src/views/admin/moderation/AccountsDetail.vue:123
-#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/mixins/Translations.vue:73
 msgctxt "Content/Moderation/*/Noun"
 msgid "Domain"
 msgstr "Domaine"
 
-#: front/src/views/admin/moderation/Base.vue:5
+#: front/src/views/admin/moderation/Base.vue:8
 #: front/src/views/admin/moderation/DomainsList.vue:3
-#: front/src/views/admin/moderation/DomainsList.vue:48
+#: front/src/views/admin/moderation/DomainsList.vue:54
 msgctxt "*/Moderation/*/Noun"
 msgid "Domains"
 msgstr "Domaines"
 
-#: front/src/components/library/TrackBase.vue:39
+#: front/src/views/Notifications.vue:42
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Donate"
+msgstr "Donner"
+
+#: front/src/components/library/TrackBase.vue:37
 #: front/src/views/admin/library/UploadDetail.vue:58
 msgctxt "Content/Track/Link/Verb"
 msgid "Download"
@@ -1470,16 +1614,14 @@ msgstr "Télécharger"
 #: front/src/components/playlists/Editor.vue:59
 msgctxt "Content/Playlist/Paragraph/Call to action"
 msgid "Drag and drop rows to reorder tracks in the playlist"
-msgstr ""
-"Glissez et déposer les lignes pour réordonner les pistes dans la liste de "
-"lecture"
+msgstr "Glissez et déposer les lignes pour réordonner les pistes dans la liste de lecture"
 
 #: front/src/components/audio/track/Table.vue:10
 #: front/src/components/library/TrackDetail.vue:30
-#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:68
 #: front/src/views/admin/library/UploadDetail.vue:238
 #: front/src/views/content/libraries/FilesTable.vue:60
-#: front/src/components/mixins/Translations.vue:57
+#: front/src/components/mixins/Translations.vue:69
 msgctxt "Content/*/*"
 msgid "Duration"
 msgstr "Durée"
@@ -1489,41 +1631,27 @@ msgctxt "Content/Signup/Message"
 msgid "E-mail address confirmed"
 msgstr "Courriel confirmé"
 
-#: front/src/components/Home.vue:88
-msgctxt "Content/Home/Title"
-msgid "Easy to use"
-msgstr "Simple à utiliser"
-
-#: front/src/components/library/AlbumBase.vue:68
-#: front/src/components/library/ArtistBase.vue:79
-#: front/src/components/library/TrackBase.vue:87
+#: front/src/components/auth/Settings.vue:246
+#: src/components/library/AlbumBase.vue:73
+#: front/src/components/library/ArtistBase.vue:84
+#: front/src/components/library/TrackBase.vue:89
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:45
 #: front/src/components/radios/Card.vue:23
-#: src/views/admin/library/AlbumDetail.vue:65
-#: front/src/views/admin/library/ArtistDetail.vue:64
-#: front/src/views/admin/library/TrackDetail.vue:64
+#: src/views/admin/library/AlbumDetail.vue:71
+#: front/src/views/admin/library/ArtistDetail.vue:69
+#: front/src/views/admin/library/TrackDetail.vue:70
 #: front/src/views/content/libraries/Detail.vue:9
 #: src/views/playlists/Detail.vue:31
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Edit"
 msgstr "Éditer"
 
-#: front/src/components/auth/Settings.vue:246
-msgctxt "Content/Settings/Button.Label"
-msgid "Edit"
-msgstr "Éditer"
-
 #: front/src/components/auth/ApplicationEdit.vue:30
 #: front/src/components/auth/ApplicationEdit.vue:75
 msgctxt "Content/Applications/Title"
 msgid "Edit application"
 msgstr "Éditer l'application"
 
-#: front/src/components/About.vue:22
-msgctxt "Content/Settings/Button.Label/Verb"
-msgid "Edit instance info"
-msgstr "Éditer les informations concernant cette instance"
-
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:3
 msgctxt "Content/Moderation/Card.Title/Verb"
 msgid "Edit moderation rule"
@@ -1544,23 +1672,20 @@ msgctxt "Content/*/Title"
 msgid "Edit this track"
 msgstr "Modifier cette piste"
 
-#: front/src/views/admin/library/AlbumDetail.vue:182
-#: front/src/views/admin/library/ArtistDetail.vue:171
+#: front/src/components/mixins/Translations.vue:116
+#: front/src/views/admin/library/AlbumDetail.vue:198
+#: front/src/views/admin/library/ArtistDetail.vue:186
 #: front/src/views/admin/library/Base.vue:5
 #: src/views/admin/library/EditsList.vue:24
-#: front/src/views/admin/library/TrackDetail.vue:234
+#: front/src/views/admin/library/TrackDetail.vue:250
+#: front/src/components/mixins/Translations.vue:117
 msgctxt "*/Admin/*/Noun"
 msgid "Edits"
 msgstr "Modifications"
 
-#: front/src/components/mixins/Translations.vue:104
-#: front/src/components/mixins/Translations.vue:105
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Edits"
-msgstr "Modifications"
-
-#: front/src/components/auth/Signup.vue:30
+#: front/src/components/auth/SignupForm.vue:26
 #: front/src/components/manage/users/UsersTable.vue:38
+#: front/src/components/moderation/ReportModal.vue:31
 msgctxt "Content/*/*/Noun"
 msgid "Email"
 msgstr "Courriel"
@@ -1570,50 +1695,58 @@ msgctxt "Content/*/*"
 msgid "Email address"
 msgstr "Adresse de courriel"
 
-#: front/src/components/library/AlbumBase.vue:53
-#: front/src/components/library/ArtistBase.vue:64
-#: front/src/components/library/TrackBase.vue:72
+#: front/src/components/library/AlbumBase.vue:54
+#: front/src/components/library/ArtistBase.vue:65
+#: front/src/components/library/TrackBase.vue:70
+#: src/views/playlists/Detail.vue:38
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Embed"
 msgstr "Insérer"
 
-#: front/src/components/audio/EmbedWizard.vue:20
+#: front/src/components/audio/EmbedWizard.vue:30
 msgctxt "Popup/Embed/Input.Label/Noun"
 msgid "Embed code"
 msgstr "Code inséré"
 
-#: front/src/components/library/AlbumBase.vue:26
+#: front/src/components/library/AlbumBase.vue:27
 msgctxt "Popup/Album/Title/Verb"
 msgid "Embed this album on your website"
 msgstr "Insérez cet album dans votre site web"
 
-#: front/src/components/library/ArtistBase.vue:37
+#: front/src/components/library/ArtistBase.vue:38
 msgctxt "Popup/Artist/Title/Verb"
 msgid "Embed this artist work on your website"
 msgstr "Insérez cet·te artiste dans votre site web"
 
-#: front/src/components/library/TrackBase.vue:45
+#: front/src/views/playlists/Detail.vue:52
+msgctxt "Popup/Album/Title/Verb"
+msgid "Embed this playlist on your website"
+msgstr "Insérez cette playlist dans votre site web"
+
+#: front/src/components/library/TrackBase.vue:43
 msgctxt "Popup/Track/Title"
 msgid "Embed this track on your website"
 msgstr "Insérez cette piste dans votre site web"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:259
-#: front/src/views/admin/moderation/DomainsDetail.vue:187
+#: front/src/views/admin/moderation/AccountsDetail.vue:260
+#: front/src/views/admin/moderation/DomainsDetail.vue:224
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Emitted library follows"
 msgstr "Suivi de la bibliothèque émise"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:243
-#: front/src/views/admin/moderation/DomainsDetail.vue:171
+#: front/src/views/admin/moderation/AccountsDetail.vue:244
+#: front/src/views/admin/moderation/DomainsDetail.vue:208
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Emitted messages"
 msgstr "Messages émis"
 
+#: front/src/components/About.vue:114 src/components/About.vue:127
+#: front/src/components/About.vue:140
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:8
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:17
 #: front/src/views/admin/moderation/AccountsDetail.vue:156
 #: front/src/views/admin/moderation/AccountsDetail.vue:160
-msgctxt "*/*/*"
+msgctxt "*/*/*/State of feature"
 msgid "Enabled"
 msgstr "Activé"
 
@@ -1632,9 +1765,9 @@ msgctxt "Content/Search/Input.Placeholder"
 msgid "Enter a radio name…"
 msgstr "Saisissez un nom de radio…"
 
-#: front/src/components/library/Albums.vue:119
+#: front/src/components/library/Albums.vue:128
 msgctxt "Content/Search/Input.Placeholder"
-msgid "Enter album title..."
+msgid "Enter album title…"
 msgstr "Entrer le titre de l’album…"
 
 #: front/src/components/library/Artists.vue:116
@@ -1649,15 +1782,16 @@ msgstr "Saisissez un nom de playlist…"
 
 #: front/src/views/auth/PasswordReset.vue:54
 msgctxt "Content/Signup/Input.Placeholder"
-msgid "Enter the email address binded to your account"
-msgstr "Saisissez l'adresse de courriel associée à votre compte"
+msgid "Enter the email address linked to your account"
+msgstr "Saisissez l'adresse email associée à votre compte"
 
-#: front/src/components/auth/Signup.vue:103
+#: front/src/components/auth/SignupForm.vue:96
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your email"
 msgstr "Saisissez votre courriel"
 
-#: front/src/components/auth/Signup.vue:98 src/components/auth/Signup.vue:100
+#: front/src/components/auth/SignupForm.vue:91
+#: src/components/auth/SignupForm.vue:93
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your invitation code (case insensitive)"
 msgstr "Saisissez votre code d'invitation (insensible à la casse)"
@@ -1667,12 +1801,12 @@ msgctxt "Content/Library/Input.Placeholder/Verb"
 msgid "Enter your search query…"
 msgstr "Saisissez votre recherche…"
 
-#: front/src/components/auth/Signup.vue:102
+#: front/src/components/auth/SignupForm.vue:95
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your username"
 msgstr "Saisissez votre nom d'utilisateur·rice"
 
-#: front/src/components/auth/Login.vue:83
+#: front/src/components/auth/LoginForm.vue:81
 msgctxt "Content/Login/Input.Placeholder"
 msgid "Enter your username or email"
 msgstr "Saisissez votre nom d'utilisateur·rice ou courriel"
@@ -1689,7 +1823,7 @@ msgctxt "Popup/Import/Table.Label/Noun"
 msgid "Error detail"
 msgstr "Détail de l'erreur"
 
-#: front/src/views/admin/Settings.vue:87
+#: front/src/views/admin/Settings.vue:89
 msgctxt "Content/Admin/Menu"
 msgid "Error reporting"
 msgstr "Rapports d'erreur"
@@ -1745,16 +1879,12 @@ msgctxt "Popup/Moderation/Error message"
 msgid "Error while fetching application data"
 msgstr "Erreur lors de la récupération des données de l'application"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:118
+#: front/src/views/admin/moderation/DomainsDetail.vue:155
 msgctxt "Content/Moderation/Table"
 msgid "Error while fetching node info"
 msgstr "Erreur lors de la récupération des informations du nœud"
 
 #: front/src/components/admin/SettingsGroup.vue:5
-msgctxt "Content/Settings/Error message.Title"
-msgid "Error while saving settings"
-msgstr "Erreur pendant l'enregistrement des paramètres"
-
 #: front/src/components/federation/FetchButton.vue:73
 msgctxt "Content/*/Error message.Title"
 msgid "Error while saving settings"
@@ -1765,6 +1895,16 @@ msgctxt "Content/Library/Error message.Title"
 msgid "Error while submitting edit"
 msgstr "Erreur durant l'envoi des modifications"
 
+#: front/src/components/manage/moderation/NoteForm.vue:3
+msgctxt "Content/Moderation/Error message.Title"
+msgid "Error while submitting note"
+msgstr "Erreur pendant la création de la note"
+
+#: front/src/components/moderation/ReportModal.vue:11
+msgctxt "Popup/Moderation/Error message"
+msgid "Error while submitting report"
+msgstr "Erreur pendant l'envoi du signalement"
+
 #: front/src/components/mixins/Translations.vue:32
 #: front/src/components/mixins/Translations.vue:33
 msgctxt "Content/Library/Table/Short"
@@ -1799,9 +1939,14 @@ msgctxt "Content/Radio/Table.Label/Verb"
 msgid "Exclude"
 msgstr "Exclure"
 
+#: front/src/components/common/CollapseLink.vue:2
+msgctxt "*/*/Button,Label"
+msgid "Expand"
+msgstr "Développer"
+
 #: front/src/components/manage/users/InvitationsTable.vue:41
-#: front/src/components/mixins/Translations.vue:49
-#: front/src/components/mixins/Translations.vue:50
+#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:60
 msgctxt "Content/Admin/Table.Label/Noun"
 msgid "Expiration date"
 msgstr "Date d'expiration"
@@ -1818,17 +1963,8 @@ msgstr "Expirée/utilisée"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:110
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Explain why you're applying this policy. Depending on your instance "
-"configuration, this will help you remember why you acted on this account or "
-"domain, and may be displayed publicly to help users understand what "
-"moderation rules are in place."
-msgstr ""
-"Expliquez pourquoi vous appliquez cette règle. En fonction de votre "
-"configuration d'instance, cela vous aidera à vous rappeler pourquoi vous "
-"avez agis sur ce compte ou domaine, et peut être affiché publiquement pour "
-"aider les utilisateurs à comprendre quelles règles de modération sont en "
-"place."
+msgid "Explain why you're applying this policy. Depending on your instance configuration, this will help you remember why you acted on this account or domain, and may be displayed publicly to help users understand what moderation rules are in place."
+msgstr "Expliquez pourquoi vous appliquez cette règle. En fonction de votre configuration d'instance, cela vous aidera à vous rappeler pourquoi vous avez agis sur ce compte ou domaine, et peut être affiché publiquement pour aider les utilisateurs à comprendre quelles règles de modération sont en place."
 
 #: front/src/components/manage/library/UploadsTable.vue:25
 #: front/src/views/content/libraries/FilesTable.vue:16
@@ -1836,31 +1972,27 @@ msgctxt "Content/Library/Dropdown"
 msgid "Failed"
 msgstr "Échoué"
 
-#: front/src/views/content/remote/Card.vue:62
+#: front/src/views/content/remote/Card.vue:75
 msgctxt "Content/Library/Card.List item/Noun"
 msgid "Failed tracks:"
 msgstr "Pistes échouées :"
 
-#: front/src/views/admin/library/AlbumDetail.vue:165
-#: front/src/views/admin/library/ArtistDetail.vue:154
-#: front/src/views/admin/library/TrackDetail.vue:217
+#: front/src/views/admin/library/AlbumDetail.vue:171
+#: front/src/views/admin/library/ArtistDetail.vue:159
+#: front/src/views/admin/library/TrackDetail.vue:223
 msgctxt "*/*/*"
 msgid "Favorited tracks"
 msgstr "Pistes favorites"
 
 #: front/src/components/Sidebar.vue:66
+#: src/components/mixins/Translations.vue:88
+#: front/src/components/mixins/Translations.vue:89
 msgctxt "Sidebar/Favorites/List item.Link/Noun"
 msgid "Favorites"
 msgstr "Favoris"
 
-#: front/src/components/mixins/Translations.vue:76
-#: front/src/components/mixins/Translations.vue:77
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Favorites"
-msgstr "Favoris"
-
-#: front/src/views/admin/Settings.vue:84
-msgctxt "Content/Admin/Menu"
+#: front/src/components/About.vue:110 src/views/admin/Settings.vue:84
+msgctxt "*/*/*"
 msgid "Federation"
 msgstr "Fédération"
 
@@ -1884,6 +2016,11 @@ msgctxt "Content/Radio/Table.Label/Noun"
 msgid "Filter name"
 msgstr "Nom du filtre"
 
+#: front/src/components/Home.vue:118
+msgctxt "Content/Home/Link"
+msgid "Find another pod"
+msgstr "Trouver un autre pod"
+
 #: front/src/components/manage/library/UploadsTable.vue:26
 #: front/src/components/mixins/Translations.vue:36
 #: front/src/views/content/libraries/FilesTable.vue:17
@@ -1893,25 +2030,31 @@ msgid "Finished"
 msgstr "Terminé"
 
 #: front/src/components/manage/moderation/AccountsTable.vue:42
-#: front/src/components/manage/moderation/DomainsTable.vue:41
-#: front/src/views/admin/library/AlbumDetail.vue:149
-#: front/src/views/admin/library/ArtistDetail.vue:138
-#: front/src/views/admin/library/LibraryDetail.vue:153
-#: front/src/views/admin/library/TrackDetail.vue:201
+#: front/src/components/manage/moderation/DomainsTable.vue:49
+#: front/src/views/admin/library/AlbumDetail.vue:155
+#: front/src/views/admin/library/ArtistDetail.vue:143
+#: front/src/views/admin/library/LibraryDetail.vue:162
+#: front/src/views/admin/library/TagDetail.vue:98
+#: front/src/views/admin/library/TrackDetail.vue:207
 #: front/src/views/admin/library/UploadDetail.vue:167
-#: front/src/views/admin/moderation/AccountsDetail.vue:235
-#: front/src/views/admin/moderation/DomainsDetail.vue:151
+#: front/src/views/admin/moderation/AccountsDetail.vue:236
+#: front/src/views/admin/moderation/DomainsDetail.vue:188
 msgctxt "Content/Moderation/Table.Label/Short (Value is a date)"
 msgid "First seen"
 msgstr "Vu pour la première fois"
 
-#: front/src/components/mixins/Translations.vue:46
-#: front/src/components/mixins/Translations.vue:47
+#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:57
 msgctxt "Content/Moderation/Dropdown/Noun"
 msgid "First seen date"
 msgstr "Date de découverte"
 
-#: front/src/views/content/remote/Card.vue:87
+#: front/src/components/ShortcutsModal.vue:64
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Focus searchbar"
+msgstr "Mettre le focus dans la barre de recherche"
+
+#: front/src/views/content/remote/Card.vue:100
 msgctxt "Content/Library/Card.Button.Label/Verb"
 msgid "Follow"
 msgstr "Suivre"
@@ -1921,43 +2064,35 @@ msgctxt "Content/Library/Title/Verb"
 msgid "Follow remote libraries"
 msgstr "Suivre des bibliothèques distantes"
 
-#: front/src/views/content/remote/Card.vue:92
+#: front/src/views/content/remote/Card.vue:105
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Follow request pending approval"
 msgstr "Demande de suivi en attente de validation"
 
-#: front/src/components/mixins/Translations.vue:64
-#: front/src/views/admin/library/LibraryDetail.vue:161
+#: front/src/components/manage/library/LibrariesTable.vue:53
+#: front/src/components/mixins/Translations.vue:76
+#: front/src/views/admin/library/LibraryDetail.vue:170
 #: front/src/views/content/libraries/Detail.vue:7
-#: front/src/components/mixins/Translations.vue:65
+#: front/src/components/mixins/Translations.vue:77
 msgctxt "Content/Federation/*/Noun"
 msgid "Followers"
 msgstr "Abonnés"
 
-#: front/src/components/manage/library/LibrariesTable.vue:53
-msgctxt "Content/*/*/Noun"
-msgid "Followers"
-msgstr "Abonné·es"
-
-#: front/src/views/content/remote/Card.vue:103
+#: front/src/views/content/remote/Card.vue:116
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Following"
 msgstr "Abonné"
 
-#: front/src/components/mixins/Translations.vue:84
-#: front/src/components/mixins/Translations.vue:85
+#: front/src/components/mixins/Translations.vue:96
+#: front/src/components/mixins/Translations.vue:97
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Follows"
 msgstr "Abonnements"
 
-#: front/src/components/library/TrackBase.vue:17
+#: front/src/components/library/TrackBase.vue:245
 msgctxt "Content/Track/Paragraph"
-msgid ""
-"From album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> by <a"
-" class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
-msgstr ""
-"De l’album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> par "
-"<a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgid "From album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgstr "De l’album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> par <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
 
 #: front/src/components/auth/Authorize.vue:28
 msgctxt "Content/Auth/Label/Noun"
@@ -1966,38 +2101,21 @@ msgstr "Accès total"
 
 #: front/src/components/auth/SubsonicTokenForm.vue:7
 msgctxt "Content/Settings/Paragraph'"
-msgid ""
-"Funkwhale is compatible with other music players that support the Subsonic "
-"API."
-msgstr ""
-"Funkwhale est compatible avec d'autres lecteurs de musique qui supportent "
-"l'API Subsonic."
-
-#: front/src/components/Home.vue:90
-msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale is dead simple to use."
-msgstr "Funkwhale est très simple à utiliser."
+msgid "Funkwhale is compatible with other music players that support the Subsonic API."
+msgstr "Funkwhale est compatible avec d'autres lecteurs de musique qui supportent l'API Subsonic."
 
-#: front/src/components/Home.vue:39
+#: front/src/components/Home.vue:88
 msgctxt "Content/Home/Paragraph"
-msgid ""
-"Funkwhale is designed to make it easy to listen to music you like, or to "
-"discover new artists."
+msgid "Funkwhale is free and developped by a friendly community of volunteers."
 msgstr ""
-"Funkwhale est conçu pour faciliter l'écoute des musiques que vous aimez et "
-"découvrir de nouveaux artistes."
-
-#: front/src/components/Home.vue:111
-msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale is free and gives you control on your music."
-msgstr "Funkwhale est gratuit et vous donne le contrôle sur votre musique."
+"Funkwhale est gratuit développé par une communauté accueillante de bénévoles."
 
-#: front/src/components/Home.vue:66
-msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale takes care of handling your music"
-msgstr "Funkwhale prend soin de votre musique"
+#: front/src/components/About.vue:78
+msgctxt "*/*/*"
+msgid "Funkwhale version"
+msgstr "Version de Funkwhale"
 
-#: front/src/components/ShortcutsModal.vue:38
+#: front/src/components/ShortcutsModal.vue:56
 msgctxt "Popup/Keyboard shortcuts/Title"
 msgid "General shortcuts"
 msgstr "Raccourcis généraux"
@@ -2007,35 +2125,17 @@ msgctxt "Content/Admin/Button.Label/Verb"
 msgid "Get a new invitation"
 msgstr "Obtenir une nouvelle invitation"
 
-#: front/src/components/Home.vue:13
-msgctxt "Content/Home/Button.Label/Verb"
-msgid "Get me to the library"
-msgstr "Amenez-moi à la bibliothèque"
-
-#: front/src/components/Home.vue:70
-msgctxt "Content/Home/List item/Verb"
-msgid ""
-"Get quality metadata about your music thanks to <a href=\"%{ url }\" "
-"target=\"_blank\">MusicBrainz</a>"
-msgstr ""
-"Obtenez des métadonnées de qualité pour votre musique grâce à <a href=\"%{ "
-"url }\" target=\"_blank\">MusicBrainz</a>"
-
 #: front/src/views/content/Home.vue:12 src/views/content/Home.vue:19
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Get started"
 msgstr "Commencer"
 
-#: front/src/components/Footer.vue:37
+#: front/src/components/Footer.vue:45
+#: src/components/library/ImportStatusModal.vue:45
 msgctxt "Footer/*/Link"
 msgid "Getting help"
 msgstr "Obtenir de l'aide"
 
-#: front/src/components/library/ImportStatusModal.vue:45
-msgctxt "Popup/Import/Table.Label/Noun"
-msgid "Getting help"
-msgstr "Obtenir de l'aide"
-
 #: front/src/components/common/ActionTable.vue:35
 #: front/src/components/common/ActionTable.vue:56
 msgctxt "Content/*/Button.Label/Short, Verb"
@@ -2047,11 +2147,21 @@ msgctxt "Content/*/Button.Label/Verb"
 msgid "Go to home page"
 msgstr "Retourner à la page d'accueil"
 
+#: front/src/views/Notifications.vue:27 src/views/Notifications.vue:61
+msgctxt "Content/Notifications/Button.Label"
+msgid "Got it!"
+msgstr "Compris !"
+
 #: front/src/components/auth/Settings.vue:128
 msgctxt "Content/Settings/Title"
 msgid "Hidden artists"
 msgstr "Artistes caché·es"
 
+#: front/src/components/About.vue:155
+msgctxt "*/*/*/Verb"
+msgid "Hide"
+msgstr "Cacher"
+
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:114
 msgctxt "Content/Moderation/Help text"
 msgid "Hide account or domain content, except from followers."
@@ -2062,12 +2172,12 @@ msgctxt "Popup/*/Button.Label"
 msgid "Hide content"
 msgstr "Cacher le contenu"
 
-#: front/src/components/audio/PlayButton.vue:26
+#: front/src/components/audio/PlayButton.vue:31
 msgctxt "*/Queue/Dropdown/Button/Label/Short"
 msgid "Hide content from this artist"
 msgstr "Cacher le contenu de cet·te artiste"
 
-#: front/src/components/audio/Player.vue:643
+#: front/src/components/audio/Player.vue:669
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Hide content from this artist…"
 msgstr "Cacher le contenu de cet·te artiste…"
@@ -2077,26 +2187,14 @@ msgctxt "Head/Home/Title"
 msgid "Home"
 msgstr "Accueil"
 
-#: front/src/components/instance/Stats.vue:36
-msgctxt "Content/About/Paragraph/Unit"
-msgid "Hours of music"
-msgstr "Heures de musique"
-
 #: front/src/components/auth/SubsonicTokenForm.vue:10
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"However, accessing Funkwhale from those clients require a separate password "
-"you can set below."
-msgstr ""
-"Cependant, accéder à Funkwhale depuis ces clients requiert un mot de passe "
-"distinct que vous pouvez configurer ci-dessous."
+msgid "However, accessing Funkwhale from those clients require a separate password you can set below."
+msgstr "Cependant, accéder à Funkwhale depuis ces clients requiert un mot de passe distinct que vous pouvez configurer ci-dessous."
 
 #: front/src/views/auth/PasswordResetConfirm.vue:24
 msgctxt "Content/Signup/Paragraph"
-msgid ""
-"If the email address provided in the previous step is valid and binded to a "
-"user account, you should receive an email with reset instructions in the "
-"next couple of minutes."
+msgid "If the email address provided in the previous step is valid and linked to a user account, you should receive an email with reset instructions in the next couple of minutes."
 msgstr ""
 "Si l'adresse email que vous avez fournie est valide et associée à un compte "
 "utilisateur, vous allez recevoir un email contenant les instructions de "
@@ -2104,12 +2202,14 @@ msgstr ""
 
 #: front/src/components/auth/Settings.vue:205
 msgctxt "Content/Applications/Paragraph"
-msgid ""
-"If you authorize third-party applications to access your data, those "
-"applications will be listed here."
-msgstr ""
-"Si vous autorisez des applications tierces à accéder à vos données, ces "
-"applications seront listées ici."
+msgid "If you authorize third-party applications to access your data, those applications will be listed here."
+msgstr "Si vous autorisez des applications tierces à accéder à vos données, ces applications seront listées ici."
+
+#: front/src/components/mixins/Translations.vue:46
+#: front/src/components/mixins/Translations.vue:47
+msgctxt "Content/Moderation/Dropdown"
+msgid "Illegal content"
+msgstr "Contenu illégal"
 
 #: front/src/components/library/ImportStatusModal.vue:3
 msgctxt "Popup/Import/Title"
@@ -2122,14 +2222,10 @@ msgid "Import reference"
 msgstr "Référence de l'importation"
 
 #: front/src/components/manage/library/UploadsTable.vue:20
-#: front/src/views/content/libraries/FilesTable.vue:11
-#: front/src/views/content/libraries/FilesTable.vue:59
-msgctxt "Content/Library/*/Noun"
-msgid "Import status"
-msgstr "Statut de l'import"
-
 #: front/src/components/manage/library/UploadsTable.vue:64
 #: front/src/views/admin/library/UploadDetail.vue:131
+#: front/src/views/content/libraries/FilesTable.vue:11
+#: front/src/views/content/libraries/FilesTable.vue:59
 msgctxt "Content/*/*/Noun"
 msgid "Import status"
 msgstr "Statut de l'import"
@@ -2163,20 +2259,19 @@ msgstr "Dans les favoris"
 #: front/src/components/moderation/FilterModal.vue:25
 msgctxt "Popup/Moderation/List item"
 msgid "In other users favorites and listening history"
-msgstr ""
-"Dans les favoris des autres utilisateurs et dans l'historique d'écoute"
+msgstr "Dans les favoris des autres utilisateurs et dans l'historique d'écoute"
 
 #: front/src/components/moderation/FilterModal.vue:28
 msgctxt "Popup/Moderation/List item"
 msgid "In radio suggestions"
 msgstr "Dans les suggestions radio"
 
-#: front/src/components/manage/users/UsersTable.vue:54
+#: front/src/components/manage/users/UsersTable.vue:55
 msgctxt "Content/Admin/Table"
 msgid "Inactive"
 msgstr "Inactif"
 
-#: front/src/components/ShortcutsModal.vue:71
+#: front/src/components/ShortcutsModal.vue:124
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Increase volume"
 msgstr "Augmenter le volume"
@@ -2194,7 +2289,7 @@ msgctxt "Content/Settings/Dropdown/Short"
 msgid "Instance"
 msgstr "Instance"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:71
+#: front/src/views/admin/moderation/DomainsDetail.vue:99
 msgctxt "Content/Moderation/Title"
 msgid "Instance data"
 msgstr "Informations de l'instance"
@@ -2219,21 +2314,25 @@ msgctxt "Popup/Instance/Input.Label/Noun"
 msgid "Instance URL"
 msgstr "Adresse de l'instance"
 
+#: front/src/components/manage/moderation/ReportCard.vue:92
+#: front/src/components/manage/moderation/ReportCard.vue:203
+msgctxt "Content/*/*/Noun"
+msgid "Internal notes"
+msgstr "Notes internes"
+
 #: front/src/components/library/FileUpload.vue:268
 msgctxt "Content/Library/Help text"
-msgid ""
-"Invalid file type, ensure you are uploading an audio file. Supported file "
-"extensions are %{ extensions }"
-msgstr ""
-"Mauvais type de fichier, assurez-vous de charger un fichier audio. Les "
-"formats de fichiers supportés sont %{ extensions }"
+msgid "Invalid file type, ensure you are uploading an audio file. Supported file extensions are %{ extensions }"
+msgstr "Mauvais type de fichier, assurez-vous de charger un fichier audio. Les formats de fichiers supportés sont %{ extensions }"
 
 #: front/src/components/library/ImportStatusModal.vue:139
+#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:46
 msgctxt "Popup/Import/Error.Label"
 msgid "Invalid metadata"
 msgstr "Métadonnées invalides"
 
-#: front/src/components/auth/Signup.vue:44
+#: front/src/components/auth/SignupForm.vue:40
 #: front/src/components/manage/users/InvitationForm.vue:11
 msgctxt "Content/*/Input.Label"
 msgid "Invitation code"
@@ -2245,7 +2344,13 @@ msgctxt "*/Admin/*/Noun"
 msgid "Invitations"
 msgstr "Invitations"
 
-#: front/src/components/Footer.vue:41
+#: front/src/components/manage/moderation/DomainsTable.vue:9
+#: front/src/views/admin/moderation/DomainsDetail.vue:106
+msgctxt "Content/Moderation/*/Adjective"
+msgid "Is present on allow-list"
+msgstr "Présent sur la liste d'autorisations"
+
+#: front/src/components/Footer.vue:49
 msgctxt "Footer/*/List item.Link"
 msgid "Issue tracker"
 msgstr "Suivi des problèmes"
@@ -2255,17 +2360,18 @@ msgctxt "Popup/Instance/Error message.Title"
 msgid "It is not possible to connect to the given URL"
 msgstr "Impossible de se connecter à l'URL renseignée"
 
-#: front/src/components/Home.vue:50
-msgctxt "Content/Home/List item/Verb"
-msgid "Keep a track of your favorite songs"
-msgstr "Sauvegardez vos chansons favorites"
+#: front/src/components/mixins/Translations.vue:65
+#: front/src/components/mixins/Translations.vue:66
+msgctxt "*/*/*/Noun"
+msgid "Items"
+msgstr "Éléments"
 
 #: front/src/components/Footer.vue:33 src/components/ShortcutsModal.vue:3
 msgctxt "*/*/*/Noun"
 msgid "Keyboard shortcuts"
 msgstr "Raccourcis clavier"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:161
+#: front/src/views/admin/moderation/DomainsDetail.vue:198
 msgctxt "Content/Moderation/Table.Label.Link"
 msgid "Known accounts"
 msgstr "Comptes connus"
@@ -2276,15 +2382,15 @@ msgid "Known libraries"
 msgstr "Bibliothèques connues"
 
 #: front/src/components/manage/users/UsersTable.vue:41
-#: front/src/components/mixins/Translations.vue:58
-#: front/src/views/admin/moderation/AccountsDetail.vue:205
-#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:70
+#: front/src/views/admin/moderation/AccountsDetail.vue:206
+#: front/src/components/mixins/Translations.vue:71
 msgctxt "Content/Profile/Table.Label/Short, Noun (Value is a date)"
 msgid "Last activity"
 msgstr "Dernière activité"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:188
-#: front/src/views/admin/moderation/DomainsDetail.vue:78
+#: front/src/views/admin/moderation/AccountsDetail.vue:189
+#: front/src/views/admin/moderation/DomainsDetail.vue:115
 msgctxt "Content/*/Table.Label"
 msgid "Last checked"
 msgstr "Dernière vérification"
@@ -2299,13 +2405,13 @@ msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Last seen"
 msgstr "Vu pour la dernière fois"
 
-#: front/src/components/mixins/Translations.vue:47
-#: front/src/components/mixins/Translations.vue:48
+#: front/src/components/mixins/Translations.vue:57
+#: front/src/components/mixins/Translations.vue:58
 msgctxt "Content/Moderation/Dropdown/Noun"
 msgid "Last seen date"
 msgstr "Date de dernier aperçu"
 
-#: front/src/views/content/remote/Card.vue:60
+#: front/src/views/content/remote/Card.vue:73
 msgctxt "Content/Library/Card.List item/Noun"
 msgid "Last update:"
 msgstr "Dernière mise à jour :"
@@ -2315,60 +2421,58 @@ msgctxt "Modal/*/Button.Label/Short, Verb"
 msgid "Launch"
 msgstr "Démarrer"
 
-#: front/src/components/Home.vue:10
-msgctxt "Content/Home/Button.Label/Verb"
-msgid "Learn more about this instance"
-msgstr "En savoir plus à propos de cette instance"
+#: front/src/components/Home.vue:35
+msgctxt "Content/Home/Link"
+msgid "Learn more"
+msgstr "En savoir plus"
 
 #: front/src/components/manage/users/InvitationForm.vue:58
 msgctxt "Content/Admin/Input.Placeholder"
 msgid "Leave empty for a random code"
 msgstr "Laisser vide pour obtenir un code aléatoire"
 
-#: front/src/components/audio/EmbedWizard.vue:7
+#: front/src/components/audio/EmbedWizard.vue:17
 msgctxt "Popup/Embed/Paragraph"
 msgid "Leave empty for a responsive widget"
 msgstr "Laisser vide pour un widget adaptatif"
 
-#: front/src/views/admin/library/AlbumDetail.vue:232
-#: front/src/views/admin/library/ArtistDetail.vue:221
-#: front/src/views/admin/library/TrackDetail.vue:284
-#: front/src/views/admin/moderation/AccountsDetail.vue:327
-#: front/src/views/admin/moderation/DomainsDetail.vue:234
-#: front/src/views/content/Base.vue:5
+#: front/src/components/mixins/Translations.vue:64
+#: front/src/components/mixins/Translations.vue:65
 msgctxt "*/*/*/Noun"
-msgid "Libraries"
-msgstr "Bibliothèques"
+msgid "Length"
+msgstr "Durée"
 
+#: front/src/views/admin/library/AlbumDetail.vue:248
+#: front/src/views/admin/library/ArtistDetail.vue:236
 #: front/src/views/admin/library/Base.vue:17
 #: front/src/views/admin/library/LibrariesList.vue:24
-msgctxt "*/*/*"
+#: front/src/views/admin/library/TrackDetail.vue:300
+#: front/src/views/admin/moderation/AccountsDetail.vue:339
+#: front/src/views/admin/moderation/DomainsDetail.vue:271
+#: front/src/views/content/Base.vue:5
+msgctxt "*/*/*/Noun"
 msgid "Libraries"
 msgstr "Bibliothèques"
 
-#: front/src/components/mixins/Translations.vue:72
-#: front/src/components/mixins/Translations.vue:73
+#: front/src/components/mixins/Translations.vue:84
+#: front/src/components/mixins/Translations.vue:85
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Libraries and uploads"
 msgstr "Bibliothèques et téléversements"
 
 #: front/src/views/content/libraries/Form.vue:2
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Libraries help you organize and share your music collections. You can upload"
-" your own music collection to Funkwhale and share it with your friends and "
-"family."
-msgstr ""
-"Les bibliothèques vous aident à organiser et à partager votre collection de "
-"musique. Vous pouvez téléverser votre bibliothèque musicale sur Funkwhale et"
-" la partager avec vos amis et votre famille."
+msgid "Libraries help you organize and share your music collections. You can upload your own music collection to Funkwhale and share it with your friends and family."
+msgstr "Les bibliothèques vous aident à organiser et à partager votre collection de musique. Vous pouvez téléverser votre bibliothèque musicale sur Funkwhale et la partager avec vos amis et votre famille."
 
-#: front/src/components/Sidebar.vue:85 src/components/instance/Stats.vue:30
+#: front/src/components/Sidebar.vue:85
 #: front/src/components/manage/library/UploadsTable.vue:60
-#: front/src/components/manage/users/UsersTable.vue:173
+#: front/src/components/manage/users/UsersTable.vue:174
+#: front/src/components/mixins/Report.vue:77
 #: front/src/views/admin/library/UploadDetail.vue:144
-#: front/src/views/admin/moderation/AccountsDetail.vue:498
-msgctxt "*/*/*"
+#: front/src/views/admin/moderation/AccountsDetail.vue:518 src/entities.js:132
+#: front/src/components/mixins/Report.vue:78
+msgctxt "*/*/*/Noun"
 msgid "Library"
 msgstr "Bibliothèque"
 
@@ -2399,21 +2503,37 @@ msgstr "Bibliothèque mise à jour"
 
 #: front/src/components/library/TrackDetail.vue:19
 #: front/src/components/manage/library/TracksTable.vue:43
-#: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:61
+#: front/src/views/admin/library/TrackDetail.vue:165 src/edits.js:84
+#: front/src/entities.js:115
 msgctxt "Content/*/*/Noun"
 msgid "License"
 msgstr "Licence"
 
-#: front/src/views/admin/library/AlbumDetail.vue:157
-#: front/src/views/admin/library/ArtistDetail.vue:146
-#: front/src/views/admin/library/TrackDetail.vue:209
-msgctxt "*/*/*/Noun"
-msgid "Listenings"
-msgstr "Écoutes"
+#: front/src/components/Footer.vue:90
+msgctxt "Footer/Settings/Dropdown.Label/Theme name"
+msgid "Light"
+msgstr "Clair"
 
-#: front/src/components/mixins/Translations.vue:80
-#: front/src/components/mixins/Translations.vue:81
-msgctxt "Content/OAuth Scopes/Label"
+#: front/src/views/admin/library/AlbumDetail.vue:188
+#: front/src/views/admin/library/ArtistDetail.vue:176
+#: front/src/views/admin/library/LibraryDetail.vue:179
+#: front/src/views/admin/library/TrackDetail.vue:240
+#: front/src/views/admin/moderation/AccountsDetail.vue:269
+msgctxt "Content/Moderation/Table.Label/Noun"
+msgid "Linked reports"
+msgstr "Signalement liés"
+
+#: front/src/components/Home.vue:135
+msgctxt "Content/Home/Link"
+msgid "Listen to public albums and playlists shared on this pod"
+msgstr "Écouter les albums publics et les playlists disponibles sur ce pod"
+
+#: front/src/components/mixins/Translations.vue:92
+#: front/src/views/admin/library/AlbumDetail.vue:163
+#: front/src/views/admin/library/ArtistDetail.vue:151
+#: front/src/views/admin/library/TrackDetail.vue:215
+#: front/src/components/mixins/Translations.vue:93
+msgctxt "*/*/*/Noun"
 msgid "Listenings"
 msgstr "Écoutes"
 
@@ -2439,7 +2559,7 @@ msgctxt "Content/Library/Paragraph"
 msgid "Loading library data…"
 msgstr "Chargement des données de la bibliothèque…"
 
-#: front/src/views/Notifications.vue:19
+#: front/src/views/Notifications.vue:84
 msgctxt "Content/Notifications/Paragraph"
 msgid "Loading notifications…"
 msgstr "Chargement des notifications…"
@@ -2464,6 +2584,7 @@ msgstr "Chargement de vos favoris…"
 #: front/src/components/manage/library/LibrariesTable.vue:75
 #: front/src/components/manage/library/TracksTable.vue:71
 #: front/src/components/manage/library/UploadsTable.vue:99
+#: front/src/components/manage/moderation/ReportCard.vue:173
 #: front/src/views/admin/library/AlbumDetail.vue:19
 #: front/src/views/admin/library/ArtistDetail.vue:18
 #: front/src/views/admin/library/LibraryDetail.vue:18
@@ -2479,12 +2600,12 @@ msgctxt "Content/Moderation/*/Short, Noun"
 msgid "Local account"
 msgstr "Compte local"
 
-#: front/src/components/auth/Login.vue:84
+#: front/src/components/Home.vue:96 src/views/auth/Login.vue:29
 msgctxt "Head/Login/Title"
 msgid "Log In"
 msgstr "Connexion"
 
-#: front/src/components/auth/Login.vue:4
+#: front/src/views/auth/Login.vue:4
 msgctxt "Content/Login/Title/Verb"
 msgid "Log in to your Funkwhale account"
 msgstr "Connectez-vous à votre compte Funkwhale"
@@ -2499,7 +2620,7 @@ msgctxt "Sidebar/Profile/List item.Link"
 msgid "Logged in as %{ username }"
 msgstr "Connecté·e en tant que %{ username }"
 
-#: front/src/components/Sidebar.vue:54 src/components/auth/Login.vue:42
+#: front/src/components/Sidebar.vue:54 src/components/auth/LoginForm.vue:41
 msgctxt "*/Login/*/Verb"
 msgid "Login"
 msgstr "Se connecter"
@@ -2517,44 +2638,41 @@ msgstr "Déconnexion"
 #: front/src/views/content/libraries/Home.vue:9
 msgctxt "Content/Library/Paragraph"
 msgid "Looks like you don't have a library, it's time to create one."
-msgstr ""
-"On dirait que vous n'avez pas encore de bibliothèque, il est temps d'en "
-"créer une."
+msgstr "On dirait que vous n'avez pas encore de bibliothèque, il est temps d'en créer une."
 
-#: front/src/components/audio/Player.vue:632
-#: src/components/audio/Player.vue:633
+#: front/src/components/audio/Player.vue:658
+#: src/components/audio/Player.vue:659
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping disabled. Click to switch to single-track looping."
-msgstr ""
-"Répétition désactivée. Cliquez ici pour activer la répétition sur la piste "
-"actuelle."
+msgstr "Répétition désactivée. Cliquez ici pour activer la répétition sur la piste actuelle."
 
-#: front/src/components/audio/Player.vue:635
-#: src/components/audio/Player.vue:636
+#: front/src/components/audio/Player.vue:661
+#: src/components/audio/Player.vue:662
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping on a single track. Click to switch to whole queue looping."
-msgstr ""
-"Répétition sur la piste en cours. Cliquez pour répéter l'intégralité de la "
-"liste d'attente."
+msgstr "Répétition sur la piste en cours. Cliquez pour répéter l'intégralité de la liste d'attente."
 
-#: front/src/components/audio/Player.vue:638
-#: src/components/audio/Player.vue:639
+#: front/src/components/audio/Player.vue:664
+#: src/components/audio/Player.vue:665
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping on whole queue. Click to disable looping."
-msgstr ""
-"Répétition de l'intégralité de la liste d'attente, cliquez pour désactiver "
-"la répétition."
+msgstr "Répétition de l'intégralité de la liste d'attente, cliquez pour désactiver la répétition."
 
-#: front/src/components/Sidebar.vue:223
+#: front/src/components/Sidebar.vue:230
 msgctxt "Sidebar/*/Hidden text"
 msgid "Main menu"
 msgstr "Menu principal"
 
-#: front/src/views/admin/library/Base.vue:31
+#: front/src/views/admin/library/Base.vue:34
 msgctxt "Head/Admin/Title"
 msgid "Manage library"
 msgstr "Gérer la bibliothèque"
 
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:8
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Manage moderation rules for %{ obj }"
+msgstr "Gérer les règles de modération pour %{ obj }"
+
 #: front/src/components/playlists/PlaylistModal.vue:3
 msgctxt "Popup/Playlist/Title/Verb"
 msgid "Manage playlists"
@@ -2570,7 +2688,7 @@ msgctxt "Content/Playlist/Button.Label/Verb"
 msgid "Manage your playlists"
 msgstr "Gérer vos listes de lecture"
 
-#: front/src/views/Notifications.vue:14
+#: front/src/views/Notifications.vue:79
 msgctxt "Content/Notifications/Button.Label/Verb"
 msgid "Mark all as read"
 msgstr "Tout marquer comme lu"
@@ -2585,12 +2703,12 @@ msgctxt "Content/Notifications/Button.Tooltip/Verb"
 msgid "Mark as unread"
 msgstr "Marquer comme non lu"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:310
+#: front/src/views/admin/moderation/AccountsDetail.vue:321
 msgctxt "Content/*/*/Unit"
 msgid "MB"
 msgstr "Mo"
 
-#: front/src/components/audio/Player.vue:625
+#: front/src/components/audio/Player.vue:651
 msgctxt "Sidebar/Player/Hidden text"
 msgid "Media player"
 msgstr "Lecteur média"
@@ -2600,43 +2718,57 @@ msgctxt "Content/Profile/Paragraph"
 msgid "Member since %{ date }"
 msgstr "Membre depuis le %{ date }"
 
+#: front/src/components/manage/moderation/ReportCard.vue:109
+#: front/src/components/moderation/ReportModal.vue:41
+msgctxt "*/*/Field.Label/Noun"
+msgid "Message"
+msgstr "Message"
+
 #: front/src/components/Footer.vue:32
 msgctxt "Footer/*/List item.Link"
 msgid "Mobile and desktop apps"
 msgstr "Applications mobiles et de bureau"
 
+#: front/src/components/Home.vue:143
+msgctxt "Content/Home/Link"
+msgid "Mobile apps"
+msgstr "Applications mobiles"
+
 #: front/src/components/Sidebar.vue:96
-#: src/components/manage/users/UsersTable.vue:177
-#: front/src/views/admin/moderation/AccountsDetail.vue:502
-#: front/src/views/admin/moderation/Base.vue:21
+#: src/components/manage/users/UsersTable.vue:178
+#: front/src/views/admin/Settings.vue:85
+#: front/src/views/admin/moderation/AccountsDetail.vue:522
+#: front/src/views/admin/moderation/Base.vue:43
 msgctxt "*/Moderation/*"
 msgid "Moderation"
 msgstr "Modération"
 
 #: front/src/views/admin/moderation/AccountsDetail.vue:78
-#: front/src/views/admin/moderation/DomainsDetail.vue:42
+#: front/src/views/admin/moderation/DomainsDetail.vue:70
 msgctxt "Content/Moderation/Card.Paragraph"
-msgid ""
-"Moderation policies help you control how your instance interact with a given"
-" domain or account."
-msgstr ""
-"Les règles de modération vous aident à contrôler comment votre instance "
-"interagit avec un domaine ou compte donné."
+msgid "Moderation policies help you control how your instance interact with a given domain or account."
+msgstr "Les règles de modération vous aident à contrôler comment votre instance interagit avec un domaine ou compte donné."
+
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:4
+msgctxt "Content/Moderation/Button.Label"
+msgid "Moderation rules…"
+msgstr "Règles de modération…"
 
 #: front/src/components/library/EditCard.vue:5
 msgctxt "Content/Library/Card/Short"
 msgid "Modification %{ id }"
 msgstr "Modification %{ id }"
 
-#: front/src/components/mixins/Translations.vue:48
-#: front/src/components/mixins/Translations.vue:49
+#: front/src/components/mixins/Translations.vue:58
+#: front/src/components/mixins/Translations.vue:59
 msgctxt "Content/Playlist/Dropdown/Noun"
 msgid "Modification date"
 msgstr "Date de modification"
 
-#: front/src/components/library/AlbumBase.vue:42
-#: front/src/components/library/ArtistBase.vue:53
-#: front/src/components/library/TrackBase.vue:61
+#: front/src/components/audio/PlayButton.vue:100
+#: front/src/components/library/AlbumBase.vue:43
+#: front/src/components/library/ArtistBase.vue:54
+#: front/src/components/library/TrackBase.vue:59
 msgctxt "*/*/Button.Label/Noun"
 msgid "More…"
 msgstr "Plus…"
@@ -2646,7 +2778,7 @@ msgctxt "*/*/*/Noun"
 msgid "Music"
 msgstr "Musique"
 
-#: front/src/components/audio/Player.vue:631
+#: front/src/components/audio/Player.vue:657
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Mute"
 msgstr "Couper le son"
@@ -2686,15 +2818,15 @@ msgstr "Ma liste de lecture d'enfer"
 #: front/src/components/library/radios/Builder.vue:237
 msgctxt "Content/Radio/Input.Placeholder"
 msgid "My awesome radio"
-msgstr "Ma radio d'enfer"
+msgstr "Ma super radio"
 
 #: front/src/views/content/libraries/Home.vue:6
 msgctxt "Content/Library/Title"
 msgid "My libraries"
 msgstr "Mes bibliothèques"
 
-#: front/src/components/audio/track/Row.vue:40
-#: src/components/library/EditCard.vue:60
+#: front/src/components/About.vue:105 src/components/audio/track/Row.vue:40
+#: front/src/components/library/EditCard.vue:60
 #: front/src/components/library/EditForm.vue:70
 #: front/src/components/library/TrackDetail.vue:34
 #: front/src/components/library/TrackDetail.vue:43
@@ -2704,54 +2836,56 @@ msgstr "Mes bibliothèques"
 #: front/src/components/manage/library/TracksTable.vue:76
 #: front/src/components/manage/library/UploadsTable.vue:121
 #: front/src/components/manage/library/UploadsTable.vue:128
-#: front/src/components/manage/users/UsersTable.vue:61
+#: front/src/components/manage/moderation/ReportCard.vue:78
+#: front/src/components/manage/moderation/ReportCard.vue:87
+#: front/src/components/manage/moderation/ReportCard.vue:193
+#: front/src/components/manage/users/UsersTable.vue:62
 #: front/src/views/admin/library/UploadDetail.vue:179
 #: front/src/views/admin/library/UploadDetail.vue:214
 #: front/src/views/admin/library/UploadDetail.vue:233
 #: front/src/views/admin/library/UploadDetail.vue:244
 #: front/src/views/admin/library/UploadDetail.vue:257
-#: front/src/views/admin/moderation/AccountsDetail.vue:192
-#: front/src/views/admin/moderation/DomainsDetail.vue:82
+#: front/src/views/admin/moderation/AccountsDetail.vue:193
+#: front/src/views/admin/moderation/DomainsDetail.vue:119
 #: front/src/views/content/libraries/FilesTable.vue:95
 #: front/src/views/content/libraries/FilesTable.vue:101
 msgctxt "*/*/*"
 msgid "N/A"
 msgstr "ND"
 
-#: front/src/components/manage/library/LibrariesTable.vue:48
-#: front/src/components/manage/library/UploadsTable.vue:59
-msgctxt "*/*/*"
-msgid "Name"
-msgstr "Nom"
-
 #: front/src/components/auth/ApplicationForm.vue:9
-msgctxt "Content/Applications/Input.Label/Noun"
-msgid "Name"
-msgstr "Nom"
-
 #: front/src/components/auth/Settings.vue:133
 #: front/src/components/manage/library/ArtistsTable.vue:39
+#: front/src/components/manage/library/LibrariesTable.vue:48
+#: front/src/components/manage/library/TagsTable.vue:41
+#: front/src/components/manage/library/UploadsTable.vue:59
 #: front/src/components/manage/moderation/AccountsTable.vue:39
-#: front/src/components/manage/moderation/DomainsTable.vue:38
-#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/manage/moderation/DomainsTable.vue:46
+#: front/src/components/mixins/Translations.vue:63
 #: front/src/components/playlists/PlaylistModal.vue:45
-#: front/src/views/admin/library/ArtistDetail.vue:98
+#: front/src/views/admin/library/ArtistDetail.vue:103
 #: front/src/views/admin/library/LibraryDetail.vue:85
+#: front/src/views/admin/library/TagDetail.vue:68
 #: front/src/views/admin/library/UploadDetail.vue:92
-#: front/src/views/admin/moderation/DomainsDetail.vue:97
-#: front/src/views/content/libraries/Form.vue:10 src/edits.js:10
-#: front/src/components/mixins/Translations.vue:54
+#: front/src/views/admin/moderation/DomainsDetail.vue:134
+#: front/src/views/content/libraries/Form.vue:10 src/edits.js:17
+#: front/src/components/mixins/Translations.vue:64
 msgctxt "*/*/*/Noun"
 msgid "Name"
 msgstr "Nom"
 
+#: front/src/views/Notifications.vue:24 src/views/Notifications.vue:58
+msgctxt "*/*/*"
+msgid "Never"
+msgstr "Jamais"
+
 #: front/src/components/auth/Settings.vue:88
 #: front/src/views/auth/PasswordResetConfirm.vue:14
 msgctxt "Content/Settings/Input.Label"
 msgid "New password"
 msgstr "Nouveau mot de passe"
 
-#: front/src/components/Sidebar.vue:173
+#: front/src/components/Sidebar.vue:177
 msgctxt "Sidebar/Player/Paragraph"
 msgid "New tracks will be appended here automatically."
 msgstr "Les nouvelles pistes seront ajoutées ici automatiquement."
@@ -2761,23 +2895,18 @@ msgctxt "Content/Library/Card.Table.Header/Short"
 msgid "New value"
 msgstr "Nouvelle valeur"
 
-#: front/src/components/audio/Player.vue:629
+#: front/src/components/audio/Player.vue:655
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Next track"
 msgstr "Piste suivante"
 
-#: front/src/components/Sidebar.vue:130
+#: front/src/components/Sidebar.vue:134
+#: front/src/components/manage/moderation/DomainsTable.vue:13
+#: front/src/views/admin/moderation/DomainsDetail.vue:110
 msgctxt "*/*/*"
 msgid "No"
 msgstr "Non"
 
-#: front/src/components/Home.vue:95
-msgctxt "Content/Home/List item"
-msgid "No add-ons, no plugins : you only need a web library"
-msgstr ""
-"Pas d'addons ou d'extension à installer, il vous suffit d'une bibliothèque "
-"sur le web"
-
 #: front/src/components/audio/Search.vue:25
 msgctxt "Content/Search/Paragraph"
 msgid "No album matched your query"
@@ -2791,8 +2920,12 @@ msgstr "Aucun·e artiste ne correspond à votre recherche"
 #: front/src/components/library/TrackDetail.vue:14
 msgctxt "Content/Track/Table.Paragraph"
 msgid "No copyright information available for this track"
-msgstr ""
-"Aucune information sur les droits d'auteur n'est disponible pour cette piste"
+msgstr "Aucune information sur les droits d'auteur n'est disponible pour cette piste"
+
+#: front/src/components/About.vue:25 src/components/Home.vue:25
+msgctxt "Content/Home/Paragraph"
+msgid "No description available."
+msgstr "Pas de description disponible."
 
 #: front/src/components/library/TrackDetail.vue:25
 msgctxt "Content/Track/Table.Paragraph"
@@ -2804,7 +2937,7 @@ msgctxt "Content/Federation/Paragraph"
 msgid "No matching library."
 msgstr "Aucune bibliothèque correspondante."
 
-#: front/src/views/Notifications.vue:28
+#: front/src/views/Notifications.vue:93
 msgctxt "Content/Notifications/Paragraph"
 msgid "No notification to show."
 msgstr "Pas encore de notifications."
@@ -2814,6 +2947,16 @@ msgctxt "Content/*/Paragraph"
 msgid "No results were found."
 msgstr "Aucun résultat n'a été trouvé."
 
+#: front/src/components/About.vue:32
+msgctxt "Content/Home/Paragraph"
+msgid "No rules available."
+msgstr "Pas de règles disponibles."
+
+#: front/src/components/About.vue:39
+msgctxt "Content/Home/Paragraph"
+msgid "No terms available."
+msgstr "Conditions indisponibles."
+
 #: front/src/components/mixins/Translations.vue:10
 #: front/src/components/mixins/Translations.vue:11
 msgctxt "Content/Settings/Dropdown"
@@ -2830,18 +2973,21 @@ msgctxt "Content/Admin/Table"
 msgid "Not used"
 msgstr "Non utilisé"
 
-#: front/src/components/mixins/Translations.vue:100
-#: front/src/components/mixins/Translations.vue:101
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Notifications"
-msgstr "Notifications"
-
-#: front/src/components/Sidebar.vue:46 src/views/Notifications.vue:76
+#: front/src/components/Sidebar.vue:46
+#: src/components/mixins/Translations.vue:112
+#: front/src/views/Notifications.vue:151
+#: src/components/mixins/Translations.vue:113
 msgctxt "*/Notifications/*"
 msgid "Notifications"
 msgstr "Notifications"
 
-#: front/src/components/Footer.vue:47
+#: front/src/components/mixins/Translations.vue:47
+#: front/src/components/mixins/Translations.vue:48
+msgctxt "Content/Moderation/Dropdown"
+msgid "Offensive content"
+msgstr "Contenu haineux"
+
+#: front/src/components/Footer.vue:55
 msgctxt "Footer/*/List item.Link"
 msgid "Official website"
 msgstr "Site officiel"
@@ -2856,6 +3002,11 @@ msgctxt "Content/Library/Card.Table.Header/Short"
 msgid "Old value"
 msgstr "Ancienne valeur"
 
+#: front/src/components/About.vue:90
+msgctxt "*/*/*/State of registrations"
+msgid "Open"
+msgstr "Ouvertes"
+
 #: front/src/components/manage/users/InvitationsTable.vue:20
 msgctxt "Content/Admin/Dropdown/Adjective"
 msgid "Open"
@@ -2863,29 +3014,29 @@ msgstr "Accès libre"
 
 #: front/src/components/library/ImportStatusModal.vue:56
 msgctxt "Popup/Import/Table.Label/Value"
-msgid ""
-"Open a support thread (include the debug information below in your message)"
-msgstr ""
-"Ouvrir un fil de discussion de support (incluez les informations de débogage"
-" dans votre message)"
-
-#: front/src/components/library/AlbumBase.vue:73
-#: front/src/components/library/ArtistBase.vue:84
-#: front/src/components/library/TrackBase.vue:92
+msgid "Open a support thread (include the debug information below in your message)"
+msgstr "Ouvrir un fil de discussion de support (incluez les informations de débogage dans votre message)"
+
+#: front/src/components/library/AlbumBase.vue:87
+#: front/src/components/library/ArtistBase.vue:99
+#: front/src/components/library/TagDetail.vue:11
+#: front/src/components/library/TrackBase.vue:103
+#: front/src/components/manage/moderation/ReportCard.vue:128
 msgctxt "Content/Moderation/Link"
 msgid "Open in moderation interface"
 msgstr "Ouvrir dans l'interface de modérations"
 
-#: front/src/views/admin/library/AlbumDetail.vue:31
-#: front/src/views/admin/library/ArtistDetail.vue:30
-#: front/src/views/admin/library/TrackDetail.vue:30
+#: front/src/views/admin/library/AlbumDetail.vue:37
+#: front/src/views/admin/library/ArtistDetail.vue:35
+#: front/src/views/admin/library/TagDetail.vue:21
+#: front/src/views/admin/library/TrackDetail.vue:36
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open local profile"
 msgstr "Ouvrir le profil local"
 
-#: front/src/views/admin/library/AlbumDetail.vue:46
-#: front/src/views/admin/library/ArtistDetail.vue:45
-#: front/src/views/admin/library/TrackDetail.vue:45
+#: front/src/views/admin/library/AlbumDetail.vue:52
+#: front/src/views/admin/library/ArtistDetail.vue:50
+#: front/src/views/admin/library/TrackDetail.vue:51
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open on MusicBrainz"
 msgstr "Ouvrir sur MusicBrainz"
@@ -2895,10 +3046,10 @@ msgctxt "Content/Moderation/Link/Verb"
 msgid "Open profile"
 msgstr "Ouvrir le profil"
 
-#: front/src/views/admin/library/AlbumDetail.vue:54
-#: front/src/views/admin/library/ArtistDetail.vue:53
+#: front/src/views/admin/library/AlbumDetail.vue:60
+#: front/src/views/admin/library/ArtistDetail.vue:58
 #: front/src/views/admin/library/LibraryDetail.vue:49
-#: front/src/views/admin/library/TrackDetail.vue:53
+#: front/src/views/admin/library/TrackDetail.vue:59
 #: front/src/views/admin/library/UploadDetail.vue:50
 #: front/src/views/admin/moderation/AccountsDetail.vue:52
 msgctxt "Content/Moderation/Link/Verb"
@@ -2919,6 +3070,7 @@ msgstr "Ou personnalisez votre règle"
 #: src/components/library/Radios.vue:41
 #: front/src/components/manage/library/EditsCardList.vue:37
 #: front/src/components/manage/users/UsersTable.vue:17
+#: front/src/views/admin/moderation/ReportsList.vue:42
 #: front/src/views/playlists/List.vue:25
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Order"
@@ -2926,40 +3078,50 @@ msgstr "Ordre"
 
 #: front/src/components/favorites/List.vue:24
 #: src/components/library/Albums.vue:15
-#: front/src/components/library/Artists.vue:15
+#: front/src/components/library/Artists.vue:19
 #: src/components/library/Radios.vue:33
 #: front/src/components/manage/library/AlbumsTable.vue:11
 #: front/src/components/manage/library/ArtistsTable.vue:11
 #: front/src/components/manage/library/EditsCardList.vue:29
 #: front/src/components/manage/library/LibrariesTable.vue:20
+#: front/src/components/manage/library/TagsTable.vue:11
 #: front/src/components/manage/library/TracksTable.vue:11
 #: front/src/components/manage/library/UploadsTable.vue:30
 #: front/src/components/manage/moderation/AccountsTable.vue:11
-#: front/src/components/manage/moderation/DomainsTable.vue:9
+#: front/src/components/manage/moderation/DomainsTable.vue:17
 #: front/src/components/manage/users/InvitationsTable.vue:9
 #: front/src/components/manage/users/UsersTable.vue:9
+#: front/src/views/admin/moderation/ReportsList.vue:34
 #: front/src/views/content/libraries/FilesTable.vue:21
 #: front/src/views/playlists/List.vue:17
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Ordering"
 msgstr "Trier par"
 
-#: front/src/components/library/Albums.vue:23
-#: src/components/library/Artists.vue:23
+#: front/src/components/library/Albums.vue:27
+#: src/components/library/Artists.vue:27
 #: front/src/components/manage/library/AlbumsTable.vue:19
 #: front/src/components/manage/library/ArtistsTable.vue:19
 #: front/src/components/manage/library/LibrariesTable.vue:28
+#: front/src/components/manage/library/TagsTable.vue:19
 #: front/src/components/manage/library/TracksTable.vue:19
 #: front/src/components/manage/library/UploadsTable.vue:38
 #: front/src/components/manage/moderation/AccountsTable.vue:19
-#: front/src/components/manage/moderation/DomainsTable.vue:17
+#: front/src/components/manage/moderation/DomainsTable.vue:25
 #: front/src/views/content/libraries/FilesTable.vue:29
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Ordering direction"
 msgstr "Sens"
 
+#: front/src/components/mixins/Translations.vue:48
+#: front/src/components/mixins/Translations.vue:49
+msgctxt "Content/Moderation/Dropdown"
+msgid "Other"
+msgstr "Autre"
+
+#: front/src/components/manage/moderation/ReportCard.vue:143
 #: front/src/components/manage/users/InvitationsTable.vue:38
-msgctxt "Content/Admin/Table.Label"
+msgctxt "*/*/*"
 msgid "Owner"
 msgstr "Propriétaire"
 
@@ -2978,12 +3140,14 @@ msgctxt "Content/*/Hidden text/Noun"
 msgid "Pagination"
 msgstr "Pagination"
 
-#: front/src/components/auth/Login.vue:33 src/components/auth/Signup.vue:40
-msgctxt "Content/*/Input.Label"
+#: front/src/components/auth/LoginForm.vue:32
+#: src/components/auth/Settings.vue:291
+#: front/src/components/auth/SignupForm.vue:36
+msgctxt "*/*/*"
 msgid "Password"
 msgstr "Mot de passe"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:94
+#: front/src/components/auth/SubsonicTokenForm.vue:100
 msgctxt "Content/Settings/Message"
 msgid "Password updated"
 msgstr "Mot de passe mis à jour"
@@ -2993,15 +3157,15 @@ msgctxt "Content/Signup/Card.Title"
 msgid "Password updated successfully"
 msgstr "Mot de passe modifié avec succès"
 
-#: front/src/components/audio/Player.vue:628
+#: front/src/components/audio/Player.vue:654
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Pause track"
 msgstr "Mettre en pause"
 
-#: front/src/components/ShortcutsModal.vue:59
+#: front/src/components/ShortcutsModal.vue:96
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Pause/play the current track"
-msgstr "Mettre en pause/jouer la piste en cours"
+msgstr "Mettre en pause/relancer la lecture"
 
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:12
 msgctxt "Content/Moderation/Card.List item"
@@ -3027,7 +3191,7 @@ msgctxt "Content/Library/Label"
 msgid "Pending files"
 msgstr "Fichiers en attente"
 
-#: front/src/components/Sidebar.vue:225
+#: front/src/components/Sidebar.vue:232
 msgctxt "Sidebar/Notifications/Hidden text"
 msgid "Pending follow requests"
 msgstr "Demandes d'abonnement en attente"
@@ -3038,84 +3202,75 @@ msgctxt "Content/Admin/*/Noun"
 msgid "Pending review"
 msgstr "Vérification en attente"
 
-#: front/src/components/Sidebar.vue:226
+#: front/src/components/Sidebar.vue:233
 msgctxt "Sidebar/Moderation/Hidden text"
 msgid "Pending review edits"
 msgstr "Vérification des modifications en attente"
 
+#: front/src/components/auth/Settings.vue:176
 #: front/src/components/manage/users/UsersTable.vue:42
 #: front/src/views/admin/moderation/AccountsDetail.vue:166
-msgctxt "Content/Admin/Table.Label/Noun"
-msgid "Permissions"
-msgstr "Permissions"
-
-#: front/src/components/auth/Settings.vue:176
 msgctxt "Content/*/*/Noun"
 msgid "Permissions"
 msgstr "Permissions"
 
 #: front/src/components/audio/PlayButton.vue:9
-#: front/src/components/library/TrackBase.vue:26
+#: front/src/components/library/TrackBase.vue:24
 msgctxt "*/Queue/Button.Label/Short, Verb"
 msgid "Play"
 msgstr "Jouer"
 
 #: front/src/components/audio/album/Card.vue:48
-#: front/src/components/audio/artist/Card.vue:44
-#: front/src/components/library/AlbumBase.vue:20
+#: front/src/components/library/AlbumBase.vue:21
 #: front/src/components/library/AlbumDetail.vue:11
 #: src/views/playlists/Detail.vue:24
 msgctxt "Content/Queue/Button.Label/Short, Verb"
 msgid "Play all"
 msgstr "Tout lire"
 
-#: front/src/components/library/ArtistBase.vue:31
+#: front/src/components/library/ArtistBase.vue:32
 msgctxt "Content/Artist/Button.Label/Verb"
 msgid "Play all albums"
 msgstr "Lire tous les albums"
 
-#: front/src/components/audio/PlayButton.vue:76
+#: front/src/components/audio/PlayButton.vue:92
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play next"
 msgstr "Lire ensuite"
 
-#: front/src/components/ShortcutsModal.vue:67
+#: front/src/components/ShortcutsModal.vue:120
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Play next track"
 msgstr "Jouer la piste suivante"
 
-#: front/src/components/audio/PlayButton.vue:74
+#: front/src/components/audio/PlayButton.vue:90
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play now"
 msgstr "Lire maintenant"
 
-#: front/src/components/ShortcutsModal.vue:63
+#: front/src/components/ShortcutsModal.vue:116
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Play previous track"
 msgstr "Jouer la piste précédente"
 
-#: front/src/components/audio/PlayButton.vue:77
+#: front/src/components/audio/PlayButton.vue:93
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play similar songs"
 msgstr "Jouer des chansons similaires"
 
-#: front/src/components/Sidebar.vue:224
+#: front/src/components/Sidebar.vue:231
 msgctxt "Sidebar/Player/Hidden text"
 msgid "Play this track"
 msgstr "Jouer cette piste"
 
-#: front/src/components/audio/Player.vue:627
+#: front/src/components/audio/Player.vue:653
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Play track"
 msgstr "Jouer"
 
-#: front/src/components/audio/PlayButton.vue:82
-msgctxt "*/Queue/Button/Title"
-msgid "Play..."
-msgstr "Jouer…"
-
-#: front/src/views/playlists/Detail.vue:91
-msgctxt "Head/Playlist/Title"
+#: front/src/components/mixins/Report.vue:66 src/views/playlists/Detail.vue:121
+#: front/src/components/mixins/Report.vue:67
+msgctxt "*/*/*"
 msgid "Playlist"
 msgstr "Liste de lecture"
 
@@ -3151,63 +3306,62 @@ msgctxt "Content/Playlist/Dropdown.Label"
 msgid "Playlist visibility"
 msgstr "Visibilité de la playlist"
 
-#: front/src/components/mixins/Translations.vue:88
-#: front/src/components/mixins/Translations.vue:89
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Playlists"
-msgstr "Listes de lecture"
-
 #: front/src/components/Sidebar.vue:71 src/components/library/Home.vue:16
-#: front/src/components/library/Library.vue:16 src/views/admin/Settings.vue:83
-#: front/src/views/admin/library/AlbumDetail.vue:173
-#: front/src/views/admin/library/ArtistDetail.vue:162
-#: front/src/views/admin/library/TrackDetail.vue:225
+#: front/src/components/library/Library.vue:16
+#: front/src/components/mixins/Translations.vue:100
+#: src/views/admin/Settings.vue:83
+#: front/src/views/admin/library/AlbumDetail.vue:179
+#: front/src/views/admin/library/ArtistDetail.vue:167
+#: front/src/views/admin/library/TrackDetail.vue:231
 #: src/views/playlists/List.vue:106
+#: front/src/components/mixins/Translations.vue:101
 msgctxt "*/*/*"
 msgid "Playlists"
 msgstr "Listes de lecture"
 
-#: front/src/components/Home.vue:56
-msgctxt "Content/Home/List item"
-msgid "Playlists? We got them"
-msgstr "Les playlists ? Elles sont là !"
+#: front/src/components/audio/EmbedWizard.vue:9
+msgctxt "Content/Embed/Message"
+msgid "Please contact your admins and ask them to update the corresponding setting."
+msgstr ""
+"Merci de contacter vos administrateur·ices et de leur demander de mettre à "
+"jour le réglage correspondant."
 
 #: front/src/components/auth/Settings.vue:79
 msgctxt "Content/Settings/Error message.List item/Call to action"
 msgid "Please double-check your password is correct"
 msgstr "Merci de vérifier que votre mot de passe est correct"
 
-#: front/src/components/auth/Login.vue:9
+#: front/src/components/auth/LoginForm.vue:5
 msgctxt "Content/Login/Error message.List item/Call to action"
 msgid "Please double-check your username/password couple is correct"
-msgstr ""
-"Merci de vérifier que votre nom d'utilisateur et mot de passe sont corrects"
+msgstr "Merci de vérifier que votre nom d'utilisateur et mot de passe sont corrects"
 
 #: front/src/components/auth/Settings.vue:46
 msgctxt "Content/Settings/Paragraph"
 msgid "PNG, GIF or JPG. At most 2MB. Will be downscaled to 400x400px."
 msgstr "PNG, GIF ou JPG. 2Mo maximum. L'image sera réduite à 400×400 pixels."
 
-#: front/src/views/admin/library/TrackDetail.vue:137
-msgctxt "*/*/*/Noun"
+#: front/src/components/About.vue:72
+msgctxt "Content/About/Header/Name"
+msgid "Pod configuration"
+msgstr "Configuration du pod"
+
+#: front/src/views/admin/library/TrackDetail.vue:143 src/edits.js:70
+msgctxt "*/*/*/Short, Noun"
 msgid "Position"
-msgstr "Position"
+msgstr "Pagination"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:118
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Prevent account or domain from triggering notifications, except from "
-"followers."
-msgstr ""
-"Empêche le compte ou domaine de déclencher des notifications, sauf pour les "
-"abonné·e·s."
+msgid "Prevent account or domain from triggering notifications, except from followers."
+msgstr "Empêche le compte ou domaine de déclencher des notifications, sauf pour les abonné·e·s."
 
-#: front/src/components/audio/EmbedWizard.vue:33
+#: front/src/components/audio/EmbedWizard.vue:43
 msgctxt "Popup/Embed/Title/Noun"
 msgid "Preview"
 msgstr "Aperçu"
 
-#: front/src/components/audio/Player.vue:626
+#: front/src/components/audio/Player.vue:652
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Previous track"
 msgstr "Piste précédente"
@@ -3218,7 +3372,7 @@ msgctxt "Content/Settings/Dropdown/Short"
 msgid "Private"
 msgstr "Privé"
 
-#: front/src/views/content/remote/Card.vue:43
+#: front/src/views/content/remote/Card.vue:56
 msgctxt "Content/Library/Card.List item"
 msgid "Problem during scanning"
 msgstr "Problème lors de l'analyse"
@@ -3239,14 +3393,21 @@ msgctxt "Content/Library/Tab.Title/Short"
 msgid "Processing"
 msgstr "En cours de traitement"
 
-#: front/src/components/mixins/Translations.vue:68
-#: front/src/components/mixins/Translations.vue:69
+#: front/src/components/mixins/Translations.vue:80
+#: front/src/components/mixins/Translations.vue:81
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Profile"
 msgstr "Profil"
 
+#: front/src/components/auth/SignupForm.vue:5
+msgctxt "Content/Signup/Form/Paragraph"
+msgid "Public registrations are not possible on this instance. You will need an invitation code to sign up."
+msgstr ""
+"Les inscriptions sont désactivées sur cette instance. vous aurez besoin d'un "
+"code d'invitation pour vous inscrire."
+
 #: front/src/components/manage/moderation/AccountsTable.vue:188
-#: front/src/components/manage/moderation/DomainsTable.vue:168
+#: front/src/components/manage/moderation/DomainsTable.vue:186
 #: front/src/views/content/libraries/Quota.vue:36
 #: front/src/views/content/libraries/Quota.vue:39
 #: front/src/views/content/libraries/Quota.vue:62
@@ -3270,14 +3431,14 @@ msgstr "Supprimer les fichiers en attente ?"
 #: front/src/views/content/libraries/Quota.vue:63
 msgctxt "Popup/Library/Title"
 msgid "Purge skipped files?"
-msgstr "Supprimer les fichiers oubliés ?"
+msgstr "Supprimer les fichiers ignorés ?"
 
 #: front/src/components/Sidebar.vue:20
 msgctxt "Sidebar/Queue/Tab.Title/Noun"
 msgid "Queue"
 msgstr "File d’attente"
 
-#: front/src/components/audio/Player.vue:322
+#: front/src/components/audio/Player.vue:329
 msgctxt "Content/Queue/Message"
 msgid "Queue shuffled!"
 msgstr "La file d’attente a été mélangée !"
@@ -3309,16 +3470,12 @@ msgstr "Radio mise à jour"
 
 #: front/src/components/library/Library.vue:13
 #: src/components/library/Radios.vue:142
+#: front/src/components/mixins/Translations.vue:104
+#: front/src/components/mixins/Translations.vue:105
 msgctxt "*/*/*"
 msgid "Radios"
 msgstr "Radios"
 
-#: front/src/components/mixins/Translations.vue:92
-#: front/src/components/mixins/Translations.vue:93
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Radios"
-msgstr "Radios"
-
 #: front/src/components/auth/ApplicationForm.vue:151
 msgctxt "Content/OAuth Scopes/Label/Verb"
 msgid "Read"
@@ -3345,15 +3502,15 @@ msgctxt "Content/Moderation/*/Noun"
 msgid "Reason"
 msgstr "Raison"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:251
-#: front/src/views/admin/moderation/DomainsDetail.vue:179
+#: front/src/views/admin/moderation/AccountsDetail.vue:252
+#: front/src/views/admin/moderation/DomainsDetail.vue:216
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Received library follows"
 msgstr "Suivis de bibliothèque reçus"
 
-#: front/src/components/manage/moderation/DomainsTable.vue:40
-#: front/src/components/mixins/Translations.vue:62
-#: front/src/components/mixins/Translations.vue:63
+#: front/src/components/manage/moderation/DomainsTable.vue:48
+#: front/src/components/mixins/Translations.vue:74
+#: front/src/components/mixins/Translations.vue:75
 msgctxt "Content/Moderation/*/Noun"
 msgid "Received messages"
 msgstr "Messages reçus"
@@ -3373,6 +3530,11 @@ msgctxt "Content/Home/Title"
 msgid "Recently added"
 msgstr "Ajoutés récemment"
 
+#: front/src/components/Home.vue:167
+msgctxt "Content/Home/Title"
+msgid "Recently added albums"
+msgstr "Albums ajoutés récemment"
+
 #: front/src/components/library/Home.vue:11
 msgctxt "Content/Home/Title"
 msgid "Recently favorited"
@@ -3401,14 +3563,14 @@ msgctxt "Popup/*/Message.Title"
 msgid "Refresh error"
 msgstr "Erreur de rafraîchissement"
 
-#: front/src/views/admin/library/AlbumDetail.vue:50
-#: front/src/views/admin/library/ArtistDetail.vue:49
-#: front/src/views/admin/library/TrackDetail.vue:49
+#: front/src/views/admin/library/AlbumDetail.vue:56
+#: front/src/views/admin/library/ArtistDetail.vue:54
+#: front/src/views/admin/library/TrackDetail.vue:55
 msgctxt "Content/Moderation/Button/Verb"
 msgid "Refresh from remote server"
 msgstr "Rafraîchir depuis le serveur distant"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:127
+#: front/src/views/admin/moderation/DomainsDetail.vue:164
 msgctxt "Content/Moderation/Button.Label/Verb"
 msgid "Refresh node info"
 msgstr "Rafraîchir les informations du nœud"
@@ -3420,12 +3582,8 @@ msgstr "Rafraîchissement en attente"
 
 #: front/src/components/federation/FetchButton.vue:80
 msgctxt "Popup/*/Message.Content"
-msgid ""
-"Refresh request wasn't proceed in time by our server. It will be processed "
-"later."
-msgstr ""
-"La requête de rafraîchissement n'a pas été effectuée à temps par notre "
-"serveur. Elle sera exécutée plus tard."
+msgid "Refresh request wasn't proceed in time by our server. It will be processed later."
+msgstr "La requête de rafraîchissement n'a pas été effectuée à temps par notre serveur. Elle sera exécutée plus tard."
 
 #: front/src/components/federation/FetchButton.vue:16
 msgctxt "Popup/*/Message.Title"
@@ -3440,23 +3598,19 @@ msgstr "Rafraîchir le contenu de la table"
 #: front/src/components/federation/FetchButton.vue:12
 msgctxt "Popup/*/Message.Title"
 msgid "Refresh was skipped"
-msgstr ""
+msgstr "Rafraîchissement non effectué"
 
 #: front/src/components/federation/FetchButton.vue:7
 msgctxt "Popup/*/Title"
 msgid "Refreshing object from remote…"
 msgstr "Rafraîchissement de l'objet depuis le serveur distant…"
 
-#: front/src/components/auth/Signup.vue:9
-msgctxt "Content/Signup/Form/Paragraph"
-msgid ""
-"Registration are closed on this instance, you will need an invitation code "
-"to signup."
-msgstr ""
-"Les inscriptions sont fermées sur cette instance, vous aurez besoin d'un "
-"code d'invitation pour vous inscrire."
+#: front/src/components/About.vue:86
+msgctxt "*/*/*"
+msgid "Registrations"
+msgstr "Inscriptions"
 
-#: front/src/components/manage/users/UsersTable.vue:71
+#: front/src/components/manage/users/UsersTable.vue:72
 msgctxt "Content/Admin/Table, User role"
 msgid "Regular user"
 msgstr "Utilisateur·rice standard·e"
@@ -3481,8 +3635,8 @@ msgid "Rejected"
 msgstr "Rejeté"
 
 #: front/src/components/manage/library/AlbumsTable.vue:43
-#: front/src/components/mixins/Translations.vue:44 src/edits.js:28
-#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:54 src/edits.js:43
+#: front/src/components/mixins/Translations.vue:55
 msgctxt "Content/*/*/Noun"
 msgid "Release date"
 msgstr "Date de sortie"
@@ -3492,6 +3646,11 @@ msgctxt "Content/Library/Paragraph"
 msgid "Remaining storage space"
 msgstr "Espace de stockage restant"
 
+#: front/src/views/Notifications.vue:18 src/views/Notifications.vue:52
+msgctxt "Content/Notifications/Label"
+msgid "Remind me in:"
+msgstr "Me le rappelez dans :"
+
 #: front/src/views/content/remote/Home.vue:6
 msgctxt "Content/Library/Title/Noun"
 msgid "Remote libraries"
@@ -3499,13 +3658,8 @@ msgstr "Bibliothèques distantes"
 
 #: front/src/views/content/remote/Home.vue:7
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Remote libraries are owned by other users on the network. You can access "
-"them as long as they are public or you are granted access."
-msgstr ""
-"Les bibliothèques distantes appartiennent à d'autres utilisateurs du réseau."
-" Vous pouvez y accéder tant qu'elles sont publiques ou qu'on vous en donne "
-"l'accès."
+msgid "Remote libraries are owned by other users on the network. You can access them as long as they are public or you are granted access."
+msgstr "Les bibliothèques distantes appartiennent à d'autres utilisateurs du réseau. Vous pouvez y accéder tant qu'elles sont publiques ou qu'on vous en donne l'accès."
 
 #: front/src/components/library/radios/Filter.vue:59
 msgctxt "Content/Radio/Button.Label/Verb"
@@ -3522,6 +3676,12 @@ msgctxt "Content/Moderation/Button.Label"
 msgid "Remove filter"
 msgstr "Supprimer le filtre"
 
+#: front/src/components/manage/moderation/DomainsTable.vue:198
+#: front/src/views/admin/moderation/DomainsDetail.vue:39
+msgctxt "Content/Moderation/Action/Verb"
+msgid "Remove from allow-list"
+msgstr "Retirer de la liste d'autorisations"
+
 #: front/src/components/favorites/TrackFavoriteIcon.vue:26
 msgctxt "Content/Track/Icon.Tooltip/Verb"
 msgid "Remove from favorites"
@@ -3529,45 +3689,98 @@ msgstr "Retirer des favoris"
 
 #: front/src/views/content/libraries/Quota.vue:38
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded but yet to be processed tracks completely, adding the "
-"corresponding data to your quota."
-msgstr ""
-"Les pistes importées qui n'ont pas encore été complètement traitées par le "
-"serveur seront supprimées complètement. Le quota correspondant vous sera "
-"restitué."
+msgid "Removes uploaded but yet to be processed tracks completely, adding the corresponding data to your quota."
+msgstr "Les pistes importées qui n'ont pas encore été complètement traitées par le serveur seront supprimées complètement. Le quota correspondant vous sera restitué."
 
 #: front/src/views/content/libraries/Quota.vue:64
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded tracks skipped during the import processes completely, "
-"adding the corresponding data to your quota."
-msgstr ""
-"Les pistes téléversées mais ignorées pendant l'importation pour diverses "
-"raisons seront supprimées complètement. L'espace de stockage correspondant "
-"vous sera restitué."
+msgid "Removes uploaded tracks skipped during the import processes completely, adding the corresponding data to your quota."
+msgstr "Les pistes téléversées mais ignorées pendant l'importation pour diverses raisons seront supprimées complètement. L'espace de stockage correspondant vous sera restitué."
 
 #: front/src/views/content/libraries/Quota.vue:90
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded tracks that could not be processed by the server "
-"completely, adding the corresponding data to your quota."
-msgstr ""
-"Les pistes téléversées mais pas encore complètement traitées pas le serveur "
-"seront supprimées. L'espace de stockage correspondant vous sera restitué."
+msgid "Removes uploaded tracks that could not be processed by the server completely, adding the corresponding data to your quota."
+msgstr "Les pistes téléversées mais pas encore complètement traitées pas le serveur seront supprimées. L'espace de stockage correspondant vous sera restitué."
+
+#: front/src/components/audio/PlayButton.vue:94
+msgctxt "*/Queue/Dropdown/Button/Title"
+msgid "Replace current queue"
+msgstr "Remplacer la file d'attente actuelle"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:33
-#: front/src/components/auth/SubsonicTokenForm.vue:36
+#: front/src/components/mixins/Report.vue:6 src/components/mixins/Report.vue:7
+msgctxt "*/Moderation/*/Verb"
+msgid "Report @%{ username }…"
+msgstr "Signaler @${ username }…"
+
+#: front/src/components/manage/moderation/ReportCard.vue:5
+msgctxt "Content/Moderation/Card/Short"
+msgid "Report %{ id }"
+msgstr "Signaler ${ id }"
+
+#: front/src/components/moderation/ReportModal.vue:139
+msgctxt "*/Moderation/Message"
+msgid "Report successfully submitted, thank you"
+msgstr "Signalement effectué avec succès, merci"
+
+#: front/src/components/mixins/Report.vue:36
+#: src/components/mixins/Report.vue:37
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this album…"
+msgstr "Signaler cet album…"
+
+#: front/src/components/mixins/Report.vue:50
+#: src/components/mixins/Report.vue:51
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this artist…"
+msgstr "Signaler cet·te artiste…"
+
+#: front/src/components/mixins/Report.vue:72
+#: src/components/mixins/Report.vue:73
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this library…"
+msgstr "Signaler cette bibliothèque…"
+
+#: front/src/components/mixins/Report.vue:61
+#: src/components/mixins/Report.vue:62
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this playlist…"
+msgstr "Signaler cette liste de lecture…"
+
+#: front/src/components/mixins/Report.vue:23
+#: src/components/mixins/Report.vue:24
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this track…"
+msgstr "Signaler cette piste…"
+
+#: front/src/components/audio/PlayButton.vue:95
+msgctxt "*/Moderation/*/Button/Label,Verb"
+msgid "Report…"
+msgstr "Signaler…"
+
+#: front/src/components/manage/moderation/ReportCard.vue:117
+msgctxt "Content/*/*/Short"
+msgid "Reported object"
+msgstr "Élément signalé"
+
+#: front/src/views/admin/moderation/Base.vue:5
+#: front/src/views/admin/moderation/ReportsList.vue:3
+#: front/src/views/admin/moderation/ReportsList.vue:208
+msgctxt "*/Moderation/*/Noun"
+msgid "Reports"
+msgstr "Signalements"
+
+#: front/src/components/auth/SubsonicTokenForm.vue:38
+#: front/src/components/auth/SubsonicTokenForm.vue:41
 msgctxt "*/Settings/Button.Label/Verb"
 msgid "Request a new password"
 msgstr "Demander un nouveau mot de passe"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:34
+#: front/src/components/auth/SubsonicTokenForm.vue:39
 msgctxt "Popup/Settings/Title"
 msgid "Request a new Subsonic API password?"
 msgstr "Demander un nouveau mot de passe pour l'API Subsonic ?"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:42
+#: front/src/components/auth/SubsonicTokenForm.vue:47
 msgctxt "Content/Settings/Button.Label/Verb"
 msgid "Request a password"
 msgstr "Demander un mot de passe"
@@ -3575,37 +3788,53 @@ msgstr "Demander un mot de passe"
 #: front/src/components/federation/FetchButton.vue:64
 msgctxt "Popup/*/Loading.Title"
 msgid "Requesting a fetch…"
-msgstr ""
+msgstr "Demande de récupération en cours…"
 
-#: front/src/components/library/EditForm.vue:82
+#: front/src/components/library/EditForm.vue:94
 msgctxt "Content/Library/Button.Label"
-msgid "Reset to initial value: %{ value }"
-msgstr ""
+msgid "Reset to initial value"
+msgstr "Réinitialiser à la valeur d’origine"
 
-#: front/src/components/auth/Login.vue:35 src/views/auth/PasswordReset.vue:4
-#: front/src/views/auth/PasswordReset.vue:53
+#: front/src/components/auth/LoginForm.vue:34
+#: src/views/auth/PasswordReset.vue:4 front/src/views/auth/PasswordReset.vue:53
 msgctxt "*/Login/*/Verb"
 msgid "Reset your password"
 msgstr "Réinitialiser votre mot de passe"
 
+#: front/src/components/manage/moderation/ReportCard.vue:83
+msgctxt "Content/*/*/Noun"
+msgid "Resolution date"
+msgstr "Date de résolution"
+
+#: front/src/components/manage/moderation/ReportCard.vue:218
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Resolve"
+msgstr "Résoudre"
+
+#: front/src/components/manage/moderation/ReportCard.vue:62
+#: front/src/views/admin/moderation/ReportsList.vue:20
+msgctxt "Content/*/*/Short"
+msgid "Resolved"
+msgstr "Résolu"
+
 #: front/src/views/content/libraries/FilesTable.vue:223
 msgctxt "Content/Library/Dropdown/Verb"
 msgid "Restart import"
 msgstr "Relancer l'importation"
 
+#: front/src/components/library/EditForm.vue:31
+msgctxt "Content/Library/Button.Label"
+msgid "Restrict to unreviewed edits"
+msgstr "Limiter aux modifications en attente de validation"
+
 #: front/src/components/favorites/List.vue:39
-#: src/components/library/Albums.vue:30
-#: front/src/components/library/Artists.vue:30
+#: src/components/library/Albums.vue:34
+#: front/src/components/library/Artists.vue:34
 #: src/components/library/Radios.vue:52 front/src/views/playlists/List.vue:32
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Results per page"
 msgstr "Résultats par page"
 
-#: front/src/components/library/EditForm.vue:31
-msgctxt "Content/Library/Button.Label"
-msgid "Retrict to unreviewed edits"
-msgstr ""
-
 #: front/src/views/auth/EmailConfirm.vue:17
 msgctxt "Content/Signup/Link/Verb"
 msgid "Return to login"
@@ -3619,73 +3848,74 @@ msgstr "Afficher les fichiers"
 #: front/src/components/auth/Settings.vue:192
 msgctxt "*/*/*/Verb"
 msgid "Revoke"
-msgstr ""
+msgstr "Révoquer"
 
 #: front/src/components/auth/Settings.vue:195
 msgctxt "*/Settings/Button.Label/Verb"
 msgid "Revoke access"
-msgstr ""
+msgstr "Révoquer l'accès"
 
 #: front/src/components/auth/Settings.vue:193
 msgctxt "Popup/Settings/Title"
 msgid "Revoke access for application \"%{ application }\"?"
-msgstr ""
+msgstr "Révoquer l'accès pour l'application « %{ application } » ?"
 
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:16
 msgctxt "Content/Moderation/Card.Title/Noun"
 msgid "Rule"
 msgstr "Règle"
 
-#: front/src/components/admin/SettingsGroup.vue:67
+#: front/src/components/About.vue:28 src/components/About.vue:56
+msgctxt "Content/About/Header"
+msgid "Rules"
+msgstr "Règles"
+
+#: front/src/components/admin/SettingsGroup.vue:75
 #: front/src/components/library/radios/Builder.vue:34
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Save"
 msgstr "Enregistrer"
 
-#: front/src/views/content/remote/Card.vue:175
+#: front/src/views/content/remote/Card.vue:203
 msgctxt "Content/Library/Message"
 msgid "Scan launched"
 msgstr "Scan démarré"
 
-#: front/src/views/content/remote/Card.vue:67
+#: front/src/views/content/remote/Card.vue:80
 msgctxt "Content/Library/Card.Button.Label/Verb"
 msgid "Scan now"
 msgstr "Analyser maintenant"
 
-#: front/src/views/content/remote/Card.vue:35
+#: front/src/views/content/remote/Card.vue:48
 msgctxt "Content/Library/Card.List item"
 msgid "Scan pending"
 msgstr "Croissant"
 
-#: front/src/views/content/remote/Card.vue:176
+#: front/src/views/content/remote/Card.vue:204
 msgctxt "Content/Library/Message"
 msgid "Scan skipped (previous scan is too recent)"
 msgstr "Scan non lancé (le scan précédent est trop récent)"
 
-#: front/src/views/content/remote/Card.vue:47
+#: front/src/views/content/remote/Card.vue:60
 msgctxt "Content/Library/Card.List item"
 msgid "Scanned"
 msgstr "Analyse démarrée"
 
-#: front/src/views/content/remote/Card.vue:51
+#: front/src/views/content/remote/Card.vue:64
 msgctxt "Content/Library/Card.List item"
 msgid "Scanned with errors"
 msgstr "Scanné avec des erreurs"
 
-#: front/src/views/content/remote/Card.vue:39
+#: front/src/views/content/remote/Card.vue:52
 msgctxt "Content/Library/Card.List item"
 msgid "Scanning… (%{ progress }%)"
 msgstr "Analyse en cours… (%{ progress }%)"
 
 #: front/src/components/auth/ApplicationForm.vue:22
-msgctxt "Content/Applications/Input.Label/Noun"
-msgid "Scopes"
-msgstr ""
-
 #: front/src/components/auth/Settings.vue:226
 msgctxt "Content/*/*/Noun"
 msgid "Scopes"
-msgstr ""
+msgstr "Périmètres"
 
 #: front/src/components/library/Albums.vue:10
 #: src/components/library/Artists.vue:10
@@ -3694,12 +3924,14 @@ msgstr ""
 #: front/src/components/manage/library/ArtistsTable.vue:5
 #: front/src/components/manage/library/EditsCardList.vue:6
 #: front/src/components/manage/library/LibrariesTable.vue:5
+#: front/src/components/manage/library/TagsTable.vue:5
 #: front/src/components/manage/library/TracksTable.vue:5
 #: front/src/components/manage/library/UploadsTable.vue:5
 #: front/src/components/manage/moderation/AccountsTable.vue:5
 #: front/src/components/manage/moderation/DomainsTable.vue:5
 #: front/src/components/manage/users/InvitationsTable.vue:5
 #: front/src/components/manage/users/UsersTable.vue:5
+#: front/src/views/admin/moderation/ReportsList.vue:8
 #: front/src/views/content/libraries/FilesTable.vue:5
 #: src/views/playlists/List.vue:13
 msgctxt "Content/Search/Input.Label/Noun"
@@ -3712,6 +3944,7 @@ msgid "Search a remote library"
 msgstr "Rechercher une bibliothèque distante"
 
 #: front/src/components/manage/library/EditsCardList.vue:211
+#: front/src/views/admin/moderation/ReportsList.vue:207
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by account, summary, domain…"
 msgstr "Rechercher par titre, artiste, domaine…"
@@ -3746,7 +3979,12 @@ msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by domain, username, bio…"
 msgstr "Rechercher par domaine, nom d'utilisateur·rice, bio…"
 
-#: front/src/components/manage/moderation/DomainsTable.vue:151
+#: front/src/components/manage/library/TagsTable.vue:165
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by name"
+msgstr "Rechercher par nom"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:168
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by name…"
 msgstr "Rechercher par nom…"
@@ -3761,12 +3999,12 @@ msgctxt "Content/Admin/Input.Placeholder/Verb"
 msgid "Search by username, e-mail address, code…"
 msgstr "Rechercher par nom d'utilisateur·rice, courriel, code…"
 
-#: front/src/components/manage/users/UsersTable.vue:163
+#: front/src/components/manage/users/UsersTable.vue:164
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by username, e-mail address, name…"
 msgstr "Rechercher par nom d'utilisateur·rice, courriel, nom…"
 
-#: front/src/components/audio/SearchBar.vue:20
+#: front/src/components/audio/SearchBar.vue:27
 msgctxt "Sidebar/Search/Input.Placeholder"
 msgid "Search for artists, albums, tracks…"
 msgstr "Rechercher des artistes, albums, pistes…"
@@ -3776,16 +4014,28 @@ msgctxt "Content/Search/Title"
 msgid "Search for some music"
 msgstr "Rechercher de la musique"
 
-#: front/src/components/library/AlbumBase.vue:57
-#: front/src/components/library/ArtistBase.vue:68
-#: front/src/components/library/TrackBase.vue:76
+#: front/src/components/library/TagsSelector.vue:6
+msgctxt "*/Dropdown/Placeholder/Verb"
+msgid "Search for tags…"
+msgstr "Rechercher des tags…"
+
+#: front/src/components/library/AlbumBase.vue:66
+#: front/src/components/library/ArtistBase.vue:77
+#: front/src/components/library/TrackBase.vue:82
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Search on Discogs"
+msgstr "Rechercher sur Discogs"
+
+#: front/src/components/library/AlbumBase.vue:58
+#: front/src/components/library/ArtistBase.vue:69
+#: front/src/components/library/TrackBase.vue:74
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Search on Wikipedia"
 msgstr "Rechercher sur Wikipédia"
 
 #: front/src/components/library/Library.vue:35
-#: src/views/admin/library/Base.vue:32
-#: front/src/views/admin/moderation/Base.vue:22
+#: src/views/admin/library/Base.vue:35
+#: front/src/views/admin/moderation/Base.vue:44
 #: src/views/admin/users/Base.vue:21 front/src/views/content/Base.vue:19
 msgctxt "Menu/*/Hidden text"
 msgid "Secondary menu"
@@ -3796,13 +4046,32 @@ msgctxt "Content/Admin/Menu.Title"
 msgid "Sections"
 msgstr "Sections"
 
+#: front/src/components/ShortcutsModal.vue:108
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek backwards 30s"
+msgstr "Reculer de 30s"
+
+#: front/src/components/ShortcutsModal.vue:100
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek backwards 5s"
+msgstr "Reculer de 5s"
+
+#: front/src/components/ShortcutsModal.vue:112
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek forwards 30s"
+msgstr "Avancer de 30s"
+
+#: front/src/components/ShortcutsModal.vue:104
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek forwards 5s"
+msgstr "Avancer de 5s"
+
 #: front/src/components/library/radios/Builder.vue:46
 msgctxt "Content/Radio/Dropdown.Placeholder/Verb"
 msgid "Select a filter"
 msgstr "Sélectionner un filtre"
 
 #: front/src/components/common/ActionTable.vue:79
-#, fuzzy
 msgctxt "Content/*/Link/Verb"
 msgid "Select all %{ total } elements"
 msgid_plural "Select all %{ total } elements"
@@ -3814,9 +4083,14 @@ msgctxt "Content/*/Link/Verb"
 msgid "Select only current page"
 msgstr "Sélectionner seulement la page actuelle"
 
-#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:108
-#: front/src/components/manage/users/UsersTable.vue:181
-#: front/src/views/admin/moderation/AccountsDetail.vue:506
+#: front/src/components/Home.vue:43
+msgctxt "Content/Home/Link"
+msgid "Server rules"
+msgstr "Règles du serveur"
+
+#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:112
+#: front/src/components/manage/users/UsersTable.vue:182
+#: front/src/views/admin/moderation/AccountsDetail.vue:526
 msgctxt "*/*/*/Noun"
 msgid "Settings"
 msgstr "Paramètres"
@@ -3838,50 +4112,67 @@ msgstr "Lien de partage"
 
 #: front/src/views/content/libraries/Detail.vue:15
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Share this link with other users so they can request access to your library."
-msgstr ""
-"Partagez ce lien avec d'autres utilisateurs afin qu'ils puissent demander "
-"l'accès à votre bibliothèque."
+msgid "Share this link with other users so they can request access to your library."
+msgstr "Partagez ce lien avec d'autres utilisateurs afin qu'ils puissent demander l'accès à votre bibliothèque."
 
 #: front/src/views/content/libraries/Detail.vue:14
-#: front/src/views/content/remote/Card.vue:77
+#: front/src/views/content/remote/Card.vue:90
 msgctxt "Content/Library/Title"
 msgid "Sharing link"
 msgstr "Lien de partage"
 
+#: front/src/components/audio/EmbedWizard.vue:5
+msgctxt "Content/Embed/Message"
+msgid "Sharing will not work because this pod doesn't allow anonymous users to access content."
+msgstr ""
+"Le partage ne fonctionnera car ce pod n'autorise pas les utilisateur·ices "
+"anonymes à accéder aux contenus."
+
+#: front/src/components/About.vue:156
+msgctxt "*/*/*/Verb"
+msgid "Show"
+msgstr "Afficher"
+
 #: front/src/components/audio/album/Card.vue:38
-#, fuzzy
 msgctxt "Content/Album/Card.Link/Verb"
 msgid "Show %{ count } more track"
 msgid_plural "Show %{ count } more tracks"
 msgstr[0] "Afficher %{ count } autre piste"
 msgstr[1] "Afficher %{ count } autres pistes"
 
-#: front/src/components/audio/artist/Card.vue:30
-#, fuzzy
-msgctxt "Content/Artist/Card.Link"
-msgid "Show 1 more album"
-msgid_plural "Show %{ count } more albums"
-msgstr[0] "Montrer 1 album supplémentaire"
-msgstr[1] "Montrer %{ count } albums supplémentaires"
+#: front/src/components/tags/List.vue:11
+msgctxt "Content/*/Button/Label/Verb"
+msgid "Show 1 more tag"
+msgid_plural "Show %{ count } more tags"
+msgstr[0] "Montrer 1 tag supplémentaire"
+msgstr[1] "Montrer %{ count } tags supplémentaires"
 
 #: front/src/components/library/EditForm.vue:21
 msgctxt "Content/Library/Button.Label"
 msgid "Show all edits"
-msgstr ""
+msgstr "Afficher toutes les modifications"
 
-#: front/src/components/ShortcutsModal.vue:42
+#: front/src/components/ShortcutsModal.vue:60
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Show available keyboard shortcuts"
 msgstr "Montrer les raccourcis clavier disponibles"
 
-#: front/src/views/Notifications.vue:7
+#: front/src/components/common/ExpandableDiv.vue:7
+msgctxt "*/*/Button,Label"
+msgid "Show less"
+msgstr "Montrer moins"
+
+#: front/src/components/common/ExpandableDiv.vue:8
+msgctxt "*/*/Button,Label"
+msgid "Show more"
+msgstr "Montrer plus"
+
+#: front/src/views/Notifications.vue:72
 msgctxt "Content/Notifications/Form.Label/Verb"
 msgid "Show read notifications"
 msgstr "Afficher les notifications lues"
 
-#: front/src/components/forms/PasswordInput.vue:26
+#: front/src/components/forms/PasswordInput.vue:42
 msgctxt "Content/Settings/Button.Tooltip/Verb"
 msgid "Show/hide password"
 msgstr "Afficher/masquer le mot de passe"
@@ -3890,56 +4181,65 @@ msgstr "Afficher/masquer le mot de passe"
 #: front/src/components/manage/library/ArtistsTable.vue:84
 #: front/src/components/manage/library/EditsCardList.vue:72
 #: front/src/components/manage/library/LibrariesTable.vue:110
+#: front/src/components/manage/library/TagsTable.vue:79
 #: front/src/components/manage/library/TracksTable.vue:95
 #: front/src/components/manage/library/UploadsTable.vue:144
 #: front/src/components/manage/moderation/AccountsTable.vue:88
-#: front/src/components/manage/moderation/DomainsTable.vue:74
+#: front/src/components/manage/moderation/DomainsTable.vue:85
 #: front/src/components/manage/users/InvitationsTable.vue:76
-#: front/src/components/manage/users/UsersTable.vue:87
+#: front/src/components/manage/users/UsersTable.vue:88
 #: front/src/views/content/libraries/FilesTable.vue:117
 msgctxt "Content/*/Paragraph"
 msgid "Showing results %{ start }-%{ end } on %{ total }"
 msgstr "Affichage des résultats %{ start }-%{ end } sur %{ total }"
 
-#: front/src/components/ShortcutsModal.vue:83
+#: front/src/components/ShortcutsModal.vue:140
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Shuffle queue"
 msgstr "Mélanger la file d'attente"
 
-#: front/src/components/audio/Player.vue:641
+#: front/src/components/audio/Player.vue:667
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Shuffle your queue"
 msgstr "Mélanger votre file d’attente"
 
-#: front/src/components/auth/Signup.vue:97
+#: front/src/components/Home.vue:103
+msgctxt "*/Signup/Title"
+msgid "Sign up"
+msgstr "Inscription"
+
+#: front/src/views/auth/Signup.vue:37
 msgctxt "*/Signup/Title"
 msgid "Sign Up"
 msgstr "Inscription"
 
+#: front/src/components/Home.vue:107
+msgctxt "Content/Home/Paragraph"
+msgid "Sign up now to keep a track of your favorites, create playlists, discover new content and much more!"
+msgstr ""
+"Inscrivez-vous maintenant pour conserver une trace de vos favoris, créer vos "
+"listes de lectures, découvrir de nouveaux contenus et bien plus encore !"
+
 #: front/src/components/manage/users/UsersTable.vue:40
 msgctxt "Content/Admin/Table.Label/Short, Noun (Value is a date)"
 msgid "Sign-up"
 msgstr "Inscription"
 
-#: front/src/components/mixins/Translations.vue:57
-#: front/src/views/admin/moderation/AccountsDetail.vue:197
-#: front/src/components/mixins/Translations.vue:58
+#: front/src/components/mixins/Translations.vue:69
+#: front/src/views/admin/moderation/AccountsDetail.vue:198
+#: front/src/components/mixins/Translations.vue:70
 msgctxt "Content/Admin/Table.Label/Noun"
 msgid "Sign-up date"
 msgstr "Date d'inscription"
 
-#: front/src/components/manage/library/UploadsTable.vue:65
-#: front/src/views/admin/library/UploadDetail.vue:219
-msgctxt "Content/*/*/Noun"
-msgid "Size"
-msgstr "Taille"
-
 #: front/src/components/library/FileUpload.vue:94
 #: front/src/components/library/TrackDetail.vue:39
-#: front/src/components/mixins/Translations.vue:54
+#: front/src/components/manage/library/UploadsTable.vue:65
+#: front/src/components/mixins/Translations.vue:66
+#: front/src/views/admin/library/UploadDetail.vue:219
 #: front/src/views/content/libraries/FilesTable.vue:61
-#: front/src/components/mixins/Translations.vue:55
-msgctxt "Content/Library/*/in MB"
+#: front/src/components/mixins/Translations.vue:67
+msgctxt "Content/*/*/Noun"
 msgid "Size"
 msgstr "Taille"
 
@@ -3956,7 +4256,7 @@ msgctxt "Content/Library/Label"
 msgid "Skipped files"
 msgstr "Fichiers ignorés"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:89
+#: front/src/views/admin/moderation/DomainsDetail.vue:126
 msgctxt "Content/Moderation/Table.Label"
 msgid "Software"
 msgstr "Logiciel"
@@ -3964,100 +4264,70 @@ msgstr "Logiciel"
 #: front/src/components/playlists/Editor.vue:21
 msgctxt "Content/Playlist/Paragraph"
 msgid "Some tracks in your queue are already in this playlist:"
-msgstr ""
+msgstr "Certaines pistes de votre file d'attente sont déjà dans cette liste de lecture :"
 
 #: front/src/components/PageNotFound.vue:10
 msgctxt "Content/*/Paragraph"
 msgid "Sorry, the page you asked for does not exist:"
 msgstr "Désolé, la page demandée n’existe pas :"
 
-#: front/src/components/Footer.vue:49
+#: front/src/components/Footer.vue:57
 msgctxt "Footer/*/List item.Link"
 msgid "Source code"
 msgstr "Code source"
 
 #: front/src/components/auth/Profile.vue:23
-#: front/src/components/manage/users/UsersTable.vue:70
+#: front/src/components/manage/users/UsersTable.vue:71
 msgctxt "Content/Profile/User role"
 msgid "Staff member"
 msgstr "Membre de l'équipe"
 
-#: front/src/components/audio/PlayButton.vue:23
+#: front/src/components/audio/PlayButton.vue:27
 #: src/components/radios/Button.vue:4
 msgctxt "*/Queue/Button.Label/Short, Verb"
 msgid "Start radio"
 msgstr "Démarrer la radio"
 
-#: front/src/views/admin/Settings.vue:86
-msgctxt "Content/Admin/Menu"
+#: front/src/components/About.vue:170 src/components/Home.vue:53
+#: front/src/views/admin/Settings.vue:87
+msgctxt "Content/Home/Header"
 msgid "Statistics"
 msgstr "Statistiques"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:490
+#: front/src/views/admin/moderation/AccountsDetail.vue:510
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this account"
-msgstr ""
-"Les statistiques sont calculées depuis les activités connues et le contenu "
-"sur votre instance, et ne reflètent pas l'activité générale de ce compte"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this account"
+msgstr "Les statistiques sont calculées depuis les activités connues et le contenu sur votre instance, et ne reflètent pas l'activité générale de ce compte"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:371
+#: front/src/views/admin/moderation/DomainsDetail.vue:418
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this domain"
-msgstr ""
-"Les statistiques sont calculées depuis les activités connues et le contenu "
-"sur votre instance, et ne reflètent pas l'activité générale de ce domaine"
-
-#: front/src/views/admin/library/AlbumDetail.vue:329
-#: front/src/views/admin/library/ArtistDetail.vue:328
-#: front/src/views/admin/library/LibraryDetail.vue:316
-#: front/src/views/admin/library/TrackDetail.vue:371
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this domain"
+msgstr "Les statistiques sont calculées depuis les activités connues et le contenu sur votre instance, et ne reflètent pas l'activité générale de ce domaine"
+
+#: front/src/views/admin/library/AlbumDetail.vue:346
+#: front/src/views/admin/library/ArtistDetail.vue:345
+#: front/src/views/admin/library/LibraryDetail.vue:356
+#: front/src/views/admin/library/TagDetail.vue:210
+#: front/src/views/admin/library/TrackDetail.vue:389
 #: front/src/views/admin/library/UploadDetail.vue:335
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this object"
-msgstr ""
-"Les statistiques sont calculées depuis les activités connues et le contenu "
-"sur votre instance, et ne reflètent pas l'activité générale de ce compte"
-
-#: front/src/views/admin/moderation/DomainsDetail.vue:115
-msgctxt "Content/Moderation/Table.Label (Value is Error message)"
-msgid "Status"
-msgstr "Statut"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this object"
+msgstr "Les statistiques sont calculées depuis les activités connues et le contenu sur votre instance, et ne reflètent pas l'activité générale de ce compte"
 
 #: front/src/components/library/FileUpload.vue:95
-msgctxt "Content/Library/Table.Label (Value is Uploading/Uploaded/Error)"
-msgid "Status"
-msgstr "Statut"
-
-#: front/src/views/content/libraries/Detail.vue:28
-msgctxt "Content/Library.Federation/Table.Label (Value is Approved/Rejected)"
-msgid "Status"
-msgstr "Statut"
-
+#: front/src/components/manage/library/EditsCardList.vue:12
+#: front/src/components/manage/moderation/ReportCard.vue:57
 #: front/src/components/manage/users/InvitationsTable.vue:17
 #: front/src/components/manage/users/InvitationsTable.vue:39
-msgctxt "Content/Admin/*/Noun (Value is Used/Not used)"
-msgid "Status"
-msgstr "Statut"
-
 #: front/src/components/manage/users/UsersTable.vue:43
-msgctxt "Content/Admin/Table.Label/Noun (Value is Regular user/Admin)"
-msgid "Status"
-msgstr "Statut"
-
-#: front/src/components/manage/library/EditsCardList.vue:12
-msgctxt ""
-"Content/Search/Dropdown.Label (Value is All/Pending "
-"review/Approved/Rejected)"
+#: front/src/views/admin/moderation/DomainsDetail.vue:152
+#: front/src/views/admin/moderation/ReportsList.vue:14
+#: front/src/views/content/libraries/Detail.vue:28
+msgctxt "*/*/*"
 msgid "Status"
 msgstr "Statut"
 
-#: front/src/components/Sidebar.vue:174 src/components/radios/Button.vue:3
+#: front/src/components/Sidebar.vue:178 src/components/radios/Button.vue:3
 msgctxt "*/Player/Button.Label/Short, Verb"
 msgid "Stop radio"
 msgstr "Arrêter la radio"
@@ -4067,22 +4337,32 @@ msgctxt "*/*/Button.Label/Verb"
 msgid "Submit"
 msgstr "Valider"
 
-#: front/src/components/library/EditForm.vue:98
+#: front/src/components/library/EditForm.vue:110
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Submit and apply edit"
-msgstr ""
+msgstr "Soumettre et appliquer la modification"
 
 #: front/src/components/library/EditForm.vue:7
 msgctxt "Content/Library/Button.Label"
 msgid "Submit another edit"
-msgstr ""
+msgstr "Soumettre une nouvelle modification"
 
-#: front/src/components/library/EditForm.vue:99
+#: front/src/components/moderation/ReportModal.vue:64
+msgctxt "Popup/*/Button.Label"
+msgid "Submit report"
+msgstr "Envoyer le signalement"
+
+#: front/src/components/library/EditForm.vue:111
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Submit suggestion"
-msgstr ""
+msgstr "Soumettre la suggestion"
 
-#: front/src/views/admin/Settings.vue:85
+#: front/src/components/manage/moderation/ReportCard.vue:17
+msgctxt "Content/Moderation/*"
+msgid "Submitted by"
+msgstr "Envoyé par"
+
+#: front/src/views/admin/Settings.vue:86
 msgctxt "Content/Admin/Menu"
 msgid "Subsonic"
 msgstr "Subsonic"
@@ -4095,7 +4375,7 @@ msgstr "Mot de passe de l'API Subsonic"
 #: front/src/components/library/EditForm.vue:38
 msgctxt "Content/Library/Paragraph"
 msgid "Suggest a change using the form below."
-msgstr ""
+msgstr "Suggérer un changement avec le formulaire ci-dessous."
 
 #: front/src/components/library/AlbumEdit.vue:5
 msgctxt "Content/*/Title"
@@ -4122,16 +4402,21 @@ msgctxt "Content/Library/Tab.Title/Short"
 msgid "Summary"
 msgstr "Résumé"
 
-#: front/src/components/library/EditForm.vue:87
+#: front/src/components/library/EditForm.vue:99
 msgctxt "*/*/*"
 msgid "Summary (optional)"
-msgstr ""
+msgstr "Résumé (optionel)"
 
-#: front/src/components/Footer.vue:39
+#: front/src/components/Footer.vue:47
 msgctxt "Footer/*/Listitem.Link"
 msgid "Support forum"
 msgstr "Forum d'aide"
 
+#: front/src/views/Notifications.vue:10
+msgctxt "Content/Notifications/Header"
+msgid "Support this Funkwhale pod"
+msgstr "Soutenir ce pod Funkwhale"
+
 #: front/src/components/library/FileUpload.vue:85
 msgctxt "Content/Library/Paragraph"
 msgid "Supported extensions: %{ extensions }"
@@ -4142,92 +4427,101 @@ msgctxt "Content/Playlist/Paragraph"
 msgid "Syncing changes to server…"
 msgstr "Synchronisation des changements avec le serveur…"
 
-#: front/src/components/audio/EmbedWizard.vue:25
+#: front/src/components/audio/SearchBar.vue:35
+msgctxt "*/*/*/Noun"
+msgid "Tag"
+msgstr "Étiquette"
+
+#: front/src/views/admin/library/TagDetail.vue:61
+msgctxt "Content/Moderation/Title"
+msgid "Tag data"
+msgstr "Données  du tag"
+
+#: front/src/components/library/Albums.vue:23
+#: src/components/library/Artists.vue:15
+#: front/src/views/admin/library/Base.vue:23
+#: src/views/admin/library/TagsList.vue:24 front/src/edits.js:24
+#: src/edits.js:50 src/edits.js:91 src/entities.js:120
+msgctxt "*/*/*/Noun"
+msgid "Tags"
+msgstr "Étiquettes"
+
+#: front/src/components/mixins/Translations.vue:44
+#: front/src/components/mixins/Translations.vue:45
+msgctxt "Content/Moderation/Dropdown"
+msgid "Takedown request"
+msgstr "Demande de retrait"
+
+#: front/src/components/About.vue:35 src/components/About.vue:61
+msgctxt "Content/About/Header"
+msgid "Terms and privacy policy"
+msgstr "Condititions d'utilisation et politique de respect de la vie privée"
+
+#: front/src/components/audio/EmbedWizard.vue:35
 #: front/src/components/common/CopyInput.vue:3
 msgctxt "Content/*/Paragraph"
 msgid "Text copied to clipboard!"
 msgstr "La texte a été copié dans le presse-papier !"
 
-#: front/src/components/Home.vue:26
-msgctxt "Content/Home/Paragraph"
-msgid ""
-"That's simple: we loved Grooveshark and we want to build something even "
-"better."
-msgstr ""
-"C'est simple : nous adorions Grooveshark et nous voulions construire quelque"
-" chose d'encore mieux."
-
-#: front/src/views/admin/library/AlbumDetail.vue:75
+#: front/src/views/admin/library/AlbumDetail.vue:81
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The album will be removed, as well as associated uploads, tracks, favorites "
-"and listening history. This action is irreversible."
-msgstr ""
+msgid "The album will be removed, as well as associated uploads, tracks, favorites and listening history. This action is irreversible."
+msgstr "L’album sera supprimé, ainsi que les téléversements, pistes, favoris et historique d'écoute associés. Cette action est irréversible."
 
 #: front/src/components/auth/Authorize.vue:39
 msgctxt "Content/Auth/Paragraph"
 msgid "The application is also requesting the following unknown permissions:"
-msgstr ""
+msgstr "L'application demande également les permissions inconnues suivantes :"
 
-#: front/src/views/admin/library/ArtistDetail.vue:74
+#: front/src/views/admin/library/ArtistDetail.vue:79
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The artist will be removed, as well as associated uploads, tracks, albums, "
-"favorites and listening history. This action is irreversible."
-msgstr ""
+msgid "The artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible."
+msgstr "L’artiste sera supprimé, ainsi que les téléversements, pistes, albums, favoris et historique d'écoute associés. Cette action est irréversible."
 
-#: front/src/components/Footer.vue:53
+#: front/src/components/Footer.vue:61
 msgctxt "Footer/*/List item.Link"
 msgid "The funkwhale logo was kindly designed and provided by Francis Gading."
-msgstr ""
-"Le logo de Funkwhale a été généreusement dessiné et fourni par Francis "
-"Gading."
+msgstr "Le logo de Funkwhale a été généreusement dessiné et fourni par Francis Gading."
 
 #: front/src/components/SetInstanceModal.vue:8
 msgctxt "Popup/Instance/Error message.List item"
 msgid "The given address is not a Funkwhale server"
-msgstr ""
+msgstr "L'adresse fournie n'est pas un serveur Funkwhale"
 
 #: front/src/views/content/libraries/Form.vue:34
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"The library and all its tracks will be deleted. This can not be undone."
-msgstr ""
-"La bibliothèque et toutes ses pistes seront supprimées. Cette action est "
-"irréversible."
+msgid "The library and all its tracks will be deleted. This can not be undone."
+msgstr "La bibliothèque et toutes ses pistes seront supprimées. Cette action est irréversible."
 
 #: front/src/views/admin/library/LibraryDetail.vue:61
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The library will be removed, as well as associated uploads, and follows. "
-"This action is irreversible."
-msgstr ""
+msgid "The library will be removed, as well as associated uploads, and follows. This action is irreversible."
+msgstr "La bibliothèque sera supprimée, ainsi que les téléversements et abonnements associés. Cette action est irréversible."
 
 #: front/src/components/library/ImportStatusModal.vue:140
 msgctxt "Popup/Import/Error.Label"
-msgid ""
-"The metadata included in the file is invalid or some mandatory fields are "
-"missing."
-msgstr ""
+msgid "The metadata included in the file is invalid or some mandatory fields are missing."
+msgstr "Les métadonnées inclues dans le fichier sont invalides, ou certains champs obligatoires sont manquants."
 
 #: front/src/components/library/FileUpload.vue:38
 msgctxt "Content/Library/List item"
 msgid "The music files you are uploading are tagged properly."
-msgstr "Les fichiers musicaux que vous téléversez sont correctement tagués :"
+msgstr "Les fichiers musicaux que vous téléversez sont correctement tagués."
 
 #: front/src/components/audio/Player.vue:65
 msgctxt "Sidebar/Player/Error message.Paragraph"
 msgid "The next track will play automatically in a few seconds…"
 msgstr "La piste suivante va se jouer automatiquement dans quelques secondes…"
 
-#: front/src/components/Home.vue:116
-msgctxt "Content/Home/List item"
-msgid ""
-"The plaform is free and open-source, you can install it and modify it "
-"without worries"
-msgstr ""
-"La plateforme est gratuite et open-source, vous pouvez l'installer et la "
-"modifier sans restrictions"
+#: front/src/components/manage/moderation/NotesThread.vue:27
+msgctxt "Content/Moderation/Paragraph"
+msgid "The note will be removed. This action is irreversible."
+msgstr "La note sera supprimée. Cette action est irréversible."
+
+#: front/src/components/manage/moderation/ReportCard.vue:120
+msgctxt "Content/Moderation/Message"
+msgid "The object associated with this report was deleted."
+msgstr "L’objet associé à ce signalement a été supprimé."
 
 #: front/src/components/playlists/Form.vue:14
 msgctxt "Content/Playlist/Error message.Title"
@@ -4237,51 +4531,49 @@ msgstr "Playlist créée"
 #: front/src/components/federation/FetchButton.vue:37
 msgctxt "*/*/Error"
 msgid "The remote server answered with HTTP %{ status }"
-msgstr ""
+msgstr "Le serveur distant a répondu avec HTTP %{ status }"
 
 #: front/src/components/federation/FetchButton.vue:13
 msgctxt "Popup/*/Message.Content"
-msgid ""
-"The remote server answered, but returned data was unsupported by Funkwhale."
-msgstr ""
+msgid "The remote server answered, but returned data was unsupported by Funkwhale."
+msgstr "Le serveur distant a répondu, mais les données envoyées ne sont pas prises en charge par Funkwhale."
 
 #: front/src/components/federation/FetchButton.vue:44
 msgctxt "*/*/Error"
-msgid "The remote server didn't answered fast enough"
-msgstr ""
+msgid "The remote server didn't respond quickly enough"
+msgstr "Le serveur distant n’a pas répondu assez vite"
 
 #: front/src/components/federation/FetchButton.vue:50
 msgctxt "*/*/Error"
-msgid "The return server returned invalid JSON or JSON-LD data"
-msgstr ""
+msgid "The remote server returned invalid JSON or JSON-LD data"
+msgstr "Le serveur distant a envoyé des données JSON ou JSON-LD invalides"
 
 #: front/src/components/manage/library/AlbumsTable.vue:189
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected albums will be removed, as well as associated tracks, uploads, "
-"favorites and listening history. This action is irreversible."
-msgstr ""
+msgid "The selected albums will be removed, as well as associated tracks, uploads, favorites and listening history. This action is irreversible."
+msgstr "Les albums sélectionnés seront supprimés, ainsi que les pistes, téléversements, favoris, et historique d'écoute associés. Cette action est irréversible."
 
 #: front/src/components/manage/library/ArtistsTable.vue:179
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected artist will be removed, as well as associated uploads, tracks, "
-"albums, favorites and listening history. This action is irreversible."
-msgstr ""
+msgid "The selected artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible."
+msgstr "L’artiste sélectionné sera supprimé, ainsi que les téléversements, pistes, albums, favoris et historique d’écoute associés. Cette action est irréversible."
 
 #: front/src/components/manage/library/LibrariesTable.vue:206
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected library will be removed, as well as associated uploads and "
-"follows. This action is irreversible."
+msgid "The selected library will be removed, as well as associated uploads and follows. This action is irreversible."
+msgstr "La bibliothèque sélectionnée sera supprimée, ainsi que les téléversements et abonnements associés. Cette action est irréversible."
+
+#: front/src/components/manage/library/TagsTable.vue:180
+msgctxt "Popup/*/Paragraph"
+msgid "The selected tag will be removed and unlinked with existing content, if any. This action is irreversible."
 msgstr ""
+"Le tag selectionné sera supprimé ainsi que son lien avec des contenus "
+"existants, s'il y en a. Cette action est irréversible."
 
 #: front/src/components/manage/library/TracksTable.vue:189
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected tracks will be removed, as well as associated uploads, "
-"favorites and listening history. This action is irreversible."
-msgstr ""
+msgid "The selected tracks will be removed, as well as associated uploads, favorites and listening history. This action is irreversible."
+msgstr "Les pistes sélectionnées seront supprimées, ainsi que les téléversements, favoris et historique d’écoute associés. Cette action est irréversible."
 
 #: front/src/components/manage/library/UploadsTable.vue:256
 msgctxt "Popup/*/Paragraph"
@@ -4291,7 +4583,7 @@ msgstr "Cette action est irréversible."
 #: front/src/components/SetInstanceModal.vue:7
 msgctxt "Popup/Instance/Error message.List item"
 msgid "The server might be down"
-msgstr ""
+msgstr "Le serveur est peut-être hors-service"
 
 #: front/src/components/auth/SubsonicTokenForm.vue:4
 msgctxt "Content/Settings/Paragraph"
@@ -4300,9 +4592,15 @@ msgstr "L'API Subsonic n'est pas disponible sur cette instance Funkwhale."
 
 #: front/src/components/library/EditCard.vue:96
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"The suggestion will be completely removed, this action is irreversible."
+msgid "The suggestion will be completely removed, this action is irreversible."
+msgstr "La suggestion sera entièrement supprimée, cette action est irréversible."
+
+#: front/src/views/admin/library/TagDetail.vue:44
+msgctxt "Content/Moderation/Paragraph"
+msgid "The tag will be removed and unlinked from any existing entity. This action is irreversible."
 msgstr ""
+"Le tag sera supprimé ainsi que son lien avec des contenus existants, s'il y "
+"en a. Cette action est irréversible."
 
 #: front/src/components/playlists/PlaylistModal.vue:34
 msgctxt "Popup/Playlist/Error message.Title"
@@ -4312,14 +4610,12 @@ msgstr "Nous ne pouvons pas ajouter cette piste à une playlist"
 #: front/src/components/audio/Player.vue:62
 msgctxt "Sidebar/Player/Error message.Title"
 msgid "The track cannot be loaded"
-msgstr ""
+msgstr "Échec du chargement de la piste"
 
-#: front/src/views/admin/library/TrackDetail.vue:74
+#: front/src/views/admin/library/TrackDetail.vue:80
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The track will be removed, as well as associated uploads, favorites and "
-"listening history. This action is irreversible."
-msgstr ""
+msgid "The track will be removed, as well as associated uploads, favorites and listening history. This action is irreversible."
+msgstr "La piste sera supprimée, ainsi que les téléversements, favoris et historique d’écoute associés. Cette action est irréversible."
 
 #: front/src/views/admin/library/UploadDetail.vue:68
 msgctxt "Content/Moderation/Paragraph"
@@ -4334,9 +4630,7 @@ msgstr "Les fichiers musicaux uploadés sont au format OGG, Flac ou MP3"
 #: front/src/views/content/Home.vue:4
 msgctxt "Content/Library/Paragraph"
 msgid "There are various ways to grab new content and make it available here."
-msgstr ""
-"Il y a différentes manières de récupérer du nouveau contenu et de le rendre "
-"disponible ici."
+msgstr "Il y a différentes manières de récupérer du nouveau contenu et de le rendre disponible ici."
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:66
 msgctxt "Popup/Moderation/Paragraph"
@@ -4353,28 +4647,41 @@ msgctxt "Content/Artist/Paragraph"
 msgid "This artist is present in the following libraries:"
 msgstr "Cet⋅te artiste est présent⋅e dans les bibliothèques suivantes :"
 
+#: front/src/components/manage/moderation/DomainsTable.vue:169
+msgctxt "Content/Moderation/Popup"
+msgid "This domain is present in your allow-list"
+msgstr "Ce domaine est présent sur votre liste d'autorisations"
+
 #: front/src/views/admin/moderation/AccountsDetail.vue:84
-#: front/src/views/admin/moderation/DomainsDetail.vue:48
+#: front/src/views/admin/moderation/DomainsDetail.vue:76
 msgctxt "Content/Moderation/Card.Title"
 msgid "This domain is subject to specific moderation rules"
 msgstr "Ce domaine est sujet à des règles de modération spécifiques"
 
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:16
+msgctxt "Content/Moderation/Card.Title"
+msgid "This entity is subject to specific moderation rules"
+msgstr "Cet élément est sujet à des règles de modération spécifiques"
+
 #: front/src/views/content/Home.vue:9
 msgctxt "Content/Library/Paragraph"
 msgid "This instance offers up to %{quota} of storage space for every user."
-msgstr ""
-"Cette instance offre jusque %{quota} d'espace disque à chaque utilisateur."
+msgstr "Cette instance offre jusque %{quota} d'espace disque à chaque utilisateur."
+
+#: front/src/components/auth/Settings.vue:300
+msgctxt "Popup/Settings/Paragraph"
+msgid "This is irreversible and will permanently remove your data from our servers. You will we immediatly logged out."
+msgstr "Ceci est irréversible et supprimera de façon permanente vos données de nos serveurs. Vous serez immédiatement déconnecté·e."
 
 #: front/src/components/auth/Settings.vue:165
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"This is the list of applications that have access to your account data."
-msgstr ""
+msgid "This is the list of applications that have access to your account data."
+msgstr "Voici la liste des applications qui ont accès aux donnnées de votre compte."
 
 #: front/src/components/auth/Settings.vue:218
 msgctxt "Content/Settings/Paragraph"
 msgid "This is the list of applications that you have created."
-msgstr ""
+msgstr "Voici la liste des applications que vous avez créées."
 
 #: front/src/components/auth/Profile.vue:16
 msgctxt "Content/Profile/Button.Paragraph"
@@ -4384,41 +4691,37 @@ msgstr "C'est vous !"
 #: front/src/views/content/libraries/Form.vue:73
 msgctxt "Content/Library/Input.Placeholder"
 msgid "This library contains my personal music, I hope you like it."
-msgstr ""
-"Cette bibliothèque contient ma musique personnelle, j'espère que vous "
-"l'aimerez."
+msgstr "Cette bibliothèque contient ma musique personnelle, j'espère que vous l'aimerez."
 
-#: front/src/views/content/remote/Card.vue:141
+#: front/src/views/content/remote/Card.vue:169
 msgctxt "Content/Library/Card.Help text"
-msgid ""
-"This library is private and your approval from its owner is needed to access"
-" its content"
-msgstr ""
-"Cette bibliothèque est privée et son propriétaire doit vous approuver pour "
-"accéder à son contenu"
+msgid "This library is private and your approval from its owner is needed to access its content"
+msgstr "Cette bibliothèque est privée et son propriétaire doit vous approuver pour accéder à son contenu"
 
-#: front/src/views/content/remote/Card.vue:142
+#: front/src/views/content/remote/Card.vue:170
 msgctxt "Content/Library/Card.Help text"
 msgid "This library is public and you can access its content freely"
-msgstr ""
-"Cette bibliothèque est publique et vous pouvez accéder à son contenu "
-"librement"
+msgstr "Cette bibliothèque est publique et vous pouvez accéder à son contenu librement"
 
 #: front/src/components/common/ActionTable.vue:47
 msgctxt "Modal/*/Paragraph"
-msgid ""
-"This may affect a lot of elements or have irreversible consequences, please "
-"double check this is really what you want."
-msgstr ""
-"Cela peut affecter de nombreux éléments ou avoir des conséquences "
-"irréversibles, merci de vérifier que c'est bien ce que vous souhaitez."
+msgid "This may affect a lot of elements or have irreversible consequences, please double check this is really what you want."
+msgstr "Cela peut affecter de nombreux éléments ou avoir des conséquences irréversibles, merci de vérifier que c'est bien ce que vous souhaitez."
 
 #: front/src/components/library/AlbumEdit.vue:8
 #: front/src/components/library/ArtistEdit.vue:8
 #: front/src/components/library/TrackEdit.vue:8
 msgctxt "Content/*/Message"
 msgid "This object is managed by another server, you cannot edit it."
+msgstr "Cet objet est géré par un autre serveur, vous ne pouvez pas le modifier."
+
+#: front/src/components/Home.vue:87
+msgctxt "Content/Home/Paragraph"
+msgid "This pod runs Funkwhale, a community-driven project that lets you listen and share music and audio within a decentralized, open network."
 msgstr ""
+"Ce pod fonctionne grâce au logiciel Funkwhale, un projet communautaire qui "
+"vous permet d'écouter et de partager de la musique et des contenus audio au "
+"sein d'un réseau décentralisé et ouvert."
 
 #: front/src/components/library/FileUpload.vue:51
 msgctxt "Content/Library/Paragraph"
@@ -4428,16 +4731,15 @@ msgstr "Cette référence sera utilisée pour regrouper les fichiers importés."
 #: front/src/components/mixins/Translations.vue:33
 #: front/src/components/mixins/Translations.vue:34
 msgctxt "Content/Library/Help text"
-msgid "This track could not be processed, please it is tagged correctly"
+msgid "This track could not be processed, please make sure it is tagged correctly"
 msgstr ""
-"Le traitement de cette piste a échoué, assurez-vous qu’elle est correctement"
-" étiquetée"
+"Cette piste n'a pu être traitée, merci de vous assurer qu'elle est taggée "
+"correctement"
 
 #: front/src/components/mixins/Translations.vue:29
 #: front/src/components/mixins/Translations.vue:30
 msgctxt "Content/Library/Help text"
-msgid ""
-"This track has been uploaded, but hasn't been processed by the server yet"
+msgid "This track has been uploaded, but hasn't been processed by the server yet"
 msgstr "La piste est importée mais n'a pas encore été traitée par le serveur"
 
 #: front/src/components/mixins/Translations.vue:25
@@ -4446,103 +4748,95 @@ msgctxt "Content/Library/Help text"
 msgid "This track is already present in one of your libraries"
 msgstr "La piste est déjà présente dans l'une de vos bibliothèques"
 
-#: front/src/components/audio/PlayButton.vue:85
+#: front/src/components/audio/PlayButton.vue:103
 msgctxt "*/Queue/Button/Title"
 msgid "This track is not available in any library you have access to"
-msgstr ""
-"Cette piste n'est pas accessible dans les bibliothèques auxquelles vous avez"
-" accès"
+msgstr "Cette piste n'est pas accessible dans les bibliothèques auxquelles vous avez accès"
 
 #: front/src/components/library/TrackDetail.vue:82
 msgctxt "Content/Track/Paragraph"
 msgid "This track is present in the following libraries:"
 msgstr "Cette piste est présente dans les bibliothèques suivantes :"
 
-#: front/src/views/playlists/Detail.vue:38
+#: front/src/views/playlists/Detail.vue:46
 msgctxt "Popup/Playlist/Paragraph"
 msgid "This will completely delete this playlist and cannot be undone."
-msgstr ""
-"Cela supprimera définitivement cette playlist et ne pourra pas être annulé."
+msgstr "Cela supprimera définitivement cette playlist et ne pourra pas être annulé."
 
 #: front/src/views/radios/Detail.vue:27
 msgctxt "Popup/Radio/Paragraph"
 msgid "This will completely delete this radio and cannot be undone."
-msgstr ""
-"Cela supprimera définitivement cette radio et ne pourra pas être annulé."
+msgstr "Cela supprimera définitivement cette radio et ne pourra pas être annulé."
 
-#: front/src/components/auth/SubsonicTokenForm.vue:50
+#: front/src/components/auth/SubsonicTokenForm.vue:55
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will completely disable access to the Subsonic API using from account."
+msgid "This will completely disable access to the Subsonic API using from account."
+msgstr "Cela désactivera complétement l'accès à l'API Subsonic depuis votre compte."
+
+#: front/src/components/manage/moderation/ReportCard.vue:359
+msgctxt "Content/Moderation/Popup,Paragraph"
+msgid "This will delete the object associated with this report and mark the report as resolved. The deletion is irreversible."
 msgstr ""
-"Cela désactivera complétement l'accès à l'API Subsonic depuis votre compte."
+"Cela supprimera l'élément associé avec ce signalement et marquera le rapport "
+"comme résolu. La suppression est irreversible."
 
-#: front/src/components/auth/SubsonicTokenForm.vue:35
+#: front/src/components/auth/SubsonicTokenForm.vue:40
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will log you out from existing devices that use the current password."
-msgstr ""
-"Cela vous déconnectera sur l'ensemble de vos appareils utilisant ce mot de "
-"passe."
+msgid "This will log you out from existing devices that use the current password."
+msgstr "Cela vous déconnectera sur l'ensemble de vos appareils utilisant ce mot de passe."
 
 #: front/src/components/auth/Settings.vue:253
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will permanently delete the application and all the associated tokens."
-msgstr ""
-"Cela supprimera définitivement cette playlist et ne pourra pas être annulé."
+msgid "This will permanently delete the application and all the associated tokens."
+msgstr "Cela supprimera définitivement cette playlist et ne pourra pas être annulé."
 
 #: front/src/components/auth/Settings.vue:194
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will prevent this application from accessing the service on your "
-"behalf."
-msgstr ""
+msgid "This will prevent this application from accessing the service on your behalf."
+msgstr "Cela empêchera cette application d'accéder au service en votre nom."
 
 #: front/src/components/playlists/Editor.vue:54
 msgctxt "Popup/Playlist/Paragraph"
 msgid "This will remove all tracks from this playlist and cannot be undone."
-msgstr ""
-"Cela supprimera toutes les pistes de la playlist et ne pourra pas être "
-"annulé."
-
-#: front/src/views/admin/library/AlbumDetail.vue:99
-#: front/src/views/admin/library/TrackDetail.vue:98 src/edits.js:21
-#: src/edits.js:39
-msgctxt "*/*/*/Noun"
-msgid "Title"
-msgstr "Titre"
+msgstr "Cela supprimera toutes les pistes de la playlist et ne pourra pas être annulé."
 
 #: front/src/components/audio/track/Table.vue:7
-#: front/src/views/content/libraries/FilesTable.vue:55
-msgctxt "Content/Track/*/Noun"
-msgid "Title"
-msgstr "Titre"
-
 #: front/src/components/manage/library/AlbumsTable.vue:39
 #: front/src/components/manage/library/TracksTable.vue:39
-msgctxt "*/*/*"
+#: front/src/views/admin/library/AlbumDetail.vue:105
+#: front/src/views/admin/library/TrackDetail.vue:104
+#: front/src/views/content/libraries/FilesTable.vue:55 src/edits.js:36
+#: front/src/edits.js:62
+msgctxt "*/*/*/Noun"
 msgid "Title"
 msgstr "Titre"
 
 #: front/src/components/SetInstanceModal.vue:16
 msgctxt "Popup/Instance/Paragraph"
-msgid ""
-"To continue, please select the Funkwhale instance you want to connect to. "
-"Enter the address directly, or select one of the suggested choices."
-msgstr ""
+msgid "To continue, please select the Funkwhale instance you want to connect to. Enter the address directly, or select one of the suggested choices."
+msgstr "Pour continuer, sélectionnez le pod Funkwhale auquel vous souhaitez vous connecter. Entrez l'adresse directement, ou sélectionnez l'un des choix suggérés."
+
+#: front/src/components/ShortcutsModal.vue:148
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle favorite"
+msgstr "Ajouter/Retirer des favoris"
 
-#: front/src/components/ShortcutsModal.vue:79
+#: front/src/components/ShortcutsModal.vue:132
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle mute"
+msgstr "Rendre muet/réactiver le son"
+
+#: front/src/components/ShortcutsModal.vue:136
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Toggle queue looping"
-msgstr "Basculer la boucle de file d'attente"
-
-#: front/src/views/admin/library/AlbumDetail.vue:222
-#: front/src/views/admin/library/ArtistDetail.vue:211
-#: front/src/views/admin/library/LibraryDetail.vue:200
-#: front/src/views/admin/library/TrackDetail.vue:274
-#: front/src/views/admin/moderation/AccountsDetail.vue:317
-#: front/src/views/admin/moderation/DomainsDetail.vue:225
+msgstr "Changer le mode de répétition"
+
+#: front/src/views/admin/library/AlbumDetail.vue:238
+#: front/src/views/admin/library/ArtistDetail.vue:226
+#: front/src/views/admin/library/LibraryDetail.vue:219
+#: front/src/views/admin/library/TrackDetail.vue:290
+#: front/src/views/admin/moderation/AccountsDetail.vue:329
+#: front/src/views/admin/moderation/DomainsDetail.vue:262
 msgctxt "Content/Moderation/Table.Label"
 msgid "Total size"
 msgstr "Taille totale"
@@ -4552,20 +4846,18 @@ msgctxt "Content/Library/Card.Help text"
 msgid "Total size of the files in this library"
 msgstr "Taille totale des fichiers de cette bibliothèque"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:105
+#: front/src/views/admin/moderation/DomainsDetail.vue:142
 msgctxt "Content/*/*"
 msgid "Total users"
 msgstr "Nombre total d'utilisateurs"
 
-#: front/src/views/admin/library/UploadDetail.vue:199
-msgctxt "*/*/*"
-msgid "Track"
-msgstr "Piste"
-
-#: front/src/components/audio/SearchBar.vue:27
-#: front/src/components/library/TrackBase.vue:173
+#: front/src/components/audio/SearchBar.vue:34
+#: front/src/components/library/TrackBase.vue:188
 #: front/src/components/library/TrackDetail.vue:128
 #: front/src/components/metadata/Search.vue:138
+#: src/components/mixins/Report.vue:28
+#: front/src/views/admin/library/UploadDetail.vue:199
+#: front/src/components/mixins/Report.vue:29
 msgctxt "*/*/*/Noun"
 msgid "Track"
 msgstr "Piste"
@@ -4573,9 +4865,9 @@ msgstr "Piste"
 #: front/src/components/library/EditCard.vue:13
 msgctxt "Content/Library/Card/Short"
 msgid "Track #%{ id } - %{ name }"
-msgstr ""
+msgstr "Piste #%{ id } - %{ name }"
 
-#: front/src/views/admin/library/TrackDetail.vue:91
+#: front/src/views/admin/library/TrackDetail.vue:97
 msgctxt "Content/Moderation/Title"
 msgid "Track data"
 msgstr "Nom de la piste"
@@ -4585,30 +4877,28 @@ msgctxt "Content/Track/Title/Noun"
 msgid "Track information"
 msgstr "Information de la piste"
 
-#: front/src/components/mixins/Translations.vue:50
-#: front/src/components/mixins/Translations.vue:51
+#: front/src/components/mixins/Translations.vue:60
+#: front/src/components/mixins/Translations.vue:61
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Track name"
 msgstr "Nom de la piste"
 
-#: front/src/components/instance/Stats.vue:54
 #: front/src/components/library/AlbumDetail.vue:19
-#: front/src/components/playlists/PlaylistModal.vue:47
-#: front/src/views/admin/moderation/AccountsDetail.vue:362
-#: front/src/views/admin/moderation/DomainsDetail.vue:274
-#: front/src/views/content/Base.vue:8 src/views/content/libraries/Detail.vue:8
-#: front/src/views/playlists/Detail.vue:51 src/views/radios/Detail.vue:34
-msgctxt "*/*/*/Noun"
-msgid "Tracks"
-msgstr "Pistes"
-
+#: front/src/components/library/TagDetail.vue:36
 #: front/src/components/manage/library/AlbumsTable.vue:42
 #: front/src/components/manage/library/ArtistsTable.vue:42
-#: front/src/views/admin/library/AlbumDetail.vue:252
-#: front/src/views/admin/library/ArtistDetail.vue:251
+#: front/src/components/manage/library/TagsTable.vue:44
+#: front/src/components/playlists/PlaylistModal.vue:47
+#: front/src/views/admin/library/AlbumDetail.vue:268
+#: front/src/views/admin/library/ArtistDetail.vue:266
 #: front/src/views/admin/library/Base.vue:14
-#: front/src/views/admin/library/LibraryDetail.vue:229
+#: front/src/views/admin/library/LibraryDetail.vue:248
+#: front/src/views/admin/library/TagDetail.vue:143
 #: front/src/views/admin/library/TracksList.vue:24
+#: front/src/views/admin/moderation/AccountsDetail.vue:374
+#: front/src/views/admin/moderation/DomainsDetail.vue:311
+#: front/src/views/content/Base.vue:8 src/views/content/libraries/Detail.vue:8
+#: front/src/views/playlists/Detail.vue:76 src/views/radios/Detail.vue:34
 msgctxt "*/*/*"
 msgid "Tracks"
 msgstr "Pistes"
@@ -4618,79 +4908,64 @@ msgctxt "Content/Artist/Title"
 msgid "Tracks by this artist"
 msgstr "Pistes par cetâ‹…te artiste"
 
-#: front/src/components/instance/Stats.vue:25
-msgctxt "Content/About/Paragraph/Unit"
-msgid "Tracks favorited"
-msgstr "Pistes en favoris"
-
-#: front/src/components/instance/Stats.vue:19
-msgctxt "Content/About/Paragraph/Unit"
-msgid "tracks listened"
-msgstr "pistes écoutées"
-
 #: front/src/components/library/radios/Filter.vue:44
 msgctxt "Popup/Radio/Title/Noun"
 msgid "Tracks matching filter"
 msgstr "Piste correspondant au filtre"
 
 #: front/src/components/library/TrackDetail.vue:57
+#: front/src/components/manage/moderation/ReportCard.vue:134
 #: front/src/views/admin/library/UploadDetail.vue:250
+#: front/src/views/admin/moderation/AccountsDetail.vue:181
 msgctxt "Content/Track/Table.Label/Noun"
 msgid "Type"
 msgstr "Type"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:180
-msgctxt "Content/Moderation/Table.Label/Noun"
-msgid "Type"
-msgstr "Type"
-
 #: front/src/components/manage/moderation/AccountsTable.vue:44
-#: front/src/components/manage/moderation/DomainsTable.vue:42
+#: front/src/components/manage/moderation/DomainsTable.vue:50
 msgctxt "Content/Moderation/Table.Label/Short"
 msgid "Under moderation rule"
 msgstr "Sous règle de modération"
 
-#: front/src/views/content/remote/Card.vue:109
-#: src/views/content/remote/Card.vue:114
+#: front/src/components/ShortcutsModal.vue:68
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Unfocus searchbar"
+msgstr "Retirer le focus de la barre de recherche"
+
+#: front/src/views/content/remote/Card.vue:122
+#: src/views/content/remote/Card.vue:127
 msgctxt "*/Library/Button.Label/Verb"
 msgid "Unfollow"
 msgstr "Se désabonner"
 
-#: front/src/views/content/remote/Card.vue:110
+#: front/src/views/content/remote/Card.vue:123
 msgctxt "Popup/Library/Title"
 msgid "Unfollow this library?"
 msgstr "Se désabonner de cette bibliothèque ?"
 
-#: front/src/components/About.vue:17
-msgctxt "Content/About/Paragraph"
-msgid ""
-"Unfortunately, the owners of this instance did not yet take the time to "
-"complete this page."
-msgstr ""
-"Malheureusement, les gestionnaires de cette instance n'ont pas encore pris "
-"le temps de compléter cette page."
-
 #: front/src/components/federation/FetchButton.vue:54
 #: front/src/components/federation/FetchButton.vue:55
-msgctxt "*/*/Error"
-msgid "Unknowkn error"
-msgstr ""
-
 #: front/src/components/library/ImportStatusModal.vue:144
-msgctxt "Popup/Import/Error.Label"
-msgid "Unkwown error"
-msgstr ""
-
-#: front/src/components/Home.vue:37
-msgctxt "Content/Home/Title"
-msgid "Unlimited music"
-msgstr "Musique illimitée"
+msgctxt "*/*/Error"
+msgid "Unknown error"
+msgstr "Erreur inconnue"
 
-#: front/src/components/audio/Player.vue:630
+#: front/src/components/audio/Player.vue:656
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Unmute"
 msgstr "Réactiver le son"
 
+#: front/src/components/manage/moderation/ReportCard.vue:225
+msgctxt "Content/*/Button.Label"
+msgid "Unresolve"
+msgstr "Rouvrir"
+
+#: front/src/components/manage/moderation/ReportCard.vue:67
+#: front/src/views/admin/moderation/ReportsList.vue:23
+msgctxt "Content/*/*/Short"
+msgid "Unresolved"
+msgstr "Non-résolu"
+
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:57
 msgctxt "Content/Moderation/Card.Button.Label/Verb"
 msgid "Update"
@@ -4754,35 +5029,28 @@ msgstr "Date d'envoi"
 
 #: front/src/components/library/FileUpload.vue:258
 msgctxt "Content/Library/Help text"
-msgid ""
-"Upload denied, ensure the file is not too big and that you have not reached "
-"your quota"
-msgstr ""
-"Import refusée, assurez-vous que le fichier n'est pas trop gros et que vous "
-"n'avez pas atteint votre quota"
+msgid "Upload denied, ensure the file is not too big and that you have not reached your quota"
+msgstr "Import refusée, assurez-vous que le fichier n'est pas trop gros et que vous n'avez pas atteint votre quota"
 
 #: front/src/components/library/ImportStatusModal.vue:8
 msgctxt "Popup/Import/Message"
 msgid "Upload is still pending and will soon be processed by the server."
 msgstr ""
+"Le fichier est en encore attente et sera prochainement traité par le serveur."
 
 #: front/src/views/content/Home.vue:7
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Upload music files (MP3, OGG, FLAC, etc.) from your personal library "
-"directly from your browser to enjoy them here."
-msgstr ""
-"Importez des fichiers musicaux (MP3, OGG, Flac, etc.) depuis votre "
-"bibliothèque personnelle directement depuis votre navigateur pour en "
-"profiter ici."
+msgid "Upload music files (MP3, OGG, FLAC, etc.) from your personal library directly from your browser to enjoy them here."
+msgstr "Importez des fichiers musicaux (MP3, OGG, Flac, etc.) depuis votre bibliothèque personnelle directement depuis votre navigateur pour en profiter ici."
 
 #: front/src/components/library/FileUpload.vue:30
 msgctxt "Content/Library/Title/Verb"
 msgid "Upload new tracks"
 msgstr "Téléverser de nouveaux morceaux"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:298
-msgctxt "Content/Moderation/Table.Label/Noun"
+#: front/src/components/About.vue:99
+#: front/src/views/admin/moderation/AccountsDetail.vue:309
+msgctxt "*/*/*"
 msgid "Upload quota"
 msgstr "Quota d’envoi"
 
@@ -4793,15 +5061,13 @@ msgstr "Dépassement du délai d'envoi, veuillez réessayer"
 
 #: front/src/components/library/ImportStatusModal.vue:14
 msgctxt "Popup/Import/Message"
-msgid ""
-"Upload was skipped because a similar one is already available in one of your"
-" libraries."
-msgstr ""
+msgid "Upload was skipped because a similar one is already available in one of your libraries."
+msgstr "L’import a été ignoré car un fichier similaire est déjà disponible dans une de vos bibliothèques."
 
 #: front/src/components/library/ImportStatusModal.vue:11
 msgctxt "Popup/Import/Message"
 msgid "Upload was successfully processed by the server."
-msgstr ""
+msgstr "L'envoi a été correctement traité par le serveur."
 
 #: front/src/components/library/FileUpload.vue:109
 msgctxt "Content/Library/Table"
@@ -4818,75 +5084,87 @@ msgctxt "Content/Library/Table"
 msgid "Uploading…"
 msgstr "Envoi en cours…"
 
+#: front/src/components/manage/library/LibrariesTable.vue:52
+#: front/src/components/manage/moderation/AccountsTable.vue:41
+#: front/src/components/mixins/Translations.vue:75
+#: front/src/views/admin/library/AlbumDetail.vue:258
+#: front/src/views/admin/library/ArtistDetail.vue:246
 #: front/src/views/admin/library/Base.vue:20
+#: front/src/views/admin/library/LibraryDetail.vue:258
+#: front/src/views/admin/library/TrackDetail.vue:310
 #: front/src/views/admin/library/UploadsList.vue:24
+#: front/src/views/admin/moderation/AccountsDetail.vue:349
+#: front/src/views/admin/moderation/DomainsDetail.vue:281
+#: front/src/components/mixins/Translations.vue:76
 msgctxt "*/*/*"
 msgid "Uploads"
 msgstr "Téléversements"
 
-#: front/src/components/manage/moderation/AccountsTable.vue:41
-#: front/src/components/mixins/Translations.vue:63
-#: front/src/views/admin/library/AlbumDetail.vue:242
-#: front/src/views/admin/library/ArtistDetail.vue:231
-#: front/src/views/admin/library/LibraryDetail.vue:239
-#: front/src/views/admin/library/TrackDetail.vue:294
-#: front/src/views/admin/moderation/AccountsDetail.vue:337
-#: front/src/views/admin/moderation/DomainsDetail.vue:244
-#: front/src/components/mixins/Translations.vue:64
-msgctxt "Content/Moderation/Table.Label/Noun"
-msgid "Uploads"
-msgstr "Téléversements"
-
-#: front/src/components/manage/library/LibrariesTable.vue:52
-msgctxt "Content/*/*/Noun"
-msgid "Uploads"
-msgstr "Téléversements"
-
 #: front/src/components/auth/ApplicationForm.vue:16
 msgctxt "Content/Applications/Help Text"
-msgid ""
-"Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is "
-"not served on the web."
+msgid "Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is not served on the web."
 msgstr ""
+"Utiliser \"urn:ietf:wg:oauth:2.0:oob\" comme URI de redirection si votre "
+"application n'est pas disponible sur le web."
 
 #: front/src/components/Footer.vue:16
 msgctxt "Footer/*/List item.Link"
 msgid "Use another instance"
 msgstr "Utiliser une autre instance"
 
+#: front/src/components/Home.vue:146
+msgctxt "Content/Home/Link"
+msgid "Use Funkwhale on other devices with our apps"
+msgstr "Utiliser Funkwhale sur d'autres terminaux avec nos applications"
+
+#: front/src/components/moderation/ReportModal.vue:44
+msgctxt "*/*/Field,Help"
+msgid "Use this field to provide additional context to the moderator that will handle your report."
+msgstr ""
+"Utilisez ce champ pour fournir du contexte supplémentaire aux modérateur·"
+"ices qui traiteront votre signalement."
+
 #: front/src/views/auth/PasswordReset.vue:12
 msgctxt "Content/Signup/Paragraph"
-msgid ""
-"Use this form to request a password reset. We will send an email to the "
-"given address with instructions to reset your password."
+msgid "Use this form to request a password reset. We will send an email to the given address with instructions to reset your password."
+msgstr "Utilisez ce formulaire pour demander à réinitialiser votre mot de passe. Vous recevrez un courriel à l'adresse indiquée contenant les instructions de réinitialisation."
+
+#: front/src/components/moderation/ReportModal.vue:18
+msgctxt "*/Moderation/Popup,Paragraph"
+msgid "Use this form to submit a report to our moderation team."
 msgstr ""
-"Utilisez ce formulaire pour demander à réinitialiser votre mot de passe. "
-"Vous recevrez un courriel à l'adresse indiquée contenant les instructions de"
-" réinitialisation."
+"Utilisez ce formulaire pour envoyer un signalement à notre équipe de "
+"modération."
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:111
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Use this setting to temporarily enable/disable the policy without completely"
-" removing it."
-msgstr ""
-"Utilisez ce paramètre pour activer/désactiver temporairement la règle sans "
-"la supprimer complètement."
+msgid "Use this setting to temporarily enable/disable the policy without completely removing it."
+msgstr "Utilisez ce paramètre pour activer/désactiver temporairement la règle sans la supprimer complètement."
 
 #: front/src/components/manage/users/InvitationsTable.vue:49
 msgctxt "Content/Admin/Table"
 msgid "Used"
 msgstr "Utilisé"
 
+#: front/src/components/Home.vue:125
+msgctxt "Content/Home/Header"
+msgid "Useful links"
+msgstr "Liens utiles"
+
 #: front/src/views/content/libraries/Detail.vue:26
 msgctxt "Content/Library/Table.Label"
 msgid "User"
 msgstr "Utilisateur·rice"
 
-#: front/src/components/instance/Stats.vue:5
-msgctxt "Content/About/Title/Noun"
-msgid "User activity"
-msgstr "Activité des utilisateur·ice·s"
+#: front/src/components/Home.vue:154
+msgctxt "Content/Home/Link"
+msgid "User guides"
+msgstr "Guides d'utilisation"
+
+#: front/src/views/admin/Settings.vue:88
+msgctxt "Content/Admin/Menu"
+msgid "User Interface"
+msgstr "Interface utilisateur·ice"
 
 #: front/src/components/library/AlbumDetail.vue:26
 #: front/src/components/library/ArtistDetail.vue:39
@@ -4900,35 +5178,37 @@ msgctxt "Content/Radio/Title"
 msgid "User radios"
 msgstr "Radios des utilisateur·ice·s"
 
-#: front/src/components/auth/Signup.vue:19
+#: front/src/components/auth/SignupForm.vue:15
 #: front/src/components/manage/users/UsersTable.vue:37
-#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:71
 #: front/src/views/admin/moderation/AccountsDetail.vue:114
-#: front/src/components/mixins/Translations.vue:60
+#: front/src/components/mixins/Translations.vue:72
 msgctxt "Content/*/*"
 msgid "Username"
 msgstr "Nom d'utilisateur"
 
-#: front/src/components/auth/Login.vue:15
+#: front/src/components/auth/LoginForm.vue:11
 msgctxt "Content/Login/Input.Label/Noun"
 msgid "Username or email"
 msgstr "Nom d'utilisateur ou email"
 
-#: front/src/components/instance/Stats.vue:13
-msgctxt "Content/About/Paragraph/Unit"
-msgid "users"
-msgstr "utilisateur·rice·s"
-
-#: front/src/components/Sidebar.vue:102
-#: front/src/components/manage/moderation/DomainsTable.vue:39
-#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/Sidebar.vue:106
+#: front/src/components/manage/moderation/DomainsTable.vue:47
+#: front/src/components/mixins/Translations.vue:73
 #: src/views/admin/Settings.vue:81 front/src/views/admin/users/Base.vue:5
 #: src/views/admin/users/UsersList.vue:21
-#: front/src/components/mixins/Translations.vue:62
+#: front/src/components/mixins/Translations.vue:74
 msgctxt "*/*/*/Noun"
 msgid "Users"
 msgstr "Utilisateur·ice·s"
 
+#: front/src/components/Home.vue:110
+msgctxt "Content/Home/Paragraph"
+msgid "Users on this pod also get %{ quota } of free storage to upload their own content!"
+msgstr ""
+"Les utilisateur·ices de ce pod bénéficient également de %{ quota } d'espace "
+"de stockage pour mettre en ligne leurs propres contenus !"
+
 #: front/src/components/Footer.vue:29
 msgctxt "Footer/*/Title"
 msgid "Using Funkwhale"
@@ -4946,45 +5226,58 @@ msgctxt "Content/Library/Link/Verb"
 msgid "View files"
 msgstr "Afficher les fichiers"
 
-#: front/src/components/library/AlbumBase.vue:81
-#: front/src/components/library/ArtistBase.vue:92
-#: front/src/components/library/TrackBase.vue:100
-#: front/src/views/admin/library/AlbumDetail.vue:42
-#: front/src/views/admin/library/ArtistDetail.vue:41
+#: front/src/components/library/AlbumBase.vue:95
+#: front/src/components/library/ArtistBase.vue:107
+#: front/src/components/library/TrackBase.vue:111
+#: front/src/views/admin/library/AlbumDetail.vue:48
+#: front/src/views/admin/library/ArtistDetail.vue:46
 #: front/src/views/admin/library/LibraryDetail.vue:34
 #: front/src/views/admin/library/LibraryDetail.vue:45
-#: front/src/views/admin/library/TrackDetail.vue:41
+#: front/src/views/admin/library/TagDetail.vue:32
+#: front/src/views/admin/library/TrackDetail.vue:47
 #: front/src/views/admin/library/UploadDetail.vue:35
 #: front/src/views/admin/library/UploadDetail.vue:46
 #: front/src/views/admin/moderation/AccountsDetail.vue:37
 #: front/src/views/admin/moderation/AccountsDetail.vue:45
+#: front/src/views/admin/moderation/DomainsDetail.vue:30
 msgctxt "Content/Moderation/Link/Verb"
 msgid "View in Django's admin"
-msgstr ""
+msgstr "Voir dans l'administration Django"
 
-#: front/src/components/library/AlbumBase.vue:61
-#: front/src/components/library/ArtistBase.vue:72
-#: front/src/components/library/TrackBase.vue:80
+#: front/src/components/Home.vue:169
+msgctxt "Content/Home/Link"
+msgid "View more…"
+msgstr "Voir plus…"
+
+#: front/src/components/library/AlbumBase.vue:62
+#: front/src/components/library/ArtistBase.vue:73
+#: front/src/components/library/TrackBase.vue:78
 #: front/src/components/metadata/ArtistCard.vue:49
 #: front/src/components/metadata/ReleaseCard.vue:53
 msgctxt "Content/*/*/Clickable, Verb"
 msgid "View on MusicBrainz"
 msgstr "Voir sur MusicBrainz"
 
+#: front/src/components/manage/moderation/ReportCard.vue:124
+msgctxt "Content/Moderation/Link"
+msgid "View public page"
+msgstr "Voir la page publique"
+
 #: front/src/components/manage/library/LibrariesTable.vue:11
 #: front/src/components/manage/library/LibrariesTable.vue:51
 #: front/src/components/manage/library/UploadsTable.vue:11
 #: front/src/components/manage/library/UploadsTable.vue:63
 #: front/src/views/admin/library/LibraryDetail.vue:94
 #: front/src/views/admin/library/UploadDetail.vue:101
+#: front/src/views/content/libraries/Form.vue:18
 msgctxt "*/*/*"
 msgid "Visibility"
 msgstr "Visibilité"
 
-#: front/src/views/content/libraries/Form.vue:18
-msgctxt "Content/Library/Dropdown.Label"
-msgid "Visibility"
-msgstr "Visibilité"
+#: front/src/components/Home.vue:91
+msgctxt "Content/Home/Link"
+msgid "Visit funkwhale.audio"
+msgstr "Visiter funkwhale.audio"
 
 #: front/src/components/library/AlbumDetail.vue:4
 msgctxt "Content/Album/"
@@ -4996,7 +5289,12 @@ msgctxt "Popup/*/Loading.Title"
 msgid "Waiting for result…"
 msgstr "Chargement de vos favoris…"
 
-#: front/src/components/auth/Login.vue:7
+#: front/src/components/auth/Settings.vue:285
+msgctxt "Content/Settings/Error message.Title"
+msgid "We cannot delete your account"
+msgstr "Nous ne pouvons pas supprimer votre compte"
+
+#: front/src/components/auth/LoginForm.vue:3
 msgctxt "Content/Login/Error message.Title"
 msgid "We cannot log you in"
 msgstr "Erreur lors de la connexion"
@@ -5004,44 +5302,43 @@ msgstr "Erreur lors de la connexion"
 #: front/src/components/auth/ApplicationForm.vue:3
 msgctxt "Content/*/Error message.Title"
 msgid "We cannot save your changes"
-msgstr "Création de votre compte impossible."
+msgstr "Sauvegarde de vos modifications impossible"
 
-#: front/src/components/Home.vue:122
-msgctxt "Content/Home/List item"
-msgid "We do not track you or bother you with ads"
-msgstr "Nous ne vous pistons pas et ne vous exposons pas à des publicités"
+#: front/src/views/Notifications.vue:39
+msgctxt "Content/Notifications/Paragraph"
+msgid "We noticed you've been here for a while. If Funkwhale is useful to you, we could use your help to make it even better!"
+msgstr ""
+"Nous avons remarqué que vous êtes là depuis quelques temps. Si Funkwhale "
+"vous est utile, vous pouvez nous aider à le rendre encore meilleur !"
 
 #: front/src/components/library/FileUpload.vue:39
 msgctxt "Content/Library/Link"
 msgid "We recommend using Picard for that purpose."
 msgstr "nous vous recommandons d'utiliser le logiciel Picard pour cela."
 
-#: front/src/components/Home.vue:7
-msgctxt "Content/Home/Title"
-msgid "We think listening to music should be simple."
-msgstr "Nous pensons que l'accès à la musique devrait être simple."
+#: front/src/components/moderation/ReportModal.vue:35
+msgctxt "*/*/Field,Help"
+msgid "We'll use this email if we need to contact you regarding this report."
+msgstr ""
+"Nous utiliserons cet email si nous avons besoin de vous contacter à propos "
+"de votre signalement."
 
-#: front/src/components/Home.vue:148
+#: front/src/components/Home.vue:207
 msgctxt "Head/Home/Title"
 msgid "Welcome"
 msgstr "Bienvenue"
 
 #: front/src/components/Home.vue:5
-msgctxt "Content/Home/Title/Verb"
-msgid "Welcome on Funkwhale"
-msgstr "Bienvenue sur Funkwhale"
-
-#: front/src/components/Home.vue:24
-msgctxt "Content/Home/Title"
-msgid "Why funkwhale?"
-msgstr "Pourquoi Funkwhale ?"
+msgctxt "Content/Home/Header"
+msgid "Welcome to %{ podName }!"
+msgstr "Bienvenue sur %{ podName } !"
 
-#: front/src/components/audio/EmbedWizard.vue:13
+#: front/src/components/audio/EmbedWizard.vue:23
 msgctxt "Popup/Embed/Input.Label"
 msgid "Widget height"
 msgstr "Hauteur du widget"
 
-#: front/src/components/audio/EmbedWizard.vue:6
+#: front/src/components/audio/EmbedWizard.vue:16
 msgctxt "Popup/Embed/Input.Label"
 msgid "Widget width"
 msgstr "Largeur du widget"
@@ -5049,21 +5346,23 @@ msgstr "Largeur du widget"
 #: front/src/components/auth/ApplicationForm.vue:157
 msgctxt "Content/OAuth Scopes/Label/Verb"
 msgid "Write"
-msgstr ""
+msgstr "Écriture"
 
 #: front/src/components/auth/Authorize.vue:21
 msgctxt "Content/Auth/Label/Noun"
 msgid "Write-only"
-msgstr ""
+msgstr "Écriture seule"
 
 #: front/src/components/auth/ApplicationForm.vue:158
 msgctxt "Content/OAuth Scopes/Help Text"
 msgid "Write-only access to user data"
-msgstr ""
+msgstr "Accès aux données utilisateur en écriture seule"
 
-#: front/src/components/Sidebar.vue:129
+#: front/src/components/Sidebar.vue:133
 #: front/src/components/manage/moderation/AccountsTable.vue:72
-#: front/src/components/manage/moderation/DomainsTable.vue:58
+#: front/src/components/manage/moderation/DomainsTable.vue:12
+#: front/src/components/manage/moderation/DomainsTable.vue:69
+#: front/src/views/admin/moderation/DomainsDetail.vue:109
 msgctxt "*/*/*"
 msgid "Yes"
 msgstr "Oui"
@@ -5075,35 +5374,26 @@ msgstr "Oui, déconnectez-moi !"
 
 #: front/src/views/content/libraries/Form.vue:19
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You are able to share your library with other people, regardless of its "
-"visibility."
-msgstr ""
-"Vous pouvez partager votre bibliothèque avec d'autres personnes, quelle que "
-"soit sa visibilité."
+msgid "You are able to share your library with other people, regardless of its visibility."
+msgstr "Vous pouvez partager votre bibliothèque avec d'autres personnes, quelle que soit sa visibilité."
 
 #: front/src/components/library/FileUpload.vue:32
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You are about to upload music to your library. Before proceeding, please "
-"ensure that:"
-msgstr ""
-"Vous êtes sur le point de transférer de la musique dans votre bibliothèque. "
-"Avant de procéder, veuillez vous assurer que :"
+msgid "You are about to upload music to your library. Before proceeding, please ensure that:"
+msgstr "Vous êtes sur le point de transférer de la musique dans votre bibliothèque. Avant de procéder, veuillez vous assurer que :"
 
 #: front/src/components/SetInstanceModal.vue:12
 msgctxt "Popup/Login/Paragraph"
-msgid ""
-"You are currently connected to <a href=\"%{ url }\" target=\"_blank\">%{ "
-"hostname }&nbsp;<i class=\"external icon\"/></a>. If you continue, you will "
-"be disconnected from your current instance and all your local data will be "
-"deleted."
+msgid "You are currently connected to <a href=\"%{ url }\" target=\"_blank\">%{ hostname }&nbsp;<i class=\"external icon\"/></a>. If you continue, you will be disconnected from your current instance and all your local data will be deleted."
 msgstr ""
+"Vous êtes actuellement connecté·e a <a href=\"%{ url }\" target=\"_blank\">%{"
+" hostname }&nbsp;<i class=\"external icon\"/></a>. Si vous continuez, vous "
+"serez déconnecté·e et les données locales seront supprimées."
 
 #: front/src/components/library/ArtistDetail.vue:6
 msgctxt "Content/Artist/Paragraph"
 msgid "You are currently hiding content related to this artist."
-msgstr ""
+msgstr "Vous masquez actuellement le contenu associé à cet·te artiste."
 
 #: front/src/components/auth/Logout.vue:7
 msgctxt "Content/Login/Paragraph"
@@ -5112,65 +5402,49 @@ msgstr "Vous êtes actuellement connecté·e en tant que %{ username }"
 
 #: front/src/components/library/FileUpload.vue:35
 msgctxt "Content/Library/List item"
-msgid ""
-"You are not uploading copyrighted content in a public library, otherwise you"
-" may be infringing the law"
+msgid "You are not uploading copyrighted content in a public library, otherwise you may be infringing the law"
 msgstr ""
+"Vous n'envoyez pas de contenu sous copyright dans une bibliothèque publique, "
+"car dans le cas contraire, vous être probablement en infraction"
 
 #: front/src/components/SetInstanceModal.vue:98
 msgctxt "*/Instance/Message"
 msgid "You are now using the Funkwhale instance at %{ url }"
-msgstr ""
+msgstr "Vous utilisez maintenant l’instance Funkwhale sur ${ url }"
 
 #: front/src/views/content/Home.vue:17
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You can follow libraries from other users to get access to new music. Public"
-" libraries can be followed immediatly, while following a private library "
-"requires approval from its owner."
+msgid "You can follow libraries from other users to get access to new music. Public libraries can be followed immediately, while following a private library requires approval from its owner."
 msgstr ""
 "Vous pouvez suivre les bibliothèques d'autres utilisateurs pour avoir accès "
 "à de la nouvelle musique. Les bibliothèques publiques peuvent être suivies "
 "immédiatement, tandis que le suivi d'une bibliothèque privée nécessite "
 "l'approbation de son propriétaire."
 
-#: front/src/components/Home.vue:128
-msgctxt "Content/Home/List item"
-msgid ""
-"You can invite friends and family to your instance so they can enjoy your "
-"music"
-msgstr ""
-"Vous pouvez inviter vos ami·es et votre famille sur votre instance pour "
-"qu'ils·elles puissent profiter de votre musique"
-
 #: front/src/components/moderation/FilterModal.vue:31
 msgctxt "Popup/Moderation/Paragraph"
-msgid ""
-"You can manage and update your filters anytime from your account settings."
-msgstr ""
+msgid "You can manage and update your filters any time from your account settings."
+msgstr "Vous pouvez gérer et mettre à jour vos filtres à tout moment depuis les paramètres de votre compte."
 
 #: front/src/views/auth/EmailConfirm.vue:24
 msgctxt "Content/Signup/Paragraph"
 msgid "You can now use the service without limitations."
 msgstr "Vous pouvez maintenant utiliser le service sans limitations."
 
+#: front/src/components/auth/Settings.vue:278
+msgctxt "Content/Settings/Paragraph'"
+msgid "You can permanently and irreversibly delete your account and all the associated data using the form below. You will be asked for confirmation."
+msgstr "Vous pouvez de façon permanente et irrémédiable votre compte et toutes les données liées en utilisant le formulaire ci-dessous. Une confirmation vous sera demandée."
+
 #: front/src/components/library/radios/Builder.vue:7
 msgctxt "Content/Radio/Paragraph"
-msgid ""
-"You can use this interface to build your own custom radio, which will play "
-"tracks according to your criteria."
-msgstr ""
-"Vous pouvez utiliser cette interface pour réaliser votre propre radio "
-"personnalisée, qui jouera les pistes correspondant aux critères indiqués."
+msgid "You can use this interface to build your own custom radio, which will play tracks according to your criteria."
+msgstr "Vous pouvez utiliser cette interface pour réaliser votre propre radio personnalisée, qui jouera les pistes correspondant aux critères indiqués."
 
 #: front/src/components/auth/SubsonicTokenForm.vue:7
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"You can use those to enjoy your playlist and music in offline mode, on your "
-"smartphone or tablet, for instance."
-msgstr ""
-"Vous pouvez les utiliser pour profiter de vos playlists et de votre musique "
-"en mode hors-ligne sur votre smatphone ou tablette, par exemple."
+msgid "You can use those to enjoy your playlist and music in offline mode, on your smartphone or tablet, for instance."
+msgstr "Vous pouvez les utiliser pour profiter de vos playlists et de votre musique en mode hors-ligne sur votre smatphone ou tablette, par exemple."
 
 #: front/src/components/auth/Settings.vue:202
 msgctxt "Content/Applications/Paragraph"
@@ -5187,19 +5461,20 @@ msgctxt "Content/Moderation/Card.Title"
 msgid "You don't have any rule in place for this account."
 msgstr "Vous n'avez aucune règle en place pour ce compte."
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:39
+#: front/src/views/admin/moderation/DomainsDetail.vue:67
 msgctxt "Content/Moderation/Card.Title"
 msgid "You don't have any rule in place for this domain."
 msgstr "Vous n'avez aucune règle en place pour ce domaine."
 
 #: front/src/components/library/EditForm.vue:52
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You don't have the permission to edit this object, but you can suggest "
-"changes. Once submitted, suggestions will be reviewed before approval."
+msgid "You don't have the permission to edit this object, but you can suggest changes. Once submitted, suggestions will be reviewed before approval."
 msgstr ""
+"Vous n'avez pas la permission d'éditer cet élément, mais vous pouvez "
+"suggérer des modifications. Une fois envoyées, les suggestions sont "
+"examinées avant d'être approuvées."
 
-#: front/src/components/Sidebar.vue:171
+#: front/src/components/Sidebar.vue:175
 msgctxt "Sidebar/Player/Title"
 msgid "You have a radio playing"
 msgstr "Vous écoutez une radio"
@@ -5211,42 +5486,43 @@ msgstr "Il se peut que vous ayez des problèmes de connexion."
 
 #: front/src/components/auth/Settings.vue:100
 msgctxt "Popup/Settings/List item"
-msgid ""
-"You will be logged out from this session and have to log in with the new one"
-msgstr ""
-"Vous allez être déconnecté⋅e de cette session et vous devrez vous connecter "
-"avec votre nouveau mot de passe"
+msgid "You will be logged out from this session and have to log in with the new one"
+msgstr "Vous allez être déconnecté⋅e de cette session et vous devrez vous connecter avec votre nouveau mot de passe"
 
 #: front/src/components/auth/Authorize.vue:51
 msgctxt "Content/Auth/Paragraph"
 msgid "You will be redirected to <strong>%{ url }</strong>"
-msgstr ""
+msgstr "Vous allez être redirigé·e vers <strong>${ url }</strong>"
 
 #: front/src/components/auth/Authorize.vue:49
 msgctxt "Content/Auth/Paragraph"
 msgid "You will be shown a code to copy-paste in the application."
-msgstr ""
+msgstr "Un code à copier-coller dans l'application vous sera présenté."
 
 #: front/src/components/auth/Settings.vue:71
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"You will have to update your password on your clients that use this "
-"password."
-msgstr ""
-"Vous devrez mettre à jour votre mot de passe sur l'ensemble des clients "
-"utilisant ce mot de passe."
+msgid "You will have to update your password on your clients that use this password."
+msgstr "Vous devrez mettre à jour votre mot de passe sur l'ensemble des clients utilisant ce mot de passe."
 
 #: front/src/components/moderation/FilterModal.vue:20
 msgctxt "Popup/Moderation/Paragraph"
-msgid ""
-"You will not see tracks, albums and user activity linked to this artist "
-"anymore:"
-msgstr ""
+msgid "You will not see tracks, albums and user activity linked to this artist any more:"
+msgstr "Vous ne verrez plus les pistes, albums et activité utilisateur liées à cet artiste :"
 
-#: front/src/components/auth/Signup.vue:13
+#: front/src/components/auth/SignupForm.vue:9
 msgctxt "Content/Signup/Form/Paragraph"
 msgid "Your account cannot be created."
-msgstr "Playlist créée"
+msgstr "Création de votre compte impossible."
+
+#: front/src/components/auth/Settings.vue:281
+msgctxt "Content/Settings/Paragraph'"
+msgid "Your account will be deleted from our servers within a few minutes. We will also notify other servers who may have a copy of some of your data so they can proceed to deletion. Please note that some of these servers may be offline or unwilling to comply though."
+msgstr ""
+"Votre compte sera supprimé de nos serveurs en quelques minutes. Nous "
+"informerons également les autres pods qui peuvent détenir une copie "
+"partielle de vos données pour qu'ils puissent procéder à la suppression. "
+"Cependant, merci de noter que certains de ces pods peuvent être hors lignes "
+"où ne pas tenir compte de la demande de suppression."
 
 #: front/src/components/auth/Settings.vue:215
 msgctxt "Content/Settings/Title/Noun"
@@ -5256,24 +5532,31 @@ msgstr "Vos notifications"
 #: front/src/components/auth/Settings.vue:38
 msgctxt "Content/Settings/Error message.Title"
 msgid "Your avatar cannot be saved"
+msgstr "Impossible de sauvegarder votre avatar"
+
+#: front/src/components/auth/Settings.vue:527
+msgctxt "*/Auth/Message"
+msgid "Your deletion request was submitted, your account and content will be deleted shortly"
 msgstr ""
+"Votre demande de suppression a été envoyée, votre compte et le contenu "
+"associé sera supprimé sous peu"
 
 #: front/src/components/library/EditForm.vue:3
 msgctxt "Content/Library/Paragraph"
 msgid "Your edit was successfully submitted."
-msgstr ""
+msgstr "Votre modification a été envoyée avec succès."
 
 #: front/src/components/favorites/List.vue:116
 msgctxt "Head/Favorites/Title"
 msgid "Your Favorites"
 msgstr "Vos favoris"
 
-#: front/src/components/Home.vue:109
-msgctxt "Content/Home/Title"
-msgid "Your music, your way"
-msgstr "Votre musique, à votre façon"
+#: front/src/views/Notifications.vue:5
+msgctxt "Content/Notifications/Title"
+msgid "Your messages"
+msgstr "Vos messages"
 
-#: front/src/views/Notifications.vue:4
+#: front/src/views/Notifications.vue:69
 msgctxt "Content/Notifications/Title"
 msgid "Your notifications"
 msgstr "Vos notifications"
@@ -5281,7 +5564,7 @@ msgstr "Vos notifications"
 #: front/src/components/auth/Settings.vue:76
 msgctxt "Content/Settings/Error message.Title"
 msgid "Your password cannot be changed"
-msgstr ""
+msgstr "Impossible de changer votre mot de passe"
 
 #: front/src/views/auth/PasswordResetConfirm.vue:29
 msgctxt "Content/Signup/Card.Paragraph"
@@ -5290,43 +5573,41 @@ msgstr "Votre mot de passe a été mis à jour avec succès."
 
 #: front/src/components/auth/Settings.vue:14
 msgctxt "Content/Settings/Error message.Title"
-msgid "Your settings can't be updateds"
-msgstr "Paramètres mis à jour"
+msgid "Your settings can't be updated"
+msgstr "Vos paramètres ne peuvent être mis à jour"
 
 #: front/src/components/auth/Settings.vue:101
 msgctxt "Popup/Settings/List item"
-msgid ""
-"Your Subsonic password will be changed to a new, random one, logging you out"
-" from devices that used the old Subsonic password"
-msgstr ""
-"Votre mot de passe Subsonic sera remplacé par un nouveau mot de passe "
-"aléatoire, ce qui vous déconnectera de tous les appareils utilisant l'ancien"
-" mot de passe"
+msgid "Your Subsonic password will be changed to a new, random one, logging you out from devices that used the old Subsonic password"
+msgstr "Votre mot de passe Subsonic sera remplacé par un nouveau mot de passe aléatoire, ce qui vous déconnectera de tous les appareils utilisant l'ancien mot de passe"
 
-#: front/src/edits.js:47
-msgctxt "*/*/*/Short, Noun"
-msgid "Position"
-msgstr "Pagination"
+#: front/src/entities.js:126
+msgctxt "*/*/*/Noun"
+msgid "MusicBrainz ID"
+msgstr "ID MusicBrainz"
 
-#: front/src/edits.js:54
-msgctxt "Content/Track/*/Noun"
-msgid "Copyright"
-msgstr "Copyright"
+#: front/src/main.js:110
+msgctxt "*/Error/Paragraph"
+msgid "You sent too many requests and have been rate limited, please try again in %{ delay }"
+msgstr ""
+"Vous avez envoyé trop de requêtes et êtes actuellement limité·e, merci de "
+"réessayer dans %{ delay }"
+
+#: front/src/main.js:113
+msgctxt "*/Error/Paragraph"
+msgid "You sent too many requests and have been rate limited, please try again later"
+msgstr ""
+"Vous avez envoyé trop de requêtes et êtes actuellement limité·e, merci de "
+"réessayer plus tard"
 
-#: front/src/components/library/AlbumBase.vue:183
-#, fuzzy
+#: front/src/components/library/AlbumBase.vue:208
 msgctxt "Content/Album/Header.Title"
-msgid ""
-"Album containing %{ count } track, by <a class=\"internal\" href=\"%{ "
-"artistUrl }\">%{ artist }</a>"
-msgid_plural ""
-"Album containing %{ count } tracks, by <a class=\"internal\" href=\"%{ "
-"artistUrl }\">%{ artist }</a>"
-msgstr[0] "Album contenant %{ count } piste, par %{ artist }"
-msgstr[1] "Album contenant %{ count } pistes, par %{ artist }"
-
-#: front/src/components/audio/PlayButton.vue:220
-#, fuzzy
+msgid "Album containing %{ count } track, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgid_plural "Album containing %{ count } tracks, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgstr[0] "Album contenant %{ count } piste, par <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgstr[1] "Album contenant %{ count } pistes, par <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+
+#: front/src/components/audio/PlayButton.vue:246
 msgctxt "*/Queue/Message"
 msgid "%{ count } track was added to your queue"
 msgid_plural "%{ count } tracks were added to your queue"
diff --git a/front/locales/gl/LC_MESSAGES/app.po b/front/locales/gl/LC_MESSAGES/app.po
index f526bb7d6a51721462300b243d5581176f3025b9..16fcee9b202aa4e1aac2c1372966d37616826346 100644
--- a/front/locales/gl/LC_MESSAGES/app.po
+++ b/front/locales/gl/LC_MESSAGES/app.po
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: front 1.0.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-05-16 10:35+0200\n"
-"PO-Revision-Date: 2019-03-05 05:58+0000\n"
+"POT-Creation-Date: 2019-10-01 15:15+0200\n"
+"PO-Revision-Date: 2019-10-01 08:57+0000\n"
 "Last-Translator: Xosé M <xosem@disroot.org>\n"
 "Language-Team: none\n"
 "Language: gl\n"
@@ -16,7 +16,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.2.2\n"
+"X-Generator: Weblate 3.7\n"
 
 #: front/src/components/playlists/PlaylistModal.vue:9
 msgctxt "Popup/Playlist/Paragraph"
@@ -38,18 +38,58 @@ msgctxt "Content/Auth/Title"
 msgid "%{ app } wants to access your Funkwhale account"
 msgstr "Conecte coa súa conta Funkwhale"
 
+#: front/src/components/About.vue:173 src/components/Home.vue:56
+msgctxt "Content/Home/Stat"
+msgid "%{ count } active user"
+msgid_plural "%{ count } active users"
+msgstr[0] "%{ count } usuaria activa"
+msgstr[1] "%{ count } usuarias activas"
+
+#: front/src/components/About.vue:182
+msgctxt "Content/Home/Stat"
+msgid "%{ count } albums"
+msgid_plural "%{ count } albums"
+msgstr[0] "%{ count } álbume"
+msgstr[1] "%{ count } álbumes"
+
+#: front/src/components/About.vue:152
+msgctxt "*/*/*"
+msgid "%{ count } allowed domains"
+msgid_plural "%{ count } allowed domains"
+msgstr[0] "%{ count } dominio permitido"
+msgstr[1] "%{ count } dominios permitidos"
+
+#: front/src/components/About.vue:179
+msgctxt "Content/Home/Stat"
+msgid "%{ count } artists"
+msgid_plural "%{ count } artists"
+msgstr[0] "%{ count } artista"
+msgstr[1] "%{ count } artistas"
+
+#: front/src/components/About.vue:176 src/components/Home.vue:59
+msgctxt "Content/Home/Stat"
+msgid "%{ count } hour of music"
+msgid_plural "%{ count } hours of music"
+msgstr[0] "%{ count } hora de música"
+msgstr[1] "%{ count } horas de música"
+
+#: front/src/components/About.vue:188
+msgctxt "Content/Home/Stat"
+msgid "%{ count } listenings"
+msgid_plural "%{ count } listenings"
+msgstr[0] "%{ count } escoita"
+msgstr[1] "%{ count } escoitas"
+
 #: front/src/components/common/ActionTable.vue:68
-#, fuzzy
 msgctxt "Content/*/Paragraph"
 msgid "%{ count } on %{ total } selected"
 msgid_plural "%{ count } on %{ total } selected"
 msgstr[0] "%{ count } de %{ total } seleccionado"
 msgstr[1] "%{ count } de %{ total } seleccionados"
 
-#: front/src/components/Sidebar.vue:121 src/components/audio/album/Card.vue:52
+#: front/src/components/Sidebar.vue:125 src/components/audio/album/Card.vue:52
 #: front/src/views/content/libraries/Card.vue:40
-#: src/views/content/remote/Card.vue:30
-#, fuzzy
+#: src/views/content/remote/Card.vue:43
 msgctxt "*/*/*"
 msgid "%{ count } track"
 msgid_plural "%{ count } tracks"
@@ -57,7 +97,6 @@ msgstr[0] "%{ count } canción"
 msgstr[1] "%{ count } cancións"
 
 #: front/src/components/library/ArtistBase.vue:13
-#, fuzzy
 msgctxt "Content/Artist/Paragraph"
 msgid "%{ count } track in %{ albumsCount } albums"
 msgid_plural "%{ count } tracks in %{ albumsCount } albums"
@@ -65,15 +104,20 @@ msgstr[0] "%{ count } canción en %{ albumsCount } álbumes"
 msgstr[1] "%{ count } cancións en %{ albumsCount } álbumes"
 
 #: front/src/components/library/radios/Builder.vue:81
-#, fuzzy
 msgctxt "Content/Radio/Table.Paragraph/Short"
 msgid "%{ count } track matching combined filters"
 msgid_plural "%{ count } tracks matching combined filters"
 msgstr[0] "%{ count } canción coicidente cos filtros combinados"
 msgstr[1] "%{ count } cancións coincidentes cos filtros combinados"
 
-#: front/src/components/playlists/Card.vue:18
-#, fuzzy
+#: front/src/components/About.vue:185
+msgctxt "Content/Home/Stat"
+msgid "%{ count } tracks"
+msgid_plural "%{ count } tracks"
+msgstr[0] "%{ count } canción"
+msgstr[1] "%{ count } cancións"
+
+#: front/src/components/playlists/Card.vue:28
 msgctxt "Content/*/Card/List item"
 msgid "%{ count} track"
 msgid_plural "%{ count } tracks"
@@ -117,12 +161,10 @@ msgstr "Perfil de %{ username }"
 
 #: front/src/components/playlists/PlaylistModal.vue:21
 msgctxt "Popup/Playlist/Paragraph"
-msgid ""
-"<strong>%{ track }</strong> is already in <strong>%{ playlist }</strong>."
-msgstr ""
+msgid "<strong>%{ track }</strong> is already in <strong>%{ playlist }</strong>."
+msgstr "<strong>%{ track }</strong> xa está en <strong>%{ playlist }</strong>."
 
-#: front/src/components/audio/artist/Card.vue:41
-#, fuzzy
+#: front/src/components/audio/artist/Card.vue:11
 msgctxt "Content/Artist/Card"
 msgid "1 album"
 msgid_plural "%{ count } albums"
@@ -130,39 +172,55 @@ msgstr[0] "1 álbume"
 msgstr[1] "%{ count } álbumes"
 
 #: front/src/components/favorites/List.vue:10
-#, fuzzy
 msgctxt "Content/Favorites/Title"
 msgid "1 favorite"
 msgid_plural "%{ count } favorites"
 msgstr[0] "1 favorita"
 msgstr[1] "%{ count } favoritas"
 
-#: front/src/components/Home.vue:64
-msgctxt "Content/Home/Title"
-msgid "A clean library"
-msgstr "Limpar biblioteca"
+#: front/src/components/audio/artist/Card.vue:15
+msgctxt "Content/Artist/Card"
+msgid "1 track"
+msgid_plural "%{ count } tracks"
+msgstr[0] "1 canción"
+msgstr[1] "%{ count } cancións"
+
+#: front/src/views/Notifications.vue:21 src/views/Notifications.vue:55
+msgctxt "*/*/*"
+msgid "30 days"
+msgstr "30 días"
+
+#: front/src/views/Notifications.vue:22 src/views/Notifications.vue:56
+msgctxt "*/*/*"
+msgid "60 days"
+msgstr "60 días"
+
+#: front/src/views/Notifications.vue:23 src/views/Notifications.vue:57
+msgctxt "*/*/*"
+msgid "90 days"
+msgstr "90 días"
 
 #: front/src/components/library/FileUpload.vue:264
 msgctxt "Content/Library/Help text"
-msgid "A network error occured while uploading this file"
+msgid "A network error occurred while uploading this file"
 msgstr "Fallou a rede mentras se subía o ficheiro"
 
-#: front/src/components/library/EditForm.vue:145
+#: front/src/components/library/EditForm.vue:161
 msgctxt "*/*/Placeholder"
 msgid "A short summary describing your changes."
-msgstr "Algo fallou ao gardar os cambios"
+msgstr "Un breve resumen describindo os cambios."
 
 #: front/src/components/About.vue:5
-msgctxt "Content/About/Title/Short, Noun"
-msgid "About %{ instance }"
-msgstr "Acerca de %{ instance }"
+msgctxt "Content/Home/Header"
+msgid "About %{ podName }"
+msgstr "Acerca de %{ podName }"
 
 #: front/src/components/Footer.vue:6
 msgctxt "Footer/About/Title"
 msgid "About %{instanceName}"
 msgstr "Acerca de %{instanceName}"
 
-#: front/src/components/Footer.vue:45
+#: front/src/components/Footer.vue:53 src/components/Home.vue:85
 msgctxt "Footer/*/Title/Short"
 msgid "About Funkwhale"
 msgstr "Acerca de Funkwhale"
@@ -172,9 +230,14 @@ msgctxt "Footer/About/List item.Link"
 msgid "About page"
 msgstr "Páxina Acerca de"
 
-#: front/src/components/About.vue:8 src/components/About.vue:67
-msgctxt "Content/About/Title"
-msgid "About this instance"
+#: front/src/components/Home.vue:19
+msgctxt "Content/Home/Header"
+msgid "About this Funkwhale pod"
+msgstr "Acerca de esta instancia Funkwhale"
+
+#: front/src/components/About.vue:21 src/components/About.vue:51
+msgctxt "Content/About/Header"
+msgid "About this pod"
 msgstr "Acerca de esta instancia"
 
 #: front/src/views/content/libraries/Detail.vue:48
@@ -187,96 +250,87 @@ msgctxt "Content/Library/Table/Short"
 msgid "Accepted"
 msgstr "Aceptado"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:110
+#: front/src/components/auth/SubsonicTokenForm.vue:117
 msgctxt "Content/Settings/Message"
 msgid "Access disabled"
 msgstr "Acceso desactivado"
 
-#: front/src/components/mixins/Translations.vue:73
-#: front/src/components/mixins/Translations.vue:74
+#: front/src/components/mixins/Translations.vue:85
+#: front/src/components/mixins/Translations.vue:86
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to audio files, libraries, artists, albums and tracks"
-msgstr ""
+msgstr "Acceso a ficheiros de audio, bibliotecas, artistas e cancións"
 
-#: front/src/components/mixins/Translations.vue:97
-#: front/src/components/mixins/Translations.vue:98
+#: front/src/components/mixins/Translations.vue:109
+#: front/src/components/mixins/Translations.vue:110
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to content filters"
 msgstr "Escolla un filtro"
 
-#: front/src/components/mixins/Translations.vue:105
-#: front/src/components/mixins/Translations.vue:106
+#: front/src/components/mixins/Translations.vue:117
+#: front/src/components/mixins/Translations.vue:118
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to edits"
 msgstr "Acceso desactivado"
 
-#: front/src/components/mixins/Translations.vue:69
-#: front/src/components/mixins/Translations.vue:70
+#: front/src/components/mixins/Translations.vue:81
+#: front/src/components/mixins/Translations.vue:82
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to email, username, and profile information"
-msgstr ""
+msgstr "Acesso a correo-e, nome de usuaria, e información do perfil"
 
-#: front/src/components/mixins/Translations.vue:77
-#: front/src/components/mixins/Translations.vue:78
+#: front/src/components/mixins/Translations.vue:89
+#: front/src/components/mixins/Translations.vue:90
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to favorites"
 msgstr "Engadir a favoritas"
 
-#: front/src/components/mixins/Translations.vue:85
-#: front/src/components/mixins/Translations.vue:86
+#: front/src/components/mixins/Translations.vue:97
+#: front/src/components/mixins/Translations.vue:98
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to follows"
-msgstr ""
+msgstr "Acceso aos seguimentos"
 
-#: front/src/components/mixins/Translations.vue:81
-#: front/src/components/mixins/Translations.vue:82
+#: front/src/components/mixins/Translations.vue:93
+#: front/src/components/mixins/Translations.vue:94
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to listening history"
-msgstr ""
+msgstr "Acceso ao historial de escoita"
 
-#: front/src/components/mixins/Translations.vue:101
-#: front/src/components/mixins/Translations.vue:102
+#: front/src/components/mixins/Translations.vue:113
+#: front/src/components/mixins/Translations.vue:114
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to notifications"
 msgstr "Acalar notificacións"
 
-#: front/src/components/mixins/Translations.vue:89
-#: front/src/components/mixins/Translations.vue:90
+#: front/src/components/mixins/Translations.vue:101
+#: front/src/components/mixins/Translations.vue:102
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to playlists"
-msgstr "Engadir a lista de reprodución…"
+msgstr "Accede a listas de reprodución"
 
-#: front/src/components/mixins/Translations.vue:93
-#: front/src/components/mixins/Translations.vue:94
+#: front/src/components/mixins/Translations.vue:105
+#: front/src/components/mixins/Translations.vue:106
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to radios"
 msgstr "Acceso desactivado"
 
-#: front/src/components/Home.vue:101
-msgctxt "Content/Home/List item"
-msgid ""
-"Access your music from a clean interface that focuses on what really matters"
-msgstr ""
-"Acceda a súa música desde unha interface clara que se centra no realmente "
-"importante"
-
 #: front/src/components/manage/library/UploadsTable.vue:67
-#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:55
 #: front/src/views/admin/library/UploadDetail.vue:175
-#: front/src/components/mixins/Translations.vue:46
+#: front/src/components/mixins/Translations.vue:56
 msgctxt "Content/*/*/Noun"
 msgid "Accessed date"
 msgstr "Acceso desactivado"
 
-#: front/src/views/admin/library/LibraryDetail.vue:104
-#: front/src/views/admin/library/UploadDetail.vue:111
-msgctxt "*/*/*/Noun"
-msgid "Account"
-msgstr "Contas"
-
 #: front/src/components/manage/library/LibrariesTable.vue:49
 #: front/src/components/manage/library/UploadsTable.vue:61
-msgctxt "*/*/*"
+#: front/src/components/manage/moderation/ReportCard.vue:156
+#: front/src/components/mixins/Report.vue:13
+#: front/src/views/admin/library/LibraryDetail.vue:113
+#: front/src/views/admin/library/UploadDetail.vue:111
+#: front/src/components/mixins/Report.vue:14
+msgctxt "*/*/*/Noun"
 msgid "Account"
 msgstr "Contas"
 
@@ -290,7 +344,7 @@ msgctxt "Content/Settings/Title"
 msgid "Account settings"
 msgstr "Axustes da conta"
 
-#: front/src/components/auth/Settings.vue:479
+#: front/src/components/auth/Settings.vue:544
 msgctxt "Head/Settings/Title"
 msgid "Account Settings"
 msgstr "Axustes da conta"
@@ -307,7 +361,7 @@ msgstr "Correo-e da conta"
 
 #: front/src/views/admin/moderation/AccountsList.vue:3
 #: front/src/views/admin/moderation/AccountsList.vue:24
-#: front/src/views/admin/moderation/Base.vue:8
+#: front/src/views/admin/moderation/Base.vue:11
 msgctxt "*/Moderation/Title"
 msgid "Accounts"
 msgstr "Contas"
@@ -318,34 +372,32 @@ msgid "Action"
 msgstr "Acción"
 
 #: front/src/components/common/ActionTable.vue:101
-#, fuzzy
 msgctxt "Content/*/Paragraph"
 msgid "Action %{ action } was launched successfully on %{ count } element"
-msgid_plural ""
-"Action %{ action } was launched successfully on %{ count } elements"
-msgstr[0] ""
-"A acción %{ action } foi lanzada correctamente sobre  %{ count } elemento"
-msgstr[1] ""
-"A accións %{ action } foi lanzada correctamente sobre %{ count } elementos"
+msgid_plural "Action %{ action } was launched successfully on %{ count } elements"
+msgstr[0] "A acción %{ action } foi lanzada correctamente sobre  %{ count } elemento"
+msgstr[1] "A acción %{ action } foi lanzada correctamente sobre %{ count } elementos"
 
 #: front/src/components/common/ActionTable.vue:22
 #: front/src/components/library/radios/Builder.vue:65
+#: front/src/components/manage/moderation/ReportCard.vue:210
 msgctxt "Content/*/*/Noun"
 msgid "Actions"
 msgstr "Accións"
 
-#: front/src/components/manage/users/UsersTable.vue:53
+#: front/src/components/manage/users/UsersTable.vue:54
 msgctxt "Content/Admin/Table"
 msgid "Active"
 msgstr "Activo"
 
-#: front/src/views/admin/library/AlbumDetail.vue:134
-#: front/src/views/admin/library/ArtistDetail.vue:123
-#: front/src/views/admin/library/LibraryDetail.vue:138
-#: front/src/views/admin/library/TrackDetail.vue:186
+#: front/src/views/admin/library/AlbumDetail.vue:140
+#: front/src/views/admin/library/ArtistDetail.vue:128
+#: front/src/views/admin/library/LibraryDetail.vue:147
+#: front/src/views/admin/library/TagDetail.vue:83
+#: front/src/views/admin/library/TrackDetail.vue:192
 #: front/src/views/admin/library/UploadDetail.vue:160
-#: front/src/views/admin/moderation/AccountsDetail.vue:220
-#: front/src/views/admin/moderation/DomainsDetail.vue:136
+#: front/src/views/admin/moderation/AccountsDetail.vue:221
+#: front/src/views/admin/moderation/DomainsDetail.vue:173
 msgctxt "Content/Moderation/Title"
 msgid "Activity"
 msgstr "Actividade"
@@ -356,7 +408,7 @@ msgctxt "Content/Settings/Dropdown.Label/Noun"
 msgid "Activity visibility"
 msgstr "Visibilidade da actividade"
 
-#: front/src/views/admin/moderation/DomainsList.vue:18
+#: front/src/views/admin/moderation/DomainsList.vue:22
 msgctxt "Content/Moderation/Button/Verb"
 msgid "Add"
 msgstr "Engadir"
@@ -385,7 +437,7 @@ msgstr "Engadir e xestionar contido"
 #: front/src/components/playlists/PlaylistModal.vue:31
 msgctxt "*/Playlist/Button.Label/Verb"
 msgid "Add anyways"
-msgstr ""
+msgstr "Engadir igualmente"
 
 #: front/src/components/Sidebar.vue:75 src/views/content/Base.vue:18
 msgctxt "*/Library/*/Verb"
@@ -402,7 +454,19 @@ msgctxt "Content/Radio/Paragraph"
 msgid "Add filters to customize your radio"
 msgstr "Engada filtros para personalizar a súa radio"
 
-#: front/src/components/audio/PlayButton.vue:75
+#: front/src/components/manage/moderation/NoteForm.vue:12
+msgctxt "Content/Moderation/Button.Label/Verb"
+msgid "Add note"
+msgstr "Engadir nota"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:191
+#: front/src/views/admin/moderation/DomainsDetail.vue:46
+#: front/src/views/admin/moderation/DomainsList.vue:18
+msgctxt "Content/Moderation/Action/Verb"
+msgid "Add to allow-list"
+msgstr "Engadir a lista-permitir"
+
+#: front/src/components/audio/PlayButton.vue:91
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Add to current queue"
 msgstr "Engadir a cola actual"
@@ -434,7 +498,7 @@ msgctxt "Popup/Playlist/Table.Button.Label/Verb"
 msgid "Add track"
 msgstr "Engadir canción"
 
-#: front/src/components/manage/users/UsersTable.vue:69
+#: front/src/components/manage/users/UsersTable.vue:70
 msgctxt "Content/Admin/Table.User role"
 msgid "Admin"
 msgstr "Admin"
@@ -444,49 +508,49 @@ msgctxt "Sidebar/Admin/Title/Noun"
 msgid "Administration"
 msgstr "Administración"
 
-#: front/src/views/admin/library/TrackDetail.vue:107
-msgctxt "*/*/*/Noun"
-msgid "Album"
-msgstr "Álbume"
-
-#: front/src/components/audio/SearchBar.vue:26
+#: front/src/components/audio/SearchBar.vue:33
 #: src/components/audio/track/Table.vue:9
-#: front/src/components/library/AlbumBase.vue:152
-#: front/src/components/library/ArtistBase.vue:194
+#: front/src/components/library/AlbumBase.vue:170
+#: front/src/components/library/ArtistBase.vue:212
 #: front/src/components/manage/library/TracksTable.vue:40
 #: front/src/components/metadata/Search.vue:134
+#: src/components/mixins/Report.vue:41
+#: front/src/views/admin/library/TrackDetail.vue:113
 #: front/src/views/content/libraries/FilesTable.vue:57
+#: front/src/components/mixins/Report.vue:42
 msgctxt "*/*/*"
 msgid "Album"
 msgstr "Álbume"
 
-#: front/src/views/admin/library/TrackDetail.vue:128
+#: front/src/views/admin/library/TrackDetail.vue:134
 msgctxt "*/*/*/Noun"
 msgid "Album artist"
 msgstr "Álbumes de este artista"
 
-#: front/src/views/admin/library/AlbumDetail.vue:92
+#: front/src/views/admin/library/AlbumDetail.vue:98
 msgctxt "Content/Moderation/Title"
 msgid "Album data"
 msgstr "Nome do álbume"
 
-#: front/src/components/mixins/Translations.vue:51
-#: front/src/components/mixins/Translations.vue:52
+#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/mixins/Translations.vue:62
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Album name"
 msgstr "Nome do álbume"
 
 #: front/src/components/audio/Search.vue:19
-#: src/components/instance/Stats.vue:48
-#: front/src/components/library/Albums.vue:120
-#: src/components/library/Library.vue:7
+#: src/components/library/Albums.vue:129
+#: front/src/components/library/Library.vue:7
+#: src/components/library/TagDetail.vue:28
 #: front/src/components/manage/library/ArtistsTable.vue:41
+#: front/src/components/manage/library/TagsTable.vue:43
 #: front/src/views/admin/library/AlbumsList.vue:24
-#: front/src/views/admin/library/ArtistDetail.vue:241
+#: front/src/views/admin/library/ArtistDetail.vue:256
 #: front/src/views/admin/library/Base.vue:11
-#: front/src/views/admin/library/LibraryDetail.vue:219
-#: front/src/views/admin/moderation/AccountsDetail.vue:354
-#: front/src/views/admin/moderation/DomainsDetail.vue:264
+#: front/src/views/admin/library/LibraryDetail.vue:238
+#: front/src/views/admin/library/TagDetail.vue:133
+#: front/src/views/admin/moderation/AccountsDetail.vue:366
+#: front/src/views/admin/moderation/DomainsDetail.vue:301
 msgctxt "*/*/*"
 msgid "Albums"
 msgstr "Álbumes"
@@ -500,60 +564,71 @@ msgstr "Álbumes de este artista"
 #: front/src/components/manage/library/LibrariesTable.vue:13
 #: front/src/components/manage/library/UploadsTable.vue:13
 #: front/src/components/manage/library/UploadsTable.vue:22
+#: front/src/components/manage/moderation/DomainsTable.vue:11
 #: front/src/components/manage/users/InvitationsTable.vue:19
+#: front/src/components/moderation/ReportCategoryDropdown.vue:32
+#: front/src/views/admin/moderation/ReportsList.vue:17
 #: front/src/views/content/libraries/FilesTable.vue:13
 msgctxt "Content/*/Dropdown"
 msgid "All"
 msgstr "Todos"
 
 #: front/src/components/common/ActionTable.vue:59
-#, fuzzy
 msgctxt "Content/*/Paragraph"
 msgid "All %{ count } element selected"
 msgid_plural "All %{ count } elements selected"
-msgstr[0] "%{ count } de %{ total } seleccionado"
-msgstr[1] "%{ count } de %{ total } seleccionados"
+msgstr[0] "%{ count } elemento seleccionado"
+msgstr[1] "Todos os %{ count } elementos seleccionados"
 
 #: front/src/components/auth/Authorize.vue:107
 msgctxt "Head/Authorize/Title"
 msgid "Allow application"
-msgstr ""
+msgstr "Permitir aplicación"
+
+#: front/src/components/About.vue:136
+msgctxt "*/*/*"
+msgid "Allow-list"
+msgstr "Permitir-lista"
+
+#: front/src/components/About.vue:149
+msgctxt "*/*/*"
+msgid "Allowed domains"
+msgstr "Dominios permitidos"
 
 #: front/src/components/library/ImportStatusModal.vue:17
 msgctxt "Popup/Import/Message"
-msgid ""
-"An error occured during upload processing. You will find more information "
-"below."
-msgstr ""
+msgid "An error occurred during upload processing. You will find more information below."
+msgstr "Algo fallou no proceso de subida. Aquí abaixo atopará máis información."
 
 #: front/src/components/playlists/Editor.vue:13
 msgctxt "Content/Playlist/Error message.Title"
-msgid "An error occured while saving your changes"
+msgid "An error occurred while saving your changes"
 msgstr "Algo fallou ao gardar os cambios"
 
 #: front/src/components/federation/FetchButton.vue:21
 msgctxt "Popup/*/Message.Content"
-msgid "An error occured while trying to refresh data:"
-msgstr "Algo fallou ao gardar os cambios"
+msgid "An error occurred while trying to refresh data:"
+msgstr "Algo fallou ao actualizar os datos:"
 
 #: front/src/components/federation/FetchButton.vue:41
 msgctxt "*/*/Error"
-msgid "An HTTP error occured while contacting the remote server"
-msgstr "Algo fallou ao gardar os cambios"
-
-#: front/src/components/auth/Login.vue:10
-msgctxt "Content/Login/Error message/List item"
-msgid ""
-"An unknown error happend, this can mean the server is down or cannot be "
-"reached"
-msgstr ""
-"Aconteceu un fallo descoñecido, esto pode significar que o servidor está "
-"caído ou non pode ser alcanzado"
+msgid "An HTTP error occurred while contacting the remote server"
+msgstr "Houbo un fallo HTTP ao contactar co servidor remoto"
 
 #: front/src/components/library/ImportStatusModal.vue:145
 msgctxt "Popup/Import/Error.Label"
-msgid "An unkwown error occured"
-msgstr ""
+msgid "An unknown error occurred"
+msgstr "Aconteceu un fallo descoñecido"
+
+#: front/src/components/About.vue:123
+msgctxt "*/*/*"
+msgid "Anonymous access"
+msgstr "Acceso anónimo"
+
+#: front/src/components/moderation/ReportModal.vue:54
+msgctxt "Popup/Moderation/Error message"
+msgid "Anonymous reports are disabled, please sign-in to submit a report."
+msgstr "Desactiváronse os informes anónimos, conéctese para enviar un informe."
 
 #: front/src/components/auth/Settings.vue:175
 #: src/components/auth/Settings.vue:225
@@ -564,24 +639,22 @@ msgstr "Acción"
 #: front/src/components/auth/ApplicationEdit.vue:12
 msgctxt "Content/Applications/Title"
 msgid "Application details"
-msgstr ""
+msgstr "Detalles da aplicación"
 
 #: front/src/components/auth/ApplicationEdit.vue:21
 msgctxt "Content/Applications/Label"
 msgid "Application ID"
-msgstr ""
+msgstr "ID da aplicación"
 
 #: front/src/components/auth/ApplicationEdit.vue:16
 msgctxt "Content/Application/Paragraph/"
-msgid ""
-"Application ID and secret are really sensitive values and must be treated "
-"like passwords. Do not share those with anyone else."
-msgstr ""
+msgid "Application ID and secret are really sensitive values and must be treated like passwords. Do not share those with anyone else."
+msgstr "O ID da aplicación e a clave segreda son valores sensibles que debes tratar como contrasinais. Non os compartas con ninguén."
 
 #: front/src/components/auth/ApplicationEdit.vue:25
 msgctxt "Content/Applications/Label"
 msgid "Application secret"
-msgstr ""
+msgstr "Chave segreda da aplicación"
 
 #: front/src/components/library/EditCard.vue:81
 #: front/src/components/notifications/NotificationRow.vue:66
@@ -598,36 +671,34 @@ msgstr "Aprovar"
 #: front/src/components/library/EditCard.vue:21
 msgctxt "Content/Library/Card/Short"
 msgid "Approved and applied"
-msgstr ""
+msgstr "Aprobada e aplicada"
 
 #: front/src/components/auth/Logout.vue:5
 msgctxt "Content/Login/Title"
 msgid "Are you sure you want to log out?"
 msgstr "Está segura de que quere desconectar?"
 
+#: front/src/components/audio/SearchBar.vue:32
+#: src/components/audio/track/Table.vue:8
 #: front/src/components/manage/library/AlbumsTable.vue:40
 #: front/src/components/manage/library/TracksTable.vue:41
-msgctxt "*/*/*"
-msgid "Artist"
-msgstr "Artista"
-
-#: front/src/components/audio/SearchBar.vue:25
-#: src/components/audio/track/Table.vue:8
 #: front/src/components/metadata/Search.vue:130
-#: front/src/views/admin/library/AlbumDetail.vue:108
-#: front/src/views/admin/library/TrackDetail.vue:118
-#: front/src/views/content/libraries/FilesTable.vue:56
+#: src/components/mixins/Report.vue:55
+#: front/src/views/admin/library/AlbumDetail.vue:114
+#: front/src/views/admin/library/TrackDetail.vue:124
+#: front/src/views/content/libraries/FilesTable.vue:56 src/entities.js:12
+#: front/src/components/mixins/Report.vue:56
 msgctxt "*/*/*/Noun"
 msgid "Artist"
 msgstr "Artista"
 
-#: front/src/views/admin/library/ArtistDetail.vue:91
+#: front/src/views/admin/library/ArtistDetail.vue:96
 msgctxt "Content/Moderation/Title"
 msgid "Artist data"
 msgstr "Nome do artista"
 
-#: front/src/components/mixins/Translations.vue:52
-#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/mixins/Translations.vue:62
+#: front/src/components/mixins/Translations.vue:63
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Artist name"
 msgstr "Nome do artista"
@@ -637,36 +708,36 @@ msgctxt "*/Search/Input.Placeholder"
 msgid "Artist, album, track…"
 msgstr "Artista, álbume, canción…"
 
+#: front/src/components/audio/Search.vue:10
+#: src/components/library/Artists.vue:117
+#: front/src/components/library/Library.vue:10
+#: front/src/components/library/TagDetail.vue:19
+#: front/src/components/manage/library/TagsTable.vue:42
 #: front/src/views/admin/library/ArtistsList.vue:24
 #: front/src/views/admin/library/Base.vue:8
-#: front/src/views/admin/library/LibraryDetail.vue:209
-msgctxt "*/*/*"
-msgid "Artists"
-msgstr "Artistas"
-
-#: front/src/components/audio/Search.vue:10
-#: src/components/instance/Stats.vue:42
-#: front/src/components/library/Artists.vue:117
-#: src/components/library/Library.vue:10
-#: front/src/views/admin/moderation/AccountsDetail.vue:346
-#: front/src/views/admin/moderation/DomainsDetail.vue:254
+#: front/src/views/admin/library/LibraryDetail.vue:228
+#: front/src/views/admin/library/TagDetail.vue:123
+#: front/src/views/admin/moderation/AccountsDetail.vue:358
+#: front/src/views/admin/moderation/DomainsDetail.vue:291
 msgctxt "*/*/*/Noun"
 msgid "Artists"
 msgstr "Artistas"
 
 #: front/src/components/favorites/List.vue:34
-#: src/components/library/Albums.vue:25
-#: front/src/components/library/Artists.vue:25
+#: src/components/library/Albums.vue:29
+#: front/src/components/library/Artists.vue:29
 #: src/components/library/Radios.vue:44
 #: front/src/components/manage/library/AlbumsTable.vue:21
 #: front/src/components/manage/library/ArtistsTable.vue:21
 #: front/src/components/manage/library/EditsCardList.vue:39
 #: front/src/components/manage/library/LibrariesTable.vue:30
+#: front/src/components/manage/library/TagsTable.vue:21
 #: front/src/components/manage/library/TracksTable.vue:21
 #: front/src/components/manage/library/UploadsTable.vue:40
 #: front/src/components/manage/moderation/AccountsTable.vue:21
-#: front/src/components/manage/moderation/DomainsTable.vue:19
+#: front/src/components/manage/moderation/DomainsTable.vue:27
 #: front/src/components/manage/users/UsersTable.vue:19
+#: front/src/views/admin/moderation/ReportsList.vue:44
 #: front/src/views/content/libraries/FilesTable.vue:31
 #: front/src/views/playlists/List.vue:27
 msgctxt "Content/Search/Dropdown"
@@ -678,18 +749,24 @@ msgctxt "Content/Signup/Button.Label/Verb"
 msgid "Ask for a password reset"
 msgstr "Solicitar restablecer o contrasinal"
 
-#: front/src/views/admin/library/AlbumDetail.vue:198
-#: front/src/views/admin/library/ArtistDetail.vue:187
-#: front/src/views/admin/library/LibraryDetail.vue:176
-#: front/src/views/admin/library/TrackDetail.vue:250
+#: front/src/components/manage/moderation/ReportCard.vue:72
+msgctxt "Content/Moderation/*"
+msgid "Assigned to"
+msgstr "Asignada a"
+
+#: front/src/views/admin/library/AlbumDetail.vue:214
+#: front/src/views/admin/library/ArtistDetail.vue:202
+#: front/src/views/admin/library/LibraryDetail.vue:195
+#: front/src/views/admin/library/TagDetail.vue:113
+#: front/src/views/admin/library/TrackDetail.vue:266
 #: front/src/views/admin/library/UploadDetail.vue:191
-#: front/src/views/admin/moderation/AccountsDetail.vue:274
-#: front/src/views/admin/moderation/DomainsDetail.vue:202
+#: front/src/views/admin/moderation/AccountsDetail.vue:285
+#: front/src/views/admin/moderation/DomainsDetail.vue:239
 msgctxt "Content/Moderation/Title"
 msgid "Audio content"
 msgstr "Contido de audio"
 
-#: front/src/components/ShortcutsModal.vue:55
+#: front/src/components/ShortcutsModal.vue:92
 msgctxt "Popup/Keyboard shortcuts/Title"
 msgid "Audio player shortcuts"
 msgstr "Atallos do reprodutor de audio"
@@ -697,17 +774,17 @@ msgstr "Atallos do reprodutor de audio"
 #: front/src/components/auth/Authorize.vue:47
 msgctxt "Content/Signup/Button.Label/Verb"
 msgid "Authorize %{ app }"
-msgstr ""
+msgstr "Autorizar %{ app }"
 
 #: front/src/components/auth/Authorize.vue:4
 msgctxt "Content/Auth/Title/Verb"
 msgid "Authorize third-party app"
-msgstr ""
+msgstr "Autorizar app de terceiros"
 
 #: front/src/components/auth/Settings.vue:162
 msgctxt "Content/Settings/Title/Noun"
 msgid "Authorized apps"
-msgstr ""
+msgstr "Apps autorizadas"
 
 #: front/src/components/playlists/PlaylistModal.vue:40
 msgctxt "Popup/Playlist/Title"
@@ -732,9 +809,9 @@ msgid "Back to settings"
 msgstr "Actualizar axustes"
 
 #: front/src/components/library/TrackDetail.vue:48
-#: front/src/components/mixins/Translations.vue:55
+#: front/src/components/mixins/Translations.vue:67
 #: front/src/views/admin/library/UploadDetail.vue:227
-#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:68
 msgctxt "Content/Track/*/Noun"
 msgid "Bitrate"
 msgstr "Taxa de bits"
@@ -747,14 +824,8 @@ msgstr "Bloquear todo"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:112
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Block everything from this account or domain. This will prevent any "
-"interaction with the entity, and purge related content (uploads, libraries, "
-"follows, etc.)"
-msgstr ""
-"Bloquear todo de esta conta ou dominio. Esto evitará calquera interacción "
-"coa entidade, e eliminará o contido relacionado (subidas, bibliotecas, "
-"seguimentos, etc.)"
+msgid "Block everything from this account or domain. This will prevent any interaction with the entity, and purge related content (uploads, libraries, follows, etc.)"
+msgstr "Bloquear todo de esta conta ou dominio. Esto evitará calquera interacción coa entidade, e eliminará o contido relacionado (subidas, bibliotecas, seguimentos, etc.)"
 
 #: front/src/components/Sidebar.vue:18 src/components/library/Library.vue:4
 msgctxt "*/Library/*/Verb"
@@ -766,6 +837,11 @@ msgctxt "Sidebar/Library/List item.Link/Verb"
 msgid "Browse library"
 msgstr "Buscar na biblioteca"
 
+#: front/src/components/Home.vue:132
+msgctxt "Content/Home/Link"
+msgid "Browse public content"
+msgstr "Explorar contido público"
+
 #: front/src/components/library/Albums.vue:4
 msgctxt "Content/Album/Title"
 msgid "Browsing albums"
@@ -796,42 +872,43 @@ msgctxt "Content/Album/Card"
 msgid "By %{ artist }"
 msgstr "De %{ artist }"
 
-#: front/src/views/content/remote/Card.vue:112
+#: front/src/views/content/remote/Card.vue:125
 msgctxt "Popup/Library/Paragraph"
 msgid "By unfollowing this library, you loose access to its content."
 msgstr "Ao deixar de seguir esta biblioteca perderá o acceso ao seu contido."
 
-#: front/src/views/admin/library/AlbumDetail.vue:214
-#: front/src/views/admin/library/ArtistDetail.vue:203
-#: front/src/views/admin/library/LibraryDetail.vue:192
-#: front/src/views/admin/library/TrackDetail.vue:266
+#: front/src/views/admin/library/AlbumDetail.vue:230
+#: front/src/views/admin/library/ArtistDetail.vue:218
+#: front/src/views/admin/library/LibraryDetail.vue:211
+#: front/src/views/admin/library/TrackDetail.vue:282
 #: front/src/views/admin/library/UploadDetail.vue:208
-#: front/src/views/admin/moderation/AccountsDetail.vue:290
-#: front/src/views/admin/moderation/DomainsDetail.vue:217
+#: front/src/views/admin/moderation/AccountsDetail.vue:301
+#: front/src/views/admin/moderation/DomainsDetail.vue:254
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Cached size"
 msgstr "Tamaño da caché"
 
 #: front/src/components/SetInstanceModal.vue:37
 #: front/src/components/common/DangerousButton.vue:17
-#: front/src/components/library/AlbumBase.vue:36
-#: front/src/components/library/ArtistBase.vue:47
-#: front/src/components/library/EditForm.vue:95
-#: front/src/components/library/TrackBase.vue:55
+#: front/src/components/library/AlbumBase.vue:37
+#: front/src/components/library/ArtistBase.vue:48
+#: front/src/components/library/EditForm.vue:107
+#: front/src/components/library/TrackBase.vue:53
 #: front/src/components/library/radios/Filter.vue:53
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:54
 #: front/src/components/moderation/FilterModal.vue:39
+#: front/src/components/moderation/ReportModal.vue:59
 #: front/src/components/playlists/PlaylistModal.vue:26
 #: front/src/components/playlists/PlaylistModal.vue:77
+#: front/src/views/playlists/Detail.vue:62
 msgctxt "*/*/Button.Label/Verb"
 msgid "Cancel"
 msgstr "Cancelar"
 
-#: front/src/views/content/remote/Card.vue:97
-#, fuzzy
+#: front/src/views/content/remote/Card.vue:110
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Cancel follow request"
-msgstr "Peticións de seguimento pendentes"
+msgstr "Cancelar solicitude de seguimento"
 
 #: front/src/components/library/radios/Builder.vue:64
 msgctxt "Content/Radio/Table.Label/Noun (Value is a number of Tracks)"
@@ -843,6 +920,14 @@ msgctxt "Content/Library/Help text"
 msgid "Cannot upload this file, ensure it is not too big"
 msgstr "Fallou a subida, asegúrese de que non é demasiado grande"
 
+#: front/src/components/manage/moderation/ReportCard.vue:30
+#: front/src/components/mixins/Translations.vue:42
+#: front/src/components/moderation/ReportCategoryDropdown.vue:2
+#: front/src/components/mixins/Translations.vue:43
+msgctxt "*/*/*"
+msgid "Category"
+msgstr "Categoría"
+
 #: front/src/components/Footer.vue:21
 msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
 msgid "Change language"
@@ -858,6 +943,11 @@ msgctxt "Content/Settings/Button.Label"
 msgid "Change password"
 msgstr "Cambiar contrasinal"
 
+#: front/src/components/Footer.vue:37
+msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
+msgid "Change theme"
+msgstr "Cambiar decorado"
+
 #: front/src/views/auth/PasswordResetConfirm.vue:62
 msgctxt "*/Signup/Title"
 msgid "Change your password"
@@ -875,41 +965,32 @@ msgstr "Cambios sincronizados co servidor"
 
 #: front/src/components/auth/Settings.vue:71
 msgctxt "Content/Settings/Paragraph'"
-msgid ""
-"Changing your password will also change your Subsonic API password if you "
-"have requested one."
-msgstr ""
-"Ao cambiar o contrasinal tamén cambia o seu contrasinal no API Subsonic si é"
-" que solicitou un."
+msgid "Changing your password will also change your Subsonic API password if you have requested one."
+msgstr "Ao cambiar o contrasinal tamén cambia o seu contrasinal no API Subsonic si é que solicitou un."
 
 #: front/src/components/auth/Settings.vue:98
 msgctxt "Popup/Settings/Paragraph"
 msgid "Changing your password will have the following consequences:"
-msgstr "Cambiar o contrasinal terá as seguintes consecuencias"
+msgstr "Cambiar o contrasinal terá as seguintes consecuencias:"
 
-#: front/src/components/Footer.vue:40
+#: front/src/components/Footer.vue:48
 msgctxt "Footer/*/List item.Link"
 msgid "Chat room"
 msgstr "Sala de conversa"
 
 #: front/src/components/auth/ApplicationForm.vue:24
 msgctxt "Content/Applications/Paragraph/"
-msgid ""
-"Checking the parent \"Read\" or \"Write\" scopes implies access to all the "
-"corresponding children scopes."
-msgstr ""
+msgid "Checking the parent \"Read\" or \"Write\" scopes implies access to all the corresponding children scopes."
+msgstr "Marcando \"Lectura\" e \"Escritura\" para o ámbito superior implica dar acceso aos ámbitos inferiores."
 
 #: front/src/components/SetInstanceModal.vue:2
 msgctxt "Popup/Instance/Title"
 msgid "Choose your instance"
 msgstr "Escolla a súa instancia"
 
-#: front/src/components/manage/users/InvitationForm.vue:37
-msgctxt "Content/Admin/Button.Label/Verb"
-msgid "Clear"
-msgstr "Limpar"
-
 #: front/src/components/library/EditForm.vue:75
+#: front/src/components/library/EditForm.vue:88
+#: front/src/components/manage/users/InvitationForm.vue:37
 msgctxt "Content/Library/Button.Label"
 msgid "Clear"
 msgstr "Limpar"
@@ -920,46 +1001,44 @@ msgctxt "*/Playlist/Button.Label/Verb"
 msgid "Clear playlist"
 msgstr "Limpar lista reprodución"
 
-#: front/src/components/audio/Player.vue:642
+#: front/src/components/ShortcutsModal.vue:144
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Clear queue"
+msgstr "Limpar cola"
+
+#: front/src/components/audio/Player.vue:668
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Clear your queue"
 msgstr "Limpar cola de reprodución"
 
-#: front/src/components/Home.vue:44
-msgctxt "Content/Home/List item/Verb"
-msgid "Click once, listen for hours using built-in radios"
-msgstr ""
-"Pulse unha vez, escoite durante horas utilizando as radios incrustadas"
-
 #: front/src/components/mixins/Translations.vue:21
 #: front/src/components/mixins/Translations.vue:22
 msgctxt "Content/Library/Link.Title"
-msgid ""
-"Click to display more information about the import process for this upload"
-msgstr ""
+msgid "Click to display more information about the import process for this upload"
+msgstr "Preme para mostrar máis información sobre o proceso de importación de esta subida"
 
 #: front/src/components/library/FileUpload.vue:82
 msgctxt "Content/Library/Paragraph/Call to action"
 msgid "Click to select files to upload or drag and drop files or directories"
-msgstr ""
-"Pulse para escoller os ficheiros a subir ou arrastre e solte ficheiros ou "
-"directorios"
+msgstr "Pulse para escoller os ficheiros a subir ou arrastre e solte ficheiros ou directorios"
 
+#: front/src/components/ShortcutsModal.vue:38
 #: front/src/components/federation/FetchButton.vue:85
 #: front/src/components/library/ImportStatusModal.vue:79
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:34
 msgctxt "*/*/Button.Label/Verb"
 msgid "Close"
 msgstr "Pechar"
 
-#: front/src/components/ShortcutsModal.vue:20
-msgctxt "Popup/Keyboard shortcuts/Button.Label/Verb"
-msgid "Close"
-msgstr "Pechar"
-
 #: front/src/components/federation/FetchButton.vue:88
 msgctxt "*/*/Button.Label/Verb"
 msgid "Close and reload page"
-msgstr ""
+msgstr "Pechar e recargar páxina"
+
+#: front/src/components/About.vue:94
+msgctxt "*/*/*/State of registrations"
+msgid "Closed"
+msgstr "Pechado"
 
 #: front/src/components/manage/users/InvitationForm.vue:26
 #: front/src/components/manage/users/InvitationsTable.vue:42
@@ -968,10 +1047,10 @@ msgid "Code"
 msgstr "Código"
 
 #: front/src/components/audio/album/Card.vue:41
-#: front/src/components/audio/artist/Card.vue:33
-msgctxt "Content/*/Card.Link/Verb"
+#: front/src/components/common/CollapseLink.vue:3
+msgctxt "*/*/Button,Label"
 msgid "Collapse"
-msgstr "Pechar"
+msgstr "Pregar"
 
 #: front/src/components/library/radios/Builder.vue:63
 msgctxt "Content/Radio/Table.Label/Verb (Value is a List of Parameters)"
@@ -993,41 +1072,46 @@ msgctxt "Content/Signup/Form.Label"
 msgid "Confirmation code"
 msgstr "Código de confirmación"
 
+#: front/src/components/About.vue:67 src/components/Home.vue:65
+msgctxt "Content/Home/Header/Name"
+msgid "Contact"
+msgstr "Contactar"
+
 #: front/src/components/moderation/FilterModal.vue:90
 msgctxt "*/Moderation/Message"
 msgid "Content filter successfully added"
-msgstr ""
-
-#: front/src/components/mixins/Translations.vue:96
-#: front/src/components/mixins/Translations.vue:97
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Content filters"
-msgstr "Escolla un filtro"
+msgstr "Engadeuse o filtro de contido"
 
 #: front/src/components/auth/Settings.vue:116
+#: front/src/components/mixins/Translations.vue:108
+#: front/src/components/mixins/Translations.vue:109
 msgctxt "Content/Settings/Title/Noun"
 msgid "Content filters"
 msgstr "Escolla un filtro"
 
 #: front/src/components/auth/Settings.vue:119
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"Content filters help you hide content you don't want to see on the service."
-msgstr ""
+msgid "Content filters help you hide content you don't want to see on the service."
+msgstr "Os filtros de contido axúdanche a ocultar contido que non queres ver neste servizo."
 
 #: front/src/components/common/ActionTable.vue:8
 msgctxt "Content/*/Button.Help text.Paragraph"
 msgid "Content have been updated, click refresh to see up-to-date content"
-msgstr ""
-"Actualizouse o contido, pulse actualizar para ver o contido actualizado"
+msgstr "Actualizouse o contido, pulse actualizar para ver o contido actualizado"
 
-#: front/src/components/Footer.vue:48
+#: front/src/components/About.vue:46
+msgctxt "Content/About/Header"
+msgid "Contents"
+msgstr "Contidos"
+
+#: front/src/components/Footer.vue:56
 msgctxt "Footer/*/List item.Link"
 msgid "Contribute"
 msgstr "Contribuír"
 
-#: front/src/components/audio/EmbedWizard.vue:19
+#: front/src/components/audio/EmbedWizard.vue:29
 #: front/src/components/common/CopyInput.vue:8
+#: front/src/components/forms/PasswordInput.vue:43
 msgctxt "*/*/Button.Label/Short, Verb"
 msgid "Copy"
 msgstr "Copiar"
@@ -1040,16 +1124,16 @@ msgstr "Copiar cancións da cola a lista de reprodución"
 #: front/src/components/auth/Authorize.vue:55
 msgctxt "Content/Auth/Paragraph"
 msgid "Copy-paste the following code in the application:"
-msgstr ""
+msgstr "Copiar-pegar o seguinte código na aplicación:"
 
-#: front/src/components/audio/EmbedWizard.vue:21
+#: front/src/components/audio/EmbedWizard.vue:31
 msgctxt "Popup/Embed/Paragraph"
 msgid "Copy/paste this code in your website HTML"
 msgstr "Copiar/pegar este código no HTML da súa web"
 
 #: front/src/components/library/TrackDetail.vue:10
-#: front/src/views/admin/library/TrackDetail.vue:153
-msgctxt "Content/Track/Table.Label/Noun"
+#: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:77
+msgctxt "Content/Track/*/Noun"
 msgid "Copyright"
 msgstr "Copyright"
 
@@ -1063,29 +1147,20 @@ msgctxt "Content/Library/Error message.Title"
 msgid "Could not fetch remote library"
 msgstr "Non se obtivo a biblioteca remota"
 
-#: front/src/components/Home.vue:80
-msgctxt "Content/Home/List item"
-msgid "Covers, lyrics, our goal is to have them all ;)"
-msgstr "Portadas, letras, o noso obxetivo é telas todas ;)"
-
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:58
 msgctxt "Content/Moderation/Card.Button.Label/Verb"
 msgid "Create"
 msgstr "Crear"
 
-#: front/src/components/auth/Signup.vue:4
+#: front/src/views/auth/Signup.vue:4
 msgctxt "Content/Signup/Title"
 msgid "Create a funkwhale account"
 msgstr "Crear unha conta funkwhale"
 
-#: front/src/components/auth/Settings.vue:220
-msgctxt "Content/Settings/Button.Label"
-msgid "Create a new application"
-msgstr "Crear unha nova lista de reprodución"
-
 #: front/src/components/auth/ApplicationNew.vue:8
 #: front/src/components/auth/ApplicationNew.vue:41
-msgctxt "Content/Applications/Title"
+#: front/src/components/auth/Settings.vue:220
+msgctxt "Content/Settings/Button.Label"
 msgid "Create a new application"
 msgstr "Crear unha nova lista de reprodución"
 
@@ -1099,7 +1174,7 @@ msgctxt "Popup/Playlist/Title/Verb"
 msgid "Create a new playlist"
 msgstr "Crear unha nova lista de reprodución"
 
-#: front/src/components/Sidebar.vue:57 src/components/auth/Login.vue:17
+#: front/src/components/Sidebar.vue:57 src/components/auth/LoginForm.vue:15
 msgctxt "*/Signup/Link/Verb"
 msgid "Create an account"
 msgstr "Crear unha conta"
@@ -1114,7 +1189,7 @@ msgctxt "Content/Library/Button.Label/Verb"
 msgid "Create library"
 msgstr "Crear biblioteca"
 
-#: front/src/components/auth/Signup.vue:53
+#: front/src/components/auth/SignupForm.vue:49
 msgctxt "Content/Signup/Button.Label"
 msgid "Create my account"
 msgstr "Crear a miña conta"
@@ -1122,7 +1197,7 @@ msgstr "Crear a miña conta"
 #: front/src/components/auth/Settings.vue:264
 msgctxt "Content/Applications/Paragraph"
 msgid "Create one to integrate Funkwhale with third-party applications."
-msgstr ""
+msgstr "Crear un para integrar Funkwhale con aplicacións de terceiros."
 
 #: front/src/components/playlists/Form.vue:34
 msgctxt "Content/Playlist/Button.Label/Verb"
@@ -1139,11 +1214,13 @@ msgstr "Cree a súa propia radio"
 #: front/src/components/manage/library/AlbumsTable.vue:44
 #: front/src/components/manage/library/ArtistsTable.vue:43
 #: front/src/components/manage/library/LibrariesTable.vue:54
+#: front/src/components/manage/library/TagsTable.vue:45
 #: front/src/components/manage/library/TracksTable.vue:44
 #: front/src/components/manage/library/UploadsTable.vue:66
+#: front/src/components/manage/moderation/ReportCard.vue:43
 #: front/src/components/manage/users/InvitationsTable.vue:40
-#: front/src/components/mixins/Translations.vue:43
-#: front/src/components/mixins/Translations.vue:44
+#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/mixins/Translations.vue:54
 msgctxt "Content/*/*/Noun"
 msgid "Creation date"
 msgstr "Data de creación"
@@ -1153,6 +1230,11 @@ msgctxt "Content/Settings/Title/Noun"
 msgid "Current avatar"
 msgstr "Avatar actual"
 
+#: front/src/components/admin/SettingsGroup.vue:67
+msgctxt "Content/Settings/Title/Noun"
+msgid "Current image"
+msgstr "Imaxe actual"
+
 #: front/src/views/content/libraries/DetailArea.vue:4
 msgctxt "Content/Library/Title"
 msgid "Current library"
@@ -1168,15 +1250,20 @@ msgctxt "Content/Library/Title"
 msgid "Current usage"
 msgstr "Uso actual"
 
+#: front/src/components/Footer.vue:94
+msgctxt "Footer/Settings/Dropdown.Label/Theme name"
+msgid "Dark"
+msgstr "Escuro"
+
 #: front/src/components/federation/FetchButton.vue:53
 msgctxt "*/*/Error"
 msgid "Data returned by the remote server had invalid or missing attributes"
-msgstr ""
+msgstr "Os datos devoltos polo servidor remoto ten valores non válidos ou faltan atributos"
 
 #: front/src/components/federation/FetchButton.vue:17
 msgctxt "Popup/*/Message.Content"
 msgid "Data was refreshed successfully from remote server."
-msgstr ""
+msgstr "Actualizáronse  os datos desde o servidor remoto."
 
 #: front/src/views/content/libraries/Detail.vue:27
 msgctxt "Content/Library/Table.Label"
@@ -1188,7 +1275,7 @@ msgctxt "Popup/Import/Table.Label/Noun"
 msgid "Debug information"
 msgstr "Información da canción"
 
-#: front/src/components/ShortcutsModal.vue:75
+#: front/src/components/ShortcutsModal.vue:128
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Decrease volume"
 msgstr "Baixar volume"
@@ -1200,23 +1287,29 @@ msgstr "Baixar volume"
 #: front/src/components/manage/library/AlbumsTable.vue:188
 #: front/src/components/manage/library/ArtistsTable.vue:178
 #: front/src/components/manage/library/LibrariesTable.vue:205
+#: front/src/components/manage/library/TagsTable.vue:179
 #: front/src/components/manage/library/TracksTable.vue:188
 #: front/src/components/manage/library/UploadsTable.vue:255
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:61
+#: front/src/components/manage/moderation/NotesThread.vue:24
+#: front/src/components/manage/moderation/NotesThread.vue:29
+#: front/src/components/manage/moderation/ReportCard.vue:360
 #: front/src/components/manage/users/InvitationsTable.vue:167
-#: front/src/views/admin/library/AlbumDetail.vue:72
-#: front/src/views/admin/library/AlbumDetail.vue:77
-#: front/src/views/admin/library/ArtistDetail.vue:71
+#: front/src/views/admin/library/AlbumDetail.vue:78
+#: front/src/views/admin/library/AlbumDetail.vue:83
 #: front/src/views/admin/library/ArtistDetail.vue:76
+#: front/src/views/admin/library/ArtistDetail.vue:81
 #: front/src/views/admin/library/LibraryDetail.vue:58
 #: front/src/views/admin/library/LibraryDetail.vue:63
-#: front/src/views/admin/library/TrackDetail.vue:71
-#: front/src/views/admin/library/TrackDetail.vue:76
+#: front/src/views/admin/library/TagDetail.vue:41
+#: front/src/views/admin/library/TagDetail.vue:46
+#: front/src/views/admin/library/TrackDetail.vue:77
+#: front/src/views/admin/library/TrackDetail.vue:82
 #: front/src/views/admin/library/UploadDetail.vue:65
 #: front/src/views/admin/library/UploadDetail.vue:70
 #: front/src/views/content/libraries/FilesTable.vue:222
 #: front/src/views/content/libraries/Form.vue:29
-#: src/views/playlists/Detail.vue:34
+#: src/views/playlists/Detail.vue:42
 msgctxt "*/*/*/Verb"
 msgid "Delete"
 msgstr "Borrar"
@@ -1229,7 +1322,7 @@ msgstr "Borrar lista de reprodución"
 #: front/src/components/auth/Settings.vue:252
 msgctxt "Popup/Settings/Title"
 msgid "Delete application \"%{ application }\"?"
-msgstr ""
+msgstr "Eliminada a aplicación \"%{ application }\"?"
 
 #: front/src/views/content/libraries/Form.vue:39
 msgctxt "Popup/Library/Button.Label/Verb"
@@ -1241,7 +1334,19 @@ msgctxt "Popup/Moderation/Button.Label/Verb"
 msgid "Delete moderation rule"
 msgstr "Borrar regra de moderación"
 
-#: front/src/views/playlists/Detail.vue:39
+#: front/src/components/auth/Settings.vue:274
+#: src/components/auth/Settings.vue:302
+#, fuzzy
+msgctxt "*/*/Button.Label"
+msgid "Delete my account"
+msgstr "Eliminar a miña conta"
+
+#: front/src/components/auth/Settings.vue:297
+msgctxt "*/*/Button.Label"
+msgid "Delete my account…"
+msgstr "Eliminar a miña conta…"
+
+#: front/src/views/playlists/Detail.vue:47
 msgctxt "Popup/Playlist/Button.Label/Verb"
 msgid "Delete playlist"
 msgstr "Borrar lista de reprodución"
@@ -1251,13 +1356,23 @@ msgctxt "Popup/Radio/Button.Label/Verb"
 msgid "Delete radio"
 msgstr "Borrar radio"
 
-#: front/src/views/admin/library/AlbumDetail.vue:73
-#: front/src/views/admin/library/TrackDetail.vue:72
+#: front/src/components/manage/moderation/ReportCard.vue:357
+msgctxt "Content/Moderation/Button/Verb"
+msgid "Delete reported object"
+msgstr "Eliminar obxeto reportado"
+
+#: front/src/components/manage/moderation/ReportCard.vue:358
+msgctxt "Content/Moderation/Popup/Header"
+msgid "Delete reported object?"
+msgstr "Eliminar obxeto reportado?"
+
+#: front/src/views/admin/library/AlbumDetail.vue:79
+#: front/src/views/admin/library/TrackDetail.vue:78
 msgctxt "Popup/Library/Title"
 msgid "Delete this album?"
 msgstr "Eliminar esta biblioteca?"
 
-#: front/src/views/admin/library/ArtistDetail.vue:72
+#: front/src/views/admin/library/ArtistDetail.vue:77
 msgctxt "Popup/Library/Title"
 msgid "Delete this artist?"
 msgstr "Eliminar esta biblioteca?"
@@ -1273,60 +1388,69 @@ msgctxt "Popup/Moderation/Title"
 msgid "Delete this moderation rule?"
 msgstr "Eliminar esta regra de moderación?"
 
+#: front/src/components/manage/moderation/NotesThread.vue:25
+msgctxt "Popup/Moderation/Title"
+msgid "Delete this note?"
+msgstr "Eliminar esta nota?"
+
 #: front/src/components/library/EditCard.vue:94
 msgctxt "Popup/Library/Title"
 msgid "Delete this suggestion?"
 msgstr "Eliminar esta regra de moderación?"
 
+#: front/src/views/admin/library/TagDetail.vue:42
+msgctxt "Popup/Library/Title"
+msgid "Delete this tag?"
+msgstr "Eliminar esta etiqueta?"
+
 #: front/src/views/admin/library/UploadDetail.vue:66
 msgctxt "Popup/Library/Title"
 msgid "Delete this upload?"
 msgstr "Eliminar esta biblioteca?"
 
 #: front/src/components/favorites/List.vue:35
-#: src/components/library/Albums.vue:26
-#: front/src/components/library/Artists.vue:26
+#: src/components/library/Albums.vue:30
+#: front/src/components/library/Artists.vue:30
 #: src/components/library/Radios.vue:47
 #: front/src/components/manage/library/AlbumsTable.vue:22
 #: front/src/components/manage/library/ArtistsTable.vue:22
 #: front/src/components/manage/library/EditsCardList.vue:40
 #: front/src/components/manage/library/LibrariesTable.vue:31
+#: front/src/components/manage/library/TagsTable.vue:22
 #: front/src/components/manage/library/TracksTable.vue:22
 #: front/src/components/manage/library/UploadsTable.vue:41
 #: front/src/components/manage/moderation/AccountsTable.vue:22
-#: front/src/components/manage/moderation/DomainsTable.vue:20
+#: front/src/components/manage/moderation/DomainsTable.vue:28
 #: front/src/components/manage/users/UsersTable.vue:20
+#: front/src/views/admin/moderation/ReportsList.vue:45
 #: front/src/views/content/libraries/FilesTable.vue:32
 #: front/src/views/playlists/List.vue:28
 msgctxt "Content/Search/Dropdown"
 msgid "Descending"
 msgstr "Descendente"
 
-#: front/src/views/admin/library/LibraryDetail.vue:123
-msgctxt "*/*/*/Noun"
-msgid "Description"
-msgstr "Descrición"
+#: front/src/components/manage/moderation/NoteForm.vue:37
+msgctxt "Content/Moderation/Placeholder"
+msgid "Describe what actions have been taken, or any other related updates…"
+msgstr "Describe qué accións foron tomadas, ou calquera outra actualización…"
 
 #: front/src/components/library/radios/Builder.vue:25
+#: front/src/views/admin/library/LibraryDetail.vue:132
 #: front/src/views/content/libraries/Form.vue:14
-msgctxt "Content/*/Input.Label/Noun"
+msgctxt "*/*/*/Noun"
 msgid "Description"
 msgstr "Descrición"
 
 #: front/src/views/content/libraries/Card.vue:48
-#: src/views/content/remote/Card.vue:54
+#: src/views/content/remote/Card.vue:67
 msgctxt "Content/Library/Card.Button.Label/Noun"
 msgid "Details"
 msgstr "Detalles"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:491
+#: front/src/views/admin/moderation/AccountsDetail.vue:511
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Determine how much content the user can upload. Leave empty to use the "
-"default value of the instance."
-msgstr ""
-"Indique canto contido pode subir a usuaria. Deixe baldeiro para utilizar o "
-"valor por omisión da instancia."
+msgid "Determine how much content the user can upload. Leave empty to use the default value of the instance."
+msgstr "Indique canto contido pode subir a usuaria. Deixe baldeiro para utilizar o valor por omisión da instancia."
 
 #: front/src/components/mixins/Translations.vue:8
 #: front/src/components/mixins/Translations.vue:9
@@ -1335,38 +1459,50 @@ msgid "Determine the visibility level of your activity"
 msgstr "Indique o nivel de visibilidade da súa actividade"
 
 #: front/src/components/auth/Settings.vue:104
-#: front/src/components/auth/SubsonicTokenForm.vue:51
+#: front/src/components/auth/SubsonicTokenForm.vue:56
 msgctxt "Popup/Settings/Button.Label"
 msgid "Disable access"
 msgstr "Desactivar o acceso"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:48
+#: front/src/components/auth/SubsonicTokenForm.vue:53
 msgctxt "Content/Settings/Button.Label/Verb"
 msgid "Disable Subsonic access"
 msgstr "Desactivar o acceso Subsonic"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:49
+#: front/src/components/auth/SubsonicTokenForm.vue:54
 msgctxt "Popup/Settings/Title"
 msgid "Disable Subsonic API access?"
 msgstr "Desactivar o acceso a API Subsonic?"
 
+#: front/src/components/About.vue:118 src/components/About.vue:131
+#: front/src/components/About.vue:144
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:18
 #: front/src/views/admin/moderation/AccountsDetail.vue:157
 #: front/src/views/admin/moderation/AccountsDetail.vue:161
-msgctxt "*/*/*"
+msgctxt "*/*/*/State of feature"
 msgid "Disabled"
 msgstr "Desactivado"
 
-#: front/src/views/admin/library/TrackDetail.vue:145
+#: front/src/views/admin/library/TrackDetail.vue:151
 msgctxt "*/*/*/Noun"
 msgid "Disc number"
-msgstr ""
+msgstr "Número de disco"
+
+#: front/src/components/Home.vue:157
+msgctxt "Content/Home/Link"
+msgid "Discover everything you need to know about Funkwhale and its features"
+msgstr "Descubre todo o que precisas saber sobre Funkwhale e as súas características"
 
 #: front/src/components/auth/SubsonicTokenForm.vue:13
 msgctxt "Content/Settings/Link"
 msgid "Discover how to use Funkwhale from other apps"
 msgstr "Descubra cómo utilizar Funkwhale desde outras apps"
 
+#: front/src/views/Notifications.vue:45
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Discover other ways to help"
+msgstr "Descubre outros xeitos de axudar"
+
 #: front/src/views/admin/moderation/AccountsDetail.vue:132
 msgctxt "'Content/*/*/Noun'"
 msgid "Display name"
@@ -1379,12 +1515,13 @@ msgstr "Mostrar públicamente"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:122
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Do not download any media file (audio, album cover, account avatar…) from "
-"this account or domain. This will purge existing content as well."
-msgstr ""
-"Non baixar ningún ficheiro de medios (audio, portada, avatar da conta...) de"
-" esta conta ou dominio. Esto eliminará tamén o contido existente."
+msgid "Do not download any media file (audio, album cover, account avatar…) from this account or domain. This will purge existing content as well."
+msgstr "Non baixar ningún ficheiro de medios (audio, portada, avatar da conta…) de esta conta ou dominio. Esto eliminará tamén o contido existente."
+
+#: front/src/views/Notifications.vue:36
+msgctxt "Content/Notifications/Header"
+msgid "Do you like Funkwhale?"
+msgstr "Gozas de Funkwhale?"
 
 #: front/src/components/playlists/Editor.vue:51
 msgctxt "Popup/Playlist/Title"
@@ -1396,7 +1533,7 @@ msgctxt "Modal/*/Title"
 msgid "Do you want to confirm this action?"
 msgstr "Quere confirmar esta acción?"
 
-#: front/src/views/playlists/Detail.vue:35
+#: front/src/views/playlists/Detail.vue:43
 msgctxt "Popup/Playlist/Title/Call to action"
 msgid "Do you want to delete the playlist \"%{ playlist }\"?"
 msgstr "Quere eliminar esta lista de reprodución \"%{ playlist }\"?"
@@ -1406,20 +1543,29 @@ msgctxt "Popup/Radio/Title"
 msgid "Do you want to delete the radio \"%{ radio }\"?"
 msgstr "Quere eliminar a radio \"%{ radio }\"?"
 
+#: front/src/components/auth/Settings.vue:298
+msgctxt "Popup/Settings/Title"
+msgid "Do you want to delete your account?"
+msgstr "Desexas eliminar a túa conta?"
+
 #: front/src/components/moderation/FilterModal.vue:3
 msgctxt "Popup/Moderation/Title/Verb"
 msgid "Do you want to hide content from artist \"%{ name }\"?"
 msgstr "Quere eliminar a radio \"%{ radio }\"?"
 
 #: front/src/components/common/ActionTable.vue:37
-#, fuzzy
 msgctxt "Modal/*/Title"
 msgid "Do you want to launch %{ action } on %{ count } element?"
 msgid_plural "Do you want to launch %{ action } on %{ count } elements?"
 msgstr[0] "Quere executar %{ action } sobre %{ count } elemento?"
 msgstr[1] "Quere executar %{ action } sobre %{ count } elementos?"
 
-#: front/src/components/Sidebar.vue:118
+#: front/src/components/moderation/ReportModal.vue:3
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Do you want to report this object?"
+msgstr "Quere informar sobre este obxeto?"
+
+#: front/src/components/Sidebar.vue:122
 msgctxt "Sidebar/Queue/Message"
 msgid "Do you want to restore your previous queue?"
 msgstr "Quere restaurar a súa cola anterior?"
@@ -1435,26 +1581,33 @@ msgstr "Documentación"
 #: front/src/components/manage/library/TracksTable.vue:42
 #: front/src/components/manage/library/UploadsTable.vue:62
 #: front/src/components/manage/moderation/AccountsTable.vue:40
-#: front/src/components/mixins/Translations.vue:60
-#: front/src/views/admin/library/AlbumDetail.vue:118
-#: front/src/views/admin/library/ArtistDetail.vue:107
-#: front/src/views/admin/library/LibraryDetail.vue:114
-#: front/src/views/admin/library/TrackDetail.vue:170
+#: front/src/components/manage/moderation/ReportCard.vue:169
+#: front/src/components/manage/moderation/ReportCard.vue:179
+#: front/src/components/mixins/Translations.vue:72
+#: front/src/views/admin/library/AlbumDetail.vue:124
+#: front/src/views/admin/library/ArtistDetail.vue:112
+#: front/src/views/admin/library/LibraryDetail.vue:123
+#: front/src/views/admin/library/TrackDetail.vue:176
 #: front/src/views/admin/library/UploadDetail.vue:121
 #: front/src/views/admin/moderation/AccountsDetail.vue:123
-#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/mixins/Translations.vue:73
 msgctxt "Content/Moderation/*/Noun"
 msgid "Domain"
 msgstr "Dominio"
 
-#: front/src/views/admin/moderation/Base.vue:5
+#: front/src/views/admin/moderation/Base.vue:8
 #: front/src/views/admin/moderation/DomainsList.vue:3
-#: front/src/views/admin/moderation/DomainsList.vue:48
+#: front/src/views/admin/moderation/DomainsList.vue:54
 msgctxt "*/Moderation/*/Noun"
 msgid "Domains"
 msgstr "Dominios"
 
-#: front/src/components/library/TrackBase.vue:39
+#: front/src/views/Notifications.vue:42
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Donate"
+msgstr "Doar"
+
+#: front/src/components/library/TrackBase.vue:37
 #: front/src/views/admin/library/UploadDetail.vue:58
 msgctxt "Content/Track/Link/Verb"
 msgid "Download"
@@ -1467,10 +1620,10 @@ msgstr "Arrastre e solte filas para reordenar as cancións na lista"
 
 #: front/src/components/audio/track/Table.vue:10
 #: front/src/components/library/TrackDetail.vue:30
-#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:68
 #: front/src/views/admin/library/UploadDetail.vue:238
 #: front/src/views/content/libraries/FilesTable.vue:60
-#: front/src/components/mixins/Translations.vue:57
+#: front/src/components/mixins/Translations.vue:69
 msgctxt "Content/*/*"
 msgid "Duration"
 msgstr "Duración"
@@ -1480,41 +1633,27 @@ msgctxt "Content/Signup/Message"
 msgid "E-mail address confirmed"
 msgstr "Enderezo correo-e confirmado"
 
-#: front/src/components/Home.vue:88
-msgctxt "Content/Home/Title"
-msgid "Easy to use"
-msgstr "Fácil de utilizar"
-
-#: front/src/components/library/AlbumBase.vue:68
-#: front/src/components/library/ArtistBase.vue:79
-#: front/src/components/library/TrackBase.vue:87
+#: front/src/components/auth/Settings.vue:246
+#: src/components/library/AlbumBase.vue:73
+#: front/src/components/library/ArtistBase.vue:84
+#: front/src/components/library/TrackBase.vue:89
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:45
 #: front/src/components/radios/Card.vue:23
-#: src/views/admin/library/AlbumDetail.vue:65
-#: front/src/views/admin/library/ArtistDetail.vue:64
-#: front/src/views/admin/library/TrackDetail.vue:64
+#: src/views/admin/library/AlbumDetail.vue:71
+#: front/src/views/admin/library/ArtistDetail.vue:69
+#: front/src/views/admin/library/TrackDetail.vue:70
 #: front/src/views/content/libraries/Detail.vue:9
 #: src/views/playlists/Detail.vue:31
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Edit"
 msgstr "Editar"
 
-#: front/src/components/auth/Settings.vue:246
-msgctxt "Content/Settings/Button.Label"
-msgid "Edit"
-msgstr "Editar"
-
 #: front/src/components/auth/ApplicationEdit.vue:30
 #: front/src/components/auth/ApplicationEdit.vue:75
 msgctxt "Content/Applications/Title"
 msgid "Edit application"
 msgstr "Fallo mentres se aplicaba a acción"
 
-#: front/src/components/About.vue:22
-msgctxt "Content/Settings/Button.Label/Verb"
-msgid "Edit instance info"
-msgstr "Editar a info da instancia"
-
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:3
 msgctxt "Content/Moderation/Card.Title/Verb"
 msgid "Edit moderation rule"
@@ -1535,23 +1674,20 @@ msgctxt "Content/*/Title"
 msgid "Edit this track"
 msgstr "Reproducir esta canción"
 
-#: front/src/views/admin/library/AlbumDetail.vue:182
-#: front/src/views/admin/library/ArtistDetail.vue:171
+#: front/src/components/mixins/Translations.vue:116
+#: front/src/views/admin/library/AlbumDetail.vue:198
+#: front/src/views/admin/library/ArtistDetail.vue:186
 #: front/src/views/admin/library/Base.vue:5
 #: src/views/admin/library/EditsList.vue:24
-#: front/src/views/admin/library/TrackDetail.vue:234
+#: front/src/views/admin/library/TrackDetail.vue:250
+#: front/src/components/mixins/Translations.vue:117
 msgctxt "*/Admin/*/Noun"
 msgid "Edits"
 msgstr "Editar"
 
-#: front/src/components/mixins/Translations.vue:104
-#: front/src/components/mixins/Translations.vue:105
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Edits"
-msgstr "Editar"
-
-#: front/src/components/auth/Signup.vue:30
+#: front/src/components/auth/SignupForm.vue:26
 #: front/src/components/manage/users/UsersTable.vue:38
+#: front/src/components/moderation/ReportModal.vue:31
 msgctxt "Content/*/*/Noun"
 msgid "Email"
 msgstr "Correo-e"
@@ -1561,50 +1697,58 @@ msgctxt "Content/*/*"
 msgid "Email address"
 msgstr "Enderezo de correo"
 
-#: front/src/components/library/AlbumBase.vue:53
-#: front/src/components/library/ArtistBase.vue:64
-#: front/src/components/library/TrackBase.vue:72
+#: front/src/components/library/AlbumBase.vue:54
+#: front/src/components/library/ArtistBase.vue:65
+#: front/src/components/library/TrackBase.vue:70
+#: src/views/playlists/Detail.vue:38
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Embed"
 msgstr "Incrustado"
 
-#: front/src/components/audio/EmbedWizard.vue:20
+#: front/src/components/audio/EmbedWizard.vue:30
 msgctxt "Popup/Embed/Input.Label/Noun"
 msgid "Embed code"
 msgstr "Código incrustado"
 
-#: front/src/components/library/AlbumBase.vue:26
+#: front/src/components/library/AlbumBase.vue:27
 msgctxt "Popup/Album/Title/Verb"
 msgid "Embed this album on your website"
 msgstr "Incruste este álbume no seu sitio web"
 
-#: front/src/components/library/ArtistBase.vue:37
+#: front/src/components/library/ArtistBase.vue:38
 msgctxt "Popup/Artist/Title/Verb"
 msgid "Embed this artist work on your website"
 msgstr "Incruste esta canción no seu sitio web"
 
-#: front/src/components/library/TrackBase.vue:45
+#: front/src/views/playlists/Detail.vue:52
+msgctxt "Popup/Album/Title/Verb"
+msgid "Embed this playlist on your website"
+msgstr "Incruste esta lista no seu sitio web"
+
+#: front/src/components/library/TrackBase.vue:43
 msgctxt "Popup/Track/Title"
 msgid "Embed this track on your website"
 msgstr "Incruste esta canción no seu sitio web"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:259
-#: front/src/views/admin/moderation/DomainsDetail.vue:187
+#: front/src/views/admin/moderation/AccountsDetail.vue:260
+#: front/src/views/admin/moderation/DomainsDetail.vue:224
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Emitted library follows"
 msgstr "Seguimentos da biblioteca emitidos"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:243
-#: front/src/views/admin/moderation/DomainsDetail.vue:171
+#: front/src/views/admin/moderation/AccountsDetail.vue:244
+#: front/src/views/admin/moderation/DomainsDetail.vue:208
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Emitted messages"
 msgstr "Mensaxes emitidas"
 
+#: front/src/components/About.vue:114 src/components/About.vue:127
+#: front/src/components/About.vue:140
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:8
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:17
 #: front/src/views/admin/moderation/AccountsDetail.vue:156
 #: front/src/views/admin/moderation/AccountsDetail.vue:160
-msgctxt "*/*/*"
+msgctxt "*/*/*/State of feature"
 msgid "Enabled"
 msgstr "Activado"
 
@@ -1623,10 +1767,10 @@ msgctxt "Content/Search/Input.Placeholder"
 msgid "Enter a radio name…"
 msgstr "Introduza un nome de radio…"
 
-#: front/src/components/library/Albums.vue:119
+#: front/src/components/library/Albums.vue:128
 msgctxt "Content/Search/Input.Placeholder"
-msgid "Enter album title..."
-msgstr ""
+msgid "Enter album title…"
+msgstr "Escribir título de álbume…"
 
 #: front/src/components/library/Artists.vue:116
 msgctxt "Content/Search/Input.Placeholder"
@@ -1640,15 +1784,16 @@ msgstr "Nome de lista de reprodución…"
 
 #: front/src/views/auth/PasswordReset.vue:54
 msgctxt "Content/Signup/Input.Placeholder"
-msgid "Enter the email address binded to your account"
+msgid "Enter the email address linked to your account"
 msgstr "Introducir o enderezo de correo ligado a súa conta"
 
-#: front/src/components/auth/Signup.vue:103
+#: front/src/components/auth/SignupForm.vue:96
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your email"
 msgstr "Introduza o seu correo-e"
 
-#: front/src/components/auth/Signup.vue:98 src/components/auth/Signup.vue:100
+#: front/src/components/auth/SignupForm.vue:91
+#: src/components/auth/SignupForm.vue:93
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your invitation code (case insensitive)"
 msgstr "Introduza o seu código de convite (dif. maiúsculas)"
@@ -1658,12 +1803,12 @@ msgctxt "Content/Library/Input.Placeholder/Verb"
 msgid "Enter your search query…"
 msgstr "Introduza a consulta de busca…"
 
-#: front/src/components/auth/Signup.vue:102
+#: front/src/components/auth/SignupForm.vue:95
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your username"
 msgstr "Introduza o nome de usuaria"
 
-#: front/src/components/auth/Login.vue:83
+#: front/src/components/auth/LoginForm.vue:81
 msgctxt "Content/Login/Input.Placeholder"
 msgid "Enter your username or email"
 msgstr "Introduza o nome de usuaria ou correo-e"
@@ -1680,7 +1825,7 @@ msgctxt "Popup/Import/Table.Label/Noun"
 msgid "Error detail"
 msgstr "Fallo ao informar"
 
-#: front/src/views/admin/Settings.vue:87
+#: front/src/views/admin/Settings.vue:89
 msgctxt "Content/Admin/Menu"
 msgid "Error reporting"
 msgstr "Fallo ao informar"
@@ -1736,16 +1881,12 @@ msgctxt "Popup/Moderation/Error message"
 msgid "Error while fetching application data"
 msgstr "Fallo ao crear o convite"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:118
+#: front/src/views/admin/moderation/DomainsDetail.vue:155
 msgctxt "Content/Moderation/Table"
 msgid "Error while fetching node info"
 msgstr "Fallo ao obter info da instancia"
 
 #: front/src/components/admin/SettingsGroup.vue:5
-msgctxt "Content/Settings/Error message.Title"
-msgid "Error while saving settings"
-msgstr "Fallo ao gardar os axustes"
-
 #: front/src/components/federation/FetchButton.vue:73
 msgctxt "Content/*/Error message.Title"
 msgid "Error while saving settings"
@@ -1756,6 +1897,16 @@ msgctxt "Content/Library/Error message.Title"
 msgid "Error while submitting edit"
 msgstr "Fallo ao gardar os axustes"
 
+#: front/src/components/manage/moderation/NoteForm.vue:3
+msgctxt "Content/Moderation/Error message.Title"
+msgid "Error while submitting note"
+msgstr "Fallo ao enviar a nota"
+
+#: front/src/components/moderation/ReportModal.vue:11
+msgctxt "Popup/Moderation/Error message"
+msgid "Error while submitting report"
+msgstr "Fallo ao enviar o informe"
+
 #: front/src/components/mixins/Translations.vue:32
 #: front/src/components/mixins/Translations.vue:33
 msgctxt "Content/Library/Table/Short"
@@ -1790,9 +1941,14 @@ msgctxt "Content/Radio/Table.Label/Verb"
 msgid "Exclude"
 msgstr "Excluír"
 
+#: front/src/components/common/CollapseLink.vue:2
+msgctxt "*/*/Button,Label"
+msgid "Expand"
+msgstr "Despregar"
+
 #: front/src/components/manage/users/InvitationsTable.vue:41
-#: front/src/components/mixins/Translations.vue:49
-#: front/src/components/mixins/Translations.vue:50
+#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:60
 msgctxt "Content/Admin/Table.Label/Noun"
 msgid "Expiration date"
 msgstr "Data de caducidade"
@@ -1809,16 +1965,8 @@ msgstr "Caducado/utilizado"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:110
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Explain why you're applying this policy. Depending on your instance "
-"configuration, this will help you remember why you acted on this account or "
-"domain, and may be displayed publicly to help users understand what "
-"moderation rules are in place."
-msgstr ""
-"Explicar por que aplica esta política a todas as instancias. Dependendo da "
-"configuración da súa instancia esto axudaralle a lembrar por que actuou "
-"sobre esta conta ou dominio, e pode ser mostrado públicamente para que as "
-"usuarias entendan cales son as regras de moderación que se aplican."
+msgid "Explain why you're applying this policy. Depending on your instance configuration, this will help you remember why you acted on this account or domain, and may be displayed publicly to help users understand what moderation rules are in place."
+msgstr "Explicar por que aplica esta política a todas as instancias. Dependendo da configuración da súa instancia esto axudaralle a lembrar por que actuou sobre esta conta ou dominio, e pode ser mostrado públicamente para que as usuarias entendan cales son as regras de moderación que se aplican."
 
 #: front/src/components/manage/library/UploadsTable.vue:25
 #: front/src/views/content/libraries/FilesTable.vue:16
@@ -1826,31 +1974,27 @@ msgctxt "Content/Library/Dropdown"
 msgid "Failed"
 msgstr "Fallou"
 
-#: front/src/views/content/remote/Card.vue:62
+#: front/src/views/content/remote/Card.vue:75
 msgctxt "Content/Library/Card.List item/Noun"
 msgid "Failed tracks:"
 msgstr "Cancións fallidas:"
 
-#: front/src/views/admin/library/AlbumDetail.vue:165
-#: front/src/views/admin/library/ArtistDetail.vue:154
-#: front/src/views/admin/library/TrackDetail.vue:217
+#: front/src/views/admin/library/AlbumDetail.vue:171
+#: front/src/views/admin/library/ArtistDetail.vue:159
+#: front/src/views/admin/library/TrackDetail.vue:223
 msgctxt "*/*/*"
 msgid "Favorited tracks"
-msgstr "Cancións fallidas:"
+msgstr "Cancións favoritas"
 
 #: front/src/components/Sidebar.vue:66
+#: src/components/mixins/Translations.vue:88
+#: front/src/components/mixins/Translations.vue:89
 msgctxt "Sidebar/Favorites/List item.Link/Noun"
 msgid "Favorites"
 msgstr "Favoritas"
 
-#: front/src/components/mixins/Translations.vue:76
-#: front/src/components/mixins/Translations.vue:77
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Favorites"
-msgstr "Favoritas"
-
-#: front/src/views/admin/Settings.vue:84
-msgctxt "Content/Admin/Menu"
+#: front/src/components/About.vue:110 src/views/admin/Settings.vue:84
+msgctxt "*/*/*"
 msgid "Federation"
 msgstr "Federación"
 
@@ -1862,7 +2006,7 @@ msgstr "Federación"
 #: front/src/components/library/EditCard.vue:45
 msgctxt "Content/Library/Card.Table.Header/Short"
 msgid "Field"
-msgstr ""
+msgstr "Campo"
 
 #: front/src/components/library/FileUpload.vue:93
 msgctxt "Content/Library/Table.Label"
@@ -1874,6 +2018,11 @@ msgctxt "Content/Radio/Table.Label/Noun"
 msgid "Filter name"
 msgstr "Nome do filtro"
 
+#: front/src/components/Home.vue:118
+msgctxt "Content/Home/Link"
+msgid "Find another pod"
+msgstr "Atopar outra instancia"
+
 #: front/src/components/manage/library/UploadsTable.vue:26
 #: front/src/components/mixins/Translations.vue:36
 #: front/src/views/content/libraries/FilesTable.vue:17
@@ -1883,25 +2032,31 @@ msgid "Finished"
 msgstr "Rematado"
 
 #: front/src/components/manage/moderation/AccountsTable.vue:42
-#: front/src/components/manage/moderation/DomainsTable.vue:41
-#: front/src/views/admin/library/AlbumDetail.vue:149
-#: front/src/views/admin/library/ArtistDetail.vue:138
-#: front/src/views/admin/library/LibraryDetail.vue:153
-#: front/src/views/admin/library/TrackDetail.vue:201
+#: front/src/components/manage/moderation/DomainsTable.vue:49
+#: front/src/views/admin/library/AlbumDetail.vue:155
+#: front/src/views/admin/library/ArtistDetail.vue:143
+#: front/src/views/admin/library/LibraryDetail.vue:162
+#: front/src/views/admin/library/TagDetail.vue:98
+#: front/src/views/admin/library/TrackDetail.vue:207
 #: front/src/views/admin/library/UploadDetail.vue:167
-#: front/src/views/admin/moderation/AccountsDetail.vue:235
-#: front/src/views/admin/moderation/DomainsDetail.vue:151
+#: front/src/views/admin/moderation/AccountsDetail.vue:236
+#: front/src/views/admin/moderation/DomainsDetail.vue:188
 msgctxt "Content/Moderation/Table.Label/Short (Value is a date)"
 msgid "First seen"
 msgstr "Visto primeiro"
 
-#: front/src/components/mixins/Translations.vue:46
-#: front/src/components/mixins/Translations.vue:47
+#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:57
 msgctxt "Content/Moderation/Dropdown/Noun"
 msgid "First seen date"
 msgstr "Data da primeira visión"
 
-#: front/src/views/content/remote/Card.vue:87
+#: front/src/components/ShortcutsModal.vue:64
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Focus searchbar"
+msgstr "Foco na caixa de busca"
+
+#: front/src/views/content/remote/Card.vue:100
 msgctxt "Content/Library/Card.Button.Label/Verb"
 msgid "Follow"
 msgstr "Seguir"
@@ -1911,41 +2066,35 @@ msgctxt "Content/Library/Title/Verb"
 msgid "Follow remote libraries"
 msgstr "Seguir bibliotecas remotas"
 
-#: front/src/views/content/remote/Card.vue:92
+#: front/src/views/content/remote/Card.vue:105
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Follow request pending approval"
 msgstr "Solicitude de seguimento pendente de aprobación"
 
-#: front/src/components/mixins/Translations.vue:64
-#: front/src/views/admin/library/LibraryDetail.vue:161
+#: front/src/components/manage/library/LibrariesTable.vue:53
+#: front/src/components/mixins/Translations.vue:76
+#: front/src/views/admin/library/LibraryDetail.vue:170
 #: front/src/views/content/libraries/Detail.vue:7
-#: front/src/components/mixins/Translations.vue:65
+#: front/src/components/mixins/Translations.vue:77
 msgctxt "Content/Federation/*/Noun"
 msgid "Followers"
 msgstr "Seguidoras"
 
-#: front/src/components/manage/library/LibrariesTable.vue:53
-msgctxt "Content/*/*/Noun"
-msgid "Followers"
-msgstr "Seguidoras"
-
-#: front/src/views/content/remote/Card.vue:103
+#: front/src/views/content/remote/Card.vue:116
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Following"
 msgstr "Seguindo"
 
-#: front/src/components/mixins/Translations.vue:84
-#: front/src/components/mixins/Translations.vue:85
+#: front/src/components/mixins/Translations.vue:96
+#: front/src/components/mixins/Translations.vue:97
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Follows"
 msgstr "Seguir"
 
-#: front/src/components/library/TrackBase.vue:17
+#: front/src/components/library/TrackBase.vue:245
 msgctxt "Content/Track/Paragraph"
-msgid ""
-"From album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> by <a"
-" class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
-msgstr ""
+msgid "From album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgstr "Do álbume <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> por <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
 
 #: front/src/components/auth/Authorize.vue:28
 msgctxt "Content/Auth/Label/Noun"
@@ -1954,38 +2103,20 @@ msgstr "Desactivar o acceso"
 
 #: front/src/components/auth/SubsonicTokenForm.vue:7
 msgctxt "Content/Settings/Paragraph'"
-msgid ""
-"Funkwhale is compatible with other music players that support the Subsonic "
-"API."
-msgstr ""
-"Funkwhale é compatible con outros reprodutores de música compatibles coa API"
-" Subsonic."
+msgid "Funkwhale is compatible with other music players that support the Subsonic API."
+msgstr "Funkwhale é compatible con outros reprodutores de música compatibles coa API Subsonic."
 
-#: front/src/components/Home.vue:90
-msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale is dead simple to use."
-msgstr "Funckwhale élle ben doado de utilizar."
-
-#: front/src/components/Home.vue:39
-msgctxt "Content/Home/Paragraph"
-msgid ""
-"Funkwhale is designed to make it easy to listen to music you like, or to "
-"discover new artists."
-msgstr ""
-"Funkwhale está deseñado para escoitar facilmente a música que lle gusta ou "
-"descubrir novos artistas."
-
-#: front/src/components/Home.vue:111
+#: front/src/components/Home.vue:88
 msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale is free and gives you control on your music."
-msgstr "Funkwhale é gratuíto e dalle o control sobre a súa música."
+msgid "Funkwhale is free and developped by a friendly community of volunteers."
+msgstr "Funkwhale é libre e desenvolto por una comunidade amigable de voluntarias."
 
-#: front/src/components/Home.vue:66
-msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale takes care of handling your music"
-msgstr "Funkwhale ocúpase de xestionar a súa música"
+#: front/src/components/About.vue:78
+msgctxt "*/*/*"
+msgid "Funkwhale version"
+msgstr "Versión de Funkwhale"
 
-#: front/src/components/ShortcutsModal.vue:38
+#: front/src/components/ShortcutsModal.vue:56
 msgctxt "Popup/Keyboard shortcuts/Title"
 msgid "General shortcuts"
 msgstr "Atallos xerais"
@@ -1995,35 +2126,17 @@ msgctxt "Content/Admin/Button.Label/Verb"
 msgid "Get a new invitation"
 msgstr "Obter un novo convite"
 
-#: front/src/components/Home.vue:13
-msgctxt "Content/Home/Button.Label/Verb"
-msgid "Get me to the library"
-msgstr "Lévame a biblioteca"
-
-#: front/src/components/Home.vue:70
-msgctxt "Content/Home/List item/Verb"
-msgid ""
-"Get quality metadata about your music thanks to <a href=\"%{ url }\" "
-"target=\"_blank\">MusicBrainz</a>"
-msgstr ""
-"Obteña metadatos de calidade sobre a súa música grazas a <a href=\"%{ url "
-"}\" target=\"_blank\">MusicBrainz</a>"
-
 #: front/src/views/content/Home.vue:12 src/views/content/Home.vue:19
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Get started"
 msgstr "Comezando"
 
-#: front/src/components/Footer.vue:37
+#: front/src/components/Footer.vue:45
+#: src/components/library/ImportStatusModal.vue:45
 msgctxt "Footer/*/Link"
 msgid "Getting help"
 msgstr "Obter axuda"
 
-#: front/src/components/library/ImportStatusModal.vue:45
-msgctxt "Popup/Import/Table.Label/Noun"
-msgid "Getting help"
-msgstr "Obter axuda"
-
 #: front/src/components/common/ActionTable.vue:35
 #: front/src/components/common/ActionTable.vue:56
 msgctxt "Content/*/Button.Label/Short, Verb"
@@ -2035,11 +2148,21 @@ msgctxt "Content/*/Button.Label/Verb"
 msgid "Go to home page"
 msgstr "Ir ao inicio"
 
+#: front/src/views/Notifications.vue:27 src/views/Notifications.vue:61
+msgctxt "Content/Notifications/Button.Label"
+msgid "Got it!"
+msgstr "Listo!"
+
 #: front/src/components/auth/Settings.vue:128
 msgctxt "Content/Settings/Title"
 msgid "Hidden artists"
 msgstr "Buscando artistas"
 
+#: front/src/components/About.vue:155
+msgctxt "*/*/*/Verb"
+msgid "Hide"
+msgstr "Ocultar"
+
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:114
 msgctxt "Content/Moderation/Help text"
 msgid "Hide account or domain content, except from followers."
@@ -2050,52 +2173,41 @@ msgctxt "Popup/*/Button.Label"
 msgid "Hide content"
 msgstr "Engadir contido"
 
-#: front/src/components/audio/PlayButton.vue:26
+#: front/src/components/audio/PlayButton.vue:31
 msgctxt "*/Queue/Dropdown/Button/Label/Short"
 msgid "Hide content from this artist"
-msgstr ""
+msgstr "Ocultar contido de este artista"
 
-#: front/src/components/audio/Player.vue:643
+#: front/src/components/audio/Player.vue:669
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Hide content from this artist…"
-msgstr ""
+msgstr "Ocultar contido de este artista…"
 
 #: front/src/components/library/Home.vue:65
 msgctxt "Head/Home/Title"
 msgid "Home"
 msgstr "Inicio"
 
-#: front/src/components/instance/Stats.vue:36
-msgctxt "Content/About/Paragraph/Unit"
-msgid "Hours of music"
-msgstr "Horas de música"
-
 #: front/src/components/auth/SubsonicTokenForm.vue:10
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"However, accessing Funkwhale from those clients require a separate password "
-"you can set below."
-msgstr ""
-"Porén, o acceso a Funkwhale desde estos outros clientes precisa un "
-"contrasinal separado que pode establecer aquí abaixo."
+msgid "However, accessing Funkwhale from those clients require a separate password you can set below."
+msgstr "Porén, o acceso a Funkwhale desde estos outros clientes precisa un contrasinal separado que pode establecer aquí abaixo."
 
 #: front/src/views/auth/PasswordResetConfirm.vue:24
 msgctxt "Content/Signup/Paragraph"
-msgid ""
-"If the email address provided in the previous step is valid and binded to a "
-"user account, you should receive an email with reset instructions in the "
-"next couple of minutes."
-msgstr ""
-"Si o enderezo de correo proporcionado no paso anterior é válido e ligado a "
-"unha conta de usuaria, debería recibir un correo coas instrucións de "
-"restablecemento nun par de minutos."
+msgid "If the email address provided in the previous step is valid and linked to a user account, you should receive an email with reset instructions in the next couple of minutes."
+msgstr "Se o enderezo de correo proporcionado no paso anterior é válido e ligado a unha conta de usuaria, debería recibir un correo coas instrucións de restablecemento nun par de minutos."
 
 #: front/src/components/auth/Settings.vue:205
 msgctxt "Content/Applications/Paragraph"
-msgid ""
-"If you authorize third-party applications to access your data, those "
-"applications will be listed here."
-msgstr ""
+msgid "If you authorize third-party applications to access your data, those applications will be listed here."
+msgstr "Se autoriza o acceso aos seus datos por aplicacións de terceiros, estas aplicacións aparecerán aquí."
+
+#: front/src/components/mixins/Translations.vue:46
+#: front/src/components/mixins/Translations.vue:47
+msgctxt "Content/Moderation/Dropdown"
+msgid "Illegal content"
+msgstr "Contido ilegal"
 
 #: front/src/components/library/ImportStatusModal.vue:3
 msgctxt "Popup/Import/Title"
@@ -2108,14 +2220,10 @@ msgid "Import reference"
 msgstr "Importar referencia"
 
 #: front/src/components/manage/library/UploadsTable.vue:20
-#: front/src/views/content/libraries/FilesTable.vue:11
-#: front/src/views/content/libraries/FilesTable.vue:59
-msgctxt "Content/Library/*/Noun"
-msgid "Import status"
-msgstr "Estado da importación"
-
 #: front/src/components/manage/library/UploadsTable.vue:64
 #: front/src/views/admin/library/UploadDetail.vue:131
+#: front/src/views/content/libraries/FilesTable.vue:11
+#: front/src/views/content/libraries/FilesTable.vue:59
 msgctxt "Content/*/*/Noun"
 msgid "Import status"
 msgstr "Estado da importación"
@@ -2129,7 +2237,7 @@ msgstr "Importado"
 #: front/src/components/federation/FetchButton.vue:47
 msgctxt "*/*/Error"
 msgid "Impossible to connect to the remote server"
-msgstr ""
+msgstr "Non se puido conectar ao servidor remoto"
 
 #: front/src/components/moderation/FilterModal.vue:26
 msgctxt "Popup/Moderation/List item"
@@ -2139,7 +2247,7 @@ msgstr "Recentemente engadida"
 #: front/src/components/moderation/FilterModal.vue:27
 msgctxt "Popup/Moderation/List item"
 msgid "In artists and album listings"
-msgstr ""
+msgstr "En listaxes de artistas e álbumes"
 
 #: front/src/components/favorites/TrackFavoriteIcon.vue:3
 msgctxt "Content/Track/Button.Message"
@@ -2149,25 +2257,24 @@ msgstr "Nas favoritas"
 #: front/src/components/moderation/FilterModal.vue:25
 msgctxt "Popup/Moderation/List item"
 msgid "In other users favorites and listening history"
-msgstr ""
+msgstr "En favoritos e historial de escoita de outros usuarios"
 
 #: front/src/components/moderation/FilterModal.vue:28
 msgctxt "Popup/Moderation/List item"
 msgid "In radio suggestions"
-msgstr ""
+msgstr "Nas suxestións de radios"
 
-#: front/src/components/manage/users/UsersTable.vue:54
+#: front/src/components/manage/users/UsersTable.vue:55
 msgctxt "Content/Admin/Table"
 msgid "Inactive"
 msgstr "Non activo"
 
-#: front/src/components/ShortcutsModal.vue:71
+#: front/src/components/ShortcutsModal.vue:124
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Increase volume"
 msgstr "Aumentar volume"
 
 #: front/src/components/playlists/Editor.vue:41
-#, fuzzy
 msgctxt "Content/Playlist/Button.Label/Verb"
 msgid "Insert from queue (%{ count } track)"
 msgid_plural "Insert from queue (%{ count } tracks)"
@@ -2180,7 +2287,7 @@ msgctxt "Content/Settings/Dropdown/Short"
 msgid "Instance"
 msgstr "Datos da instancia"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:71
+#: front/src/views/admin/moderation/DomainsDetail.vue:99
 msgctxt "Content/Moderation/Title"
 msgid "Instance data"
 msgstr "Datos da instancia"
@@ -2205,21 +2312,25 @@ msgctxt "Popup/Instance/Input.Label/Noun"
 msgid "Instance URL"
 msgstr "Datos da instancia"
 
+#: front/src/components/manage/moderation/ReportCard.vue:92
+#: front/src/components/manage/moderation/ReportCard.vue:203
+msgctxt "Content/*/*/Noun"
+msgid "Internal notes"
+msgstr "Notas internas"
+
 #: front/src/components/library/FileUpload.vue:268
 msgctxt "Content/Library/Help text"
-msgid ""
-"Invalid file type, ensure you are uploading an audio file. Supported file "
-"extensions are %{ extensions }"
-msgstr ""
-"Tipo de ficheiro non válido, asegúrese de que sube un ficheiro de audio. "
-"Extensións de ficheiros soportadas %{ extensions }"
+msgid "Invalid file type, ensure you are uploading an audio file. Supported file extensions are %{ extensions }"
+msgstr "Tipo de ficheiro non válido, asegúrese de que sube un ficheiro de audio. Extensións de ficheiros soportadas %{ extensions }"
 
 #: front/src/components/library/ImportStatusModal.vue:139
+#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:46
 msgctxt "Popup/Import/Error.Label"
 msgid "Invalid metadata"
-msgstr ""
+msgstr "Metadatos non válidos"
 
-#: front/src/components/auth/Signup.vue:44
+#: front/src/components/auth/SignupForm.vue:40
 #: front/src/components/manage/users/InvitationForm.vue:11
 msgctxt "Content/*/Input.Label"
 msgid "Invitation code"
@@ -2231,7 +2342,13 @@ msgctxt "*/Admin/*/Noun"
 msgid "Invitations"
 msgstr "Convites"
 
-#: front/src/components/Footer.vue:41
+#: front/src/components/manage/moderation/DomainsTable.vue:9
+#: front/src/views/admin/moderation/DomainsDetail.vue:106
+msgctxt "Content/Moderation/*/Adjective"
+msgid "Is present on allow-list"
+msgstr "Está presente na lista-permitidos"
+
+#: front/src/components/Footer.vue:49
 msgctxt "Footer/*/List item.Link"
 msgid "Issue tracker"
 msgstr "Seguimento de problemas"
@@ -2239,19 +2356,20 @@ msgstr "Seguimento de problemas"
 #: front/src/components/SetInstanceModal.vue:5
 msgctxt "Popup/Instance/Error message.Title"
 msgid "It is not possible to connect to the given URL"
-msgstr ""
+msgstr "Non se puido conectar ao URL dado"
 
-#: front/src/components/Home.vue:50
-msgctxt "Content/Home/List item/Verb"
-msgid "Keep a track of your favorite songs"
-msgstr "Faga seguimento das súas cancións favoritas"
+#: front/src/components/mixins/Translations.vue:65
+#: front/src/components/mixins/Translations.vue:66
+msgctxt "*/*/*/Noun"
+msgid "Items"
+msgstr "Elementos"
 
 #: front/src/components/Footer.vue:33 src/components/ShortcutsModal.vue:3
 msgctxt "*/*/*/Noun"
 msgid "Keyboard shortcuts"
 msgstr "Atallos de teclado"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:161
+#: front/src/views/admin/moderation/DomainsDetail.vue:198
 msgctxt "Content/Moderation/Table.Label.Link"
 msgid "Known accounts"
 msgstr "Contas coñecidas"
@@ -2262,15 +2380,15 @@ msgid "Known libraries"
 msgstr "Bibliotecas coñecidas"
 
 #: front/src/components/manage/users/UsersTable.vue:41
-#: front/src/components/mixins/Translations.vue:58
-#: front/src/views/admin/moderation/AccountsDetail.vue:205
-#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:70
+#: front/src/views/admin/moderation/AccountsDetail.vue:206
+#: front/src/components/mixins/Translations.vue:71
 msgctxt "Content/Profile/Table.Label/Short, Noun (Value is a date)"
 msgid "Last activity"
 msgstr "Última actividade"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:188
-#: front/src/views/admin/moderation/DomainsDetail.vue:78
+#: front/src/views/admin/moderation/AccountsDetail.vue:189
+#: front/src/views/admin/moderation/DomainsDetail.vue:115
 msgctxt "Content/*/Table.Label"
 msgid "Last checked"
 msgstr "Última comprobación"
@@ -2285,13 +2403,13 @@ msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Last seen"
 msgstr "Última vista"
 
-#: front/src/components/mixins/Translations.vue:47
-#: front/src/components/mixins/Translations.vue:48
+#: front/src/components/mixins/Translations.vue:57
+#: front/src/components/mixins/Translations.vue:58
 msgctxt "Content/Moderation/Dropdown/Noun"
 msgid "Last seen date"
 msgstr "Data da última vista"
 
-#: front/src/views/content/remote/Card.vue:60
+#: front/src/views/content/remote/Card.vue:73
 msgctxt "Content/Library/Card.List item/Noun"
 msgid "Last update:"
 msgstr "Última actualización:"
@@ -2301,60 +2419,59 @@ msgctxt "Modal/*/Button.Label/Short, Verb"
 msgid "Launch"
 msgstr "Lanzar"
 
-#: front/src/components/Home.vue:10
-msgctxt "Content/Home/Button.Label/Verb"
-msgid "Learn more about this instance"
-msgstr "Coñeza máis sobre esta instancia"
+#: front/src/components/Home.vue:35
+msgctxt "Content/Home/Link"
+msgid "Learn more"
+msgstr "Saber máis"
 
 #: front/src/components/manage/users/InvitationForm.vue:58
 msgctxt "Content/Admin/Input.Placeholder"
 msgid "Leave empty for a random code"
 msgstr "Deixar baldeiro para un código aleatorio"
 
-#: front/src/components/audio/EmbedWizard.vue:7
+#: front/src/components/audio/EmbedWizard.vue:17
 msgctxt "Popup/Embed/Paragraph"
 msgid "Leave empty for a responsive widget"
 msgstr "Deixar baldeiro para un trebello interactivo"
 
-#: front/src/views/admin/library/AlbumDetail.vue:232
-#: front/src/views/admin/library/ArtistDetail.vue:221
-#: front/src/views/admin/library/TrackDetail.vue:284
-#: front/src/views/admin/moderation/AccountsDetail.vue:327
-#: front/src/views/admin/moderation/DomainsDetail.vue:234
-#: front/src/views/content/Base.vue:5
+#: front/src/components/mixins/Translations.vue:64
+#: front/src/components/mixins/Translations.vue:65
 msgctxt "*/*/*/Noun"
-msgid "Libraries"
-msgstr "Bibliotecas"
+msgid "Length"
+msgstr "Lonxitude"
 
+#: front/src/views/admin/library/AlbumDetail.vue:248
+#: front/src/views/admin/library/ArtistDetail.vue:236
 #: front/src/views/admin/library/Base.vue:17
 #: front/src/views/admin/library/LibrariesList.vue:24
-msgctxt "*/*/*"
+#: front/src/views/admin/library/TrackDetail.vue:300
+#: front/src/views/admin/moderation/AccountsDetail.vue:339
+#: front/src/views/admin/moderation/DomainsDetail.vue:271
+#: front/src/views/content/Base.vue:5
+msgctxt "*/*/*/Noun"
 msgid "Libraries"
 msgstr "Bibliotecas"
 
-#: front/src/components/mixins/Translations.vue:72
-#: front/src/components/mixins/Translations.vue:73
+#: front/src/components/mixins/Translations.vue:84
+#: front/src/components/mixins/Translations.vue:85
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Libraries and uploads"
 msgstr "Biblioteca actualizada"
 
 #: front/src/views/content/libraries/Form.vue:2
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Libraries help you organize and share your music collections. You can upload"
-" your own music collection to Funkwhale and share it with your friends and "
-"family."
-msgstr ""
-"As bibliotecas axúdanlle a organizar e compartir a súa colección musical. "
-"Pode subir a súa propia colección de música a Funkwhale e compartila cos "
-"seus amigos e familia."
+msgid "Libraries help you organize and share your music collections. You can upload your own music collection to Funkwhale and share it with your friends and family."
+msgstr "As bibliotecas axúdanlle a organizar e compartir a súa colección musical. Pode subir a súa propia colección de música a Funkwhale e compartila cos seus amigos e familia."
 
-#: front/src/components/Sidebar.vue:85 src/components/instance/Stats.vue:30
+#: front/src/components/Sidebar.vue:85
 #: front/src/components/manage/library/UploadsTable.vue:60
-#: front/src/components/manage/users/UsersTable.vue:173
+#: front/src/components/manage/users/UsersTable.vue:174
+#: front/src/components/mixins/Report.vue:77
 #: front/src/views/admin/library/UploadDetail.vue:144
-#: front/src/views/admin/moderation/AccountsDetail.vue:498
-msgctxt "*/*/*"
+#: front/src/views/admin/moderation/AccountsDetail.vue:518 src/entities.js:132
+#: front/src/components/mixins/Report.vue:78
+#, fuzzy
+msgctxt "*/*/*/Noun"
 msgid "Library"
 msgstr "Biblioteca"
 
@@ -2385,23 +2502,39 @@ msgstr "Biblioteca actualizada"
 
 #: front/src/components/library/TrackDetail.vue:19
 #: front/src/components/manage/library/TracksTable.vue:43
-#: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:61
+#: front/src/views/admin/library/TrackDetail.vue:165 src/edits.js:84
+#: front/src/entities.js:115
 msgctxt "Content/*/*/Noun"
 msgid "License"
 msgstr "Licenza"
 
-#: front/src/views/admin/library/AlbumDetail.vue:157
-#: front/src/views/admin/library/ArtistDetail.vue:146
-#: front/src/views/admin/library/TrackDetail.vue:209
-msgctxt "*/*/*/Noun"
-msgid "Listenings"
-msgstr ""
+#: front/src/components/Footer.vue:90
+msgctxt "Footer/Settings/Dropdown.Label/Theme name"
+msgid "Light"
+msgstr "Claro"
 
-#: front/src/components/mixins/Translations.vue:80
-#: front/src/components/mixins/Translations.vue:81
-msgctxt "Content/OAuth Scopes/Label"
+#: front/src/views/admin/library/AlbumDetail.vue:188
+#: front/src/views/admin/library/ArtistDetail.vue:176
+#: front/src/views/admin/library/LibraryDetail.vue:179
+#: front/src/views/admin/library/TrackDetail.vue:240
+#: front/src/views/admin/moderation/AccountsDetail.vue:269
+msgctxt "Content/Moderation/Table.Label/Noun"
+msgid "Linked reports"
+msgstr "Informes ligados"
+
+#: front/src/components/Home.vue:135
+msgctxt "Content/Home/Link"
+msgid "Listen to public albums and playlists shared on this pod"
+msgstr "Escoitar álbumes públicos e listas compartidas neste servidor"
+
+#: front/src/components/mixins/Translations.vue:92
+#: front/src/views/admin/library/AlbumDetail.vue:163
+#: front/src/views/admin/library/ArtistDetail.vue:151
+#: front/src/views/admin/library/TrackDetail.vue:215
+#: front/src/components/mixins/Translations.vue:93
+msgctxt "*/*/*/Noun"
 msgid "Listenings"
-msgstr ""
+msgstr "Escoitas"
 
 #: front/src/components/audio/track/Table.vue:25
 #: front/src/components/library/ArtistDetail.vue:28
@@ -2425,7 +2558,7 @@ msgctxt "Content/Library/Paragraph"
 msgid "Loading library data…"
 msgstr "Cargando datos da biblioteca…"
 
-#: front/src/views/Notifications.vue:19
+#: front/src/views/Notifications.vue:84
 msgctxt "Content/Notifications/Paragraph"
 msgid "Loading notifications…"
 msgstr "Cargando notificacións…"
@@ -2450,6 +2583,7 @@ msgstr "Cargando as favoritas…"
 #: front/src/components/manage/library/LibrariesTable.vue:75
 #: front/src/components/manage/library/TracksTable.vue:71
 #: front/src/components/manage/library/UploadsTable.vue:99
+#: front/src/components/manage/moderation/ReportCard.vue:173
 #: front/src/views/admin/library/AlbumDetail.vue:19
 #: front/src/views/admin/library/ArtistDetail.vue:18
 #: front/src/views/admin/library/LibraryDetail.vue:18
@@ -2457,7 +2591,7 @@ msgstr "Cargando as favoritas…"
 #: front/src/views/admin/library/UploadDetail.vue:19
 msgctxt "Content/Moderation/*/Short, Noun"
 msgid "Local"
-msgstr ""
+msgstr "Local"
 
 #: front/src/components/manage/moderation/AccountsTable.vue:59
 #: front/src/views/admin/moderation/AccountsDetail.vue:18
@@ -2465,12 +2599,12 @@ msgctxt "Content/Moderation/*/Short, Noun"
 msgid "Local account"
 msgstr "Conta local"
 
-#: front/src/components/auth/Login.vue:84
+#: front/src/components/Home.vue:96 src/views/auth/Login.vue:29
 msgctxt "Head/Login/Title"
 msgid "Log In"
 msgstr "Conectar"
 
-#: front/src/components/auth/Login.vue:4
+#: front/src/views/auth/Login.vue:4
 msgctxt "Content/Login/Title/Verb"
 msgid "Log in to your Funkwhale account"
 msgstr "Conecte coa súa conta Funkwhale"
@@ -2485,7 +2619,7 @@ msgctxt "Sidebar/Profile/List item.Link"
 msgid "Logged in as %{ username }"
 msgstr "Conectada como %{ username }"
 
-#: front/src/components/Sidebar.vue:54 src/components/auth/Login.vue:42
+#: front/src/components/Sidebar.vue:54 src/components/auth/LoginForm.vue:41
 msgctxt "*/Login/*/Verb"
 msgid "Login"
 msgstr "Conectar"
@@ -2505,34 +2639,39 @@ msgctxt "Content/Library/Paragraph"
 msgid "Looks like you don't have a library, it's time to create one."
 msgstr "Semella que non ten unha biblioteca, é momento de crear unha."
 
-#: front/src/components/audio/Player.vue:632
-#: src/components/audio/Player.vue:633
+#: front/src/components/audio/Player.vue:658
+#: src/components/audio/Player.vue:659
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping disabled. Click to switch to single-track looping."
 msgstr "Bucle desactivado. Pulse para cambiar ao bucle de unha soa canción."
 
-#: front/src/components/audio/Player.vue:635
-#: src/components/audio/Player.vue:636
+#: front/src/components/audio/Player.vue:661
+#: src/components/audio/Player.vue:662
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping on a single track. Click to switch to whole queue looping."
 msgstr "Bucle de unha canción. Pulse para cambiar a bucle de toda a cola."
 
-#: front/src/components/audio/Player.vue:638
-#: src/components/audio/Player.vue:639
+#: front/src/components/audio/Player.vue:664
+#: src/components/audio/Player.vue:665
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping on whole queue. Click to disable looping."
 msgstr "Bucle de toda a cola. Pulse para desactivar o bucle."
 
-#: front/src/components/Sidebar.vue:223
+#: front/src/components/Sidebar.vue:230
 msgctxt "Sidebar/*/Hidden text"
 msgid "Main menu"
 msgstr "Menú principal"
 
-#: front/src/views/admin/library/Base.vue:31
+#: front/src/views/admin/library/Base.vue:34
 msgctxt "Head/Admin/Title"
 msgid "Manage library"
 msgstr "Xestionar biblioteca"
 
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:8
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Manage moderation rules for %{ obj }"
+msgstr "Xestionar as regras de moderación para %{ obj }"
+
 #: front/src/components/playlists/PlaylistModal.vue:3
 msgctxt "Popup/Playlist/Title/Verb"
 msgid "Manage playlists"
@@ -2548,7 +2687,7 @@ msgctxt "Content/Playlist/Button.Label/Verb"
 msgid "Manage your playlists"
 msgstr "Xestionar as súas listas de reprodución"
 
-#: front/src/views/Notifications.vue:14
+#: front/src/views/Notifications.vue:79
 msgctxt "Content/Notifications/Button.Label/Verb"
 msgid "Mark all as read"
 msgstr "Marcar todo como lido"
@@ -2563,12 +2702,12 @@ msgctxt "Content/Notifications/Button.Tooltip/Verb"
 msgid "Mark as unread"
 msgstr "Marcar como non lido"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:310
+#: front/src/views/admin/moderation/AccountsDetail.vue:321
 msgctxt "Content/*/*/Unit"
 msgid "MB"
 msgstr "MB"
 
-#: front/src/components/audio/Player.vue:625
+#: front/src/components/audio/Player.vue:651
 msgctxt "Sidebar/Player/Hidden text"
 msgid "Media player"
 msgstr "Reprodutor"
@@ -2578,53 +2717,67 @@ msgctxt "Content/Profile/Paragraph"
 msgid "Member since %{ date }"
 msgstr "Rexistrada desde %{ date }"
 
+#: front/src/components/manage/moderation/ReportCard.vue:109
+#: front/src/components/moderation/ReportModal.vue:41
+msgctxt "*/*/Field.Label/Noun"
+msgid "Message"
+msgstr "Mensaxe"
+
 #: front/src/components/Footer.vue:32
 msgctxt "Footer/*/List item.Link"
 msgid "Mobile and desktop apps"
 msgstr "Apps de escritorio e móbil"
 
+#: front/src/components/Home.vue:143
+msgctxt "Content/Home/Link"
+msgid "Mobile apps"
+msgstr "Apps móbiles"
+
 #: front/src/components/Sidebar.vue:96
-#: src/components/manage/users/UsersTable.vue:177
-#: front/src/views/admin/moderation/AccountsDetail.vue:502
-#: front/src/views/admin/moderation/Base.vue:21
+#: src/components/manage/users/UsersTable.vue:178
+#: front/src/views/admin/Settings.vue:85
+#: front/src/views/admin/moderation/AccountsDetail.vue:522
+#: front/src/views/admin/moderation/Base.vue:43
 msgctxt "*/Moderation/*"
 msgid "Moderation"
 msgstr "Moderación"
 
 #: front/src/views/admin/moderation/AccountsDetail.vue:78
-#: front/src/views/admin/moderation/DomainsDetail.vue:42
+#: front/src/views/admin/moderation/DomainsDetail.vue:70
 msgctxt "Content/Moderation/Card.Paragraph"
-msgid ""
-"Moderation policies help you control how your instance interact with a given"
-" domain or account."
-msgstr ""
-"As políticas de moderación axúdanlle a controlar o xeito en que a súa "
-"instancia interactúa con determinado dominio ou conta."
+msgid "Moderation policies help you control how your instance interact with a given domain or account."
+msgstr "As políticas de moderación axúdanlle a controlar o xeito en que a súa instancia interactúa con determinado dominio ou conta."
+
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:4
+msgctxt "Content/Moderation/Button.Label"
+msgid "Moderation rules…"
+msgstr "Regras da moderación…"
 
 #: front/src/components/library/EditCard.vue:5
 msgctxt "Content/Library/Card/Short"
 msgid "Modification %{ id }"
 msgstr "Data de modificación"
 
-#: front/src/components/mixins/Translations.vue:48
-#: front/src/components/mixins/Translations.vue:49
+#: front/src/components/mixins/Translations.vue:58
+#: front/src/components/mixins/Translations.vue:59
 msgctxt "Content/Playlist/Dropdown/Noun"
 msgid "Modification date"
 msgstr "Data de modificación"
 
-#: front/src/components/library/AlbumBase.vue:42
-#: front/src/components/library/ArtistBase.vue:53
-#: front/src/components/library/TrackBase.vue:61
+#: front/src/components/audio/PlayButton.vue:100
+#: front/src/components/library/AlbumBase.vue:43
+#: front/src/components/library/ArtistBase.vue:54
+#: front/src/components/library/TrackBase.vue:59
 msgctxt "*/*/Button.Label/Noun"
 msgid "More…"
-msgstr ""
+msgstr "Máis…"
 
 #: front/src/components/Sidebar.vue:63 src/views/admin/Settings.vue:82
 msgctxt "*/*/*/Noun"
 msgid "Music"
 msgstr "Música"
 
-#: front/src/components/audio/Player.vue:631
+#: front/src/components/audio/Player.vue:657
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Mute"
 msgstr "Acalar"
@@ -2671,8 +2824,8 @@ msgctxt "Content/Library/Title"
 msgid "My libraries"
 msgstr "As miñas Bibliotecas"
 
-#: front/src/components/audio/track/Row.vue:40
-#: src/components/library/EditCard.vue:60
+#: front/src/components/About.vue:105 src/components/audio/track/Row.vue:40
+#: front/src/components/library/EditCard.vue:60
 #: front/src/components/library/EditForm.vue:70
 #: front/src/components/library/TrackDetail.vue:34
 #: front/src/components/library/TrackDetail.vue:43
@@ -2682,54 +2835,56 @@ msgstr "As miñas Bibliotecas"
 #: front/src/components/manage/library/TracksTable.vue:76
 #: front/src/components/manage/library/UploadsTable.vue:121
 #: front/src/components/manage/library/UploadsTable.vue:128
-#: front/src/components/manage/users/UsersTable.vue:61
+#: front/src/components/manage/moderation/ReportCard.vue:78
+#: front/src/components/manage/moderation/ReportCard.vue:87
+#: front/src/components/manage/moderation/ReportCard.vue:193
+#: front/src/components/manage/users/UsersTable.vue:62
 #: front/src/views/admin/library/UploadDetail.vue:179
 #: front/src/views/admin/library/UploadDetail.vue:214
 #: front/src/views/admin/library/UploadDetail.vue:233
 #: front/src/views/admin/library/UploadDetail.vue:244
 #: front/src/views/admin/library/UploadDetail.vue:257
-#: front/src/views/admin/moderation/AccountsDetail.vue:192
-#: front/src/views/admin/moderation/DomainsDetail.vue:82
+#: front/src/views/admin/moderation/AccountsDetail.vue:193
+#: front/src/views/admin/moderation/DomainsDetail.vue:119
 #: front/src/views/content/libraries/FilesTable.vue:95
 #: front/src/views/content/libraries/FilesTable.vue:101
 msgctxt "*/*/*"
 msgid "N/A"
 msgstr "N/A"
 
-#: front/src/components/manage/library/LibrariesTable.vue:48
-#: front/src/components/manage/library/UploadsTable.vue:59
-msgctxt "*/*/*"
-msgid "Name"
-msgstr "Nome"
-
 #: front/src/components/auth/ApplicationForm.vue:9
-msgctxt "Content/Applications/Input.Label/Noun"
-msgid "Name"
-msgstr "Nome"
-
 #: front/src/components/auth/Settings.vue:133
 #: front/src/components/manage/library/ArtistsTable.vue:39
+#: front/src/components/manage/library/LibrariesTable.vue:48
+#: front/src/components/manage/library/TagsTable.vue:41
+#: front/src/components/manage/library/UploadsTable.vue:59
 #: front/src/components/manage/moderation/AccountsTable.vue:39
-#: front/src/components/manage/moderation/DomainsTable.vue:38
-#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/manage/moderation/DomainsTable.vue:46
+#: front/src/components/mixins/Translations.vue:63
 #: front/src/components/playlists/PlaylistModal.vue:45
-#: front/src/views/admin/library/ArtistDetail.vue:98
+#: front/src/views/admin/library/ArtistDetail.vue:103
 #: front/src/views/admin/library/LibraryDetail.vue:85
+#: front/src/views/admin/library/TagDetail.vue:68
 #: front/src/views/admin/library/UploadDetail.vue:92
-#: front/src/views/admin/moderation/DomainsDetail.vue:97
-#: front/src/views/content/libraries/Form.vue:10 src/edits.js:10
-#: front/src/components/mixins/Translations.vue:54
+#: front/src/views/admin/moderation/DomainsDetail.vue:134
+#: front/src/views/content/libraries/Form.vue:10 src/edits.js:17
+#: front/src/components/mixins/Translations.vue:64
 msgctxt "*/*/*/Noun"
 msgid "Name"
 msgstr "Nome"
 
+#: front/src/views/Notifications.vue:24 src/views/Notifications.vue:58
+msgctxt "*/*/*"
+msgid "Never"
+msgstr "Nunca"
+
 #: front/src/components/auth/Settings.vue:88
 #: front/src/views/auth/PasswordResetConfirm.vue:14
 msgctxt "Content/Settings/Input.Label"
 msgid "New password"
 msgstr "Novo contrasinal"
 
-#: front/src/components/Sidebar.vue:173
+#: front/src/components/Sidebar.vue:177
 msgctxt "Sidebar/Player/Paragraph"
 msgid "New tracks will be appended here automatically."
 msgstr "As novas cancións engadiranse aquí automáticamente."
@@ -2737,23 +2892,20 @@ msgstr "As novas cancións engadiranse aquí automáticamente."
 #: front/src/components/library/EditCard.vue:47
 msgctxt "Content/Library/Card.Table.Header/Short"
 msgid "New value"
-msgstr ""
+msgstr "Novo valor"
 
-#: front/src/components/audio/Player.vue:629
+#: front/src/components/audio/Player.vue:655
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Next track"
 msgstr "Seguinte canción"
 
-#: front/src/components/Sidebar.vue:130
+#: front/src/components/Sidebar.vue:134
+#: front/src/components/manage/moderation/DomainsTable.vue:13
+#: front/src/views/admin/moderation/DomainsDetail.vue:110
 msgctxt "*/*/*"
 msgid "No"
 msgstr "Non"
 
-#: front/src/components/Home.vue:95
-msgctxt "Content/Home/List item"
-msgid "No add-ons, no plugins : you only need a web library"
-msgstr "Sin engadidos nin complementos: só precisa unha biblioteca na web"
-
 #: front/src/components/audio/Search.vue:25
 msgctxt "Content/Search/Paragraph"
 msgid "No album matched your query"
@@ -2767,7 +2919,12 @@ msgstr "Ningún artista coincide coa busca"
 #: front/src/components/library/TrackDetail.vue:14
 msgctxt "Content/Track/Table.Paragraph"
 msgid "No copyright information available for this track"
-msgstr "Non hai letras dispoñibles para esta canción."
+msgstr "Non hai información acerca dos dereitos sobre esta canción"
+
+#: front/src/components/About.vue:25 src/components/Home.vue:25
+msgctxt "Content/Home/Paragraph"
+msgid "No description available."
+msgstr "Non hai descrición."
 
 #: front/src/components/library/TrackDetail.vue:25
 msgctxt "Content/Track/Table.Paragraph"
@@ -2779,7 +2936,7 @@ msgctxt "Content/Federation/Paragraph"
 msgid "No matching library."
 msgstr "Sen biblioteca coincidente."
 
-#: front/src/views/Notifications.vue:28
+#: front/src/views/Notifications.vue:93
 msgctxt "Content/Notifications/Paragraph"
 msgid "No notification to show."
 msgstr "Sen notificación para mostrar."
@@ -2787,7 +2944,17 @@ msgstr "Sen notificación para mostrar."
 #: front/src/components/common/EmptyState.vue:7
 msgctxt "Content/*/Paragraph"
 msgid "No results were found."
-msgstr ""
+msgstr "Non se atoparon resultados."
+
+#: front/src/components/About.vue:32
+msgctxt "Content/Home/Paragraph"
+msgid "No rules available."
+msgstr "Sen regras dispoñibles."
+
+#: front/src/components/About.vue:39
+msgctxt "Content/Home/Paragraph"
+msgid "No terms available."
+msgstr "Sen termos dispoñibles."
 
 #: front/src/components/mixins/Translations.vue:10
 #: front/src/components/mixins/Translations.vue:11
@@ -2805,18 +2972,21 @@ msgctxt "Content/Admin/Table"
 msgid "Not used"
 msgstr "Non utilizado"
 
-#: front/src/components/mixins/Translations.vue:100
-#: front/src/components/mixins/Translations.vue:101
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Notifications"
-msgstr "Notificacións"
-
-#: front/src/components/Sidebar.vue:46 src/views/Notifications.vue:76
+#: front/src/components/Sidebar.vue:46
+#: src/components/mixins/Translations.vue:112
+#: front/src/views/Notifications.vue:151
+#: src/components/mixins/Translations.vue:113
 msgctxt "*/Notifications/*"
 msgid "Notifications"
 msgstr "Notificacións"
 
-#: front/src/components/Footer.vue:47
+#: front/src/components/mixins/Translations.vue:47
+#: front/src/components/mixins/Translations.vue:48
+msgctxt "Content/Moderation/Dropdown"
+msgid "Offensive content"
+msgstr "Contido ofensivo"
+
+#: front/src/components/Footer.vue:55
 msgctxt "Footer/*/List item.Link"
 msgid "Official website"
 msgstr "Sitio web oficial"
@@ -2829,7 +2999,12 @@ msgstr "Contrasinal antigo"
 #: front/src/components/library/EditCard.vue:46
 msgctxt "Content/Library/Card.Table.Header/Short"
 msgid "Old value"
-msgstr ""
+msgstr "Valor anterior"
+
+#: front/src/components/About.vue:90
+msgctxt "*/*/*/State of registrations"
+msgid "Open"
+msgstr "Abrir"
 
 #: front/src/components/manage/users/InvitationsTable.vue:20
 msgctxt "Content/Admin/Dropdown/Adjective"
@@ -2838,27 +3013,29 @@ msgstr "Abrir"
 
 #: front/src/components/library/ImportStatusModal.vue:56
 msgctxt "Popup/Import/Table.Label/Value"
-msgid ""
-"Open a support thread (include the debug information below in your message)"
-msgstr ""
-
-#: front/src/components/library/AlbumBase.vue:73
-#: front/src/components/library/ArtistBase.vue:84
-#: front/src/components/library/TrackBase.vue:92
+msgid "Open a support thread (include the debug information below in your message)"
+msgstr "Abrir un fío de axuda (incluír información de depuración abaixo na súa mensaxe)"
+
+#: front/src/components/library/AlbumBase.vue:87
+#: front/src/components/library/ArtistBase.vue:99
+#: front/src/components/library/TagDetail.vue:11
+#: front/src/components/library/TrackBase.vue:103
+#: front/src/components/manage/moderation/ReportCard.vue:128
 msgctxt "Content/Moderation/Link"
 msgid "Open in moderation interface"
 msgstr "Actualizar regra de moderación"
 
-#: front/src/views/admin/library/AlbumDetail.vue:31
-#: front/src/views/admin/library/ArtistDetail.vue:30
-#: front/src/views/admin/library/TrackDetail.vue:30
+#: front/src/views/admin/library/AlbumDetail.vue:37
+#: front/src/views/admin/library/ArtistDetail.vue:35
+#: front/src/views/admin/library/TagDetail.vue:21
+#: front/src/views/admin/library/TrackDetail.vue:36
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open local profile"
 msgstr "Abrir perfil"
 
-#: front/src/views/admin/library/AlbumDetail.vue:46
-#: front/src/views/admin/library/ArtistDetail.vue:45
-#: front/src/views/admin/library/TrackDetail.vue:45
+#: front/src/views/admin/library/AlbumDetail.vue:52
+#: front/src/views/admin/library/ArtistDetail.vue:50
+#: front/src/views/admin/library/TrackDetail.vue:51
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open on MusicBrainz"
 msgstr "Ver en MusicBrainz"
@@ -2868,10 +3045,10 @@ msgctxt "Content/Moderation/Link/Verb"
 msgid "Open profile"
 msgstr "Abrir perfil"
 
-#: front/src/views/admin/library/AlbumDetail.vue:54
-#: front/src/views/admin/library/ArtistDetail.vue:53
+#: front/src/views/admin/library/AlbumDetail.vue:60
+#: front/src/views/admin/library/ArtistDetail.vue:58
 #: front/src/views/admin/library/LibraryDetail.vue:49
-#: front/src/views/admin/library/TrackDetail.vue:53
+#: front/src/views/admin/library/TrackDetail.vue:59
 #: front/src/views/admin/library/UploadDetail.vue:50
 #: front/src/views/admin/moderation/AccountsDetail.vue:52
 msgctxt "Content/Moderation/Link/Verb"
@@ -2892,6 +3069,7 @@ msgstr "Ou personalice a súa regra"
 #: src/components/library/Radios.vue:41
 #: front/src/components/manage/library/EditsCardList.vue:37
 #: front/src/components/manage/users/UsersTable.vue:17
+#: front/src/views/admin/moderation/ReportsList.vue:42
 #: front/src/views/playlists/List.vue:25
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Order"
@@ -2899,40 +3077,50 @@ msgstr "Ordear"
 
 #: front/src/components/favorites/List.vue:24
 #: src/components/library/Albums.vue:15
-#: front/src/components/library/Artists.vue:15
+#: front/src/components/library/Artists.vue:19
 #: src/components/library/Radios.vue:33
 #: front/src/components/manage/library/AlbumsTable.vue:11
 #: front/src/components/manage/library/ArtistsTable.vue:11
 #: front/src/components/manage/library/EditsCardList.vue:29
 #: front/src/components/manage/library/LibrariesTable.vue:20
+#: front/src/components/manage/library/TagsTable.vue:11
 #: front/src/components/manage/library/TracksTable.vue:11
 #: front/src/components/manage/library/UploadsTable.vue:30
 #: front/src/components/manage/moderation/AccountsTable.vue:11
-#: front/src/components/manage/moderation/DomainsTable.vue:9
+#: front/src/components/manage/moderation/DomainsTable.vue:17
 #: front/src/components/manage/users/InvitationsTable.vue:9
 #: front/src/components/manage/users/UsersTable.vue:9
+#: front/src/views/admin/moderation/ReportsList.vue:34
 #: front/src/views/content/libraries/FilesTable.vue:21
 #: front/src/views/playlists/List.vue:17
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Ordering"
 msgstr "Ordenando"
 
-#: front/src/components/library/Albums.vue:23
-#: src/components/library/Artists.vue:23
+#: front/src/components/library/Albums.vue:27
+#: src/components/library/Artists.vue:27
 #: front/src/components/manage/library/AlbumsTable.vue:19
 #: front/src/components/manage/library/ArtistsTable.vue:19
 #: front/src/components/manage/library/LibrariesTable.vue:28
+#: front/src/components/manage/library/TagsTable.vue:19
 #: front/src/components/manage/library/TracksTable.vue:19
 #: front/src/components/manage/library/UploadsTable.vue:38
 #: front/src/components/manage/moderation/AccountsTable.vue:19
-#: front/src/components/manage/moderation/DomainsTable.vue:17
+#: front/src/components/manage/moderation/DomainsTable.vue:25
 #: front/src/views/content/libraries/FilesTable.vue:29
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Ordering direction"
 msgstr "Dirección da orde"
 
+#: front/src/components/mixins/Translations.vue:48
+#: front/src/components/mixins/Translations.vue:49
+msgctxt "Content/Moderation/Dropdown"
+msgid "Other"
+msgstr "Outro"
+
+#: front/src/components/manage/moderation/ReportCard.vue:143
 #: front/src/components/manage/users/InvitationsTable.vue:38
-msgctxt "Content/Admin/Table.Label"
+msgctxt "*/*/*"
 msgid "Owner"
 msgstr "Dona"
 
@@ -2951,12 +3139,14 @@ msgctxt "Content/*/Hidden text/Noun"
 msgid "Pagination"
 msgstr "Paxinación"
 
-#: front/src/components/auth/Login.vue:33 src/components/auth/Signup.vue:40
-msgctxt "Content/*/Input.Label"
+#: front/src/components/auth/LoginForm.vue:32
+#: src/components/auth/Settings.vue:291
+#: front/src/components/auth/SignupForm.vue:36
+msgctxt "*/*/*"
 msgid "Password"
 msgstr "Contrasinal"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:94
+#: front/src/components/auth/SubsonicTokenForm.vue:100
 msgctxt "Content/Settings/Message"
 msgid "Password updated"
 msgstr "Contrasinal actualizado"
@@ -2966,12 +3156,12 @@ msgctxt "Content/Signup/Card.Title"
 msgid "Password updated successfully"
 msgstr "Contrasinal actualizado correctamente"
 
-#: front/src/components/audio/Player.vue:628
+#: front/src/components/audio/Player.vue:654
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Pause track"
 msgstr "Pausar canción"
 
-#: front/src/components/ShortcutsModal.vue:59
+#: front/src/components/ShortcutsModal.vue:96
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Pause/play the current track"
 msgstr "Pausar/reproducir pista actual"
@@ -3000,7 +3190,7 @@ msgctxt "Content/Library/Label"
 msgid "Pending files"
 msgstr "Ficheiros pendentes"
 
-#: front/src/components/Sidebar.vue:225
+#: front/src/components/Sidebar.vue:232
 msgctxt "Sidebar/Notifications/Hidden text"
 msgid "Pending follow requests"
 msgstr "Peticións de seguimento pendentes"
@@ -3011,96 +3201,84 @@ msgctxt "Content/Admin/*/Noun"
 msgid "Pending review"
 msgstr "Ficheiros pendentes"
 
-#: front/src/components/Sidebar.vue:226
+#: front/src/components/Sidebar.vue:233
 msgctxt "Sidebar/Moderation/Hidden text"
 msgid "Pending review edits"
 msgstr "Ficheiros pendentes"
 
+#: front/src/components/auth/Settings.vue:176
 #: front/src/components/manage/users/UsersTable.vue:42
 #: front/src/views/admin/moderation/AccountsDetail.vue:166
-msgctxt "Content/Admin/Table.Label/Noun"
-msgid "Permissions"
-msgstr "Permisos"
-
-#: front/src/components/auth/Settings.vue:176
 msgctxt "Content/*/*/Noun"
 msgid "Permissions"
 msgstr "Permisos"
 
 #: front/src/components/audio/PlayButton.vue:9
-#: front/src/components/library/TrackBase.vue:26
+#: front/src/components/library/TrackBase.vue:24
 msgctxt "*/Queue/Button.Label/Short, Verb"
 msgid "Play"
 msgstr "Reproducir"
 
 #: front/src/components/audio/album/Card.vue:48
-#: front/src/components/audio/artist/Card.vue:44
-#: front/src/components/library/AlbumBase.vue:20
+#: front/src/components/library/AlbumBase.vue:21
 #: front/src/components/library/AlbumDetail.vue:11
 #: src/views/playlists/Detail.vue:24
 msgctxt "Content/Queue/Button.Label/Short, Verb"
 msgid "Play all"
 msgstr "Reproducir todo"
 
-#: front/src/components/library/ArtistBase.vue:31
+#: front/src/components/library/ArtistBase.vue:32
 msgctxt "Content/Artist/Button.Label/Verb"
 msgid "Play all albums"
 msgstr "Reproducir todos os álbumes"
 
-#: front/src/components/audio/PlayButton.vue:76
+#: front/src/components/audio/PlayButton.vue:92
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play next"
 msgstr "Reproducir seguinte"
 
-#: front/src/components/ShortcutsModal.vue:67
+#: front/src/components/ShortcutsModal.vue:120
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Play next track"
 msgstr "Reproducir canción seguinte"
 
-#: front/src/components/audio/PlayButton.vue:74
+#: front/src/components/audio/PlayButton.vue:90
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play now"
 msgstr "Reproducir agora"
 
-#: front/src/components/ShortcutsModal.vue:63
+#: front/src/components/ShortcutsModal.vue:116
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Play previous track"
 msgstr "Reproducir canción anterior"
 
-#: front/src/components/audio/PlayButton.vue:77
+#: front/src/components/audio/PlayButton.vue:93
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play similar songs"
-msgstr ""
+msgstr "Reproducir cancións similares"
 
-#: front/src/components/Sidebar.vue:224
+#: front/src/components/Sidebar.vue:231
 msgctxt "Sidebar/Player/Hidden text"
 msgid "Play this track"
 msgstr "Reproducir esta canción"
 
-#: front/src/components/audio/Player.vue:627
+#: front/src/components/audio/Player.vue:653
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Play track"
 msgstr "Reproducir canción"
 
-#: front/src/components/audio/PlayButton.vue:82
-msgctxt "*/Queue/Button/Title"
-msgid "Play..."
-msgstr "Reproducir..."
-
-#: front/src/views/playlists/Detail.vue:91
-msgctxt "Head/Playlist/Title"
+#: front/src/components/mixins/Report.vue:66 src/views/playlists/Detail.vue:121
+#: front/src/components/mixins/Report.vue:67
+msgctxt "*/*/*"
 msgid "Playlist"
 msgstr "Lista de reprodución"
 
 #: front/src/views/playlists/Detail.vue:12
-#, fuzzy
 msgctxt "Content/Playlist/Header.Subtitle"
 msgid "Playlist containing %{ count } track, by %{ username }"
 msgid_plural "Playlist containing %{ count } tracks, by %{ username }"
-msgstr[0] ""
-"Lista de reprodución que contén %{ count } canción, de %{ username }"
-msgstr[1] ""
-"Lista de reprodución que contén %{ count } cancións, de %{ username }"
+msgstr[0] "Lista de reprodución que contén %{ count } canción, de %{ username }"
+msgstr[1] "Lista de reprodución que contén %{ count } cancións, de %{ username }"
 
 #: front/src/components/playlists/Form.vue:9
 msgctxt "Content/Playlist/Message"
@@ -3127,33 +3305,30 @@ msgctxt "Content/Playlist/Dropdown.Label"
 msgid "Playlist visibility"
 msgstr "Visibilidade da lista de reprodución"
 
-#: front/src/components/mixins/Translations.vue:88
-#: front/src/components/mixins/Translations.vue:89
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Playlists"
-msgstr "Listas de reprodución"
-
 #: front/src/components/Sidebar.vue:71 src/components/library/Home.vue:16
-#: front/src/components/library/Library.vue:16 src/views/admin/Settings.vue:83
-#: front/src/views/admin/library/AlbumDetail.vue:173
-#: front/src/views/admin/library/ArtistDetail.vue:162
-#: front/src/views/admin/library/TrackDetail.vue:225
+#: front/src/components/library/Library.vue:16
+#: front/src/components/mixins/Translations.vue:100
+#: src/views/admin/Settings.vue:83
+#: front/src/views/admin/library/AlbumDetail.vue:179
+#: front/src/views/admin/library/ArtistDetail.vue:167
+#: front/src/views/admin/library/TrackDetail.vue:231
 #: src/views/playlists/List.vue:106
+#: front/src/components/mixins/Translations.vue:101
 msgctxt "*/*/*"
 msgid "Playlists"
 msgstr "Listas de reprodución"
 
-#: front/src/components/Home.vue:56
-msgctxt "Content/Home/List item"
-msgid "Playlists? We got them"
-msgstr "Listas de reprodución? Témolas"
+#: front/src/components/audio/EmbedWizard.vue:9
+msgctxt "Content/Embed/Message"
+msgid "Please contact your admins and ask them to update the corresponding setting."
+msgstr ""
 
 #: front/src/components/auth/Settings.vue:79
 msgctxt "Content/Settings/Error message.List item/Call to action"
 msgid "Please double-check your password is correct"
 msgstr "Por favor, comprobe que o seu contrasinal é correcto"
 
-#: front/src/components/auth/Login.vue:9
+#: front/src/components/auth/LoginForm.vue:5
 msgctxt "Content/Login/Error message.List item/Call to action"
 msgid "Please double-check your username/password couple is correct"
 msgstr "Por favor, comprobe que o par usuaria/contrasinal é correcto"
@@ -3163,25 +3338,27 @@ msgctxt "Content/Settings/Paragraph"
 msgid "PNG, GIF or JPG. At most 2MB. Will be downscaled to 400x400px."
 msgstr "PNG, GIF ou JPG. 2MB como máximo. Será reducida a 400x400px."
 
-#: front/src/views/admin/library/TrackDetail.vue:137
-msgctxt "*/*/*/Noun"
+#: front/src/components/About.vue:72
+msgctxt "Content/About/Header/Name"
+msgid "Pod configuration"
+msgstr "Configuración do servidor"
+
+#: front/src/views/admin/library/TrackDetail.vue:143 src/edits.js:70
+msgctxt "*/*/*/Short, Noun"
 msgid "Position"
 msgstr "Paxinación"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:118
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Prevent account or domain from triggering notifications, except from "
-"followers."
-msgstr ""
-"Evitar que o dominio ou conta mostre notificacións, excepto das seguidoras."
+msgid "Prevent account or domain from triggering notifications, except from followers."
+msgstr "Evitar que o dominio ou conta mostre notificacións, excepto das seguidoras."
 
-#: front/src/components/audio/EmbedWizard.vue:33
+#: front/src/components/audio/EmbedWizard.vue:43
 msgctxt "Popup/Embed/Title/Noun"
 msgid "Preview"
 msgstr "Vista previa"
 
-#: front/src/components/audio/Player.vue:626
+#: front/src/components/audio/Player.vue:652
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Previous track"
 msgstr "Canción anterior"
@@ -3190,9 +3367,9 @@ msgstr "Canción anterior"
 #: front/src/components/mixins/Translations.vue:16
 msgctxt "Content/Settings/Dropdown/Short"
 msgid "Private"
-msgstr ""
+msgstr "Privado"
 
-#: front/src/views/content/remote/Card.vue:43
+#: front/src/views/content/remote/Card.vue:56
 msgctxt "Content/Library/Card.List item"
 msgid "Problem during scanning"
 msgstr "Problema ao escanear"
@@ -3213,14 +3390,19 @@ msgctxt "Content/Library/Tab.Title/Short"
 msgid "Processing"
 msgstr "Procesando"
 
-#: front/src/components/mixins/Translations.vue:68
-#: front/src/components/mixins/Translations.vue:69
+#: front/src/components/mixins/Translations.vue:80
+#: front/src/components/mixins/Translations.vue:81
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Profile"
 msgstr "Abrir perfil"
 
+#: front/src/components/auth/SignupForm.vue:5
+msgctxt "Content/Signup/Form/Paragraph"
+msgid "Public registrations are not possible on this instance. You will need an invitation code to sign up."
+msgstr "O rexistro público non é posible en esta instancia. Precisas un código de convite para rexistrarte."
+
 #: front/src/components/manage/moderation/AccountsTable.vue:188
-#: front/src/components/manage/moderation/DomainsTable.vue:168
+#: front/src/components/manage/moderation/DomainsTable.vue:186
 #: front/src/views/content/libraries/Quota.vue:36
 #: front/src/views/content/libraries/Quota.vue:39
 #: front/src/views/content/libraries/Quota.vue:62
@@ -3251,7 +3433,7 @@ msgctxt "Sidebar/Queue/Tab.Title/Noun"
 msgid "Queue"
 msgstr "Cola"
 
-#: front/src/components/audio/Player.vue:322
+#: front/src/components/audio/Player.vue:329
 msgctxt "Content/Queue/Message"
 msgid "Queue shuffled!"
 msgstr "Cola barallada!"
@@ -3283,35 +3465,31 @@ msgstr "Radio actualizada"
 
 #: front/src/components/library/Library.vue:13
 #: src/components/library/Radios.vue:142
+#: front/src/components/mixins/Translations.vue:104
+#: front/src/components/mixins/Translations.vue:105
 msgctxt "*/*/*"
 msgid "Radios"
 msgstr "Radios"
 
-#: front/src/components/mixins/Translations.vue:92
-#: front/src/components/mixins/Translations.vue:93
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Radios"
-msgstr "Radios"
-
 #: front/src/components/auth/ApplicationForm.vue:151
 msgctxt "Content/OAuth Scopes/Label/Verb"
 msgid "Read"
-msgstr ""
+msgstr "Ler"
 
 #: front/src/components/library/ImportStatusModal.vue:51
 msgctxt "Popup/Import/Table.Label/Value"
 msgid "Read our documentation for this error"
-msgstr ""
+msgstr "Lea a documentación para este fallo"
 
 #: front/src/components/auth/Authorize.vue:24
 msgctxt "Content/Auth/Label/Noun"
 msgid "Read-only"
-msgstr ""
+msgstr "Só-lectura"
 
 #: front/src/components/auth/ApplicationForm.vue:152
 msgctxt "Content/OAuth Scopes/Help Text"
 msgid "Read-only access to user data"
-msgstr ""
+msgstr "Acceso de só-lectura ao datos de usuario"
 
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:39
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:25
@@ -3319,15 +3497,15 @@ msgctxt "Content/Moderation/*/Noun"
 msgid "Reason"
 msgstr "Razón"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:251
-#: front/src/views/admin/moderation/DomainsDetail.vue:179
+#: front/src/views/admin/moderation/AccountsDetail.vue:252
+#: front/src/views/admin/moderation/DomainsDetail.vue:216
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Received library follows"
 msgstr "Seguimentos de biblioteca recibidos"
 
-#: front/src/components/manage/moderation/DomainsTable.vue:40
-#: front/src/components/mixins/Translations.vue:62
-#: front/src/components/mixins/Translations.vue:63
+#: front/src/components/manage/moderation/DomainsTable.vue:48
+#: front/src/components/mixins/Translations.vue:74
+#: front/src/components/mixins/Translations.vue:75
 msgctxt "Content/Moderation/*/Noun"
 msgid "Received messages"
 msgstr "Mensaxes recibidas"
@@ -3340,13 +3518,18 @@ msgstr "Recentemente engadida"
 #: front/src/components/library/EditForm.vue:17
 msgctxt "Content/Library/Paragraph"
 msgid "Recent edits awaiting review"
-msgstr ""
+msgstr "Edicións recentes agardando revisión"
 
 #: front/src/components/library/Home.vue:24
 msgctxt "Content/Home/Title"
 msgid "Recently added"
 msgstr "Recentemente engadida"
 
+#: front/src/components/Home.vue:167
+msgctxt "Content/Home/Title"
+msgid "Recently added albums"
+msgstr "Álbumes recén engadidos"
+
 #: front/src/components/library/Home.vue:11
 msgctxt "Content/Home/Title"
 msgid "Recently favorited"
@@ -3360,7 +3543,7 @@ msgstr "Escoitada recentemente"
 #: front/src/components/auth/ApplicationForm.vue:13
 msgctxt "Content/Applications/Input.Label/Noun"
 msgid "Redirect URI"
-msgstr ""
+msgstr "URI de redirección"
 
 #: front/src/components/auth/Settings.vue:125
 #: src/components/auth/Settings.vue:170
@@ -3375,14 +3558,14 @@ msgctxt "Popup/*/Message.Title"
 msgid "Refresh error"
 msgstr "Actualizar"
 
-#: front/src/views/admin/library/AlbumDetail.vue:50
-#: front/src/views/admin/library/ArtistDetail.vue:49
-#: front/src/views/admin/library/TrackDetail.vue:49
+#: front/src/views/admin/library/AlbumDetail.vue:56
+#: front/src/views/admin/library/ArtistDetail.vue:54
+#: front/src/views/admin/library/TrackDetail.vue:55
 msgctxt "Content/Moderation/Button/Verb"
 msgid "Refresh from remote server"
-msgstr ""
+msgstr "Actualizar desde servidor remoto"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:127
+#: front/src/views/admin/moderation/DomainsDetail.vue:164
 msgctxt "Content/Moderation/Button.Label/Verb"
 msgid "Refresh node info"
 msgstr "Actualizar info da instancia"
@@ -3394,15 +3577,13 @@ msgstr "Actualizar info da instancia"
 
 #: front/src/components/federation/FetchButton.vue:80
 msgctxt "Popup/*/Message.Content"
-msgid ""
-"Refresh request wasn't proceed in time by our server. It will be processed "
-"later."
-msgstr ""
+msgid "Refresh request wasn't proceed in time by our server. It will be processed later."
+msgstr "A solicitude de actualización non se realizou a tempo no noso servidor. Procesarase máis tarde."
 
 #: front/src/components/federation/FetchButton.vue:16
 msgctxt "Popup/*/Message.Title"
 msgid "Refresh successful"
-msgstr ""
+msgstr "Actualización correcta"
 
 #: front/src/components/common/ActionTable.vue:275
 msgctxt "Content/*/Button.Tooltip/Verb"
@@ -3412,23 +3593,19 @@ msgstr "Actualizar contido da tabla"
 #: front/src/components/federation/FetchButton.vue:12
 msgctxt "Popup/*/Message.Title"
 msgid "Refresh was skipped"
-msgstr ""
+msgstr "Omiteuse a actualización"
 
 #: front/src/components/federation/FetchButton.vue:7
 msgctxt "Popup/*/Title"
 msgid "Refreshing object from remote…"
-msgstr ""
+msgstr "Actualizando obxeto desde remoto…"
 
-#: front/src/components/auth/Signup.vue:9
-msgctxt "Content/Signup/Form/Paragraph"
-msgid ""
-"Registration are closed on this instance, you will need an invitation code "
-"to signup."
-msgstr ""
-"O rexistro está pechado en esta instancia, necesita un código de convite "
-"para rexistrarse."
+#: front/src/components/About.vue:86
+msgctxt "*/*/*"
+msgid "Registrations"
+msgstr "Rexistros"
 
-#: front/src/components/manage/users/UsersTable.vue:71
+#: front/src/components/manage/users/UsersTable.vue:72
 msgctxt "Content/Admin/Table, User role"
 msgid "Regular user"
 msgstr "usuaria normal"
@@ -3453,8 +3630,8 @@ msgid "Rejected"
 msgstr "Rexeitado"
 
 #: front/src/components/manage/library/AlbumsTable.vue:43
-#: front/src/components/mixins/Translations.vue:44 src/edits.js:28
-#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:54 src/edits.js:43
+#: front/src/components/mixins/Translations.vue:55
 msgctxt "Content/*/*/Noun"
 msgid "Release date"
 msgstr "Data da última vista"
@@ -3462,7 +3639,12 @@ msgstr "Data da última vista"
 #: front/src/components/library/FileUpload.vue:63
 msgctxt "Content/Library/Paragraph"
 msgid "Remaining storage space"
-msgstr ""
+msgstr "Almacenaxe restante"
+
+#: front/src/views/Notifications.vue:18 src/views/Notifications.vue:52
+msgctxt "Content/Notifications/Label"
+msgid "Remind me in:"
+msgstr "Lembrarmo en:"
 
 #: front/src/views/content/remote/Home.vue:6
 msgctxt "Content/Library/Title/Noun"
@@ -3471,12 +3653,8 @@ msgstr "Bibliotecas remotas"
 
 #: front/src/views/content/remote/Home.vue:7
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Remote libraries are owned by other users on the network. You can access "
-"them as long as they are public or you are granted access."
-msgstr ""
-"As bibliotecas remotas pertences a outras usuarias na rede. Pode acceder a "
-"elas se son públicas ou lle outorgan acceso."
+msgid "Remote libraries are owned by other users on the network. You can access them as long as they are public or you are granted access."
+msgstr "As bibliotecas remotas pertences a outras usuarias na rede. Pode acceder a elas se son públicas ou lle outorgan acceso."
 
 #: front/src/components/library/radios/Filter.vue:59
 msgctxt "Content/Radio/Button.Label/Verb"
@@ -3493,6 +3671,12 @@ msgctxt "Content/Moderation/Button.Label"
 msgid "Remove filter"
 msgstr "Eliminar avatar"
 
+#: front/src/components/manage/moderation/DomainsTable.vue:198
+#: front/src/views/admin/moderation/DomainsDetail.vue:39
+msgctxt "Content/Moderation/Action/Verb"
+msgid "Remove from allow-list"
+msgstr "Eliminar da lista-permitir"
+
 #: front/src/components/favorites/TrackFavoriteIcon.vue:26
 msgctxt "Content/Track/Icon.Tooltip/Verb"
 msgid "Remove from favorites"
@@ -3500,43 +3684,98 @@ msgstr "Eliminar das favoritas"
 
 #: front/src/views/content/libraries/Quota.vue:38
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded but yet to be processed tracks completely, adding the "
-"corresponding data to your quota."
-msgstr ""
-"Elimina completamente as cancións subidas pero aínda non procesadas, "
-"engadindo o espazo correspondente a súa cuota."
+msgid "Removes uploaded but yet to be processed tracks completely, adding the corresponding data to your quota."
+msgstr "Elimina completamente as cancións subidas pero aínda non procesadas, engadindo o espazo correspondente a súa cuota."
 
 #: front/src/views/content/libraries/Quota.vue:64
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded tracks skipped during the import processes completely, "
-"adding the corresponding data to your quota."
-msgstr ""
-"Elimina as cancións subidas saltadas durante o proceso de importación, "
-"engadindo o espazo correspondente a súa cuota."
+msgid "Removes uploaded tracks skipped during the import processes completely, adding the corresponding data to your quota."
+msgstr "Elimina as cancións subidas saltadas durante o proceso de importación, engadindo o espazo correspondente a súa cuota."
 
 #: front/src/views/content/libraries/Quota.vue:90
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded tracks that could not be processed by the server "
-"completely, adding the corresponding data to your quota."
-msgstr ""
-"Elimina as cancións subidas que non se procesaron completamente no servidor,"
-" engadindo o espazo correspondente a súa cuota."
+msgid "Removes uploaded tracks that could not be processed by the server completely, adding the corresponding data to your quota."
+msgstr "Elimina as cancións subidas que non se procesaron completamente no servidor, engadindo o espazo correspondente a súa cuota."
+
+#: front/src/components/audio/PlayButton.vue:94
+msgctxt "*/Queue/Dropdown/Button/Title"
+msgid "Replace current queue"
+msgstr "Cambiar cola actual"
+
+#: front/src/components/mixins/Report.vue:6 src/components/mixins/Report.vue:7
+msgctxt "*/Moderation/*/Verb"
+msgid "Report @%{ username }…"
+msgstr "Informar @%{ username }…"
+
+#: front/src/components/manage/moderation/ReportCard.vue:5
+msgctxt "Content/Moderation/Card/Short"
+msgid "Report %{ id }"
+msgstr "Informar %{ id }"
+
+#: front/src/components/moderation/ReportModal.vue:139
+msgctxt "*/Moderation/Message"
+msgid "Report successfully submitted, thank you"
+msgstr "Informe enviado correctamente, grazas"
+
+#: front/src/components/mixins/Report.vue:36
+#: src/components/mixins/Report.vue:37
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this album…"
+msgstr "Informar sobre este álbume…"
+
+#: front/src/components/mixins/Report.vue:50
+#: src/components/mixins/Report.vue:51
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this artist…"
+msgstr "Informar sobre este artista…"
+
+#: front/src/components/mixins/Report.vue:72
+#: src/components/mixins/Report.vue:73
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this library…"
+msgstr "Informar sobre esta biblioteca…"
+
+#: front/src/components/mixins/Report.vue:61
+#: src/components/mixins/Report.vue:62
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this playlist…"
+msgstr "Informar sobre esta lista…"
+
+#: front/src/components/mixins/Report.vue:23
+#: src/components/mixins/Report.vue:24
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this track…"
+msgstr "Informar sobre esta canción…"
+
+#: front/src/components/audio/PlayButton.vue:95
+msgctxt "*/Moderation/*/Button/Label,Verb"
+msgid "Report…"
+msgstr "Informar…"
+
+#: front/src/components/manage/moderation/ReportCard.vue:117
+msgctxt "Content/*/*/Short"
+msgid "Reported object"
+msgstr "Informouse sobre o obxeto"
+
+#: front/src/views/admin/moderation/Base.vue:5
+#: front/src/views/admin/moderation/ReportsList.vue:3
+#: front/src/views/admin/moderation/ReportsList.vue:208
+msgctxt "*/Moderation/*/Noun"
+msgid "Reports"
+msgstr "Informes"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:33
-#: front/src/components/auth/SubsonicTokenForm.vue:36
+#: front/src/components/auth/SubsonicTokenForm.vue:38
+#: front/src/components/auth/SubsonicTokenForm.vue:41
 msgctxt "*/Settings/Button.Label/Verb"
 msgid "Request a new password"
 msgstr "Solicitar un novo contrasinal"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:34
+#: front/src/components/auth/SubsonicTokenForm.vue:39
 msgctxt "Popup/Settings/Title"
 msgid "Request a new Subsonic API password?"
 msgstr "Solicitar un nonvo contrasinal para o API Subsonic?"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:42
+#: front/src/components/auth/SubsonicTokenForm.vue:47
 msgctxt "Content/Settings/Button.Label/Verb"
 msgid "Request a password"
 msgstr "Solicitar un contrasinal"
@@ -3544,37 +3783,53 @@ msgstr "Solicitar un contrasinal"
 #: front/src/components/federation/FetchButton.vue:64
 msgctxt "Popup/*/Loading.Title"
 msgid "Requesting a fetch…"
-msgstr ""
+msgstr "Solicitando a obtención…"
 
-#: front/src/components/library/EditForm.vue:82
+#: front/src/components/library/EditForm.vue:94
 msgctxt "Content/Library/Button.Label"
-msgid "Reset to initial value: %{ value }"
-msgstr ""
+msgid "Reset to initial value"
+msgstr "Restablecer ao valor inicial"
 
-#: front/src/components/auth/Login.vue:35 src/views/auth/PasswordReset.vue:4
-#: front/src/views/auth/PasswordReset.vue:53
+#: front/src/components/auth/LoginForm.vue:34
+#: src/views/auth/PasswordReset.vue:4 front/src/views/auth/PasswordReset.vue:53
 msgctxt "*/Login/*/Verb"
 msgid "Reset your password"
 msgstr "Restablecer o seu contrasinal"
 
+#: front/src/components/manage/moderation/ReportCard.vue:83
+msgctxt "Content/*/*/Noun"
+msgid "Resolution date"
+msgstr "Data da resolución"
+
+#: front/src/components/manage/moderation/ReportCard.vue:218
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Resolve"
+msgstr "Resolver"
+
+#: front/src/components/manage/moderation/ReportCard.vue:62
+#: front/src/views/admin/moderation/ReportsList.vue:20
+msgctxt "Content/*/*/Short"
+msgid "Resolved"
+msgstr "Resolto"
+
 #: front/src/views/content/libraries/FilesTable.vue:223
 msgctxt "Content/Library/Dropdown/Verb"
 msgid "Restart import"
 msgstr "Volte a lanzar importación"
 
+#: front/src/components/library/EditForm.vue:31
+msgctxt "Content/Library/Button.Label"
+msgid "Restrict to unreviewed edits"
+msgstr "Restrinxir a edicións non revisadas"
+
 #: front/src/components/favorites/List.vue:39
-#: src/components/library/Albums.vue:30
-#: front/src/components/library/Artists.vue:30
+#: src/components/library/Albums.vue:34
+#: front/src/components/library/Artists.vue:34
 #: src/components/library/Radios.vue:52 front/src/views/playlists/List.vue:32
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Results per page"
 msgstr "Resultados por páxina"
 
-#: front/src/components/library/EditForm.vue:31
-msgctxt "Content/Library/Button.Label"
-msgid "Retrict to unreviewed edits"
-msgstr ""
-
 #: front/src/views/auth/EmailConfirm.vue:17
 msgctxt "Content/Signup/Link/Verb"
 msgid "Return to login"
@@ -3588,73 +3843,74 @@ msgstr "Ver ficheiros"
 #: front/src/components/auth/Settings.vue:192
 msgctxt "*/*/*/Verb"
 msgid "Revoke"
-msgstr ""
+msgstr "Repudiar"
 
 #: front/src/components/auth/Settings.vue:195
 msgctxt "*/Settings/Button.Label/Verb"
 msgid "Revoke access"
-msgstr ""
+msgstr "Retirar acceso"
 
 #: front/src/components/auth/Settings.vue:193
 msgctxt "Popup/Settings/Title"
 msgid "Revoke access for application \"%{ application }\"?"
-msgstr ""
+msgstr "Retirar acceso para a aplicación \"%{ application }\"?"
 
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:16
 msgctxt "Content/Moderation/Card.Title/Noun"
 msgid "Rule"
 msgstr "Regra"
 
-#: front/src/components/admin/SettingsGroup.vue:67
+#: front/src/components/About.vue:28 src/components/About.vue:56
+msgctxt "Content/About/Header"
+msgid "Rules"
+msgstr "Regras"
+
+#: front/src/components/admin/SettingsGroup.vue:75
 #: front/src/components/library/radios/Builder.vue:34
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Save"
 msgstr "Gardar"
 
-#: front/src/views/content/remote/Card.vue:175
+#: front/src/views/content/remote/Card.vue:203
 msgctxt "Content/Library/Message"
 msgid "Scan launched"
 msgstr "Escaneado iniciado"
 
-#: front/src/views/content/remote/Card.vue:67
+#: front/src/views/content/remote/Card.vue:80
 msgctxt "Content/Library/Card.Button.Label/Verb"
 msgid "Scan now"
 msgstr "Escanear agora"
 
-#: front/src/views/content/remote/Card.vue:35
+#: front/src/views/content/remote/Card.vue:48
 msgctxt "Content/Library/Card.List item"
 msgid "Scan pending"
 msgstr "Ascendente"
 
-#: front/src/views/content/remote/Card.vue:176
+#: front/src/views/content/remote/Card.vue:204
 msgctxt "Content/Library/Message"
 msgid "Scan skipped (previous scan is too recent)"
 msgstr "Escaneado saltado (o escaneado anterior é moi recente)"
 
-#: front/src/views/content/remote/Card.vue:47
+#: front/src/views/content/remote/Card.vue:60
 msgctxt "Content/Library/Card.List item"
 msgid "Scanned"
 msgstr "Escaneado"
 
-#: front/src/views/content/remote/Card.vue:51
+#: front/src/views/content/remote/Card.vue:64
 msgctxt "Content/Library/Card.List item"
 msgid "Scanned with errors"
 msgstr "Escaneado con fallos"
 
-#: front/src/views/content/remote/Card.vue:39
+#: front/src/views/content/remote/Card.vue:52
 msgctxt "Content/Library/Card.List item"
 msgid "Scanning… (%{ progress }%)"
-msgstr "Escaneando... (%{ progress }%)"
+msgstr "Escaneando… (%{ progress }%)"
 
 #: front/src/components/auth/ApplicationForm.vue:22
-msgctxt "Content/Applications/Input.Label/Noun"
-msgid "Scopes"
-msgstr ""
-
 #: front/src/components/auth/Settings.vue:226
 msgctxt "Content/*/*/Noun"
 msgid "Scopes"
-msgstr ""
+msgstr "Ámbitos"
 
 #: front/src/components/library/Albums.vue:10
 #: src/components/library/Artists.vue:10
@@ -3663,12 +3919,14 @@ msgstr ""
 #: front/src/components/manage/library/ArtistsTable.vue:5
 #: front/src/components/manage/library/EditsCardList.vue:6
 #: front/src/components/manage/library/LibrariesTable.vue:5
+#: front/src/components/manage/library/TagsTable.vue:5
 #: front/src/components/manage/library/TracksTable.vue:5
 #: front/src/components/manage/library/UploadsTable.vue:5
 #: front/src/components/manage/moderation/AccountsTable.vue:5
 #: front/src/components/manage/moderation/DomainsTable.vue:5
 #: front/src/components/manage/users/InvitationsTable.vue:5
 #: front/src/components/manage/users/UsersTable.vue:5
+#: front/src/views/admin/moderation/ReportsList.vue:8
 #: front/src/views/content/libraries/FilesTable.vue:5
 #: src/views/playlists/List.vue:13
 msgctxt "Content/Search/Input.Label/Noun"
@@ -3681,6 +3939,7 @@ msgid "Search a remote library"
 msgstr "Buscar unha biblioteca remota"
 
 #: front/src/components/manage/library/EditsCardList.vue:211
+#: front/src/views/admin/moderation/ReportsList.vue:207
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by account, summary, domain…"
 msgstr "Buscar por título, artista, dominio…"
@@ -3715,7 +3974,12 @@ msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by domain, username, bio…"
 msgstr "Buscar por dominio, nome de usuaria, bio…"
 
-#: front/src/components/manage/moderation/DomainsTable.vue:151
+#: front/src/components/manage/library/TagsTable.vue:165
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by name"
+msgstr "Buscar por nome"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:168
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by name…"
 msgstr "Buscar por nome…"
@@ -3730,12 +3994,12 @@ msgctxt "Content/Admin/Input.Placeholder/Verb"
 msgid "Search by username, e-mail address, code…"
 msgstr "Buscar por nome de usuaria, correo-e, código…"
 
-#: front/src/components/manage/users/UsersTable.vue:163
+#: front/src/components/manage/users/UsersTable.vue:164
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by username, e-mail address, name…"
 msgstr "Buscar por nome de usuaria, correo-e, nome…"
 
-#: front/src/components/audio/SearchBar.vue:20
+#: front/src/components/audio/SearchBar.vue:27
 msgctxt "Sidebar/Search/Input.Placeholder"
 msgid "Search for artists, albums, tracks…"
 msgstr "Buscar por artistas, álbumes, cancións…"
@@ -3745,16 +4009,28 @@ msgctxt "Content/Search/Title"
 msgid "Search for some music"
 msgstr "Buscar por algo de música"
 
-#: front/src/components/library/AlbumBase.vue:57
-#: front/src/components/library/ArtistBase.vue:68
-#: front/src/components/library/TrackBase.vue:76
+#: front/src/components/library/TagsSelector.vue:6
+msgctxt "*/Dropdown/Placeholder/Verb"
+msgid "Search for tags…"
+msgstr "Buscar por etiquetas…"
+
+#: front/src/components/library/AlbumBase.vue:66
+#: front/src/components/library/ArtistBase.vue:77
+#: front/src/components/library/TrackBase.vue:82
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Search on Discogs"
+msgstr "Buscar en Discogs"
+
+#: front/src/components/library/AlbumBase.vue:58
+#: front/src/components/library/ArtistBase.vue:69
+#: front/src/components/library/TrackBase.vue:74
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Search on Wikipedia"
 msgstr "Buscar en Wikipedia"
 
 #: front/src/components/library/Library.vue:35
-#: src/views/admin/library/Base.vue:32
-#: front/src/views/admin/moderation/Base.vue:22
+#: src/views/admin/library/Base.vue:35
+#: front/src/views/admin/moderation/Base.vue:44
 #: src/views/admin/users/Base.vue:21 front/src/views/content/Base.vue:19
 msgctxt "Menu/*/Hidden text"
 msgid "Secondary menu"
@@ -3765,27 +4041,51 @@ msgctxt "Content/Admin/Menu.Title"
 msgid "Sections"
 msgstr "Seccións"
 
+#: front/src/components/ShortcutsModal.vue:108
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek backwards 30s"
+msgstr "Buscar atrás 30s"
+
+#: front/src/components/ShortcutsModal.vue:100
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek backwards 5s"
+msgstr "Adiantar 5s"
+
+#: front/src/components/ShortcutsModal.vue:112
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek forwards 30s"
+msgstr "Adiantar 30s"
+
+#: front/src/components/ShortcutsModal.vue:104
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek forwards 5s"
+msgstr "Adiantar 5s"
+
 #: front/src/components/library/radios/Builder.vue:46
 msgctxt "Content/Radio/Dropdown.Placeholder/Verb"
 msgid "Select a filter"
 msgstr "Escolla un filtro"
 
 #: front/src/components/common/ActionTable.vue:79
-#, fuzzy
 msgctxt "Content/*/Link/Verb"
 msgid "Select all %{ total } elements"
 msgid_plural "Select all %{ total } elements"
-msgstr[0] "Escolla %{ total } elemento"
-msgstr[1] "Escolla todos os %{ total } elementos"
+msgstr[0] "Escolle %{ total } elemento"
+msgstr[1] "Escolle todos os %{ total } elementos"
 
 #: front/src/components/common/ActionTable.vue:88
 msgctxt "Content/*/Link/Verb"
 msgid "Select only current page"
 msgstr "Seleccionar só páxina actual"
 
-#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:108
-#: front/src/components/manage/users/UsersTable.vue:181
-#: front/src/views/admin/moderation/AccountsDetail.vue:506
+#: front/src/components/Home.vue:43
+msgctxt "Content/Home/Link"
+msgid "Server rules"
+msgstr "Regras do servidor"
+
+#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:112
+#: front/src/components/manage/users/UsersTable.vue:182
+#: front/src/views/admin/moderation/AccountsDetail.vue:526
 msgctxt "*/*/*/Noun"
 msgid "Settings"
 msgstr "Axustes"
@@ -3807,50 +4107,65 @@ msgstr "Compartir ligazón"
 
 #: front/src/views/content/libraries/Detail.vue:15
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Share this link with other users so they can request access to your library."
-msgstr ""
-"Comparta esta ligazón con outras usuarias así poderán solicitar acceso a súa"
-" biblioteca."
+msgid "Share this link with other users so they can request access to your library."
+msgstr "Comparta esta ligazón con outras usuarias así poderán solicitar acceso a súa biblioteca."
 
 #: front/src/views/content/libraries/Detail.vue:14
-#: front/src/views/content/remote/Card.vue:77
+#: front/src/views/content/remote/Card.vue:90
 msgctxt "Content/Library/Title"
 msgid "Sharing link"
 msgstr "Compartir ligazón"
 
+#: front/src/components/audio/EmbedWizard.vue:5
+msgctxt "Content/Embed/Message"
+msgid "Sharing will not work because this pod doesn't allow anonymous users to access content."
+msgstr ""
+
+#: front/src/components/About.vue:156
+msgctxt "*/*/*/Verb"
+msgid "Show"
+msgstr "Mostrar"
+
 #: front/src/components/audio/album/Card.vue:38
-#, fuzzy
 msgctxt "Content/Album/Card.Link/Verb"
 msgid "Show %{ count } more track"
 msgid_plural "Show %{ count } more tracks"
 msgstr[0] "Mostrar %{ count } canción máis"
 msgstr[1] "Mostrar %{ count } cancións máis"
 
-#: front/src/components/audio/artist/Card.vue:30
-#, fuzzy
-msgctxt "Content/Artist/Card.Link"
-msgid "Show 1 more album"
-msgid_plural "Show %{ count } more albums"
-msgstr[0] "Mostrar 1 álbume máis"
-msgstr[1] "Mostrar %{ count } álbumes máis"
+#: front/src/components/tags/List.vue:11
+msgctxt "Content/*/Button/Label/Verb"
+msgid "Show 1 more tag"
+msgid_plural "Show %{ count } more tags"
+msgstr[0] "Mostrar 1 etiqueta máis"
+msgstr[1] "Mostrar %{ count } etiquetas máis"
 
 #: front/src/components/library/EditForm.vue:21
 msgctxt "Content/Library/Button.Label"
 msgid "Show all edits"
-msgstr ""
+msgstr "Mostrar todas as edicións"
 
-#: front/src/components/ShortcutsModal.vue:42
+#: front/src/components/ShortcutsModal.vue:60
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Show available keyboard shortcuts"
 msgstr "Mostrar atallos de teclado dispoñibles"
 
-#: front/src/views/Notifications.vue:7
+#: front/src/components/common/ExpandableDiv.vue:7
+msgctxt "*/*/Button,Label"
+msgid "Show less"
+msgstr "Mostrar menos"
+
+#: front/src/components/common/ExpandableDiv.vue:8
+msgctxt "*/*/Button,Label"
+msgid "Show more"
+msgstr "Mostrar máis"
+
+#: front/src/views/Notifications.vue:72
 msgctxt "Content/Notifications/Form.Label/Verb"
 msgid "Show read notifications"
 msgstr "Mostrar notificacións lidas"
 
-#: front/src/components/forms/PasswordInput.vue:26
+#: front/src/components/forms/PasswordInput.vue:42
 msgctxt "Content/Settings/Button.Tooltip/Verb"
 msgid "Show/hide password"
 msgstr "Mostrar/ocultar contrasinal"
@@ -3859,56 +4174,63 @@ msgstr "Mostrar/ocultar contrasinal"
 #: front/src/components/manage/library/ArtistsTable.vue:84
 #: front/src/components/manage/library/EditsCardList.vue:72
 #: front/src/components/manage/library/LibrariesTable.vue:110
+#: front/src/components/manage/library/TagsTable.vue:79
 #: front/src/components/manage/library/TracksTable.vue:95
 #: front/src/components/manage/library/UploadsTable.vue:144
 #: front/src/components/manage/moderation/AccountsTable.vue:88
-#: front/src/components/manage/moderation/DomainsTable.vue:74
+#: front/src/components/manage/moderation/DomainsTable.vue:85
 #: front/src/components/manage/users/InvitationsTable.vue:76
-#: front/src/components/manage/users/UsersTable.vue:87
+#: front/src/components/manage/users/UsersTable.vue:88
 #: front/src/views/content/libraries/FilesTable.vue:117
 msgctxt "Content/*/Paragraph"
 msgid "Showing results %{ start }-%{ end } on %{ total }"
 msgstr "Mostrando resultados %{ start }-%{ end } de %{ total }"
 
-#: front/src/components/ShortcutsModal.vue:83
+#: front/src/components/ShortcutsModal.vue:140
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Shuffle queue"
 msgstr "Barallar a cola"
 
-#: front/src/components/audio/Player.vue:641
+#: front/src/components/audio/Player.vue:667
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Shuffle your queue"
 msgstr "Barallar a cola"
 
-#: front/src/components/auth/Signup.vue:97
+#: front/src/components/Home.vue:103
+msgctxt "*/Signup/Title"
+msgid "Sign up"
+msgstr "Rexistro"
+
+#: front/src/views/auth/Signup.vue:37
 msgctxt "*/Signup/Title"
 msgid "Sign Up"
 msgstr "Rexistro"
 
+#: front/src/components/Home.vue:107
+msgctxt "Content/Home/Paragraph"
+msgid "Sign up now to keep a track of your favorites, create playlists, discover new content and much more!"
+msgstr "Rexístrate agora para gardar os teus favoritos, creas listas, descubrir novo contido e moito máis!"
+
 #: front/src/components/manage/users/UsersTable.vue:40
 msgctxt "Content/Admin/Table.Label/Short, Noun (Value is a date)"
 msgid "Sign-up"
 msgstr "Rexistrarse"
 
-#: front/src/components/mixins/Translations.vue:57
-#: front/src/views/admin/moderation/AccountsDetail.vue:197
-#: front/src/components/mixins/Translations.vue:58
+#: front/src/components/mixins/Translations.vue:69
+#: front/src/views/admin/moderation/AccountsDetail.vue:198
+#: front/src/components/mixins/Translations.vue:70
 msgctxt "Content/Admin/Table.Label/Noun"
 msgid "Sign-up date"
 msgstr "Data de rexistro"
 
-#: front/src/components/manage/library/UploadsTable.vue:65
-#: front/src/views/admin/library/UploadDetail.vue:219
-msgctxt "Content/*/*/Noun"
-msgid "Size"
-msgstr "Tamaño"
-
 #: front/src/components/library/FileUpload.vue:94
 #: front/src/components/library/TrackDetail.vue:39
-#: front/src/components/mixins/Translations.vue:54
+#: front/src/components/manage/library/UploadsTable.vue:65
+#: front/src/components/mixins/Translations.vue:66
+#: front/src/views/admin/library/UploadDetail.vue:219
 #: front/src/views/content/libraries/FilesTable.vue:61
-#: front/src/components/mixins/Translations.vue:55
-msgctxt "Content/Library/*/in MB"
+#: front/src/components/mixins/Translations.vue:67
+msgctxt "Content/*/*/Noun"
 msgid "Size"
 msgstr "Tamaño"
 
@@ -3925,7 +4247,7 @@ msgctxt "Content/Library/Label"
 msgid "Skipped files"
 msgstr "Ficheiros saltados"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:89
+#: front/src/views/admin/moderation/DomainsDetail.vue:126
 msgctxt "Content/Moderation/Table.Label"
 msgid "Software"
 msgstr "Software"
@@ -3933,100 +4255,70 @@ msgstr "Software"
 #: front/src/components/playlists/Editor.vue:21
 msgctxt "Content/Playlist/Paragraph"
 msgid "Some tracks in your queue are already in this playlist:"
-msgstr ""
+msgstr "Algunhas cancións na cola xa están nesta lista de reprodución:"
 
 #: front/src/components/PageNotFound.vue:10
 msgctxt "Content/*/Paragraph"
 msgid "Sorry, the page you asked for does not exist:"
 msgstr "Lamentámolo, a páxina que solicitou non existe:"
 
-#: front/src/components/Footer.vue:49
+#: front/src/components/Footer.vue:57
 msgctxt "Footer/*/List item.Link"
 msgid "Source code"
 msgstr "Código fonte"
 
 #: front/src/components/auth/Profile.vue:23
-#: front/src/components/manage/users/UsersTable.vue:70
+#: front/src/components/manage/users/UsersTable.vue:71
 msgctxt "Content/Profile/User role"
 msgid "Staff member"
 msgstr "Persoal do equipo"
 
-#: front/src/components/audio/PlayButton.vue:23
+#: front/src/components/audio/PlayButton.vue:27
 #: src/components/radios/Button.vue:4
 msgctxt "*/Queue/Button.Label/Short, Verb"
 msgid "Start radio"
 msgstr "Deter radio"
 
-#: front/src/views/admin/Settings.vue:86
-msgctxt "Content/Admin/Menu"
+#: front/src/components/About.vue:170 src/components/Home.vue:53
+#: front/src/views/admin/Settings.vue:87
+msgctxt "Content/Home/Header"
 msgid "Statistics"
 msgstr "Estatísticas"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:490
+#: front/src/views/admin/moderation/AccountsDetail.vue:510
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this account"
-msgstr ""
-"As estatísticas contabilízanse pola actividade coñecida e o contido da súa "
-"instancia, e non reflexan a actividade xeral de esta conta"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this account"
+msgstr "As estatísticas contabilízanse pola actividade coñecida e o contido da súa instancia, e non reflexan a actividade xeral de esta conta"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:371
+#: front/src/views/admin/moderation/DomainsDetail.vue:418
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this domain"
-msgstr ""
-"As estatísticas contabilízanse pola actividade coñecida e o contido da súa "
-"instancia, e non reflexan a actividade xeral de este dominio"
-
-#: front/src/views/admin/library/AlbumDetail.vue:329
-#: front/src/views/admin/library/ArtistDetail.vue:328
-#: front/src/views/admin/library/LibraryDetail.vue:316
-#: front/src/views/admin/library/TrackDetail.vue:371
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this domain"
+msgstr "As estatísticas contabilízanse pola actividade coñecida e o contido da súa instancia, e non reflexan a actividade xeral de este dominio"
+
+#: front/src/views/admin/library/AlbumDetail.vue:346
+#: front/src/views/admin/library/ArtistDetail.vue:345
+#: front/src/views/admin/library/LibraryDetail.vue:356
+#: front/src/views/admin/library/TagDetail.vue:210
+#: front/src/views/admin/library/TrackDetail.vue:389
 #: front/src/views/admin/library/UploadDetail.vue:335
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this object"
-msgstr ""
-"As estatísticas contabilízanse pola actividade coñecida e o contido da súa "
-"instancia, e non reflexan a actividade xeral de esta conta"
-
-#: front/src/views/admin/moderation/DomainsDetail.vue:115
-msgctxt "Content/Moderation/Table.Label (Value is Error message)"
-msgid "Status"
-msgstr "Estado"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this object"
+msgstr "As estatísticas contabilízanse pola actividade coñecida e o contido da súa instancia, e non reflexan a actividade xeral de esta conta"
 
 #: front/src/components/library/FileUpload.vue:95
-msgctxt "Content/Library/Table.Label (Value is Uploading/Uploaded/Error)"
-msgid "Status"
-msgstr "Estado"
-
-#: front/src/views/content/libraries/Detail.vue:28
-msgctxt "Content/Library.Federation/Table.Label (Value is Approved/Rejected)"
-msgid "Status"
-msgstr "Estado"
-
+#: front/src/components/manage/library/EditsCardList.vue:12
+#: front/src/components/manage/moderation/ReportCard.vue:57
 #: front/src/components/manage/users/InvitationsTable.vue:17
 #: front/src/components/manage/users/InvitationsTable.vue:39
-msgctxt "Content/Admin/*/Noun (Value is Used/Not used)"
-msgid "Status"
-msgstr "Estado"
-
 #: front/src/components/manage/users/UsersTable.vue:43
-msgctxt "Content/Admin/Table.Label/Noun (Value is Regular user/Admin)"
-msgid "Status"
-msgstr "Estado"
-
-#: front/src/components/manage/library/EditsCardList.vue:12
-msgctxt ""
-"Content/Search/Dropdown.Label (Value is All/Pending "
-"review/Approved/Rejected)"
+#: front/src/views/admin/moderation/DomainsDetail.vue:152
+#: front/src/views/admin/moderation/ReportsList.vue:14
+#: front/src/views/content/libraries/Detail.vue:28
+msgctxt "*/*/*"
 msgid "Status"
 msgstr "Estado"
 
-#: front/src/components/Sidebar.vue:174 src/components/radios/Button.vue:3
+#: front/src/components/Sidebar.vue:178 src/components/radios/Button.vue:3
 msgctxt "*/Player/Button.Label/Short, Verb"
 msgid "Stop radio"
 msgstr "Deter radio"
@@ -4036,22 +4328,32 @@ msgctxt "*/*/Button.Label/Verb"
 msgid "Submit"
 msgstr "Enviar"
 
-#: front/src/components/library/EditForm.vue:98
+#: front/src/components/library/EditForm.vue:110
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Submit and apply edit"
-msgstr ""
+msgstr "Enviar e aplicar a edición"
 
 #: front/src/components/library/EditForm.vue:7
 msgctxt "Content/Library/Button.Label"
 msgid "Submit another edit"
-msgstr ""
+msgstr "Enviar outra edición"
 
-#: front/src/components/library/EditForm.vue:99
+#: front/src/components/moderation/ReportModal.vue:64
+msgctxt "Popup/*/Button.Label"
+msgid "Submit report"
+msgstr "Enviar informe"
+
+#: front/src/components/library/EditForm.vue:111
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Submit suggestion"
-msgstr ""
+msgstr "Enviar suxestión"
 
-#: front/src/views/admin/Settings.vue:85
+#: front/src/components/manage/moderation/ReportCard.vue:17
+msgctxt "Content/Moderation/*"
+msgid "Submitted by"
+msgstr "Enviado por"
+
+#: front/src/views/admin/Settings.vue:86
 msgctxt "Content/Admin/Menu"
 msgid "Subsonic"
 msgstr "Subsonic"
@@ -4064,7 +4366,7 @@ msgstr "Contrasinal API Subsonic"
 #: front/src/components/library/EditForm.vue:38
 msgctxt "Content/Library/Paragraph"
 msgid "Suggest a change using the form below."
-msgstr ""
+msgstr "Suxerir un cambio utilizando o formulario inferior."
 
 #: front/src/components/library/AlbumEdit.vue:5
 msgctxt "Content/*/Title"
@@ -4091,16 +4393,21 @@ msgctxt "Content/Library/Tab.Title/Short"
 msgid "Summary"
 msgstr "Resumo"
 
-#: front/src/components/library/EditForm.vue:87
+#: front/src/components/library/EditForm.vue:99
 msgctxt "*/*/*"
 msgid "Summary (optional)"
-msgstr ""
+msgstr "Resumen (optativo)"
 
-#: front/src/components/Footer.vue:39
+#: front/src/components/Footer.vue:47
 msgctxt "Footer/*/Listitem.Link"
 msgid "Support forum"
 msgstr "Foro de axuda"
 
+#: front/src/views/Notifications.vue:10
+msgctxt "Content/Notifications/Header"
+msgid "Support this Funkwhale pod"
+msgstr "Axuda a este servidor Funkwhale"
+
 #: front/src/components/library/FileUpload.vue:85
 msgctxt "Content/Library/Paragraph"
 msgid "Supported extensions: %{ extensions }"
@@ -4111,91 +4418,101 @@ msgctxt "Content/Playlist/Paragraph"
 msgid "Syncing changes to server…"
 msgstr "Sincronizando cambios co servidor…"
 
-#: front/src/components/audio/EmbedWizard.vue:25
+#: front/src/components/audio/SearchBar.vue:35
+msgctxt "*/*/*/Noun"
+msgid "Tag"
+msgstr "Etiqueta"
+
+#: front/src/views/admin/library/TagDetail.vue:61
+msgctxt "Content/Moderation/Title"
+msgid "Tag data"
+msgstr "Etiquetar datos"
+
+#: front/src/components/library/Albums.vue:23
+#: src/components/library/Artists.vue:15
+#: front/src/views/admin/library/Base.vue:23
+#: src/views/admin/library/TagsList.vue:24 front/src/edits.js:24
+#: src/edits.js:50 src/edits.js:91 src/entities.js:120
+msgctxt "*/*/*/Noun"
+msgid "Tags"
+msgstr "Etiquetas"
+
+#: front/src/components/mixins/Translations.vue:44
+#: front/src/components/mixins/Translations.vue:45
+msgctxt "Content/Moderation/Dropdown"
+msgid "Takedown request"
+msgstr "Rexeitar petición"
+
+#: front/src/components/About.vue:35 src/components/About.vue:61
+msgctxt "Content/About/Header"
+msgid "Terms and privacy policy"
+msgstr "Termos e política de intimidade"
+
+#: front/src/components/audio/EmbedWizard.vue:35
 #: front/src/components/common/CopyInput.vue:3
 msgctxt "Content/*/Paragraph"
 msgid "Text copied to clipboard!"
 msgstr "Texto copiado ao portapapeis!"
 
-#: front/src/components/Home.vue:26
-msgctxt "Content/Home/Paragraph"
-msgid ""
-"That's simple: we loved Grooveshark and we want to build something even "
-"better."
-msgstr ""
-"É simple: encantábanos Grooveshark e queremos construír algo aínda mellor."
-
-#: front/src/views/admin/library/AlbumDetail.vue:75
+#: front/src/views/admin/library/AlbumDetail.vue:81
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The album will be removed, as well as associated uploads, tracks, favorites "
-"and listening history. This action is irreversible."
-msgstr ""
+msgid "The album will be removed, as well as associated uploads, tracks, favorites and listening history. This action is irreversible."
+msgstr "Vaise a eliminar o álbume, así como todas as subidas asociadas, pistas, favoritos e historial de escoita. Esta acción é irreversible."
 
 #: front/src/components/auth/Authorize.vue:39
 msgctxt "Content/Auth/Paragraph"
 msgid "The application is also requesting the following unknown permissions:"
-msgstr ""
+msgstr "Esta aplicación tamén está solicitando os seguintes permisos descoñecidos:"
 
-#: front/src/views/admin/library/ArtistDetail.vue:74
+#: front/src/views/admin/library/ArtistDetail.vue:79
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The artist will be removed, as well as associated uploads, tracks, albums, "
-"favorites and listening history. This action is irreversible."
-msgstr ""
+msgid "The artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible."
+msgstr "Vaise eliminar o artista, así como todas as subidas asociadas, pistas, álbumes, favoritos e historial de escoita. Esta acción é irreversible."
 
-#: front/src/components/Footer.vue:53
+#: front/src/components/Footer.vue:61
 msgctxt "Footer/*/List item.Link"
 msgid "The funkwhale logo was kindly designed and provided by Francis Gading."
-msgstr ""
-"O logo de funckwhale foi amablemente deseñado e proporcionado por Francis "
-"Gading."
+msgstr "O logo de funckwhale foi amablemente deseñado e proporcionado por Francis Gading."
 
 #: front/src/components/SetInstanceModal.vue:8
 msgctxt "Popup/Instance/Error message.List item"
 msgid "The given address is not a Funkwhale server"
-msgstr ""
+msgstr "O enderezo proporcionado non é un servidor Funkwhale"
 
 #: front/src/views/content/libraries/Form.vue:34
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"The library and all its tracks will be deleted. This can not be undone."
-msgstr ""
-"Eliminará completamente a biblioteca e as cancións. Non poderá voltar atrás."
+msgid "The library and all its tracks will be deleted. This can not be undone."
+msgstr "Eliminará completamente a biblioteca e as cancións. Non poderá voltar atrás."
 
 #: front/src/views/admin/library/LibraryDetail.vue:61
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The library will be removed, as well as associated uploads, and follows. "
-"This action is irreversible."
-msgstr ""
+msgid "The library will be removed, as well as associated uploads, and follows. This action is irreversible."
+msgstr "Vaise eliminar a biblioteca, así como as subidas asociadas, e os seguimentos. A acción é irreversible."
 
 #: front/src/components/library/ImportStatusModal.vue:140
 msgctxt "Popup/Import/Error.Label"
-msgid ""
-"The metadata included in the file is invalid or some mandatory fields are "
-"missing."
-msgstr ""
+msgid "The metadata included in the file is invalid or some mandatory fields are missing."
+msgstr "Os metadatos incluídos no ficheiro non son válidos ou faltan algúns campos requeridos."
 
 #: front/src/components/library/FileUpload.vue:38
 msgctxt "Content/Library/List item"
 msgid "The music files you are uploading are tagged properly."
-msgstr ""
-"Os ficheiros de música que está a subir están etiquetados correctamente:"
+msgstr "Os ficheiros de música que está a subir están correctamente etiquetados."
 
 #: front/src/components/audio/Player.vue:65
 msgctxt "Sidebar/Player/Error message.Paragraph"
 msgid "The next track will play automatically in a few seconds…"
 msgstr "A seguinte canción reproducirase automáticamente en poucos segundos…"
 
-#: front/src/components/Home.vue:116
-msgctxt "Content/Home/List item"
-msgid ""
-"The plaform is free and open-source, you can install it and modify it "
-"without worries"
-msgstr ""
-"A plataforma é libre de código aberto, pode instalala e modificala sin "
-"preocupación"
+#: front/src/components/manage/moderation/NotesThread.vue:27
+msgctxt "Content/Moderation/Paragraph"
+msgid "The note will be removed. This action is irreversible."
+msgstr "Vai eliminar a nota. Esta acción non ten volta."
+
+#: front/src/components/manage/moderation/ReportCard.vue:120
+msgctxt "Content/Moderation/Message"
+msgid "The object associated with this report was deleted."
+msgstr "Eliminouse o obxeto asociado con este informe."
 
 #: front/src/components/playlists/Form.vue:14
 msgctxt "Content/Playlist/Error message.Title"
@@ -4205,51 +4522,47 @@ msgstr "Lista creada"
 #: front/src/components/federation/FetchButton.vue:37
 msgctxt "*/*/Error"
 msgid "The remote server answered with HTTP %{ status }"
-msgstr ""
+msgstr "O servidor remoto respondeu con HTTP %{ status }"
 
 #: front/src/components/federation/FetchButton.vue:13
 msgctxt "Popup/*/Message.Content"
-msgid ""
-"The remote server answered, but returned data was unsupported by Funkwhale."
-msgstr ""
+msgid "The remote server answered, but returned data was unsupported by Funkwhale."
+msgstr "O servidor remoto respondeu, pero o tipo de resposta non está soportado por Funkwhale."
 
 #: front/src/components/federation/FetchButton.vue:44
 msgctxt "*/*/Error"
-msgid "The remote server didn't answered fast enough"
-msgstr ""
+msgid "The remote server didn't respond quickly enough"
+msgstr "O servidor remoto non respondeu rápido abondo"
 
 #: front/src/components/federation/FetchButton.vue:50
 msgctxt "*/*/Error"
-msgid "The return server returned invalid JSON or JSON-LD data"
-msgstr ""
+msgid "The remote server returned invalid JSON or JSON-LD data"
+msgstr "O servidor remoto devolveu un datos JSON ou JSON-LD non válidos"
 
 #: front/src/components/manage/library/AlbumsTable.vue:189
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected albums will be removed, as well as associated tracks, uploads, "
-"favorites and listening history. This action is irreversible."
-msgstr ""
+msgid "The selected albums will be removed, as well as associated tracks, uploads, favorites and listening history. This action is irreversible."
+msgstr "Os álbumes seleccionados vanse eliminar, así como as pistas asociadas, subidas, favoritos e historial de escoita. Esta acción non é reversible."
 
 #: front/src/components/manage/library/ArtistsTable.vue:179
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected artist will be removed, as well as associated uploads, tracks, "
-"albums, favorites and listening history. This action is irreversible."
-msgstr ""
+msgid "The selected artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible."
+msgstr "Vaise eliminar o artista seleccionado, así como as subidas asociadas, cancións, álbumes, favoritos e historial de escoita. Esta acción é irreversible."
 
 #: front/src/components/manage/library/LibrariesTable.vue:206
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected library will be removed, as well as associated uploads and "
-"follows. This action is irreversible."
-msgstr ""
+msgid "The selected library will be removed, as well as associated uploads and follows. This action is irreversible."
+msgstr "Vaise eliminar a biblioteca seleccionada, así como as subidas asociadas e seguimentos. Esta acción é irreversible."
+
+#: front/src/components/manage/library/TagsTable.vue:180
+msgctxt "Popup/*/Paragraph"
+msgid "The selected tag will be removed and unlinked with existing content, if any. This action is irreversible."
+msgstr "Vas eliminar a etiqueta e desligala do contido existente, se o está. Esta acción non ten volta."
 
 #: front/src/components/manage/library/TracksTable.vue:189
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected tracks will be removed, as well as associated uploads, "
-"favorites and listening history. This action is irreversible."
-msgstr ""
+msgid "The selected tracks will be removed, as well as associated uploads, favorites and listening history. This action is irreversible."
+msgstr "As cancións seleccionadas vanse eliminar, así como as subidas asociadas, favoritos e historial de escoita. Esta acción é irreversible."
 
 #: front/src/components/manage/library/UploadsTable.vue:256
 msgctxt "Popup/*/Paragraph"
@@ -4259,7 +4572,7 @@ msgstr "Esta acción non é reversible."
 #: front/src/components/SetInstanceModal.vue:7
 msgctxt "Popup/Instance/Error message.List item"
 msgid "The server might be down"
-msgstr ""
+msgstr "Igoal non está a funcionar o servidor"
 
 #: front/src/components/auth/SubsonicTokenForm.vue:4
 msgctxt "Content/Settings/Paragraph"
@@ -4268,9 +4581,13 @@ msgstr "O API Subsonic non está dispoñible en esta instancia Funkwhale."
 
 #: front/src/components/library/EditCard.vue:96
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"The suggestion will be completely removed, this action is irreversible."
-msgstr ""
+msgid "The suggestion will be completely removed, this action is irreversible."
+msgstr "Vaise eliminar completamente a suxestión, a acción é irreversible."
+
+#: front/src/views/admin/library/TagDetail.vue:44
+msgctxt "Content/Moderation/Paragraph"
+msgid "The tag will be removed and unlinked from any existing entity. This action is irreversible."
+msgstr "Vas eliminar a etiqueta e desligala de calquera entidade existente. Esta acción non é reversible."
 
 #: front/src/components/playlists/PlaylistModal.vue:34
 msgctxt "Popup/Playlist/Error message.Title"
@@ -4280,14 +4597,12 @@ msgstr "Non podemos engadir a canción a lista de reprodución"
 #: front/src/components/audio/Player.vue:62
 msgctxt "Sidebar/Player/Error message.Title"
 msgid "The track cannot be loaded"
-msgstr ""
+msgstr "Non se puido cargar a canción"
 
-#: front/src/views/admin/library/TrackDetail.vue:74
+#: front/src/views/admin/library/TrackDetail.vue:80
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The track will be removed, as well as associated uploads, favorites and "
-"listening history. This action is irreversible."
-msgstr ""
+msgid "The track will be removed, as well as associated uploads, favorites and listening history. This action is irreversible."
+msgstr "Vaise eliminar a canción, así como as subidas asociadas, favoritos e historial de escoita. Esta acción é irreversible."
 
 #: front/src/views/admin/library/UploadDetail.vue:68
 msgctxt "Content/Moderation/Paragraph"
@@ -4319,27 +4634,41 @@ msgctxt "Content/Artist/Paragraph"
 msgid "This artist is present in the following libraries:"
 msgstr "Este artista está presente nas seguintes bibliotecas:"
 
+#: front/src/components/manage/moderation/DomainsTable.vue:169
+msgctxt "Content/Moderation/Popup"
+msgid "This domain is present in your allow-list"
+msgstr "Este dominio está presente na túa lista-permitido"
+
 #: front/src/views/admin/moderation/AccountsDetail.vue:84
-#: front/src/views/admin/moderation/DomainsDetail.vue:48
+#: front/src/views/admin/moderation/DomainsDetail.vue:76
 msgctxt "Content/Moderation/Card.Title"
 msgid "This domain is subject to specific moderation rules"
 msgstr "Este dominio está suxeito a regras específicas de moderación"
 
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:16
+msgctxt "Content/Moderation/Card.Title"
+msgid "This entity is subject to specific moderation rules"
+msgstr "Esta entidade está suxeita a regras específicas de moderación"
+
 #: front/src/views/content/Home.vue:9
 msgctxt "Content/Library/Paragraph"
 msgid "This instance offers up to %{quota} of storage space for every user."
 msgstr "Esta instancia ofrece %{quota} de almacenamento a cada usuaria."
 
+#: front/src/components/auth/Settings.vue:300
+msgctxt "Popup/Settings/Paragraph"
+msgid "This is irreversible and will permanently remove your data from our servers. You will we immediatly logged out."
+msgstr "Esto non ten volta e eliminará permanentemente os teus datos dos nosos servidorese. Serás desconectado inmediatamente."
+
 #: front/src/components/auth/Settings.vue:165
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"This is the list of applications that have access to your account data."
-msgstr ""
+msgid "This is the list of applications that have access to your account data."
+msgstr "Esta é unha lista das aplicacións que teñen acceso aos datos da túa conta."
 
 #: front/src/components/auth/Settings.vue:218
 msgctxt "Content/Settings/Paragraph"
 msgid "This is the list of applications that you have created."
-msgstr ""
+msgstr "Esta é a lista das aplicacións que ti creaches."
 
 #: front/src/components/auth/Profile.vue:16
 msgctxt "Content/Profile/Button.Paragraph"
@@ -4351,35 +4680,32 @@ msgctxt "Content/Library/Input.Placeholder"
 msgid "This library contains my personal music, I hope you like it."
 msgstr "Esta biblioteca contén a miña música persoal, espero que che guste."
 
-#: front/src/views/content/remote/Card.vue:141
+#: front/src/views/content/remote/Card.vue:169
 msgctxt "Content/Library/Card.Help text"
-msgid ""
-"This library is private and your approval from its owner is needed to access"
-" its content"
-msgstr ""
-"Esta biblioteca é privada e precisa que a usuaria lle conceda permiso para "
-"acceder ao contido"
+msgid "This library is private and your approval from its owner is needed to access its content"
+msgstr "Esta biblioteca é privada e precisa que a usuaria lle conceda permiso para acceder ao contido"
 
-#: front/src/views/content/remote/Card.vue:142
+#: front/src/views/content/remote/Card.vue:170
 msgctxt "Content/Library/Card.Help text"
 msgid "This library is public and you can access its content freely"
 msgstr "Esta biblioteca é pública e pode acceder ao contido libremente"
 
 #: front/src/components/common/ActionTable.vue:47
 msgctxt "Modal/*/Paragraph"
-msgid ""
-"This may affect a lot of elements or have irreversible consequences, please "
-"double check this is really what you want."
-msgstr ""
-"Esto podería afectar a moitos elementos ou ter consecuencias irreversibles, "
-"por favor comprobe si realmente é o que quere."
+msgid "This may affect a lot of elements or have irreversible consequences, please double check this is really what you want."
+msgstr "Esto podería afectar a moitos elementos ou ter consecuencias irreversibles, por favor comprobe si realmente é o que quere."
 
 #: front/src/components/library/AlbumEdit.vue:8
 #: front/src/components/library/ArtistEdit.vue:8
 #: front/src/components/library/TrackEdit.vue:8
 msgctxt "Content/*/Message"
 msgid "This object is managed by another server, you cannot edit it."
-msgstr ""
+msgstr "Este obxeto está xestionado en outro servidor, non podes editalo."
+
+#: front/src/components/Home.vue:87
+msgctxt "Content/Home/Paragraph"
+msgid "This pod runs Funkwhale, a community-driven project that lets you listen and share music and audio within a decentralized, open network."
+msgstr "Este servidor executa Funkwhale, un proxecto comunitario que che permite escoitar e compartir música e audios nunha rede descentralizada e aberta."
 
 #: front/src/components/library/FileUpload.vue:51
 msgctxt "Content/Library/Paragraph"
@@ -4389,15 +4715,13 @@ msgstr "Esta referencia usarase para agrupar os ficheiros importados."
 #: front/src/components/mixins/Translations.vue:33
 #: front/src/components/mixins/Translations.vue:34
 msgctxt "Content/Library/Help text"
-msgid "This track could not be processed, please it is tagged correctly"
-msgstr ""
-"Non se procesou esta canción, asegúrese que está correctamente etiquetada"
+msgid "This track could not be processed, please make sure it is tagged correctly"
+msgstr "Non se procesou esta canción, asegúrese que está correctamente etiquetada"
 
 #: front/src/components/mixins/Translations.vue:29
 #: front/src/components/mixins/Translations.vue:30
 msgctxt "Content/Library/Help text"
-msgid ""
-"This track has been uploaded, but hasn't been processed by the server yet"
+msgid "This track has been uploaded, but hasn't been processed by the server yet"
 msgstr "Canción subida, pero aínda non procesada polo servidor"
 
 #: front/src/components/mixins/Translations.vue:25
@@ -4406,99 +4730,93 @@ msgctxt "Content/Library/Help text"
 msgid "This track is already present in one of your libraries"
 msgstr "A canción xa está presente nunha das súas bibliotecas"
 
-#: front/src/components/audio/PlayButton.vue:85
+#: front/src/components/audio/PlayButton.vue:103
 msgctxt "*/Queue/Button/Title"
 msgid "This track is not available in any library you have access to"
-msgstr ""
-"Esta canción non está dispoñible en ningunha biblioteca a que teña acceso"
+msgstr "Esta canción non está dispoñible en ningunha biblioteca a que teña acceso"
 
 #: front/src/components/library/TrackDetail.vue:82
 msgctxt "Content/Track/Paragraph"
 msgid "This track is present in the following libraries:"
 msgstr "Esta canción está presente nas seguintes bibliotecas:"
 
-#: front/src/views/playlists/Detail.vue:38
+#: front/src/views/playlists/Detail.vue:46
 msgctxt "Popup/Playlist/Paragraph"
 msgid "This will completely delete this playlist and cannot be undone."
-msgstr ""
-"Eliminará completamente a lista de reprodución e non poderá voltar atrás."
+msgstr "Eliminará completamente a lista de reprodución e non poderá voltar atrás."
 
 #: front/src/views/radios/Detail.vue:27
 msgctxt "Popup/Radio/Paragraph"
 msgid "This will completely delete this radio and cannot be undone."
 msgstr "Eliminará completamente a radio e non ten volta atrás."
 
-#: front/src/components/auth/SubsonicTokenForm.vue:50
+#: front/src/components/auth/SubsonicTokenForm.vue:55
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will completely disable access to the Subsonic API using from account."
+msgid "This will completely disable access to the Subsonic API using from account."
 msgstr "Desactivará o acceso a API Subsonic desde a conta."
 
-#: front/src/components/auth/SubsonicTokenForm.vue:35
+#: front/src/components/manage/moderation/ReportCard.vue:359
+msgctxt "Content/Moderation/Popup,Paragraph"
+msgid "This will delete the object associated with this report and mark the report as resolved. The deletion is irreversible."
+msgstr "Esto vai eliminar o obxeto asociado a este informe e marcar o informe como resolto. Esta eliminación é irreversible."
+
+#: front/src/components/auth/SubsonicTokenForm.vue:40
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will log you out from existing devices that use the current password."
-msgstr ""
-"Será desconectada dos dispositivos existentes que utilicen o contrasinal "
-"actual."
+msgid "This will log you out from existing devices that use the current password."
+msgstr "Será desconectada dos dispositivos existentes que utilicen o contrasinal actual."
 
 #: front/src/components/auth/Settings.vue:253
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will permanently delete the application and all the associated tokens."
-msgstr ""
-"Eliminará completamente a lista de reprodución e non poderá voltar atrás."
+msgid "This will permanently delete the application and all the associated tokens."
+msgstr "Eliminará completamente a lista de reprodución e non poderá voltar atrás."
 
 #: front/src/components/auth/Settings.vue:194
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will prevent this application from accessing the service on your "
-"behalf."
-msgstr ""
+msgid "This will prevent this application from accessing the service on your behalf."
+msgstr "Esto evitará que a aplicación acceda ao servizo no seu nome."
 
 #: front/src/components/playlists/Editor.vue:54
 msgctxt "Popup/Playlist/Paragraph"
 msgid "This will remove all tracks from this playlist and cannot be undone."
-msgstr ""
-"Esto eliminará todas as cancións da lista de reprodución e non hai volta."
-
-#: front/src/views/admin/library/AlbumDetail.vue:99
-#: front/src/views/admin/library/TrackDetail.vue:98 src/edits.js:21
-#: src/edits.js:39
-msgctxt "*/*/*/Noun"
-msgid "Title"
-msgstr "Título"
+msgstr "Esto eliminará todas as cancións da lista de reprodución e non hai volta."
 
 #: front/src/components/audio/track/Table.vue:7
-#: front/src/views/content/libraries/FilesTable.vue:55
-msgctxt "Content/Track/*/Noun"
-msgid "Title"
-msgstr "Título"
-
 #: front/src/components/manage/library/AlbumsTable.vue:39
 #: front/src/components/manage/library/TracksTable.vue:39
-msgctxt "*/*/*"
+#: front/src/views/admin/library/AlbumDetail.vue:105
+#: front/src/views/admin/library/TrackDetail.vue:104
+#: front/src/views/content/libraries/FilesTable.vue:55 src/edits.js:36
+#: front/src/edits.js:62
+msgctxt "*/*/*/Noun"
 msgid "Title"
 msgstr "Título"
 
 #: front/src/components/SetInstanceModal.vue:16
 msgctxt "Popup/Instance/Paragraph"
-msgid ""
-"To continue, please select the Funkwhale instance you want to connect to. "
-"Enter the address directly, or select one of the suggested choices."
-msgstr ""
+msgid "To continue, please select the Funkwhale instance you want to connect to. Enter the address directly, or select one of the suggested choices."
+msgstr "Para continuar, escolle a instancia de Funkwhale a que te queres conectar. Introducir o enderezo directamente, ou escoller unha das opcións suxeridas."
+
+#: front/src/components/ShortcutsModal.vue:148
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle favorite"
+msgstr "Marca de favorito"
+
+#: front/src/components/ShortcutsModal.vue:132
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle mute"
+msgstr "Activar silencio"
 
-#: front/src/components/ShortcutsModal.vue:79
+#: front/src/components/ShortcutsModal.vue:136
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Toggle queue looping"
 msgstr "Activar a repetición da cola"
 
-#: front/src/views/admin/library/AlbumDetail.vue:222
-#: front/src/views/admin/library/ArtistDetail.vue:211
-#: front/src/views/admin/library/LibraryDetail.vue:200
-#: front/src/views/admin/library/TrackDetail.vue:274
-#: front/src/views/admin/moderation/AccountsDetail.vue:317
-#: front/src/views/admin/moderation/DomainsDetail.vue:225
+#: front/src/views/admin/library/AlbumDetail.vue:238
+#: front/src/views/admin/library/ArtistDetail.vue:226
+#: front/src/views/admin/library/LibraryDetail.vue:219
+#: front/src/views/admin/library/TrackDetail.vue:290
+#: front/src/views/admin/moderation/AccountsDetail.vue:329
+#: front/src/views/admin/moderation/DomainsDetail.vue:262
 msgctxt "Content/Moderation/Table.Label"
 msgid "Total size"
 msgstr "Tamaño total"
@@ -4508,20 +4826,18 @@ msgctxt "Content/Library/Card.Help text"
 msgid "Total size of the files in this library"
 msgstr "Tamaño total dos ficheiros de esta biblioteca"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:105
+#: front/src/views/admin/moderation/DomainsDetail.vue:142
 msgctxt "Content/*/*"
 msgid "Total users"
 msgstr "Conta de usuarias"
 
-#: front/src/views/admin/library/UploadDetail.vue:199
-msgctxt "*/*/*"
-msgid "Track"
-msgstr "Canción"
-
-#: front/src/components/audio/SearchBar.vue:27
-#: front/src/components/library/TrackBase.vue:173
+#: front/src/components/audio/SearchBar.vue:34
+#: front/src/components/library/TrackBase.vue:188
 #: front/src/components/library/TrackDetail.vue:128
 #: front/src/components/metadata/Search.vue:138
+#: src/components/mixins/Report.vue:28
+#: front/src/views/admin/library/UploadDetail.vue:199
+#: front/src/components/mixins/Report.vue:29
 msgctxt "*/*/*/Noun"
 msgid "Track"
 msgstr "Canción"
@@ -4529,9 +4845,9 @@ msgstr "Canción"
 #: front/src/components/library/EditCard.vue:13
 msgctxt "Content/Library/Card/Short"
 msgid "Track #%{ id } - %{ name }"
-msgstr ""
+msgstr "Canción #%{ id } - % { name }"
 
-#: front/src/views/admin/library/TrackDetail.vue:91
+#: front/src/views/admin/library/TrackDetail.vue:97
 msgctxt "Content/Moderation/Title"
 msgid "Track data"
 msgstr "Nome da canción"
@@ -4541,30 +4857,28 @@ msgctxt "Content/Track/Title/Noun"
 msgid "Track information"
 msgstr "Información da canción"
 
-#: front/src/components/mixins/Translations.vue:50
-#: front/src/components/mixins/Translations.vue:51
+#: front/src/components/mixins/Translations.vue:60
+#: front/src/components/mixins/Translations.vue:61
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Track name"
 msgstr "Nome da canción"
 
-#: front/src/components/instance/Stats.vue:54
 #: front/src/components/library/AlbumDetail.vue:19
-#: front/src/components/playlists/PlaylistModal.vue:47
-#: front/src/views/admin/moderation/AccountsDetail.vue:362
-#: front/src/views/admin/moderation/DomainsDetail.vue:274
-#: front/src/views/content/Base.vue:8 src/views/content/libraries/Detail.vue:8
-#: front/src/views/playlists/Detail.vue:51 src/views/radios/Detail.vue:34
-msgctxt "*/*/*/Noun"
-msgid "Tracks"
-msgstr "Cancións"
-
+#: front/src/components/library/TagDetail.vue:36
 #: front/src/components/manage/library/AlbumsTable.vue:42
 #: front/src/components/manage/library/ArtistsTable.vue:42
-#: front/src/views/admin/library/AlbumDetail.vue:252
-#: front/src/views/admin/library/ArtistDetail.vue:251
+#: front/src/components/manage/library/TagsTable.vue:44
+#: front/src/components/playlists/PlaylistModal.vue:47
+#: front/src/views/admin/library/AlbumDetail.vue:268
+#: front/src/views/admin/library/ArtistDetail.vue:266
 #: front/src/views/admin/library/Base.vue:14
-#: front/src/views/admin/library/LibraryDetail.vue:229
+#: front/src/views/admin/library/LibraryDetail.vue:248
+#: front/src/views/admin/library/TagDetail.vue:143
 #: front/src/views/admin/library/TracksList.vue:24
+#: front/src/views/admin/moderation/AccountsDetail.vue:374
+#: front/src/views/admin/moderation/DomainsDetail.vue:311
+#: front/src/views/content/Base.vue:8 src/views/content/libraries/Detail.vue:8
+#: front/src/views/playlists/Detail.vue:76 src/views/radios/Detail.vue:34
 msgctxt "*/*/*"
 msgid "Tracks"
 msgstr "Cancións"
@@ -4574,79 +4888,64 @@ msgctxt "Content/Artist/Title"
 msgid "Tracks by this artist"
 msgstr "Cancións de este artista"
 
-#: front/src/components/instance/Stats.vue:25
-msgctxt "Content/About/Paragraph/Unit"
-msgid "Tracks favorited"
-msgstr "Cancións favorecidas"
-
-#: front/src/components/instance/Stats.vue:19
-msgctxt "Content/About/Paragraph/Unit"
-msgid "tracks listened"
-msgstr "cancións escoitadas"
-
 #: front/src/components/library/radios/Filter.vue:44
 msgctxt "Popup/Radio/Title/Noun"
 msgid "Tracks matching filter"
 msgstr "Filtro coincidente da canción"
 
 #: front/src/components/library/TrackDetail.vue:57
+#: front/src/components/manage/moderation/ReportCard.vue:134
 #: front/src/views/admin/library/UploadDetail.vue:250
+#: front/src/views/admin/moderation/AccountsDetail.vue:181
 msgctxt "Content/Track/Table.Label/Noun"
 msgid "Type"
 msgstr "Tipo"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:180
-msgctxt "Content/Moderation/Table.Label/Noun"
-msgid "Type"
-msgstr "Tipo"
-
 #: front/src/components/manage/moderation/AccountsTable.vue:44
-#: front/src/components/manage/moderation/DomainsTable.vue:42
+#: front/src/components/manage/moderation/DomainsTable.vue:50
 msgctxt "Content/Moderation/Table.Label/Short"
 msgid "Under moderation rule"
 msgstr "Baixo regra de moderación"
 
-#: front/src/views/content/remote/Card.vue:109
-#: src/views/content/remote/Card.vue:114
+#: front/src/components/ShortcutsModal.vue:68
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Unfocus searchbar"
+msgstr "Saír da barra de busca"
+
+#: front/src/views/content/remote/Card.vue:122
+#: src/views/content/remote/Card.vue:127
 msgctxt "*/Library/Button.Label/Verb"
 msgid "Unfollow"
 msgstr "Deixar de seguir"
 
-#: front/src/views/content/remote/Card.vue:110
+#: front/src/views/content/remote/Card.vue:123
 msgctxt "Popup/Library/Title"
 msgid "Unfollow this library?"
 msgstr "Deixar de seguir biblioteca?"
 
-#: front/src/components/About.vue:17
-msgctxt "Content/About/Paragraph"
-msgid ""
-"Unfortunately, the owners of this instance did not yet take the time to "
-"complete this page."
-msgstr ""
-"Desgraciadamente os donos de esta instancia non tiveron tempo de completar "
-"esta páxina."
-
 #: front/src/components/federation/FetchButton.vue:54
 #: front/src/components/federation/FetchButton.vue:55
-msgctxt "*/*/Error"
-msgid "Unknowkn error"
-msgstr ""
-
 #: front/src/components/library/ImportStatusModal.vue:144
-msgctxt "Popup/Import/Error.Label"
-msgid "Unkwown error"
-msgstr ""
-
-#: front/src/components/Home.vue:37
-msgctxt "Content/Home/Title"
-msgid "Unlimited music"
-msgstr "Música sen límites"
+msgctxt "*/*/Error"
+msgid "Unknown error"
+msgstr "Fallo descoñecido"
 
-#: front/src/components/audio/Player.vue:630
+#: front/src/components/audio/Player.vue:656
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Unmute"
 msgstr "Dar voz"
 
+#: front/src/components/manage/moderation/ReportCard.vue:225
+msgctxt "Content/*/Button.Label"
+msgid "Unresolve"
+msgstr "Non resolto"
+
+#: front/src/components/manage/moderation/ReportCard.vue:67
+#: front/src/views/admin/moderation/ReportsList.vue:23
+msgctxt "Content/*/*/Short"
+msgid "Unresolved"
+msgstr "Non resolto"
+
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:57
 msgctxt "Content/Moderation/Card.Button.Label/Verb"
 msgid "Update"
@@ -4710,34 +5009,27 @@ msgstr "Data de subida"
 
 #: front/src/components/library/FileUpload.vue:258
 msgctxt "Content/Library/Help text"
-msgid ""
-"Upload denied, ensure the file is not too big and that you have not reached "
-"your quota"
-msgstr ""
-"Subida denegada, asegúrese de que o ficheiro non é demasiado grande e que "
-"non acadou o límite de cuota"
+msgid "Upload denied, ensure the file is not too big and that you have not reached your quota"
+msgstr "Subida denegada, asegúrese de que o ficheiro non é demasiado grande e que non acadou o límite de cuota"
 
 #: front/src/components/library/ImportStatusModal.vue:8
 msgctxt "Popup/Import/Message"
 msgid "Upload is still pending and will soon be processed by the server."
-msgstr ""
+msgstr "A subida está pendente e axiña será procesada polo servidor."
 
 #: front/src/views/content/Home.vue:7
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Upload music files (MP3, OGG, FLAC, etc.) from your personal library "
-"directly from your browser to enjoy them here."
-msgstr ""
-"Subir ficheiros de música (MP3, OGG, FLAC, etc.) desde a súa biblioteca "
-"persoal co seu navegador e desfrútea aquí."
+msgid "Upload music files (MP3, OGG, FLAC, etc.) from your personal library directly from your browser to enjoy them here."
+msgstr "Subir ficheiros de música (MP3, OGG, FLAC, etc.) desde a súa biblioteca persoal co seu navegador e desfrútea aquí."
 
 #: front/src/components/library/FileUpload.vue:30
 msgctxt "Content/Library/Title/Verb"
 msgid "Upload new tracks"
 msgstr "Subir novas cancións"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:298
-msgctxt "Content/Moderation/Table.Label/Noun"
+#: front/src/components/About.vue:99
+#: front/src/views/admin/moderation/AccountsDetail.vue:309
+msgctxt "*/*/*"
 msgid "Upload quota"
 msgstr "Cota de subida"
 
@@ -4748,15 +5040,13 @@ msgstr "Caducou a subida, inténteo de novo"
 
 #: front/src/components/library/ImportStatusModal.vue:14
 msgctxt "Popup/Import/Message"
-msgid ""
-"Upload was skipped because a similar one is already available in one of your"
-" libraries."
-msgstr ""
+msgid "Upload was skipped because a similar one is already available in one of your libraries."
+msgstr "A subida non se realizou porque xa ten unha semellante dispoñible nunha das súas bibliotecas."
 
 #: front/src/components/library/ImportStatusModal.vue:11
 msgctxt "Popup/Import/Message"
 msgid "Upload was successfully processed by the server."
-msgstr ""
+msgstr "A subida non se procesou correctamente polo servidor."
 
 #: front/src/components/library/FileUpload.vue:109
 msgctxt "Content/Library/Table"
@@ -4773,74 +5063,81 @@ msgctxt "Content/Library/Table"
 msgid "Uploading…"
 msgstr "Subindo…"
 
+#: front/src/components/manage/library/LibrariesTable.vue:52
+#: front/src/components/manage/moderation/AccountsTable.vue:41
+#: front/src/components/mixins/Translations.vue:75
+#: front/src/views/admin/library/AlbumDetail.vue:258
+#: front/src/views/admin/library/ArtistDetail.vue:246
 #: front/src/views/admin/library/Base.vue:20
+#: front/src/views/admin/library/LibraryDetail.vue:258
+#: front/src/views/admin/library/TrackDetail.vue:310
 #: front/src/views/admin/library/UploadsList.vue:24
+#: front/src/views/admin/moderation/AccountsDetail.vue:349
+#: front/src/views/admin/moderation/DomainsDetail.vue:281
+#: front/src/components/mixins/Translations.vue:76
 msgctxt "*/*/*"
 msgid "Uploads"
 msgstr "Subidas"
 
-#: front/src/components/manage/moderation/AccountsTable.vue:41
-#: front/src/components/mixins/Translations.vue:63
-#: front/src/views/admin/library/AlbumDetail.vue:242
-#: front/src/views/admin/library/ArtistDetail.vue:231
-#: front/src/views/admin/library/LibraryDetail.vue:239
-#: front/src/views/admin/library/TrackDetail.vue:294
-#: front/src/views/admin/moderation/AccountsDetail.vue:337
-#: front/src/views/admin/moderation/DomainsDetail.vue:244
-#: front/src/components/mixins/Translations.vue:64
-msgctxt "Content/Moderation/Table.Label/Noun"
-msgid "Uploads"
-msgstr "Subidas"
-
-#: front/src/components/manage/library/LibrariesTable.vue:52
-msgctxt "Content/*/*/Noun"
-msgid "Uploads"
-msgstr "Subidas"
-
 #: front/src/components/auth/ApplicationForm.vue:16
 msgctxt "Content/Applications/Help Text"
-msgid ""
-"Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is "
-"not served on the web."
-msgstr ""
+msgid "Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is not served on the web."
+msgstr "Utilice \"urn:ietf:wg:oauth:2.0:oob\" como unha URI de redirección se as aplicacións non son mostradas na web."
 
 #: front/src/components/Footer.vue:16
 msgctxt "Footer/*/List item.Link"
 msgid "Use another instance"
 msgstr "Utilizar outra instancia"
 
+#: front/src/components/Home.vue:146
+msgctxt "Content/Home/Link"
+msgid "Use Funkwhale on other devices with our apps"
+msgstr "Utilice Funkwhale en outros dispositivos coas nosas apps"
+
+#: front/src/components/moderation/ReportModal.vue:44
+msgctxt "*/*/Field,Help"
+msgid "Use this field to provide additional context to the moderator that will handle your report."
+msgstr "Utilice este campo para proporcionar contexto adicional a moderación para xestionar o seu informe."
+
 #: front/src/views/auth/PasswordReset.vue:12
 msgctxt "Content/Signup/Paragraph"
-msgid ""
-"Use this form to request a password reset. We will send an email to the "
-"given address with instructions to reset your password."
-msgstr ""
-"Utilice este formulario para solicitar o restablecemento do contrasinal. "
-"Enviarémoslle un correo-e con instrucións para restablecelo."
+msgid "Use this form to request a password reset. We will send an email to the given address with instructions to reset your password."
+msgstr "Utilice este formulario para solicitar o restablecemento do contrasinal. Enviarémoslle un correo-e con instrucións para restablecelo."
+
+#: front/src/components/moderation/ReportModal.vue:18
+msgctxt "*/Moderation/Popup,Paragraph"
+msgid "Use this form to submit a report to our moderation team."
+msgstr "Utilice este formulario para enviar un informe ao equipo de moderación."
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:111
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Use this setting to temporarily enable/disable the policy without completely"
-" removing it."
-msgstr ""
-"Utilice este axuste para activar/desactivar temporalmente a condición sen "
-"elminala completamente."
+msgid "Use this setting to temporarily enable/disable the policy without completely removing it."
+msgstr "Utilice este axuste para activar/desactivar temporalmente a condición sen elminala completamente."
 
 #: front/src/components/manage/users/InvitationsTable.vue:49
 msgctxt "Content/Admin/Table"
 msgid "Used"
 msgstr "Utilizado"
 
+#: front/src/components/Home.vue:125
+msgctxt "Content/Home/Header"
+msgid "Useful links"
+msgstr "Ligazóns útiles"
+
 #: front/src/views/content/libraries/Detail.vue:26
 msgctxt "Content/Library/Table.Label"
 msgid "User"
 msgstr "Usuaria"
 
-#: front/src/components/instance/Stats.vue:5
-msgctxt "Content/About/Title/Noun"
-msgid "User activity"
-msgstr "Actividade da usuaria"
+#: front/src/components/Home.vue:154
+msgctxt "Content/Home/Link"
+msgid "User guides"
+msgstr "Guías para a usuaria"
+
+#: front/src/views/admin/Settings.vue:88
+msgctxt "Content/Admin/Menu"
+msgid "User Interface"
+msgstr "Interface de usuaria"
 
 #: front/src/components/library/AlbumDetail.vue:26
 #: front/src/components/library/ArtistDetail.vue:39
@@ -4854,35 +5151,35 @@ msgctxt "Content/Radio/Title"
 msgid "User radios"
 msgstr "Radios da usuaria"
 
-#: front/src/components/auth/Signup.vue:19
+#: front/src/components/auth/SignupForm.vue:15
 #: front/src/components/manage/users/UsersTable.vue:37
-#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:71
 #: front/src/views/admin/moderation/AccountsDetail.vue:114
-#: front/src/components/mixins/Translations.vue:60
+#: front/src/components/mixins/Translations.vue:72
 msgctxt "Content/*/*"
 msgid "Username"
 msgstr "Nome de usuaria"
 
-#: front/src/components/auth/Login.vue:15
+#: front/src/components/auth/LoginForm.vue:11
 msgctxt "Content/Login/Input.Label/Noun"
 msgid "Username or email"
 msgstr "Nome de usuaria ou correo-e"
 
-#: front/src/components/instance/Stats.vue:13
-msgctxt "Content/About/Paragraph/Unit"
-msgid "users"
-msgstr "usuarias"
-
-#: front/src/components/Sidebar.vue:102
-#: front/src/components/manage/moderation/DomainsTable.vue:39
-#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/Sidebar.vue:106
+#: front/src/components/manage/moderation/DomainsTable.vue:47
+#: front/src/components/mixins/Translations.vue:73
 #: src/views/admin/Settings.vue:81 front/src/views/admin/users/Base.vue:5
 #: src/views/admin/users/UsersList.vue:21
-#: front/src/components/mixins/Translations.vue:62
+#: front/src/components/mixins/Translations.vue:74
 msgctxt "*/*/*/Noun"
 msgid "Users"
 msgstr "Usuarias"
 
+#: front/src/components/Home.vue:110
+msgctxt "Content/Home/Paragraph"
+msgid "Users on this pod also get %{ quota } of free storage to upload their own content!"
+msgstr "As usuarias de este servidor tamén teñen %{ quota } de almacenaxe gratuíta para o seu contido!"
+
 #: front/src/components/Footer.vue:29
 msgctxt "Footer/*/Title"
 msgid "Using Funkwhale"
@@ -4900,45 +5197,58 @@ msgctxt "Content/Library/Link/Verb"
 msgid "View files"
 msgstr "Ver ficheiros"
 
-#: front/src/components/library/AlbumBase.vue:81
-#: front/src/components/library/ArtistBase.vue:92
-#: front/src/components/library/TrackBase.vue:100
-#: front/src/views/admin/library/AlbumDetail.vue:42
-#: front/src/views/admin/library/ArtistDetail.vue:41
+#: front/src/components/library/AlbumBase.vue:95
+#: front/src/components/library/ArtistBase.vue:107
+#: front/src/components/library/TrackBase.vue:111
+#: front/src/views/admin/library/AlbumDetail.vue:48
+#: front/src/views/admin/library/ArtistDetail.vue:46
 #: front/src/views/admin/library/LibraryDetail.vue:34
 #: front/src/views/admin/library/LibraryDetail.vue:45
-#: front/src/views/admin/library/TrackDetail.vue:41
+#: front/src/views/admin/library/TagDetail.vue:32
+#: front/src/views/admin/library/TrackDetail.vue:47
 #: front/src/views/admin/library/UploadDetail.vue:35
 #: front/src/views/admin/library/UploadDetail.vue:46
 #: front/src/views/admin/moderation/AccountsDetail.vue:37
 #: front/src/views/admin/moderation/AccountsDetail.vue:45
+#: front/src/views/admin/moderation/DomainsDetail.vue:30
 msgctxt "Content/Moderation/Link/Verb"
 msgid "View in Django's admin"
-msgstr ""
+msgstr "Ver na admin de Django"
+
+#: front/src/components/Home.vue:169
+msgctxt "Content/Home/Link"
+msgid "View more…"
+msgstr "Ver máis…"
 
-#: front/src/components/library/AlbumBase.vue:61
-#: front/src/components/library/ArtistBase.vue:72
-#: front/src/components/library/TrackBase.vue:80
+#: front/src/components/library/AlbumBase.vue:62
+#: front/src/components/library/ArtistBase.vue:73
+#: front/src/components/library/TrackBase.vue:78
 #: front/src/components/metadata/ArtistCard.vue:49
 #: front/src/components/metadata/ReleaseCard.vue:53
 msgctxt "Content/*/*/Clickable, Verb"
 msgid "View on MusicBrainz"
 msgstr "Ver en MusicBrainz"
 
+#: front/src/components/manage/moderation/ReportCard.vue:124
+msgctxt "Content/Moderation/Link"
+msgid "View public page"
+msgstr "Ver páxina pública"
+
 #: front/src/components/manage/library/LibrariesTable.vue:11
 #: front/src/components/manage/library/LibrariesTable.vue:51
 #: front/src/components/manage/library/UploadsTable.vue:11
 #: front/src/components/manage/library/UploadsTable.vue:63
 #: front/src/views/admin/library/LibraryDetail.vue:94
 #: front/src/views/admin/library/UploadDetail.vue:101
+#: front/src/views/content/libraries/Form.vue:18
 msgctxt "*/*/*"
 msgid "Visibility"
 msgstr "Visibilidade"
 
-#: front/src/views/content/libraries/Form.vue:18
-msgctxt "Content/Library/Dropdown.Label"
-msgid "Visibility"
-msgstr "Visibilidade"
+#: front/src/components/Home.vue:91
+msgctxt "Content/Home/Link"
+msgid "Visit funkwhale.audio"
+msgstr "Visita funkwhale.audio"
 
 #: front/src/components/library/AlbumDetail.vue:4
 msgctxt "Content/Album/"
@@ -4950,7 +5260,12 @@ msgctxt "Popup/*/Loading.Title"
 msgid "Waiting for result…"
 msgstr "Cargando as favoritas…"
 
-#: front/src/components/auth/Login.vue:7
+#: front/src/components/auth/Settings.vue:285
+msgctxt "Content/Settings/Error message.Title"
+msgid "We cannot delete your account"
+msgstr "Non podemos eliminar a túa conta"
+
+#: front/src/components/auth/LoginForm.vue:3
 msgctxt "Content/Login/Error message.Title"
 msgid "We cannot log you in"
 msgstr "Non podemos conectala"
@@ -4960,42 +5275,37 @@ msgctxt "Content/*/Error message.Title"
 msgid "We cannot save your changes"
 msgstr "Non podemos crear a súa conta"
 
-#: front/src/components/Home.vue:122
-msgctxt "Content/Home/List item"
-msgid "We do not track you or bother you with ads"
-msgstr "Nin a perseguimos na internet nin molestamos con publicidade"
+#: front/src/views/Notifications.vue:39
+msgctxt "Content/Notifications/Paragraph"
+msgid "We noticed you've been here for a while. If Funkwhale is useful to you, we could use your help to make it even better!"
+msgstr "Levas por aquí un anaco. Se Funkwhale che resulta útil, poderiamos utilizar a túa axuda para facelo aínda mellor!"
 
 #: front/src/components/library/FileUpload.vue:39
 msgctxt "Content/Library/Link"
 msgid "We recommend using Picard for that purpose."
 msgstr "Recomendámoslle utilizar Picard para ese propósito."
 
-#: front/src/components/Home.vue:7
-msgctxt "Content/Home/Title"
-msgid "We think listening to music should be simple."
-msgstr "Cremos que escoitar música  debería ser simple."
+#: front/src/components/moderation/ReportModal.vue:35
+msgctxt "*/*/Field,Help"
+msgid "We'll use this email if we need to contact you regarding this report."
+msgstr "Utilizaremos este correo se precisamos contactar contigo referente a este informe."
 
-#: front/src/components/Home.vue:148
+#: front/src/components/Home.vue:207
 msgctxt "Head/Home/Title"
 msgid "Welcome"
 msgstr "Benvida"
 
 #: front/src/components/Home.vue:5
-msgctxt "Content/Home/Title/Verb"
-msgid "Welcome on Funkwhale"
-msgstr "Benvida a Funkwhale"
+msgctxt "Content/Home/Header"
+msgid "Welcome to %{ podName }!"
+msgstr "Ben vida a %{ podName }!"
 
-#: front/src/components/Home.vue:24
-msgctxt "Content/Home/Title"
-msgid "Why funkwhale?"
-msgstr "Por qué funkwhale?"
-
-#: front/src/components/audio/EmbedWizard.vue:13
+#: front/src/components/audio/EmbedWizard.vue:23
 msgctxt "Popup/Embed/Input.Label"
 msgid "Widget height"
 msgstr "Alto do trebello"
 
-#: front/src/components/audio/EmbedWizard.vue:6
+#: front/src/components/audio/EmbedWizard.vue:16
 msgctxt "Popup/Embed/Input.Label"
 msgid "Widget width"
 msgstr "Ancho do trebello"
@@ -5003,21 +5313,23 @@ msgstr "Ancho do trebello"
 #: front/src/components/auth/ApplicationForm.vue:157
 msgctxt "Content/OAuth Scopes/Label/Verb"
 msgid "Write"
-msgstr ""
+msgstr "Escribir"
 
 #: front/src/components/auth/Authorize.vue:21
 msgctxt "Content/Auth/Label/Noun"
 msgid "Write-only"
-msgstr ""
+msgstr "Só-escritura"
 
 #: front/src/components/auth/ApplicationForm.vue:158
 msgctxt "Content/OAuth Scopes/Help Text"
 msgid "Write-only access to user data"
-msgstr ""
+msgstr "Acceso de só-escritura aos datos de usuario"
 
-#: front/src/components/Sidebar.vue:129
+#: front/src/components/Sidebar.vue:133
 #: front/src/components/manage/moderation/AccountsTable.vue:72
-#: front/src/components/manage/moderation/DomainsTable.vue:58
+#: front/src/components/manage/moderation/DomainsTable.vue:12
+#: front/src/components/manage/moderation/DomainsTable.vue:69
+#: front/src/views/admin/moderation/DomainsDetail.vue:109
 msgctxt "*/*/*"
 msgid "Yes"
 msgstr "Si"
@@ -5029,33 +5341,23 @@ msgstr "Si, desconectádeme!"
 
 #: front/src/views/content/libraries/Form.vue:19
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You are able to share your library with other people, regardless of its "
-"visibility."
-msgstr ""
-"Pode compartir a biblioteca con outa xente, independentemente da súa "
-"visibilidade."
+msgid "You are able to share your library with other people, regardless of its visibility."
+msgstr "Pode compartir a biblioteca con outa xente, independentemente da súa visibilidade."
 
 #: front/src/components/library/FileUpload.vue:32
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You are about to upload music to your library. Before proceeding, please "
-"ensure that:"
+msgid "You are about to upload music to your library. Before proceeding, please ensure that:"
 msgstr "Vai subir música a súa biblioteca. Antes de seguir, asegúrese de que:"
 
 #: front/src/components/SetInstanceModal.vue:12
 msgctxt "Popup/Login/Paragraph"
-msgid ""
-"You are currently connected to <a href=\"%{ url }\" target=\"_blank\">%{ "
-"hostname }&nbsp;<i class=\"external icon\"/></a>. If you continue, you will "
-"be disconnected from your current instance and all your local data will be "
-"deleted."
-msgstr ""
+msgid "You are currently connected to <a href=\"%{ url }\" target=\"_blank\">%{ hostname }&nbsp;<i class=\"external icon\"/></a>. If you continue, you will be disconnected from your current instance and all your local data will be deleted."
+msgstr "Estás conectada a <a href=\"%{ url }\" target=\"_blank\">%{ hostname }<i class=\"external icon\"/></a>. Se continúas serás desconectada da instancia actual e os teus datos serán eliminados."
 
 #: front/src/components/library/ArtistDetail.vue:6
 msgctxt "Content/Artist/Paragraph"
 msgid "You are currently hiding content related to this artist."
-msgstr ""
+msgstr "Actualmente estás a ocultar contido relacionado con este artista."
 
 #: front/src/components/auth/Logout.vue:7
 msgctxt "Content/Login/Paragraph"
@@ -5064,64 +5366,43 @@ msgstr "Está conectada como %{ username }"
 
 #: front/src/components/library/FileUpload.vue:35
 msgctxt "Content/Library/List item"
-msgid ""
-"You are not uploading copyrighted content in a public library, otherwise you"
-" may be infringing the law"
-msgstr ""
+msgid "You are not uploading copyrighted content in a public library, otherwise you may be infringing the law"
+msgstr "Non estás a subir contido con copyright a unha biblioteca pública, de outro xeito poderías faltarlle a lei"
 
 #: front/src/components/SetInstanceModal.vue:98
 msgctxt "*/Instance/Message"
 msgid "You are now using the Funkwhale instance at %{ url }"
-msgstr ""
+msgstr "Estás utilizando a instancia Funkwhale en %{ url }"
 
 #: front/src/views/content/Home.vue:17
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You can follow libraries from other users to get access to new music. Public"
-" libraries can be followed immediatly, while following a private library "
-"requires approval from its owner."
-msgstr ""
-"Pode seguir bibliotecas de outras usuarias para acceder a nova música. As "
-"bibliotecas públicas pódense seguir inmediatamente, mentras que as privadas "
-"precisan que a usuaria lle conceda acceso."
-
-#: front/src/components/Home.vue:128
-msgctxt "Content/Home/List item"
-msgid ""
-"You can invite friends and family to your instance so they can enjoy your "
-"music"
-msgstr ""
-"Pode convidar amigos e familiares a súa instancia para que desfruten da súa "
-"música"
+msgid "You can follow libraries from other users to get access to new music. Public libraries can be followed immediately, while following a private library requires approval from its owner."
+msgstr "Podes seguir bibliotecas de outras usuarias para acceder a nova música. As bibliotecas públicas pódense seguir inmediatamente, mentras que as privadas precisan que a usuaria che conceda acceso."
 
 #: front/src/components/moderation/FilterModal.vue:31
 msgctxt "Popup/Moderation/Paragraph"
-msgid ""
-"You can manage and update your filters anytime from your account settings."
-msgstr ""
+msgid "You can manage and update your filters any time from your account settings."
+msgstr "Podes xestionar e actualizar os teus filtros desde os axustes da túa conta."
 
 #: front/src/views/auth/EmailConfirm.vue:24
 msgctxt "Content/Signup/Paragraph"
 msgid "You can now use the service without limitations."
 msgstr "Xa pode utilizar o servizo sen limitacións."
 
+#: front/src/components/auth/Settings.vue:278
+msgctxt "Content/Settings/Paragraph'"
+msgid "You can permanently and irreversibly delete your account and all the associated data using the form below. You will be asked for confirmation."
+msgstr "Podes eliminar de xeito irreversible epermanente a túa conta e todos os datos asociados utilizando o formulario inferior. Pedirase confirmación."
+
 #: front/src/components/library/radios/Builder.vue:7
 msgctxt "Content/Radio/Paragraph"
-msgid ""
-"You can use this interface to build your own custom radio, which will play "
-"tracks according to your criteria."
-msgstr ""
-"Pode utilizar esta interface para construír a súa propia radio, que "
-"reproducirá cancións segundo o seu criterio."
+msgid "You can use this interface to build your own custom radio, which will play tracks according to your criteria."
+msgstr "Pode utilizar esta interface para construír a súa propia radio, que reproducirá cancións segundo o seu criterio."
 
 #: front/src/components/auth/SubsonicTokenForm.vue:7
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"You can use those to enjoy your playlist and music in offline mode, on your "
-"smartphone or tablet, for instance."
-msgstr ""
-"Pode utilizalos para desfrutar da súa lista de reprodución e música en modo "
-"fora de liña, no seu dispositivo móbil ou tableta, por exemplo."
+msgid "You can use those to enjoy your playlist and music in offline mode, on your smartphone or tablet, for instance."
+msgstr "Pode utilizalos para desfrutar da súa lista de reprodución e música en modo fora de liña, no seu dispositivo móbil ou tableta, por exemplo."
 
 #: front/src/components/auth/Settings.vue:202
 msgctxt "Content/Applications/Paragraph"
@@ -5138,19 +5419,17 @@ msgctxt "Content/Moderation/Card.Title"
 msgid "You don't have any rule in place for this account."
 msgstr "Non ten ningunha regra activada para esta conta."
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:39
+#: front/src/views/admin/moderation/DomainsDetail.vue:67
 msgctxt "Content/Moderation/Card.Title"
 msgid "You don't have any rule in place for this domain."
 msgstr "Non ten ningunha regra activada para este dominio."
 
 #: front/src/components/library/EditForm.vue:52
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You don't have the permission to edit this object, but you can suggest "
-"changes. Once submitted, suggestions will be reviewed before approval."
-msgstr ""
+msgid "You don't have the permission to edit this object, but you can suggest changes. Once submitted, suggestions will be reviewed before approval."
+msgstr "Non tes permiso para editar este obxeto, pero podes suxerir cambios. Unha vez enviados serán revisados antes da súa aprobación."
 
-#: front/src/components/Sidebar.vue:171
+#: front/src/components/Sidebar.vue:175
 msgctxt "Sidebar/Player/Title"
 msgid "You have a radio playing"
 msgstr "Ten a radio a funcionar"
@@ -5162,40 +5441,38 @@ msgstr "Podería ter problemas de conectividade."
 
 #: front/src/components/auth/Settings.vue:100
 msgctxt "Popup/Settings/List item"
-msgid ""
-"You will be logged out from this session and have to log in with the new one"
+msgid "You will be logged out from this session and have to log in with the new one"
 msgstr "Será desconectada de esta sesión e deberá conectar co novo"
 
 #: front/src/components/auth/Authorize.vue:51
 msgctxt "Content/Auth/Paragraph"
 msgid "You will be redirected to <strong>%{ url }</strong>"
-msgstr ""
+msgstr "Vas ser redirixida a <strong>%{ url }</strong>"
 
 #: front/src/components/auth/Authorize.vue:49
 msgctxt "Content/Auth/Paragraph"
 msgid "You will be shown a code to copy-paste in the application."
-msgstr ""
+msgstr "Vaiseche mostrar un código para copiar-pegar na aplicación."
 
 #: front/src/components/auth/Settings.vue:71
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"You will have to update your password on your clients that use this "
-"password."
-msgstr ""
-"Deberá actualizar o contrasinal nos seus clientes que utilicen este "
-"contrasinal."
+msgid "You will have to update your password on your clients that use this password."
+msgstr "Deberá actualizar o contrasinal nos seus clientes que utilicen este contrasinal."
 
 #: front/src/components/moderation/FilterModal.vue:20
 msgctxt "Popup/Moderation/Paragraph"
-msgid ""
-"You will not see tracks, albums and user activity linked to this artist "
-"anymore:"
-msgstr ""
+msgid "You will not see tracks, albums and user activity linked to this artist any more:"
+msgstr "Non voltarás a ver as cancións, álbumes e actividade relacionados con este artista:"
 
-#: front/src/components/auth/Signup.vue:13
+#: front/src/components/auth/SignupForm.vue:9
 msgctxt "Content/Signup/Form/Paragraph"
 msgid "Your account cannot be created."
-msgstr "Lista creada"
+msgstr "Non se pode crear a conta."
+
+#: front/src/components/auth/Settings.vue:281
+msgctxt "Content/Settings/Paragraph'"
+msgid "Your account will be deleted from our servers within a few minutes. We will also notify other servers who may have a copy of some of your data so they can proceed to deletion. Please note that some of these servers may be offline or unwilling to comply though."
+msgstr "Vaise eliminar a túa conta dos nosos servidores dentro duns minutos. Contactaremos con outros servidores que puidesen ter unha copia dos teus datos para que os borren. Por favor, ten en conta que algún de estos servidores podería estar desconectado ou non poder levar a fin a operación."
 
 #: front/src/components/auth/Settings.vue:215
 msgctxt "Content/Settings/Title/Noun"
@@ -5205,24 +5482,29 @@ msgstr "As súas notificacións"
 #: front/src/components/auth/Settings.vue:38
 msgctxt "Content/Settings/Error message.Title"
 msgid "Your avatar cannot be saved"
-msgstr ""
+msgstr "Non se gardou o avatar"
+
+#: front/src/components/auth/Settings.vue:527
+msgctxt "*/Auth/Message"
+msgid "Your deletion request was submitted, your account and content will be deleted shortly"
+msgstr "Enviouse a solicitude de borrado, o contido da conta eliminarase en breve"
 
 #: front/src/components/library/EditForm.vue:3
 msgctxt "Content/Library/Paragraph"
 msgid "Your edit was successfully submitted."
-msgstr ""
+msgstr "Enviouse correctamente a edición."
 
 #: front/src/components/favorites/List.vue:116
 msgctxt "Head/Favorites/Title"
 msgid "Your Favorites"
 msgstr "As súas Favoritas"
 
-#: front/src/components/Home.vue:109
-msgctxt "Content/Home/Title"
-msgid "Your music, your way"
-msgstr "A súa música, o seu xeito"
+#: front/src/views/Notifications.vue:5
+msgctxt "Content/Notifications/Title"
+msgid "Your messages"
+msgstr "Mensaxes"
 
-#: front/src/views/Notifications.vue:4
+#: front/src/views/Notifications.vue:69
 msgctxt "Content/Notifications/Title"
 msgid "Your notifications"
 msgstr "As súas notificacións"
@@ -5230,7 +5512,7 @@ msgstr "As súas notificacións"
 #: front/src/components/auth/Settings.vue:76
 msgctxt "Content/Settings/Error message.Title"
 msgid "Your password cannot be changed"
-msgstr ""
+msgstr "Non se pode cambiar o contrasinal"
 
 #: front/src/views/auth/PasswordResetConfirm.vue:29
 msgctxt "Content/Signup/Card.Paragraph"
@@ -5239,44 +5521,39 @@ msgstr "O seu contrasinal foi actualizado correctamente."
 
 #: front/src/components/auth/Settings.vue:14
 msgctxt "Content/Settings/Error message.Title"
-msgid "Your settings can't be updateds"
-msgstr "Axustes actualizados"
+msgid "Your settings can't be updated"
+msgstr "Non se actualizaron os axustes"
 
 #: front/src/components/auth/Settings.vue:101
 msgctxt "Popup/Settings/List item"
-msgid ""
-"Your Subsonic password will be changed to a new, random one, logging you out"
-" from devices that used the old Subsonic password"
-msgstr ""
-"O seu contrasinal Subsonic será cambiado por un novo, aleatorio, "
-"desconectándoa de todos os dispositivos que utilicen os contrasinal antigo"
+msgid "Your Subsonic password will be changed to a new, random one, logging you out from devices that used the old Subsonic password"
+msgstr "O seu contrasinal Subsonic será cambiado por un novo, aleatorio, desconectándoa de todos os dispositivos que utilicen os contrasinal antigo"
 
-#: front/src/edits.js:47
-msgctxt "*/*/*/Short, Noun"
-msgid "Position"
-msgstr "Paxinación"
+#: front/src/entities.js:126
+msgctxt "*/*/*/Noun"
+msgid "MusicBrainz ID"
+msgstr "ID en MusicBrainz"
 
-#: front/src/edits.js:54
-msgctxt "Content/Track/*/Noun"
-msgid "Copyright"
-msgstr "Copyright"
+#: front/src/main.js:110
+msgctxt "*/Error/Paragraph"
+msgid "You sent too many requests and have been rate limited, please try again in %{ delay }"
+msgstr "Enviaches demasiadas solicitudes en pouco tempo, inténtao de novo en %{ delay }"
 
-#: front/src/components/library/AlbumBase.vue:183
-#, fuzzy
+#: front/src/main.js:113
+msgctxt "*/Error/Paragraph"
+msgid "You sent too many requests and have been rate limited, please try again later"
+msgstr "Enviaches demasiadas solicitudes en pouco tempo, por favor inténtao máis tarde"
+
+#: front/src/components/library/AlbumBase.vue:208
 msgctxt "Content/Album/Header.Title"
-msgid ""
-"Album containing %{ count } track, by <a class=\"internal\" href=\"%{ "
-"artistUrl }\">%{ artist }</a>"
-msgid_plural ""
-"Album containing %{ count } tracks, by <a class=\"internal\" href=\"%{ "
-"artistUrl }\">%{ artist }</a>"
-msgstr[0] "Álbume que contén %{ count } canción, de %{ artist }"
-msgstr[1] "Álbume que contén %{ count } cancións, de %{ artist }"
-
-#: front/src/components/audio/PlayButton.vue:220
-#, fuzzy
+msgid "Album containing %{ count } track, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgid_plural "Album containing %{ count } tracks, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgstr[0] "Álbume que contén %{ count } canción, de <a class=\"internal\" href=\"%{ artistUrl }\"> %{ artist }</a>"
+msgstr[1] "Álbume que contén %{ count } cancións, de <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+
+#: front/src/components/audio/PlayButton.vue:246
 msgctxt "*/Queue/Message"
 msgid "%{ count } track was added to your queue"
 msgid_plural "%{ count } tracks were added to your queue"
-msgstr[0] "Engadiuse %{ count } canción a cola"
+msgstr[0] "Engadeuse %{ count } canción a cola"
 msgstr[1] "Engadíronse %{ count } cancións a cola"
diff --git a/front/locales/it/LC_MESSAGES/app.po b/front/locales/it/LC_MESSAGES/app.po
index c145b715f23be550cbe6c84cd3239a90133ca3ae..6665f3409ee3d20ad3959e22fe27aa6aca468599 100644
--- a/front/locales/it/LC_MESSAGES/app.po
+++ b/front/locales/it/LC_MESSAGES/app.po
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: front 1.0.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-05-16 10:35+0200\n"
-"PO-Revision-Date: 2019-05-03 10:33+0000\n"
+"POT-Creation-Date: 2019-10-01 15:15+0200\n"
+"PO-Revision-Date: 2019-10-01 11:44+0000\n"
 "Last-Translator: Sylke Vicious <silkevicious@tuta.io>\n"
 "Language-Team: none\n"
 "Language: it\n"
@@ -16,7 +16,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.2.2\n"
+"X-Generator: Weblate 3.7\n"
 
 #: front/src/components/playlists/PlaylistModal.vue:9
 msgctxt "Popup/Playlist/Paragraph"
@@ -38,6 +38,53 @@ msgctxt "Content/Auth/Title"
 msgid "%{ app } wants to access your Funkwhale account"
 msgstr "%{ app } vuole accedere al tuo account Funkwhale"
 
+#: front/src/components/About.vue:173 src/components/Home.vue:56
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } active user"
+msgid_plural "%{ count } active users"
+msgstr[0] "%{ count } traccia"
+msgstr[1] "%{ count } tracce"
+
+#: front/src/components/About.vue:182
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } albums"
+msgid_plural "%{ count } albums"
+msgstr[0] "%{ count } traccia"
+msgstr[1] "%{ count } tracce"
+
+#: front/src/components/About.vue:152
+msgctxt "*/*/*"
+msgid "%{ count } allowed domains"
+msgid_plural "%{ count } allowed domains"
+msgstr[0] "%{ count } dominio consentito"
+msgstr[1] "%{ count } domini consentiti"
+
+#: front/src/components/About.vue:179
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } artists"
+msgid_plural "%{ count } artists"
+msgstr[0] "%{ count } traccia"
+msgstr[1] "%{ count } tracce"
+
+#: front/src/components/About.vue:176 src/components/Home.vue:59
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } hour of music"
+msgid_plural "%{ count } hours of music"
+msgstr[0] "%{ count } traccia"
+msgstr[1] "%{ count } tracce"
+
+#: front/src/components/About.vue:188
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } listenings"
+msgid_plural "%{ count } listenings"
+msgstr[0] "%{ count } traccia"
+msgstr[1] "%{ count } tracce"
+
 #: front/src/components/common/ActionTable.vue:68
 msgctxt "Content/*/Paragraph"
 msgid "%{ count } on %{ total } selected"
@@ -45,9 +92,9 @@ msgid_plural "%{ count } on %{ total } selected"
 msgstr[0] "%{ count } su %{ total } selezionato"
 msgstr[1] "%{ count } su %{ total } selezionati"
 
-#: front/src/components/Sidebar.vue:121 src/components/audio/album/Card.vue:52
+#: front/src/components/Sidebar.vue:125 src/components/audio/album/Card.vue:52
 #: front/src/views/content/libraries/Card.vue:40
-#: src/views/content/remote/Card.vue:30
+#: src/views/content/remote/Card.vue:43
 msgctxt "*/*/*"
 msgid "%{ count } track"
 msgid_plural "%{ count } tracks"
@@ -68,7 +115,15 @@ msgid_plural "%{ count } tracks matching combined filters"
 msgstr[0] "%{ count } traccia corrisponde ai filtri selezionati"
 msgstr[1] "%{ count } tracce corrispondono ai filtri selezionati"
 
-#: front/src/components/playlists/Card.vue:18
+#: front/src/components/About.vue:185
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } tracks"
+msgid_plural "%{ count } tracks"
+msgstr[0] "%{ count } traccia"
+msgstr[1] "%{ count } tracce"
+
+#: front/src/components/playlists/Card.vue:28
 msgctxt "Content/*/Card/List item"
 msgid "%{ count} track"
 msgid_plural "%{ count } tracks"
@@ -93,9 +148,7 @@ msgstr "%{ minutes } min"
 #: front/src/components/notifications/NotificationRow.vue:40
 msgctxt "Content/Notifications/Paragraph"
 msgid "%{ username } accepted your follow on library \"%{ library }\""
-msgstr ""
-"%{ username } ha accettato la tua richiesta di seguire la libreria \"%{ "
-"library }\""
+msgstr "%{ username } ha accettato la tua richiesta di seguire la libreria \"%{ library }\""
 
 #: front/src/components/notifications/NotificationRow.vue:39
 msgctxt "Content/Notifications/Paragraph"
@@ -114,12 +167,10 @@ msgstr "Profilo di %{ username }"
 
 #: front/src/components/playlists/PlaylistModal.vue:21
 msgctxt "Popup/Playlist/Paragraph"
-msgid ""
-"<strong>%{ track }</strong> is already in <strong>%{ playlist }</strong>."
-msgstr ""
-"<strong>%{ track }</strong> è già nella <strong>%{ playlist }</strong>."
+msgid "<strong>%{ track }</strong> is already in <strong>%{ playlist }</strong>."
+msgstr "<strong>%{ track }</strong> è già nella <strong>%{ playlist }</strong>."
 
-#: front/src/components/audio/artist/Card.vue:41
+#: front/src/components/audio/artist/Card.vue:11
 msgctxt "Content/Artist/Card"
 msgid "1 album"
 msgid_plural "%{ count } albums"
@@ -133,24 +184,44 @@ msgid_plural "%{ count } favorites"
 msgstr[0] "1 mi piace"
 msgstr[1] "%{ count } mi piace"
 
-#: front/src/components/Home.vue:64
-msgctxt "Content/Home/Title"
-msgid "A clean library"
-msgstr "Una libreria pulita"
+#: front/src/components/audio/artist/Card.vue:15
+#, fuzzy
+msgctxt "Content/Artist/Card"
+msgid "1 track"
+msgid_plural "%{ count } tracks"
+msgstr[0] "Aggiungi traccia"
+msgstr[1] "Aggiungi traccia"
+
+#: front/src/views/Notifications.vue:21 src/views/Notifications.vue:55
+msgctxt "*/*/*"
+msgid "30 days"
+msgstr "30 giorni"
+
+#: front/src/views/Notifications.vue:22 src/views/Notifications.vue:56
+msgctxt "*/*/*"
+msgid "60 days"
+msgstr "60 giorni"
+
+#: front/src/views/Notifications.vue:23 src/views/Notifications.vue:57
+msgctxt "*/*/*"
+msgid "90 days"
+msgstr "90 giorni"
 
 #: front/src/components/library/FileUpload.vue:264
+#, fuzzy
 msgctxt "Content/Library/Help text"
-msgid "A network error occured while uploading this file"
+msgid "A network error occurred while uploading this file"
 msgstr "C'è stato un errore durante il caricamento di questo file"
 
-#: front/src/components/library/EditForm.vue:145
+#: front/src/components/library/EditForm.vue:161
 msgctxt "*/*/Placeholder"
 msgid "A short summary describing your changes."
 msgstr "Un breve riassunto che descrive le tue modifiche."
 
 #: front/src/components/About.vue:5
-msgctxt "Content/About/Title/Short, Noun"
-msgid "About %{ instance }"
+#, fuzzy
+msgctxt "Content/Home/Header"
+msgid "About %{ podName }"
 msgstr "A proposito di %{ instance }"
 
 #: front/src/components/Footer.vue:6
@@ -158,7 +229,7 @@ msgctxt "Footer/About/Title"
 msgid "About %{instanceName}"
 msgstr "A proposito di %{instanceName}"
 
-#: front/src/components/Footer.vue:45
+#: front/src/components/Footer.vue:53 src/components/Home.vue:85
 msgctxt "Footer/*/Title/Short"
 msgid "About Funkwhale"
 msgstr "A proposito di Funkwhale"
@@ -168,9 +239,16 @@ msgctxt "Footer/About/List item.Link"
 msgid "About page"
 msgstr "Pagina di informazioni"
 
-#: front/src/components/About.vue:8 src/components/About.vue:67
-msgctxt "Content/About/Title"
-msgid "About this instance"
+#: front/src/components/Home.vue:19
+#, fuzzy
+msgctxt "Content/Home/Header"
+msgid "About this Funkwhale pod"
+msgstr "A proposito di Funkwhale"
+
+#: front/src/components/About.vue:21 src/components/About.vue:51
+#, fuzzy
+msgctxt "Content/About/Header"
+msgid "About this pod"
 msgstr "A proposito di questa istanza"
 
 #: front/src/views/content/libraries/Detail.vue:48
@@ -183,96 +261,87 @@ msgctxt "Content/Library/Table/Short"
 msgid "Accepted"
 msgstr "Accettato"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:110
+#: front/src/components/auth/SubsonicTokenForm.vue:117
 msgctxt "Content/Settings/Message"
 msgid "Access disabled"
 msgstr "Accesso disabilitato"
 
-#: front/src/components/mixins/Translations.vue:73
-#: front/src/components/mixins/Translations.vue:74
+#: front/src/components/mixins/Translations.vue:85
+#: front/src/components/mixins/Translations.vue:86
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to audio files, libraries, artists, albums and tracks"
 msgstr "Accedi ai file audio, librerie, artisti, album e tracce"
 
-#: front/src/components/mixins/Translations.vue:97
-#: front/src/components/mixins/Translations.vue:98
+#: front/src/components/mixins/Translations.vue:109
+#: front/src/components/mixins/Translations.vue:110
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to content filters"
 msgstr "Accesso ai filtri del contenuto"
 
-#: front/src/components/mixins/Translations.vue:105
-#: front/src/components/mixins/Translations.vue:106
+#: front/src/components/mixins/Translations.vue:117
+#: front/src/components/mixins/Translations.vue:118
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to edits"
 msgstr "Accesso alle modifiche"
 
-#: front/src/components/mixins/Translations.vue:69
-#: front/src/components/mixins/Translations.vue:70
+#: front/src/components/mixins/Translations.vue:81
+#: front/src/components/mixins/Translations.vue:82
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to email, username, and profile information"
 msgstr "Accedi ad email, nome utente e informazioni del profilo"
 
-#: front/src/components/mixins/Translations.vue:77
-#: front/src/components/mixins/Translations.vue:78
+#: front/src/components/mixins/Translations.vue:89
+#: front/src/components/mixins/Translations.vue:90
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to favorites"
 msgstr "Accesso ai preferiti"
 
-#: front/src/components/mixins/Translations.vue:85
-#: front/src/components/mixins/Translations.vue:86
+#: front/src/components/mixins/Translations.vue:97
+#: front/src/components/mixins/Translations.vue:98
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to follows"
 msgstr "Accesso ai seguiti"
 
-#: front/src/components/mixins/Translations.vue:81
-#: front/src/components/mixins/Translations.vue:82
+#: front/src/components/mixins/Translations.vue:93
+#: front/src/components/mixins/Translations.vue:94
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to listening history"
 msgstr "Accedi alla cronologia di ascolto"
 
-#: front/src/components/mixins/Translations.vue:101
-#: front/src/components/mixins/Translations.vue:102
+#: front/src/components/mixins/Translations.vue:113
+#: front/src/components/mixins/Translations.vue:114
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to notifications"
 msgstr "Accesso alle notifiche"
 
-#: front/src/components/mixins/Translations.vue:89
-#: front/src/components/mixins/Translations.vue:90
+#: front/src/components/mixins/Translations.vue:101
+#: front/src/components/mixins/Translations.vue:102
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to playlists"
 msgstr "Accesso alle playlist"
 
-#: front/src/components/mixins/Translations.vue:93
-#: front/src/components/mixins/Translations.vue:94
+#: front/src/components/mixins/Translations.vue:105
+#: front/src/components/mixins/Translations.vue:106
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to radios"
 msgstr "Accesso alle radio"
 
-#: front/src/components/Home.vue:101
-msgctxt "Content/Home/List item"
-msgid ""
-"Access your music from a clean interface that focuses on what really matters"
-msgstr ""
-"Accedi alla tua musica da un'interfaccia pulita che si focalizza su quello "
-"che conta davvero"
-
 #: front/src/components/manage/library/UploadsTable.vue:67
-#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:55
 #: front/src/views/admin/library/UploadDetail.vue:175
-#: front/src/components/mixins/Translations.vue:46
+#: front/src/components/mixins/Translations.vue:56
 msgctxt "Content/*/*/Noun"
 msgid "Accessed date"
 msgstr "Data di accesso"
 
-#: front/src/views/admin/library/LibraryDetail.vue:104
-#: front/src/views/admin/library/UploadDetail.vue:111
-msgctxt "*/*/*/Noun"
-msgid "Account"
-msgstr "Account"
-
 #: front/src/components/manage/library/LibrariesTable.vue:49
 #: front/src/components/manage/library/UploadsTable.vue:61
-msgctxt "*/*/*"
+#: front/src/components/manage/moderation/ReportCard.vue:156
+#: front/src/components/mixins/Report.vue:13
+#: front/src/views/admin/library/LibraryDetail.vue:113
+#: front/src/views/admin/library/UploadDetail.vue:111
+#: front/src/components/mixins/Report.vue:14
+msgctxt "*/*/*/Noun"
 msgid "Account"
 msgstr "Account"
 
@@ -286,7 +355,7 @@ msgctxt "Content/Settings/Title"
 msgid "Account settings"
 msgstr "Impostazioni dell'account"
 
-#: front/src/components/auth/Settings.vue:479
+#: front/src/components/auth/Settings.vue:544
 msgctxt "Head/Settings/Title"
 msgid "Account Settings"
 msgstr "Impostazioni dell'account"
@@ -303,7 +372,7 @@ msgstr "Email dell'account"
 
 #: front/src/views/admin/moderation/AccountsList.vue:3
 #: front/src/views/admin/moderation/AccountsList.vue:24
-#: front/src/views/admin/moderation/Base.vue:8
+#: front/src/views/admin/moderation/Base.vue:11
 msgctxt "*/Moderation/Title"
 msgid "Accounts"
 msgstr "Account"
@@ -316,31 +385,30 @@ msgstr "Azione"
 #: front/src/components/common/ActionTable.vue:101
 msgctxt "Content/*/Paragraph"
 msgid "Action %{ action } was launched successfully on %{ count } element"
-msgid_plural ""
-"Action %{ action } was launched successfully on %{ count } elements"
-msgstr[0] ""
-"L'azione %{ action } è stata lanciata con successo su %{ count } elemento"
-msgstr[1] ""
-"L'azione %{ action } è stata lanciata con successo su %{ count } elementi"
+msgid_plural "Action %{ action } was launched successfully on %{ count } elements"
+msgstr[0] "L'azione %{ action } è stata lanciata con successo su %{ count } elemento"
+msgstr[1] "L'azione %{ action } è stata lanciata con successo su %{ count } elementi"
 
 #: front/src/components/common/ActionTable.vue:22
 #: front/src/components/library/radios/Builder.vue:65
+#: front/src/components/manage/moderation/ReportCard.vue:210
 msgctxt "Content/*/*/Noun"
 msgid "Actions"
 msgstr "Azioni"
 
-#: front/src/components/manage/users/UsersTable.vue:53
+#: front/src/components/manage/users/UsersTable.vue:54
 msgctxt "Content/Admin/Table"
 msgid "Active"
 msgstr "Attivo"
 
-#: front/src/views/admin/library/AlbumDetail.vue:134
-#: front/src/views/admin/library/ArtistDetail.vue:123
-#: front/src/views/admin/library/LibraryDetail.vue:138
-#: front/src/views/admin/library/TrackDetail.vue:186
+#: front/src/views/admin/library/AlbumDetail.vue:140
+#: front/src/views/admin/library/ArtistDetail.vue:128
+#: front/src/views/admin/library/LibraryDetail.vue:147
+#: front/src/views/admin/library/TagDetail.vue:83
+#: front/src/views/admin/library/TrackDetail.vue:192
 #: front/src/views/admin/library/UploadDetail.vue:160
-#: front/src/views/admin/moderation/AccountsDetail.vue:220
-#: front/src/views/admin/moderation/DomainsDetail.vue:136
+#: front/src/views/admin/moderation/AccountsDetail.vue:221
+#: front/src/views/admin/moderation/DomainsDetail.vue:173
 msgctxt "Content/Moderation/Title"
 msgid "Activity"
 msgstr "Attività"
@@ -351,7 +419,7 @@ msgctxt "Content/Settings/Dropdown.Label/Noun"
 msgid "Activity visibility"
 msgstr "Visibilità dell'attività"
 
-#: front/src/views/admin/moderation/DomainsList.vue:18
+#: front/src/views/admin/moderation/DomainsList.vue:22
 msgctxt "Content/Moderation/Button/Verb"
 msgid "Add"
 msgstr "Aggiungi"
@@ -397,7 +465,21 @@ msgctxt "Content/Radio/Paragraph"
 msgid "Add filters to customize your radio"
 msgstr "Aggiungi filtri per personalizzare la tua radio"
 
-#: front/src/components/audio/PlayButton.vue:75
+#: front/src/components/manage/moderation/NoteForm.vue:12
+#, fuzzy
+msgctxt "Content/Moderation/Button.Label/Verb"
+msgid "Add note"
+msgstr "Aggiungi contenuto"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:191
+#: front/src/views/admin/moderation/DomainsDetail.vue:46
+#: front/src/views/admin/moderation/DomainsList.vue:18
+#, fuzzy
+msgctxt "Content/Moderation/Action/Verb"
+msgid "Add to allow-list"
+msgstr "Aggiungi alla playlist…"
+
+#: front/src/components/audio/PlayButton.vue:91
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Add to current queue"
 msgstr "Aggiungi alla coda attuale"
@@ -429,7 +511,7 @@ msgctxt "Popup/Playlist/Table.Button.Label/Verb"
 msgid "Add track"
 msgstr "Aggiungi traccia"
 
-#: front/src/components/manage/users/UsersTable.vue:69
+#: front/src/components/manage/users/UsersTable.vue:70
 msgctxt "Content/Admin/Table.User role"
 msgid "Admin"
 msgstr "Amministratore"
@@ -439,49 +521,49 @@ msgctxt "Sidebar/Admin/Title/Noun"
 msgid "Administration"
 msgstr "Amministrazione"
 
-#: front/src/views/admin/library/TrackDetail.vue:107
-msgctxt "*/*/*/Noun"
-msgid "Album"
-msgstr "Album"
-
-#: front/src/components/audio/SearchBar.vue:26
+#: front/src/components/audio/SearchBar.vue:33
 #: src/components/audio/track/Table.vue:9
-#: front/src/components/library/AlbumBase.vue:152
-#: front/src/components/library/ArtistBase.vue:194
+#: front/src/components/library/AlbumBase.vue:170
+#: front/src/components/library/ArtistBase.vue:212
 #: front/src/components/manage/library/TracksTable.vue:40
 #: front/src/components/metadata/Search.vue:134
+#: src/components/mixins/Report.vue:41
+#: front/src/views/admin/library/TrackDetail.vue:113
 #: front/src/views/content/libraries/FilesTable.vue:57
+#: front/src/components/mixins/Report.vue:42
 msgctxt "*/*/*"
 msgid "Album"
 msgstr "Album"
 
-#: front/src/views/admin/library/TrackDetail.vue:128
+#: front/src/views/admin/library/TrackDetail.vue:134
 msgctxt "*/*/*/Noun"
 msgid "Album artist"
 msgstr "Artista dell'album"
 
-#: front/src/views/admin/library/AlbumDetail.vue:92
+#: front/src/views/admin/library/AlbumDetail.vue:98
 msgctxt "Content/Moderation/Title"
 msgid "Album data"
 msgstr "Dati dell'album"
 
-#: front/src/components/mixins/Translations.vue:51
-#: front/src/components/mixins/Translations.vue:52
+#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/mixins/Translations.vue:62
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Album name"
 msgstr "Nome album"
 
 #: front/src/components/audio/Search.vue:19
-#: src/components/instance/Stats.vue:48
-#: front/src/components/library/Albums.vue:120
-#: src/components/library/Library.vue:7
+#: src/components/library/Albums.vue:129
+#: front/src/components/library/Library.vue:7
+#: src/components/library/TagDetail.vue:28
 #: front/src/components/manage/library/ArtistsTable.vue:41
+#: front/src/components/manage/library/TagsTable.vue:43
 #: front/src/views/admin/library/AlbumsList.vue:24
-#: front/src/views/admin/library/ArtistDetail.vue:241
+#: front/src/views/admin/library/ArtistDetail.vue:256
 #: front/src/views/admin/library/Base.vue:11
-#: front/src/views/admin/library/LibraryDetail.vue:219
-#: front/src/views/admin/moderation/AccountsDetail.vue:354
-#: front/src/views/admin/moderation/DomainsDetail.vue:264
+#: front/src/views/admin/library/LibraryDetail.vue:238
+#: front/src/views/admin/library/TagDetail.vue:133
+#: front/src/views/admin/moderation/AccountsDetail.vue:366
+#: front/src/views/admin/moderation/DomainsDetail.vue:301
 msgctxt "*/*/*"
 msgid "Albums"
 msgstr "Albums"
@@ -495,7 +577,10 @@ msgstr "Albums di questo artista"
 #: front/src/components/manage/library/LibrariesTable.vue:13
 #: front/src/components/manage/library/UploadsTable.vue:13
 #: front/src/components/manage/library/UploadsTable.vue:22
+#: front/src/components/manage/moderation/DomainsTable.vue:11
 #: front/src/components/manage/users/InvitationsTable.vue:19
+#: front/src/components/moderation/ReportCategoryDropdown.vue:32
+#: front/src/views/admin/moderation/ReportsList.vue:17
 #: front/src/views/content/libraries/FilesTable.vue:13
 msgctxt "Content/*/Dropdown"
 msgid "All"
@@ -513,45 +598,57 @@ msgctxt "Head/Authorize/Title"
 msgid "Allow application"
 msgstr "Permetti applicazione"
 
+#: front/src/components/About.vue:136
+msgctxt "*/*/*"
+msgid "Allow-list"
+msgstr "Lista dei consentiti"
+
+#: front/src/components/About.vue:149
+#, fuzzy
+msgctxt "*/*/*"
+msgid "Allowed domains"
+msgstr "Aggiungi un dominio"
+
 #: front/src/components/library/ImportStatusModal.vue:17
+#, fuzzy
 msgctxt "Popup/Import/Message"
-msgid ""
-"An error occured during upload processing. You will find more information "
-"below."
-msgstr ""
-"Si è verificato un errore durante l'elaborazione del caricamento. Troverai "
-"maggiori informazioni qui sotto."
+msgid "An error occurred during upload processing. You will find more information below."
+msgstr "Si è verificato un errore durante l'elaborazione del caricamento. Troverai maggiori informazioni qui sotto."
 
 #: front/src/components/playlists/Editor.vue:13
+#, fuzzy
 msgctxt "Content/Playlist/Error message.Title"
-msgid "An error occured while saving your changes"
+msgid "An error occurred while saving your changes"
 msgstr "C'è stato un errore durante il salvataggio delle tue modifiche"
 
 #: front/src/components/federation/FetchButton.vue:21
+#, fuzzy
 msgctxt "Popup/*/Message.Content"
-msgid "An error occured while trying to refresh data:"
-msgstr ""
-"Si è verificato un errore durante il tentativo di aggiornamento dei dati:"
+msgid "An error occurred while trying to refresh data:"
+msgstr "Si è verificato un errore durante il tentativo di aggiornamento dei dati:"
 
 #: front/src/components/federation/FetchButton.vue:41
+#, fuzzy
 msgctxt "*/*/Error"
-msgid "An HTTP error occured while contacting the remote server"
+msgid "An HTTP error occurred while contacting the remote server"
 msgstr "Si è verificato un errore HTTP contattando il server remoto"
 
-#: front/src/components/auth/Login.vue:10
-msgctxt "Content/Login/Error message/List item"
-msgid ""
-"An unknown error happend, this can mean the server is down or cannot be "
-"reached"
-msgstr ""
-"Si è verificato un errore sconosciuto, questo significa che il server è "
-"offline o non può essere raggiunto"
-
 #: front/src/components/library/ImportStatusModal.vue:145
+#, fuzzy
 msgctxt "Popup/Import/Error.Label"
-msgid "An unkwown error occured"
+msgid "An unknown error occurred"
 msgstr "Si è verificato un errore sconosciuto"
 
+#: front/src/components/About.vue:123
+msgctxt "*/*/*"
+msgid "Anonymous access"
+msgstr "Accesso anonimo"
+
+#: front/src/components/moderation/ReportModal.vue:54
+msgctxt "Popup/Moderation/Error message"
+msgid "Anonymous reports are disabled, please sign-in to submit a report."
+msgstr "Le segnalazioni anonime sono disabilitate, per favore accedi per inviare una segnalazione."
+
 #: front/src/components/auth/Settings.vue:175
 #: src/components/auth/Settings.vue:225
 msgctxt "*/*/*/Noun"
@@ -570,12 +667,8 @@ msgstr "ID Applicazione"
 
 #: front/src/components/auth/ApplicationEdit.vue:16
 msgctxt "Content/Application/Paragraph/"
-msgid ""
-"Application ID and secret are really sensitive values and must be treated "
-"like passwords. Do not share those with anyone else."
-msgstr ""
-"L'ID dell'applicazione e il suo secret sono valori molto sensibili e devono "
-"essere trattati come password. Non condividerli con nessun altro."
+msgid "Application ID and secret are really sensitive values and must be treated like passwords. Do not share those with anyone else."
+msgstr "L'ID dell'applicazione e il suo secret sono valori molto sensibili e devono essere trattati come password. Non condividerli con nessun altro."
 
 #: front/src/components/auth/ApplicationEdit.vue:25
 msgctxt "Content/Applications/Label"
@@ -604,29 +697,27 @@ msgctxt "Content/Login/Title"
 msgid "Are you sure you want to log out?"
 msgstr "Sei sicuro di volerti disconnettere?"
 
+#: front/src/components/audio/SearchBar.vue:32
+#: src/components/audio/track/Table.vue:8
 #: front/src/components/manage/library/AlbumsTable.vue:40
 #: front/src/components/manage/library/TracksTable.vue:41
-msgctxt "*/*/*"
-msgid "Artist"
-msgstr "Artista"
-
-#: front/src/components/audio/SearchBar.vue:25
-#: src/components/audio/track/Table.vue:8
 #: front/src/components/metadata/Search.vue:130
-#: front/src/views/admin/library/AlbumDetail.vue:108
-#: front/src/views/admin/library/TrackDetail.vue:118
-#: front/src/views/content/libraries/FilesTable.vue:56
+#: src/components/mixins/Report.vue:55
+#: front/src/views/admin/library/AlbumDetail.vue:114
+#: front/src/views/admin/library/TrackDetail.vue:124
+#: front/src/views/content/libraries/FilesTable.vue:56 src/entities.js:12
+#: front/src/components/mixins/Report.vue:56
 msgctxt "*/*/*/Noun"
 msgid "Artist"
 msgstr "Artista"
 
-#: front/src/views/admin/library/ArtistDetail.vue:91
+#: front/src/views/admin/library/ArtistDetail.vue:96
 msgctxt "Content/Moderation/Title"
 msgid "Artist data"
 msgstr "Dati dell'artista"
 
-#: front/src/components/mixins/Translations.vue:52
-#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/mixins/Translations.vue:62
+#: front/src/components/mixins/Translations.vue:63
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Artist name"
 msgstr "Nome dell'artista"
@@ -636,36 +727,36 @@ msgctxt "*/Search/Input.Placeholder"
 msgid "Artist, album, track…"
 msgstr "Artista, album, traccia…"
 
+#: front/src/components/audio/Search.vue:10
+#: src/components/library/Artists.vue:117
+#: front/src/components/library/Library.vue:10
+#: front/src/components/library/TagDetail.vue:19
+#: front/src/components/manage/library/TagsTable.vue:42
 #: front/src/views/admin/library/ArtistsList.vue:24
 #: front/src/views/admin/library/Base.vue:8
-#: front/src/views/admin/library/LibraryDetail.vue:209
-msgctxt "*/*/*"
-msgid "Artists"
-msgstr "Artisti"
-
-#: front/src/components/audio/Search.vue:10
-#: src/components/instance/Stats.vue:42
-#: front/src/components/library/Artists.vue:117
-#: src/components/library/Library.vue:10
-#: front/src/views/admin/moderation/AccountsDetail.vue:346
-#: front/src/views/admin/moderation/DomainsDetail.vue:254
+#: front/src/views/admin/library/LibraryDetail.vue:228
+#: front/src/views/admin/library/TagDetail.vue:123
+#: front/src/views/admin/moderation/AccountsDetail.vue:358
+#: front/src/views/admin/moderation/DomainsDetail.vue:291
 msgctxt "*/*/*/Noun"
 msgid "Artists"
 msgstr "Artisti"
 
 #: front/src/components/favorites/List.vue:34
-#: src/components/library/Albums.vue:25
-#: front/src/components/library/Artists.vue:25
+#: src/components/library/Albums.vue:29
+#: front/src/components/library/Artists.vue:29
 #: src/components/library/Radios.vue:44
 #: front/src/components/manage/library/AlbumsTable.vue:21
 #: front/src/components/manage/library/ArtistsTable.vue:21
 #: front/src/components/manage/library/EditsCardList.vue:39
 #: front/src/components/manage/library/LibrariesTable.vue:30
+#: front/src/components/manage/library/TagsTable.vue:21
 #: front/src/components/manage/library/TracksTable.vue:21
 #: front/src/components/manage/library/UploadsTable.vue:40
 #: front/src/components/manage/moderation/AccountsTable.vue:21
-#: front/src/components/manage/moderation/DomainsTable.vue:19
+#: front/src/components/manage/moderation/DomainsTable.vue:27
 #: front/src/components/manage/users/UsersTable.vue:19
+#: front/src/views/admin/moderation/ReportsList.vue:44
 #: front/src/views/content/libraries/FilesTable.vue:31
 #: front/src/views/playlists/List.vue:27
 msgctxt "Content/Search/Dropdown"
@@ -677,18 +768,24 @@ msgctxt "Content/Signup/Button.Label/Verb"
 msgid "Ask for a password reset"
 msgstr "Chiedi un reset della password"
 
-#: front/src/views/admin/library/AlbumDetail.vue:198
-#: front/src/views/admin/library/ArtistDetail.vue:187
-#: front/src/views/admin/library/LibraryDetail.vue:176
-#: front/src/views/admin/library/TrackDetail.vue:250
+#: front/src/components/manage/moderation/ReportCard.vue:72
+msgctxt "Content/Moderation/*"
+msgid "Assigned to"
+msgstr "Assegnato a"
+
+#: front/src/views/admin/library/AlbumDetail.vue:214
+#: front/src/views/admin/library/ArtistDetail.vue:202
+#: front/src/views/admin/library/LibraryDetail.vue:195
+#: front/src/views/admin/library/TagDetail.vue:113
+#: front/src/views/admin/library/TrackDetail.vue:266
 #: front/src/views/admin/library/UploadDetail.vue:191
-#: front/src/views/admin/moderation/AccountsDetail.vue:274
-#: front/src/views/admin/moderation/DomainsDetail.vue:202
+#: front/src/views/admin/moderation/AccountsDetail.vue:285
+#: front/src/views/admin/moderation/DomainsDetail.vue:239
 msgctxt "Content/Moderation/Title"
 msgid "Audio content"
 msgstr "Contenuto audio"
 
-#: front/src/components/ShortcutsModal.vue:55
+#: front/src/components/ShortcutsModal.vue:92
 msgctxt "Popup/Keyboard shortcuts/Title"
 msgid "Audio player shortcuts"
 msgstr "Scorciatoie del lettore audio"
@@ -731,9 +828,9 @@ msgid "Back to settings"
 msgstr "Torna alle impostazioni"
 
 #: front/src/components/library/TrackDetail.vue:48
-#: front/src/components/mixins/Translations.vue:55
+#: front/src/components/mixins/Translations.vue:67
 #: front/src/views/admin/library/UploadDetail.vue:227
-#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:68
 msgctxt "Content/Track/*/Noun"
 msgid "Bitrate"
 msgstr "Bitrate"
@@ -746,14 +843,8 @@ msgstr "Blocca tutto"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:112
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Block everything from this account or domain. This will prevent any "
-"interaction with the entity, and purge related content (uploads, libraries, "
-"follows, etc.)"
-msgstr ""
-"Blocca tutto da questo account o dominio. Questo prevenirà qualsiasi "
-"interazione con l'entità, ed eliminerà i relativi contenuti (caricamenti, "
-"librerie, richieste di seguire, ecc.)"
+msgid "Block everything from this account or domain. This will prevent any interaction with the entity, and purge related content (uploads, libraries, follows, etc.)"
+msgstr "Blocca tutto da questo account o dominio. Questo prevenirà qualsiasi interazione con l'entità, ed eliminerà i relativi contenuti (caricamenti, librerie, richieste di seguire, ecc.)"
 
 #: front/src/components/Sidebar.vue:18 src/components/library/Library.vue:4
 msgctxt "*/Library/*/Verb"
@@ -765,6 +856,12 @@ msgctxt "Sidebar/Library/List item.Link/Verb"
 msgid "Browse library"
 msgstr "Sfoglia libreria"
 
+#: front/src/components/Home.vue:132
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Browse public content"
+msgstr "Aggiorna tabella dei contenuti"
+
 #: front/src/components/library/Albums.vue:4
 msgctxt "Content/Album/Title"
 msgid "Browsing albums"
@@ -795,43 +892,43 @@ msgctxt "Content/Album/Card"
 msgid "By %{ artist }"
 msgstr "Di %{ artist }"
 
-#: front/src/views/content/remote/Card.vue:112
+#: front/src/views/content/remote/Card.vue:125
 msgctxt "Popup/Library/Paragraph"
 msgid "By unfollowing this library, you loose access to its content."
-msgstr ""
-"Smettendo di seguire questa libreria, perderai l'accesso al suo contenuto."
+msgstr "Smettendo di seguire questa libreria, perderai l'accesso al suo contenuto."
 
-#: front/src/views/admin/library/AlbumDetail.vue:214
-#: front/src/views/admin/library/ArtistDetail.vue:203
-#: front/src/views/admin/library/LibraryDetail.vue:192
-#: front/src/views/admin/library/TrackDetail.vue:266
+#: front/src/views/admin/library/AlbumDetail.vue:230
+#: front/src/views/admin/library/ArtistDetail.vue:218
+#: front/src/views/admin/library/LibraryDetail.vue:211
+#: front/src/views/admin/library/TrackDetail.vue:282
 #: front/src/views/admin/library/UploadDetail.vue:208
-#: front/src/views/admin/moderation/AccountsDetail.vue:290
-#: front/src/views/admin/moderation/DomainsDetail.vue:217
+#: front/src/views/admin/moderation/AccountsDetail.vue:301
+#: front/src/views/admin/moderation/DomainsDetail.vue:254
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Cached size"
 msgstr "Dimensione in cache"
 
 #: front/src/components/SetInstanceModal.vue:37
 #: front/src/components/common/DangerousButton.vue:17
-#: front/src/components/library/AlbumBase.vue:36
-#: front/src/components/library/ArtistBase.vue:47
-#: front/src/components/library/EditForm.vue:95
-#: front/src/components/library/TrackBase.vue:55
+#: front/src/components/library/AlbumBase.vue:37
+#: front/src/components/library/ArtistBase.vue:48
+#: front/src/components/library/EditForm.vue:107
+#: front/src/components/library/TrackBase.vue:53
 #: front/src/components/library/radios/Filter.vue:53
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:54
 #: front/src/components/moderation/FilterModal.vue:39
+#: front/src/components/moderation/ReportModal.vue:59
 #: front/src/components/playlists/PlaylistModal.vue:26
 #: front/src/components/playlists/PlaylistModal.vue:77
+#: front/src/views/playlists/Detail.vue:62
 msgctxt "*/*/Button.Label/Verb"
 msgid "Cancel"
 msgstr "Annulla"
 
-#: front/src/views/content/remote/Card.vue:97
-#, fuzzy
+#: front/src/views/content/remote/Card.vue:110
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Cancel follow request"
-msgstr "Richiesta di seguire in sospeso"
+msgstr "Annulla richiesta di seguire"
 
 #: front/src/components/library/radios/Builder.vue:64
 msgctxt "Content/Radio/Table.Label/Noun (Value is a number of Tracks)"
@@ -843,6 +940,14 @@ msgctxt "Content/Library/Help text"
 msgid "Cannot upload this file, ensure it is not too big"
 msgstr "Impossibile caricare questo file, controlla che non sia troppo grande"
 
+#: front/src/components/manage/moderation/ReportCard.vue:30
+#: front/src/components/mixins/Translations.vue:42
+#: front/src/components/moderation/ReportCategoryDropdown.vue:2
+#: front/src/components/mixins/Translations.vue:43
+msgctxt "*/*/*"
+msgid "Category"
+msgstr "Categoria"
+
 #: front/src/components/Footer.vue:21
 msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
 msgid "Change language"
@@ -858,6 +963,11 @@ msgctxt "Content/Settings/Button.Label"
 msgid "Change password"
 msgstr "Cambia password"
 
+#: front/src/components/Footer.vue:37
+msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
+msgid "Change theme"
+msgstr "Cambia tema"
+
 #: front/src/views/auth/PasswordResetConfirm.vue:62
 msgctxt "*/Signup/Title"
 msgid "Change your password"
@@ -875,43 +985,32 @@ msgstr "Modifiche sincronizzate con il server"
 
 #: front/src/components/auth/Settings.vue:71
 msgctxt "Content/Settings/Paragraph'"
-msgid ""
-"Changing your password will also change your Subsonic API password if you "
-"have requested one."
-msgstr ""
-"Cambiando la tua password cambierà anche la password della API Subsonic se "
-"ne hai richiesta una."
+msgid "Changing your password will also change your Subsonic API password if you have requested one."
+msgstr "Cambiando la tua password cambierà anche la password della API Subsonic se ne hai richiesta una."
 
 #: front/src/components/auth/Settings.vue:98
 msgctxt "Popup/Settings/Paragraph"
 msgid "Changing your password will have the following consequences:"
 msgstr "Cambiare la tua password avrà queste conseguenze:"
 
-#: front/src/components/Footer.vue:40
+#: front/src/components/Footer.vue:48
 msgctxt "Footer/*/List item.Link"
 msgid "Chat room"
 msgstr "Stanza di conversazione"
 
 #: front/src/components/auth/ApplicationForm.vue:24
 msgctxt "Content/Applications/Paragraph/"
-msgid ""
-"Checking the parent \"Read\" or \"Write\" scopes implies access to all the "
-"corresponding children scopes."
-msgstr ""
-"Controllando i permessi \"Lettura\" o \"Scrittura\" del livello superiore "
-"implica l'accesso a tutti i corrispondenti permessi dei livelli inferiori."
+msgid "Checking the parent \"Read\" or \"Write\" scopes implies access to all the corresponding children scopes."
+msgstr "Controllando i permessi \"Lettura\" o \"Scrittura\" del livello superiore implica l'accesso a tutti i corrispondenti permessi dei livelli inferiori."
 
 #: front/src/components/SetInstanceModal.vue:2
 msgctxt "Popup/Instance/Title"
 msgid "Choose your instance"
 msgstr "Scegli la tua istanza"
 
-#: front/src/components/manage/users/InvitationForm.vue:37
-msgctxt "Content/Admin/Button.Label/Verb"
-msgid "Clear"
-msgstr "Pulisci"
-
 #: front/src/components/library/EditForm.vue:75
+#: front/src/components/library/EditForm.vue:88
+#: front/src/components/manage/users/InvitationForm.vue:37
 msgctxt "Content/Library/Button.Label"
 msgid "Clear"
 msgstr "Pulisci"
@@ -922,48 +1021,47 @@ msgctxt "*/Playlist/Button.Label/Verb"
 msgid "Clear playlist"
 msgstr "Pulisci playlist"
 
-#: front/src/components/audio/Player.vue:642
+#: front/src/components/ShortcutsModal.vue:144
+#, fuzzy
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Clear queue"
+msgstr "Pulisci la tua coda"
+
+#: front/src/components/audio/Player.vue:668
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Clear your queue"
 msgstr "Pulisci la tua coda"
 
-#: front/src/components/Home.vue:44
-msgctxt "Content/Home/List item/Verb"
-msgid "Click once, listen for hours using built-in radios"
-msgstr "Clicca una volta, ascolta per ore utilizzando le radio integrate"
-
 #: front/src/components/mixins/Translations.vue:21
 #: front/src/components/mixins/Translations.vue:22
 msgctxt "Content/Library/Link.Title"
-msgid ""
-"Click to display more information about the import process for this upload"
-msgstr ""
-"Clicca per visualizzare più informazioni sul processo di importazione di "
-"questo caricamento"
+msgid "Click to display more information about the import process for this upload"
+msgstr "Clicca per visualizzare più informazioni sul processo di importazione di questo caricamento"
 
 #: front/src/components/library/FileUpload.vue:82
 msgctxt "Content/Library/Paragraph/Call to action"
 msgid "Click to select files to upload or drag and drop files or directories"
-msgstr ""
-"Clicca per selezionare i file da caricare o trascina e rilascia file o "
-"cartelle"
+msgstr "Clicca per selezionare i file da caricare o trascina e rilascia file o cartelle"
 
+#: front/src/components/ShortcutsModal.vue:38
 #: front/src/components/federation/FetchButton.vue:85
 #: front/src/components/library/ImportStatusModal.vue:79
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:34
 msgctxt "*/*/Button.Label/Verb"
 msgid "Close"
 msgstr "Chiudi"
 
-#: front/src/components/ShortcutsModal.vue:20
-msgctxt "Popup/Keyboard shortcuts/Button.Label/Verb"
-msgid "Close"
-msgstr "Chiudi"
-
 #: front/src/components/federation/FetchButton.vue:88
 msgctxt "*/*/Button.Label/Verb"
 msgid "Close and reload page"
 msgstr "Chiudi e ricarica pagina"
 
+#: front/src/components/About.vue:94
+#, fuzzy
+msgctxt "*/*/*/State of registrations"
+msgid "Closed"
+msgstr "Chiudi"
+
 #: front/src/components/manage/users/InvitationForm.vue:26
 #: front/src/components/manage/users/InvitationsTable.vue:42
 msgctxt "Content/Admin/Table.Label/Noun"
@@ -971,8 +1069,9 @@ msgid "Code"
 msgstr "Codice"
 
 #: front/src/components/audio/album/Card.vue:41
-#: front/src/components/audio/artist/Card.vue:33
-msgctxt "Content/*/Card.Link/Verb"
+#: front/src/components/common/CollapseLink.vue:3
+#, fuzzy
+msgctxt "*/*/Button,Label"
 msgid "Collapse"
 msgstr "Riduci"
 
@@ -996,44 +1095,47 @@ msgctxt "Content/Signup/Form.Label"
 msgid "Confirmation code"
 msgstr "Codice di conferma"
 
+#: front/src/components/About.vue:67 src/components/Home.vue:65
+msgctxt "Content/Home/Header/Name"
+msgid "Contact"
+msgstr "Contatta"
+
 #: front/src/components/moderation/FilterModal.vue:90
 msgctxt "*/Moderation/Message"
 msgid "Content filter successfully added"
 msgstr "Filtro di contenuto aggiunto con successo"
 
-#: front/src/components/mixins/Translations.vue:96
-#: front/src/components/mixins/Translations.vue:97
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Content filters"
-msgstr "Filtri di contenuto"
-
 #: front/src/components/auth/Settings.vue:116
+#: front/src/components/mixins/Translations.vue:108
+#: front/src/components/mixins/Translations.vue:109
 msgctxt "Content/Settings/Title/Noun"
 msgid "Content filters"
 msgstr "Filtri di contenuto"
 
 #: front/src/components/auth/Settings.vue:119
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"Content filters help you hide content you don't want to see on the service."
-msgstr ""
-"I filtri di contenuti ti aiutano a nascondere cose che non vuoi vedere su "
-"questo servizio."
+msgid "Content filters help you hide content you don't want to see on the service."
+msgstr "I filtri di contenuti ti aiutano a nascondere cose che non vuoi vedere su questo servizio."
 
 #: front/src/components/common/ActionTable.vue:8
 msgctxt "Content/*/Button.Help text.Paragraph"
 msgid "Content have been updated, click refresh to see up-to-date content"
-msgstr ""
-"Il contenuto è stato aggiornato, clicca aggiorna per visualizzaare il "
-"contenuto aggiornato"
+msgstr "Il contenuto è stato aggiornato, clicca aggiorna per visualizzaare il contenuto aggiornato"
 
-#: front/src/components/Footer.vue:48
+#: front/src/components/About.vue:46
+#, fuzzy
+msgctxt "Content/About/Header"
+msgid "Contents"
+msgstr "Filtri di contenuto"
+
+#: front/src/components/Footer.vue:56
 msgctxt "Footer/*/List item.Link"
 msgid "Contribute"
 msgstr "Contribuisci"
 
-#: front/src/components/audio/EmbedWizard.vue:19
+#: front/src/components/audio/EmbedWizard.vue:29
 #: front/src/components/common/CopyInput.vue:8
+#: front/src/components/forms/PasswordInput.vue:43
 msgctxt "*/*/Button.Label/Short, Verb"
 msgid "Copy"
 msgstr "Copia"
@@ -1048,16 +1150,16 @@ msgctxt "Content/Auth/Paragraph"
 msgid "Copy-paste the following code in the application:"
 msgstr "Copia-incolla il codice seguente in questa applicazione:"
 
-#: front/src/components/audio/EmbedWizard.vue:21
+#: front/src/components/audio/EmbedWizard.vue:31
 msgctxt "Popup/Embed/Paragraph"
 msgid "Copy/paste this code in your website HTML"
 msgstr "Copia/incolla questo codice nel tuo sito HTML"
 
 #: front/src/components/library/TrackDetail.vue:10
-#: front/src/views/admin/library/TrackDetail.vue:153
-msgctxt "Content/Track/Table.Label/Noun"
+#: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:77
+msgctxt "Content/Track/*/Noun"
 msgid "Copyright"
-msgstr "Copyright"
+msgstr "Diritti d'autore"
 
 #: front/src/views/auth/EmailConfirm.vue:7
 msgctxt "Content/Signup/Paragraph"
@@ -1069,29 +1171,20 @@ msgctxt "Content/Library/Error message.Title"
 msgid "Could not fetch remote library"
 msgstr "Non è stato possibile recuperare la libreria remota"
 
-#: front/src/components/Home.vue:80
-msgctxt "Content/Home/List item"
-msgid "Covers, lyrics, our goal is to have them all ;)"
-msgstr "Copertine, testi, il nostro obbiettivo è averli tutti ;)"
-
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:58
 msgctxt "Content/Moderation/Card.Button.Label/Verb"
 msgid "Create"
 msgstr "Crea"
 
-#: front/src/components/auth/Signup.vue:4
+#: front/src/views/auth/Signup.vue:4
 msgctxt "Content/Signup/Title"
 msgid "Create a funkwhale account"
 msgstr "Crea un account funkwhale"
 
-#: front/src/components/auth/Settings.vue:220
-msgctxt "Content/Settings/Button.Label"
-msgid "Create a new application"
-msgstr "Crea una nuova applicazione"
-
 #: front/src/components/auth/ApplicationNew.vue:8
 #: front/src/components/auth/ApplicationNew.vue:41
-msgctxt "Content/Applications/Title"
+#: front/src/components/auth/Settings.vue:220
+msgctxt "Content/Settings/Button.Label"
 msgid "Create a new application"
 msgstr "Crea una nuova applicazione"
 
@@ -1105,7 +1198,7 @@ msgctxt "Popup/Playlist/Title/Verb"
 msgid "Create a new playlist"
 msgstr "Crea una nuova playlist"
 
-#: front/src/components/Sidebar.vue:57 src/components/auth/Login.vue:17
+#: front/src/components/Sidebar.vue:57 src/components/auth/LoginForm.vue:15
 msgctxt "*/Signup/Link/Verb"
 msgid "Create an account"
 msgstr "Crea un account"
@@ -1120,7 +1213,7 @@ msgctxt "Content/Library/Button.Label/Verb"
 msgid "Create library"
 msgstr "Crea libreria"
 
-#: front/src/components/auth/Signup.vue:53
+#: front/src/components/auth/SignupForm.vue:49
 msgctxt "Content/Signup/Button.Label"
 msgid "Create my account"
 msgstr "Crea il mio account"
@@ -1145,11 +1238,13 @@ msgstr "Crea la tua radio"
 #: front/src/components/manage/library/AlbumsTable.vue:44
 #: front/src/components/manage/library/ArtistsTable.vue:43
 #: front/src/components/manage/library/LibrariesTable.vue:54
+#: front/src/components/manage/library/TagsTable.vue:45
 #: front/src/components/manage/library/TracksTable.vue:44
 #: front/src/components/manage/library/UploadsTable.vue:66
+#: front/src/components/manage/moderation/ReportCard.vue:43
 #: front/src/components/manage/users/InvitationsTable.vue:40
-#: front/src/components/mixins/Translations.vue:43
-#: front/src/components/mixins/Translations.vue:44
+#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/mixins/Translations.vue:54
 msgctxt "Content/*/*/Noun"
 msgid "Creation date"
 msgstr "Data di creazione"
@@ -1159,6 +1254,12 @@ msgctxt "Content/Settings/Title/Noun"
 msgid "Current avatar"
 msgstr "Avatar attuale"
 
+#: front/src/components/admin/SettingsGroup.vue:67
+#, fuzzy
+msgctxt "Content/Settings/Title/Noun"
+msgid "Current image"
+msgstr "Utilizzo attuale"
+
 #: front/src/views/content/libraries/DetailArea.vue:4
 msgctxt "Content/Library/Title"
 msgid "Current library"
@@ -1174,11 +1275,15 @@ msgctxt "Content/Library/Title"
 msgid "Current usage"
 msgstr "Utilizzo attuale"
 
+#: front/src/components/Footer.vue:94
+msgctxt "Footer/Settings/Dropdown.Label/Theme name"
+msgid "Dark"
+msgstr "Scuro"
+
 #: front/src/components/federation/FetchButton.vue:53
 msgctxt "*/*/Error"
 msgid "Data returned by the remote server had invalid or missing attributes"
-msgstr ""
-"I dati riportati dal server remoto hanno attributi invalidi o mancanti"
+msgstr "I dati riportati dal server remoto hanno attributi invalidi o mancanti"
 
 #: front/src/components/federation/FetchButton.vue:17
 msgctxt "Popup/*/Message.Content"
@@ -1195,7 +1300,7 @@ msgctxt "Popup/Import/Table.Label/Noun"
 msgid "Debug information"
 msgstr "Informazioni di debug"
 
-#: front/src/components/ShortcutsModal.vue:75
+#: front/src/components/ShortcutsModal.vue:128
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Decrease volume"
 msgstr "Diminuisci volume"
@@ -1207,23 +1312,29 @@ msgstr "Diminuisci volume"
 #: front/src/components/manage/library/AlbumsTable.vue:188
 #: front/src/components/manage/library/ArtistsTable.vue:178
 #: front/src/components/manage/library/LibrariesTable.vue:205
+#: front/src/components/manage/library/TagsTable.vue:179
 #: front/src/components/manage/library/TracksTable.vue:188
 #: front/src/components/manage/library/UploadsTable.vue:255
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:61
+#: front/src/components/manage/moderation/NotesThread.vue:24
+#: front/src/components/manage/moderation/NotesThread.vue:29
+#: front/src/components/manage/moderation/ReportCard.vue:360
 #: front/src/components/manage/users/InvitationsTable.vue:167
-#: front/src/views/admin/library/AlbumDetail.vue:72
-#: front/src/views/admin/library/AlbumDetail.vue:77
-#: front/src/views/admin/library/ArtistDetail.vue:71
+#: front/src/views/admin/library/AlbumDetail.vue:78
+#: front/src/views/admin/library/AlbumDetail.vue:83
 #: front/src/views/admin/library/ArtistDetail.vue:76
+#: front/src/views/admin/library/ArtistDetail.vue:81
 #: front/src/views/admin/library/LibraryDetail.vue:58
 #: front/src/views/admin/library/LibraryDetail.vue:63
-#: front/src/views/admin/library/TrackDetail.vue:71
-#: front/src/views/admin/library/TrackDetail.vue:76
+#: front/src/views/admin/library/TagDetail.vue:41
+#: front/src/views/admin/library/TagDetail.vue:46
+#: front/src/views/admin/library/TrackDetail.vue:77
+#: front/src/views/admin/library/TrackDetail.vue:82
 #: front/src/views/admin/library/UploadDetail.vue:65
 #: front/src/views/admin/library/UploadDetail.vue:70
 #: front/src/views/content/libraries/FilesTable.vue:222
 #: front/src/views/content/libraries/Form.vue:29
-#: src/views/playlists/Detail.vue:34
+#: src/views/playlists/Detail.vue:42
 msgctxt "*/*/*/Verb"
 msgid "Delete"
 msgstr "Elimina"
@@ -1248,7 +1359,20 @@ msgctxt "Popup/Moderation/Button.Label/Verb"
 msgid "Delete moderation rule"
 msgstr "Elimina regola di moderazione"
 
-#: front/src/views/playlists/Detail.vue:39
+#: front/src/components/auth/Settings.vue:274
+#: src/components/auth/Settings.vue:302
+#, fuzzy
+msgctxt "*/*/Button.Label"
+msgid "Delete my account"
+msgstr "Crea il mio account"
+
+#: front/src/components/auth/Settings.vue:297
+#, fuzzy
+msgctxt "*/*/Button.Label"
+msgid "Delete my account…"
+msgstr "Crea il mio account"
+
+#: front/src/views/playlists/Detail.vue:47
 msgctxt "Popup/Playlist/Button.Label/Verb"
 msgid "Delete playlist"
 msgstr "Elimina playlist"
@@ -1258,13 +1382,23 @@ msgctxt "Popup/Radio/Button.Label/Verb"
 msgid "Delete radio"
 msgstr "Elimina radio"
 
-#: front/src/views/admin/library/AlbumDetail.vue:73
-#: front/src/views/admin/library/TrackDetail.vue:72
+#: front/src/components/manage/moderation/ReportCard.vue:357
+msgctxt "Content/Moderation/Button/Verb"
+msgid "Delete reported object"
+msgstr "Elimina oggetto segnalato"
+
+#: front/src/components/manage/moderation/ReportCard.vue:358
+msgctxt "Content/Moderation/Popup/Header"
+msgid "Delete reported object?"
+msgstr "Eliminare oggetto segnalato?"
+
+#: front/src/views/admin/library/AlbumDetail.vue:79
+#: front/src/views/admin/library/TrackDetail.vue:78
 msgctxt "Popup/Library/Title"
 msgid "Delete this album?"
 msgstr "Eliminare questo album?"
 
-#: front/src/views/admin/library/ArtistDetail.vue:72
+#: front/src/views/admin/library/ArtistDetail.vue:77
 msgctxt "Popup/Library/Title"
 msgid "Delete this artist?"
 msgstr "Eliminare questo artista?"
@@ -1280,60 +1414,71 @@ msgctxt "Popup/Moderation/Title"
 msgid "Delete this moderation rule?"
 msgstr "Eliminare questa regola di moderazione?"
 
-#: front/src/components/library/EditCard.vue:94
-msgctxt "Popup/Library/Title"
-msgid "Delete this suggestion?"
+#: front/src/components/manage/moderation/NotesThread.vue:25
+#, fuzzy
+msgctxt "Popup/Moderation/Title"
+msgid "Delete this note?"
+msgstr "Eliminare questo artista?"
+
+#: front/src/components/library/EditCard.vue:94
+msgctxt "Popup/Library/Title"
+msgid "Delete this suggestion?"
 msgstr "Eliminare questo suggerimento?"
 
+#: front/src/views/admin/library/TagDetail.vue:42
+#, fuzzy
+msgctxt "Popup/Library/Title"
+msgid "Delete this tag?"
+msgstr "Eliminare questo album?"
+
 #: front/src/views/admin/library/UploadDetail.vue:66
 msgctxt "Popup/Library/Title"
 msgid "Delete this upload?"
 msgstr "Eliminare questo caricamento?"
 
 #: front/src/components/favorites/List.vue:35
-#: src/components/library/Albums.vue:26
-#: front/src/components/library/Artists.vue:26
+#: src/components/library/Albums.vue:30
+#: front/src/components/library/Artists.vue:30
 #: src/components/library/Radios.vue:47
 #: front/src/components/manage/library/AlbumsTable.vue:22
 #: front/src/components/manage/library/ArtistsTable.vue:22
 #: front/src/components/manage/library/EditsCardList.vue:40
 #: front/src/components/manage/library/LibrariesTable.vue:31
+#: front/src/components/manage/library/TagsTable.vue:22
 #: front/src/components/manage/library/TracksTable.vue:22
 #: front/src/components/manage/library/UploadsTable.vue:41
 #: front/src/components/manage/moderation/AccountsTable.vue:22
-#: front/src/components/manage/moderation/DomainsTable.vue:20
+#: front/src/components/manage/moderation/DomainsTable.vue:28
 #: front/src/components/manage/users/UsersTable.vue:20
+#: front/src/views/admin/moderation/ReportsList.vue:45
 #: front/src/views/content/libraries/FilesTable.vue:32
 #: front/src/views/playlists/List.vue:28
 msgctxt "Content/Search/Dropdown"
 msgid "Descending"
 msgstr "Decrescente"
 
-#: front/src/views/admin/library/LibraryDetail.vue:123
-msgctxt "*/*/*/Noun"
-msgid "Description"
-msgstr "Descrizione"
+#: front/src/components/manage/moderation/NoteForm.vue:37
+msgctxt "Content/Moderation/Placeholder"
+msgid "Describe what actions have been taken, or any other related updates…"
+msgstr "Descrivi quali azioni sono state eseguite, o qualsiasi altro aggiornamento relativo a questo…"
 
 #: front/src/components/library/radios/Builder.vue:25
+#: front/src/views/admin/library/LibraryDetail.vue:132
 #: front/src/views/content/libraries/Form.vue:14
-msgctxt "Content/*/Input.Label/Noun"
+msgctxt "*/*/*/Noun"
 msgid "Description"
 msgstr "Descrizione"
 
 #: front/src/views/content/libraries/Card.vue:48
-#: src/views/content/remote/Card.vue:54
+#: src/views/content/remote/Card.vue:67
 msgctxt "Content/Library/Card.Button.Label/Noun"
 msgid "Details"
 msgstr "Dettagli"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:491
+#: front/src/views/admin/moderation/AccountsDetail.vue:511
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Determine how much content the user can upload. Leave empty to use the "
-"default value of the instance."
-msgstr ""
-"Determina quanto contenuto un utente può caricare. Lascia vuoto per usare il"
-" valore predefinito dell'istanza."
+msgid "Determine how much content the user can upload. Leave empty to use the default value of the instance."
+msgstr "Determina quanto contenuto un utente può caricare. Lascia vuoto per usare il valore predefinito dell'istanza."
 
 #: front/src/components/mixins/Translations.vue:8
 #: front/src/components/mixins/Translations.vue:9
@@ -1342,38 +1487,51 @@ msgid "Determine the visibility level of your activity"
 msgstr "Imposta il livello di visibilità delle tue attività"
 
 #: front/src/components/auth/Settings.vue:104
-#: front/src/components/auth/SubsonicTokenForm.vue:51
+#: front/src/components/auth/SubsonicTokenForm.vue:56
 msgctxt "Popup/Settings/Button.Label"
 msgid "Disable access"
 msgstr "Disabilita accesso"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:48
+#: front/src/components/auth/SubsonicTokenForm.vue:53
 msgctxt "Content/Settings/Button.Label/Verb"
 msgid "Disable Subsonic access"
 msgstr "Disabilita accesso Subsonic"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:49
+#: front/src/components/auth/SubsonicTokenForm.vue:54
 msgctxt "Popup/Settings/Title"
 msgid "Disable Subsonic API access?"
 msgstr "Disabilitare l'accesso alle API Subsonic?"
 
+#: front/src/components/About.vue:118 src/components/About.vue:131
+#: front/src/components/About.vue:144
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:18
 #: front/src/views/admin/moderation/AccountsDetail.vue:157
 #: front/src/views/admin/moderation/AccountsDetail.vue:161
-msgctxt "*/*/*"
+#, fuzzy
+msgctxt "*/*/*/State of feature"
 msgid "Disabled"
 msgstr "Disabilitato"
 
-#: front/src/views/admin/library/TrackDetail.vue:145
+#: front/src/views/admin/library/TrackDetail.vue:151
 msgctxt "*/*/*/Noun"
 msgid "Disc number"
 msgstr "Numero disco"
 
+#: front/src/components/Home.vue:157
+msgctxt "Content/Home/Link"
+msgid "Discover everything you need to know about Funkwhale and its features"
+msgstr "Scopri tutto quello che devi sapere su Funkwhale e le sue funzionalità"
+
 #: front/src/components/auth/SubsonicTokenForm.vue:13
 msgctxt "Content/Settings/Link"
 msgid "Discover how to use Funkwhale from other apps"
 msgstr "Scopri come utilizzare Funkwhale attraverso altre app"
 
+#: front/src/views/Notifications.vue:45
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Discover other ways to help"
+msgstr "Scopri altri modi per aiutare"
+
 #: front/src/views/admin/moderation/AccountsDetail.vue:132
 msgctxt "'Content/*/*/Noun'"
 msgid "Display name"
@@ -1386,13 +1544,14 @@ msgstr "Mostra pubblicamente"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:122
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Do not download any media file (audio, album cover, account avatar…) from "
-"this account or domain. This will purge existing content as well."
-msgstr ""
-"Non scaricare nessun media (audio, copertina dell'album, avatar "
-"dell'account...) da questo account o dominio. Questo eliminerà anche i "
-"contenuti già esistenti."
+msgid "Do not download any media file (audio, album cover, account avatar…) from this account or domain. This will purge existing content as well."
+msgstr "Non scaricare nessun media (audio, copertina dell'album, avatar dell'account…) da questo account o dominio. Questo eliminerà anche i contenuti già esistenti."
+
+#: front/src/views/Notifications.vue:36
+#, fuzzy
+msgctxt "Content/Notifications/Header"
+msgid "Do you like Funkwhale?"
+msgstr "A proposito di Funkwhale"
 
 #: front/src/components/playlists/Editor.vue:51
 msgctxt "Popup/Playlist/Title"
@@ -1404,7 +1563,7 @@ msgctxt "Modal/*/Title"
 msgid "Do you want to confirm this action?"
 msgstr "Vuoi confermare questa azione?"
 
-#: front/src/views/playlists/Detail.vue:35
+#: front/src/views/playlists/Detail.vue:43
 msgctxt "Popup/Playlist/Title/Call to action"
 msgid "Do you want to delete the playlist \"%{ playlist }\"?"
 msgstr "Vuoi eliminare la playlist \"%{ playlist }\"?"
@@ -1414,6 +1573,12 @@ msgctxt "Popup/Radio/Title"
 msgid "Do you want to delete the radio \"%{ radio }\"?"
 msgstr "Vuoi eliminare la radio \"%{ radio }\"?"
 
+#: front/src/components/auth/Settings.vue:298
+#, fuzzy
+msgctxt "Popup/Settings/Title"
+msgid "Do you want to delete your account?"
+msgstr "Vuoi ripristinare la tua coda precedente?"
+
 #: front/src/components/moderation/FilterModal.vue:3
 msgctxt "Popup/Moderation/Title/Verb"
 msgid "Do you want to hide content from artist \"%{ name }\"?"
@@ -1426,7 +1591,13 @@ msgid_plural "Do you want to launch %{ action } on %{ count } elements?"
 msgstr[0] "Vuoi eseguire %{ action } su %{ count } elemento?"
 msgstr[1] "Vuoi eseguire %{ action } su %{ count } elementi?"
 
-#: front/src/components/Sidebar.vue:118
+#: front/src/components/moderation/ReportModal.vue:3
+#, fuzzy
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Do you want to report this object?"
+msgstr "Vuoi confermare questa azione?"
+
+#: front/src/components/Sidebar.vue:122
 msgctxt "Sidebar/Queue/Message"
 msgid "Do you want to restore your previous queue?"
 msgstr "Vuoi ripristinare la tua coda precedente?"
@@ -1442,26 +1613,33 @@ msgstr "Documentazione"
 #: front/src/components/manage/library/TracksTable.vue:42
 #: front/src/components/manage/library/UploadsTable.vue:62
 #: front/src/components/manage/moderation/AccountsTable.vue:40
-#: front/src/components/mixins/Translations.vue:60
-#: front/src/views/admin/library/AlbumDetail.vue:118
-#: front/src/views/admin/library/ArtistDetail.vue:107
-#: front/src/views/admin/library/LibraryDetail.vue:114
-#: front/src/views/admin/library/TrackDetail.vue:170
+#: front/src/components/manage/moderation/ReportCard.vue:169
+#: front/src/components/manage/moderation/ReportCard.vue:179
+#: front/src/components/mixins/Translations.vue:72
+#: front/src/views/admin/library/AlbumDetail.vue:124
+#: front/src/views/admin/library/ArtistDetail.vue:112
+#: front/src/views/admin/library/LibraryDetail.vue:123
+#: front/src/views/admin/library/TrackDetail.vue:176
 #: front/src/views/admin/library/UploadDetail.vue:121
 #: front/src/views/admin/moderation/AccountsDetail.vue:123
-#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/mixins/Translations.vue:73
 msgctxt "Content/Moderation/*/Noun"
 msgid "Domain"
 msgstr "Dominio"
 
-#: front/src/views/admin/moderation/Base.vue:5
+#: front/src/views/admin/moderation/Base.vue:8
 #: front/src/views/admin/moderation/DomainsList.vue:3
-#: front/src/views/admin/moderation/DomainsList.vue:48
+#: front/src/views/admin/moderation/DomainsList.vue:54
 msgctxt "*/Moderation/*/Noun"
 msgid "Domains"
 msgstr "Domini"
 
-#: front/src/components/library/TrackBase.vue:39
+#: front/src/views/Notifications.vue:42
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Donate"
+msgstr "Dona"
+
+#: front/src/components/library/TrackBase.vue:37
 #: front/src/views/admin/library/UploadDetail.vue:58
 msgctxt "Content/Track/Link/Verb"
 msgid "Download"
@@ -1474,10 +1652,10 @@ msgstr "Trascina e rilascia righe per riordinare le tracce nella playlist"
 
 #: front/src/components/audio/track/Table.vue:10
 #: front/src/components/library/TrackDetail.vue:30
-#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:68
 #: front/src/views/admin/library/UploadDetail.vue:238
 #: front/src/views/content/libraries/FilesTable.vue:60
-#: front/src/components/mixins/Translations.vue:57
+#: front/src/components/mixins/Translations.vue:69
 msgctxt "Content/*/*"
 msgid "Duration"
 msgstr "Durata"
@@ -1487,41 +1665,27 @@ msgctxt "Content/Signup/Message"
 msgid "E-mail address confirmed"
 msgstr "Indirizzo e-mail confermato"
 
-#: front/src/components/Home.vue:88
-msgctxt "Content/Home/Title"
-msgid "Easy to use"
-msgstr "Facile da utilizzare"
-
-#: front/src/components/library/AlbumBase.vue:68
-#: front/src/components/library/ArtistBase.vue:79
-#: front/src/components/library/TrackBase.vue:87
+#: front/src/components/auth/Settings.vue:246
+#: src/components/library/AlbumBase.vue:73
+#: front/src/components/library/ArtistBase.vue:84
+#: front/src/components/library/TrackBase.vue:89
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:45
 #: front/src/components/radios/Card.vue:23
-#: src/views/admin/library/AlbumDetail.vue:65
-#: front/src/views/admin/library/ArtistDetail.vue:64
-#: front/src/views/admin/library/TrackDetail.vue:64
+#: src/views/admin/library/AlbumDetail.vue:71
+#: front/src/views/admin/library/ArtistDetail.vue:69
+#: front/src/views/admin/library/TrackDetail.vue:70
 #: front/src/views/content/libraries/Detail.vue:9
 #: src/views/playlists/Detail.vue:31
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Edit"
 msgstr "Modifica"
 
-#: front/src/components/auth/Settings.vue:246
-msgctxt "Content/Settings/Button.Label"
-msgid "Edit"
-msgstr "Modifica"
-
 #: front/src/components/auth/ApplicationEdit.vue:30
 #: front/src/components/auth/ApplicationEdit.vue:75
 msgctxt "Content/Applications/Title"
 msgid "Edit application"
 msgstr "Modifica applicazione"
 
-#: front/src/components/About.vue:22
-msgctxt "Content/Settings/Button.Label/Verb"
-msgid "Edit instance info"
-msgstr "Modifica le info dell'istanza"
-
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:3
 msgctxt "Content/Moderation/Card.Title/Verb"
 msgid "Edit moderation rule"
@@ -1542,23 +1706,20 @@ msgctxt "Content/*/Title"
 msgid "Edit this track"
 msgstr "Modifica questa traccia"
 
-#: front/src/views/admin/library/AlbumDetail.vue:182
-#: front/src/views/admin/library/ArtistDetail.vue:171
+#: front/src/components/mixins/Translations.vue:116
+#: front/src/views/admin/library/AlbumDetail.vue:198
+#: front/src/views/admin/library/ArtistDetail.vue:186
 #: front/src/views/admin/library/Base.vue:5
 #: src/views/admin/library/EditsList.vue:24
-#: front/src/views/admin/library/TrackDetail.vue:234
+#: front/src/views/admin/library/TrackDetail.vue:250
+#: front/src/components/mixins/Translations.vue:117
 msgctxt "*/Admin/*/Noun"
 msgid "Edits"
 msgstr "Modifiche"
 
-#: front/src/components/mixins/Translations.vue:104
-#: front/src/components/mixins/Translations.vue:105
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Edits"
-msgstr "Modifiche"
-
-#: front/src/components/auth/Signup.vue:30
+#: front/src/components/auth/SignupForm.vue:26
 #: front/src/components/manage/users/UsersTable.vue:38
+#: front/src/components/moderation/ReportModal.vue:31
 msgctxt "Content/*/*/Noun"
 msgid "Email"
 msgstr "Email"
@@ -1568,50 +1729,60 @@ msgctxt "Content/*/*"
 msgid "Email address"
 msgstr "Indirizzo email"
 
-#: front/src/components/library/AlbumBase.vue:53
-#: front/src/components/library/ArtistBase.vue:64
-#: front/src/components/library/TrackBase.vue:72
+#: front/src/components/library/AlbumBase.vue:54
+#: front/src/components/library/ArtistBase.vue:65
+#: front/src/components/library/TrackBase.vue:70
+#: src/views/playlists/Detail.vue:38
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Embed"
 msgstr "Incorpora"
 
-#: front/src/components/audio/EmbedWizard.vue:20
+#: front/src/components/audio/EmbedWizard.vue:30
 msgctxt "Popup/Embed/Input.Label/Noun"
 msgid "Embed code"
 msgstr "Incorpora codice"
 
-#: front/src/components/library/AlbumBase.vue:26
+#: front/src/components/library/AlbumBase.vue:27
 msgctxt "Popup/Album/Title/Verb"
 msgid "Embed this album on your website"
 msgstr "Incorpora questo album nel tuo sito web"
 
-#: front/src/components/library/ArtistBase.vue:37
+#: front/src/components/library/ArtistBase.vue:38
 msgctxt "Popup/Artist/Title/Verb"
 msgid "Embed this artist work on your website"
 msgstr "Incorpora il lavoro di questo artista nel tuo sito web"
 
-#: front/src/components/library/TrackBase.vue:45
+#: front/src/views/playlists/Detail.vue:52
+#, fuzzy
+msgctxt "Popup/Album/Title/Verb"
+msgid "Embed this playlist on your website"
+msgstr "Incorpora questo album nel tuo sito web"
+
+#: front/src/components/library/TrackBase.vue:43
 msgctxt "Popup/Track/Title"
 msgid "Embed this track on your website"
 msgstr "Incorpora questa traccia nel tuo sito web"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:259
-#: front/src/views/admin/moderation/DomainsDetail.vue:187
+#: front/src/views/admin/moderation/AccountsDetail.vue:260
+#: front/src/views/admin/moderation/DomainsDetail.vue:224
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Emitted library follows"
 msgstr "Emessi i follow della libreria"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:243
-#: front/src/views/admin/moderation/DomainsDetail.vue:171
+#: front/src/views/admin/moderation/AccountsDetail.vue:244
+#: front/src/views/admin/moderation/DomainsDetail.vue:208
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Emitted messages"
 msgstr "Messaggi emessi"
 
+#: front/src/components/About.vue:114 src/components/About.vue:127
+#: front/src/components/About.vue:140
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:8
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:17
 #: front/src/views/admin/moderation/AccountsDetail.vue:156
 #: front/src/views/admin/moderation/AccountsDetail.vue:160
-msgctxt "*/*/*"
+#, fuzzy
+msgctxt "*/*/*/State of feature"
 msgid "Enabled"
 msgstr "Abilitato"
 
@@ -1630,10 +1801,10 @@ msgctxt "Content/Search/Input.Placeholder"
 msgid "Enter a radio name…"
 msgstr "Inserisci un nome di una radio…"
 
-#: front/src/components/library/Albums.vue:119
+#: front/src/components/library/Albums.vue:128
 msgctxt "Content/Search/Input.Placeholder"
-msgid "Enter album title..."
-msgstr "Inserisci il titolo dell'album..."
+msgid "Enter album title…"
+msgstr "Inserisci il titolo dell'album…"
 
 #: front/src/components/library/Artists.vue:116
 msgctxt "Content/Search/Input.Placeholder"
@@ -1646,32 +1817,33 @@ msgid "Enter playlist name…"
 msgstr "Inserisci il nome di una playlist…"
 
 #: front/src/views/auth/PasswordReset.vue:54
+#, fuzzy
 msgctxt "Content/Signup/Input.Placeholder"
-msgid "Enter the email address binded to your account"
+msgid "Enter the email address linked to your account"
 msgstr "Inserisci l'indirizzo email collegato al tuo account"
 
-#: front/src/components/auth/Signup.vue:103
+#: front/src/components/auth/SignupForm.vue:96
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your email"
 msgstr "Inserisci la tua email"
 
-#: front/src/components/auth/Signup.vue:98 src/components/auth/Signup.vue:100
+#: front/src/components/auth/SignupForm.vue:91
+#: src/components/auth/SignupForm.vue:93
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your invitation code (case insensitive)"
-msgstr ""
-"Inserisci il tuo codice di invito (non tiene conto di maiuscole o minuscole)"
+msgstr "Inserisci il tuo codice di invito (non tiene conto di maiuscole o minuscole)"
 
 #: front/src/components/metadata/Search.vue:114
 msgctxt "Content/Library/Input.Placeholder/Verb"
 msgid "Enter your search query…"
 msgstr "Inserisci i tuoi criteri di ricerca…"
 
-#: front/src/components/auth/Signup.vue:102
+#: front/src/components/auth/SignupForm.vue:95
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your username"
 msgstr "Inserisci il tuo nome utente"
 
-#: front/src/components/auth/Login.vue:83
+#: front/src/components/auth/LoginForm.vue:81
 msgctxt "Content/Login/Input.Placeholder"
 msgid "Enter your username or email"
 msgstr "Inserisci il tuo nome utente o l'email"
@@ -1688,7 +1860,7 @@ msgctxt "Popup/Import/Table.Label/Noun"
 msgid "Error detail"
 msgstr "Dettaglio dell'errore"
 
-#: front/src/views/admin/Settings.vue:87
+#: front/src/views/admin/Settings.vue:89
 msgctxt "Content/Admin/Menu"
 msgid "Error reporting"
 msgstr "Segnalazione errore"
@@ -1744,16 +1916,12 @@ msgctxt "Popup/Moderation/Error message"
 msgid "Error while fetching application data"
 msgstr "Errore durante il recupero dei dati dell'applicazione"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:118
+#: front/src/views/admin/moderation/DomainsDetail.vue:155
 msgctxt "Content/Moderation/Table"
 msgid "Error while fetching node info"
 msgstr "Errore durante il recupero delle informazioni del nodo"
 
 #: front/src/components/admin/SettingsGroup.vue:5
-msgctxt "Content/Settings/Error message.Title"
-msgid "Error while saving settings"
-msgstr "Errore durante il salvataggio delle impostazioni"
-
 #: front/src/components/federation/FetchButton.vue:73
 msgctxt "Content/*/Error message.Title"
 msgid "Error while saving settings"
@@ -1764,6 +1932,18 @@ msgctxt "Content/Library/Error message.Title"
 msgid "Error while submitting edit"
 msgstr "Errore durante l'invio della modifica"
 
+#: front/src/components/manage/moderation/NoteForm.vue:3
+#, fuzzy
+msgctxt "Content/Moderation/Error message.Title"
+msgid "Error while submitting note"
+msgstr "Errore durante l'invio della modifica"
+
+#: front/src/components/moderation/ReportModal.vue:11
+#, fuzzy
+msgctxt "Popup/Moderation/Error message"
+msgid "Error while submitting report"
+msgstr "Errore durante l'invio della modifica"
+
 #: front/src/components/mixins/Translations.vue:32
 #: front/src/components/mixins/Translations.vue:33
 msgctxt "Content/Library/Table/Short"
@@ -1798,9 +1978,14 @@ msgctxt "Content/Radio/Table.Label/Verb"
 msgid "Exclude"
 msgstr "Escludi"
 
+#: front/src/components/common/CollapseLink.vue:2
+msgctxt "*/*/Button,Label"
+msgid "Expand"
+msgstr "Espandi"
+
 #: front/src/components/manage/users/InvitationsTable.vue:41
-#: front/src/components/mixins/Translations.vue:49
-#: front/src/components/mixins/Translations.vue:50
+#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:60
 msgctxt "Content/Admin/Table.Label/Noun"
 msgid "Expiration date"
 msgstr "Data di scadenza"
@@ -1817,16 +2002,8 @@ msgstr "Scaduto/utilizzato"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:110
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Explain why you're applying this policy. Depending on your instance "
-"configuration, this will help you remember why you acted on this account or "
-"domain, and may be displayed publicly to help users understand what "
-"moderation rules are in place."
-msgstr ""
-"Spiega perchè stai applicando questa regola. In base alla configurazione "
-"della tua istanza, questo ti aiuterà a ricordare perchè hai eseguito questa "
-"azione su questo account o dominio, e può essere mostrata pubblicamente per "
-"aiutare gli utenti a capire quali regole sono applicate qui."
+msgid "Explain why you're applying this policy. Depending on your instance configuration, this will help you remember why you acted on this account or domain, and may be displayed publicly to help users understand what moderation rules are in place."
+msgstr "Spiega perchè stai applicando questa regola. In base alla configurazione della tua istanza, questo ti aiuterà a ricordare perchè hai eseguito questa azione su questo account o dominio, e può essere mostrata pubblicamente per aiutare gli utenti a capire quali regole sono applicate qui."
 
 #: front/src/components/manage/library/UploadsTable.vue:25
 #: front/src/views/content/libraries/FilesTable.vue:16
@@ -1834,31 +2011,28 @@ msgctxt "Content/Library/Dropdown"
 msgid "Failed"
 msgstr "Fallito"
 
-#: front/src/views/content/remote/Card.vue:62
+#: front/src/views/content/remote/Card.vue:75
 msgctxt "Content/Library/Card.List item/Noun"
 msgid "Failed tracks:"
 msgstr "Tracce con errore:"
 
-#: front/src/views/admin/library/AlbumDetail.vue:165
-#: front/src/views/admin/library/ArtistDetail.vue:154
-#: front/src/views/admin/library/TrackDetail.vue:217
+#: front/src/views/admin/library/AlbumDetail.vue:171
+#: front/src/views/admin/library/ArtistDetail.vue:159
+#: front/src/views/admin/library/TrackDetail.vue:223
 msgctxt "*/*/*"
 msgid "Favorited tracks"
 msgstr "Tracce preferite"
 
 #: front/src/components/Sidebar.vue:66
+#: src/components/mixins/Translations.vue:88
+#: front/src/components/mixins/Translations.vue:89
 msgctxt "Sidebar/Favorites/List item.Link/Noun"
 msgid "Favorites"
 msgstr "Preferiti"
 
-#: front/src/components/mixins/Translations.vue:76
-#: front/src/components/mixins/Translations.vue:77
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Favorites"
-msgstr "Preferiti"
-
-#: front/src/views/admin/Settings.vue:84
-msgctxt "Content/Admin/Menu"
+#: front/src/components/About.vue:110 src/views/admin/Settings.vue:84
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Federation"
 msgstr "Federazione"
 
@@ -1882,6 +2056,12 @@ msgctxt "Content/Radio/Table.Label/Noun"
 msgid "Filter name"
 msgstr "Filtra nome"
 
+#: front/src/components/Home.vue:118
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Find another pod"
+msgstr "Invia un'altra modifica"
+
 #: front/src/components/manage/library/UploadsTable.vue:26
 #: front/src/components/mixins/Translations.vue:36
 #: front/src/views/content/libraries/FilesTable.vue:17
@@ -1891,25 +2071,31 @@ msgid "Finished"
 msgstr "Finito"
 
 #: front/src/components/manage/moderation/AccountsTable.vue:42
-#: front/src/components/manage/moderation/DomainsTable.vue:41
-#: front/src/views/admin/library/AlbumDetail.vue:149
-#: front/src/views/admin/library/ArtistDetail.vue:138
-#: front/src/views/admin/library/LibraryDetail.vue:153
-#: front/src/views/admin/library/TrackDetail.vue:201
+#: front/src/components/manage/moderation/DomainsTable.vue:49
+#: front/src/views/admin/library/AlbumDetail.vue:155
+#: front/src/views/admin/library/ArtistDetail.vue:143
+#: front/src/views/admin/library/LibraryDetail.vue:162
+#: front/src/views/admin/library/TagDetail.vue:98
+#: front/src/views/admin/library/TrackDetail.vue:207
 #: front/src/views/admin/library/UploadDetail.vue:167
-#: front/src/views/admin/moderation/AccountsDetail.vue:235
-#: front/src/views/admin/moderation/DomainsDetail.vue:151
+#: front/src/views/admin/moderation/AccountsDetail.vue:236
+#: front/src/views/admin/moderation/DomainsDetail.vue:188
 msgctxt "Content/Moderation/Table.Label/Short (Value is a date)"
 msgid "First seen"
 msgstr "Visto per la prima volta"
 
-#: front/src/components/mixins/Translations.vue:46
-#: front/src/components/mixins/Translations.vue:47
+#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:57
 msgctxt "Content/Moderation/Dropdown/Noun"
 msgid "First seen date"
 msgstr "Visto per la prima volta in data"
 
-#: front/src/views/content/remote/Card.vue:87
+#: front/src/components/ShortcutsModal.vue:64
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Focus searchbar"
+msgstr "Metti in primo piano la barra di ricerca"
+
+#: front/src/views/content/remote/Card.vue:100
 msgctxt "Content/Library/Card.Button.Label/Verb"
 msgid "Follow"
 msgstr "Segui"
@@ -1919,43 +2105,35 @@ msgctxt "Content/Library/Title/Verb"
 msgid "Follow remote libraries"
 msgstr "Segui librerie remote"
 
-#: front/src/views/content/remote/Card.vue:92
+#: front/src/views/content/remote/Card.vue:105
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Follow request pending approval"
 msgstr "Richiesta di seguire in attesa di approvazione"
 
-#: front/src/components/mixins/Translations.vue:64
-#: front/src/views/admin/library/LibraryDetail.vue:161
+#: front/src/components/manage/library/LibrariesTable.vue:53
+#: front/src/components/mixins/Translations.vue:76
+#: front/src/views/admin/library/LibraryDetail.vue:170
 #: front/src/views/content/libraries/Detail.vue:7
-#: front/src/components/mixins/Translations.vue:65
+#: front/src/components/mixins/Translations.vue:77
 msgctxt "Content/Federation/*/Noun"
 msgid "Followers"
 msgstr "Seguito da"
 
-#: front/src/components/manage/library/LibrariesTable.vue:53
-msgctxt "Content/*/*/Noun"
-msgid "Followers"
-msgstr "Seguito da"
-
-#: front/src/views/content/remote/Card.vue:103
+#: front/src/views/content/remote/Card.vue:116
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Following"
 msgstr "Seguendo"
 
-#: front/src/components/mixins/Translations.vue:84
-#: front/src/components/mixins/Translations.vue:85
+#: front/src/components/mixins/Translations.vue:96
+#: front/src/components/mixins/Translations.vue:97
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Follows"
 msgstr "Segue"
 
-#: front/src/components/library/TrackBase.vue:17
+#: front/src/components/library/TrackBase.vue:245
 msgctxt "Content/Track/Paragraph"
-msgid ""
-"From album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> by <a"
-" class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
-msgstr ""
-"Dall'album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> di <a"
-" class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgid "From album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgstr "Dall'album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> di <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
 
 #: front/src/components/auth/Authorize.vue:28
 msgctxt "Content/Auth/Label/Noun"
@@ -1964,38 +2142,21 @@ msgstr "Accesso completo"
 
 #: front/src/components/auth/SubsonicTokenForm.vue:7
 msgctxt "Content/Settings/Paragraph'"
-msgid ""
-"Funkwhale is compatible with other music players that support the Subsonic "
-"API."
-msgstr ""
-"Funkwhale è compatibile con altri lettori musicali che supportano le "
-"Subsonic API."
-
-#: front/src/components/Home.vue:90
-msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale is dead simple to use."
-msgstr "Funkwhale è semplicissimo da usare."
-
-#: front/src/components/Home.vue:39
-msgctxt "Content/Home/Paragraph"
-msgid ""
-"Funkwhale is designed to make it easy to listen to music you like, or to "
-"discover new artists."
-msgstr ""
-"Funkwhale è progettato per permetterti di ascoltare facilmente la musica che"
-" ti piace, o per farti scoprire nuovi artisti."
+msgid "Funkwhale is compatible with other music players that support the Subsonic API."
+msgstr "Funkwhale è compatibile con altri lettori musicali che supportano le Subsonic API."
 
-#: front/src/components/Home.vue:111
+#: front/src/components/Home.vue:88
+#, fuzzy
 msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale is free and gives you control on your music."
+msgid "Funkwhale is free and developped by a friendly community of volunteers."
 msgstr "Funkwhale è gratuito e ti da il controllo sulla tua musica."
 
-#: front/src/components/Home.vue:66
-msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale takes care of handling your music"
-msgstr "Funkwhale si preoccupa di gestire la tua musica"
+#: front/src/components/About.vue:78
+msgctxt "*/*/*"
+msgid "Funkwhale version"
+msgstr "Versione Funkwhale"
 
-#: front/src/components/ShortcutsModal.vue:38
+#: front/src/components/ShortcutsModal.vue:56
 msgctxt "Popup/Keyboard shortcuts/Title"
 msgid "General shortcuts"
 msgstr "Scorciatoie generali"
@@ -2005,35 +2166,17 @@ msgctxt "Content/Admin/Button.Label/Verb"
 msgid "Get a new invitation"
 msgstr "Ottieni un nuovo invito"
 
-#: front/src/components/Home.vue:13
-msgctxt "Content/Home/Button.Label/Verb"
-msgid "Get me to the library"
-msgstr "Portami alla libreria"
-
-#: front/src/components/Home.vue:70
-msgctxt "Content/Home/List item/Verb"
-msgid ""
-"Get quality metadata about your music thanks to <a href=\"%{ url }\" "
-"target=\"_blank\">MusicBrainz</a>"
-msgstr ""
-"Ottieni metadati di qualità sulla tua musica grazie a <a href=\"%{ url }\" "
-"target=\"_blank\">MusicBrainz</a>"
-
 #: front/src/views/content/Home.vue:12 src/views/content/Home.vue:19
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Get started"
 msgstr "Per iniziare"
 
-#: front/src/components/Footer.vue:37
+#: front/src/components/Footer.vue:45
+#: src/components/library/ImportStatusModal.vue:45
 msgctxt "Footer/*/Link"
 msgid "Getting help"
 msgstr "Chiedi aiuto"
 
-#: front/src/components/library/ImportStatusModal.vue:45
-msgctxt "Popup/Import/Table.Label/Noun"
-msgid "Getting help"
-msgstr "Chiedi aiuto"
-
 #: front/src/components/common/ActionTable.vue:35
 #: front/src/components/common/ActionTable.vue:56
 msgctxt "Content/*/Button.Label/Short, Verb"
@@ -2045,28 +2188,37 @@ msgctxt "Content/*/Button.Label/Verb"
 msgid "Go to home page"
 msgstr "Vai alla pagina iniziale"
 
+#: front/src/views/Notifications.vue:27 src/views/Notifications.vue:61
+msgctxt "Content/Notifications/Button.Label"
+msgid "Got it!"
+msgstr "Ho capito!"
+
 #: front/src/components/auth/Settings.vue:128
 msgctxt "Content/Settings/Title"
 msgid "Hidden artists"
 msgstr "Artisti nascosti"
 
+#: front/src/components/About.vue:155
+msgctxt "*/*/*/Verb"
+msgid "Hide"
+msgstr "Nascondi"
+
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:114
 msgctxt "Content/Moderation/Help text"
 msgid "Hide account or domain content, except from followers."
-msgstr ""
-"Nascondi contenuto dell'account o del dominio, ad esclusione dei seguaci."
+msgstr "Nascondi contenuto dell'account o del dominio, ad esclusione dei seguaci."
 
 #: front/src/components/moderation/FilterModal.vue:40
 msgctxt "Popup/*/Button.Label"
 msgid "Hide content"
 msgstr "Nascondi contenuto"
 
-#: front/src/components/audio/PlayButton.vue:26
+#: front/src/components/audio/PlayButton.vue:31
 msgctxt "*/Queue/Dropdown/Button/Label/Short"
 msgid "Hide content from this artist"
 msgstr "Nascondi contenuti di questo artista"
 
-#: front/src/components/audio/Player.vue:643
+#: front/src/components/audio/Player.vue:669
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Hide content from this artist…"
 msgstr "Nascondi contenuti di questo artista…"
@@ -2076,39 +2228,28 @@ msgctxt "Head/Home/Title"
 msgid "Home"
 msgstr "Pagina Iniziale"
 
-#: front/src/components/instance/Stats.vue:36
-msgctxt "Content/About/Paragraph/Unit"
-msgid "Hours of music"
-msgstr "Ore di musica"
-
 #: front/src/components/auth/SubsonicTokenForm.vue:10
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"However, accessing Funkwhale from those clients require a separate password "
-"you can set below."
-msgstr ""
-"Comunque, accedere a Funkwhale da quei client richiede un'altra password che"
-" puoi impostare qui sotto."
+msgid "However, accessing Funkwhale from those clients require a separate password you can set below."
+msgstr "Comunque, accedere a Funkwhale da quei client richiede un'altra password che puoi impostare qui sotto."
 
 #: front/src/views/auth/PasswordResetConfirm.vue:24
+#, fuzzy
 msgctxt "Content/Signup/Paragraph"
-msgid ""
-"If the email address provided in the previous step is valid and binded to a "
-"user account, you should receive an email with reset instructions in the "
-"next couple of minutes."
-msgstr ""
-"Se l'indirizzo email fornito nel passo precedente è valido e legato ad un "
-"account utente, dovresti ricevere un'email con le istruzioni per il reset "
-"nel prossimo paio di minuti."
+msgid "If the email address provided in the previous step is valid and linked to a user account, you should receive an email with reset instructions in the next couple of minutes."
+msgstr "Se l'indirizzo email fornito nel passo precedente è valido e legato ad un account utente, dovresti ricevere un'email con le istruzioni per il reset nel prossimo paio di minuti."
 
 #: front/src/components/auth/Settings.vue:205
 msgctxt "Content/Applications/Paragraph"
-msgid ""
-"If you authorize third-party applications to access your data, those "
-"applications will be listed here."
-msgstr ""
-"Se autorizzi applicazioni di terze parti ad accedere ai tuoi dati, queste "
-"applicazioni verranno elencate qui."
+msgid "If you authorize third-party applications to access your data, those applications will be listed here."
+msgstr "Se autorizzi applicazioni di terze parti ad accedere ai tuoi dati, queste applicazioni verranno elencate qui."
+
+#: front/src/components/mixins/Translations.vue:46
+#: front/src/components/mixins/Translations.vue:47
+#, fuzzy
+msgctxt "Content/Moderation/Dropdown"
+msgid "Illegal content"
+msgstr "Nascondi contenuto"
 
 #: front/src/components/library/ImportStatusModal.vue:3
 msgctxt "Popup/Import/Title"
@@ -2121,14 +2262,10 @@ msgid "Import reference"
 msgstr "Importa riferimento"
 
 #: front/src/components/manage/library/UploadsTable.vue:20
-#: front/src/views/content/libraries/FilesTable.vue:11
-#: front/src/views/content/libraries/FilesTable.vue:59
-msgctxt "Content/Library/*/Noun"
-msgid "Import status"
-msgstr "Stato dell'importazione"
-
 #: front/src/components/manage/library/UploadsTable.vue:64
 #: front/src/views/admin/library/UploadDetail.vue:131
+#: front/src/views/content/libraries/FilesTable.vue:11
+#: front/src/views/content/libraries/FilesTable.vue:59
 msgctxt "Content/*/*/Noun"
 msgid "Import status"
 msgstr "Stato dell'importazione"
@@ -2169,12 +2306,12 @@ msgctxt "Popup/Moderation/List item"
 msgid "In radio suggestions"
 msgstr "Nei suggerimenti radio"
 
-#: front/src/components/manage/users/UsersTable.vue:54
+#: front/src/components/manage/users/UsersTable.vue:55
 msgctxt "Content/Admin/Table"
 msgid "Inactive"
 msgstr "Inattivo"
 
-#: front/src/components/ShortcutsModal.vue:71
+#: front/src/components/ShortcutsModal.vue:124
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Increase volume"
 msgstr "Aumenta volume"
@@ -2192,7 +2329,7 @@ msgctxt "Content/Settings/Dropdown/Short"
 msgid "Instance"
 msgstr "Istanza"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:71
+#: front/src/views/admin/moderation/DomainsDetail.vue:99
 msgctxt "Content/Moderation/Title"
 msgid "Instance data"
 msgstr "Dati dell'istanza"
@@ -2217,21 +2354,25 @@ msgctxt "Popup/Instance/Input.Label/Noun"
 msgid "Instance URL"
 msgstr "URL dell'istanza"
 
+#: front/src/components/manage/moderation/ReportCard.vue:92
+#: front/src/components/manage/moderation/ReportCard.vue:203
+msgctxt "Content/*/*/Noun"
+msgid "Internal notes"
+msgstr "Note interne"
+
 #: front/src/components/library/FileUpload.vue:268
 msgctxt "Content/Library/Help text"
-msgid ""
-"Invalid file type, ensure you are uploading an audio file. Supported file "
-"extensions are %{ extensions }"
-msgstr ""
-"Tipo di file non valido, assicurati che stai caricando un file audio. Le "
-"estensioni di file supportate sono %{ extensions }"
+msgid "Invalid file type, ensure you are uploading an audio file. Supported file extensions are %{ extensions }"
+msgstr "Tipo di file non valido, assicurati che stai caricando un file audio. Le estensioni di file supportate sono %{ extensions }"
 
 #: front/src/components/library/ImportStatusModal.vue:139
+#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:46
 msgctxt "Popup/Import/Error.Label"
 msgid "Invalid metadata"
 msgstr "Metadati non validi"
 
-#: front/src/components/auth/Signup.vue:44
+#: front/src/components/auth/SignupForm.vue:40
 #: front/src/components/manage/users/InvitationForm.vue:11
 msgctxt "Content/*/Input.Label"
 msgid "Invitation code"
@@ -2243,7 +2384,13 @@ msgctxt "*/Admin/*/Noun"
 msgid "Invitations"
 msgstr "Inviti"
 
-#: front/src/components/Footer.vue:41
+#: front/src/components/manage/moderation/DomainsTable.vue:9
+#: front/src/views/admin/moderation/DomainsDetail.vue:106
+msgctxt "Content/Moderation/*/Adjective"
+msgid "Is present on allow-list"
+msgstr "è presente sulla lista dei consentiti"
+
+#: front/src/components/Footer.vue:49
 msgctxt "Footer/*/List item.Link"
 msgid "Issue tracker"
 msgstr "Elenco problemi"
@@ -2253,17 +2400,18 @@ msgctxt "Popup/Instance/Error message.Title"
 msgid "It is not possible to connect to the given URL"
 msgstr "Non è possibile connettersi all'URL dato"
 
-#: front/src/components/Home.vue:50
-msgctxt "Content/Home/List item/Verb"
-msgid "Keep a track of your favorite songs"
-msgstr "Tieni d'occhio le tue tracce preferite"
+#: front/src/components/mixins/Translations.vue:65
+#: front/src/components/mixins/Translations.vue:66
+msgctxt "*/*/*/Noun"
+msgid "Items"
+msgstr "Oggetti"
 
 #: front/src/components/Footer.vue:33 src/components/ShortcutsModal.vue:3
 msgctxt "*/*/*/Noun"
 msgid "Keyboard shortcuts"
 msgstr "Scorciatoie da tastiera"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:161
+#: front/src/views/admin/moderation/DomainsDetail.vue:198
 msgctxt "Content/Moderation/Table.Label.Link"
 msgid "Known accounts"
 msgstr "Account conosciuti"
@@ -2274,15 +2422,15 @@ msgid "Known libraries"
 msgstr "Librerie conosciute"
 
 #: front/src/components/manage/users/UsersTable.vue:41
-#: front/src/components/mixins/Translations.vue:58
-#: front/src/views/admin/moderation/AccountsDetail.vue:205
-#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:70
+#: front/src/views/admin/moderation/AccountsDetail.vue:206
+#: front/src/components/mixins/Translations.vue:71
 msgctxt "Content/Profile/Table.Label/Short, Noun (Value is a date)"
 msgid "Last activity"
 msgstr "Ultima attività"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:188
-#: front/src/views/admin/moderation/DomainsDetail.vue:78
+#: front/src/views/admin/moderation/AccountsDetail.vue:189
+#: front/src/views/admin/moderation/DomainsDetail.vue:115
 msgctxt "Content/*/Table.Label"
 msgid "Last checked"
 msgstr "Controllato l'ultima volta"
@@ -2297,13 +2445,13 @@ msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Last seen"
 msgstr "Visto l'ultima volta"
 
-#: front/src/components/mixins/Translations.vue:47
-#: front/src/components/mixins/Translations.vue:48
+#: front/src/components/mixins/Translations.vue:57
+#: front/src/components/mixins/Translations.vue:58
 msgctxt "Content/Moderation/Dropdown/Noun"
 msgid "Last seen date"
 msgstr "Visto l'ultima volta in data"
 
-#: front/src/views/content/remote/Card.vue:60
+#: front/src/views/content/remote/Card.vue:73
 msgctxt "Content/Library/Card.List item/Noun"
 msgid "Last update:"
 msgstr "Ultimo aggiornamento:"
@@ -2313,60 +2461,60 @@ msgctxt "Modal/*/Button.Label/Short, Verb"
 msgid "Launch"
 msgstr "Inizia"
 
-#: front/src/components/Home.vue:10
-msgctxt "Content/Home/Button.Label/Verb"
-msgid "Learn more about this instance"
-msgstr "Scopri di più su questa istanza"
+#: front/src/components/Home.vue:35
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Learn more"
+msgstr "Carica di più…"
 
 #: front/src/components/manage/users/InvitationForm.vue:58
 msgctxt "Content/Admin/Input.Placeholder"
 msgid "Leave empty for a random code"
 msgstr "Lascia vuoto per un codice casuale"
 
-#: front/src/components/audio/EmbedWizard.vue:7
+#: front/src/components/audio/EmbedWizard.vue:17
 msgctxt "Popup/Embed/Paragraph"
 msgid "Leave empty for a responsive widget"
 msgstr "Lascia vuoto per un widget adattivo"
 
-#: front/src/views/admin/library/AlbumDetail.vue:232
-#: front/src/views/admin/library/ArtistDetail.vue:221
-#: front/src/views/admin/library/TrackDetail.vue:284
-#: front/src/views/admin/moderation/AccountsDetail.vue:327
-#: front/src/views/admin/moderation/DomainsDetail.vue:234
-#: front/src/views/content/Base.vue:5
+#: front/src/components/mixins/Translations.vue:64
+#: front/src/components/mixins/Translations.vue:65
 msgctxt "*/*/*/Noun"
-msgid "Libraries"
-msgstr "Librerie"
+msgid "Length"
+msgstr "Lunghezza"
 
+#: front/src/views/admin/library/AlbumDetail.vue:248
+#: front/src/views/admin/library/ArtistDetail.vue:236
 #: front/src/views/admin/library/Base.vue:17
 #: front/src/views/admin/library/LibrariesList.vue:24
-msgctxt "*/*/*"
+#: front/src/views/admin/library/TrackDetail.vue:300
+#: front/src/views/admin/moderation/AccountsDetail.vue:339
+#: front/src/views/admin/moderation/DomainsDetail.vue:271
+#: front/src/views/content/Base.vue:5
+msgctxt "*/*/*/Noun"
 msgid "Libraries"
 msgstr "Librerie"
 
-#: front/src/components/mixins/Translations.vue:72
-#: front/src/components/mixins/Translations.vue:73
+#: front/src/components/mixins/Translations.vue:84
+#: front/src/components/mixins/Translations.vue:85
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Libraries and uploads"
 msgstr "Librerie e caricamenti"
 
 #: front/src/views/content/libraries/Form.vue:2
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Libraries help you organize and share your music collections. You can upload"
-" your own music collection to Funkwhale and share it with your friends and "
-"family."
-msgstr ""
-"Le librerie sono di aiuto per organizzare e condividere la tua collezione "
-"musicale. Puoi caricare la tua musica su Funkwhale e condividerla con amici "
-"e parenti."
+msgid "Libraries help you organize and share your music collections. You can upload your own music collection to Funkwhale and share it with your friends and family."
+msgstr "Le librerie sono di aiuto per organizzare e condividere la tua collezione musicale. Puoi caricare la tua musica su Funkwhale e condividerla con amici e parenti."
 
-#: front/src/components/Sidebar.vue:85 src/components/instance/Stats.vue:30
+#: front/src/components/Sidebar.vue:85
 #: front/src/components/manage/library/UploadsTable.vue:60
-#: front/src/components/manage/users/UsersTable.vue:173
+#: front/src/components/manage/users/UsersTable.vue:174
+#: front/src/components/mixins/Report.vue:77
 #: front/src/views/admin/library/UploadDetail.vue:144
-#: front/src/views/admin/moderation/AccountsDetail.vue:498
-msgctxt "*/*/*"
+#: front/src/views/admin/moderation/AccountsDetail.vue:518 src/entities.js:132
+#: front/src/components/mixins/Report.vue:78
+#, fuzzy
+msgctxt "*/*/*/Noun"
 msgid "Library"
 msgstr "Libreria"
 
@@ -2397,21 +2545,37 @@ msgstr "Libreria aggiornata"
 
 #: front/src/components/library/TrackDetail.vue:19
 #: front/src/components/manage/library/TracksTable.vue:43
-#: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:61
+#: front/src/views/admin/library/TrackDetail.vue:165 src/edits.js:84
+#: front/src/entities.js:115
 msgctxt "Content/*/*/Noun"
 msgid "License"
 msgstr "Licenza"
 
-#: front/src/views/admin/library/AlbumDetail.vue:157
-#: front/src/views/admin/library/ArtistDetail.vue:146
-#: front/src/views/admin/library/TrackDetail.vue:209
-msgctxt "*/*/*/Noun"
-msgid "Listenings"
-msgstr "Ascolti"
+#: front/src/components/Footer.vue:90
+msgctxt "Footer/Settings/Dropdown.Label/Theme name"
+msgid "Light"
+msgstr "Chiaro"
 
-#: front/src/components/mixins/Translations.vue:80
-#: front/src/components/mixins/Translations.vue:81
-msgctxt "Content/OAuth Scopes/Label"
+#: front/src/views/admin/library/AlbumDetail.vue:188
+#: front/src/views/admin/library/ArtistDetail.vue:176
+#: front/src/views/admin/library/LibraryDetail.vue:179
+#: front/src/views/admin/library/TrackDetail.vue:240
+#: front/src/views/admin/moderation/AccountsDetail.vue:269
+msgctxt "Content/Moderation/Table.Label/Noun"
+msgid "Linked reports"
+msgstr "Segnalazioni collegate"
+
+#: front/src/components/Home.vue:135
+msgctxt "Content/Home/Link"
+msgid "Listen to public albums and playlists shared on this pod"
+msgstr "Ascolta album e liste di riproduzione pubbliche condivise su questo pod"
+
+#: front/src/components/mixins/Translations.vue:92
+#: front/src/views/admin/library/AlbumDetail.vue:163
+#: front/src/views/admin/library/ArtistDetail.vue:151
+#: front/src/views/admin/library/TrackDetail.vue:215
+#: front/src/components/mixins/Translations.vue:93
+msgctxt "*/*/*/Noun"
 msgid "Listenings"
 msgstr "Ascolti"
 
@@ -2437,7 +2601,7 @@ msgctxt "Content/Library/Paragraph"
 msgid "Loading library data…"
 msgstr "Caricando i dati della libreria…"
 
-#: front/src/views/Notifications.vue:19
+#: front/src/views/Notifications.vue:84
 msgctxt "Content/Notifications/Paragraph"
 msgid "Loading notifications…"
 msgstr "Caricando le notifiche…"
@@ -2462,6 +2626,7 @@ msgstr "Caricando i tuoi preferiti…"
 #: front/src/components/manage/library/LibrariesTable.vue:75
 #: front/src/components/manage/library/TracksTable.vue:71
 #: front/src/components/manage/library/UploadsTable.vue:99
+#: front/src/components/manage/moderation/ReportCard.vue:173
 #: front/src/views/admin/library/AlbumDetail.vue:19
 #: front/src/views/admin/library/ArtistDetail.vue:18
 #: front/src/views/admin/library/LibraryDetail.vue:18
@@ -2477,12 +2642,12 @@ msgctxt "Content/Moderation/*/Short, Noun"
 msgid "Local account"
 msgstr "Account locale"
 
-#: front/src/components/auth/Login.vue:84
+#: front/src/components/Home.vue:96 src/views/auth/Login.vue:29
 msgctxt "Head/Login/Title"
 msgid "Log In"
 msgstr "Accedi"
 
-#: front/src/components/auth/Login.vue:4
+#: front/src/views/auth/Login.vue:4
 msgctxt "Content/Login/Title/Verb"
 msgid "Log in to your Funkwhale account"
 msgstr "Accedi al tuo account Funkwhale"
@@ -2497,7 +2662,7 @@ msgctxt "Sidebar/Profile/List item.Link"
 msgid "Logged in as %{ username }"
 msgstr "Accesso effettuato come %{ username }"
 
-#: front/src/components/Sidebar.vue:54 src/components/auth/Login.vue:42
+#: front/src/components/Sidebar.vue:54 src/components/auth/LoginForm.vue:41
 msgctxt "*/Login/*/Verb"
 msgid "Login"
 msgstr "Accedi"
@@ -2515,39 +2680,42 @@ msgstr "Disconnettiti"
 #: front/src/views/content/libraries/Home.vue:9
 msgctxt "Content/Library/Paragraph"
 msgid "Looks like you don't have a library, it's time to create one."
-msgstr ""
-"Sembra che tu non abbia ancora nessuna libreria, è tempo di crearne una."
+msgstr "Sembra che tu non abbia ancora nessuna libreria, è tempo di crearne una."
 
-#: front/src/components/audio/Player.vue:632
-#: src/components/audio/Player.vue:633
+#: front/src/components/audio/Player.vue:658
+#: src/components/audio/Player.vue:659
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping disabled. Click to switch to single-track looping."
-msgstr ""
-"Ripetizione disattivata. Clicca per attivare la ripetizione della singola "
-"traccia."
+msgstr "Ripetizione disattivata. Clicca per attivare la ripetizione della singola traccia."
 
-#: front/src/components/audio/Player.vue:635
-#: src/components/audio/Player.vue:636
+#: front/src/components/audio/Player.vue:661
+#: src/components/audio/Player.vue:662
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping on a single track. Click to switch to whole queue looping."
 msgstr "Ripeti una singola traccia. Clicca per ripetere l'intera coda."
 
-#: front/src/components/audio/Player.vue:638
-#: src/components/audio/Player.vue:639
+#: front/src/components/audio/Player.vue:664
+#: src/components/audio/Player.vue:665
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping on whole queue. Click to disable looping."
 msgstr "Ripete l'intera coda. Clicca per disattivare la ripetizione."
 
-#: front/src/components/Sidebar.vue:223
+#: front/src/components/Sidebar.vue:230
 msgctxt "Sidebar/*/Hidden text"
 msgid "Main menu"
 msgstr "Menu principale"
 
-#: front/src/views/admin/library/Base.vue:31
+#: front/src/views/admin/library/Base.vue:34
 msgctxt "Head/Admin/Title"
 msgid "Manage library"
 msgstr "Gestisci libreria"
 
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:8
+#, fuzzy
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Manage moderation rules for %{ obj }"
+msgstr "Sotto regole di moderazione"
+
 #: front/src/components/playlists/PlaylistModal.vue:3
 msgctxt "Popup/Playlist/Title/Verb"
 msgid "Manage playlists"
@@ -2563,7 +2731,7 @@ msgctxt "Content/Playlist/Button.Label/Verb"
 msgid "Manage your playlists"
 msgstr "Gestisci le tue playlist"
 
-#: front/src/views/Notifications.vue:14
+#: front/src/views/Notifications.vue:79
 msgctxt "Content/Notifications/Button.Label/Verb"
 msgid "Mark all as read"
 msgstr "Segna tutte come lette"
@@ -2578,12 +2746,12 @@ msgctxt "Content/Notifications/Button.Tooltip/Verb"
 msgid "Mark as unread"
 msgstr "Segna come non letta"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:310
+#: front/src/views/admin/moderation/AccountsDetail.vue:321
 msgctxt "Content/*/*/Unit"
 msgid "MB"
 msgstr "MB"
 
-#: front/src/components/audio/Player.vue:625
+#: front/src/components/audio/Player.vue:651
 msgctxt "Sidebar/Player/Hidden text"
 msgid "Media player"
 msgstr "Riproduttore musicale"
@@ -2593,43 +2761,59 @@ msgctxt "Content/Profile/Paragraph"
 msgid "Member since %{ date }"
 msgstr "Membro da %{ date }"
 
+#: front/src/components/manage/moderation/ReportCard.vue:109
+#: front/src/components/moderation/ReportModal.vue:41
+msgctxt "*/*/Field.Label/Noun"
+msgid "Message"
+msgstr "Messaggio"
+
 #: front/src/components/Footer.vue:32
 msgctxt "Footer/*/List item.Link"
 msgid "Mobile and desktop apps"
 msgstr "Applicazioni desktop e mobile"
 
+#: front/src/components/Home.vue:143
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Mobile apps"
+msgstr "Applicazioni desktop e mobile"
+
 #: front/src/components/Sidebar.vue:96
-#: src/components/manage/users/UsersTable.vue:177
-#: front/src/views/admin/moderation/AccountsDetail.vue:502
-#: front/src/views/admin/moderation/Base.vue:21
+#: src/components/manage/users/UsersTable.vue:178
+#: front/src/views/admin/Settings.vue:85
+#: front/src/views/admin/moderation/AccountsDetail.vue:522
+#: front/src/views/admin/moderation/Base.vue:43
 msgctxt "*/Moderation/*"
 msgid "Moderation"
 msgstr "Moderazione"
 
 #: front/src/views/admin/moderation/AccountsDetail.vue:78
-#: front/src/views/admin/moderation/DomainsDetail.vue:42
+#: front/src/views/admin/moderation/DomainsDetail.vue:70
 msgctxt "Content/Moderation/Card.Paragraph"
-msgid ""
-"Moderation policies help you control how your instance interact with a given"
-" domain or account."
-msgstr ""
-"Le regole di moderazione ti aiutano a controllare come la tua istanza "
-"interagisce con un dato dominio o account."
+msgid "Moderation policies help you control how your instance interact with a given domain or account."
+msgstr "Le regole di moderazione ti aiutano a controllare come la tua istanza interagisce con un dato dominio o account."
+
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:4
+#, fuzzy
+msgctxt "Content/Moderation/Button.Label"
+msgid "Moderation rules…"
+msgstr "Modifica regola di moderazione"
 
 #: front/src/components/library/EditCard.vue:5
 msgctxt "Content/Library/Card/Short"
 msgid "Modification %{ id }"
 msgstr "Modifica %{ id }"
 
-#: front/src/components/mixins/Translations.vue:48
-#: front/src/components/mixins/Translations.vue:49
+#: front/src/components/mixins/Translations.vue:58
+#: front/src/components/mixins/Translations.vue:59
 msgctxt "Content/Playlist/Dropdown/Noun"
 msgid "Modification date"
 msgstr "Data di modifica"
 
-#: front/src/components/library/AlbumBase.vue:42
-#: front/src/components/library/ArtistBase.vue:53
-#: front/src/components/library/TrackBase.vue:61
+#: front/src/components/audio/PlayButton.vue:100
+#: front/src/components/library/AlbumBase.vue:43
+#: front/src/components/library/ArtistBase.vue:54
+#: front/src/components/library/TrackBase.vue:59
 msgctxt "*/*/Button.Label/Noun"
 msgid "More…"
 msgstr "Di più…"
@@ -2639,7 +2823,7 @@ msgctxt "*/*/*/Noun"
 msgid "Music"
 msgstr "Musica"
 
-#: front/src/components/audio/Player.vue:631
+#: front/src/components/audio/Player.vue:657
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Mute"
 msgstr "Muto"
@@ -2686,8 +2870,8 @@ msgctxt "Content/Library/Title"
 msgid "My libraries"
 msgstr "Le mie librerie"
 
-#: front/src/components/audio/track/Row.vue:40
-#: src/components/library/EditCard.vue:60
+#: front/src/components/About.vue:105 src/components/audio/track/Row.vue:40
+#: front/src/components/library/EditCard.vue:60
 #: front/src/components/library/EditForm.vue:70
 #: front/src/components/library/TrackDetail.vue:34
 #: front/src/components/library/TrackDetail.vue:43
@@ -2697,54 +2881,56 @@ msgstr "Le mie librerie"
 #: front/src/components/manage/library/TracksTable.vue:76
 #: front/src/components/manage/library/UploadsTable.vue:121
 #: front/src/components/manage/library/UploadsTable.vue:128
-#: front/src/components/manage/users/UsersTable.vue:61
+#: front/src/components/manage/moderation/ReportCard.vue:78
+#: front/src/components/manage/moderation/ReportCard.vue:87
+#: front/src/components/manage/moderation/ReportCard.vue:193
+#: front/src/components/manage/users/UsersTable.vue:62
 #: front/src/views/admin/library/UploadDetail.vue:179
 #: front/src/views/admin/library/UploadDetail.vue:214
 #: front/src/views/admin/library/UploadDetail.vue:233
 #: front/src/views/admin/library/UploadDetail.vue:244
 #: front/src/views/admin/library/UploadDetail.vue:257
-#: front/src/views/admin/moderation/AccountsDetail.vue:192
-#: front/src/views/admin/moderation/DomainsDetail.vue:82
+#: front/src/views/admin/moderation/AccountsDetail.vue:193
+#: front/src/views/admin/moderation/DomainsDetail.vue:119
 #: front/src/views/content/libraries/FilesTable.vue:95
 #: front/src/views/content/libraries/FilesTable.vue:101
 msgctxt "*/*/*"
 msgid "N/A"
 msgstr "N/D"
 
+#: front/src/components/auth/ApplicationForm.vue:9
+#: front/src/components/auth/Settings.vue:133
+#: front/src/components/manage/library/ArtistsTable.vue:39
 #: front/src/components/manage/library/LibrariesTable.vue:48
+#: front/src/components/manage/library/TagsTable.vue:41
 #: front/src/components/manage/library/UploadsTable.vue:59
-msgctxt "*/*/*"
-msgid "Name"
-msgstr "Nome"
-
-#: front/src/components/auth/ApplicationForm.vue:9
-msgctxt "Content/Applications/Input.Label/Noun"
-msgid "Name"
-msgstr "Nome"
-
-#: front/src/components/auth/Settings.vue:133
-#: front/src/components/manage/library/ArtistsTable.vue:39
 #: front/src/components/manage/moderation/AccountsTable.vue:39
-#: front/src/components/manage/moderation/DomainsTable.vue:38
-#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/manage/moderation/DomainsTable.vue:46
+#: front/src/components/mixins/Translations.vue:63
 #: front/src/components/playlists/PlaylistModal.vue:45
-#: front/src/views/admin/library/ArtistDetail.vue:98
+#: front/src/views/admin/library/ArtistDetail.vue:103
 #: front/src/views/admin/library/LibraryDetail.vue:85
+#: front/src/views/admin/library/TagDetail.vue:68
 #: front/src/views/admin/library/UploadDetail.vue:92
-#: front/src/views/admin/moderation/DomainsDetail.vue:97
-#: front/src/views/content/libraries/Form.vue:10 src/edits.js:10
-#: front/src/components/mixins/Translations.vue:54
+#: front/src/views/admin/moderation/DomainsDetail.vue:134
+#: front/src/views/content/libraries/Form.vue:10 src/edits.js:17
+#: front/src/components/mixins/Translations.vue:64
 msgctxt "*/*/*/Noun"
 msgid "Name"
 msgstr "Nome"
 
+#: front/src/views/Notifications.vue:24 src/views/Notifications.vue:58
+msgctxt "*/*/*"
+msgid "Never"
+msgstr "Mai"
+
 #: front/src/components/auth/Settings.vue:88
 #: front/src/views/auth/PasswordResetConfirm.vue:14
 msgctxt "Content/Settings/Input.Label"
 msgid "New password"
 msgstr "Nuova password"
 
-#: front/src/components/Sidebar.vue:173
+#: front/src/components/Sidebar.vue:177
 msgctxt "Sidebar/Player/Paragraph"
 msgid "New tracks will be appended here automatically."
 msgstr "Le nuove tracce saranno allegate qui automaticamente."
@@ -2754,21 +2940,18 @@ msgctxt "Content/Library/Card.Table.Header/Short"
 msgid "New value"
 msgstr "Nuovo valore"
 
-#: front/src/components/audio/Player.vue:629
+#: front/src/components/audio/Player.vue:655
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Next track"
 msgstr "Prossima traccia"
 
-#: front/src/components/Sidebar.vue:130
+#: front/src/components/Sidebar.vue:134
+#: front/src/components/manage/moderation/DomainsTable.vue:13
+#: front/src/views/admin/moderation/DomainsDetail.vue:110
 msgctxt "*/*/*"
 msgid "No"
 msgstr "No"
 
-#: front/src/components/Home.vue:95
-msgctxt "Content/Home/List item"
-msgid "No add-ons, no plugins : you only need a web library"
-msgstr "Nessun addon, nessun plugin: ti serve solo una libreria in rete"
-
 #: front/src/components/audio/Search.vue:25
 msgctxt "Content/Search/Paragraph"
 msgid "No album matched your query"
@@ -2782,8 +2965,12 @@ msgstr "Nessun artista corrisponde alla tua ricerca"
 #: front/src/components/library/TrackDetail.vue:14
 msgctxt "Content/Track/Table.Paragraph"
 msgid "No copyright information available for this track"
-msgstr ""
-"Nessuna informazione sui diritti d'autore disponibile per questa traccia"
+msgstr "Nessuna informazione sui diritti d'autore disponibile per questa traccia"
+
+#: front/src/components/About.vue:25 src/components/Home.vue:25
+msgctxt "Content/Home/Paragraph"
+msgid "No description available."
+msgstr "Nessuna descrizione disponibile."
 
 #: front/src/components/library/TrackDetail.vue:25
 msgctxt "Content/Track/Table.Paragraph"
@@ -2795,7 +2982,7 @@ msgctxt "Content/Federation/Paragraph"
 msgid "No matching library."
 msgstr "Nessuna libreria corrispondente."
 
-#: front/src/views/Notifications.vue:28
+#: front/src/views/Notifications.vue:93
 msgctxt "Content/Notifications/Paragraph"
 msgid "No notification to show."
 msgstr "Nessuna notifica da visualizzare."
@@ -2805,6 +2992,16 @@ msgctxt "Content/*/Paragraph"
 msgid "No results were found."
 msgstr "Nessun risultato trovato."
 
+#: front/src/components/About.vue:32
+msgctxt "Content/Home/Paragraph"
+msgid "No rules available."
+msgstr "Nessuna regola disponibile."
+
+#: front/src/components/About.vue:39
+msgctxt "Content/Home/Paragraph"
+msgid "No terms available."
+msgstr "Nessun termine disponibile."
+
 #: front/src/components/mixins/Translations.vue:10
 #: front/src/components/mixins/Translations.vue:11
 msgctxt "Content/Settings/Dropdown"
@@ -2821,18 +3018,22 @@ msgctxt "Content/Admin/Table"
 msgid "Not used"
 msgstr "Non utilizzato"
 
-#: front/src/components/mixins/Translations.vue:100
-#: front/src/components/mixins/Translations.vue:101
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Notifications"
-msgstr "Notifiche"
-
-#: front/src/components/Sidebar.vue:46 src/views/Notifications.vue:76
+#: front/src/components/Sidebar.vue:46
+#: src/components/mixins/Translations.vue:112
+#: front/src/views/Notifications.vue:151
+#: src/components/mixins/Translations.vue:113
 msgctxt "*/Notifications/*"
 msgid "Notifications"
 msgstr "Notifiche"
 
-#: front/src/components/Footer.vue:47
+#: front/src/components/mixins/Translations.vue:47
+#: front/src/components/mixins/Translations.vue:48
+#, fuzzy
+msgctxt "Content/Moderation/Dropdown"
+msgid "Offensive content"
+msgstr "Nascondi contenuto"
+
+#: front/src/components/Footer.vue:55
 msgctxt "Footer/*/List item.Link"
 msgid "Official website"
 msgstr "Sito ufficiale"
@@ -2847,6 +3048,12 @@ msgctxt "Content/Library/Card.Table.Header/Short"
 msgid "Old value"
 msgstr "Vecchio valore"
 
+#: front/src/components/About.vue:90
+#, fuzzy
+msgctxt "*/*/*/State of registrations"
+msgid "Open"
+msgstr "Aperto"
+
 #: front/src/components/manage/users/InvitationsTable.vue:20
 msgctxt "Content/Admin/Dropdown/Adjective"
 msgid "Open"
@@ -2854,29 +3061,29 @@ msgstr "Aperto"
 
 #: front/src/components/library/ImportStatusModal.vue:56
 msgctxt "Popup/Import/Table.Label/Value"
-msgid ""
-"Open a support thread (include the debug information below in your message)"
-msgstr ""
-"Apri una conversazione di supporto (includi nel tuo messaggio le "
-"informazioni di debug qui sotto)"
-
-#: front/src/components/library/AlbumBase.vue:73
-#: front/src/components/library/ArtistBase.vue:84
-#: front/src/components/library/TrackBase.vue:92
+msgid "Open a support thread (include the debug information below in your message)"
+msgstr "Apri una conversazione di supporto (includi nel tuo messaggio le informazioni di debug qui sotto)"
+
+#: front/src/components/library/AlbumBase.vue:87
+#: front/src/components/library/ArtistBase.vue:99
+#: front/src/components/library/TagDetail.vue:11
+#: front/src/components/library/TrackBase.vue:103
+#: front/src/components/manage/moderation/ReportCard.vue:128
 msgctxt "Content/Moderation/Link"
 msgid "Open in moderation interface"
 msgstr "Apri nell'interfaccia di moderazione"
 
-#: front/src/views/admin/library/AlbumDetail.vue:31
-#: front/src/views/admin/library/ArtistDetail.vue:30
-#: front/src/views/admin/library/TrackDetail.vue:30
+#: front/src/views/admin/library/AlbumDetail.vue:37
+#: front/src/views/admin/library/ArtistDetail.vue:35
+#: front/src/views/admin/library/TagDetail.vue:21
+#: front/src/views/admin/library/TrackDetail.vue:36
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open local profile"
 msgstr "Apri profilo locale"
 
-#: front/src/views/admin/library/AlbumDetail.vue:46
-#: front/src/views/admin/library/ArtistDetail.vue:45
-#: front/src/views/admin/library/TrackDetail.vue:45
+#: front/src/views/admin/library/AlbumDetail.vue:52
+#: front/src/views/admin/library/ArtistDetail.vue:50
+#: front/src/views/admin/library/TrackDetail.vue:51
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open on MusicBrainz"
 msgstr "Apri su MusicBrainz"
@@ -2886,10 +3093,10 @@ msgctxt "Content/Moderation/Link/Verb"
 msgid "Open profile"
 msgstr "Apri profilo"
 
-#: front/src/views/admin/library/AlbumDetail.vue:54
-#: front/src/views/admin/library/ArtistDetail.vue:53
+#: front/src/views/admin/library/AlbumDetail.vue:60
+#: front/src/views/admin/library/ArtistDetail.vue:58
 #: front/src/views/admin/library/LibraryDetail.vue:49
-#: front/src/views/admin/library/TrackDetail.vue:53
+#: front/src/views/admin/library/TrackDetail.vue:59
 #: front/src/views/admin/library/UploadDetail.vue:50
 #: front/src/views/admin/moderation/AccountsDetail.vue:52
 msgctxt "Content/Moderation/Link/Verb"
@@ -2910,6 +3117,7 @@ msgstr "O personalizza la tua regola"
 #: src/components/library/Radios.vue:41
 #: front/src/components/manage/library/EditsCardList.vue:37
 #: front/src/components/manage/users/UsersTable.vue:17
+#: front/src/views/admin/moderation/ReportsList.vue:42
 #: front/src/views/playlists/List.vue:25
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Order"
@@ -2917,40 +3125,51 @@ msgstr "Ordine"
 
 #: front/src/components/favorites/List.vue:24
 #: src/components/library/Albums.vue:15
-#: front/src/components/library/Artists.vue:15
+#: front/src/components/library/Artists.vue:19
 #: src/components/library/Radios.vue:33
 #: front/src/components/manage/library/AlbumsTable.vue:11
 #: front/src/components/manage/library/ArtistsTable.vue:11
 #: front/src/components/manage/library/EditsCardList.vue:29
 #: front/src/components/manage/library/LibrariesTable.vue:20
+#: front/src/components/manage/library/TagsTable.vue:11
 #: front/src/components/manage/library/TracksTable.vue:11
 #: front/src/components/manage/library/UploadsTable.vue:30
 #: front/src/components/manage/moderation/AccountsTable.vue:11
-#: front/src/components/manage/moderation/DomainsTable.vue:9
+#: front/src/components/manage/moderation/DomainsTable.vue:17
 #: front/src/components/manage/users/InvitationsTable.vue:9
 #: front/src/components/manage/users/UsersTable.vue:9
+#: front/src/views/admin/moderation/ReportsList.vue:34
 #: front/src/views/content/libraries/FilesTable.vue:21
 #: front/src/views/playlists/List.vue:17
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Ordering"
 msgstr "Ordinamento"
 
-#: front/src/components/library/Albums.vue:23
-#: src/components/library/Artists.vue:23
+#: front/src/components/library/Albums.vue:27
+#: src/components/library/Artists.vue:27
 #: front/src/components/manage/library/AlbumsTable.vue:19
 #: front/src/components/manage/library/ArtistsTable.vue:19
 #: front/src/components/manage/library/LibrariesTable.vue:28
+#: front/src/components/manage/library/TagsTable.vue:19
 #: front/src/components/manage/library/TracksTable.vue:19
 #: front/src/components/manage/library/UploadsTable.vue:38
 #: front/src/components/manage/moderation/AccountsTable.vue:19
-#: front/src/components/manage/moderation/DomainsTable.vue:17
+#: front/src/components/manage/moderation/DomainsTable.vue:25
 #: front/src/views/content/libraries/FilesTable.vue:29
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Ordering direction"
 msgstr "Direzione di ordinamento"
 
+#: front/src/components/mixins/Translations.vue:48
+#: front/src/components/mixins/Translations.vue:49
+msgctxt "Content/Moderation/Dropdown"
+msgid "Other"
+msgstr "Altro"
+
+#: front/src/components/manage/moderation/ReportCard.vue:143
 #: front/src/components/manage/users/InvitationsTable.vue:38
-msgctxt "Content/Admin/Table.Label"
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Owner"
 msgstr "Proprietario"
 
@@ -2969,12 +3188,15 @@ msgctxt "Content/*/Hidden text/Noun"
 msgid "Pagination"
 msgstr "Impaginazione"
 
-#: front/src/components/auth/Login.vue:33 src/components/auth/Signup.vue:40
-msgctxt "Content/*/Input.Label"
+#: front/src/components/auth/LoginForm.vue:32
+#: src/components/auth/Settings.vue:291
+#: front/src/components/auth/SignupForm.vue:36
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Password"
 msgstr "Password"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:94
+#: front/src/components/auth/SubsonicTokenForm.vue:100
 msgctxt "Content/Settings/Message"
 msgid "Password updated"
 msgstr "Password aggiornata"
@@ -2984,12 +3206,12 @@ msgctxt "Content/Signup/Card.Title"
 msgid "Password updated successfully"
 msgstr "Password aggiornata con successo"
 
-#: front/src/components/audio/Player.vue:628
+#: front/src/components/audio/Player.vue:654
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Pause track"
 msgstr "Metti in pausa"
 
-#: front/src/components/ShortcutsModal.vue:59
+#: front/src/components/ShortcutsModal.vue:96
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Pause/play the current track"
 msgstr "Pausa/riproduci la traccia corrente"
@@ -3018,7 +3240,7 @@ msgctxt "Content/Library/Label"
 msgid "Pending files"
 msgstr "File in sospeso"
 
-#: front/src/components/Sidebar.vue:225
+#: front/src/components/Sidebar.vue:232
 msgctxt "Sidebar/Notifications/Hidden text"
 msgid "Pending follow requests"
 msgstr "Richiesta di seguire in sospeso"
@@ -3029,84 +3251,76 @@ msgctxt "Content/Admin/*/Noun"
 msgid "Pending review"
 msgstr "Revisione in sospeso"
 
-#: front/src/components/Sidebar.vue:226
+#: front/src/components/Sidebar.vue:233
 msgctxt "Sidebar/Moderation/Hidden text"
 msgid "Pending review edits"
 msgstr "Revisioni delle modifiche in sospeso"
 
+#: front/src/components/auth/Settings.vue:176
 #: front/src/components/manage/users/UsersTable.vue:42
 #: front/src/views/admin/moderation/AccountsDetail.vue:166
-msgctxt "Content/Admin/Table.Label/Noun"
-msgid "Permissions"
-msgstr "Permessi"
-
-#: front/src/components/auth/Settings.vue:176
 msgctxt "Content/*/*/Noun"
 msgid "Permissions"
 msgstr "Permessi"
 
 #: front/src/components/audio/PlayButton.vue:9
-#: front/src/components/library/TrackBase.vue:26
+#: front/src/components/library/TrackBase.vue:24
 msgctxt "*/Queue/Button.Label/Short, Verb"
 msgid "Play"
 msgstr "Riproduci"
 
 #: front/src/components/audio/album/Card.vue:48
-#: front/src/components/audio/artist/Card.vue:44
-#: front/src/components/library/AlbumBase.vue:20
+#: front/src/components/library/AlbumBase.vue:21
 #: front/src/components/library/AlbumDetail.vue:11
 #: src/views/playlists/Detail.vue:24
 msgctxt "Content/Queue/Button.Label/Short, Verb"
 msgid "Play all"
 msgstr "Riproduci tutto"
 
-#: front/src/components/library/ArtistBase.vue:31
+#: front/src/components/library/ArtistBase.vue:32
 msgctxt "Content/Artist/Button.Label/Verb"
 msgid "Play all albums"
 msgstr "Riproduci tutti gli album"
 
-#: front/src/components/audio/PlayButton.vue:76
+#: front/src/components/audio/PlayButton.vue:92
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play next"
 msgstr "Riproduci la prossima"
 
-#: front/src/components/ShortcutsModal.vue:67
+#: front/src/components/ShortcutsModal.vue:120
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Play next track"
 msgstr "Riproduci traccia successiva"
 
-#: front/src/components/audio/PlayButton.vue:74
+#: front/src/components/audio/PlayButton.vue:90
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play now"
 msgstr "Riproduci ora"
 
-#: front/src/components/ShortcutsModal.vue:63
+#: front/src/components/ShortcutsModal.vue:116
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Play previous track"
 msgstr "Riproduci traccia precedente"
 
-#: front/src/components/audio/PlayButton.vue:77
+#: front/src/components/audio/PlayButton.vue:93
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play similar songs"
 msgstr "Riproduci canzoni simili"
 
-#: front/src/components/Sidebar.vue:224
+#: front/src/components/Sidebar.vue:231
 msgctxt "Sidebar/Player/Hidden text"
 msgid "Play this track"
 msgstr "Riproduci questa traccia"
 
-#: front/src/components/audio/Player.vue:627
+#: front/src/components/audio/Player.vue:653
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Play track"
 msgstr "Riproduci traccia"
 
-#: front/src/components/audio/PlayButton.vue:82
-msgctxt "*/Queue/Button/Title"
-msgid "Play..."
-msgstr "Riproduci..."
-
-#: front/src/views/playlists/Detail.vue:91
-msgctxt "Head/Playlist/Title"
+#: front/src/components/mixins/Report.vue:66 src/views/playlists/Detail.vue:121
+#: front/src/components/mixins/Report.vue:67
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Playlist"
 msgstr "Lista di riproduzione"
 
@@ -3114,10 +3328,8 @@ msgstr "Lista di riproduzione"
 msgctxt "Content/Playlist/Header.Subtitle"
 msgid "Playlist containing %{ count } track, by %{ username }"
 msgid_plural "Playlist containing %{ count } tracks, by %{ username }"
-msgstr[0] ""
-"Lista di riproduzione contenente %{ count } traccia, di %{ username }"
-msgstr[1] ""
-"Lista di riproduzione contenente %{ count } tracce, di %{ username }"
+msgstr[0] "Lista di riproduzione contenente %{ count } traccia, di %{ username }"
+msgstr[1] "Lista di riproduzione contenente %{ count } tracce, di %{ username }"
 
 #: front/src/components/playlists/Form.vue:9
 msgctxt "Content/Playlist/Message"
@@ -3144,63 +3356,60 @@ msgctxt "Content/Playlist/Dropdown.Label"
 msgid "Playlist visibility"
 msgstr "Visibilità lista di riproduzione"
 
-#: front/src/components/mixins/Translations.vue:88
-#: front/src/components/mixins/Translations.vue:89
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Playlists"
-msgstr "Liste di riproduzione"
-
 #: front/src/components/Sidebar.vue:71 src/components/library/Home.vue:16
-#: front/src/components/library/Library.vue:16 src/views/admin/Settings.vue:83
-#: front/src/views/admin/library/AlbumDetail.vue:173
-#: front/src/views/admin/library/ArtistDetail.vue:162
-#: front/src/views/admin/library/TrackDetail.vue:225
+#: front/src/components/library/Library.vue:16
+#: front/src/components/mixins/Translations.vue:100
+#: src/views/admin/Settings.vue:83
+#: front/src/views/admin/library/AlbumDetail.vue:179
+#: front/src/views/admin/library/ArtistDetail.vue:167
+#: front/src/views/admin/library/TrackDetail.vue:231
 #: src/views/playlists/List.vue:106
+#: front/src/components/mixins/Translations.vue:101
 msgctxt "*/*/*"
 msgid "Playlists"
 msgstr "Liste di riproduzione"
 
-#: front/src/components/Home.vue:56
-msgctxt "Content/Home/List item"
-msgid "Playlists? We got them"
-msgstr "Liste di riproduzione? Ce le abbiamo"
+#: front/src/components/audio/EmbedWizard.vue:9
+msgctxt "Content/Embed/Message"
+msgid "Please contact your admins and ask them to update the corresponding setting."
+msgstr ""
 
 #: front/src/components/auth/Settings.vue:79
 msgctxt "Content/Settings/Error message.List item/Call to action"
 msgid "Please double-check your password is correct"
 msgstr "Per favore controlla se la tua password è corretta"
 
-#: front/src/components/auth/Login.vue:9
+#: front/src/components/auth/LoginForm.vue:5
 msgctxt "Content/Login/Error message.List item/Call to action"
 msgid "Please double-check your username/password couple is correct"
-msgstr ""
-"Per favore controlla se la combinazione nome utente/password è corretta"
+msgstr "Per favore controlla se la combinazione nome utente/password è corretta"
 
 #: front/src/components/auth/Settings.vue:46
 msgctxt "Content/Settings/Paragraph"
 msgid "PNG, GIF or JPG. At most 2MB. Will be downscaled to 400x400px."
 msgstr "PNG, GIF or JPG. Massimo 2MB. Saranno scalate a 400x400px."
 
-#: front/src/views/admin/library/TrackDetail.vue:137
-msgctxt "*/*/*/Noun"
+#: front/src/components/About.vue:72
+msgctxt "Content/About/Header/Name"
+msgid "Pod configuration"
+msgstr "Configurazione Pod"
+
+#: front/src/views/admin/library/TrackDetail.vue:143 src/edits.js:70
+msgctxt "*/*/*/Short, Noun"
 msgid "Position"
 msgstr "Posizione"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:118
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Prevent account or domain from triggering notifications, except from "
-"followers."
-msgstr ""
-"Evita che l'account o il dominio facciano scattare notifiche, ad esclusione "
-"dei seguaci."
+msgid "Prevent account or domain from triggering notifications, except from followers."
+msgstr "Evita che l'account o il dominio facciano scattare notifiche, ad esclusione dei seguaci."
 
-#: front/src/components/audio/EmbedWizard.vue:33
+#: front/src/components/audio/EmbedWizard.vue:43
 msgctxt "Popup/Embed/Title/Noun"
 msgid "Preview"
 msgstr "Anteprima"
 
-#: front/src/components/audio/Player.vue:626
+#: front/src/components/audio/Player.vue:652
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Previous track"
 msgstr "Traccia precedente"
@@ -3211,7 +3420,7 @@ msgctxt "Content/Settings/Dropdown/Short"
 msgid "Private"
 msgstr "Privato"
 
-#: front/src/views/content/remote/Card.vue:43
+#: front/src/views/content/remote/Card.vue:56
 msgctxt "Content/Library/Card.List item"
 msgid "Problem during scanning"
 msgstr "Errore durante la scansione"
@@ -3232,14 +3441,20 @@ msgctxt "Content/Library/Tab.Title/Short"
 msgid "Processing"
 msgstr "Elaborazione"
 
-#: front/src/components/mixins/Translations.vue:68
-#: front/src/components/mixins/Translations.vue:69
+#: front/src/components/mixins/Translations.vue:80
+#: front/src/components/mixins/Translations.vue:81
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Profile"
 msgstr "Profilo"
 
+#: front/src/components/auth/SignupForm.vue:5
+#, fuzzy
+msgctxt "Content/Signup/Form/Paragraph"
+msgid "Public registrations are not possible on this instance. You will need an invitation code to sign up."
+msgstr "Le registrazioni sono chiuse su questa istanza, avrai bisogno di un codice d'invito per registrarti."
+
 #: front/src/components/manage/moderation/AccountsTable.vue:188
-#: front/src/components/manage/moderation/DomainsTable.vue:168
+#: front/src/components/manage/moderation/DomainsTable.vue:186
 #: front/src/views/content/libraries/Quota.vue:36
 #: front/src/views/content/libraries/Quota.vue:39
 #: front/src/views/content/libraries/Quota.vue:62
@@ -3270,7 +3485,7 @@ msgctxt "Sidebar/Queue/Tab.Title/Noun"
 msgid "Queue"
 msgstr "Coda"
 
-#: front/src/components/audio/Player.vue:322
+#: front/src/components/audio/Player.vue:329
 msgctxt "Content/Queue/Message"
 msgid "Queue shuffled!"
 msgstr "Coda mischiata!"
@@ -3302,16 +3517,12 @@ msgstr "Radio aggiornata"
 
 #: front/src/components/library/Library.vue:13
 #: src/components/library/Radios.vue:142
+#: front/src/components/mixins/Translations.vue:104
+#: front/src/components/mixins/Translations.vue:105
 msgctxt "*/*/*"
 msgid "Radios"
 msgstr "Radio"
 
-#: front/src/components/mixins/Translations.vue:92
-#: front/src/components/mixins/Translations.vue:93
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Radios"
-msgstr "Radio"
-
 #: front/src/components/auth/ApplicationForm.vue:151
 msgctxt "Content/OAuth Scopes/Label/Verb"
 msgid "Read"
@@ -3338,15 +3549,15 @@ msgctxt "Content/Moderation/*/Noun"
 msgid "Reason"
 msgstr "Motivo"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:251
-#: front/src/views/admin/moderation/DomainsDetail.vue:179
+#: front/src/views/admin/moderation/AccountsDetail.vue:252
+#: front/src/views/admin/moderation/DomainsDetail.vue:216
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Received library follows"
 msgstr "Ricevuto un follow della libreria"
 
-#: front/src/components/manage/moderation/DomainsTable.vue:40
-#: front/src/components/mixins/Translations.vue:62
-#: front/src/components/mixins/Translations.vue:63
+#: front/src/components/manage/moderation/DomainsTable.vue:48
+#: front/src/components/mixins/Translations.vue:74
+#: front/src/components/mixins/Translations.vue:75
 msgctxt "Content/Moderation/*/Noun"
 msgid "Received messages"
 msgstr "Messaggi ricevuti"
@@ -3366,6 +3577,12 @@ msgctxt "Content/Home/Title"
 msgid "Recently added"
 msgstr "Aggiunte recentemente"
 
+#: front/src/components/Home.vue:167
+#, fuzzy
+msgctxt "Content/Home/Title"
+msgid "Recently added albums"
+msgstr "Aggiunte recentemente"
+
 #: front/src/components/library/Home.vue:11
 msgctxt "Content/Home/Title"
 msgid "Recently favorited"
@@ -3394,14 +3611,14 @@ msgctxt "Popup/*/Message.Title"
 msgid "Refresh error"
 msgstr "Errore di aggiornamento"
 
-#: front/src/views/admin/library/AlbumDetail.vue:50
-#: front/src/views/admin/library/ArtistDetail.vue:49
-#: front/src/views/admin/library/TrackDetail.vue:49
+#: front/src/views/admin/library/AlbumDetail.vue:56
+#: front/src/views/admin/library/ArtistDetail.vue:54
+#: front/src/views/admin/library/TrackDetail.vue:55
 msgctxt "Content/Moderation/Button/Verb"
 msgid "Refresh from remote server"
 msgstr "Aggiorna da un server remoto"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:127
+#: front/src/views/admin/moderation/DomainsDetail.vue:164
 msgctxt "Content/Moderation/Button.Label/Verb"
 msgid "Refresh node info"
 msgstr "Aggiorna informazioni del nodo"
@@ -3413,12 +3630,8 @@ msgstr "Aggiornamento in sospeso"
 
 #: front/src/components/federation/FetchButton.vue:80
 msgctxt "Popup/*/Message.Content"
-msgid ""
-"Refresh request wasn't proceed in time by our server. It will be processed "
-"later."
-msgstr ""
-"La richiesta di aggiornamento non è stata processata in tempo dal nostro "
-"server. Sarà processata più tardi."
+msgid "Refresh request wasn't proceed in time by our server. It will be processed later."
+msgstr "La richiesta di aggiornamento non è stata processata in tempo dal nostro server. Sarà processata più tardi."
 
 #: front/src/components/federation/FetchButton.vue:16
 msgctxt "Popup/*/Message.Title"
@@ -3440,16 +3653,13 @@ msgctxt "Popup/*/Title"
 msgid "Refreshing object from remote…"
 msgstr "Aggiornando oggetto da remoto…"
 
-#: front/src/components/auth/Signup.vue:9
-msgctxt "Content/Signup/Form/Paragraph"
-msgid ""
-"Registration are closed on this instance, you will need an invitation code "
-"to signup."
-msgstr ""
-"Le registrazioni sono chiuse su questa istanza, avrai bisogno di un codice "
-"d'invito per registrarti."
+#: front/src/components/About.vue:86
+#, fuzzy
+msgctxt "*/*/*"
+msgid "Registrations"
+msgstr "Amministrazione"
 
-#: front/src/components/manage/users/UsersTable.vue:71
+#: front/src/components/manage/users/UsersTable.vue:72
 msgctxt "Content/Admin/Table, User role"
 msgid "Regular user"
 msgstr "Utente semplice"
@@ -3474,8 +3684,8 @@ msgid "Rejected"
 msgstr "Rifiutato"
 
 #: front/src/components/manage/library/AlbumsTable.vue:43
-#: front/src/components/mixins/Translations.vue:44 src/edits.js:28
-#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:54 src/edits.js:43
+#: front/src/components/mixins/Translations.vue:55
 msgctxt "Content/*/*/Noun"
 msgid "Release date"
 msgstr "Data di rilascio"
@@ -3485,6 +3695,11 @@ msgctxt "Content/Library/Paragraph"
 msgid "Remaining storage space"
 msgstr "Spazio di archiviazione rimanente"
 
+#: front/src/views/Notifications.vue:18 src/views/Notifications.vue:52
+msgctxt "Content/Notifications/Label"
+msgid "Remind me in:"
+msgstr "Ricordamelo tra:"
+
 #: front/src/views/content/remote/Home.vue:6
 msgctxt "Content/Library/Title/Noun"
 msgid "Remote libraries"
@@ -3492,12 +3707,8 @@ msgstr "Librerie remote"
 
 #: front/src/views/content/remote/Home.vue:7
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Remote libraries are owned by other users on the network. You can access "
-"them as long as they are public or you are granted access."
-msgstr ""
-"Le librerie remote sono di proprietà di altri utenti nella rete. Puoi "
-"accedervi se sono pubbliche o se ti è stato dato l'accesso ad esse."
+msgid "Remote libraries are owned by other users on the network. You can access them as long as they are public or you are granted access."
+msgstr "Le librerie remote sono di proprietà di altri utenti nella rete. Puoi accedervi se sono pubbliche o se ti è stato dato l'accesso ad esse."
 
 #: front/src/components/library/radios/Filter.vue:59
 msgctxt "Content/Radio/Button.Label/Verb"
@@ -3514,6 +3725,13 @@ msgctxt "Content/Moderation/Button.Label"
 msgid "Remove filter"
 msgstr "Rimuovi filtro"
 
+#: front/src/components/manage/moderation/DomainsTable.vue:198
+#: front/src/views/admin/moderation/DomainsDetail.vue:39
+#, fuzzy
+msgctxt "Content/Moderation/Action/Verb"
+msgid "Remove from allow-list"
+msgstr "Rimuovi dai preferiti"
+
 #: front/src/components/favorites/TrackFavoriteIcon.vue:26
 msgctxt "Content/Track/Icon.Tooltip/Verb"
 msgid "Remove from favorites"
@@ -3521,44 +3739,105 @@ msgstr "Rimuovi dai preferiti"
 
 #: front/src/views/content/libraries/Quota.vue:38
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded but yet to be processed tracks completely, adding the "
-"corresponding data to your quota."
-msgstr ""
-"Rimuovi completamente tracce caricate ma non ancora processate, aggiungendo "
-"lo spazio corrispondente alla tua quota."
+msgid "Removes uploaded but yet to be processed tracks completely, adding the corresponding data to your quota."
+msgstr "Rimuovi completamente tracce caricate ma non ancora processate, aggiungendo lo spazio corrispondente alla tua quota."
 
 #: front/src/views/content/libraries/Quota.vue:64
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded tracks skipped during the import processes completely, "
-"adding the corresponding data to your quota."
-msgstr ""
-"Rimuove completamente le tracce caricate ma che sono state saltate durante "
-"la fase di importazione, aggiungendo lo spazio corrispondente alla tua "
-"quota."
+msgid "Removes uploaded tracks skipped during the import processes completely, adding the corresponding data to your quota."
+msgstr "Rimuove completamente le tracce caricate ma che sono state saltate durante la fase di importazione, aggiungendo lo spazio corrispondente alla tua quota."
 
 #: front/src/views/content/libraries/Quota.vue:90
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded tracks that could not be processed by the server "
-"completely, adding the corresponding data to your quota."
-msgstr ""
-"Rimuove completamente le tracce caricate ma che non sono state processate "
-"correttamente, aggiungendo lo spazio corrispondente alla tua quota."
+msgid "Removes uploaded tracks that could not be processed by the server completely, adding the corresponding data to your quota."
+msgstr "Rimuove completamente le tracce caricate ma che non sono state processate correttamente, aggiungendo lo spazio corrispondente alla tua quota."
 
-#: front/src/components/auth/SubsonicTokenForm.vue:33
-#: front/src/components/auth/SubsonicTokenForm.vue:36
+#: front/src/components/audio/PlayButton.vue:94
+#, fuzzy
+msgctxt "*/Queue/Dropdown/Button/Title"
+msgid "Replace current queue"
+msgstr "Aggiungi alla coda attuale"
+
+#: front/src/components/mixins/Report.vue:6 src/components/mixins/Report.vue:7
+msgctxt "*/Moderation/*/Verb"
+msgid "Report @%{ username }…"
+msgstr "Segnala @%{ username }…"
+
+#: front/src/components/manage/moderation/ReportCard.vue:5
+msgctxt "Content/Moderation/Card/Short"
+msgid "Report %{ id }"
+msgstr "Segnala %{ id }"
+
+#: front/src/components/moderation/ReportModal.vue:139
+#, fuzzy
+msgctxt "*/Moderation/Message"
+msgid "Report successfully submitted, thank you"
+msgstr "La tua modifica è stata inviata correttamente."
+
+#: front/src/components/mixins/Report.vue:36
+#: src/components/mixins/Report.vue:37
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this album…"
+msgstr "Modifica questo album"
+
+#: front/src/components/mixins/Report.vue:50
+#: src/components/mixins/Report.vue:51
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this artist…"
+msgstr "Modifica questo artista"
+
+#: front/src/components/mixins/Report.vue:72
+#: src/components/mixins/Report.vue:73
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this library…"
+msgstr "Eliminare questa libreria?"
+
+#: front/src/components/mixins/Report.vue:61
+#: src/components/mixins/Report.vue:62
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this playlist…"
+msgstr "Aggiungi a questa playlist"
+
+#: front/src/components/mixins/Report.vue:23
+#: src/components/mixins/Report.vue:24
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this track…"
+msgstr "Modifica questa traccia"
+
+#: front/src/components/audio/PlayButton.vue:95
+msgctxt "*/Moderation/*/Button/Label,Verb"
+msgid "Report…"
+msgstr "Segnala…"
+
+#: front/src/components/manage/moderation/ReportCard.vue:117
+msgctxt "Content/*/*/Short"
+msgid "Reported object"
+msgstr "Oggetto segnalato"
+
+#: front/src/views/admin/moderation/Base.vue:5
+#: front/src/views/admin/moderation/ReportsList.vue:3
+#: front/src/views/admin/moderation/ReportsList.vue:208
+msgctxt "*/Moderation/*/Noun"
+msgid "Reports"
+msgstr "Segnalazioni"
+
+#: front/src/components/auth/SubsonicTokenForm.vue:38
+#: front/src/components/auth/SubsonicTokenForm.vue:41
 msgctxt "*/Settings/Button.Label/Verb"
 msgid "Request a new password"
 msgstr "Richiedi una nuova password"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:34
+#: front/src/components/auth/SubsonicTokenForm.vue:39
 msgctxt "Popup/Settings/Title"
 msgid "Request a new Subsonic API password?"
 msgstr "Richiedere una nuova password API Subsonic?"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:42
+#: front/src/components/auth/SubsonicTokenForm.vue:47
 msgctxt "Content/Settings/Button.Label/Verb"
 msgid "Request a password"
 msgstr "Richiedi una password"
@@ -3568,35 +3847,53 @@ msgctxt "Popup/*/Loading.Title"
 msgid "Requesting a fetch…"
 msgstr "Richiedendo un recupero…"
 
-#: front/src/components/library/EditForm.vue:82
+#: front/src/components/library/EditForm.vue:94
+#, fuzzy
 msgctxt "Content/Library/Button.Label"
-msgid "Reset to initial value: %{ value }"
+msgid "Reset to initial value"
 msgstr "Ripristina al valore iniziale: %{ value }"
 
-#: front/src/components/auth/Login.vue:35 src/views/auth/PasswordReset.vue:4
-#: front/src/views/auth/PasswordReset.vue:53
+#: front/src/components/auth/LoginForm.vue:34
+#: src/views/auth/PasswordReset.vue:4 front/src/views/auth/PasswordReset.vue:53
 msgctxt "*/Login/*/Verb"
 msgid "Reset your password"
 msgstr "Resetta la tua password"
 
+#: front/src/components/manage/moderation/ReportCard.vue:83
+#, fuzzy
+msgctxt "Content/*/*/Noun"
+msgid "Resolution date"
+msgstr "Data di creazione"
+
+#: front/src/components/manage/moderation/ReportCard.vue:218
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Resolve"
+msgstr "Risolvi"
+
+#: front/src/components/manage/moderation/ReportCard.vue:62
+#: front/src/views/admin/moderation/ReportsList.vue:20
+msgctxt "Content/*/*/Short"
+msgid "Resolved"
+msgstr "Risolti"
+
 #: front/src/views/content/libraries/FilesTable.vue:223
 msgctxt "Content/Library/Dropdown/Verb"
 msgid "Restart import"
 msgstr "Riavvia importazione"
 
+#: front/src/components/library/EditForm.vue:31
+msgctxt "Content/Library/Button.Label"
+msgid "Restrict to unreviewed edits"
+msgstr "Restringi alle modifiche non revisionate"
+
 #: front/src/components/favorites/List.vue:39
-#: src/components/library/Albums.vue:30
-#: front/src/components/library/Artists.vue:30
+#: src/components/library/Albums.vue:34
+#: front/src/components/library/Artists.vue:34
 #: src/components/library/Radios.vue:52 front/src/views/playlists/List.vue:32
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Results per page"
 msgstr "Risultati per pagina"
 
-#: front/src/components/library/EditForm.vue:31
-msgctxt "Content/Library/Button.Label"
-msgid "Retrict to unreviewed edits"
-msgstr "Restringi alle modifiche non revisionate"
-
 #: front/src/views/auth/EmailConfirm.vue:17
 msgctxt "Content/Signup/Link/Verb"
 msgid "Return to login"
@@ -3627,52 +3924,54 @@ msgctxt "Content/Moderation/Card.Title/Noun"
 msgid "Rule"
 msgstr "Regola"
 
-#: front/src/components/admin/SettingsGroup.vue:67
+#: front/src/components/About.vue:28 src/components/About.vue:56
+#, fuzzy
+msgctxt "Content/About/Header"
+msgid "Rules"
+msgstr "Regola"
+
+#: front/src/components/admin/SettingsGroup.vue:75
 #: front/src/components/library/radios/Builder.vue:34
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Save"
 msgstr "Salva"
 
-#: front/src/views/content/remote/Card.vue:175
+#: front/src/views/content/remote/Card.vue:203
 msgctxt "Content/Library/Message"
 msgid "Scan launched"
 msgstr "Scansione avviata"
 
-#: front/src/views/content/remote/Card.vue:67
+#: front/src/views/content/remote/Card.vue:80
 msgctxt "Content/Library/Card.Button.Label/Verb"
 msgid "Scan now"
 msgstr "Scansiona ora"
 
-#: front/src/views/content/remote/Card.vue:35
+#: front/src/views/content/remote/Card.vue:48
 msgctxt "Content/Library/Card.List item"
 msgid "Scan pending"
 msgstr "Scansione in sospeso"
 
-#: front/src/views/content/remote/Card.vue:176
+#: front/src/views/content/remote/Card.vue:204
 msgctxt "Content/Library/Message"
 msgid "Scan skipped (previous scan is too recent)"
 msgstr "Scansione saltata (la scansione precedente è troppo recente)"
 
-#: front/src/views/content/remote/Card.vue:47
+#: front/src/views/content/remote/Card.vue:60
 msgctxt "Content/Library/Card.List item"
 msgid "Scanned"
 msgstr "Scansionata"
 
-#: front/src/views/content/remote/Card.vue:51
+#: front/src/views/content/remote/Card.vue:64
 msgctxt "Content/Library/Card.List item"
 msgid "Scanned with errors"
 msgstr "Scansione eseguita con errori"
 
-#: front/src/views/content/remote/Card.vue:39
+#: front/src/views/content/remote/Card.vue:52
 msgctxt "Content/Library/Card.List item"
 msgid "Scanning… (%{ progress }%)"
-msgstr "Scansionando... (%{ progress }%)"
+msgstr "Scansionando… (%{ progress }%)"
 
 #: front/src/components/auth/ApplicationForm.vue:22
-msgctxt "Content/Applications/Input.Label/Noun"
-msgid "Scopes"
-msgstr "Visibilità"
-
 #: front/src/components/auth/Settings.vue:226
 msgctxt "Content/*/*/Noun"
 msgid "Scopes"
@@ -3685,12 +3984,14 @@ msgstr "Visibilità"
 #: front/src/components/manage/library/ArtistsTable.vue:5
 #: front/src/components/manage/library/EditsCardList.vue:6
 #: front/src/components/manage/library/LibrariesTable.vue:5
+#: front/src/components/manage/library/TagsTable.vue:5
 #: front/src/components/manage/library/TracksTable.vue:5
 #: front/src/components/manage/library/UploadsTable.vue:5
 #: front/src/components/manage/moderation/AccountsTable.vue:5
 #: front/src/components/manage/moderation/DomainsTable.vue:5
 #: front/src/components/manage/users/InvitationsTable.vue:5
 #: front/src/components/manage/users/UsersTable.vue:5
+#: front/src/views/admin/moderation/ReportsList.vue:8
 #: front/src/views/content/libraries/FilesTable.vue:5
 #: src/views/playlists/List.vue:13
 msgctxt "Content/Search/Input.Label/Noun"
@@ -3703,6 +4004,7 @@ msgid "Search a remote library"
 msgstr "Cerca una libreria remota"
 
 #: front/src/components/manage/library/EditsCardList.vue:211
+#: front/src/views/admin/moderation/ReportsList.vue:207
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by account, summary, domain…"
 msgstr "Cerca per account, informazioni, dominio…"
@@ -3737,7 +4039,13 @@ msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by domain, username, bio…"
 msgstr "Cerca per dominio, nome utente, descrizione…"
 
-#: front/src/components/manage/moderation/DomainsTable.vue:151
+#: front/src/components/manage/library/TagsTable.vue:165
+#, fuzzy
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by name"
+msgstr "Cerca per nome…"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:168
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by name…"
 msgstr "Cerca per nome…"
@@ -3752,12 +4060,12 @@ msgctxt "Content/Admin/Input.Placeholder/Verb"
 msgid "Search by username, e-mail address, code…"
 msgstr "Cerca per nome utente, indirizzo e-mail, codice…"
 
-#: front/src/components/manage/users/UsersTable.vue:163
+#: front/src/components/manage/users/UsersTable.vue:164
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by username, e-mail address, name…"
 msgstr "Cerca per nome utente, indirizzo e-mail, nome…"
 
-#: front/src/components/audio/SearchBar.vue:20
+#: front/src/components/audio/SearchBar.vue:27
 msgctxt "Sidebar/Search/Input.Placeholder"
 msgid "Search for artists, albums, tracks…"
 msgstr "Cerca per artisti, album, tracce…"
@@ -3767,16 +4075,30 @@ msgctxt "Content/Search/Title"
 msgid "Search for some music"
 msgstr "Cerca un po' di musica"
 
-#: front/src/components/library/AlbumBase.vue:57
-#: front/src/components/library/ArtistBase.vue:68
-#: front/src/components/library/TrackBase.vue:76
+#: front/src/components/library/TagsSelector.vue:6
+#, fuzzy
+msgctxt "*/Dropdown/Placeholder/Verb"
+msgid "Search for tags…"
+msgstr "Cerca per nome…"
+
+#: front/src/components/library/AlbumBase.vue:66
+#: front/src/components/library/ArtistBase.vue:77
+#: front/src/components/library/TrackBase.vue:82
+#, fuzzy
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Search on Discogs"
+msgstr "Cerca un po' di musica"
+
+#: front/src/components/library/AlbumBase.vue:58
+#: front/src/components/library/ArtistBase.vue:69
+#: front/src/components/library/TrackBase.vue:74
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Search on Wikipedia"
 msgstr "Cerca su Wikipedia"
 
 #: front/src/components/library/Library.vue:35
-#: src/views/admin/library/Base.vue:32
-#: front/src/views/admin/moderation/Base.vue:22
+#: src/views/admin/library/Base.vue:35
+#: front/src/views/admin/moderation/Base.vue:44
 #: src/views/admin/users/Base.vue:21 front/src/views/content/Base.vue:19
 msgctxt "Menu/*/Hidden text"
 msgid "Secondary menu"
@@ -3787,6 +4109,26 @@ msgctxt "Content/Admin/Menu.Title"
 msgid "Sections"
 msgstr "Sezioni"
 
+#: front/src/components/ShortcutsModal.vue:108
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek backwards 30s"
+msgstr "Salta indietro 30s"
+
+#: front/src/components/ShortcutsModal.vue:100
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek backwards 5s"
+msgstr "Salta indietro 5s"
+
+#: front/src/components/ShortcutsModal.vue:112
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek forwards 30s"
+msgstr "Salta avanti 30s"
+
+#: front/src/components/ShortcutsModal.vue:104
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek forwards 5s"
+msgstr "Salta avanti 5s"
+
 #: front/src/components/library/radios/Builder.vue:46
 msgctxt "Content/Radio/Dropdown.Placeholder/Verb"
 msgid "Select a filter"
@@ -3804,9 +4146,14 @@ msgctxt "Content/*/Link/Verb"
 msgid "Select only current page"
 msgstr "Seleziona solo la pagina attuale"
 
-#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:108
-#: front/src/components/manage/users/UsersTable.vue:181
-#: front/src/views/admin/moderation/AccountsDetail.vue:506
+#: front/src/components/Home.vue:43
+msgctxt "Content/Home/Link"
+msgid "Server rules"
+msgstr "Regole del server"
+
+#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:112
+#: front/src/components/manage/users/UsersTable.vue:182
+#: front/src/views/admin/moderation/AccountsDetail.vue:526
 msgctxt "*/*/*/Noun"
 msgid "Settings"
 msgstr "Impostazioni"
@@ -3828,18 +4175,25 @@ msgstr "Condividi collegamento"
 
 #: front/src/views/content/libraries/Detail.vue:15
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Share this link with other users so they can request access to your library."
-msgstr ""
-"Condividi questo collegamento con altri utenti in modo che possano "
-"richiedere l'accesso alla tua libreria."
+msgid "Share this link with other users so they can request access to your library."
+msgstr "Condividi questo collegamento con altri utenti in modo che possano richiedere l'accesso alla tua libreria."
 
 #: front/src/views/content/libraries/Detail.vue:14
-#: front/src/views/content/remote/Card.vue:77
+#: front/src/views/content/remote/Card.vue:90
 msgctxt "Content/Library/Title"
 msgid "Sharing link"
 msgstr "Condividi collegamento"
 
+#: front/src/components/audio/EmbedWizard.vue:5
+msgctxt "Content/Embed/Message"
+msgid "Sharing will not work because this pod doesn't allow anonymous users to access content."
+msgstr ""
+
+#: front/src/components/About.vue:156
+msgctxt "*/*/*/Verb"
+msgid "Show"
+msgstr "Mostra"
+
 #: front/src/components/audio/album/Card.vue:38
 msgctxt "Content/Album/Card.Link/Verb"
 msgid "Show %{ count } more track"
@@ -3847,10 +4201,11 @@ msgid_plural "Show %{ count } more tracks"
 msgstr[0] "Mostra %{ count } traccia in più"
 msgstr[1] "Mostra %{ count } tracce in più"
 
-#: front/src/components/audio/artist/Card.vue:30
-msgctxt "Content/Artist/Card.Link"
-msgid "Show 1 more album"
-msgid_plural "Show %{ count } more albums"
+#: front/src/components/tags/List.vue:11
+#, fuzzy
+msgctxt "Content/*/Button/Label/Verb"
+msgid "Show 1 more tag"
+msgid_plural "Show %{ count } more tags"
 msgstr[0] "Mostra 1 altro album"
 msgstr[1] "Mostra %{ count } altri album"
 
@@ -3859,17 +4214,29 @@ msgctxt "Content/Library/Button.Label"
 msgid "Show all edits"
 msgstr "Mostra tutte le modifiche"
 
-#: front/src/components/ShortcutsModal.vue:42
+#: front/src/components/ShortcutsModal.vue:60
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Show available keyboard shortcuts"
 msgstr "Mostra scorciatoie da tastiera disponibili"
 
-#: front/src/views/Notifications.vue:7
+#: front/src/components/common/ExpandableDiv.vue:7
+#, fuzzy
+msgctxt "*/*/Button,Label"
+msgid "Show less"
+msgstr "Mostra tutte le modifiche"
+
+#: front/src/components/common/ExpandableDiv.vue:8
+#, fuzzy
+msgctxt "*/*/Button,Label"
+msgid "Show more"
+msgstr "Mostra 1 altro album"
+
+#: front/src/views/Notifications.vue:72
 msgctxt "Content/Notifications/Form.Label/Verb"
 msgid "Show read notifications"
 msgstr "Mostra notifiche lette"
 
-#: front/src/components/forms/PasswordInput.vue:26
+#: front/src/components/forms/PasswordInput.vue:42
 msgctxt "Content/Settings/Button.Tooltip/Verb"
 msgid "Show/hide password"
 msgstr "Mostra/nascondi password"
@@ -3878,56 +4245,64 @@ msgstr "Mostra/nascondi password"
 #: front/src/components/manage/library/ArtistsTable.vue:84
 #: front/src/components/manage/library/EditsCardList.vue:72
 #: front/src/components/manage/library/LibrariesTable.vue:110
+#: front/src/components/manage/library/TagsTable.vue:79
 #: front/src/components/manage/library/TracksTable.vue:95
 #: front/src/components/manage/library/UploadsTable.vue:144
 #: front/src/components/manage/moderation/AccountsTable.vue:88
-#: front/src/components/manage/moderation/DomainsTable.vue:74
+#: front/src/components/manage/moderation/DomainsTable.vue:85
 #: front/src/components/manage/users/InvitationsTable.vue:76
-#: front/src/components/manage/users/UsersTable.vue:87
+#: front/src/components/manage/users/UsersTable.vue:88
 #: front/src/views/content/libraries/FilesTable.vue:117
 msgctxt "Content/*/Paragraph"
 msgid "Showing results %{ start }-%{ end } on %{ total }"
 msgstr "Mostrando i risultati da %{ start } a %{ end } su %{ total }"
 
-#: front/src/components/ShortcutsModal.vue:83
+#: front/src/components/ShortcutsModal.vue:140
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Shuffle queue"
 msgstr "Mischia la tua coda"
 
-#: front/src/components/audio/Player.vue:641
+#: front/src/components/audio/Player.vue:667
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Shuffle your queue"
 msgstr "Mischia la tua coda"
 
-#: front/src/components/auth/Signup.vue:97
+#: front/src/components/Home.vue:103
+#, fuzzy
+msgctxt "*/Signup/Title"
+msgid "Sign up"
+msgstr "Registrati"
+
+#: front/src/views/auth/Signup.vue:37
 msgctxt "*/Signup/Title"
 msgid "Sign Up"
 msgstr "Registrati"
 
+#: front/src/components/Home.vue:107
+msgctxt "Content/Home/Paragraph"
+msgid "Sign up now to keep a track of your favorites, create playlists, discover new content and much more!"
+msgstr "Iscriviti ora per tenere traccia dei tuoi preferiti, creare liste di riproduzione, scoprire nuovi contenuti e molto altro!"
+
 #: front/src/components/manage/users/UsersTable.vue:40
 msgctxt "Content/Admin/Table.Label/Short, Noun (Value is a date)"
 msgid "Sign-up"
 msgstr "Registrati"
 
-#: front/src/components/mixins/Translations.vue:57
-#: front/src/views/admin/moderation/AccountsDetail.vue:197
-#: front/src/components/mixins/Translations.vue:58
+#: front/src/components/mixins/Translations.vue:69
+#: front/src/views/admin/moderation/AccountsDetail.vue:198
+#: front/src/components/mixins/Translations.vue:70
 msgctxt "Content/Admin/Table.Label/Noun"
 msgid "Sign-up date"
 msgstr "Data di registrazione"
 
-#: front/src/components/manage/library/UploadsTable.vue:65
-#: front/src/views/admin/library/UploadDetail.vue:219
-msgctxt "Content/*/*/Noun"
-msgid "Size"
-msgstr "Dimensione"
-
 #: front/src/components/library/FileUpload.vue:94
 #: front/src/components/library/TrackDetail.vue:39
-#: front/src/components/mixins/Translations.vue:54
+#: front/src/components/manage/library/UploadsTable.vue:65
+#: front/src/components/mixins/Translations.vue:66
+#: front/src/views/admin/library/UploadDetail.vue:219
 #: front/src/views/content/libraries/FilesTable.vue:61
-#: front/src/components/mixins/Translations.vue:55
-msgctxt "Content/Library/*/in MB"
+#: front/src/components/mixins/Translations.vue:67
+msgctxt "Content/*/*/Noun"
 msgid "Size"
 msgstr "Dimensione"
 
@@ -3944,7 +4319,7 @@ msgctxt "Content/Library/Label"
 msgid "Skipped files"
 msgstr "File saltati"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:89
+#: front/src/views/admin/moderation/DomainsDetail.vue:126
 msgctxt "Content/Moderation/Table.Label"
 msgid "Software"
 msgstr "Software"
@@ -3952,102 +4327,72 @@ msgstr "Software"
 #: front/src/components/playlists/Editor.vue:21
 msgctxt "Content/Playlist/Paragraph"
 msgid "Some tracks in your queue are already in this playlist:"
-msgstr ""
-"Alcune tracce nella tua coda sono già presenti in questo elenco di "
-"riproduzione:"
+msgstr "Alcune tracce nella tua coda sono già presenti in questo elenco di riproduzione:"
 
 #: front/src/components/PageNotFound.vue:10
 msgctxt "Content/*/Paragraph"
 msgid "Sorry, the page you asked for does not exist:"
 msgstr "Ci dispiace, la pagina che hai richiesto non esiste:"
 
-#: front/src/components/Footer.vue:49
+#: front/src/components/Footer.vue:57
 msgctxt "Footer/*/List item.Link"
 msgid "Source code"
 msgstr "Codice sorgente"
 
 #: front/src/components/auth/Profile.vue:23
-#: front/src/components/manage/users/UsersTable.vue:70
+#: front/src/components/manage/users/UsersTable.vue:71
 msgctxt "Content/Profile/User role"
 msgid "Staff member"
 msgstr "Membro dello staff"
 
-#: front/src/components/audio/PlayButton.vue:23
+#: front/src/components/audio/PlayButton.vue:27
 #: src/components/radios/Button.vue:4
 msgctxt "*/Queue/Button.Label/Short, Verb"
 msgid "Start radio"
 msgstr "Riproduci radio"
 
-#: front/src/views/admin/Settings.vue:86
-msgctxt "Content/Admin/Menu"
+#: front/src/components/About.vue:170 src/components/Home.vue:53
+#: front/src/views/admin/Settings.vue:87
+#, fuzzy
+msgctxt "Content/Home/Header"
 msgid "Statistics"
 msgstr "Statistiche"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:490
+#: front/src/views/admin/moderation/AccountsDetail.vue:510
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this account"
-msgstr ""
-"Le statistiche sono calcolate da attività conosciute e contenuti della tua "
-"istanza, e non riflette l'attività generale per questo account"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this account"
+msgstr "Le statistiche sono calcolate da attività conosciute e contenuti della tua istanza, e non riflette l'attività generale per questo account"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:371
+#: front/src/views/admin/moderation/DomainsDetail.vue:418
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this domain"
-msgstr ""
-"Le statistiche sono calcolate da attività conosciute e contenuti della tua "
-"istanza, e non riflette l'attività generale per questo dominio"
-
-#: front/src/views/admin/library/AlbumDetail.vue:329
-#: front/src/views/admin/library/ArtistDetail.vue:328
-#: front/src/views/admin/library/LibraryDetail.vue:316
-#: front/src/views/admin/library/TrackDetail.vue:371
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this domain"
+msgstr "Le statistiche sono calcolate da attività conosciute e contenuti della tua istanza, e non riflette l'attività generale per questo dominio"
+
+#: front/src/views/admin/library/AlbumDetail.vue:346
+#: front/src/views/admin/library/ArtistDetail.vue:345
+#: front/src/views/admin/library/LibraryDetail.vue:356
+#: front/src/views/admin/library/TagDetail.vue:210
+#: front/src/views/admin/library/TrackDetail.vue:389
 #: front/src/views/admin/library/UploadDetail.vue:335
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this object"
-msgstr ""
-"Le statistiche sono calcolate da attività conosciute e contenuti della tua "
-"istanza, e non riflette l'attività generale per questo oggetto"
-
-#: front/src/views/admin/moderation/DomainsDetail.vue:115
-msgctxt "Content/Moderation/Table.Label (Value is Error message)"
-msgid "Status"
-msgstr "Stato"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this object"
+msgstr "Le statistiche sono calcolate da attività conosciute e contenuti della tua istanza, e non riflette l'attività generale per questo oggetto"
 
 #: front/src/components/library/FileUpload.vue:95
-msgctxt "Content/Library/Table.Label (Value is Uploading/Uploaded/Error)"
-msgid "Status"
-msgstr "Stato"
-
-#: front/src/views/content/libraries/Detail.vue:28
-msgctxt "Content/Library.Federation/Table.Label (Value is Approved/Rejected)"
-msgid "Status"
-msgstr "Stato"
-
+#: front/src/components/manage/library/EditsCardList.vue:12
+#: front/src/components/manage/moderation/ReportCard.vue:57
 #: front/src/components/manage/users/InvitationsTable.vue:17
 #: front/src/components/manage/users/InvitationsTable.vue:39
-msgctxt "Content/Admin/*/Noun (Value is Used/Not used)"
-msgid "Status"
-msgstr "Stato"
-
 #: front/src/components/manage/users/UsersTable.vue:43
-msgctxt "Content/Admin/Table.Label/Noun (Value is Regular user/Admin)"
-msgid "Status"
-msgstr "Stato"
-
-#: front/src/components/manage/library/EditsCardList.vue:12
-msgctxt ""
-"Content/Search/Dropdown.Label (Value is All/Pending "
-"review/Approved/Rejected)"
+#: front/src/views/admin/moderation/DomainsDetail.vue:152
+#: front/src/views/admin/moderation/ReportsList.vue:14
+#: front/src/views/content/libraries/Detail.vue:28
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Status"
 msgstr "Stato"
 
-#: front/src/components/Sidebar.vue:174 src/components/radios/Button.vue:3
+#: front/src/components/Sidebar.vue:178 src/components/radios/Button.vue:3
 msgctxt "*/Player/Button.Label/Short, Verb"
 msgid "Stop radio"
 msgstr "Ferma radio"
@@ -4057,7 +4402,7 @@ msgctxt "*/*/Button.Label/Verb"
 msgid "Submit"
 msgstr "Invia"
 
-#: front/src/components/library/EditForm.vue:98
+#: front/src/components/library/EditForm.vue:110
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Submit and apply edit"
 msgstr "Invia e applica modifica"
@@ -4067,12 +4412,24 @@ msgctxt "Content/Library/Button.Label"
 msgid "Submit another edit"
 msgstr "Invia un'altra modifica"
 
-#: front/src/components/library/EditForm.vue:99
+#: front/src/components/moderation/ReportModal.vue:64
+#, fuzzy
+msgctxt "Popup/*/Button.Label"
+msgid "Submit report"
+msgstr "Invia"
+
+#: front/src/components/library/EditForm.vue:111
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Submit suggestion"
 msgstr "Invia suggerimento"
 
-#: front/src/views/admin/Settings.vue:85
+#: front/src/components/manage/moderation/ReportCard.vue:17
+#, fuzzy
+msgctxt "Content/Moderation/*"
+msgid "Submitted by"
+msgstr "Invia"
+
+#: front/src/views/admin/Settings.vue:86
 msgctxt "Content/Admin/Menu"
 msgid "Subsonic"
 msgstr "Subsonic"
@@ -4112,16 +4469,21 @@ msgctxt "Content/Library/Tab.Title/Short"
 msgid "Summary"
 msgstr "Riepilogo"
 
-#: front/src/components/library/EditForm.vue:87
+#: front/src/components/library/EditForm.vue:99
 msgctxt "*/*/*"
 msgid "Summary (optional)"
 msgstr "Riassunto (opzionale)"
 
-#: front/src/components/Footer.vue:39
+#: front/src/components/Footer.vue:47
 msgctxt "Footer/*/Listitem.Link"
 msgid "Support forum"
 msgstr "Forum di supporto"
 
+#: front/src/views/Notifications.vue:10
+msgctxt "Content/Notifications/Header"
+msgid "Support this Funkwhale pod"
+msgstr "Supporta questo pod di Funkwhale"
+
 #: front/src/components/library/FileUpload.vue:85
 msgctxt "Content/Library/Paragraph"
 msgid "Supported extensions: %{ extensions }"
@@ -4132,50 +4494,63 @@ msgctxt "Content/Playlist/Paragraph"
 msgid "Syncing changes to server…"
 msgstr "Sincronizzando le modifiche con il server…"
 
-#: front/src/components/audio/EmbedWizard.vue:25
+#: front/src/components/audio/SearchBar.vue:35
+msgctxt "*/*/*/Noun"
+msgid "Tag"
+msgstr "Etichetta"
+
+#: front/src/views/admin/library/TagDetail.vue:61
+#, fuzzy
+msgctxt "Content/Moderation/Title"
+msgid "Tag data"
+msgstr "Dati della traccia"
+
+#: front/src/components/library/Albums.vue:23
+#: src/components/library/Artists.vue:15
+#: front/src/views/admin/library/Base.vue:23
+#: src/views/admin/library/TagsList.vue:24 front/src/edits.js:24
+#: src/edits.js:50 src/edits.js:91 src/entities.js:120
+msgctxt "*/*/*/Noun"
+msgid "Tags"
+msgstr "Etichette"
+
+#: front/src/components/mixins/Translations.vue:44
+#: front/src/components/mixins/Translations.vue:45
+#, fuzzy
+msgctxt "Content/Moderation/Dropdown"
+msgid "Takedown request"
+msgstr "Annulla richiesta di seguire"
+
+#: front/src/components/About.vue:35 src/components/About.vue:61
+msgctxt "Content/About/Header"
+msgid "Terms and privacy policy"
+msgstr "Termini e regole sulla privacy"
+
+#: front/src/components/audio/EmbedWizard.vue:35
 #: front/src/components/common/CopyInput.vue:3
 msgctxt "Content/*/Paragraph"
 msgid "Text copied to clipboard!"
 msgstr "Testo copiato negli appunti!"
 
-#: front/src/components/Home.vue:26
-msgctxt "Content/Home/Paragraph"
-msgid ""
-"That's simple: we loved Grooveshark and we want to build something even "
-"better."
-msgstr ""
-"È molto semplice: amavamo Grooveshark e volevamo creare qualcosa ancora più "
-"bello."
-
-#: front/src/views/admin/library/AlbumDetail.vue:75
+#: front/src/views/admin/library/AlbumDetail.vue:81
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The album will be removed, as well as associated uploads, tracks, favorites "
-"and listening history. This action is irreversible."
-msgstr ""
-"L'album sarà rimosso, ed anche i caricamenti associati, tracce, preferiti e "
-"cronologia di ascolto. Questa azione è irreversibile."
+msgid "The album will be removed, as well as associated uploads, tracks, favorites and listening history. This action is irreversible."
+msgstr "L'album sarà rimosso, ed anche i caricamenti associati, tracce, preferiti e cronologia di ascolto. Questa azione è irreversibile."
 
 #: front/src/components/auth/Authorize.vue:39
 msgctxt "Content/Auth/Paragraph"
 msgid "The application is also requesting the following unknown permissions:"
 msgstr "L'applicazione sta anche richiedendo i seguenti permessi sconosciuti:"
 
-#: front/src/views/admin/library/ArtistDetail.vue:74
+#: front/src/views/admin/library/ArtistDetail.vue:79
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The artist will be removed, as well as associated uploads, tracks, albums, "
-"favorites and listening history. This action is irreversible."
-msgstr ""
-"L'artista sarà rimosso, ed anche i caricamenti associati, tracce, album, "
-"preferiti e cronologia di ascolto. Questa azione è irreversibile."
+msgid "The artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible."
+msgstr "L'artista sarà rimosso, ed anche i caricamenti associati, tracce, album, preferiti e cronologia di ascolto. Questa azione è irreversibile."
 
-#: front/src/components/Footer.vue:53
+#: front/src/components/Footer.vue:61
 msgctxt "Footer/*/List item.Link"
 msgid "The funkwhale logo was kindly designed and provided by Francis Gading."
-msgstr ""
-"Il logo di Funkwhale è stato gentilmente disegnato e concesso da Francis "
-"Gading."
+msgstr "Il logo di Funkwhale è stato gentilmente disegnato e concesso da Francis Gading."
 
 #: front/src/components/SetInstanceModal.vue:8
 msgctxt "Popup/Instance/Error message.List item"
@@ -4184,29 +4559,18 @@ msgstr "L'indirizzo fornito non è quello di un server Funkwhale"
 
 #: front/src/views/content/libraries/Form.vue:34
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"The library and all its tracks will be deleted. This can not be undone."
-msgstr ""
-"La libreria e tutte le sue tracce saranno eliminate. Questa azione è "
-"irreversibile."
+msgid "The library and all its tracks will be deleted. This can not be undone."
+msgstr "La libreria e tutte le sue tracce saranno eliminate. Questa azione è irreversibile."
 
 #: front/src/views/admin/library/LibraryDetail.vue:61
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The library will be removed, as well as associated uploads, and follows. "
-"This action is irreversible."
-msgstr ""
-"La libreria sarà rimossa, ed anche i caricamenti associati e gli iscritti. "
-"Questa azione è irreversibile."
+msgid "The library will be removed, as well as associated uploads, and follows. This action is irreversible."
+msgstr "La libreria sarà rimossa, ed anche i caricamenti associati e gli iscritti. Questa azione è irreversibile."
 
 #: front/src/components/library/ImportStatusModal.vue:140
 msgctxt "Popup/Import/Error.Label"
-msgid ""
-"The metadata included in the file is invalid or some mandatory fields are "
-"missing."
-msgstr ""
-"I metadati inclusi nel file non sono validi o alcuni campi obbligatori sono "
-"mancanti."
+msgid "The metadata included in the file is invalid or some mandatory fields are missing."
+msgstr "I metadati inclusi nel file non sono validi o alcuni campi obbligatori sono mancanti."
 
 #: front/src/components/library/FileUpload.vue:38
 msgctxt "Content/Library/List item"
@@ -4216,17 +4580,18 @@ msgstr "I file musicali che stai caricando sono correttamente etichettati."
 #: front/src/components/audio/Player.vue:65
 msgctxt "Sidebar/Player/Error message.Paragraph"
 msgid "The next track will play automatically in a few seconds…"
-msgstr ""
-"La traccia seguente verrà riprodotta automaticamente tra pochi secondi…"
+msgstr "La traccia seguente verrà riprodotta automaticamente tra pochi secondi…"
 
-#: front/src/components/Home.vue:116
-msgctxt "Content/Home/List item"
-msgid ""
-"The plaform is free and open-source, you can install it and modify it "
-"without worries"
-msgstr ""
-"La piattaforma è libera e open source, puoi installarla e modificarla senza "
-"problemi"
+#: front/src/components/manage/moderation/NotesThread.vue:27
+#, fuzzy
+msgctxt "Content/Moderation/Paragraph"
+msgid "The note will be removed. This action is irreversible."
+msgstr "Il caricamento sarà rimosso. Questa azione è irreversibile."
+
+#: front/src/components/manage/moderation/ReportCard.vue:120
+msgctxt "Content/Moderation/Message"
+msgid "The object associated with this report was deleted."
+msgstr "L'oggetto associato a questa segnalazione è stato eliminato."
 
 #: front/src/components/playlists/Form.vue:14
 msgctxt "Content/Playlist/Error message.Title"
@@ -4240,64 +4605,51 @@ msgstr "Il server remoto ha risposto con il codice HTTP %{ status }"
 
 #: front/src/components/federation/FetchButton.vue:13
 msgctxt "Popup/*/Message.Content"
-msgid ""
-"The remote server answered, but returned data was unsupported by Funkwhale."
-msgstr ""
-"Il server remoto ha risposto, ma i dati ricevuti non sono supportati da "
-"Funkwhale."
+msgid "The remote server answered, but returned data was unsupported by Funkwhale."
+msgstr "Il server remoto ha risposto, ma i dati ricevuti non sono supportati da Funkwhale."
 
 #: front/src/components/federation/FetchButton.vue:44
+#, fuzzy
 msgctxt "*/*/Error"
-msgid "The remote server didn't answered fast enough"
+msgid "The remote server didn't respond quickly enough"
 msgstr "Il server remoto non ha risposto abbastanza velocemente"
 
 #: front/src/components/federation/FetchButton.vue:50
+#, fuzzy
 msgctxt "*/*/Error"
-msgid "The return server returned invalid JSON or JSON-LD data"
+msgid "The remote server returned invalid JSON or JSON-LD data"
 msgstr "Il server remoto ha risposto con dati JSON o JSON-LD non validi"
 
 #: front/src/components/manage/library/AlbumsTable.vue:189
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected albums will be removed, as well as associated tracks, uploads, "
-"favorites and listening history. This action is irreversible."
-msgstr ""
-"Gli album selezionati saranno rimossi, ed anche i caricamenti associati, "
-"tracce, preferiti e cronologia di ascolto. Questa azione è irreversibile."
+msgid "The selected albums will be removed, as well as associated tracks, uploads, favorites and listening history. This action is irreversible."
+msgstr "Gli album selezionati saranno rimossi, ed anche i caricamenti associati, tracce, preferiti e cronologia di ascolto. Questa azione è irreversibile."
 
 #: front/src/components/manage/library/ArtistsTable.vue:179
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected artist will be removed, as well as associated uploads, tracks, "
-"albums, favorites and listening history. This action is irreversible."
-msgstr ""
-"Gli artisti selezionati saranno rimossi, ed anche i caricamenti associati, "
-"tracce, album, preferiti e cronologia di ascolto. Questa azione è "
-"irreversibile."
+msgid "The selected artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible."
+msgstr "Gli artisti selezionati saranno rimossi, ed anche i caricamenti associati, tracce, album, preferiti e cronologia di ascolto. Questa azione è irreversibile."
 
 #: front/src/components/manage/library/LibrariesTable.vue:206
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected library will be removed, as well as associated uploads and "
-"follows. This action is irreversible."
-msgstr ""
-"Le librerie selezionate saranno rimosse, ed anche i caricamenti associati, "
-"ed iscritti. Questa azione è irreversibile."
+msgid "The selected library will be removed, as well as associated uploads and follows. This action is irreversible."
+msgstr "Le librerie selezionate saranno rimosse, ed anche i caricamenti associati, ed iscritti. Questa azione è irreversibile."
+
+#: front/src/components/manage/library/TagsTable.vue:180
+#, fuzzy
+msgctxt "Popup/*/Paragraph"
+msgid "The selected tag will be removed and unlinked with existing content, if any. This action is irreversible."
+msgstr "Il caricamento selezionato sarà rimosso. Questa azione è irreversibile."
 
 #: front/src/components/manage/library/TracksTable.vue:189
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected tracks will be removed, as well as associated uploads, "
-"favorites and listening history. This action is irreversible."
-msgstr ""
-"Le tracce selezionate saranno rimosse, ed anche i caricamenti associati, "
-"preferiti e cronologia di ascolto. Questa azione è irreversibile."
+msgid "The selected tracks will be removed, as well as associated uploads, favorites and listening history. This action is irreversible."
+msgstr "Le tracce selezionate saranno rimosse, ed anche i caricamenti associati, preferiti e cronologia di ascolto. Questa azione è irreversibile."
 
 #: front/src/components/manage/library/UploadsTable.vue:256
 msgctxt "Popup/*/Paragraph"
 msgid "The selected upload will be removed. This action is irreversible."
-msgstr ""
-"Il caricamento selezionato sarà rimosso. Questa azione è irreversibile."
+msgstr "Il caricamento selezionato sarà rimosso. Questa azione è irreversibile."
 
 #: front/src/components/SetInstanceModal.vue:7
 msgctxt "Popup/Instance/Error message.List item"
@@ -4311,10 +4663,14 @@ msgstr "L'API Subsonic non è disponibile su questa istanza Funkwhale."
 
 #: front/src/components/library/EditCard.vue:96
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"The suggestion will be completely removed, this action is irreversible."
-msgstr ""
-"Il suggerimento sarà completamente rimosso, questa azione è irreversibile."
+msgid "The suggestion will be completely removed, this action is irreversible."
+msgstr "Il suggerimento sarà completamente rimosso, questa azione è irreversibile."
+
+#: front/src/views/admin/library/TagDetail.vue:44
+#, fuzzy
+msgctxt "Content/Moderation/Paragraph"
+msgid "The tag will be removed and unlinked from any existing entity. This action is irreversible."
+msgstr "La traccia sarà rimossa, ed anche i caricamenti associati, preferiti e cronologia di ascolto. Questa azione è irreversibile."
 
 #: front/src/components/playlists/PlaylistModal.vue:34
 msgctxt "Popup/Playlist/Error message.Title"
@@ -4326,14 +4682,10 @@ msgctxt "Sidebar/Player/Error message.Title"
 msgid "The track cannot be loaded"
 msgstr "La traccia non può essere caricata"
 
-#: front/src/views/admin/library/TrackDetail.vue:74
+#: front/src/views/admin/library/TrackDetail.vue:80
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The track will be removed, as well as associated uploads, favorites and "
-"listening history. This action is irreversible."
-msgstr ""
-"La traccia sarà rimossa, ed anche i caricamenti associati, preferiti e "
-"cronologia di ascolto. Questa azione è irreversibile."
+msgid "The track will be removed, as well as associated uploads, favorites and listening history. This action is irreversible."
+msgstr "La traccia sarà rimossa, ed anche i caricamenti associati, preferiti e cronologia di ascolto. Questa azione è irreversibile."
 
 #: front/src/views/admin/library/UploadDetail.vue:68
 msgctxt "Content/Moderation/Paragraph"
@@ -4348,9 +4700,7 @@ msgstr "I file musicali caricati sono in formato OGG, Flac o MP3"
 #: front/src/views/content/Home.vue:4
 msgctxt "Content/Library/Paragraph"
 msgid "There are various ways to grab new content and make it available here."
-msgstr ""
-"Offriamo vari modi per recuperare nuovi contenuti e renderli disponibili "
-"qui."
+msgstr "Offriamo vari modi per recuperare nuovi contenuti e renderli disponibili qui."
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:66
 msgctxt "Popup/Moderation/Paragraph"
@@ -4367,25 +4717,38 @@ msgctxt "Content/Artist/Paragraph"
 msgid "This artist is present in the following libraries:"
 msgstr "Questo artista è presente nelle seguenti librerie:"
 
+#: front/src/components/manage/moderation/DomainsTable.vue:169
+#, fuzzy
+msgctxt "Content/Moderation/Popup"
+msgid "This domain is present in your allow-list"
+msgstr "Questo artista è presente nelle seguenti librerie:"
+
 #: front/src/views/admin/moderation/AccountsDetail.vue:84
-#: front/src/views/admin/moderation/DomainsDetail.vue:48
+#: front/src/views/admin/moderation/DomainsDetail.vue:76
 msgctxt "Content/Moderation/Card.Title"
 msgid "This domain is subject to specific moderation rules"
 msgstr "Questo dominio è soggetto a regole specifiche di moderazione"
 
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:16
+#, fuzzy
+msgctxt "Content/Moderation/Card.Title"
+msgid "This entity is subject to specific moderation rules"
+msgstr "Questo dominio è soggetto a regole specifiche di moderazione"
+
 #: front/src/views/content/Home.vue:9
 msgctxt "Content/Library/Paragraph"
 msgid "This instance offers up to %{quota} of storage space for every user."
-msgstr ""
-"Questa istanza offre fino a %{quota} di spazio di archiviazione per ogni "
-"utente."
+msgstr "Questa istanza offre fino a %{quota} di spazio di archiviazione per ogni utente."
+
+#: front/src/components/auth/Settings.vue:300
+msgctxt "Popup/Settings/Paragraph"
+msgid "This is irreversible and will permanently remove your data from our servers. You will we immediatly logged out."
+msgstr "Questo è irreversibile e rimuoverà permanentemente i tuoi dati dai nostri server. Sarai immediatamente disconnesso."
 
 #: front/src/components/auth/Settings.vue:165
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"This is the list of applications that have access to your account data."
-msgstr ""
-"Questa è la lista di applicazioni che hanno accesso ai dati del tuo account."
+msgid "This is the list of applications that have access to your account data."
+msgstr "Questa è la lista di applicazioni che hanno accesso ai dati del tuo account."
 
 #: front/src/components/auth/Settings.vue:218
 msgctxt "Content/Settings/Paragraph"
@@ -4402,29 +4765,20 @@ msgctxt "Content/Library/Input.Placeholder"
 msgid "This library contains my personal music, I hope you like it."
 msgstr "Questa libreria contiene la mia musica personale, spero vi piaccia."
 
-#: front/src/views/content/remote/Card.vue:141
+#: front/src/views/content/remote/Card.vue:169
 msgctxt "Content/Library/Card.Help text"
-msgid ""
-"This library is private and your approval from its owner is needed to access"
-" its content"
-msgstr ""
-"Questa libreria è privata e la tua approvazione dal suo proprietario è "
-"necessaria per accedere al suo contenuto"
+msgid "This library is private and your approval from its owner is needed to access its content"
+msgstr "Questa libreria è privata e la tua approvazione dal suo proprietario è necessaria per accedere al suo contenuto"
 
-#: front/src/views/content/remote/Card.vue:142
+#: front/src/views/content/remote/Card.vue:170
 msgctxt "Content/Library/Card.Help text"
 msgid "This library is public and you can access its content freely"
-msgstr ""
-"Questa libreria è pubblica e tu puoi accedere al suo contenuto liberamente"
+msgstr "Questa libreria è pubblica e tu puoi accedere al suo contenuto liberamente"
 
 #: front/src/components/common/ActionTable.vue:47
 msgctxt "Modal/*/Paragraph"
-msgid ""
-"This may affect a lot of elements or have irreversible consequences, please "
-"double check this is really what you want."
-msgstr ""
-"Questo può coinvolgere molti elementi o avere conseguenze irreversibili, per"
-" favore ricontrolla se è proprio quello che vuoi."
+msgid "This may affect a lot of elements or have irreversible consequences, please double check this is really what you want."
+msgstr "Questo può coinvolgere molti elementi o avere conseguenze irreversibili, per favore ricontrolla se è proprio quello che vuoi."
 
 #: front/src/components/library/AlbumEdit.vue:8
 #: front/src/components/library/ArtistEdit.vue:8
@@ -4433,6 +4787,11 @@ msgctxt "Content/*/Message"
 msgid "This object is managed by another server, you cannot edit it."
 msgstr "Questo oggetto è gestito da un altro server, non puoi modificarlo."
 
+#: front/src/components/Home.vue:87
+msgctxt "Content/Home/Paragraph"
+msgid "This pod runs Funkwhale, a community-driven project that lets you listen and share music and audio within a decentralized, open network."
+msgstr "Su questo pod gira Funkwhale, un progetto guidato dalla comunità che ti permette di ascoltare e condividere musica e file audio in una rete aperta e decentralizzata."
+
 #: front/src/components/library/FileUpload.vue:51
 msgctxt "Content/Library/Paragraph"
 msgid "This reference will be used to group imported files together."
@@ -4440,19 +4799,16 @@ msgstr "Questo riferimento sarà utilizzato per raggruppare file importati."
 
 #: front/src/components/mixins/Translations.vue:33
 #: front/src/components/mixins/Translations.vue:34
+#, fuzzy
 msgctxt "Content/Library/Help text"
-msgid "This track could not be processed, please it is tagged correctly"
-msgstr ""
-"Non è stato possibile processare questa traccia, assicurati che sia "
-"correttamente etichettata"
+msgid "This track could not be processed, please make sure it is tagged correctly"
+msgstr "Non è stato possibile processare questa traccia, assicurati che sia correttamente etichettata"
 
 #: front/src/components/mixins/Translations.vue:29
 #: front/src/components/mixins/Translations.vue:30
 msgctxt "Content/Library/Help text"
-msgid ""
-"This track has been uploaded, but hasn't been processed by the server yet"
-msgstr ""
-"Questa traccia è stata caricata, ma non è ancora stata processata dal server"
+msgid "This track has been uploaded, but hasn't been processed by the server yet"
+msgstr "Questa traccia è stata caricata, ma non è ancora stata processata dal server"
 
 #: front/src/components/mixins/Translations.vue:25
 #: front/src/components/mixins/Translations.vue:26
@@ -4460,105 +4816,94 @@ msgctxt "Content/Library/Help text"
 msgid "This track is already present in one of your libraries"
 msgstr "Questa traccia è già presente in una delle tue librerie"
 
-#: front/src/components/audio/PlayButton.vue:85
+#: front/src/components/audio/PlayButton.vue:103
 msgctxt "*/Queue/Button/Title"
 msgid "This track is not available in any library you have access to"
-msgstr ""
-"Questa traccia non è disponibile in nessuna libreria alla quale hai accesso"
+msgstr "Questa traccia non è disponibile in nessuna libreria alla quale hai accesso"
 
 #: front/src/components/library/TrackDetail.vue:82
 msgctxt "Content/Track/Paragraph"
 msgid "This track is present in the following libraries:"
 msgstr "Questa traccia è presente nelle seguenti librerie:"
 
-#: front/src/views/playlists/Detail.vue:38
+#: front/src/views/playlists/Detail.vue:46
 msgctxt "Popup/Playlist/Paragraph"
 msgid "This will completely delete this playlist and cannot be undone."
-msgstr ""
-"Questo cancellerà questa lista di riproduzione e non può essere annullato."
+msgstr "Questo cancellerà questa lista di riproduzione e non può essere annullato."
 
 #: front/src/views/radios/Detail.vue:27
 msgctxt "Popup/Radio/Paragraph"
 msgid "This will completely delete this radio and cannot be undone."
 msgstr "Questo cancellerà questa radio e non può essere annullato."
 
-#: front/src/components/auth/SubsonicTokenForm.vue:50
+#: front/src/components/auth/SubsonicTokenForm.vue:55
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will completely disable access to the Subsonic API using from account."
-msgstr ""
-"Questo disabiliterà completamente l'accesso alla API Subsonic dagli account."
+msgid "This will completely disable access to the Subsonic API using from account."
+msgstr "Questo disabiliterà completamente l'accesso alla API Subsonic dagli account."
 
-#: front/src/components/auth/SubsonicTokenForm.vue:35
+#: front/src/components/manage/moderation/ReportCard.vue:359
+msgctxt "Content/Moderation/Popup,Paragraph"
+msgid "This will delete the object associated with this report and mark the report as resolved. The deletion is irreversible."
+msgstr "Questo eliminerà l'oggetto associato con questa segnalazione e la segnerà come risolta. La cancellazione è irreversibile."
+
+#: front/src/components/auth/SubsonicTokenForm.vue:40
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will log you out from existing devices that use the current password."
-msgstr ""
-"Questo ti disconnetterà dai dispositivi esistenti che utilizzano la password"
-" attuale."
+msgid "This will log you out from existing devices that use the current password."
+msgstr "Questo ti disconnetterà dai dispositivi esistenti che utilizzano la password attuale."
 
 #: front/src/components/auth/Settings.vue:253
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will permanently delete the application and all the associated tokens."
-msgstr ""
-"Questo cancellerà permanentemente l'applicazione e tutti i token associati."
+msgid "This will permanently delete the application and all the associated tokens."
+msgstr "Questo cancellerà permanentemente l'applicazione e tutti i token associati."
 
 #: front/src/components/auth/Settings.vue:194
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will prevent this application from accessing the service on your "
-"behalf."
-msgstr ""
-"Questo eviterà a questa applicazione di accedere al servizio a tuo nome."
+msgid "This will prevent this application from accessing the service on your behalf."
+msgstr "Questo eviterà a questa applicazione di accedere al servizio a tuo nome."
 
 #: front/src/components/playlists/Editor.vue:54
 msgctxt "Popup/Playlist/Paragraph"
 msgid "This will remove all tracks from this playlist and cannot be undone."
-msgstr ""
-"Questo cancellerà tutte le tracce da questa lista di riproduzione e non può "
-"essere annullato."
-
-#: front/src/views/admin/library/AlbumDetail.vue:99
-#: front/src/views/admin/library/TrackDetail.vue:98 src/edits.js:21
-#: src/edits.js:39
-msgctxt "*/*/*/Noun"
-msgid "Title"
-msgstr "Titolo"
+msgstr "Questo cancellerà tutte le tracce da questa lista di riproduzione e non può essere annullato."
 
 #: front/src/components/audio/track/Table.vue:7
-#: front/src/views/content/libraries/FilesTable.vue:55
-msgctxt "Content/Track/*/Noun"
-msgid "Title"
-msgstr "Titolo"
-
 #: front/src/components/manage/library/AlbumsTable.vue:39
 #: front/src/components/manage/library/TracksTable.vue:39
-msgctxt "*/*/*"
+#: front/src/views/admin/library/AlbumDetail.vue:105
+#: front/src/views/admin/library/TrackDetail.vue:104
+#: front/src/views/content/libraries/FilesTable.vue:55 src/edits.js:36
+#: front/src/edits.js:62
+msgctxt "*/*/*/Noun"
 msgid "Title"
 msgstr "Titolo"
 
 #: front/src/components/SetInstanceModal.vue:16
 msgctxt "Popup/Instance/Paragraph"
-msgid ""
-"To continue, please select the Funkwhale instance you want to connect to. "
-"Enter the address directly, or select one of the suggested choices."
-msgstr ""
-"Per continuare, per favore seleziona l'istanza Funkwhale alla quale vuoi "
-"connetterti. Inserisci l'indirizzo direttamente, o selezionane uno dalla "
-"lista di suggerimenti."
+msgid "To continue, please select the Funkwhale instance you want to connect to. Enter the address directly, or select one of the suggested choices."
+msgstr "Per continuare, per favore seleziona l'istanza Funkwhale alla quale vuoi connetterti. Inserisci l'indirizzo direttamente, o selezionane uno dalla lista di suggerimenti."
 
-#: front/src/components/ShortcutsModal.vue:79
+#: front/src/components/ShortcutsModal.vue:148
+#, fuzzy
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle favorite"
+msgstr "1 mi piace"
+
+#: front/src/components/ShortcutsModal.vue:132
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle mute"
+msgstr "Cambia muto"
+
+#: front/src/components/ShortcutsModal.vue:136
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Toggle queue looping"
 msgstr "Cambia tipo di riproduzione della coda"
 
-#: front/src/views/admin/library/AlbumDetail.vue:222
-#: front/src/views/admin/library/ArtistDetail.vue:211
-#: front/src/views/admin/library/LibraryDetail.vue:200
-#: front/src/views/admin/library/TrackDetail.vue:274
-#: front/src/views/admin/moderation/AccountsDetail.vue:317
-#: front/src/views/admin/moderation/DomainsDetail.vue:225
+#: front/src/views/admin/library/AlbumDetail.vue:238
+#: front/src/views/admin/library/ArtistDetail.vue:226
+#: front/src/views/admin/library/LibraryDetail.vue:219
+#: front/src/views/admin/library/TrackDetail.vue:290
+#: front/src/views/admin/moderation/AccountsDetail.vue:329
+#: front/src/views/admin/moderation/DomainsDetail.vue:262
 msgctxt "Content/Moderation/Table.Label"
 msgid "Total size"
 msgstr "Dimensione totale"
@@ -4568,20 +4913,18 @@ msgctxt "Content/Library/Card.Help text"
 msgid "Total size of the files in this library"
 msgstr "Dimensione totale dei files in questa libreria"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:105
+#: front/src/views/admin/moderation/DomainsDetail.vue:142
 msgctxt "Content/*/*"
 msgid "Total users"
 msgstr "Utenti totali"
 
-#: front/src/views/admin/library/UploadDetail.vue:199
-msgctxt "*/*/*"
-msgid "Track"
-msgstr "Traccia"
-
-#: front/src/components/audio/SearchBar.vue:27
-#: front/src/components/library/TrackBase.vue:173
+#: front/src/components/audio/SearchBar.vue:34
+#: front/src/components/library/TrackBase.vue:188
 #: front/src/components/library/TrackDetail.vue:128
 #: front/src/components/metadata/Search.vue:138
+#: src/components/mixins/Report.vue:28
+#: front/src/views/admin/library/UploadDetail.vue:199
+#: front/src/components/mixins/Report.vue:29
 msgctxt "*/*/*/Noun"
 msgid "Track"
 msgstr "Traccia"
@@ -4591,7 +4934,7 @@ msgctxt "Content/Library/Card/Short"
 msgid "Track #%{ id } - %{ name }"
 msgstr "Traccia #%{ id } - %{ name }"
 
-#: front/src/views/admin/library/TrackDetail.vue:91
+#: front/src/views/admin/library/TrackDetail.vue:97
 msgctxt "Content/Moderation/Title"
 msgid "Track data"
 msgstr "Dati della traccia"
@@ -4601,30 +4944,28 @@ msgctxt "Content/Track/Title/Noun"
 msgid "Track information"
 msgstr "Informazioni traccia"
 
-#: front/src/components/mixins/Translations.vue:50
-#: front/src/components/mixins/Translations.vue:51
+#: front/src/components/mixins/Translations.vue:60
+#: front/src/components/mixins/Translations.vue:61
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Track name"
 msgstr "Nome traccia"
 
-#: front/src/components/instance/Stats.vue:54
 #: front/src/components/library/AlbumDetail.vue:19
-#: front/src/components/playlists/PlaylistModal.vue:47
-#: front/src/views/admin/moderation/AccountsDetail.vue:362
-#: front/src/views/admin/moderation/DomainsDetail.vue:274
-#: front/src/views/content/Base.vue:8 src/views/content/libraries/Detail.vue:8
-#: front/src/views/playlists/Detail.vue:51 src/views/radios/Detail.vue:34
-msgctxt "*/*/*/Noun"
-msgid "Tracks"
-msgstr "Tracce"
-
+#: front/src/components/library/TagDetail.vue:36
 #: front/src/components/manage/library/AlbumsTable.vue:42
 #: front/src/components/manage/library/ArtistsTable.vue:42
-#: front/src/views/admin/library/AlbumDetail.vue:252
-#: front/src/views/admin/library/ArtistDetail.vue:251
+#: front/src/components/manage/library/TagsTable.vue:44
+#: front/src/components/playlists/PlaylistModal.vue:47
+#: front/src/views/admin/library/AlbumDetail.vue:268
+#: front/src/views/admin/library/ArtistDetail.vue:266
 #: front/src/views/admin/library/Base.vue:14
-#: front/src/views/admin/library/LibraryDetail.vue:229
+#: front/src/views/admin/library/LibraryDetail.vue:248
+#: front/src/views/admin/library/TagDetail.vue:143
 #: front/src/views/admin/library/TracksList.vue:24
+#: front/src/views/admin/moderation/AccountsDetail.vue:374
+#: front/src/views/admin/moderation/DomainsDetail.vue:311
+#: front/src/views/content/Base.vue:8 src/views/content/libraries/Detail.vue:8
+#: front/src/views/playlists/Detail.vue:76 src/views/radios/Detail.vue:34
 msgctxt "*/*/*"
 msgid "Tracks"
 msgstr "Tracce"
@@ -4634,79 +4975,64 @@ msgctxt "Content/Artist/Title"
 msgid "Tracks by this artist"
 msgstr "Tracce di questo artista"
 
-#: front/src/components/instance/Stats.vue:25
-msgctxt "Content/About/Paragraph/Unit"
-msgid "Tracks favorited"
-msgstr "Tracce preferite"
-
-#: front/src/components/instance/Stats.vue:19
-msgctxt "Content/About/Paragraph/Unit"
-msgid "tracks listened"
-msgstr "tracce ascoltate"
-
 #: front/src/components/library/radios/Filter.vue:44
 msgctxt "Popup/Radio/Title/Noun"
 msgid "Tracks matching filter"
 msgstr "Tracce che corrispondono al filtro"
 
 #: front/src/components/library/TrackDetail.vue:57
+#: front/src/components/manage/moderation/ReportCard.vue:134
 #: front/src/views/admin/library/UploadDetail.vue:250
+#: front/src/views/admin/moderation/AccountsDetail.vue:181
 msgctxt "Content/Track/Table.Label/Noun"
 msgid "Type"
 msgstr "Tipo"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:180
-msgctxt "Content/Moderation/Table.Label/Noun"
-msgid "Type"
-msgstr "Tipo"
-
 #: front/src/components/manage/moderation/AccountsTable.vue:44
-#: front/src/components/manage/moderation/DomainsTable.vue:42
+#: front/src/components/manage/moderation/DomainsTable.vue:50
 msgctxt "Content/Moderation/Table.Label/Short"
 msgid "Under moderation rule"
 msgstr "Sotto regole di moderazione"
 
-#: front/src/views/content/remote/Card.vue:109
-#: src/views/content/remote/Card.vue:114
+#: front/src/components/ShortcutsModal.vue:68
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Unfocus searchbar"
+msgstr "Togli il primo piano dalla barra di ricerca"
+
+#: front/src/views/content/remote/Card.vue:122
+#: src/views/content/remote/Card.vue:127
 msgctxt "*/Library/Button.Label/Verb"
 msgid "Unfollow"
 msgstr "Smetti di seguire"
 
-#: front/src/views/content/remote/Card.vue:110
+#: front/src/views/content/remote/Card.vue:123
 msgctxt "Popup/Library/Title"
 msgid "Unfollow this library?"
 msgstr "Smettere di seguire questa libreria?"
 
-#: front/src/components/About.vue:17
-msgctxt "Content/About/Paragraph"
-msgid ""
-"Unfortunately, the owners of this instance did not yet take the time to "
-"complete this page."
-msgstr ""
-"Sfortunatamente i proprietari di questa istanza non hanno ancora avuto tempo"
-" di completare questa pagina."
-
 #: front/src/components/federation/FetchButton.vue:54
 #: front/src/components/federation/FetchButton.vue:55
-msgctxt "*/*/Error"
-msgid "Unknowkn error"
-msgstr "Errore sconosciuto"
-
 #: front/src/components/library/ImportStatusModal.vue:144
-msgctxt "Popup/Import/Error.Label"
-msgid "Unkwown error"
+msgctxt "*/*/Error"
+msgid "Unknown error"
 msgstr "Errore sconosciuto"
 
-#: front/src/components/Home.vue:37
-msgctxt "Content/Home/Title"
-msgid "Unlimited music"
-msgstr "Musica illimitata"
-
-#: front/src/components/audio/Player.vue:630
+#: front/src/components/audio/Player.vue:656
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Unmute"
 msgstr "Non silenziare"
 
+#: front/src/components/manage/moderation/ReportCard.vue:225
+msgctxt "Content/*/Button.Label"
+msgid "Unresolve"
+msgstr "Non risolto"
+
+#: front/src/components/manage/moderation/ReportCard.vue:67
+#: front/src/views/admin/moderation/ReportsList.vue:23
+msgctxt "Content/*/*/Short"
+msgid "Unresolved"
+msgstr "Non risolto"
+
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:57
 msgctxt "Content/Moderation/Card.Button.Label/Verb"
 msgid "Update"
@@ -4770,12 +5096,8 @@ msgstr "Data di caricamento"
 
 #: front/src/components/library/FileUpload.vue:258
 msgctxt "Content/Library/Help text"
-msgid ""
-"Upload denied, ensure the file is not too big and that you have not reached "
-"your quota"
-msgstr ""
-"Caricamento non riuscito, assicurati che il file non sia troppo grande e di "
-"non aver esaurito la tua quota"
+msgid "Upload denied, ensure the file is not too big and that you have not reached your quota"
+msgstr "Caricamento non riuscito, assicurati che il file non sia troppo grande e di non aver esaurito la tua quota"
 
 #: front/src/components/library/ImportStatusModal.vue:8
 msgctxt "Popup/Import/Message"
@@ -4784,20 +5106,18 @@ msgstr "Il caricamento è ancora in corso e presto sarà processato dal server."
 
 #: front/src/views/content/Home.vue:7
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Upload music files (MP3, OGG, FLAC, etc.) from your personal library "
-"directly from your browser to enjoy them here."
-msgstr ""
-"Carica file musicali (mp3, ogg, flac, ecc.) dalla tua libreria personale "
-"direttamente dal tuo browser per goderne qui."
+msgid "Upload music files (MP3, OGG, FLAC, etc.) from your personal library directly from your browser to enjoy them here."
+msgstr "Carica file musicali (mp3, ogg, flac, ecc.) dalla tua libreria personale direttamente dal tuo browser per goderne qui."
 
 #: front/src/components/library/FileUpload.vue:30
 msgctxt "Content/Library/Title/Verb"
 msgid "Upload new tracks"
 msgstr "Carica nuove tracce"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:298
-msgctxt "Content/Moderation/Table.Label/Noun"
+#: front/src/components/About.vue:99
+#: front/src/views/admin/moderation/AccountsDetail.vue:309
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Upload quota"
 msgstr "Quota di caricamento"
 
@@ -4808,12 +5128,8 @@ msgstr "Caricamento scaduto, per favore riprova"
 
 #: front/src/components/library/ImportStatusModal.vue:14
 msgctxt "Popup/Import/Message"
-msgid ""
-"Upload was skipped because a similar one is already available in one of your"
-" libraries."
-msgstr ""
-"Il caricamento è stato saltato perchè uno simile è già disponibile in una "
-"delle tue librerie."
+msgid "Upload was skipped because a similar one is already available in one of your libraries."
+msgstr "Il caricamento è stato saltato perchè uno simile è già disponibile in una delle tue librerie."
 
 #: front/src/components/library/ImportStatusModal.vue:11
 msgctxt "Popup/Import/Message"
@@ -4835,76 +5151,83 @@ msgctxt "Content/Library/Table"
 msgid "Uploading…"
 msgstr "Caricamento…"
 
+#: front/src/components/manage/library/LibrariesTable.vue:52
+#: front/src/components/manage/moderation/AccountsTable.vue:41
+#: front/src/components/mixins/Translations.vue:75
+#: front/src/views/admin/library/AlbumDetail.vue:258
+#: front/src/views/admin/library/ArtistDetail.vue:246
 #: front/src/views/admin/library/Base.vue:20
+#: front/src/views/admin/library/LibraryDetail.vue:258
+#: front/src/views/admin/library/TrackDetail.vue:310
 #: front/src/views/admin/library/UploadsList.vue:24
+#: front/src/views/admin/moderation/AccountsDetail.vue:349
+#: front/src/views/admin/moderation/DomainsDetail.vue:281
+#: front/src/components/mixins/Translations.vue:76
 msgctxt "*/*/*"
 msgid "Uploads"
 msgstr "Caricamenti"
 
-#: front/src/components/manage/moderation/AccountsTable.vue:41
-#: front/src/components/mixins/Translations.vue:63
-#: front/src/views/admin/library/AlbumDetail.vue:242
-#: front/src/views/admin/library/ArtistDetail.vue:231
-#: front/src/views/admin/library/LibraryDetail.vue:239
-#: front/src/views/admin/library/TrackDetail.vue:294
-#: front/src/views/admin/moderation/AccountsDetail.vue:337
-#: front/src/views/admin/moderation/DomainsDetail.vue:244
-#: front/src/components/mixins/Translations.vue:64
-msgctxt "Content/Moderation/Table.Label/Noun"
-msgid "Uploads"
-msgstr "Caricamenti"
-
-#: front/src/components/manage/library/LibrariesTable.vue:52
-msgctxt "Content/*/*/Noun"
-msgid "Uploads"
-msgstr "Caricamenti"
-
 #: front/src/components/auth/ApplicationForm.vue:16
 msgctxt "Content/Applications/Help Text"
-msgid ""
-"Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is "
-"not served on the web."
-msgstr ""
-"Usa \"urn:ietf:wg:oauth:2.0:oob\" come URI di reindirizzamento se la tua "
-"applicazione non è servita sul web."
+msgid "Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is not served on the web."
+msgstr "Usa \"urn:ietf:wg:oauth:2.0:oob\" come URI di reindirizzamento se la tua applicazione non è servita sul web."
 
 #: front/src/components/Footer.vue:16
 msgctxt "Footer/*/List item.Link"
 msgid "Use another instance"
 msgstr "Usa un'altra istanza"
 
+#: front/src/components/Home.vue:146
+msgctxt "Content/Home/Link"
+msgid "Use Funkwhale on other devices with our apps"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:44
+msgctxt "*/*/Field,Help"
+msgid "Use this field to provide additional context to the moderator that will handle your report."
+msgstr ""
+
 #: front/src/views/auth/PasswordReset.vue:12
 msgctxt "Content/Signup/Paragraph"
-msgid ""
-"Use this form to request a password reset. We will send an email to the "
-"given address with instructions to reset your password."
+msgid "Use this form to request a password reset. We will send an email to the given address with instructions to reset your password."
+msgstr "Usa questo modulo per richiedere un reset della password. Ti invieremo una email all'indirizzo fornito con le istruzioni per resettare la tua password."
+
+#: front/src/components/moderation/ReportModal.vue:18
+msgctxt "*/Moderation/Popup,Paragraph"
+msgid "Use this form to submit a report to our moderation team."
 msgstr ""
-"Usa questo modulo per richiedere un reset della password. Ti invieremo una "
-"email all'indirizzo fornito con le istruzioni per resettare la tua password."
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:111
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Use this setting to temporarily enable/disable the policy without completely"
-" removing it."
-msgstr ""
-"Usa questa impostazione per abilitare/disabilitare temporaneamente la regola"
-" senza rimuoverla completamente."
+msgid "Use this setting to temporarily enable/disable the policy without completely removing it."
+msgstr "Usa questa impostazione per abilitare/disabilitare temporaneamente la regola senza rimuoverla completamente."
 
 #: front/src/components/manage/users/InvitationsTable.vue:49
 msgctxt "Content/Admin/Table"
 msgid "Used"
 msgstr "Usati"
 
+#: front/src/components/Home.vue:125
+msgctxt "Content/Home/Header"
+msgid "Useful links"
+msgstr ""
+
 #: front/src/views/content/libraries/Detail.vue:26
 msgctxt "Content/Library/Table.Label"
 msgid "User"
 msgstr "Utente"
 
-#: front/src/components/instance/Stats.vue:5
-msgctxt "Content/About/Title/Noun"
-msgid "User activity"
-msgstr "Attività utente"
+#: front/src/components/Home.vue:154
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "User guides"
+msgstr "Librerie dell'utente"
+
+#: front/src/views/admin/Settings.vue:88
+#, fuzzy
+msgctxt "Content/Admin/Menu"
+msgid "User Interface"
+msgstr "Nome utente"
 
 #: front/src/components/library/AlbumDetail.vue:26
 #: front/src/components/library/ArtistDetail.vue:39
@@ -4918,35 +5241,35 @@ msgctxt "Content/Radio/Title"
 msgid "User radios"
 msgstr "Radio dell'utente"
 
-#: front/src/components/auth/Signup.vue:19
+#: front/src/components/auth/SignupForm.vue:15
 #: front/src/components/manage/users/UsersTable.vue:37
-#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:71
 #: front/src/views/admin/moderation/AccountsDetail.vue:114
-#: front/src/components/mixins/Translations.vue:60
+#: front/src/components/mixins/Translations.vue:72
 msgctxt "Content/*/*"
 msgid "Username"
 msgstr "Nome utente"
 
-#: front/src/components/auth/Login.vue:15
+#: front/src/components/auth/LoginForm.vue:11
 msgctxt "Content/Login/Input.Label/Noun"
 msgid "Username or email"
 msgstr "Nome utente o email"
 
-#: front/src/components/instance/Stats.vue:13
-msgctxt "Content/About/Paragraph/Unit"
-msgid "users"
-msgstr "utenti"
-
-#: front/src/components/Sidebar.vue:102
-#: front/src/components/manage/moderation/DomainsTable.vue:39
-#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/Sidebar.vue:106
+#: front/src/components/manage/moderation/DomainsTable.vue:47
+#: front/src/components/mixins/Translations.vue:73
 #: src/views/admin/Settings.vue:81 front/src/views/admin/users/Base.vue:5
 #: src/views/admin/users/UsersList.vue:21
-#: front/src/components/mixins/Translations.vue:62
+#: front/src/components/mixins/Translations.vue:74
 msgctxt "*/*/*/Noun"
 msgid "Users"
 msgstr "Utenti"
 
+#: front/src/components/Home.vue:110
+msgctxt "Content/Home/Paragraph"
+msgid "Users on this pod also get %{ quota } of free storage to upload their own content!"
+msgstr ""
+
 #: front/src/components/Footer.vue:29
 msgctxt "Footer/*/Title"
 msgid "Using Funkwhale"
@@ -4964,45 +5287,60 @@ msgctxt "Content/Library/Link/Verb"
 msgid "View files"
 msgstr "Vedi files"
 
-#: front/src/components/library/AlbumBase.vue:81
-#: front/src/components/library/ArtistBase.vue:92
-#: front/src/components/library/TrackBase.vue:100
-#: front/src/views/admin/library/AlbumDetail.vue:42
-#: front/src/views/admin/library/ArtistDetail.vue:41
+#: front/src/components/library/AlbumBase.vue:95
+#: front/src/components/library/ArtistBase.vue:107
+#: front/src/components/library/TrackBase.vue:111
+#: front/src/views/admin/library/AlbumDetail.vue:48
+#: front/src/views/admin/library/ArtistDetail.vue:46
 #: front/src/views/admin/library/LibraryDetail.vue:34
 #: front/src/views/admin/library/LibraryDetail.vue:45
-#: front/src/views/admin/library/TrackDetail.vue:41
+#: front/src/views/admin/library/TagDetail.vue:32
+#: front/src/views/admin/library/TrackDetail.vue:47
 #: front/src/views/admin/library/UploadDetail.vue:35
 #: front/src/views/admin/library/UploadDetail.vue:46
 #: front/src/views/admin/moderation/AccountsDetail.vue:37
 #: front/src/views/admin/moderation/AccountsDetail.vue:45
+#: front/src/views/admin/moderation/DomainsDetail.vue:30
 msgctxt "Content/Moderation/Link/Verb"
 msgid "View in Django's admin"
 msgstr "Vedi nell'amministrazione di Django"
 
-#: front/src/components/library/AlbumBase.vue:61
-#: front/src/components/library/ArtistBase.vue:72
-#: front/src/components/library/TrackBase.vue:80
+#: front/src/components/Home.vue:169
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "View more…"
+msgstr "Carica di più…"
+
+#: front/src/components/library/AlbumBase.vue:62
+#: front/src/components/library/ArtistBase.vue:73
+#: front/src/components/library/TrackBase.vue:78
 #: front/src/components/metadata/ArtistCard.vue:49
 #: front/src/components/metadata/ReleaseCard.vue:53
 msgctxt "Content/*/*/Clickable, Verb"
 msgid "View on MusicBrainz"
 msgstr "Vedi su MusicBrainz"
 
+#: front/src/components/manage/moderation/ReportCard.vue:124
+msgctxt "Content/Moderation/Link"
+msgid "View public page"
+msgstr ""
+
 #: front/src/components/manage/library/LibrariesTable.vue:11
 #: front/src/components/manage/library/LibrariesTable.vue:51
 #: front/src/components/manage/library/UploadsTable.vue:11
 #: front/src/components/manage/library/UploadsTable.vue:63
 #: front/src/views/admin/library/LibraryDetail.vue:94
 #: front/src/views/admin/library/UploadDetail.vue:101
+#: front/src/views/content/libraries/Form.vue:18
 msgctxt "*/*/*"
 msgid "Visibility"
 msgstr "Visibilità"
 
-#: front/src/views/content/libraries/Form.vue:18
-msgctxt "Content/Library/Dropdown.Label"
-msgid "Visibility"
-msgstr "Visibilità"
+#: front/src/components/Home.vue:91
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Visit funkwhale.audio"
+msgstr "Utilizzando Funkwhale"
 
 #: front/src/components/library/AlbumDetail.vue:4
 msgctxt "Content/Album/"
@@ -5014,7 +5352,13 @@ msgctxt "Popup/*/Loading.Title"
 msgid "Waiting for result…"
 msgstr "Aspettando i risultati…"
 
-#: front/src/components/auth/Login.vue:7
+#: front/src/components/auth/Settings.vue:285
+#, fuzzy
+msgctxt "Content/Settings/Error message.Title"
+msgid "We cannot delete your account"
+msgstr "Non riusciamo a farti accedere"
+
+#: front/src/components/auth/LoginForm.vue:3
 msgctxt "Content/Login/Error message.Title"
 msgid "We cannot log you in"
 msgstr "Non riusciamo a farti accedere"
@@ -5024,42 +5368,37 @@ msgctxt "Content/*/Error message.Title"
 msgid "We cannot save your changes"
 msgstr "Non è stato possibile salvare le tue modifiche"
 
-#: front/src/components/Home.vue:122
-msgctxt "Content/Home/List item"
-msgid "We do not track you or bother you with ads"
-msgstr "Noi non ti tracciamo o infastidiamo con pubblicità"
+#: front/src/views/Notifications.vue:39
+msgctxt "Content/Notifications/Paragraph"
+msgid "We noticed you've been here for a while. If Funkwhale is useful to you, we could use your help to make it even better!"
+msgstr ""
 
 #: front/src/components/library/FileUpload.vue:39
 msgctxt "Content/Library/Link"
 msgid "We recommend using Picard for that purpose."
 msgstr "Ti consigliamo di utilizzare Picard per quello scopo."
 
-#: front/src/components/Home.vue:7
-msgctxt "Content/Home/Title"
-msgid "We think listening to music should be simple."
-msgstr "Noi pensiamo che ascoltare musica debba essere semplice."
+#: front/src/components/moderation/ReportModal.vue:35
+msgctxt "*/*/Field,Help"
+msgid "We'll use this email if we need to contact you regarding this report."
+msgstr ""
 
-#: front/src/components/Home.vue:148
+#: front/src/components/Home.vue:207
 msgctxt "Head/Home/Title"
 msgid "Welcome"
 msgstr "Benvenuto"
 
 #: front/src/components/Home.vue:5
-msgctxt "Content/Home/Title/Verb"
-msgid "Welcome on Funkwhale"
-msgstr "Benvenuto su Funkwhale"
-
-#: front/src/components/Home.vue:24
-msgctxt "Content/Home/Title"
-msgid "Why funkwhale?"
-msgstr "Perchè Funkwhale?"
+msgctxt "Content/Home/Header"
+msgid "Welcome to %{ podName }!"
+msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:13
+#: front/src/components/audio/EmbedWizard.vue:23
 msgctxt "Popup/Embed/Input.Label"
 msgid "Widget height"
 msgstr "Altezza del widget"
 
-#: front/src/components/audio/EmbedWizard.vue:6
+#: front/src/components/audio/EmbedWizard.vue:16
 msgctxt "Popup/Embed/Input.Label"
 msgid "Widget width"
 msgstr "Larghezza del widget"
@@ -5079,9 +5418,11 @@ msgctxt "Content/OAuth Scopes/Help Text"
 msgid "Write-only access to user data"
 msgstr "Accesso in sola-scrittura ai dati utente"
 
-#: front/src/components/Sidebar.vue:129
+#: front/src/components/Sidebar.vue:133
 #: front/src/components/manage/moderation/AccountsTable.vue:72
-#: front/src/components/manage/moderation/DomainsTable.vue:58
+#: front/src/components/manage/moderation/DomainsTable.vue:12
+#: front/src/components/manage/moderation/DomainsTable.vue:69
+#: front/src/views/admin/moderation/DomainsDetail.vue:109
 msgctxt "*/*/*"
 msgid "Yes"
 msgstr "Si"
@@ -5093,34 +5434,18 @@ msgstr "Si, disconnettimi!"
 
 #: front/src/views/content/libraries/Form.vue:19
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You are able to share your library with other people, regardless of its "
-"visibility."
-msgstr ""
-"Sarai in grado di condividere la tua libreria con altre persone, "
-"indipendentemente dalla sua visibilità."
+msgid "You are able to share your library with other people, regardless of its visibility."
+msgstr "Sarai in grado di condividere la tua libreria con altre persone, indipendentemente dalla sua visibilità."
 
 #: front/src/components/library/FileUpload.vue:32
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You are about to upload music to your library. Before proceeding, please "
-"ensure that:"
-msgstr ""
-"Stai per caricare della musica nella tua libreria. Prima di procedere, per "
-"favore assicurati che:"
+msgid "You are about to upload music to your library. Before proceeding, please ensure that:"
+msgstr "Stai per caricare della musica nella tua libreria. Prima di procedere, per favore assicurati che:"
 
 #: front/src/components/SetInstanceModal.vue:12
 msgctxt "Popup/Login/Paragraph"
-msgid ""
-"You are currently connected to <a href=\"%{ url }\" target=\"_blank\">%{ "
-"hostname }&nbsp;<i class=\"external icon\"/></a>. If you continue, you will "
-"be disconnected from your current instance and all your local data will be "
-"deleted."
-msgstr ""
-"Attualmente sei connesso a <a href=\"%{ url }\" target=\"_blank\">%{ "
-"hostname }&nbsp;<i class=\"external icon\"/></a>. Se continui, sarai "
-"disconnesso dalla tua istanza attuale ed i tuoi dati locali saranno "
-"eliminati."
+msgid "You are currently connected to <a href=\"%{ url }\" target=\"_blank\">%{ hostname }&nbsp;<i class=\"external icon\"/></a>. If you continue, you will be disconnected from your current instance and all your local data will be deleted."
+msgstr "Attualmente sei connesso a <a href=\"%{ url }\" target=\"_blank\">%{ hostname }&nbsp;<i class=\"external icon\"/></a>. Se continui, sarai disconnesso dalla tua istanza attuale ed i tuoi dati locali saranno eliminati."
 
 #: front/src/components/library/ArtistDetail.vue:6
 msgctxt "Content/Artist/Paragraph"
@@ -5134,12 +5459,8 @@ msgstr "Sei attualmente connesso come %{ username }"
 
 #: front/src/components/library/FileUpload.vue:35
 msgctxt "Content/Library/List item"
-msgid ""
-"You are not uploading copyrighted content in a public library, otherwise you"
-" may be infringing the law"
-msgstr ""
-"Non stai caricando contenuti protetti da diritti d'autore in una libreria "
-"pubblica, altrimenti potresti infrangere la legge"
+msgid "You are not uploading copyrighted content in a public library, otherwise you may be infringing the law"
+msgstr "Non stai caricando contenuti protetti da diritti d'autore in una libreria pubblica, altrimenti potresti infrangere la legge"
 
 #: front/src/components/SetInstanceModal.vue:98
 msgctxt "*/Instance/Message"
@@ -5147,55 +5468,36 @@ msgid "You are now using the Funkwhale instance at %{ url }"
 msgstr "Ora stai utilizzando l'istanza Funkwhale su %{ url }"
 
 #: front/src/views/content/Home.vue:17
+#, fuzzy
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You can follow libraries from other users to get access to new music. Public"
-" libraries can be followed immediatly, while following a private library "
-"requires approval from its owner."
-msgstr ""
-"Puoi seguire librerie di altri utenti per avere accesso a nuova musica. Le "
-"librerie pubbliche possono essere seguite immediatamente, mentre seguire le "
-"librerie private richiede l'approvazione del suo proprietario."
-
-#: front/src/components/Home.vue:128
-msgctxt "Content/Home/List item"
-msgid ""
-"You can invite friends and family to your instance so they can enjoy your "
-"music"
-msgstr ""
-"Puoi invitare amici e familiari sulla tua istanza così possono fruire della "
-"tua musica"
+msgid "You can follow libraries from other users to get access to new music. Public libraries can be followed immediately, while following a private library requires approval from its owner."
+msgstr "Puoi seguire librerie di altri utenti per avere accesso a nuova musica. Le librerie pubbliche possono essere seguite immediatamente, mentre seguire le librerie private richiede l'approvazione del suo proprietario."
 
 #: front/src/components/moderation/FilterModal.vue:31
+#, fuzzy
 msgctxt "Popup/Moderation/Paragraph"
-msgid ""
-"You can manage and update your filters anytime from your account settings."
-msgstr ""
-"Puoi gestire ed aggiornare i tuoi filtri in qualsiasi momento dalle "
-"impostazioni del tuo account."
+msgid "You can manage and update your filters any time from your account settings."
+msgstr "Puoi gestire ed aggiornare i tuoi filtri in qualsiasi momento dalle impostazioni del tuo account."
 
 #: front/src/views/auth/EmailConfirm.vue:24
 msgctxt "Content/Signup/Paragraph"
 msgid "You can now use the service without limitations."
 msgstr "Ora puoi usare il servizio senza limitazioni."
 
+#: front/src/components/auth/Settings.vue:278
+msgctxt "Content/Settings/Paragraph'"
+msgid "You can permanently and irreversibly delete your account and all the associated data using the form below. You will be asked for confirmation."
+msgstr ""
+
 #: front/src/components/library/radios/Builder.vue:7
 msgctxt "Content/Radio/Paragraph"
-msgid ""
-"You can use this interface to build your own custom radio, which will play "
-"tracks according to your criteria."
-msgstr ""
-"Puoi usare questa interfaccia per creare la tua radio personalizzata, che "
-"riprodurrà tracce in accordo con i tuoi criteri."
+msgid "You can use this interface to build your own custom radio, which will play tracks according to your criteria."
+msgstr "Puoi usare questa interfaccia per creare la tua radio personalizzata, che riprodurrà tracce in accordo con i tuoi criteri."
 
 #: front/src/components/auth/SubsonicTokenForm.vue:7
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"You can use those to enjoy your playlist and music in offline mode, on your "
-"smartphone or tablet, for instance."
-msgstr ""
-"Puoi usarli per godere delle tue liste di riproduzione e musica anche quando"
-" non collegato, dal tuo cellulare o tablet, per esempio."
+msgid "You can use those to enjoy your playlist and music in offline mode, on your smartphone or tablet, for instance."
+msgstr "Puoi usarli per godere delle tue liste di riproduzione e musica anche quando non collegato, dal tuo cellulare o tablet, per esempio."
 
 #: front/src/components/auth/Settings.vue:202
 msgctxt "Content/Applications/Paragraph"
@@ -5212,22 +5514,17 @@ msgctxt "Content/Moderation/Card.Title"
 msgid "You don't have any rule in place for this account."
 msgstr "Non hai nessuna regola attiva per questo account."
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:39
+#: front/src/views/admin/moderation/DomainsDetail.vue:67
 msgctxt "Content/Moderation/Card.Title"
 msgid "You don't have any rule in place for this domain."
 msgstr "Non hai nessuna regola attiva per questo dominio."
 
 #: front/src/components/library/EditForm.vue:52
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You don't have the permission to edit this object, but you can suggest "
-"changes. Once submitted, suggestions will be reviewed before approval."
-msgstr ""
-"Non hai i permessi per modificare questo oggetto, ma puoi suggerire "
-"modifiche. Una volta inviati, i suggerimenti saranno revisionati prima "
-"dell'approvazione."
+msgid "You don't have the permission to edit this object, but you can suggest changes. Once submitted, suggestions will be reviewed before approval."
+msgstr "Non hai i permessi per modificare questo oggetto, ma puoi suggerire modifiche. Una volta inviati, i suggerimenti saranno revisionati prima dell'approvazione."
 
-#: front/src/components/Sidebar.vue:171
+#: front/src/components/Sidebar.vue:175
 msgctxt "Sidebar/Player/Title"
 msgid "You have a radio playing"
 msgstr "Hai una radio in riproduzione"
@@ -5239,8 +5536,7 @@ msgstr "Potresti avere un problema di connettività."
 
 #: front/src/components/auth/Settings.vue:100
 msgctxt "Popup/Settings/List item"
-msgid ""
-"You will be logged out from this session and have to log in with the new one"
+msgid "You will be logged out from this session and have to log in with the new one"
 msgstr "Sarai disconnesso da questa sessione e dovrai accedere con una nuova"
 
 #: front/src/components/auth/Authorize.vue:51
@@ -5255,27 +5551,25 @@ msgstr "Ti sarà mostrato un codice da copiare-incollare nell'applicazione."
 
 #: front/src/components/auth/Settings.vue:71
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"You will have to update your password on your clients that use this "
-"password."
-msgstr ""
-"Dovrai aggiornare la tua password sui tuoi dispositivi che utilizzano questa"
-" password."
+msgid "You will have to update your password on your clients that use this password."
+msgstr "Dovrai aggiornare la tua password sui tuoi dispositivi che utilizzano questa password."
 
 #: front/src/components/moderation/FilterModal.vue:20
+#, fuzzy
 msgctxt "Popup/Moderation/Paragraph"
-msgid ""
-"You will not see tracks, albums and user activity linked to this artist "
-"anymore:"
-msgstr ""
-"Non vedrai tracce, album e attività utente collegate a questo artista in "
-"futuro:"
+msgid "You will not see tracks, albums and user activity linked to this artist any more:"
+msgstr "Non vedrai tracce, album e attività utente collegate a questo artista in futuro:"
 
-#: front/src/components/auth/Signup.vue:13
+#: front/src/components/auth/SignupForm.vue:9
 msgctxt "Content/Signup/Form/Paragraph"
 msgid "Your account cannot be created."
 msgstr "Il tuo account non può essere creato."
 
+#: front/src/components/auth/Settings.vue:281
+msgctxt "Content/Settings/Paragraph'"
+msgid "Your account will be deleted from our servers within a few minutes. We will also notify other servers who may have a copy of some of your data so they can proceed to deletion. Please note that some of these servers may be offline or unwilling to comply though."
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:215
 msgctxt "Content/Settings/Title/Noun"
 msgid "Your applications"
@@ -5286,6 +5580,11 @@ msgctxt "Content/Settings/Error message.Title"
 msgid "Your avatar cannot be saved"
 msgstr "La tua immagine di profilo non può essere salvata"
 
+#: front/src/components/auth/Settings.vue:527
+msgctxt "*/Auth/Message"
+msgid "Your deletion request was submitted, your account and content will be deleted shortly"
+msgstr ""
+
 #: front/src/components/library/EditForm.vue:3
 msgctxt "Content/Library/Paragraph"
 msgid "Your edit was successfully submitted."
@@ -5296,12 +5595,13 @@ msgctxt "Head/Favorites/Title"
 msgid "Your Favorites"
 msgstr "I Tuoi Preferiti"
 
-#: front/src/components/Home.vue:109
-msgctxt "Content/Home/Title"
-msgid "Your music, your way"
-msgstr "La tua musica, il tuo modo di essere"
+#: front/src/views/Notifications.vue:5
+#, fuzzy
+msgctxt "Content/Notifications/Title"
+msgid "Your messages"
+msgstr "Messaggi emessi"
 
-#: front/src/views/Notifications.vue:4
+#: front/src/views/Notifications.vue:69
 msgctxt "Content/Notifications/Title"
 msgid "Your notifications"
 msgstr "Le tue notifiche"
@@ -5317,46 +5617,40 @@ msgid "Your password has been updated successfully."
 msgstr "La tua password è stata aggiornata con successo."
 
 #: front/src/components/auth/Settings.vue:14
+#, fuzzy
 msgctxt "Content/Settings/Error message.Title"
-msgid "Your settings can't be updateds"
+msgid "Your settings can't be updated"
 msgstr "Le tue impostazioni non possono essere aggiornate"
 
 #: front/src/components/auth/Settings.vue:101
 msgctxt "Popup/Settings/List item"
-msgid ""
-"Your Subsonic password will be changed to a new, random one, logging you out"
-" from devices that used the old Subsonic password"
-msgstr ""
-"La tua password Subsonic sarà cambiata con una nuova e casuale, e sarai "
-"disconnesso dai dispositivi che utilizzano ancora la vecchia password "
-"Subsonic"
+msgid "Your Subsonic password will be changed to a new, random one, logging you out from devices that used the old Subsonic password"
+msgstr "La tua password Subsonic sarà cambiata con una nuova e casuale, e sarai disconnesso dai dispositivi che utilizzano ancora la vecchia password Subsonic"
 
-#: front/src/edits.js:47
-msgctxt "*/*/*/Short, Noun"
-msgid "Position"
-msgstr "Posizione"
+#: front/src/entities.js:126
+#, fuzzy
+msgctxt "*/*/*/Noun"
+msgid "MusicBrainz ID"
+msgstr "Apri su MusicBrainz"
 
-#: front/src/edits.js:54
-msgctxt "Content/Track/*/Noun"
-msgid "Copyright"
-msgstr "Diritti d'autore"
+#: front/src/main.js:110
+msgctxt "*/Error/Paragraph"
+msgid "You sent too many requests and have been rate limited, please try again in %{ delay }"
+msgstr ""
+
+#: front/src/main.js:113
+msgctxt "*/Error/Paragraph"
+msgid "You sent too many requests and have been rate limited, please try again later"
+msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:183
+#: front/src/components/library/AlbumBase.vue:208
 msgctxt "Content/Album/Header.Title"
-msgid ""
-"Album containing %{ count } track, by <a class=\"internal\" href=\"%{ "
-"artistUrl }\">%{ artist }</a>"
-msgid_plural ""
-"Album containing %{ count } tracks, by <a class=\"internal\" href=\"%{ "
-"artistUrl }\">%{ artist }</a>"
-msgstr[0] ""
-"Album contenente %{ count } traccia, di <a class=\"internal\" href=\"%{ "
-"artistUrl }\">%{ artist }</a>"
-msgstr[1] ""
-"Album contenente %{ count } tracce, di <a class=\"internal\" href=\"%{ "
-"artistUrl }\">%{ artist }</a>"
-
-#: front/src/components/audio/PlayButton.vue:220
+msgid "Album containing %{ count } track, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgid_plural "Album containing %{ count } tracks, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgstr[0] "Album contenente %{ count } traccia, di <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgstr[1] "Album contenente %{ count } tracce, di <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+
+#: front/src/components/audio/PlayButton.vue:246
 msgctxt "*/Queue/Message"
 msgid "%{ count } track was added to your queue"
 msgid_plural "%{ count } tracks were added to your queue"
diff --git a/front/locales/nb_NO/LC_MESSAGES/app.po b/front/locales/nb_NO/LC_MESSAGES/app.po
index b922f8408d6ce67abc8a052e7016f9b85821f7d3..cb94283b1f20b84a587a0ca1f301ca98459d1f9d 100644
--- a/front/locales/nb_NO/LC_MESSAGES/app.po
+++ b/front/locales/nb_NO/LC_MESSAGES/app.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: front 0.1.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-05-16 10:35+0200\n"
+"POT-Creation-Date: 2019-10-01 15:15+0200\n"
 "PO-Revision-Date: 2019-01-17 08:33+0000\n"
 "Last-Translator: Allan Nordhøy <epost@anotheragency.no>\n"
 "Language-Team: none\n"
@@ -39,6 +39,53 @@ msgctxt "Content/Auth/Title"
 msgid "%{ app } wants to access your Funkwhale account"
 msgstr "Logg inn på din Funkwhale-konto"
 
+#: front/src/components/About.vue:173 src/components/Home.vue:56
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } active user"
+msgid_plural "%{ count } active users"
+msgstr[0] "%{ count } spor"
+msgstr[1] "%{ count } spor"
+
+#: front/src/components/About.vue:182
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } albums"
+msgid_plural "%{ count } albums"
+msgstr[0] "%{ count } spor"
+msgstr[1] "%{ count } spor"
+
+#: front/src/components/About.vue:152
+msgctxt "*/*/*"
+msgid "%{ count } allowed domains"
+msgid_plural "%{ count } allowed domains"
+msgstr[0] ""
+msgstr[1] ""
+
+#: front/src/components/About.vue:179
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } artists"
+msgid_plural "%{ count } artists"
+msgstr[0] "%{ count } spor"
+msgstr[1] "%{ count } spor"
+
+#: front/src/components/About.vue:176 src/components/Home.vue:59
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } hour of music"
+msgid_plural "%{ count } hours of music"
+msgstr[0] "%{ count } spor"
+msgstr[1] "%{ count } spor"
+
+#: front/src/components/About.vue:188
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } listenings"
+msgid_plural "%{ count } listenings"
+msgstr[0] "%{ count } spor"
+msgstr[1] "%{ count } spor"
+
 #: front/src/components/common/ActionTable.vue:68
 #, fuzzy
 msgctxt "Content/*/Paragraph"
@@ -47,9 +94,9 @@ msgid_plural "%{ count } on %{ total } selected"
 msgstr[0] "%{ count } på %{ total } valgt"
 msgstr[1] "%{ count } på %{ total } valgt"
 
-#: front/src/components/Sidebar.vue:121 src/components/audio/album/Card.vue:52
+#: front/src/components/Sidebar.vue:125 src/components/audio/album/Card.vue:52
 #: front/src/views/content/libraries/Card.vue:40
-#: src/views/content/remote/Card.vue:30
+#: src/views/content/remote/Card.vue:43
 #, fuzzy
 msgctxt "*/*/*"
 msgid "%{ count } track"
@@ -73,7 +120,15 @@ msgid_plural "%{ count } tracks matching combined filters"
 msgstr[0] "%{ count } spor samsvarer med kombinerte filter"
 msgstr[1] "%{ count } spor samsvarer med kombinerte filter"
 
-#: front/src/components/playlists/Card.vue:18
+#: front/src/components/About.vue:185
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } tracks"
+msgid_plural "%{ count } tracks"
+msgstr[0] "%{ count } spor"
+msgstr[1] "%{ count } spor"
+
+#: front/src/components/playlists/Card.vue:28
 #, fuzzy
 msgctxt "Content/*/Card/List item"
 msgid "%{ count} track"
@@ -118,11 +173,10 @@ msgstr "%{ username } sin profil"
 
 #: front/src/components/playlists/PlaylistModal.vue:21
 msgctxt "Popup/Playlist/Paragraph"
-msgid ""
-"<strong>%{ track }</strong> is already in <strong>%{ playlist }</strong>."
+msgid "<strong>%{ track }</strong> is already in <strong>%{ playlist }</strong>."
 msgstr ""
 
-#: front/src/components/audio/artist/Card.vue:41
+#: front/src/components/audio/artist/Card.vue:11
 #, fuzzy
 msgctxt "Content/Artist/Card"
 msgid "1 album"
@@ -138,26 +192,45 @@ msgid_plural "%{ count } favorites"
 msgstr[0] "Én favoritt"
 msgstr[1] "%{ count } favoritter"
 
-#: front/src/components/Home.vue:64
+#: front/src/components/audio/artist/Card.vue:15
 #, fuzzy
-msgctxt "Content/Home/Title"
-msgid "A clean library"
-msgstr "Tøm bibliotek"
+msgctxt "Content/Artist/Card"
+msgid "1 track"
+msgid_plural "%{ count } tracks"
+msgstr[0] "Legg til spor"
+msgstr[1] "Legg til spor"
+
+#: front/src/views/Notifications.vue:21 src/views/Notifications.vue:55
+msgctxt "*/*/*"
+msgid "30 days"
+msgstr ""
+
+#: front/src/views/Notifications.vue:22 src/views/Notifications.vue:56
+msgctxt "*/*/*"
+msgid "60 days"
+msgstr ""
+
+#: front/src/views/Notifications.vue:23 src/views/Notifications.vue:57
+msgctxt "*/*/*"
+msgid "90 days"
+msgstr ""
 
 #: front/src/components/library/FileUpload.vue:264
+#, fuzzy
 msgctxt "Content/Library/Help text"
-msgid "A network error occured while uploading this file"
+msgid "A network error occurred while uploading this file"
 msgstr "Kunne ikke laste opp denne filen som følge av nettverksfeil"
 
-#: front/src/components/library/EditForm.vue:145
+#: front/src/components/library/EditForm.vue:161
 #, fuzzy
 msgctxt "*/*/Placeholder"
 msgid "A short summary describing your changes."
 msgstr "Kunne ikke lagre endringer"
 
 #: front/src/components/About.vue:5
-msgctxt "Content/About/Title/Short, Noun"
-msgid "About %{ instance }"
+#, fuzzy
+msgctxt "Content/Home/Header"
+msgid "About %{ podName }"
 msgstr "Om %{ instance }"
 
 #: front/src/components/Footer.vue:6
@@ -166,7 +239,7 @@ msgctxt "Footer/About/Title"
 msgid "About %{instanceName}"
 msgstr "Om %{ instance }"
 
-#: front/src/components/Footer.vue:45
+#: front/src/components/Footer.vue:53 src/components/Home.vue:85
 msgctxt "Footer/*/Title/Short"
 msgid "About Funkwhale"
 msgstr "Om Funkwhale"
@@ -177,9 +250,16 @@ msgctxt "Footer/About/List item.Link"
 msgid "About page"
 msgstr "Albumside"
 
-#: front/src/components/About.vue:8 src/components/About.vue:67
-msgctxt "Content/About/Title"
-msgid "About this instance"
+#: front/src/components/Home.vue:19
+#, fuzzy
+msgctxt "Content/Home/Header"
+msgid "About this Funkwhale pod"
+msgstr "Om Funkwhale"
+
+#: front/src/components/About.vue:21 src/components/About.vue:51
+#, fuzzy
+msgctxt "Content/About/Header"
+msgid "About this pod"
 msgstr "Om denne instansen"
 
 #: front/src/views/content/libraries/Detail.vue:48
@@ -192,104 +272,93 @@ msgctxt "Content/Library/Table/Short"
 msgid "Accepted"
 msgstr "Godtatt"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:110
+#: front/src/components/auth/SubsonicTokenForm.vue:117
 msgctxt "Content/Settings/Message"
 msgid "Access disabled"
 msgstr "Tilgang avskrudd"
 
-#: front/src/components/mixins/Translations.vue:73
-#: front/src/components/mixins/Translations.vue:74
+#: front/src/components/mixins/Translations.vue:85
+#: front/src/components/mixins/Translations.vue:86
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to audio files, libraries, artists, albums and tracks"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:97
-#: front/src/components/mixins/Translations.vue:98
+#: front/src/components/mixins/Translations.vue:109
+#: front/src/components/mixins/Translations.vue:110
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to content filters"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:105
-#: front/src/components/mixins/Translations.vue:106
+#: front/src/components/mixins/Translations.vue:117
+#: front/src/components/mixins/Translations.vue:118
 #, fuzzy
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to edits"
 msgstr "Tilgang avskrudd"
 
-#: front/src/components/mixins/Translations.vue:69
-#: front/src/components/mixins/Translations.vue:70
+#: front/src/components/mixins/Translations.vue:81
+#: front/src/components/mixins/Translations.vue:82
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to email, username, and profile information"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:77
-#: front/src/components/mixins/Translations.vue:78
+#: front/src/components/mixins/Translations.vue:89
+#: front/src/components/mixins/Translations.vue:90
 #, fuzzy
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to favorites"
 msgstr "Legg til i favoritter"
 
-#: front/src/components/mixins/Translations.vue:85
-#: front/src/components/mixins/Translations.vue:86
+#: front/src/components/mixins/Translations.vue:97
+#: front/src/components/mixins/Translations.vue:98
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to follows"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:81
-#: front/src/components/mixins/Translations.vue:82
+#: front/src/components/mixins/Translations.vue:93
+#: front/src/components/mixins/Translations.vue:94
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to listening history"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:101
-#: front/src/components/mixins/Translations.vue:102
+#: front/src/components/mixins/Translations.vue:113
+#: front/src/components/mixins/Translations.vue:114
 #, fuzzy
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to notifications"
 msgstr "Dine merknader"
 
-#: front/src/components/mixins/Translations.vue:89
-#: front/src/components/mixins/Translations.vue:90
+#: front/src/components/mixins/Translations.vue:101
+#: front/src/components/mixins/Translations.vue:102
 #, fuzzy
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to playlists"
 msgstr "Legg til i spilleliste…"
 
-#: front/src/components/mixins/Translations.vue:93
-#: front/src/components/mixins/Translations.vue:94
+#: front/src/components/mixins/Translations.vue:105
+#: front/src/components/mixins/Translations.vue:106
 #, fuzzy
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to radios"
 msgstr "Tilgang avskrudd"
 
-#: front/src/components/Home.vue:101
-#, fuzzy
-msgctxt "Content/Home/List item"
-msgid ""
-"Access your music from a clean interface that focuses on what really matters"
-msgstr ""
-"Få tilgang til din musikk fra et rent grensesnitt som fokuserer på det som "
-"virkelig betyr noe"
-
 #: front/src/components/manage/library/UploadsTable.vue:67
-#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:55
 #: front/src/views/admin/library/UploadDetail.vue:175
-#: front/src/components/mixins/Translations.vue:46
+#: front/src/components/mixins/Translations.vue:56
 msgctxt "Content/*/*/Noun"
 msgid "Accessed date"
 msgstr "Tilgangsdato"
 
-#: front/src/views/admin/library/LibraryDetail.vue:104
-#: front/src/views/admin/library/UploadDetail.vue:111
-#, fuzzy
-msgctxt "*/*/*/Noun"
-msgid "Account"
-msgstr "Min konto"
-
 #: front/src/components/manage/library/LibrariesTable.vue:49
 #: front/src/components/manage/library/UploadsTable.vue:61
+#: front/src/components/manage/moderation/ReportCard.vue:156
+#: front/src/components/mixins/Report.vue:13
+#: front/src/views/admin/library/LibraryDetail.vue:113
+#: front/src/views/admin/library/UploadDetail.vue:111
+#: front/src/components/mixins/Report.vue:14
 #, fuzzy
-msgctxt "*/*/*"
+msgctxt "*/*/*/Noun"
 msgid "Account"
 msgstr "Min konto"
 
@@ -304,7 +373,7 @@ msgctxt "Content/Settings/Title"
 msgid "Account settings"
 msgstr "Kontoinnstillinger"
 
-#: front/src/components/auth/Settings.vue:479
+#: front/src/components/auth/Settings.vue:544
 msgctxt "Head/Settings/Title"
 msgid "Account Settings"
 msgstr "Kontoinnstillinger"
@@ -321,7 +390,7 @@ msgstr "Kontoens e-post"
 
 #: front/src/views/admin/moderation/AccountsList.vue:3
 #: front/src/views/admin/moderation/AccountsList.vue:24
-#: front/src/views/admin/moderation/Base.vue:8
+#: front/src/views/admin/moderation/Base.vue:11
 #, fuzzy
 msgctxt "*/Moderation/Title"
 msgid "Accounts"
@@ -336,29 +405,30 @@ msgstr "Handling"
 #, fuzzy
 msgctxt "Content/*/Paragraph"
 msgid "Action %{ action } was launched successfully on %{ count } element"
-msgid_plural ""
-"Action %{ action } was launched successfully on %{ count } elements"
+msgid_plural "Action %{ action } was launched successfully on %{ count } elements"
 msgstr[0] "Handlingen %{ action } ble kjørt på %{ count } element"
 msgstr[1] "Handlingen %{ action } ble kjørt på %{ count } elementer"
 
 #: front/src/components/common/ActionTable.vue:22
 #: front/src/components/library/radios/Builder.vue:65
+#: front/src/components/manage/moderation/ReportCard.vue:210
 msgctxt "Content/*/*/Noun"
 msgid "Actions"
 msgstr "Handlinger"
 
-#: front/src/components/manage/users/UsersTable.vue:53
+#: front/src/components/manage/users/UsersTable.vue:54
 msgctxt "Content/Admin/Table"
 msgid "Active"
 msgstr "Aktiv"
 
-#: front/src/views/admin/library/AlbumDetail.vue:134
-#: front/src/views/admin/library/ArtistDetail.vue:123
-#: front/src/views/admin/library/LibraryDetail.vue:138
-#: front/src/views/admin/library/TrackDetail.vue:186
+#: front/src/views/admin/library/AlbumDetail.vue:140
+#: front/src/views/admin/library/ArtistDetail.vue:128
+#: front/src/views/admin/library/LibraryDetail.vue:147
+#: front/src/views/admin/library/TagDetail.vue:83
+#: front/src/views/admin/library/TrackDetail.vue:192
 #: front/src/views/admin/library/UploadDetail.vue:160
-#: front/src/views/admin/moderation/AccountsDetail.vue:220
-#: front/src/views/admin/moderation/DomainsDetail.vue:136
+#: front/src/views/admin/moderation/AccountsDetail.vue:221
+#: front/src/views/admin/moderation/DomainsDetail.vue:173
 msgctxt "Content/Moderation/Title"
 msgid "Activity"
 msgstr "Aktivitet"
@@ -369,7 +439,7 @@ msgctxt "Content/Settings/Dropdown.Label/Noun"
 msgid "Activity visibility"
 msgstr "Aktivitetssynlighet"
 
-#: front/src/views/admin/moderation/DomainsList.vue:18
+#: front/src/views/admin/moderation/DomainsList.vue:22
 msgctxt "Content/Moderation/Button/Verb"
 msgid "Add"
 msgstr ""
@@ -415,7 +485,21 @@ msgctxt "Content/Radio/Paragraph"
 msgid "Add filters to customize your radio"
 msgstr "Legg til filter for å tilpasse din radiostasjon"
 
-#: front/src/components/audio/PlayButton.vue:75
+#: front/src/components/manage/moderation/NoteForm.vue:12
+#, fuzzy
+msgctxt "Content/Moderation/Button.Label/Verb"
+msgid "Add note"
+msgstr "Legg til innhold"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:191
+#: front/src/views/admin/moderation/DomainsDetail.vue:46
+#: front/src/views/admin/moderation/DomainsList.vue:18
+#, fuzzy
+msgctxt "Content/Moderation/Action/Verb"
+msgid "Add to allow-list"
+msgstr "Legg til i spilleliste…"
+
+#: front/src/components/audio/PlayButton.vue:91
 #, fuzzy
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Add to current queue"
@@ -449,7 +533,7 @@ msgctxt "Popup/Playlist/Table.Button.Label/Verb"
 msgid "Add track"
 msgstr "Legg til spor"
 
-#: front/src/components/manage/users/UsersTable.vue:69
+#: front/src/components/manage/users/UsersTable.vue:70
 msgctxt "Content/Admin/Table.User role"
 msgid "Admin"
 msgstr "Administrator"
@@ -459,51 +543,51 @@ msgctxt "Sidebar/Admin/Title/Noun"
 msgid "Administration"
 msgstr "Administrasjon"
 
-#: front/src/views/admin/library/TrackDetail.vue:107
-msgctxt "*/*/*/Noun"
-msgid "Album"
-msgstr "Album"
-
-#: front/src/components/audio/SearchBar.vue:26
+#: front/src/components/audio/SearchBar.vue:33
 #: src/components/audio/track/Table.vue:9
-#: front/src/components/library/AlbumBase.vue:152
-#: front/src/components/library/ArtistBase.vue:194
+#: front/src/components/library/AlbumBase.vue:170
+#: front/src/components/library/ArtistBase.vue:212
 #: front/src/components/manage/library/TracksTable.vue:40
 #: front/src/components/metadata/Search.vue:134
+#: src/components/mixins/Report.vue:41
+#: front/src/views/admin/library/TrackDetail.vue:113
 #: front/src/views/content/libraries/FilesTable.vue:57
+#: front/src/components/mixins/Report.vue:42
 msgctxt "*/*/*"
 msgid "Album"
 msgstr "Album"
 
-#: front/src/views/admin/library/TrackDetail.vue:128
+#: front/src/views/admin/library/TrackDetail.vue:134
 #, fuzzy
 msgctxt "*/*/*/Noun"
 msgid "Album artist"
 msgstr "Album fra denne artisten"
 
-#: front/src/views/admin/library/AlbumDetail.vue:92
+#: front/src/views/admin/library/AlbumDetail.vue:98
 #, fuzzy
 msgctxt "Content/Moderation/Title"
 msgid "Album data"
 msgstr "Albumside"
 
-#: front/src/components/mixins/Translations.vue:51
-#: front/src/components/mixins/Translations.vue:52
+#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/mixins/Translations.vue:62
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Album name"
 msgstr "Albumnavn"
 
 #: front/src/components/audio/Search.vue:19
-#: src/components/instance/Stats.vue:48
-#: front/src/components/library/Albums.vue:120
-#: src/components/library/Library.vue:7
+#: src/components/library/Albums.vue:129
+#: front/src/components/library/Library.vue:7
+#: src/components/library/TagDetail.vue:28
 #: front/src/components/manage/library/ArtistsTable.vue:41
+#: front/src/components/manage/library/TagsTable.vue:43
 #: front/src/views/admin/library/AlbumsList.vue:24
-#: front/src/views/admin/library/ArtistDetail.vue:241
+#: front/src/views/admin/library/ArtistDetail.vue:256
 #: front/src/views/admin/library/Base.vue:11
-#: front/src/views/admin/library/LibraryDetail.vue:219
-#: front/src/views/admin/moderation/AccountsDetail.vue:354
-#: front/src/views/admin/moderation/DomainsDetail.vue:264
+#: front/src/views/admin/library/LibraryDetail.vue:238
+#: front/src/views/admin/library/TagDetail.vue:133
+#: front/src/views/admin/moderation/AccountsDetail.vue:366
+#: front/src/views/admin/moderation/DomainsDetail.vue:301
 msgctxt "*/*/*"
 msgid "Albums"
 msgstr "Album"
@@ -517,7 +601,10 @@ msgstr "Album fra denne artisten"
 #: front/src/components/manage/library/LibrariesTable.vue:13
 #: front/src/components/manage/library/UploadsTable.vue:13
 #: front/src/components/manage/library/UploadsTable.vue:22
+#: front/src/components/manage/moderation/DomainsTable.vue:11
 #: front/src/components/manage/users/InvitationsTable.vue:19
+#: front/src/components/moderation/ReportCategoryDropdown.vue:32
+#: front/src/views/admin/moderation/ReportsList.vue:17
 #: front/src/views/content/libraries/FilesTable.vue:13
 msgctxt "Content/*/Dropdown"
 msgid "All"
@@ -536,40 +623,52 @@ msgctxt "Head/Authorize/Title"
 msgid "Allow application"
 msgstr ""
 
+#: front/src/components/About.vue:136
+msgctxt "*/*/*"
+msgid "Allow-list"
+msgstr ""
+
+#: front/src/components/About.vue:149
+msgctxt "*/*/*"
+msgid "Allowed domains"
+msgstr ""
+
 #: front/src/components/library/ImportStatusModal.vue:17
 msgctxt "Popup/Import/Message"
-msgid ""
-"An error occured during upload processing. You will find more information "
-"below."
+msgid "An error occurred during upload processing. You will find more information below."
 msgstr ""
 
 #: front/src/components/playlists/Editor.vue:13
+#, fuzzy
 msgctxt "Content/Playlist/Error message.Title"
-msgid "An error occured while saving your changes"
+msgid "An error occurred while saving your changes"
 msgstr "Kunne ikke lagre endringer"
 
 #: front/src/components/federation/FetchButton.vue:21
 #, fuzzy
 msgctxt "Popup/*/Message.Content"
-msgid "An error occured while trying to refresh data:"
+msgid "An error occurred while trying to refresh data:"
 msgstr "Kunne ikke lagre endringer"
 
 #: front/src/components/federation/FetchButton.vue:41
 #, fuzzy
 msgctxt "*/*/Error"
-msgid "An HTTP error occured while contacting the remote server"
+msgid "An HTTP error occurred while contacting the remote server"
 msgstr "Kunne ikke lagre endringer"
 
-#: front/src/components/auth/Login.vue:10
-msgctxt "Content/Login/Error message/List item"
-msgid ""
-"An unknown error happend, this can mean the server is down or cannot be "
-"reached"
-msgstr "Ukjent feil, tjeneren er nede eller kunne ikke nås"
-
 #: front/src/components/library/ImportStatusModal.vue:145
 msgctxt "Popup/Import/Error.Label"
-msgid "An unkwown error occured"
+msgid "An unknown error occurred"
+msgstr ""
+
+#: front/src/components/About.vue:123
+msgctxt "*/*/*"
+msgid "Anonymous access"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:54
+msgctxt "Popup/Moderation/Error message"
+msgid "Anonymous reports are disabled, please sign-in to submit a report."
 msgstr ""
 
 #: front/src/components/auth/Settings.vue:175
@@ -592,9 +691,7 @@ msgstr "Handling"
 
 #: front/src/components/auth/ApplicationEdit.vue:16
 msgctxt "Content/Application/Paragraph/"
-msgid ""
-"Application ID and secret are really sensitive values and must be treated "
-"like passwords. Do not share those with anyone else."
+msgid "Application ID and secret are really sensitive values and must be treated like passwords. Do not share those with anyone else."
 msgstr ""
 
 #: front/src/components/auth/ApplicationEdit.vue:25
@@ -624,30 +721,28 @@ msgctxt "Content/Login/Title"
 msgid "Are you sure you want to log out?"
 msgstr "Er du sikker på at du vil logge ut?"
 
+#: front/src/components/audio/SearchBar.vue:32
+#: src/components/audio/track/Table.vue:8
 #: front/src/components/manage/library/AlbumsTable.vue:40
 #: front/src/components/manage/library/TracksTable.vue:41
-msgctxt "*/*/*"
-msgid "Artist"
-msgstr "Artist"
-
-#: front/src/components/audio/SearchBar.vue:25
-#: src/components/audio/track/Table.vue:8
 #: front/src/components/metadata/Search.vue:130
-#: front/src/views/admin/library/AlbumDetail.vue:108
-#: front/src/views/admin/library/TrackDetail.vue:118
-#: front/src/views/content/libraries/FilesTable.vue:56
+#: src/components/mixins/Report.vue:55
+#: front/src/views/admin/library/AlbumDetail.vue:114
+#: front/src/views/admin/library/TrackDetail.vue:124
+#: front/src/views/content/libraries/FilesTable.vue:56 src/entities.js:12
+#: front/src/components/mixins/Report.vue:56
 msgctxt "*/*/*/Noun"
 msgid "Artist"
 msgstr "Artist"
 
-#: front/src/views/admin/library/ArtistDetail.vue:91
+#: front/src/views/admin/library/ArtistDetail.vue:96
 #, fuzzy
 msgctxt "Content/Moderation/Title"
 msgid "Artist data"
 msgstr "Artistnavn"
 
-#: front/src/components/mixins/Translations.vue:52
-#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/mixins/Translations.vue:62
+#: front/src/components/mixins/Translations.vue:63
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Artist name"
 msgstr "Artistnavn"
@@ -658,36 +753,36 @@ msgctxt "*/Search/Input.Placeholder"
 msgid "Artist, album, track…"
 msgstr "Artist, album, spor…"
 
+#: front/src/components/audio/Search.vue:10
+#: src/components/library/Artists.vue:117
+#: front/src/components/library/Library.vue:10
+#: front/src/components/library/TagDetail.vue:19
+#: front/src/components/manage/library/TagsTable.vue:42
 #: front/src/views/admin/library/ArtistsList.vue:24
 #: front/src/views/admin/library/Base.vue:8
-#: front/src/views/admin/library/LibraryDetail.vue:209
-msgctxt "*/*/*"
-msgid "Artists"
-msgstr "Artister"
-
-#: front/src/components/audio/Search.vue:10
-#: src/components/instance/Stats.vue:42
-#: front/src/components/library/Artists.vue:117
-#: src/components/library/Library.vue:10
-#: front/src/views/admin/moderation/AccountsDetail.vue:346
-#: front/src/views/admin/moderation/DomainsDetail.vue:254
+#: front/src/views/admin/library/LibraryDetail.vue:228
+#: front/src/views/admin/library/TagDetail.vue:123
+#: front/src/views/admin/moderation/AccountsDetail.vue:358
+#: front/src/views/admin/moderation/DomainsDetail.vue:291
 msgctxt "*/*/*/Noun"
 msgid "Artists"
 msgstr "Artister"
 
 #: front/src/components/favorites/List.vue:34
-#: src/components/library/Albums.vue:25
-#: front/src/components/library/Artists.vue:25
+#: src/components/library/Albums.vue:29
+#: front/src/components/library/Artists.vue:29
 #: src/components/library/Radios.vue:44
 #: front/src/components/manage/library/AlbumsTable.vue:21
 #: front/src/components/manage/library/ArtistsTable.vue:21
 #: front/src/components/manage/library/EditsCardList.vue:39
 #: front/src/components/manage/library/LibrariesTable.vue:30
+#: front/src/components/manage/library/TagsTable.vue:21
 #: front/src/components/manage/library/TracksTable.vue:21
 #: front/src/components/manage/library/UploadsTable.vue:40
 #: front/src/components/manage/moderation/AccountsTable.vue:21
-#: front/src/components/manage/moderation/DomainsTable.vue:19
+#: front/src/components/manage/moderation/DomainsTable.vue:27
 #: front/src/components/manage/users/UsersTable.vue:19
+#: front/src/views/admin/moderation/ReportsList.vue:44
 #: front/src/views/content/libraries/FilesTable.vue:31
 #: front/src/views/playlists/List.vue:27
 msgctxt "Content/Search/Dropdown"
@@ -699,19 +794,25 @@ msgctxt "Content/Signup/Button.Label/Verb"
 msgid "Ask for a password reset"
 msgstr "Spør om tilbakestilling av passord"
 
-#: front/src/views/admin/library/AlbumDetail.vue:198
-#: front/src/views/admin/library/ArtistDetail.vue:187
-#: front/src/views/admin/library/LibraryDetail.vue:176
-#: front/src/views/admin/library/TrackDetail.vue:250
+#: front/src/components/manage/moderation/ReportCard.vue:72
+msgctxt "Content/Moderation/*"
+msgid "Assigned to"
+msgstr ""
+
+#: front/src/views/admin/library/AlbumDetail.vue:214
+#: front/src/views/admin/library/ArtistDetail.vue:202
+#: front/src/views/admin/library/LibraryDetail.vue:195
+#: front/src/views/admin/library/TagDetail.vue:113
+#: front/src/views/admin/library/TrackDetail.vue:266
 #: front/src/views/admin/library/UploadDetail.vue:191
-#: front/src/views/admin/moderation/AccountsDetail.vue:274
-#: front/src/views/admin/moderation/DomainsDetail.vue:202
+#: front/src/views/admin/moderation/AccountsDetail.vue:285
+#: front/src/views/admin/moderation/DomainsDetail.vue:239
 #, fuzzy
 msgctxt "Content/Moderation/Title"
 msgid "Audio content"
 msgstr "Legg til innhold"
 
-#: front/src/components/ShortcutsModal.vue:55
+#: front/src/components/ShortcutsModal.vue:92
 msgctxt "Popup/Keyboard shortcuts/Title"
 msgid "Audio player shortcuts"
 msgstr ""
@@ -755,9 +856,9 @@ msgid "Back to settings"
 msgstr "Oppdater innstillinger"
 
 #: front/src/components/library/TrackDetail.vue:48
-#: front/src/components/mixins/Translations.vue:55
+#: front/src/components/mixins/Translations.vue:67
 #: front/src/views/admin/library/UploadDetail.vue:227
-#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:68
 msgctxt "Content/Track/*/Noun"
 msgid "Bitrate"
 msgstr "Bitrate"
@@ -770,10 +871,7 @@ msgstr ""
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:112
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Block everything from this account or domain. This will prevent any "
-"interaction with the entity, and purge related content (uploads, libraries, "
-"follows, etc.)"
+msgid "Block everything from this account or domain. This will prevent any interaction with the entity, and purge related content (uploads, libraries, follows, etc.)"
 msgstr ""
 
 #: front/src/components/Sidebar.vue:18 src/components/library/Library.vue:4
@@ -786,6 +884,11 @@ msgctxt "Sidebar/Library/List item.Link/Verb"
 msgid "Browse library"
 msgstr "Utforsk bibliotek"
 
+#: front/src/components/Home.vue:132
+msgctxt "Content/Home/Link"
+msgid "Browse public content"
+msgstr ""
+
 #: front/src/components/library/Albums.vue:4
 #, fuzzy
 msgctxt "Content/Album/Title"
@@ -817,40 +920,41 @@ msgctxt "Content/Album/Card"
 msgid "By %{ artist }"
 msgstr "Av %{ artist }"
 
-#: front/src/views/content/remote/Card.vue:112
+#: front/src/views/content/remote/Card.vue:125
 #, fuzzy
 msgctxt "Popup/Library/Paragraph"
 msgid "By unfollowing this library, you loose access to its content."
-msgstr ""
-"Ved å slutte å følge dette biblioteket, mister du tilgang til dets innhold."
+msgstr "Ved å slutte å følge dette biblioteket, mister du tilgang til dets innhold."
 
-#: front/src/views/admin/library/AlbumDetail.vue:214
-#: front/src/views/admin/library/ArtistDetail.vue:203
-#: front/src/views/admin/library/LibraryDetail.vue:192
-#: front/src/views/admin/library/TrackDetail.vue:266
+#: front/src/views/admin/library/AlbumDetail.vue:230
+#: front/src/views/admin/library/ArtistDetail.vue:218
+#: front/src/views/admin/library/LibraryDetail.vue:211
+#: front/src/views/admin/library/TrackDetail.vue:282
 #: front/src/views/admin/library/UploadDetail.vue:208
-#: front/src/views/admin/moderation/AccountsDetail.vue:290
-#: front/src/views/admin/moderation/DomainsDetail.vue:217
+#: front/src/views/admin/moderation/AccountsDetail.vue:301
+#: front/src/views/admin/moderation/DomainsDetail.vue:254
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Cached size"
 msgstr ""
 
 #: front/src/components/SetInstanceModal.vue:37
 #: front/src/components/common/DangerousButton.vue:17
-#: front/src/components/library/AlbumBase.vue:36
-#: front/src/components/library/ArtistBase.vue:47
-#: front/src/components/library/EditForm.vue:95
-#: front/src/components/library/TrackBase.vue:55
+#: front/src/components/library/AlbumBase.vue:37
+#: front/src/components/library/ArtistBase.vue:48
+#: front/src/components/library/EditForm.vue:107
+#: front/src/components/library/TrackBase.vue:53
 #: front/src/components/library/radios/Filter.vue:53
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:54
 #: front/src/components/moderation/FilterModal.vue:39
+#: front/src/components/moderation/ReportModal.vue:59
 #: front/src/components/playlists/PlaylistModal.vue:26
 #: front/src/components/playlists/PlaylistModal.vue:77
+#: front/src/views/playlists/Detail.vue:62
 msgctxt "*/*/Button.Label/Verb"
 msgid "Cancel"
 msgstr "Avbryt"
 
-#: front/src/views/content/remote/Card.vue:97
+#: front/src/views/content/remote/Card.vue:110
 #, fuzzy
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Cancel follow request"
@@ -867,6 +971,14 @@ msgctxt "Content/Library/Help text"
 msgid "Cannot upload this file, ensure it is not too big"
 msgstr "Kunne ikke laste opp denne filen, sjekk at den ikke er for stor"
 
+#: front/src/components/manage/moderation/ReportCard.vue:30
+#: front/src/components/mixins/Translations.vue:42
+#: front/src/components/moderation/ReportCategoryDropdown.vue:2
+#: front/src/components/mixins/Translations.vue:43
+msgctxt "*/*/*"
+msgid "Category"
+msgstr ""
+
 #: front/src/components/Footer.vue:21
 msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
 msgid "Change language"
@@ -882,6 +994,11 @@ msgctxt "Content/Settings/Button.Label"
 msgid "Change password"
 msgstr "Endre passord"
 
+#: front/src/components/Footer.vue:37
+msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
+msgid "Change theme"
+msgstr ""
+
 #: front/src/views/auth/PasswordResetConfirm.vue:62
 msgctxt "*/Signup/Title"
 msgid "Change your password"
@@ -899,12 +1016,8 @@ msgstr "Endringer synkronisert med tjener"
 
 #: front/src/components/auth/Settings.vue:71
 msgctxt "Content/Settings/Paragraph'"
-msgid ""
-"Changing your password will also change your Subsonic API password if you "
-"have requested one."
-msgstr ""
-"Endring av ditt passord endrer også ditt Subsonic API-passord, hvis du har "
-"skaffet deg det."
+msgid "Changing your password will also change your Subsonic API password if you have requested one."
+msgstr "Endring av ditt passord endrer også ditt Subsonic API-passord, hvis du har skaffet deg det."
 
 #: front/src/components/auth/Settings.vue:98
 #, fuzzy
@@ -912,16 +1025,14 @@ msgctxt "Popup/Settings/Paragraph"
 msgid "Changing your password will have the following consequences:"
 msgstr "Endring av passord har følgende konsekvenser:"
 
-#: front/src/components/Footer.vue:40
+#: front/src/components/Footer.vue:48
 msgctxt "Footer/*/List item.Link"
 msgid "Chat room"
 msgstr ""
 
 #: front/src/components/auth/ApplicationForm.vue:24
 msgctxt "Content/Applications/Paragraph/"
-msgid ""
-"Checking the parent \"Read\" or \"Write\" scopes implies access to all the "
-"corresponding children scopes."
+msgid "Checking the parent \"Read\" or \"Write\" scopes implies access to all the corresponding children scopes."
 msgstr ""
 
 #: front/src/components/SetInstanceModal.vue:2
@@ -929,12 +1040,9 @@ msgctxt "Popup/Instance/Title"
 msgid "Choose your instance"
 msgstr "Velg din instans"
 
-#: front/src/components/manage/users/InvitationForm.vue:37
-msgctxt "Content/Admin/Button.Label/Verb"
-msgid "Clear"
-msgstr "Tøm"
-
 #: front/src/components/library/EditForm.vue:75
+#: front/src/components/library/EditForm.vue:88
+#: front/src/components/manage/users/InvitationForm.vue:37
 msgctxt "Content/Library/Button.Label"
 msgid "Clear"
 msgstr "Tøm"
@@ -945,45 +1053,46 @@ msgctxt "*/Playlist/Button.Label/Verb"
 msgid "Clear playlist"
 msgstr "Tøm spilleliste"
 
-#: front/src/components/audio/Player.vue:642
+#: front/src/components/ShortcutsModal.vue:144
+#, fuzzy
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Clear queue"
+msgstr "Tøm spillekøen"
+
+#: front/src/components/audio/Player.vue:668
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Clear your queue"
 msgstr "Tøm spillekøen"
 
-#: front/src/components/Home.vue:44
-msgctxt "Content/Home/List item/Verb"
-msgid "Click once, listen for hours using built-in radios"
-msgstr "Klikk én gang, lytt i timevis ved bruk av innebygde radiostasjoner"
-
 #: front/src/components/mixins/Translations.vue:21
 #: front/src/components/mixins/Translations.vue:22
 msgctxt "Content/Library/Link.Title"
-msgid ""
-"Click to display more information about the import process for this upload"
+msgid "Click to display more information about the import process for this upload"
 msgstr ""
 
 #: front/src/components/library/FileUpload.vue:82
 msgctxt "Content/Library/Paragraph/Call to action"
 msgid "Click to select files to upload or drag and drop files or directories"
-msgstr ""
-"Klikk for å velge filer å laste opp, eller dra og slipp filer eller mapper"
+msgstr "Klikk for å velge filer å laste opp, eller dra og slipp filer eller mapper"
 
+#: front/src/components/ShortcutsModal.vue:38
 #: front/src/components/federation/FetchButton.vue:85
 #: front/src/components/library/ImportStatusModal.vue:79
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:34
 msgctxt "*/*/Button.Label/Verb"
 msgid "Close"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:20
-msgctxt "Popup/Keyboard shortcuts/Button.Label/Verb"
-msgid "Close"
-msgstr ""
-
 #: front/src/components/federation/FetchButton.vue:88
 msgctxt "*/*/Button.Label/Verb"
 msgid "Close and reload page"
 msgstr ""
 
+#: front/src/components/About.vue:94
+msgctxt "*/*/*/State of registrations"
+msgid "Closed"
+msgstr ""
+
 #: front/src/components/manage/users/InvitationForm.vue:26
 #: front/src/components/manage/users/InvitationsTable.vue:42
 msgctxt "Content/Admin/Table.Label/Noun"
@@ -991,8 +1100,9 @@ msgid "Code"
 msgstr "Kode"
 
 #: front/src/components/audio/album/Card.vue:41
-#: front/src/components/audio/artist/Card.vue:33
-msgctxt "Content/*/Card.Link/Verb"
+#: front/src/components/common/CollapseLink.vue:3
+#, fuzzy
+msgctxt "*/*/Button,Label"
 msgid "Collapse"
 msgstr "Fold sammen"
 
@@ -1017,20 +1127,20 @@ msgctxt "Content/Signup/Form.Label"
 msgid "Confirmation code"
 msgstr "Bekreftelseskode"
 
+#: front/src/components/About.vue:67 src/components/Home.vue:65
+msgctxt "Content/Home/Header/Name"
+msgid "Contact"
+msgstr ""
+
 #: front/src/components/moderation/FilterModal.vue:90
 #, fuzzy
 msgctxt "*/Moderation/Message"
 msgid "Content filter successfully added"
 msgstr "Importert"
 
-#: front/src/components/mixins/Translations.vue:96
-#: front/src/components/mixins/Translations.vue:97
-#, fuzzy
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Content filters"
-msgstr "Velg et filter"
-
 #: front/src/components/auth/Settings.vue:116
+#: front/src/components/mixins/Translations.vue:108
+#: front/src/components/mixins/Translations.vue:109
 #, fuzzy
 msgctxt "Content/Settings/Title/Noun"
 msgid "Content filters"
@@ -1038,8 +1148,7 @@ msgstr "Velg et filter"
 
 #: front/src/components/auth/Settings.vue:119
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"Content filters help you hide content you don't want to see on the service."
+msgid "Content filters help you hide content you don't want to see on the service."
 msgstr ""
 
 #: front/src/components/common/ActionTable.vue:8
@@ -1047,13 +1156,20 @@ msgctxt "Content/*/Button.Help text.Paragraph"
 msgid "Content have been updated, click refresh to see up-to-date content"
 msgstr ""
 
-#: front/src/components/Footer.vue:48
+#: front/src/components/About.vue:46
+#, fuzzy
+msgctxt "Content/About/Header"
+msgid "Contents"
+msgstr "Velg et filter"
+
+#: front/src/components/Footer.vue:56
 msgctxt "Footer/*/List item.Link"
 msgid "Contribute"
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:19
+#: front/src/components/audio/EmbedWizard.vue:29
 #: front/src/components/common/CopyInput.vue:8
+#: front/src/components/forms/PasswordInput.vue:43
 msgctxt "*/*/Button.Label/Short, Verb"
 msgid "Copy"
 msgstr "Kopier"
@@ -1069,15 +1185,15 @@ msgctxt "Content/Auth/Paragraph"
 msgid "Copy-paste the following code in the application:"
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:21
+#: front/src/components/audio/EmbedWizard.vue:31
 msgctxt "Popup/Embed/Paragraph"
 msgid "Copy/paste this code in your website HTML"
 msgstr ""
 
 #: front/src/components/library/TrackDetail.vue:10
-#: front/src/views/admin/library/TrackDetail.vue:153
+#: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:77
 #, fuzzy
-msgctxt "Content/Track/Table.Label/Noun"
+msgctxt "Content/Track/*/Noun"
 msgid "Copyright"
 msgstr "Kopier"
 
@@ -1093,32 +1209,22 @@ msgctxt "Content/Library/Error message.Title"
 msgid "Could not fetch remote library"
 msgstr "Klarte ikke å hente bibliotek annensteds hen"
 
-#: front/src/components/Home.vue:80
-msgctxt "Content/Home/List item"
-msgid "Covers, lyrics, our goal is to have them all ;)"
-msgstr "Omslag, sangtekster, vårt mål er å ha alle ;)"
-
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:58
 #, fuzzy
 msgctxt "Content/Moderation/Card.Button.Label/Verb"
 msgid "Create"
 msgstr "Opprett import"
 
-#: front/src/components/auth/Signup.vue:4
+#: front/src/views/auth/Signup.vue:4
 msgctxt "Content/Signup/Title"
 msgid "Create a funkwhale account"
 msgstr "Opprett en Funkwhale-konto"
 
-#: front/src/components/auth/Settings.vue:220
-#, fuzzy
-msgctxt "Content/Settings/Button.Label"
-msgid "Create a new application"
-msgstr "Opprett en ny spilleliste"
-
 #: front/src/components/auth/ApplicationNew.vue:8
 #: front/src/components/auth/ApplicationNew.vue:41
+#: front/src/components/auth/Settings.vue:220
 #, fuzzy
-msgctxt "Content/Applications/Title"
+msgctxt "Content/Settings/Button.Label"
 msgid "Create a new application"
 msgstr "Opprett en ny spilleliste"
 
@@ -1132,7 +1238,7 @@ msgctxt "Popup/Playlist/Title/Verb"
 msgid "Create a new playlist"
 msgstr "Opprett en ny spilleliste"
 
-#: front/src/components/Sidebar.vue:57 src/components/auth/Login.vue:17
+#: front/src/components/Sidebar.vue:57 src/components/auth/LoginForm.vue:15
 msgctxt "*/Signup/Link/Verb"
 msgid "Create an account"
 msgstr "Opprett en konto"
@@ -1148,7 +1254,7 @@ msgctxt "Content/Library/Button.Label/Verb"
 msgid "Create library"
 msgstr "Opprett bibliotek"
 
-#: front/src/components/auth/Signup.vue:53
+#: front/src/components/auth/SignupForm.vue:49
 msgctxt "Content/Signup/Button.Label"
 msgid "Create my account"
 msgstr "Lag konto"
@@ -1173,11 +1279,13 @@ msgstr "Opprett din egen radiostasjon"
 #: front/src/components/manage/library/AlbumsTable.vue:44
 #: front/src/components/manage/library/ArtistsTable.vue:43
 #: front/src/components/manage/library/LibrariesTable.vue:54
+#: front/src/components/manage/library/TagsTable.vue:45
 #: front/src/components/manage/library/TracksTable.vue:44
 #: front/src/components/manage/library/UploadsTable.vue:66
+#: front/src/components/manage/moderation/ReportCard.vue:43
 #: front/src/components/manage/users/InvitationsTable.vue:40
-#: front/src/components/mixins/Translations.vue:43
-#: front/src/components/mixins/Translations.vue:44
+#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/mixins/Translations.vue:54
 msgctxt "Content/*/*/Noun"
 msgid "Creation date"
 msgstr "Opprettelsesdato"
@@ -1187,6 +1295,12 @@ msgctxt "Content/Settings/Title/Noun"
 msgid "Current avatar"
 msgstr "Nåærende avatar"
 
+#: front/src/components/admin/SettingsGroup.vue:67
+#, fuzzy
+msgctxt "Content/Settings/Title/Noun"
+msgid "Current image"
+msgstr "Nåværende bruk"
+
 #: front/src/views/content/libraries/DetailArea.vue:4
 msgctxt "Content/Library/Title"
 msgid "Current library"
@@ -1202,6 +1316,11 @@ msgctxt "Content/Library/Title"
 msgid "Current usage"
 msgstr "Nåværende bruk"
 
+#: front/src/components/Footer.vue:94
+msgctxt "Footer/Settings/Dropdown.Label/Theme name"
+msgid "Dark"
+msgstr ""
+
 #: front/src/components/federation/FetchButton.vue:53
 msgctxt "*/*/Error"
 msgid "Data returned by the remote server had invalid or missing attributes"
@@ -1223,7 +1342,7 @@ msgctxt "Popup/Import/Table.Label/Noun"
 msgid "Debug information"
 msgstr "Sporinfo"
 
-#: front/src/components/ShortcutsModal.vue:75
+#: front/src/components/ShortcutsModal.vue:128
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Decrease volume"
 msgstr ""
@@ -1235,23 +1354,29 @@ msgstr ""
 #: front/src/components/manage/library/AlbumsTable.vue:188
 #: front/src/components/manage/library/ArtistsTable.vue:178
 #: front/src/components/manage/library/LibrariesTable.vue:205
+#: front/src/components/manage/library/TagsTable.vue:179
 #: front/src/components/manage/library/TracksTable.vue:188
 #: front/src/components/manage/library/UploadsTable.vue:255
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:61
+#: front/src/components/manage/moderation/NotesThread.vue:24
+#: front/src/components/manage/moderation/NotesThread.vue:29
+#: front/src/components/manage/moderation/ReportCard.vue:360
 #: front/src/components/manage/users/InvitationsTable.vue:167
-#: front/src/views/admin/library/AlbumDetail.vue:72
-#: front/src/views/admin/library/AlbumDetail.vue:77
-#: front/src/views/admin/library/ArtistDetail.vue:71
+#: front/src/views/admin/library/AlbumDetail.vue:78
+#: front/src/views/admin/library/AlbumDetail.vue:83
 #: front/src/views/admin/library/ArtistDetail.vue:76
+#: front/src/views/admin/library/ArtistDetail.vue:81
 #: front/src/views/admin/library/LibraryDetail.vue:58
 #: front/src/views/admin/library/LibraryDetail.vue:63
-#: front/src/views/admin/library/TrackDetail.vue:71
-#: front/src/views/admin/library/TrackDetail.vue:76
+#: front/src/views/admin/library/TagDetail.vue:41
+#: front/src/views/admin/library/TagDetail.vue:46
+#: front/src/views/admin/library/TrackDetail.vue:77
+#: front/src/views/admin/library/TrackDetail.vue:82
 #: front/src/views/admin/library/UploadDetail.vue:65
 #: front/src/views/admin/library/UploadDetail.vue:70
 #: front/src/views/content/libraries/FilesTable.vue:222
 #: front/src/views/content/libraries/Form.vue:29
-#: src/views/playlists/Detail.vue:34
+#: src/views/playlists/Detail.vue:42
 msgctxt "*/*/*/Verb"
 msgid "Delete"
 msgstr "Slett"
@@ -1278,7 +1403,20 @@ msgctxt "Popup/Moderation/Button.Label/Verb"
 msgid "Delete moderation rule"
 msgstr "Slett radiostasjon"
 
-#: front/src/views/playlists/Detail.vue:39
+#: front/src/components/auth/Settings.vue:274
+#: src/components/auth/Settings.vue:302
+#, fuzzy
+msgctxt "*/*/Button.Label"
+msgid "Delete my account"
+msgstr "Lag konto"
+
+#: front/src/components/auth/Settings.vue:297
+#, fuzzy
+msgctxt "*/*/Button.Label"
+msgid "Delete my account…"
+msgstr "Lag konto"
+
+#: front/src/views/playlists/Detail.vue:47
 msgctxt "Popup/Playlist/Button.Label/Verb"
 msgid "Delete playlist"
 msgstr "Slett spilleliste"
@@ -1288,14 +1426,24 @@ msgctxt "Popup/Radio/Button.Label/Verb"
 msgid "Delete radio"
 msgstr "Slett radiostasjon"
 
-#: front/src/views/admin/library/AlbumDetail.vue:73
-#: front/src/views/admin/library/TrackDetail.vue:72
+#: front/src/components/manage/moderation/ReportCard.vue:357
+msgctxt "Content/Moderation/Button/Verb"
+msgid "Delete reported object"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:358
+msgctxt "Content/Moderation/Popup/Header"
+msgid "Delete reported object?"
+msgstr ""
+
+#: front/src/views/admin/library/AlbumDetail.vue:79
+#: front/src/views/admin/library/TrackDetail.vue:78
 #, fuzzy
 msgctxt "Popup/Library/Title"
 msgid "Delete this album?"
 msgstr "Slett dette biblioteket?"
 
-#: front/src/views/admin/library/ArtistDetail.vue:72
+#: front/src/views/admin/library/ArtistDetail.vue:77
 #, fuzzy
 msgctxt "Popup/Library/Title"
 msgid "Delete this artist?"
@@ -1313,12 +1461,24 @@ msgctxt "Popup/Moderation/Title"
 msgid "Delete this moderation rule?"
 msgstr "Slett dette biblioteket?"
 
+#: front/src/components/manage/moderation/NotesThread.vue:25
+#, fuzzy
+msgctxt "Popup/Moderation/Title"
+msgid "Delete this note?"
+msgstr "Slett dette biblioteket?"
+
 #: front/src/components/library/EditCard.vue:94
 #, fuzzy
 msgctxt "Popup/Library/Title"
 msgid "Delete this suggestion?"
 msgstr "Slett dette biblioteket?"
 
+#: front/src/views/admin/library/TagDetail.vue:42
+#, fuzzy
+msgctxt "Popup/Library/Title"
+msgid "Delete this tag?"
+msgstr "Slett dette biblioteket?"
+
 #: front/src/views/admin/library/UploadDetail.vue:66
 #, fuzzy
 msgctxt "Popup/Library/Title"
@@ -1326,49 +1486,48 @@ msgid "Delete this upload?"
 msgstr "Slett dette biblioteket?"
 
 #: front/src/components/favorites/List.vue:35
-#: src/components/library/Albums.vue:26
-#: front/src/components/library/Artists.vue:26
-#: src/components/library/Radios.vue:47
+#: src/components/library/Albums.vue:30
+#: front/src/components/library/Artists.vue:30
+#: src/components/library/Radios.vue:47
 #: front/src/components/manage/library/AlbumsTable.vue:22
 #: front/src/components/manage/library/ArtistsTable.vue:22
 #: front/src/components/manage/library/EditsCardList.vue:40
 #: front/src/components/manage/library/LibrariesTable.vue:31
+#: front/src/components/manage/library/TagsTable.vue:22
 #: front/src/components/manage/library/TracksTable.vue:22
 #: front/src/components/manage/library/UploadsTable.vue:41
 #: front/src/components/manage/moderation/AccountsTable.vue:22
-#: front/src/components/manage/moderation/DomainsTable.vue:20
+#: front/src/components/manage/moderation/DomainsTable.vue:28
 #: front/src/components/manage/users/UsersTable.vue:20
+#: front/src/views/admin/moderation/ReportsList.vue:45
 #: front/src/views/content/libraries/FilesTable.vue:32
 #: front/src/views/playlists/List.vue:28
 msgctxt "Content/Search/Dropdown"
 msgid "Descending"
 msgstr "Synkende"
 
-#: front/src/views/admin/library/LibraryDetail.vue:123
-msgctxt "*/*/*/Noun"
-msgid "Description"
-msgstr "Beskrivelse"
+#: front/src/components/manage/moderation/NoteForm.vue:37
+msgctxt "Content/Moderation/Placeholder"
+msgid "Describe what actions have been taken, or any other related updates…"
+msgstr ""
 
 #: front/src/components/library/radios/Builder.vue:25
+#: front/src/views/admin/library/LibraryDetail.vue:132
 #: front/src/views/content/libraries/Form.vue:14
-msgctxt "Content/*/Input.Label/Noun"
+msgctxt "*/*/*/Noun"
 msgid "Description"
 msgstr "Beskrivelse"
 
 #: front/src/views/content/libraries/Card.vue:48
-#: src/views/content/remote/Card.vue:54
+#: src/views/content/remote/Card.vue:67
 msgctxt "Content/Library/Card.Button.Label/Noun"
 msgid "Details"
 msgstr "Detaljer"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:491
+#: front/src/views/admin/moderation/AccountsDetail.vue:511
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Determine how much content the user can upload. Leave empty to use the "
-"default value of the instance."
-msgstr ""
-"Bestem hvor mye innhold brukeren kan late opp. La stå tomt for å bruke "
-"forvalgt verdi på instansen."
+msgid "Determine how much content the user can upload. Leave empty to use the default value of the instance."
+msgstr "Bestem hvor mye innhold brukeren kan late opp. La stå tomt for å bruke forvalgt verdi på instansen."
 
 #: front/src/components/mixins/Translations.vue:8
 #: front/src/components/mixins/Translations.vue:9
@@ -1377,39 +1536,51 @@ msgid "Determine the visibility level of your activity"
 msgstr "Bestem synlighetsnivået for din aktivitet"
 
 #: front/src/components/auth/Settings.vue:104
-#: front/src/components/auth/SubsonicTokenForm.vue:51
+#: front/src/components/auth/SubsonicTokenForm.vue:56
 msgctxt "Popup/Settings/Button.Label"
 msgid "Disable access"
 msgstr "Skru av tilgang"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:48
+#: front/src/components/auth/SubsonicTokenForm.vue:53
 msgctxt "Content/Settings/Button.Label/Verb"
 msgid "Disable Subsonic access"
 msgstr "Skru av Subsonic-tilgang"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:49
+#: front/src/components/auth/SubsonicTokenForm.vue:54
 msgctxt "Popup/Settings/Title"
 msgid "Disable Subsonic API access?"
 msgstr "Skru av Subsonic API-tilgang?"
 
+#: front/src/components/About.vue:118 src/components/About.vue:131
+#: front/src/components/About.vue:144
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:18
 #: front/src/views/admin/moderation/AccountsDetail.vue:157
 #: front/src/views/admin/moderation/AccountsDetail.vue:161
 #, fuzzy
-msgctxt "*/*/*"
+msgctxt "*/*/*/State of feature"
 msgid "Disabled"
 msgstr "Skru av tilgang"
 
-#: front/src/views/admin/library/TrackDetail.vue:145
+#: front/src/views/admin/library/TrackDetail.vue:151
 msgctxt "*/*/*/Noun"
 msgid "Disc number"
 msgstr ""
 
+#: front/src/components/Home.vue:157
+msgctxt "Content/Home/Link"
+msgid "Discover everything you need to know about Funkwhale and its features"
+msgstr ""
+
 #: front/src/components/auth/SubsonicTokenForm.vue:13
 msgctxt "Content/Settings/Link"
 msgid "Discover how to use Funkwhale from other apps"
 msgstr "Oppdag hvordan du bruker Funkwhale fra andre programmer"
 
+#: front/src/views/Notifications.vue:45
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Discover other ways to help"
+msgstr ""
+
 #: front/src/views/admin/moderation/AccountsDetail.vue:132
 #, fuzzy
 msgctxt "'Content/*/*/Noun'"
@@ -1423,11 +1594,15 @@ msgstr "Vis offentlig"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:122
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Do not download any media file (audio, album cover, account avatar…) from "
-"this account or domain. This will purge existing content as well."
+msgid "Do not download any media file (audio, album cover, account avatar…) from this account or domain. This will purge existing content as well."
 msgstr ""
 
+#: front/src/views/Notifications.vue:36
+#, fuzzy
+msgctxt "Content/Notifications/Header"
+msgid "Do you like Funkwhale?"
+msgstr "Om Funkwhale"
+
 #: front/src/components/playlists/Editor.vue:51
 msgctxt "Popup/Playlist/Title"
 msgid "Do you want to clear the playlist \"%{ playlist }\"?"
@@ -1438,7 +1613,7 @@ msgctxt "Modal/*/Title"
 msgid "Do you want to confirm this action?"
 msgstr "Ønsker du å bekrefte denne handlingen?"
 
-#: front/src/views/playlists/Detail.vue:35
+#: front/src/views/playlists/Detail.vue:43
 msgctxt "Popup/Playlist/Title/Call to action"
 msgid "Do you want to delete the playlist \"%{ playlist }\"?"
 msgstr "Ønsker du å slette spillelisten \"%{ playlist }\"?"
@@ -1448,6 +1623,12 @@ msgctxt "Popup/Radio/Title"
 msgid "Do you want to delete the radio \"%{ radio }\"?"
 msgstr "Ønsker du å slette radiostasjonen \"%{ radio }\"?"
 
+#: front/src/components/auth/Settings.vue:298
+#, fuzzy
+msgctxt "Popup/Settings/Title"
+msgid "Do you want to delete your account?"
+msgstr "Ønsker du å gjenopprette din tidligere spillekø?"
+
 #: front/src/components/moderation/FilterModal.vue:3
 #, fuzzy
 msgctxt "Popup/Moderation/Title/Verb"
@@ -1462,7 +1643,13 @@ msgid_plural "Do you want to launch %{ action } on %{ count } elements?"
 msgstr[0] "Ønsker du å utføre %{ action } på %{ count } element?"
 msgstr[1] "Ønsker du å utføre %{ action } på %{ count } elementer?"
 
-#: front/src/components/Sidebar.vue:118
+#: front/src/components/moderation/ReportModal.vue:3
+#, fuzzy
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Do you want to report this object?"
+msgstr "Ønsker du å bekrefte denne handlingen?"
+
+#: front/src/components/Sidebar.vue:122
 msgctxt "Sidebar/Queue/Message"
 msgid "Do you want to restore your previous queue?"
 msgstr "Ønsker du å gjenopprette din tidligere spillekø?"
@@ -1478,26 +1665,33 @@ msgstr "Dokumentasjon"
 #: front/src/components/manage/library/TracksTable.vue:42
 #: front/src/components/manage/library/UploadsTable.vue:62
 #: front/src/components/manage/moderation/AccountsTable.vue:40
-#: front/src/components/mixins/Translations.vue:60
-#: front/src/views/admin/library/AlbumDetail.vue:118
-#: front/src/views/admin/library/ArtistDetail.vue:107
-#: front/src/views/admin/library/LibraryDetail.vue:114
-#: front/src/views/admin/library/TrackDetail.vue:170
+#: front/src/components/manage/moderation/ReportCard.vue:169
+#: front/src/components/manage/moderation/ReportCard.vue:179
+#: front/src/components/mixins/Translations.vue:72
+#: front/src/views/admin/library/AlbumDetail.vue:124
+#: front/src/views/admin/library/ArtistDetail.vue:112
+#: front/src/views/admin/library/LibraryDetail.vue:123
+#: front/src/views/admin/library/TrackDetail.vue:176
 #: front/src/views/admin/library/UploadDetail.vue:121
 #: front/src/views/admin/moderation/AccountsDetail.vue:123
-#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/mixins/Translations.vue:73
 msgctxt "Content/Moderation/*/Noun"
 msgid "Domain"
 msgstr ""
 
-#: front/src/views/admin/moderation/Base.vue:5
+#: front/src/views/admin/moderation/Base.vue:8
 #: front/src/views/admin/moderation/DomainsList.vue:3
-#: front/src/views/admin/moderation/DomainsList.vue:48
+#: front/src/views/admin/moderation/DomainsList.vue:54
 msgctxt "*/Moderation/*/Noun"
 msgid "Domains"
 msgstr ""
 
-#: front/src/components/library/TrackBase.vue:39
+#: front/src/views/Notifications.vue:42
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Donate"
+msgstr ""
+
+#: front/src/components/library/TrackBase.vue:37
 #: front/src/views/admin/library/UploadDetail.vue:58
 msgctxt "Content/Track/Link/Verb"
 msgid "Download"
@@ -1510,10 +1704,10 @@ msgstr "Dra og slipp rader for å endre sporrekkefølge i spillelisten"
 
 #: front/src/components/audio/track/Table.vue:10
 #: front/src/components/library/TrackDetail.vue:30
-#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:68
 #: front/src/views/admin/library/UploadDetail.vue:238
 #: front/src/views/content/libraries/FilesTable.vue:60
-#: front/src/components/mixins/Translations.vue:57
+#: front/src/components/mixins/Translations.vue:69
 msgctxt "Content/*/*"
 msgid "Duration"
 msgstr "Varighet"
@@ -1524,30 +1718,21 @@ msgctxt "Content/Signup/Message"
 msgid "E-mail address confirmed"
 msgstr "E-postadresse bekreftet"
 
-#: front/src/components/Home.vue:88
-msgctxt "Content/Home/Title"
-msgid "Easy to use"
-msgstr "Enkelt å bruke"
-
-#: front/src/components/library/AlbumBase.vue:68
-#: front/src/components/library/ArtistBase.vue:79
-#: front/src/components/library/TrackBase.vue:87
+#: front/src/components/auth/Settings.vue:246
+#: src/components/library/AlbumBase.vue:73
+#: front/src/components/library/ArtistBase.vue:84
+#: front/src/components/library/TrackBase.vue:89
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:45
 #: front/src/components/radios/Card.vue:23
-#: src/views/admin/library/AlbumDetail.vue:65
-#: front/src/views/admin/library/ArtistDetail.vue:64
-#: front/src/views/admin/library/TrackDetail.vue:64
+#: src/views/admin/library/AlbumDetail.vue:71
+#: front/src/views/admin/library/ArtistDetail.vue:69
+#: front/src/views/admin/library/TrackDetail.vue:70
 #: front/src/views/content/libraries/Detail.vue:9
 #: src/views/playlists/Detail.vue:31
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Edit"
 msgstr "Rediger"
 
-#: front/src/components/auth/Settings.vue:246
-msgctxt "Content/Settings/Button.Label"
-msgid "Edit"
-msgstr "Rediger"
-
 #: front/src/components/auth/ApplicationEdit.vue:30
 #: front/src/components/auth/ApplicationEdit.vue:75
 #, fuzzy
@@ -1555,11 +1740,6 @@ msgctxt "Content/Applications/Title"
 msgid "Edit application"
 msgstr "Kunne ikke legge til handling"
 
-#: front/src/components/About.vue:22
-msgctxt "Content/Settings/Button.Label/Verb"
-msgid "Edit instance info"
-msgstr "Rediger instans-info"
-
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:3
 msgctxt "Content/Moderation/Card.Title/Verb"
 msgid "Edit moderation rule"
@@ -1582,25 +1762,21 @@ msgctxt "Content/*/Title"
 msgid "Edit this track"
 msgstr "Rediger instans-info"
 
-#: front/src/views/admin/library/AlbumDetail.vue:182
-#: front/src/views/admin/library/ArtistDetail.vue:171
+#: front/src/components/mixins/Translations.vue:116
+#: front/src/views/admin/library/AlbumDetail.vue:198
+#: front/src/views/admin/library/ArtistDetail.vue:186
 #: front/src/views/admin/library/Base.vue:5
 #: src/views/admin/library/EditsList.vue:24
-#: front/src/views/admin/library/TrackDetail.vue:234
+#: front/src/views/admin/library/TrackDetail.vue:250
+#: front/src/components/mixins/Translations.vue:117
 #, fuzzy
 msgctxt "*/Admin/*/Noun"
 msgid "Edits"
 msgstr "Rediger"
 
-#: front/src/components/mixins/Translations.vue:104
-#: front/src/components/mixins/Translations.vue:105
-#, fuzzy
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Edits"
-msgstr "Rediger"
-
-#: front/src/components/auth/Signup.vue:30
+#: front/src/components/auth/SignupForm.vue:26
 #: front/src/components/manage/users/UsersTable.vue:38
+#: front/src/components/moderation/ReportModal.vue:31
 msgctxt "Content/*/*/Noun"
 msgid "Email"
 msgstr "E-postadresse"
@@ -1610,53 +1786,62 @@ msgctxt "Content/*/*"
 msgid "Email address"
 msgstr "E-postadresse"
 
-#: front/src/components/library/AlbumBase.vue:53
-#: front/src/components/library/ArtistBase.vue:64
-#: front/src/components/library/TrackBase.vue:72
+#: front/src/components/library/AlbumBase.vue:54
+#: front/src/components/library/ArtistBase.vue:65
+#: front/src/components/library/TrackBase.vue:70
+#: src/views/playlists/Detail.vue:38
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Embed"
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:20
+#: front/src/components/audio/EmbedWizard.vue:30
 msgctxt "Popup/Embed/Input.Label/Noun"
 msgid "Embed code"
 msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:26
+#: front/src/components/library/AlbumBase.vue:27
 msgctxt "Popup/Album/Title/Verb"
 msgid "Embed this album on your website"
 msgstr ""
 
-#: front/src/components/library/ArtistBase.vue:37
+#: front/src/components/library/ArtistBase.vue:38
 msgctxt "Popup/Artist/Title/Verb"
 msgid "Embed this artist work on your website"
 msgstr ""
 
-#: front/src/components/library/TrackBase.vue:45
+#: front/src/views/playlists/Detail.vue:52
+msgctxt "Popup/Album/Title/Verb"
+msgid "Embed this playlist on your website"
+msgstr ""
+
+#: front/src/components/library/TrackBase.vue:43
 msgctxt "Popup/Track/Title"
 msgid "Embed this track on your website"
 msgstr ""
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:259
-#: front/src/views/admin/moderation/DomainsDetail.vue:187
+#: front/src/views/admin/moderation/AccountsDetail.vue:260
+#: front/src/views/admin/moderation/DomainsDetail.vue:224
 #, fuzzy
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Emitted library follows"
 msgstr "Skriv inn biblioteksnettadresse"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:243
-#: front/src/views/admin/moderation/DomainsDetail.vue:171
+#: front/src/views/admin/moderation/AccountsDetail.vue:244
+#: front/src/views/admin/moderation/DomainsDetail.vue:208
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Emitted messages"
 msgstr ""
 
+#: front/src/components/About.vue:114 src/components/About.vue:127
+#: front/src/components/About.vue:140
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:8
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:17
 #: front/src/views/admin/moderation/AccountsDetail.vue:156
 #: front/src/views/admin/moderation/AccountsDetail.vue:160
-msgctxt "*/*/*"
+#, fuzzy
+msgctxt "*/*/*/State of feature"
 msgid "Enabled"
-msgstr ""
+msgstr "Skru av tilgang"
 
 #: front/src/views/playlists/Detail.vue:30
 msgctxt "Content/Playlist/Button.Label/Verb"
@@ -1675,10 +1860,10 @@ msgctxt "Content/Search/Input.Placeholder"
 msgid "Enter a radio name…"
 msgstr "Skriv inn et radiostasjonsnavn…"
 
-#: front/src/components/library/Albums.vue:119
+#: front/src/components/library/Albums.vue:128
 #, fuzzy
 msgctxt "Content/Search/Input.Placeholder"
-msgid "Enter album title..."
+msgid "Enter album title…"
 msgstr "Skriv inn artistnavn…"
 
 #: front/src/components/library/Artists.vue:116
@@ -1695,15 +1880,16 @@ msgstr "Skriv inn spillelistenavn…"
 
 #: front/src/views/auth/PasswordReset.vue:54
 msgctxt "Content/Signup/Input.Placeholder"
-msgid "Enter the email address binded to your account"
+msgid "Enter the email address linked to your account"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:103
+#: front/src/components/auth/SignupForm.vue:96
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your email"
 msgstr "Skriv inn e-postadressen din"
 
-#: front/src/components/auth/Signup.vue:98 src/components/auth/Signup.vue:100
+#: front/src/components/auth/SignupForm.vue:91
+#: src/components/auth/SignupForm.vue:93
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your invitation code (case insensitive)"
 msgstr "Skriv inn din invitasjonskode (versalsensitiv)"
@@ -1714,12 +1900,12 @@ msgctxt "Content/Library/Input.Placeholder/Verb"
 msgid "Enter your search query…"
 msgstr "Skriv inn din søkespørring…"
 
-#: front/src/components/auth/Signup.vue:102
+#: front/src/components/auth/SignupForm.vue:95
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your username"
 msgstr "Skriv inn brukernavnet ditt"
 
-#: front/src/components/auth/Login.vue:83
+#: front/src/components/auth/LoginForm.vue:81
 msgctxt "Content/Login/Input.Placeholder"
 msgid "Enter your username or email"
 msgstr "Skriv inn brukernavnet eller e-postadressen din"
@@ -1737,7 +1923,7 @@ msgctxt "Popup/Import/Table.Label/Noun"
 msgid "Error detail"
 msgstr "Feilrapportering"
 
-#: front/src/views/admin/Settings.vue:87
+#: front/src/views/admin/Settings.vue:89
 msgctxt "Content/Admin/Menu"
 msgid "Error reporting"
 msgstr "Feilrapportering"
@@ -1799,17 +1985,13 @@ msgctxt "Popup/Moderation/Error message"
 msgid "Error while fetching application data"
 msgstr "Kunne ikke opprette invitasjon"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:118
+#: front/src/views/admin/moderation/DomainsDetail.vue:155
 #, fuzzy
 msgctxt "Content/Moderation/Table"
 msgid "Error while fetching node info"
 msgstr "Klarte ikke å hente bibliotek annensteds hen"
 
 #: front/src/components/admin/SettingsGroup.vue:5
-msgctxt "Content/Settings/Error message.Title"
-msgid "Error while saving settings"
-msgstr "Kunne ikke lagre innstillinger"
-
 #: front/src/components/federation/FetchButton.vue:73
 msgctxt "Content/*/Error message.Title"
 msgid "Error while saving settings"
@@ -1821,6 +2003,18 @@ msgctxt "Content/Library/Error message.Title"
 msgid "Error while submitting edit"
 msgstr "Kunne ikke lagre innstillinger"
 
+#: front/src/components/manage/moderation/NoteForm.vue:3
+#, fuzzy
+msgctxt "Content/Moderation/Error message.Title"
+msgid "Error while submitting note"
+msgstr "Kunne ikke lagre innstillinger"
+
+#: front/src/components/moderation/ReportModal.vue:11
+#, fuzzy
+msgctxt "Popup/Moderation/Error message"
+msgid "Error while submitting report"
+msgstr "Kunne ikke lagre innstillinger"
+
 #: front/src/components/mixins/Translations.vue:32
 #: front/src/components/mixins/Translations.vue:33
 msgctxt "Content/Library/Table/Short"
@@ -1856,9 +2050,14 @@ msgctxt "Content/Radio/Table.Label/Verb"
 msgid "Exclude"
 msgstr "Ekskluder"
 
+#: front/src/components/common/CollapseLink.vue:2
+msgctxt "*/*/Button,Label"
+msgid "Expand"
+msgstr ""
+
 #: front/src/components/manage/users/InvitationsTable.vue:41
-#: front/src/components/mixins/Translations.vue:49
-#: front/src/components/mixins/Translations.vue:50
+#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:60
 msgctxt "Content/Admin/Table.Label/Noun"
 msgid "Expiration date"
 msgstr "Utløpsdato"
@@ -1875,11 +2074,7 @@ msgstr "Utløpt/brukt"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:110
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Explain why you're applying this policy. Depending on your instance "
-"configuration, this will help you remember why you acted on this account or "
-"domain, and may be displayed publicly to help users understand what "
-"moderation rules are in place."
+msgid "Explain why you're applying this policy. Depending on your instance configuration, this will help you remember why you acted on this account or domain, and may be displayed publicly to help users understand what moderation rules are in place."
 msgstr ""
 
 #: front/src/components/manage/library/UploadsTable.vue:25
@@ -1888,33 +2083,30 @@ msgctxt "Content/Library/Dropdown"
 msgid "Failed"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:62
+#: front/src/views/content/remote/Card.vue:75
 #, fuzzy
 msgctxt "Content/Library/Card.List item/Noun"
 msgid "Failed tracks:"
 msgstr "Feilaktige spor:"
 
-#: front/src/views/admin/library/AlbumDetail.vue:165
-#: front/src/views/admin/library/ArtistDetail.vue:154
-#: front/src/views/admin/library/TrackDetail.vue:217
+#: front/src/views/admin/library/AlbumDetail.vue:171
+#: front/src/views/admin/library/ArtistDetail.vue:159
+#: front/src/views/admin/library/TrackDetail.vue:223
 #, fuzzy
 msgctxt "*/*/*"
 msgid "Favorited tracks"
 msgstr "Favoritter"
 
 #: front/src/components/Sidebar.vue:66
+#: src/components/mixins/Translations.vue:88
+#: front/src/components/mixins/Translations.vue:89
 msgctxt "Sidebar/Favorites/List item.Link/Noun"
 msgid "Favorites"
 msgstr "Favoritter"
 
-#: front/src/components/mixins/Translations.vue:76
-#: front/src/components/mixins/Translations.vue:77
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Favorites"
-msgstr "Favoritter"
-
-#: front/src/views/admin/Settings.vue:84
-msgctxt "Content/Admin/Menu"
+#: front/src/components/About.vue:110 src/views/admin/Settings.vue:84
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Federation"
 msgstr "Føderasjon"
 
@@ -1940,6 +2132,12 @@ msgctxt "Content/Radio/Table.Label/Noun"
 msgid "Filter name"
 msgstr "Filternavn"
 
+#: front/src/components/Home.vue:118
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Find another pod"
+msgstr "Send inn en annen forespørsel"
+
 #: front/src/components/manage/library/UploadsTable.vue:26
 #: front/src/components/mixins/Translations.vue:36
 #: front/src/views/content/libraries/FilesTable.vue:17
@@ -1949,26 +2147,32 @@ msgid "Finished"
 msgstr "Fullført"
 
 #: front/src/components/manage/moderation/AccountsTable.vue:42
-#: front/src/components/manage/moderation/DomainsTable.vue:41
-#: front/src/views/admin/library/AlbumDetail.vue:149
-#: front/src/views/admin/library/ArtistDetail.vue:138
-#: front/src/views/admin/library/LibraryDetail.vue:153
-#: front/src/views/admin/library/TrackDetail.vue:201
+#: front/src/components/manage/moderation/DomainsTable.vue:49
+#: front/src/views/admin/library/AlbumDetail.vue:155
+#: front/src/views/admin/library/ArtistDetail.vue:143
+#: front/src/views/admin/library/LibraryDetail.vue:162
+#: front/src/views/admin/library/TagDetail.vue:98
+#: front/src/views/admin/library/TrackDetail.vue:207
 #: front/src/views/admin/library/UploadDetail.vue:167
-#: front/src/views/admin/moderation/AccountsDetail.vue:235
-#: front/src/views/admin/moderation/DomainsDetail.vue:151
+#: front/src/views/admin/moderation/AccountsDetail.vue:236
+#: front/src/views/admin/moderation/DomainsDetail.vue:188
 msgctxt "Content/Moderation/Table.Label/Short (Value is a date)"
 msgid "First seen"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:46
-#: front/src/components/mixins/Translations.vue:47
+#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:57
 #, fuzzy
 msgctxt "Content/Moderation/Dropdown/Noun"
 msgid "First seen date"
 msgstr "Utløpsdato"
 
-#: front/src/views/content/remote/Card.vue:87
+#: front/src/components/ShortcutsModal.vue:64
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Focus searchbar"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:100
 msgctxt "Content/Library/Card.Button.Label/Verb"
 msgid "Follow"
 msgstr "Følg"
@@ -1978,42 +2182,36 @@ msgctxt "Content/Library/Title/Verb"
 msgid "Follow remote libraries"
 msgstr "Følg bibliotek annensteds hen"
 
-#: front/src/views/content/remote/Card.vue:92
+#: front/src/views/content/remote/Card.vue:105
 #, fuzzy
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Follow request pending approval"
 msgstr "Følging avventer samtykke"
 
-#: front/src/components/mixins/Translations.vue:64
-#: front/src/views/admin/library/LibraryDetail.vue:161
+#: front/src/components/manage/library/LibrariesTable.vue:53
+#: front/src/components/mixins/Translations.vue:76
+#: front/src/views/admin/library/LibraryDetail.vue:170
 #: front/src/views/content/libraries/Detail.vue:7
-#: front/src/components/mixins/Translations.vue:65
+#: front/src/components/mixins/Translations.vue:77
 msgctxt "Content/Federation/*/Noun"
 msgid "Followers"
 msgstr "Følgere"
 
-#: front/src/components/manage/library/LibrariesTable.vue:53
-msgctxt "Content/*/*/Noun"
-msgid "Followers"
-msgstr "Følgere"
-
-#: front/src/views/content/remote/Card.vue:103
+#: front/src/views/content/remote/Card.vue:116
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Following"
 msgstr "Følger"
 
-#: front/src/components/mixins/Translations.vue:84
-#: front/src/components/mixins/Translations.vue:85
+#: front/src/components/mixins/Translations.vue:96
+#: front/src/components/mixins/Translations.vue:97
 #, fuzzy
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Follows"
 msgstr "Følg"
 
-#: front/src/components/library/TrackBase.vue:17
+#: front/src/components/library/TrackBase.vue:245
 msgctxt "Content/Track/Paragraph"
-msgid ""
-"From album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> by <a"
-" class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgid "From album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
 msgstr ""
 
 #: front/src/components/auth/Authorize.vue:28
@@ -2024,38 +2222,21 @@ msgstr "Skru av tilgang"
 
 #: front/src/components/auth/SubsonicTokenForm.vue:7
 msgctxt "Content/Settings/Paragraph'"
-msgid ""
-"Funkwhale is compatible with other music players that support the Subsonic "
-"API."
-msgstr ""
-"Funkwhale er kompatibelt med andre musikkspillere som støtter Subsonic API-"
-"et."
+msgid "Funkwhale is compatible with other music players that support the Subsonic API."
+msgstr "Funkwhale er kompatibelt med andre musikkspillere som støtter Subsonic API-et."
 
-#: front/src/components/Home.vue:90
-msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale is dead simple to use."
-msgstr "Funkwhale er dødsenkelt å bruke."
-
-#: front/src/components/Home.vue:39
-msgctxt "Content/Home/Paragraph"
-msgid ""
-"Funkwhale is designed to make it easy to listen to music you like, or to "
-"discover new artists."
-msgstr ""
-"Funkwhale er designet for å gjøre det enkelt å lytte til musikk dun liker, "
-"eller å oppdage nye artister."
-
-#: front/src/components/Home.vue:111
+#: front/src/components/Home.vue:88
+#, fuzzy
 msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale is free and gives you control on your music."
+msgid "Funkwhale is free and developped by a friendly community of volunteers."
 msgstr "Funkwhale er fritt og gir deg kontroll over din musikk."
 
-#: front/src/components/Home.vue:66
-msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale takes care of handling your music"
-msgstr "Funkwhale påtar seg håndtering av din musikk"
+#: front/src/components/About.vue:78
+msgctxt "*/*/*"
+msgid "Funkwhale version"
+msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:38
+#: front/src/components/ShortcutsModal.vue:56
 msgctxt "Popup/Keyboard shortcuts/Title"
 msgid "General shortcuts"
 msgstr ""
@@ -2065,37 +2246,18 @@ msgctxt "Content/Admin/Button.Label/Verb"
 msgid "Get a new invitation"
 msgstr "FÃ¥ en invitasjon"
 
-#: front/src/components/Home.vue:13
-msgctxt "Content/Home/Button.Label/Verb"
-msgid "Get me to the library"
-msgstr "Send meg til biblioteket"
-
-#: front/src/components/Home.vue:70
-msgctxt "Content/Home/List item/Verb"
-msgid ""
-"Get quality metadata about your music thanks to <a href=\"%{ url }\" "
-"target=\"_blank\">MusicBrainz</a>"
-msgstr ""
-"Hent kvalitetsmetadata om din musikk takket være <a href=\"%{ url }\" "
-"target=\"_blank\">MusicBrainz</a>"
-
 #: front/src/views/content/Home.vue:12 src/views/content/Home.vue:19
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Get started"
 msgstr "Kom igang"
 
-#: front/src/components/Footer.vue:37
+#: front/src/components/Footer.vue:45
+#: src/components/library/ImportStatusModal.vue:45
 #, fuzzy
 msgctxt "Footer/*/Link"
 msgid "Getting help"
 msgstr "Innstillinger"
 
-#: front/src/components/library/ImportStatusModal.vue:45
-#, fuzzy
-msgctxt "Popup/Import/Table.Label/Noun"
-msgid "Getting help"
-msgstr "Innstillinger"
-
 #: front/src/components/common/ActionTable.vue:35
 #: front/src/components/common/ActionTable.vue:56
 msgctxt "Content/*/Button.Label/Short, Verb"
@@ -2107,12 +2269,22 @@ msgctxt "Content/*/Button.Label/Verb"
 msgid "Go to home page"
 msgstr "GÃ¥ til hjemmesiden"
 
+#: front/src/views/Notifications.vue:27 src/views/Notifications.vue:61
+msgctxt "Content/Notifications/Button.Label"
+msgid "Got it!"
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:128
 #, fuzzy
 msgctxt "Content/Settings/Title"
 msgid "Hidden artists"
 msgstr "Utforsker artister"
 
+#: front/src/components/About.vue:155
+msgctxt "*/*/*/Verb"
+msgid "Hide"
+msgstr ""
+
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:114
 msgctxt "Content/Moderation/Help text"
 msgid "Hide account or domain content, except from followers."
@@ -2124,12 +2296,12 @@ msgctxt "Popup/*/Button.Label"
 msgid "Hide content"
 msgstr "Legg til innhold"
 
-#: front/src/components/audio/PlayButton.vue:26
+#: front/src/components/audio/PlayButton.vue:31
 msgctxt "*/Queue/Dropdown/Button/Label/Short"
 msgid "Hide content from this artist"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:643
+#: front/src/components/audio/Player.vue:669
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Hide content from this artist…"
 msgstr ""
@@ -2139,38 +2311,29 @@ msgctxt "Head/Home/Title"
 msgid "Home"
 msgstr "Hjem"
 
-#: front/src/components/instance/Stats.vue:36
-msgctxt "Content/About/Paragraph/Unit"
-msgid "Hours of music"
-msgstr "Timevis med musikk"
-
 #: front/src/components/auth/SubsonicTokenForm.vue:10
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"However, accessing Funkwhale from those clients require a separate password "
-"you can set below."
-msgstr ""
-"Dog vil tilgang til Funkwhale fra disse klientene kreve et eget passord du "
-"kan sette nedenfor."
+msgid "However, accessing Funkwhale from those clients require a separate password you can set below."
+msgstr "Dog vil tilgang til Funkwhale fra disse klientene kreve et eget passord du kan sette nedenfor."
 
 #: front/src/views/auth/PasswordResetConfirm.vue:24
+#, fuzzy
 msgctxt "Content/Signup/Paragraph"
-msgid ""
-"If the email address provided in the previous step is valid and binded to a "
-"user account, you should receive an email with reset instructions in the "
-"next couple of minutes."
-msgstr ""
-"Hvis e-postadressen oppgitt i forrige steg er gyldig og bundet til en "
-"brukerkonto, bør du motta en e-post med tilbakestillingsinstruksjoner i "
-"løpet av et par minutter."
+msgid "If the email address provided in the previous step is valid and linked to a user account, you should receive an email with reset instructions in the next couple of minutes."
+msgstr "Hvis e-postadressen oppgitt i forrige steg er gyldig og bundet til en brukerkonto, bør du motta en e-post med tilbakestillingsinstruksjoner i løpet av et par minutter."
 
 #: front/src/components/auth/Settings.vue:205
 msgctxt "Content/Applications/Paragraph"
-msgid ""
-"If you authorize third-party applications to access your data, those "
-"applications will be listed here."
+msgid "If you authorize third-party applications to access your data, those applications will be listed here."
 msgstr ""
 
+#: front/src/components/mixins/Translations.vue:46
+#: front/src/components/mixins/Translations.vue:47
+#, fuzzy
+msgctxt "Content/Moderation/Dropdown"
+msgid "Illegal content"
+msgstr "Legg til innhold"
+
 #: front/src/components/library/ImportStatusModal.vue:3
 #, fuzzy
 msgctxt "Popup/Import/Title"
@@ -2183,14 +2346,10 @@ msgid "Import reference"
 msgstr "Importer referanse"
 
 #: front/src/components/manage/library/UploadsTable.vue:20
-#: front/src/views/content/libraries/FilesTable.vue:11
-#: front/src/views/content/libraries/FilesTable.vue:59
-msgctxt "Content/Library/*/Noun"
-msgid "Import status"
-msgstr "Importer status"
-
 #: front/src/components/manage/library/UploadsTable.vue:64
 #: front/src/views/admin/library/UploadDetail.vue:131
+#: front/src/views/content/libraries/FilesTable.vue:11
+#: front/src/views/content/libraries/FilesTable.vue:59
 msgctxt "Content/*/*/Noun"
 msgid "Import status"
 msgstr "Importer status"
@@ -2233,12 +2392,12 @@ msgctxt "Popup/Moderation/List item"
 msgid "In radio suggestions"
 msgstr ""
 
-#: front/src/components/manage/users/UsersTable.vue:54
+#: front/src/components/manage/users/UsersTable.vue:55
 msgctxt "Content/Admin/Table"
 msgid "Inactive"
 msgstr "Inaktiv"
 
-#: front/src/components/ShortcutsModal.vue:71
+#: front/src/components/ShortcutsModal.vue:124
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Increase volume"
 msgstr ""
@@ -2258,7 +2417,7 @@ msgctxt "Content/Settings/Dropdown/Short"
 msgid "Instance"
 msgstr "Instansradiostasjoner"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:71
+#: front/src/views/admin/moderation/DomainsDetail.vue:99
 #, fuzzy
 msgctxt "Content/Moderation/Title"
 msgid "Instance data"
@@ -2285,19 +2444,25 @@ msgctxt "Popup/Instance/Input.Label/Noun"
 msgid "Instance URL"
 msgstr "Instansradiostasjoner"
 
+#: front/src/components/manage/moderation/ReportCard.vue:92
+#: front/src/components/manage/moderation/ReportCard.vue:203
+msgctxt "Content/*/*/Noun"
+msgid "Internal notes"
+msgstr ""
+
 #: front/src/components/library/FileUpload.vue:268
 msgctxt "Content/Library/Help text"
-msgid ""
-"Invalid file type, ensure you are uploading an audio file. Supported file "
-"extensions are %{ extensions }"
+msgid "Invalid file type, ensure you are uploading an audio file. Supported file extensions are %{ extensions }"
 msgstr ""
 
 #: front/src/components/library/ImportStatusModal.vue:139
+#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:46
 msgctxt "Popup/Import/Error.Label"
 msgid "Invalid metadata"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:44
+#: front/src/components/auth/SignupForm.vue:40
 #: front/src/components/manage/users/InvitationForm.vue:11
 msgctxt "Content/*/Input.Label"
 msgid "Invitation code"
@@ -2309,7 +2474,13 @@ msgctxt "*/Admin/*/Noun"
 msgid "Invitations"
 msgstr "Invitasjoner"
 
-#: front/src/components/Footer.vue:41
+#: front/src/components/manage/moderation/DomainsTable.vue:9
+#: front/src/views/admin/moderation/DomainsDetail.vue:106
+msgctxt "Content/Moderation/*/Adjective"
+msgid "Is present on allow-list"
+msgstr ""
+
+#: front/src/components/Footer.vue:49
 msgctxt "Footer/*/List item.Link"
 msgid "Issue tracker"
 msgstr "Feilsporer"
@@ -2319,17 +2490,18 @@ msgctxt "Popup/Instance/Error message.Title"
 msgid "It is not possible to connect to the given URL"
 msgstr ""
 
-#: front/src/components/Home.vue:50
-msgctxt "Content/Home/List item/Verb"
-msgid "Keep a track of your favorite songs"
-msgstr "Behold et spor av dine favorittsanger"
+#: front/src/components/mixins/Translations.vue:65
+#: front/src/components/mixins/Translations.vue:66
+msgctxt "*/*/*/Noun"
+msgid "Items"
+msgstr ""
 
 #: front/src/components/Footer.vue:33 src/components/ShortcutsModal.vue:3
 msgctxt "*/*/*/Noun"
 msgid "Keyboard shortcuts"
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:161
+#: front/src/views/admin/moderation/DomainsDetail.vue:198
 #, fuzzy
 msgctxt "Content/Moderation/Table.Label.Link"
 msgid "Known accounts"
@@ -2341,15 +2513,15 @@ msgid "Known libraries"
 msgstr "Kjente bibliotek"
 
 #: front/src/components/manage/users/UsersTable.vue:41
-#: front/src/components/mixins/Translations.vue:58
-#: front/src/views/admin/moderation/AccountsDetail.vue:205
-#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:70
+#: front/src/views/admin/moderation/AccountsDetail.vue:206
+#: front/src/components/mixins/Translations.vue:71
 msgctxt "Content/Profile/Table.Label/Short, Noun (Value is a date)"
 msgid "Last activity"
 msgstr "Siste aktivitet"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:188
-#: front/src/views/admin/moderation/DomainsDetail.vue:78
+#: front/src/views/admin/moderation/AccountsDetail.vue:189
+#: front/src/views/admin/moderation/DomainsDetail.vue:115
 msgctxt "Content/*/Table.Label"
 msgid "Last checked"
 msgstr ""
@@ -2364,14 +2536,14 @@ msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Last seen"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:47
-#: front/src/components/mixins/Translations.vue:48
+#: front/src/components/mixins/Translations.vue:57
+#: front/src/components/mixins/Translations.vue:58
 #, fuzzy
 msgctxt "Content/Moderation/Dropdown/Noun"
 msgid "Last seen date"
 msgstr "Siste oppdatering:"
 
-#: front/src/views/content/remote/Card.vue:60
+#: front/src/views/content/remote/Card.vue:73
 msgctxt "Content/Library/Card.List item/Noun"
 msgid "Last update:"
 msgstr "Siste oppdatering:"
@@ -2381,40 +2553,42 @@ msgctxt "Modal/*/Button.Label/Short, Verb"
 msgid "Launch"
 msgstr "Kjør"
 
-#: front/src/components/Home.vue:10
-msgctxt "Content/Home/Button.Label/Verb"
-msgid "Learn more about this instance"
-msgstr "Lær mer om denne instansen"
+#: front/src/components/Home.vue:35
+msgctxt "Content/Home/Link"
+msgid "Learn more"
+msgstr ""
 
 #: front/src/components/manage/users/InvitationForm.vue:58
 msgctxt "Content/Admin/Input.Placeholder"
 msgid "Leave empty for a random code"
 msgstr "La stå tom for tilfeldig kode"
 
-#: front/src/components/audio/EmbedWizard.vue:7
+#: front/src/components/audio/EmbedWizard.vue:17
 #, fuzzy
 msgctxt "Popup/Embed/Paragraph"
 msgid "Leave empty for a responsive widget"
 msgstr "La stå tom for tilfeldig kode"
 
-#: front/src/views/admin/library/AlbumDetail.vue:232
-#: front/src/views/admin/library/ArtistDetail.vue:221
-#: front/src/views/admin/library/TrackDetail.vue:284
-#: front/src/views/admin/moderation/AccountsDetail.vue:327
-#: front/src/views/admin/moderation/DomainsDetail.vue:234
-#: front/src/views/content/Base.vue:5
+#: front/src/components/mixins/Translations.vue:64
+#: front/src/components/mixins/Translations.vue:65
 msgctxt "*/*/*/Noun"
-msgid "Libraries"
-msgstr "Bibliotek"
+msgid "Length"
+msgstr ""
 
+#: front/src/views/admin/library/AlbumDetail.vue:248
+#: front/src/views/admin/library/ArtistDetail.vue:236
 #: front/src/views/admin/library/Base.vue:17
 #: front/src/views/admin/library/LibrariesList.vue:24
-msgctxt "*/*/*"
+#: front/src/views/admin/library/TrackDetail.vue:300
+#: front/src/views/admin/moderation/AccountsDetail.vue:339
+#: front/src/views/admin/moderation/DomainsDetail.vue:271
+#: front/src/views/content/Base.vue:5
+msgctxt "*/*/*/Noun"
 msgid "Libraries"
 msgstr "Bibliotek"
 
-#: front/src/components/mixins/Translations.vue:72
-#: front/src/components/mixins/Translations.vue:73
+#: front/src/components/mixins/Translations.vue:84
+#: front/src/components/mixins/Translations.vue:85
 #, fuzzy
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Libraries and uploads"
@@ -2422,20 +2596,18 @@ msgstr "Bibliotek oppdatert"
 
 #: front/src/views/content/libraries/Form.vue:2
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Libraries help you organize and share your music collections. You can upload"
-" your own music collection to Funkwhale and share it with your friends and "
-"family."
-msgstr ""
-"Bibliotek lar deg organisere og dele dine musikksamlinger. DU kan laste opp "
-"din egen musikksamling til Funkwhale og dele den med dine venner og familie."
+msgid "Libraries help you organize and share your music collections. You can upload your own music collection to Funkwhale and share it with your friends and family."
+msgstr "Bibliotek lar deg organisere og dele dine musikksamlinger. DU kan laste opp din egen musikksamling til Funkwhale og dele den med dine venner og familie."
 
-#: front/src/components/Sidebar.vue:85 src/components/instance/Stats.vue:30
+#: front/src/components/Sidebar.vue:85
 #: front/src/components/manage/library/UploadsTable.vue:60
-#: front/src/components/manage/users/UsersTable.vue:173
+#: front/src/components/manage/users/UsersTable.vue:174
+#: front/src/components/mixins/Report.vue:77
 #: front/src/views/admin/library/UploadDetail.vue:144
-#: front/src/views/admin/moderation/AccountsDetail.vue:498
-msgctxt "*/*/*"
+#: front/src/views/admin/moderation/AccountsDetail.vue:518 src/entities.js:132
+#: front/src/components/mixins/Report.vue:78
+#, fuzzy
+msgctxt "*/*/*/Noun"
 msgid "Library"
 msgstr "Bibliotek"
 
@@ -2469,21 +2641,37 @@ msgstr "Bibliotek oppdatert"
 
 #: front/src/components/library/TrackDetail.vue:19
 #: front/src/components/manage/library/TracksTable.vue:43
-#: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:61
+#: front/src/views/admin/library/TrackDetail.vue:165 src/edits.js:84
+#: front/src/entities.js:115
 msgctxt "Content/*/*/Noun"
 msgid "License"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:157
-#: front/src/views/admin/library/ArtistDetail.vue:146
-#: front/src/views/admin/library/TrackDetail.vue:209
-msgctxt "*/*/*/Noun"
-msgid "Listenings"
+#: front/src/components/Footer.vue:90
+msgctxt "Footer/Settings/Dropdown.Label/Theme name"
+msgid "Light"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:80
-#: front/src/components/mixins/Translations.vue:81
-msgctxt "Content/OAuth Scopes/Label"
+#: front/src/views/admin/library/AlbumDetail.vue:188
+#: front/src/views/admin/library/ArtistDetail.vue:176
+#: front/src/views/admin/library/LibraryDetail.vue:179
+#: front/src/views/admin/library/TrackDetail.vue:240
+#: front/src/views/admin/moderation/AccountsDetail.vue:269
+msgctxt "Content/Moderation/Table.Label/Noun"
+msgid "Linked reports"
+msgstr ""
+
+#: front/src/components/Home.vue:135
+msgctxt "Content/Home/Link"
+msgid "Listen to public albums and playlists shared on this pod"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:92
+#: front/src/views/admin/library/AlbumDetail.vue:163
+#: front/src/views/admin/library/ArtistDetail.vue:151
+#: front/src/views/admin/library/TrackDetail.vue:215
+#: front/src/components/mixins/Translations.vue:93
+msgctxt "*/*/*/Noun"
 msgid "Listenings"
 msgstr ""
 
@@ -2512,7 +2700,7 @@ msgctxt "Content/Library/Paragraph"
 msgid "Loading library data…"
 msgstr "Laster biblioteksdata…"
 
-#: front/src/views/Notifications.vue:19
+#: front/src/views/Notifications.vue:84
 #, fuzzy
 msgctxt "Content/Notifications/Paragraph"
 msgid "Loading notifications…"
@@ -2541,6 +2729,7 @@ msgstr "Laster dine favoritter…"
 #: front/src/components/manage/library/LibrariesTable.vue:75
 #: front/src/components/manage/library/TracksTable.vue:71
 #: front/src/components/manage/library/UploadsTable.vue:99
+#: front/src/components/manage/moderation/ReportCard.vue:173
 #: front/src/views/admin/library/AlbumDetail.vue:19
 #: front/src/views/admin/library/ArtistDetail.vue:18
 #: front/src/views/admin/library/LibraryDetail.vue:18
@@ -2557,12 +2746,12 @@ msgctxt "Content/Moderation/*/Short, Noun"
 msgid "Local account"
 msgstr "Min konto"
 
-#: front/src/components/auth/Login.vue:84
+#: front/src/components/Home.vue:96 src/views/auth/Login.vue:29
 msgctxt "Head/Login/Title"
 msgid "Log In"
 msgstr "Logg inn"
 
-#: front/src/components/auth/Login.vue:4
+#: front/src/views/auth/Login.vue:4
 msgctxt "Content/Login/Title/Verb"
 msgid "Log in to your Funkwhale account"
 msgstr "Logg inn på din Funkwhale-konto"
@@ -2577,7 +2766,7 @@ msgctxt "Sidebar/Profile/List item.Link"
 msgid "Logged in as %{ username }"
 msgstr "Innlogget som % { username }"
 
-#: front/src/components/Sidebar.vue:54 src/components/auth/Login.vue:42
+#: front/src/components/Sidebar.vue:54 src/components/auth/LoginForm.vue:41
 msgctxt "*/Login/*/Verb"
 msgid "Login"
 msgstr "Logg inn"
@@ -2599,35 +2788,39 @@ msgctxt "Content/Library/Paragraph"
 msgid "Looks like you don't have a library, it's time to create one."
 msgstr "Det ser ut til at du ikke har et bibliotek enda, på tide å laget et."
 
-#: front/src/components/audio/Player.vue:632
-#: src/components/audio/Player.vue:633
+#: front/src/components/audio/Player.vue:658
+#: src/components/audio/Player.vue:659
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping disabled. Click to switch to single-track looping."
 msgstr "Gjentagelse avskrudd. Klikk for å bytte til enkeltsporsgjentagelse."
 
-#: front/src/components/audio/Player.vue:635
-#: src/components/audio/Player.vue:636
+#: front/src/components/audio/Player.vue:661
+#: src/components/audio/Player.vue:662
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping on a single track. Click to switch to whole queue looping."
-msgstr ""
-"Gjentar enkelt spor. Klikk for å bytte til gjentagelse av hele spillekøen."
+msgstr "Gjentar enkelt spor. Klikk for å bytte til gjentagelse av hele spillekøen."
 
-#: front/src/components/audio/Player.vue:638
-#: src/components/audio/Player.vue:639
+#: front/src/components/audio/Player.vue:664
+#: src/components/audio/Player.vue:665
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping on whole queue. Click to disable looping."
 msgstr "Gjentar hele spillekøen. Klikk for å skru av gjentagelse."
 
-#: front/src/components/Sidebar.vue:223
+#: front/src/components/Sidebar.vue:230
 msgctxt "Sidebar/*/Hidden text"
 msgid "Main menu"
 msgstr ""
 
-#: front/src/views/admin/library/Base.vue:31
+#: front/src/views/admin/library/Base.vue:34
 msgctxt "Head/Admin/Title"
 msgid "Manage library"
 msgstr "Behandle bibliotek"
 
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:8
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Manage moderation rules for %{ obj }"
+msgstr ""
+
 #: front/src/components/playlists/PlaylistModal.vue:3
 msgctxt "Popup/Playlist/Title/Verb"
 msgid "Manage playlists"
@@ -2643,7 +2836,7 @@ msgctxt "Content/Playlist/Button.Label/Verb"
 msgid "Manage your playlists"
 msgstr "Behandle dine spillelister"
 
-#: front/src/views/Notifications.vue:14
+#: front/src/views/Notifications.vue:79
 msgctxt "Content/Notifications/Button.Label/Verb"
 msgid "Mark all as read"
 msgstr "Marker alle som lest"
@@ -2660,12 +2853,12 @@ msgctxt "Content/Notifications/Button.Tooltip/Verb"
 msgid "Mark as unread"
 msgstr "Marker alle som lest"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:310
+#: front/src/views/admin/moderation/AccountsDetail.vue:321
 msgctxt "Content/*/*/Unit"
 msgid "MB"
 msgstr "MB"
 
-#: front/src/components/audio/Player.vue:625
+#: front/src/components/audio/Player.vue:651
 msgctxt "Sidebar/Player/Hidden text"
 msgid "Media player"
 msgstr ""
@@ -2676,43 +2869,60 @@ msgctxt "Content/Profile/Paragraph"
 msgid "Member since %{ date }"
 msgstr "Registrert siden %{ date }"
 
+#: front/src/components/manage/moderation/ReportCard.vue:109
+#: front/src/components/moderation/ReportModal.vue:41
+msgctxt "*/*/Field.Label/Noun"
+msgid "Message"
+msgstr ""
+
 #: front/src/components/Footer.vue:32
 msgctxt "Footer/*/List item.Link"
 msgid "Mobile and desktop apps"
 msgstr ""
 
+#: front/src/components/Home.vue:143
+msgctxt "Content/Home/Link"
+msgid "Mobile apps"
+msgstr ""
+
 #: front/src/components/Sidebar.vue:96
-#: src/components/manage/users/UsersTable.vue:177
-#: front/src/views/admin/moderation/AccountsDetail.vue:502
-#: front/src/views/admin/moderation/Base.vue:21
+#: src/components/manage/users/UsersTable.vue:178
+#: front/src/views/admin/Settings.vue:85
+#: front/src/views/admin/moderation/AccountsDetail.vue:522
+#: front/src/views/admin/moderation/Base.vue:43
 #, fuzzy
 msgctxt "*/Moderation/*"
 msgid "Moderation"
 msgstr "Føderasjon"
 
 #: front/src/views/admin/moderation/AccountsDetail.vue:78
-#: front/src/views/admin/moderation/DomainsDetail.vue:42
+#: front/src/views/admin/moderation/DomainsDetail.vue:70
 msgctxt "Content/Moderation/Card.Paragraph"
-msgid ""
-"Moderation policies help you control how your instance interact with a given"
-" domain or account."
+msgid "Moderation policies help you control how your instance interact with a given domain or account."
 msgstr ""
 
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:4
+#, fuzzy
+msgctxt "Content/Moderation/Button.Label"
+msgid "Moderation rules…"
+msgstr "Føderasjon"
+
 #: front/src/components/library/EditCard.vue:5
 #, fuzzy
 msgctxt "Content/Library/Card/Short"
 msgid "Modification %{ id }"
 msgstr "Endringsdato"
 
-#: front/src/components/mixins/Translations.vue:48
-#: front/src/components/mixins/Translations.vue:49
+#: front/src/components/mixins/Translations.vue:58
+#: front/src/components/mixins/Translations.vue:59
 msgctxt "Content/Playlist/Dropdown/Noun"
 msgid "Modification date"
 msgstr "Endringsdato"
 
-#: front/src/components/library/AlbumBase.vue:42
-#: front/src/components/library/ArtistBase.vue:53
-#: front/src/components/library/TrackBase.vue:61
+#: front/src/components/audio/PlayButton.vue:100
+#: front/src/components/library/AlbumBase.vue:43
+#: front/src/components/library/ArtistBase.vue:54
+#: front/src/components/library/TrackBase.vue:59
 msgctxt "*/*/Button.Label/Noun"
 msgid "More…"
 msgstr ""
@@ -2722,7 +2932,7 @@ msgctxt "*/*/*/Noun"
 msgid "Music"
 msgstr "Musikk"
 
-#: front/src/components/audio/Player.vue:631
+#: front/src/components/audio/Player.vue:657
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Mute"
 msgstr "Forstum"
@@ -2771,8 +2981,8 @@ msgctxt "Content/Library/Title"
 msgid "My libraries"
 msgstr "Mine bibliotek"
 
-#: front/src/components/audio/track/Row.vue:40
-#: src/components/library/EditCard.vue:60
+#: front/src/components/About.vue:105 src/components/audio/track/Row.vue:40
+#: front/src/components/library/EditCard.vue:60
 #: front/src/components/library/EditForm.vue:70
 #: front/src/components/library/TrackDetail.vue:34
 #: front/src/components/library/TrackDetail.vue:43
@@ -2782,54 +2992,56 @@ msgstr "Mine bibliotek"
 #: front/src/components/manage/library/TracksTable.vue:76
 #: front/src/components/manage/library/UploadsTable.vue:121
 #: front/src/components/manage/library/UploadsTable.vue:128
-#: front/src/components/manage/users/UsersTable.vue:61
+#: front/src/components/manage/moderation/ReportCard.vue:78
+#: front/src/components/manage/moderation/ReportCard.vue:87
+#: front/src/components/manage/moderation/ReportCard.vue:193
+#: front/src/components/manage/users/UsersTable.vue:62
 #: front/src/views/admin/library/UploadDetail.vue:179
 #: front/src/views/admin/library/UploadDetail.vue:214
 #: front/src/views/admin/library/UploadDetail.vue:233
 #: front/src/views/admin/library/UploadDetail.vue:244
 #: front/src/views/admin/library/UploadDetail.vue:257
-#: front/src/views/admin/moderation/AccountsDetail.vue:192
-#: front/src/views/admin/moderation/DomainsDetail.vue:82
+#: front/src/views/admin/moderation/AccountsDetail.vue:193
+#: front/src/views/admin/moderation/DomainsDetail.vue:119
 #: front/src/views/content/libraries/FilesTable.vue:95
 #: front/src/views/content/libraries/FilesTable.vue:101
 msgctxt "*/*/*"
 msgid "N/A"
 msgstr "I/T"
 
+#: front/src/components/auth/ApplicationForm.vue:9
+#: front/src/components/auth/Settings.vue:133
+#: front/src/components/manage/library/ArtistsTable.vue:39
 #: front/src/components/manage/library/LibrariesTable.vue:48
+#: front/src/components/manage/library/TagsTable.vue:41
 #: front/src/components/manage/library/UploadsTable.vue:59
-msgctxt "*/*/*"
-msgid "Name"
-msgstr "Navn"
-
-#: front/src/components/auth/ApplicationForm.vue:9
-msgctxt "Content/Applications/Input.Label/Noun"
-msgid "Name"
-msgstr "Navn"
-
-#: front/src/components/auth/Settings.vue:133
-#: front/src/components/manage/library/ArtistsTable.vue:39
 #: front/src/components/manage/moderation/AccountsTable.vue:39
-#: front/src/components/manage/moderation/DomainsTable.vue:38
-#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/manage/moderation/DomainsTable.vue:46
+#: front/src/components/mixins/Translations.vue:63
 #: front/src/components/playlists/PlaylistModal.vue:45
-#: front/src/views/admin/library/ArtistDetail.vue:98
+#: front/src/views/admin/library/ArtistDetail.vue:103
 #: front/src/views/admin/library/LibraryDetail.vue:85
+#: front/src/views/admin/library/TagDetail.vue:68
 #: front/src/views/admin/library/UploadDetail.vue:92
-#: front/src/views/admin/moderation/DomainsDetail.vue:97
-#: front/src/views/content/libraries/Form.vue:10 src/edits.js:10
-#: front/src/components/mixins/Translations.vue:54
+#: front/src/views/admin/moderation/DomainsDetail.vue:134
+#: front/src/views/content/libraries/Form.vue:10 src/edits.js:17
+#: front/src/components/mixins/Translations.vue:64
 msgctxt "*/*/*/Noun"
 msgid "Name"
 msgstr "Navn"
 
+#: front/src/views/Notifications.vue:24 src/views/Notifications.vue:58
+msgctxt "*/*/*"
+msgid "Never"
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:88
 #: front/src/views/auth/PasswordResetConfirm.vue:14
 msgctxt "Content/Settings/Input.Label"
 msgid "New password"
 msgstr "Nytt passord"
 
-#: front/src/components/Sidebar.vue:173
+#: front/src/components/Sidebar.vue:177
 msgctxt "Sidebar/Player/Paragraph"
 msgid "New tracks will be appended here automatically."
 msgstr "Nye spor vil bli lagt til her automatisk."
@@ -2839,21 +3051,18 @@ msgctxt "Content/Library/Card.Table.Header/Short"
 msgid "New value"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:629
+#: front/src/components/audio/Player.vue:655
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Next track"
 msgstr "Neste spor"
 
-#: front/src/components/Sidebar.vue:130
+#: front/src/components/Sidebar.vue:134
+#: front/src/components/manage/moderation/DomainsTable.vue:13
+#: front/src/views/admin/moderation/DomainsDetail.vue:110
 msgctxt "*/*/*"
 msgid "No"
 msgstr "Nei"
 
-#: front/src/components/Home.vue:95
-msgctxt "Content/Home/List item"
-msgid "No add-ons, no plugins : you only need a web library"
-msgstr "Ingen tillegg, ingen programtillegg: Du trenger kun et nettbibliotek."
-
 #: front/src/components/audio/Search.vue:25
 #, fuzzy
 msgctxt "Content/Search/Paragraph"
@@ -2872,6 +3081,11 @@ msgctxt "Content/Track/Table.Paragraph"
 msgid "No copyright information available for this track"
 msgstr "Ingen sangtekster tilgjengelig for dette sporet."
 
+#: front/src/components/About.vue:25 src/components/Home.vue:25
+msgctxt "Content/Home/Paragraph"
+msgid "No description available."
+msgstr ""
+
 #: front/src/components/library/TrackDetail.vue:25
 #, fuzzy
 msgctxt "Content/Track/Table.Paragraph"
@@ -2883,7 +3097,7 @@ msgctxt "Content/Federation/Paragraph"
 msgid "No matching library."
 msgstr "Inget samsvarende bibliotek."
 
-#: front/src/views/Notifications.vue:28
+#: front/src/views/Notifications.vue:93
 #, fuzzy
 msgctxt "Content/Notifications/Paragraph"
 msgid "No notification to show."
@@ -2894,6 +3108,16 @@ msgctxt "Content/*/Paragraph"
 msgid "No results were found."
 msgstr ""
 
+#: front/src/components/About.vue:32
+msgctxt "Content/Home/Paragraph"
+msgid "No rules available."
+msgstr ""
+
+#: front/src/components/About.vue:39
+msgctxt "Content/Home/Paragraph"
+msgid "No terms available."
+msgstr ""
+
 #: front/src/components/mixins/Translations.vue:10
 #: front/src/components/mixins/Translations.vue:11
 msgctxt "Content/Settings/Dropdown"
@@ -2910,18 +3134,22 @@ msgctxt "Content/Admin/Table"
 msgid "Not used"
 msgstr "Ikke brukt"
 
-#: front/src/components/mixins/Translations.vue:100
-#: front/src/components/mixins/Translations.vue:101
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Notifications"
-msgstr "Merknader"
-
-#: front/src/components/Sidebar.vue:46 src/views/Notifications.vue:76
+#: front/src/components/Sidebar.vue:46
+#: src/components/mixins/Translations.vue:112
+#: front/src/views/Notifications.vue:151
+#: src/components/mixins/Translations.vue:113
 msgctxt "*/Notifications/*"
 msgid "Notifications"
 msgstr "Merknader"
 
-#: front/src/components/Footer.vue:47
+#: front/src/components/mixins/Translations.vue:47
+#: front/src/components/mixins/Translations.vue:48
+#, fuzzy
+msgctxt "Content/Moderation/Dropdown"
+msgid "Offensive content"
+msgstr "Legg til innhold"
+
+#: front/src/components/Footer.vue:55
 msgctxt "Footer/*/List item.Link"
 msgid "Official website"
 msgstr "Offisiell nettside"
@@ -2936,6 +3164,12 @@ msgctxt "Content/Library/Card.Table.Header/Short"
 msgid "Old value"
 msgstr ""
 
+#: front/src/components/About.vue:90
+#, fuzzy
+msgctxt "*/*/*/State of registrations"
+msgid "Open"
+msgstr "Ã…pen"
+
 #: front/src/components/manage/users/InvitationsTable.vue:20
 msgctxt "Content/Admin/Dropdown/Adjective"
 msgid "Open"
@@ -2943,27 +3177,29 @@ msgstr "Ã…pen"
 
 #: front/src/components/library/ImportStatusModal.vue:56
 msgctxt "Popup/Import/Table.Label/Value"
-msgid ""
-"Open a support thread (include the debug information below in your message)"
+msgid "Open a support thread (include the debug information below in your message)"
 msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:73
-#: front/src/components/library/ArtistBase.vue:84
-#: front/src/components/library/TrackBase.vue:92
+#: front/src/components/library/AlbumBase.vue:87
+#: front/src/components/library/ArtistBase.vue:99
+#: front/src/components/library/TagDetail.vue:11
+#: front/src/components/library/TrackBase.vue:103
+#: front/src/components/manage/moderation/ReportCard.vue:128
 msgctxt "Content/Moderation/Link"
 msgid "Open in moderation interface"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:31
-#: front/src/views/admin/library/ArtistDetail.vue:30
-#: front/src/views/admin/library/TrackDetail.vue:30
+#: front/src/views/admin/library/AlbumDetail.vue:37
+#: front/src/views/admin/library/ArtistDetail.vue:35
+#: front/src/views/admin/library/TagDetail.vue:21
+#: front/src/views/admin/library/TrackDetail.vue:36
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open local profile"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:46
-#: front/src/views/admin/library/ArtistDetail.vue:45
-#: front/src/views/admin/library/TrackDetail.vue:45
+#: front/src/views/admin/library/AlbumDetail.vue:52
+#: front/src/views/admin/library/ArtistDetail.vue:50
+#: front/src/views/admin/library/TrackDetail.vue:51
 #, fuzzy
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open on MusicBrainz"
@@ -2974,10 +3210,10 @@ msgctxt "Content/Moderation/Link/Verb"
 msgid "Open profile"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:54
-#: front/src/views/admin/library/ArtistDetail.vue:53
+#: front/src/views/admin/library/AlbumDetail.vue:60
+#: front/src/views/admin/library/ArtistDetail.vue:58
 #: front/src/views/admin/library/LibraryDetail.vue:49
-#: front/src/views/admin/library/TrackDetail.vue:53
+#: front/src/views/admin/library/TrackDetail.vue:59
 #: front/src/views/admin/library/UploadDetail.vue:50
 #: front/src/views/admin/moderation/AccountsDetail.vue:52
 msgctxt "Content/Moderation/Link/Verb"
@@ -3000,6 +3236,7 @@ msgstr "Legg til filter for å tilpasse din radiostasjon"
 #: src/components/library/Radios.vue:41
 #: front/src/components/manage/library/EditsCardList.vue:37
 #: front/src/components/manage/users/UsersTable.vue:17
+#: front/src/views/admin/moderation/ReportsList.vue:42
 #: front/src/views/playlists/List.vue:25
 #, fuzzy
 msgctxt "Content/Search/Dropdown.Label/Noun"
@@ -3008,40 +3245,51 @@ msgstr "Rekkefølge"
 
 #: front/src/components/favorites/List.vue:24
 #: src/components/library/Albums.vue:15
-#: front/src/components/library/Artists.vue:15
+#: front/src/components/library/Artists.vue:19
 #: src/components/library/Radios.vue:33
 #: front/src/components/manage/library/AlbumsTable.vue:11
 #: front/src/components/manage/library/ArtistsTable.vue:11
 #: front/src/components/manage/library/EditsCardList.vue:29
 #: front/src/components/manage/library/LibrariesTable.vue:20
+#: front/src/components/manage/library/TagsTable.vue:11
 #: front/src/components/manage/library/TracksTable.vue:11
 #: front/src/components/manage/library/UploadsTable.vue:30
 #: front/src/components/manage/moderation/AccountsTable.vue:11
-#: front/src/components/manage/moderation/DomainsTable.vue:9
+#: front/src/components/manage/moderation/DomainsTable.vue:17
 #: front/src/components/manage/users/InvitationsTable.vue:9
 #: front/src/components/manage/users/UsersTable.vue:9
+#: front/src/views/admin/moderation/ReportsList.vue:34
 #: front/src/views/content/libraries/FilesTable.vue:21
 #: front/src/views/playlists/List.vue:17
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Ordering"
 msgstr "Rekkefølge"
 
-#: front/src/components/library/Albums.vue:23
-#: src/components/library/Artists.vue:23
+#: front/src/components/library/Albums.vue:27
+#: src/components/library/Artists.vue:27
 #: front/src/components/manage/library/AlbumsTable.vue:19
 #: front/src/components/manage/library/ArtistsTable.vue:19
 #: front/src/components/manage/library/LibrariesTable.vue:28
+#: front/src/components/manage/library/TagsTable.vue:19
 #: front/src/components/manage/library/TracksTable.vue:19
 #: front/src/components/manage/library/UploadsTable.vue:38
 #: front/src/components/manage/moderation/AccountsTable.vue:19
-#: front/src/components/manage/moderation/DomainsTable.vue:17
+#: front/src/components/manage/moderation/DomainsTable.vue:25
 #: front/src/views/content/libraries/FilesTable.vue:29
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Ordering direction"
 msgstr "Rekkefølge"
 
+#: front/src/components/mixins/Translations.vue:48
+#: front/src/components/mixins/Translations.vue:49
+msgctxt "Content/Moderation/Dropdown"
+msgid "Other"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:143
 #: front/src/components/manage/users/InvitationsTable.vue:38
-msgctxt "Content/Admin/Table.Label"
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Owner"
 msgstr "Eier"
 
@@ -3061,12 +3309,15 @@ msgctxt "Content/*/Hidden text/Noun"
 msgid "Pagination"
 msgstr ""
 
-#: front/src/components/auth/Login.vue:33 src/components/auth/Signup.vue:40
-msgctxt "Content/*/Input.Label"
+#: front/src/components/auth/LoginForm.vue:32
+#: src/components/auth/Settings.vue:291
+#: front/src/components/auth/SignupForm.vue:36
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Password"
 msgstr "Passord"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:94
+#: front/src/components/auth/SubsonicTokenForm.vue:100
 msgctxt "Content/Settings/Message"
 msgid "Password updated"
 msgstr "Passord oppdatert"
@@ -3076,12 +3327,12 @@ msgctxt "Content/Signup/Card.Title"
 msgid "Password updated successfully"
 msgstr "Passord oppdatert"
 
-#: front/src/components/audio/Player.vue:628
+#: front/src/components/audio/Player.vue:654
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Pause track"
 msgstr "Sett spor på pause"
 
-#: front/src/components/ShortcutsModal.vue:59
+#: front/src/components/ShortcutsModal.vue:96
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Pause/play the current track"
 msgstr ""
@@ -3110,7 +3361,7 @@ msgctxt "Content/Library/Label"
 msgid "Pending files"
 msgstr "Ventende filer"
 
-#: front/src/components/Sidebar.vue:225
+#: front/src/components/Sidebar.vue:232
 msgctxt "Sidebar/Notifications/Hidden text"
 msgid "Pending follow requests"
 msgstr "Ventende følgingsforespørsler"
@@ -3122,89 +3373,80 @@ msgctxt "Content/Admin/*/Noun"
 msgid "Pending review"
 msgstr "Ventende filer"
 
-#: front/src/components/Sidebar.vue:226
+#: front/src/components/Sidebar.vue:233
 #, fuzzy
 msgctxt "Sidebar/Moderation/Hidden text"
 msgid "Pending review edits"
 msgstr "Ventende forespørsler"
 
+#: front/src/components/auth/Settings.vue:176
 #: front/src/components/manage/users/UsersTable.vue:42
 #: front/src/views/admin/moderation/AccountsDetail.vue:166
-msgctxt "Content/Admin/Table.Label/Noun"
-msgid "Permissions"
-msgstr "Tilganger"
-
-#: front/src/components/auth/Settings.vue:176
 msgctxt "Content/*/*/Noun"
 msgid "Permissions"
 msgstr "Tilganger"
 
 #: front/src/components/audio/PlayButton.vue:9
-#: front/src/components/library/TrackBase.vue:26
+#: front/src/components/library/TrackBase.vue:24
 msgctxt "*/Queue/Button.Label/Short, Verb"
 msgid "Play"
 msgstr "Spill av"
 
 #: front/src/components/audio/album/Card.vue:48
-#: front/src/components/audio/artist/Card.vue:44
-#: front/src/components/library/AlbumBase.vue:20
+#: front/src/components/library/AlbumBase.vue:21
 #: front/src/components/library/AlbumDetail.vue:11
 #: src/views/playlists/Detail.vue:24
 msgctxt "Content/Queue/Button.Label/Short, Verb"
 msgid "Play all"
 msgstr "Spill av alle"
 
-#: front/src/components/library/ArtistBase.vue:31
+#: front/src/components/library/ArtistBase.vue:32
 msgctxt "Content/Artist/Button.Label/Verb"
 msgid "Play all albums"
 msgstr "Spill av alle album"
 
-#: front/src/components/audio/PlayButton.vue:76
+#: front/src/components/audio/PlayButton.vue:92
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play next"
 msgstr "Spill neste"
 
-#: front/src/components/ShortcutsModal.vue:67
+#: front/src/components/ShortcutsModal.vue:120
 #, fuzzy
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Play next track"
 msgstr "Spill spor"
 
-#: front/src/components/audio/PlayButton.vue:74
+#: front/src/components/audio/PlayButton.vue:90
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play now"
 msgstr "Spill nå"
 
-#: front/src/components/ShortcutsModal.vue:63
+#: front/src/components/ShortcutsModal.vue:116
 #, fuzzy
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Play previous track"
 msgstr "Forrige spor"
 
-#: front/src/components/audio/PlayButton.vue:77
+#: front/src/components/audio/PlayButton.vue:93
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play similar songs"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:224
+#: front/src/components/Sidebar.vue:231
 #, fuzzy
 msgctxt "Sidebar/Player/Hidden text"
 msgid "Play this track"
 msgstr "Spill spor"
 
-#: front/src/components/audio/Player.vue:627
+#: front/src/components/audio/Player.vue:653
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Play track"
 msgstr "Spill spor"
 
-#: front/src/components/audio/PlayButton.vue:82
+#: front/src/components/mixins/Report.vue:66 src/views/playlists/Detail.vue:121
+#: front/src/components/mixins/Report.vue:67
 #, fuzzy
-msgctxt "*/Queue/Button/Title"
-msgid "Play..."
-msgstr "Spill av"
-
-#: front/src/views/playlists/Detail.vue:91
-msgctxt "Head/Playlist/Title"
+msgctxt "*/*/*"
 msgid "Playlist"
 msgstr "Spilleliste"
 
@@ -3241,33 +3483,30 @@ msgctxt "Content/Playlist/Dropdown.Label"
 msgid "Playlist visibility"
 msgstr "Spillelistesynlighet"
 
-#: front/src/components/mixins/Translations.vue:88
-#: front/src/components/mixins/Translations.vue:89
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Playlists"
-msgstr "Spillelister"
-
 #: front/src/components/Sidebar.vue:71 src/components/library/Home.vue:16
-#: front/src/components/library/Library.vue:16 src/views/admin/Settings.vue:83
-#: front/src/views/admin/library/AlbumDetail.vue:173
-#: front/src/views/admin/library/ArtistDetail.vue:162
-#: front/src/views/admin/library/TrackDetail.vue:225
+#: front/src/components/library/Library.vue:16
+#: front/src/components/mixins/Translations.vue:100
+#: src/views/admin/Settings.vue:83
+#: front/src/views/admin/library/AlbumDetail.vue:179
+#: front/src/views/admin/library/ArtistDetail.vue:167
+#: front/src/views/admin/library/TrackDetail.vue:231
 #: src/views/playlists/List.vue:106
+#: front/src/components/mixins/Translations.vue:101
 msgctxt "*/*/*"
 msgid "Playlists"
 msgstr "Spillelister"
 
-#: front/src/components/Home.vue:56
-msgctxt "Content/Home/List item"
-msgid "Playlists? We got them"
-msgstr "Spillelister? Vi har dem"
+#: front/src/components/audio/EmbedWizard.vue:9
+msgctxt "Content/Embed/Message"
+msgid "Please contact your admins and ask them to update the corresponding setting."
+msgstr ""
 
 #: front/src/components/auth/Settings.vue:79
 msgctxt "Content/Settings/Error message.List item/Call to action"
 msgid "Please double-check your password is correct"
 msgstr "Dobbeltsjekk at passordet ditt stemmer"
 
-#: front/src/components/auth/Login.vue:9
+#: front/src/components/auth/LoginForm.vue:5
 msgctxt "Content/Login/Error message.List item/Call to action"
 msgid "Please double-check your username/password couple is correct"
 msgstr "Dobbeltsjekk at brukernavnet/passordet ditt stemmer"
@@ -3277,25 +3516,28 @@ msgctxt "Content/Settings/Paragraph"
 msgid "PNG, GIF or JPG. At most 2MB. Will be downscaled to 400x400px."
 msgstr "PNG, GIF eller JPG. Høyst 2MB. Vil bli nedskalert til 400x400px."
 
-#: front/src/views/admin/library/TrackDetail.vue:137
+#: front/src/components/About.vue:72
+msgctxt "Content/About/Header/Name"
+msgid "Pod configuration"
+msgstr ""
+
+#: front/src/views/admin/library/TrackDetail.vue:143 src/edits.js:70
 #, fuzzy
-msgctxt "*/*/*/Noun"
+msgctxt "*/*/*/Short, Noun"
 msgid "Position"
 msgstr "Beskrivelse"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:118
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Prevent account or domain from triggering notifications, except from "
-"followers."
+msgid "Prevent account or domain from triggering notifications, except from followers."
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:33
+#: front/src/components/audio/EmbedWizard.vue:43
 msgctxt "Popup/Embed/Title/Noun"
 msgid "Preview"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:626
+#: front/src/components/audio/Player.vue:652
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Previous track"
 msgstr "Forrige spor"
@@ -3306,7 +3548,7 @@ msgctxt "Content/Settings/Dropdown/Short"
 msgid "Private"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:43
+#: front/src/views/content/remote/Card.vue:56
 #, fuzzy
 msgctxt "Content/Library/Card.List item"
 msgid "Problem during scanning"
@@ -3328,15 +3570,21 @@ msgctxt "Content/Library/Tab.Title/Short"
 msgid "Processing"
 msgstr "Behandler"
 
-#: front/src/components/mixins/Translations.vue:68
-#: front/src/components/mixins/Translations.vue:69
+#: front/src/components/mixins/Translations.vue:80
+#: front/src/components/mixins/Translations.vue:81
 #, fuzzy
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Profile"
 msgstr "Feilaktige filer"
 
+#: front/src/components/auth/SignupForm.vue:5
+#, fuzzy
+msgctxt "Content/Signup/Form/Paragraph"
+msgid "Public registrations are not possible on this instance. You will need an invitation code to sign up."
+msgstr "Registreringer er lukket på denne instansen, du trenger en invitasjonskode for å registrere deg."
+
 #: front/src/components/manage/moderation/AccountsTable.vue:188
-#: front/src/components/manage/moderation/DomainsTable.vue:168
+#: front/src/components/manage/moderation/DomainsTable.vue:186
 #: front/src/views/content/libraries/Quota.vue:36
 #: front/src/views/content/libraries/Quota.vue:39
 #: front/src/views/content/libraries/Quota.vue:62
@@ -3367,7 +3615,7 @@ msgctxt "Sidebar/Queue/Tab.Title/Noun"
 msgid "Queue"
 msgstr "Kø"
 
-#: front/src/components/audio/Player.vue:322
+#: front/src/components/audio/Player.vue:329
 msgctxt "Content/Queue/Message"
 msgid "Queue shuffled!"
 msgstr "Spillekø omstokket."
@@ -3399,16 +3647,12 @@ msgstr "Radiostasjon oppdatert"
 
 #: front/src/components/library/Library.vue:13
 #: src/components/library/Radios.vue:142
+#: front/src/components/mixins/Translations.vue:104
+#: front/src/components/mixins/Translations.vue:105
 msgctxt "*/*/*"
 msgid "Radios"
 msgstr "Radiostasjoner"
 
-#: front/src/components/mixins/Translations.vue:92
-#: front/src/components/mixins/Translations.vue:93
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Radios"
-msgstr "Radiostasjoner"
-
 #: front/src/components/auth/ApplicationForm.vue:151
 msgctxt "Content/OAuth Scopes/Label/Verb"
 msgid "Read"
@@ -3435,15 +3679,15 @@ msgctxt "Content/Moderation/*/Noun"
 msgid "Reason"
 msgstr ""
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:251
-#: front/src/views/admin/moderation/DomainsDetail.vue:179
+#: front/src/views/admin/moderation/AccountsDetail.vue:252
+#: front/src/views/admin/moderation/DomainsDetail.vue:216
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Received library follows"
 msgstr ""
 
-#: front/src/components/manage/moderation/DomainsTable.vue:40
-#: front/src/components/mixins/Translations.vue:62
-#: front/src/components/mixins/Translations.vue:63
+#: front/src/components/manage/moderation/DomainsTable.vue:48
+#: front/src/components/mixins/Translations.vue:74
+#: front/src/components/mixins/Translations.vue:75
 msgctxt "Content/Moderation/*/Noun"
 msgid "Received messages"
 msgstr ""
@@ -3464,6 +3708,12 @@ msgctxt "Content/Home/Title"
 msgid "Recently added"
 msgstr "Nylig lagt til"
 
+#: front/src/components/Home.vue:167
+#, fuzzy
+msgctxt "Content/Home/Title"
+msgid "Recently added albums"
+msgstr "Nylig lagt til"
+
 #: front/src/components/library/Home.vue:11
 msgctxt "Content/Home/Title"
 msgid "Recently favorited"
@@ -3493,14 +3743,14 @@ msgctxt "Popup/*/Message.Title"
 msgid "Refresh error"
 msgstr "Gjenoppfrisk"
 
-#: front/src/views/admin/library/AlbumDetail.vue:50
-#: front/src/views/admin/library/ArtistDetail.vue:49
-#: front/src/views/admin/library/TrackDetail.vue:49
+#: front/src/views/admin/library/AlbumDetail.vue:56
+#: front/src/views/admin/library/ArtistDetail.vue:54
+#: front/src/views/admin/library/TrackDetail.vue:55
 msgctxt "Content/Moderation/Button/Verb"
 msgid "Refresh from remote server"
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:127
+#: front/src/views/admin/moderation/DomainsDetail.vue:164
 msgctxt "Content/Moderation/Button.Label/Verb"
 msgid "Refresh node info"
 msgstr ""
@@ -3513,9 +3763,7 @@ msgstr "Synkende"
 
 #: front/src/components/federation/FetchButton.vue:80
 msgctxt "Popup/*/Message.Content"
-msgid ""
-"Refresh request wasn't proceed in time by our server. It will be processed "
-"later."
+msgid "Refresh request wasn't proceed in time by our server. It will be processed later."
 msgstr ""
 
 #: front/src/components/federation/FetchButton.vue:16
@@ -3539,16 +3787,13 @@ msgctxt "Popup/*/Title"
 msgid "Refreshing object from remote…"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:9
-msgctxt "Content/Signup/Form/Paragraph"
-msgid ""
-"Registration are closed on this instance, you will need an invitation code "
-"to signup."
-msgstr ""
-"Registreringer er lukket på denne instansen, du trenger en invitasjonskode "
-"for å registrere deg."
+#: front/src/components/About.vue:86
+#, fuzzy
+msgctxt "*/*/*"
+msgid "Registrations"
+msgstr "Administrasjon"
 
-#: front/src/components/manage/users/UsersTable.vue:71
+#: front/src/components/manage/users/UsersTable.vue:72
 #, fuzzy
 msgctxt "Content/Admin/Table, User role"
 msgid "Regular user"
@@ -3575,8 +3820,8 @@ msgid "Rejected"
 msgstr "Avslått"
 
 #: front/src/components/manage/library/AlbumsTable.vue:43
-#: front/src/components/mixins/Translations.vue:44 src/edits.js:28
-#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:54 src/edits.js:43
+#: front/src/components/mixins/Translations.vue:55
 #, fuzzy
 msgctxt "Content/*/*/Noun"
 msgid "Release date"
@@ -3587,6 +3832,11 @@ msgctxt "Content/Library/Paragraph"
 msgid "Remaining storage space"
 msgstr ""
 
+#: front/src/views/Notifications.vue:18 src/views/Notifications.vue:52
+msgctxt "Content/Notifications/Label"
+msgid "Remind me in:"
+msgstr ""
+
 #: front/src/views/content/remote/Home.vue:6
 msgctxt "Content/Library/Title/Noun"
 msgid "Remote libraries"
@@ -3594,12 +3844,8 @@ msgstr "Bibliotek annensteds hen"
 
 #: front/src/views/content/remote/Home.vue:7
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Remote libraries are owned by other users on the network. You can access "
-"them as long as they are public or you are granted access."
-msgstr ""
-"Bibliotek annensteds hen eies av andre brukere på nettverket. Du kan få "
-"tilgang til dem så lenge de er offentlige eller du innvilges tilgang."
+msgid "Remote libraries are owned by other users on the network. You can access them as long as they are public or you are granted access."
+msgstr "Bibliotek annensteds hen eies av andre brukere på nettverket. Du kan få tilgang til dem så lenge de er offentlige eller du innvilges tilgang."
 
 #: front/src/components/library/radios/Filter.vue:59
 msgctxt "Content/Radio/Button.Label/Verb"
@@ -3617,6 +3863,13 @@ msgctxt "Content/Moderation/Button.Label"
 msgid "Remove filter"
 msgstr "Fjern avatar"
 
+#: front/src/components/manage/moderation/DomainsTable.vue:198
+#: front/src/views/admin/moderation/DomainsDetail.vue:39
+#, fuzzy
+msgctxt "Content/Moderation/Action/Verb"
+msgid "Remove from allow-list"
+msgstr "Fjern fra favoritter"
+
 #: front/src/components/favorites/TrackFavoriteIcon.vue:26
 msgctxt "Content/Track/Icon.Tooltip/Verb"
 msgid "Remove from favorites"
@@ -3624,43 +3877,106 @@ msgstr "Fjern fra favoritter"
 
 #: front/src/views/content/libraries/Quota.vue:38
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded but yet to be processed tracks completely, adding the "
-"corresponding data to your quota."
+msgid "Removes uploaded but yet to be processed tracks completely, adding the corresponding data to your quota."
 msgstr ""
 
 #: front/src/views/content/libraries/Quota.vue:64
 #, fuzzy
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded tracks skipped during the import processes completely, "
-"adding the corresponding data to your quota."
-msgstr ""
-"Dette vil fjerne spor som har blitt opplastet men ignorert under "
-"importprosessen permanent, og du vil få tilbake tilsvarende kvote."
+msgid "Removes uploaded tracks skipped during the import processes completely, adding the corresponding data to your quota."
+msgstr "Dette vil fjerne spor som har blitt opplastet men ignorert under importprosessen permanent, og du vil få tilbake tilsvarende kvote."
 
 #: front/src/views/content/libraries/Quota.vue:90
 #, fuzzy
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded tracks that could not be processed by the server "
-"completely, adding the corresponding data to your quota."
+msgid "Removes uploaded tracks that could not be processed by the server completely, adding the corresponding data to your quota."
+msgstr "Dette vil fjerne spor som har blitt opplastet men ikke har blitt behandlet av tjeneren permanent, og du vil få tilbake tilsvarende kvote."
+
+#: front/src/components/audio/PlayButton.vue:94
+#, fuzzy
+msgctxt "*/Queue/Dropdown/Button/Title"
+msgid "Replace current queue"
+msgstr "Legg til i kø"
+
+#: front/src/components/mixins/Report.vue:6 src/components/mixins/Report.vue:7
+msgctxt "*/Moderation/*/Verb"
+msgid "Report @%{ username }…"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:5
+msgctxt "Content/Moderation/Card/Short"
+msgid "Report %{ id }"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:139
+msgctxt "*/Moderation/Message"
+msgid "Report successfully submitted, thank you"
+msgstr ""
+
+#: front/src/components/mixins/Report.vue:36
+#: src/components/mixins/Report.vue:37
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this album…"
+msgstr "Slett dette biblioteket?"
+
+#: front/src/components/mixins/Report.vue:50
+#: src/components/mixins/Report.vue:51
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this artist…"
+msgstr "Legg til i denne spillelisten"
+
+#: front/src/components/mixins/Report.vue:72
+#: src/components/mixins/Report.vue:73
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this library…"
+msgstr "Slett dette biblioteket?"
+
+#: front/src/components/mixins/Report.vue:61
+#: src/components/mixins/Report.vue:62
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this playlist…"
+msgstr "Legg til i denne spillelisten"
+
+#: front/src/components/mixins/Report.vue:23
+#: src/components/mixins/Report.vue:24
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this track…"
+msgstr "Rediger instans-info"
+
+#: front/src/components/audio/PlayButton.vue:95
+msgctxt "*/Moderation/*/Button/Label,Verb"
+msgid "Report…"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:117
+msgctxt "Content/*/*/Short"
+msgid "Reported object"
 msgstr ""
-"Dette vil fjerne spor som har blitt opplastet men ikke har blitt behandlet "
-"av tjeneren permanent, og du vil få tilbake tilsvarende kvote."
 
-#: front/src/components/auth/SubsonicTokenForm.vue:33
-#: front/src/components/auth/SubsonicTokenForm.vue:36
+#: front/src/views/admin/moderation/Base.vue:5
+#: front/src/views/admin/moderation/ReportsList.vue:3
+#: front/src/views/admin/moderation/ReportsList.vue:208
+msgctxt "*/Moderation/*/Noun"
+msgid "Reports"
+msgstr ""
+
+#: front/src/components/auth/SubsonicTokenForm.vue:38
+#: front/src/components/auth/SubsonicTokenForm.vue:41
 msgctxt "*/Settings/Button.Label/Verb"
 msgid "Request a new password"
 msgstr "Forespør nytt passord"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:34
+#: front/src/components/auth/SubsonicTokenForm.vue:39
 msgctxt "Popup/Settings/Title"
 msgid "Request a new Subsonic API password?"
 msgstr "Forespør et nytt Subsonic API-passord?"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:42
+#: front/src/components/auth/SubsonicTokenForm.vue:47
 msgctxt "Content/Settings/Button.Label/Verb"
 msgid "Request a password"
 msgstr "Forespør et passord"
@@ -3670,36 +3986,53 @@ msgctxt "Popup/*/Loading.Title"
 msgid "Requesting a fetch…"
 msgstr ""
 
-#: front/src/components/library/EditForm.vue:82
+#: front/src/components/library/EditForm.vue:94
 msgctxt "Content/Library/Button.Label"
-msgid "Reset to initial value: %{ value }"
+msgid "Reset to initial value"
 msgstr ""
 
-#: front/src/components/auth/Login.vue:35 src/views/auth/PasswordReset.vue:4
-#: front/src/views/auth/PasswordReset.vue:53
+#: front/src/components/auth/LoginForm.vue:34
+#: src/views/auth/PasswordReset.vue:4 front/src/views/auth/PasswordReset.vue:53
 msgctxt "*/Login/*/Verb"
 msgid "Reset your password"
 msgstr "Tilbakestill passordet ditt"
 
+#: front/src/components/manage/moderation/ReportCard.vue:83
+#, fuzzy
+msgctxt "Content/*/*/Noun"
+msgid "Resolution date"
+msgstr "Opprettelsesdato"
+
+#: front/src/components/manage/moderation/ReportCard.vue:218
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Resolve"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:62
+#: front/src/views/admin/moderation/ReportsList.vue:20
+msgctxt "Content/*/*/Short"
+msgid "Resolved"
+msgstr ""
+
 #: front/src/views/content/libraries/FilesTable.vue:223
 #, fuzzy
 msgctxt "Content/Library/Dropdown/Verb"
 msgid "Restart import"
 msgstr "Opprett import"
 
+#: front/src/components/library/EditForm.vue:31
+msgctxt "Content/Library/Button.Label"
+msgid "Restrict to unreviewed edits"
+msgstr ""
+
 #: front/src/components/favorites/List.vue:39
-#: src/components/library/Albums.vue:30
-#: front/src/components/library/Artists.vue:30
+#: src/components/library/Albums.vue:34
+#: front/src/components/library/Artists.vue:34
 #: src/components/library/Radios.vue:52 front/src/views/playlists/List.vue:32
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Results per page"
 msgstr "Resultater per side"
 
-#: front/src/components/library/EditForm.vue:31
-msgctxt "Content/Library/Button.Label"
-msgid "Retrict to unreviewed edits"
-msgstr ""
-
 #: front/src/views/auth/EmailConfirm.vue:17
 #, fuzzy
 msgctxt "Content/Signup/Link/Verb"
@@ -3732,55 +4065,56 @@ msgctxt "Content/Moderation/Card.Title/Noun"
 msgid "Rule"
 msgstr ""
 
-#: front/src/components/admin/SettingsGroup.vue:67
+#: front/src/components/About.vue:28 src/components/About.vue:56
+msgctxt "Content/About/Header"
+msgid "Rules"
+msgstr ""
+
+#: front/src/components/admin/SettingsGroup.vue:75
 #: front/src/components/library/radios/Builder.vue:34
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Save"
 msgstr "Lagre"
 
-#: front/src/views/content/remote/Card.vue:175
+#: front/src/views/content/remote/Card.vue:203
 msgctxt "Content/Library/Message"
 msgid "Scan launched"
 msgstr "Skanning igangsatt"
 
-#: front/src/views/content/remote/Card.vue:67
+#: front/src/views/content/remote/Card.vue:80
 #, fuzzy
 msgctxt "Content/Library/Card.Button.Label/Verb"
 msgid "Scan now"
 msgstr "Spill nå"
 
-#: front/src/views/content/remote/Card.vue:35
+#: front/src/views/content/remote/Card.vue:48
 msgctxt "Content/Library/Card.List item"
 msgid "Scan pending"
 msgstr "Skanning venter"
 
-#: front/src/views/content/remote/Card.vue:176
+#: front/src/views/content/remote/Card.vue:204
 msgctxt "Content/Library/Message"
 msgid "Scan skipped (previous scan is too recent)"
 msgstr "Skanning hoppet over (forrige skanning er for fersk)"
 
-#: front/src/views/content/remote/Card.vue:47
+#: front/src/views/content/remote/Card.vue:60
 #, fuzzy
 msgctxt "Content/Library/Card.List item"
 msgid "Scanned"
 msgstr "Skanning igangsatt"
 
-#: front/src/views/content/remote/Card.vue:51
+#: front/src/views/content/remote/Card.vue:64
 msgctxt "Content/Library/Card.List item"
 msgid "Scanned with errors"
 msgstr "Skannet med feil"
 
-#: front/src/views/content/remote/Card.vue:39
+#: front/src/views/content/remote/Card.vue:52
 #, fuzzy
 msgctxt "Content/Library/Card.List item"
 msgid "Scanning… (%{ progress }%)"
 msgstr "Skanner… (%{ progress }%)"
 
 #: front/src/components/auth/ApplicationForm.vue:22
-msgctxt "Content/Applications/Input.Label/Noun"
-msgid "Scopes"
-msgstr ""
-
 #: front/src/components/auth/Settings.vue:226
 msgctxt "Content/*/*/Noun"
 msgid "Scopes"
@@ -3793,12 +4127,14 @@ msgstr ""
 #: front/src/components/manage/library/ArtistsTable.vue:5
 #: front/src/components/manage/library/EditsCardList.vue:6
 #: front/src/components/manage/library/LibrariesTable.vue:5
+#: front/src/components/manage/library/TagsTable.vue:5
 #: front/src/components/manage/library/TracksTable.vue:5
 #: front/src/components/manage/library/UploadsTable.vue:5
 #: front/src/components/manage/moderation/AccountsTable.vue:5
 #: front/src/components/manage/moderation/DomainsTable.vue:5
 #: front/src/components/manage/users/InvitationsTable.vue:5
 #: front/src/components/manage/users/UsersTable.vue:5
+#: front/src/views/admin/moderation/ReportsList.vue:8
 #: front/src/views/content/libraries/FilesTable.vue:5
 #: src/views/playlists/List.vue:13
 msgctxt "Content/Search/Input.Label/Noun"
@@ -3811,6 +4147,7 @@ msgid "Search a remote library"
 msgstr "Søk i et bibliotek annensteds hen"
 
 #: front/src/components/manage/library/EditsCardList.vue:211
+#: front/src/views/admin/moderation/ReportsList.vue:207
 #, fuzzy
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by account, summary, domain…"
@@ -3849,7 +4186,12 @@ msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by domain, username, bio…"
 msgstr "Søk etter brukernavn, e-postadresse, kode…"
 
-#: front/src/components/manage/moderation/DomainsTable.vue:151
+#: front/src/components/manage/library/TagsTable.vue:165
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by name"
+msgstr ""
+
+#: front/src/components/manage/moderation/DomainsTable.vue:168
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by name…"
 msgstr ""
@@ -3866,13 +4208,13 @@ msgctxt "Content/Admin/Input.Placeholder/Verb"
 msgid "Search by username, e-mail address, code…"
 msgstr "Søk etter brukernavn, e-postadresse, kode…"
 
-#: front/src/components/manage/users/UsersTable.vue:163
+#: front/src/components/manage/users/UsersTable.vue:164
 #, fuzzy
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by username, e-mail address, name…"
 msgstr "Søk etter brukernavn, e-post, navn…"
 
-#: front/src/components/audio/SearchBar.vue:20
+#: front/src/components/audio/SearchBar.vue:27
 #, fuzzy
 msgctxt "Sidebar/Search/Input.Placeholder"
 msgid "Search for artists, albums, tracks…"
@@ -3883,16 +4225,30 @@ msgctxt "Content/Search/Title"
 msgid "Search for some music"
 msgstr "Søk etter noe musikk"
 
-#: front/src/components/library/AlbumBase.vue:57
-#: front/src/components/library/ArtistBase.vue:68
-#: front/src/components/library/TrackBase.vue:76
+#: front/src/components/library/TagsSelector.vue:6
+#, fuzzy
+msgctxt "*/Dropdown/Placeholder/Verb"
+msgid "Search for tags…"
+msgstr "Søk etter artister, album, spor…"
+
+#: front/src/components/library/AlbumBase.vue:66
+#: front/src/components/library/ArtistBase.vue:77
+#: front/src/components/library/TrackBase.vue:82
+#, fuzzy
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Search on Discogs"
+msgstr "Søk etter noe musikk"
+
+#: front/src/components/library/AlbumBase.vue:58
+#: front/src/components/library/ArtistBase.vue:69
+#: front/src/components/library/TrackBase.vue:74
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Search on Wikipedia"
 msgstr "Søk på Wikipedia"
 
 #: front/src/components/library/Library.vue:35
-#: src/views/admin/library/Base.vue:32
-#: front/src/views/admin/moderation/Base.vue:22
+#: src/views/admin/library/Base.vue:35
+#: front/src/views/admin/moderation/Base.vue:44
 #: src/views/admin/users/Base.vue:21 front/src/views/content/Base.vue:19
 msgctxt "Menu/*/Hidden text"
 msgid "Secondary menu"
@@ -3903,6 +4259,26 @@ msgctxt "Content/Admin/Menu.Title"
 msgid "Sections"
 msgstr "Seksjoner"
 
+#: front/src/components/ShortcutsModal.vue:108
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek backwards 30s"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:100
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek backwards 5s"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:112
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek forwards 30s"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:104
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek forwards 5s"
+msgstr ""
+
 #: front/src/components/library/radios/Builder.vue:46
 msgctxt "Content/Radio/Dropdown.Placeholder/Verb"
 msgid "Select a filter"
@@ -3921,9 +4297,14 @@ msgctxt "Content/*/Link/Verb"
 msgid "Select only current page"
 msgstr "Velg kun gjeldende side"
 
-#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:108
-#: front/src/components/manage/users/UsersTable.vue:181
-#: front/src/views/admin/moderation/AccountsDetail.vue:506
+#: front/src/components/Home.vue:43
+msgctxt "Content/Home/Link"
+msgid "Server rules"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:112
+#: front/src/components/manage/users/UsersTable.vue:182
+#: front/src/views/admin/moderation/AccountsDetail.vue:526
 msgctxt "*/*/*/Noun"
 msgid "Settings"
 msgstr "Innstillinger"
@@ -3946,18 +4327,25 @@ msgstr "Del en lenke"
 #: front/src/views/content/libraries/Detail.vue:15
 #, fuzzy
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Share this link with other users so they can request access to your library."
-msgstr ""
-"Del denne lenken med andre brukere slik at de kan forespørre tilgang til "
-"ditt bibliotek."
+msgid "Share this link with other users so they can request access to your library."
+msgstr "Del denne lenken med andre brukere slik at de kan forespørre tilgang til ditt bibliotek."
 
 #: front/src/views/content/libraries/Detail.vue:14
-#: front/src/views/content/remote/Card.vue:77
+#: front/src/views/content/remote/Card.vue:90
 msgctxt "Content/Library/Title"
 msgid "Sharing link"
 msgstr "Delingslenke"
 
+#: front/src/components/audio/EmbedWizard.vue:5
+msgctxt "Content/Embed/Message"
+msgid "Sharing will not work because this pod doesn't allow anonymous users to access content."
+msgstr ""
+
+#: front/src/components/About.vue:156
+msgctxt "*/*/*/Verb"
+msgid "Show"
+msgstr ""
+
 #: front/src/components/audio/album/Card.vue:38
 #, fuzzy
 msgctxt "Content/Album/Card.Link/Verb"
@@ -3966,11 +4354,11 @@ msgid_plural "Show %{ count } more tracks"
 msgstr[0] "Vis %{ count } spor til"
 msgstr[1] "Vis %{ count } flere spor"
 
-#: front/src/components/audio/artist/Card.vue:30
+#: front/src/components/tags/List.vue:11
 #, fuzzy
-msgctxt "Content/Artist/Card.Link"
-msgid "Show 1 more album"
-msgid_plural "Show %{ count } more albums"
+msgctxt "Content/*/Button/Label/Verb"
+msgid "Show 1 more tag"
+msgid_plural "Show %{ count } more tags"
 msgstr[0] "Vis ett album til"
 msgstr[1] "Vis % { count } flere album"
 
@@ -3979,17 +4367,28 @@ msgctxt "Content/Library/Button.Label"
 msgid "Show all edits"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:42
+#: front/src/components/ShortcutsModal.vue:60
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Show available keyboard shortcuts"
 msgstr ""
 
-#: front/src/views/Notifications.vue:7
+#: front/src/components/common/ExpandableDiv.vue:7
+msgctxt "*/*/Button,Label"
+msgid "Show less"
+msgstr ""
+
+#: front/src/components/common/ExpandableDiv.vue:8
+#, fuzzy
+msgctxt "*/*/Button,Label"
+msgid "Show more"
+msgstr "Vis ett album til"
+
+#: front/src/views/Notifications.vue:72
 msgctxt "Content/Notifications/Form.Label/Verb"
 msgid "Show read notifications"
 msgstr "Vis lesningsmerkander"
 
-#: front/src/components/forms/PasswordInput.vue:26
+#: front/src/components/forms/PasswordInput.vue:42
 msgctxt "Content/Settings/Button.Tooltip/Verb"
 msgid "Show/hide password"
 msgstr "Vis/skjul passord"
@@ -3998,57 +4397,65 @@ msgstr "Vis/skjul passord"
 #: front/src/components/manage/library/ArtistsTable.vue:84
 #: front/src/components/manage/library/EditsCardList.vue:72
 #: front/src/components/manage/library/LibrariesTable.vue:110
+#: front/src/components/manage/library/TagsTable.vue:79
 #: front/src/components/manage/library/TracksTable.vue:95
 #: front/src/components/manage/library/UploadsTable.vue:144
 #: front/src/components/manage/moderation/AccountsTable.vue:88
-#: front/src/components/manage/moderation/DomainsTable.vue:74
+#: front/src/components/manage/moderation/DomainsTable.vue:85
 #: front/src/components/manage/users/InvitationsTable.vue:76
-#: front/src/components/manage/users/UsersTable.vue:87
+#: front/src/components/manage/users/UsersTable.vue:88
 #: front/src/views/content/libraries/FilesTable.vue:117
 msgctxt "Content/*/Paragraph"
 msgid "Showing results %{ start }-%{ end } on %{ total }"
 msgstr "Viser resultater %{ start }-%{ end } på %{ total }"
 
-#: front/src/components/ShortcutsModal.vue:83
+#: front/src/components/ShortcutsModal.vue:140
 #, fuzzy
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Shuffle queue"
 msgstr "Omstokk spillekøen"
 
-#: front/src/components/audio/Player.vue:641
+#: front/src/components/audio/Player.vue:667
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Shuffle your queue"
 msgstr "Omstokk spillekøen"
 
-#: front/src/components/auth/Signup.vue:97
+#: front/src/components/Home.vue:103
+#, fuzzy
+msgctxt "*/Signup/Title"
+msgid "Sign up"
+msgstr "Registrering"
+
+#: front/src/views/auth/Signup.vue:37
 msgctxt "*/Signup/Title"
 msgid "Sign Up"
 msgstr "Registrering"
 
+#: front/src/components/Home.vue:107
+msgctxt "Content/Home/Paragraph"
+msgid "Sign up now to keep a track of your favorites, create playlists, discover new content and much more!"
+msgstr ""
+
 #: front/src/components/manage/users/UsersTable.vue:40
 msgctxt "Content/Admin/Table.Label/Short, Noun (Value is a date)"
 msgid "Sign-up"
 msgstr "Registrering"
 
-#: front/src/components/mixins/Translations.vue:57
-#: front/src/views/admin/moderation/AccountsDetail.vue:197
-#: front/src/components/mixins/Translations.vue:58
+#: front/src/components/mixins/Translations.vue:69
+#: front/src/views/admin/moderation/AccountsDetail.vue:198
+#: front/src/components/mixins/Translations.vue:70
 msgctxt "Content/Admin/Table.Label/Noun"
 msgid "Sign-up date"
 msgstr "Registreringsdato"
 
-#: front/src/components/manage/library/UploadsTable.vue:65
-#: front/src/views/admin/library/UploadDetail.vue:219
-msgctxt "Content/*/*/Noun"
-msgid "Size"
-msgstr "Størrelse"
-
 #: front/src/components/library/FileUpload.vue:94
 #: front/src/components/library/TrackDetail.vue:39
-#: front/src/components/mixins/Translations.vue:54
+#: front/src/components/manage/library/UploadsTable.vue:65
+#: front/src/components/mixins/Translations.vue:66
+#: front/src/views/admin/library/UploadDetail.vue:219
 #: front/src/views/content/libraries/FilesTable.vue:61
-#: front/src/components/mixins/Translations.vue:55
-msgctxt "Content/Library/*/in MB"
+#: front/src/components/mixins/Translations.vue:67
+msgctxt "Content/*/*/Noun"
 msgid "Size"
 msgstr "Størrelse"
 
@@ -4065,7 +4472,7 @@ msgctxt "Content/Library/Label"
 msgid "Skipped files"
 msgstr "Ignorerte filer"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:89
+#: front/src/views/admin/moderation/DomainsDetail.vue:126
 msgctxt "Content/Moderation/Table.Label"
 msgid "Software"
 msgstr ""
@@ -4081,88 +4488,66 @@ msgctxt "Content/*/Paragraph"
 msgid "Sorry, the page you asked for does not exist:"
 msgstr "Siden du forespurte finnes ikke:"
 
-#: front/src/components/Footer.vue:49
+#: front/src/components/Footer.vue:57
 msgctxt "Footer/*/List item.Link"
 msgid "Source code"
 msgstr "Kildekode"
 
 #: front/src/components/auth/Profile.vue:23
-#: front/src/components/manage/users/UsersTable.vue:70
+#: front/src/components/manage/users/UsersTable.vue:71
 msgctxt "Content/Profile/User role"
 msgid "Staff member"
 msgstr "Ansatt medlem"
 
-#: front/src/components/audio/PlayButton.vue:23
+#: front/src/components/audio/PlayButton.vue:27
 #: src/components/radios/Button.vue:4
 #, fuzzy
 msgctxt "*/Queue/Button.Label/Short, Verb"
 msgid "Start radio"
 msgstr "Stopp radiostasjon"
 
-#: front/src/views/admin/Settings.vue:86
-msgctxt "Content/Admin/Menu"
+#: front/src/components/About.vue:170 src/components/Home.vue:53
+#: front/src/views/admin/Settings.vue:87
+#, fuzzy
+msgctxt "Content/Home/Header"
 msgid "Statistics"
 msgstr "Statistikk"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:490
+#: front/src/views/admin/moderation/AccountsDetail.vue:510
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this account"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this account"
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:371
+#: front/src/views/admin/moderation/DomainsDetail.vue:418
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this domain"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this domain"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:329
-#: front/src/views/admin/library/ArtistDetail.vue:328
-#: front/src/views/admin/library/LibraryDetail.vue:316
-#: front/src/views/admin/library/TrackDetail.vue:371
+#: front/src/views/admin/library/AlbumDetail.vue:346
+#: front/src/views/admin/library/ArtistDetail.vue:345
+#: front/src/views/admin/library/LibraryDetail.vue:356
+#: front/src/views/admin/library/TagDetail.vue:210
+#: front/src/views/admin/library/TrackDetail.vue:389
 #: front/src/views/admin/library/UploadDetail.vue:335
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this object"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this object"
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:115
-msgctxt "Content/Moderation/Table.Label (Value is Error message)"
-msgid "Status"
-msgstr "Status"
-
 #: front/src/components/library/FileUpload.vue:95
-msgctxt "Content/Library/Table.Label (Value is Uploading/Uploaded/Error)"
-msgid "Status"
-msgstr "Status"
-
-#: front/src/views/content/libraries/Detail.vue:28
-msgctxt "Content/Library.Federation/Table.Label (Value is Approved/Rejected)"
-msgid "Status"
-msgstr "Status"
-
+#: front/src/components/manage/library/EditsCardList.vue:12
+#: front/src/components/manage/moderation/ReportCard.vue:57
 #: front/src/components/manage/users/InvitationsTable.vue:17
 #: front/src/components/manage/users/InvitationsTable.vue:39
-msgctxt "Content/Admin/*/Noun (Value is Used/Not used)"
-msgid "Status"
-msgstr "Status"
-
 #: front/src/components/manage/users/UsersTable.vue:43
-msgctxt "Content/Admin/Table.Label/Noun (Value is Regular user/Admin)"
-msgid "Status"
-msgstr "Status"
-
-#: front/src/components/manage/library/EditsCardList.vue:12
-msgctxt ""
-"Content/Search/Dropdown.Label (Value is All/Pending "
-"review/Approved/Rejected)"
+#: front/src/views/admin/moderation/DomainsDetail.vue:152
+#: front/src/views/admin/moderation/ReportsList.vue:14
+#: front/src/views/content/libraries/Detail.vue:28
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Status"
 msgstr "Status"
 
-#: front/src/components/Sidebar.vue:174 src/components/radios/Button.vue:3
+#: front/src/components/Sidebar.vue:178 src/components/radios/Button.vue:3
 msgctxt "*/Player/Button.Label/Short, Verb"
 msgid "Stop radio"
 msgstr "Stopp radiostasjon"
@@ -4172,7 +4557,7 @@ msgctxt "*/*/Button.Label/Verb"
 msgid "Submit"
 msgstr "Send inn"
 
-#: front/src/components/library/EditForm.vue:98
+#: front/src/components/library/EditForm.vue:110
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Submit and apply edit"
 msgstr ""
@@ -4183,12 +4568,24 @@ msgctxt "Content/Library/Button.Label"
 msgid "Submit another edit"
 msgstr "Send inn en annen forespørsel"
 
-#: front/src/components/library/EditForm.vue:99
+#: front/src/components/moderation/ReportModal.vue:64
+#, fuzzy
+msgctxt "Popup/*/Button.Label"
+msgid "Submit report"
+msgstr "Send inn"
+
+#: front/src/components/library/EditForm.vue:111
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Submit suggestion"
 msgstr ""
 
-#: front/src/views/admin/Settings.vue:85
+#: front/src/components/manage/moderation/ReportCard.vue:17
+#, fuzzy
+msgctxt "Content/Moderation/*"
+msgid "Submitted by"
+msgstr "Send inn"
+
+#: front/src/views/admin/Settings.vue:86
 msgctxt "Content/Admin/Menu"
 msgid "Subsonic"
 msgstr "Subsonic"
@@ -4228,16 +4625,21 @@ msgctxt "Content/Library/Tab.Title/Short"
 msgid "Summary"
 msgstr "Sammendrag"
 
-#: front/src/components/library/EditForm.vue:87
+#: front/src/components/library/EditForm.vue:99
 msgctxt "*/*/*"
 msgid "Summary (optional)"
 msgstr ""
 
-#: front/src/components/Footer.vue:39
+#: front/src/components/Footer.vue:47
 msgctxt "Footer/*/Listitem.Link"
 msgid "Support forum"
 msgstr ""
 
+#: front/src/views/Notifications.vue:10
+msgctxt "Content/Notifications/Header"
+msgid "Support this Funkwhale pod"
+msgstr ""
+
 #: front/src/components/library/FileUpload.vue:85
 msgctxt "Content/Library/Paragraph"
 msgid "Supported extensions: %{ extensions }"
@@ -4249,26 +4651,48 @@ msgctxt "Content/Playlist/Paragraph"
 msgid "Syncing changes to server…"
 msgstr "Synkroniserer endringer til tjener…"
 
-#: front/src/components/audio/EmbedWizard.vue:25
+#: front/src/components/audio/SearchBar.vue:35
+msgctxt "*/*/*/Noun"
+msgid "Tag"
+msgstr ""
+
+#: front/src/views/admin/library/TagDetail.vue:61
+#, fuzzy
+msgctxt "Content/Moderation/Title"
+msgid "Tag data"
+msgstr "Spornavn"
+
+#: front/src/components/library/Albums.vue:23
+#: src/components/library/Artists.vue:15
+#: front/src/views/admin/library/Base.vue:23
+#: src/views/admin/library/TagsList.vue:24 front/src/edits.js:24
+#: src/edits.js:50 src/edits.js:91 src/entities.js:120
+msgctxt "*/*/*/Noun"
+msgid "Tags"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:44
+#: front/src/components/mixins/Translations.vue:45
+#, fuzzy
+msgctxt "Content/Moderation/Dropdown"
+msgid "Takedown request"
+msgstr "Ventende følgingsforespørsler"
+
+#: front/src/components/About.vue:35 src/components/About.vue:61
+msgctxt "Content/About/Header"
+msgid "Terms and privacy policy"
+msgstr ""
+
+#: front/src/components/audio/EmbedWizard.vue:35
 #: front/src/components/common/CopyInput.vue:3
 msgctxt "Content/*/Paragraph"
 msgid "Text copied to clipboard!"
 msgstr "Tekst kopiert til utklippstavle."
 
-#: front/src/components/Home.vue:26
-msgctxt "Content/Home/Paragraph"
-msgid ""
-"That's simple: we loved Grooveshark and we want to build something even "
-"better."
-msgstr ""
-"Det er enkelt. Vi elsket Grooveshark og vi ønsket å bygge noe enda bedre."
-
-#: front/src/views/admin/library/AlbumDetail.vue:75
+#: front/src/views/admin/library/AlbumDetail.vue:81
 #, fuzzy
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The album will be removed, as well as associated uploads, tracks, favorites "
-"and listening history. This action is irreversible."
+msgid "The album will be removed, as well as associated uploads, tracks, favorites and listening history. This action is irreversible."
 msgstr "Biblioteket og alle dets spor vil bli slettet. Dette kan ikke angres."
 
 #: front/src/components/auth/Authorize.vue:39
@@ -4276,18 +4700,15 @@ msgctxt "Content/Auth/Paragraph"
 msgid "The application is also requesting the following unknown permissions:"
 msgstr ""
 
-#: front/src/views/admin/library/ArtistDetail.vue:74
+#: front/src/views/admin/library/ArtistDetail.vue:79
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The artist will be removed, as well as associated uploads, tracks, albums, "
-"favorites and listening history. This action is irreversible."
+msgid "The artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible."
 msgstr ""
 
-#: front/src/components/Footer.vue:53
+#: front/src/components/Footer.vue:61
 msgctxt "Footer/*/List item.Link"
 msgid "The funkwhale logo was kindly designed and provided by Francis Gading."
-msgstr ""
-"Funkwhale-logoen ble på vennlig designet og tilbudt av Francis Gading."
+msgstr "Funkwhale-logoen ble på vennlig designet og tilbudt av Francis Gading."
 
 #: front/src/components/SetInstanceModal.vue:8
 msgctxt "Popup/Instance/Error message.List item"
@@ -4297,23 +4718,18 @@ msgstr ""
 #: front/src/views/content/libraries/Form.vue:34
 #, fuzzy
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"The library and all its tracks will be deleted. This can not be undone."
+msgid "The library and all its tracks will be deleted. This can not be undone."
 msgstr "Biblioteket og alle dets spor vil bli slettet. Dette kan ikke angres."
 
 #: front/src/views/admin/library/LibraryDetail.vue:61
 #, fuzzy
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The library will be removed, as well as associated uploads, and follows. "
-"This action is irreversible."
+msgid "The library will be removed, as well as associated uploads, and follows. This action is irreversible."
 msgstr "Biblioteket og alle dets spor vil bli slettet. Dette kan ikke angres."
 
 #: front/src/components/library/ImportStatusModal.vue:140
 msgctxt "Popup/Import/Error.Label"
-msgid ""
-"The metadata included in the file is invalid or some mandatory fields are "
-"missing."
+msgid "The metadata included in the file is invalid or some mandatory fields are missing."
 msgstr ""
 
 #: front/src/components/library/FileUpload.vue:38
@@ -4327,12 +4743,16 @@ msgctxt "Sidebar/Player/Error message.Paragraph"
 msgid "The next track will play automatically in a few seconds…"
 msgstr ""
 
-#: front/src/components/Home.vue:116
-msgctxt "Content/Home/List item"
-msgid ""
-"The plaform is free and open-source, you can install it and modify it "
-"without worries"
-msgstr "Plattformen er fri, du kan installere og endre den uten bekymringer"
+#: front/src/components/manage/moderation/NotesThread.vue:27
+#, fuzzy
+msgctxt "Content/Moderation/Paragraph"
+msgid "The note will be removed. This action is irreversible."
+msgstr "Biblioteket og alle dets spor vil bli slettet. Dette kan ikke angres."
+
+#: front/src/components/manage/moderation/ReportCard.vue:120
+msgctxt "Content/Moderation/Message"
+msgid "The object associated with this report was deleted."
+msgstr ""
 
 #: front/src/components/playlists/Form.vue:14
 #, fuzzy
@@ -4347,47 +4767,44 @@ msgstr ""
 
 #: front/src/components/federation/FetchButton.vue:13
 msgctxt "Popup/*/Message.Content"
-msgid ""
-"The remote server answered, but returned data was unsupported by Funkwhale."
+msgid "The remote server answered, but returned data was unsupported by Funkwhale."
 msgstr ""
 
 #: front/src/components/federation/FetchButton.vue:44
 msgctxt "*/*/Error"
-msgid "The remote server didn't answered fast enough"
+msgid "The remote server didn't respond quickly enough"
 msgstr ""
 
 #: front/src/components/federation/FetchButton.vue:50
 msgctxt "*/*/Error"
-msgid "The return server returned invalid JSON or JSON-LD data"
+msgid "The remote server returned invalid JSON or JSON-LD data"
 msgstr ""
 
 #: front/src/components/manage/library/AlbumsTable.vue:189
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected albums will be removed, as well as associated tracks, uploads, "
-"favorites and listening history. This action is irreversible."
+msgid "The selected albums will be removed, as well as associated tracks, uploads, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/components/manage/library/ArtistsTable.vue:179
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected artist will be removed, as well as associated uploads, tracks, "
-"albums, favorites and listening history. This action is irreversible."
+msgid "The selected artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/components/manage/library/LibrariesTable.vue:206
 #, fuzzy
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected library will be removed, as well as associated uploads and "
-"follows. This action is irreversible."
+msgid "The selected library will be removed, as well as associated uploads and follows. This action is irreversible."
+msgstr "Biblioteket og alle dets spor vil bli slettet. Dette kan ikke angres."
+
+#: front/src/components/manage/library/TagsTable.vue:180
+#, fuzzy
+msgctxt "Popup/*/Paragraph"
+msgid "The selected tag will be removed and unlinked with existing content, if any. This action is irreversible."
 msgstr "Biblioteket og alle dets spor vil bli slettet. Dette kan ikke angres."
 
 #: front/src/components/manage/library/TracksTable.vue:189
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected tracks will be removed, as well as associated uploads, "
-"favorites and listening history. This action is irreversible."
+msgid "The selected tracks will be removed, as well as associated uploads, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/components/manage/library/UploadsTable.vue:256
@@ -4409,8 +4826,13 @@ msgstr "Subsonic API-et er ikke tilgjengelig på denne Funkwhale-instansen."
 #: front/src/components/library/EditCard.vue:96
 #, fuzzy
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"The suggestion will be completely removed, this action is irreversible."
+msgid "The suggestion will be completely removed, this action is irreversible."
+msgstr "Biblioteket og alle dets spor vil bli slettet. Dette kan ikke angres."
+
+#: front/src/views/admin/library/TagDetail.vue:44
+#, fuzzy
+msgctxt "Content/Moderation/Paragraph"
+msgid "The tag will be removed and unlinked from any existing entity. This action is irreversible."
 msgstr "Biblioteket og alle dets spor vil bli slettet. Dette kan ikke angres."
 
 #: front/src/components/playlists/PlaylistModal.vue:34
@@ -4424,11 +4846,9 @@ msgctxt "Sidebar/Player/Error message.Title"
 msgid "The track cannot be loaded"
 msgstr ""
 
-#: front/src/views/admin/library/TrackDetail.vue:74
+#: front/src/views/admin/library/TrackDetail.vue:80
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The track will be removed, as well as associated uploads, favorites and "
-"listening history. This action is irreversible."
+msgid "The track will be removed, as well as associated uploads, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/views/admin/library/UploadDetail.vue:68
@@ -4463,22 +4883,37 @@ msgctxt "Content/Artist/Paragraph"
 msgid "This artist is present in the following libraries:"
 msgstr "Denne artisten er å finne i følgende bibliotek:"
 
+#: front/src/components/manage/moderation/DomainsTable.vue:169
+#, fuzzy
+msgctxt "Content/Moderation/Popup"
+msgid "This domain is present in your allow-list"
+msgstr "Denne artisten er å finne i følgende bibliotek:"
+
 #: front/src/views/admin/moderation/AccountsDetail.vue:84
-#: front/src/views/admin/moderation/DomainsDetail.vue:48
+#: front/src/views/admin/moderation/DomainsDetail.vue:76
 msgctxt "Content/Moderation/Card.Title"
 msgid "This domain is subject to specific moderation rules"
 msgstr ""
 
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:16
+msgctxt "Content/Moderation/Card.Title"
+msgid "This entity is subject to specific moderation rules"
+msgstr ""
+
 #: front/src/views/content/Home.vue:9
 #, fuzzy
 msgctxt "Content/Library/Paragraph"
 msgid "This instance offers up to %{quota} of storage space for every user."
 msgstr "Denne instansen tilbyr opptil %{quota} lagringsplass til hver bruker."
 
+#: front/src/components/auth/Settings.vue:300
+msgctxt "Popup/Settings/Paragraph"
+msgid "This is irreversible and will permanently remove your data from our servers. You will we immediatly logged out."
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:165
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"This is the list of applications that have access to your account data."
+msgid "This is the list of applications that have access to your account data."
 msgstr ""
 
 #: front/src/components/auth/Settings.vue:218
@@ -4497,14 +4932,12 @@ msgctxt "Content/Library/Input.Placeholder"
 msgid "This library contains my personal music, I hope you like it."
 msgstr "Dette biblioteket inneholder personlig musikk, håper du liker det."
 
-#: front/src/views/content/remote/Card.vue:141
+#: front/src/views/content/remote/Card.vue:169
 msgctxt "Content/Library/Card.Help text"
-msgid ""
-"This library is private and your approval from its owner is needed to access"
-" its content"
+msgid "This library is private and your approval from its owner is needed to access its content"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:142
+#: front/src/views/content/remote/Card.vue:170
 msgctxt "Content/Library/Card.Help text"
 msgid "This library is public and you can access its content freely"
 msgstr ""
@@ -4512,12 +4945,8 @@ msgstr ""
 #: front/src/components/common/ActionTable.vue:47
 #, fuzzy
 msgctxt "Modal/*/Paragraph"
-msgid ""
-"This may affect a lot of elements or have irreversible consequences, please "
-"double check this is really what you want."
-msgstr ""
-"Dette kan ha innvirkning på mange elementer, dobbeltsjekk at dette er det du"
-" faktisk ønsker."
+msgid "This may affect a lot of elements or have irreversible consequences, please double check this is really what you want."
+msgstr "Dette kan ha innvirkning på mange elementer, dobbeltsjekk at dette er det du faktisk ønsker."
 
 #: front/src/components/library/AlbumEdit.vue:8
 #: front/src/components/library/ArtistEdit.vue:8
@@ -4526,6 +4955,11 @@ msgctxt "Content/*/Message"
 msgid "This object is managed by another server, you cannot edit it."
 msgstr ""
 
+#: front/src/components/Home.vue:87
+msgctxt "Content/Home/Paragraph"
+msgid "This pod runs Funkwhale, a community-driven project that lets you listen and share music and audio within a decentralized, open network."
+msgstr ""
+
 #: front/src/components/library/FileUpload.vue:51
 msgctxt "Content/Library/Paragraph"
 msgid "This reference will be used to group imported files together."
@@ -4534,15 +4968,14 @@ msgstr "Denne referansen brukes til å gruppere importerte filer sammen."
 #: front/src/components/mixins/Translations.vue:33
 #: front/src/components/mixins/Translations.vue:34
 msgctxt "Content/Library/Help text"
-msgid "This track could not be processed, please it is tagged correctly"
+msgid "This track could not be processed, please make sure it is tagged correctly"
 msgstr ""
 
 #: front/src/components/mixins/Translations.vue:29
 #: front/src/components/mixins/Translations.vue:30
 #, fuzzy
 msgctxt "Content/Library/Help text"
-msgid ""
-"This track has been uploaded, but hasn't been processed by the server yet"
+msgid "This track has been uploaded, but hasn't been processed by the server yet"
 msgstr "Sporet er lastet opp, men ikke behandlet av tjeneren enda"
 
 #: front/src/components/mixins/Translations.vue:25
@@ -4552,7 +4985,7 @@ msgctxt "Content/Library/Help text"
 msgid "This track is already present in one of your libraries"
 msgstr "Sporet finnes allerede i ett av bibliotekene dine"
 
-#: front/src/components/audio/PlayButton.vue:85
+#: front/src/components/audio/PlayButton.vue:103
 msgctxt "*/Queue/Button/Title"
 msgid "This track is not available in any library you have access to"
 msgstr ""
@@ -4562,7 +4995,7 @@ msgctxt "Content/Track/Paragraph"
 msgid "This track is present in the following libraries:"
 msgstr "Dette sporet finnes i følgende bibliotek:"
 
-#: front/src/views/playlists/Detail.vue:38
+#: front/src/views/playlists/Detail.vue:46
 msgctxt "Popup/Playlist/Paragraph"
 msgid "This will completely delete this playlist and cannot be undone."
 msgstr "Dette vil slette denne spillelisten for godt, og kan ikke angres."
@@ -4572,31 +5005,30 @@ msgctxt "Popup/Radio/Paragraph"
 msgid "This will completely delete this radio and cannot be undone."
 msgstr "Dette vil slette denne radiostasjonen for godt, og kan ikke angres."
 
-#: front/src/components/auth/SubsonicTokenForm.vue:50
+#: front/src/components/auth/SubsonicTokenForm.vue:55
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will completely disable access to the Subsonic API using from account."
+msgid "This will completely disable access to the Subsonic API using from account."
 msgstr "Dette vil skru av tilgang til Subsonic API-et for denne kontoen."
 
-#: front/src/components/auth/SubsonicTokenForm.vue:35
-msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will log you out from existing devices that use the current password."
+#: front/src/components/manage/moderation/ReportCard.vue:359
+msgctxt "Content/Moderation/Popup,Paragraph"
+msgid "This will delete the object associated with this report and mark the report as resolved. The deletion is irreversible."
 msgstr ""
-"Dette vil logge deg ut av eksisterende enheter som bruker nåværende passord."
+
+#: front/src/components/auth/SubsonicTokenForm.vue:40
+msgctxt "Popup/Settings/Paragraph"
+msgid "This will log you out from existing devices that use the current password."
+msgstr "Dette vil logge deg ut av eksisterende enheter som bruker nåværende passord."
 
 #: front/src/components/auth/Settings.vue:253
 #, fuzzy
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will permanently delete the application and all the associated tokens."
+msgid "This will permanently delete the application and all the associated tokens."
 msgstr "Dette vil slette denne spillelisten for godt, og kan ikke angres."
 
 #: front/src/components/auth/Settings.vue:194
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will prevent this application from accessing the service on your "
-"behalf."
+msgid "This will prevent this application from accessing the service on your behalf."
 msgstr ""
 
 #: front/src/components/playlists/Editor.vue:54
@@ -4604,43 +5036,44 @@ msgctxt "Popup/Playlist/Paragraph"
 msgid "This will remove all tracks from this playlist and cannot be undone."
 msgstr "Dette vil fjerne alle spor fra denne spillelisten og kan ikke angres."
 
-#: front/src/views/admin/library/AlbumDetail.vue:99
-#: front/src/views/admin/library/TrackDetail.vue:98 src/edits.js:21
-#: src/edits.js:39
-msgctxt "*/*/*/Noun"
-msgid "Title"
-msgstr "Tittel"
-
 #: front/src/components/audio/track/Table.vue:7
-#: front/src/views/content/libraries/FilesTable.vue:55
-msgctxt "Content/Track/*/Noun"
-msgid "Title"
-msgstr "Tittel"
-
 #: front/src/components/manage/library/AlbumsTable.vue:39
 #: front/src/components/manage/library/TracksTable.vue:39
-msgctxt "*/*/*"
+#: front/src/views/admin/library/AlbumDetail.vue:105
+#: front/src/views/admin/library/TrackDetail.vue:104
+#: front/src/views/content/libraries/FilesTable.vue:55 src/edits.js:36
+#: front/src/edits.js:62
+msgctxt "*/*/*/Noun"
 msgid "Title"
 msgstr "Tittel"
 
 #: front/src/components/SetInstanceModal.vue:16
 msgctxt "Popup/Instance/Paragraph"
-msgid ""
-"To continue, please select the Funkwhale instance you want to connect to. "
-"Enter the address directly, or select one of the suggested choices."
+msgid "To continue, please select the Funkwhale instance you want to connect to. Enter the address directly, or select one of the suggested choices."
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:148
+#, fuzzy
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle favorite"
+msgstr "Én favoritt"
+
+#: front/src/components/ShortcutsModal.vue:132
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle mute"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:79
+#: front/src/components/ShortcutsModal.vue:136
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Toggle queue looping"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:222
-#: front/src/views/admin/library/ArtistDetail.vue:211
-#: front/src/views/admin/library/LibraryDetail.vue:200
-#: front/src/views/admin/library/TrackDetail.vue:274
-#: front/src/views/admin/moderation/AccountsDetail.vue:317
-#: front/src/views/admin/moderation/DomainsDetail.vue:225
+#: front/src/views/admin/library/AlbumDetail.vue:238
+#: front/src/views/admin/library/ArtistDetail.vue:226
+#: front/src/views/admin/library/LibraryDetail.vue:219
+#: front/src/views/admin/library/TrackDetail.vue:290
+#: front/src/views/admin/moderation/AccountsDetail.vue:329
+#: front/src/views/admin/moderation/DomainsDetail.vue:262
 msgctxt "Content/Moderation/Table.Label"
 msgid "Total size"
 msgstr ""
@@ -4650,21 +5083,19 @@ msgctxt "Content/Library/Card.Help text"
 msgid "Total size of the files in this library"
 msgstr "Total størrelse på filene i dette biblioteket"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:105
+#: front/src/views/admin/moderation/DomainsDetail.vue:142
 #, fuzzy
 msgctxt "Content/*/*"
 msgid "Total users"
 msgstr "Ikke brukt"
 
-#: front/src/views/admin/library/UploadDetail.vue:199
-msgctxt "*/*/*"
-msgid "Track"
-msgstr "Spor"
-
-#: front/src/components/audio/SearchBar.vue:27
-#: front/src/components/library/TrackBase.vue:173
+#: front/src/components/audio/SearchBar.vue:34
+#: front/src/components/library/TrackBase.vue:188
 #: front/src/components/library/TrackDetail.vue:128
 #: front/src/components/metadata/Search.vue:138
+#: src/components/mixins/Report.vue:28
+#: front/src/views/admin/library/UploadDetail.vue:199
+#: front/src/components/mixins/Report.vue:29
 msgctxt "*/*/*/Noun"
 msgid "Track"
 msgstr "Spor"
@@ -4674,7 +5105,7 @@ msgctxt "Content/Library/Card/Short"
 msgid "Track #%{ id } - %{ name }"
 msgstr ""
 
-#: front/src/views/admin/library/TrackDetail.vue:91
+#: front/src/views/admin/library/TrackDetail.vue:97
 #, fuzzy
 msgctxt "Content/Moderation/Title"
 msgid "Track data"
@@ -4685,30 +5116,28 @@ msgctxt "Content/Track/Title/Noun"
 msgid "Track information"
 msgstr "Sporinfo"
 
-#: front/src/components/mixins/Translations.vue:50
-#: front/src/components/mixins/Translations.vue:51
+#: front/src/components/mixins/Translations.vue:60
+#: front/src/components/mixins/Translations.vue:61
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Track name"
 msgstr "Spornavn"
 
-#: front/src/components/instance/Stats.vue:54
 #: front/src/components/library/AlbumDetail.vue:19
-#: front/src/components/playlists/PlaylistModal.vue:47
-#: front/src/views/admin/moderation/AccountsDetail.vue:362
-#: front/src/views/admin/moderation/DomainsDetail.vue:274
-#: front/src/views/content/Base.vue:8 src/views/content/libraries/Detail.vue:8
-#: front/src/views/playlists/Detail.vue:51 src/views/radios/Detail.vue:34
-msgctxt "*/*/*/Noun"
-msgid "Tracks"
-msgstr "Spor"
-
+#: front/src/components/library/TagDetail.vue:36
 #: front/src/components/manage/library/AlbumsTable.vue:42
 #: front/src/components/manage/library/ArtistsTable.vue:42
-#: front/src/views/admin/library/AlbumDetail.vue:252
-#: front/src/views/admin/library/ArtistDetail.vue:251
+#: front/src/components/manage/library/TagsTable.vue:44
+#: front/src/components/playlists/PlaylistModal.vue:47
+#: front/src/views/admin/library/AlbumDetail.vue:268
+#: front/src/views/admin/library/ArtistDetail.vue:266
 #: front/src/views/admin/library/Base.vue:14
-#: front/src/views/admin/library/LibraryDetail.vue:229
+#: front/src/views/admin/library/LibraryDetail.vue:248
+#: front/src/views/admin/library/TagDetail.vue:143
 #: front/src/views/admin/library/TracksList.vue:24
+#: front/src/views/admin/moderation/AccountsDetail.vue:374
+#: front/src/views/admin/moderation/DomainsDetail.vue:311
+#: front/src/views/content/Base.vue:8 src/views/content/libraries/Detail.vue:8
+#: front/src/views/playlists/Detail.vue:76 src/views/radios/Detail.vue:34
 msgctxt "*/*/*"
 msgid "Tracks"
 msgstr "Spor"
@@ -4718,16 +5147,6 @@ msgctxt "Content/Artist/Title"
 msgid "Tracks by this artist"
 msgstr "Spor av denne artisten"
 
-#: front/src/components/instance/Stats.vue:25
-msgctxt "Content/About/Paragraph/Unit"
-msgid "Tracks favorited"
-msgstr "Spor favorisert"
-
-#: front/src/components/instance/Stats.vue:19
-msgctxt "Content/About/Paragraph/Unit"
-msgid "tracks listened"
-msgstr "Spor lyttet til"
-
 #: front/src/components/library/radios/Filter.vue:44
 #, fuzzy
 msgctxt "Popup/Radio/Title/Noun"
@@ -4735,63 +5154,58 @@ msgid "Tracks matching filter"
 msgstr "Sporsamsvarsfilter"
 
 #: front/src/components/library/TrackDetail.vue:57
+#: front/src/components/manage/moderation/ReportCard.vue:134
 #: front/src/views/admin/library/UploadDetail.vue:250
+#: front/src/views/admin/moderation/AccountsDetail.vue:181
 msgctxt "Content/Track/Table.Label/Noun"
 msgid "Type"
 msgstr "Type"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:180
-msgctxt "Content/Moderation/Table.Label/Noun"
-msgid "Type"
-msgstr "Type"
-
 #: front/src/components/manage/moderation/AccountsTable.vue:44
-#: front/src/components/manage/moderation/DomainsTable.vue:42
+#: front/src/components/manage/moderation/DomainsTable.vue:50
 msgctxt "Content/Moderation/Table.Label/Short"
 msgid "Under moderation rule"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:109
-#: src/views/content/remote/Card.vue:114
+#: front/src/components/ShortcutsModal.vue:68
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Unfocus searchbar"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:122
+#: src/views/content/remote/Card.vue:127
 msgctxt "*/Library/Button.Label/Verb"
 msgid "Unfollow"
 msgstr "Opphev følging"
 
-#: front/src/views/content/remote/Card.vue:110
+#: front/src/views/content/remote/Card.vue:123
 msgctxt "Popup/Library/Title"
 msgid "Unfollow this library?"
 msgstr "Opphev følging av dette biblioteket?"
 
-#: front/src/components/About.vue:17
-#, fuzzy
-msgctxt "Content/About/Paragraph"
-msgid ""
-"Unfortunately, the owners of this instance did not yet take the time to "
-"complete this page."
-msgstr ""
-"Eierne av denne instansen har ikke tatt seg tid til å fullføre denne siden."
-
 #: front/src/components/federation/FetchButton.vue:54
 #: front/src/components/federation/FetchButton.vue:55
-msgctxt "*/*/Error"
-msgid "Unknowkn error"
-msgstr ""
-
 #: front/src/components/library/ImportStatusModal.vue:144
-msgctxt "Popup/Import/Error.Label"
-msgid "Unkwown error"
+msgctxt "*/*/Error"
+msgid "Unknown error"
 msgstr ""
 
-#: front/src/components/Home.vue:37
-msgctxt "Content/Home/Title"
-msgid "Unlimited music"
-msgstr "Ubegrenset musikk"
-
-#: front/src/components/audio/Player.vue:630
+#: front/src/components/audio/Player.vue:656
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Unmute"
 msgstr "Opphev forstumming"
 
+#: front/src/components/manage/moderation/ReportCard.vue:225
+msgctxt "Content/*/Button.Label"
+msgid "Unresolve"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:67
+#: front/src/views/admin/moderation/ReportsList.vue:23
+msgctxt "Content/*/*/Short"
+msgid "Unresolved"
+msgstr ""
+
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:57
 #, fuzzy
 msgctxt "Content/Moderation/Card.Button.Label/Verb"
@@ -4859,12 +5273,8 @@ msgstr "Opplastingsdato"
 #: front/src/components/library/FileUpload.vue:258
 #, fuzzy
 msgctxt "Content/Library/Help text"
-msgid ""
-"Upload denied, ensure the file is not too big and that you have not reached "
-"your quota"
-msgstr ""
-"Opplasting nektet, forsikre deg om at filen ikke er for stor, og at du ikke "
-"har brukt opp kvoten din."
+msgid "Upload denied, ensure the file is not too big and that you have not reached your quota"
+msgstr "Opplasting nektet, forsikre deg om at filen ikke er for stor, og at du ikke har brukt opp kvoten din."
 
 #: front/src/components/library/ImportStatusModal.vue:8
 msgctxt "Popup/Import/Message"
@@ -4874,20 +5284,18 @@ msgstr ""
 #: front/src/views/content/Home.vue:7
 #, fuzzy
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Upload music files (MP3, OGG, FLAC, etc.) from your personal library "
-"directly from your browser to enjoy them here."
-msgstr ""
-"Last opp musikkfiler (MP3, OGG, Flac, osv.) fra ditt personlige bibiotek "
-"direkte fra din nettleser for å nyte dem her."
+msgid "Upload music files (MP3, OGG, FLAC, etc.) from your personal library directly from your browser to enjoy them here."
+msgstr "Last opp musikkfiler (MP3, OGG, Flac, osv.) fra ditt personlige bibiotek direkte fra din nettleser for å nyte dem her."
 
 #: front/src/components/library/FileUpload.vue:30
 msgctxt "Content/Library/Title/Verb"
 msgid "Upload new tracks"
 msgstr "Last opp nye spor"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:298
-msgctxt "Content/Moderation/Table.Label/Noun"
+#: front/src/components/About.vue:99
+#: front/src/views/admin/moderation/AccountsDetail.vue:309
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Upload quota"
 msgstr "Opplastingskvote"
 
@@ -4898,9 +5306,7 @@ msgstr "Tidsavbrudd for opplasting, prøv igjen"
 
 #: front/src/components/library/ImportStatusModal.vue:14
 msgctxt "Popup/Import/Message"
-msgid ""
-"Upload was skipped because a similar one is already available in one of your"
-" libraries."
+msgid "Upload was skipped because a similar one is already available in one of your libraries."
 msgstr ""
 
 #: front/src/components/library/ImportStatusModal.vue:11
@@ -4925,38 +5331,26 @@ msgctxt "Content/Library/Table"
 msgid "Uploading…"
 msgstr "Laster opp"
 
+#: front/src/components/manage/library/LibrariesTable.vue:52
+#: front/src/components/manage/moderation/AccountsTable.vue:41
+#: front/src/components/mixins/Translations.vue:75
+#: front/src/views/admin/library/AlbumDetail.vue:258
+#: front/src/views/admin/library/ArtistDetail.vue:246
 #: front/src/views/admin/library/Base.vue:20
+#: front/src/views/admin/library/LibraryDetail.vue:258
+#: front/src/views/admin/library/TrackDetail.vue:310
 #: front/src/views/admin/library/UploadsList.vue:24
+#: front/src/views/admin/moderation/AccountsDetail.vue:349
+#: front/src/views/admin/moderation/DomainsDetail.vue:281
+#: front/src/components/mixins/Translations.vue:76
 #, fuzzy
 msgctxt "*/*/*"
 msgid "Uploads"
 msgstr "Last opp"
 
-#: front/src/components/manage/moderation/AccountsTable.vue:41
-#: front/src/components/mixins/Translations.vue:63
-#: front/src/views/admin/library/AlbumDetail.vue:242
-#: front/src/views/admin/library/ArtistDetail.vue:231
-#: front/src/views/admin/library/LibraryDetail.vue:239
-#: front/src/views/admin/library/TrackDetail.vue:294
-#: front/src/views/admin/moderation/AccountsDetail.vue:337
-#: front/src/views/admin/moderation/DomainsDetail.vue:244
-#: front/src/components/mixins/Translations.vue:64
-#, fuzzy
-msgctxt "Content/Moderation/Table.Label/Noun"
-msgid "Uploads"
-msgstr "Last opp"
-
-#: front/src/components/manage/library/LibrariesTable.vue:52
-#, fuzzy
-msgctxt "Content/*/*/Noun"
-msgid "Uploads"
-msgstr "Last opp"
-
 #: front/src/components/auth/ApplicationForm.vue:16
 msgctxt "Content/Applications/Help Text"
-msgid ""
-"Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is "
-"not served on the web."
+msgid "Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is not served on the web."
 msgstr ""
 
 #: front/src/components/Footer.vue:16
@@ -4964,20 +5358,29 @@ msgctxt "Footer/*/List item.Link"
 msgid "Use another instance"
 msgstr "Bruk en annen instans"
 
+#: front/src/components/Home.vue:146
+msgctxt "Content/Home/Link"
+msgid "Use Funkwhale on other devices with our apps"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:44
+msgctxt "*/*/Field,Help"
+msgid "Use this field to provide additional context to the moderator that will handle your report."
+msgstr ""
+
 #: front/src/views/auth/PasswordReset.vue:12
 msgctxt "Content/Signup/Paragraph"
-msgid ""
-"Use this form to request a password reset. We will send an email to the "
-"given address with instructions to reset your password."
+msgid "Use this form to request a password reset. We will send an email to the given address with instructions to reset your password."
+msgstr "Bruk dette skjemaet til å forespørre tilbakestilling av passord. En e-post vil bli sendt til oppgitt adresse med instruksjoner."
+
+#: front/src/components/moderation/ReportModal.vue:18
+msgctxt "*/Moderation/Popup,Paragraph"
+msgid "Use this form to submit a report to our moderation team."
 msgstr ""
-"Bruk dette skjemaet til å forespørre tilbakestilling av passord. En e-post "
-"vil bli sendt til oppgitt adresse med instruksjoner."
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:111
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Use this setting to temporarily enable/disable the policy without completely"
-" removing it."
+msgid "Use this setting to temporarily enable/disable the policy without completely removing it."
 msgstr ""
 
 #: front/src/components/manage/users/InvitationsTable.vue:49
@@ -4985,15 +5388,27 @@ msgctxt "Content/Admin/Table"
 msgid "Used"
 msgstr "Brukt"
 
+#: front/src/components/Home.vue:125
+msgctxt "Content/Home/Header"
+msgid "Useful links"
+msgstr ""
+
 #: front/src/views/content/libraries/Detail.vue:26
 msgctxt "Content/Library/Table.Label"
 msgid "User"
 msgstr "Bruker"
 
-#: front/src/components/instance/Stats.vue:5
-msgctxt "Content/About/Title/Noun"
-msgid "User activity"
-msgstr "Brukeraktivitet"
+#: front/src/components/Home.vue:154
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "User guides"
+msgstr "Brukerbibliotek"
+
+#: front/src/views/admin/Settings.vue:88
+#, fuzzy
+msgctxt "Content/Admin/Menu"
+msgid "User Interface"
+msgstr "Brukernavn"
 
 #: front/src/components/library/AlbumDetail.vue:26
 #: front/src/components/library/ArtistDetail.vue:39
@@ -5007,35 +5422,35 @@ msgctxt "Content/Radio/Title"
 msgid "User radios"
 msgstr "Brukerradiostasjoner"
 
-#: front/src/components/auth/Signup.vue:19
+#: front/src/components/auth/SignupForm.vue:15
 #: front/src/components/manage/users/UsersTable.vue:37
-#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:71
 #: front/src/views/admin/moderation/AccountsDetail.vue:114
-#: front/src/components/mixins/Translations.vue:60
+#: front/src/components/mixins/Translations.vue:72
 msgctxt "Content/*/*"
 msgid "Username"
 msgstr "Brukernavn"
 
-#: front/src/components/auth/Login.vue:15
+#: front/src/components/auth/LoginForm.vue:11
 msgctxt "Content/Login/Input.Label/Noun"
 msgid "Username or email"
 msgstr "Brukernavn eller e-post"
 
-#: front/src/components/instance/Stats.vue:13
-msgctxt "Content/About/Paragraph/Unit"
-msgid "users"
-msgstr "brukere"
-
-#: front/src/components/Sidebar.vue:102
-#: front/src/components/manage/moderation/DomainsTable.vue:39
-#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/Sidebar.vue:106
+#: front/src/components/manage/moderation/DomainsTable.vue:47
+#: front/src/components/mixins/Translations.vue:73
 #: src/views/admin/Settings.vue:81 front/src/views/admin/users/Base.vue:5
 #: src/views/admin/users/UsersList.vue:21
-#: front/src/components/mixins/Translations.vue:62
+#: front/src/components/mixins/Translations.vue:74
 msgctxt "*/*/*/Noun"
 msgid "Users"
 msgstr "Brukere"
 
+#: front/src/components/Home.vue:110
+msgctxt "Content/Home/Paragraph"
+msgid "Users on this pod also get %{ quota } of free storage to upload their own content!"
+msgstr ""
+
 #: front/src/components/Footer.vue:29
 #, fuzzy
 msgctxt "Footer/*/Title"
@@ -5055,45 +5470,59 @@ msgctxt "Content/Library/Link/Verb"
 msgid "View files"
 msgstr "Vis filer"
 
-#: front/src/components/library/AlbumBase.vue:81
-#: front/src/components/library/ArtistBase.vue:92
-#: front/src/components/library/TrackBase.vue:100
-#: front/src/views/admin/library/AlbumDetail.vue:42
-#: front/src/views/admin/library/ArtistDetail.vue:41
+#: front/src/components/library/AlbumBase.vue:95
+#: front/src/components/library/ArtistBase.vue:107
+#: front/src/components/library/TrackBase.vue:111
+#: front/src/views/admin/library/AlbumDetail.vue:48
+#: front/src/views/admin/library/ArtistDetail.vue:46
 #: front/src/views/admin/library/LibraryDetail.vue:34
 #: front/src/views/admin/library/LibraryDetail.vue:45
-#: front/src/views/admin/library/TrackDetail.vue:41
+#: front/src/views/admin/library/TagDetail.vue:32
+#: front/src/views/admin/library/TrackDetail.vue:47
 #: front/src/views/admin/library/UploadDetail.vue:35
 #: front/src/views/admin/library/UploadDetail.vue:46
 #: front/src/views/admin/moderation/AccountsDetail.vue:37
 #: front/src/views/admin/moderation/AccountsDetail.vue:45
+#: front/src/views/admin/moderation/DomainsDetail.vue:30
 msgctxt "Content/Moderation/Link/Verb"
 msgid "View in Django's admin"
 msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:61
-#: front/src/components/library/ArtistBase.vue:72
-#: front/src/components/library/TrackBase.vue:80
+#: front/src/components/Home.vue:169
+msgctxt "Content/Home/Link"
+msgid "View more…"
+msgstr ""
+
+#: front/src/components/library/AlbumBase.vue:62
+#: front/src/components/library/ArtistBase.vue:73
+#: front/src/components/library/TrackBase.vue:78
 #: front/src/components/metadata/ArtistCard.vue:49
 #: front/src/components/metadata/ReleaseCard.vue:53
 msgctxt "Content/*/*/Clickable, Verb"
 msgid "View on MusicBrainz"
 msgstr "Vis på MusicBrainz"
 
+#: front/src/components/manage/moderation/ReportCard.vue:124
+msgctxt "Content/Moderation/Link"
+msgid "View public page"
+msgstr ""
+
 #: front/src/components/manage/library/LibrariesTable.vue:11
 #: front/src/components/manage/library/LibrariesTable.vue:51
 #: front/src/components/manage/library/UploadsTable.vue:11
 #: front/src/components/manage/library/UploadsTable.vue:63
 #: front/src/views/admin/library/LibraryDetail.vue:94
 #: front/src/views/admin/library/UploadDetail.vue:101
+#: front/src/views/content/libraries/Form.vue:18
 msgctxt "*/*/*"
 msgid "Visibility"
 msgstr "Synlighet"
 
-#: front/src/views/content/libraries/Form.vue:18
-msgctxt "Content/Library/Dropdown.Label"
-msgid "Visibility"
-msgstr "Synlighet"
+#: front/src/components/Home.vue:91
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Visit funkwhale.audio"
+msgstr "Om Funkwhale"
 
 #: front/src/components/library/AlbumDetail.vue:4
 msgctxt "Content/Album/"
@@ -5105,7 +5534,13 @@ msgctxt "Popup/*/Loading.Title"
 msgid "Waiting for result…"
 msgstr ""
 
-#: front/src/components/auth/Login.vue:7
+#: front/src/components/auth/Settings.vue:285
+#, fuzzy
+msgctxt "Content/Settings/Error message.Title"
+msgid "We cannot delete your account"
+msgstr "Kan ikke logge inn"
+
+#: front/src/components/auth/LoginForm.vue:3
 msgctxt "Content/Login/Error message.Title"
 msgid "We cannot log you in"
 msgstr "Kan ikke logge inn"
@@ -5116,10 +5551,10 @@ msgctxt "Content/*/Error message.Title"
 msgid "We cannot save your changes"
 msgstr "Kan ikke lagre innstillingene"
 
-#: front/src/components/Home.vue:122
-msgctxt "Content/Home/List item"
-msgid "We do not track you or bother you with ads"
-msgstr "Ingen sporing eller reklame"
+#: front/src/views/Notifications.vue:39
+msgctxt "Content/Notifications/Paragraph"
+msgid "We noticed you've been here for a while. If Funkwhale is useful to you, we could use your help to make it even better!"
+msgstr ""
 
 #: front/src/components/library/FileUpload.vue:39
 #, fuzzy
@@ -5127,32 +5562,27 @@ msgctxt "Content/Library/Link"
 msgid "We recommend using Picard for that purpose."
 msgstr "Til dette formålet anbefales Picard"
 
-#: front/src/components/Home.vue:7
-msgctxt "Content/Home/Title"
-msgid "We think listening to music should be simple."
-msgstr "Lytting til musikk skal være enkelt."
+#: front/src/components/moderation/ReportModal.vue:35
+msgctxt "*/*/Field,Help"
+msgid "We'll use this email if we need to contact you regarding this report."
+msgstr ""
 
-#: front/src/components/Home.vue:148
+#: front/src/components/Home.vue:207
 msgctxt "Head/Home/Title"
 msgid "Welcome"
 msgstr "Velkommen"
 
 #: front/src/components/Home.vue:5
-msgctxt "Content/Home/Title/Verb"
-msgid "Welcome on Funkwhale"
-msgstr "Velkommen på Funkwhale"
-
-#: front/src/components/Home.vue:24
-msgctxt "Content/Home/Title"
-msgid "Why funkwhale?"
-msgstr "Hvorfor Funkwhale?"
+msgctxt "Content/Home/Header"
+msgid "Welcome to %{ podName }!"
+msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:13
+#: front/src/components/audio/EmbedWizard.vue:23
 msgctxt "Popup/Embed/Input.Label"
 msgid "Widget height"
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:6
+#: front/src/components/audio/EmbedWizard.vue:16
 msgctxt "Popup/Embed/Input.Label"
 msgid "Widget width"
 msgstr ""
@@ -5172,9 +5602,11 @@ msgctxt "Content/OAuth Scopes/Help Text"
 msgid "Write-only access to user data"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:129
+#: front/src/components/Sidebar.vue:133
 #: front/src/components/manage/moderation/AccountsTable.vue:72
-#: front/src/components/manage/moderation/DomainsTable.vue:58
+#: front/src/components/manage/moderation/DomainsTable.vue:12
+#: front/src/components/manage/moderation/DomainsTable.vue:69
+#: front/src/views/admin/moderation/DomainsDetail.vue:109
 msgctxt "*/*/*"
 msgid "Yes"
 msgstr "Ja"
@@ -5187,27 +5619,17 @@ msgstr "Ja, logg meg ut."
 #: front/src/views/content/libraries/Form.vue:19
 #, fuzzy
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You are able to share your library with other people, regardless of its "
-"visibility."
+msgid "You are able to share your library with other people, regardless of its visibility."
 msgstr "Du vil kunne dele biblioteket med andre, uavhengig av dets synlighet."
 
 #: front/src/components/library/FileUpload.vue:32
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You are about to upload music to your library. Before proceeding, please "
-"ensure that:"
-msgstr ""
-"Du er i ferd med å laste opp musikk til ditt bibliotek. Før du fortsetter, "
-"forsikre deg om at:"
+msgid "You are about to upload music to your library. Before proceeding, please ensure that:"
+msgstr "Du er i ferd med å laste opp musikk til ditt bibliotek. Før du fortsetter, forsikre deg om at:"
 
 #: front/src/components/SetInstanceModal.vue:12
 msgctxt "Popup/Login/Paragraph"
-msgid ""
-"You are currently connected to <a href=\"%{ url }\" target=\"_blank\">%{ "
-"hostname }&nbsp;<i class=\"external icon\"/></a>. If you continue, you will "
-"be disconnected from your current instance and all your local data will be "
-"deleted."
+msgid "You are currently connected to <a href=\"%{ url }\" target=\"_blank\">%{ hostname }&nbsp;<i class=\"external icon\"/></a>. If you continue, you will be disconnected from your current instance and all your local data will be deleted."
 msgstr ""
 
 #: front/src/components/library/ArtistDetail.vue:6
@@ -5222,9 +5644,7 @@ msgstr "Du er innlogget som %{ username }"
 
 #: front/src/components/library/FileUpload.vue:35
 msgctxt "Content/Library/List item"
-msgid ""
-"You are not uploading copyrighted content in a public library, otherwise you"
-" may be infringing the law"
+msgid "You are not uploading copyrighted content in a public library, otherwise you may be infringing the law"
 msgstr ""
 
 #: front/src/components/SetInstanceModal.vue:98
@@ -5233,55 +5653,36 @@ msgid "You are now using the Funkwhale instance at %{ url }"
 msgstr ""
 
 #: front/src/views/content/Home.vue:17
+#, fuzzy
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You can follow libraries from other users to get access to new music. Public"
-" libraries can be followed immediatly, while following a private library "
-"requires approval from its owner."
-msgstr ""
-"Følg bibliotek fra andre brukere for å få tilgang til ny musikk. Offentlige "
-"bibliotek kan følges umiddelbart, mens å følge et privat bibliotek krever "
-"samtykke fra dets eier."
-
-#: front/src/components/Home.vue:128
-msgctxt "Content/Home/List item"
-msgid ""
-"You can invite friends and family to your instance so they can enjoy your "
-"music"
-msgstr ""
-"Du kan invitere venner og familie til din instans slik at de kan nyte "
-"musikken din"
+msgid "You can follow libraries from other users to get access to new music. Public libraries can be followed immediately, while following a private library requires approval from its owner."
+msgstr "Følg bibliotek fra andre brukere for å få tilgang til ny musikk. Offentlige bibliotek kan følges umiddelbart, mens å følge et privat bibliotek krever samtykke fra dets eier."
 
 #: front/src/components/moderation/FilterModal.vue:31
 msgctxt "Popup/Moderation/Paragraph"
-msgid ""
-"You can manage and update your filters anytime from your account settings."
+msgid "You can manage and update your filters any time from your account settings."
 msgstr ""
 
 #: front/src/views/auth/EmailConfirm.vue:24
 #, fuzzy
 msgctxt "Content/Signup/Paragraph"
 msgid "You can now use the service without limitations."
+msgstr "E-postadresse bekreftet, du kan nå bruke tjenesten uten begrensninger."
+
+#: front/src/components/auth/Settings.vue:278
+msgctxt "Content/Settings/Paragraph'"
+msgid "You can permanently and irreversibly delete your account and all the associated data using the form below. You will be asked for confirmation."
 msgstr ""
-"E-postadresse bekreftet, du kan nå bruke tjenesten uten begrensninger."
 
 #: front/src/components/library/radios/Builder.vue:7
 msgctxt "Content/Radio/Paragraph"
-msgid ""
-"You can use this interface to build your own custom radio, which will play "
-"tracks according to your criteria."
-msgstr ""
-"Du kan bruke dette grensesnittet til å bygge din egen tilpassede "
-"radiostasjon, som spiller spor i henhold til dine valg."
+msgid "You can use this interface to build your own custom radio, which will play tracks according to your criteria."
+msgstr "Du kan bruke dette grensesnittet til å bygge din egen tilpassede radiostasjon, som spiller spor i henhold til dine valg."
 
 #: front/src/components/auth/SubsonicTokenForm.vue:7
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"You can use those to enjoy your playlist and music in offline mode, on your "
-"smartphone or tablet, for instance."
-msgstr ""
-"Du kan bruke dem til å nyte din spilleliste og musikk i frakoblet modus, på "
-"din telefon eller nettbrett for eksempel."
+msgid "You can use those to enjoy your playlist and music in offline mode, on your smartphone or tablet, for instance."
+msgstr "Du kan bruke dem til å nyte din spilleliste og musikk i frakoblet modus, på din telefon eller nettbrett for eksempel."
 
 #: front/src/components/auth/Settings.vue:202
 msgctxt "Content/Applications/Paragraph"
@@ -5299,19 +5700,17 @@ msgctxt "Content/Moderation/Card.Title"
 msgid "You don't have any rule in place for this account."
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:39
+#: front/src/views/admin/moderation/DomainsDetail.vue:67
 msgctxt "Content/Moderation/Card.Title"
 msgid "You don't have any rule in place for this domain."
 msgstr ""
 
 #: front/src/components/library/EditForm.vue:52
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You don't have the permission to edit this object, but you can suggest "
-"changes. Once submitted, suggestions will be reviewed before approval."
+msgid "You don't have the permission to edit this object, but you can suggest changes. Once submitted, suggestions will be reviewed before approval."
 msgstr ""
 
-#: front/src/components/Sidebar.vue:171
+#: front/src/components/Sidebar.vue:175
 msgctxt "Sidebar/Player/Title"
 msgid "You have a radio playing"
 msgstr "Du har en spillende radiostasjon"
@@ -5323,8 +5722,7 @@ msgstr ""
 
 #: front/src/components/auth/Settings.vue:100
 msgctxt "Popup/Settings/List item"
-msgid ""
-"You will be logged out from this session and have to log in with the new one"
+msgid "You will be logged out from this session and have to log in with the new one"
 msgstr "Du vil bli logget ut av denne økta, og må logge inn i den nye"
 
 #: front/src/components/auth/Authorize.vue:51
@@ -5339,24 +5737,24 @@ msgstr ""
 
 #: front/src/components/auth/Settings.vue:71
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"You will have to update your password on your clients that use this "
-"password."
-msgstr ""
-"Du vil måtte oppdatere ditt passord på klienter som bruker dette passordet."
+msgid "You will have to update your password on your clients that use this password."
+msgstr "Du vil måtte oppdatere ditt passord på klienter som bruker dette passordet."
 
 #: front/src/components/moderation/FilterModal.vue:20
 msgctxt "Popup/Moderation/Paragraph"
-msgid ""
-"You will not see tracks, albums and user activity linked to this artist "
-"anymore:"
+msgid "You will not see tracks, albums and user activity linked to this artist any more:"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:13
+#: front/src/components/auth/SignupForm.vue:9
 msgctxt "Content/Signup/Form/Paragraph"
 msgid "Your account cannot be created."
 msgstr ""
 
+#: front/src/components/auth/Settings.vue:281
+msgctxt "Content/Settings/Paragraph'"
+msgid "Your account will be deleted from our servers within a few minutes. We will also notify other servers who may have a copy of some of your data so they can proceed to deletion. Please note that some of these servers may be offline or unwilling to comply though."
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:215
 #, fuzzy
 msgctxt "Content/Settings/Title/Noun"
@@ -5368,6 +5766,11 @@ msgctxt "Content/Settings/Error message.Title"
 msgid "Your avatar cannot be saved"
 msgstr ""
 
+#: front/src/components/auth/Settings.vue:527
+msgctxt "*/Auth/Message"
+msgid "Your deletion request was submitted, your account and content will be deleted shortly"
+msgstr ""
+
 #: front/src/components/library/EditForm.vue:3
 msgctxt "Content/Library/Paragraph"
 msgid "Your edit was successfully submitted."
@@ -5378,12 +5781,12 @@ msgctxt "Head/Favorites/Title"
 msgid "Your Favorites"
 msgstr "Dine favoritter"
 
-#: front/src/components/Home.vue:109
-msgctxt "Content/Home/Title"
-msgid "Your music, your way"
-msgstr "Din musikk, på din måte"
+#: front/src/views/Notifications.vue:5
+msgctxt "Content/Notifications/Title"
+msgid "Your messages"
+msgstr ""
 
-#: front/src/views/Notifications.vue:4
+#: front/src/views/Notifications.vue:69
 msgctxt "Content/Notifications/Title"
 msgid "Your notifications"
 msgstr "Dine merknader"
@@ -5401,43 +5804,39 @@ msgstr "Passordet ditt har blitt oppdatert."
 #: front/src/components/auth/Settings.vue:14
 #, fuzzy
 msgctxt "Content/Settings/Error message.Title"
-msgid "Your settings can't be updateds"
+msgid "Your settings can't be updated"
 msgstr "Innstillinger oppdatert"
 
 #: front/src/components/auth/Settings.vue:101
 msgctxt "Popup/Settings/List item"
-msgid ""
-"Your Subsonic password will be changed to a new, random one, logging you out"
-" from devices that used the old Subsonic password"
-msgstr ""
-"Ditt Subsonic-passord vil bli endret til noe nytt og tilfeldig, noe som "
-"logger deg ut fra enheter som bruker ditt gamle Subsonic-passord."
+msgid "Your Subsonic password will be changed to a new, random one, logging you out from devices that used the old Subsonic password"
+msgstr "Ditt Subsonic-passord vil bli endret til noe nytt og tilfeldig, noe som logger deg ut fra enheter som bruker ditt gamle Subsonic-passord."
 
-#: front/src/edits.js:47
+#: front/src/entities.js:126
 #, fuzzy
-msgctxt "*/*/*/Short, Noun"
-msgid "Position"
-msgstr "Beskrivelse"
+msgctxt "*/*/*/Noun"
+msgid "MusicBrainz ID"
+msgstr "Vis på MusicBrainz"
 
-#: front/src/edits.js:54
-#, fuzzy
-msgctxt "Content/Track/*/Noun"
-msgid "Copyright"
-msgstr "Kopier"
+#: front/src/main.js:110
+msgctxt "*/Error/Paragraph"
+msgid "You sent too many requests and have been rate limited, please try again in %{ delay }"
+msgstr ""
+
+#: front/src/main.js:113
+msgctxt "*/Error/Paragraph"
+msgid "You sent too many requests and have been rate limited, please try again later"
+msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:183
+#: front/src/components/library/AlbumBase.vue:208
 #, fuzzy
 msgctxt "Content/Album/Header.Title"
-msgid ""
-"Album containing %{ count } track, by <a class=\"internal\" href=\"%{ "
-"artistUrl }\">%{ artist }</a>"
-msgid_plural ""
-"Album containing %{ count } tracks, by <a class=\"internal\" href=\"%{ "
-"artistUrl }\">%{ artist }</a>"
+msgid "Album containing %{ count } track, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgid_plural "Album containing %{ count } tracks, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
 msgstr[0] "Album inneholdende %{ count } spor, av %{ artist }"
 msgstr[1] "Album inneholdende %{ count } spor, av %{ artist }"
 
-#: front/src/components/audio/PlayButton.vue:220
+#: front/src/components/audio/PlayButton.vue:246
 #, fuzzy
 msgctxt "*/Queue/Message"
 msgid "%{ count } track was added to your queue"
diff --git a/front/locales/nl/LC_MESSAGES/app.po b/front/locales/nl/LC_MESSAGES/app.po
index 6626a85908123f1198cfd9b5e75f3ea5ebd660a4..e7d3ac3549a80d44f0a1b81e6ac108f28c769c50 100644
--- a/front/locales/nl/LC_MESSAGES/app.po
+++ b/front/locales/nl/LC_MESSAGES/app.po
@@ -7,16 +7,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: front 0.1.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-05-16 10:35+0200\n"
-"PO-Revision-Date: 2019-04-08 08:01+0000\n"
-"Last-Translator: Koen <koen.glotzbach@gmail.com>\n"
+"POT-Creation-Date: 2019-10-01 15:15+0200\n"
+"PO-Revision-Date: 2019-08-26 11:30+0000\n"
+"Last-Translator: Keunes <keunes@mailbox.org>\n"
 "Language-Team: none\n"
 "Language: nl\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 3.2.2\n"
+"X-Generator: Weblate 3.7\n"
 
 #: front/src/components/playlists/PlaylistModal.vue:9
 msgctxt "Popup/Playlist/Paragraph"
@@ -34,23 +34,67 @@ msgid "(empty)"
 msgstr "(leeg)"
 
 #: front/src/components/auth/Authorize.vue:16
-#, fuzzy
 msgctxt "Content/Auth/Title"
 msgid "%{ app } wants to access your Funkwhale account"
-msgstr "Log in op je Funkwhale-account"
+msgstr "%{ app } wil toegang tot je Funkwhale account"
 
-#: front/src/components/common/ActionTable.vue:68
+#: front/src/components/About.vue:173 src/components/Home.vue:56
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } active user"
+msgid_plural "%{ count } active users"
+msgstr[0] "%{ count } nummer"
+msgstr[1] "%{ count } nummers"
+
+#: front/src/components/About.vue:182
 #, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } albums"
+msgid_plural "%{ count } albums"
+msgstr[0] "%{ count } nummer"
+msgstr[1] "%{ count } nummers"
+
+#: front/src/components/About.vue:152
+msgctxt "*/*/*"
+msgid "%{ count } allowed domains"
+msgid_plural "%{ count } allowed domains"
+msgstr[0] ""
+msgstr[1] ""
+
+#: front/src/components/About.vue:179
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } artists"
+msgid_plural "%{ count } artists"
+msgstr[0] "%{ count } nummer"
+msgstr[1] "%{ count } nummers"
+
+#: front/src/components/About.vue:176 src/components/Home.vue:59
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } hour of music"
+msgid_plural "%{ count } hours of music"
+msgstr[0] "%{ count } nummer"
+msgstr[1] "%{ count } nummers"
+
+#: front/src/components/About.vue:188
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } listenings"
+msgid_plural "%{ count } listenings"
+msgstr[0] "%{ count } nummer"
+msgstr[1] "%{ count } nummers"
+
+#: front/src/components/common/ActionTable.vue:68
 msgctxt "Content/*/Paragraph"
 msgid "%{ count } on %{ total } selected"
 msgid_plural "%{ count } on %{ total } selected"
-msgstr[0] "%{ count } van %{ total } element geselecteerd"
-msgstr[1] "%{ count } van %{ total } elementen geselecteerd"
+msgstr[0] "%{ count } van %{ total } geselecteerd"
+msgstr[1] "%{ count } van %{ total } geselecteerd"
 
-#: front/src/components/Sidebar.vue:121 src/components/audio/album/Card.vue:52
+#: front/src/components/Sidebar.vue:125 src/components/audio/album/Card.vue:52
 #: front/src/views/content/libraries/Card.vue:40
-#: src/views/content/remote/Card.vue:30
-#, fuzzy
+#: src/views/content/remote/Card.vue:43
 msgctxt "*/*/*"
 msgid "%{ count } track"
 msgid_plural "%{ count } tracks"
@@ -66,15 +110,21 @@ msgstr[0] "% { count } nummer in %{ albumsCount } albums"
 msgstr[1] "% { count } nummers in %{ albumsCount } albums"
 
 #: front/src/components/library/radios/Builder.vue:81
-#, fuzzy
 msgctxt "Content/Radio/Table.Paragraph/Short"
 msgid "%{ count } track matching combined filters"
 msgid_plural "%{ count } tracks matching combined filters"
 msgstr[0] "% { count } nummer komt overeen met de gecombineerde filters"
 msgstr[1] "% { count } nummers komen overeen met de gecombineerde filters"
 
-#: front/src/components/playlists/Card.vue:18
+#: front/src/components/About.vue:185
 #, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } tracks"
+msgid_plural "%{ count } tracks"
+msgstr[0] "%{ count } nummer"
+msgstr[1] "%{ count } nummers"
+
+#: front/src/components/playlists/Card.vue:28
 msgctxt "Content/*/Card/List item"
 msgid "%{ count} track"
 msgid_plural "%{ count } tracks"
@@ -99,17 +149,17 @@ msgstr "%{ minutes } min"
 #: front/src/components/notifications/NotificationRow.vue:40
 msgctxt "Content/Notifications/Paragraph"
 msgid "%{ username } accepted your follow on library \"%{ library }\""
-msgstr ""
+msgstr "%{ username } heeft je volgverzoek voor de bibliotheek \"%{ library }\" geaccepteerd"
 
 #: front/src/components/notifications/NotificationRow.vue:39
 msgctxt "Content/Notifications/Paragraph"
 msgid "%{ username } followed your library \"%{ library }\""
-msgstr ""
+msgstr "%{ username } volgt nu je bibliotheek \"%{ library }\""
 
 #: front/src/components/notifications/NotificationRow.vue:41
 msgctxt "Content/Notifications/Paragraph"
 msgid "%{ username } wants to follow your library \"%{ library }\""
-msgstr ""
+msgstr "%{ username } wil je bibliotheek \"%{ library }\" volgen"
 
 #: front/src/components/auth/Profile.vue:46
 msgctxt "Head/Profile/Title"
@@ -118,12 +168,10 @@ msgstr "%{ username }'s profiel"
 
 #: front/src/components/playlists/PlaylistModal.vue:21
 msgctxt "Popup/Playlist/Paragraph"
-msgid ""
-"<strong>%{ track }</strong> is already in <strong>%{ playlist }</strong>."
-msgstr ""
+msgid "<strong>%{ track }</strong> is already in <strong>%{ playlist }</strong>."
+msgstr "<strong>%{ track }</strong> staat al in <strong>%{ playlist }</strong>."
 
-#: front/src/components/audio/artist/Card.vue:41
-#, fuzzy
+#: front/src/components/audio/artist/Card.vue:11
 msgctxt "Content/Artist/Card"
 msgid "1 album"
 msgid_plural "%{ count } albums"
@@ -131,56 +179,78 @@ msgstr[0] "1 album"
 msgstr[1] "%{ count } albums"
 
 #: front/src/components/favorites/List.vue:10
-#, fuzzy
 msgctxt "Content/Favorites/Title"
 msgid "1 favorite"
 msgid_plural "%{ count } favorites"
-msgstr[0] "%{ count } favoriet"
+msgstr[0] "1 favoriet"
 msgstr[1] "%{ count } favorieten"
 
-#: front/src/components/Home.vue:64
+#: front/src/components/audio/artist/Card.vue:15
 #, fuzzy
-msgctxt "Content/Home/Title"
-msgid "A clean library"
-msgstr "Een nette verzameling"
+msgctxt "Content/Artist/Card"
+msgid "1 track"
+msgid_plural "%{ count } tracks"
+msgstr[0] "Nummer toevoegen"
+msgstr[1] "Nummer toevoegen"
+
+#: front/src/views/Notifications.vue:21 src/views/Notifications.vue:55
+msgctxt "*/*/*"
+msgid "30 days"
+msgstr ""
+
+#: front/src/views/Notifications.vue:22 src/views/Notifications.vue:56
+msgctxt "*/*/*"
+msgid "60 days"
+msgstr ""
+
+#: front/src/views/Notifications.vue:23 src/views/Notifications.vue:57
+msgctxt "*/*/*"
+msgid "90 days"
+msgstr ""
 
 #: front/src/components/library/FileUpload.vue:264
+#, fuzzy
 msgctxt "Content/Library/Help text"
-msgid "A network error occured while uploading this file"
+msgid "A network error occurred while uploading this file"
 msgstr "Er is een netwerkfout opgetreden tijdens het uploaden van dit bestand"
 
-#: front/src/components/library/EditForm.vue:145
-#, fuzzy
+#: front/src/components/library/EditForm.vue:161
 msgctxt "*/*/Placeholder"
 msgid "A short summary describing your changes."
-msgstr "Er is een fout opgetreden tijdens het opslaan van de wijzigingen"
+msgstr "Een korte samenvatting van je aanpassingen."
 
 #: front/src/components/About.vue:5
-msgctxt "Content/About/Title/Short, Noun"
-msgid "About %{ instance }"
+#, fuzzy
+msgctxt "Content/Home/Header"
+msgid "About %{ podName }"
 msgstr "Over %{ instance }"
 
 #: front/src/components/Footer.vue:6
-#, fuzzy
 msgctxt "Footer/About/Title"
 msgid "About %{instanceName}"
-msgstr "Over %{ instance }"
+msgstr "Over %{instanceName}"
 
-#: front/src/components/Footer.vue:45
+#: front/src/components/Footer.vue:53 src/components/Home.vue:85
 msgctxt "Footer/*/Title/Short"
 msgid "About Funkwhale"
 msgstr "Over Funkwhale"
 
 #: front/src/components/Footer.vue:10
-#, fuzzy
 msgctxt "Footer/About/List item.Link"
 msgid "About page"
-msgstr "Albumpagina"
+msgstr "Over"
+
+#: front/src/components/Home.vue:19
+#, fuzzy
+msgctxt "Content/Home/Header"
+msgid "About this Funkwhale pod"
+msgstr "Over Funkwhale"
 
-#: front/src/components/About.vue:8 src/components/About.vue:67
-msgctxt "Content/About/Title"
-msgid "About this instance"
-msgstr "Over deze instantie"
+#: front/src/components/About.vue:21 src/components/About.vue:51
+#, fuzzy
+msgctxt "Content/About/Header"
+msgid "About this pod"
+msgstr "Over deze server"
 
 #: front/src/views/content/libraries/Detail.vue:48
 msgctxt "Content/Library/Button.Label"
@@ -192,119 +262,101 @@ msgctxt "Content/Library/Table/Short"
 msgid "Accepted"
 msgstr "Geaccepteerd"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:110
+#: front/src/components/auth/SubsonicTokenForm.vue:117
 msgctxt "Content/Settings/Message"
 msgid "Access disabled"
 msgstr "Toegang uitgeschakeld"
 
-#: front/src/components/mixins/Translations.vue:73
-#: front/src/components/mixins/Translations.vue:74
+#: front/src/components/mixins/Translations.vue:85
+#: front/src/components/mixins/Translations.vue:86
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to audio files, libraries, artists, albums and tracks"
-msgstr ""
+msgstr "Toegang tot audiobestanden, bibliotheken, artiesten, albums, en nummers"
 
-#: front/src/components/mixins/Translations.vue:97
-#: front/src/components/mixins/Translations.vue:98
+#: front/src/components/mixins/Translations.vue:109
+#: front/src/components/mixins/Translations.vue:110
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to content filters"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:105
-#: front/src/components/mixins/Translations.vue:106
-#, fuzzy
+#: front/src/components/mixins/Translations.vue:117
+#: front/src/components/mixins/Translations.vue:118
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to edits"
-msgstr "Toegang uitgeschakeld"
+msgstr "Toegang tot bewerkingen"
 
-#: front/src/components/mixins/Translations.vue:69
-#: front/src/components/mixins/Translations.vue:70
+#: front/src/components/mixins/Translations.vue:81
+#: front/src/components/mixins/Translations.vue:82
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to email, username, and profile information"
-msgstr ""
+msgstr "Toegang tot je emailadres, gebruikersnaam en profiel"
 
-#: front/src/components/mixins/Translations.vue:77
-#: front/src/components/mixins/Translations.vue:78
-#, fuzzy
+#: front/src/components/mixins/Translations.vue:89
+#: front/src/components/mixins/Translations.vue:90
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to favorites"
-msgstr "Toevoegen aan favorieten"
+msgstr "Toegang tot favorieten"
 
-#: front/src/components/mixins/Translations.vue:85
-#: front/src/components/mixins/Translations.vue:86
+#: front/src/components/mixins/Translations.vue:97
+#: front/src/components/mixins/Translations.vue:98
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to follows"
-msgstr ""
+msgstr "Toegang tot je volg-lijst"
 
-#: front/src/components/mixins/Translations.vue:81
-#: front/src/components/mixins/Translations.vue:82
+#: front/src/components/mixins/Translations.vue:93
+#: front/src/components/mixins/Translations.vue:94
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to listening history"
-msgstr ""
+msgstr "Toegang tot je luistergeschiedenis"
 
-#: front/src/components/mixins/Translations.vue:101
-#: front/src/components/mixins/Translations.vue:102
-#, fuzzy
+#: front/src/components/mixins/Translations.vue:113
+#: front/src/components/mixins/Translations.vue:114
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to notifications"
-msgstr "Je meldingen"
+msgstr "Toegang tot notificaties"
 
-#: front/src/components/mixins/Translations.vue:89
-#: front/src/components/mixins/Translations.vue:90
-#, fuzzy
+#: front/src/components/mixins/Translations.vue:101
+#: front/src/components/mixins/Translations.vue:102
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to playlists"
-msgstr "Toevoegen aan afspeellijst…"
+msgstr "Toegang tot afspeellijsten"
 
-#: front/src/components/mixins/Translations.vue:93
-#: front/src/components/mixins/Translations.vue:94
-#, fuzzy
+#: front/src/components/mixins/Translations.vue:105
+#: front/src/components/mixins/Translations.vue:106
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to radios"
-msgstr "Toegang uitgeschakeld"
-
-#: front/src/components/Home.vue:101
-#, fuzzy
-msgctxt "Content/Home/List item"
-msgid ""
-"Access your music from a clean interface that focuses on what really matters"
-msgstr ""
-"Toegang tot je muziek, met een nette gebruikersomgeving die de nadruk legt "
-"op wat écht belangrijk is"
+msgstr "Toegang tot radio's"
 
 #: front/src/components/manage/library/UploadsTable.vue:67
-#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:55
 #: front/src/views/admin/library/UploadDetail.vue:175
-#: front/src/components/mixins/Translations.vue:46
+#: front/src/components/mixins/Translations.vue:56
 msgctxt "Content/*/*/Noun"
 msgid "Accessed date"
 msgstr "Benaderd op"
 
-#: front/src/views/admin/library/LibraryDetail.vue:104
-#: front/src/views/admin/library/UploadDetail.vue:111
-#, fuzzy
-msgctxt "*/*/*/Noun"
-msgid "Account"
-msgstr "Mijn account"
-
 #: front/src/components/manage/library/LibrariesTable.vue:49
 #: front/src/components/manage/library/UploadsTable.vue:61
-#, fuzzy
-msgctxt "*/*/*"
+#: front/src/components/manage/moderation/ReportCard.vue:156
+#: front/src/components/mixins/Report.vue:13
+#: front/src/views/admin/library/LibraryDetail.vue:113
+#: front/src/views/admin/library/UploadDetail.vue:111
+#: front/src/components/mixins/Report.vue:14
+msgctxt "*/*/*/Noun"
 msgid "Account"
-msgstr "Mijn account"
+msgstr "Account"
 
 #: front/src/views/admin/moderation/AccountsDetail.vue:107
-#, fuzzy
 msgctxt "Content/Moderation/Title"
 msgid "Account data"
-msgstr "Actief account"
+msgstr "Accountgegevens"
 
 #: front/src/components/auth/Settings.vue:5
 msgctxt "Content/Settings/Title"
 msgid "Account settings"
 msgstr "Accountinstellingen"
 
-#: front/src/components/auth/Settings.vue:479
+#: front/src/components/auth/Settings.vue:544
 msgctxt "Head/Settings/Title"
 msgid "Account Settings"
 msgstr "Accountinstellingen"
@@ -321,11 +373,10 @@ msgstr "E-mailadres van account"
 
 #: front/src/views/admin/moderation/AccountsList.vue:3
 #: front/src/views/admin/moderation/AccountsList.vue:24
-#: front/src/views/admin/moderation/Base.vue:8
-#, fuzzy
+#: front/src/views/admin/moderation/Base.vue:11
 msgctxt "*/Moderation/Title"
 msgid "Accounts"
-msgstr "Accountstatus"
+msgstr "Accounts"
 
 #: front/src/views/content/libraries/Detail.vue:29
 msgctxt "Content/Library/Table.Label"
@@ -333,32 +384,32 @@ msgid "Action"
 msgstr "Actie"
 
 #: front/src/components/common/ActionTable.vue:101
-#, fuzzy
 msgctxt "Content/*/Paragraph"
 msgid "Action %{ action } was launched successfully on %{ count } element"
-msgid_plural ""
-"Action %{ action } was launched successfully on %{ count } elements"
+msgid_plural "Action %{ action } was launched successfully on %{ count } elements"
 msgstr[0] "Actie %{ action } is begonnen voor %{ count } element"
 msgstr[1] "Actie %{ action } is begonnen voor %{ count } elementen"
 
 #: front/src/components/common/ActionTable.vue:22
 #: front/src/components/library/radios/Builder.vue:65
+#: front/src/components/manage/moderation/ReportCard.vue:210
 msgctxt "Content/*/*/Noun"
 msgid "Actions"
 msgstr "Acties"
 
-#: front/src/components/manage/users/UsersTable.vue:53
+#: front/src/components/manage/users/UsersTable.vue:54
 msgctxt "Content/Admin/Table"
 msgid "Active"
 msgstr "Actief"
 
-#: front/src/views/admin/library/AlbumDetail.vue:134
-#: front/src/views/admin/library/ArtistDetail.vue:123
-#: front/src/views/admin/library/LibraryDetail.vue:138
-#: front/src/views/admin/library/TrackDetail.vue:186
+#: front/src/views/admin/library/AlbumDetail.vue:140
+#: front/src/views/admin/library/ArtistDetail.vue:128
+#: front/src/views/admin/library/LibraryDetail.vue:147
+#: front/src/views/admin/library/TagDetail.vue:83
+#: front/src/views/admin/library/TrackDetail.vue:192
 #: front/src/views/admin/library/UploadDetail.vue:160
-#: front/src/views/admin/moderation/AccountsDetail.vue:220
-#: front/src/views/admin/moderation/DomainsDetail.vue:136
+#: front/src/views/admin/moderation/AccountsDetail.vue:221
+#: front/src/views/admin/moderation/DomainsDetail.vue:173
 msgctxt "Content/Moderation/Title"
 msgid "Activity"
 msgstr "Activiteit"
@@ -369,15 +420,15 @@ msgctxt "Content/Settings/Dropdown.Label/Noun"
 msgid "Activity visibility"
 msgstr "Zichtbaarheid van activiteit"
 
-#: front/src/views/admin/moderation/DomainsList.vue:18
+#: front/src/views/admin/moderation/DomainsList.vue:22
 msgctxt "Content/Moderation/Button/Verb"
 msgid "Add"
-msgstr ""
+msgstr "Toevoegen"
 
 #: front/src/views/admin/moderation/DomainsList.vue:13
 msgctxt "Content/Moderation/Form.Label/Verb"
 msgid "Add a domain"
-msgstr ""
+msgstr "Domein toevoegen"
 
 #: front/src/views/admin/moderation/AccountsDetail.vue:79
 msgctxt "Content/Moderation/Button/Verb"
@@ -387,7 +438,7 @@ msgstr ""
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:4
 msgctxt "Content/Moderation/Card.Button.Label/Verb"
 msgid "Add a new moderation rule"
-msgstr ""
+msgstr "Nieuwe moderatieregel toevoegen"
 
 #: front/src/views/content/Home.vue:35
 msgctxt "Content/Library/Title/Verb"
@@ -398,12 +449,12 @@ msgstr "Inhoud toevoegen en beheren"
 #: front/src/components/playlists/PlaylistModal.vue:31
 msgctxt "*/Playlist/Button.Label/Verb"
 msgid "Add anyways"
-msgstr ""
+msgstr "Toch toevoegen"
 
 #: front/src/components/Sidebar.vue:75 src/views/content/Base.vue:18
 msgctxt "*/Library/*/Verb"
 msgid "Add content"
-msgstr "Inhoud toevoegen"
+msgstr "Content toevoegen"
 
 #: front/src/components/library/radios/Builder.vue:51
 msgctxt "Content/Radio/Button.Label/Verb"
@@ -415,11 +466,24 @@ msgctxt "Content/Radio/Paragraph"
 msgid "Add filters to customize your radio"
 msgstr "Voeg filters toe om je radio te personaliseren"
 
-#: front/src/components/audio/PlayButton.vue:75
+#: front/src/components/manage/moderation/NoteForm.vue:12
 #, fuzzy
+msgctxt "Content/Moderation/Button.Label/Verb"
+msgid "Add note"
+msgstr "Content toevoegen"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:191
+#: front/src/views/admin/moderation/DomainsDetail.vue:46
+#: front/src/views/admin/moderation/DomainsList.vue:18
+#, fuzzy
+msgctxt "Content/Moderation/Action/Verb"
+msgid "Add to allow-list"
+msgstr "Aan afspeellijst toevoegen…"
+
+#: front/src/components/audio/PlayButton.vue:91
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Add to current queue"
-msgstr "Toevoegen aan wachtrij"
+msgstr "Aan huidige wachtrij toevoegen"
 
 #: front/src/components/favorites/TrackFavoriteIcon.vue:4
 #: front/src/components/favorites/TrackFavoriteIcon.vue:28
@@ -429,10 +493,9 @@ msgstr "Toevoegen aan favorieten"
 
 #: front/src/components/playlists/TrackPlaylistIcon.vue:6
 #: front/src/components/playlists/TrackPlaylistIcon.vue:34
-#, fuzzy
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Add to playlist…"
-msgstr "Toevoegen aan afspeellijst…"
+msgstr "Aan afspeellijst toevoegen…"
 
 #: front/src/components/audio/PlayButton.vue:15
 msgctxt "*/Queue/Dropdown/Button/Label/Short"
@@ -449,7 +512,7 @@ msgctxt "Popup/Playlist/Table.Button.Label/Verb"
 msgid "Add track"
 msgstr "Nummer toevoegen"
 
-#: front/src/components/manage/users/UsersTable.vue:69
+#: front/src/components/manage/users/UsersTable.vue:70
 msgctxt "Content/Admin/Table.User role"
 msgid "Admin"
 msgstr "Beheerder"
@@ -459,51 +522,49 @@ msgctxt "Sidebar/Admin/Title/Noun"
 msgid "Administration"
 msgstr "Administratie"
 
-#: front/src/views/admin/library/TrackDetail.vue:107
-msgctxt "*/*/*/Noun"
-msgid "Album"
-msgstr "Album"
-
-#: front/src/components/audio/SearchBar.vue:26
+#: front/src/components/audio/SearchBar.vue:33
 #: src/components/audio/track/Table.vue:9
-#: front/src/components/library/AlbumBase.vue:152
-#: front/src/components/library/ArtistBase.vue:194
+#: front/src/components/library/AlbumBase.vue:170
+#: front/src/components/library/ArtistBase.vue:212
 #: front/src/components/manage/library/TracksTable.vue:40
 #: front/src/components/metadata/Search.vue:134
+#: src/components/mixins/Report.vue:41
+#: front/src/views/admin/library/TrackDetail.vue:113
 #: front/src/views/content/libraries/FilesTable.vue:57
+#: front/src/components/mixins/Report.vue:42
 msgctxt "*/*/*"
 msgid "Album"
 msgstr "Album"
 
-#: front/src/views/admin/library/TrackDetail.vue:128
-#, fuzzy
+#: front/src/views/admin/library/TrackDetail.vue:134
 msgctxt "*/*/*/Noun"
 msgid "Album artist"
-msgstr "Albums van deze artiest"
+msgstr "Albumartiest"
 
-#: front/src/views/admin/library/AlbumDetail.vue:92
-#, fuzzy
+#: front/src/views/admin/library/AlbumDetail.vue:98
 msgctxt "Content/Moderation/Title"
 msgid "Album data"
-msgstr "Albumpagina"
+msgstr "Albumgegevens"
 
-#: front/src/components/mixins/Translations.vue:51
-#: front/src/components/mixins/Translations.vue:52
+#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/mixins/Translations.vue:62
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Album name"
 msgstr "Albumnaam"
 
 #: front/src/components/audio/Search.vue:19
-#: src/components/instance/Stats.vue:48
-#: front/src/components/library/Albums.vue:120
-#: src/components/library/Library.vue:7
+#: src/components/library/Albums.vue:129
+#: front/src/components/library/Library.vue:7
+#: src/components/library/TagDetail.vue:28
 #: front/src/components/manage/library/ArtistsTable.vue:41
+#: front/src/components/manage/library/TagsTable.vue:43
 #: front/src/views/admin/library/AlbumsList.vue:24
-#: front/src/views/admin/library/ArtistDetail.vue:241
+#: front/src/views/admin/library/ArtistDetail.vue:256
 #: front/src/views/admin/library/Base.vue:11
-#: front/src/views/admin/library/LibraryDetail.vue:219
-#: front/src/views/admin/moderation/AccountsDetail.vue:354
-#: front/src/views/admin/moderation/DomainsDetail.vue:264
+#: front/src/views/admin/library/LibraryDetail.vue:238
+#: front/src/views/admin/library/TagDetail.vue:133
+#: front/src/views/admin/moderation/AccountsDetail.vue:366
+#: front/src/views/admin/moderation/DomainsDetail.vue:301
 msgctxt "*/*/*"
 msgid "Albums"
 msgstr "Albums"
@@ -517,92 +578,103 @@ msgstr "Albums van deze artiest"
 #: front/src/components/manage/library/LibrariesTable.vue:13
 #: front/src/components/manage/library/UploadsTable.vue:13
 #: front/src/components/manage/library/UploadsTable.vue:22
+#: front/src/components/manage/moderation/DomainsTable.vue:11
 #: front/src/components/manage/users/InvitationsTable.vue:19
+#: front/src/components/moderation/ReportCategoryDropdown.vue:32
+#: front/src/views/admin/moderation/ReportsList.vue:17
 #: front/src/views/content/libraries/FilesTable.vue:13
 msgctxt "Content/*/Dropdown"
 msgid "All"
 msgstr "Alles"
 
 #: front/src/components/common/ActionTable.vue:59
-#, fuzzy
 msgctxt "Content/*/Paragraph"
 msgid "All %{ count } element selected"
 msgid_plural "All %{ count } elements selected"
-msgstr[0] "%{ count } van %{ total } element geselecteerd"
-msgstr[1] "%{ count } van %{ total } elementen geselecteerd"
+msgstr[0] "Één element geselecteerd"
+msgstr[1] "Alle %{ count } elementen geselecteerd"
 
 #: front/src/components/auth/Authorize.vue:107
 msgctxt "Head/Authorize/Title"
 msgid "Allow application"
+msgstr "Deze applicatie toestaan"
+
+#: front/src/components/About.vue:136
+msgctxt "*/*/*"
+msgid "Allow-list"
 msgstr ""
 
+#: front/src/components/About.vue:149
+#, fuzzy
+msgctxt "*/*/*"
+msgid "Allowed domains"
+msgstr "Domein toevoegen"
+
 #: front/src/components/library/ImportStatusModal.vue:17
+#, fuzzy
 msgctxt "Popup/Import/Message"
-msgid ""
-"An error occured during upload processing. You will find more information "
-"below."
-msgstr ""
+msgid "An error occurred during upload processing. You will find more information below."
+msgstr "Er ging iets fout bij het verwerken van je upload. Meer informatie hieronder."
 
 #: front/src/components/playlists/Editor.vue:13
+#, fuzzy
 msgctxt "Content/Playlist/Error message.Title"
-msgid "An error occured while saving your changes"
+msgid "An error occurred while saving your changes"
 msgstr "Er is een fout opgetreden tijdens het opslaan van de wijzigingen"
 
 #: front/src/components/federation/FetchButton.vue:21
 #, fuzzy
 msgctxt "Popup/*/Message.Content"
-msgid "An error occured while trying to refresh data:"
-msgstr "Er is een fout opgetreden tijdens het opslaan van de wijzigingen"
+msgid "An error occurred while trying to refresh data:"
+msgstr "Er ging iets fout tijdens het vernieuwen van de gegevens:"
 
 #: front/src/components/federation/FetchButton.vue:41
 #, fuzzy
 msgctxt "*/*/Error"
-msgid "An HTTP error occured while contacting the remote server"
-msgstr "Er is een fout opgetreden tijdens het opslaan van de wijzigingen"
-
-#: front/src/components/auth/Login.vue:10
-msgctxt "Content/Login/Error message/List item"
-msgid ""
-"An unknown error happend, this can mean the server is down or cannot be "
-"reached"
-msgstr ""
-"Er is een onbekende fout opgetreden: mogelijk staat de server uit of is "
-"onbereikbaar"
+msgid "An HTTP error occurred while contacting the remote server"
+msgstr "Er ging iets fout bij het contact maken met de externe server"
 
 #: front/src/components/library/ImportStatusModal.vue:145
+#, fuzzy
 msgctxt "Popup/Import/Error.Label"
-msgid "An unkwown error occured"
+msgid "An unknown error occurred"
+msgstr "Er is een onbekende fout opgetreden"
+
+#: front/src/components/About.vue:123
+msgctxt "*/*/*"
+msgid "Anonymous access"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:54
+msgctxt "Popup/Moderation/Error message"
+msgid "Anonymous reports are disabled, please sign-in to submit a report."
 msgstr ""
 
 #: front/src/components/auth/Settings.vue:175
 #: src/components/auth/Settings.vue:225
-#, fuzzy
 msgctxt "*/*/*/Noun"
 msgid "Application"
-msgstr "Actie"
+msgstr "Applicatie"
 
 #: front/src/components/auth/ApplicationEdit.vue:12
 msgctxt "Content/Applications/Title"
 msgid "Application details"
-msgstr ""
+msgstr "Applicatie-details"
 
 #: front/src/components/auth/ApplicationEdit.vue:21
-#, fuzzy
 msgctxt "Content/Applications/Label"
 msgid "Application ID"
-msgstr "Actie"
+msgstr "Applicatie-ID"
 
 #: front/src/components/auth/ApplicationEdit.vue:16
 msgctxt "Content/Application/Paragraph/"
-msgid ""
-"Application ID and secret are really sensitive values and must be treated "
-"like passwords. Do not share those with anyone else."
-msgstr ""
+msgid "Application ID and secret are really sensitive values and must be treated like passwords. Do not share those with anyone else."
+msgstr "De applicatie-ID en sleutel zijn gevoelige gegevens en moet je als wachtwoord beschouwen. Deel ze niet met anderen."
 
 #: front/src/components/auth/ApplicationEdit.vue:25
 msgctxt "Content/Applications/Label"
 msgid "Application secret"
-msgstr ""
+msgstr "Applicatie-sleutel"
 
 #: front/src/components/library/EditCard.vue:81
 #: front/src/components/notifications/NotificationRow.vue:66
@@ -626,70 +698,66 @@ msgctxt "Content/Login/Title"
 msgid "Are you sure you want to log out?"
 msgstr "Weet je zeker dat je wilt uitloggen?"
 
+#: front/src/components/audio/SearchBar.vue:32
+#: src/components/audio/track/Table.vue:8
 #: front/src/components/manage/library/AlbumsTable.vue:40
 #: front/src/components/manage/library/TracksTable.vue:41
-msgctxt "*/*/*"
-msgid "Artist"
-msgstr "Artiest"
-
-#: front/src/components/audio/SearchBar.vue:25
-#: src/components/audio/track/Table.vue:8
 #: front/src/components/metadata/Search.vue:130
-#: front/src/views/admin/library/AlbumDetail.vue:108
-#: front/src/views/admin/library/TrackDetail.vue:118
-#: front/src/views/content/libraries/FilesTable.vue:56
+#: src/components/mixins/Report.vue:55
+#: front/src/views/admin/library/AlbumDetail.vue:114
+#: front/src/views/admin/library/TrackDetail.vue:124
+#: front/src/views/content/libraries/FilesTable.vue:56 src/entities.js:12
+#: front/src/components/mixins/Report.vue:56
 msgctxt "*/*/*/Noun"
 msgid "Artist"
 msgstr "Artiest"
 
-#: front/src/views/admin/library/ArtistDetail.vue:91
-#, fuzzy
+#: front/src/views/admin/library/ArtistDetail.vue:96
 msgctxt "Content/Moderation/Title"
 msgid "Artist data"
-msgstr "Artiestnaam"
+msgstr "Artiestgegevens"
 
-#: front/src/components/mixins/Translations.vue:52
-#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/mixins/Translations.vue:62
+#: front/src/components/mixins/Translations.vue:63
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Artist name"
 msgstr "Artiestnaam"
 
 #: front/src/components/audio/Search.vue:65
-#, fuzzy
 msgctxt "*/Search/Input.Placeholder"
 msgid "Artist, album, track…"
-msgstr "Artiest, album, nummer..."
+msgstr "Artiest, album, nummer…"
 
+#: front/src/components/audio/Search.vue:10
+#: src/components/library/Artists.vue:117
+#: front/src/components/library/Library.vue:10
+#: front/src/components/library/TagDetail.vue:19
+#: front/src/components/manage/library/TagsTable.vue:42
 #: front/src/views/admin/library/ArtistsList.vue:24
 #: front/src/views/admin/library/Base.vue:8
-#: front/src/views/admin/library/LibraryDetail.vue:209
-msgctxt "*/*/*"
-msgid "Artists"
-msgstr "Artiesten"
-
-#: front/src/components/audio/Search.vue:10
-#: src/components/instance/Stats.vue:42
-#: front/src/components/library/Artists.vue:117
-#: src/components/library/Library.vue:10
-#: front/src/views/admin/moderation/AccountsDetail.vue:346
-#: front/src/views/admin/moderation/DomainsDetail.vue:254
+#: front/src/views/admin/library/LibraryDetail.vue:228
+#: front/src/views/admin/library/TagDetail.vue:123
+#: front/src/views/admin/moderation/AccountsDetail.vue:358
+#: front/src/views/admin/moderation/DomainsDetail.vue:291
 msgctxt "*/*/*/Noun"
 msgid "Artists"
 msgstr "Artiesten"
 
 #: front/src/components/favorites/List.vue:34
-#: src/components/library/Albums.vue:25
-#: front/src/components/library/Artists.vue:25
+#: src/components/library/Albums.vue:29
+#: front/src/components/library/Artists.vue:29
 #: src/components/library/Radios.vue:44
 #: front/src/components/manage/library/AlbumsTable.vue:21
 #: front/src/components/manage/library/ArtistsTable.vue:21
 #: front/src/components/manage/library/EditsCardList.vue:39
 #: front/src/components/manage/library/LibrariesTable.vue:30
+#: front/src/components/manage/library/TagsTable.vue:21
 #: front/src/components/manage/library/TracksTable.vue:21
 #: front/src/components/manage/library/UploadsTable.vue:40
 #: front/src/components/manage/moderation/AccountsTable.vue:21
-#: front/src/components/manage/moderation/DomainsTable.vue:19
+#: front/src/components/manage/moderation/DomainsTable.vue:27
 #: front/src/components/manage/users/UsersTable.vue:19
+#: front/src/views/admin/moderation/ReportsList.vue:44
 #: front/src/views/content/libraries/FilesTable.vue:31
 #: front/src/views/playlists/List.vue:27
 msgctxt "Content/Search/Dropdown"
@@ -701,22 +769,27 @@ msgctxt "Content/Signup/Button.Label/Verb"
 msgid "Ask for a password reset"
 msgstr "Wachtwoordherstel aanvragen"
 
-#: front/src/views/admin/library/AlbumDetail.vue:198
-#: front/src/views/admin/library/ArtistDetail.vue:187
-#: front/src/views/admin/library/LibraryDetail.vue:176
-#: front/src/views/admin/library/TrackDetail.vue:250
+#: front/src/components/manage/moderation/ReportCard.vue:72
+msgctxt "Content/Moderation/*"
+msgid "Assigned to"
+msgstr ""
+
+#: front/src/views/admin/library/AlbumDetail.vue:214
+#: front/src/views/admin/library/ArtistDetail.vue:202
+#: front/src/views/admin/library/LibraryDetail.vue:195
+#: front/src/views/admin/library/TagDetail.vue:113
+#: front/src/views/admin/library/TrackDetail.vue:266
 #: front/src/views/admin/library/UploadDetail.vue:191
-#: front/src/views/admin/moderation/AccountsDetail.vue:274
-#: front/src/views/admin/moderation/DomainsDetail.vue:202
-#, fuzzy
+#: front/src/views/admin/moderation/AccountsDetail.vue:285
+#: front/src/views/admin/moderation/DomainsDetail.vue:239
 msgctxt "Content/Moderation/Title"
 msgid "Audio content"
-msgstr "Inhoud toevoegen"
+msgstr "Audio-inhoud"
 
-#: front/src/components/ShortcutsModal.vue:55
+#: front/src/components/ShortcutsModal.vue:92
 msgctxt "Popup/Keyboard shortcuts/Title"
 msgid "Audio player shortcuts"
-msgstr ""
+msgstr "Sneltoetsen audio-player"
 
 #: front/src/components/auth/Authorize.vue:47
 msgctxt "Content/Signup/Button.Label/Verb"
@@ -751,15 +824,14 @@ msgstr "Terug naar inlogpagina"
 
 #: front/src/components/auth/ApplicationEdit.vue:9
 #: front/src/components/auth/ApplicationNew.vue:5
-#, fuzzy
 msgctxt "Content/Applications/Link"
 msgid "Back to settings"
-msgstr "Instellingen bijwerken"
+msgstr "Terug naar instellingen"
 
 #: front/src/components/library/TrackDetail.vue:48
-#: front/src/components/mixins/Translations.vue:55
+#: front/src/components/mixins/Translations.vue:67
 #: front/src/views/admin/library/UploadDetail.vue:227
-#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:68
 msgctxt "Content/Track/*/Noun"
 msgid "Bitrate"
 msgstr "Bitsnelheid"
@@ -768,15 +840,12 @@ msgstr "Bitsnelheid"
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:34
 msgctxt "Content/Moderation/*/Verb"
 msgid "Block everything"
-msgstr ""
+msgstr "Alles blokkeren"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:112
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Block everything from this account or domain. This will prevent any "
-"interaction with the entity, and purge related content (uploads, libraries, "
-"follows, etc.)"
-msgstr ""
+msgid "Block everything from this account or domain. This will prevent any interaction with the entity, and purge related content (uploads, libraries, follows, etc.)"
+msgstr "Alles van dit account of deze domeinnaam blokkeren. Dit voorkomt elke interactie en verwijdert alle gerelateerde gegevens (uploads, bibliotheken, gevolgde accounts, enz.)"
 
 #: front/src/components/Sidebar.vue:18 src/components/library/Library.vue:4
 msgctxt "*/Library/*/Verb"
@@ -786,13 +855,17 @@ msgstr "Bladeren"
 #: front/src/components/Sidebar.vue:65
 msgctxt "Sidebar/Library/List item.Link/Verb"
 msgid "Browse library"
-msgstr "Verzameling doorbladeren"
+msgstr "Bibliotheek doorbladeren"
+
+#: front/src/components/Home.vue:132
+msgctxt "Content/Home/Link"
+msgid "Browse public content"
+msgstr ""
 
 #: front/src/components/library/Albums.vue:4
-#, fuzzy
 msgctxt "Content/Album/Title"
 msgid "Browsing albums"
-msgstr "Radio's doorbladeren"
+msgstr "Albums doorbladeren"
 
 #: front/src/components/library/Artists.vue:4
 msgctxt "Content/Artist/Title"
@@ -819,44 +892,43 @@ msgctxt "Content/Album/Card"
 msgid "By %{ artist }"
 msgstr "Van %{ artist }"
 
-#: front/src/views/content/remote/Card.vue:112
-#, fuzzy
+#: front/src/views/content/remote/Card.vue:125
 msgctxt "Popup/Library/Paragraph"
 msgid "By unfollowing this library, you loose access to its content."
-msgstr ""
-"Als je deze verzameling ontvolgt, dan verlies je toegang tot alle inhoud."
+msgstr "Als je deze bibliotheek ontvolgt, verlies je toegang tot haar inhoud."
 
-#: front/src/views/admin/library/AlbumDetail.vue:214
-#: front/src/views/admin/library/ArtistDetail.vue:203
-#: front/src/views/admin/library/LibraryDetail.vue:192
-#: front/src/views/admin/library/TrackDetail.vue:266
+#: front/src/views/admin/library/AlbumDetail.vue:230
+#: front/src/views/admin/library/ArtistDetail.vue:218
+#: front/src/views/admin/library/LibraryDetail.vue:211
+#: front/src/views/admin/library/TrackDetail.vue:282
 #: front/src/views/admin/library/UploadDetail.vue:208
-#: front/src/views/admin/moderation/AccountsDetail.vue:290
-#: front/src/views/admin/moderation/DomainsDetail.vue:217
+#: front/src/views/admin/moderation/AccountsDetail.vue:301
+#: front/src/views/admin/moderation/DomainsDetail.vue:254
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Cached size"
 msgstr ""
 
 #: front/src/components/SetInstanceModal.vue:37
 #: front/src/components/common/DangerousButton.vue:17
-#: front/src/components/library/AlbumBase.vue:36
-#: front/src/components/library/ArtistBase.vue:47
-#: front/src/components/library/EditForm.vue:95
-#: front/src/components/library/TrackBase.vue:55
+#: front/src/components/library/AlbumBase.vue:37
+#: front/src/components/library/ArtistBase.vue:48
+#: front/src/components/library/EditForm.vue:107
+#: front/src/components/library/TrackBase.vue:53
 #: front/src/components/library/radios/Filter.vue:53
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:54
 #: front/src/components/moderation/FilterModal.vue:39
+#: front/src/components/moderation/ReportModal.vue:59
 #: front/src/components/playlists/PlaylistModal.vue:26
 #: front/src/components/playlists/PlaylistModal.vue:77
+#: front/src/views/playlists/Detail.vue:62
 msgctxt "*/*/Button.Label/Verb"
 msgid "Cancel"
 msgstr "Annuleren"
 
-#: front/src/views/content/remote/Card.vue:97
-#, fuzzy
+#: front/src/views/content/remote/Card.vue:110
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Cancel follow request"
-msgstr "In behandeling zijnde volgverzoeken"
+msgstr "Volgverzoek intrekken"
 
 #: front/src/components/library/radios/Builder.vue:64
 msgctxt "Content/Radio/Table.Label/Noun (Value is a number of Tracks)"
@@ -864,11 +936,18 @@ msgid "Candidates"
 msgstr "Mogelijkheden"
 
 #: front/src/components/library/FileUpload.vue:261
-#, fuzzy
 msgctxt "Content/Library/Help text"
 msgid "Cannot upload this file, ensure it is not too big"
 msgstr "Kan dit bestand niet uploaden; zorg ervoor dat het niet te groot is"
 
+#: front/src/components/manage/moderation/ReportCard.vue:30
+#: front/src/components/mixins/Translations.vue:42
+#: front/src/components/moderation/ReportCategoryDropdown.vue:2
+#: front/src/components/mixins/Translations.vue:43
+msgctxt "*/*/*"
+msgid "Category"
+msgstr ""
+
 #: front/src/components/Footer.vue:21
 msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
 msgid "Change language"
@@ -884,6 +963,11 @@ msgctxt "Content/Settings/Button.Label"
 msgid "Change password"
 msgstr "Wachtwoord wijzigen"
 
+#: front/src/components/Footer.vue:37
+msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
+msgid "Change theme"
+msgstr ""
+
 #: front/src/views/auth/PasswordResetConfirm.vue:62
 msgctxt "*/Signup/Title"
 msgid "Change your password"
@@ -901,42 +985,32 @@ msgstr "Wijzigingen opgeslagen op server"
 
 #: front/src/components/auth/Settings.vue:71
 msgctxt "Content/Settings/Paragraph'"
-msgid ""
-"Changing your password will also change your Subsonic API password if you "
-"have requested one."
-msgstr ""
-"Als je je wachtwoord wijzigt, dan wordt ook het wachtwoord voor de Subsonic-"
-"API gewijzigd als je deze had ingesteld."
+msgid "Changing your password will also change your Subsonic API password if you have requested one."
+msgstr "Als je je wachtwoord wijzigt, dan wordt ook het wachtwoord voor de Subsonic-API gewijzigd als je deze had ingesteld."
 
 #: front/src/components/auth/Settings.vue:98
-#, fuzzy
 msgctxt "Popup/Settings/Paragraph"
 msgid "Changing your password will have the following consequences:"
-msgstr "Het aanpassen van je wachtwoord heeft gevolgen"
+msgstr "Het aanpassen van je wachtwoord heeft de volgende gevolgen:"
 
-#: front/src/components/Footer.vue:40
+#: front/src/components/Footer.vue:48
 msgctxt "Footer/*/List item.Link"
 msgid "Chat room"
-msgstr ""
+msgstr "Chat-ruimte"
 
 #: front/src/components/auth/ApplicationForm.vue:24
 msgctxt "Content/Applications/Paragraph/"
-msgid ""
-"Checking the parent \"Read\" or \"Write\" scopes implies access to all the "
-"corresponding children scopes."
+msgid "Checking the parent \"Read\" or \"Write\" scopes implies access to all the corresponding children scopes."
 msgstr ""
 
 #: front/src/components/SetInstanceModal.vue:2
 msgctxt "Popup/Instance/Title"
 msgid "Choose your instance"
-msgstr "Kies je instantie"
-
-#: front/src/components/manage/users/InvitationForm.vue:37
-msgctxt "Content/Admin/Button.Label/Verb"
-msgid "Clear"
-msgstr "Wissen"
+msgstr "Kies je server"
 
 #: front/src/components/library/EditForm.vue:75
+#: front/src/components/library/EditForm.vue:88
+#: front/src/components/manage/users/InvitationForm.vue:37
 msgctxt "Content/Library/Button.Label"
 msgid "Clear"
 msgstr "Wissen"
@@ -947,44 +1021,46 @@ msgctxt "*/Playlist/Button.Label/Verb"
 msgid "Clear playlist"
 msgstr "Afspeellijst wissen"
 
-#: front/src/components/audio/Player.vue:642
+#: front/src/components/ShortcutsModal.vue:144
+#, fuzzy
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Clear queue"
+msgstr "Wachtrij wissen"
+
+#: front/src/components/audio/Player.vue:668
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Clear your queue"
 msgstr "Wachtrij wissen"
 
-#: front/src/components/Home.vue:44
-msgctxt "Content/Home/List item/Verb"
-msgid "Click once, listen for hours using built-in radios"
-msgstr "Met één druk op de knop urenlang muziek uit ingebouwde radiostations"
-
 #: front/src/components/mixins/Translations.vue:21
 #: front/src/components/mixins/Translations.vue:22
 msgctxt "Content/Library/Link.Title"
-msgid ""
-"Click to display more information about the import process for this upload"
-msgstr ""
+msgid "Click to display more information about the import process for this upload"
+msgstr "Klik voor meer informatie over het importeerproces van deze upload"
 
 #: front/src/components/library/FileUpload.vue:82
 msgctxt "Content/Library/Paragraph/Call to action"
 msgid "Click to select files to upload or drag and drop files or directories"
-msgstr ""
-"Klik om bestanden te selecteren, of sleep bestanden of mappen hierheen"
+msgstr "Klik om bestanden te selecteren, of sleep bestanden of mappen hierheen"
 
+#: front/src/components/ShortcutsModal.vue:38
 #: front/src/components/federation/FetchButton.vue:85
 #: front/src/components/library/ImportStatusModal.vue:79
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:34
 msgctxt "*/*/Button.Label/Verb"
 msgid "Close"
-msgstr ""
-
-#: front/src/components/ShortcutsModal.vue:20
-msgctxt "Popup/Keyboard shortcuts/Button.Label/Verb"
-msgid "Close"
-msgstr ""
+msgstr "Sluiten"
 
 #: front/src/components/federation/FetchButton.vue:88
 msgctxt "*/*/Button.Label/Verb"
 msgid "Close and reload page"
-msgstr ""
+msgstr "Sluiten en pagina vernieuwen"
+
+#: front/src/components/About.vue:94
+#, fuzzy
+msgctxt "*/*/*/State of registrations"
+msgid "Closed"
+msgstr "Sluiten"
 
 #: front/src/components/manage/users/InvitationForm.vue:26
 #: front/src/components/manage/users/InvitationsTable.vue:42
@@ -993,8 +1069,9 @@ msgid "Code"
 msgstr "Code"
 
 #: front/src/components/audio/album/Card.vue:41
-#: front/src/components/audio/artist/Card.vue:33
-msgctxt "Content/*/Card.Link/Verb"
+#: front/src/components/common/CollapseLink.vue:3
+#, fuzzy
+msgctxt "*/*/Button,Label"
 msgid "Collapse"
 msgstr "Inklappen"
 
@@ -1009,7 +1086,6 @@ msgid "Confirm"
 msgstr "Bevestigen"
 
 #: front/src/views/auth/EmailConfirm.vue:51
-#, fuzzy
 msgctxt "Head/Signup/Title"
 msgid "Confirm your e-mail address"
 msgstr "Bevestig je e-mailadres"
@@ -1019,86 +1095,82 @@ msgctxt "Content/Signup/Form.Label"
 msgid "Confirmation code"
 msgstr "Bevestigingscode"
 
+#: front/src/components/About.vue:67 src/components/Home.vue:65
+msgctxt "Content/Home/Header/Name"
+msgid "Contact"
+msgstr ""
+
 #: front/src/components/moderation/FilterModal.vue:90
-#, fuzzy
 msgctxt "*/Moderation/Message"
 msgid "Content filter successfully added"
-msgstr "Import voltooid"
-
-#: front/src/components/mixins/Translations.vue:96
-#: front/src/components/mixins/Translations.vue:97
-#, fuzzy
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Content filters"
-msgstr "Filter kiezen"
+msgstr "Inhoudsfilter succesvol toegevoegd"
 
 #: front/src/components/auth/Settings.vue:116
-#, fuzzy
+#: front/src/components/mixins/Translations.vue:108
+#: front/src/components/mixins/Translations.vue:109
 msgctxt "Content/Settings/Title/Noun"
 msgid "Content filters"
-msgstr "Filter kiezen"
+msgstr "Inhoudsfilters"
 
 #: front/src/components/auth/Settings.vue:119
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"Content filters help you hide content you don't want to see on the service."
-msgstr ""
+msgid "Content filters help you hide content you don't want to see on the service."
+msgstr "Inhoudsfilters helpen je inhoud te verbergen die je niet wilt tegenkomen."
 
 #: front/src/components/common/ActionTable.vue:8
 msgctxt "Content/*/Button.Help text.Paragraph"
 msgid "Content have been updated, click refresh to see up-to-date content"
-msgstr ""
+msgstr "Inhoud is geüpdatet, klik vernieuwen om actuele inhoud te zien"
 
-#: front/src/components/Footer.vue:48
+#: front/src/components/About.vue:46
+#, fuzzy
+msgctxt "Content/About/Header"
+msgid "Contents"
+msgstr "Inhoudsfilters"
+
+#: front/src/components/Footer.vue:56
 msgctxt "Footer/*/List item.Link"
 msgid "Contribute"
-msgstr ""
+msgstr "Bijdragen"
 
-#: front/src/components/audio/EmbedWizard.vue:19
+#: front/src/components/audio/EmbedWizard.vue:29
 #: front/src/components/common/CopyInput.vue:8
+#: front/src/components/forms/PasswordInput.vue:43
 msgctxt "*/*/Button.Label/Short, Verb"
 msgid "Copy"
 msgstr "Kopiëren"
 
 #: front/src/components/playlists/Editor.vue:194
-#, fuzzy
 msgctxt "Content/Playlist/Button.Tooltip/Verb"
 msgid "Copy queued tracks to playlist"
-msgstr "Nummers kopiëren van huidige wachtrij naar afspeellijst"
+msgstr "Kopieer nummers van de wachtrij naar de afspeellijst"
 
 #: front/src/components/auth/Authorize.vue:55
 msgctxt "Content/Auth/Paragraph"
 msgid "Copy-paste the following code in the application:"
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:21
+#: front/src/components/audio/EmbedWizard.vue:31
 msgctxt "Popup/Embed/Paragraph"
 msgid "Copy/paste this code in your website HTML"
-msgstr ""
+msgstr "Kopieer/plak deze HTML-code in je website"
 
 #: front/src/components/library/TrackDetail.vue:10
-#: front/src/views/admin/library/TrackDetail.vue:153
+#: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:77
 #, fuzzy
-msgctxt "Content/Track/Table.Label/Noun"
+msgctxt "Content/Track/*/Noun"
 msgid "Copyright"
 msgstr "Kopiëren"
 
 #: front/src/views/auth/EmailConfirm.vue:7
-#, fuzzy
 msgctxt "Content/Signup/Paragraph"
 msgid "Could not confirm your e-mail address"
-msgstr "Bevestig je e-mailadres"
+msgstr "We konden je e-mailadres niet bevestigen"
 
 #: front/src/views/content/remote/ScanForm.vue:3
-#, fuzzy
 msgctxt "Content/Library/Error message.Title"
 msgid "Could not fetch remote library"
-msgstr "Fout tijdens ophalen van externe verzameling"
-
-#: front/src/components/Home.vue:80
-msgctxt "Content/Home/List item"
-msgid "Covers, lyrics, our goal is to have them all ;)"
-msgstr "Hoezen, songteksten - ons doel is om ze allemaal te hebben ;)"
+msgstr "Externe bibliotheek kon niet opgehaald worden"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:58
 #, fuzzy
@@ -1106,35 +1178,30 @@ msgctxt "Content/Moderation/Card.Button.Label/Verb"
 msgid "Create"
 msgstr "Importeren"
 
-#: front/src/components/auth/Signup.vue:4
+#: front/src/views/auth/Signup.vue:4
 msgctxt "Content/Signup/Title"
 msgid "Create a funkwhale account"
 msgstr "Creëer een Funkwhale-account"
 
-#: front/src/components/auth/Settings.vue:220
-#, fuzzy
-msgctxt "Content/Settings/Button.Label"
-msgid "Create a new application"
-msgstr "Creëer een nieuwe afspeellijst"
-
 #: front/src/components/auth/ApplicationNew.vue:8
 #: front/src/components/auth/ApplicationNew.vue:41
+#: front/src/components/auth/Settings.vue:220
 #, fuzzy
-msgctxt "Content/Applications/Title"
+msgctxt "Content/Settings/Button.Label"
 msgid "Create a new application"
 msgstr "Creëer een nieuwe afspeellijst"
 
 #: front/src/views/content/libraries/Home.vue:14
 msgctxt "Content/Library/Link/Verb"
 msgid "Create a new library"
-msgstr "Creëer een nieuwe verzameling"
+msgstr "Maak een nieuwe bibliotheek"
 
 #: front/src/components/playlists/Form.vue:2
 msgctxt "Popup/Playlist/Title/Verb"
 msgid "Create a new playlist"
 msgstr "Creëer een nieuwe afspeellijst"
 
-#: front/src/components/Sidebar.vue:57 src/components/auth/Login.vue:17
+#: front/src/components/Sidebar.vue:57 src/components/auth/LoginForm.vue:15
 msgctxt "*/Signup/Link/Verb"
 msgid "Create an account"
 msgstr "Creëer een account"
@@ -1148,9 +1215,9 @@ msgstr "Afspeellijst creëren"
 #: front/src/views/content/libraries/Form.vue:26
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Create library"
-msgstr "Verzameling creëren"
+msgstr "Bibliotheek maken"
 
-#: front/src/components/auth/Signup.vue:53
+#: front/src/components/auth/SignupForm.vue:49
 msgctxt "Content/Signup/Button.Label"
 msgid "Create my account"
 msgstr "Account creëren"
@@ -1175,24 +1242,32 @@ msgstr "Creëer je eigen radiostation"
 #: front/src/components/manage/library/AlbumsTable.vue:44
 #: front/src/components/manage/library/ArtistsTable.vue:43
 #: front/src/components/manage/library/LibrariesTable.vue:54
+#: front/src/components/manage/library/TagsTable.vue:45
 #: front/src/components/manage/library/TracksTable.vue:44
 #: front/src/components/manage/library/UploadsTable.vue:66
+#: front/src/components/manage/moderation/ReportCard.vue:43
 #: front/src/components/manage/users/InvitationsTable.vue:40
-#: front/src/components/mixins/Translations.vue:43
-#: front/src/components/mixins/Translations.vue:44
+#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/mixins/Translations.vue:54
 msgctxt "Content/*/*/Noun"
 msgid "Creation date"
-msgstr "Gecreëerd op"
+msgstr "Toegevoegd"
 
 #: front/src/components/auth/Settings.vue:54
 msgctxt "Content/Settings/Title/Noun"
 msgid "Current avatar"
 msgstr "Huidige gebruikersafbeelding"
 
+#: front/src/components/admin/SettingsGroup.vue:67
+#, fuzzy
+msgctxt "Content/Settings/Title/Noun"
+msgid "Current image"
+msgstr "Huidig verbruik"
+
 #: front/src/views/content/libraries/DetailArea.vue:4
 msgctxt "Content/Library/Title"
 msgid "Current library"
-msgstr "Huidige verzameling"
+msgstr "Huidige bibliotheek"
 
 #: front/src/components/playlists/PlaylistModal.vue:8
 msgctxt "Popup/Playlist/Title"
@@ -1204,15 +1279,20 @@ msgctxt "Content/Library/Title"
 msgid "Current usage"
 msgstr "Huidig verbruik"
 
+#: front/src/components/Footer.vue:94
+msgctxt "Footer/Settings/Dropdown.Label/Theme name"
+msgid "Dark"
+msgstr ""
+
 #: front/src/components/federation/FetchButton.vue:53
 msgctxt "*/*/Error"
 msgid "Data returned by the remote server had invalid or missing attributes"
-msgstr ""
+msgstr "Gegevens verkregen van de externe server waren onvolledig of incorrect"
 
 #: front/src/components/federation/FetchButton.vue:17
 msgctxt "Popup/*/Message.Content"
 msgid "Data was refreshed successfully from remote server."
-msgstr ""
+msgstr "Gegevens van externe server succesvol vernieuwd."
 
 #: front/src/views/content/libraries/Detail.vue:27
 msgctxt "Content/Library/Table.Label"
@@ -1220,15 +1300,14 @@ msgid "Date"
 msgstr "Datum"
 
 #: front/src/components/library/ImportStatusModal.vue:64
-#, fuzzy
 msgctxt "Popup/Import/Table.Label/Noun"
 msgid "Debug information"
-msgstr "Nummerinformatie"
+msgstr "Foutgegevens"
 
-#: front/src/components/ShortcutsModal.vue:75
+#: front/src/components/ShortcutsModal.vue:128
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Decrease volume"
-msgstr ""
+msgstr "Volume verlagen"
 
 #: front/src/components/auth/Settings.vue:150
 #: src/components/auth/Settings.vue:251
@@ -1237,23 +1316,29 @@ msgstr ""
 #: front/src/components/manage/library/AlbumsTable.vue:188
 #: front/src/components/manage/library/ArtistsTable.vue:178
 #: front/src/components/manage/library/LibrariesTable.vue:205
+#: front/src/components/manage/library/TagsTable.vue:179
 #: front/src/components/manage/library/TracksTable.vue:188
 #: front/src/components/manage/library/UploadsTable.vue:255
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:61
+#: front/src/components/manage/moderation/NotesThread.vue:24
+#: front/src/components/manage/moderation/NotesThread.vue:29
+#: front/src/components/manage/moderation/ReportCard.vue:360
 #: front/src/components/manage/users/InvitationsTable.vue:167
-#: front/src/views/admin/library/AlbumDetail.vue:72
-#: front/src/views/admin/library/AlbumDetail.vue:77
-#: front/src/views/admin/library/ArtistDetail.vue:71
+#: front/src/views/admin/library/AlbumDetail.vue:78
+#: front/src/views/admin/library/AlbumDetail.vue:83
 #: front/src/views/admin/library/ArtistDetail.vue:76
+#: front/src/views/admin/library/ArtistDetail.vue:81
 #: front/src/views/admin/library/LibraryDetail.vue:58
 #: front/src/views/admin/library/LibraryDetail.vue:63
-#: front/src/views/admin/library/TrackDetail.vue:71
-#: front/src/views/admin/library/TrackDetail.vue:76
+#: front/src/views/admin/library/TagDetail.vue:41
+#: front/src/views/admin/library/TagDetail.vue:46
+#: front/src/views/admin/library/TrackDetail.vue:77
+#: front/src/views/admin/library/TrackDetail.vue:82
 #: front/src/views/admin/library/UploadDetail.vue:65
 #: front/src/views/admin/library/UploadDetail.vue:70
 #: front/src/views/content/libraries/FilesTable.vue:222
 #: front/src/views/content/libraries/Form.vue:29
-#: src/views/playlists/Detail.vue:34
+#: src/views/playlists/Detail.vue:42
 msgctxt "*/*/*/Verb"
 msgid "Delete"
 msgstr "Verwijderen"
@@ -1272,15 +1357,27 @@ msgstr ""
 #: front/src/views/content/libraries/Form.vue:39
 msgctxt "Popup/Library/Button.Label/Verb"
 msgid "Delete library"
-msgstr "Verzameling verwijderen"
+msgstr "Bibliotheek verwijderen"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:69
-#, fuzzy
 msgctxt "Popup/Moderation/Button.Label/Verb"
 msgid "Delete moderation rule"
-msgstr "Radiostation verwijderen"
+msgstr "Moderatie-regel verwijderen"
 
-#: front/src/views/playlists/Detail.vue:39
+#: front/src/components/auth/Settings.vue:274
+#: src/components/auth/Settings.vue:302
+#, fuzzy
+msgctxt "*/*/Button.Label"
+msgid "Delete my account"
+msgstr "Account creëren"
+
+#: front/src/components/auth/Settings.vue:297
+#, fuzzy
+msgctxt "*/*/Button.Label"
+msgid "Delete my account…"
+msgstr "Account creëren"
+
+#: front/src/views/playlists/Detail.vue:47
 msgctxt "Popup/Playlist/Button.Label/Verb"
 msgid "Delete playlist"
 msgstr "Afspeellijst verwijderen"
@@ -1290,87 +1387,103 @@ msgctxt "Popup/Radio/Button.Label/Verb"
 msgid "Delete radio"
 msgstr "Radiostation verwijderen"
 
-#: front/src/views/admin/library/AlbumDetail.vue:73
-#: front/src/views/admin/library/TrackDetail.vue:72
-#, fuzzy
+#: front/src/components/manage/moderation/ReportCard.vue:357
+msgctxt "Content/Moderation/Button/Verb"
+msgid "Delete reported object"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:358
+msgctxt "Content/Moderation/Popup/Header"
+msgid "Delete reported object?"
+msgstr ""
+
+#: front/src/views/admin/library/AlbumDetail.vue:79
+#: front/src/views/admin/library/TrackDetail.vue:78
 msgctxt "Popup/Library/Title"
 msgid "Delete this album?"
-msgstr "Wil je deze verzameling verwijderen?"
+msgstr "Album verwijderen?"
 
-#: front/src/views/admin/library/ArtistDetail.vue:72
-#, fuzzy
+#: front/src/views/admin/library/ArtistDetail.vue:77
 msgctxt "Popup/Library/Title"
 msgid "Delete this artist?"
-msgstr "Wil je deze verzameling verwijderen?"
+msgstr "Artiest verwijderen?"
 
 #: front/src/views/admin/library/LibraryDetail.vue:59
 #: front/src/views/content/libraries/Form.vue:31
 msgctxt "Popup/Library/Title"
 msgid "Delete this library?"
-msgstr "Wil je deze verzameling verwijderen?"
+msgstr "Deze bibliotheek verwijderen?"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:63
-#, fuzzy
 msgctxt "Popup/Moderation/Title"
 msgid "Delete this moderation rule?"
-msgstr "Wil je deze verzameling verwijderen?"
+msgstr "Deze moderatie-regel verwijderen?"
 
-#: front/src/components/library/EditCard.vue:94
+#: front/src/components/manage/moderation/NotesThread.vue:25
 #, fuzzy
+msgctxt "Popup/Moderation/Title"
+msgid "Delete this note?"
+msgstr "Artiest verwijderen?"
+
+#: front/src/components/library/EditCard.vue:94
 msgctxt "Popup/Library/Title"
 msgid "Delete this suggestion?"
-msgstr "Wil je deze verzameling verwijderen?"
+msgstr "Deze suggestie verwijderen?"
 
-#: front/src/views/admin/library/UploadDetail.vue:66
+#: front/src/views/admin/library/TagDetail.vue:42
 #, fuzzy
 msgctxt "Popup/Library/Title"
+msgid "Delete this tag?"
+msgstr "Album verwijderen?"
+
+#: front/src/views/admin/library/UploadDetail.vue:66
+msgctxt "Popup/Library/Title"
 msgid "Delete this upload?"
-msgstr "Wil je deze verzameling verwijderen?"
+msgstr "Deze upload verwijderen?"
 
 #: front/src/components/favorites/List.vue:35
-#: src/components/library/Albums.vue:26
-#: front/src/components/library/Artists.vue:26
+#: src/components/library/Albums.vue:30
+#: front/src/components/library/Artists.vue:30
 #: src/components/library/Radios.vue:47
 #: front/src/components/manage/library/AlbumsTable.vue:22
 #: front/src/components/manage/library/ArtistsTable.vue:22
 #: front/src/components/manage/library/EditsCardList.vue:40
 #: front/src/components/manage/library/LibrariesTable.vue:31
+#: front/src/components/manage/library/TagsTable.vue:22
 #: front/src/components/manage/library/TracksTable.vue:22
 #: front/src/components/manage/library/UploadsTable.vue:41
 #: front/src/components/manage/moderation/AccountsTable.vue:22
-#: front/src/components/manage/moderation/DomainsTable.vue:20
+#: front/src/components/manage/moderation/DomainsTable.vue:28
 #: front/src/components/manage/users/UsersTable.vue:20
+#: front/src/views/admin/moderation/ReportsList.vue:45
 #: front/src/views/content/libraries/FilesTable.vue:32
 #: front/src/views/playlists/List.vue:28
 msgctxt "Content/Search/Dropdown"
 msgid "Descending"
 msgstr "Aflopend"
 
-#: front/src/views/admin/library/LibraryDetail.vue:123
-msgctxt "*/*/*/Noun"
-msgid "Description"
-msgstr "Omschrijving"
+#: front/src/components/manage/moderation/NoteForm.vue:37
+msgctxt "Content/Moderation/Placeholder"
+msgid "Describe what actions have been taken, or any other related updates…"
+msgstr ""
 
 #: front/src/components/library/radios/Builder.vue:25
+#: front/src/views/admin/library/LibraryDetail.vue:132
 #: front/src/views/content/libraries/Form.vue:14
-msgctxt "Content/*/Input.Label/Noun"
+msgctxt "*/*/*/Noun"
 msgid "Description"
 msgstr "Omschrijving"
 
 #: front/src/views/content/libraries/Card.vue:48
-#: src/views/content/remote/Card.vue:54
+#: src/views/content/remote/Card.vue:67
 msgctxt "Content/Library/Card.Button.Label/Noun"
 msgid "Details"
 msgstr "Details"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:491
+#: front/src/views/admin/moderation/AccountsDetail.vue:511
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Determine how much content the user can upload. Leave empty to use the "
-"default value of the instance."
-msgstr ""
-"Bepaald hoeveel een gebruiker kan uploaden. Laat leeg om de standaardwaarde "
-"te gebruiken van deze instantie."
+msgid "Determine how much content the user can upload. Leave empty to use the default value of the instance."
+msgstr "Bepaald hoeveel content de gebruiker kan uploaden. Laat leeg om de standaardwaarde van deze server te gebruiken."
 
 #: front/src/components/mixins/Translations.vue:8
 #: front/src/components/mixins/Translations.vue:9
@@ -1379,32 +1492,39 @@ msgid "Determine the visibility level of your activity"
 msgstr "Bepaal de zichtbaarheid van je activiteit"
 
 #: front/src/components/auth/Settings.vue:104
-#: front/src/components/auth/SubsonicTokenForm.vue:51
+#: front/src/components/auth/SubsonicTokenForm.vue:56
 msgctxt "Popup/Settings/Button.Label"
 msgid "Disable access"
 msgstr "Toegang uitschakelen"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:48
+#: front/src/components/auth/SubsonicTokenForm.vue:53
 msgctxt "Content/Settings/Button.Label/Verb"
 msgid "Disable Subsonic access"
 msgstr "Subsonic-toegang uitschakelen"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:49
+#: front/src/components/auth/SubsonicTokenForm.vue:54
 msgctxt "Popup/Settings/Title"
 msgid "Disable Subsonic API access?"
 msgstr "Subsonic-API-toegang uitschakelen?"
 
+#: front/src/components/About.vue:118 src/components/About.vue:131
+#: front/src/components/About.vue:144
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:18
 #: front/src/views/admin/moderation/AccountsDetail.vue:157
 #: front/src/views/admin/moderation/AccountsDetail.vue:161
 #, fuzzy
-msgctxt "*/*/*"
+msgctxt "*/*/*/State of feature"
 msgid "Disabled"
-msgstr "Toegang uitschakelen"
+msgstr "Uitgeschakeld"
 
-#: front/src/views/admin/library/TrackDetail.vue:145
+#: front/src/views/admin/library/TrackDetail.vue:151
 msgctxt "*/*/*/Noun"
 msgid "Disc number"
+msgstr "CD-nummer"
+
+#: front/src/components/Home.vue:157
+msgctxt "Content/Home/Link"
+msgid "Discover everything you need to know about Funkwhale and its features"
 msgstr ""
 
 #: front/src/components/auth/SubsonicTokenForm.vue:13
@@ -1412,11 +1532,15 @@ msgctxt "Content/Settings/Link"
 msgid "Discover how to use Funkwhale from other apps"
 msgstr "Ontdek hoe je Funkwhale met andere apps kunt gebruiken"
 
+#: front/src/views/Notifications.vue:45
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Discover other ways to help"
+msgstr ""
+
 #: front/src/views/admin/moderation/AccountsDetail.vue:132
-#, fuzzy
 msgctxt "'Content/*/*/Noun'"
 msgid "Display name"
-msgstr "Bestandsnaam"
+msgstr "Weergavenaam"
 
 #: front/src/components/library/radios/Builder.vue:30
 msgctxt "Content/Radio/Checkbox.Label/Verb"
@@ -1425,10 +1549,14 @@ msgstr "Openbaren"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:122
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Do not download any media file (audio, album cover, account avatar…) from "
-"this account or domain. This will purge existing content as well."
-msgstr ""
+msgid "Do not download any media file (audio, album cover, account avatar…) from this account or domain. This will purge existing content as well."
+msgstr "Geen mediabestanden (audio, albumhoes, profielfoto…) downloaden van dit account of domein. Hiermee wordt ook bestaande content verwijderd."
+
+#: front/src/views/Notifications.vue:36
+#, fuzzy
+msgctxt "Content/Notifications/Header"
+msgid "Do you like Funkwhale?"
+msgstr "Over Funkwhale"
 
 #: front/src/components/playlists/Editor.vue:51
 msgctxt "Popup/Playlist/Title"
@@ -1440,7 +1568,7 @@ msgctxt "Modal/*/Title"
 msgid "Do you want to confirm this action?"
 msgstr "Wil je de actie bevestigen?"
 
-#: front/src/views/playlists/Detail.vue:35
+#: front/src/views/playlists/Detail.vue:43
 msgctxt "Popup/Playlist/Title/Call to action"
 msgid "Do you want to delete the playlist \"%{ playlist }\"?"
 msgstr "Weet je zeker dat je de afspeellijst \"%{ playlist }\" wilt verwijderen?"
@@ -1450,21 +1578,31 @@ msgctxt "Popup/Radio/Title"
 msgid "Do you want to delete the radio \"%{ radio }\"?"
 msgstr "Weet je zeker dat je het radiostation \"%{ radio }\" wilt verwijderen?"
 
-#: front/src/components/moderation/FilterModal.vue:3
+#: front/src/components/auth/Settings.vue:298
 #, fuzzy
+msgctxt "Popup/Settings/Title"
+msgid "Do you want to delete your account?"
+msgstr "Wil je de vorige wachtrij herstellen?"
+
+#: front/src/components/moderation/FilterModal.vue:3
 msgctxt "Popup/Moderation/Title/Verb"
 msgid "Do you want to hide content from artist \"%{ name }\"?"
-msgstr "Weet je zeker dat je het radiostation \"%{ radio }\" wilt verwijderen?"
+msgstr "Wil je content van de artiest \"%{ name }\" verbergen?"
 
 #: front/src/components/common/ActionTable.vue:37
-#, fuzzy
 msgctxt "Modal/*/Title"
 msgid "Do you want to launch %{ action } on %{ count } element?"
 msgid_plural "Do you want to launch %{ action } on %{ count } elements?"
 msgstr[0] "Wil je %{ action } toepassen op %{ count } element?"
 msgstr[1] "Wil je %{ action } toepassen op %{ count } elementen?"
 
-#: front/src/components/Sidebar.vue:118
+#: front/src/components/moderation/ReportModal.vue:3
+#, fuzzy
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Do you want to report this object?"
+msgstr "Wil je de actie bevestigen?"
+
+#: front/src/components/Sidebar.vue:122
 msgctxt "Sidebar/Queue/Message"
 msgid "Do you want to restore your previous queue?"
 msgstr "Wil je de vorige wachtrij herstellen?"
@@ -1480,26 +1618,33 @@ msgstr "Documentatie"
 #: front/src/components/manage/library/TracksTable.vue:42
 #: front/src/components/manage/library/UploadsTable.vue:62
 #: front/src/components/manage/moderation/AccountsTable.vue:40
-#: front/src/components/mixins/Translations.vue:60
-#: front/src/views/admin/library/AlbumDetail.vue:118
-#: front/src/views/admin/library/ArtistDetail.vue:107
-#: front/src/views/admin/library/LibraryDetail.vue:114
-#: front/src/views/admin/library/TrackDetail.vue:170
+#: front/src/components/manage/moderation/ReportCard.vue:169
+#: front/src/components/manage/moderation/ReportCard.vue:179
+#: front/src/components/mixins/Translations.vue:72
+#: front/src/views/admin/library/AlbumDetail.vue:124
+#: front/src/views/admin/library/ArtistDetail.vue:112
+#: front/src/views/admin/library/LibraryDetail.vue:123
+#: front/src/views/admin/library/TrackDetail.vue:176
 #: front/src/views/admin/library/UploadDetail.vue:121
 #: front/src/views/admin/moderation/AccountsDetail.vue:123
-#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/mixins/Translations.vue:73
 msgctxt "Content/Moderation/*/Noun"
 msgid "Domain"
-msgstr ""
+msgstr "Domein"
 
-#: front/src/views/admin/moderation/Base.vue:5
+#: front/src/views/admin/moderation/Base.vue:8
 #: front/src/views/admin/moderation/DomainsList.vue:3
-#: front/src/views/admin/moderation/DomainsList.vue:48
+#: front/src/views/admin/moderation/DomainsList.vue:54
 msgctxt "*/Moderation/*/Noun"
 msgid "Domains"
+msgstr "Domeinen"
+
+#: front/src/views/Notifications.vue:42
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Donate"
 msgstr ""
 
-#: front/src/components/library/TrackBase.vue:39
+#: front/src/components/library/TrackBase.vue:37
 #: front/src/views/admin/library/UploadDetail.vue:58
 msgctxt "Content/Track/Link/Verb"
 msgid "Download"
@@ -1512,44 +1657,34 @@ msgstr "Versleep de rijen om nummers op de afspeellijst te herordenen"
 
 #: front/src/components/audio/track/Table.vue:10
 #: front/src/components/library/TrackDetail.vue:30
-#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:68
 #: front/src/views/admin/library/UploadDetail.vue:238
 #: front/src/views/content/libraries/FilesTable.vue:60
-#: front/src/components/mixins/Translations.vue:57
+#: front/src/components/mixins/Translations.vue:69
 msgctxt "Content/*/*"
 msgid "Duration"
 msgstr "Duur"
 
 #: front/src/views/auth/EmailConfirm.vue:23
-#, fuzzy
 msgctxt "Content/Signup/Message"
 msgid "E-mail address confirmed"
 msgstr "E-mailadres bevestigd"
 
-#: front/src/components/Home.vue:88
-msgctxt "Content/Home/Title"
-msgid "Easy to use"
-msgstr "Makkelijk te gebruiken"
-
-#: front/src/components/library/AlbumBase.vue:68
-#: front/src/components/library/ArtistBase.vue:79
-#: front/src/components/library/TrackBase.vue:87
+#: front/src/components/auth/Settings.vue:246
+#: src/components/library/AlbumBase.vue:73
+#: front/src/components/library/ArtistBase.vue:84
+#: front/src/components/library/TrackBase.vue:89
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:45
 #: front/src/components/radios/Card.vue:23
-#: src/views/admin/library/AlbumDetail.vue:65
-#: front/src/views/admin/library/ArtistDetail.vue:64
-#: front/src/views/admin/library/TrackDetail.vue:64
+#: src/views/admin/library/AlbumDetail.vue:71
+#: front/src/views/admin/library/ArtistDetail.vue:69
+#: front/src/views/admin/library/TrackDetail.vue:70
 #: front/src/views/content/libraries/Detail.vue:9
 #: src/views/playlists/Detail.vue:31
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Edit"
 msgstr "Bewerken"
 
-#: front/src/components/auth/Settings.vue:246
-msgctxt "Content/Settings/Button.Label"
-msgid "Edit"
-msgstr "Bewerken"
-
 #: front/src/components/auth/ApplicationEdit.vue:30
 #: front/src/components/auth/ApplicationEdit.vue:75
 #, fuzzy
@@ -1557,20 +1692,15 @@ msgctxt "Content/Applications/Title"
 msgid "Edit application"
 msgstr "Fout tijdens toepassen van actie"
 
-#: front/src/components/About.vue:22
-msgctxt "Content/Settings/Button.Label/Verb"
-msgid "Edit instance info"
-msgstr "Instantie-informatie bewerken"
-
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:3
 msgctxt "Content/Moderation/Card.Title/Verb"
 msgid "Edit moderation rule"
-msgstr ""
+msgstr "Moderatie-regel aanpassen"
 
 #: front/src/components/library/AlbumEdit.vue:4
 msgctxt "Content/*/Title"
 msgid "Edit this album"
-msgstr ""
+msgstr "Dit album bewerken"
 
 #: front/src/components/library/ArtistEdit.vue:4
 #, fuzzy
@@ -1584,25 +1714,20 @@ msgctxt "Content/*/Title"
 msgid "Edit this track"
 msgstr "Instantie-informatie bewerken"
 
-#: front/src/views/admin/library/AlbumDetail.vue:182
-#: front/src/views/admin/library/ArtistDetail.vue:171
+#: front/src/components/mixins/Translations.vue:116
+#: front/src/views/admin/library/AlbumDetail.vue:198
+#: front/src/views/admin/library/ArtistDetail.vue:186
 #: front/src/views/admin/library/Base.vue:5
 #: src/views/admin/library/EditsList.vue:24
-#: front/src/views/admin/library/TrackDetail.vue:234
-#, fuzzy
+#: front/src/views/admin/library/TrackDetail.vue:250
+#: front/src/components/mixins/Translations.vue:117
 msgctxt "*/Admin/*/Noun"
 msgid "Edits"
-msgstr "Bewerken"
+msgstr "Wijzigingen"
 
-#: front/src/components/mixins/Translations.vue:104
-#: front/src/components/mixins/Translations.vue:105
-#, fuzzy
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Edits"
-msgstr "Bewerken"
-
-#: front/src/components/auth/Signup.vue:30
+#: front/src/components/auth/SignupForm.vue:26
 #: front/src/components/manage/users/UsersTable.vue:38
+#: front/src/components/moderation/ReportModal.vue:31
 msgctxt "Content/*/*/Noun"
 msgid "Email"
 msgstr "E-mailadres"
@@ -1612,53 +1737,62 @@ msgctxt "Content/*/*"
 msgid "Email address"
 msgstr "E-mailadres"
 
-#: front/src/components/library/AlbumBase.vue:53
-#: front/src/components/library/ArtistBase.vue:64
-#: front/src/components/library/TrackBase.vue:72
+#: front/src/components/library/AlbumBase.vue:54
+#: front/src/components/library/ArtistBase.vue:65
+#: front/src/components/library/TrackBase.vue:70
+#: src/views/playlists/Detail.vue:38
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Embed"
-msgstr ""
+msgstr "Embedden"
 
-#: front/src/components/audio/EmbedWizard.vue:20
+#: front/src/components/audio/EmbedWizard.vue:30
 msgctxt "Popup/Embed/Input.Label/Noun"
 msgid "Embed code"
-msgstr ""
+msgstr "Embed-code"
 
-#: front/src/components/library/AlbumBase.vue:26
+#: front/src/components/library/AlbumBase.vue:27
 msgctxt "Popup/Album/Title/Verb"
 msgid "Embed this album on your website"
-msgstr ""
+msgstr "Embed dit album op je website"
 
-#: front/src/components/library/ArtistBase.vue:37
+#: front/src/components/library/ArtistBase.vue:38
 msgctxt "Popup/Artist/Title/Verb"
 msgid "Embed this artist work on your website"
-msgstr ""
+msgstr "Embed deze artiest op je website"
 
-#: front/src/components/library/TrackBase.vue:45
+#: front/src/views/playlists/Detail.vue:52
+#, fuzzy
+msgctxt "Popup/Album/Title/Verb"
+msgid "Embed this playlist on your website"
+msgstr "Embed dit album op je website"
+
+#: front/src/components/library/TrackBase.vue:43
 msgctxt "Popup/Track/Title"
 msgid "Embed this track on your website"
-msgstr ""
+msgstr "Embed dit nummer op je website"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:259
-#: front/src/views/admin/moderation/DomainsDetail.vue:187
-#, fuzzy
+#: front/src/views/admin/moderation/AccountsDetail.vue:260
+#: front/src/views/admin/moderation/DomainsDetail.vue:224
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Emitted library follows"
-msgstr "Voer de url in van een verzameling"
+msgstr ""
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:243
-#: front/src/views/admin/moderation/DomainsDetail.vue:171
+#: front/src/views/admin/moderation/AccountsDetail.vue:244
+#: front/src/views/admin/moderation/DomainsDetail.vue:208
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Emitted messages"
 msgstr ""
 
+#: front/src/components/About.vue:114 src/components/About.vue:127
+#: front/src/components/About.vue:140
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:8
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:17
 #: front/src/views/admin/moderation/AccountsDetail.vue:156
 #: front/src/views/admin/moderation/AccountsDetail.vue:160
-msgctxt "*/*/*"
+#, fuzzy
+msgctxt "*/*/*/State of feature"
 msgid "Enabled"
-msgstr ""
+msgstr "Ingeschakeld"
 
 #: front/src/views/playlists/Detail.vue:30
 msgctxt "Content/Playlist/Button.Label/Verb"
@@ -1666,46 +1800,43 @@ msgid "End edition"
 msgstr "Bewerken afronden"
 
 #: front/src/views/content/remote/ScanForm.vue:50
-#, fuzzy
 msgctxt "Content/Library/Input.Placeholder"
 msgid "Enter a library URL"
-msgstr "Voer de url in van een verzameling"
+msgstr "Voer de URL van een bibliotheek in"
 
 #: front/src/components/library/Radios.vue:141
 #, fuzzy
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Enter a radio name…"
-msgstr "Voer een naam in voor de radio..."
+msgstr "Geef je radio een naam…"
 
-#: front/src/components/library/Albums.vue:119
-#, fuzzy
+#: front/src/components/library/Albums.vue:128
 msgctxt "Content/Search/Input.Placeholder"
-msgid "Enter album title..."
-msgstr "Voer een artiestnaam in..."
+msgid "Enter album title…"
+msgstr "Voer albumtitel in…"
 
 #: front/src/components/library/Artists.vue:116
-#, fuzzy
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Enter artist name…"
-msgstr "Voer een artiestnaam in..."
+msgstr "Voer artiestnaam in…"
 
 #: front/src/views/playlists/List.vue:107
-#, fuzzy
 msgctxt "Content/Playlist/Placeholder/Call to action"
 msgid "Enter playlist name…"
-msgstr "Voer een naam in voor de afspeellijst..."
+msgstr "Voer een afspeellijst-titel in…"
 
 #: front/src/views/auth/PasswordReset.vue:54
 msgctxt "Content/Signup/Input.Placeholder"
-msgid "Enter the email address binded to your account"
+msgid "Enter the email address linked to your account"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:103
+#: front/src/components/auth/SignupForm.vue:96
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your email"
 msgstr "Voer je e-mailadres in"
 
-#: front/src/components/auth/Signup.vue:98 src/components/auth/Signup.vue:100
+#: front/src/components/auth/SignupForm.vue:91
+#: src/components/auth/SignupForm.vue:93
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your invitation code (case insensitive)"
 msgstr "Voer je uitnodigingscode in (hoofdletterongevoelig)"
@@ -1714,14 +1845,14 @@ msgstr "Voer je uitnodigingscode in (hoofdletterongevoelig)"
 #, fuzzy
 msgctxt "Content/Library/Input.Placeholder/Verb"
 msgid "Enter your search query…"
-msgstr "Voer een zoekopdracht in..."
+msgstr "Voer een zoekopdracht in…"
 
-#: front/src/components/auth/Signup.vue:102
+#: front/src/components/auth/SignupForm.vue:95
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your username"
 msgstr "Voer je gebruikersnaam in"
 
-#: front/src/components/auth/Login.vue:83
+#: front/src/components/auth/LoginForm.vue:81
 msgctxt "Content/Login/Input.Placeholder"
 msgid "Enter your username or email"
 msgstr "Voer je gebruikersnaam of e-mailadres in"
@@ -1739,7 +1870,7 @@ msgctxt "Popup/Import/Table.Label/Noun"
 msgid "Error detail"
 msgstr "Foutrapportage"
 
-#: front/src/views/admin/Settings.vue:87
+#: front/src/views/admin/Settings.vue:89
 msgctxt "Content/Admin/Menu"
 msgid "Error reporting"
 msgstr "Foutrapportage"
@@ -1801,17 +1932,12 @@ msgctxt "Popup/Moderation/Error message"
 msgid "Error while fetching application data"
 msgstr "Fout tijdens creëren van uitnodiging"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:118
-#, fuzzy
+#: front/src/views/admin/moderation/DomainsDetail.vue:155
 msgctxt "Content/Moderation/Table"
 msgid "Error while fetching node info"
-msgstr "Fout tijdens ophalen van externe verzameling"
+msgstr "Fout bij het ophalen van serverinformatie"
 
 #: front/src/components/admin/SettingsGroup.vue:5
-msgctxt "Content/Settings/Error message.Title"
-msgid "Error while saving settings"
-msgstr "Fout tijdens opslaan van instellingen"
-
 #: front/src/components/federation/FetchButton.vue:73
 msgctxt "Content/*/Error message.Title"
 msgid "Error while saving settings"
@@ -1823,6 +1949,18 @@ msgctxt "Content/Library/Error message.Title"
 msgid "Error while submitting edit"
 msgstr "Fout tijdens opslaan van instellingen"
 
+#: front/src/components/manage/moderation/NoteForm.vue:3
+#, fuzzy
+msgctxt "Content/Moderation/Error message.Title"
+msgid "Error while submitting note"
+msgstr "Fout tijdens opslaan van instellingen"
+
+#: front/src/components/moderation/ReportModal.vue:11
+#, fuzzy
+msgctxt "Popup/Moderation/Error message"
+msgid "Error while submitting report"
+msgstr "Fout tijdens opslaan van instellingen"
+
 #: front/src/components/mixins/Translations.vue:32
 #: front/src/components/mixins/Translations.vue:33
 msgctxt "Content/Library/Table/Short"
@@ -1844,7 +1982,7 @@ msgstr "Iedereen"
 #: front/src/components/mixins/Translations.vue:12
 msgctxt "Content/Settings/Dropdown"
 msgid "Everyone on this instance"
-msgstr "Iedereen op deze instantie"
+msgstr "Iedereen op deze server"
 
 #: front/src/components/mixins/Translations.vue:12
 #: front/src/components/mixins/Translations.vue:13
@@ -1858,9 +1996,14 @@ msgctxt "Content/Radio/Table.Label/Verb"
 msgid "Exclude"
 msgstr "Uitsluiten"
 
+#: front/src/components/common/CollapseLink.vue:2
+msgctxt "*/*/Button,Label"
+msgid "Expand"
+msgstr ""
+
 #: front/src/components/manage/users/InvitationsTable.vue:41
-#: front/src/components/mixins/Translations.vue:49
-#: front/src/components/mixins/Translations.vue:50
+#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:60
 msgctxt "Content/Admin/Table.Label/Noun"
 msgid "Expiration date"
 msgstr "Vervaldatum"
@@ -1877,12 +2020,8 @@ msgstr "Vervallen/gebruikt"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:110
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Explain why you're applying this policy. Depending on your instance "
-"configuration, this will help you remember why you acted on this account or "
-"domain, and may be displayed publicly to help users understand what "
-"moderation rules are in place."
-msgstr ""
+msgid "Explain why you're applying this policy. Depending on your instance configuration, this will help you remember why you acted on this account or domain, and may be displayed publicly to help users understand what moderation rules are in place."
+msgstr "Leg uit waarom je dit beleid toepast. Zo kun je later nog achterhalen waarom je actie hebt ondernomen op dit account of dit domein. Afhankelijk van de instellingen op je server, wordt dit ook aan gebruikers getoond zodat ze kunnen begrijpen welke regels er gelden."
 
 #: front/src/components/manage/library/UploadsTable.vue:25
 #: front/src/views/content/libraries/FilesTable.vue:16
@@ -1890,33 +2029,30 @@ msgctxt "Content/Library/Dropdown"
 msgid "Failed"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:62
+#: front/src/views/content/remote/Card.vue:75
 #, fuzzy
 msgctxt "Content/Library/Card.List item/Noun"
 msgid "Failed tracks:"
 msgstr "Mislukte nummers:"
 
-#: front/src/views/admin/library/AlbumDetail.vue:165
-#: front/src/views/admin/library/ArtistDetail.vue:154
-#: front/src/views/admin/library/TrackDetail.vue:217
+#: front/src/views/admin/library/AlbumDetail.vue:171
+#: front/src/views/admin/library/ArtistDetail.vue:159
+#: front/src/views/admin/library/TrackDetail.vue:223
 #, fuzzy
 msgctxt "*/*/*"
 msgid "Favorited tracks"
 msgstr "Favorieten"
 
 #: front/src/components/Sidebar.vue:66
+#: src/components/mixins/Translations.vue:88
+#: front/src/components/mixins/Translations.vue:89
 msgctxt "Sidebar/Favorites/List item.Link/Noun"
 msgid "Favorites"
 msgstr "Favorieten"
 
-#: front/src/components/mixins/Translations.vue:76
-#: front/src/components/mixins/Translations.vue:77
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Favorites"
-msgstr "Favorieten"
-
-#: front/src/views/admin/Settings.vue:84
-msgctxt "Content/Admin/Menu"
+#: front/src/components/About.vue:110 src/views/admin/Settings.vue:84
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Federation"
 msgstr "Federatie"
 
@@ -1942,6 +2078,12 @@ msgctxt "Content/Radio/Table.Label/Noun"
 msgid "Filter name"
 msgstr "Filternaam"
 
+#: front/src/components/Home.vue:118
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Find another pod"
+msgstr "Nóg een verzoek indienen"
+
 #: front/src/components/manage/library/UploadsTable.vue:26
 #: front/src/components/mixins/Translations.vue:36
 #: front/src/views/content/libraries/FilesTable.vue:17
@@ -1951,26 +2093,31 @@ msgid "Finished"
 msgstr "Afgerond"
 
 #: front/src/components/manage/moderation/AccountsTable.vue:42
-#: front/src/components/manage/moderation/DomainsTable.vue:41
-#: front/src/views/admin/library/AlbumDetail.vue:149
-#: front/src/views/admin/library/ArtistDetail.vue:138
-#: front/src/views/admin/library/LibraryDetail.vue:153
-#: front/src/views/admin/library/TrackDetail.vue:201
+#: front/src/components/manage/moderation/DomainsTable.vue:49
+#: front/src/views/admin/library/AlbumDetail.vue:155
+#: front/src/views/admin/library/ArtistDetail.vue:143
+#: front/src/views/admin/library/LibraryDetail.vue:162
+#: front/src/views/admin/library/TagDetail.vue:98
+#: front/src/views/admin/library/TrackDetail.vue:207
 #: front/src/views/admin/library/UploadDetail.vue:167
-#: front/src/views/admin/moderation/AccountsDetail.vue:235
-#: front/src/views/admin/moderation/DomainsDetail.vue:151
+#: front/src/views/admin/moderation/AccountsDetail.vue:236
+#: front/src/views/admin/moderation/DomainsDetail.vue:188
 msgctxt "Content/Moderation/Table.Label/Short (Value is a date)"
 msgid "First seen"
-msgstr ""
+msgstr "Eerst gezien"
 
-#: front/src/components/mixins/Translations.vue:46
-#: front/src/components/mixins/Translations.vue:47
-#, fuzzy
+#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:57
 msgctxt "Content/Moderation/Dropdown/Noun"
 msgid "First seen date"
-msgstr "Vervaldatum"
+msgstr "Eerst gezien-datum"
 
-#: front/src/views/content/remote/Card.vue:87
+#: front/src/components/ShortcutsModal.vue:64
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Focus searchbar"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:100
 msgctxt "Content/Library/Card.Button.Label/Verb"
 msgid "Follow"
 msgstr "Volgen"
@@ -1980,43 +2127,36 @@ msgctxt "Content/Library/Title/Verb"
 msgid "Follow remote libraries"
 msgstr "Externe verzamelingen volgen"
 
-#: front/src/views/content/remote/Card.vue:92
-#, fuzzy
+#: front/src/views/content/remote/Card.vue:105
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Follow request pending approval"
-msgstr "Wachten op toestemming"
+msgstr "Openstaande volgverzoeken"
 
-#: front/src/components/mixins/Translations.vue:64
-#: front/src/views/admin/library/LibraryDetail.vue:161
+#: front/src/components/manage/library/LibrariesTable.vue:53
+#: front/src/components/mixins/Translations.vue:76
+#: front/src/views/admin/library/LibraryDetail.vue:170
 #: front/src/views/content/libraries/Detail.vue:7
-#: front/src/components/mixins/Translations.vue:65
+#: front/src/components/mixins/Translations.vue:77
 msgctxt "Content/Federation/*/Noun"
 msgid "Followers"
 msgstr "Volgers"
 
-#: front/src/components/manage/library/LibrariesTable.vue:53
-msgctxt "Content/*/*/Noun"
-msgid "Followers"
-msgstr "Volgers"
-
-#: front/src/views/content/remote/Card.vue:103
+#: front/src/views/content/remote/Card.vue:116
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Following"
 msgstr "Volgend"
 
-#: front/src/components/mixins/Translations.vue:84
-#: front/src/components/mixins/Translations.vue:85
+#: front/src/components/mixins/Translations.vue:96
+#: front/src/components/mixins/Translations.vue:97
 #, fuzzy
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Follows"
 msgstr "Volgen"
 
-#: front/src/components/library/TrackBase.vue:17
+#: front/src/components/library/TrackBase.vue:245
 msgctxt "Content/Track/Paragraph"
-msgid ""
-"From album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> by <a"
-" class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
-msgstr ""
+msgid "From album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgstr "Van het album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> van <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
 
 #: front/src/components/auth/Authorize.vue:28
 #, fuzzy
@@ -2026,76 +2166,40 @@ msgstr "Toegang uitschakelen"
 
 #: front/src/components/auth/SubsonicTokenForm.vue:7
 msgctxt "Content/Settings/Paragraph'"
-msgid ""
-"Funkwhale is compatible with other music players that support the Subsonic "
-"API."
-msgstr ""
-"Funkwhale werkt met andere muziekspelers die de Subsonic-API ondersteunen."
-
-#: front/src/components/Home.vue:90
-msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale is dead simple to use."
-msgstr "Funkwhale is zeer eenvoudig te gebruiken."
-
-#: front/src/components/Home.vue:39
-msgctxt "Content/Home/Paragraph"
-msgid ""
-"Funkwhale is designed to make it easy to listen to music you like, or to "
-"discover new artists."
-msgstr ""
-"Funkwhale is ontworpen om het je makkelijk te maken je favoriete muziek te "
-"beluisteren of nieuwe artiesten te ontdekken."
+msgid "Funkwhale is compatible with other music players that support the Subsonic API."
+msgstr "Funkwhale werkt met andere muziekspelers die de Subsonic-API ondersteunen."
 
-#: front/src/components/Home.vue:111
+#: front/src/components/Home.vue:88
+#, fuzzy
 msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale is free and gives you control on your music."
+msgid "Funkwhale is free and developped by a friendly community of volunteers."
 msgstr "Funkwhale is gratis en geeft je het beheer over je muziek."
 
-#: front/src/components/Home.vue:66
-msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale takes care of handling your music"
-msgstr "Funkwhale zorgt voor je muziek"
+#: front/src/components/About.vue:78
+msgctxt "*/*/*"
+msgid "Funkwhale version"
+msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:38
+#: front/src/components/ShortcutsModal.vue:56
 msgctxt "Popup/Keyboard shortcuts/Title"
 msgid "General shortcuts"
-msgstr ""
+msgstr "Algemene sneltoetsen"
 
 #: front/src/components/manage/users/InvitationForm.vue:16
 msgctxt "Content/Admin/Button.Label/Verb"
 msgid "Get a new invitation"
 msgstr "Nieuwe uitnodiging aanvragen"
 
-#: front/src/components/Home.vue:13
-msgctxt "Content/Home/Button.Label/Verb"
-msgid "Get me to the library"
-msgstr "Breng me naar de verzameling"
-
-#: front/src/components/Home.vue:70
-msgctxt "Content/Home/List item/Verb"
-msgid ""
-"Get quality metadata about your music thanks to <a href=\"%{ url }\" "
-"target=\"_blank\">MusicBrainz</a>"
-msgstr ""
-"Verkrijg hoogwaardige metagegevens over je muziek met behulp van <a "
-"href=\"%{ url }\" target=\"_blank\">MusicBrainz</a>"
-
 #: front/src/views/content/Home.vue:12 src/views/content/Home.vue:19
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Get started"
 msgstr "Aan de slag"
 
-#: front/src/components/Footer.vue:37
-#, fuzzy
+#: front/src/components/Footer.vue:45
+#: src/components/library/ImportStatusModal.vue:45
 msgctxt "Footer/*/Link"
 msgid "Getting help"
-msgstr "Instellingen"
-
-#: front/src/components/library/ImportStatusModal.vue:45
-#, fuzzy
-msgctxt "Popup/Import/Table.Label/Noun"
-msgid "Getting help"
-msgstr "Instellingen"
+msgstr "Hulp en ondersteuning"
 
 #: front/src/components/common/ActionTable.vue:35
 #: front/src/components/common/ActionTable.vue:56
@@ -2108,11 +2212,20 @@ msgctxt "Content/*/Button.Label/Verb"
 msgid "Go to home page"
 msgstr "Terug naar hoofdpagina"
 
+#: front/src/views/Notifications.vue:27 src/views/Notifications.vue:61
+msgctxt "Content/Notifications/Button.Label"
+msgid "Got it!"
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:128
-#, fuzzy
 msgctxt "Content/Settings/Title"
 msgid "Hidden artists"
-msgstr "Artiesten doorbladeren"
+msgstr "Verborgen artiesten"
+
+#: front/src/components/About.vue:155
+msgctxt "*/*/*/Verb"
+msgid "Hide"
+msgstr ""
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:114
 msgctxt "Content/Moderation/Help text"
@@ -2120,63 +2233,52 @@ msgid "Hide account or domain content, except from followers."
 msgstr ""
 
 #: front/src/components/moderation/FilterModal.vue:40
-#, fuzzy
 msgctxt "Popup/*/Button.Label"
 msgid "Hide content"
-msgstr "Inhoud toevoegen"
+msgstr "Inhoud verbergen"
 
-#: front/src/components/audio/PlayButton.vue:26
+#: front/src/components/audio/PlayButton.vue:31
 msgctxt "*/Queue/Dropdown/Button/Label/Short"
 msgid "Hide content from this artist"
-msgstr ""
+msgstr "Content van deze artiest verbergen"
 
-#: front/src/components/audio/Player.vue:643
+#: front/src/components/audio/Player.vue:669
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Hide content from this artist…"
-msgstr ""
+msgstr "Verberg content van deze artiest…"
 
 #: front/src/components/library/Home.vue:65
 msgctxt "Head/Home/Title"
 msgid "Home"
 msgstr "Startpagina"
 
-#: front/src/components/instance/Stats.vue:36
-msgctxt "Content/About/Paragraph/Unit"
-msgid "Hours of music"
-msgstr "Uren aan muziek"
-
 #: front/src/components/auth/SubsonicTokenForm.vue:10
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"However, accessing Funkwhale from those clients require a separate password "
-"you can set below."
-msgstr ""
-"Om Funkwhale te benaderen via die apps is een apart wachtwoord nodig. Dit "
-"kan je hieronder instellen."
+msgid "However, accessing Funkwhale from those clients require a separate password you can set below."
+msgstr "Om Funkwhale te benaderen via die apps is een apart wachtwoord nodig. Dit kan je hieronder instellen."
 
 #: front/src/views/auth/PasswordResetConfirm.vue:24
+#, fuzzy
 msgctxt "Content/Signup/Paragraph"
-msgid ""
-"If the email address provided in the previous step is valid and binded to a "
-"user account, you should receive an email with reset instructions in the "
-"next couple of minutes."
-msgstr ""
-"Als het e-mailadres uit de vorige stap geldig is en toebehoort aan een "
-"gebruiker, dan zou je een e-mail moeten ontvangen met instructies voor "
-"wachtwoordherstel."
+msgid "If the email address provided in the previous step is valid and linked to a user account, you should receive an email with reset instructions in the next couple of minutes."
+msgstr "Als het e-mailadres uit de vorige stap geldig is en toebehoort aan een gebruiker, dan zou je een e-mail moeten ontvangen met instructies voor wachtwoordherstel."
 
 #: front/src/components/auth/Settings.vue:205
 msgctxt "Content/Applications/Paragraph"
-msgid ""
-"If you authorize third-party applications to access your data, those "
-"applications will be listed here."
-msgstr ""
+msgid "If you authorize third-party applications to access your data, those applications will be listed here."
+msgstr "Als je applicaties van derden toegang hebt gegeven tot je data, vind je ze hier in de lijst."
 
-#: front/src/components/library/ImportStatusModal.vue:3
+#: front/src/components/mixins/Translations.vue:46
+#: front/src/components/mixins/Translations.vue:47
 #, fuzzy
+msgctxt "Content/Moderation/Dropdown"
+msgid "Illegal content"
+msgstr "Inhoud verbergen"
+
+#: front/src/components/library/ImportStatusModal.vue:3
 msgctxt "Popup/Import/Title"
 msgid "Import detail"
-msgstr "Importdatum"
+msgstr "Details van de import"
 
 #: front/src/components/library/FileUpload.vue:50
 msgctxt "Content/Library/Input.Label/Noun"
@@ -2184,35 +2286,29 @@ msgid "Import reference"
 msgstr "Importnummer"
 
 #: front/src/components/manage/library/UploadsTable.vue:20
-#: front/src/views/content/libraries/FilesTable.vue:11
-#: front/src/views/content/libraries/FilesTable.vue:59
-msgctxt "Content/Library/*/Noun"
-msgid "Import status"
-msgstr "Importstatus"
-
 #: front/src/components/manage/library/UploadsTable.vue:64
 #: front/src/views/admin/library/UploadDetail.vue:131
+#: front/src/views/content/libraries/FilesTable.vue:11
+#: front/src/views/content/libraries/FilesTable.vue:59
 msgctxt "Content/*/*/Noun"
 msgid "Import status"
 msgstr "Importstatus"
 
 #: front/src/components/mixins/Translations.vue:37
 #: front/src/components/mixins/Translations.vue:38
-#, fuzzy
 msgctxt "Content/Library/Help text"
 msgid "Imported"
-msgstr "Geïmporteerd op"
+msgstr "Geïmporteerd"
 
 #: front/src/components/federation/FetchButton.vue:47
 msgctxt "*/*/Error"
 msgid "Impossible to connect to the remote server"
-msgstr ""
+msgstr "Kan geen verbinding krijgen met de externe server"
 
 #: front/src/components/moderation/FilterModal.vue:26
-#, fuzzy
 msgctxt "Popup/Moderation/List item"
 msgid "In \"Recently added\" widget"
-msgstr "Recent toegevoegd"
+msgstr "In de \"Recent toegevoegd\" widget"
 
 #: front/src/components/moderation/FilterModal.vue:27
 msgctxt "Popup/Moderation/List item"
@@ -2234,71 +2330,73 @@ msgctxt "Popup/Moderation/List item"
 msgid "In radio suggestions"
 msgstr ""
 
-#: front/src/components/manage/users/UsersTable.vue:54
+#: front/src/components/manage/users/UsersTable.vue:55
 msgctxt "Content/Admin/Table"
 msgid "Inactive"
 msgstr "Inactief"
 
-#: front/src/components/ShortcutsModal.vue:71
+#: front/src/components/ShortcutsModal.vue:124
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Increase volume"
-msgstr ""
+msgstr "Volume verhogen"
 
 #: front/src/components/playlists/Editor.vue:41
-#, fuzzy
 msgctxt "Content/Playlist/Button.Label/Verb"
 msgid "Insert from queue (%{ count } track)"
 msgid_plural "Insert from queue (%{ count } tracks)"
-msgstr[0] "Aan de wachtrij toevoegen (%{ count } nummer)"
-msgstr[1] "Aan de wachtrij toevoegen (%{ count } nummers)"
+msgstr[0] "Toevoegen vanuit wachtrij (%{ count } nummer)"
+msgstr[1] "Toevoegen vanuit wachtrij (%{ count } nummers)"
 
 #: front/src/components/mixins/Translations.vue:16
 #: front/src/components/mixins/Translations.vue:17
-#, fuzzy
 msgctxt "Content/Settings/Dropdown/Short"
 msgid "Instance"
-msgstr "Radio's van de instantie"
+msgstr "Server"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:71
-#, fuzzy
+#: front/src/views/admin/moderation/DomainsDetail.vue:99
 msgctxt "Content/Moderation/Title"
 msgid "Instance data"
-msgstr "Radio's van de instantie"
+msgstr "Servergegevens"
 
 #: front/src/views/admin/Settings.vue:80
 msgctxt "Content/Admin/Menu"
 msgid "Instance information"
-msgstr "Instantie-informatie"
+msgstr "Server-informatie"
 
 #: front/src/components/library/Radios.vue:9
 msgctxt "Content/Radio/Title"
 msgid "Instance radios"
-msgstr "Radio's van de instantie"
+msgstr "Radio's van deze server"
 
 #: front/src/views/admin/Settings.vue:75
 msgctxt "Head/Admin/Title"
 msgid "Instance settings"
-msgstr "Instantie-instellingen"
+msgstr "Server-instellingen"
 
 #: front/src/components/SetInstanceModal.vue:19
-#, fuzzy
 msgctxt "Popup/Instance/Input.Label/Noun"
 msgid "Instance URL"
-msgstr "Radio's van de instantie"
+msgstr "Server-URL"
+
+#: front/src/components/manage/moderation/ReportCard.vue:92
+#: front/src/components/manage/moderation/ReportCard.vue:203
+msgctxt "Content/*/*/Noun"
+msgid "Internal notes"
+msgstr ""
 
 #: front/src/components/library/FileUpload.vue:268
 msgctxt "Content/Library/Help text"
-msgid ""
-"Invalid file type, ensure you are uploading an audio file. Supported file "
-"extensions are %{ extensions }"
+msgid "Invalid file type, ensure you are uploading an audio file. Supported file extensions are %{ extensions }"
 msgstr ""
 
 #: front/src/components/library/ImportStatusModal.vue:139
+#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:46
 msgctxt "Popup/Import/Error.Label"
 msgid "Invalid metadata"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:44
+#: front/src/components/auth/SignupForm.vue:40
 #: front/src/components/manage/users/InvitationForm.vue:11
 msgctxt "Content/*/Input.Label"
 msgid "Invitation code"
@@ -2310,27 +2408,34 @@ msgctxt "*/Admin/*/Noun"
 msgid "Invitations"
 msgstr "Uitnodigingen"
 
-#: front/src/components/Footer.vue:41
+#: front/src/components/manage/moderation/DomainsTable.vue:9
+#: front/src/views/admin/moderation/DomainsDetail.vue:106
+msgctxt "Content/Moderation/*/Adjective"
+msgid "Is present on allow-list"
+msgstr ""
+
+#: front/src/components/Footer.vue:49
 msgctxt "Footer/*/List item.Link"
 msgid "Issue tracker"
-msgstr "Bugtracker"
+msgstr "Issue tracker"
 
 #: front/src/components/SetInstanceModal.vue:5
 msgctxt "Popup/Instance/Error message.Title"
 msgid "It is not possible to connect to the given URL"
 msgstr ""
 
-#: front/src/components/Home.vue:50
-msgctxt "Content/Home/List item/Verb"
-msgid "Keep a track of your favorite songs"
-msgstr "Beheer je lievelingsmuziek"
+#: front/src/components/mixins/Translations.vue:65
+#: front/src/components/mixins/Translations.vue:66
+msgctxt "*/*/*/Noun"
+msgid "Items"
+msgstr ""
 
 #: front/src/components/Footer.vue:33 src/components/ShortcutsModal.vue:3
 msgctxt "*/*/*/Noun"
 msgid "Keyboard shortcuts"
-msgstr ""
+msgstr "Sneltoetsen"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:161
+#: front/src/views/admin/moderation/DomainsDetail.vue:198
 #, fuzzy
 msgctxt "Content/Moderation/Table.Label.Link"
 msgid "Known accounts"
@@ -2342,15 +2447,15 @@ msgid "Known libraries"
 msgstr "Bekende verzamelingen"
 
 #: front/src/components/manage/users/UsersTable.vue:41
-#: front/src/components/mixins/Translations.vue:58
-#: front/src/views/admin/moderation/AccountsDetail.vue:205
-#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:70
+#: front/src/views/admin/moderation/AccountsDetail.vue:206
+#: front/src/components/mixins/Translations.vue:71
 msgctxt "Content/Profile/Table.Label/Short, Noun (Value is a date)"
 msgid "Last activity"
 msgstr "Laatste activiteit"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:188
-#: front/src/views/admin/moderation/DomainsDetail.vue:78
+#: front/src/views/admin/moderation/AccountsDetail.vue:189
+#: front/src/views/admin/moderation/DomainsDetail.vue:115
 msgctxt "Content/*/Table.Label"
 msgid "Last checked"
 msgstr ""
@@ -2365,14 +2470,14 @@ msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Last seen"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:47
-#: front/src/components/mixins/Translations.vue:48
+#: front/src/components/mixins/Translations.vue:57
+#: front/src/components/mixins/Translations.vue:58
 #, fuzzy
 msgctxt "Content/Moderation/Dropdown/Noun"
 msgid "Last seen date"
 msgstr "Laatste update:"
 
-#: front/src/views/content/remote/Card.vue:60
+#: front/src/views/content/remote/Card.vue:73
 msgctxt "Content/Library/Card.List item/Noun"
 msgid "Last update:"
 msgstr "Laatste update:"
@@ -2382,81 +2487,77 @@ msgctxt "Modal/*/Button.Label/Short, Verb"
 msgid "Launch"
 msgstr "Opstarten"
 
-#: front/src/components/Home.vue:10
-msgctxt "Content/Home/Button.Label/Verb"
-msgid "Learn more about this instance"
-msgstr "Meer informatie over deze instantie"
+#: front/src/components/Home.vue:35
+msgctxt "Content/Home/Link"
+msgid "Learn more"
+msgstr ""
 
 #: front/src/components/manage/users/InvitationForm.vue:58
 msgctxt "Content/Admin/Input.Placeholder"
 msgid "Leave empty for a random code"
 msgstr "Laat leeg om een willekeurig code te krijgen"
 
-#: front/src/components/audio/EmbedWizard.vue:7
+#: front/src/components/audio/EmbedWizard.vue:17
 #, fuzzy
 msgctxt "Popup/Embed/Paragraph"
 msgid "Leave empty for a responsive widget"
 msgstr "Laat leeg om een willekeurig code te krijgen"
 
-#: front/src/views/admin/library/AlbumDetail.vue:232
-#: front/src/views/admin/library/ArtistDetail.vue:221
-#: front/src/views/admin/library/TrackDetail.vue:284
-#: front/src/views/admin/moderation/AccountsDetail.vue:327
-#: front/src/views/admin/moderation/DomainsDetail.vue:234
-#: front/src/views/content/Base.vue:5
+#: front/src/components/mixins/Translations.vue:64
+#: front/src/components/mixins/Translations.vue:65
 msgctxt "*/*/*/Noun"
-msgid "Libraries"
-msgstr "Verzamelingen"
+msgid "Length"
+msgstr ""
 
+#: front/src/views/admin/library/AlbumDetail.vue:248
+#: front/src/views/admin/library/ArtistDetail.vue:236
 #: front/src/views/admin/library/Base.vue:17
 #: front/src/views/admin/library/LibrariesList.vue:24
-msgctxt "*/*/*"
+#: front/src/views/admin/library/TrackDetail.vue:300
+#: front/src/views/admin/moderation/AccountsDetail.vue:339
+#: front/src/views/admin/moderation/DomainsDetail.vue:271
+#: front/src/views/content/Base.vue:5
+msgctxt "*/*/*/Noun"
 msgid "Libraries"
 msgstr "Verzamelingen"
 
-#: front/src/components/mixins/Translations.vue:72
-#: front/src/components/mixins/Translations.vue:73
-#, fuzzy
+#: front/src/components/mixins/Translations.vue:84
+#: front/src/components/mixins/Translations.vue:85
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Libraries and uploads"
-msgstr "Verzameling bijgewerkt"
+msgstr "Bibliotheek en uploads"
 
 #: front/src/views/content/libraries/Form.vue:2
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Libraries help you organize and share your music collections. You can upload"
-" your own music collection to Funkwhale and share it with your friends and "
-"family."
-msgstr ""
-"Verzamelingen helpen je bij het organiseren en delen van je "
-"muziekverzamelingen. Je kunt je eigen muziek uploaden naar Funkwhale en "
-"delen met vrienden en familie."
+msgid "Libraries help you organize and share your music collections. You can upload your own music collection to Funkwhale and share it with your friends and family."
+msgstr "Verzamelingen helpen je bij het organiseren en delen van je muziekverzamelingen. Je kunt je eigen muziek uploaden naar Funkwhale en delen met vrienden en familie."
 
-#: front/src/components/Sidebar.vue:85 src/components/instance/Stats.vue:30
+#: front/src/components/Sidebar.vue:85
 #: front/src/components/manage/library/UploadsTable.vue:60
-#: front/src/components/manage/users/UsersTable.vue:173
+#: front/src/components/manage/users/UsersTable.vue:174
+#: front/src/components/mixins/Report.vue:77
 #: front/src/views/admin/library/UploadDetail.vue:144
-#: front/src/views/admin/moderation/AccountsDetail.vue:498
-msgctxt "*/*/*"
+#: front/src/views/admin/moderation/AccountsDetail.vue:518 src/entities.js:132
+#: front/src/components/mixins/Report.vue:78
+#, fuzzy
+msgctxt "*/*/*/Noun"
 msgid "Library"
-msgstr "Verzameling"
+msgstr "Bibliotheek"
 
 #: front/src/views/content/libraries/Form.vue:103
 msgctxt "Content/Library/Message"
 msgid "Library created"
-msgstr "Verzameling gecreëerd"
+msgstr "Bibliotheek gecreëerd"
 
 #: front/src/views/admin/library/LibraryDetail.vue:78
-#, fuzzy
 msgctxt "Content/Moderation/Title"
 msgid "Library data"
-msgstr "Verzameling bijgewerkt"
+msgstr "Bibliotheekgegevens"
 
 #: front/src/views/content/libraries/Form.vue:123
-#, fuzzy
 msgctxt "Content/Library/Message"
 msgid "Library deleted"
-msgstr "Verzameling bijgewerkt"
+msgstr "Bibliotheek verwijderd"
 
 #: front/src/views/admin/library/EditsList.vue:4
 #, fuzzy
@@ -2467,25 +2568,41 @@ msgstr "Verzamelingsbestanden"
 #: front/src/views/content/libraries/Form.vue:100
 msgctxt "Content/Library/Message"
 msgid "Library updated"
-msgstr "Verzameling bijgewerkt"
+msgstr "Bibliotheek bijgewerkt"
 
 #: front/src/components/library/TrackDetail.vue:19
 #: front/src/components/manage/library/TracksTable.vue:43
-#: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:61
+#: front/src/views/admin/library/TrackDetail.vue:165 src/edits.js:84
+#: front/src/entities.js:115
 msgctxt "Content/*/*/Noun"
 msgid "License"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:157
-#: front/src/views/admin/library/ArtistDetail.vue:146
-#: front/src/views/admin/library/TrackDetail.vue:209
-msgctxt "*/*/*/Noun"
-msgid "Listenings"
+#: front/src/components/Footer.vue:90
+msgctxt "Footer/Settings/Dropdown.Label/Theme name"
+msgid "Light"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:80
-#: front/src/components/mixins/Translations.vue:81
-msgctxt "Content/OAuth Scopes/Label"
+#: front/src/views/admin/library/AlbumDetail.vue:188
+#: front/src/views/admin/library/ArtistDetail.vue:176
+#: front/src/views/admin/library/LibraryDetail.vue:179
+#: front/src/views/admin/library/TrackDetail.vue:240
+#: front/src/views/admin/moderation/AccountsDetail.vue:269
+msgctxt "Content/Moderation/Table.Label/Noun"
+msgid "Linked reports"
+msgstr ""
+
+#: front/src/components/Home.vue:135
+msgctxt "Content/Home/Link"
+msgid "Listen to public albums and playlists shared on this pod"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:92
+#: front/src/views/admin/library/AlbumDetail.vue:163
+#: front/src/views/admin/library/ArtistDetail.vue:151
+#: front/src/views/admin/library/TrackDetail.vue:215
+#: front/src/components/mixins/Translations.vue:93
+msgctxt "*/*/*/Noun"
 msgid "Listenings"
 msgstr ""
 
@@ -2499,50 +2616,51 @@ msgstr ""
 #, fuzzy
 msgctxt "Content/Library/Paragraph"
 msgid "Loading followers…"
-msgstr "Bezig met laden van volgers..."
+msgstr "Bezig met laden van volgers…"
 
 #: front/src/views/content/libraries/Home.vue:3
 #, fuzzy
 msgctxt "Content/Library/Paragraph"
 msgid "Loading Libraries…"
-msgstr "Bezig met laden van verzamelingen..."
+msgstr "Bezig met laden van verzamelingen…"
 
 #: front/src/views/content/libraries/Detail.vue:3
 #: front/src/views/content/libraries/Upload.vue:3
 #, fuzzy
 msgctxt "Content/Library/Paragraph"
 msgid "Loading library data…"
-msgstr "Bezig met laden van verzamelingsgegevens..."
+msgstr "Bezig met laden van verzamelingsgegevens…"
 
-#: front/src/views/Notifications.vue:19
+#: front/src/views/Notifications.vue:84
 #, fuzzy
 msgctxt "Content/Notifications/Paragraph"
 msgid "Loading notifications…"
-msgstr "Bezig met laden van meldingen..."
+msgstr "Bezig met laden van meldingen…"
 
 #: front/src/views/content/remote/Home.vue:3
 #, fuzzy
 msgctxt "Content/Library/Paragraph"
 msgid "Loading remote libraries…"
-msgstr "Bezig met laden van externe verzamelingen..."
+msgstr "Bezig met laden van externe verzamelingen…"
 
 #: front/src/views/content/libraries/Quota.vue:4
 #, fuzzy
 msgctxt "Content/Library/Paragraph"
 msgid "Loading usage data…"
-msgstr "Bezig met laden van verbruiksgegevens..."
+msgstr "Bezig met laden van verbruiksgegevens…"
 
 #: front/src/components/favorites/List.vue:5
 #, fuzzy
 msgctxt "Content/Favorites/Message"
 msgid "Loading your favorites…"
-msgstr "Bezig met laden van je favorieten..."
+msgstr "Bezig met laden van je favorieten…"
 
 #: front/src/components/manage/library/AlbumsTable.vue:65
 #: front/src/components/manage/library/ArtistsTable.vue:58
 #: front/src/components/manage/library/LibrariesTable.vue:75
 #: front/src/components/manage/library/TracksTable.vue:71
 #: front/src/components/manage/library/UploadsTable.vue:99
+#: front/src/components/manage/moderation/ReportCard.vue:173
 #: front/src/views/admin/library/AlbumDetail.vue:19
 #: front/src/views/admin/library/ArtistDetail.vue:18
 #: front/src/views/admin/library/LibraryDetail.vue:18
@@ -2559,12 +2677,12 @@ msgctxt "Content/Moderation/*/Short, Noun"
 msgid "Local account"
 msgstr "Mijn account"
 
-#: front/src/components/auth/Login.vue:84
+#: front/src/components/Home.vue:96 src/views/auth/Login.vue:29
 msgctxt "Head/Login/Title"
 msgid "Log In"
 msgstr "Inloggen"
 
-#: front/src/components/auth/Login.vue:4
+#: front/src/views/auth/Login.vue:4
 msgctxt "Content/Login/Title/Verb"
 msgid "Log in to your Funkwhale account"
 msgstr "Log in op je Funkwhale-account"
@@ -2579,7 +2697,7 @@ msgctxt "Sidebar/Profile/List item.Link"
 msgid "Logged in as %{ username }"
 msgstr "Ingelogd als %{ username }"
 
-#: front/src/components/Sidebar.vue:54 src/components/auth/Login.vue:42
+#: front/src/components/Sidebar.vue:54 src/components/auth/LoginForm.vue:41
 msgctxt "*/Login/*/Verb"
 msgid "Login"
 msgstr "Inloggen"
@@ -2596,42 +2714,43 @@ msgid "Logout"
 msgstr "Uitloggen"
 
 #: front/src/views/content/libraries/Home.vue:9
-#, fuzzy
 msgctxt "Content/Library/Paragraph"
 msgid "Looks like you don't have a library, it's time to create one."
-msgstr ""
-"Het lijkt erop dat je nog geen verzameling hebt; de hoogste tijd om er één "
-"te creëren!"
+msgstr "Het lijkt erop dat je geen bibliotheek hebt; tijd om er één te creëren."
 
-#: front/src/components/audio/Player.vue:632
-#: src/components/audio/Player.vue:633
+#: front/src/components/audio/Player.vue:658
+#: src/components/audio/Player.vue:659
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping disabled. Click to switch to single-track looping."
-msgstr ""
-"Herhalen uitgeschakeld. Klik om over te schakelen naar één nummer-herhaling."
+msgstr "Herhalen uitgeschakeld. Klik om over te schakelen naar één nummer-herhaling."
 
-#: front/src/components/audio/Player.vue:635
-#: src/components/audio/Player.vue:636
+#: front/src/components/audio/Player.vue:661
+#: src/components/audio/Player.vue:662
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping on a single track. Click to switch to whole queue looping."
-msgstr ""
-"Eén nummer wordt herhaald. Klik om over te schakelen naar wachtrijherhaling."
+msgstr "Eén nummer wordt herhaald. Klik om over te schakelen naar wachtrijherhaling."
 
-#: front/src/components/audio/Player.vue:638
-#: src/components/audio/Player.vue:639
+#: front/src/components/audio/Player.vue:664
+#: src/components/audio/Player.vue:665
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping on whole queue. Click to disable looping."
 msgstr "Gehele wachtrij wordt herhaald. Klik om herhalen uit te schakelen."
 
-#: front/src/components/Sidebar.vue:223
+#: front/src/components/Sidebar.vue:230
 msgctxt "Sidebar/*/Hidden text"
 msgid "Main menu"
 msgstr ""
 
-#: front/src/views/admin/library/Base.vue:31
+#: front/src/views/admin/library/Base.vue:34
 msgctxt "Head/Admin/Title"
 msgid "Manage library"
-msgstr "Verzameling beheren"
+msgstr "Bibliotheek beheren"
+
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:8
+#, fuzzy
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Manage moderation rules for %{ obj }"
+msgstr "Nieuwe moderatieregel toevoegen"
 
 #: front/src/components/playlists/PlaylistModal.vue:3
 msgctxt "Popup/Playlist/Title/Verb"
@@ -2648,7 +2767,7 @@ msgctxt "Content/Playlist/Button.Label/Verb"
 msgid "Manage your playlists"
 msgstr "Beheer je afspeellijsten"
 
-#: front/src/views/Notifications.vue:14
+#: front/src/views/Notifications.vue:79
 msgctxt "Content/Notifications/Button.Label/Verb"
 msgid "Mark all as read"
 msgstr "Alles markeren als gelezen"
@@ -2665,12 +2784,12 @@ msgctxt "Content/Notifications/Button.Tooltip/Verb"
 msgid "Mark as unread"
 msgstr "Alles markeren als gelezen"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:310
+#: front/src/views/admin/moderation/AccountsDetail.vue:321
 msgctxt "Content/*/*/Unit"
 msgid "MB"
 msgstr "MB"
 
-#: front/src/components/audio/Player.vue:625
+#: front/src/components/audio/Player.vue:651
 msgctxt "Sidebar/Player/Hidden text"
 msgid "Media player"
 msgstr ""
@@ -2681,27 +2800,44 @@ msgctxt "Content/Profile/Paragraph"
 msgid "Member since %{ date }"
 msgstr "Geregistreerd sinds %{ date }"
 
+#: front/src/components/manage/moderation/ReportCard.vue:109
+#: front/src/components/moderation/ReportModal.vue:41
+msgctxt "*/*/Field.Label/Noun"
+msgid "Message"
+msgstr ""
+
 #: front/src/components/Footer.vue:32
 msgctxt "Footer/*/List item.Link"
 msgid "Mobile and desktop apps"
-msgstr ""
+msgstr "Mobiele- en desktop-apps"
+
+#: front/src/components/Home.vue:143
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Mobile apps"
+msgstr "Mobiele- en desktop-apps"
 
 #: front/src/components/Sidebar.vue:96
-#: src/components/manage/users/UsersTable.vue:177
-#: front/src/views/admin/moderation/AccountsDetail.vue:502
-#: front/src/views/admin/moderation/Base.vue:21
+#: src/components/manage/users/UsersTable.vue:178
+#: front/src/views/admin/Settings.vue:85
+#: front/src/views/admin/moderation/AccountsDetail.vue:522
+#: front/src/views/admin/moderation/Base.vue:43
 #, fuzzy
 msgctxt "*/Moderation/*"
 msgid "Moderation"
 msgstr "Federatie"
 
 #: front/src/views/admin/moderation/AccountsDetail.vue:78
-#: front/src/views/admin/moderation/DomainsDetail.vue:42
+#: front/src/views/admin/moderation/DomainsDetail.vue:70
 msgctxt "Content/Moderation/Card.Paragraph"
-msgid ""
-"Moderation policies help you control how your instance interact with a given"
-" domain or account."
-msgstr ""
+msgid "Moderation policies help you control how your instance interact with a given domain or account."
+msgstr "Met moderatieregels kun je bepalen of en hoe er interactie is tussen jouw server en een bepaald domein of account."
+
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:4
+#, fuzzy
+msgctxt "Content/Moderation/Button.Label"
+msgid "Moderation rules…"
+msgstr "Moderatie-regel aanpassen"
 
 #: front/src/components/library/EditCard.vue:5
 #, fuzzy
@@ -2709,15 +2845,16 @@ msgctxt "Content/Library/Card/Short"
 msgid "Modification %{ id }"
 msgstr "Bewerkt op"
 
-#: front/src/components/mixins/Translations.vue:48
-#: front/src/components/mixins/Translations.vue:49
+#: front/src/components/mixins/Translations.vue:58
+#: front/src/components/mixins/Translations.vue:59
 msgctxt "Content/Playlist/Dropdown/Noun"
 msgid "Modification date"
 msgstr "Bewerkt op"
 
-#: front/src/components/library/AlbumBase.vue:42
-#: front/src/components/library/ArtistBase.vue:53
-#: front/src/components/library/TrackBase.vue:61
+#: front/src/components/audio/PlayButton.vue:100
+#: front/src/components/library/AlbumBase.vue:43
+#: front/src/components/library/ArtistBase.vue:54
+#: front/src/components/library/TrackBase.vue:59
 msgctxt "*/*/Button.Label/Noun"
 msgid "More…"
 msgstr ""
@@ -2727,7 +2864,7 @@ msgctxt "*/*/*/Noun"
 msgid "Music"
 msgstr "Muziek"
 
-#: front/src/components/audio/Player.vue:631
+#: front/src/components/audio/Player.vue:657
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Mute"
 msgstr "Dempen"
@@ -2759,7 +2896,7 @@ msgstr "Mijn geweldige omschrijving"
 #: front/src/views/content/libraries/Form.vue:72
 msgctxt "Content/Library/Input.Placeholder"
 msgid "My awesome library"
-msgstr "Mijn geweldige verzameling"
+msgstr "Mijn geweldige bibliotheek"
 
 #: front/src/components/playlists/Form.vue:76
 msgctxt "Content/Playlist/Input.Placeholder"
@@ -2776,8 +2913,8 @@ msgctxt "Content/Library/Title"
 msgid "My libraries"
 msgstr "Mijn verzamelingen"
 
-#: front/src/components/audio/track/Row.vue:40
-#: src/components/library/EditCard.vue:60
+#: front/src/components/About.vue:105 src/components/audio/track/Row.vue:40
+#: front/src/components/library/EditCard.vue:60
 #: front/src/components/library/EditForm.vue:70
 #: front/src/components/library/TrackDetail.vue:34
 #: front/src/components/library/TrackDetail.vue:43
@@ -2787,54 +2924,56 @@ msgstr "Mijn verzamelingen"
 #: front/src/components/manage/library/TracksTable.vue:76
 #: front/src/components/manage/library/UploadsTable.vue:121
 #: front/src/components/manage/library/UploadsTable.vue:128
-#: front/src/components/manage/users/UsersTable.vue:61
+#: front/src/components/manage/moderation/ReportCard.vue:78
+#: front/src/components/manage/moderation/ReportCard.vue:87
+#: front/src/components/manage/moderation/ReportCard.vue:193
+#: front/src/components/manage/users/UsersTable.vue:62
 #: front/src/views/admin/library/UploadDetail.vue:179
 #: front/src/views/admin/library/UploadDetail.vue:214
 #: front/src/views/admin/library/UploadDetail.vue:233
 #: front/src/views/admin/library/UploadDetail.vue:244
 #: front/src/views/admin/library/UploadDetail.vue:257
-#: front/src/views/admin/moderation/AccountsDetail.vue:192
-#: front/src/views/admin/moderation/DomainsDetail.vue:82
+#: front/src/views/admin/moderation/AccountsDetail.vue:193
+#: front/src/views/admin/moderation/DomainsDetail.vue:119
 #: front/src/views/content/libraries/FilesTable.vue:95
 #: front/src/views/content/libraries/FilesTable.vue:101
 msgctxt "*/*/*"
 msgid "N/A"
 msgstr "N.B."
 
-#: front/src/components/manage/library/LibrariesTable.vue:48
-#: front/src/components/manage/library/UploadsTable.vue:59
-msgctxt "*/*/*"
-msgid "Name"
-msgstr "Naam"
-
 #: front/src/components/auth/ApplicationForm.vue:9
-msgctxt "Content/Applications/Input.Label/Noun"
-msgid "Name"
-msgstr "Naam"
-
 #: front/src/components/auth/Settings.vue:133
 #: front/src/components/manage/library/ArtistsTable.vue:39
+#: front/src/components/manage/library/LibrariesTable.vue:48
+#: front/src/components/manage/library/TagsTable.vue:41
+#: front/src/components/manage/library/UploadsTable.vue:59
 #: front/src/components/manage/moderation/AccountsTable.vue:39
-#: front/src/components/manage/moderation/DomainsTable.vue:38
-#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/manage/moderation/DomainsTable.vue:46
+#: front/src/components/mixins/Translations.vue:63
 #: front/src/components/playlists/PlaylistModal.vue:45
-#: front/src/views/admin/library/ArtistDetail.vue:98
+#: front/src/views/admin/library/ArtistDetail.vue:103
 #: front/src/views/admin/library/LibraryDetail.vue:85
+#: front/src/views/admin/library/TagDetail.vue:68
 #: front/src/views/admin/library/UploadDetail.vue:92
-#: front/src/views/admin/moderation/DomainsDetail.vue:97
-#: front/src/views/content/libraries/Form.vue:10 src/edits.js:10
-#: front/src/components/mixins/Translations.vue:54
+#: front/src/views/admin/moderation/DomainsDetail.vue:134
+#: front/src/views/content/libraries/Form.vue:10 src/edits.js:17
+#: front/src/components/mixins/Translations.vue:64
 msgctxt "*/*/*/Noun"
 msgid "Name"
 msgstr "Naam"
 
+#: front/src/views/Notifications.vue:24 src/views/Notifications.vue:58
+msgctxt "*/*/*"
+msgid "Never"
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:88
 #: front/src/views/auth/PasswordResetConfirm.vue:14
 msgctxt "Content/Settings/Input.Label"
 msgid "New password"
 msgstr "Nieuw wachtwoord"
 
-#: front/src/components/Sidebar.vue:173
+#: front/src/components/Sidebar.vue:177
 msgctxt "Sidebar/Player/Paragraph"
 msgid "New tracks will be appended here automatically."
 msgstr "Nieuwe nummers worden hier automatisch toegevoegd."
@@ -2844,22 +2983,18 @@ msgctxt "Content/Library/Card.Table.Header/Short"
 msgid "New value"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:629
+#: front/src/components/audio/Player.vue:655
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Next track"
 msgstr "Volgend nummer"
 
-#: front/src/components/Sidebar.vue:130
+#: front/src/components/Sidebar.vue:134
+#: front/src/components/manage/moderation/DomainsTable.vue:13
+#: front/src/views/admin/moderation/DomainsDetail.vue:110
 msgctxt "*/*/*"
 msgid "No"
 msgstr "Nee"
 
-#: front/src/components/Home.vue:95
-msgctxt "Content/Home/List item"
-msgid "No add-ons, no plugins : you only need a web library"
-msgstr ""
-"Geen uitbreidingen of plug-ins: je hebt alleen een online verzameling nodig"
-
 #: front/src/components/audio/Search.vue:25
 #, fuzzy
 msgctxt "Content/Search/Paragraph"
@@ -2878,6 +3013,11 @@ msgctxt "Content/Track/Table.Paragraph"
 msgid "No copyright information available for this track"
 msgstr "Geen songtekst beschikbaar voor dit nummer."
 
+#: front/src/components/About.vue:25 src/components/Home.vue:25
+msgctxt "Content/Home/Paragraph"
+msgid "No description available."
+msgstr ""
+
 #: front/src/components/library/TrackDetail.vue:25
 #, fuzzy
 msgctxt "Content/Track/Table.Paragraph"
@@ -2887,9 +3027,9 @@ msgstr "Geen songtekst beschikbaar voor dit nummer."
 #: front/src/components/federation/LibraryWidget.vue:6
 msgctxt "Content/Federation/Paragraph"
 msgid "No matching library."
-msgstr "Geen overeenkomende verzameling gevonden."
+msgstr "Geen overeenkomende bibliotheek."
 
-#: front/src/views/Notifications.vue:28
+#: front/src/views/Notifications.vue:93
 #, fuzzy
 msgctxt "Content/Notifications/Paragraph"
 msgid "No notification to show."
@@ -2900,6 +3040,16 @@ msgctxt "Content/*/Paragraph"
 msgid "No results were found."
 msgstr ""
 
+#: front/src/components/About.vue:32
+msgctxt "Content/Home/Paragraph"
+msgid "No rules available."
+msgstr ""
+
+#: front/src/components/About.vue:39
+msgctxt "Content/Home/Paragraph"
+msgid "No terms available."
+msgstr ""
+
 #: front/src/components/mixins/Translations.vue:10
 #: front/src/components/mixins/Translations.vue:11
 msgctxt "Content/Settings/Dropdown"
@@ -2909,25 +3059,29 @@ msgstr "Niemand, behalve ik"
 #: front/src/views/content/libraries/Detail.vue:57
 msgctxt "Content/Library/Paragraph"
 msgid "Nobody is following this library"
-msgstr "Niemand volgt deze verzameling"
+msgstr "Niemand volgt deze bibliotheek"
 
 #: front/src/components/manage/users/InvitationsTable.vue:51
 msgctxt "Content/Admin/Table"
 msgid "Not used"
 msgstr "Niet gebruikt"
 
-#: front/src/components/mixins/Translations.vue:100
-#: front/src/components/mixins/Translations.vue:101
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Notifications"
-msgstr "Meldingen"
-
-#: front/src/components/Sidebar.vue:46 src/views/Notifications.vue:76
+#: front/src/components/Sidebar.vue:46
+#: src/components/mixins/Translations.vue:112
+#: front/src/views/Notifications.vue:151
+#: src/components/mixins/Translations.vue:113
 msgctxt "*/Notifications/*"
 msgid "Notifications"
 msgstr "Meldingen"
 
-#: front/src/components/Footer.vue:47
+#: front/src/components/mixins/Translations.vue:47
+#: front/src/components/mixins/Translations.vue:48
+#, fuzzy
+msgctxt "Content/Moderation/Dropdown"
+msgid "Offensive content"
+msgstr "Inhoud verbergen"
+
+#: front/src/components/Footer.vue:55
 msgctxt "Footer/*/List item.Link"
 msgid "Official website"
 msgstr "Officiële website"
@@ -2942,6 +3096,12 @@ msgctxt "Content/Library/Card.Table.Header/Short"
 msgid "Old value"
 msgstr ""
 
+#: front/src/components/About.vue:90
+#, fuzzy
+msgctxt "*/*/*/State of registrations"
+msgid "Open"
+msgstr "Open"
+
 #: front/src/components/manage/users/InvitationsTable.vue:20
 msgctxt "Content/Admin/Dropdown/Adjective"
 msgid "Open"
@@ -2949,27 +3109,29 @@ msgstr "Open"
 
 #: front/src/components/library/ImportStatusModal.vue:56
 msgctxt "Popup/Import/Table.Label/Value"
-msgid ""
-"Open a support thread (include the debug information below in your message)"
+msgid "Open a support thread (include the debug information below in your message)"
 msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:73
-#: front/src/components/library/ArtistBase.vue:84
-#: front/src/components/library/TrackBase.vue:92
+#: front/src/components/library/AlbumBase.vue:87
+#: front/src/components/library/ArtistBase.vue:99
+#: front/src/components/library/TagDetail.vue:11
+#: front/src/components/library/TrackBase.vue:103
+#: front/src/components/manage/moderation/ReportCard.vue:128
 msgctxt "Content/Moderation/Link"
 msgid "Open in moderation interface"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:31
-#: front/src/views/admin/library/ArtistDetail.vue:30
-#: front/src/views/admin/library/TrackDetail.vue:30
+#: front/src/views/admin/library/AlbumDetail.vue:37
+#: front/src/views/admin/library/ArtistDetail.vue:35
+#: front/src/views/admin/library/TagDetail.vue:21
+#: front/src/views/admin/library/TrackDetail.vue:36
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open local profile"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:46
-#: front/src/views/admin/library/ArtistDetail.vue:45
-#: front/src/views/admin/library/TrackDetail.vue:45
+#: front/src/views/admin/library/AlbumDetail.vue:52
+#: front/src/views/admin/library/ArtistDetail.vue:50
+#: front/src/views/admin/library/TrackDetail.vue:51
 #, fuzzy
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open on MusicBrainz"
@@ -2980,10 +3142,10 @@ msgctxt "Content/Moderation/Link/Verb"
 msgid "Open profile"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:54
-#: front/src/views/admin/library/ArtistDetail.vue:53
+#: front/src/views/admin/library/AlbumDetail.vue:60
+#: front/src/views/admin/library/ArtistDetail.vue:58
 #: front/src/views/admin/library/LibraryDetail.vue:49
-#: front/src/views/admin/library/TrackDetail.vue:53
+#: front/src/views/admin/library/TrackDetail.vue:59
 #: front/src/views/admin/library/UploadDetail.vue:50
 #: front/src/views/admin/moderation/AccountsDetail.vue:52
 msgctxt "Content/Moderation/Link/Verb"
@@ -3006,6 +3168,7 @@ msgstr "Voeg filters toe om je radio te personaliseren"
 #: src/components/library/Radios.vue:41
 #: front/src/components/manage/library/EditsCardList.vue:37
 #: front/src/components/manage/users/UsersTable.vue:17
+#: front/src/views/admin/moderation/ReportsList.vue:42
 #: front/src/views/playlists/List.vue:25
 #, fuzzy
 msgctxt "Content/Search/Dropdown.Label/Noun"
@@ -3014,40 +3177,51 @@ msgstr "Volgorde"
 
 #: front/src/components/favorites/List.vue:24
 #: src/components/library/Albums.vue:15
-#: front/src/components/library/Artists.vue:15
+#: front/src/components/library/Artists.vue:19
 #: src/components/library/Radios.vue:33
 #: front/src/components/manage/library/AlbumsTable.vue:11
 #: front/src/components/manage/library/ArtistsTable.vue:11
 #: front/src/components/manage/library/EditsCardList.vue:29
 #: front/src/components/manage/library/LibrariesTable.vue:20
+#: front/src/components/manage/library/TagsTable.vue:11
 #: front/src/components/manage/library/TracksTable.vue:11
 #: front/src/components/manage/library/UploadsTable.vue:30
 #: front/src/components/manage/moderation/AccountsTable.vue:11
-#: front/src/components/manage/moderation/DomainsTable.vue:9
+#: front/src/components/manage/moderation/DomainsTable.vue:17
 #: front/src/components/manage/users/InvitationsTable.vue:9
 #: front/src/components/manage/users/UsersTable.vue:9
+#: front/src/views/admin/moderation/ReportsList.vue:34
 #: front/src/views/content/libraries/FilesTable.vue:21
 #: front/src/views/playlists/List.vue:17
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Ordering"
 msgstr "Volgorde"
 
-#: front/src/components/library/Albums.vue:23
-#: src/components/library/Artists.vue:23
+#: front/src/components/library/Albums.vue:27
+#: src/components/library/Artists.vue:27
 #: front/src/components/manage/library/AlbumsTable.vue:19
 #: front/src/components/manage/library/ArtistsTable.vue:19
 #: front/src/components/manage/library/LibrariesTable.vue:28
+#: front/src/components/manage/library/TagsTable.vue:19
 #: front/src/components/manage/library/TracksTable.vue:19
 #: front/src/components/manage/library/UploadsTable.vue:38
 #: front/src/components/manage/moderation/AccountsTable.vue:19
-#: front/src/components/manage/moderation/DomainsTable.vue:17
+#: front/src/components/manage/moderation/DomainsTable.vue:25
 #: front/src/views/content/libraries/FilesTable.vue:29
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Ordering direction"
 msgstr "Sorteervolgorde"
 
+#: front/src/components/mixins/Translations.vue:48
+#: front/src/components/mixins/Translations.vue:49
+msgctxt "Content/Moderation/Dropdown"
+msgid "Other"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:143
 #: front/src/components/manage/users/InvitationsTable.vue:38
-msgctxt "Content/Admin/Table.Label"
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Owner"
 msgstr "Eigenaar"
 
@@ -3067,12 +3241,15 @@ msgctxt "Content/*/Hidden text/Noun"
 msgid "Pagination"
 msgstr ""
 
-#: front/src/components/auth/Login.vue:33 src/components/auth/Signup.vue:40
-msgctxt "Content/*/Input.Label"
+#: front/src/components/auth/LoginForm.vue:32
+#: src/components/auth/Settings.vue:291
+#: front/src/components/auth/SignupForm.vue:36
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Password"
 msgstr "Wachtwoord"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:94
+#: front/src/components/auth/SubsonicTokenForm.vue:100
 msgctxt "Content/Settings/Message"
 msgid "Password updated"
 msgstr "Wachtwoord bijgewerkt"
@@ -3082,12 +3259,12 @@ msgctxt "Content/Signup/Card.Title"
 msgid "Password updated successfully"
 msgstr "Wachtwoord is gewijzigd"
 
-#: front/src/components/audio/Player.vue:628
+#: front/src/components/audio/Player.vue:654
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Pause track"
 msgstr "Nummer pauzeren"
 
-#: front/src/components/ShortcutsModal.vue:59
+#: front/src/components/ShortcutsModal.vue:96
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Pause/play the current track"
 msgstr ""
@@ -3116,7 +3293,7 @@ msgctxt "Content/Library/Label"
 msgid "Pending files"
 msgstr "In behandeling zijnde bestanden"
 
-#: front/src/components/Sidebar.vue:225
+#: front/src/components/Sidebar.vue:232
 msgctxt "Sidebar/Notifications/Hidden text"
 msgid "Pending follow requests"
 msgstr "In behandeling zijnde volgverzoeken"
@@ -3128,89 +3305,80 @@ msgctxt "Content/Admin/*/Noun"
 msgid "Pending review"
 msgstr "In behandeling zijnde bestanden"
 
-#: front/src/components/Sidebar.vue:226
+#: front/src/components/Sidebar.vue:233
 #, fuzzy
 msgctxt "Sidebar/Moderation/Hidden text"
-msgid "Pending review edits"
-msgstr "In behandeling zijnde verzoeken"
-
-#: front/src/components/manage/users/UsersTable.vue:42
-#: front/src/views/admin/moderation/AccountsDetail.vue:166
-msgctxt "Content/Admin/Table.Label/Noun"
-msgid "Permissions"
-msgstr "Machtigingen"
+msgid "Pending review edits"
+msgstr "In behandeling zijnde verzoeken"
 
 #: front/src/components/auth/Settings.vue:176
+#: front/src/components/manage/users/UsersTable.vue:42
+#: front/src/views/admin/moderation/AccountsDetail.vue:166
 msgctxt "Content/*/*/Noun"
 msgid "Permissions"
 msgstr "Machtigingen"
 
 #: front/src/components/audio/PlayButton.vue:9
-#: front/src/components/library/TrackBase.vue:26
+#: front/src/components/library/TrackBase.vue:24
 msgctxt "*/Queue/Button.Label/Short, Verb"
 msgid "Play"
 msgstr "Afspelen"
 
 #: front/src/components/audio/album/Card.vue:48
-#: front/src/components/audio/artist/Card.vue:44
-#: front/src/components/library/AlbumBase.vue:20
+#: front/src/components/library/AlbumBase.vue:21
 #: front/src/components/library/AlbumDetail.vue:11
 #: src/views/playlists/Detail.vue:24
 msgctxt "Content/Queue/Button.Label/Short, Verb"
 msgid "Play all"
 msgstr "Alles afspelen"
 
-#: front/src/components/library/ArtistBase.vue:31
+#: front/src/components/library/ArtistBase.vue:32
 msgctxt "Content/Artist/Button.Label/Verb"
 msgid "Play all albums"
 msgstr "Alle albums afspelen"
 
-#: front/src/components/audio/PlayButton.vue:76
+#: front/src/components/audio/PlayButton.vue:92
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play next"
 msgstr "Hierna afspelen"
 
-#: front/src/components/ShortcutsModal.vue:67
+#: front/src/components/ShortcutsModal.vue:120
 #, fuzzy
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Play next track"
-msgstr "Nummer afspelen"
+msgstr "Afspelen"
 
-#: front/src/components/audio/PlayButton.vue:74
+#: front/src/components/audio/PlayButton.vue:90
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play now"
 msgstr "Nu afspelen"
 
-#: front/src/components/ShortcutsModal.vue:63
+#: front/src/components/ShortcutsModal.vue:116
 #, fuzzy
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Play previous track"
 msgstr "Vorig nummer"
 
-#: front/src/components/audio/PlayButton.vue:77
+#: front/src/components/audio/PlayButton.vue:93
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play similar songs"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:224
+#: front/src/components/Sidebar.vue:231
 #, fuzzy
 msgctxt "Sidebar/Player/Hidden text"
 msgid "Play this track"
 msgstr "Nummer afspelen"
 
-#: front/src/components/audio/Player.vue:627
+#: front/src/components/audio/Player.vue:653
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Play track"
 msgstr "Nummer afspelen"
 
-#: front/src/components/audio/PlayButton.vue:82
+#: front/src/components/mixins/Report.vue:66 src/views/playlists/Detail.vue:121
+#: front/src/components/mixins/Report.vue:67
 #, fuzzy
-msgctxt "*/Queue/Button/Title"
-msgid "Play..."
-msgstr "Afspelen"
-
-#: front/src/views/playlists/Detail.vue:91
-msgctxt "Head/Playlist/Title"
+msgctxt "*/*/*"
 msgid "Playlist"
 msgstr "Afspeellijst"
 
@@ -3247,33 +3415,30 @@ msgctxt "Content/Playlist/Dropdown.Label"
 msgid "Playlist visibility"
 msgstr "Zichtbaarheid van afspeellijst"
 
-#: front/src/components/mixins/Translations.vue:88
-#: front/src/components/mixins/Translations.vue:89
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Playlists"
-msgstr "Afspeellijsten"
-
 #: front/src/components/Sidebar.vue:71 src/components/library/Home.vue:16
-#: front/src/components/library/Library.vue:16 src/views/admin/Settings.vue:83
-#: front/src/views/admin/library/AlbumDetail.vue:173
-#: front/src/views/admin/library/ArtistDetail.vue:162
-#: front/src/views/admin/library/TrackDetail.vue:225
+#: front/src/components/library/Library.vue:16
+#: front/src/components/mixins/Translations.vue:100
+#: src/views/admin/Settings.vue:83
+#: front/src/views/admin/library/AlbumDetail.vue:179
+#: front/src/views/admin/library/ArtistDetail.vue:167
+#: front/src/views/admin/library/TrackDetail.vue:231
 #: src/views/playlists/List.vue:106
+#: front/src/components/mixins/Translations.vue:101
 msgctxt "*/*/*"
 msgid "Playlists"
 msgstr "Afspeellijsten"
 
-#: front/src/components/Home.vue:56
-msgctxt "Content/Home/List item"
-msgid "Playlists? We got them"
-msgstr "Afspeellijsten? Die hebben we"
+#: front/src/components/audio/EmbedWizard.vue:9
+msgctxt "Content/Embed/Message"
+msgid "Please contact your admins and ask them to update the corresponding setting."
+msgstr ""
 
 #: front/src/components/auth/Settings.vue:79
 msgctxt "Content/Settings/Error message.List item/Call to action"
 msgid "Please double-check your password is correct"
 msgstr "Controleer of je wachtwoord klopt"
 
-#: front/src/components/auth/Login.vue:9
+#: front/src/components/auth/LoginForm.vue:5
 msgctxt "Content/Login/Error message.List item/Call to action"
 msgid "Please double-check your username/password couple is correct"
 msgstr "Controleer of je gebruikersnaam en wachtwoord kloppen"
@@ -3283,25 +3448,28 @@ msgctxt "Content/Settings/Paragraph"
 msgid "PNG, GIF or JPG. At most 2MB. Will be downscaled to 400x400px."
 msgstr "PNG, GIF of JPG. Maximaal 2MB. Wordt verkleind tot 400x400px."
 
-#: front/src/views/admin/library/TrackDetail.vue:137
+#: front/src/components/About.vue:72
+msgctxt "Content/About/Header/Name"
+msgid "Pod configuration"
+msgstr ""
+
+#: front/src/views/admin/library/TrackDetail.vue:143 src/edits.js:70
 #, fuzzy
-msgctxt "*/*/*/Noun"
+msgctxt "*/*/*/Short, Noun"
 msgid "Position"
 msgstr "Omschrijving"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:118
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Prevent account or domain from triggering notifications, except from "
-"followers."
+msgid "Prevent account or domain from triggering notifications, except from followers."
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:33
+#: front/src/components/audio/EmbedWizard.vue:43
 msgctxt "Popup/Embed/Title/Noun"
 msgid "Preview"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:626
+#: front/src/components/audio/Player.vue:652
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Previous track"
 msgstr "Vorig nummer"
@@ -3312,7 +3480,7 @@ msgctxt "Content/Settings/Dropdown/Short"
 msgid "Private"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:43
+#: front/src/views/content/remote/Card.vue:56
 #, fuzzy
 msgctxt "Content/Library/Card.List item"
 msgid "Problem during scanning"
@@ -3332,17 +3500,23 @@ msgstr "Doorgaan met inloggen"
 #: front/src/components/library/FileUpload.vue:17
 msgctxt "Content/Library/Tab.Title/Short"
 msgid "Processing"
-msgstr "Bezig met verwerken..."
+msgstr "Aan het verwerken"
 
-#: front/src/components/mixins/Translations.vue:68
-#: front/src/components/mixins/Translations.vue:69
+#: front/src/components/mixins/Translations.vue:80
+#: front/src/components/mixins/Translations.vue:81
 #, fuzzy
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Profile"
 msgstr "Mislukte bestanden"
 
+#: front/src/components/auth/SignupForm.vue:5
+#, fuzzy
+msgctxt "Content/Signup/Form/Paragraph"
+msgid "Public registrations are not possible on this instance. You will need an invitation code to sign up."
+msgstr "Openbare registraties zijn uitgeschakeld op deze server. Om je te kunnen aanmelden heb je een uitnodigings-code nodig."
+
 #: front/src/components/manage/moderation/AccountsTable.vue:188
-#: front/src/components/manage/moderation/DomainsTable.vue:168
+#: front/src/components/manage/moderation/DomainsTable.vue:186
 #: front/src/views/content/libraries/Quota.vue:36
 #: front/src/views/content/libraries/Quota.vue:39
 #: front/src/views/content/libraries/Quota.vue:62
@@ -3373,10 +3547,10 @@ msgctxt "Sidebar/Queue/Tab.Title/Noun"
 msgid "Queue"
 msgstr "Wachtrij"
 
-#: front/src/components/audio/Player.vue:322
+#: front/src/components/audio/Player.vue:329
 msgctxt "Content/Queue/Message"
 msgid "Queue shuffled!"
-msgstr "Wachtrij ingesteld op willekeurig!"
+msgstr "Wachtrij geshuffeld!"
 
 #: front/src/views/radios/Detail.vue:80
 msgctxt "Head/Radio/Title"
@@ -3405,16 +3579,12 @@ msgstr "Radio bijgewerkt"
 
 #: front/src/components/library/Library.vue:13
 #: src/components/library/Radios.vue:142
+#: front/src/components/mixins/Translations.vue:104
+#: front/src/components/mixins/Translations.vue:105
 msgctxt "*/*/*"
 msgid "Radios"
 msgstr "Radio's"
 
-#: front/src/components/mixins/Translations.vue:92
-#: front/src/components/mixins/Translations.vue:93
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Radios"
-msgstr "Radio's"
-
 #: front/src/components/auth/ApplicationForm.vue:151
 msgctxt "Content/OAuth Scopes/Label/Verb"
 msgid "Read"
@@ -3441,15 +3611,15 @@ msgctxt "Content/Moderation/*/Noun"
 msgid "Reason"
 msgstr ""
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:251
-#: front/src/views/admin/moderation/DomainsDetail.vue:179
+#: front/src/views/admin/moderation/AccountsDetail.vue:252
+#: front/src/views/admin/moderation/DomainsDetail.vue:216
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Received library follows"
 msgstr ""
 
-#: front/src/components/manage/moderation/DomainsTable.vue:40
-#: front/src/components/mixins/Translations.vue:62
-#: front/src/components/mixins/Translations.vue:63
+#: front/src/components/manage/moderation/DomainsTable.vue:48
+#: front/src/components/mixins/Translations.vue:74
+#: front/src/components/mixins/Translations.vue:75
 msgctxt "Content/Moderation/*/Noun"
 msgid "Received messages"
 msgstr ""
@@ -3470,6 +3640,12 @@ msgctxt "Content/Home/Title"
 msgid "Recently added"
 msgstr "Recent toegevoegd"
 
+#: front/src/components/Home.vue:167
+#, fuzzy
+msgctxt "Content/Home/Title"
+msgid "Recently added albums"
+msgstr "Recent toegevoegd"
+
 #: front/src/components/library/Home.vue:11
 msgctxt "Content/Home/Title"
 msgid "Recently favorited"
@@ -3499,14 +3675,14 @@ msgctxt "Popup/*/Message.Title"
 msgid "Refresh error"
 msgstr "Verversen"
 
-#: front/src/views/admin/library/AlbumDetail.vue:50
-#: front/src/views/admin/library/ArtistDetail.vue:49
-#: front/src/views/admin/library/TrackDetail.vue:49
+#: front/src/views/admin/library/AlbumDetail.vue:56
+#: front/src/views/admin/library/ArtistDetail.vue:54
+#: front/src/views/admin/library/TrackDetail.vue:55
 msgctxt "Content/Moderation/Button/Verb"
 msgid "Refresh from remote server"
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:127
+#: front/src/views/admin/moderation/DomainsDetail.vue:164
 msgctxt "Content/Moderation/Button.Label/Verb"
 msgid "Refresh node info"
 msgstr ""
@@ -3519,9 +3695,7 @@ msgstr "Aflopend"
 
 #: front/src/components/federation/FetchButton.vue:80
 msgctxt "Popup/*/Message.Content"
-msgid ""
-"Refresh request wasn't proceed in time by our server. It will be processed "
-"later."
+msgid "Refresh request wasn't proceed in time by our server. It will be processed later."
 msgstr ""
 
 #: front/src/components/federation/FetchButton.vue:16
@@ -3545,16 +3719,13 @@ msgctxt "Popup/*/Title"
 msgid "Refreshing object from remote…"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:9
-msgctxt "Content/Signup/Form/Paragraph"
-msgid ""
-"Registration are closed on this instance, you will need an invitation code "
-"to signup."
-msgstr ""
-"Registraties zijn gesloten op deze instantie. Je hebt een uitnodiging nodig "
-"om te registreren."
+#: front/src/components/About.vue:86
+#, fuzzy
+msgctxt "*/*/*"
+msgid "Registrations"
+msgstr "Administratie"
 
-#: front/src/components/manage/users/UsersTable.vue:71
+#: front/src/components/manage/users/UsersTable.vue:72
 #, fuzzy
 msgctxt "Content/Admin/Table, User role"
 msgid "Regular user"
@@ -3581,8 +3752,8 @@ msgid "Rejected"
 msgstr "Afgekeurd"
 
 #: front/src/components/manage/library/AlbumsTable.vue:43
-#: front/src/components/mixins/Translations.vue:44 src/edits.js:28
-#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:54 src/edits.js:43
+#: front/src/components/mixins/Translations.vue:55
 #, fuzzy
 msgctxt "Content/*/*/Noun"
 msgid "Release date"
@@ -3593,6 +3764,11 @@ msgctxt "Content/Library/Paragraph"
 msgid "Remaining storage space"
 msgstr ""
 
+#: front/src/views/Notifications.vue:18 src/views/Notifications.vue:52
+msgctxt "Content/Notifications/Label"
+msgid "Remind me in:"
+msgstr ""
+
 #: front/src/views/content/remote/Home.vue:6
 msgctxt "Content/Library/Title/Noun"
 msgid "Remote libraries"
@@ -3600,12 +3776,8 @@ msgstr "Externe verzamelingen"
 
 #: front/src/views/content/remote/Home.vue:7
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Remote libraries are owned by other users on the network. You can access "
-"them as long as they are public or you are granted access."
-msgstr ""
-"Externe verzamelingen worden beheerd door andere gebruikers op het netwerk. "
-"Je kunt ze gebruiken als ze openbaar zijn of als jou toegang is verleend."
+msgid "Remote libraries are owned by other users on the network. You can access them as long as they are public or you are granted access."
+msgstr "Externe verzamelingen worden beheerd door andere gebruikers op het netwerk. Je kunt ze gebruiken als ze openbaar zijn of als jou toegang is verleend."
 
 #: front/src/components/library/radios/Filter.vue:59
 msgctxt "Content/Radio/Button.Label/Verb"
@@ -3623,6 +3795,13 @@ msgctxt "Content/Moderation/Button.Label"
 msgid "Remove filter"
 msgstr "Gebruikersafbeelding verwijderen"
 
+#: front/src/components/manage/moderation/DomainsTable.vue:198
+#: front/src/views/admin/moderation/DomainsDetail.vue:39
+#, fuzzy
+msgctxt "Content/Moderation/Action/Verb"
+msgid "Remove from allow-list"
+msgstr "Verwijderen uit favorieten"
+
 #: front/src/components/favorites/TrackFavoriteIcon.vue:26
 msgctxt "Content/Track/Icon.Tooltip/Verb"
 msgid "Remove from favorites"
@@ -3630,44 +3809,106 @@ msgstr "Verwijderen uit favorieten"
 
 #: front/src/views/content/libraries/Quota.vue:38
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded but yet to be processed tracks completely, adding the "
-"corresponding data to your quota."
+msgid "Removes uploaded but yet to be processed tracks completely, adding the corresponding data to your quota."
 msgstr ""
 
 #: front/src/views/content/libraries/Quota.vue:64
 #, fuzzy
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded tracks skipped during the import processes completely, "
-"adding the corresponding data to your quota."
-msgstr ""
-"Alle nummers die bij het importeren zijn overgeslagen (om wat voor reden dan"
-" ook), worden verwijderd. De bestanden worden volledig verwijderd en je "
-"krijgt het bijbehorende quotum terug."
+msgid "Removes uploaded tracks skipped during the import processes completely, adding the corresponding data to your quota."
+msgstr "Alle nummers die bij het importeren zijn overgeslagen (om wat voor reden dan ook), worden verwijderd. De bestanden worden volledig verwijderd en je krijgt het bijbehorende quotum terug."
 
 #: front/src/views/content/libraries/Quota.vue:90
 #, fuzzy
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded tracks that could not be processed by the server "
-"completely, adding the corresponding data to your quota."
+msgid "Removes uploaded tracks that could not be processed by the server completely, adding the corresponding data to your quota."
+msgstr "Alle nummers die nog niet verwerkt zijn, worden verwijderd. De bestanden worden volledig verwijderd en je krijgt het bijbehorende quotum terug."
+
+#: front/src/components/audio/PlayButton.vue:94
+#, fuzzy
+msgctxt "*/Queue/Dropdown/Button/Title"
+msgid "Replace current queue"
+msgstr "Aan huidige wachtrij toevoegen"
+
+#: front/src/components/mixins/Report.vue:6 src/components/mixins/Report.vue:7
+msgctxt "*/Moderation/*/Verb"
+msgid "Report @%{ username }…"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:5
+msgctxt "Content/Moderation/Card/Short"
+msgid "Report %{ id }"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:139
+msgctxt "*/Moderation/Message"
+msgid "Report successfully submitted, thank you"
+msgstr ""
+
+#: front/src/components/mixins/Report.vue:36
+#: src/components/mixins/Report.vue:37
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this album…"
+msgstr "Dit album bewerken"
+
+#: front/src/components/mixins/Report.vue:50
+#: src/components/mixins/Report.vue:51
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this artist…"
+msgstr "Toevoegen aan deze afspeellijst"
+
+#: front/src/components/mixins/Report.vue:72
+#: src/components/mixins/Report.vue:73
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this library…"
+msgstr "Deze bibliotheek verwijderen?"
+
+#: front/src/components/mixins/Report.vue:61
+#: src/components/mixins/Report.vue:62
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this playlist…"
+msgstr "Toevoegen aan deze afspeellijst"
+
+#: front/src/components/mixins/Report.vue:23
+#: src/components/mixins/Report.vue:24
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this track…"
+msgstr "Instantie-informatie bewerken"
+
+#: front/src/components/audio/PlayButton.vue:95
+msgctxt "*/Moderation/*/Button/Label,Verb"
+msgid "Report…"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:117
+msgctxt "Content/*/*/Short"
+msgid "Reported object"
+msgstr ""
+
+#: front/src/views/admin/moderation/Base.vue:5
+#: front/src/views/admin/moderation/ReportsList.vue:3
+#: front/src/views/admin/moderation/ReportsList.vue:208
+msgctxt "*/Moderation/*/Noun"
+msgid "Reports"
 msgstr ""
-"Alle nummers die nog niet verwerkt zijn, worden verwijderd. De bestanden "
-"worden volledig verwijderd en je krijgt het bijbehorende quotum terug."
 
-#: front/src/components/auth/SubsonicTokenForm.vue:33
-#: front/src/components/auth/SubsonicTokenForm.vue:36
+#: front/src/components/auth/SubsonicTokenForm.vue:38
+#: front/src/components/auth/SubsonicTokenForm.vue:41
 msgctxt "*/Settings/Button.Label/Verb"
 msgid "Request a new password"
 msgstr "Nieuw wachtwoord aanvragen"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:34
+#: front/src/components/auth/SubsonicTokenForm.vue:39
 msgctxt "Popup/Settings/Title"
 msgid "Request a new Subsonic API password?"
 msgstr "Nieuw Subsonic-API-wachtwoord aanvragen?"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:42
+#: front/src/components/auth/SubsonicTokenForm.vue:47
 msgctxt "Content/Settings/Button.Label/Verb"
 msgid "Request a password"
 msgstr "Wachtwoord aanvragen"
@@ -3677,36 +3918,53 @@ msgctxt "Popup/*/Loading.Title"
 msgid "Requesting a fetch…"
 msgstr ""
 
-#: front/src/components/library/EditForm.vue:82
+#: front/src/components/library/EditForm.vue:94
 msgctxt "Content/Library/Button.Label"
-msgid "Reset to initial value: %{ value }"
+msgid "Reset to initial value"
 msgstr ""
 
-#: front/src/components/auth/Login.vue:35 src/views/auth/PasswordReset.vue:4
-#: front/src/views/auth/PasswordReset.vue:53
+#: front/src/components/auth/LoginForm.vue:34
+#: src/views/auth/PasswordReset.vue:4 front/src/views/auth/PasswordReset.vue:53
 msgctxt "*/Login/*/Verb"
 msgid "Reset your password"
 msgstr "Wachtwoord opnieuw instellen"
 
+#: front/src/components/manage/moderation/ReportCard.vue:83
+#, fuzzy
+msgctxt "Content/*/*/Noun"
+msgid "Resolution date"
+msgstr "Toegevoegd"
+
+#: front/src/components/manage/moderation/ReportCard.vue:218
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Resolve"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:62
+#: front/src/views/admin/moderation/ReportsList.vue:20
+msgctxt "Content/*/*/Short"
+msgid "Resolved"
+msgstr ""
+
 #: front/src/views/content/libraries/FilesTable.vue:223
 #, fuzzy
 msgctxt "Content/Library/Dropdown/Verb"
 msgid "Restart import"
 msgstr "Importeren"
 
+#: front/src/components/library/EditForm.vue:31
+msgctxt "Content/Library/Button.Label"
+msgid "Restrict to unreviewed edits"
+msgstr ""
+
 #: front/src/components/favorites/List.vue:39
-#: src/components/library/Albums.vue:30
-#: front/src/components/library/Artists.vue:30
+#: src/components/library/Albums.vue:34
+#: front/src/components/library/Artists.vue:34
 #: src/components/library/Radios.vue:52 front/src/views/playlists/List.vue:32
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Results per page"
 msgstr "Aantal resultaten per pagina"
 
-#: front/src/components/library/EditForm.vue:31
-msgctxt "Content/Library/Button.Label"
-msgid "Retrict to unreviewed edits"
-msgstr ""
-
 #: front/src/views/auth/EmailConfirm.vue:17
 #, fuzzy
 msgctxt "Content/Signup/Link/Verb"
@@ -3739,55 +3997,56 @@ msgctxt "Content/Moderation/Card.Title/Noun"
 msgid "Rule"
 msgstr ""
 
-#: front/src/components/admin/SettingsGroup.vue:67
+#: front/src/components/About.vue:28 src/components/About.vue:56
+msgctxt "Content/About/Header"
+msgid "Rules"
+msgstr ""
+
+#: front/src/components/admin/SettingsGroup.vue:75
 #: front/src/components/library/radios/Builder.vue:34
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Save"
 msgstr "Opslaan"
 
-#: front/src/views/content/remote/Card.vue:175
+#: front/src/views/content/remote/Card.vue:203
 msgctxt "Content/Library/Message"
 msgid "Scan launched"
 msgstr "Scan begonnen"
 
-#: front/src/views/content/remote/Card.vue:67
+#: front/src/views/content/remote/Card.vue:80
 #, fuzzy
 msgctxt "Content/Library/Card.Button.Label/Verb"
 msgid "Scan now"
 msgstr "Nu afspelen"
 
-#: front/src/views/content/remote/Card.vue:35
+#: front/src/views/content/remote/Card.vue:48
 msgctxt "Content/Library/Card.List item"
 msgid "Scan pending"
 msgstr "Nog te scannen"
 
-#: front/src/views/content/remote/Card.vue:176
+#: front/src/views/content/remote/Card.vue:204
 msgctxt "Content/Library/Message"
 msgid "Scan skipped (previous scan is too recent)"
 msgstr "Scan overgeslagen (vorige scan was zeer recent)"
 
-#: front/src/views/content/remote/Card.vue:47
+#: front/src/views/content/remote/Card.vue:60
 #, fuzzy
 msgctxt "Content/Library/Card.List item"
 msgid "Scanned"
 msgstr "Scan begonnen"
 
-#: front/src/views/content/remote/Card.vue:51
+#: front/src/views/content/remote/Card.vue:64
 msgctxt "Content/Library/Card.List item"
 msgid "Scanned with errors"
 msgstr "Afgerond, maar met foutmeldingen"
 
-#: front/src/views/content/remote/Card.vue:39
+#: front/src/views/content/remote/Card.vue:52
 #, fuzzy
 msgctxt "Content/Library/Card.List item"
 msgid "Scanning… (%{ progress }%)"
-msgstr "Bezig met scannen... (% {progress }%)"
+msgstr "Bezig met scannen… (% {progress }%)"
 
 #: front/src/components/auth/ApplicationForm.vue:22
-msgctxt "Content/Applications/Input.Label/Noun"
-msgid "Scopes"
-msgstr ""
-
 #: front/src/components/auth/Settings.vue:226
 msgctxt "Content/*/*/Noun"
 msgid "Scopes"
@@ -3800,12 +4059,14 @@ msgstr ""
 #: front/src/components/manage/library/ArtistsTable.vue:5
 #: front/src/components/manage/library/EditsCardList.vue:6
 #: front/src/components/manage/library/LibrariesTable.vue:5
+#: front/src/components/manage/library/TagsTable.vue:5
 #: front/src/components/manage/library/TracksTable.vue:5
 #: front/src/components/manage/library/UploadsTable.vue:5
 #: front/src/components/manage/moderation/AccountsTable.vue:5
 #: front/src/components/manage/moderation/DomainsTable.vue:5
 #: front/src/components/manage/users/InvitationsTable.vue:5
 #: front/src/components/manage/users/UsersTable.vue:5
+#: front/src/views/admin/moderation/ReportsList.vue:8
 #: front/src/views/content/libraries/FilesTable.vue:5
 #: src/views/playlists/List.vue:13
 msgctxt "Content/Search/Input.Label/Noun"
@@ -3815,13 +4076,14 @@ msgstr "Zoeken"
 #: front/src/views/content/remote/ScanForm.vue:9
 msgctxt "Content/Library/Input.Label/Verb"
 msgid "Search a remote library"
-msgstr "Zoeken naar externe verzameling"
+msgstr "Zoek een externe bibliotheek"
 
 #: front/src/components/manage/library/EditsCardList.vue:211
+#: front/src/views/admin/moderation/ReportsList.vue:207
 #, fuzzy
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by account, summary, domain…"
-msgstr "Zoek op titel, artiest, domein..."
+msgstr "Zoek op titel, artiest, domein…"
 
 #: front/src/components/manage/library/LibrariesTable.vue:191
 msgctxt "Content/Search/Input.Placeholder"
@@ -3842,21 +4104,26 @@ msgstr ""
 #, fuzzy
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by domain, title, artist, album, MusicBrainz ID…"
-msgstr "Zoek op titel, artiest, album..."
+msgstr "Zoek op titel, artiest, album…"
 
 #: front/src/components/manage/library/AlbumsTable.vue:174
 #, fuzzy
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by domain, title, artist, MusicBrainz ID…"
-msgstr "Zoek op titel, artiest, domein..."
+msgstr "Zoek op titel, artiest, domein…"
 
 #: front/src/components/manage/moderation/AccountsTable.vue:171
 #, fuzzy
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by domain, username, bio…"
-msgstr "Zoek op gebruikersnaam, e-mailadres, code..."
+msgstr "Zoek op gebruikersnaam, e-mailadres, code…"
+
+#: front/src/components/manage/library/TagsTable.vue:165
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by name"
+msgstr ""
 
-#: front/src/components/manage/moderation/DomainsTable.vue:151
+#: front/src/components/manage/moderation/DomainsTable.vue:168
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by name…"
 msgstr ""
@@ -3865,41 +4132,54 @@ msgstr ""
 #, fuzzy
 msgctxt "Content/Library/Input.Placeholder"
 msgid "Search by title, artist, album…"
-msgstr "Zoek op titel, artiest, album..."
+msgstr "Zoek op titel, artiest, album…"
 
 #: front/src/components/manage/users/InvitationsTable.vue:153
 #, fuzzy
 msgctxt "Content/Admin/Input.Placeholder/Verb"
 msgid "Search by username, e-mail address, code…"
-msgstr "Zoek op gebruikersnaam, e-mailadres, code..."
+msgstr "Zoek op gebruikersnaam, e-mailadres, code…"
 
-#: front/src/components/manage/users/UsersTable.vue:163
+#: front/src/components/manage/users/UsersTable.vue:164
 #, fuzzy
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by username, e-mail address, name…"
-msgstr "Zoek op naam, gebruikersnaam, e-mailadres..."
+msgstr "Zoek op naam, gebruikersnaam, e-mailadres…"
 
-#: front/src/components/audio/SearchBar.vue:20
-#, fuzzy
+#: front/src/components/audio/SearchBar.vue:27
 msgctxt "Sidebar/Search/Input.Placeholder"
 msgid "Search for artists, albums, tracks…"
-msgstr "Zoek naar artiesten, albums, nummers..."
+msgstr "Zoek artiesten, albums, nummers…"
 
 #: front/src/components/audio/Search.vue:2
 msgctxt "Content/Search/Title"
 msgid "Search for some music"
 msgstr "Zoeken naar muziek"
 
-#: front/src/components/library/AlbumBase.vue:57
-#: front/src/components/library/ArtistBase.vue:68
-#: front/src/components/library/TrackBase.vue:76
+#: front/src/components/library/TagsSelector.vue:6
+#, fuzzy
+msgctxt "*/Dropdown/Placeholder/Verb"
+msgid "Search for tags…"
+msgstr "Zoek artiesten, albums, nummers…"
+
+#: front/src/components/library/AlbumBase.vue:66
+#: front/src/components/library/ArtistBase.vue:77
+#: front/src/components/library/TrackBase.vue:82
+#, fuzzy
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Search on Discogs"
+msgstr "Zoeken naar muziek"
+
+#: front/src/components/library/AlbumBase.vue:58
+#: front/src/components/library/ArtistBase.vue:69
+#: front/src/components/library/TrackBase.vue:74
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Search on Wikipedia"
 msgstr "Zoeken op Wikipedia"
 
 #: front/src/components/library/Library.vue:35
-#: src/views/admin/library/Base.vue:32
-#: front/src/views/admin/moderation/Base.vue:22
+#: src/views/admin/library/Base.vue:35
+#: front/src/views/admin/moderation/Base.vue:44
 #: src/views/admin/users/Base.vue:21 front/src/views/content/Base.vue:19
 msgctxt "Menu/*/Hidden text"
 msgid "Secondary menu"
@@ -3910,6 +4190,26 @@ msgctxt "Content/Admin/Menu.Title"
 msgid "Sections"
 msgstr "Secties"
 
+#: front/src/components/ShortcutsModal.vue:108
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek backwards 30s"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:100
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek backwards 5s"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:112
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek forwards 30s"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:104
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek forwards 5s"
+msgstr ""
+
 #: front/src/components/library/radios/Builder.vue:46
 msgctxt "Content/Radio/Dropdown.Placeholder/Verb"
 msgid "Select a filter"
@@ -3928,9 +4228,14 @@ msgctxt "Content/*/Link/Verb"
 msgid "Select only current page"
 msgstr "Alleen deze pagina kiezen"
 
-#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:108
-#: front/src/components/manage/users/UsersTable.vue:181
-#: front/src/views/admin/moderation/AccountsDetail.vue:506
+#: front/src/components/Home.vue:43
+msgctxt "Content/Home/Link"
+msgid "Server rules"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:112
+#: front/src/components/manage/users/UsersTable.vue:182
+#: front/src/views/admin/moderation/AccountsDetail.vue:526
 msgctxt "*/*/*/Noun"
 msgid "Settings"
 msgstr "Instellingen"
@@ -3953,18 +4258,25 @@ msgstr "Link om te delen"
 #: front/src/views/content/libraries/Detail.vue:15
 #, fuzzy
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Share this link with other users so they can request access to your library."
-msgstr ""
-"Deel deze link met anderen zodat ze toegang tot je verzamelingen kunnen "
-"aanvragen."
+msgid "Share this link with other users so they can request access to your library."
+msgstr "Deel deze link met anderen zodat ze toegang tot je verzamelingen kunnen aanvragen."
 
 #: front/src/views/content/libraries/Detail.vue:14
-#: front/src/views/content/remote/Card.vue:77
+#: front/src/views/content/remote/Card.vue:90
 msgctxt "Content/Library/Title"
 msgid "Sharing link"
 msgstr "Link om te delen"
 
+#: front/src/components/audio/EmbedWizard.vue:5
+msgctxt "Content/Embed/Message"
+msgid "Sharing will not work because this pod doesn't allow anonymous users to access content."
+msgstr ""
+
+#: front/src/components/About.vue:156
+msgctxt "*/*/*/Verb"
+msgid "Show"
+msgstr ""
+
 #: front/src/components/audio/album/Card.vue:38
 #, fuzzy
 msgctxt "Content/Album/Card.Link/Verb"
@@ -3973,11 +4285,11 @@ msgid_plural "Show %{ count } more tracks"
 msgstr[0] "Nog %{ count } nummer tonen"
 msgstr[1] "Nog %{ count } nummers tonen"
 
-#: front/src/components/audio/artist/Card.vue:30
+#: front/src/components/tags/List.vue:11
 #, fuzzy
-msgctxt "Content/Artist/Card.Link"
-msgid "Show 1 more album"
-msgid_plural "Show %{ count } more albums"
+msgctxt "Content/*/Button/Label/Verb"
+msgid "Show 1 more tag"
+msgid_plural "Show %{ count } more tags"
 msgstr[0] "Nog %{ count } album tonen"
 msgstr[1] "Nog %{ count } albums tonen"
 
@@ -3986,17 +4298,28 @@ msgctxt "Content/Library/Button.Label"
 msgid "Show all edits"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:42
+#: front/src/components/ShortcutsModal.vue:60
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Show available keyboard shortcuts"
+msgstr "Toon beschikbare sneltoetsen"
+
+#: front/src/components/common/ExpandableDiv.vue:7
+msgctxt "*/*/Button,Label"
+msgid "Show less"
 msgstr ""
 
-#: front/src/views/Notifications.vue:7
+#: front/src/components/common/ExpandableDiv.vue:8
+#, fuzzy
+msgctxt "*/*/Button,Label"
+msgid "Show more"
+msgstr "Nog %{ count } album tonen"
+
+#: front/src/views/Notifications.vue:72
 msgctxt "Content/Notifications/Form.Label/Verb"
 msgid "Show read notifications"
 msgstr "Gelezen meldingen tonen"
 
-#: front/src/components/forms/PasswordInput.vue:26
+#: front/src/components/forms/PasswordInput.vue:42
 msgctxt "Content/Settings/Button.Tooltip/Verb"
 msgid "Show/hide password"
 msgstr "Wachtwoord tonen/verbergen"
@@ -4005,57 +4328,64 @@ msgstr "Wachtwoord tonen/verbergen"
 #: front/src/components/manage/library/ArtistsTable.vue:84
 #: front/src/components/manage/library/EditsCardList.vue:72
 #: front/src/components/manage/library/LibrariesTable.vue:110
+#: front/src/components/manage/library/TagsTable.vue:79
 #: front/src/components/manage/library/TracksTable.vue:95
 #: front/src/components/manage/library/UploadsTable.vue:144
 #: front/src/components/manage/moderation/AccountsTable.vue:88
-#: front/src/components/manage/moderation/DomainsTable.vue:74
+#: front/src/components/manage/moderation/DomainsTable.vue:85
 #: front/src/components/manage/users/InvitationsTable.vue:76
-#: front/src/components/manage/users/UsersTable.vue:87
+#: front/src/components/manage/users/UsersTable.vue:88
 #: front/src/views/content/libraries/FilesTable.vue:117
 msgctxt "Content/*/Paragraph"
 msgid "Showing results %{ start }-%{ end } on %{ total }"
 msgstr "Resultaten - %{ start }-%{ end } van de %{ total }"
 
-#: front/src/components/ShortcutsModal.vue:83
-#, fuzzy
+#: front/src/components/ShortcutsModal.vue:140
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Shuffle queue"
-msgstr "Willekeurig"
+msgstr "Wachtrij shuffelen"
 
-#: front/src/components/audio/Player.vue:641
+#: front/src/components/audio/Player.vue:667
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Shuffle your queue"
-msgstr "Willekeurig"
+msgstr "Shuffel je wachtrij"
+
+#: front/src/components/Home.vue:103
+#, fuzzy
+msgctxt "*/Signup/Title"
+msgid "Sign up"
+msgstr "Registreren"
 
-#: front/src/components/auth/Signup.vue:97
+#: front/src/views/auth/Signup.vue:37
 msgctxt "*/Signup/Title"
 msgid "Sign Up"
 msgstr "Registreren"
 
+#: front/src/components/Home.vue:107
+msgctxt "Content/Home/Paragraph"
+msgid "Sign up now to keep a track of your favorites, create playlists, discover new content and much more!"
+msgstr ""
+
 #: front/src/components/manage/users/UsersTable.vue:40
 msgctxt "Content/Admin/Table.Label/Short, Noun (Value is a date)"
 msgid "Sign-up"
 msgstr "Registreren"
 
-#: front/src/components/mixins/Translations.vue:57
-#: front/src/views/admin/moderation/AccountsDetail.vue:197
-#: front/src/components/mixins/Translations.vue:58
+#: front/src/components/mixins/Translations.vue:69
+#: front/src/views/admin/moderation/AccountsDetail.vue:198
+#: front/src/components/mixins/Translations.vue:70
 msgctxt "Content/Admin/Table.Label/Noun"
 msgid "Sign-up date"
 msgstr "Geregistreerd op"
 
-#: front/src/components/manage/library/UploadsTable.vue:65
-#: front/src/views/admin/library/UploadDetail.vue:219
-msgctxt "Content/*/*/Noun"
-msgid "Size"
-msgstr "Grootte"
-
 #: front/src/components/library/FileUpload.vue:94
 #: front/src/components/library/TrackDetail.vue:39
-#: front/src/components/mixins/Translations.vue:54
+#: front/src/components/manage/library/UploadsTable.vue:65
+#: front/src/components/mixins/Translations.vue:66
+#: front/src/views/admin/library/UploadDetail.vue:219
 #: front/src/views/content/libraries/FilesTable.vue:61
-#: front/src/components/mixins/Translations.vue:55
-msgctxt "Content/Library/*/in MB"
+#: front/src/components/mixins/Translations.vue:67
+msgctxt "Content/*/*/Noun"
 msgid "Size"
 msgstr "Grootte"
 
@@ -4072,7 +4402,7 @@ msgctxt "Content/Library/Label"
 msgid "Skipped files"
 msgstr "Overgeslagen bestanden"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:89
+#: front/src/views/admin/moderation/DomainsDetail.vue:126
 msgctxt "Content/Moderation/Table.Label"
 msgid "Software"
 msgstr ""
@@ -4088,88 +4418,66 @@ msgctxt "Content/*/Paragraph"
 msgid "Sorry, the page you asked for does not exist:"
 msgstr "Helaas, de opgevraagde pagina bestaat niet:"
 
-#: front/src/components/Footer.vue:49
+#: front/src/components/Footer.vue:57
 msgctxt "Footer/*/List item.Link"
 msgid "Source code"
 msgstr "Broncode"
 
 #: front/src/components/auth/Profile.vue:23
-#: front/src/components/manage/users/UsersTable.vue:70
+#: front/src/components/manage/users/UsersTable.vue:71
 msgctxt "Content/Profile/User role"
 msgid "Staff member"
 msgstr "Staflid"
 
-#: front/src/components/audio/PlayButton.vue:23
+#: front/src/components/audio/PlayButton.vue:27
 #: src/components/radios/Button.vue:4
 #, fuzzy
 msgctxt "*/Queue/Button.Label/Short, Verb"
 msgid "Start radio"
 msgstr "Radio stoppen"
 
-#: front/src/views/admin/Settings.vue:86
-msgctxt "Content/Admin/Menu"
+#: front/src/components/About.vue:170 src/components/Home.vue:53
+#: front/src/views/admin/Settings.vue:87
+#, fuzzy
+msgctxt "Content/Home/Header"
 msgid "Statistics"
 msgstr "Statistieken"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:490
+#: front/src/views/admin/moderation/AccountsDetail.vue:510
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this account"
-msgstr ""
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this account"
+msgstr "Statistieken worden berekend op basis van de activiteit en media op je server, en vertegenwoordigen niet de activiteit voor dit account"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:371
+#: front/src/views/admin/moderation/DomainsDetail.vue:418
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this domain"
-msgstr ""
-
-#: front/src/views/admin/library/AlbumDetail.vue:329
-#: front/src/views/admin/library/ArtistDetail.vue:328
-#: front/src/views/admin/library/LibraryDetail.vue:316
-#: front/src/views/admin/library/TrackDetail.vue:371
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this domain"
+msgstr "Statistieken worden berekend op basis van de activiteit en media op je server, en vertegenwoordigen niet de activiteit voor dit domein"
+
+#: front/src/views/admin/library/AlbumDetail.vue:346
+#: front/src/views/admin/library/ArtistDetail.vue:345
+#: front/src/views/admin/library/LibraryDetail.vue:356
+#: front/src/views/admin/library/TagDetail.vue:210
+#: front/src/views/admin/library/TrackDetail.vue:389
 #: front/src/views/admin/library/UploadDetail.vue:335
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this object"
-msgstr ""
-
-#: front/src/views/admin/moderation/DomainsDetail.vue:115
-msgctxt "Content/Moderation/Table.Label (Value is Error message)"
-msgid "Status"
-msgstr "Status"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this object"
+msgstr "Statistieken worden berekend op basis van de activiteit en media op je server, en vertegenwoordigen niet de activiteit voor dit object"
 
 #: front/src/components/library/FileUpload.vue:95
-msgctxt "Content/Library/Table.Label (Value is Uploading/Uploaded/Error)"
-msgid "Status"
-msgstr "Status"
-
-#: front/src/views/content/libraries/Detail.vue:28
-msgctxt "Content/Library.Federation/Table.Label (Value is Approved/Rejected)"
-msgid "Status"
-msgstr "Status"
-
+#: front/src/components/manage/library/EditsCardList.vue:12
+#: front/src/components/manage/moderation/ReportCard.vue:57
 #: front/src/components/manage/users/InvitationsTable.vue:17
 #: front/src/components/manage/users/InvitationsTable.vue:39
-msgctxt "Content/Admin/*/Noun (Value is Used/Not used)"
-msgid "Status"
-msgstr "Status"
-
 #: front/src/components/manage/users/UsersTable.vue:43
-msgctxt "Content/Admin/Table.Label/Noun (Value is Regular user/Admin)"
-msgid "Status"
-msgstr "Status"
-
-#: front/src/components/manage/library/EditsCardList.vue:12
-msgctxt ""
-"Content/Search/Dropdown.Label (Value is All/Pending "
-"review/Approved/Rejected)"
+#: front/src/views/admin/moderation/DomainsDetail.vue:152
+#: front/src/views/admin/moderation/ReportsList.vue:14
+#: front/src/views/content/libraries/Detail.vue:28
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Status"
 msgstr "Status"
 
-#: front/src/components/Sidebar.vue:174 src/components/radios/Button.vue:3
+#: front/src/components/Sidebar.vue:178 src/components/radios/Button.vue:3
 msgctxt "*/Player/Button.Label/Short, Verb"
 msgid "Stop radio"
 msgstr "Radio stoppen"
@@ -4179,7 +4487,7 @@ msgctxt "*/*/Button.Label/Verb"
 msgid "Submit"
 msgstr "Indienen"
 
-#: front/src/components/library/EditForm.vue:98
+#: front/src/components/library/EditForm.vue:110
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Submit and apply edit"
 msgstr ""
@@ -4190,12 +4498,24 @@ msgctxt "Content/Library/Button.Label"
 msgid "Submit another edit"
 msgstr "Nóg een verzoek indienen"
 
-#: front/src/components/library/EditForm.vue:99
+#: front/src/components/moderation/ReportModal.vue:64
+#, fuzzy
+msgctxt "Popup/*/Button.Label"
+msgid "Submit report"
+msgstr "Indienen"
+
+#: front/src/components/library/EditForm.vue:111
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Submit suggestion"
 msgstr ""
 
-#: front/src/views/admin/Settings.vue:85
+#: front/src/components/manage/moderation/ReportCard.vue:17
+#, fuzzy
+msgctxt "Content/Moderation/*"
+msgid "Submitted by"
+msgstr "Indienen"
+
+#: front/src/views/admin/Settings.vue:86
 msgctxt "Content/Admin/Menu"
 msgid "Subsonic"
 msgstr "Subsonic"
@@ -4235,14 +4555,19 @@ msgctxt "Content/Library/Tab.Title/Short"
 msgid "Summary"
 msgstr "Samenvatting"
 
-#: front/src/components/library/EditForm.vue:87
+#: front/src/components/library/EditForm.vue:99
 msgctxt "*/*/*"
 msgid "Summary (optional)"
 msgstr ""
 
-#: front/src/components/Footer.vue:39
+#: front/src/components/Footer.vue:47
 msgctxt "Footer/*/Listitem.Link"
 msgid "Support forum"
+msgstr "Support-forum"
+
+#: front/src/views/Notifications.vue:10
+msgctxt "Content/Notifications/Header"
+msgid "Support this Funkwhale pod"
 msgstr ""
 
 #: front/src/components/library/FileUpload.vue:85
@@ -4254,49 +4579,65 @@ msgstr ""
 #, fuzzy
 msgctxt "Content/Playlist/Paragraph"
 msgid "Syncing changes to server…"
-msgstr "Bezig met synchroniseren van wijzigingen naar server..."
+msgstr "Bezig met synchroniseren van wijzigingen naar server…"
 
-#: front/src/components/audio/EmbedWizard.vue:25
-#: front/src/components/common/CopyInput.vue:3
-msgctxt "Content/*/Paragraph"
-msgid "Text copied to clipboard!"
-msgstr "Tekst gekopieerd naar het klembord!"
+#: front/src/components/audio/SearchBar.vue:35
+msgctxt "*/*/*/Noun"
+msgid "Tag"
+msgstr ""
 
-#: front/src/components/Home.vue:26
-msgctxt "Content/Home/Paragraph"
-msgid ""
-"That's simple: we loved Grooveshark and we want to build something even "
-"better."
+#: front/src/views/admin/library/TagDetail.vue:61
+#, fuzzy
+msgctxt "Content/Moderation/Title"
+msgid "Tag data"
+msgstr "Naam van nummer"
+
+#: front/src/components/library/Albums.vue:23
+#: src/components/library/Artists.vue:15
+#: front/src/views/admin/library/Base.vue:23
+#: src/views/admin/library/TagsList.vue:24 front/src/edits.js:24
+#: src/edits.js:50 src/edits.js:91 src/entities.js:120
+msgctxt "*/*/*/Noun"
+msgid "Tags"
 msgstr ""
-"Het zit zo: we waren fan van Grooveshark en wilden iets nóg beters bouwen."
 
-#: front/src/views/admin/library/AlbumDetail.vue:75
-#, fuzzy
+#: front/src/components/mixins/Translations.vue:44
+#: front/src/components/mixins/Translations.vue:45
+#, fuzzy
+msgctxt "Content/Moderation/Dropdown"
+msgid "Takedown request"
+msgstr "Volgverzoek intrekken"
+
+#: front/src/components/About.vue:35 src/components/About.vue:61
+msgctxt "Content/About/Header"
+msgid "Terms and privacy policy"
+msgstr ""
+
+#: front/src/components/audio/EmbedWizard.vue:35
+#: front/src/components/common/CopyInput.vue:3
+msgctxt "Content/*/Paragraph"
+msgid "Text copied to clipboard!"
+msgstr "Tekst gekopieerd naar het klembord!"
+
+#: front/src/views/admin/library/AlbumDetail.vue:81
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The album will be removed, as well as associated uploads, tracks, favorites "
-"and listening history. This action is irreversible."
-msgstr ""
-"De verzameling en alle bijbehorende nummers worden verwijderd. Dit kan niet "
-"ongedaan worden gemaakt."
+msgid "The album will be removed, as well as associated uploads, tracks, favorites and listening history. This action is irreversible."
+msgstr "Het album en de bijbehorende nummers, favorieten en luisterhistorie worden verwijderd. Dit kan niet ongedaan gemaakt worden."
 
 #: front/src/components/auth/Authorize.vue:39
 msgctxt "Content/Auth/Paragraph"
 msgid "The application is also requesting the following unknown permissions:"
 msgstr ""
 
-#: front/src/views/admin/library/ArtistDetail.vue:74
+#: front/src/views/admin/library/ArtistDetail.vue:79
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The artist will be removed, as well as associated uploads, tracks, albums, "
-"favorites and listening history. This action is irreversible."
+msgid "The artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible."
 msgstr ""
 
-#: front/src/components/Footer.vue:53
+#: front/src/components/Footer.vue:61
 msgctxt "Footer/*/List item.Link"
 msgid "The funkwhale logo was kindly designed and provided by Francis Gading."
-msgstr ""
-"Het Funkwhale-logo is met liefde ontworpen en gemaakt door Francis Gading."
+msgstr "Funkwhale-logo met liefde ontworpen door Francis Gading."
 
 #: front/src/components/SetInstanceModal.vue:8
 msgctxt "Popup/Instance/Error message.List item"
@@ -4304,29 +4645,18 @@ msgid "The given address is not a Funkwhale server"
 msgstr ""
 
 #: front/src/views/content/libraries/Form.vue:34
-#, fuzzy
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"The library and all its tracks will be deleted. This can not be undone."
-msgstr ""
-"De verzameling en alle bijbehorende nummers worden verwijderd. Dit kan niet "
-"ongedaan worden gemaakt."
+msgid "The library and all its tracks will be deleted. This can not be undone."
+msgstr "De bibliotheek en al haar nummers worden verwijderd. Dit kan niet ongedaan gemaakt worden."
 
 #: front/src/views/admin/library/LibraryDetail.vue:61
-#, fuzzy
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The library will be removed, as well as associated uploads, and follows. "
-"This action is irreversible."
-msgstr ""
-"De verzameling en alle bijbehorende nummers worden verwijderd. Dit kan niet "
-"ongedaan worden gemaakt."
+msgid "The library will be removed, as well as associated uploads, and follows. This action is irreversible."
+msgstr "De bibliotheek zal worden verwijderd, samen met alle bijbehorende nummers en volgers. Dit kan niet ongedaan gemaakt worden."
 
 #: front/src/components/library/ImportStatusModal.vue:140
 msgctxt "Popup/Import/Error.Label"
-msgid ""
-"The metadata included in the file is invalid or some mandatory fields are "
-"missing."
+msgid "The metadata included in the file is invalid or some mandatory fields are missing."
 msgstr ""
 
 #: front/src/components/library/FileUpload.vue:38
@@ -4340,14 +4670,16 @@ msgctxt "Sidebar/Player/Error message.Paragraph"
 msgid "The next track will play automatically in a few seconds…"
 msgstr ""
 
-#: front/src/components/Home.vue:116
-msgctxt "Content/Home/List item"
-msgid ""
-"The plaform is free and open-source, you can install it and modify it "
-"without worries"
+#: front/src/components/manage/moderation/NotesThread.vue:27
+#, fuzzy
+msgctxt "Content/Moderation/Paragraph"
+msgid "The note will be removed. This action is irreversible."
+msgstr "De content zal worden verwijderd. Dit kan niet ongedaan gemaakt worden."
+
+#: front/src/components/manage/moderation/ReportCard.vue:120
+msgctxt "Content/Moderation/Message"
+msgid "The object associated with this report was deleted."
 msgstr ""
-"Het platform is vrij en open source; je kunt het zorgeloos installeren en "
-"aanpassen"
 
 #: front/src/components/playlists/Form.vue:14
 #, fuzzy
@@ -4362,58 +4694,49 @@ msgstr ""
 
 #: front/src/components/federation/FetchButton.vue:13
 msgctxt "Popup/*/Message.Content"
-msgid ""
-"The remote server answered, but returned data was unsupported by Funkwhale."
+msgid "The remote server answered, but returned data was unsupported by Funkwhale."
 msgstr ""
 
 #: front/src/components/federation/FetchButton.vue:44
 msgctxt "*/*/Error"
-msgid "The remote server didn't answered fast enough"
+msgid "The remote server didn't respond quickly enough"
 msgstr ""
 
 #: front/src/components/federation/FetchButton.vue:50
 msgctxt "*/*/Error"
-msgid "The return server returned invalid JSON or JSON-LD data"
+msgid "The remote server returned invalid JSON or JSON-LD data"
 msgstr ""
 
 #: front/src/components/manage/library/AlbumsTable.vue:189
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected albums will be removed, as well as associated tracks, uploads, "
-"favorites and listening history. This action is irreversible."
+msgid "The selected albums will be removed, as well as associated tracks, uploads, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/components/manage/library/ArtistsTable.vue:179
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected artist will be removed, as well as associated uploads, tracks, "
-"albums, favorites and listening history. This action is irreversible."
+msgid "The selected artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/components/manage/library/LibrariesTable.vue:206
+msgctxt "Popup/*/Paragraph"
+msgid "The selected library will be removed, as well as associated uploads and follows. This action is irreversible."
+msgstr "De verzameling zal worden verwijderd, samen met de bijbehorende nummers en volgers. Dit kan niet ongedaan gemaakt worden."
+
+#: front/src/components/manage/library/TagsTable.vue:180
 #, fuzzy
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected library will be removed, as well as associated uploads and "
-"follows. This action is irreversible."
-msgstr ""
-"De verzameling en alle bijbehorende nummers worden verwijderd. Dit kan niet "
-"ongedaan worden gemaakt."
+msgid "The selected tag will be removed and unlinked with existing content, if any. This action is irreversible."
+msgstr "De geselecteerde content zal worden verwijderd. Dit kan niet ongedaan gemaakt worden."
 
 #: front/src/components/manage/library/TracksTable.vue:189
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected tracks will be removed, as well as associated uploads, "
-"favorites and listening history. This action is irreversible."
+msgid "The selected tracks will be removed, as well as associated uploads, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/components/manage/library/UploadsTable.vue:256
-#, fuzzy
 msgctxt "Popup/*/Paragraph"
 msgid "The selected upload will be removed. This action is irreversible."
-msgstr ""
-"De verzameling en alle bijbehorende nummers worden verwijderd. Dit kan niet "
-"ongedaan worden gemaakt."
+msgstr "De geselecteerde content zal worden verwijderd. Dit kan niet ongedaan gemaakt worden."
 
 #: front/src/components/SetInstanceModal.vue:7
 msgctxt "Popup/Instance/Error message.List item"
@@ -4423,16 +4746,18 @@ msgstr ""
 #: front/src/components/auth/SubsonicTokenForm.vue:4
 msgctxt "Content/Settings/Paragraph"
 msgid "The Subsonic API is not available on this Funkwhale instance."
-msgstr "De Subsonic-API is niet beschikbaar op deze instantie."
+msgstr "De Subsonic-API is niet beschikbaar op deze server."
 
 #: front/src/components/library/EditCard.vue:96
-#, fuzzy
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"The suggestion will be completely removed, this action is irreversible."
-msgstr ""
-"De verzameling en alle bijbehorende nummers worden verwijderd. Dit kan niet "
-"ongedaan worden gemaakt."
+msgid "The suggestion will be completely removed, this action is irreversible."
+msgstr "De suggestie zal worden verwijderd. Dit kan niet ongedaan gemaakt worden."
+
+#: front/src/views/admin/library/TagDetail.vue:44
+#, fuzzy
+msgctxt "Content/Moderation/Paragraph"
+msgid "The tag will be removed and unlinked from any existing entity. This action is irreversible."
+msgstr "De content zal worden verwijderd. Dit kan niet ongedaan gemaakt worden."
 
 #: front/src/components/playlists/PlaylistModal.vue:34
 #, fuzzy
@@ -4445,20 +4770,15 @@ msgctxt "Sidebar/Player/Error message.Title"
 msgid "The track cannot be loaded"
 msgstr ""
 
-#: front/src/views/admin/library/TrackDetail.vue:74
+#: front/src/views/admin/library/TrackDetail.vue:80
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The track will be removed, as well as associated uploads, favorites and "
-"listening history. This action is irreversible."
+msgid "The track will be removed, as well as associated uploads, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/views/admin/library/UploadDetail.vue:68
-#, fuzzy
 msgctxt "Content/Moderation/Paragraph"
 msgid "The upload will be removed. This action is irreversible."
-msgstr ""
-"De verzameling en alle bijbehorende nummers worden verwijderd. Dit kan niet "
-"ongedaan worden gemaakt."
+msgstr "De content zal worden verwijderd. Dit kan niet ongedaan gemaakt worden."
 
 #: front/src/components/library/FileUpload.vue:42
 msgctxt "Content/Library/List item"
@@ -4469,8 +4789,7 @@ msgstr "De geüploade bestanden zijn in de formaten OGG, FLAC of MP3"
 #, fuzzy
 msgctxt "Content/Library/Paragraph"
 msgid "There are various ways to grab new content and make it available here."
-msgstr ""
-"We hebben verscheidene manieren om nieuwe nummers beschikbaar te maken."
+msgstr "We hebben verscheidene manieren om nieuwe nummers beschikbaar te maken."
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:66
 msgctxt "Popup/Moderation/Paragraph"
@@ -4487,22 +4806,36 @@ msgctxt "Content/Artist/Paragraph"
 msgid "This artist is present in the following libraries:"
 msgstr "Deze artiest komt voor in de volgende verzamelingen:"
 
+#: front/src/components/manage/moderation/DomainsTable.vue:169
+#, fuzzy
+msgctxt "Content/Moderation/Popup"
+msgid "This domain is present in your allow-list"
+msgstr "Deze artiest komt voor in de volgende verzamelingen:"
+
 #: front/src/views/admin/moderation/AccountsDetail.vue:84
-#: front/src/views/admin/moderation/DomainsDetail.vue:48
+#: front/src/views/admin/moderation/DomainsDetail.vue:76
 msgctxt "Content/Moderation/Card.Title"
 msgid "This domain is subject to specific moderation rules"
 msgstr ""
 
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:16
+msgctxt "Content/Moderation/Card.Title"
+msgid "This entity is subject to specific moderation rules"
+msgstr ""
+
 #: front/src/views/content/Home.vue:9
-#, fuzzy
 msgctxt "Content/Library/Paragraph"
 msgid "This instance offers up to %{quota} of storage space for every user."
-msgstr "Deze instantie biedt tot %{ quota } opslagruimte voor elke gebruiker."
+msgstr "Deze server biedt tot %{ quota } opslagruimte aan elke gebruiker."
+
+#: front/src/components/auth/Settings.vue:300
+msgctxt "Popup/Settings/Paragraph"
+msgid "This is irreversible and will permanently remove your data from our servers. You will we immediatly logged out."
+msgstr ""
 
 #: front/src/components/auth/Settings.vue:165
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"This is the list of applications that have access to your account data."
+msgid "This is the list of applications that have access to your account data."
 msgstr ""
 
 #: front/src/components/auth/Settings.vue:218
@@ -4516,21 +4849,16 @@ msgid "This is you!"
 msgstr "Dit ben jij!"
 
 #: front/src/views/content/libraries/Form.vue:73
-#, fuzzy
 msgctxt "Content/Library/Input.Placeholder"
 msgid "This library contains my personal music, I hope you like it."
-msgstr ""
-"Deze verzameling bevat mijn persoonlijke muziek. Ik hoop dat je ervan zult "
-"genieten!"
+msgstr "Deze bibliotheek bevat mijn persoonlijke muziek. Ik hoop dat het je smaak is."
 
-#: front/src/views/content/remote/Card.vue:141
+#: front/src/views/content/remote/Card.vue:169
 msgctxt "Content/Library/Card.Help text"
-msgid ""
-"This library is private and your approval from its owner is needed to access"
-" its content"
+msgid "This library is private and your approval from its owner is needed to access its content"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:142
+#: front/src/views/content/remote/Card.vue:170
 msgctxt "Content/Library/Card.Help text"
 msgid "This library is public and you can access its content freely"
 msgstr ""
@@ -4538,12 +4866,8 @@ msgstr ""
 #: front/src/components/common/ActionTable.vue:47
 #, fuzzy
 msgctxt "Modal/*/Paragraph"
-msgid ""
-"This may affect a lot of elements or have irreversible consequences, please "
-"double check this is really what you want."
-msgstr ""
-"Dit kan gevolgen hebben voor veel elementen. Controleer of je dit écht wilt "
-"doen."
+msgid "This may affect a lot of elements or have irreversible consequences, please double check this is really what you want."
+msgstr "Dit kan gevolgen hebben voor veel elementen. Controleer of je dit écht wilt doen."
 
 #: front/src/components/library/AlbumEdit.vue:8
 #: front/src/components/library/ArtistEdit.vue:8
@@ -4552,24 +4876,27 @@ msgctxt "Content/*/Message"
 msgid "This object is managed by another server, you cannot edit it."
 msgstr ""
 
+#: front/src/components/Home.vue:87
+msgctxt "Content/Home/Paragraph"
+msgid "This pod runs Funkwhale, a community-driven project that lets you listen and share music and audio within a decentralized, open network."
+msgstr ""
+
 #: front/src/components/library/FileUpload.vue:51
 msgctxt "Content/Library/Paragraph"
 msgid "This reference will be used to group imported files together."
-msgstr ""
-"Deze referentie wordt gebruikt om geïmporteerde bestanden te groeperen."
+msgstr "Deze referentie wordt gebruikt om geïmporteerde bestanden te groeperen."
 
 #: front/src/components/mixins/Translations.vue:33
 #: front/src/components/mixins/Translations.vue:34
 msgctxt "Content/Library/Help text"
-msgid "This track could not be processed, please it is tagged correctly"
+msgid "This track could not be processed, please make sure it is tagged correctly"
 msgstr ""
 
 #: front/src/components/mixins/Translations.vue:29
 #: front/src/components/mixins/Translations.vue:30
 #, fuzzy
 msgctxt "Content/Library/Help text"
-msgid ""
-"This track has been uploaded, but hasn't been processed by the server yet"
+msgid "This track has been uploaded, but hasn't been processed by the server yet"
 msgstr "Nummer is geüpload, maar nog niet verwerkt door de server"
 
 #: front/src/components/mixins/Translations.vue:25
@@ -4579,7 +4906,7 @@ msgctxt "Content/Library/Help text"
 msgid "This track is already present in one of your libraries"
 msgstr "Nummer is al aanwezig in één van je verzamelingen"
 
-#: front/src/components/audio/PlayButton.vue:85
+#: front/src/components/audio/PlayButton.vue:103
 msgctxt "*/Queue/Button/Title"
 msgid "This track is not available in any library you have access to"
 msgstr ""
@@ -4589,91 +4916,85 @@ msgctxt "Content/Track/Paragraph"
 msgid "This track is present in the following libraries:"
 msgstr "Dit nummer komt voor in de volgende verzamelingen:"
 
-#: front/src/views/playlists/Detail.vue:38
+#: front/src/views/playlists/Detail.vue:46
 msgctxt "Popup/Playlist/Paragraph"
 msgid "This will completely delete this playlist and cannot be undone."
-msgstr ""
-"De afspeellijst wordt volledig verwijderd; dit kan niet ongedaan worden "
-"gemaakt."
+msgstr "De afspeellijst wordt volledig verwijderd; dit kan niet ongedaan worden gemaakt."
 
 #: front/src/views/radios/Detail.vue:27
 msgctxt "Popup/Radio/Paragraph"
 msgid "This will completely delete this radio and cannot be undone."
-msgstr ""
-"De radio wordt volledig verwijderd; dit kan niet ongedaan worden gemaakt."
+msgstr "De radio wordt volledig verwijderd; dit kan niet ongedaan worden gemaakt."
 
-#: front/src/components/auth/SubsonicTokenForm.vue:50
+#: front/src/components/auth/SubsonicTokenForm.vue:55
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will completely disable access to the Subsonic API using from account."
+msgid "This will completely disable access to the Subsonic API using from account."
 msgstr "De toegang tot de Subsonic-API vanaf dit account wordt uitgeschakeld."
 
-#: front/src/components/auth/SubsonicTokenForm.vue:35
+#: front/src/components/manage/moderation/ReportCard.vue:359
+msgctxt "Content/Moderation/Popup,Paragraph"
+msgid "This will delete the object associated with this report and mark the report as resolved. The deletion is irreversible."
+msgstr ""
+
+#: front/src/components/auth/SubsonicTokenForm.vue:40
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will log you out from existing devices that use the current password."
+msgid "This will log you out from existing devices that use the current password."
 msgstr "Je wordt uitgelogd op elk apparaat met het huidige wachtwoord."
 
 #: front/src/components/auth/Settings.vue:253
 #, fuzzy
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will permanently delete the application and all the associated tokens."
-msgstr ""
-"De afspeellijst wordt volledig verwijderd; dit kan niet ongedaan worden "
-"gemaakt."
+msgid "This will permanently delete the application and all the associated tokens."
+msgstr "De afspeellijst wordt volledig verwijderd; dit kan niet ongedaan worden gemaakt."
 
 #: front/src/components/auth/Settings.vue:194
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will prevent this application from accessing the service on your "
-"behalf."
+msgid "This will prevent this application from accessing the service on your behalf."
 msgstr ""
 
 #: front/src/components/playlists/Editor.vue:54
 msgctxt "Popup/Playlist/Paragraph"
 msgid "This will remove all tracks from this playlist and cannot be undone."
-msgstr ""
-"Alle nummers worden verwijderd uit de afspeellijst; dit kan niet ongedaan "
-"worden gemaakt."
-
-#: front/src/views/admin/library/AlbumDetail.vue:99
-#: front/src/views/admin/library/TrackDetail.vue:98 src/edits.js:21
-#: src/edits.js:39
-msgctxt "*/*/*/Noun"
-msgid "Title"
-msgstr "Titel"
+msgstr "Alle nummers worden verwijderd uit de afspeellijst; dit kan niet ongedaan worden gemaakt."
 
 #: front/src/components/audio/track/Table.vue:7
-#: front/src/views/content/libraries/FilesTable.vue:55
-msgctxt "Content/Track/*/Noun"
-msgid "Title"
-msgstr "Titel"
-
 #: front/src/components/manage/library/AlbumsTable.vue:39
 #: front/src/components/manage/library/TracksTable.vue:39
-msgctxt "*/*/*"
+#: front/src/views/admin/library/AlbumDetail.vue:105
+#: front/src/views/admin/library/TrackDetail.vue:104
+#: front/src/views/content/libraries/FilesTable.vue:55 src/edits.js:36
+#: front/src/edits.js:62
+msgctxt "*/*/*/Noun"
 msgid "Title"
 msgstr "Titel"
 
 #: front/src/components/SetInstanceModal.vue:16
 msgctxt "Popup/Instance/Paragraph"
-msgid ""
-"To continue, please select the Funkwhale instance you want to connect to. "
-"Enter the address directly, or select one of the suggested choices."
+msgid "To continue, please select the Funkwhale instance you want to connect to. Enter the address directly, or select one of the suggested choices."
+msgstr "Selecteer met welke Funkwhale-server je wil verbinden om verder te gaan. Voer zelf de url in, of kies een van de suggesties."
+
+#: front/src/components/ShortcutsModal.vue:148
+#, fuzzy
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle favorite"
+msgstr "1 favoriet"
+
+#: front/src/components/ShortcutsModal.vue:132
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle mute"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:79
+#: front/src/components/ShortcutsModal.vue:136
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Toggle queue looping"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:222
-#: front/src/views/admin/library/ArtistDetail.vue:211
-#: front/src/views/admin/library/LibraryDetail.vue:200
-#: front/src/views/admin/library/TrackDetail.vue:274
-#: front/src/views/admin/moderation/AccountsDetail.vue:317
-#: front/src/views/admin/moderation/DomainsDetail.vue:225
+#: front/src/views/admin/library/AlbumDetail.vue:238
+#: front/src/views/admin/library/ArtistDetail.vue:226
+#: front/src/views/admin/library/LibraryDetail.vue:219
+#: front/src/views/admin/library/TrackDetail.vue:290
+#: front/src/views/admin/moderation/AccountsDetail.vue:329
+#: front/src/views/admin/moderation/DomainsDetail.vue:262
 msgctxt "Content/Moderation/Table.Label"
 msgid "Total size"
 msgstr ""
@@ -4683,21 +5004,19 @@ msgctxt "Content/Library/Card.Help text"
 msgid "Total size of the files in this library"
 msgstr "Totale grootte van de bestanden in deze verzameling"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:105
+#: front/src/views/admin/moderation/DomainsDetail.vue:142
 #, fuzzy
 msgctxt "Content/*/*"
 msgid "Total users"
 msgstr "Niet gebruikt"
 
-#: front/src/views/admin/library/UploadDetail.vue:199
-msgctxt "*/*/*"
-msgid "Track"
-msgstr "Nummer"
-
-#: front/src/components/audio/SearchBar.vue:27
-#: front/src/components/library/TrackBase.vue:173
+#: front/src/components/audio/SearchBar.vue:34
+#: front/src/components/library/TrackBase.vue:188
 #: front/src/components/library/TrackDetail.vue:128
 #: front/src/components/metadata/Search.vue:138
+#: src/components/mixins/Report.vue:28
+#: front/src/views/admin/library/UploadDetail.vue:199
+#: front/src/components/mixins/Report.vue:29
 msgctxt "*/*/*/Noun"
 msgid "Track"
 msgstr "Nummer"
@@ -4707,7 +5026,7 @@ msgctxt "Content/Library/Card/Short"
 msgid "Track #%{ id } - %{ name }"
 msgstr ""
 
-#: front/src/views/admin/library/TrackDetail.vue:91
+#: front/src/views/admin/library/TrackDetail.vue:97
 #, fuzzy
 msgctxt "Content/Moderation/Title"
 msgid "Track data"
@@ -4718,30 +5037,28 @@ msgctxt "Content/Track/Title/Noun"
 msgid "Track information"
 msgstr "Nummerinformatie"
 
-#: front/src/components/mixins/Translations.vue:50
-#: front/src/components/mixins/Translations.vue:51
+#: front/src/components/mixins/Translations.vue:60
+#: front/src/components/mixins/Translations.vue:61
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Track name"
 msgstr "Naam van nummer"
 
-#: front/src/components/instance/Stats.vue:54
 #: front/src/components/library/AlbumDetail.vue:19
-#: front/src/components/playlists/PlaylistModal.vue:47
-#: front/src/views/admin/moderation/AccountsDetail.vue:362
-#: front/src/views/admin/moderation/DomainsDetail.vue:274
-#: front/src/views/content/Base.vue:8 src/views/content/libraries/Detail.vue:8
-#: front/src/views/playlists/Detail.vue:51 src/views/radios/Detail.vue:34
-msgctxt "*/*/*/Noun"
-msgid "Tracks"
-msgstr "Nummers"
-
+#: front/src/components/library/TagDetail.vue:36
 #: front/src/components/manage/library/AlbumsTable.vue:42
 #: front/src/components/manage/library/ArtistsTable.vue:42
-#: front/src/views/admin/library/AlbumDetail.vue:252
-#: front/src/views/admin/library/ArtistDetail.vue:251
+#: front/src/components/manage/library/TagsTable.vue:44
+#: front/src/components/playlists/PlaylistModal.vue:47
+#: front/src/views/admin/library/AlbumDetail.vue:268
+#: front/src/views/admin/library/ArtistDetail.vue:266
 #: front/src/views/admin/library/Base.vue:14
-#: front/src/views/admin/library/LibraryDetail.vue:229
+#: front/src/views/admin/library/LibraryDetail.vue:248
+#: front/src/views/admin/library/TagDetail.vue:143
 #: front/src/views/admin/library/TracksList.vue:24
+#: front/src/views/admin/moderation/AccountsDetail.vue:374
+#: front/src/views/admin/moderation/DomainsDetail.vue:311
+#: front/src/views/content/Base.vue:8 src/views/content/libraries/Detail.vue:8
+#: front/src/views/playlists/Detail.vue:76 src/views/radios/Detail.vue:34
 msgctxt "*/*/*"
 msgid "Tracks"
 msgstr "Nummers"
@@ -4751,16 +5068,6 @@ msgctxt "Content/Artist/Title"
 msgid "Tracks by this artist"
 msgstr "Nummers van deze artiest"
 
-#: front/src/components/instance/Stats.vue:25
-msgctxt "Content/About/Paragraph/Unit"
-msgid "Tracks favorited"
-msgstr "Nummers in favorieten"
-
-#: front/src/components/instance/Stats.vue:19
-msgctxt "Content/About/Paragraph/Unit"
-msgid "tracks listened"
-msgstr "beluisterde nummers"
-
 #: front/src/components/library/radios/Filter.vue:44
 #, fuzzy
 msgctxt "Popup/Radio/Title/Noun"
@@ -4768,64 +5075,58 @@ msgid "Tracks matching filter"
 msgstr "Kloppend nummer"
 
 #: front/src/components/library/TrackDetail.vue:57
+#: front/src/components/manage/moderation/ReportCard.vue:134
 #: front/src/views/admin/library/UploadDetail.vue:250
+#: front/src/views/admin/moderation/AccountsDetail.vue:181
 msgctxt "Content/Track/Table.Label/Noun"
 msgid "Type"
 msgstr "Type"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:180
-msgctxt "Content/Moderation/Table.Label/Noun"
-msgid "Type"
-msgstr "Type"
-
 #: front/src/components/manage/moderation/AccountsTable.vue:44
-#: front/src/components/manage/moderation/DomainsTable.vue:42
+#: front/src/components/manage/moderation/DomainsTable.vue:50
 msgctxt "Content/Moderation/Table.Label/Short"
 msgid "Under moderation rule"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:109
-#: src/views/content/remote/Card.vue:114
+#: front/src/components/ShortcutsModal.vue:68
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Unfocus searchbar"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:122
+#: src/views/content/remote/Card.vue:127
 msgctxt "*/Library/Button.Label/Verb"
 msgid "Unfollow"
 msgstr "Ontvolgen"
 
-#: front/src/views/content/remote/Card.vue:110
+#: front/src/views/content/remote/Card.vue:123
 msgctxt "Popup/Library/Title"
 msgid "Unfollow this library?"
 msgstr "Wil je deze verzameling ontvolgen?"
 
-#: front/src/components/About.vue:17
-#, fuzzy
-msgctxt "Content/About/Paragraph"
-msgid ""
-"Unfortunately, the owners of this instance did not yet take the time to "
-"complete this page."
-msgstr ""
-"Helaas is deze pagina nog niet ingevuld door de beheerders van deze "
-"instantie."
-
 #: front/src/components/federation/FetchButton.vue:54
 #: front/src/components/federation/FetchButton.vue:55
-msgctxt "*/*/Error"
-msgid "Unknowkn error"
-msgstr ""
-
 #: front/src/components/library/ImportStatusModal.vue:144
-msgctxt "Popup/Import/Error.Label"
-msgid "Unkwown error"
+msgctxt "*/*/Error"
+msgid "Unknown error"
 msgstr ""
 
-#: front/src/components/Home.vue:37
-msgctxt "Content/Home/Title"
-msgid "Unlimited music"
-msgstr "Ongelimiteerd luisteren naar muziek"
-
-#: front/src/components/audio/Player.vue:630
+#: front/src/components/audio/Player.vue:656
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Unmute"
 msgstr "Ontdempen"
 
+#: front/src/components/manage/moderation/ReportCard.vue:225
+msgctxt "Content/*/Button.Label"
+msgid "Unresolve"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:67
+#: front/src/views/admin/moderation/ReportsList.vue:23
+msgctxt "Content/*/*/Short"
+msgid "Unresolved"
+msgstr ""
+
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:57
 #, fuzzy
 msgctxt "Content/Moderation/Card.Button.Label/Verb"
@@ -4893,12 +5194,8 @@ msgstr "Uploaddatum"
 #: front/src/components/library/FileUpload.vue:258
 #, fuzzy
 msgctxt "Content/Library/Help text"
-msgid ""
-"Upload denied, ensure the file is not too big and that you have not reached "
-"your quota"
-msgstr ""
-"Upload geweigerd. Zorg ervoor dat het bestand niet te groot is en dat je je "
-"quotum nog niet hebt bereikt."
+msgid "Upload denied, ensure the file is not too big and that you have not reached your quota"
+msgstr "Upload geweigerd. Zorg ervoor dat het bestand niet te groot is en dat je je quotum nog niet hebt bereikt."
 
 #: front/src/components/library/ImportStatusModal.vue:8
 msgctxt "Popup/Import/Message"
@@ -4908,20 +5205,18 @@ msgstr ""
 #: front/src/views/content/Home.vue:7
 #, fuzzy
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Upload music files (MP3, OGG, FLAC, etc.) from your personal library "
-"directly from your browser to enjoy them here."
-msgstr ""
-"Upload je eigen muziekbestanden (MP3, FLAC, OGG) via je browser om er hier "
-"naar te luisteren."
+msgid "Upload music files (MP3, OGG, FLAC, etc.) from your personal library directly from your browser to enjoy them here."
+msgstr "Upload je eigen muziekbestanden (MP3, FLAC, OGG) via je browser om er hier naar te luisteren."
 
 #: front/src/components/library/FileUpload.vue:30
 msgctxt "Content/Library/Title/Verb"
 msgid "Upload new tracks"
 msgstr "Nieuwe nummers uploaden"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:298
-msgctxt "Content/Moderation/Table.Label/Noun"
+#: front/src/components/About.vue:99
+#: front/src/views/admin/moderation/AccountsDetail.vue:309
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Upload quota"
 msgstr "Uploadquotum"
 
@@ -4932,9 +5227,7 @@ msgstr "Upload verlopen; probeer het opnieuw"
 
 #: front/src/components/library/ImportStatusModal.vue:14
 msgctxt "Popup/Import/Message"
-msgid ""
-"Upload was skipped because a similar one is already available in one of your"
-" libraries."
+msgid "Upload was skipped because a similar one is already available in one of your libraries."
 msgstr ""
 
 #: front/src/components/library/ImportStatusModal.vue:11
@@ -4959,60 +5252,56 @@ msgctxt "Content/Library/Table"
 msgid "Uploading…"
 msgstr "Bezig met uploaden"
 
+#: front/src/components/manage/library/LibrariesTable.vue:52
+#: front/src/components/manage/moderation/AccountsTable.vue:41
+#: front/src/components/mixins/Translations.vue:75
+#: front/src/views/admin/library/AlbumDetail.vue:258
+#: front/src/views/admin/library/ArtistDetail.vue:246
 #: front/src/views/admin/library/Base.vue:20
+#: front/src/views/admin/library/LibraryDetail.vue:258
+#: front/src/views/admin/library/TrackDetail.vue:310
 #: front/src/views/admin/library/UploadsList.vue:24
+#: front/src/views/admin/moderation/AccountsDetail.vue:349
+#: front/src/views/admin/moderation/DomainsDetail.vue:281
+#: front/src/components/mixins/Translations.vue:76
 #, fuzzy
 msgctxt "*/*/*"
 msgid "Uploads"
 msgstr "Uploaden"
 
-#: front/src/components/manage/moderation/AccountsTable.vue:41
-#: front/src/components/mixins/Translations.vue:63
-#: front/src/views/admin/library/AlbumDetail.vue:242
-#: front/src/views/admin/library/ArtistDetail.vue:231
-#: front/src/views/admin/library/LibraryDetail.vue:239
-#: front/src/views/admin/library/TrackDetail.vue:294
-#: front/src/views/admin/moderation/AccountsDetail.vue:337
-#: front/src/views/admin/moderation/DomainsDetail.vue:244
-#: front/src/components/mixins/Translations.vue:64
-#, fuzzy
-msgctxt "Content/Moderation/Table.Label/Noun"
-msgid "Uploads"
-msgstr "Uploaden"
-
-#: front/src/components/manage/library/LibrariesTable.vue:52
-#, fuzzy
-msgctxt "Content/*/*/Noun"
-msgid "Uploads"
-msgstr "Uploaden"
-
 #: front/src/components/auth/ApplicationForm.vue:16
 msgctxt "Content/Applications/Help Text"
-msgid ""
-"Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is "
-"not served on the web."
+msgid "Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is not served on the web."
 msgstr ""
 
 #: front/src/components/Footer.vue:16
 msgctxt "Footer/*/List item.Link"
 msgid "Use another instance"
-msgstr "Andere instantie gebruiken"
+msgstr "Andere server gebruiken"
+
+#: front/src/components/Home.vue:146
+msgctxt "Content/Home/Link"
+msgid "Use Funkwhale on other devices with our apps"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:44
+msgctxt "*/*/Field,Help"
+msgid "Use this field to provide additional context to the moderator that will handle your report."
+msgstr ""
 
 #: front/src/views/auth/PasswordReset.vue:12
 msgctxt "Content/Signup/Paragraph"
-msgid ""
-"Use this form to request a password reset. We will send an email to the "
-"given address with instructions to reset your password."
+msgid "Use this form to request a password reset. We will send an email to the given address with instructions to reset your password."
+msgstr "Met dit formulier kun je een nieuw wachtwoord aanvragen. Je ontvangt van ons een e-mail op het door jou ingevoerde aangegeven adres met de instructies om je wachtwoord te herstellen."
+
+#: front/src/components/moderation/ReportModal.vue:18
+msgctxt "*/Moderation/Popup,Paragraph"
+msgid "Use this form to submit a report to our moderation team."
 msgstr ""
-"Met dit formulier kun je een nieuw wachtwoord aanvragen. Je ontvangt van ons"
-" een e-mail op het door jou ingevoerde aangegeven adres met de instructies "
-"om je wachtwoord te herstellen."
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:111
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Use this setting to temporarily enable/disable the policy without completely"
-" removing it."
+msgid "Use this setting to temporarily enable/disable the policy without completely removing it."
 msgstr ""
 
 #: front/src/components/manage/users/InvitationsTable.vue:49
@@ -5020,15 +5309,27 @@ msgctxt "Content/Admin/Table"
 msgid "Used"
 msgstr "Gebruikt"
 
+#: front/src/components/Home.vue:125
+msgctxt "Content/Home/Header"
+msgid "Useful links"
+msgstr ""
+
 #: front/src/views/content/libraries/Detail.vue:26
 msgctxt "Content/Library/Table.Label"
 msgid "User"
 msgstr "Gebruiker"
 
-#: front/src/components/instance/Stats.vue:5
-msgctxt "Content/About/Title/Noun"
-msgid "User activity"
-msgstr "Gebruikersactiviteit"
+#: front/src/components/Home.vue:154
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "User guides"
+msgstr "Gebruikersverzamelingen"
+
+#: front/src/views/admin/Settings.vue:88
+#, fuzzy
+msgctxt "Content/Admin/Menu"
+msgid "User Interface"
+msgstr "Gebruikersnaam"
 
 #: front/src/components/library/AlbumDetail.vue:26
 #: front/src/components/library/ArtistDetail.vue:39
@@ -5042,35 +5343,35 @@ msgctxt "Content/Radio/Title"
 msgid "User radios"
 msgstr "Gebruikersradio's"
 
-#: front/src/components/auth/Signup.vue:19
+#: front/src/components/auth/SignupForm.vue:15
 #: front/src/components/manage/users/UsersTable.vue:37
-#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:71
 #: front/src/views/admin/moderation/AccountsDetail.vue:114
-#: front/src/components/mixins/Translations.vue:60
+#: front/src/components/mixins/Translations.vue:72
 msgctxt "Content/*/*"
 msgid "Username"
 msgstr "Gebruikersnaam"
 
-#: front/src/components/auth/Login.vue:15
+#: front/src/components/auth/LoginForm.vue:11
 msgctxt "Content/Login/Input.Label/Noun"
 msgid "Username or email"
 msgstr "Gebruikersnaam of e-mailadres"
 
-#: front/src/components/instance/Stats.vue:13
-msgctxt "Content/About/Paragraph/Unit"
-msgid "users"
-msgstr "gebruikers"
-
-#: front/src/components/Sidebar.vue:102
-#: front/src/components/manage/moderation/DomainsTable.vue:39
-#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/Sidebar.vue:106
+#: front/src/components/manage/moderation/DomainsTable.vue:47
+#: front/src/components/mixins/Translations.vue:73
 #: src/views/admin/Settings.vue:81 front/src/views/admin/users/Base.vue:5
 #: src/views/admin/users/UsersList.vue:21
-#: front/src/components/mixins/Translations.vue:62
+#: front/src/components/mixins/Translations.vue:74
 msgctxt "*/*/*/Noun"
 msgid "Users"
 msgstr "Gebruikers"
 
+#: front/src/components/Home.vue:110
+msgctxt "Content/Home/Paragraph"
+msgid "Users on this pod also get %{ quota } of free storage to upload their own content!"
+msgstr ""
+
 #: front/src/components/Footer.vue:29
 #, fuzzy
 msgctxt "Footer/*/Title"
@@ -5078,10 +5379,9 @@ msgid "Using Funkwhale"
 msgstr "Over Funkwhale"
 
 #: front/src/components/Footer.vue:13
-#, fuzzy
 msgctxt "Footer/*/List item"
 msgid "Version %{version}"
-msgstr "Broncode (%{ version })"
+msgstr "Versie (%{ version })"
 
 #: front/src/views/content/libraries/Quota.vue:29
 #: front/src/views/content/libraries/Quota.vue:56
@@ -5090,45 +5390,59 @@ msgctxt "Content/Library/Link/Verb"
 msgid "View files"
 msgstr "Bestanden bekijken"
 
-#: front/src/components/library/AlbumBase.vue:81
-#: front/src/components/library/ArtistBase.vue:92
-#: front/src/components/library/TrackBase.vue:100
-#: front/src/views/admin/library/AlbumDetail.vue:42
-#: front/src/views/admin/library/ArtistDetail.vue:41
+#: front/src/components/library/AlbumBase.vue:95
+#: front/src/components/library/ArtistBase.vue:107
+#: front/src/components/library/TrackBase.vue:111
+#: front/src/views/admin/library/AlbumDetail.vue:48
+#: front/src/views/admin/library/ArtistDetail.vue:46
 #: front/src/views/admin/library/LibraryDetail.vue:34
 #: front/src/views/admin/library/LibraryDetail.vue:45
-#: front/src/views/admin/library/TrackDetail.vue:41
+#: front/src/views/admin/library/TagDetail.vue:32
+#: front/src/views/admin/library/TrackDetail.vue:47
 #: front/src/views/admin/library/UploadDetail.vue:35
 #: front/src/views/admin/library/UploadDetail.vue:46
 #: front/src/views/admin/moderation/AccountsDetail.vue:37
 #: front/src/views/admin/moderation/AccountsDetail.vue:45
+#: front/src/views/admin/moderation/DomainsDetail.vue:30
 msgctxt "Content/Moderation/Link/Verb"
 msgid "View in Django's admin"
 msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:61
-#: front/src/components/library/ArtistBase.vue:72
-#: front/src/components/library/TrackBase.vue:80
+#: front/src/components/Home.vue:169
+msgctxt "Content/Home/Link"
+msgid "View more…"
+msgstr ""
+
+#: front/src/components/library/AlbumBase.vue:62
+#: front/src/components/library/ArtistBase.vue:73
+#: front/src/components/library/TrackBase.vue:78
 #: front/src/components/metadata/ArtistCard.vue:49
 #: front/src/components/metadata/ReleaseCard.vue:53
 msgctxt "Content/*/*/Clickable, Verb"
 msgid "View on MusicBrainz"
 msgstr "Bekijken op MusicBrainz"
 
+#: front/src/components/manage/moderation/ReportCard.vue:124
+msgctxt "Content/Moderation/Link"
+msgid "View public page"
+msgstr ""
+
 #: front/src/components/manage/library/LibrariesTable.vue:11
 #: front/src/components/manage/library/LibrariesTable.vue:51
 #: front/src/components/manage/library/UploadsTable.vue:11
 #: front/src/components/manage/library/UploadsTable.vue:63
 #: front/src/views/admin/library/LibraryDetail.vue:94
 #: front/src/views/admin/library/UploadDetail.vue:101
+#: front/src/views/content/libraries/Form.vue:18
 msgctxt "*/*/*"
 msgid "Visibility"
 msgstr "Zichtbaarheid"
 
-#: front/src/views/content/libraries/Form.vue:18
-msgctxt "Content/Library/Dropdown.Label"
-msgid "Visibility"
-msgstr "Zichtbaarheid"
+#: front/src/components/Home.vue:91
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Visit funkwhale.audio"
+msgstr "Over Funkwhale"
 
 #: front/src/components/library/AlbumDetail.vue:4
 msgctxt "Content/Album/"
@@ -5140,7 +5454,13 @@ msgctxt "Popup/*/Loading.Title"
 msgid "Waiting for result…"
 msgstr ""
 
-#: front/src/components/auth/Login.vue:7
+#: front/src/components/auth/Settings.vue:285
+#, fuzzy
+msgctxt "Content/Settings/Error message.Title"
+msgid "We cannot delete your account"
+msgstr "Er is een fout opgetreden tijdens het inloggen"
+
+#: front/src/components/auth/LoginForm.vue:3
 msgctxt "Content/Login/Error message.Title"
 msgid "We cannot log you in"
 msgstr "Er is een fout opgetreden tijdens het inloggen"
@@ -5151,10 +5471,10 @@ msgctxt "Content/*/Error message.Title"
 msgid "We cannot save your changes"
 msgstr "Je instellingen kunnen niet worden opgeslagen"
 
-#: front/src/components/Home.vue:122
-msgctxt "Content/Home/List item"
-msgid "We do not track you or bother you with ads"
-msgstr "We volgen je niet en vallen je niet lastig met reclame"
+#: front/src/views/Notifications.vue:39
+msgctxt "Content/Notifications/Paragraph"
+msgid "We noticed you've been here for a while. If Funkwhale is useful to you, we could use your help to make it even better!"
+msgstr ""
 
 #: front/src/components/library/FileUpload.vue:39
 #, fuzzy
@@ -5162,32 +5482,27 @@ msgctxt "Content/Library/Link"
 msgid "We recommend using Picard for that purpose."
 msgstr "we raden aan om hiervoor Picard te gebruiken"
 
-#: front/src/components/Home.vue:7
-msgctxt "Content/Home/Title"
-msgid "We think listening to music should be simple."
-msgstr "Omdat het makkelijk moet zijn naar muziek te luisteren."
+#: front/src/components/moderation/ReportModal.vue:35
+msgctxt "*/*/Field,Help"
+msgid "We'll use this email if we need to contact you regarding this report."
+msgstr ""
 
-#: front/src/components/Home.vue:148
+#: front/src/components/Home.vue:207
 msgctxt "Head/Home/Title"
 msgid "Welcome"
 msgstr "Welkom"
 
 #: front/src/components/Home.vue:5
-msgctxt "Content/Home/Title/Verb"
-msgid "Welcome on Funkwhale"
-msgstr "Welkom op Funkwhale"
-
-#: front/src/components/Home.vue:24
-msgctxt "Content/Home/Title"
-msgid "Why funkwhale?"
-msgstr "Waarom Funkwhale?"
+msgctxt "Content/Home/Header"
+msgid "Welcome to %{ podName }!"
+msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:13
+#: front/src/components/audio/EmbedWizard.vue:23
 msgctxt "Popup/Embed/Input.Label"
 msgid "Widget height"
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:6
+#: front/src/components/audio/EmbedWizard.vue:16
 msgctxt "Popup/Embed/Input.Label"
 msgid "Widget width"
 msgstr ""
@@ -5207,9 +5522,11 @@ msgctxt "Content/OAuth Scopes/Help Text"
 msgid "Write-only access to user data"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:129
+#: front/src/components/Sidebar.vue:133
 #: front/src/components/manage/moderation/AccountsTable.vue:72
-#: front/src/components/manage/moderation/DomainsTable.vue:58
+#: front/src/components/manage/moderation/DomainsTable.vue:12
+#: front/src/components/manage/moderation/DomainsTable.vue:69
+#: front/src/views/admin/moderation/DomainsDetail.vue:109
 msgctxt "*/*/*"
 msgid "Yes"
 msgstr "Ja"
@@ -5222,29 +5539,18 @@ msgstr "Ja, ik wil uitloggen!"
 #: front/src/views/content/libraries/Form.vue:19
 #, fuzzy
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You are able to share your library with other people, regardless of its "
-"visibility."
-msgstr ""
-"Je kunt je verzameling delen met anderen, ongeacht hoe je de zichtbaarheid "
-"hebt ingesteld."
+msgid "You are able to share your library with other people, regardless of its visibility."
+msgstr "Je kunt je verzameling delen met anderen, ongeacht hoe je de zichtbaarheid hebt ingesteld."
 
 #: front/src/components/library/FileUpload.vue:32
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You are about to upload music to your library. Before proceeding, please "
-"ensure that:"
-msgstr ""
-"Je staat op het punt muziek te uploaden. Controleer voordat je doorgaat:"
+msgid "You are about to upload music to your library. Before proceeding, please ensure that:"
+msgstr "Je staat op het punt muziek te uploaden. Controleer voordat je doorgaat:"
 
 #: front/src/components/SetInstanceModal.vue:12
 msgctxt "Popup/Login/Paragraph"
-msgid ""
-"You are currently connected to <a href=\"%{ url }\" target=\"_blank\">%{ "
-"hostname }&nbsp;<i class=\"external icon\"/></a>. If you continue, you will "
-"be disconnected from your current instance and all your local data will be "
-"deleted."
-msgstr ""
+msgid "You are currently connected to <a href=\"%{ url }\" target=\"_blank\">%{ hostname }&nbsp;<i class=\"external icon\"/></a>. If you continue, you will be disconnected from your current instance and all your local data will be deleted."
+msgstr "Je bent momenteel verbonden met <a href=\"%{ url }\" target=\"_blank\">%{ hostname }&nbsp;<i class=\"external icon\"/></a>. Als je doorgaat, zal je worden ontkoppeld van de huidige server en zal al je lokale data worden gewist."
 
 #: front/src/components/library/ArtistDetail.vue:6
 msgctxt "Content/Artist/Paragraph"
@@ -5258,67 +5564,45 @@ msgstr "Je bent ingelogd als %{ username }"
 
 #: front/src/components/library/FileUpload.vue:35
 msgctxt "Content/Library/List item"
-msgid ""
-"You are not uploading copyrighted content in a public library, otherwise you"
-" may be infringing the law"
+msgid "You are not uploading copyrighted content in a public library, otherwise you may be infringing the law"
 msgstr ""
 
 #: front/src/components/SetInstanceModal.vue:98
 msgctxt "*/Instance/Message"
 msgid "You are now using the Funkwhale instance at %{ url }"
-msgstr ""
+msgstr "Je gebruikt nu de Funkwhale-server op %{ url }"
 
 #: front/src/views/content/Home.vue:17
+#, fuzzy
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You can follow libraries from other users to get access to new music. Public"
-" libraries can be followed immediatly, while following a private library "
-"requires approval from its owner."
-msgstr ""
-"Je kunt andere verzamelingen volgen voor toegang tot nieuwe muziek. Openbare"
-" verzamelingen kun je meteen volgen, maar voor privéverzamelingen heb je "
-"toestemming nodig van de beheerder."
-
-#: front/src/components/Home.vue:128
-msgctxt "Content/Home/List item"
-msgid ""
-"You can invite friends and family to your instance so they can enjoy your "
-"music"
-msgstr ""
-"Je kunt vrienden en familie uitnodigen zodat ze kunnen genieten van je "
-"muziek"
+msgid "You can follow libraries from other users to get access to new music. Public libraries can be followed immediately, while following a private library requires approval from its owner."
+msgstr "Je kunt andere verzamelingen volgen voor toegang tot nieuwe muziek. Openbare verzamelingen kun je meteen volgen, maar voor privéverzamelingen heb je toestemming nodig van de beheerder."
 
 #: front/src/components/moderation/FilterModal.vue:31
 msgctxt "Popup/Moderation/Paragraph"
-msgid ""
-"You can manage and update your filters anytime from your account settings."
+msgid "You can manage and update your filters any time from your account settings."
 msgstr ""
 
 #: front/src/views/auth/EmailConfirm.vue:24
 #, fuzzy
 msgctxt "Content/Signup/Paragraph"
 msgid "You can now use the service without limitations."
+msgstr "Je e-mailadres is bevestigd. Je kunt nu onbeperkt gebruikmaken van de dienst."
+
+#: front/src/components/auth/Settings.vue:278
+msgctxt "Content/Settings/Paragraph'"
+msgid "You can permanently and irreversibly delete your account and all the associated data using the form below. You will be asked for confirmation."
 msgstr ""
-"Je e-mailadres is bevestigd. Je kunt nu onbeperkt gebruikmaken van de "
-"dienst."
 
 #: front/src/components/library/radios/Builder.vue:7
 msgctxt "Content/Radio/Paragraph"
-msgid ""
-"You can use this interface to build your own custom radio, which will play "
-"tracks according to your criteria."
-msgstr ""
-"Met dit hulpmiddel kun je je eigen radiostation opzetten. Dit station speelt"
-" nummers aan de hand van jouw wensen."
+msgid "You can use this interface to build your own custom radio, which will play tracks according to your criteria."
+msgstr "Met dit hulpmiddel kun je je eigen radiostation opzetten. Dit station speelt nummers aan de hand van jouw wensen."
 
 #: front/src/components/auth/SubsonicTokenForm.vue:7
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"You can use those to enjoy your playlist and music in offline mode, on your "
-"smartphone or tablet, for instance."
-msgstr ""
-"Je kunt ze gebruiken om ook offline te genieten van je afspeellijst en "
-"muziek, bijvoorbeeld op je smartphone of tablet."
+msgid "You can use those to enjoy your playlist and music in offline mode, on your smartphone or tablet, for instance."
+msgstr "Je kunt ze gebruiken om ook offline te genieten van je afspeellijst en muziek, bijvoorbeeld op je smartphone of tablet."
 
 #: front/src/components/auth/Settings.vue:202
 msgctxt "Content/Applications/Paragraph"
@@ -5336,19 +5620,17 @@ msgctxt "Content/Moderation/Card.Title"
 msgid "You don't have any rule in place for this account."
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:39
+#: front/src/views/admin/moderation/DomainsDetail.vue:67
 msgctxt "Content/Moderation/Card.Title"
 msgid "You don't have any rule in place for this domain."
 msgstr ""
 
 #: front/src/components/library/EditForm.vue:52
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You don't have the permission to edit this object, but you can suggest "
-"changes. Once submitted, suggestions will be reviewed before approval."
+msgid "You don't have the permission to edit this object, but you can suggest changes. Once submitted, suggestions will be reviewed before approval."
 msgstr ""
 
-#: front/src/components/Sidebar.vue:171
+#: front/src/components/Sidebar.vue:175
 msgctxt "Sidebar/Player/Title"
 msgid "You have a radio playing"
 msgstr "Er wordt een radiostation afgespeeld"
@@ -5360,8 +5642,7 @@ msgstr ""
 
 #: front/src/components/auth/Settings.vue:100
 msgctxt "Popup/Settings/List item"
-msgid ""
-"You will be logged out from this session and have to log in with the new one"
+msgid "You will be logged out from this session and have to log in with the new one"
 msgstr "Je wordt uitgelogd uit deze sessie moet inloggen op de nieuwe"
 
 #: front/src/components/auth/Authorize.vue:51
@@ -5376,25 +5657,24 @@ msgstr ""
 
 #: front/src/components/auth/Settings.vue:71
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"You will have to update your password on your clients that use this "
-"password."
-msgstr ""
-"Je moet je wachtwoord bijwerken op je clients die ook dit wachtwoord "
-"gebruiken."
+msgid "You will have to update your password on your clients that use this password."
+msgstr "Je moet je wachtwoord bijwerken op je clients die ook dit wachtwoord gebruiken."
 
 #: front/src/components/moderation/FilterModal.vue:20
 msgctxt "Popup/Moderation/Paragraph"
-msgid ""
-"You will not see tracks, albums and user activity linked to this artist "
-"anymore:"
+msgid "You will not see tracks, albums and user activity linked to this artist any more:"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:13
+#: front/src/components/auth/SignupForm.vue:9
 msgctxt "Content/Signup/Form/Paragraph"
 msgid "Your account cannot be created."
 msgstr ""
 
+#: front/src/components/auth/Settings.vue:281
+msgctxt "Content/Settings/Paragraph'"
+msgid "Your account will be deleted from our servers within a few minutes. We will also notify other servers who may have a copy of some of your data so they can proceed to deletion. Please note that some of these servers may be offline or unwilling to comply though."
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:215
 #, fuzzy
 msgctxt "Content/Settings/Title/Noun"
@@ -5406,6 +5686,11 @@ msgctxt "Content/Settings/Error message.Title"
 msgid "Your avatar cannot be saved"
 msgstr ""
 
+#: front/src/components/auth/Settings.vue:527
+msgctxt "*/Auth/Message"
+msgid "Your deletion request was submitted, your account and content will be deleted shortly"
+msgstr ""
+
 #: front/src/components/library/EditForm.vue:3
 msgctxt "Content/Library/Paragraph"
 msgid "Your edit was successfully submitted."
@@ -5416,12 +5701,12 @@ msgctxt "Head/Favorites/Title"
 msgid "Your Favorites"
 msgstr "Je favorieten"
 
-#: front/src/components/Home.vue:109
-msgctxt "Content/Home/Title"
-msgid "Your music, your way"
-msgstr "Jouw muziek op jouw manier"
+#: front/src/views/Notifications.vue:5
+msgctxt "Content/Notifications/Title"
+msgid "Your messages"
+msgstr ""
 
-#: front/src/views/Notifications.vue:4
+#: front/src/views/Notifications.vue:69
 msgctxt "Content/Notifications/Title"
 msgid "Your notifications"
 msgstr "Je meldingen"
@@ -5439,44 +5724,39 @@ msgstr "Je wachtwoord is bijgewerkt."
 #: front/src/components/auth/Settings.vue:14
 #, fuzzy
 msgctxt "Content/Settings/Error message.Title"
-msgid "Your settings can't be updateds"
+msgid "Your settings can't be updated"
 msgstr "Instellingen bijgewerkt"
 
 #: front/src/components/auth/Settings.vue:101
 msgctxt "Popup/Settings/List item"
-msgid ""
-"Your Subsonic password will be changed to a new, random one, logging you out"
-" from devices that used the old Subsonic password"
-msgstr ""
-"Je Subsonic-wachtwoord wordt gewijzigd in een nieuw willekeurig wachtwoord. "
-"Hierbij wordt je uitgelogd op apparaten die het oude Subsonic-wachtwoord "
-"gebruiken."
+msgid "Your Subsonic password will be changed to a new, random one, logging you out from devices that used the old Subsonic password"
+msgstr "Je Subsonic-wachtwoord wordt vervangen door een nieuwe, waardoor je wordt uitgelogd op apparaten die het oude wachtwoord gebruiken"
 
-#: front/src/edits.js:47
+#: front/src/entities.js:126
 #, fuzzy
-msgctxt "*/*/*/Short, Noun"
-msgid "Position"
-msgstr "Omschrijving"
+msgctxt "*/*/*/Noun"
+msgid "MusicBrainz ID"
+msgstr "Bekijken op MusicBrainz"
 
-#: front/src/edits.js:54
-#, fuzzy
-msgctxt "Content/Track/*/Noun"
-msgid "Copyright"
-msgstr "Kopiëren"
+#: front/src/main.js:110
+msgctxt "*/Error/Paragraph"
+msgid "You sent too many requests and have been rate limited, please try again in %{ delay }"
+msgstr ""
+
+#: front/src/main.js:113
+msgctxt "*/Error/Paragraph"
+msgid "You sent too many requests and have been rate limited, please try again later"
+msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:183
+#: front/src/components/library/AlbumBase.vue:208
 #, fuzzy
 msgctxt "Content/Album/Header.Title"
-msgid ""
-"Album containing %{ count } track, by <a class=\"internal\" href=\"%{ "
-"artistUrl }\">%{ artist }</a>"
-msgid_plural ""
-"Album containing %{ count } tracks, by <a class=\"internal\" href=\"%{ "
-"artistUrl }\">%{ artist }</a>"
+msgid "Album containing %{ count } track, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgid_plural "Album containing %{ count } tracks, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
 msgstr[0] "Album met %{ count } nummer, van %{ artist }"
 msgstr[1] "Album met %{ count } nummers, van %{ artist }"
 
-#: front/src/components/audio/PlayButton.vue:220
+#: front/src/components/audio/PlayButton.vue:246
 #, fuzzy
 msgctxt "*/Queue/Message"
 msgid "%{ count } track was added to your queue"
diff --git a/front/locales/oc/LC_MESSAGES/app.po b/front/locales/oc/LC_MESSAGES/app.po
index 2ba2f5e23c320a992431ca412e36c676c67098c4..048854e66eedf714ded4dd7fa1b74c0aa296d6a9 100644
--- a/front/locales/oc/LC_MESSAGES/app.po
+++ b/front/locales/oc/LC_MESSAGES/app.po
@@ -7,16 +7,16 @@ msgid ""
 msgstr ""
 "Project-Id-Version: front 1.0.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-05-16 10:35+0200\n"
-"PO-Revision-Date: 2019-05-07 09:29+0000\n"
-"Last-Translator: Quentí <quentin_antonin@hotmail.com>\n"
+"POT-Creation-Date: 2019-10-01 15:15+0200\n"
+"PO-Revision-Date: 2019-09-29 20:13+0000\n"
+"Last-Translator: Quentin PAGÈS <quentinantonin@free.fr>\n"
 "Language-Team: none\n"
 "Language: oc\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Generator: Weblate 3.2.2\n"
+"X-Generator: Weblate 3.7\n"
 
 #: front/src/components/playlists/PlaylistModal.vue:9
 msgctxt "Popup/Playlist/Paragraph"
@@ -38,6 +38,48 @@ msgctxt "Content/Auth/Title"
 msgid "%{ app } wants to access your Funkwhale account"
 msgstr "%{ app } vòl accedir a vòstre compte Funkwhale"
 
+#: front/src/components/About.vue:173 src/components/Home.vue:56
+msgctxt "Content/Home/Stat"
+msgid "%{ count } active user"
+msgid_plural "%{ count } active users"
+msgstr[0] "%{ count } utilizaire actiu"
+msgstr[1] "%{ count } utilizaires actius"
+
+#: front/src/components/About.vue:182
+msgctxt "Content/Home/Stat"
+msgid "%{ count } albums"
+msgid_plural "%{ count } albums"
+msgstr[0] "%{ count } album"
+msgstr[1] "%{ count } albums"
+
+#: front/src/components/About.vue:152
+msgctxt "*/*/*"
+msgid "%{ count } allowed domains"
+msgid_plural "%{ count } allowed domains"
+msgstr[0] "%{ count } domeni autorizat"
+msgstr[1] "%{ count } domenis autorizats"
+
+#: front/src/components/About.vue:179
+msgctxt "Content/Home/Stat"
+msgid "%{ count } artists"
+msgid_plural "%{ count } artists"
+msgstr[0] "%{ count } artista"
+msgstr[1] "%{ count } artistas"
+
+#: front/src/components/About.vue:176 src/components/Home.vue:59
+msgctxt "Content/Home/Stat"
+msgid "%{ count } hour of music"
+msgid_plural "%{ count } hours of music"
+msgstr[0] "%{ count } ora de musica"
+msgstr[1] "%{ count } oras de musica"
+
+#: front/src/components/About.vue:188
+msgctxt "Content/Home/Stat"
+msgid "%{ count } listenings"
+msgid_plural "%{ count } listenings"
+msgstr[0] "%{ count } escota"
+msgstr[1] "%{ count } escotas"
+
 #: front/src/components/common/ActionTable.vue:68
 msgctxt "Content/*/Paragraph"
 msgid "%{ count } on %{ total } selected"
@@ -45,9 +87,9 @@ msgid_plural "%{ count } on %{ total } selected"
 msgstr[0] "%{ count } sus %{ total } element seleccionat"
 msgstr[1] "%{ count } sus %{ total } elements seleccionats"
 
-#: front/src/components/Sidebar.vue:121 src/components/audio/album/Card.vue:52
+#: front/src/components/Sidebar.vue:125 src/components/audio/album/Card.vue:52
 #: front/src/views/content/libraries/Card.vue:40
-#: src/views/content/remote/Card.vue:30
+#: src/views/content/remote/Card.vue:43
 msgctxt "*/*/*"
 msgid "%{ count } track"
 msgid_plural "%{ count } tracks"
@@ -68,7 +110,14 @@ msgid_plural "%{ count } tracks matching combined filters"
 msgstr[0] "%{ count } pista correspond als filtres seleccionats"
 msgstr[1] "%{ count } pistas correspondon als filtres seleccionats"
 
-#: front/src/components/playlists/Card.vue:18
+#: front/src/components/About.vue:185
+msgctxt "Content/Home/Stat"
+msgid "%{ count } tracks"
+msgid_plural "%{ count } tracks"
+msgstr[0] "%{ count } pista"
+msgstr[1] "%{ count } pistas"
+
+#: front/src/components/playlists/Card.vue:28
 msgctxt "Content/*/Card/List item"
 msgid "%{ count} track"
 msgid_plural "%{ count } tracks"
@@ -93,9 +142,7 @@ msgstr "%{ minutes } min"
 #: front/src/components/notifications/NotificationRow.vue:40
 msgctxt "Content/Notifications/Paragraph"
 msgid "%{ username } accepted your follow on library \"%{ library }\""
-msgstr ""
-"%{ username } acceptèt vòstra demanda de seguiment de la bibliotèca « %{ "
-"library } »"
+msgstr "%{ username } acceptèt vòstra demanda de seguiment de la bibliotèca « %{ library } »"
 
 #: front/src/components/notifications/NotificationRow.vue:39
 msgctxt "Content/Notifications/Paragraph"
@@ -114,12 +161,10 @@ msgstr "Perfil de %{ username }"
 
 #: front/src/components/playlists/PlaylistModal.vue:21
 msgctxt "Popup/Playlist/Paragraph"
-msgid ""
-"<strong>%{ track }</strong> is already in <strong>%{ playlist }</strong>."
-msgstr ""
-"<strong>%{ track }</strong> es ja dins <strong>%{ playlist }</strong>."
+msgid "<strong>%{ track }</strong> is already in <strong>%{ playlist }</strong>."
+msgstr "<strong>%{ track }</strong> es ja dins <strong>%{ playlist }</strong>."
 
-#: front/src/components/audio/artist/Card.vue:41
+#: front/src/components/audio/artist/Card.vue:11
 msgctxt "Content/Artist/Card"
 msgid "1 album"
 msgid_plural "%{ count } albums"
@@ -133,32 +178,49 @@ msgid_plural "%{ count } favorites"
 msgstr[0] "1 favorit"
 msgstr[1] "%{ count } favorits"
 
-#: front/src/components/Home.vue:64
-msgctxt "Content/Home/Title"
-msgid "A clean library"
-msgstr "Bibliotèca de qualitat"
+#: front/src/components/audio/artist/Card.vue:15
+msgctxt "Content/Artist/Card"
+msgid "1 track"
+msgid_plural "%{ count } tracks"
+msgstr[0] "Una pista"
+msgstr[1] "%{ count } pistas"
+
+#: front/src/views/Notifications.vue:21 src/views/Notifications.vue:55
+msgctxt "*/*/*"
+msgid "30 days"
+msgstr "30 jorns"
+
+#: front/src/views/Notifications.vue:22 src/views/Notifications.vue:56
+msgctxt "*/*/*"
+msgid "60 days"
+msgstr "60 jorns"
+
+#: front/src/views/Notifications.vue:23 src/views/Notifications.vue:57
+msgctxt "*/*/*"
+msgid "90 days"
+msgstr "90 jorns"
 
 #: front/src/components/library/FileUpload.vue:264
 msgctxt "Content/Library/Help text"
-msgid "A network error occured while uploading this file"
+msgid "A network error occurred while uploading this file"
 msgstr "Una error de ret s’es producha en enviar aqueste fichièr"
 
-#: front/src/components/library/EditForm.vue:145
+#: front/src/components/library/EditForm.vue:161
 msgctxt "*/*/Placeholder"
 msgid "A short summary describing your changes."
 msgstr "Una descripcion pichona per explicar vòstres cambiaments."
 
 #: front/src/components/About.vue:5
-msgctxt "Content/About/Title/Short, Noun"
-msgid "About %{ instance }"
-msgstr "A prepaus de %{ instance }"
+msgctxt "Content/Home/Header"
+msgid "About %{ podName }"
+msgstr "A prepaus de %{ podName }"
 
 #: front/src/components/Footer.vue:6
 msgctxt "Footer/About/Title"
 msgid "About %{instanceName}"
 msgstr "A prepaus de %{instanceName}"
 
-#: front/src/components/Footer.vue:45
+#: front/src/components/Footer.vue:53 src/components/Home.vue:85
 msgctxt "Footer/*/Title/Short"
 msgid "About Funkwhale"
 msgstr "A prepaus de Funkwhale"
@@ -168,10 +230,15 @@ msgctxt "Footer/About/List item.Link"
 msgid "About page"
 msgstr "Pagina « a prepaus »"
 
-#: front/src/components/About.vue:8 src/components/About.vue:67
-msgctxt "Content/About/Title"
-msgid "About this instance"
-msgstr "A prepaus d’aquesta instància"
+#: front/src/components/Home.vue:19
+msgctxt "Content/Home/Header"
+msgid "About this Funkwhale pod"
+msgstr "A prepaus d’aqueste pod Funkwhale"
+
+#: front/src/components/About.vue:21 src/components/About.vue:51
+msgctxt "Content/About/Header"
+msgid "About this pod"
+msgstr "A prepaus d’aqueste pod"
 
 #: front/src/views/content/libraries/Detail.vue:48
 msgctxt "Content/Library/Button.Label"
@@ -183,96 +250,87 @@ msgctxt "Content/Library/Table/Short"
 msgid "Accepted"
 msgstr "Acceptat"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:110
+#: front/src/components/auth/SubsonicTokenForm.vue:117
 msgctxt "Content/Settings/Message"
 msgid "Access disabled"
 msgstr "Accès desactivat"
 
-#: front/src/components/mixins/Translations.vue:73
-#: front/src/components/mixins/Translations.vue:74
+#: front/src/components/mixins/Translations.vue:85
+#: front/src/components/mixins/Translations.vue:86
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to audio files, libraries, artists, albums and tracks"
 msgstr "Accès als fichièrs àudio, bibliotècas, artistas, albums e pistas"
 
-#: front/src/components/mixins/Translations.vue:97
-#: front/src/components/mixins/Translations.vue:98
+#: front/src/components/mixins/Translations.vue:109
+#: front/src/components/mixins/Translations.vue:110
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to content filters"
 msgstr "Accès als filtre de contengut"
 
-#: front/src/components/mixins/Translations.vue:105
-#: front/src/components/mixins/Translations.vue:106
+#: front/src/components/mixins/Translations.vue:117
+#: front/src/components/mixins/Translations.vue:118
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to edits"
 msgstr "Accès a las modificacions"
 
-#: front/src/components/mixins/Translations.vue:69
-#: front/src/components/mixins/Translations.vue:70
+#: front/src/components/mixins/Translations.vue:81
+#: front/src/components/mixins/Translations.vue:82
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to email, username, and profile information"
 msgstr "Accès als corrièls, nom d’utilizaire e informacions del perfil"
 
-#: front/src/components/mixins/Translations.vue:77
-#: front/src/components/mixins/Translations.vue:78
+#: front/src/components/mixins/Translations.vue:89
+#: front/src/components/mixins/Translations.vue:90
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to favorites"
 msgstr "Accès als favorits"
 
-#: front/src/components/mixins/Translations.vue:85
-#: front/src/components/mixins/Translations.vue:86
+#: front/src/components/mixins/Translations.vue:97
+#: front/src/components/mixins/Translations.vue:98
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to follows"
 msgstr "Accès al seguiment"
 
-#: front/src/components/mixins/Translations.vue:81
-#: front/src/components/mixins/Translations.vue:82
+#: front/src/components/mixins/Translations.vue:93
+#: front/src/components/mixins/Translations.vue:94
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to listening history"
 msgstr "Accès a l’istoric d’escota"
 
-#: front/src/components/mixins/Translations.vue:101
-#: front/src/components/mixins/Translations.vue:102
+#: front/src/components/mixins/Translations.vue:113
+#: front/src/components/mixins/Translations.vue:114
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to notifications"
 msgstr "Accès a las notificacions"
 
-#: front/src/components/mixins/Translations.vue:89
-#: front/src/components/mixins/Translations.vue:90
+#: front/src/components/mixins/Translations.vue:101
+#: front/src/components/mixins/Translations.vue:102
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to playlists"
 msgstr "Accès a las listas de lectura"
 
-#: front/src/components/mixins/Translations.vue:93
-#: front/src/components/mixins/Translations.vue:94
+#: front/src/components/mixins/Translations.vue:105
+#: front/src/components/mixins/Translations.vue:106
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to radios"
 msgstr "Accès a las ràdios"
 
-#: front/src/components/Home.vue:101
-msgctxt "Content/Home/List item"
-msgid ""
-"Access your music from a clean interface that focuses on what really matters"
-msgstr ""
-"Accedissètz a vòstra musica d’una interfàcia afinada estant, adaptada a çò "
-"que compta vertadièrament"
-
 #: front/src/components/manage/library/UploadsTable.vue:67
-#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:55
 #: front/src/views/admin/library/UploadDetail.vue:175
-#: front/src/components/mixins/Translations.vue:46
+#: front/src/components/mixins/Translations.vue:56
 msgctxt "Content/*/*/Noun"
 msgid "Accessed date"
 msgstr "Data d’accès"
 
-#: front/src/views/admin/library/LibraryDetail.vue:104
-#: front/src/views/admin/library/UploadDetail.vue:111
-msgctxt "*/*/*/Noun"
-msgid "Account"
-msgstr "Compte"
-
 #: front/src/components/manage/library/LibrariesTable.vue:49
 #: front/src/components/manage/library/UploadsTable.vue:61
-msgctxt "*/*/*"
+#: front/src/components/manage/moderation/ReportCard.vue:156
+#: front/src/components/mixins/Report.vue:13
+#: front/src/views/admin/library/LibraryDetail.vue:113
+#: front/src/views/admin/library/UploadDetail.vue:111
+#: front/src/components/mixins/Report.vue:14
+msgctxt "*/*/*/Noun"
 msgid "Account"
 msgstr "Compte"
 
@@ -286,7 +344,7 @@ msgctxt "Content/Settings/Title"
 msgid "Account settings"
 msgstr "Paramètres del compte"
 
-#: front/src/components/auth/Settings.vue:479
+#: front/src/components/auth/Settings.vue:544
 msgctxt "Head/Settings/Title"
 msgid "Account Settings"
 msgstr "Paramètres del compte"
@@ -303,7 +361,7 @@ msgstr "Adreça electronica del compte"
 
 #: front/src/views/admin/moderation/AccountsList.vue:3
 #: front/src/views/admin/moderation/AccountsList.vue:24
-#: front/src/views/admin/moderation/Base.vue:8
+#: front/src/views/admin/moderation/Base.vue:11
 msgctxt "*/Moderation/Title"
 msgid "Accounts"
 msgstr "Comptes"
@@ -316,31 +374,30 @@ msgstr "Accion"
 #: front/src/components/common/ActionTable.vue:101
 msgctxt "Content/*/Paragraph"
 msgid "Action %{ action } was launched successfully on %{ count } element"
-msgid_plural ""
-"Action %{ action } was launched successfully on %{ count } elements"
-msgstr[0] ""
-"L’action %{ action } es estada lançada corrèctament sus %{ count } element"
-msgstr[1] ""
-"L’action %{ action } es estada lançada corrèctament sus %{ count } elements"
+msgid_plural "Action %{ action } was launched successfully on %{ count } elements"
+msgstr[0] "L’action %{ action } es estada lançada corrèctament sus %{ count } element"
+msgstr[1] "L’action %{ action } es estada lançada corrèctament sus %{ count } elements"
 
 #: front/src/components/common/ActionTable.vue:22
 #: front/src/components/library/radios/Builder.vue:65
+#: front/src/components/manage/moderation/ReportCard.vue:210
 msgctxt "Content/*/*/Noun"
 msgid "Actions"
 msgstr "Accions"
 
-#: front/src/components/manage/users/UsersTable.vue:53
+#: front/src/components/manage/users/UsersTable.vue:54
 msgctxt "Content/Admin/Table"
 msgid "Active"
 msgstr "Actiu"
 
-#: front/src/views/admin/library/AlbumDetail.vue:134
-#: front/src/views/admin/library/ArtistDetail.vue:123
-#: front/src/views/admin/library/LibraryDetail.vue:138
-#: front/src/views/admin/library/TrackDetail.vue:186
+#: front/src/views/admin/library/AlbumDetail.vue:140
+#: front/src/views/admin/library/ArtistDetail.vue:128
+#: front/src/views/admin/library/LibraryDetail.vue:147
+#: front/src/views/admin/library/TagDetail.vue:83
+#: front/src/views/admin/library/TrackDetail.vue:192
 #: front/src/views/admin/library/UploadDetail.vue:160
-#: front/src/views/admin/moderation/AccountsDetail.vue:220
-#: front/src/views/admin/moderation/DomainsDetail.vue:136
+#: front/src/views/admin/moderation/AccountsDetail.vue:221
+#: front/src/views/admin/moderation/DomainsDetail.vue:173
 msgctxt "Content/Moderation/Title"
 msgid "Activity"
 msgstr "Activitat"
@@ -351,7 +408,7 @@ msgctxt "Content/Settings/Dropdown.Label/Noun"
 msgid "Activity visibility"
 msgstr "Visibilitat de l’activitat"
 
-#: front/src/views/admin/moderation/DomainsList.vue:18
+#: front/src/views/admin/moderation/DomainsList.vue:22
 msgctxt "Content/Moderation/Button/Verb"
 msgid "Add"
 msgstr "Ajustar"
@@ -397,7 +454,19 @@ msgctxt "Content/Radio/Paragraph"
 msgid "Add filters to customize your radio"
 msgstr "Ajustar de filtres per dire de personalizar vòstra ràdio"
 
-#: front/src/components/audio/PlayButton.vue:75
+#: front/src/components/manage/moderation/NoteForm.vue:12
+msgctxt "Content/Moderation/Button.Label/Verb"
+msgid "Add note"
+msgstr "Ajustar una nòta"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:191
+#: front/src/views/admin/moderation/DomainsDetail.vue:46
+#: front/src/views/admin/moderation/DomainsList.vue:18
+msgctxt "Content/Moderation/Action/Verb"
+msgid "Add to allow-list"
+msgstr "Ajustar a la lista d’autorizacion"
+
+#: front/src/components/audio/PlayButton.vue:91
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Add to current queue"
 msgstr "Ajustar a la lista actuala"
@@ -429,7 +498,7 @@ msgctxt "Popup/Playlist/Table.Button.Label/Verb"
 msgid "Add track"
 msgstr "Ajustar una pista"
 
-#: front/src/components/manage/users/UsersTable.vue:69
+#: front/src/components/manage/users/UsersTable.vue:70
 msgctxt "Content/Admin/Table.User role"
 msgid "Admin"
 msgstr "Admin"
@@ -439,49 +508,49 @@ msgctxt "Sidebar/Admin/Title/Noun"
 msgid "Administration"
 msgstr "Administracion"
 
-#: front/src/views/admin/library/TrackDetail.vue:107
-msgctxt "*/*/*/Noun"
-msgid "Album"
-msgstr "Album"
-
-#: front/src/components/audio/SearchBar.vue:26
+#: front/src/components/audio/SearchBar.vue:33
 #: src/components/audio/track/Table.vue:9
-#: front/src/components/library/AlbumBase.vue:152
-#: front/src/components/library/ArtistBase.vue:194
+#: front/src/components/library/AlbumBase.vue:170
+#: front/src/components/library/ArtistBase.vue:212
 #: front/src/components/manage/library/TracksTable.vue:40
 #: front/src/components/metadata/Search.vue:134
+#: src/components/mixins/Report.vue:41
+#: front/src/views/admin/library/TrackDetail.vue:113
 #: front/src/views/content/libraries/FilesTable.vue:57
+#: front/src/components/mixins/Report.vue:42
 msgctxt "*/*/*"
 msgid "Album"
 msgstr "Album"
 
-#: front/src/views/admin/library/TrackDetail.vue:128
+#: front/src/views/admin/library/TrackDetail.vue:134
 msgctxt "*/*/*/Noun"
 msgid "Album artist"
 msgstr "Artista d’aqueste album"
 
-#: front/src/views/admin/library/AlbumDetail.vue:92
+#: front/src/views/admin/library/AlbumDetail.vue:98
 msgctxt "Content/Moderation/Title"
 msgid "Album data"
 msgstr "Donadas de l’album"
 
-#: front/src/components/mixins/Translations.vue:51
-#: front/src/components/mixins/Translations.vue:52
+#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/mixins/Translations.vue:62
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Album name"
 msgstr "Nom de l’album"
 
 #: front/src/components/audio/Search.vue:19
-#: src/components/instance/Stats.vue:48
-#: front/src/components/library/Albums.vue:120
-#: src/components/library/Library.vue:7
+#: src/components/library/Albums.vue:129
+#: front/src/components/library/Library.vue:7
+#: src/components/library/TagDetail.vue:28
 #: front/src/components/manage/library/ArtistsTable.vue:41
+#: front/src/components/manage/library/TagsTable.vue:43
 #: front/src/views/admin/library/AlbumsList.vue:24
-#: front/src/views/admin/library/ArtistDetail.vue:241
+#: front/src/views/admin/library/ArtistDetail.vue:256
 #: front/src/views/admin/library/Base.vue:11
-#: front/src/views/admin/library/LibraryDetail.vue:219
-#: front/src/views/admin/moderation/AccountsDetail.vue:354
-#: front/src/views/admin/moderation/DomainsDetail.vue:264
+#: front/src/views/admin/library/LibraryDetail.vue:238
+#: front/src/views/admin/library/TagDetail.vue:133
+#: front/src/views/admin/moderation/AccountsDetail.vue:366
+#: front/src/views/admin/moderation/DomainsDetail.vue:301
 msgctxt "*/*/*"
 msgid "Albums"
 msgstr "Albums"
@@ -495,7 +564,10 @@ msgstr "Albums d’aqueste artista"
 #: front/src/components/manage/library/LibrariesTable.vue:13
 #: front/src/components/manage/library/UploadsTable.vue:13
 #: front/src/components/manage/library/UploadsTable.vue:22
+#: front/src/components/manage/moderation/DomainsTable.vue:11
 #: front/src/components/manage/users/InvitationsTable.vue:19
+#: front/src/components/moderation/ReportCategoryDropdown.vue:32
+#: front/src/views/admin/moderation/ReportsList.vue:17
 #: front/src/views/content/libraries/FilesTable.vue:13
 msgctxt "Content/*/Dropdown"
 msgid "All"
@@ -513,44 +585,51 @@ msgctxt "Head/Authorize/Title"
 msgid "Allow application"
 msgstr "Autorizar l’aplicacion"
 
+#: front/src/components/About.vue:136
+msgctxt "*/*/*"
+msgid "Allow-list"
+msgstr "Lista d’autorizacions"
+
+#: front/src/components/About.vue:149
+msgctxt "*/*/*"
+msgid "Allowed domains"
+msgstr "Domenis autorizats"
+
 #: front/src/components/library/ImportStatusModal.vue:17
 msgctxt "Popup/Import/Message"
-msgid ""
-"An error occured during upload processing. You will find more information "
-"below."
-msgstr ""
-"Una error s’es producha pendent lo processús de mandadís. Trobaretz mai "
-"d’informacion çai-jos."
+msgid "An error occurred during upload processing. You will find more information below."
+msgstr "Una error s’es producha pendent lo processús de mandadís. Trobaretz mai d’informacion çai-jos."
 
 #: front/src/components/playlists/Editor.vue:13
 msgctxt "Content/Playlist/Error message.Title"
-msgid "An error occured while saving your changes"
+msgid "An error occurred while saving your changes"
 msgstr "Una error s’es producha en enregistrar vòstras modificacions"
 
 #: front/src/components/federation/FetchButton.vue:21
 msgctxt "Popup/*/Message.Content"
-msgid "An error occured while trying to refresh data:"
+msgid "An error occurred while trying to refresh data:"
 msgstr "Una error s’es producha en actualizar las donadas :"
 
 #: front/src/components/federation/FetchButton.vue:41
 msgctxt "*/*/Error"
-msgid "An HTTP error occured while contacting the remote server"
+msgid "An HTTP error occurred while contacting the remote server"
 msgstr "Una error HTTP s’es producha en contactar lo servidor alonhat"
 
-#: front/src/components/auth/Login.vue:10
-msgctxt "Content/Login/Error message/List item"
-msgid ""
-"An unknown error happend, this can mean the server is down or cannot be "
-"reached"
-msgstr ""
-"Una error desconeguda encontrada, aquò pòt significar que lo servidor es "
-"fòra servici o pòt pas èsser atengut"
-
 #: front/src/components/library/ImportStatusModal.vue:145
 msgctxt "Popup/Import/Error.Label"
-msgid "An unkwown error occured"
+msgid "An unknown error occurred"
 msgstr "Una error desconeguda s’es producha"
 
+#: front/src/components/About.vue:123
+msgctxt "*/*/*"
+msgid "Anonymous access"
+msgstr "Accès anonim"
+
+#: front/src/components/moderation/ReportModal.vue:54
+msgctxt "Popup/Moderation/Error message"
+msgid "Anonymous reports are disabled, please sign-in to submit a report."
+msgstr "Los senhalaments anonims son desactivats, marcatz-vos per realizar un senhalament."
+
 #: front/src/components/auth/Settings.vue:175
 #: src/components/auth/Settings.vue:225
 msgctxt "*/*/*/Noun"
@@ -569,12 +648,8 @@ msgstr "ID de l’aplicacion"
 
 #: front/src/components/auth/ApplicationEdit.vue:16
 msgctxt "Content/Application/Paragraph/"
-msgid ""
-"Application ID and secret are really sensitive values and must be treated "
-"like passwords. Do not share those with anyone else."
-msgstr ""
-"L’ID e lo secrèt de l’aplicacion son de donadas vertadièrament sensiblas e "
-"devon èsser consideradas coma de senhals. Partegetz-las pas amb degun."
+msgid "Application ID and secret are really sensitive values and must be treated like passwords. Do not share those with anyone else."
+msgstr "L’ID e lo secrèt de l’aplicacion son de donadas vertadièrament sensiblas e devon èsser consideradas coma de senhals. Partegetz-las pas amb degun."
 
 #: front/src/components/auth/ApplicationEdit.vue:25
 msgctxt "Content/Applications/Label"
@@ -603,29 +678,27 @@ msgctxt "Content/Login/Title"
 msgid "Are you sure you want to log out?"
 msgstr "Volètz vertadièrament vos desconnectar ?"
 
+#: front/src/components/audio/SearchBar.vue:32
+#: src/components/audio/track/Table.vue:8
 #: front/src/components/manage/library/AlbumsTable.vue:40
 #: front/src/components/manage/library/TracksTable.vue:41
-msgctxt "*/*/*"
-msgid "Artist"
-msgstr "Artista"
-
-#: front/src/components/audio/SearchBar.vue:25
-#: src/components/audio/track/Table.vue:8
 #: front/src/components/metadata/Search.vue:130
-#: front/src/views/admin/library/AlbumDetail.vue:108
-#: front/src/views/admin/library/TrackDetail.vue:118
-#: front/src/views/content/libraries/FilesTable.vue:56
+#: src/components/mixins/Report.vue:55
+#: front/src/views/admin/library/AlbumDetail.vue:114
+#: front/src/views/admin/library/TrackDetail.vue:124
+#: front/src/views/content/libraries/FilesTable.vue:56 src/entities.js:12
+#: front/src/components/mixins/Report.vue:56
 msgctxt "*/*/*/Noun"
 msgid "Artist"
 msgstr "Artista"
 
-#: front/src/views/admin/library/ArtistDetail.vue:91
+#: front/src/views/admin/library/ArtistDetail.vue:96
 msgctxt "Content/Moderation/Title"
 msgid "Artist data"
 msgstr "Donadas de l’artista"
 
-#: front/src/components/mixins/Translations.vue:52
-#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/mixins/Translations.vue:62
+#: front/src/components/mixins/Translations.vue:63
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Artist name"
 msgstr "Nom de l’artista"
@@ -635,36 +708,36 @@ msgctxt "*/Search/Input.Placeholder"
 msgid "Artist, album, track…"
 msgstr "Artista, album, pista…"
 
+#: front/src/components/audio/Search.vue:10
+#: src/components/library/Artists.vue:117
+#: front/src/components/library/Library.vue:10
+#: front/src/components/library/TagDetail.vue:19
+#: front/src/components/manage/library/TagsTable.vue:42
 #: front/src/views/admin/library/ArtistsList.vue:24
 #: front/src/views/admin/library/Base.vue:8
-#: front/src/views/admin/library/LibraryDetail.vue:209
-msgctxt "*/*/*"
-msgid "Artists"
-msgstr "Artistas"
-
-#: front/src/components/audio/Search.vue:10
-#: src/components/instance/Stats.vue:42
-#: front/src/components/library/Artists.vue:117
-#: src/components/library/Library.vue:10
-#: front/src/views/admin/moderation/AccountsDetail.vue:346
-#: front/src/views/admin/moderation/DomainsDetail.vue:254
+#: front/src/views/admin/library/LibraryDetail.vue:228
+#: front/src/views/admin/library/TagDetail.vue:123
+#: front/src/views/admin/moderation/AccountsDetail.vue:358
+#: front/src/views/admin/moderation/DomainsDetail.vue:291
 msgctxt "*/*/*/Noun"
 msgid "Artists"
 msgstr "Artistas"
 
 #: front/src/components/favorites/List.vue:34
-#: src/components/library/Albums.vue:25
-#: front/src/components/library/Artists.vue:25
+#: src/components/library/Albums.vue:29
+#: front/src/components/library/Artists.vue:29
 #: src/components/library/Radios.vue:44
 #: front/src/components/manage/library/AlbumsTable.vue:21
 #: front/src/components/manage/library/ArtistsTable.vue:21
 #: front/src/components/manage/library/EditsCardList.vue:39
 #: front/src/components/manage/library/LibrariesTable.vue:30
+#: front/src/components/manage/library/TagsTable.vue:21
 #: front/src/components/manage/library/TracksTable.vue:21
 #: front/src/components/manage/library/UploadsTable.vue:40
 #: front/src/components/manage/moderation/AccountsTable.vue:21
-#: front/src/components/manage/moderation/DomainsTable.vue:19
+#: front/src/components/manage/moderation/DomainsTable.vue:27
 #: front/src/components/manage/users/UsersTable.vue:19
+#: front/src/views/admin/moderation/ReportsList.vue:44
 #: front/src/views/content/libraries/FilesTable.vue:31
 #: front/src/views/playlists/List.vue:27
 msgctxt "Content/Search/Dropdown"
@@ -676,18 +749,24 @@ msgctxt "Content/Signup/Button.Label/Verb"
 msgid "Ask for a password reset"
 msgstr "Demandar un nòu senhal"
 
-#: front/src/views/admin/library/AlbumDetail.vue:198
-#: front/src/views/admin/library/ArtistDetail.vue:187
-#: front/src/views/admin/library/LibraryDetail.vue:176
-#: front/src/views/admin/library/TrackDetail.vue:250
+#: front/src/components/manage/moderation/ReportCard.vue:72
+msgctxt "Content/Moderation/*"
+msgid "Assigned to"
+msgstr "Atribuit a"
+
+#: front/src/views/admin/library/AlbumDetail.vue:214
+#: front/src/views/admin/library/ArtistDetail.vue:202
+#: front/src/views/admin/library/LibraryDetail.vue:195
+#: front/src/views/admin/library/TagDetail.vue:113
+#: front/src/views/admin/library/TrackDetail.vue:266
 #: front/src/views/admin/library/UploadDetail.vue:191
-#: front/src/views/admin/moderation/AccountsDetail.vue:274
-#: front/src/views/admin/moderation/DomainsDetail.vue:202
+#: front/src/views/admin/moderation/AccountsDetail.vue:285
+#: front/src/views/admin/moderation/DomainsDetail.vue:239
 msgctxt "Content/Moderation/Title"
 msgid "Audio content"
 msgstr "Contengut àudio"
 
-#: front/src/components/ShortcutsModal.vue:55
+#: front/src/components/ShortcutsModal.vue:92
 msgctxt "Popup/Keyboard shortcuts/Title"
 msgid "Audio player shortcuts"
 msgstr "Acorchis del lector àudio"
@@ -730,9 +809,9 @@ msgid "Back to settings"
 msgstr "Tornar als paramètres"
 
 #: front/src/components/library/TrackDetail.vue:48
-#: front/src/components/mixins/Translations.vue:55
+#: front/src/components/mixins/Translations.vue:67
 #: front/src/views/admin/library/UploadDetail.vue:227
-#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:68
 msgctxt "Content/Track/*/Noun"
 msgid "Bitrate"
 msgstr "Debit"
@@ -745,14 +824,8 @@ msgstr "O blocar tot"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:112
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Block everything from this account or domain. This will prevent any "
-"interaction with the entity, and purge related content (uploads, libraries, "
-"follows, etc.)"
-msgstr ""
-"O blocar tot d’aqueste compte estant. Empacharà totas interaccion amb "
-"l’entitat e purgarà lo contengut ligat (pistas, bibliotèca, seguiments, "
-"etc.)"
+msgid "Block everything from this account or domain. This will prevent any interaction with the entity, and purge related content (uploads, libraries, follows, etc.)"
+msgstr "O blocar tot d’aqueste compte estant. Empacharà totas interaccion amb l’entitat e purgarà lo contengut ligat (pistas, bibliotèca, seguiments, etc.)"
 
 #: front/src/components/Sidebar.vue:18 src/components/library/Library.vue:4
 msgctxt "*/Library/*/Verb"
@@ -764,6 +837,11 @@ msgctxt "Sidebar/Library/List item.Link/Verb"
 msgid "Browse library"
 msgstr "Percórrer la bibliotèca"
 
+#: front/src/components/Home.vue:132
+msgctxt "Content/Home/Link"
+msgid "Browse public content"
+msgstr "Percórrer lo contengut public"
+
 #: front/src/components/library/Albums.vue:4
 msgctxt "Content/Album/Title"
 msgid "Browsing albums"
@@ -794,43 +872,43 @@ msgctxt "Content/Album/Card"
 msgid "By %{ artist }"
 msgstr "De %{ artist }"
 
-#: front/src/views/content/remote/Card.vue:112
+#: front/src/views/content/remote/Card.vue:125
 msgctxt "Popup/Library/Paragraph"
 msgid "By unfollowing this library, you loose access to its content."
-msgstr ""
-"En quitar de seguir aquesta bibliotèca, perdretz l’accès a son contengut."
+msgstr "En quitar de seguir aquesta bibliotèca, perdretz l’accès a son contengut."
 
-#: front/src/views/admin/library/AlbumDetail.vue:214
-#: front/src/views/admin/library/ArtistDetail.vue:203
-#: front/src/views/admin/library/LibraryDetail.vue:192
-#: front/src/views/admin/library/TrackDetail.vue:266
+#: front/src/views/admin/library/AlbumDetail.vue:230
+#: front/src/views/admin/library/ArtistDetail.vue:218
+#: front/src/views/admin/library/LibraryDetail.vue:211
+#: front/src/views/admin/library/TrackDetail.vue:282
 #: front/src/views/admin/library/UploadDetail.vue:208
-#: front/src/views/admin/moderation/AccountsDetail.vue:290
-#: front/src/views/admin/moderation/DomainsDetail.vue:217
+#: front/src/views/admin/moderation/AccountsDetail.vue:301
+#: front/src/views/admin/moderation/DomainsDetail.vue:254
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Cached size"
 msgstr "Talha del cache"
 
 #: front/src/components/SetInstanceModal.vue:37
 #: front/src/components/common/DangerousButton.vue:17
-#: front/src/components/library/AlbumBase.vue:36
-#: front/src/components/library/ArtistBase.vue:47
-#: front/src/components/library/EditForm.vue:95
-#: front/src/components/library/TrackBase.vue:55
+#: front/src/components/library/AlbumBase.vue:37
+#: front/src/components/library/ArtistBase.vue:48
+#: front/src/components/library/EditForm.vue:107
+#: front/src/components/library/TrackBase.vue:53
 #: front/src/components/library/radios/Filter.vue:53
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:54
 #: front/src/components/moderation/FilterModal.vue:39
+#: front/src/components/moderation/ReportModal.vue:59
 #: front/src/components/playlists/PlaylistModal.vue:26
 #: front/src/components/playlists/PlaylistModal.vue:77
+#: front/src/views/playlists/Detail.vue:62
 msgctxt "*/*/Button.Label/Verb"
 msgid "Cancel"
 msgstr "Anullar"
 
-#: front/src/views/content/remote/Card.vue:97
-#, fuzzy
+#: front/src/views/content/remote/Card.vue:110
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Cancel follow request"
-msgstr "Demandas d’abonament en espèra"
+msgstr "Anullar lad emanda d’abonament"
 
 #: front/src/components/library/radios/Builder.vue:64
 msgctxt "Content/Radio/Table.Label/Noun (Value is a number of Tracks)"
@@ -842,6 +920,14 @@ msgctxt "Content/Library/Help text"
 msgid "Cannot upload this file, ensure it is not too big"
 msgstr "Mandadís del fichièr impossible, asseguratz-vos qu’es pas tròp pesuc"
 
+#: front/src/components/manage/moderation/ReportCard.vue:30
+#: front/src/components/mixins/Translations.vue:42
+#: front/src/components/moderation/ReportCategoryDropdown.vue:2
+#: front/src/components/mixins/Translations.vue:43
+msgctxt "*/*/*"
+msgid "Category"
+msgstr "Categoria"
+
 #: front/src/components/Footer.vue:21
 msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
 msgid "Change language"
@@ -857,6 +943,11 @@ msgctxt "Content/Settings/Button.Label"
 msgid "Change password"
 msgstr "Cambiar lo senhal"
 
+#: front/src/components/Footer.vue:37
+msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
+msgid "Change theme"
+msgstr "Cambiar lo tèma"
+
 #: front/src/views/auth/PasswordResetConfirm.vue:62
 msgctxt "*/Signup/Title"
 msgid "Change your password"
@@ -874,43 +965,32 @@ msgstr "Cambiament sincronizat amb lo servidor"
 
 #: front/src/components/auth/Settings.vue:71
 msgctxt "Content/Settings/Paragraph'"
-msgid ""
-"Changing your password will also change your Subsonic API password if you "
-"have requested one."
-msgstr ""
-"L’actualizacion de vòstra senhal cambiarà tanben lo de l’API Subsonic se "
-"n’avètz un."
+msgid "Changing your password will also change your Subsonic API password if you have requested one."
+msgstr "L’actualizacion de vòstra senhal cambiarà tanben lo de l’API Subsonic se n’avètz un."
 
 #: front/src/components/auth/Settings.vue:98
 msgctxt "Popup/Settings/Paragraph"
 msgid "Changing your password will have the following consequences:"
 msgstr "Lo cambiament de senhal a las consequéncias seguentas :"
 
-#: front/src/components/Footer.vue:40
+#: front/src/components/Footer.vue:48
 msgctxt "Footer/*/List item.Link"
 msgid "Chat room"
 msgstr "Sala de discutida"
 
 #: front/src/components/auth/ApplicationForm.vue:24
 msgctxt "Content/Applications/Paragraph/"
-msgid ""
-"Checking the parent \"Read\" or \"Write\" scopes implies access to all the "
-"corresponding children scopes."
-msgstr ""
-"Causir l’autorizacion «Lectura» o «Escritura» sul parent implica l’accès a "
-"totes los jos elements correspondents."
+msgid "Checking the parent \"Read\" or \"Write\" scopes implies access to all the corresponding children scopes."
+msgstr "Causir l’autorizacion «Lectura» o «Escritura» sul parent implica l’accès a totes los jos elements correspondents."
 
 #: front/src/components/SetInstanceModal.vue:2
 msgctxt "Popup/Instance/Title"
 msgid "Choose your instance"
 msgstr "Causissètz vòstra instància"
 
-#: front/src/components/manage/users/InvitationForm.vue:37
-msgctxt "Content/Admin/Button.Label/Verb"
-msgid "Clear"
-msgstr "Escafar"
-
 #: front/src/components/library/EditForm.vue:75
+#: front/src/components/library/EditForm.vue:88
+#: front/src/components/manage/users/InvitationForm.vue:37
 msgctxt "Content/Library/Button.Label"
 msgid "Clear"
 msgstr "Escafar"
@@ -921,47 +1001,45 @@ msgctxt "*/Playlist/Button.Label/Verb"
 msgid "Clear playlist"
 msgstr "Escafar la lista de lectura"
 
-#: front/src/components/audio/Player.vue:642
+#: front/src/components/ShortcutsModal.vue:144
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Clear queue"
+msgstr "Voidar la fila"
+
+#: front/src/components/audio/Player.vue:668
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Clear your queue"
 msgstr "Voidar la fila"
 
-#: front/src/components/Home.vue:44
-msgctxt "Content/Home/List item/Verb"
-msgid "Click once, listen for hours using built-in radios"
-msgstr "Amb un clic, escotatz d’oras de musica a la ràdio"
-
 #: front/src/components/mixins/Translations.vue:21
 #: front/src/components/mixins/Translations.vue:22
 msgctxt "Content/Library/Link.Title"
-msgid ""
-"Click to display more information about the import process for this upload"
-msgstr ""
-"Clicar per mostrar mai d’informacion tocant lo processús d’import d’aqueste "
-"mandadís"
+msgid "Click to display more information about the import process for this upload"
+msgstr "Clicar per mostrar mai d’informacion tocant lo processús d’import d’aqueste mandadís"
 
 #: front/src/components/library/FileUpload.vue:82
 msgctxt "Content/Library/Paragraph/Call to action"
 msgid "Click to select files to upload or drag and drop files or directories"
-msgstr ""
-"Clicatz per causir los fichièrs d’enviar o lisatz los fichièrs o repertòris"
+msgstr "Clicatz per causir los fichièrs d’enviar o lisatz los fichièrs o repertòris"
 
+#: front/src/components/ShortcutsModal.vue:38
 #: front/src/components/federation/FetchButton.vue:85
 #: front/src/components/library/ImportStatusModal.vue:79
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:34
 msgctxt "*/*/Button.Label/Verb"
 msgid "Close"
 msgstr "Tampar"
 
-#: front/src/components/ShortcutsModal.vue:20
-msgctxt "Popup/Keyboard shortcuts/Button.Label/Verb"
-msgid "Close"
-msgstr "Tampar"
-
 #: front/src/components/federation/FetchButton.vue:88
 msgctxt "*/*/Button.Label/Verb"
 msgid "Close and reload page"
 msgstr "Tampar e tornar cargar la pagina"
 
+#: front/src/components/About.vue:94
+msgctxt "*/*/*/State of registrations"
+msgid "Closed"
+msgstr "Tampadas"
+
 #: front/src/components/manage/users/InvitationForm.vue:26
 #: front/src/components/manage/users/InvitationsTable.vue:42
 msgctxt "Content/Admin/Table.Label/Noun"
@@ -969,8 +1047,8 @@ msgid "Code"
 msgstr "Còdi"
 
 #: front/src/components/audio/album/Card.vue:41
-#: front/src/components/audio/artist/Card.vue:33
-msgctxt "Content/*/Card.Link/Verb"
+#: front/src/components/common/CollapseLink.vue:3
+msgctxt "*/*/Button,Label"
 msgid "Collapse"
 msgstr "Plegar"
 
@@ -994,44 +1072,46 @@ msgctxt "Content/Signup/Form.Label"
 msgid "Confirmation code"
 msgstr "Còdi de confirmacion"
 
+#: front/src/components/About.vue:67 src/components/Home.vue:65
+msgctxt "Content/Home/Header/Name"
+msgid "Contact"
+msgstr "Contacte"
+
 #: front/src/components/moderation/FilterModal.vue:90
 msgctxt "*/Moderation/Message"
 msgid "Content filter successfully added"
 msgstr "Filtre de contengut corrèctament ajustat"
 
-#: front/src/components/mixins/Translations.vue:96
-#: front/src/components/mixins/Translations.vue:97
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Content filters"
-msgstr "Filtres de contengut"
-
 #: front/src/components/auth/Settings.vue:116
+#: front/src/components/mixins/Translations.vue:108
+#: front/src/components/mixins/Translations.vue:109
 msgctxt "Content/Settings/Title/Noun"
 msgid "Content filters"
 msgstr "Filtres de contengut"
 
 #: front/src/components/auth/Settings.vue:119
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"Content filters help you hide content you don't want to see on the service."
-msgstr ""
-"Los filtres de contengut vos ajudan a amagar los contenguts que volètz pas "
-"veire sus aqueste servici."
+msgid "Content filters help you hide content you don't want to see on the service."
+msgstr "Los filtres de contengut vos ajudan a amagar los contenguts que volètz pas veire sus aqueste servici."
 
 #: front/src/components/common/ActionTable.vue:8
 msgctxt "Content/*/Button.Help text.Paragraph"
 msgid "Content have been updated, click refresh to see up-to-date content"
-msgstr ""
-"Lo contengut es estat actualizat, clicar per tornar cargar e veire lo "
-"contengut a jorn"
+msgstr "Lo contengut es estat actualizat, clicar per tornar cargar e veire lo contengut a jorn"
 
-#: front/src/components/Footer.vue:48
+#: front/src/components/About.vue:46
+msgctxt "Content/About/Header"
+msgid "Contents"
+msgstr "Contengut"
+
+#: front/src/components/Footer.vue:56
 msgctxt "Footer/*/List item.Link"
 msgid "Contribute"
 msgstr "Contribuir"
 
-#: front/src/components/audio/EmbedWizard.vue:19
+#: front/src/components/audio/EmbedWizard.vue:29
 #: front/src/components/common/CopyInput.vue:8
+#: front/src/components/forms/PasswordInput.vue:43
 msgctxt "*/*/Button.Label/Short, Verb"
 msgid "Copy"
 msgstr "Copiar"
@@ -1046,14 +1126,14 @@ msgctxt "Content/Auth/Paragraph"
 msgid "Copy-paste the following code in the application:"
 msgstr "Copiatz-pegatz lo còdi seguent dins l’aplicacion :"
 
-#: front/src/components/audio/EmbedWizard.vue:21
+#: front/src/components/audio/EmbedWizard.vue:31
 msgctxt "Popup/Embed/Paragraph"
 msgid "Copy/paste this code in your website HTML"
 msgstr "Copiatz / Pegatz aqueste còdi al vòstre site HTML"
 
 #: front/src/components/library/TrackDetail.vue:10
-#: front/src/views/admin/library/TrackDetail.vue:153
-msgctxt "Content/Track/Table.Label/Noun"
+#: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:77
+msgctxt "Content/Track/*/Noun"
 msgid "Copyright"
 msgstr "Copyright"
 
@@ -1067,29 +1147,20 @@ msgctxt "Content/Library/Error message.Title"
 msgid "Could not fetch remote library"
 msgstr "Error en recuperar la bibliotèca alonhada"
 
-#: front/src/components/Home.vue:80
-msgctxt "Content/Home/List item"
-msgid "Covers, lyrics, our goal is to have them all ;)"
-msgstr "Jaqueta d’albums, paraulas, nòstra tòca es d’o aver tot ;)"
-
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:58
 msgctxt "Content/Moderation/Card.Button.Label/Verb"
 msgid "Create"
 msgstr "Crear"
 
-#: front/src/components/auth/Signup.vue:4
+#: front/src/views/auth/Signup.vue:4
 msgctxt "Content/Signup/Title"
 msgid "Create a funkwhale account"
 msgstr "Crear un compte funkwhale"
 
-#: front/src/components/auth/Settings.vue:220
-msgctxt "Content/Settings/Button.Label"
-msgid "Create a new application"
-msgstr "Crear una nòva aplicacion"
-
 #: front/src/components/auth/ApplicationNew.vue:8
 #: front/src/components/auth/ApplicationNew.vue:41
-msgctxt "Content/Applications/Title"
+#: front/src/components/auth/Settings.vue:220
+msgctxt "Content/Settings/Button.Label"
 msgid "Create a new application"
 msgstr "Crear una nòva aplicacion"
 
@@ -1103,7 +1174,7 @@ msgctxt "Popup/Playlist/Title/Verb"
 msgid "Create a new playlist"
 msgstr "Crear una nòva lista de lectura"
 
-#: front/src/components/Sidebar.vue:57 src/components/auth/Login.vue:17
+#: front/src/components/Sidebar.vue:57 src/components/auth/LoginForm.vue:15
 msgctxt "*/Signup/Link/Verb"
 msgid "Create an account"
 msgstr "Crear un compte"
@@ -1118,7 +1189,7 @@ msgctxt "Content/Library/Button.Label/Verb"
 msgid "Create library"
 msgstr "Crear una bibliotèca"
 
-#: front/src/components/auth/Signup.vue:53
+#: front/src/components/auth/SignupForm.vue:49
 msgctxt "Content/Signup/Button.Label"
 msgid "Create my account"
 msgstr "Crear mon compte"
@@ -1143,11 +1214,13 @@ msgstr "Crear vòstra pròpria ràdio"
 #: front/src/components/manage/library/AlbumsTable.vue:44
 #: front/src/components/manage/library/ArtistsTable.vue:43
 #: front/src/components/manage/library/LibrariesTable.vue:54
+#: front/src/components/manage/library/TagsTable.vue:45
 #: front/src/components/manage/library/TracksTable.vue:44
 #: front/src/components/manage/library/UploadsTable.vue:66
+#: front/src/components/manage/moderation/ReportCard.vue:43
 #: front/src/components/manage/users/InvitationsTable.vue:40
-#: front/src/components/mixins/Translations.vue:43
-#: front/src/components/mixins/Translations.vue:44
+#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/mixins/Translations.vue:54
 msgctxt "Content/*/*/Noun"
 msgid "Creation date"
 msgstr "Data de creacion"
@@ -1157,6 +1230,11 @@ msgctxt "Content/Settings/Title/Noun"
 msgid "Current avatar"
 msgstr "Avatar actual"
 
+#: front/src/components/admin/SettingsGroup.vue:67
+msgctxt "Content/Settings/Title/Noun"
+msgid "Current image"
+msgstr "Imatge actual"
+
 #: front/src/views/content/libraries/DetailArea.vue:4
 msgctxt "Content/Library/Title"
 msgid "Current library"
@@ -1172,18 +1250,20 @@ msgctxt "Content/Library/Title"
 msgid "Current usage"
 msgstr "Utilizacion actuala"
 
+#: front/src/components/Footer.vue:94
+msgctxt "Footer/Settings/Dropdown.Label/Theme name"
+msgid "Dark"
+msgstr "Escur"
+
 #: front/src/components/federation/FetchButton.vue:53
 msgctxt "*/*/Error"
 msgid "Data returned by the remote server had invalid or missing attributes"
-msgstr ""
-"Las donadas tornadas pel servidor alonhat an d’atributs mancants o invalids"
+msgstr "Las donadas tornadas pel servidor alonhat an d’atributs mancants o invalids"
 
 #: front/src/components/federation/FetchButton.vue:17
 msgctxt "Popup/*/Message.Content"
 msgid "Data was refreshed successfully from remote server."
-msgstr ""
-"Las donadas son estadas actualizadas corrèctament del servidors alonhat "
-"estant."
+msgstr "Las donadas son estadas actualizadas corrèctament del servidors alonhat estant."
 
 #: front/src/views/content/libraries/Detail.vue:27
 msgctxt "Content/Library/Table.Label"
@@ -1195,7 +1275,7 @@ msgctxt "Popup/Import/Table.Label/Noun"
 msgid "Debug information"
 msgstr "Informacions de debug"
 
-#: front/src/components/ShortcutsModal.vue:75
+#: front/src/components/ShortcutsModal.vue:128
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Decrease volume"
 msgstr "Reduire lo volum"
@@ -1207,23 +1287,29 @@ msgstr "Reduire lo volum"
 #: front/src/components/manage/library/AlbumsTable.vue:188
 #: front/src/components/manage/library/ArtistsTable.vue:178
 #: front/src/components/manage/library/LibrariesTable.vue:205
+#: front/src/components/manage/library/TagsTable.vue:179
 #: front/src/components/manage/library/TracksTable.vue:188
 #: front/src/components/manage/library/UploadsTable.vue:255
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:61
+#: front/src/components/manage/moderation/NotesThread.vue:24
+#: front/src/components/manage/moderation/NotesThread.vue:29
+#: front/src/components/manage/moderation/ReportCard.vue:360
 #: front/src/components/manage/users/InvitationsTable.vue:167
-#: front/src/views/admin/library/AlbumDetail.vue:72
-#: front/src/views/admin/library/AlbumDetail.vue:77
-#: front/src/views/admin/library/ArtistDetail.vue:71
+#: front/src/views/admin/library/AlbumDetail.vue:78
+#: front/src/views/admin/library/AlbumDetail.vue:83
 #: front/src/views/admin/library/ArtistDetail.vue:76
+#: front/src/views/admin/library/ArtistDetail.vue:81
 #: front/src/views/admin/library/LibraryDetail.vue:58
 #: front/src/views/admin/library/LibraryDetail.vue:63
-#: front/src/views/admin/library/TrackDetail.vue:71
-#: front/src/views/admin/library/TrackDetail.vue:76
+#: front/src/views/admin/library/TagDetail.vue:41
+#: front/src/views/admin/library/TagDetail.vue:46
+#: front/src/views/admin/library/TrackDetail.vue:77
+#: front/src/views/admin/library/TrackDetail.vue:82
 #: front/src/views/admin/library/UploadDetail.vue:65
 #: front/src/views/admin/library/UploadDetail.vue:70
 #: front/src/views/content/libraries/FilesTable.vue:222
 #: front/src/views/content/libraries/Form.vue:29
-#: src/views/playlists/Detail.vue:34
+#: src/views/playlists/Detail.vue:42
 msgctxt "*/*/*/Verb"
 msgid "Delete"
 msgstr "Suprimir"
@@ -1248,7 +1334,19 @@ msgctxt "Popup/Moderation/Button.Label/Verb"
 msgid "Delete moderation rule"
 msgstr "Suprimir la règla de moderacion"
 
-#: front/src/views/playlists/Detail.vue:39
+#: front/src/components/auth/Settings.vue:274
+#: src/components/auth/Settings.vue:302
+#, fuzzy
+msgctxt "*/*/Button.Label"
+msgid "Delete my account"
+msgstr "Suprimir mon compte"
+
+#: front/src/components/auth/Settings.vue:297
+msgctxt "*/*/Button.Label"
+msgid "Delete my account…"
+msgstr "Suprimir mon compte…"
+
+#: front/src/views/playlists/Detail.vue:47
 msgctxt "Popup/Playlist/Button.Label/Verb"
 msgid "Delete playlist"
 msgstr "Suprimir la lista de lectura"
@@ -1258,13 +1356,23 @@ msgctxt "Popup/Radio/Button.Label/Verb"
 msgid "Delete radio"
 msgstr "Suprimir la ràdio"
 
-#: front/src/views/admin/library/AlbumDetail.vue:73
-#: front/src/views/admin/library/TrackDetail.vue:72
+#: front/src/components/manage/moderation/ReportCard.vue:357
+msgctxt "Content/Moderation/Button/Verb"
+msgid "Delete reported object"
+msgstr "Escafar l’objècte senhalat"
+
+#: front/src/components/manage/moderation/ReportCard.vue:358
+msgctxt "Content/Moderation/Popup/Header"
+msgid "Delete reported object?"
+msgstr "Escafar l’objècte senhalat ?"
+
+#: front/src/views/admin/library/AlbumDetail.vue:79
+#: front/src/views/admin/library/TrackDetail.vue:78
 msgctxt "Popup/Library/Title"
 msgid "Delete this album?"
 msgstr "Suprimir aqueste album ?"
 
-#: front/src/views/admin/library/ArtistDetail.vue:72
+#: front/src/views/admin/library/ArtistDetail.vue:77
 msgctxt "Popup/Library/Title"
 msgid "Delete this artist?"
 msgstr "Suprimir aqueste artista ?"
@@ -1280,60 +1388,69 @@ msgctxt "Popup/Moderation/Title"
 msgid "Delete this moderation rule?"
 msgstr "Suprimir aquesta règla de moderacion ?"
 
+#: front/src/components/manage/moderation/NotesThread.vue:25
+msgctxt "Popup/Moderation/Title"
+msgid "Delete this note?"
+msgstr "Suprimir aqueste nòta ?"
+
 #: front/src/components/library/EditCard.vue:94
 msgctxt "Popup/Library/Title"
 msgid "Delete this suggestion?"
 msgstr "Suprimir aquesta règla de moderacion ?"
 
+#: front/src/views/admin/library/TagDetail.vue:42
+msgctxt "Popup/Library/Title"
+msgid "Delete this tag?"
+msgstr "Suprimir aquesta etiqueta ?"
+
 #: front/src/views/admin/library/UploadDetail.vue:66
 msgctxt "Popup/Library/Title"
 msgid "Delete this upload?"
 msgstr "Suprimir aqueste mandadís ?"
 
 #: front/src/components/favorites/List.vue:35
-#: src/components/library/Albums.vue:26
-#: front/src/components/library/Artists.vue:26
+#: src/components/library/Albums.vue:30
+#: front/src/components/library/Artists.vue:30
 #: src/components/library/Radios.vue:47
 #: front/src/components/manage/library/AlbumsTable.vue:22
 #: front/src/components/manage/library/ArtistsTable.vue:22
 #: front/src/components/manage/library/EditsCardList.vue:40
 #: front/src/components/manage/library/LibrariesTable.vue:31
+#: front/src/components/manage/library/TagsTable.vue:22
 #: front/src/components/manage/library/TracksTable.vue:22
 #: front/src/components/manage/library/UploadsTable.vue:41
 #: front/src/components/manage/moderation/AccountsTable.vue:22
-#: front/src/components/manage/moderation/DomainsTable.vue:20
+#: front/src/components/manage/moderation/DomainsTable.vue:28
 #: front/src/components/manage/users/UsersTable.vue:20
+#: front/src/views/admin/moderation/ReportsList.vue:45
 #: front/src/views/content/libraries/FilesTable.vue:32
 #: front/src/views/playlists/List.vue:28
 msgctxt "Content/Search/Dropdown"
 msgid "Descending"
 msgstr "Descendent"
 
-#: front/src/views/admin/library/LibraryDetail.vue:123
-msgctxt "*/*/*/Noun"
-msgid "Description"
-msgstr "Descripcion"
+#: front/src/components/manage/moderation/NoteForm.vue:37
+msgctxt "Content/Moderation/Placeholder"
+msgid "Describe what actions have been taken, or any other related updates…"
+msgstr "Descrivètz quinas accions son estadas presas, o tota autra mesa a jorn ligada…"
 
 #: front/src/components/library/radios/Builder.vue:25
+#: front/src/views/admin/library/LibraryDetail.vue:132
 #: front/src/views/content/libraries/Form.vue:14
-msgctxt "Content/*/Input.Label/Noun"
+msgctxt "*/*/*/Noun"
 msgid "Description"
 msgstr "Descripcion"
 
 #: front/src/views/content/libraries/Card.vue:48
-#: src/views/content/remote/Card.vue:54
+#: src/views/content/remote/Card.vue:67
 msgctxt "Content/Library/Card.Button.Label/Noun"
 msgid "Details"
 msgstr "Detalhs"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:491
+#: front/src/views/admin/moderation/AccountsDetail.vue:511
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Determine how much content the user can upload. Leave empty to use the "
-"default value of the instance."
-msgstr ""
-"Definissètz la quantitat de contengut que l’utilizaire pòt enviar. Daissatz "
-"void per emplegar las valors per defaut de l’instància."
+msgid "Determine how much content the user can upload. Leave empty to use the default value of the instance."
+msgstr "Definissètz la quantitat de contengut que l’utilizaire pòt enviar. Daissatz void per emplegar las valors per defaut de l’instància."
 
 #: front/src/components/mixins/Translations.vue:8
 #: front/src/components/mixins/Translations.vue:9
@@ -1342,38 +1459,50 @@ msgid "Determine the visibility level of your activity"
 msgstr "Determinatz lo nivèl de visibilitat de vòstra activitat"
 
 #: front/src/components/auth/Settings.vue:104
-#: front/src/components/auth/SubsonicTokenForm.vue:51
+#: front/src/components/auth/SubsonicTokenForm.vue:56
 msgctxt "Popup/Settings/Button.Label"
 msgid "Disable access"
 msgstr "Desactivar l’accès"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:48
+#: front/src/components/auth/SubsonicTokenForm.vue:53
 msgctxt "Content/Settings/Button.Label/Verb"
 msgid "Disable Subsonic access"
 msgstr "Desactivar l’accès via Subsonic"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:49
+#: front/src/components/auth/SubsonicTokenForm.vue:54
 msgctxt "Popup/Settings/Title"
 msgid "Disable Subsonic API access?"
 msgstr "Desactivar l’accès a l’API Subsonic ?"
 
+#: front/src/components/About.vue:118 src/components/About.vue:131
+#: front/src/components/About.vue:144
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:18
 #: front/src/views/admin/moderation/AccountsDetail.vue:157
 #: front/src/views/admin/moderation/AccountsDetail.vue:161
-msgctxt "*/*/*"
+msgctxt "*/*/*/State of feature"
 msgid "Disabled"
-msgstr "Desactivat"
+msgstr "Desactivada"
 
-#: front/src/views/admin/library/TrackDetail.vue:145
+#: front/src/views/admin/library/TrackDetail.vue:151
 msgctxt "*/*/*/Noun"
 msgid "Disc number"
 msgstr "Numèro del disc"
 
+#: front/src/components/Home.vue:157
+msgctxt "Content/Home/Link"
+msgid "Discover everything you need to know about Funkwhale and its features"
+msgstr "Descobrissètz tot çò que devètz saber de Funkwhale e de sas foncionalitats"
+
 #: front/src/components/auth/SubsonicTokenForm.vue:13
 msgctxt "Content/Settings/Link"
 msgid "Discover how to use Funkwhale from other apps"
 msgstr "Aprenètz a utilizar Funkwhale amb d’autras aplicacions"
 
+#: front/src/views/Notifications.vue:45
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Discover other ways to help"
+msgstr "Descobrissètz d’autras biaisses d’ajudar"
+
 #: front/src/views/admin/moderation/AccountsDetail.vue:132
 msgctxt "'Content/*/*/Noun'"
 msgid "Display name"
@@ -1386,12 +1515,13 @@ msgstr "Mostrar publicament"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:122
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Do not download any media file (audio, album cover, account avatar…) from "
-"this account or domain. This will purge existing content as well."
-msgstr ""
-"Telecargar pas cap de mèdia (àudio, album, tampa, avatar de compte…) "
-"d’aqueste compte o domeni. Purgarà tanben lo contengut existent."
+msgid "Do not download any media file (audio, album cover, account avatar…) from this account or domain. This will purge existing content as well."
+msgstr "Telecargar pas cap de mèdia (àudio, album, tampa, avatar de compte…) d’aqueste compte o domeni. Purgarà tanben lo contengut existent."
+
+#: front/src/views/Notifications.vue:36
+msgctxt "Content/Notifications/Header"
+msgid "Do you like Funkwhale?"
+msgstr "Vos agrada Funkwhale ?"
 
 #: front/src/components/playlists/Editor.vue:51
 msgctxt "Popup/Playlist/Title"
@@ -1403,7 +1533,7 @@ msgctxt "Modal/*/Title"
 msgid "Do you want to confirm this action?"
 msgstr "Volètz confirmar aquesta accion ?"
 
-#: front/src/views/playlists/Detail.vue:35
+#: front/src/views/playlists/Detail.vue:43
 msgctxt "Popup/Playlist/Title/Call to action"
 msgid "Do you want to delete the playlist \"%{ playlist }\"?"
 msgstr "Volètz suprimir la lista de lectura « %{ playlist } »  ?"
@@ -1413,6 +1543,11 @@ msgctxt "Popup/Radio/Title"
 msgid "Do you want to delete the radio \"%{ radio }\"?"
 msgstr "Volètz suprimir la ràdio « %{ playlist } »  ?"
 
+#: front/src/components/auth/Settings.vue:298
+msgctxt "Popup/Settings/Title"
+msgid "Do you want to delete your account?"
+msgstr "Volètz suprimir vòstre compte ?"
+
 #: front/src/components/moderation/FilterModal.vue:3
 msgctxt "Popup/Moderation/Title/Verb"
 msgid "Do you want to hide content from artist \"%{ name }\"?"
@@ -1425,7 +1560,12 @@ msgid_plural "Do you want to launch %{ action } on %{ count } elements?"
 msgstr[0] "Volètz lançar l’accion « %{ action } » sus %{ count } element ?"
 msgstr[1] "Volètz lançar l’accion « %{ action } » sus %{ count } elements ?"
 
-#: front/src/components/Sidebar.vue:118
+#: front/src/components/moderation/ReportModal.vue:3
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Do you want to report this object?"
+msgstr "Volètz senhalar aqueste objècte ?"
+
+#: front/src/components/Sidebar.vue:122
 msgctxt "Sidebar/Queue/Message"
 msgid "Do you want to restore your previous queue?"
 msgstr "Volètz restablir vòstra fila precedenta ?"
@@ -1441,26 +1581,33 @@ msgstr "Documentacion"
 #: front/src/components/manage/library/TracksTable.vue:42
 #: front/src/components/manage/library/UploadsTable.vue:62
 #: front/src/components/manage/moderation/AccountsTable.vue:40
-#: front/src/components/mixins/Translations.vue:60
-#: front/src/views/admin/library/AlbumDetail.vue:118
-#: front/src/views/admin/library/ArtistDetail.vue:107
-#: front/src/views/admin/library/LibraryDetail.vue:114
-#: front/src/views/admin/library/TrackDetail.vue:170
+#: front/src/components/manage/moderation/ReportCard.vue:169
+#: front/src/components/manage/moderation/ReportCard.vue:179
+#: front/src/components/mixins/Translations.vue:72
+#: front/src/views/admin/library/AlbumDetail.vue:124
+#: front/src/views/admin/library/ArtistDetail.vue:112
+#: front/src/views/admin/library/LibraryDetail.vue:123
+#: front/src/views/admin/library/TrackDetail.vue:176
 #: front/src/views/admin/library/UploadDetail.vue:121
 #: front/src/views/admin/moderation/AccountsDetail.vue:123
-#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/mixins/Translations.vue:73
 msgctxt "Content/Moderation/*/Noun"
 msgid "Domain"
 msgstr "Domenu"
 
-#: front/src/views/admin/moderation/Base.vue:5
+#: front/src/views/admin/moderation/Base.vue:8
 #: front/src/views/admin/moderation/DomainsList.vue:3
-#: front/src/views/admin/moderation/DomainsList.vue:48
+#: front/src/views/admin/moderation/DomainsList.vue:54
 msgctxt "*/Moderation/*/Noun"
 msgid "Domains"
 msgstr "Domenis"
 
-#: front/src/components/library/TrackBase.vue:39
+#: front/src/views/Notifications.vue:42
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Donate"
+msgstr "Donar"
+
+#: front/src/components/library/TrackBase.vue:37
 #: front/src/views/admin/library/UploadDetail.vue:58
 msgctxt "Content/Track/Link/Verb"
 msgid "Download"
@@ -1473,10 +1620,10 @@ msgstr "Lisatz las linhas per triar las pistas de la lista de lectura"
 
 #: front/src/components/audio/track/Table.vue:10
 #: front/src/components/library/TrackDetail.vue:30
-#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:68
 #: front/src/views/admin/library/UploadDetail.vue:238
 #: front/src/views/content/libraries/FilesTable.vue:60
-#: front/src/components/mixins/Translations.vue:57
+#: front/src/components/mixins/Translations.vue:69
 msgctxt "Content/*/*"
 msgid "Duration"
 msgstr "Durada"
@@ -1486,41 +1633,27 @@ msgctxt "Content/Signup/Message"
 msgid "E-mail address confirmed"
 msgstr "Corrièl confirmat"
 
-#: front/src/components/Home.vue:88
-msgctxt "Content/Home/Title"
-msgid "Easy to use"
-msgstr "Simple d’utilizar"
-
-#: front/src/components/library/AlbumBase.vue:68
-#: front/src/components/library/ArtistBase.vue:79
-#: front/src/components/library/TrackBase.vue:87
+#: front/src/components/auth/Settings.vue:246
+#: src/components/library/AlbumBase.vue:73
+#: front/src/components/library/ArtistBase.vue:84
+#: front/src/components/library/TrackBase.vue:89
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:45
 #: front/src/components/radios/Card.vue:23
-#: src/views/admin/library/AlbumDetail.vue:65
-#: front/src/views/admin/library/ArtistDetail.vue:64
-#: front/src/views/admin/library/TrackDetail.vue:64
+#: src/views/admin/library/AlbumDetail.vue:71
+#: front/src/views/admin/library/ArtistDetail.vue:69
+#: front/src/views/admin/library/TrackDetail.vue:70
 #: front/src/views/content/libraries/Detail.vue:9
 #: src/views/playlists/Detail.vue:31
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Edit"
 msgstr "Modificar"
 
-#: front/src/components/auth/Settings.vue:246
-msgctxt "Content/Settings/Button.Label"
-msgid "Edit"
-msgstr "Modificar"
-
 #: front/src/components/auth/ApplicationEdit.vue:30
 #: front/src/components/auth/ApplicationEdit.vue:75
 msgctxt "Content/Applications/Title"
 msgid "Edit application"
 msgstr "Modificar l’aplicacion"
 
-#: front/src/components/About.vue:22
-msgctxt "Content/Settings/Button.Label/Verb"
-msgid "Edit instance info"
-msgstr "Editrar las informacions d’aquesta instància"
-
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:3
 msgctxt "Content/Moderation/Card.Title/Verb"
 msgid "Edit moderation rule"
@@ -1541,23 +1674,20 @@ msgctxt "Content/*/Title"
 msgid "Edit this track"
 msgstr "Modificar aquesta pista"
 
-#: front/src/views/admin/library/AlbumDetail.vue:182
-#: front/src/views/admin/library/ArtistDetail.vue:171
+#: front/src/components/mixins/Translations.vue:116
+#: front/src/views/admin/library/AlbumDetail.vue:198
+#: front/src/views/admin/library/ArtistDetail.vue:186
 #: front/src/views/admin/library/Base.vue:5
 #: src/views/admin/library/EditsList.vue:24
-#: front/src/views/admin/library/TrackDetail.vue:234
+#: front/src/views/admin/library/TrackDetail.vue:250
+#: front/src/components/mixins/Translations.vue:117
 msgctxt "*/Admin/*/Noun"
 msgid "Edits"
 msgstr "Modificacions"
 
-#: front/src/components/mixins/Translations.vue:104
-#: front/src/components/mixins/Translations.vue:105
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Edits"
-msgstr "Modificacions"
-
-#: front/src/components/auth/Signup.vue:30
+#: front/src/components/auth/SignupForm.vue:26
 #: front/src/components/manage/users/UsersTable.vue:38
+#: front/src/components/moderation/ReportModal.vue:31
 msgctxt "Content/*/*/Noun"
 msgid "Email"
 msgstr "Corrièl"
@@ -1567,52 +1697,60 @@ msgctxt "Content/*/*"
 msgid "Email address"
 msgstr "Adreça electronica"
 
-#: front/src/components/library/AlbumBase.vue:53
-#: front/src/components/library/ArtistBase.vue:64
-#: front/src/components/library/TrackBase.vue:72
+#: front/src/components/library/AlbumBase.vue:54
+#: front/src/components/library/ArtistBase.vue:65
+#: front/src/components/library/TrackBase.vue:70
+#: src/views/playlists/Detail.vue:38
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Embed"
 msgstr "Integrar"
 
-#: front/src/components/audio/EmbedWizard.vue:20
+#: front/src/components/audio/EmbedWizard.vue:30
 msgctxt "Popup/Embed/Input.Label/Noun"
 msgid "Embed code"
 msgstr "Còdi d’integracion"
 
-#: front/src/components/library/AlbumBase.vue:26
+#: front/src/components/library/AlbumBase.vue:27
 msgctxt "Popup/Album/Title/Verb"
 msgid "Embed this album on your website"
 msgstr "Integrar aqueste album a un site web"
 
-#: front/src/components/library/ArtistBase.vue:37
+#: front/src/components/library/ArtistBase.vue:38
 msgctxt "Popup/Artist/Title/Verb"
 msgid "Embed this artist work on your website"
 msgstr "Integrar aquesta pista a vòstre site web"
 
-#: front/src/components/library/TrackBase.vue:45
+#: front/src/views/playlists/Detail.vue:52
+msgctxt "Popup/Album/Title/Verb"
+msgid "Embed this playlist on your website"
+msgstr "Integrar aquesta lista de lectura a un site web"
+
+#: front/src/components/library/TrackBase.vue:43
 msgctxt "Popup/Track/Title"
 msgid "Embed this track on your website"
 msgstr "Integrar aquesta pista a un site web"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:259
-#: front/src/views/admin/moderation/DomainsDetail.vue:187
+#: front/src/views/admin/moderation/AccountsDetail.vue:260
+#: front/src/views/admin/moderation/DomainsDetail.vue:224
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Emitted library follows"
 msgstr "Seguiments de bibliotècas enviats"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:243
-#: front/src/views/admin/moderation/DomainsDetail.vue:171
+#: front/src/views/admin/moderation/AccountsDetail.vue:244
+#: front/src/views/admin/moderation/DomainsDetail.vue:208
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Emitted messages"
 msgstr "Messatge emés"
 
+#: front/src/components/About.vue:114 src/components/About.vue:127
+#: front/src/components/About.vue:140
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:8
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:17
 #: front/src/views/admin/moderation/AccountsDetail.vue:156
 #: front/src/views/admin/moderation/AccountsDetail.vue:160
-msgctxt "*/*/*"
+msgctxt "*/*/*/State of feature"
 msgid "Enabled"
-msgstr "Activat"
+msgstr "Activada"
 
 #: front/src/views/playlists/Detail.vue:30
 msgctxt "Content/Playlist/Button.Label/Verb"
@@ -1629,9 +1767,9 @@ msgctxt "Content/Search/Input.Placeholder"
 msgid "Enter a radio name…"
 msgstr "Escrivètz un nom de ràdio…"
 
-#: front/src/components/library/Albums.vue:119
+#: front/src/components/library/Albums.vue:128
 msgctxt "Content/Search/Input.Placeholder"
-msgid "Enter album title..."
+msgid "Enter album title…"
 msgstr "Picatz lo títol de l’album…"
 
 #: front/src/components/library/Artists.vue:116
@@ -1646,15 +1784,16 @@ msgstr "Escrivètz un nom de lista de lectura…"
 
 #: front/src/views/auth/PasswordReset.vue:54
 msgctxt "Content/Signup/Input.Placeholder"
-msgid "Enter the email address binded to your account"
+msgid "Enter the email address linked to your account"
 msgstr "Picatz l’adreça de corrièl ligada a vòstre compte"
 
-#: front/src/components/auth/Signup.vue:103
+#: front/src/components/auth/SignupForm.vue:96
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your email"
 msgstr "Escrivètz vòstre adreça electronica"
 
-#: front/src/components/auth/Signup.vue:98 src/components/auth/Signup.vue:100
+#: front/src/components/auth/SignupForm.vue:91
+#: src/components/auth/SignupForm.vue:93
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your invitation code (case insensitive)"
 msgstr "Escrivètz vòstre còdi d’invitacion (pas sensible a la cassa)"
@@ -1664,12 +1803,12 @@ msgctxt "Content/Library/Input.Placeholder/Verb"
 msgid "Enter your search query…"
 msgstr "Escrivètz vòstra recèrca…"
 
-#: front/src/components/auth/Signup.vue:102
+#: front/src/components/auth/SignupForm.vue:95
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your username"
 msgstr "Escrivètz vòstre nom d’utilizaire"
 
-#: front/src/components/auth/Login.vue:83
+#: front/src/components/auth/LoginForm.vue:81
 msgctxt "Content/Login/Input.Placeholder"
 msgid "Enter your username or email"
 msgstr "Escrivètz vòstre nom d’utilizaire o corrièl"
@@ -1686,7 +1825,7 @@ msgctxt "Popup/Import/Table.Label/Noun"
 msgid "Error detail"
 msgstr "Detalhs de l’error"
 
-#: front/src/views/admin/Settings.vue:87
+#: front/src/views/admin/Settings.vue:89
 msgctxt "Content/Admin/Menu"
 msgid "Error reporting"
 msgstr "Rapòrt d’error"
@@ -1742,16 +1881,12 @@ msgctxt "Popup/Moderation/Error message"
 msgid "Error while fetching application data"
 msgstr "Error en recuperar las donadas de l’aplicacion"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:118
+#: front/src/views/admin/moderation/DomainsDetail.vue:155
 msgctxt "Content/Moderation/Table"
 msgid "Error while fetching node info"
 msgstr "Error en recuperar las informacions del nos"
 
 #: front/src/components/admin/SettingsGroup.vue:5
-msgctxt "Content/Settings/Error message.Title"
-msgid "Error while saving settings"
-msgstr "Error en enregistrar los paramètres"
-
 #: front/src/components/federation/FetchButton.vue:73
 msgctxt "Content/*/Error message.Title"
 msgid "Error while saving settings"
@@ -1762,6 +1897,16 @@ msgctxt "Content/Library/Error message.Title"
 msgid "Error while submitting edit"
 msgstr "Error en enviar la modificacion"
 
+#: front/src/components/manage/moderation/NoteForm.vue:3
+msgctxt "Content/Moderation/Error message.Title"
+msgid "Error while submitting note"
+msgstr "Error en enviar la nòta"
+
+#: front/src/components/moderation/ReportModal.vue:11
+msgctxt "Popup/Moderation/Error message"
+msgid "Error while submitting report"
+msgstr "Error en enviar lo senhalament"
+
 #: front/src/components/mixins/Translations.vue:32
 #: front/src/components/mixins/Translations.vue:33
 msgctxt "Content/Library/Table/Short"
@@ -1796,9 +1941,14 @@ msgctxt "Content/Radio/Table.Label/Verb"
 msgid "Exclude"
 msgstr "Exclure"
 
+#: front/src/components/common/CollapseLink.vue:2
+msgctxt "*/*/Button,Label"
+msgid "Expand"
+msgstr "Desplegar"
+
 #: front/src/components/manage/users/InvitationsTable.vue:41
-#: front/src/components/mixins/Translations.vue:49
-#: front/src/components/mixins/Translations.vue:50
+#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:60
 msgctxt "Content/Admin/Table.Label/Noun"
 msgid "Expiration date"
 msgstr "Data d’expiracion"
@@ -1815,16 +1965,8 @@ msgstr "Expirada/utilizada"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:110
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Explain why you're applying this policy. Depending on your instance "
-"configuration, this will help you remember why you acted on this account or "
-"domain, and may be displayed publicly to help users understand what "
-"moderation rules are in place."
-msgstr ""
-"Explicatz perque aplicatz aquesta politica. Segon la configuracion de "
-"l’instància, aquò vos ajudarà a vos rapelar perque avètz agit sus aqueste "
-"compte o domeni, e aquò pòt èsser mostrat publicament per ajudar als "
-"utilizaires a comprendre qualas règlas de moderacion son en plaça."
+msgid "Explain why you're applying this policy. Depending on your instance configuration, this will help you remember why you acted on this account or domain, and may be displayed publicly to help users understand what moderation rules are in place."
+msgstr "Explicatz perque aplicatz aquesta politica. Segon la configuracion de l’instància, aquò vos ajudarà a vos rapelar perque avètz agit sus aqueste compte o domeni, e aquò pòt èsser mostrat publicament per ajudar als utilizaires a comprendre qualas règlas de moderacion son en plaça."
 
 #: front/src/components/manage/library/UploadsTable.vue:25
 #: front/src/views/content/libraries/FilesTable.vue:16
@@ -1832,31 +1974,27 @@ msgctxt "Content/Library/Dropdown"
 msgid "Failed"
 msgstr "Fracàs"
 
-#: front/src/views/content/remote/Card.vue:62
+#: front/src/views/content/remote/Card.vue:75
 msgctxt "Content/Library/Card.List item/Noun"
 msgid "Failed tracks:"
 msgstr "Pistas en error :"
 
-#: front/src/views/admin/library/AlbumDetail.vue:165
-#: front/src/views/admin/library/ArtistDetail.vue:154
-#: front/src/views/admin/library/TrackDetail.vue:217
+#: front/src/views/admin/library/AlbumDetail.vue:171
+#: front/src/views/admin/library/ArtistDetail.vue:159
+#: front/src/views/admin/library/TrackDetail.vue:223
 msgctxt "*/*/*"
 msgid "Favorited tracks"
 msgstr "Pistas en favorit"
 
 #: front/src/components/Sidebar.vue:66
+#: src/components/mixins/Translations.vue:88
+#: front/src/components/mixins/Translations.vue:89
 msgctxt "Sidebar/Favorites/List item.Link/Noun"
 msgid "Favorites"
 msgstr "Favorits"
 
-#: front/src/components/mixins/Translations.vue:76
-#: front/src/components/mixins/Translations.vue:77
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Favorites"
-msgstr "Favorits"
-
-#: front/src/views/admin/Settings.vue:84
-msgctxt "Content/Admin/Menu"
+#: front/src/components/About.vue:110 src/views/admin/Settings.vue:84
+msgctxt "*/*/*"
 msgid "Federation"
 msgstr "Federacion"
 
@@ -1880,6 +2018,11 @@ msgctxt "Content/Radio/Table.Label/Noun"
 msgid "Filter name"
 msgstr "Nom del filtre"
 
+#: front/src/components/Home.vue:118
+msgctxt "Content/Home/Link"
+msgid "Find another pod"
+msgstr "Trobar un autre pod"
+
 #: front/src/components/manage/library/UploadsTable.vue:26
 #: front/src/components/mixins/Translations.vue:36
 #: front/src/views/content/libraries/FilesTable.vue:17
@@ -1889,25 +2032,31 @@ msgid "Finished"
 msgstr "Acabat"
 
 #: front/src/components/manage/moderation/AccountsTable.vue:42
-#: front/src/components/manage/moderation/DomainsTable.vue:41
-#: front/src/views/admin/library/AlbumDetail.vue:149
-#: front/src/views/admin/library/ArtistDetail.vue:138
-#: front/src/views/admin/library/LibraryDetail.vue:153
-#: front/src/views/admin/library/TrackDetail.vue:201
+#: front/src/components/manage/moderation/DomainsTable.vue:49
+#: front/src/views/admin/library/AlbumDetail.vue:155
+#: front/src/views/admin/library/ArtistDetail.vue:143
+#: front/src/views/admin/library/LibraryDetail.vue:162
+#: front/src/views/admin/library/TagDetail.vue:98
+#: front/src/views/admin/library/TrackDetail.vue:207
 #: front/src/views/admin/library/UploadDetail.vue:167
-#: front/src/views/admin/moderation/AccountsDetail.vue:235
-#: front/src/views/admin/moderation/DomainsDetail.vue:151
+#: front/src/views/admin/moderation/AccountsDetail.vue:236
+#: front/src/views/admin/moderation/DomainsDetail.vue:188
 msgctxt "Content/Moderation/Table.Label/Short (Value is a date)"
 msgid "First seen"
 msgstr "Primièra aparicion"
 
-#: front/src/components/mixins/Translations.vue:46
-#: front/src/components/mixins/Translations.vue:47
+#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:57
 msgctxt "Content/Moderation/Dropdown/Noun"
 msgid "First seen date"
 msgstr "Data de primièra aparicion"
 
-#: front/src/views/content/remote/Card.vue:87
+#: front/src/components/ShortcutsModal.vue:64
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Focus searchbar"
+msgstr "Anar a la recèrca"
+
+#: front/src/views/content/remote/Card.vue:100
 msgctxt "Content/Library/Card.Button.Label/Verb"
 msgid "Follow"
 msgstr "Seguir"
@@ -1917,43 +2066,35 @@ msgctxt "Content/Library/Title/Verb"
 msgid "Follow remote libraries"
 msgstr "Seguir de bibliotècas alonhadas"
 
-#: front/src/views/content/remote/Card.vue:92
+#: front/src/views/content/remote/Card.vue:105
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Follow request pending approval"
 msgstr "Abonament en espèra de validacion"
 
-#: front/src/components/mixins/Translations.vue:64
-#: front/src/views/admin/library/LibraryDetail.vue:161
+#: front/src/components/manage/library/LibrariesTable.vue:53
+#: front/src/components/mixins/Translations.vue:76
+#: front/src/views/admin/library/LibraryDetail.vue:170
 #: front/src/views/content/libraries/Detail.vue:7
-#: front/src/components/mixins/Translations.vue:65
+#: front/src/components/mixins/Translations.vue:77
 msgctxt "Content/Federation/*/Noun"
 msgid "Followers"
 msgstr "Seguidors"
 
-#: front/src/components/manage/library/LibrariesTable.vue:53
-msgctxt "Content/*/*/Noun"
-msgid "Followers"
-msgstr "Seguidors"
-
-#: front/src/views/content/remote/Card.vue:103
+#: front/src/views/content/remote/Card.vue:116
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Following"
 msgstr "Abonat"
 
-#: front/src/components/mixins/Translations.vue:84
-#: front/src/components/mixins/Translations.vue:85
+#: front/src/components/mixins/Translations.vue:96
+#: front/src/components/mixins/Translations.vue:97
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Follows"
 msgstr "Seguir"
 
-#: front/src/components/library/TrackBase.vue:17
+#: front/src/components/library/TrackBase.vue:245
 msgctxt "Content/Track/Paragraph"
-msgid ""
-"From album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> by <a"
-" class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
-msgstr ""
-"De l’album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> per "
-"<a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgid "From album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgstr "De l’album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> per <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
 
 #: front/src/components/auth/Authorize.vue:28
 msgctxt "Content/Auth/Label/Noun"
@@ -1962,38 +2103,20 @@ msgstr "Accès complèt"
 
 #: front/src/components/auth/SubsonicTokenForm.vue:7
 msgctxt "Content/Settings/Paragraph'"
-msgid ""
-"Funkwhale is compatible with other music players that support the Subsonic "
-"API."
-msgstr ""
-"Funkwhale es compatible amb d’autres lectors de musica compatibles amb l’API"
-" Subsonic."
-
-#: front/src/components/Home.vue:90
-msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale is dead simple to use."
-msgstr "Funkwhale es simple d’utilizar."
-
-#: front/src/components/Home.vue:39
-msgctxt "Content/Home/Paragraph"
-msgid ""
-"Funkwhale is designed to make it easy to listen to music you like, or to "
-"discover new artists."
-msgstr ""
-"Funkwhale es concebut per facilitar l’escota de las musicas que vos agradan "
-"e descobrir de novèls artistas."
+msgid "Funkwhale is compatible with other music players that support the Subsonic API."
+msgstr "Funkwhale es compatible amb d’autres lectors de musica compatibles amb l’API Subsonic."
 
-#: front/src/components/Home.vue:111
+#: front/src/components/Home.vue:88
 msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale is free and gives you control on your music."
-msgstr "Funkwhale es a gratís e vos dòna lo contròla de vòstra musica."
+msgid "Funkwhale is free and developped by a friendly community of volunteers."
+msgstr "Funkwhale es gratuit e desvolopat per de una comunautat de volontaris simpatics."
 
-#: front/src/components/Home.vue:66
-msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale takes care of handling your music"
-msgstr "Funkwhale prend cura de vòstra musica"
+#: front/src/components/About.vue:78
+msgctxt "*/*/*"
+msgid "Funkwhale version"
+msgstr "Version de Funkwhale"
 
-#: front/src/components/ShortcutsModal.vue:38
+#: front/src/components/ShortcutsModal.vue:56
 msgctxt "Popup/Keyboard shortcuts/Title"
 msgid "General shortcuts"
 msgstr "Acrochis generals"
@@ -2003,35 +2126,17 @@ msgctxt "Content/Admin/Button.Label/Verb"
 msgid "Get a new invitation"
 msgstr "Obténer una novèla invitacion"
 
-#: front/src/components/Home.vue:13
-msgctxt "Content/Home/Button.Label/Verb"
-msgid "Get me to the library"
-msgstr "Menatz-me a la bibliotèca"
-
-#: front/src/components/Home.vue:70
-msgctxt "Content/Home/List item/Verb"
-msgid ""
-"Get quality metadata about your music thanks to <a href=\"%{ url }\" "
-"target=\"_blank\">MusicBrainz</a>"
-msgstr ""
-"Obtenètz de metadonadas de qualitat per vòstra musica gràcia a <a href=\"%{ "
-"url }\" target=\"_blank\">MusicBrainz</a>"
-
 #: front/src/views/content/Home.vue:12 src/views/content/Home.vue:19
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Get started"
 msgstr "Començar"
 
-#: front/src/components/Footer.vue:37
+#: front/src/components/Footer.vue:45
+#: src/components/library/ImportStatusModal.vue:45
 msgctxt "Footer/*/Link"
 msgid "Getting help"
 msgstr "Obténer d’ajuda"
 
-#: front/src/components/library/ImportStatusModal.vue:45
-msgctxt "Popup/Import/Table.Label/Noun"
-msgid "Getting help"
-msgstr "Obténer d’ajuda"
-
 #: front/src/components/common/ActionTable.vue:35
 #: front/src/components/common/ActionTable.vue:56
 msgctxt "Content/*/Button.Label/Short, Verb"
@@ -2043,11 +2148,21 @@ msgctxt "Content/*/Button.Label/Verb"
 msgid "Go to home page"
 msgstr "Tornar a l’acuèlh"
 
+#: front/src/views/Notifications.vue:27 src/views/Notifications.vue:61
+msgctxt "Content/Notifications/Button.Label"
+msgid "Got it!"
+msgstr "Comprés !"
+
 #: front/src/components/auth/Settings.vue:128
 msgctxt "Content/Settings/Title"
 msgid "Hidden artists"
 msgstr "Artistas amagats"
 
+#: front/src/components/About.vue:155
+msgctxt "*/*/*/Verb"
+msgid "Hide"
+msgstr "Amagar"
+
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:114
 msgctxt "Content/Moderation/Help text"
 msgid "Hide account or domain content, except from followers."
@@ -2058,12 +2173,12 @@ msgctxt "Popup/*/Button.Label"
 msgid "Hide content"
 msgstr "Amagar lo contengut"
 
-#: front/src/components/audio/PlayButton.vue:26
+#: front/src/components/audio/PlayButton.vue:31
 msgctxt "*/Queue/Dropdown/Button/Label/Short"
 msgid "Hide content from this artist"
 msgstr "Amagar lo contengut d’aqueste artista"
 
-#: front/src/components/audio/Player.vue:643
+#: front/src/components/audio/Player.vue:669
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Hide content from this artist…"
 msgstr "Amagar lo contengut d’aqueste artista…"
@@ -2073,39 +2188,26 @@ msgctxt "Head/Home/Title"
 msgid "Home"
 msgstr "Acuèlh"
 
-#: front/src/components/instance/Stats.vue:36
-msgctxt "Content/About/Paragraph/Unit"
-msgid "Hours of music"
-msgstr "Oras de musica"
-
 #: front/src/components/auth/SubsonicTokenForm.vue:10
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"However, accessing Funkwhale from those clients require a separate password "
-"you can set below."
-msgstr ""
-"Pr’aquò, accedir a Funkwhale d’un client estant demanda un senhal diferent "
-"que podètz configurar çai-jos."
+msgid "However, accessing Funkwhale from those clients require a separate password you can set below."
+msgstr "Pr’aquò, accedir a Funkwhale d’un client estant demanda un senhal diferent que podètz configurar çai-jos."
 
 #: front/src/views/auth/PasswordResetConfirm.vue:24
 msgctxt "Content/Signup/Paragraph"
-msgid ""
-"If the email address provided in the previous step is valid and binded to a "
-"user account, you should receive an email with reset instructions in the "
-"next couple of minutes."
-msgstr ""
-"Se l’adreça qu’avètz provesida es valida e associada a un compte utilizaire,"
-" sètz per recebre un messatge amb las consignas de reïnicializacion d’aquí "
-"una estona."
+msgid "If the email address provided in the previous step is valid and linked to a user account, you should receive an email with reset instructions in the next couple of minutes."
+msgstr "Se l’adreça qu’avètz provesida es valida e associada a un compte utilizaire, sètz per recebre un messatge amb las consignas de reïnicializacion d’aquí una estona."
 
 #: front/src/components/auth/Settings.vue:205
 msgctxt "Content/Applications/Paragraph"
-msgid ""
-"If you authorize third-party applications to access your data, those "
-"applications will be listed here."
-msgstr ""
-"S’autorizatz de tèrças aplicacions a accedir a vòstras donadas, seràn "
-"listadas aquí."
+msgid "If you authorize third-party applications to access your data, those applications will be listed here."
+msgstr "S’autorizatz de tèrças aplicacions a accedir a vòstras donadas, seràn listadas aquí."
+
+#: front/src/components/mixins/Translations.vue:46
+#: front/src/components/mixins/Translations.vue:47
+msgctxt "Content/Moderation/Dropdown"
+msgid "Illegal content"
+msgstr "Contengut illegal"
 
 #: front/src/components/library/ImportStatusModal.vue:3
 msgctxt "Popup/Import/Title"
@@ -2118,14 +2220,10 @@ msgid "Import reference"
 msgstr "Importar la referéncia"
 
 #: front/src/components/manage/library/UploadsTable.vue:20
-#: front/src/views/content/libraries/FilesTable.vue:11
-#: front/src/views/content/libraries/FilesTable.vue:59
-msgctxt "Content/Library/*/Noun"
-msgid "Import status"
-msgstr "Estatut de l’import"
-
 #: front/src/components/manage/library/UploadsTable.vue:64
 #: front/src/views/admin/library/UploadDetail.vue:131
+#: front/src/views/content/libraries/FilesTable.vue:11
+#: front/src/views/content/libraries/FilesTable.vue:59
 msgctxt "Content/*/*/Noun"
 msgid "Import status"
 msgstr "Estatut de l’import"
@@ -2166,23 +2264,22 @@ msgctxt "Popup/Moderation/List item"
 msgid "In radio suggestions"
 msgstr "Dins las suggestions de ràdios"
 
-#: front/src/components/manage/users/UsersTable.vue:54
+#: front/src/components/manage/users/UsersTable.vue:55
 msgctxt "Content/Admin/Table"
 msgid "Inactive"
 msgstr "Actiu"
 
-#: front/src/components/ShortcutsModal.vue:71
+#: front/src/components/ShortcutsModal.vue:124
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Increase volume"
 msgstr "Aumentar lo volum"
 
 #: front/src/components/playlists/Editor.vue:41
-#, fuzzy
 msgctxt "Content/Playlist/Button.Label/Verb"
 msgid "Insert from queue (%{ count } track)"
 msgid_plural "Insert from queue (%{ count } tracks)"
-msgstr[0] "Inserir de la fila (%{ count } pista)"
-msgstr[1] "Inserir de la fila (%{ count } pistas)"
+msgstr[0] "Inserir de la fila estant (%{ count } pista)"
+msgstr[1] "Inserir de la fila estant (%{ count } pistas)"
 
 #: front/src/components/mixins/Translations.vue:16
 #: front/src/components/mixins/Translations.vue:17
@@ -2190,7 +2287,7 @@ msgctxt "Content/Settings/Dropdown/Short"
 msgid "Instance"
 msgstr "Instància"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:71
+#: front/src/views/admin/moderation/DomainsDetail.vue:99
 msgctxt "Content/Moderation/Title"
 msgid "Instance data"
 msgstr "Donadas de l’instància"
@@ -2215,21 +2312,25 @@ msgctxt "Popup/Instance/Input.Label/Noun"
 msgid "Instance URL"
 msgstr "URL de l’instància"
 
+#: front/src/components/manage/moderation/ReportCard.vue:92
+#: front/src/components/manage/moderation/ReportCard.vue:203
+msgctxt "Content/*/*/Noun"
+msgid "Internal notes"
+msgstr "Nòtas intèrnas"
+
 #: front/src/components/library/FileUpload.vue:268
 msgctxt "Content/Library/Help text"
-msgid ""
-"Invalid file type, ensure you are uploading an audio file. Supported file "
-"extensions are %{ extensions }"
-msgstr ""
-"Tipe de fichièr pas valid, asseguratz-vos d’enviar un fichièr àudio. Las "
-"extensions compatiblas son %{ extensions }"
+msgid "Invalid file type, ensure you are uploading an audio file. Supported file extensions are %{ extensions }"
+msgstr "Tipe de fichièr pas valid, asseguratz-vos d’enviar un fichièr àudio. Las extensions compatiblas son %{ extensions }"
 
 #: front/src/components/library/ImportStatusModal.vue:139
+#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:46
 msgctxt "Popup/Import/Error.Label"
 msgid "Invalid metadata"
 msgstr "Metadonada invalida"
 
-#: front/src/components/auth/Signup.vue:44
+#: front/src/components/auth/SignupForm.vue:40
 #: front/src/components/manage/users/InvitationForm.vue:11
 msgctxt "Content/*/Input.Label"
 msgid "Invitation code"
@@ -2241,7 +2342,13 @@ msgctxt "*/Admin/*/Noun"
 msgid "Invitations"
 msgstr "Invitacions"
 
-#: front/src/components/Footer.vue:41
+#: front/src/components/manage/moderation/DomainsTable.vue:9
+#: front/src/views/admin/moderation/DomainsDetail.vue:106
+msgctxt "Content/Moderation/*/Adjective"
+msgid "Is present on allow-list"
+msgstr "Es present dins la lista d’autorizacion"
+
+#: front/src/components/Footer.vue:49
 msgctxt "Footer/*/List item.Link"
 msgid "Issue tracker"
 msgstr "Traçador de problèmas"
@@ -2251,17 +2358,18 @@ msgctxt "Popup/Instance/Error message.Title"
 msgid "It is not possible to connect to the given URL"
 msgstr "Connexion impossibla a l’URL donada"
 
-#: front/src/components/Home.vue:50
-msgctxt "Content/Home/List item/Verb"
-msgid "Keep a track of your favorite songs"
-msgstr "Gardatz una traça de vòstras cançons favoritas"
+#: front/src/components/mixins/Translations.vue:65
+#: front/src/components/mixins/Translations.vue:66
+msgctxt "*/*/*/Noun"
+msgid "Items"
+msgstr "Elements"
 
 #: front/src/components/Footer.vue:33 src/components/ShortcutsModal.vue:3
 msgctxt "*/*/*/Noun"
 msgid "Keyboard shortcuts"
 msgstr "Acorchis clavièr"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:161
+#: front/src/views/admin/moderation/DomainsDetail.vue:198
 msgctxt "Content/Moderation/Table.Label.Link"
 msgid "Known accounts"
 msgstr "Comptes coneguts"
@@ -2272,15 +2380,15 @@ msgid "Known libraries"
 msgstr "Bibliotècas conegudas"
 
 #: front/src/components/manage/users/UsersTable.vue:41
-#: front/src/components/mixins/Translations.vue:58
-#: front/src/views/admin/moderation/AccountsDetail.vue:205
-#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:70
+#: front/src/views/admin/moderation/AccountsDetail.vue:206
+#: front/src/components/mixins/Translations.vue:71
 msgctxt "Content/Profile/Table.Label/Short, Noun (Value is a date)"
 msgid "Last activity"
 msgstr "Darrièra activitat"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:188
-#: front/src/views/admin/moderation/DomainsDetail.vue:78
+#: front/src/views/admin/moderation/AccountsDetail.vue:189
+#: front/src/views/admin/moderation/DomainsDetail.vue:115
 msgctxt "Content/*/Table.Label"
 msgid "Last checked"
 msgstr "Darrièra verificacion"
@@ -2295,13 +2403,13 @@ msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Last seen"
 msgstr "Darrièra visita"
 
-#: front/src/components/mixins/Translations.vue:47
-#: front/src/components/mixins/Translations.vue:48
+#: front/src/components/mixins/Translations.vue:57
+#: front/src/components/mixins/Translations.vue:58
 msgctxt "Content/Moderation/Dropdown/Noun"
 msgid "Last seen date"
 msgstr "Darrièra visita"
 
-#: front/src/views/content/remote/Card.vue:60
+#: front/src/views/content/remote/Card.vue:73
 msgctxt "Content/Library/Card.List item/Noun"
 msgid "Last update:"
 msgstr "Darrièra actualizacion :"
@@ -2311,60 +2419,59 @@ msgctxt "Modal/*/Button.Label/Short, Verb"
 msgid "Launch"
 msgstr "Aviar"
 
-#: front/src/components/Home.vue:10
-msgctxt "Content/Home/Button.Label/Verb"
-msgid "Learn more about this instance"
-msgstr "Ne saber mai tocant aquesta instància"
+#: front/src/components/Home.vue:35
+msgctxt "Content/Home/Link"
+msgid "Learn more"
+msgstr "Ne saber mai"
 
 #: front/src/components/manage/users/InvitationForm.vue:58
 msgctxt "Content/Admin/Input.Placeholder"
 msgid "Leave empty for a random code"
 msgstr "Daissar void per obténer un còdi aleatòri"
 
-#: front/src/components/audio/EmbedWizard.vue:7
+#: front/src/components/audio/EmbedWizard.vue:17
 msgctxt "Popup/Embed/Paragraph"
 msgid "Leave empty for a responsive widget"
 msgstr "Daissar void per un widget adaptatiu"
 
-#: front/src/views/admin/library/AlbumDetail.vue:232
-#: front/src/views/admin/library/ArtistDetail.vue:221
-#: front/src/views/admin/library/TrackDetail.vue:284
-#: front/src/views/admin/moderation/AccountsDetail.vue:327
-#: front/src/views/admin/moderation/DomainsDetail.vue:234
-#: front/src/views/content/Base.vue:5
+#: front/src/components/mixins/Translations.vue:64
+#: front/src/components/mixins/Translations.vue:65
 msgctxt "*/*/*/Noun"
-msgid "Libraries"
-msgstr "Bibliotècas"
+msgid "Length"
+msgstr "Durada"
 
+#: front/src/views/admin/library/AlbumDetail.vue:248
+#: front/src/views/admin/library/ArtistDetail.vue:236
 #: front/src/views/admin/library/Base.vue:17
 #: front/src/views/admin/library/LibrariesList.vue:24
-msgctxt "*/*/*"
+#: front/src/views/admin/library/TrackDetail.vue:300
+#: front/src/views/admin/moderation/AccountsDetail.vue:339
+#: front/src/views/admin/moderation/DomainsDetail.vue:271
+#: front/src/views/content/Base.vue:5
+msgctxt "*/*/*/Noun"
 msgid "Libraries"
 msgstr "Bibliotècas"
 
-#: front/src/components/mixins/Translations.vue:72
-#: front/src/components/mixins/Translations.vue:73
+#: front/src/components/mixins/Translations.vue:84
+#: front/src/components/mixins/Translations.vue:85
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Libraries and uploads"
 msgstr "Bibliotèca e mandadís"
 
 #: front/src/views/content/libraries/Form.vue:2
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Libraries help you organize and share your music collections. You can upload"
-" your own music collection to Funkwhale and share it with your friends and "
-"family."
-msgstr ""
-"Las bibliotècas vos ajudan a organizar e partejar vòstras colleccions de "
-"musica. Podètz enviar vòstra pròpria collecion musicala a Funkwhale e la "
-"partejar amb vòstres amics e vòstra familha."
+msgid "Libraries help you organize and share your music collections. You can upload your own music collection to Funkwhale and share it with your friends and family."
+msgstr "Las bibliotècas vos ajudan a organizar e partejar vòstras colleccions de musica. Podètz enviar vòstra pròpria collecion musicala a Funkwhale e la partejar amb vòstres amics e vòstra familha."
 
-#: front/src/components/Sidebar.vue:85 src/components/instance/Stats.vue:30
+#: front/src/components/Sidebar.vue:85
 #: front/src/components/manage/library/UploadsTable.vue:60
-#: front/src/components/manage/users/UsersTable.vue:173
+#: front/src/components/manage/users/UsersTable.vue:174
+#: front/src/components/mixins/Report.vue:77
 #: front/src/views/admin/library/UploadDetail.vue:144
-#: front/src/views/admin/moderation/AccountsDetail.vue:498
-msgctxt "*/*/*"
+#: front/src/views/admin/moderation/AccountsDetail.vue:518 src/entities.js:132
+#: front/src/components/mixins/Report.vue:78
+#, fuzzy
+msgctxt "*/*/*/Noun"
 msgid "Library"
 msgstr "Bibliotèca"
 
@@ -2395,21 +2502,37 @@ msgstr "Bibliotèca actualizada"
 
 #: front/src/components/library/TrackDetail.vue:19
 #: front/src/components/manage/library/TracksTable.vue:43
-#: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:61
+#: front/src/views/admin/library/TrackDetail.vue:165 src/edits.js:84
+#: front/src/entities.js:115
 msgctxt "Content/*/*/Noun"
 msgid "License"
 msgstr "Licéncia"
 
-#: front/src/views/admin/library/AlbumDetail.vue:157
-#: front/src/views/admin/library/ArtistDetail.vue:146
-#: front/src/views/admin/library/TrackDetail.vue:209
-msgctxt "*/*/*/Noun"
-msgid "Listenings"
-msgstr "Escotas"
+#: front/src/components/Footer.vue:90
+msgctxt "Footer/Settings/Dropdown.Label/Theme name"
+msgid "Light"
+msgstr "Clar"
 
-#: front/src/components/mixins/Translations.vue:80
-#: front/src/components/mixins/Translations.vue:81
-msgctxt "Content/OAuth Scopes/Label"
+#: front/src/views/admin/library/AlbumDetail.vue:188
+#: front/src/views/admin/library/ArtistDetail.vue:176
+#: front/src/views/admin/library/LibraryDetail.vue:179
+#: front/src/views/admin/library/TrackDetail.vue:240
+#: front/src/views/admin/moderation/AccountsDetail.vue:269
+msgctxt "Content/Moderation/Table.Label/Noun"
+msgid "Linked reports"
+msgstr "Senhalaments ligats"
+
+#: front/src/components/Home.vue:135
+msgctxt "Content/Home/Link"
+msgid "Listen to public albums and playlists shared on this pod"
+msgstr "Escotar d’albums publics e de listas de lectura partejadas sus aqueste pod"
+
+#: front/src/components/mixins/Translations.vue:92
+#: front/src/views/admin/library/AlbumDetail.vue:163
+#: front/src/views/admin/library/ArtistDetail.vue:151
+#: front/src/views/admin/library/TrackDetail.vue:215
+#: front/src/components/mixins/Translations.vue:93
+msgctxt "*/*/*/Noun"
 msgid "Listenings"
 msgstr "Escotas"
 
@@ -2435,7 +2558,7 @@ msgctxt "Content/Library/Paragraph"
 msgid "Loading library data…"
 msgstr "Cargament de las donadas de la bibliotèca…"
 
-#: front/src/views/Notifications.vue:19
+#: front/src/views/Notifications.vue:84
 msgctxt "Content/Notifications/Paragraph"
 msgid "Loading notifications…"
 msgstr "Cargament de las notificacions…"
@@ -2460,6 +2583,7 @@ msgstr "Cargament dels favorits…"
 #: front/src/components/manage/library/LibrariesTable.vue:75
 #: front/src/components/manage/library/TracksTable.vue:71
 #: front/src/components/manage/library/UploadsTable.vue:99
+#: front/src/components/manage/moderation/ReportCard.vue:173
 #: front/src/views/admin/library/AlbumDetail.vue:19
 #: front/src/views/admin/library/ArtistDetail.vue:18
 #: front/src/views/admin/library/LibraryDetail.vue:18
@@ -2475,12 +2599,12 @@ msgctxt "Content/Moderation/*/Short, Noun"
 msgid "Local account"
 msgstr "Compte local"
 
-#: front/src/components/auth/Login.vue:84
+#: front/src/components/Home.vue:96 src/views/auth/Login.vue:29
 msgctxt "Head/Login/Title"
 msgid "Log In"
 msgstr "Connexion"
 
-#: front/src/components/auth/Login.vue:4
+#: front/src/views/auth/Login.vue:4
 msgctxt "Content/Login/Title/Verb"
 msgid "Log in to your Funkwhale account"
 msgstr "Connectatz-vos a vòstre compte Funkwhale"
@@ -2495,7 +2619,7 @@ msgctxt "Sidebar/Profile/List item.Link"
 msgid "Logged in as %{ username }"
 msgstr "Connectat coma %{ username }"
 
-#: front/src/components/Sidebar.vue:54 src/components/auth/Login.vue:42
+#: front/src/components/Sidebar.vue:54 src/components/auth/LoginForm.vue:41
 msgctxt "*/Login/*/Verb"
 msgid "Login"
 msgstr "Connexion"
@@ -2513,41 +2637,41 @@ msgstr "Desconnexion"
 #: front/src/views/content/libraries/Home.vue:9
 msgctxt "Content/Library/Paragraph"
 msgid "Looks like you don't have a library, it's time to create one."
-msgstr ""
-"Sembla qu’avètz pas cap de bibliotèca pel moment, es ora de ne crear una."
+msgstr "Sembla qu’avètz pas cap de bibliotèca pel moment, es ora de ne crear una."
 
-#: front/src/components/audio/Player.vue:632
-#: src/components/audio/Player.vue:633
+#: front/src/components/audio/Player.vue:658
+#: src/components/audio/Player.vue:659
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping disabled. Click to switch to single-track looping."
-msgstr ""
-"Repeticion desactivada. Clicatz per activar la repeticion de la pista "
-"actuala."
+msgstr "Repeticion desactivada. Clicatz per activar la repeticion de la pista actuala."
 
-#: front/src/components/audio/Player.vue:635
-#: src/components/audio/Player.vue:636
+#: front/src/components/audio/Player.vue:661
+#: src/components/audio/Player.vue:662
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping on a single track. Click to switch to whole queue looping."
-msgstr ""
-"Repeticion de la pista actuala. Clicatz per activar la repeticion de tota la"
-" fila."
+msgstr "Repeticion de la pista actuala. Clicatz per activar la repeticion de tota la fila."
 
-#: front/src/components/audio/Player.vue:638
-#: src/components/audio/Player.vue:639
+#: front/src/components/audio/Player.vue:664
+#: src/components/audio/Player.vue:665
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping on whole queue. Click to disable looping."
 msgstr "Repeticion de tota la fila, clicatz per desactivar la repeticion."
 
-#: front/src/components/Sidebar.vue:223
+#: front/src/components/Sidebar.vue:230
 msgctxt "Sidebar/*/Hidden text"
 msgid "Main menu"
 msgstr "Menú màger"
 
-#: front/src/views/admin/library/Base.vue:31
+#: front/src/views/admin/library/Base.vue:34
 msgctxt "Head/Admin/Title"
 msgid "Manage library"
 msgstr "Gerir la bibliotèca"
 
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:8
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Manage moderation rules for %{ obj }"
+msgstr "Gerir las règlas de moderacion per %{ obj }"
+
 #: front/src/components/playlists/PlaylistModal.vue:3
 msgctxt "Popup/Playlist/Title/Verb"
 msgid "Manage playlists"
@@ -2563,7 +2687,7 @@ msgctxt "Content/Playlist/Button.Label/Verb"
 msgid "Manage your playlists"
 msgstr "Gerir vòstras listas de lectura"
 
-#: front/src/views/Notifications.vue:14
+#: front/src/views/Notifications.vue:79
 msgctxt "Content/Notifications/Button.Label/Verb"
 msgid "Mark all as read"
 msgstr "Las marcar totas coma legidas"
@@ -2578,12 +2702,12 @@ msgctxt "Content/Notifications/Button.Tooltip/Verb"
 msgid "Mark as unread"
 msgstr "Marcar coma pas legidas"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:310
+#: front/src/views/admin/moderation/AccountsDetail.vue:321
 msgctxt "Content/*/*/Unit"
 msgid "MB"
 msgstr "Mo"
 
-#: front/src/components/audio/Player.vue:625
+#: front/src/components/audio/Player.vue:651
 msgctxt "Sidebar/Player/Hidden text"
 msgid "Media player"
 msgstr "Lector mèdia"
@@ -2593,43 +2717,57 @@ msgctxt "Content/Profile/Paragraph"
 msgid "Member since %{ date }"
 msgstr "Membre dempuèi %{ date }"
 
+#: front/src/components/manage/moderation/ReportCard.vue:109
+#: front/src/components/moderation/ReportModal.vue:41
+msgctxt "*/*/Field.Label/Noun"
+msgid "Message"
+msgstr "Messatge"
+
 #: front/src/components/Footer.vue:32
 msgctxt "Footer/*/List item.Link"
 msgid "Mobile and desktop apps"
 msgstr "Aplicacions mobil e de burèu"
 
+#: front/src/components/Home.vue:143
+msgctxt "Content/Home/Link"
+msgid "Mobile apps"
+msgstr "Aplicacions mobil"
+
 #: front/src/components/Sidebar.vue:96
-#: src/components/manage/users/UsersTable.vue:177
-#: front/src/views/admin/moderation/AccountsDetail.vue:502
-#: front/src/views/admin/moderation/Base.vue:21
+#: src/components/manage/users/UsersTable.vue:178
+#: front/src/views/admin/Settings.vue:85
+#: front/src/views/admin/moderation/AccountsDetail.vue:522
+#: front/src/views/admin/moderation/Base.vue:43
 msgctxt "*/Moderation/*"
 msgid "Moderation"
 msgstr "Moderacion"
 
 #: front/src/views/admin/moderation/AccountsDetail.vue:78
-#: front/src/views/admin/moderation/DomainsDetail.vue:42
+#: front/src/views/admin/moderation/DomainsDetail.vue:70
 msgctxt "Content/Moderation/Card.Paragraph"
-msgid ""
-"Moderation policies help you control how your instance interact with a given"
-" domain or account."
-msgstr ""
-"Las politicas de moderacion vos ajudan a contrarotlar cossí vòstra instància"
-" deu interagir amb un compte o domeni donat."
+msgid "Moderation policies help you control how your instance interact with a given domain or account."
+msgstr "Las politicas de moderacion vos ajudan a contrarotlar cossí vòstra instància deu interagir amb un compte o domeni donat."
+
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:4
+msgctxt "Content/Moderation/Button.Label"
+msgid "Moderation rules…"
+msgstr "Règlas de moderacion…"
 
 #: front/src/components/library/EditCard.vue:5
 msgctxt "Content/Library/Card/Short"
 msgid "Modification %{ id }"
 msgstr "Modificacion %{ id }"
 
-#: front/src/components/mixins/Translations.vue:48
-#: front/src/components/mixins/Translations.vue:49
+#: front/src/components/mixins/Translations.vue:58
+#: front/src/components/mixins/Translations.vue:59
 msgctxt "Content/Playlist/Dropdown/Noun"
 msgid "Modification date"
 msgstr "Data de modificacion"
 
-#: front/src/components/library/AlbumBase.vue:42
-#: front/src/components/library/ArtistBase.vue:53
-#: front/src/components/library/TrackBase.vue:61
+#: front/src/components/audio/PlayButton.vue:100
+#: front/src/components/library/AlbumBase.vue:43
+#: front/src/components/library/ArtistBase.vue:54
+#: front/src/components/library/TrackBase.vue:59
 msgctxt "*/*/Button.Label/Noun"
 msgid "More…"
 msgstr "Mai…"
@@ -2639,7 +2777,7 @@ msgctxt "*/*/*/Noun"
 msgid "Music"
 msgstr "Musica"
 
-#: front/src/components/audio/Player.vue:631
+#: front/src/components/audio/Player.vue:657
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Mute"
 msgstr "Copar lo son"
@@ -2686,8 +2824,8 @@ msgctxt "Content/Library/Title"
 msgid "My libraries"
 msgstr "Mas bibliotècas"
 
-#: front/src/components/audio/track/Row.vue:40
-#: src/components/library/EditCard.vue:60
+#: front/src/components/About.vue:105 src/components/audio/track/Row.vue:40
+#: front/src/components/library/EditCard.vue:60
 #: front/src/components/library/EditForm.vue:70
 #: front/src/components/library/TrackDetail.vue:34
 #: front/src/components/library/TrackDetail.vue:43
@@ -2697,54 +2835,56 @@ msgstr "Mas bibliotècas"
 #: front/src/components/manage/library/TracksTable.vue:76
 #: front/src/components/manage/library/UploadsTable.vue:121
 #: front/src/components/manage/library/UploadsTable.vue:128
-#: front/src/components/manage/users/UsersTable.vue:61
+#: front/src/components/manage/moderation/ReportCard.vue:78
+#: front/src/components/manage/moderation/ReportCard.vue:87
+#: front/src/components/manage/moderation/ReportCard.vue:193
+#: front/src/components/manage/users/UsersTable.vue:62
 #: front/src/views/admin/library/UploadDetail.vue:179
 #: front/src/views/admin/library/UploadDetail.vue:214
 #: front/src/views/admin/library/UploadDetail.vue:233
 #: front/src/views/admin/library/UploadDetail.vue:244
 #: front/src/views/admin/library/UploadDetail.vue:257
-#: front/src/views/admin/moderation/AccountsDetail.vue:192
-#: front/src/views/admin/moderation/DomainsDetail.vue:82
+#: front/src/views/admin/moderation/AccountsDetail.vue:193
+#: front/src/views/admin/moderation/DomainsDetail.vue:119
 #: front/src/views/content/libraries/FilesTable.vue:95
 #: front/src/views/content/libraries/FilesTable.vue:101
 msgctxt "*/*/*"
 msgid "N/A"
 msgstr "ND"
 
-#: front/src/components/manage/library/LibrariesTable.vue:48
-#: front/src/components/manage/library/UploadsTable.vue:59
-msgctxt "*/*/*"
-msgid "Name"
-msgstr "Nom"
-
 #: front/src/components/auth/ApplicationForm.vue:9
-msgctxt "Content/Applications/Input.Label/Noun"
-msgid "Name"
-msgstr "Nom"
-
 #: front/src/components/auth/Settings.vue:133
 #: front/src/components/manage/library/ArtistsTable.vue:39
+#: front/src/components/manage/library/LibrariesTable.vue:48
+#: front/src/components/manage/library/TagsTable.vue:41
+#: front/src/components/manage/library/UploadsTable.vue:59
 #: front/src/components/manage/moderation/AccountsTable.vue:39
-#: front/src/components/manage/moderation/DomainsTable.vue:38
-#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/manage/moderation/DomainsTable.vue:46
+#: front/src/components/mixins/Translations.vue:63
 #: front/src/components/playlists/PlaylistModal.vue:45
-#: front/src/views/admin/library/ArtistDetail.vue:98
+#: front/src/views/admin/library/ArtistDetail.vue:103
 #: front/src/views/admin/library/LibraryDetail.vue:85
+#: front/src/views/admin/library/TagDetail.vue:68
 #: front/src/views/admin/library/UploadDetail.vue:92
-#: front/src/views/admin/moderation/DomainsDetail.vue:97
-#: front/src/views/content/libraries/Form.vue:10 src/edits.js:10
-#: front/src/components/mixins/Translations.vue:54
+#: front/src/views/admin/moderation/DomainsDetail.vue:134
+#: front/src/views/content/libraries/Form.vue:10 src/edits.js:17
+#: front/src/components/mixins/Translations.vue:64
 msgctxt "*/*/*/Noun"
 msgid "Name"
 msgstr "Nom"
 
+#: front/src/views/Notifications.vue:24 src/views/Notifications.vue:58
+msgctxt "*/*/*"
+msgid "Never"
+msgstr "Jamai"
+
 #: front/src/components/auth/Settings.vue:88
 #: front/src/views/auth/PasswordResetConfirm.vue:14
 msgctxt "Content/Settings/Input.Label"
 msgid "New password"
 msgstr "Nòu senhal"
 
-#: front/src/components/Sidebar.vue:173
+#: front/src/components/Sidebar.vue:177
 msgctxt "Sidebar/Player/Paragraph"
 msgid "New tracks will be appended here automatically."
 msgstr "Las novèlas pistas seràn automaticament ajustadas aquí."
@@ -2754,21 +2894,18 @@ msgctxt "Content/Library/Card.Table.Header/Short"
 msgid "New value"
 msgstr "Nòva valor"
 
-#: front/src/components/audio/Player.vue:629
+#: front/src/components/audio/Player.vue:655
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Next track"
 msgstr "Pista seguenta"
 
-#: front/src/components/Sidebar.vue:130
+#: front/src/components/Sidebar.vue:134
+#: front/src/components/manage/moderation/DomainsTable.vue:13
+#: front/src/views/admin/moderation/DomainsDetail.vue:110
 msgctxt "*/*/*"
 msgid "No"
 msgstr "Non"
 
-#: front/src/components/Home.vue:95
-msgctxt "Content/Home/List item"
-msgid "No add-ons, no plugins : you only need a web library"
-msgstr "Cap d’extension d’installar, vos cal pas qu’una bibliotèca sul web"
-
 #: front/src/components/audio/Search.vue:25
 msgctxt "Content/Search/Paragraph"
 msgid "No album matched your query"
@@ -2782,9 +2919,12 @@ msgstr "Cap d’artista correspond pas a vòstra recèrca"
 #: front/src/components/library/TrackDetail.vue:14
 msgctxt "Content/Track/Table.Paragraph"
 msgid "No copyright information available for this track"
-msgstr ""
-"Cap d’informacions pas disponiblas per aquesta pista tocant los dreches "
-"d’autor"
+msgstr "Cap d’informacions pas disponiblas per aquesta pista tocant los dreches d’autor"
+
+#: front/src/components/About.vue:25 src/components/Home.vue:25
+msgctxt "Content/Home/Paragraph"
+msgid "No description available."
+msgstr "Cap de descripcion pas disponibla."
 
 #: front/src/components/library/TrackDetail.vue:25
 msgctxt "Content/Track/Table.Paragraph"
@@ -2796,7 +2936,7 @@ msgctxt "Content/Federation/Paragraph"
 msgid "No matching library."
 msgstr "Cap de bibliotèca correspondenta."
 
-#: front/src/views/Notifications.vue:28
+#: front/src/views/Notifications.vue:93
 msgctxt "Content/Notifications/Paragraph"
 msgid "No notification to show."
 msgstr "Cap de notificacion de mostrar."
@@ -2806,6 +2946,16 @@ msgctxt "Content/*/Paragraph"
 msgid "No results were found."
 msgstr "Cap de resultat pas trobat."
 
+#: front/src/components/About.vue:32
+msgctxt "Content/Home/Paragraph"
+msgid "No rules available."
+msgstr "Cap de règla pas disponibla."
+
+#: front/src/components/About.vue:39
+msgctxt "Content/Home/Paragraph"
+msgid "No terms available."
+msgstr "Cap de condicion pas disponibla."
+
 #: front/src/components/mixins/Translations.vue:10
 #: front/src/components/mixins/Translations.vue:11
 msgctxt "Content/Settings/Dropdown"
@@ -2822,18 +2972,21 @@ msgctxt "Content/Admin/Table"
 msgid "Not used"
 msgstr "Pas utilizat"
 
-#: front/src/components/mixins/Translations.vue:100
-#: front/src/components/mixins/Translations.vue:101
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Notifications"
-msgstr "Notificacions"
-
-#: front/src/components/Sidebar.vue:46 src/views/Notifications.vue:76
+#: front/src/components/Sidebar.vue:46
+#: src/components/mixins/Translations.vue:112
+#: front/src/views/Notifications.vue:151
+#: src/components/mixins/Translations.vue:113
 msgctxt "*/Notifications/*"
 msgid "Notifications"
 msgstr "Notificacions"
 
-#: front/src/components/Footer.vue:47
+#: front/src/components/mixins/Translations.vue:47
+#: front/src/components/mixins/Translations.vue:48
+msgctxt "Content/Moderation/Dropdown"
+msgid "Offensive content"
+msgstr "Contengut ofensiu"
+
+#: front/src/components/Footer.vue:55
 msgctxt "Footer/*/List item.Link"
 msgid "Official website"
 msgstr "Site oficial"
@@ -2848,6 +3001,11 @@ msgctxt "Content/Library/Card.Table.Header/Short"
 msgid "Old value"
 msgstr "Anciana valor"
 
+#: front/src/components/About.vue:90
+msgctxt "*/*/*/State of registrations"
+msgid "Open"
+msgstr "Dubèrtas"
+
 #: front/src/components/manage/users/InvitationsTable.vue:20
 msgctxt "Content/Admin/Dropdown/Adjective"
 msgid "Open"
@@ -2855,27 +3013,29 @@ msgstr "Accès liure"
 
 #: front/src/components/library/ImportStatusModal.vue:56
 msgctxt "Popup/Import/Table.Label/Value"
-msgid ""
-"Open a support thread (include the debug information below in your message)"
-msgstr ""
-
-#: front/src/components/library/AlbumBase.vue:73
-#: front/src/components/library/ArtistBase.vue:84
-#: front/src/components/library/TrackBase.vue:92
+msgid "Open a support thread (include the debug information below in your message)"
+msgstr "Dobrir un fil de discutida d’assisténcia (donatz las informacions de desbugatge dins vòstre messatge)"
+
+#: front/src/components/library/AlbumBase.vue:87
+#: front/src/components/library/ArtistBase.vue:99
+#: front/src/components/library/TagDetail.vue:11
+#: front/src/components/library/TrackBase.vue:103
+#: front/src/components/manage/moderation/ReportCard.vue:128
 msgctxt "Content/Moderation/Link"
 msgid "Open in moderation interface"
 msgstr "Dobrir dins l’interfàcia de moderacion"
 
-#: front/src/views/admin/library/AlbumDetail.vue:31
-#: front/src/views/admin/library/ArtistDetail.vue:30
-#: front/src/views/admin/library/TrackDetail.vue:30
+#: front/src/views/admin/library/AlbumDetail.vue:37
+#: front/src/views/admin/library/ArtistDetail.vue:35
+#: front/src/views/admin/library/TagDetail.vue:21
+#: front/src/views/admin/library/TrackDetail.vue:36
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open local profile"
 msgstr "Dobrir lo perfil local"
 
-#: front/src/views/admin/library/AlbumDetail.vue:46
-#: front/src/views/admin/library/ArtistDetail.vue:45
-#: front/src/views/admin/library/TrackDetail.vue:45
+#: front/src/views/admin/library/AlbumDetail.vue:52
+#: front/src/views/admin/library/ArtistDetail.vue:50
+#: front/src/views/admin/library/TrackDetail.vue:51
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open on MusicBrainz"
 msgstr "Veire sus MusicBrainz"
@@ -2885,10 +3045,10 @@ msgctxt "Content/Moderation/Link/Verb"
 msgid "Open profile"
 msgstr "Dobrir lo perfil"
 
-#: front/src/views/admin/library/AlbumDetail.vue:54
-#: front/src/views/admin/library/ArtistDetail.vue:53
+#: front/src/views/admin/library/AlbumDetail.vue:60
+#: front/src/views/admin/library/ArtistDetail.vue:58
 #: front/src/views/admin/library/LibraryDetail.vue:49
-#: front/src/views/admin/library/TrackDetail.vue:53
+#: front/src/views/admin/library/TrackDetail.vue:59
 #: front/src/views/admin/library/UploadDetail.vue:50
 #: front/src/views/admin/moderation/AccountsDetail.vue:52
 msgctxt "Content/Moderation/Link/Verb"
@@ -2909,6 +3069,7 @@ msgstr "O personalizatz aquesta règla"
 #: src/components/library/Radios.vue:41
 #: front/src/components/manage/library/EditsCardList.vue:37
 #: front/src/components/manage/users/UsersTable.vue:17
+#: front/src/views/admin/moderation/ReportsList.vue:42
 #: front/src/views/playlists/List.vue:25
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Order"
@@ -2916,40 +3077,50 @@ msgstr "Ã’rdre"
 
 #: front/src/components/favorites/List.vue:24
 #: src/components/library/Albums.vue:15
-#: front/src/components/library/Artists.vue:15
+#: front/src/components/library/Artists.vue:19
 #: src/components/library/Radios.vue:33
 #: front/src/components/manage/library/AlbumsTable.vue:11
 #: front/src/components/manage/library/ArtistsTable.vue:11
 #: front/src/components/manage/library/EditsCardList.vue:29
 #: front/src/components/manage/library/LibrariesTable.vue:20
+#: front/src/components/manage/library/TagsTable.vue:11
 #: front/src/components/manage/library/TracksTable.vue:11
 #: front/src/components/manage/library/UploadsTable.vue:30
 #: front/src/components/manage/moderation/AccountsTable.vue:11
-#: front/src/components/manage/moderation/DomainsTable.vue:9
+#: front/src/components/manage/moderation/DomainsTable.vue:17
 #: front/src/components/manage/users/InvitationsTable.vue:9
 #: front/src/components/manage/users/UsersTable.vue:9
+#: front/src/views/admin/moderation/ReportsList.vue:34
 #: front/src/views/content/libraries/FilesTable.vue:21
 #: front/src/views/playlists/List.vue:17
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Ordering"
 msgstr "Ã’rdre"
 
-#: front/src/components/library/Albums.vue:23
-#: src/components/library/Artists.vue:23
+#: front/src/components/library/Albums.vue:27
+#: src/components/library/Artists.vue:27
 #: front/src/components/manage/library/AlbumsTable.vue:19
 #: front/src/components/manage/library/ArtistsTable.vue:19
 #: front/src/components/manage/library/LibrariesTable.vue:28
+#: front/src/components/manage/library/TagsTable.vue:19
 #: front/src/components/manage/library/TracksTable.vue:19
 #: front/src/components/manage/library/UploadsTable.vue:38
 #: front/src/components/manage/moderation/AccountsTable.vue:19
-#: front/src/components/manage/moderation/DomainsTable.vue:17
+#: front/src/components/manage/moderation/DomainsTable.vue:25
 #: front/src/views/content/libraries/FilesTable.vue:29
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Ordering direction"
 msgstr "Direccion"
 
+#: front/src/components/mixins/Translations.vue:48
+#: front/src/components/mixins/Translations.vue:49
+msgctxt "Content/Moderation/Dropdown"
+msgid "Other"
+msgstr "Autre"
+
+#: front/src/components/manage/moderation/ReportCard.vue:143
 #: front/src/components/manage/users/InvitationsTable.vue:38
-msgctxt "Content/Admin/Table.Label"
+msgctxt "*/*/*"
 msgid "Owner"
 msgstr "Proprietari"
 
@@ -2968,12 +3139,14 @@ msgctxt "Content/*/Hidden text/Noun"
 msgid "Pagination"
 msgstr "Paginacion"
 
-#: front/src/components/auth/Login.vue:33 src/components/auth/Signup.vue:40
-msgctxt "Content/*/Input.Label"
+#: front/src/components/auth/LoginForm.vue:32
+#: src/components/auth/Settings.vue:291
+#: front/src/components/auth/SignupForm.vue:36
+msgctxt "*/*/*"
 msgid "Password"
 msgstr "Senhal"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:94
+#: front/src/components/auth/SubsonicTokenForm.vue:100
 msgctxt "Content/Settings/Message"
 msgid "Password updated"
 msgstr "Senhal actualizat"
@@ -2983,12 +3156,12 @@ msgctxt "Content/Signup/Card.Title"
 msgid "Password updated successfully"
 msgstr "Senhal corrèctament modificat"
 
-#: front/src/components/audio/Player.vue:628
+#: front/src/components/audio/Player.vue:654
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Pause track"
 msgstr "Pausar"
 
-#: front/src/components/ShortcutsModal.vue:59
+#: front/src/components/ShortcutsModal.vue:96
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Pause/play the current track"
 msgstr "Pausar/Legir la pista actuala"
@@ -3017,7 +3190,7 @@ msgctxt "Content/Library/Label"
 msgid "Pending files"
 msgstr "Fichièrs en espèra"
 
-#: front/src/components/Sidebar.vue:225
+#: front/src/components/Sidebar.vue:232
 msgctxt "Sidebar/Notifications/Hidden text"
 msgid "Pending follow requests"
 msgstr "Demandas d’abonament en espèra"
@@ -3028,84 +3201,75 @@ msgctxt "Content/Admin/*/Noun"
 msgid "Pending review"
 msgstr "En espèra de validacion"
 
-#: front/src/components/Sidebar.vue:226
+#: front/src/components/Sidebar.vue:233
 msgctxt "Sidebar/Moderation/Hidden text"
 msgid "Pending review edits"
 msgstr "Fichièrs en espèra"
 
+#: front/src/components/auth/Settings.vue:176
 #: front/src/components/manage/users/UsersTable.vue:42
 #: front/src/views/admin/moderation/AccountsDetail.vue:166
-msgctxt "Content/Admin/Table.Label/Noun"
-msgid "Permissions"
-msgstr "Autorizacions"
-
-#: front/src/components/auth/Settings.vue:176
 msgctxt "Content/*/*/Noun"
 msgid "Permissions"
 msgstr "Autorizacions"
 
 #: front/src/components/audio/PlayButton.vue:9
-#: front/src/components/library/TrackBase.vue:26
+#: front/src/components/library/TrackBase.vue:24
 msgctxt "*/Queue/Button.Label/Short, Verb"
 msgid "Play"
 msgstr "Legir"
 
 #: front/src/components/audio/album/Card.vue:48
-#: front/src/components/audio/artist/Card.vue:44
-#: front/src/components/library/AlbumBase.vue:20
+#: front/src/components/library/AlbumBase.vue:21
 #: front/src/components/library/AlbumDetail.vue:11
 #: src/views/playlists/Detail.vue:24
 msgctxt "Content/Queue/Button.Label/Short, Verb"
 msgid "Play all"
 msgstr "O legir tot"
 
-#: front/src/components/library/ArtistBase.vue:31
+#: front/src/components/library/ArtistBase.vue:32
 msgctxt "Content/Artist/Button.Label/Verb"
 msgid "Play all albums"
 msgstr "Legir totes los albums"
 
-#: front/src/components/audio/PlayButton.vue:76
+#: front/src/components/audio/PlayButton.vue:92
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play next"
 msgstr "Legir en seguida"
 
-#: front/src/components/ShortcutsModal.vue:67
+#: front/src/components/ShortcutsModal.vue:120
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Play next track"
 msgstr "Legir la pista seguenta"
 
-#: front/src/components/audio/PlayButton.vue:74
+#: front/src/components/audio/PlayButton.vue:90
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play now"
 msgstr "Legir ara"
 
-#: front/src/components/ShortcutsModal.vue:63
+#: front/src/components/ShortcutsModal.vue:116
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Play previous track"
 msgstr "Legir la pista precedenta"
 
-#: front/src/components/audio/PlayButton.vue:77
+#: front/src/components/audio/PlayButton.vue:93
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play similar songs"
 msgstr "Legir de cançons similaras"
 
-#: front/src/components/Sidebar.vue:224
+#: front/src/components/Sidebar.vue:231
 msgctxt "Sidebar/Player/Hidden text"
 msgid "Play this track"
 msgstr "Legir aquesta pista"
 
-#: front/src/components/audio/Player.vue:627
+#: front/src/components/audio/Player.vue:653
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Play track"
 msgstr "Legir"
 
-#: front/src/components/audio/PlayButton.vue:82
-msgctxt "*/Queue/Button/Title"
-msgid "Play..."
-msgstr "Legir…"
-
-#: front/src/views/playlists/Detail.vue:91
-msgctxt "Head/Playlist/Title"
+#: front/src/components/mixins/Report.vue:66 src/views/playlists/Detail.vue:121
+#: front/src/components/mixins/Report.vue:67
+msgctxt "*/*/*"
 msgid "Playlist"
 msgstr "Lista de lectura"
 
@@ -3141,33 +3305,30 @@ msgctxt "Content/Playlist/Dropdown.Label"
 msgid "Playlist visibility"
 msgstr "Visibilitat de la lista de lectura"
 
-#: front/src/components/mixins/Translations.vue:88
-#: front/src/components/mixins/Translations.vue:89
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Playlists"
-msgstr "Listas de lectura"
-
 #: front/src/components/Sidebar.vue:71 src/components/library/Home.vue:16
-#: front/src/components/library/Library.vue:16 src/views/admin/Settings.vue:83
-#: front/src/views/admin/library/AlbumDetail.vue:173
-#: front/src/views/admin/library/ArtistDetail.vue:162
-#: front/src/views/admin/library/TrackDetail.vue:225
+#: front/src/components/library/Library.vue:16
+#: front/src/components/mixins/Translations.vue:100
+#: src/views/admin/Settings.vue:83
+#: front/src/views/admin/library/AlbumDetail.vue:179
+#: front/src/views/admin/library/ArtistDetail.vue:167
+#: front/src/views/admin/library/TrackDetail.vue:231
 #: src/views/playlists/List.vue:106
+#: front/src/components/mixins/Translations.vue:101
 msgctxt "*/*/*"
 msgid "Playlists"
 msgstr "Listas de lectura"
 
-#: front/src/components/Home.vue:56
-msgctxt "Content/Home/List item"
-msgid "Playlists? We got them"
-msgstr "Las listas de lectura ? Las avèm"
+#: front/src/components/audio/EmbedWizard.vue:9
+msgctxt "Content/Embed/Message"
+msgid "Please contact your admins and ask them to update the corresponding setting."
+msgstr ""
 
 #: front/src/components/auth/Settings.vue:79
 msgctxt "Content/Settings/Error message.List item/Call to action"
 msgid "Please double-check your password is correct"
 msgstr "Mercés de verificar que lo senhal es corrèct"
 
-#: front/src/components/auth/Login.vue:9
+#: front/src/components/auth/LoginForm.vue:5
 msgctxt "Content/Login/Error message.List item/Call to action"
 msgid "Please double-check your username/password couple is correct"
 msgstr "Mercés de verificar que lo nom d’utilizaire e lo senhal son corrèctes"
@@ -3175,29 +3336,29 @@ msgstr "Mercés de verificar que lo nom d’utilizaire e lo senhal son corrècte
 #: front/src/components/auth/Settings.vue:46
 msgctxt "Content/Settings/Paragraph"
 msgid "PNG, GIF or JPG. At most 2MB. Will be downscaled to 400x400px."
-msgstr ""
-"PNG, GIF o JPG. 2Mo al maximum. L’imatge serà retalhat en 400×400 pixèls."
+msgstr "PNG, GIF o JPG. 2Mo al maximum. L’imatge serà retalhat en 400×400 pixèls."
 
-#: front/src/views/admin/library/TrackDetail.vue:137
-msgctxt "*/*/*/Noun"
+#: front/src/components/About.vue:72
+msgctxt "Content/About/Header/Name"
+msgid "Pod configuration"
+msgstr "Configuracion del pod"
+
+#: front/src/views/admin/library/TrackDetail.vue:143 src/edits.js:70
+msgctxt "*/*/*/Short, Noun"
 msgid "Position"
 msgstr "Posicions"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:118
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Prevent account or domain from triggering notifications, except from "
-"followers."
-msgstr ""
-"Empacha lo compte o domeni de far veire de notificacions, levat pels "
-"seguidors."
+msgid "Prevent account or domain from triggering notifications, except from followers."
+msgstr "Empacha lo compte o domeni de far veire de notificacions, levat pels seguidors."
 
-#: front/src/components/audio/EmbedWizard.vue:33
+#: front/src/components/audio/EmbedWizard.vue:43
 msgctxt "Popup/Embed/Title/Noun"
 msgid "Preview"
 msgstr "Apercebut"
 
-#: front/src/components/audio/Player.vue:626
+#: front/src/components/audio/Player.vue:652
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Previous track"
 msgstr "Pista precedenta"
@@ -3208,7 +3369,7 @@ msgctxt "Content/Settings/Dropdown/Short"
 msgid "Private"
 msgstr "Privat"
 
-#: front/src/views/content/remote/Card.vue:43
+#: front/src/views/content/remote/Card.vue:56
 msgctxt "Content/Library/Card.List item"
 msgid "Problem during scanning"
 msgstr "Error en explorant"
@@ -3229,14 +3390,19 @@ msgctxt "Content/Library/Tab.Title/Short"
 msgid "Processing"
 msgstr "Tractament"
 
-#: front/src/components/mixins/Translations.vue:68
-#: front/src/components/mixins/Translations.vue:69
+#: front/src/components/mixins/Translations.vue:80
+#: front/src/components/mixins/Translations.vue:81
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Profile"
 msgstr "Perfil"
 
+#: front/src/components/auth/SignupForm.vue:5
+msgctxt "Content/Signup/Form/Paragraph"
+msgid "Public registrations are not possible on this instance. You will need an invitation code to sign up."
+msgstr "Las inscripcions son tampadas sus aquesta instància. Auretz de téner un còdi d’invitacion per vos marcar."
+
 #: front/src/components/manage/moderation/AccountsTable.vue:188
-#: front/src/components/manage/moderation/DomainsTable.vue:168
+#: front/src/components/manage/moderation/DomainsTable.vue:186
 #: front/src/views/content/libraries/Quota.vue:36
 #: front/src/views/content/libraries/Quota.vue:39
 #: front/src/views/content/libraries/Quota.vue:62
@@ -3267,7 +3433,7 @@ msgctxt "Sidebar/Queue/Tab.Title/Noun"
 msgid "Queue"
 msgstr "Fila"
 
-#: front/src/components/audio/Player.vue:322
+#: front/src/components/audio/Player.vue:329
 msgctxt "Content/Queue/Message"
 msgid "Queue shuffled!"
 msgstr "La fila es estada mesclada !"
@@ -3299,16 +3465,12 @@ msgstr "Ràdio actualizada"
 
 #: front/src/components/library/Library.vue:13
 #: src/components/library/Radios.vue:142
+#: front/src/components/mixins/Translations.vue:104
+#: front/src/components/mixins/Translations.vue:105
 msgctxt "*/*/*"
 msgid "Radios"
 msgstr "Ràdios"
 
-#: front/src/components/mixins/Translations.vue:92
-#: front/src/components/mixins/Translations.vue:93
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Radios"
-msgstr "Ràdios"
-
 #: front/src/components/auth/ApplicationForm.vue:151
 msgctxt "Content/OAuth Scopes/Label/Verb"
 msgid "Read"
@@ -3335,15 +3497,15 @@ msgctxt "Content/Moderation/*/Noun"
 msgid "Reason"
 msgstr "Rason"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:251
-#: front/src/views/admin/moderation/DomainsDetail.vue:179
+#: front/src/views/admin/moderation/AccountsDetail.vue:252
+#: front/src/views/admin/moderation/DomainsDetail.vue:216
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Received library follows"
 msgstr "Seguiments de bibliotècas recebuts"
 
-#: front/src/components/manage/moderation/DomainsTable.vue:40
-#: front/src/components/mixins/Translations.vue:62
-#: front/src/components/mixins/Translations.vue:63
+#: front/src/components/manage/moderation/DomainsTable.vue:48
+#: front/src/components/mixins/Translations.vue:74
+#: front/src/components/mixins/Translations.vue:75
 msgctxt "Content/Moderation/*/Noun"
 msgid "Received messages"
 msgstr "Messatges recebuts"
@@ -3363,6 +3525,11 @@ msgctxt "Content/Home/Title"
 msgid "Recently added"
 msgstr "Ajustats i a res"
 
+#: front/src/components/Home.vue:167
+msgctxt "Content/Home/Title"
+msgid "Recently added albums"
+msgstr "Albums ajustats i a res"
+
 #: front/src/components/library/Home.vue:11
 msgctxt "Content/Home/Title"
 msgid "Recently favorited"
@@ -3391,14 +3558,14 @@ msgctxt "Popup/*/Message.Title"
 msgid "Refresh error"
 msgstr "Error en actualizar"
 
-#: front/src/views/admin/library/AlbumDetail.vue:50
-#: front/src/views/admin/library/ArtistDetail.vue:49
-#: front/src/views/admin/library/TrackDetail.vue:49
+#: front/src/views/admin/library/AlbumDetail.vue:56
+#: front/src/views/admin/library/ArtistDetail.vue:54
+#: front/src/views/admin/library/TrackDetail.vue:55
 msgctxt "Content/Moderation/Button/Verb"
 msgid "Refresh from remote server"
 msgstr "Actualizar del servidor alonhat estant"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:127
+#: front/src/views/admin/moderation/DomainsDetail.vue:164
 msgctxt "Content/Moderation/Button.Label/Verb"
 msgid "Refresh node info"
 msgstr "Actualizar las info del nos"
@@ -3410,10 +3577,8 @@ msgstr "Actualizar las info del nos"
 
 #: front/src/components/federation/FetchButton.vue:80
 msgctxt "Popup/*/Message.Content"
-msgid ""
-"Refresh request wasn't proceed in time by our server. It will be processed "
-"later."
-msgstr ""
+msgid "Refresh request wasn't proceed in time by our server. It will be processed later."
+msgstr "La requèsta d’actualizacion es pas estada tractada a temps per nòstre servidor. Serà executada mai tard."
 
 #: front/src/components/federation/FetchButton.vue:16
 msgctxt "Popup/*/Message.Title"
@@ -3433,18 +3598,14 @@ msgstr "L’actualizada es estada passada"
 #: front/src/components/federation/FetchButton.vue:7
 msgctxt "Popup/*/Title"
 msgid "Refreshing object from remote…"
-msgstr ""
+msgstr "Actualizacion de l’objècte del servidor alonhat estant…"
 
-#: front/src/components/auth/Signup.vue:9
-msgctxt "Content/Signup/Form/Paragraph"
-msgid ""
-"Registration are closed on this instance, you will need an invitation code "
-"to signup."
-msgstr ""
-"Las inscripcions son tampadas sus aquestà instància, aurètz de téner un còdi"
-" d’invitacion per vos marcar."
+#: front/src/components/About.vue:86
+msgctxt "*/*/*"
+msgid "Registrations"
+msgstr "Inscripcions"
 
-#: front/src/components/manage/users/UsersTable.vue:71
+#: front/src/components/manage/users/UsersTable.vue:72
 msgctxt "Content/Admin/Table, User role"
 msgid "Regular user"
 msgstr "Utilizaire estandard"
@@ -3469,8 +3630,8 @@ msgid "Rejected"
 msgstr "Regetat"
 
 #: front/src/components/manage/library/AlbumsTable.vue:43
-#: front/src/components/mixins/Translations.vue:44 src/edits.js:28
-#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:54 src/edits.js:43
+#: front/src/components/mixins/Translations.vue:55
 msgctxt "Content/*/*/Noun"
 msgid "Release date"
 msgstr "Data de sortida"
@@ -3480,6 +3641,11 @@ msgctxt "Content/Library/Paragraph"
 msgid "Remaining storage space"
 msgstr "Espaci liure"
 
+#: front/src/views/Notifications.vue:18 src/views/Notifications.vue:52
+msgctxt "Content/Notifications/Label"
+msgid "Remind me in:"
+msgstr "Me tornar avisar d’aquí :"
+
 #: front/src/views/content/remote/Home.vue:6
 msgctxt "Content/Library/Title/Noun"
 msgid "Remote libraries"
@@ -3487,12 +3653,8 @@ msgstr "Bibliotècas alonhadas"
 
 #: front/src/views/content/remote/Home.vue:7
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Remote libraries are owned by other users on the network. You can access "
-"them as long as they are public or you are granted access."
-msgstr ""
-"Las bibliotècas alonhadas apertenon a d’autres utilizaires del malhum. I "
-"podètz accedir tant que sián publicas o qu’ajatz l’autorizacion."
+msgid "Remote libraries are owned by other users on the network. You can access them as long as they are public or you are granted access."
+msgstr "Las bibliotècas alonhadas apertenon a d’autres utilizaires del malhum. I podètz accedir tant que sián publicas o qu’ajatz l’autorizacion."
 
 #: front/src/components/library/radios/Filter.vue:59
 msgctxt "Content/Radio/Button.Label/Verb"
@@ -3509,6 +3671,12 @@ msgctxt "Content/Moderation/Button.Label"
 msgid "Remove filter"
 msgstr "Levar lo filtre"
 
+#: front/src/components/manage/moderation/DomainsTable.vue:198
+#: front/src/views/admin/moderation/DomainsDetail.vue:39
+msgctxt "Content/Moderation/Action/Verb"
+msgid "Remove from allow-list"
+msgstr "Tirar de la lista de las autorizacions"
+
 #: front/src/components/favorites/TrackFavoriteIcon.vue:26
 msgctxt "Content/Track/Icon.Tooltip/Verb"
 msgid "Remove from favorites"
@@ -3516,44 +3684,98 @@ msgstr "Tirar dels favorits"
 
 #: front/src/views/content/libraries/Quota.vue:38
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded but yet to be processed tracks completely, adding the "
-"corresponding data to your quota."
-msgstr ""
-"Las pistas importadas que lo servidor a pas encara tractadas seràn "
-"complètament suprimidas. Lo quòta correspondent vos serà tornat."
+msgid "Removes uploaded but yet to be processed tracks completely, adding the corresponding data to your quota."
+msgstr "Las pistas importadas que lo servidor a pas encara tractadas seràn complètament suprimidas. Lo quòta correspondent vos serà tornat."
 
 #: front/src/views/content/libraries/Quota.vue:64
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded tracks skipped during the import processes completely, "
-"adding the corresponding data to your quota."
-msgstr ""
-"Las pistas enviadas mas ignoradas pendent lo processús d’importacion per "
-"mantun rasons seràn complètament suprimidas. Vos donarà de nòu lo quòta "
-"escafat."
+msgid "Removes uploaded tracks skipped during the import processes completely, adding the corresponding data to your quota."
+msgstr "Las pistas enviadas mas ignoradas pendent lo processús d’importacion per mantun rasons seràn complètament suprimidas. Vos donarà de nòu lo quòta escafat."
 
 #: front/src/views/content/libraries/Quota.vue:90
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded tracks that could not be processed by the server "
-"completely, adding the corresponding data to your quota."
-msgstr ""
-"Las pistas enviadas mas pas complètament tractadas pel servidor seràn "
-"complètament suprimidas. Vos donarà de nòu lo quòta escafat."
+msgid "Removes uploaded tracks that could not be processed by the server completely, adding the corresponding data to your quota."
+msgstr "Las pistas enviadas mas pas complètament tractadas pel servidor seràn complètament suprimidas. Vos donarà de nòu lo quòta escafat."
 
-#: front/src/components/auth/SubsonicTokenForm.vue:33
-#: front/src/components/auth/SubsonicTokenForm.vue:36
+#: front/src/components/audio/PlayButton.vue:94
+msgctxt "*/Queue/Dropdown/Button/Title"
+msgid "Replace current queue"
+msgstr "Remplaçar la fila actuala"
+
+#: front/src/components/mixins/Report.vue:6 src/components/mixins/Report.vue:7
+msgctxt "*/Moderation/*/Verb"
+msgid "Report @%{ username }…"
+msgstr "Senhalar @%{ username }…"
+
+#: front/src/components/manage/moderation/ReportCard.vue:5
+msgctxt "Content/Moderation/Card/Short"
+msgid "Report %{ id }"
+msgstr "Senhalar %{ id }"
+
+#: front/src/components/moderation/ReportModal.vue:139
+msgctxt "*/Moderation/Message"
+msgid "Report successfully submitted, thank you"
+msgstr "Senhalament corrèctament enviat, mercés"
+
+#: front/src/components/mixins/Report.vue:36
+#: src/components/mixins/Report.vue:37
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this album…"
+msgstr "Senhalar aqueste album…"
+
+#: front/src/components/mixins/Report.vue:50
+#: src/components/mixins/Report.vue:51
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this artist…"
+msgstr "Senhalar aqueste artista…"
+
+#: front/src/components/mixins/Report.vue:72
+#: src/components/mixins/Report.vue:73
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this library…"
+msgstr "Senhalar aquesta bibliotèca…"
+
+#: front/src/components/mixins/Report.vue:61
+#: src/components/mixins/Report.vue:62
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this playlist…"
+msgstr "Senhalar aquesta lista de lectura…"
+
+#: front/src/components/mixins/Report.vue:23
+#: src/components/mixins/Report.vue:24
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this track…"
+msgstr "Senhalar aquesta pista…"
+
+#: front/src/components/audio/PlayButton.vue:95
+msgctxt "*/Moderation/*/Button/Label,Verb"
+msgid "Report…"
+msgstr "Senhalar…"
+
+#: front/src/components/manage/moderation/ReportCard.vue:117
+msgctxt "Content/*/*/Short"
+msgid "Reported object"
+msgstr "Objècte senhalat"
+
+#: front/src/views/admin/moderation/Base.vue:5
+#: front/src/views/admin/moderation/ReportsList.vue:3
+#: front/src/views/admin/moderation/ReportsList.vue:208
+msgctxt "*/Moderation/*/Noun"
+msgid "Reports"
+msgstr "Senhalaments"
+
+#: front/src/components/auth/SubsonicTokenForm.vue:38
+#: front/src/components/auth/SubsonicTokenForm.vue:41
 msgctxt "*/Settings/Button.Label/Verb"
 msgid "Request a new password"
 msgstr "Demandar un nòu senhal"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:34
+#: front/src/components/auth/SubsonicTokenForm.vue:39
 msgctxt "Popup/Settings/Title"
 msgid "Request a new Subsonic API password?"
 msgstr "Demandar un nòu senhal per l’API Subsonic ?"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:42
+#: front/src/components/auth/SubsonicTokenForm.vue:47
 msgctxt "Content/Settings/Button.Label/Verb"
 msgid "Request a password"
 msgstr "Demandar un senhal"
@@ -3561,37 +3783,53 @@ msgstr "Demandar un senhal"
 #: front/src/components/federation/FetchButton.vue:64
 msgctxt "Popup/*/Loading.Title"
 msgid "Requesting a fetch…"
-msgstr ""
+msgstr "Demanda de recuperacion…"
 
-#: front/src/components/library/EditForm.vue:82
+#: front/src/components/library/EditForm.vue:94
 msgctxt "Content/Library/Button.Label"
-msgid "Reset to initial value: %{ value }"
-msgstr "Tornar a la valor iniciala : %{ value }"
+msgid "Reset to initial value"
+msgstr "Tornar a la valor iniciala"
 
-#: front/src/components/auth/Login.vue:35 src/views/auth/PasswordReset.vue:4
-#: front/src/views/auth/PasswordReset.vue:53
+#: front/src/components/auth/LoginForm.vue:34
+#: src/views/auth/PasswordReset.vue:4 front/src/views/auth/PasswordReset.vue:53
 msgctxt "*/Login/*/Verb"
 msgid "Reset your password"
 msgstr "Reïnicializar lo senhal"
 
+#: front/src/components/manage/moderation/ReportCard.vue:83
+msgctxt "Content/*/*/Noun"
+msgid "Resolution date"
+msgstr "Data de resolucion"
+
+#: front/src/components/manage/moderation/ReportCard.vue:218
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Resolve"
+msgstr "Resòlver"
+
+#: front/src/components/manage/moderation/ReportCard.vue:62
+#: front/src/views/admin/moderation/ReportsList.vue:20
+msgctxt "Content/*/*/Short"
+msgid "Resolved"
+msgstr "Resolgut"
+
 #: front/src/views/content/libraries/FilesTable.vue:223
 msgctxt "Content/Library/Dropdown/Verb"
 msgid "Restart import"
 msgstr "Relançar l’import"
 
+#: front/src/components/library/EditForm.vue:31
+msgctxt "Content/Library/Button.Label"
+msgid "Restrict to unreviewed edits"
+msgstr "Restrénher  a la modifications pas repassadas"
+
 #: front/src/components/favorites/List.vue:39
-#: src/components/library/Albums.vue:30
-#: front/src/components/library/Artists.vue:30
+#: src/components/library/Albums.vue:34
+#: front/src/components/library/Artists.vue:34
 #: src/components/library/Radios.vue:52 front/src/views/playlists/List.vue:32
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Results per page"
 msgstr "Resultats per pagina"
 
-#: front/src/components/library/EditForm.vue:31
-msgctxt "Content/Library/Button.Label"
-msgid "Retrict to unreviewed edits"
-msgstr "Restrénher  a la modifications pas repassadas"
-
 #: front/src/views/auth/EmailConfirm.vue:17
 msgctxt "Content/Signup/Link/Verb"
 msgid "Return to login"
@@ -3622,52 +3860,53 @@ msgctxt "Content/Moderation/Card.Title/Noun"
 msgid "Rule"
 msgstr "Règla"
 
-#: front/src/components/admin/SettingsGroup.vue:67
+#: front/src/components/About.vue:28 src/components/About.vue:56
+msgctxt "Content/About/Header"
+msgid "Rules"
+msgstr "Règlas"
+
+#: front/src/components/admin/SettingsGroup.vue:75
 #: front/src/components/library/radios/Builder.vue:34
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Save"
 msgstr "Enregistrar"
 
-#: front/src/views/content/remote/Card.vue:175
+#: front/src/views/content/remote/Card.vue:203
 msgctxt "Content/Library/Message"
 msgid "Scan launched"
 msgstr "Exploracion lançada"
 
-#: front/src/views/content/remote/Card.vue:67
+#: front/src/views/content/remote/Card.vue:80
 msgctxt "Content/Library/Card.Button.Label/Verb"
 msgid "Scan now"
 msgstr "Explorar ara"
 
-#: front/src/views/content/remote/Card.vue:35
+#: front/src/views/content/remote/Card.vue:48
 msgctxt "Content/Library/Card.List item"
 msgid "Scan pending"
 msgstr "Analisi en espèra"
 
-#: front/src/views/content/remote/Card.vue:176
+#: front/src/views/content/remote/Card.vue:204
 msgctxt "Content/Library/Message"
 msgid "Scan skipped (previous scan is too recent)"
 msgstr "Exploracion sautada (la darrièra es tròp recenta)"
 
-#: front/src/views/content/remote/Card.vue:47
+#: front/src/views/content/remote/Card.vue:60
 msgctxt "Content/Library/Card.List item"
 msgid "Scanned"
 msgstr "Explorat"
 
-#: front/src/views/content/remote/Card.vue:51
+#: front/src/views/content/remote/Card.vue:64
 msgctxt "Content/Library/Card.List item"
 msgid "Scanned with errors"
 msgstr "Explorada amb d’errors"
 
-#: front/src/views/content/remote/Card.vue:39
+#: front/src/views/content/remote/Card.vue:52
 msgctxt "Content/Library/Card.List item"
 msgid "Scanning… (%{ progress }%)"
 msgstr "Exploracion… (%{ progress }%)"
 
 #: front/src/components/auth/ApplicationForm.vue:22
-msgctxt "Content/Applications/Input.Label/Noun"
-msgid "Scopes"
-msgstr "Visibilitat"
-
 #: front/src/components/auth/Settings.vue:226
 msgctxt "Content/*/*/Noun"
 msgid "Scopes"
@@ -3680,12 +3919,14 @@ msgstr "Visibilitats"
 #: front/src/components/manage/library/ArtistsTable.vue:5
 #: front/src/components/manage/library/EditsCardList.vue:6
 #: front/src/components/manage/library/LibrariesTable.vue:5
+#: front/src/components/manage/library/TagsTable.vue:5
 #: front/src/components/manage/library/TracksTable.vue:5
 #: front/src/components/manage/library/UploadsTable.vue:5
 #: front/src/components/manage/moderation/AccountsTable.vue:5
 #: front/src/components/manage/moderation/DomainsTable.vue:5
 #: front/src/components/manage/users/InvitationsTable.vue:5
 #: front/src/components/manage/users/UsersTable.vue:5
+#: front/src/views/admin/moderation/ReportsList.vue:8
 #: front/src/views/content/libraries/FilesTable.vue:5
 #: src/views/playlists/List.vue:13
 msgctxt "Content/Search/Input.Label/Noun"
@@ -3698,6 +3939,7 @@ msgid "Search a remote library"
 msgstr "Cercar una bibliotèca alonhada"
 
 #: front/src/components/manage/library/EditsCardList.vue:211
+#: front/src/views/admin/moderation/ReportsList.vue:207
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by account, summary, domain…"
 msgstr "Recercar per títol, artista, domeni…"
@@ -3732,7 +3974,12 @@ msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by domain, username, bio…"
 msgstr "Recercar per domeni, nom d’utilizaire, bio…"
 
-#: front/src/components/manage/moderation/DomainsTable.vue:151
+#: front/src/components/manage/library/TagsTable.vue:165
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by name"
+msgstr "Recercar per nom"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:168
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by name…"
 msgstr "Recercar per nom…"
@@ -3747,12 +3994,12 @@ msgctxt "Content/Admin/Input.Placeholder/Verb"
 msgid "Search by username, e-mail address, code…"
 msgstr "Recercar per nom d’utilizaire, corrièl, còdi…"
 
-#: front/src/components/manage/users/UsersTable.vue:163
+#: front/src/components/manage/users/UsersTable.vue:164
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by username, e-mail address, name…"
 msgstr "Recercar per nom d’utilizaire, corrièl, nom…"
 
-#: front/src/components/audio/SearchBar.vue:20
+#: front/src/components/audio/SearchBar.vue:27
 msgctxt "Sidebar/Search/Input.Placeholder"
 msgid "Search for artists, albums, tracks…"
 msgstr "Recercar d’artistas, d’albums, de pistas…"
@@ -3762,16 +4009,28 @@ msgctxt "Content/Search/Title"
 msgid "Search for some music"
 msgstr "Recercar de musica"
 
-#: front/src/components/library/AlbumBase.vue:57
-#: front/src/components/library/ArtistBase.vue:68
-#: front/src/components/library/TrackBase.vue:76
+#: front/src/components/library/TagsSelector.vue:6
+msgctxt "*/Dropdown/Placeholder/Verb"
+msgid "Search for tags…"
+msgstr "Recercar per etiquetas…"
+
+#: front/src/components/library/AlbumBase.vue:66
+#: front/src/components/library/ArtistBase.vue:77
+#: front/src/components/library/TrackBase.vue:82
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Search on Discogs"
+msgstr "Recercar en Discogs"
+
+#: front/src/components/library/AlbumBase.vue:58
+#: front/src/components/library/ArtistBase.vue:69
+#: front/src/components/library/TrackBase.vue:74
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Search on Wikipedia"
 msgstr "Recercar sus Wikipèdia"
 
 #: front/src/components/library/Library.vue:35
-#: src/views/admin/library/Base.vue:32
-#: front/src/views/admin/moderation/Base.vue:22
+#: src/views/admin/library/Base.vue:35
+#: front/src/views/admin/moderation/Base.vue:44
 #: src/views/admin/users/Base.vue:21 front/src/views/content/Base.vue:19
 msgctxt "Menu/*/Hidden text"
 msgid "Secondary menu"
@@ -3782,13 +4041,32 @@ msgctxt "Content/Admin/Menu.Title"
 msgid "Sections"
 msgstr "Seccions"
 
+#: front/src/components/ShortcutsModal.vue:108
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek backwards 30s"
+msgstr "Recular de 30s"
+
+#: front/src/components/ShortcutsModal.vue:100
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek backwards 5s"
+msgstr "Recular de 5s"
+
+#: front/src/components/ShortcutsModal.vue:112
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek forwards 30s"
+msgstr "Avançar de 30s"
+
+#: front/src/components/ShortcutsModal.vue:104
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek forwards 5s"
+msgstr "Avançar de 5s"
+
 #: front/src/components/library/radios/Builder.vue:46
 msgctxt "Content/Radio/Dropdown.Placeholder/Verb"
 msgid "Select a filter"
 msgstr "Seleccionar un filtre"
 
 #: front/src/components/common/ActionTable.vue:79
-#, fuzzy
 msgctxt "Content/*/Link/Verb"
 msgid "Select all %{ total } elements"
 msgid_plural "Select all %{ total } elements"
@@ -3800,9 +4078,14 @@ msgctxt "Content/*/Link/Verb"
 msgid "Select only current page"
 msgstr "Seleccionar solament la pagina actuala"
 
-#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:108
-#: front/src/components/manage/users/UsersTable.vue:181
-#: front/src/views/admin/moderation/AccountsDetail.vue:506
+#: front/src/components/Home.vue:43
+msgctxt "Content/Home/Link"
+msgid "Server rules"
+msgstr "Règlas del servidor"
+
+#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:112
+#: front/src/components/manage/users/UsersTable.vue:182
+#: front/src/views/admin/moderation/AccountsDetail.vue:526
 msgctxt "*/*/*/Noun"
 msgid "Settings"
 msgstr "Paramètres"
@@ -3824,50 +4107,65 @@ msgstr "Ligam de partatge"
 
 #: front/src/views/content/libraries/Detail.vue:15
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Share this link with other users so they can request access to your library."
-msgstr ""
-"Partajatz aqueste ligam amb d’autres utilizaires per que pòscan accedir a "
-"vòstra bibliotèca."
+msgid "Share this link with other users so they can request access to your library."
+msgstr "Partajatz aqueste ligam amb d’autres utilizaires per que pòscan accedir a vòstra bibliotèca."
 
 #: front/src/views/content/libraries/Detail.vue:14
-#: front/src/views/content/remote/Card.vue:77
+#: front/src/views/content/remote/Card.vue:90
 msgctxt "Content/Library/Title"
 msgid "Sharing link"
 msgstr "Ligam de partatge"
 
+#: front/src/components/audio/EmbedWizard.vue:5
+msgctxt "Content/Embed/Message"
+msgid "Sharing will not work because this pod doesn't allow anonymous users to access content."
+msgstr ""
+
+#: front/src/components/About.vue:156
+msgctxt "*/*/*/Verb"
+msgid "Show"
+msgstr "Mostrar"
+
 #: front/src/components/audio/album/Card.vue:38
-#, fuzzy
 msgctxt "Content/Album/Card.Link/Verb"
 msgid "Show %{ count } more track"
 msgid_plural "Show %{ count } more tracks"
-msgstr[0] "%{ count } pista mai"
-msgstr[1] "%{ count } pistas mai"
+msgstr[0] "Mostrar %{ count } pista mai"
+msgstr[1] "Mostrar %{ count } pistas mai"
 
-#: front/src/components/audio/artist/Card.vue:30
-#, fuzzy
-msgctxt "Content/Artist/Card.Link"
-msgid "Show 1 more album"
-msgid_plural "Show %{ count } more albums"
-msgstr[0] "Mostrar 1 album mai"
-msgstr[1] "Mostrar %{ count } albums mai"
+#: front/src/components/tags/List.vue:11
+msgctxt "Content/*/Button/Label/Verb"
+msgid "Show 1 more tag"
+msgid_plural "Show %{ count } more tags"
+msgstr[0] "Mostrar 1 etiqueta de mai"
+msgstr[1] "Mostrar %{ count } etiquetas de mai"
 
 #: front/src/components/library/EditForm.vue:21
 msgctxt "Content/Library/Button.Label"
 msgid "Show all edits"
 msgstr "Mostrar totas las modificacions"
 
-#: front/src/components/ShortcutsModal.vue:42
+#: front/src/components/ShortcutsModal.vue:60
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Show available keyboard shortcuts"
 msgstr "Mostrar los acorchis clavièr disponibles"
 
-#: front/src/views/Notifications.vue:7
+#: front/src/components/common/ExpandableDiv.vue:7
+msgctxt "*/*/Button,Label"
+msgid "Show less"
+msgstr "Ne veire mens"
+
+#: front/src/components/common/ExpandableDiv.vue:8
+msgctxt "*/*/Button,Label"
+msgid "Show more"
+msgstr "Ne veire mai"
+
+#: front/src/views/Notifications.vue:72
 msgctxt "Content/Notifications/Form.Label/Verb"
 msgid "Show read notifications"
 msgstr "Mostrar las notificacions legidas"
 
-#: front/src/components/forms/PasswordInput.vue:26
+#: front/src/components/forms/PasswordInput.vue:42
 msgctxt "Content/Settings/Button.Tooltip/Verb"
 msgid "Show/hide password"
 msgstr "Mostrar/amagar lo senhal"
@@ -3876,56 +4174,63 @@ msgstr "Mostrar/amagar lo senhal"
 #: front/src/components/manage/library/ArtistsTable.vue:84
 #: front/src/components/manage/library/EditsCardList.vue:72
 #: front/src/components/manage/library/LibrariesTable.vue:110
+#: front/src/components/manage/library/TagsTable.vue:79
 #: front/src/components/manage/library/TracksTable.vue:95
 #: front/src/components/manage/library/UploadsTable.vue:144
 #: front/src/components/manage/moderation/AccountsTable.vue:88
-#: front/src/components/manage/moderation/DomainsTable.vue:74
+#: front/src/components/manage/moderation/DomainsTable.vue:85
 #: front/src/components/manage/users/InvitationsTable.vue:76
-#: front/src/components/manage/users/UsersTable.vue:87
+#: front/src/components/manage/users/UsersTable.vue:88
 #: front/src/views/content/libraries/FilesTable.vue:117
 msgctxt "Content/*/Paragraph"
 msgid "Showing results %{ start }-%{ end } on %{ total }"
 msgstr "Afichatge dels resultats %{ start }-%{ end } sus %{ total }"
 
-#: front/src/components/ShortcutsModal.vue:83
+#: front/src/components/ShortcutsModal.vue:140
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Shuffle queue"
 msgstr "Mesclar la fila"
 
-#: front/src/components/audio/Player.vue:641
+#: front/src/components/audio/Player.vue:667
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Shuffle your queue"
 msgstr "Mesclar la fila"
 
-#: front/src/components/auth/Signup.vue:97
+#: front/src/components/Home.vue:103
+msgctxt "*/Signup/Title"
+msgid "Sign up"
+msgstr "Inscripcion"
+
+#: front/src/views/auth/Signup.vue:37
 msgctxt "*/Signup/Title"
 msgid "Sign Up"
 msgstr "Inscripcion"
 
+#: front/src/components/Home.vue:107
+msgctxt "Content/Home/Paragraph"
+msgid "Sign up now to keep a track of your favorites, create playlists, discover new content and much more!"
+msgstr "Marcatz-vos per garda una traça de vòstres favorits, crear de lista de lectura, descobrir de nòu contengut e encara mai !"
+
 #: front/src/components/manage/users/UsersTable.vue:40
 msgctxt "Content/Admin/Table.Label/Short, Noun (Value is a date)"
 msgid "Sign-up"
 msgstr "Inscripcion"
 
-#: front/src/components/mixins/Translations.vue:57
-#: front/src/views/admin/moderation/AccountsDetail.vue:197
-#: front/src/components/mixins/Translations.vue:58
+#: front/src/components/mixins/Translations.vue:69
+#: front/src/views/admin/moderation/AccountsDetail.vue:198
+#: front/src/components/mixins/Translations.vue:70
 msgctxt "Content/Admin/Table.Label/Noun"
 msgid "Sign-up date"
 msgstr "Data d’inscripcion"
 
-#: front/src/components/manage/library/UploadsTable.vue:65
-#: front/src/views/admin/library/UploadDetail.vue:219
-msgctxt "Content/*/*/Noun"
-msgid "Size"
-msgstr "Talha"
-
 #: front/src/components/library/FileUpload.vue:94
 #: front/src/components/library/TrackDetail.vue:39
-#: front/src/components/mixins/Translations.vue:54
+#: front/src/components/manage/library/UploadsTable.vue:65
+#: front/src/components/mixins/Translations.vue:66
+#: front/src/views/admin/library/UploadDetail.vue:219
 #: front/src/views/content/libraries/FilesTable.vue:61
-#: front/src/components/mixins/Translations.vue:55
-msgctxt "Content/Library/*/in MB"
+#: front/src/components/mixins/Translations.vue:67
+msgctxt "Content/*/*/Noun"
 msgid "Size"
 msgstr "Talha"
 
@@ -3942,7 +4247,7 @@ msgctxt "Content/Library/Label"
 msgid "Skipped files"
 msgstr "Fichièrs ignorats"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:89
+#: front/src/views/admin/moderation/DomainsDetail.vue:126
 msgctxt "Content/Moderation/Table.Label"
 msgid "Software"
 msgstr "Logicial"
@@ -3957,96 +4262,63 @@ msgctxt "Content/*/Paragraph"
 msgid "Sorry, the page you asked for does not exist:"
 msgstr "O planhèm, la pagina demandada existís pas :"
 
-#: front/src/components/Footer.vue:49
+#: front/src/components/Footer.vue:57
 msgctxt "Footer/*/List item.Link"
 msgid "Source code"
 msgstr "Còdi font"
 
 #: front/src/components/auth/Profile.vue:23
-#: front/src/components/manage/users/UsersTable.vue:70
+#: front/src/components/manage/users/UsersTable.vue:71
 msgctxt "Content/Profile/User role"
 msgid "Staff member"
 msgstr "Membre de la còla"
 
-#: front/src/components/audio/PlayButton.vue:23
+#: front/src/components/audio/PlayButton.vue:27
 #: src/components/radios/Button.vue:4
 msgctxt "*/Queue/Button.Label/Short, Verb"
 msgid "Start radio"
 msgstr "Aviar la ràdio"
 
-#: front/src/views/admin/Settings.vue:86
-msgctxt "Content/Admin/Menu"
+#: front/src/components/About.vue:170 src/components/Home.vue:53
+#: front/src/views/admin/Settings.vue:87
+msgctxt "Content/Home/Header"
 msgid "Statistics"
 msgstr "Estatisticas"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:490
+#: front/src/views/admin/moderation/AccountsDetail.vue:510
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this account"
-msgstr ""
-"Las estatisticas son calculadas amb las activitats conegudas e lo contengut "
-"de vòstra instància, son pas lo rebat de l’activitat generala d’aqueste "
-"compte"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this account"
+msgstr "Las estatisticas son calculadas amb las activitats conegudas e lo contengut de vòstra instància, son pas lo rebat de l’activitat generala d’aqueste compte"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:371
+#: front/src/views/admin/moderation/DomainsDetail.vue:418
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this domain"
-msgstr ""
-"Las estatisticas son calculadas amb las activitats conegudas e lo contengut "
-"de vòstra instància, son pas lo rebat de l’activitat generala d’aqueste "
-"domeni"
-
-#: front/src/views/admin/library/AlbumDetail.vue:329
-#: front/src/views/admin/library/ArtistDetail.vue:328
-#: front/src/views/admin/library/LibraryDetail.vue:316
-#: front/src/views/admin/library/TrackDetail.vue:371
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this domain"
+msgstr "Las estatisticas son calculadas amb las activitats conegudas e lo contengut de vòstra instància, son pas lo rebat de l’activitat generala d’aqueste domeni"
+
+#: front/src/views/admin/library/AlbumDetail.vue:346
+#: front/src/views/admin/library/ArtistDetail.vue:345
+#: front/src/views/admin/library/LibraryDetail.vue:356
+#: front/src/views/admin/library/TagDetail.vue:210
+#: front/src/views/admin/library/TrackDetail.vue:389
 #: front/src/views/admin/library/UploadDetail.vue:335
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this object"
-msgstr ""
-"Las estatisticas son calculadas amb las activitats conegudas e lo contengut "
-"de vòstra instància, son pas lo rebat de l’activitat generala d’aqueste "
-"compte"
-
-#: front/src/views/admin/moderation/DomainsDetail.vue:115
-msgctxt "Content/Moderation/Table.Label (Value is Error message)"
-msgid "Status"
-msgstr "Estatut"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this object"
+msgstr "Las estatisticas son calculadas amb las activitats conegudas e lo contengut de vòstra instància, son pas lo rebat de l’activitat generala d’aqueste compte"
 
 #: front/src/components/library/FileUpload.vue:95
-msgctxt "Content/Library/Table.Label (Value is Uploading/Uploaded/Error)"
-msgid "Status"
-msgstr "Estatut"
-
-#: front/src/views/content/libraries/Detail.vue:28
-msgctxt "Content/Library.Federation/Table.Label (Value is Approved/Rejected)"
-msgid "Status"
-msgstr "Estatut"
-
+#: front/src/components/manage/library/EditsCardList.vue:12
+#: front/src/components/manage/moderation/ReportCard.vue:57
 #: front/src/components/manage/users/InvitationsTable.vue:17
 #: front/src/components/manage/users/InvitationsTable.vue:39
-msgctxt "Content/Admin/*/Noun (Value is Used/Not used)"
-msgid "Status"
-msgstr "Estatut"
-
 #: front/src/components/manage/users/UsersTable.vue:43
-msgctxt "Content/Admin/Table.Label/Noun (Value is Regular user/Admin)"
-msgid "Status"
-msgstr "Estatut"
-
-#: front/src/components/manage/library/EditsCardList.vue:12
-msgctxt ""
-"Content/Search/Dropdown.Label (Value is All/Pending "
-"review/Approved/Rejected)"
+#: front/src/views/admin/moderation/DomainsDetail.vue:152
+#: front/src/views/admin/moderation/ReportsList.vue:14
+#: front/src/views/content/libraries/Detail.vue:28
+msgctxt "*/*/*"
 msgid "Status"
 msgstr "Estatut"
 
-#: front/src/components/Sidebar.vue:174 src/components/radios/Button.vue:3
+#: front/src/components/Sidebar.vue:178 src/components/radios/Button.vue:3
 msgctxt "*/Player/Button.Label/Short, Verb"
 msgid "Stop radio"
 msgstr "Arrestar la ràdio"
@@ -4056,7 +4328,7 @@ msgctxt "*/*/Button.Label/Verb"
 msgid "Submit"
 msgstr "Validar"
 
-#: front/src/components/library/EditForm.vue:98
+#: front/src/components/library/EditForm.vue:110
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Submit and apply edit"
 msgstr "Enviar e aplicar la modificacion"
@@ -4066,12 +4338,22 @@ msgctxt "Content/Library/Button.Label"
 msgid "Submit another edit"
 msgstr "Enviar una modificacion de mai"
 
-#: front/src/components/library/EditForm.vue:99
+#: front/src/components/moderation/ReportModal.vue:64
+msgctxt "Popup/*/Button.Label"
+msgid "Submit report"
+msgstr "Enviar"
+
+#: front/src/components/library/EditForm.vue:111
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Submit suggestion"
 msgstr "Enviar la suggestion"
 
-#: front/src/views/admin/Settings.vue:85
+#: front/src/components/manage/moderation/ReportCard.vue:17
+msgctxt "Content/Moderation/*"
+msgid "Submitted by"
+msgstr "Enviat per"
+
+#: front/src/views/admin/Settings.vue:86
 msgctxt "Content/Admin/Menu"
 msgid "Subsonic"
 msgstr "Subsonic"
@@ -4111,16 +4393,21 @@ msgctxt "Content/Library/Tab.Title/Short"
 msgid "Summary"
 msgstr "Resumit"
 
-#: front/src/components/library/EditForm.vue:87
+#: front/src/components/library/EditForm.vue:99
 msgctxt "*/*/*"
 msgid "Summary (optional)"
 msgstr "Resumit (opcional)"
 
-#: front/src/components/Footer.vue:39
+#: front/src/components/Footer.vue:47
 msgctxt "Footer/*/Listitem.Link"
 msgid "Support forum"
 msgstr "Forum d’assisténcia"
 
+#: front/src/views/Notifications.vue:10
+msgctxt "Content/Notifications/Header"
+msgid "Support this Funkwhale pod"
+msgstr "Sosténer aqueste pod Funkwhale"
+
 #: front/src/components/library/FileUpload.vue:85
 msgctxt "Content/Library/Paragraph"
 msgid "Supported extensions: %{ extensions }"
@@ -4131,45 +4418,61 @@ msgctxt "Content/Playlist/Paragraph"
 msgid "Syncing changes to server…"
 msgstr "Sincronizacion dels cambiaments amb lo servidor…"
 
-#: front/src/components/audio/EmbedWizard.vue:25
+#: front/src/components/audio/SearchBar.vue:35
+msgctxt "*/*/*/Noun"
+msgid "Tag"
+msgstr "Etiqueta"
+
+#: front/src/views/admin/library/TagDetail.vue:61
+msgctxt "Content/Moderation/Title"
+msgid "Tag data"
+msgstr "Donada de l’etiqueta"
+
+#: front/src/components/library/Albums.vue:23
+#: src/components/library/Artists.vue:15
+#: front/src/views/admin/library/Base.vue:23
+#: src/views/admin/library/TagsList.vue:24 front/src/edits.js:24
+#: src/edits.js:50 src/edits.js:91 src/entities.js:120
+msgctxt "*/*/*/Noun"
+msgid "Tags"
+msgstr "Etiquetas"
+
+#: front/src/components/mixins/Translations.vue:44
+#: front/src/components/mixins/Translations.vue:45
+msgctxt "Content/Moderation/Dropdown"
+msgid "Takedown request"
+msgstr "Demanda de retrait"
+
+#: front/src/components/About.vue:35 src/components/About.vue:61
+msgctxt "Content/About/Header"
+msgid "Terms and privacy policy"
+msgstr "Tèrmes e politica de confidencialitat"
+
+#: front/src/components/audio/EmbedWizard.vue:35
 #: front/src/components/common/CopyInput.vue:3
 msgctxt "Content/*/Paragraph"
 msgid "Text copied to clipboard!"
 msgstr "Tèxte copiat al quichapapièr !"
 
-#: front/src/components/Home.vue:26
-msgctxt "Content/Home/Paragraph"
-msgid ""
-"That's simple: we loved Grooveshark and we want to build something even "
-"better."
-msgstr ""
-"Es simple : nos agradava Grooveshark e voliam construire quicòm de melhor."
-
-#: front/src/views/admin/library/AlbumDetail.vue:75
+#: front/src/views/admin/library/AlbumDetail.vue:81
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The album will be removed, as well as associated uploads, tracks, favorites "
-"and listening history. This action is irreversible."
-msgstr ""
+msgid "The album will be removed, as well as associated uploads, tracks, favorites and listening history. This action is irreversible."
+msgstr "L’album serà tirat, e mai los mandadisses, pistas, favorits e istorics d’escota ligats. Aquesta accion es irreversibla."
 
 #: front/src/components/auth/Authorize.vue:39
 msgctxt "Content/Auth/Paragraph"
 msgid "The application is also requesting the following unknown permissions:"
-msgstr ""
-"L’aplicacion demanda tanben las autorizacions desconegudas seguentas :"
+msgstr "L’aplicacion demanda tanben las autorizacions desconegudas seguentas :"
 
-#: front/src/views/admin/library/ArtistDetail.vue:74
+#: front/src/views/admin/library/ArtistDetail.vue:79
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The artist will be removed, as well as associated uploads, tracks, albums, "
-"favorites and listening history. This action is irreversible."
-msgstr ""
+msgid "The artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible."
+msgstr "L’artista serà tirat, e mai los mandadisses, pistas, albums, favorits e istorics d’escota ligats. Aquesta accion es irreversibla."
 
-#: front/src/components/Footer.vue:53
+#: front/src/components/Footer.vue:61
 msgctxt "Footer/*/List item.Link"
 msgid "The funkwhale logo was kindly designed and provided by Francis Gading."
-msgstr ""
-"Lo logotipe de Funkwhale foguèt dessenhat e fornit per Francis Gading."
+msgstr "Lo logotipe de Funkwhale foguèt dessenhat e fornit per Francis Gading."
 
 #: front/src/components/SetInstanceModal.vue:8
 msgctxt "Popup/Instance/Error message.List item"
@@ -4178,25 +4481,18 @@ msgstr "L’adreça donada es pas un servidor Funkwhale"
 
 #: front/src/views/content/libraries/Form.vue:34
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"The library and all its tracks will be deleted. This can not be undone."
-msgstr ""
-"Aquesta bibliotèca e totas sas pistas seràn suprimidas. Aquesta accion se "
-"pòt pas anullar."
+msgid "The library and all its tracks will be deleted. This can not be undone."
+msgstr "Aquesta bibliotèca e totas sas pistas seràn suprimidas. Aquesta accion se pòt pas anullar."
 
 #: front/src/views/admin/library/LibraryDetail.vue:61
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The library will be removed, as well as associated uploads, and follows. "
-"This action is irreversible."
-msgstr ""
+msgid "The library will be removed, as well as associated uploads, and follows. This action is irreversible."
+msgstr "Aquesta bibliotèca serà tirada, e mai los mandadisses e abonaments ligats. Aquesta accions es irreversibla."
 
 #: front/src/components/library/ImportStatusModal.vue:140
 msgctxt "Popup/Import/Error.Label"
-msgid ""
-"The metadata included in the file is invalid or some mandatory fields are "
-"missing."
-msgstr ""
+msgid "The metadata included in the file is invalid or some mandatory fields are missing."
+msgstr "La metadonada inclusa al fichièr es invalida o de camps obligatòris son absents."
 
 #: front/src/components/library/FileUpload.vue:38
 msgctxt "Content/Library/List item"
@@ -4208,14 +4504,15 @@ msgctxt "Sidebar/Player/Error message.Paragraph"
 msgid "The next track will play automatically in a few seconds…"
 msgstr "La pista seguenta serà legida automaticament dins una estona…"
 
-#: front/src/components/Home.vue:116
-msgctxt "Content/Home/List item"
-msgid ""
-"The plaform is free and open-source, you can install it and modify it "
-"without worries"
-msgstr ""
-"La plataforma es gratuita e liura, podètz l’installar e la modificar sens "
-"cap de limit"
+#: front/src/components/manage/moderation/NotesThread.vue:27
+msgctxt "Content/Moderation/Paragraph"
+msgid "The note will be removed. This action is irreversible."
+msgstr "La nòta serà tirada. Aquesta accion es irreversibla."
+
+#: front/src/components/manage/moderation/ReportCard.vue:120
+msgctxt "Content/Moderation/Message"
+msgid "The object associated with this report was deleted."
+msgstr "L’objècte d’aqueste senhalament es estat suprimit."
 
 #: front/src/components/playlists/Form.vue:14
 msgctxt "Content/Playlist/Error message.Title"
@@ -4225,57 +4522,52 @@ msgstr "Lista de lectura creada"
 #: front/src/components/federation/FetchButton.vue:37
 msgctxt "*/*/Error"
 msgid "The remote server answered with HTTP %{ status }"
-msgstr ""
+msgstr "Lo servidor alonhat a respondut amb lo còdi HTTP %{ status }"
 
 #: front/src/components/federation/FetchButton.vue:13
 msgctxt "Popup/*/Message.Content"
-msgid ""
-"The remote server answered, but returned data was unsupported by Funkwhale."
-msgstr ""
+msgid "The remote server answered, but returned data was unsupported by Funkwhale."
+msgstr "Lo servidor alonhat a respondut, mas las donadas enviadas son pas suportadas er Funkwhale."
 
 #: front/src/components/federation/FetchButton.vue:44
 msgctxt "*/*/Error"
-msgid "The remote server didn't answered fast enough"
-msgstr ""
+msgid "The remote server didn't respond quickly enough"
+msgstr "Lo servidor alonhat a tròp tardat a respondre"
 
 #: front/src/components/federation/FetchButton.vue:50
 msgctxt "*/*/Error"
-msgid "The return server returned invalid JSON or JSON-LD data"
-msgstr ""
+msgid "The remote server returned invalid JSON or JSON-LD data"
+msgstr "Lo servidor alonhat a respondut amb de donadas JSON o JSON-LD invalidas"
 
 #: front/src/components/manage/library/AlbumsTable.vue:189
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected albums will be removed, as well as associated tracks, uploads, "
-"favorites and listening history. This action is irreversible."
-msgstr ""
+msgid "The selected albums will be removed, as well as associated tracks, uploads, favorites and listening history. This action is irreversible."
+msgstr "Los albums seleccionats seràn tirats, e mai las pistas, mandadisses e istorics d’escota ligats. Aquesta accion es irreversibla."
 
 #: front/src/components/manage/library/ArtistsTable.vue:179
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected artist will be removed, as well as associated uploads, tracks, "
-"albums, favorites and listening history. This action is irreversible."
-msgstr ""
+msgid "The selected artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible."
+msgstr "Los artistas seleccionats seràs tirats, e mai los mandadisses, pistas, albums, favorits e istorics d’escota ligats. Aquesta accion es irreversibla."
 
 #: front/src/components/manage/library/LibrariesTable.vue:206
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected library will be removed, as well as associated uploads and "
-"follows. This action is irreversible."
-msgstr ""
+msgid "The selected library will be removed, as well as associated uploads and follows. This action is irreversible."
+msgstr "Las bibliotècas seleccionadas seràs tiradas, e mai los mandadisses e abonaments ligats. Aquesta accions es irreversibla."
+
+#: front/src/components/manage/library/TagsTable.vue:180
+msgctxt "Popup/*/Paragraph"
+msgid "The selected tag will be removed and unlinked with existing content, if any. This action is irreversible."
+msgstr "L’etiqueta seguenta serà tirada e desligada del contengut existent, se cal. Aquesta accion es irreversibla."
 
 #: front/src/components/manage/library/TracksTable.vue:189
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected tracks will be removed, as well as associated uploads, "
-"favorites and listening history. This action is irreversible."
-msgstr ""
+msgid "The selected tracks will be removed, as well as associated uploads, favorites and listening history. This action is irreversible."
+msgstr "Las pistas seleccionadas seràn tiradas, e mai las pistas, mandadisses e istorics d’escota ligats. Aquesta accion es irreversibla."
 
 #: front/src/components/manage/library/UploadsTable.vue:256
 msgctxt "Popup/*/Paragraph"
 msgid "The selected upload will be removed. This action is irreversible."
-msgstr ""
-"La suggestion serà complètament tirada, aquesta accion es irreversibla."
+msgstr "La suggestion serà complètament tirada, aquesta accion es irreversibla."
 
 #: front/src/components/SetInstanceModal.vue:7
 msgctxt "Popup/Instance/Error message.List item"
@@ -4289,10 +4581,13 @@ msgstr "L’API Subsonic es pas disponibla per aquesta instància Funkwhale."
 
 #: front/src/components/library/EditCard.vue:96
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"The suggestion will be completely removed, this action is irreversible."
-msgstr ""
-"La suggestion serà complètament tirada, aquesta accion es irreversibla."
+msgid "The suggestion will be completely removed, this action is irreversible."
+msgstr "La suggestion serà complètament tirada, aquesta accion es irreversibla."
+
+#: front/src/views/admin/library/TagDetail.vue:44
+msgctxt "Content/Moderation/Paragraph"
+msgid "The tag will be removed and unlinked from any existing entity. This action is irreversible."
+msgstr "L’etiqueta seguenta serà tirada e desligada de las entitats existentas. Aquesta accion es irreversibla."
 
 #: front/src/components/playlists/PlaylistModal.vue:34
 msgctxt "Popup/Playlist/Error message.Title"
@@ -4304,18 +4599,15 @@ msgctxt "Sidebar/Player/Error message.Title"
 msgid "The track cannot be loaded"
 msgstr "La pista pòt pas èsser cargada"
 
-#: front/src/views/admin/library/TrackDetail.vue:74
+#: front/src/views/admin/library/TrackDetail.vue:80
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The track will be removed, as well as associated uploads, favorites and "
-"listening history. This action is irreversible."
-msgstr ""
+msgid "The track will be removed, as well as associated uploads, favorites and listening history. This action is irreversible."
+msgstr "La pista serà tirada, e mai las pistas, mandadisses, favorits e istorics d’escota ligats. Aquesta accion es irreversibla."
 
 #: front/src/views/admin/library/UploadDetail.vue:68
 msgctxt "Content/Moderation/Paragraph"
 msgid "The upload will be removed. This action is irreversible."
-msgstr ""
-"La suggestion serà complètament tirada, aquesta accion es irreversibla."
+msgstr "La suggestion serà complètament tirada, aquesta accion es irreversibla."
 
 #: front/src/components/library/FileUpload.vue:42
 msgctxt "Content/Library/List item"
@@ -4325,9 +4617,7 @@ msgstr "Los fichièrs enviats son al format OGG, Flac o MP3"
 #: front/src/views/content/Home.vue:4
 msgctxt "Content/Library/Paragraph"
 msgid "There are various ways to grab new content and make it available here."
-msgstr ""
-"Prepausam mantun biais de recuperar de nòu contengut e de lo far venir "
-"disponible aquí."
+msgstr "Prepausam mantun biais de recuperar de nòu contengut e de lo far venir disponible aquí."
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:66
 msgctxt "Popup/Moderation/Paragraph"
@@ -4344,28 +4634,41 @@ msgctxt "Content/Artist/Paragraph"
 msgid "This artist is present in the following libraries:"
 msgstr "Aqueste artista es present a las bibliotècas seguentas :"
 
+#: front/src/components/manage/moderation/DomainsTable.vue:169
+msgctxt "Content/Moderation/Popup"
+msgid "This domain is present in your allow-list"
+msgstr "Aqueste domeni es present dins vòstra lista d’autorizacion"
+
 #: front/src/views/admin/moderation/AccountsDetail.vue:84
-#: front/src/views/admin/moderation/DomainsDetail.vue:48
+#: front/src/views/admin/moderation/DomainsDetail.vue:76
 msgctxt "Content/Moderation/Card.Title"
 msgid "This domain is subject to specific moderation rules"
 msgstr "Aqueste domeni es sosmés a de règlas de moderacion especificadas"
 
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:16
+msgctxt "Content/Moderation/Card.Title"
+msgid "This entity is subject to specific moderation rules"
+msgstr "Aquesta entitat es somesa a de règlas de moderacion especificadas"
+
 #: front/src/views/content/Home.vue:9
 msgctxt "Content/Library/Paragraph"
 msgid "This instance offers up to %{quota} of storage space for every user."
-msgstr ""
-"Aquesta instància provesís fins a %{quota} d’espaci per cada utilizaire."
+msgstr "Aquesta instància provesís fins a %{quota} d’espaci per cada utilizaire."
+
+#: front/src/components/auth/Settings.vue:300
+msgctxt "Popup/Settings/Paragraph"
+msgid "This is irreversible and will permanently remove your data from our servers. You will we immediatly logged out."
+msgstr "Aquò es irreversible e suprimirà d’un biais permanent vòstras donadas de nòstres servidors. Seretz immediatament desconnectat."
 
 #: front/src/components/auth/Settings.vue:165
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"This is the list of applications that have access to your account data."
-msgstr ""
+msgid "This is the list of applications that have access to your account data."
+msgstr "Aquò es la lista de las aplicacions qu’an accès a las donadas de vòstre compte."
 
 #: front/src/components/auth/Settings.vue:218
 msgctxt "Content/Settings/Paragraph"
 msgid "This is the list of applications that you have created."
-msgstr ""
+msgstr "Aquò es la lista de las aplicacions qu’avètz creadas."
 
 #: front/src/components/auth/Profile.vue:16
 msgctxt "Content/Profile/Button.Paragraph"
@@ -4375,59 +4678,50 @@ msgstr "Sètz vos !"
 #: front/src/views/content/libraries/Form.vue:73
 msgctxt "Content/Library/Input.Placeholder"
 msgid "This library contains my personal music, I hope you like it."
-msgstr ""
-"Aquesta bibliotèca conten ma musica personala, espèri que vos agradarà."
+msgstr "Aquesta bibliotèca conten ma musica personala, espèri que vos agradarà."
 
-#: front/src/views/content/remote/Card.vue:141
+#: front/src/views/content/remote/Card.vue:169
 msgctxt "Content/Library/Card.Help text"
-msgid ""
-"This library is private and your approval from its owner is needed to access"
-" its content"
-msgstr ""
-"Aquesta bibliotèca es privada e son proprietari deu validar vòstra demanda "
-"d’accès per que accediscatz a son contengut"
+msgid "This library is private and your approval from its owner is needed to access its content"
+msgstr "Aquesta bibliotèca es privada e son proprietari deu validar vòstra demanda d’accès per que accediscatz a son contengut"
 
-#: front/src/views/content/remote/Card.vue:142
+#: front/src/views/content/remote/Card.vue:170
 msgctxt "Content/Library/Card.Help text"
 msgid "This library is public and you can access its content freely"
-msgstr ""
-"Aqueste bibliotèca es publica e podètz accedir a son contengut liurament"
+msgstr "Aqueste bibliotèca es publica e podètz accedir a son contengut liurament"
 
 #: front/src/components/common/ActionTable.vue:47
 msgctxt "Modal/*/Paragraph"
-msgid ""
-"This may affect a lot of elements or have irreversible consequences, please "
-"double check this is really what you want."
-msgstr ""
-"Aquesta operacion pòt afectar mantun elements o pòt pas èsser anullada, "
-"mercés de verificar s’es ben çò que desiratz."
+msgid "This may affect a lot of elements or have irreversible consequences, please double check this is really what you want."
+msgstr "Aquesta operacion pòt afectar mantun elements o pòt pas èsser anullada, mercés de verificar s’es ben çò que desiratz."
 
 #: front/src/components/library/AlbumEdit.vue:8
 #: front/src/components/library/ArtistEdit.vue:8
 #: front/src/components/library/TrackEdit.vue:8
 msgctxt "Content/*/Message"
 msgid "This object is managed by another server, you cannot edit it."
-msgstr ""
+msgstr "Aqueste objècte es gerit per un autre servidor, podètz pas lo modificar."
+
+#: front/src/components/Home.vue:87
+msgctxt "Content/Home/Paragraph"
+msgid "This pod runs Funkwhale, a community-driven project that lets you listen and share music and audio within a decentralized, open network."
+msgstr "Aqueste pod executa Funkwhale, un projècte menat per una comunitat que vos permet d’escotar e partejar de musica e d’àudio dins un malhum descentralizat e liure."
 
 #: front/src/components/library/FileUpload.vue:51
 msgctxt "Content/Library/Paragraph"
 msgid "This reference will be used to group imported files together."
-msgstr ""
-"Utilizarem aquesta referéncia per gropar los fichièrs importats amassa."
+msgstr "Utilizarem aquesta referéncia per gropar los fichièrs importats amassa."
 
 #: front/src/components/mixins/Translations.vue:33
 #: front/src/components/mixins/Translations.vue:34
 msgctxt "Content/Library/Help text"
-msgid "This track could not be processed, please it is tagged correctly"
-msgstr ""
-"Una error s’es producha en tractar aquesta pista, asseguratz-vos qu’es "
-"corrèctament etiquetada"
+msgid "This track could not be processed, please make sure it is tagged correctly"
+msgstr "Una error s’es producha en tractar aquesta pista, asseguratz-vos qu’es corrèctament etiquetada"
 
 #: front/src/components/mixins/Translations.vue:29
 #: front/src/components/mixins/Translations.vue:30
 msgctxt "Content/Library/Help text"
-msgid ""
-"This track has been uploaded, but hasn't been processed by the server yet"
+msgid "This track has been uploaded, but hasn't been processed by the server yet"
 msgstr "La pista es enviada mas pas encara tractada pel servidor"
 
 #: front/src/components/mixins/Translations.vue:25
@@ -4436,105 +4730,93 @@ msgctxt "Content/Library/Help text"
 msgid "This track is already present in one of your libraries"
 msgstr "La pista ja presenta dins una de vòstras bibliotècas"
 
-#: front/src/components/audio/PlayButton.vue:85
+#: front/src/components/audio/PlayButton.vue:103
 msgctxt "*/Queue/Button/Title"
 msgid "This track is not available in any library you have access to"
-msgstr ""
-"Aquesta pista es pas disponibla dins cap de las bibliotècas qu’avètz accès"
+msgstr "Aquesta pista es pas disponibla dins cap de las bibliotècas qu’avètz accès"
 
 #: front/src/components/library/TrackDetail.vue:82
 msgctxt "Content/Track/Paragraph"
 msgid "This track is present in the following libraries:"
 msgstr "Aquesta pista es presenta a las bibliotècas seguentas :"
 
-#: front/src/views/playlists/Detail.vue:38
+#: front/src/views/playlists/Detail.vue:46
 msgctxt "Popup/Playlist/Paragraph"
 msgid "This will completely delete this playlist and cannot be undone."
-msgstr ""
-"Aquò escafarà aquesta lista de lectura per totjorn e poirà pas èsser "
-"anullat."
+msgstr "Aquò escafarà aquesta lista de lectura per totjorn e poirà pas èsser anullat."
 
 #: front/src/views/radios/Detail.vue:27
 msgctxt "Popup/Radio/Paragraph"
 msgid "This will completely delete this radio and cannot be undone."
 msgstr "Aquò escafarà aquesta ràdio per totjorn e poirà pas èsser anullat."
 
-#: front/src/components/auth/SubsonicTokenForm.vue:50
+#: front/src/components/auth/SubsonicTokenForm.vue:55
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will completely disable access to the Subsonic API using from account."
-msgstr ""
-"Aquò desactivarà complètament l’accès a l’API Subsonic de vòstre compte "
-"estant."
+msgid "This will completely disable access to the Subsonic API using from account."
+msgstr "Aquò desactivarà complètament l’accès a l’API Subsonic de vòstre compte estant."
 
-#: front/src/components/auth/SubsonicTokenForm.vue:35
+#: front/src/components/manage/moderation/ReportCard.vue:359
+msgctxt "Content/Moderation/Popup,Paragraph"
+msgid "This will delete the object associated with this report and mark the report as resolved. The deletion is irreversible."
+msgstr "Aquò suprimirà l’objècte ligat amb aqueste senhalament e lo marcarà coma resolgut. Aquesta supression es irreversibla."
+
+#: front/src/components/auth/SubsonicTokenForm.vue:40
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will log you out from existing devices that use the current password."
-msgstr ""
-"Aquò vos desconnectarà de totes los periferics qu’utilizan aqueste senhal."
+msgid "This will log you out from existing devices that use the current password."
+msgstr "Aquò vos desconnectarà de totes los periferics qu’utilizan aqueste senhal."
 
 #: front/src/components/auth/Settings.vue:253
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will permanently delete the application and all the associated tokens."
-msgstr ""
-"Aquò escafarà aquesta aplicacion per totjorn e totes los getons ligats."
+msgid "This will permanently delete the application and all the associated tokens."
+msgstr "Aquò escafarà aquesta aplicacion per totjorn e totes los getons ligats."
 
 #: front/src/components/auth/Settings.vue:194
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will prevent this application from accessing the service on your "
-"behalf."
-msgstr ""
+msgid "This will prevent this application from accessing the service on your behalf."
+msgstr "Aquò empacha aquesta aplicacion d’accedir al servici en vòstre nom."
 
 #: front/src/components/playlists/Editor.vue:54
 msgctxt "Popup/Playlist/Paragraph"
 msgid "This will remove all tracks from this playlist and cannot be undone."
-msgstr ""
-"Aquò escafarà totas las pistas de la lista de lectura e poirà pas èsser "
-"anullat."
-
-#: front/src/views/admin/library/AlbumDetail.vue:99
-#: front/src/views/admin/library/TrackDetail.vue:98 src/edits.js:21
-#: src/edits.js:39
-msgctxt "*/*/*/Noun"
-msgid "Title"
-msgstr "Títol"
+msgstr "Aquò escafarà totas las pistas de la lista de lectura e poirà pas èsser anullat."
 
 #: front/src/components/audio/track/Table.vue:7
-#: front/src/views/content/libraries/FilesTable.vue:55
-msgctxt "Content/Track/*/Noun"
-msgid "Title"
-msgstr "Títol"
-
 #: front/src/components/manage/library/AlbumsTable.vue:39
 #: front/src/components/manage/library/TracksTable.vue:39
-msgctxt "*/*/*"
+#: front/src/views/admin/library/AlbumDetail.vue:105
+#: front/src/views/admin/library/TrackDetail.vue:104
+#: front/src/views/content/libraries/FilesTable.vue:55 src/edits.js:36
+#: front/src/edits.js:62
+msgctxt "*/*/*/Noun"
 msgid "Title"
 msgstr "Títol"
 
 #: front/src/components/SetInstanceModal.vue:16
 msgctxt "Popup/Instance/Paragraph"
-msgid ""
-"To continue, please select the Funkwhale instance you want to connect to. "
-"Enter the address directly, or select one of the suggested choices."
-msgstr ""
-"Per contunhar, seleccionatz una instància Funkwhale que volètz vos i "
-"connectar. Picatz l’adreça dirèctament, o seleccionatz-ne una dins las en "
-"suggestion."
+msgid "To continue, please select the Funkwhale instance you want to connect to. Enter the address directly, or select one of the suggested choices."
+msgstr "Per contunhar, seleccionatz una instància Funkwhale que volètz vos i connectar. Picatz l’adreça dirèctament, o seleccionatz-ne una dins las en suggestion."
+
+#: front/src/components/ShortcutsModal.vue:148
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle favorite"
+msgstr "Ajustar/Tirar dels favorits"
 
-#: front/src/components/ShortcutsModal.vue:79
+#: front/src/components/ShortcutsModal.vue:132
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle mute"
+msgstr "Copar/Restablir lo son"
+
+#: front/src/components/ShortcutsModal.vue:136
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Toggle queue looping"
 msgstr "Cambiar lo tipe de lectura de la lista"
 
-#: front/src/views/admin/library/AlbumDetail.vue:222
-#: front/src/views/admin/library/ArtistDetail.vue:211
-#: front/src/views/admin/library/LibraryDetail.vue:200
-#: front/src/views/admin/library/TrackDetail.vue:274
-#: front/src/views/admin/moderation/AccountsDetail.vue:317
-#: front/src/views/admin/moderation/DomainsDetail.vue:225
+#: front/src/views/admin/library/AlbumDetail.vue:238
+#: front/src/views/admin/library/ArtistDetail.vue:226
+#: front/src/views/admin/library/LibraryDetail.vue:219
+#: front/src/views/admin/library/TrackDetail.vue:290
+#: front/src/views/admin/moderation/AccountsDetail.vue:329
+#: front/src/views/admin/moderation/DomainsDetail.vue:262
 msgctxt "Content/Moderation/Table.Label"
 msgid "Total size"
 msgstr "Talha totala"
@@ -4544,20 +4826,18 @@ msgctxt "Content/Library/Card.Help text"
 msgid "Total size of the files in this library"
 msgstr "Talha totala dels fichièrs d’aquesta bibliotèca"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:105
+#: front/src/views/admin/moderation/DomainsDetail.vue:142
 msgctxt "Content/*/*"
 msgid "Total users"
 msgstr "Utilizaires totals"
 
-#: front/src/views/admin/library/UploadDetail.vue:199
-msgctxt "*/*/*"
-msgid "Track"
-msgstr "Pista"
-
-#: front/src/components/audio/SearchBar.vue:27
-#: front/src/components/library/TrackBase.vue:173
+#: front/src/components/audio/SearchBar.vue:34
+#: front/src/components/library/TrackBase.vue:188
 #: front/src/components/library/TrackDetail.vue:128
 #: front/src/components/metadata/Search.vue:138
+#: src/components/mixins/Report.vue:28
+#: front/src/views/admin/library/UploadDetail.vue:199
+#: front/src/components/mixins/Report.vue:29
 msgctxt "*/*/*/Noun"
 msgid "Track"
 msgstr "Pista"
@@ -4567,7 +4847,7 @@ msgctxt "Content/Library/Card/Short"
 msgid "Track #%{ id } - %{ name }"
 msgstr "Pista #%{ id } - %{ name }"
 
-#: front/src/views/admin/library/TrackDetail.vue:91
+#: front/src/views/admin/library/TrackDetail.vue:97
 msgctxt "Content/Moderation/Title"
 msgid "Track data"
 msgstr "Donada de la pista"
@@ -4577,30 +4857,28 @@ msgctxt "Content/Track/Title/Noun"
 msgid "Track information"
 msgstr "Informacions de la pista"
 
-#: front/src/components/mixins/Translations.vue:50
-#: front/src/components/mixins/Translations.vue:51
+#: front/src/components/mixins/Translations.vue:60
+#: front/src/components/mixins/Translations.vue:61
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Track name"
 msgstr "Nom de la pista"
 
-#: front/src/components/instance/Stats.vue:54
 #: front/src/components/library/AlbumDetail.vue:19
-#: front/src/components/playlists/PlaylistModal.vue:47
-#: front/src/views/admin/moderation/AccountsDetail.vue:362
-#: front/src/views/admin/moderation/DomainsDetail.vue:274
-#: front/src/views/content/Base.vue:8 src/views/content/libraries/Detail.vue:8
-#: front/src/views/playlists/Detail.vue:51 src/views/radios/Detail.vue:34
-msgctxt "*/*/*/Noun"
-msgid "Tracks"
-msgstr "Pistas"
-
+#: front/src/components/library/TagDetail.vue:36
 #: front/src/components/manage/library/AlbumsTable.vue:42
 #: front/src/components/manage/library/ArtistsTable.vue:42
-#: front/src/views/admin/library/AlbumDetail.vue:252
-#: front/src/views/admin/library/ArtistDetail.vue:251
+#: front/src/components/manage/library/TagsTable.vue:44
+#: front/src/components/playlists/PlaylistModal.vue:47
+#: front/src/views/admin/library/AlbumDetail.vue:268
+#: front/src/views/admin/library/ArtistDetail.vue:266
 #: front/src/views/admin/library/Base.vue:14
-#: front/src/views/admin/library/LibraryDetail.vue:229
+#: front/src/views/admin/library/LibraryDetail.vue:248
+#: front/src/views/admin/library/TagDetail.vue:143
 #: front/src/views/admin/library/TracksList.vue:24
+#: front/src/views/admin/moderation/AccountsDetail.vue:374
+#: front/src/views/admin/moderation/DomainsDetail.vue:311
+#: front/src/views/content/Base.vue:8 src/views/content/libraries/Detail.vue:8
+#: front/src/views/playlists/Detail.vue:76 src/views/radios/Detail.vue:34
 msgctxt "*/*/*"
 msgid "Tracks"
 msgstr "Pistas"
@@ -4610,79 +4888,64 @@ msgctxt "Content/Artist/Title"
 msgid "Tracks by this artist"
 msgstr "Pistas d’aqueste artista"
 
-#: front/src/components/instance/Stats.vue:25
-msgctxt "Content/About/Paragraph/Unit"
-msgid "Tracks favorited"
-msgstr "Pistas en favorits"
-
-#: front/src/components/instance/Stats.vue:19
-msgctxt "Content/About/Paragraph/Unit"
-msgid "tracks listened"
-msgstr "pistas escotadas"
-
 #: front/src/components/library/radios/Filter.vue:44
 msgctxt "Popup/Radio/Title/Noun"
 msgid "Tracks matching filter"
 msgstr "Pistas correspondentas al filtre"
 
 #: front/src/components/library/TrackDetail.vue:57
+#: front/src/components/manage/moderation/ReportCard.vue:134
 #: front/src/views/admin/library/UploadDetail.vue:250
+#: front/src/views/admin/moderation/AccountsDetail.vue:181
 msgctxt "Content/Track/Table.Label/Noun"
 msgid "Type"
 msgstr "Tipe"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:180
-msgctxt "Content/Moderation/Table.Label/Noun"
-msgid "Type"
-msgstr "Tipe"
-
 #: front/src/components/manage/moderation/AccountsTable.vue:44
-#: front/src/components/manage/moderation/DomainsTable.vue:42
+#: front/src/components/manage/moderation/DomainsTable.vue:50
 msgctxt "Content/Moderation/Table.Label/Short"
 msgid "Under moderation rule"
 msgstr "Jos règla de moderacion"
 
-#: front/src/views/content/remote/Card.vue:109
-#: src/views/content/remote/Card.vue:114
+#: front/src/components/ShortcutsModal.vue:68
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Unfocus searchbar"
+msgstr "Sortir de la recèrca"
+
+#: front/src/views/content/remote/Card.vue:122
+#: src/views/content/remote/Card.vue:127
 msgctxt "*/Library/Button.Label/Verb"
 msgid "Unfollow"
 msgstr "Quitar de seguir"
 
-#: front/src/views/content/remote/Card.vue:110
+#: front/src/views/content/remote/Card.vue:123
 msgctxt "Popup/Library/Title"
 msgid "Unfollow this library?"
 msgstr "Quitar de seguir aquesta bibliotèca ?"
 
-#: front/src/components/About.vue:17
-msgctxt "Content/About/Paragraph"
-msgid ""
-"Unfortunately, the owners of this instance did not yet take the time to "
-"complete this page."
-msgstr ""
-"Malurosament, los gestionaris d’aquesta instància aguèron pas encara lo "
-"temps de completar pas aquesta pagina."
-
 #: front/src/components/federation/FetchButton.vue:54
 #: front/src/components/federation/FetchButton.vue:55
-msgctxt "*/*/Error"
-msgid "Unknowkn error"
-msgstr "Error desconeguda"
-
 #: front/src/components/library/ImportStatusModal.vue:144
-msgctxt "Popup/Import/Error.Label"
-msgid "Unkwown error"
+msgctxt "*/*/Error"
+msgid "Unknown error"
 msgstr "Error desconeguda"
 
-#: front/src/components/Home.vue:37
-msgctxt "Content/Home/Title"
-msgid "Unlimited music"
-msgstr "Musica sens cap de limit"
-
-#: front/src/components/audio/Player.vue:630
+#: front/src/components/audio/Player.vue:656
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Unmute"
 msgstr "Restablir lo son"
 
+#: front/src/components/manage/moderation/ReportCard.vue:225
+msgctxt "Content/*/Button.Label"
+msgid "Unresolve"
+msgstr "Pas resolgut"
+
+#: front/src/components/manage/moderation/ReportCard.vue:67
+#: front/src/views/admin/moderation/ReportsList.vue:23
+msgctxt "Content/*/*/Short"
+msgid "Unresolved"
+msgstr "Pas resolgut"
+
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:57
 msgctxt "Content/Moderation/Card.Button.Label/Verb"
 msgid "Update"
@@ -4746,35 +5009,27 @@ msgstr "Data de mandadís"
 
 #: front/src/components/library/FileUpload.vue:258
 msgctxt "Content/Library/Help text"
-msgid ""
-"Upload denied, ensure the file is not too big and that you have not reached "
-"your quota"
-msgstr ""
-"Mandadís refusat, asseguratz-vos que lo fichièr es pas tròp grand e qu’avètz"
-" pas atenhut vòstre quòta"
+msgid "Upload denied, ensure the file is not too big and that you have not reached your quota"
+msgstr "Mandadís refusat, asseguratz-vos que lo fichièr es pas tròp grand e qu’avètz pas atenhut vòstre quòta"
 
 #: front/src/components/library/ImportStatusModal.vue:8
 msgctxt "Popup/Import/Message"
 msgid "Upload is still pending and will soon be processed by the server."
-msgstr ""
+msgstr "Lo mandadís es encara en espèra e serà lèu tractat pel servidor."
 
 #: front/src/views/content/Home.vue:7
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Upload music files (MP3, OGG, FLAC, etc.) from your personal library "
-"directly from your browser to enjoy them here."
-msgstr ""
-"Enviatz vòstres fichièrs musicals (MP3, OGG, FLAC, etc.) de vòstra "
-"bibliotèca personala estant dirèctament amb vòstre navigador per ne "
-"profechar aquí."
+msgid "Upload music files (MP3, OGG, FLAC, etc.) from your personal library directly from your browser to enjoy them here."
+msgstr "Enviatz vòstres fichièrs musicals (MP3, OGG, FLAC, etc.) de vòstra bibliotèca personala estant dirèctament amb vòstre navigador per ne profechar aquí."
 
 #: front/src/components/library/FileUpload.vue:30
 msgctxt "Content/Library/Title/Verb"
 msgid "Upload new tracks"
 msgstr "Enviar nòvas pistas"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:298
-msgctxt "Content/Moderation/Table.Label/Noun"
+#: front/src/components/About.vue:99
+#: front/src/views/admin/moderation/AccountsDetail.vue:309
+msgctxt "*/*/*"
 msgid "Upload quota"
 msgstr "Quòta de mandadís"
 
@@ -4785,15 +5040,13 @@ msgstr "Temps de transferiment expirat, ensajatz tornamai"
 
 #: front/src/components/library/ImportStatusModal.vue:14
 msgctxt "Popup/Import/Message"
-msgid ""
-"Upload was skipped because a similar one is already available in one of your"
-" libraries."
-msgstr ""
+msgid "Upload was skipped because a similar one is already available in one of your libraries."
+msgstr "Lo mandadís es estat sautat perque un que li sembla es ja disponible dins una de vòstras bibliotèca."
 
 #: front/src/components/library/ImportStatusModal.vue:11
 msgctxt "Popup/Import/Message"
 msgid "Upload was successfully processed by the server."
-msgstr ""
+msgstr "Lo mandadís es estat corrèctament tractat pel servidor."
 
 #: front/src/components/library/FileUpload.vue:109
 msgctxt "Content/Library/Table"
@@ -4810,74 +5063,81 @@ msgctxt "Content/Library/Table"
 msgid "Uploading…"
 msgstr "Mandadís…"
 
+#: front/src/components/manage/library/LibrariesTable.vue:52
+#: front/src/components/manage/moderation/AccountsTable.vue:41
+#: front/src/components/mixins/Translations.vue:75
+#: front/src/views/admin/library/AlbumDetail.vue:258
+#: front/src/views/admin/library/ArtistDetail.vue:246
 #: front/src/views/admin/library/Base.vue:20
+#: front/src/views/admin/library/LibraryDetail.vue:258
+#: front/src/views/admin/library/TrackDetail.vue:310
 #: front/src/views/admin/library/UploadsList.vue:24
+#: front/src/views/admin/moderation/AccountsDetail.vue:349
+#: front/src/views/admin/moderation/DomainsDetail.vue:281
+#: front/src/components/mixins/Translations.vue:76
 msgctxt "*/*/*"
 msgid "Uploads"
 msgstr "Mandadís"
 
-#: front/src/components/manage/moderation/AccountsTable.vue:41
-#: front/src/components/mixins/Translations.vue:63
-#: front/src/views/admin/library/AlbumDetail.vue:242
-#: front/src/views/admin/library/ArtistDetail.vue:231
-#: front/src/views/admin/library/LibraryDetail.vue:239
-#: front/src/views/admin/library/TrackDetail.vue:294
-#: front/src/views/admin/moderation/AccountsDetail.vue:337
-#: front/src/views/admin/moderation/DomainsDetail.vue:244
-#: front/src/components/mixins/Translations.vue:64
-msgctxt "Content/Moderation/Table.Label/Noun"
-msgid "Uploads"
-msgstr "Mandadís"
-
-#: front/src/components/manage/library/LibrariesTable.vue:52
-msgctxt "Content/*/*/Noun"
-msgid "Uploads"
-msgstr "Mandadís"
-
 #: front/src/components/auth/ApplicationForm.vue:16
 msgctxt "Content/Applications/Help Text"
-msgid ""
-"Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is "
-"not served on the web."
-msgstr ""
+msgid "Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is not served on the web."
+msgstr "Utilizatz « urn:ietf:wg:oauth:2.0:oob » coma URI de redireccion se vòstra aplicacion es pas disponibla en linha."
 
 #: front/src/components/Footer.vue:16
 msgctxt "Footer/*/List item.Link"
 msgid "Use another instance"
 msgstr "Utilizar una autra instància"
 
+#: front/src/components/Home.vue:146
+msgctxt "Content/Home/Link"
+msgid "Use Funkwhale on other devices with our apps"
+msgstr "Utilizar Funkwhale sus d’autres aparelhs amb nòstra aplicacion"
+
+#: front/src/components/moderation/ReportModal.vue:44
+msgctxt "*/*/Field,Help"
+msgid "Use this field to provide additional context to the moderator that will handle your report."
+msgstr "Utilizatz aqueste camp per provesir mai de contèxt al moderator que gerirà lo senhalament."
+
 #: front/src/views/auth/PasswordReset.vue:12
 msgctxt "Content/Signup/Paragraph"
-msgid ""
-"Use this form to request a password reset. We will send an email to the "
-"given address with instructions to reset your password."
-msgstr ""
-"Garnissètz aqueste formulari per demandar un nòu senhal. Auretz un corrièl a"
-" vòstra adreça indicada contenent las consignas de reïnicializacion."
+msgid "Use this form to request a password reset. We will send an email to the given address with instructions to reset your password."
+msgstr "Garnissètz aqueste formulari per demandar un nòu senhal. Auretz un corrièl a vòstra adreça indicada contenent las consignas de reïnicializacion."
+
+#: front/src/components/moderation/ReportModal.vue:18
+msgctxt "*/Moderation/Popup,Paragraph"
+msgid "Use this form to submit a report to our moderation team."
+msgstr "Utilizatz aqueste formulari per enviar un senhalament als nòstres moderators."
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:111
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Use this setting to temporarily enable/disable the policy without completely"
-" removing it."
-msgstr ""
-"Utilizatz aqueste paramètre per activar/desactivar temporàriament la règla "
-"sens la suprimir complètament."
+msgid "Use this setting to temporarily enable/disable the policy without completely removing it."
+msgstr "Utilizatz aqueste paramètre per activar/desactivar temporàriament la règla sens la suprimir complètament."
 
 #: front/src/components/manage/users/InvitationsTable.vue:49
 msgctxt "Content/Admin/Table"
 msgid "Used"
 msgstr "Utilizat"
 
+#: front/src/components/Home.vue:125
+msgctxt "Content/Home/Header"
+msgid "Useful links"
+msgstr "Ligams utils"
+
 #: front/src/views/content/libraries/Detail.vue:26
 msgctxt "Content/Library/Table.Label"
 msgid "User"
 msgstr "Utilizaire"
 
-#: front/src/components/instance/Stats.vue:5
-msgctxt "Content/About/Title/Noun"
-msgid "User activity"
-msgstr "Activitat dels utilizaires"
+#: front/src/components/Home.vue:154
+msgctxt "Content/Home/Link"
+msgid "User guides"
+msgstr "Guida de l’utilizaire"
+
+#: front/src/views/admin/Settings.vue:88
+msgctxt "Content/Admin/Menu"
+msgid "User Interface"
+msgstr "Interfàcia utilizaire"
 
 #: front/src/components/library/AlbumDetail.vue:26
 #: front/src/components/library/ArtistDetail.vue:39
@@ -4891,35 +5151,35 @@ msgctxt "Content/Radio/Title"
 msgid "User radios"
 msgstr "Ràdios dels utilizaires"
 
-#: front/src/components/auth/Signup.vue:19
+#: front/src/components/auth/SignupForm.vue:15
 #: front/src/components/manage/users/UsersTable.vue:37
-#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:71
 #: front/src/views/admin/moderation/AccountsDetail.vue:114
-#: front/src/components/mixins/Translations.vue:60
+#: front/src/components/mixins/Translations.vue:72
 msgctxt "Content/*/*"
 msgid "Username"
 msgstr "Nom d’utilizaire"
 
-#: front/src/components/auth/Login.vue:15
+#: front/src/components/auth/LoginForm.vue:11
 msgctxt "Content/Login/Input.Label/Noun"
 msgid "Username or email"
 msgstr "Nom d’utilizaire o corrièl"
 
-#: front/src/components/instance/Stats.vue:13
-msgctxt "Content/About/Paragraph/Unit"
-msgid "users"
-msgstr "utilizaires"
-
-#: front/src/components/Sidebar.vue:102
-#: front/src/components/manage/moderation/DomainsTable.vue:39
-#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/Sidebar.vue:106
+#: front/src/components/manage/moderation/DomainsTable.vue:47
+#: front/src/components/mixins/Translations.vue:73
 #: src/views/admin/Settings.vue:81 front/src/views/admin/users/Base.vue:5
 #: src/views/admin/users/UsersList.vue:21
-#: front/src/components/mixins/Translations.vue:62
+#: front/src/components/mixins/Translations.vue:74
 msgctxt "*/*/*/Noun"
 msgid "Users"
 msgstr "Utilizaires"
 
+#: front/src/components/Home.vue:110
+msgctxt "Content/Home/Paragraph"
+msgid "Users on this pod also get %{ quota } of free storage to upload their own content!"
+msgstr "Los utilizaires d’aqueste pod an tanben %{ quota } d’espaci per enviar lor pròpri contengut !"
+
 #: front/src/components/Footer.vue:29
 msgctxt "Footer/*/Title"
 msgid "Using Funkwhale"
@@ -4937,45 +5197,58 @@ msgctxt "Content/Library/Link/Verb"
 msgid "View files"
 msgstr "Veire los fichièrs"
 
-#: front/src/components/library/AlbumBase.vue:81
-#: front/src/components/library/ArtistBase.vue:92
-#: front/src/components/library/TrackBase.vue:100
-#: front/src/views/admin/library/AlbumDetail.vue:42
-#: front/src/views/admin/library/ArtistDetail.vue:41
+#: front/src/components/library/AlbumBase.vue:95
+#: front/src/components/library/ArtistBase.vue:107
+#: front/src/components/library/TrackBase.vue:111
+#: front/src/views/admin/library/AlbumDetail.vue:48
+#: front/src/views/admin/library/ArtistDetail.vue:46
 #: front/src/views/admin/library/LibraryDetail.vue:34
 #: front/src/views/admin/library/LibraryDetail.vue:45
-#: front/src/views/admin/library/TrackDetail.vue:41
+#: front/src/views/admin/library/TagDetail.vue:32
+#: front/src/views/admin/library/TrackDetail.vue:47
 #: front/src/views/admin/library/UploadDetail.vue:35
 #: front/src/views/admin/library/UploadDetail.vue:46
 #: front/src/views/admin/moderation/AccountsDetail.vue:37
 #: front/src/views/admin/moderation/AccountsDetail.vue:45
+#: front/src/views/admin/moderation/DomainsDetail.vue:30
 msgctxt "Content/Moderation/Link/Verb"
 msgid "View in Django's admin"
 msgstr "Veire sul panèl d’admin de Django"
 
-#: front/src/components/library/AlbumBase.vue:61
-#: front/src/components/library/ArtistBase.vue:72
-#: front/src/components/library/TrackBase.vue:80
+#: front/src/components/Home.vue:169
+msgctxt "Content/Home/Link"
+msgid "View more…"
+msgstr "Ne veire mai…"
+
+#: front/src/components/library/AlbumBase.vue:62
+#: front/src/components/library/ArtistBase.vue:73
+#: front/src/components/library/TrackBase.vue:78
 #: front/src/components/metadata/ArtistCard.vue:49
 #: front/src/components/metadata/ReleaseCard.vue:53
 msgctxt "Content/*/*/Clickable, Verb"
 msgid "View on MusicBrainz"
 msgstr "Veire sus MusicBrainz"
 
+#: front/src/components/manage/moderation/ReportCard.vue:124
+msgctxt "Content/Moderation/Link"
+msgid "View public page"
+msgstr "Veire la pagina publica"
+
 #: front/src/components/manage/library/LibrariesTable.vue:11
 #: front/src/components/manage/library/LibrariesTable.vue:51
 #: front/src/components/manage/library/UploadsTable.vue:11
 #: front/src/components/manage/library/UploadsTable.vue:63
 #: front/src/views/admin/library/LibraryDetail.vue:94
 #: front/src/views/admin/library/UploadDetail.vue:101
+#: front/src/views/content/libraries/Form.vue:18
 msgctxt "*/*/*"
 msgid "Visibility"
 msgstr "Visibilitat"
 
-#: front/src/views/content/libraries/Form.vue:18
-msgctxt "Content/Library/Dropdown.Label"
-msgid "Visibility"
-msgstr "Visibilitat"
+#: front/src/components/Home.vue:91
+msgctxt "Content/Home/Link"
+msgid "Visit funkwhale.audio"
+msgstr "Visitar funkwhale.audio"
 
 #: front/src/components/library/AlbumDetail.vue:4
 msgctxt "Content/Album/"
@@ -4987,7 +5260,12 @@ msgctxt "Popup/*/Loading.Title"
 msgid "Waiting for result…"
 msgstr "En espèra dels resultats…"
 
-#: front/src/components/auth/Login.vue:7
+#: front/src/components/auth/Settings.vue:285
+msgctxt "Content/Settings/Error message.Title"
+msgid "We cannot delete your account"
+msgstr "Podèm pas suprimir vòstre compte"
+
+#: front/src/components/auth/LoginForm.vue:3
 msgctxt "Content/Login/Error message.Title"
 msgid "We cannot log you in"
 msgstr "Error pendent la connexion"
@@ -4997,42 +5275,37 @@ msgctxt "Content/*/Error message.Title"
 msgid "We cannot save your changes"
 msgstr "Podèm pas enregistrar vòstras modificacions"
 
-#: front/src/components/Home.vue:122
-msgctxt "Content/Home/List item"
-msgid "We do not track you or bother you with ads"
-msgstr "Vos pistam pas e vos mostram pas cap de reclama"
+#: front/src/views/Notifications.vue:39
+msgctxt "Content/Notifications/Paragraph"
+msgid "We noticed you've been here for a while. If Funkwhale is useful to you, we could use your help to make it even better!"
+msgstr "Avèm remarcat que sètz aquí dempuèi un brieu. Se Funkwhale vos es util, poiriam utilizar vòstra ajuda per lo far venir encara melhor !"
 
 #: front/src/components/library/FileUpload.vue:39
 msgctxt "Content/Library/Link"
 msgid "We recommend using Picard for that purpose."
 msgstr "Vos recomandam d’utilizar lo logicial Picard per aquò far."
 
-#: front/src/components/Home.vue:7
-msgctxt "Content/Home/Title"
-msgid "We think listening to music should be simple."
-msgstr "Pensam que l’accès a la musica deuriá èsser simple."
+#: front/src/components/moderation/ReportModal.vue:35
+msgctxt "*/*/Field,Help"
+msgid "We'll use this email if we need to contact you regarding this report."
+msgstr "Utilizarem aquesta adreça se nos fa besonh vos contactar tocant aqueste senhalament."
 
-#: front/src/components/Home.vue:148
+#: front/src/components/Home.vue:207
 msgctxt "Head/Home/Title"
 msgid "Welcome"
 msgstr "La benvenguda"
 
 #: front/src/components/Home.vue:5
-msgctxt "Content/Home/Title/Verb"
-msgid "Welcome on Funkwhale"
-msgstr "La benvenguda a Funkwhale"
-
-#: front/src/components/Home.vue:24
-msgctxt "Content/Home/Title"
-msgid "Why funkwhale?"
-msgstr "Perque Funkwhale ?"
+msgctxt "Content/Home/Header"
+msgid "Welcome to %{ podName }!"
+msgstr "La benvengut a %{ podName } !"
 
-#: front/src/components/audio/EmbedWizard.vue:13
+#: front/src/components/audio/EmbedWizard.vue:23
 msgctxt "Popup/Embed/Input.Label"
 msgid "Widget height"
 msgstr "Nautor del widget"
 
-#: front/src/components/audio/EmbedWizard.vue:6
+#: front/src/components/audio/EmbedWizard.vue:16
 msgctxt "Popup/Embed/Input.Label"
 msgid "Widget width"
 msgstr "Largor del widget"
@@ -5050,11 +5323,13 @@ msgstr "Escritura sola"
 #: front/src/components/auth/ApplicationForm.vue:158
 msgctxt "Content/OAuth Scopes/Help Text"
 msgid "Write-only access to user data"
-msgstr ""
+msgstr "Accès escritura sola de las donadas utilizaire"
 
-#: front/src/components/Sidebar.vue:129
+#: front/src/components/Sidebar.vue:133
 #: front/src/components/manage/moderation/AccountsTable.vue:72
-#: front/src/components/manage/moderation/DomainsTable.vue:58
+#: front/src/components/manage/moderation/DomainsTable.vue:12
+#: front/src/components/manage/moderation/DomainsTable.vue:69
+#: front/src/views/admin/moderation/DomainsDetail.vue:109
 msgctxt "*/*/*"
 msgid "Yes"
 msgstr "Ã’c"
@@ -5066,34 +5341,18 @@ msgstr "Òc-ben, desconnectatz-me !"
 
 #: front/src/views/content/libraries/Form.vue:19
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You are able to share your library with other people, regardless of its "
-"visibility."
-msgstr ""
-"Poiretz partejar vòstra bibiotèca amb d’autres gents, sens importància de sa"
-" visibilitat."
+msgid "You are able to share your library with other people, regardless of its visibility."
+msgstr "Poiretz partejar vòstra bibiotèca amb d’autres gents, sens importància de sa visibilitat."
 
 #: front/src/components/library/FileUpload.vue:32
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You are about to upload music to your library. Before proceeding, please "
-"ensure that:"
-msgstr ""
-"Sètz a man d’enviar de la musica a vòstra bibliotèca. Abans de començar, "
-"mercés de vos assegurar que :"
+msgid "You are about to upload music to your library. Before proceeding, please ensure that:"
+msgstr "Sètz a man d’enviar de la musica a vòstra bibliotèca. Abans de començar, mercés de vos assegurar que :"
 
 #: front/src/components/SetInstanceModal.vue:12
 msgctxt "Popup/Login/Paragraph"
-msgid ""
-"You are currently connected to <a href=\"%{ url }\" target=\"_blank\">%{ "
-"hostname }&nbsp;<i class=\"external icon\"/></a>. If you continue, you will "
-"be disconnected from your current instance and all your local data will be "
-"deleted."
-msgstr ""
-"Sètz actualament connectat a <a href=\"%{ url }\" target=\"_blank\">%{ "
-"hostname }&nbsp;<i class=\"external icon\"/></a>. Se contunhatz, seretz "
-"desconnectat de l’instància actuala e totas vòstras donadas localas seràn "
-"suprimidas."
+msgid "You are currently connected to <a href=\"%{ url }\" target=\"_blank\">%{ hostname }&nbsp;<i class=\"external icon\"/></a>. If you continue, you will be disconnected from your current instance and all your local data will be deleted."
+msgstr "Sètz actualament connectat a <a href=\"%{ url }\" target=\"_blank\">%{ hostname }&nbsp;<i class=\"external icon\"/></a>. Se contunhatz, seretz desconnectat de l’instància actuala e totas vòstras donadas localas seràn suprimidas."
 
 #: front/src/components/library/ArtistDetail.vue:6
 msgctxt "Content/Artist/Paragraph"
@@ -5107,12 +5366,8 @@ msgstr "Sètz connectat coma %{ username }"
 
 #: front/src/components/library/FileUpload.vue:35
 msgctxt "Content/Library/List item"
-msgid ""
-"You are not uploading copyrighted content in a public library, otherwise you"
-" may be infringing the law"
-msgstr ""
-"Envietz pas cap de contengut jos dreches a una bibliotèca publica, autrament"
-" enfranhètz la lei"
+msgid "You are not uploading copyrighted content in a public library, otherwise you may be infringing the law"
+msgstr "Envietz pas cap de contengut jos dreches a una bibliotèca publica, autrament enfranhètz la lei"
 
 #: front/src/components/SetInstanceModal.vue:98
 msgctxt "*/Instance/Message"
@@ -5121,54 +5376,33 @@ msgstr "Utilizatz una instància Funkwhale a %{ url }"
 
 #: front/src/views/content/Home.vue:17
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You can follow libraries from other users to get access to new music. Public"
-" libraries can be followed immediatly, while following a private library "
-"requires approval from its owner."
-msgstr ""
-"Podètz seguir las bibliotècas d’autres utilizaires per accedir a de nòvas "
-"musicas. Las bibliotècas publicas pòdon èsser seguidas còp sec, mentre "
-"qu’una bibliotèca privada demanda una aprovacion de sus proprietaris."
-
-#: front/src/components/Home.vue:128
-msgctxt "Content/Home/List item"
-msgid ""
-"You can invite friends and family to your instance so they can enjoy your "
-"music"
-msgstr ""
-"Podètz convidar vòstres amics e vòstra familha a aquesta instància per que "
-"pòscan profeitar de vòstra musica"
+msgid "You can follow libraries from other users to get access to new music. Public libraries can be followed immediately, while following a private library requires approval from its owner."
+msgstr "Podètz seguir las bibliotècas d’autres utilizaires per accedir a de nòvas musicas. Las bibliotècas publicas pòdon èsser seguidas còp sec, mentre qu’una bibliotèca privada demanda una aprovacion de sus proprietaris."
 
 #: front/src/components/moderation/FilterModal.vue:31
 msgctxt "Popup/Moderation/Paragraph"
-msgid ""
-"You can manage and update your filters anytime from your account settings."
-msgstr ""
-"Podètz gerir e actualizar los filtres quand volgatz dels paramètres de "
-"compte estant."
+msgid "You can manage and update your filters any time from your account settings."
+msgstr "Podètz gerir e actualizar los filtres quand volgatz dels paramètres de compte estant."
 
 #: front/src/views/auth/EmailConfirm.vue:24
 msgctxt "Content/Signup/Paragraph"
 msgid "You can now use the service without limitations."
 msgstr "Podètz ara utilizar lo servici sens cap de limitacions."
 
+#: front/src/components/auth/Settings.vue:278
+msgctxt "Content/Settings/Paragraph'"
+msgid "You can permanently and irreversibly delete your account and all the associated data using the form below. You will be asked for confirmation."
+msgstr "Podètz suprimir vòstre compte e totas las donadas d’un biais permanent e irreversible en utilizar lo formulari çai-jos. Vos demandarem una confirmacion."
+
 #: front/src/components/library/radios/Builder.vue:7
 msgctxt "Content/Radio/Paragraph"
-msgid ""
-"You can use this interface to build your own custom radio, which will play "
-"tracks according to your criteria."
-msgstr ""
-"Podètz utilizar aquesta interfàcia per realizar vòstra pròpria ràdio "
-"personalizada, que jogarà las listas segon los critèris indicats."
+msgid "You can use this interface to build your own custom radio, which will play tracks according to your criteria."
+msgstr "Podètz utilizar aquesta interfàcia per realizar vòstra pròpria ràdio personalizada, que jogarà las listas segon los critèris indicats."
 
 #: front/src/components/auth/SubsonicTokenForm.vue:7
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"You can use those to enjoy your playlist and music in offline mode, on your "
-"smartphone or tablet, for instance."
-msgstr ""
-"Podètz los utilizar per profeitar de vòstras listas de lectura e de vòstra "
-"musica en mòde fòra linha sus vòstre mobil, tableta, per exemple."
+msgid "You can use those to enjoy your playlist and music in offline mode, on your smartphone or tablet, for instance."
+msgstr "Podètz los utilizar per profeitar de vòstras listas de lectura e de vòstra musica en mòde fòra linha sus vòstre mobil, tableta, per exemple."
 
 #: front/src/components/auth/Settings.vue:202
 msgctxt "Content/Applications/Paragraph"
@@ -5185,22 +5419,17 @@ msgctxt "Content/Moderation/Card.Title"
 msgid "You don't have any rule in place for this account."
 msgstr "Avètz pas cap de règla en plaça per aqueste compte."
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:39
+#: front/src/views/admin/moderation/DomainsDetail.vue:67
 msgctxt "Content/Moderation/Card.Title"
 msgid "You don't have any rule in place for this domain."
 msgstr "Avètz pas cap de règla en plaça per aqueste domeni."
 
 #: front/src/components/library/EditForm.vue:52
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You don't have the permission to edit this object, but you can suggest "
-"changes. Once submitted, suggestions will be reviewed before approval."
-msgstr ""
-"Avètz pas l’autorizacion de modificar aqueste objècte, mas podètz suggerir "
-"de cambiaments. Un còp mandadas, las suggestions seràn repassadas abans "
-"validacion."
+msgid "You don't have the permission to edit this object, but you can suggest changes. Once submitted, suggestions will be reviewed before approval."
+msgstr "Avètz pas l’autorizacion de modificar aqueste objècte, mas podètz suggerir de cambiaments. Un còp mandadas, las suggestions seràn repassadas abans validacion."
 
-#: front/src/components/Sidebar.vue:171
+#: front/src/components/Sidebar.vue:175
 msgctxt "Sidebar/Player/Title"
 msgid "You have a radio playing"
 msgstr "Escotatz una ràdio"
@@ -5212,16 +5441,13 @@ msgstr "Poiriá arribar qu’ajatz de problèma de connexion."
 
 #: front/src/components/auth/Settings.vue:100
 msgctxt "Popup/Settings/List item"
-msgid ""
-"You will be logged out from this session and have to log in with the new one"
-msgstr ""
-"Sètz per èsser desconnectat d’aquesta session e vos caldrà vos connectar amb"
-" lo nòu senhal"
+msgid "You will be logged out from this session and have to log in with the new one"
+msgstr "Sètz per èsser desconnectat d’aquesta session e vos caldrà vos connectar amb lo nòu senhal"
 
 #: front/src/components/auth/Authorize.vue:51
 msgctxt "Content/Auth/Paragraph"
 msgid "You will be redirected to <strong>%{ url }</strong>"
-msgstr ""
+msgstr "Seretz mandat a <strong>%{ url }</strong>"
 
 #: front/src/components/auth/Authorize.vue:49
 msgctxt "Content/Auth/Paragraph"
@@ -5230,26 +5456,23 @@ msgstr "Vos mostrarem un còdi de copiar-pegar dins l’aplicacion."
 
 #: front/src/components/auth/Settings.vue:71
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"You will have to update your password on your clients that use this "
-"password."
-msgstr ""
-"Vos caldrà actualizar lo senhal sus totes los clients qu’utilizan aqueste "
-"senhal."
+msgid "You will have to update your password on your clients that use this password."
+msgstr "Vos caldrà actualizar lo senhal sus totes los clients qu’utilizan aqueste senhal."
 
 #: front/src/components/moderation/FilterModal.vue:20
 msgctxt "Popup/Moderation/Paragraph"
-msgid ""
-"You will not see tracks, albums and user activity linked to this artist "
-"anymore:"
-msgstr ""
-"Veiretz pas mai las pistas, albums e las activitats d’utilizaires ligadas a "
-"aqueste artista :"
+msgid "You will not see tracks, albums and user activity linked to this artist any more:"
+msgstr "Veiretz pas mai las pistas, albums e las activitats d’utilizaires ligadas a aqueste artista :"
 
-#: front/src/components/auth/Signup.vue:13
+#: front/src/components/auth/SignupForm.vue:9
 msgctxt "Content/Signup/Form/Paragraph"
 msgid "Your account cannot be created."
-msgstr "L’avatar pòt pas èsser enregistrat"
+msgstr "Lo compte pòt pas èsser creat."
+
+#: front/src/components/auth/Settings.vue:281
+msgctxt "Content/Settings/Paragraph'"
+msgid "Your account will be deleted from our servers within a few minutes. We will also notify other servers who may have a copy of some of your data so they can proceed to deletion. Please note that some of these servers may be offline or unwilling to comply though."
+msgstr "Vòstre compte serà suprimit de nòstres servidors d’aquí unas minutas. Avisarem tanben los autres servidors que pòdon aver una còpia de certanas donda per que realizen la supression. Remarcatz qu’unes d’aqueles pòdon èsser fòra linha o voler pas o far."
 
 #: front/src/components/auth/Settings.vue:215
 msgctxt "Content/Settings/Title/Noun"
@@ -5261,6 +5484,11 @@ msgctxt "Content/Settings/Error message.Title"
 msgid "Your avatar cannot be saved"
 msgstr "L’avatar pòt pas èsser enregistrat"
 
+#: front/src/components/auth/Settings.vue:527
+msgctxt "*/Auth/Message"
+msgid "Your deletion request was submitted, your account and content will be deleted shortly"
+msgstr "Vòstra demanda de supression es estada enviada, vòstre compte e lo contengut seràn lèu suprimits"
+
 #: front/src/components/library/EditForm.vue:3
 msgctxt "Content/Library/Paragraph"
 msgid "Your edit was successfully submitted."
@@ -5271,12 +5499,12 @@ msgctxt "Head/Favorites/Title"
 msgid "Your Favorites"
 msgstr "Vòstres favorits"
 
-#: front/src/components/Home.vue:109
-msgctxt "Content/Home/Title"
-msgid "Your music, your way"
-msgstr "Vòstra musica, coma volètz"
+#: front/src/views/Notifications.vue:5
+msgctxt "Content/Notifications/Title"
+msgid "Your messages"
+msgstr "Vòstre messatge"
 
-#: front/src/views/Notifications.vue:4
+#: front/src/views/Notifications.vue:69
 msgctxt "Content/Notifications/Title"
 msgid "Your notifications"
 msgstr "Vòstras notificacions"
@@ -5293,42 +5521,37 @@ msgstr "Vòstre senhal es corrèctament cambiat."
 
 #: front/src/components/auth/Settings.vue:14
 msgctxt "Content/Settings/Error message.Title"
-msgid "Your settings can't be updateds"
+msgid "Your settings can't be updated"
 msgstr "Impossible d’actualizar vòstres paramètres"
 
 #: front/src/components/auth/Settings.vue:101
 msgctxt "Popup/Settings/List item"
-msgid ""
-"Your Subsonic password will be changed to a new, random one, logging you out"
-" from devices that used the old Subsonic password"
-msgstr ""
-"Vòstre senhal Subsonic serà remplaçat per un nòu aleatòri, aquò vos "
-"desconnectarà de totes los periferics qu’utilizan l’ancian senhal"
+msgid "Your Subsonic password will be changed to a new, random one, logging you out from devices that used the old Subsonic password"
+msgstr "Vòstre senhal Subsonic serà remplaçat per un nòu aleatòri, aquò vos desconnectarà de totes los periferics qu’utilizan l’ancian senhal"
 
-#: front/src/edits.js:47
-msgctxt "*/*/*/Short, Noun"
-msgid "Position"
-msgstr "Posicions"
+#: front/src/entities.js:126
+msgctxt "*/*/*/Noun"
+msgid "MusicBrainz ID"
+msgstr "MusicBrainz ID"
 
-#: front/src/edits.js:54
-msgctxt "Content/Track/*/Noun"
-msgid "Copyright"
-msgstr "Copyright"
+#: front/src/main.js:110
+msgctxt "*/Error/Paragraph"
+msgid "You sent too many requests and have been rate limited, please try again in %{ delay }"
+msgstr "Avètz realizat tròpas de requèstas e sètz estat limitat, volgatz tornar ensajar d’aquí %{ delay }"
 
-#: front/src/components/library/AlbumBase.vue:183
-#, fuzzy
+#: front/src/main.js:113
+msgctxt "*/Error/Paragraph"
+msgid "You sent too many requests and have been rate limited, please try again later"
+msgstr "Avètz realizat tròpas de requèstas e sètz estat limitat, volgatz tornar ensajar mai tard"
+
+#: front/src/components/library/AlbumBase.vue:208
 msgctxt "Content/Album/Header.Title"
-msgid ""
-"Album containing %{ count } track, by <a class=\"internal\" href=\"%{ "
-"artistUrl }\">%{ artist }</a>"
-msgid_plural ""
-"Album containing %{ count } tracks, by <a class=\"internal\" href=\"%{ "
-"artistUrl }\">%{ artist }</a>"
-msgstr[0] "Album contenent %{ count } pista, de %{ artist }"
-msgstr[1] "Album contenent %{ count } pistas, de %{ artist }"
-
-#: front/src/components/audio/PlayButton.vue:220
-#, fuzzy
+msgid "Album containing %{ count } track, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgid_plural "Album containing %{ count } tracks, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgstr[0] "Album contenent %{ count } pista, de <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgstr[1] "Album contenent %{ count } pistas, de <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+
+#: front/src/components/audio/PlayButton.vue:246
 msgctxt "*/Queue/Message"
 msgid "%{ count } track was added to your queue"
 msgid_plural "%{ count } tracks were added to your queue"
diff --git a/front/locales/pl/LC_MESSAGES/app.po b/front/locales/pl/LC_MESSAGES/app.po
index 8bd099422c801c81c0e1a81f65a5cfac6c253e07..365ef6674466ef187c9cc33f7656dbe6ab613fad 100644
--- a/front/locales/pl/LC_MESSAGES/app.po
+++ b/front/locales/pl/LC_MESSAGES/app.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: front 1.0.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-05-16 10:35+0200\n"
+"POT-Creation-Date: 2019-10-01 15:15+0200\n"
 "PO-Revision-Date: 2018-11-11 08:36+0000\n"
 "Last-Translator: Marcin Mikołajczak <me@m4sk.in>\n"
 "Language-Team: \n"
@@ -38,6 +38,59 @@ msgctxt "Content/Auth/Title"
 msgid "%{ app } wants to access your Funkwhale account"
 msgstr "Zaloguj siÄ™ na swoje konto Funkwhale"
 
+#: front/src/components/About.vue:173 src/components/Home.vue:56
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } active user"
+msgid_plural "%{ count } active users"
+msgstr[0] "%{ count } utwór"
+msgstr[1] "%{ count } utwory"
+msgstr[2] "%{ count } utworów"
+
+#: front/src/components/About.vue:182
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } albums"
+msgid_plural "%{ count } albums"
+msgstr[0] "%{ count } utwór"
+msgstr[1] "%{ count } utwory"
+msgstr[2] "%{ count } utworów"
+
+#: front/src/components/About.vue:152
+msgctxt "*/*/*"
+msgid "%{ count } allowed domains"
+msgid_plural "%{ count } allowed domains"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: front/src/components/About.vue:179
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } artists"
+msgid_plural "%{ count } artists"
+msgstr[0] "%{ count } utwór"
+msgstr[1] "%{ count } utwory"
+msgstr[2] "%{ count } utworów"
+
+#: front/src/components/About.vue:176 src/components/Home.vue:59
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } hour of music"
+msgid_plural "%{ count } hours of music"
+msgstr[0] "%{ count } utwór"
+msgstr[1] "%{ count } utwory"
+msgstr[2] "%{ count } utworów"
+
+#: front/src/components/About.vue:188
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } listenings"
+msgid_plural "%{ count } listenings"
+msgstr[0] "%{ count } utwór"
+msgstr[1] "%{ count } utwory"
+msgstr[2] "%{ count } utworów"
+
 #: front/src/components/common/ActionTable.vue:68
 #, fuzzy
 msgctxt "Content/*/Paragraph"
@@ -47,9 +100,9 @@ msgstr[0] "%{ count } z %{ total } zaznaczonego"
 msgstr[1] "%{ count } z %{ total } zaznaczonych"
 msgstr[2] "%{ count } z %{ total } zaznaczonych"
 
-#: front/src/components/Sidebar.vue:121 src/components/audio/album/Card.vue:52
+#: front/src/components/Sidebar.vue:125 src/components/audio/album/Card.vue:52
 #: front/src/views/content/libraries/Card.vue:40
-#: src/views/content/remote/Card.vue:30
+#: src/views/content/remote/Card.vue:43
 #, fuzzy
 msgctxt "*/*/*"
 msgid "%{ count } track"
@@ -76,7 +129,16 @@ msgstr[0] "%{ count } utwór zgodny z wybranymi filtrami"
 msgstr[1] "%{ count } utwory zgodne z wybranymi filtrami"
 msgstr[2] "%{ count } utworów zgodnych z wybranymi filtrami"
 
-#: front/src/components/playlists/Card.vue:18
+#: front/src/components/About.vue:185
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } tracks"
+msgid_plural "%{ count } tracks"
+msgstr[0] "%{ count } utwór"
+msgstr[1] "%{ count } utwory"
+msgstr[2] "%{ count } utworów"
+
+#: front/src/components/playlists/Card.vue:28
 #, fuzzy
 msgctxt "Content/*/Card/List item"
 msgid "%{ count} track"
@@ -122,11 +184,10 @@ msgstr "Profil %{ username }"
 
 #: front/src/components/playlists/PlaylistModal.vue:21
 msgctxt "Popup/Playlist/Paragraph"
-msgid ""
-"<strong>%{ track }</strong> is already in <strong>%{ playlist }</strong>."
+msgid "<strong>%{ track }</strong> is already in <strong>%{ playlist }</strong>."
 msgstr ""
 
-#: front/src/components/audio/artist/Card.vue:41
+#: front/src/components/audio/artist/Card.vue:11
 #, fuzzy
 msgctxt "Content/Artist/Card"
 msgid "1 album"
@@ -144,24 +205,45 @@ msgstr[0] "1 polubienie"
 msgstr[1] "%{ count} polubienia"
 msgstr[2] "%{ count} polubień"
 
-#: front/src/components/Home.vue:64
-msgctxt "Content/Home/Title"
-msgid "A clean library"
-msgstr "Przejrzysta biblioteka"
+#: front/src/components/audio/artist/Card.vue:15
+#, fuzzy
+msgctxt "Content/Artist/Card"
+msgid "1 track"
+msgid_plural "%{ count } tracks"
+msgstr[0] "Dodaj utwór"
+msgstr[1] "Dodaj utwór"
+msgstr[2] "Dodaj utwór"
+
+#: front/src/views/Notifications.vue:21 src/views/Notifications.vue:55
+msgctxt "*/*/*"
+msgid "30 days"
+msgstr ""
+
+#: front/src/views/Notifications.vue:22 src/views/Notifications.vue:56
+msgctxt "*/*/*"
+msgid "60 days"
+msgstr ""
+
+#: front/src/views/Notifications.vue:23 src/views/Notifications.vue:57
+msgctxt "*/*/*"
+msgid "90 days"
+msgstr ""
 
 #: front/src/components/library/FileUpload.vue:264
+#, fuzzy
 msgctxt "Content/Library/Help text"
-msgid "A network error occured while uploading this file"
+msgid "A network error occurred while uploading this file"
 msgstr "Wystąpił błąd sieci podczas wysyłania tego pliku"
 
-#: front/src/components/library/EditForm.vue:145
+#: front/src/components/library/EditForm.vue:161
 msgctxt "*/*/Placeholder"
 msgid "A short summary describing your changes."
 msgstr "Wystąpił błąd podczas zapisywania zmian"
 
 #: front/src/components/About.vue:5
-msgctxt "Content/About/Title/Short, Noun"
-msgid "About %{ instance }"
+#, fuzzy
+msgctxt "Content/Home/Header"
+msgid "About %{ podName }"
 msgstr "O %{ instance }"
 
 #: front/src/components/Footer.vue:6
@@ -169,7 +251,7 @@ msgctxt "Footer/About/Title"
 msgid "About %{instanceName}"
 msgstr "O %{ instance }"
 
-#: front/src/components/Footer.vue:45
+#: front/src/components/Footer.vue:53 src/components/Home.vue:85
 msgctxt "Footer/*/Title/Short"
 msgid "About Funkwhale"
 msgstr "O Funkwhale"
@@ -179,9 +261,16 @@ msgctxt "Footer/About/List item.Link"
 msgid "About page"
 msgstr "Strona albumu"
 
-#: front/src/components/About.vue:8 src/components/About.vue:67
-msgctxt "Content/About/Title"
-msgid "About this instance"
+#: front/src/components/Home.vue:19
+#, fuzzy
+msgctxt "Content/Home/Header"
+msgid "About this Funkwhale pod"
+msgstr "O Funkwhale"
+
+#: front/src/components/About.vue:21 src/components/About.vue:51
+#, fuzzy
+msgctxt "Content/About/Header"
+msgid "About this pod"
 msgstr "O tej instancji"
 
 #: front/src/views/content/libraries/Detail.vue:48
@@ -194,96 +283,87 @@ msgctxt "Content/Library/Table/Short"
 msgid "Accepted"
 msgstr "Zaakceptowano"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:110
+#: front/src/components/auth/SubsonicTokenForm.vue:117
 msgctxt "Content/Settings/Message"
 msgid "Access disabled"
 msgstr "Brak dostępu"
 
-#: front/src/components/mixins/Translations.vue:73
-#: front/src/components/mixins/Translations.vue:74
+#: front/src/components/mixins/Translations.vue:85
+#: front/src/components/mixins/Translations.vue:86
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to audio files, libraries, artists, albums and tracks"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:97
-#: front/src/components/mixins/Translations.vue:98
+#: front/src/components/mixins/Translations.vue:109
+#: front/src/components/mixins/Translations.vue:110
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to content filters"
 msgstr "Zaznacz filtr"
 
-#: front/src/components/mixins/Translations.vue:105
-#: front/src/components/mixins/Translations.vue:106
+#: front/src/components/mixins/Translations.vue:117
+#: front/src/components/mixins/Translations.vue:118
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to edits"
 msgstr "Brak dostępu"
 
-#: front/src/components/mixins/Translations.vue:69
-#: front/src/components/mixins/Translations.vue:70
+#: front/src/components/mixins/Translations.vue:81
+#: front/src/components/mixins/Translations.vue:82
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to email, username, and profile information"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:77
-#: front/src/components/mixins/Translations.vue:78
+#: front/src/components/mixins/Translations.vue:89
+#: front/src/components/mixins/Translations.vue:90
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to favorites"
 msgstr "Dodaj do ulubionych"
 
-#: front/src/components/mixins/Translations.vue:85
-#: front/src/components/mixins/Translations.vue:86
+#: front/src/components/mixins/Translations.vue:97
+#: front/src/components/mixins/Translations.vue:98
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to follows"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:81
-#: front/src/components/mixins/Translations.vue:82
+#: front/src/components/mixins/Translations.vue:93
+#: front/src/components/mixins/Translations.vue:94
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to listening history"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:101
-#: front/src/components/mixins/Translations.vue:102
+#: front/src/components/mixins/Translations.vue:113
+#: front/src/components/mixins/Translations.vue:114
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to notifications"
 msgstr "Twoje powiadomienia"
 
-#: front/src/components/mixins/Translations.vue:89
-#: front/src/components/mixins/Translations.vue:90
+#: front/src/components/mixins/Translations.vue:101
+#: front/src/components/mixins/Translations.vue:102
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to playlists"
 msgstr "Dodaj do playlisty…"
 
-#: front/src/components/mixins/Translations.vue:93
-#: front/src/components/mixins/Translations.vue:94
+#: front/src/components/mixins/Translations.vue:105
+#: front/src/components/mixins/Translations.vue:106
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to radios"
 msgstr "Brak dostępu"
 
-#: front/src/components/Home.vue:101
-msgctxt "Content/Home/List item"
-msgid ""
-"Access your music from a clean interface that focuses on what really matters"
-msgstr ""
-"Uzyskaj dostęp do swojej muzyki z przejrzystego interfejsu skupionego na "
-"tym, co naprawdę ważne"
-
 #: front/src/components/manage/library/UploadsTable.vue:67
-#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:55
 #: front/src/views/admin/library/UploadDetail.vue:175
-#: front/src/components/mixins/Translations.vue:46
+#: front/src/components/mixins/Translations.vue:56
 msgctxt "Content/*/*/Noun"
 msgid "Accessed date"
 msgstr "Brak dostępu"
 
-#: front/src/views/admin/library/LibraryDetail.vue:104
-#: front/src/views/admin/library/UploadDetail.vue:111
-msgctxt "*/*/*/Noun"
-msgid "Account"
-msgstr "Stan konta"
-
 #: front/src/components/manage/library/LibrariesTable.vue:49
 #: front/src/components/manage/library/UploadsTable.vue:61
-msgctxt "*/*/*"
+#: front/src/components/manage/moderation/ReportCard.vue:156
+#: front/src/components/mixins/Report.vue:13
+#: front/src/views/admin/library/LibraryDetail.vue:113
+#: front/src/views/admin/library/UploadDetail.vue:111
+#: front/src/components/mixins/Report.vue:14
+msgctxt "*/*/*/Noun"
 msgid "Account"
 msgstr "Stan konta"
 
@@ -297,7 +377,7 @@ msgctxt "Content/Settings/Title"
 msgid "Account settings"
 msgstr "Ustawienia konta"
 
-#: front/src/components/auth/Settings.vue:479
+#: front/src/components/auth/Settings.vue:544
 msgctxt "Head/Settings/Title"
 msgid "Account Settings"
 msgstr "Ustawienia konta"
@@ -314,7 +394,7 @@ msgstr "Adres e-mail konta"
 
 #: front/src/views/admin/moderation/AccountsList.vue:3
 #: front/src/views/admin/moderation/AccountsList.vue:24
-#: front/src/views/admin/moderation/Base.vue:8
+#: front/src/views/admin/moderation/Base.vue:11
 msgctxt "*/Moderation/Title"
 msgid "Accounts"
 msgstr "Stan konta"
@@ -328,33 +408,31 @@ msgstr "Działanie"
 #, fuzzy
 msgctxt "Content/*/Paragraph"
 msgid "Action %{ action } was launched successfully on %{ count } element"
-msgid_plural ""
-"Action %{ action } was launched successfully on %{ count } elements"
-msgstr[0] ""
-"Działanie %{ action } zostało rozpoczęte pomyślnie na %{ count } elemencie"
-msgstr[1] ""
-"Działanie %{ action } zostało rozpoczęte pomyślnie na %{ count } elementach"
-msgstr[2] ""
-"Działanie %{ action } zostało rozpoczęte pomyślnie na %{ count } elementach"
+msgid_plural "Action %{ action } was launched successfully on %{ count } elements"
+msgstr[0] "Działanie %{ action } zostało rozpoczęte pomyślnie na %{ count } elemencie"
+msgstr[1] "Działanie %{ action } zostało rozpoczęte pomyślnie na %{ count } elementach"
+msgstr[2] "Działanie %{ action } zostało rozpoczęte pomyślnie na %{ count } elementach"
 
 #: front/src/components/common/ActionTable.vue:22
 #: front/src/components/library/radios/Builder.vue:65
+#: front/src/components/manage/moderation/ReportCard.vue:210
 msgctxt "Content/*/*/Noun"
 msgid "Actions"
 msgstr "Działania"
 
-#: front/src/components/manage/users/UsersTable.vue:53
+#: front/src/components/manage/users/UsersTable.vue:54
 msgctxt "Content/Admin/Table"
 msgid "Active"
 msgstr "Aktywny"
 
-#: front/src/views/admin/library/AlbumDetail.vue:134
-#: front/src/views/admin/library/ArtistDetail.vue:123
-#: front/src/views/admin/library/LibraryDetail.vue:138
-#: front/src/views/admin/library/TrackDetail.vue:186
+#: front/src/views/admin/library/AlbumDetail.vue:140
+#: front/src/views/admin/library/ArtistDetail.vue:128
+#: front/src/views/admin/library/LibraryDetail.vue:147
+#: front/src/views/admin/library/TagDetail.vue:83
+#: front/src/views/admin/library/TrackDetail.vue:192
 #: front/src/views/admin/library/UploadDetail.vue:160
-#: front/src/views/admin/moderation/AccountsDetail.vue:220
-#: front/src/views/admin/moderation/DomainsDetail.vue:136
+#: front/src/views/admin/moderation/AccountsDetail.vue:221
+#: front/src/views/admin/moderation/DomainsDetail.vue:173
 msgctxt "Content/Moderation/Title"
 msgid "Activity"
 msgstr "Aktywność"
@@ -365,7 +443,7 @@ msgctxt "Content/Settings/Dropdown.Label/Noun"
 msgid "Activity visibility"
 msgstr "Widoczność aktywności"
 
-#: front/src/views/admin/moderation/DomainsList.vue:18
+#: front/src/views/admin/moderation/DomainsList.vue:22
 msgctxt "Content/Moderation/Button/Verb"
 msgid "Add"
 msgstr ""
@@ -411,7 +489,21 @@ msgctxt "Content/Radio/Paragraph"
 msgid "Add filters to customize your radio"
 msgstr "Dodaj filtry aby dostosować swoje radio"
 
-#: front/src/components/audio/PlayButton.vue:75
+#: front/src/components/manage/moderation/NoteForm.vue:12
+#, fuzzy
+msgctxt "Content/Moderation/Button.Label/Verb"
+msgid "Add note"
+msgstr "Dodaj zawartość"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:191
+#: front/src/views/admin/moderation/DomainsDetail.vue:46
+#: front/src/views/admin/moderation/DomainsList.vue:18
+#, fuzzy
+msgctxt "Content/Moderation/Action/Verb"
+msgid "Add to allow-list"
+msgstr "Dodaj do playlisty…"
+
+#: front/src/components/audio/PlayButton.vue:91
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Add to current queue"
 msgstr "Dodaj do kolejki"
@@ -443,7 +535,7 @@ msgctxt "Popup/Playlist/Table.Button.Label/Verb"
 msgid "Add track"
 msgstr "Dodaj utwór"
 
-#: front/src/components/manage/users/UsersTable.vue:69
+#: front/src/components/manage/users/UsersTable.vue:70
 msgctxt "Content/Admin/Table.User role"
 msgid "Admin"
 msgstr "Administrator"
@@ -453,49 +545,49 @@ msgctxt "Sidebar/Admin/Title/Noun"
 msgid "Administration"
 msgstr "Administracja"
 
-#: front/src/views/admin/library/TrackDetail.vue:107
-msgctxt "*/*/*/Noun"
-msgid "Album"
-msgstr "Album"
-
-#: front/src/components/audio/SearchBar.vue:26
+#: front/src/components/audio/SearchBar.vue:33
 #: src/components/audio/track/Table.vue:9
-#: front/src/components/library/AlbumBase.vue:152
-#: front/src/components/library/ArtistBase.vue:194
+#: front/src/components/library/AlbumBase.vue:170
+#: front/src/components/library/ArtistBase.vue:212
 #: front/src/components/manage/library/TracksTable.vue:40
 #: front/src/components/metadata/Search.vue:134
+#: src/components/mixins/Report.vue:41
+#: front/src/views/admin/library/TrackDetail.vue:113
 #: front/src/views/content/libraries/FilesTable.vue:57
+#: front/src/components/mixins/Report.vue:42
 msgctxt "*/*/*"
 msgid "Album"
 msgstr "Album"
 
-#: front/src/views/admin/library/TrackDetail.vue:128
+#: front/src/views/admin/library/TrackDetail.vue:134
 msgctxt "*/*/*/Noun"
 msgid "Album artist"
 msgstr "Albumy tego wykonawcy"
 
-#: front/src/views/admin/library/AlbumDetail.vue:92
+#: front/src/views/admin/library/AlbumDetail.vue:98
 msgctxt "Content/Moderation/Title"
 msgid "Album data"
 msgstr "Nazwa albumu"
 
-#: front/src/components/mixins/Translations.vue:51
-#: front/src/components/mixins/Translations.vue:52
+#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/mixins/Translations.vue:62
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Album name"
 msgstr "Nazwa albumu"
 
 #: front/src/components/audio/Search.vue:19
-#: src/components/instance/Stats.vue:48
-#: front/src/components/library/Albums.vue:120
-#: src/components/library/Library.vue:7
+#: src/components/library/Albums.vue:129
+#: front/src/components/library/Library.vue:7
+#: src/components/library/TagDetail.vue:28
 #: front/src/components/manage/library/ArtistsTable.vue:41
+#: front/src/components/manage/library/TagsTable.vue:43
 #: front/src/views/admin/library/AlbumsList.vue:24
-#: front/src/views/admin/library/ArtistDetail.vue:241
+#: front/src/views/admin/library/ArtistDetail.vue:256
 #: front/src/views/admin/library/Base.vue:11
-#: front/src/views/admin/library/LibraryDetail.vue:219
-#: front/src/views/admin/moderation/AccountsDetail.vue:354
-#: front/src/views/admin/moderation/DomainsDetail.vue:264
+#: front/src/views/admin/library/LibraryDetail.vue:238
+#: front/src/views/admin/library/TagDetail.vue:133
+#: front/src/views/admin/moderation/AccountsDetail.vue:366
+#: front/src/views/admin/moderation/DomainsDetail.vue:301
 msgctxt "*/*/*"
 msgid "Albums"
 msgstr "Albumy"
@@ -509,7 +601,10 @@ msgstr "Albumy tego wykonawcy"
 #: front/src/components/manage/library/LibrariesTable.vue:13
 #: front/src/components/manage/library/UploadsTable.vue:13
 #: front/src/components/manage/library/UploadsTable.vue:22
+#: front/src/components/manage/moderation/DomainsTable.vue:11
 #: front/src/components/manage/users/InvitationsTable.vue:19
+#: front/src/components/moderation/ReportCategoryDropdown.vue:32
+#: front/src/views/admin/moderation/ReportsList.vue:17
 #: front/src/views/content/libraries/FilesTable.vue:13
 msgctxt "Content/*/Dropdown"
 msgid "All"
@@ -529,40 +624,52 @@ msgctxt "Head/Authorize/Title"
 msgid "Allow application"
 msgstr ""
 
+#: front/src/components/About.vue:136
+msgctxt "*/*/*"
+msgid "Allow-list"
+msgstr ""
+
+#: front/src/components/About.vue:149
+msgctxt "*/*/*"
+msgid "Allowed domains"
+msgstr ""
+
 #: front/src/components/library/ImportStatusModal.vue:17
 msgctxt "Popup/Import/Message"
-msgid ""
-"An error occured during upload processing. You will find more information "
-"below."
+msgid "An error occurred during upload processing. You will find more information below."
 msgstr ""
 
 #: front/src/components/playlists/Editor.vue:13
+#, fuzzy
 msgctxt "Content/Playlist/Error message.Title"
-msgid "An error occured while saving your changes"
+msgid "An error occurred while saving your changes"
 msgstr "Wystąpił błąd podczas zapisywania zmian"
 
 #: front/src/components/federation/FetchButton.vue:21
+#, fuzzy
 msgctxt "Popup/*/Message.Content"
-msgid "An error occured while trying to refresh data:"
+msgid "An error occurred while trying to refresh data:"
 msgstr "Wystąpił błąd podczas zapisywania zmian"
 
 #: front/src/components/federation/FetchButton.vue:41
+#, fuzzy
 msgctxt "*/*/Error"
-msgid "An HTTP error occured while contacting the remote server"
+msgid "An HTTP error occurred while contacting the remote server"
 msgstr "Wystąpił błąd podczas zapisywania zmian"
 
-#: front/src/components/auth/Login.vue:10
-msgctxt "Content/Login/Error message/List item"
-msgid ""
-"An unknown error happend, this can mean the server is down or cannot be "
-"reached"
-msgstr ""
-"Wystąpił nieznany błąd, może oznaczać to że serwer jest wyłączony lub "
-"nieosiÄ…galny"
-
 #: front/src/components/library/ImportStatusModal.vue:145
 msgctxt "Popup/Import/Error.Label"
-msgid "An unkwown error occured"
+msgid "An unknown error occurred"
+msgstr ""
+
+#: front/src/components/About.vue:123
+msgctxt "*/*/*"
+msgid "Anonymous access"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:54
+msgctxt "Popup/Moderation/Error message"
+msgid "Anonymous reports are disabled, please sign-in to submit a report."
 msgstr ""
 
 #: front/src/components/auth/Settings.vue:175
@@ -583,9 +690,7 @@ msgstr ""
 
 #: front/src/components/auth/ApplicationEdit.vue:16
 msgctxt "Content/Application/Paragraph/"
-msgid ""
-"Application ID and secret are really sensitive values and must be treated "
-"like passwords. Do not share those with anyone else."
+msgid "Application ID and secret are really sensitive values and must be treated like passwords. Do not share those with anyone else."
 msgstr ""
 
 #: front/src/components/auth/ApplicationEdit.vue:25
@@ -615,29 +720,27 @@ msgctxt "Content/Login/Title"
 msgid "Are you sure you want to log out?"
 msgstr "Czy na pewno chcesz się wylogować?"
 
+#: front/src/components/audio/SearchBar.vue:32
+#: src/components/audio/track/Table.vue:8
 #: front/src/components/manage/library/AlbumsTable.vue:40
 #: front/src/components/manage/library/TracksTable.vue:41
-msgctxt "*/*/*"
-msgid "Artist"
-msgstr "Wykonawca"
-
-#: front/src/components/audio/SearchBar.vue:25
-#: src/components/audio/track/Table.vue:8
 #: front/src/components/metadata/Search.vue:130
-#: front/src/views/admin/library/AlbumDetail.vue:108
-#: front/src/views/admin/library/TrackDetail.vue:118
-#: front/src/views/content/libraries/FilesTable.vue:56
+#: src/components/mixins/Report.vue:55
+#: front/src/views/admin/library/AlbumDetail.vue:114
+#: front/src/views/admin/library/TrackDetail.vue:124
+#: front/src/views/content/libraries/FilesTable.vue:56 src/entities.js:12
+#: front/src/components/mixins/Report.vue:56
 msgctxt "*/*/*/Noun"
 msgid "Artist"
 msgstr "Wykonawca"
 
-#: front/src/views/admin/library/ArtistDetail.vue:91
+#: front/src/views/admin/library/ArtistDetail.vue:96
 msgctxt "Content/Moderation/Title"
 msgid "Artist data"
 msgstr "Nazwa wykonawcy"
 
-#: front/src/components/mixins/Translations.vue:52
-#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/mixins/Translations.vue:62
+#: front/src/components/mixins/Translations.vue:63
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Artist name"
 msgstr "Nazwa wykonawcy"
@@ -647,36 +750,36 @@ msgctxt "*/Search/Input.Placeholder"
 msgid "Artist, album, track…"
 msgstr "Wykonawca, album, utwór…"
 
+#: front/src/components/audio/Search.vue:10
+#: src/components/library/Artists.vue:117
+#: front/src/components/library/Library.vue:10
+#: front/src/components/library/TagDetail.vue:19
+#: front/src/components/manage/library/TagsTable.vue:42
 #: front/src/views/admin/library/ArtistsList.vue:24
 #: front/src/views/admin/library/Base.vue:8
-#: front/src/views/admin/library/LibraryDetail.vue:209
-msgctxt "*/*/*"
-msgid "Artists"
-msgstr "Wykonawcy"
-
-#: front/src/components/audio/Search.vue:10
-#: src/components/instance/Stats.vue:42
-#: front/src/components/library/Artists.vue:117
-#: src/components/library/Library.vue:10
-#: front/src/views/admin/moderation/AccountsDetail.vue:346
-#: front/src/views/admin/moderation/DomainsDetail.vue:254
+#: front/src/views/admin/library/LibraryDetail.vue:228
+#: front/src/views/admin/library/TagDetail.vue:123
+#: front/src/views/admin/moderation/AccountsDetail.vue:358
+#: front/src/views/admin/moderation/DomainsDetail.vue:291
 msgctxt "*/*/*/Noun"
 msgid "Artists"
 msgstr "Wykonawcy"
 
 #: front/src/components/favorites/List.vue:34
-#: src/components/library/Albums.vue:25
-#: front/src/components/library/Artists.vue:25
+#: src/components/library/Albums.vue:29
+#: front/src/components/library/Artists.vue:29
 #: src/components/library/Radios.vue:44
 #: front/src/components/manage/library/AlbumsTable.vue:21
 #: front/src/components/manage/library/ArtistsTable.vue:21
 #: front/src/components/manage/library/EditsCardList.vue:39
 #: front/src/components/manage/library/LibrariesTable.vue:30
+#: front/src/components/manage/library/TagsTable.vue:21
 #: front/src/components/manage/library/TracksTable.vue:21
 #: front/src/components/manage/library/UploadsTable.vue:40
 #: front/src/components/manage/moderation/AccountsTable.vue:21
-#: front/src/components/manage/moderation/DomainsTable.vue:19
+#: front/src/components/manage/moderation/DomainsTable.vue:27
 #: front/src/components/manage/users/UsersTable.vue:19
+#: front/src/views/admin/moderation/ReportsList.vue:44
 #: front/src/views/content/libraries/FilesTable.vue:31
 #: front/src/views/playlists/List.vue:27
 msgctxt "Content/Search/Dropdown"
@@ -688,18 +791,24 @@ msgctxt "Content/Signup/Button.Label/Verb"
 msgid "Ask for a password reset"
 msgstr "Poproś o zresetowanie hasła"
 
-#: front/src/views/admin/library/AlbumDetail.vue:198
-#: front/src/views/admin/library/ArtistDetail.vue:187
-#: front/src/views/admin/library/LibraryDetail.vue:176
-#: front/src/views/admin/library/TrackDetail.vue:250
+#: front/src/components/manage/moderation/ReportCard.vue:72
+msgctxt "Content/Moderation/*"
+msgid "Assigned to"
+msgstr ""
+
+#: front/src/views/admin/library/AlbumDetail.vue:214
+#: front/src/views/admin/library/ArtistDetail.vue:202
+#: front/src/views/admin/library/LibraryDetail.vue:195
+#: front/src/views/admin/library/TagDetail.vue:113
+#: front/src/views/admin/library/TrackDetail.vue:266
 #: front/src/views/admin/library/UploadDetail.vue:191
-#: front/src/views/admin/moderation/AccountsDetail.vue:274
-#: front/src/views/admin/moderation/DomainsDetail.vue:202
+#: front/src/views/admin/moderation/AccountsDetail.vue:285
+#: front/src/views/admin/moderation/DomainsDetail.vue:239
 msgctxt "Content/Moderation/Title"
 msgid "Audio content"
 msgstr "Dodaj zawartość"
 
-#: front/src/components/ShortcutsModal.vue:55
+#: front/src/components/ShortcutsModal.vue:92
 msgctxt "Popup/Keyboard shortcuts/Title"
 msgid "Audio player shortcuts"
 msgstr ""
@@ -742,9 +851,9 @@ msgid "Back to settings"
 msgstr "Aktualizuj ustawienia"
 
 #: front/src/components/library/TrackDetail.vue:48
-#: front/src/components/mixins/Translations.vue:55
+#: front/src/components/mixins/Translations.vue:67
 #: front/src/views/admin/library/UploadDetail.vue:227
-#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:68
 msgctxt "Content/Track/*/Noun"
 msgid "Bitrate"
 msgstr "Bitrate"
@@ -757,10 +866,7 @@ msgstr ""
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:112
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Block everything from this account or domain. This will prevent any "
-"interaction with the entity, and purge related content (uploads, libraries, "
-"follows, etc.)"
+msgid "Block everything from this account or domain. This will prevent any interaction with the entity, and purge related content (uploads, libraries, follows, etc.)"
 msgstr ""
 
 #: front/src/components/Sidebar.vue:18 src/components/library/Library.vue:4
@@ -773,6 +879,11 @@ msgctxt "Sidebar/Library/List item.Link/Verb"
 msgid "Browse library"
 msgstr "PrzeglÄ…daj bibliotekÄ™"
 
+#: front/src/components/Home.vue:132
+msgctxt "Content/Home/Link"
+msgid "Browse public content"
+msgstr ""
+
 #: front/src/components/library/Albums.vue:4
 msgctxt "Content/Album/Title"
 msgid "Browsing albums"
@@ -803,40 +914,40 @@ msgctxt "Content/Album/Card"
 msgid "By %{ artist }"
 msgstr "Od %{ artist }"
 
-#: front/src/views/content/remote/Card.vue:112
+#: front/src/views/content/remote/Card.vue:125
 msgctxt "Popup/Library/Paragraph"
 msgid "By unfollowing this library, you loose access to its content."
-msgstr ""
-"Gdy przestaniesz obserwować tę bibliotekę, stracisz dostęp do jej "
-"zawartości."
+msgstr "Gdy przestaniesz obserwować tę bibliotekę, stracisz dostęp do jej zawartości."
 
-#: front/src/views/admin/library/AlbumDetail.vue:214
-#: front/src/views/admin/library/ArtistDetail.vue:203
-#: front/src/views/admin/library/LibraryDetail.vue:192
-#: front/src/views/admin/library/TrackDetail.vue:266
+#: front/src/views/admin/library/AlbumDetail.vue:230
+#: front/src/views/admin/library/ArtistDetail.vue:218
+#: front/src/views/admin/library/LibraryDetail.vue:211
+#: front/src/views/admin/library/TrackDetail.vue:282
 #: front/src/views/admin/library/UploadDetail.vue:208
-#: front/src/views/admin/moderation/AccountsDetail.vue:290
-#: front/src/views/admin/moderation/DomainsDetail.vue:217
+#: front/src/views/admin/moderation/AccountsDetail.vue:301
+#: front/src/views/admin/moderation/DomainsDetail.vue:254
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Cached size"
 msgstr ""
 
 #: front/src/components/SetInstanceModal.vue:37
 #: front/src/components/common/DangerousButton.vue:17
-#: front/src/components/library/AlbumBase.vue:36
-#: front/src/components/library/ArtistBase.vue:47
-#: front/src/components/library/EditForm.vue:95
-#: front/src/components/library/TrackBase.vue:55
+#: front/src/components/library/AlbumBase.vue:37
+#: front/src/components/library/ArtistBase.vue:48
+#: front/src/components/library/EditForm.vue:107
+#: front/src/components/library/TrackBase.vue:53
 #: front/src/components/library/radios/Filter.vue:53
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:54
 #: front/src/components/moderation/FilterModal.vue:39
+#: front/src/components/moderation/ReportModal.vue:59
 #: front/src/components/playlists/PlaylistModal.vue:26
 #: front/src/components/playlists/PlaylistModal.vue:77
+#: front/src/views/playlists/Detail.vue:62
 msgctxt "*/*/Button.Label/Verb"
 msgid "Cancel"
 msgstr "Anuluj"
 
-#: front/src/views/content/remote/Card.vue:97
+#: front/src/views/content/remote/Card.vue:110
 #, fuzzy
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Cancel follow request"
@@ -850,8 +961,15 @@ msgstr "Kandydaci"
 #: front/src/components/library/FileUpload.vue:261
 msgctxt "Content/Library/Help text"
 msgid "Cannot upload this file, ensure it is not too big"
+msgstr "Nie można było zaimportować tego pliku, upewnij się że nie jest zbyt duży"
+
+#: front/src/components/manage/moderation/ReportCard.vue:30
+#: front/src/components/mixins/Translations.vue:42
+#: front/src/components/moderation/ReportCategoryDropdown.vue:2
+#: front/src/components/mixins/Translations.vue:43
+msgctxt "*/*/*"
+msgid "Category"
 msgstr ""
-"Nie można było zaimportować tego pliku, upewnij się że nie jest zbyt duży"
 
 #: front/src/components/Footer.vue:21
 msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
@@ -868,6 +986,11 @@ msgctxt "Content/Settings/Button.Label"
 msgid "Change password"
 msgstr "Zmień hasło"
 
+#: front/src/components/Footer.vue:37
+msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
+msgid "Change theme"
+msgstr ""
+
 #: front/src/views/auth/PasswordResetConfirm.vue:62
 msgctxt "*/Signup/Title"
 msgid "Change your password"
@@ -885,28 +1008,22 @@ msgstr "Zsynchronizowano zmiany z serwerem"
 
 #: front/src/components/auth/Settings.vue:71
 msgctxt "Content/Settings/Paragraph'"
-msgid ""
-"Changing your password will also change your Subsonic API password if you "
-"have requested one."
-msgstr ""
-"Zmiana Twojego hasła zmieni też Twoje hasło API Subsonic, jeżeli "
-"uzyskałeś(-aś) je."
+msgid "Changing your password will also change your Subsonic API password if you have requested one."
+msgstr "Zmiana Twojego hasła zmieni też Twoje hasło API Subsonic, jeżeli uzyskałeś(-aś) je."
 
 #: front/src/components/auth/Settings.vue:98
 msgctxt "Popup/Settings/Paragraph"
 msgid "Changing your password will have the following consequences:"
 msgstr "Zmiana hasła będzie miała następujące konsekwencje"
 
-#: front/src/components/Footer.vue:40
+#: front/src/components/Footer.vue:48
 msgctxt "Footer/*/List item.Link"
 msgid "Chat room"
 msgstr ""
 
 #: front/src/components/auth/ApplicationForm.vue:24
 msgctxt "Content/Applications/Paragraph/"
-msgid ""
-"Checking the parent \"Read\" or \"Write\" scopes implies access to all the "
-"corresponding children scopes."
+msgid "Checking the parent \"Read\" or \"Write\" scopes implies access to all the corresponding children scopes."
 msgstr ""
 
 #: front/src/components/SetInstanceModal.vue:2
@@ -914,12 +1031,9 @@ msgctxt "Popup/Instance/Title"
 msgid "Choose your instance"
 msgstr "Wybierz instancjÄ™"
 
-#: front/src/components/manage/users/InvitationForm.vue:37
-msgctxt "Content/Admin/Button.Label/Verb"
-msgid "Clear"
-msgstr "Wyczyść"
-
 #: front/src/components/library/EditForm.vue:75
+#: front/src/components/library/EditForm.vue:88
+#: front/src/components/manage/users/InvitationForm.vue:37
 msgctxt "Content/Library/Button.Label"
 msgid "Clear"
 msgstr "Wyczyść"
@@ -930,46 +1044,46 @@ msgctxt "*/Playlist/Button.Label/Verb"
 msgid "Clear playlist"
 msgstr "Wyczyść listę odtwarzania"
 
-#: front/src/components/audio/Player.vue:642
+#: front/src/components/ShortcutsModal.vue:144
+#, fuzzy
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Clear queue"
+msgstr "Wyczyść swoją kolejkę"
+
+#: front/src/components/audio/Player.vue:668
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Clear your queue"
 msgstr "Wyczyść swoją kolejkę"
 
-#: front/src/components/Home.vue:44
-msgctxt "Content/Home/List item/Verb"
-msgid "Click once, listen for hours using built-in radios"
-msgstr "Naciśnij raz, słuchaj godzinami dzięki wbudowanemu radio"
-
 #: front/src/components/mixins/Translations.vue:21
 #: front/src/components/mixins/Translations.vue:22
 msgctxt "Content/Library/Link.Title"
-msgid ""
-"Click to display more information about the import process for this upload"
+msgid "Click to display more information about the import process for this upload"
 msgstr ""
 
 #: front/src/components/library/FileUpload.vue:82
 msgctxt "Content/Library/Paragraph/Call to action"
 msgid "Click to select files to upload or drag and drop files or directories"
-msgstr ""
-"Naciśnij aby wybrać pliki do wysłania lub przeciągnij i upuść pliki lub "
-"katalogi"
+msgstr "Naciśnij aby wybrać pliki do wysłania lub przeciągnij i upuść pliki lub katalogi"
 
+#: front/src/components/ShortcutsModal.vue:38
 #: front/src/components/federation/FetchButton.vue:85
 #: front/src/components/library/ImportStatusModal.vue:79
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:34
 msgctxt "*/*/Button.Label/Verb"
 msgid "Close"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:20
-msgctxt "Popup/Keyboard shortcuts/Button.Label/Verb"
-msgid "Close"
-msgstr ""
-
 #: front/src/components/federation/FetchButton.vue:88
 msgctxt "*/*/Button.Label/Verb"
 msgid "Close and reload page"
 msgstr ""
 
+#: front/src/components/About.vue:94
+msgctxt "*/*/*/State of registrations"
+msgid "Closed"
+msgstr ""
+
 #: front/src/components/manage/users/InvitationForm.vue:26
 #: front/src/components/manage/users/InvitationsTable.vue:42
 msgctxt "Content/Admin/Table.Label/Noun"
@@ -977,8 +1091,9 @@ msgid "Code"
 msgstr "Kod"
 
 #: front/src/components/audio/album/Card.vue:41
-#: front/src/components/audio/artist/Card.vue:33
-msgctxt "Content/*/Card.Link/Verb"
+#: front/src/components/common/CollapseLink.vue:3
+#, fuzzy
+msgctxt "*/*/Button,Label"
 msgid "Collapse"
 msgstr "Zwiń"
 
@@ -1002,26 +1117,26 @@ msgctxt "Content/Signup/Form.Label"
 msgid "Confirmation code"
 msgstr "Kod potwierdzajÄ…cy"
 
+#: front/src/components/About.vue:67 src/components/Home.vue:65
+msgctxt "Content/Home/Header/Name"
+msgid "Contact"
+msgstr ""
+
 #: front/src/components/moderation/FilterModal.vue:90
 msgctxt "*/Moderation/Message"
 msgid "Content filter successfully added"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:96
-#: front/src/components/mixins/Translations.vue:97
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Content filters"
-msgstr "Zaznacz filtr"
-
 #: front/src/components/auth/Settings.vue:116
+#: front/src/components/mixins/Translations.vue:108
+#: front/src/components/mixins/Translations.vue:109
 msgctxt "Content/Settings/Title/Noun"
 msgid "Content filters"
 msgstr "Zaznacz filtr"
 
 #: front/src/components/auth/Settings.vue:119
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"Content filters help you hide content you don't want to see on the service."
+msgid "Content filters help you hide content you don't want to see on the service."
 msgstr ""
 
 #: front/src/components/common/ActionTable.vue:8
@@ -1029,13 +1144,20 @@ msgctxt "Content/*/Button.Help text.Paragraph"
 msgid "Content have been updated, click refresh to see up-to-date content"
 msgstr ""
 
-#: front/src/components/Footer.vue:48
+#: front/src/components/About.vue:46
+#, fuzzy
+msgctxt "Content/About/Header"
+msgid "Contents"
+msgstr "Zaznacz filtr"
+
+#: front/src/components/Footer.vue:56
 msgctxt "Footer/*/List item.Link"
 msgid "Contribute"
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:19
+#: front/src/components/audio/EmbedWizard.vue:29
 #: front/src/components/common/CopyInput.vue:8
+#: front/src/components/forms/PasswordInput.vue:43
 msgctxt "*/*/Button.Label/Short, Verb"
 msgid "Copy"
 msgstr "Kopiuj"
@@ -1050,14 +1172,14 @@ msgctxt "Content/Auth/Paragraph"
 msgid "Copy-paste the following code in the application:"
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:21
+#: front/src/components/audio/EmbedWizard.vue:31
 msgctxt "Popup/Embed/Paragraph"
 msgid "Copy/paste this code in your website HTML"
 msgstr ""
 
 #: front/src/components/library/TrackDetail.vue:10
-#: front/src/views/admin/library/TrackDetail.vue:153
-msgctxt "Content/Track/Table.Label/Noun"
+#: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:77
+msgctxt "Content/Track/*/Noun"
 msgid "Copyright"
 msgstr "Kopiuj"
 
@@ -1071,29 +1193,20 @@ msgctxt "Content/Library/Error message.Title"
 msgid "Could not fetch remote library"
 msgstr "Wystąpił błąd podczas uzyskiwania zdalnej biblioteki"
 
-#: front/src/components/Home.vue:80
-msgctxt "Content/Home/List item"
-msgid "Covers, lyrics, our goal is to have them all ;)"
-msgstr "Covery, teksty, naszym celem jest mieć je wszystkie ;)"
-
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:58
 msgctxt "Content/Moderation/Card.Button.Label/Verb"
 msgid "Create"
 msgstr "Utwórz importowanie"
 
-#: front/src/components/auth/Signup.vue:4
+#: front/src/views/auth/Signup.vue:4
 msgctxt "Content/Signup/Title"
 msgid "Create a funkwhale account"
 msgstr "Utwórz konto funkwhale"
 
-#: front/src/components/auth/Settings.vue:220
-msgctxt "Content/Settings/Button.Label"
-msgid "Create a new application"
-msgstr "Utwórz nową listę odtwarzania"
-
 #: front/src/components/auth/ApplicationNew.vue:8
 #: front/src/components/auth/ApplicationNew.vue:41
-msgctxt "Content/Applications/Title"
+#: front/src/components/auth/Settings.vue:220
+msgctxt "Content/Settings/Button.Label"
 msgid "Create a new application"
 msgstr "Utwórz nową listę odtwarzania"
 
@@ -1107,7 +1220,7 @@ msgctxt "Popup/Playlist/Title/Verb"
 msgid "Create a new playlist"
 msgstr "Utwórz nową listę odtwarzania"
 
-#: front/src/components/Sidebar.vue:57 src/components/auth/Login.vue:17
+#: front/src/components/Sidebar.vue:57 src/components/auth/LoginForm.vue:15
 msgctxt "*/Signup/Link/Verb"
 msgid "Create an account"
 msgstr "Utwórz konto"
@@ -1122,7 +1235,7 @@ msgctxt "Content/Library/Button.Label/Verb"
 msgid "Create library"
 msgstr "Utwórz bibliotekę"
 
-#: front/src/components/auth/Signup.vue:53
+#: front/src/components/auth/SignupForm.vue:49
 msgctxt "Content/Signup/Button.Label"
 msgid "Create my account"
 msgstr "Utwórz konto"
@@ -1147,11 +1260,13 @@ msgstr "Utwórz własne radio"
 #: front/src/components/manage/library/AlbumsTable.vue:44
 #: front/src/components/manage/library/ArtistsTable.vue:43
 #: front/src/components/manage/library/LibrariesTable.vue:54
+#: front/src/components/manage/library/TagsTable.vue:45
 #: front/src/components/manage/library/TracksTable.vue:44
 #: front/src/components/manage/library/UploadsTable.vue:66
+#: front/src/components/manage/moderation/ReportCard.vue:43
 #: front/src/components/manage/users/InvitationsTable.vue:40
-#: front/src/components/mixins/Translations.vue:43
-#: front/src/components/mixins/Translations.vue:44
+#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/mixins/Translations.vue:54
 msgctxt "Content/*/*/Noun"
 msgid "Creation date"
 msgstr "Data utworzenia"
@@ -1161,6 +1276,12 @@ msgctxt "Content/Settings/Title/Noun"
 msgid "Current avatar"
 msgstr "Obecny awatar"
 
+#: front/src/components/admin/SettingsGroup.vue:67
+#, fuzzy
+msgctxt "Content/Settings/Title/Noun"
+msgid "Current image"
+msgstr "Obecne użycie"
+
 #: front/src/views/content/libraries/DetailArea.vue:4
 msgctxt "Content/Library/Title"
 msgid "Current library"
@@ -1176,6 +1297,11 @@ msgctxt "Content/Library/Title"
 msgid "Current usage"
 msgstr "Obecne użycie"
 
+#: front/src/components/Footer.vue:94
+msgctxt "Footer/Settings/Dropdown.Label/Theme name"
+msgid "Dark"
+msgstr ""
+
 #: front/src/components/federation/FetchButton.vue:53
 msgctxt "*/*/Error"
 msgid "Data returned by the remote server had invalid or missing attributes"
@@ -1196,7 +1322,7 @@ msgctxt "Popup/Import/Table.Label/Noun"
 msgid "Debug information"
 msgstr "Informacje o utworze"
 
-#: front/src/components/ShortcutsModal.vue:75
+#: front/src/components/ShortcutsModal.vue:128
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Decrease volume"
 msgstr ""
@@ -1208,23 +1334,29 @@ msgstr ""
 #: front/src/components/manage/library/AlbumsTable.vue:188
 #: front/src/components/manage/library/ArtistsTable.vue:178
 #: front/src/components/manage/library/LibrariesTable.vue:205
+#: front/src/components/manage/library/TagsTable.vue:179
 #: front/src/components/manage/library/TracksTable.vue:188
 #: front/src/components/manage/library/UploadsTable.vue:255
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:61
+#: front/src/components/manage/moderation/NotesThread.vue:24
+#: front/src/components/manage/moderation/NotesThread.vue:29
+#: front/src/components/manage/moderation/ReportCard.vue:360
 #: front/src/components/manage/users/InvitationsTable.vue:167
-#: front/src/views/admin/library/AlbumDetail.vue:72
-#: front/src/views/admin/library/AlbumDetail.vue:77
-#: front/src/views/admin/library/ArtistDetail.vue:71
+#: front/src/views/admin/library/AlbumDetail.vue:78
+#: front/src/views/admin/library/AlbumDetail.vue:83
 #: front/src/views/admin/library/ArtistDetail.vue:76
+#: front/src/views/admin/library/ArtistDetail.vue:81
 #: front/src/views/admin/library/LibraryDetail.vue:58
 #: front/src/views/admin/library/LibraryDetail.vue:63
-#: front/src/views/admin/library/TrackDetail.vue:71
-#: front/src/views/admin/library/TrackDetail.vue:76
+#: front/src/views/admin/library/TagDetail.vue:41
+#: front/src/views/admin/library/TagDetail.vue:46
+#: front/src/views/admin/library/TrackDetail.vue:77
+#: front/src/views/admin/library/TrackDetail.vue:82
 #: front/src/views/admin/library/UploadDetail.vue:65
 #: front/src/views/admin/library/UploadDetail.vue:70
 #: front/src/views/content/libraries/FilesTable.vue:222
 #: front/src/views/content/libraries/Form.vue:29
-#: src/views/playlists/Detail.vue:34
+#: src/views/playlists/Detail.vue:42
 msgctxt "*/*/*/Verb"
 msgid "Delete"
 msgstr "Usuń"
@@ -1249,7 +1381,20 @@ msgctxt "Popup/Moderation/Button.Label/Verb"
 msgid "Delete moderation rule"
 msgstr "Usuń radio"
 
-#: front/src/views/playlists/Detail.vue:39
+#: front/src/components/auth/Settings.vue:274
+#: src/components/auth/Settings.vue:302
+#, fuzzy
+msgctxt "*/*/Button.Label"
+msgid "Delete my account"
+msgstr "Utwórz konto"
+
+#: front/src/components/auth/Settings.vue:297
+#, fuzzy
+msgctxt "*/*/Button.Label"
+msgid "Delete my account…"
+msgstr "Utwórz konto"
+
+#: front/src/views/playlists/Detail.vue:47
 msgctxt "Popup/Playlist/Button.Label/Verb"
 msgid "Delete playlist"
 msgstr "Usuń listę odtwarzania"
@@ -1259,13 +1404,23 @@ msgctxt "Popup/Radio/Button.Label/Verb"
 msgid "Delete radio"
 msgstr "Usuń radio"
 
-#: front/src/views/admin/library/AlbumDetail.vue:73
-#: front/src/views/admin/library/TrackDetail.vue:72
-msgctxt "Popup/Library/Title"
-msgid "Delete this album?"
-msgstr "Czy chcesz usunąć tę bibliotekę?"
+#: front/src/components/manage/moderation/ReportCard.vue:357
+msgctxt "Content/Moderation/Button/Verb"
+msgid "Delete reported object"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:358
+msgctxt "Content/Moderation/Popup/Header"
+msgid "Delete reported object?"
+msgstr ""
+
+#: front/src/views/admin/library/AlbumDetail.vue:79
+#: front/src/views/admin/library/TrackDetail.vue:78
+msgctxt "Popup/Library/Title"
+msgid "Delete this album?"
+msgstr "Czy chcesz usunąć tę bibliotekę?"
 
-#: front/src/views/admin/library/ArtistDetail.vue:72
+#: front/src/views/admin/library/ArtistDetail.vue:77
 msgctxt "Popup/Library/Title"
 msgid "Delete this artist?"
 msgstr "Czy chcesz usunąć tę bibliotekę?"
@@ -1281,60 +1436,71 @@ msgctxt "Popup/Moderation/Title"
 msgid "Delete this moderation rule?"
 msgstr "Czy chcesz usunąć tę bibliotekę?"
 
+#: front/src/components/manage/moderation/NotesThread.vue:25
+#, fuzzy
+msgctxt "Popup/Moderation/Title"
+msgid "Delete this note?"
+msgstr "Czy chcesz usunąć tę bibliotekę?"
+
 #: front/src/components/library/EditCard.vue:94
 msgctxt "Popup/Library/Title"
 msgid "Delete this suggestion?"
 msgstr "Czy chcesz usunąć tę bibliotekę?"
 
+#: front/src/views/admin/library/TagDetail.vue:42
+#, fuzzy
+msgctxt "Popup/Library/Title"
+msgid "Delete this tag?"
+msgstr "Czy chcesz usunąć tę bibliotekę?"
+
 #: front/src/views/admin/library/UploadDetail.vue:66
 msgctxt "Popup/Library/Title"
 msgid "Delete this upload?"
 msgstr "Czy chcesz usunąć tę bibliotekę?"
 
 #: front/src/components/favorites/List.vue:35
-#: src/components/library/Albums.vue:26
-#: front/src/components/library/Artists.vue:26
+#: src/components/library/Albums.vue:30
+#: front/src/components/library/Artists.vue:30
 #: src/components/library/Radios.vue:47
 #: front/src/components/manage/library/AlbumsTable.vue:22
 #: front/src/components/manage/library/ArtistsTable.vue:22
 #: front/src/components/manage/library/EditsCardList.vue:40
 #: front/src/components/manage/library/LibrariesTable.vue:31
+#: front/src/components/manage/library/TagsTable.vue:22
 #: front/src/components/manage/library/TracksTable.vue:22
 #: front/src/components/manage/library/UploadsTable.vue:41
 #: front/src/components/manage/moderation/AccountsTable.vue:22
-#: front/src/components/manage/moderation/DomainsTable.vue:20
+#: front/src/components/manage/moderation/DomainsTable.vue:28
 #: front/src/components/manage/users/UsersTable.vue:20
+#: front/src/views/admin/moderation/ReportsList.vue:45
 #: front/src/views/content/libraries/FilesTable.vue:32
 #: front/src/views/playlists/List.vue:28
 msgctxt "Content/Search/Dropdown"
 msgid "Descending"
 msgstr "MalejÄ…co"
 
-#: front/src/views/admin/library/LibraryDetail.vue:123
-msgctxt "*/*/*/Noun"
-msgid "Description"
-msgstr "Opis"
+#: front/src/components/manage/moderation/NoteForm.vue:37
+msgctxt "Content/Moderation/Placeholder"
+msgid "Describe what actions have been taken, or any other related updates…"
+msgstr ""
 
 #: front/src/components/library/radios/Builder.vue:25
+#: front/src/views/admin/library/LibraryDetail.vue:132
 #: front/src/views/content/libraries/Form.vue:14
-msgctxt "Content/*/Input.Label/Noun"
+msgctxt "*/*/*/Noun"
 msgid "Description"
 msgstr "Opis"
 
 #: front/src/views/content/libraries/Card.vue:48
-#: src/views/content/remote/Card.vue:54
+#: src/views/content/remote/Card.vue:67
 msgctxt "Content/Library/Card.Button.Label/Noun"
 msgid "Details"
 msgstr "Szczegóły"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:491
+#: front/src/views/admin/moderation/AccountsDetail.vue:511
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Determine how much content the user can upload. Leave empty to use the "
-"default value of the instance."
-msgstr ""
-"Określ jak dużo zawartości może zaimportować użytkownik. Pozostaw puste, aby"
-" użyć domyślnej wartości instancji"
+msgid "Determine how much content the user can upload. Leave empty to use the default value of the instance."
+msgstr "Określ jak dużo zawartości może zaimportować użytkownik. Pozostaw puste, aby użyć domyślnej wartości instancji"
 
 #: front/src/components/mixins/Translations.vue:8
 #: front/src/components/mixins/Translations.vue:9
@@ -1343,38 +1509,51 @@ msgid "Determine the visibility level of your activity"
 msgstr "Ustal poziom widoczności twojej aktywności"
 
 #: front/src/components/auth/Settings.vue:104
-#: front/src/components/auth/SubsonicTokenForm.vue:51
+#: front/src/components/auth/SubsonicTokenForm.vue:56
 msgctxt "Popup/Settings/Button.Label"
 msgid "Disable access"
 msgstr "Wyłącz dostęp"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:48
+#: front/src/components/auth/SubsonicTokenForm.vue:53
 msgctxt "Content/Settings/Button.Label/Verb"
 msgid "Disable Subsonic access"
 msgstr "Wyłącz dostęp Subsonic"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:49
+#: front/src/components/auth/SubsonicTokenForm.vue:54
 msgctxt "Popup/Settings/Title"
 msgid "Disable Subsonic API access?"
 msgstr "Wyłączyć dostęp do API Subsonic?"
 
+#: front/src/components/About.vue:118 src/components/About.vue:131
+#: front/src/components/About.vue:144
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:18
 #: front/src/views/admin/moderation/AccountsDetail.vue:157
 #: front/src/views/admin/moderation/AccountsDetail.vue:161
-msgctxt "*/*/*"
+#, fuzzy
+msgctxt "*/*/*/State of feature"
 msgid "Disabled"
 msgstr "Wyłącz dostęp"
 
-#: front/src/views/admin/library/TrackDetail.vue:145
+#: front/src/views/admin/library/TrackDetail.vue:151
 msgctxt "*/*/*/Noun"
 msgid "Disc number"
 msgstr ""
 
+#: front/src/components/Home.vue:157
+msgctxt "Content/Home/Link"
+msgid "Discover everything you need to know about Funkwhale and its features"
+msgstr ""
+
 #: front/src/components/auth/SubsonicTokenForm.vue:13
 msgctxt "Content/Settings/Link"
 msgid "Discover how to use Funkwhale from other apps"
 msgstr "Odkryj, jak korzystać z Funkwhale z innych aplikacji"
 
+#: front/src/views/Notifications.vue:45
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Discover other ways to help"
+msgstr ""
+
 #: front/src/views/admin/moderation/AccountsDetail.vue:132
 msgctxt "'Content/*/*/Noun'"
 msgid "Display name"
@@ -1387,11 +1566,15 @@ msgstr "Wyświetlaj publicznie"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:122
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Do not download any media file (audio, album cover, account avatar…) from "
-"this account or domain. This will purge existing content as well."
+msgid "Do not download any media file (audio, album cover, account avatar…) from this account or domain. This will purge existing content as well."
 msgstr ""
 
+#: front/src/views/Notifications.vue:36
+#, fuzzy
+msgctxt "Content/Notifications/Header"
+msgid "Do you like Funkwhale?"
+msgstr "O Funkwhale"
+
 #: front/src/components/playlists/Editor.vue:51
 msgctxt "Popup/Playlist/Title"
 msgid "Do you want to clear the playlist \"%{ playlist }\"?"
@@ -1402,7 +1585,7 @@ msgctxt "Modal/*/Title"
 msgid "Do you want to confirm this action?"
 msgstr "Czy chcesz potwierdzić to działanie?"
 
-#: front/src/views/playlists/Detail.vue:35
+#: front/src/views/playlists/Detail.vue:43
 msgctxt "Popup/Playlist/Title/Call to action"
 msgid "Do you want to delete the playlist \"%{ playlist }\"?"
 msgstr "Czy chcesz usunąć listę odtwarzania „%{ playlist }”?"
@@ -1412,6 +1595,12 @@ msgctxt "Popup/Radio/Title"
 msgid "Do you want to delete the radio \"%{ radio }\"?"
 msgstr "Czy chcesz usunąć radio „%{ radio }”?"
 
+#: front/src/components/auth/Settings.vue:298
+#, fuzzy
+msgctxt "Popup/Settings/Title"
+msgid "Do you want to delete your account?"
+msgstr "Czy chcesz przywrócić poprzednią kolejkę?"
+
 #: front/src/components/moderation/FilterModal.vue:3
 msgctxt "Popup/Moderation/Title/Verb"
 msgid "Do you want to hide content from artist \"%{ name }\"?"
@@ -1426,7 +1615,13 @@ msgstr[0] "Czy chcesz wykonać działanie %{ action } na %{ count } elemencie?"
 msgstr[1] "Czy chcesz wykonać działanie %{ action } na %{ count } elementach?"
 msgstr[2] "Czy chcesz wykonać działanie %{ action } na %{ count } elementach?"
 
-#: front/src/components/Sidebar.vue:118
+#: front/src/components/moderation/ReportModal.vue:3
+#, fuzzy
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Do you want to report this object?"
+msgstr "Czy chcesz potwierdzić to działanie?"
+
+#: front/src/components/Sidebar.vue:122
 msgctxt "Sidebar/Queue/Message"
 msgid "Do you want to restore your previous queue?"
 msgstr "Czy chcesz przywrócić poprzednią kolejkę?"
@@ -1442,26 +1637,33 @@ msgstr "Dokumentacja"
 #: front/src/components/manage/library/TracksTable.vue:42
 #: front/src/components/manage/library/UploadsTable.vue:62
 #: front/src/components/manage/moderation/AccountsTable.vue:40
-#: front/src/components/mixins/Translations.vue:60
-#: front/src/views/admin/library/AlbumDetail.vue:118
-#: front/src/views/admin/library/ArtistDetail.vue:107
-#: front/src/views/admin/library/LibraryDetail.vue:114
-#: front/src/views/admin/library/TrackDetail.vue:170
+#: front/src/components/manage/moderation/ReportCard.vue:169
+#: front/src/components/manage/moderation/ReportCard.vue:179
+#: front/src/components/mixins/Translations.vue:72
+#: front/src/views/admin/library/AlbumDetail.vue:124
+#: front/src/views/admin/library/ArtistDetail.vue:112
+#: front/src/views/admin/library/LibraryDetail.vue:123
+#: front/src/views/admin/library/TrackDetail.vue:176
 #: front/src/views/admin/library/UploadDetail.vue:121
 #: front/src/views/admin/moderation/AccountsDetail.vue:123
-#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/mixins/Translations.vue:73
 msgctxt "Content/Moderation/*/Noun"
 msgid "Domain"
 msgstr ""
 
-#: front/src/views/admin/moderation/Base.vue:5
+#: front/src/views/admin/moderation/Base.vue:8
 #: front/src/views/admin/moderation/DomainsList.vue:3
-#: front/src/views/admin/moderation/DomainsList.vue:48
+#: front/src/views/admin/moderation/DomainsList.vue:54
 msgctxt "*/Moderation/*/Noun"
 msgid "Domains"
 msgstr ""
 
-#: front/src/components/library/TrackBase.vue:39
+#: front/src/views/Notifications.vue:42
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Donate"
+msgstr ""
+
+#: front/src/components/library/TrackBase.vue:37
 #: front/src/views/admin/library/UploadDetail.vue:58
 msgctxt "Content/Track/Link/Verb"
 msgid "Download"
@@ -1470,15 +1672,14 @@ msgstr "Pobierz"
 #: front/src/components/playlists/Editor.vue:59
 msgctxt "Content/Playlist/Paragraph/Call to action"
 msgid "Drag and drop rows to reorder tracks in the playlist"
-msgstr ""
-"Przeciągnij i upuść aby zmienić kolejność utworów w liście odtwarzania"
+msgstr "Przeciągnij i upuść aby zmienić kolejność utworów w liście odtwarzania"
 
 #: front/src/components/audio/track/Table.vue:10
 #: front/src/components/library/TrackDetail.vue:30
-#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:68
 #: front/src/views/admin/library/UploadDetail.vue:238
 #: front/src/views/content/libraries/FilesTable.vue:60
-#: front/src/components/mixins/Translations.vue:57
+#: front/src/components/mixins/Translations.vue:69
 msgctxt "Content/*/*"
 msgid "Duration"
 msgstr "Długość"
@@ -1488,41 +1689,27 @@ msgctxt "Content/Signup/Message"
 msgid "E-mail address confirmed"
 msgstr "Potwierdzono e-mail"
 
-#: front/src/components/Home.vue:88
-msgctxt "Content/Home/Title"
-msgid "Easy to use"
-msgstr "Prosty w użyciu"
-
-#: front/src/components/library/AlbumBase.vue:68
-#: front/src/components/library/ArtistBase.vue:79
-#: front/src/components/library/TrackBase.vue:87
+#: front/src/components/auth/Settings.vue:246
+#: src/components/library/AlbumBase.vue:73
+#: front/src/components/library/ArtistBase.vue:84
+#: front/src/components/library/TrackBase.vue:89
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:45
 #: front/src/components/radios/Card.vue:23
-#: src/views/admin/library/AlbumDetail.vue:65
-#: front/src/views/admin/library/ArtistDetail.vue:64
-#: front/src/views/admin/library/TrackDetail.vue:64
+#: src/views/admin/library/AlbumDetail.vue:71
+#: front/src/views/admin/library/ArtistDetail.vue:69
+#: front/src/views/admin/library/TrackDetail.vue:70
 #: front/src/views/content/libraries/Detail.vue:9
 #: src/views/playlists/Detail.vue:31
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Edit"
 msgstr "Edytuj"
 
-#: front/src/components/auth/Settings.vue:246
-msgctxt "Content/Settings/Button.Label"
-msgid "Edit"
-msgstr "Edytuj"
-
 #: front/src/components/auth/ApplicationEdit.vue:30
 #: front/src/components/auth/ApplicationEdit.vue:75
 msgctxt "Content/Applications/Title"
 msgid "Edit application"
 msgstr "Błąd podczas zastosowywania działania"
 
-#: front/src/components/About.vue:22
-msgctxt "Content/Settings/Button.Label/Verb"
-msgid "Edit instance info"
-msgstr "Edytuj informacje o instancji"
-
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:3
 msgctxt "Content/Moderation/Card.Title/Verb"
 msgid "Edit moderation rule"
@@ -1543,23 +1730,20 @@ msgctxt "Content/*/Title"
 msgid "Edit this track"
 msgstr "Odtwórz utwór"
 
-#: front/src/views/admin/library/AlbumDetail.vue:182
-#: front/src/views/admin/library/ArtistDetail.vue:171
+#: front/src/components/mixins/Translations.vue:116
+#: front/src/views/admin/library/AlbumDetail.vue:198
+#: front/src/views/admin/library/ArtistDetail.vue:186
 #: front/src/views/admin/library/Base.vue:5
 #: src/views/admin/library/EditsList.vue:24
-#: front/src/views/admin/library/TrackDetail.vue:234
+#: front/src/views/admin/library/TrackDetail.vue:250
+#: front/src/components/mixins/Translations.vue:117
 msgctxt "*/Admin/*/Noun"
 msgid "Edits"
 msgstr "Edytuj"
 
-#: front/src/components/mixins/Translations.vue:104
-#: front/src/components/mixins/Translations.vue:105
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Edits"
-msgstr "Edytuj"
-
-#: front/src/components/auth/Signup.vue:30
+#: front/src/components/auth/SignupForm.vue:26
 #: front/src/components/manage/users/UsersTable.vue:38
+#: front/src/components/moderation/ReportModal.vue:31
 msgctxt "Content/*/*/Noun"
 msgid "Email"
 msgstr "E-mail"
@@ -1569,50 +1753,59 @@ msgctxt "Content/*/*"
 msgid "Email address"
 msgstr "Adres e-mail"
 
-#: front/src/components/library/AlbumBase.vue:53
-#: front/src/components/library/ArtistBase.vue:64
-#: front/src/components/library/TrackBase.vue:72
+#: front/src/components/library/AlbumBase.vue:54
+#: front/src/components/library/ArtistBase.vue:65
+#: front/src/components/library/TrackBase.vue:70
+#: src/views/playlists/Detail.vue:38
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Embed"
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:20
+#: front/src/components/audio/EmbedWizard.vue:30
 msgctxt "Popup/Embed/Input.Label/Noun"
 msgid "Embed code"
 msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:26
+#: front/src/components/library/AlbumBase.vue:27
 msgctxt "Popup/Album/Title/Verb"
 msgid "Embed this album on your website"
 msgstr ""
 
-#: front/src/components/library/ArtistBase.vue:37
+#: front/src/components/library/ArtistBase.vue:38
 msgctxt "Popup/Artist/Title/Verb"
 msgid "Embed this artist work on your website"
 msgstr ""
 
-#: front/src/components/library/TrackBase.vue:45
+#: front/src/views/playlists/Detail.vue:52
+msgctxt "Popup/Album/Title/Verb"
+msgid "Embed this playlist on your website"
+msgstr ""
+
+#: front/src/components/library/TrackBase.vue:43
 msgctxt "Popup/Track/Title"
 msgid "Embed this track on your website"
 msgstr ""
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:259
-#: front/src/views/admin/moderation/DomainsDetail.vue:187
+#: front/src/views/admin/moderation/AccountsDetail.vue:260
+#: front/src/views/admin/moderation/DomainsDetail.vue:224
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Emitted library follows"
 msgstr "Wprowadź adres URL biblioteki"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:243
-#: front/src/views/admin/moderation/DomainsDetail.vue:171
+#: front/src/views/admin/moderation/AccountsDetail.vue:244
+#: front/src/views/admin/moderation/DomainsDetail.vue:208
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Emitted messages"
 msgstr ""
 
+#: front/src/components/About.vue:114 src/components/About.vue:127
+#: front/src/components/About.vue:140
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:8
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:17
 #: front/src/views/admin/moderation/AccountsDetail.vue:156
 #: front/src/views/admin/moderation/AccountsDetail.vue:160
-msgctxt "*/*/*"
+#, fuzzy
+msgctxt "*/*/*/State of feature"
 msgid "Enabled"
 msgstr "Wyłącz dostęp"
 
@@ -1631,9 +1824,9 @@ msgctxt "Content/Search/Input.Placeholder"
 msgid "Enter a radio name…"
 msgstr "Wprowadź nazwę radia…"
 
-#: front/src/components/library/Albums.vue:119
+#: front/src/components/library/Albums.vue:128
 msgctxt "Content/Search/Input.Placeholder"
-msgid "Enter album title..."
+msgid "Enter album title…"
 msgstr ""
 
 #: front/src/components/library/Artists.vue:116
@@ -1648,15 +1841,16 @@ msgstr "Wprowadź nazwę listy odtwarzania…"
 
 #: front/src/views/auth/PasswordReset.vue:54
 msgctxt "Content/Signup/Input.Placeholder"
-msgid "Enter the email address binded to your account"
+msgid "Enter the email address linked to your account"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:103
+#: front/src/components/auth/SignupForm.vue:96
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your email"
 msgstr "Wprowadź swój e-mail"
 
-#: front/src/components/auth/Signup.vue:98 src/components/auth/Signup.vue:100
+#: front/src/components/auth/SignupForm.vue:91
+#: src/components/auth/SignupForm.vue:93
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your invitation code (case insensitive)"
 msgstr "Wprowadź swój kod zapraszający (wielkość znaków nie ma znaczenia)"
@@ -1666,12 +1860,12 @@ msgctxt "Content/Library/Input.Placeholder/Verb"
 msgid "Enter your search query…"
 msgstr "Wprowadź swoje kryterium wyszukiwania…"
 
-#: front/src/components/auth/Signup.vue:102
+#: front/src/components/auth/SignupForm.vue:95
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your username"
 msgstr "Wprowadź swoją nazwę użytkownika"
 
-#: front/src/components/auth/Login.vue:83
+#: front/src/components/auth/LoginForm.vue:81
 msgctxt "Content/Login/Input.Placeholder"
 msgid "Enter your username or email"
 msgstr "Wprowadź swoją nazwę użytkownika lub e-mail"
@@ -1688,7 +1882,7 @@ msgctxt "Popup/Import/Table.Label/Noun"
 msgid "Error detail"
 msgstr "Zgłaszanie błędów"
 
-#: front/src/views/admin/Settings.vue:87
+#: front/src/views/admin/Settings.vue:89
 msgctxt "Content/Admin/Menu"
 msgid "Error reporting"
 msgstr "Zgłaszanie błędów"
@@ -1744,16 +1938,12 @@ msgctxt "Popup/Moderation/Error message"
 msgid "Error while fetching application data"
 msgstr "Wystąpił błąd podczas tworzenia zaproszenia"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:118
+#: front/src/views/admin/moderation/DomainsDetail.vue:155
 msgctxt "Content/Moderation/Table"
 msgid "Error while fetching node info"
 msgstr "Wystąpił błąd podczas uzyskiwania zdalnej biblioteki"
 
 #: front/src/components/admin/SettingsGroup.vue:5
-msgctxt "Content/Settings/Error message.Title"
-msgid "Error while saving settings"
-msgstr "Wystąpił błąd podczas zapisywania ustawień"
-
 #: front/src/components/federation/FetchButton.vue:73
 msgctxt "Content/*/Error message.Title"
 msgid "Error while saving settings"
@@ -1764,6 +1954,18 @@ msgctxt "Content/Library/Error message.Title"
 msgid "Error while submitting edit"
 msgstr "Wystąpił błąd podczas zapisywania ustawień"
 
+#: front/src/components/manage/moderation/NoteForm.vue:3
+#, fuzzy
+msgctxt "Content/Moderation/Error message.Title"
+msgid "Error while submitting note"
+msgstr "Wystąpił błąd podczas zapisywania ustawień"
+
+#: front/src/components/moderation/ReportModal.vue:11
+#, fuzzy
+msgctxt "Popup/Moderation/Error message"
+msgid "Error while submitting report"
+msgstr "Wystąpił błąd podczas zapisywania ustawień"
+
 #: front/src/components/mixins/Translations.vue:32
 #: front/src/components/mixins/Translations.vue:33
 msgctxt "Content/Library/Table/Short"
@@ -1798,9 +2000,14 @@ msgctxt "Content/Radio/Table.Label/Verb"
 msgid "Exclude"
 msgstr "Wyłącz"
 
+#: front/src/components/common/CollapseLink.vue:2
+msgctxt "*/*/Button,Label"
+msgid "Expand"
+msgstr ""
+
 #: front/src/components/manage/users/InvitationsTable.vue:41
-#: front/src/components/mixins/Translations.vue:49
-#: front/src/components/mixins/Translations.vue:50
+#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:60
 msgctxt "Content/Admin/Table.Label/Noun"
 msgid "Expiration date"
 msgstr "Data wygaśnięcia"
@@ -1817,11 +2024,7 @@ msgstr "Wyczerpany/zużyty"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:110
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Explain why you're applying this policy. Depending on your instance "
-"configuration, this will help you remember why you acted on this account or "
-"domain, and may be displayed publicly to help users understand what "
-"moderation rules are in place."
+msgid "Explain why you're applying this policy. Depending on your instance configuration, this will help you remember why you acted on this account or domain, and may be displayed publicly to help users understand what moderation rules are in place."
 msgstr ""
 
 #: front/src/components/manage/library/UploadsTable.vue:25
@@ -1830,31 +2033,28 @@ msgctxt "Content/Library/Dropdown"
 msgid "Failed"
 msgstr "Sfederowane utwory"
 
-#: front/src/views/content/remote/Card.vue:62
+#: front/src/views/content/remote/Card.vue:75
 msgctxt "Content/Library/Card.List item/Noun"
 msgid "Failed tracks:"
 msgstr "Sfederowane utwory"
 
-#: front/src/views/admin/library/AlbumDetail.vue:165
-#: front/src/views/admin/library/ArtistDetail.vue:154
-#: front/src/views/admin/library/TrackDetail.vue:217
+#: front/src/views/admin/library/AlbumDetail.vue:171
+#: front/src/views/admin/library/ArtistDetail.vue:159
+#: front/src/views/admin/library/TrackDetail.vue:223
 msgctxt "*/*/*"
 msgid "Favorited tracks"
 msgstr "Sfederowane utwory"
 
 #: front/src/components/Sidebar.vue:66
+#: src/components/mixins/Translations.vue:88
+#: front/src/components/mixins/Translations.vue:89
 msgctxt "Sidebar/Favorites/List item.Link/Noun"
 msgid "Favorites"
 msgstr "Ulubione"
 
-#: front/src/components/mixins/Translations.vue:76
-#: front/src/components/mixins/Translations.vue:77
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Favorites"
-msgstr "Ulubione"
-
-#: front/src/views/admin/Settings.vue:84
-msgctxt "Content/Admin/Menu"
+#: front/src/components/About.vue:110 src/views/admin/Settings.vue:84
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Federation"
 msgstr "Federacja"
 
@@ -1878,6 +2078,11 @@ msgctxt "Content/Radio/Table.Label/Noun"
 msgid "Filter name"
 msgstr "Filtruj nazwÄ™"
 
+#: front/src/components/Home.vue:118
+msgctxt "Content/Home/Link"
+msgid "Find another pod"
+msgstr ""
+
 #: front/src/components/manage/library/UploadsTable.vue:26
 #: front/src/components/mixins/Translations.vue:36
 #: front/src/views/content/libraries/FilesTable.vue:17
@@ -1887,25 +2092,31 @@ msgid "Finished"
 msgstr "Ukończono"
 
 #: front/src/components/manage/moderation/AccountsTable.vue:42
-#: front/src/components/manage/moderation/DomainsTable.vue:41
-#: front/src/views/admin/library/AlbumDetail.vue:149
-#: front/src/views/admin/library/ArtistDetail.vue:138
-#: front/src/views/admin/library/LibraryDetail.vue:153
-#: front/src/views/admin/library/TrackDetail.vue:201
+#: front/src/components/manage/moderation/DomainsTable.vue:49
+#: front/src/views/admin/library/AlbumDetail.vue:155
+#: front/src/views/admin/library/ArtistDetail.vue:143
+#: front/src/views/admin/library/LibraryDetail.vue:162
+#: front/src/views/admin/library/TagDetail.vue:98
+#: front/src/views/admin/library/TrackDetail.vue:207
 #: front/src/views/admin/library/UploadDetail.vue:167
-#: front/src/views/admin/moderation/AccountsDetail.vue:235
-#: front/src/views/admin/moderation/DomainsDetail.vue:151
+#: front/src/views/admin/moderation/AccountsDetail.vue:236
+#: front/src/views/admin/moderation/DomainsDetail.vue:188
 msgctxt "Content/Moderation/Table.Label/Short (Value is a date)"
 msgid "First seen"
 msgstr "Data wygaśnięcia"
 
-#: front/src/components/mixins/Translations.vue:46
-#: front/src/components/mixins/Translations.vue:47
+#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:57
 msgctxt "Content/Moderation/Dropdown/Noun"
 msgid "First seen date"
 msgstr "Data wygaśnięcia"
 
-#: front/src/views/content/remote/Card.vue:87
+#: front/src/components/ShortcutsModal.vue:64
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Focus searchbar"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:100
 msgctxt "Content/Library/Card.Button.Label/Verb"
 msgid "Follow"
 msgstr "Śledź"
@@ -1915,40 +2126,34 @@ msgctxt "Content/Library/Title/Verb"
 msgid "Follow remote libraries"
 msgstr "Śledź zdalne biblioteki"
 
-#: front/src/views/content/remote/Card.vue:92
+#: front/src/views/content/remote/Card.vue:105
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Follow request pending approval"
 msgstr "Åšledzenie oczekuje na zatwierdzenie"
 
-#: front/src/components/mixins/Translations.vue:64
-#: front/src/views/admin/library/LibraryDetail.vue:161
+#: front/src/components/manage/library/LibrariesTable.vue:53
+#: front/src/components/mixins/Translations.vue:76
+#: front/src/views/admin/library/LibraryDetail.vue:170
 #: front/src/views/content/libraries/Detail.vue:7
-#: front/src/components/mixins/Translations.vue:65
+#: front/src/components/mixins/Translations.vue:77
 msgctxt "Content/Federation/*/Noun"
 msgid "Followers"
 msgstr "ÅšledzÄ…cy"
 
-#: front/src/components/manage/library/LibrariesTable.vue:53
-msgctxt "Content/*/*/Noun"
-msgid "Followers"
-msgstr "ÅšledzÄ…cy"
-
-#: front/src/views/content/remote/Card.vue:103
+#: front/src/views/content/remote/Card.vue:116
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Following"
 msgstr "Åšledzisz"
 
-#: front/src/components/mixins/Translations.vue:84
-#: front/src/components/mixins/Translations.vue:85
+#: front/src/components/mixins/Translations.vue:96
+#: front/src/components/mixins/Translations.vue:97
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Follows"
 msgstr "Śledź"
 
-#: front/src/components/library/TrackBase.vue:17
+#: front/src/components/library/TrackBase.vue:245
 msgctxt "Content/Track/Paragraph"
-msgid ""
-"From album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> by <a"
-" class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgid "From album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
 msgstr ""
 
 #: front/src/components/auth/Authorize.vue:28
@@ -1958,38 +2163,21 @@ msgstr "Wyłącz dostęp"
 
 #: front/src/components/auth/SubsonicTokenForm.vue:7
 msgctxt "Content/Settings/Paragraph'"
-msgid ""
-"Funkwhale is compatible with other music players that support the Subsonic "
-"API."
-msgstr ""
-"Funkwhale jest kompatybilny z innymi odtwarzaczami muzycznymi obsługującymi "
-"API Subsonic."
-
-#: front/src/components/Home.vue:90
-msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale is dead simple to use."
-msgstr "Funkwhale jest niezwykle prosty w użyciu."
-
-#: front/src/components/Home.vue:39
-msgctxt "Content/Home/Paragraph"
-msgid ""
-"Funkwhale is designed to make it easy to listen to music you like, or to "
-"discover new artists."
-msgstr ""
-"Funkwhale został zaprojektowany, aby uczynić słuchanie muzyki którą lubisz i"
-" poznawanie nowych wykonawców prostym."
+msgid "Funkwhale is compatible with other music players that support the Subsonic API."
+msgstr "Funkwhale jest kompatybilny z innymi odtwarzaczami muzycznymi obsługującymi API Subsonic."
 
-#: front/src/components/Home.vue:111
+#: front/src/components/Home.vue:88
+#, fuzzy
 msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale is free and gives you control on your music."
+msgid "Funkwhale is free and developped by a friendly community of volunteers."
 msgstr "Funkwhale jest wolny i oddaje Ci kontrolÄ™ nad TwojÄ… muzykÄ…."
 
-#: front/src/components/Home.vue:66
-msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale takes care of handling your music"
-msgstr "Funkwhale dba o TwojÄ… bibliotekÄ™ muzycznÄ…"
+#: front/src/components/About.vue:78
+msgctxt "*/*/*"
+msgid "Funkwhale version"
+msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:38
+#: front/src/components/ShortcutsModal.vue:56
 msgctxt "Popup/Keyboard shortcuts/Title"
 msgid "General shortcuts"
 msgstr ""
@@ -1999,35 +2187,17 @@ msgctxt "Content/Admin/Button.Label/Verb"
 msgid "Get a new invitation"
 msgstr "Uzyskaj nowe zaproszenie"
 
-#: front/src/components/Home.vue:13
-msgctxt "Content/Home/Button.Label/Verb"
-msgid "Get me to the library"
-msgstr "Pokaż mi bibliotekę"
-
-#: front/src/components/Home.vue:70
-msgctxt "Content/Home/List item/Verb"
-msgid ""
-"Get quality metadata about your music thanks to <a href=\"%{ url }\" "
-"target=\"_blank\">MusicBrainz</a>"
-msgstr ""
-"Uzyskaj dobrej jakości metadane o Twojej muzyce dzięki <a href=\"%{ url }\" "
-"target=\"_blank\">MusicBrainz</a>"
-
 #: front/src/views/content/Home.vue:12 src/views/content/Home.vue:19
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Get started"
 msgstr "Rozpocznij"
 
-#: front/src/components/Footer.vue:37
+#: front/src/components/Footer.vue:45
+#: src/components/library/ImportStatusModal.vue:45
 msgctxt "Footer/*/Link"
 msgid "Getting help"
 msgstr "Ustawienia"
 
-#: front/src/components/library/ImportStatusModal.vue:45
-msgctxt "Popup/Import/Table.Label/Noun"
-msgid "Getting help"
-msgstr "Ustawienia"
-
 #: front/src/components/common/ActionTable.vue:35
 #: front/src/components/common/ActionTable.vue:56
 msgctxt "Content/*/Button.Label/Short, Verb"
@@ -2039,11 +2209,21 @@ msgctxt "Content/*/Button.Label/Verb"
 msgid "Go to home page"
 msgstr "Przejdź na stronę główną"
 
+#: front/src/views/Notifications.vue:27 src/views/Notifications.vue:61
+msgctxt "Content/Notifications/Button.Label"
+msgid "Got it!"
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:128
 msgctxt "Content/Settings/Title"
 msgid "Hidden artists"
 msgstr "Przeglądanie wykonawców"
 
+#: front/src/components/About.vue:155
+msgctxt "*/*/*/Verb"
+msgid "Hide"
+msgstr ""
+
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:114
 msgctxt "Content/Moderation/Help text"
 msgid "Hide account or domain content, except from followers."
@@ -2054,12 +2234,12 @@ msgctxt "Popup/*/Button.Label"
 msgid "Hide content"
 msgstr "Dodaj zawartość"
 
-#: front/src/components/audio/PlayButton.vue:26
+#: front/src/components/audio/PlayButton.vue:31
 msgctxt "*/Queue/Dropdown/Button/Label/Short"
 msgid "Hide content from this artist"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:643
+#: front/src/components/audio/Player.vue:669
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Hide content from this artist…"
 msgstr ""
@@ -2069,38 +2249,29 @@ msgctxt "Head/Home/Title"
 msgid "Home"
 msgstr "Strona główna"
 
-#: front/src/components/instance/Stats.vue:36
-msgctxt "Content/About/Paragraph/Unit"
-msgid "Hours of music"
-msgstr "Godziny muzyki"
-
 #: front/src/components/auth/SubsonicTokenForm.vue:10
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"However, accessing Funkwhale from those clients require a separate password "
-"you can set below."
-msgstr ""
-"Korzystanie z Funkwhale z tych klientów wymaga jednak oddzielnego hasła, "
-"które możesz ustawić poniżej."
+msgid "However, accessing Funkwhale from those clients require a separate password you can set below."
+msgstr "Korzystanie z Funkwhale z tych klientów wymaga jednak oddzielnego hasła, które możesz ustawić poniżej."
 
 #: front/src/views/auth/PasswordResetConfirm.vue:24
+#, fuzzy
 msgctxt "Content/Signup/Paragraph"
-msgid ""
-"If the email address provided in the previous step is valid and binded to a "
-"user account, you should receive an email with reset instructions in the "
-"next couple of minutes."
-msgstr ""
-"Jeżeli adres e-mail podany w poprzednim kroku jest prawidłowy i przypisany "
-"do konta użytkownika, powinieneś dostać wiadomość z instrukcjami resetowania"
-" hasła w przeciągu kilku minut."
+msgid "If the email address provided in the previous step is valid and linked to a user account, you should receive an email with reset instructions in the next couple of minutes."
+msgstr "Jeżeli adres e-mail podany w poprzednim kroku jest prawidłowy i przypisany do konta użytkownika, powinieneś dostać wiadomość z instrukcjami resetowania hasła w przeciągu kilku minut."
 
 #: front/src/components/auth/Settings.vue:205
 msgctxt "Content/Applications/Paragraph"
-msgid ""
-"If you authorize third-party applications to access your data, those "
-"applications will be listed here."
+msgid "If you authorize third-party applications to access your data, those applications will be listed here."
 msgstr ""
 
+#: front/src/components/mixins/Translations.vue:46
+#: front/src/components/mixins/Translations.vue:47
+#, fuzzy
+msgctxt "Content/Moderation/Dropdown"
+msgid "Illegal content"
+msgstr "Dodaj zawartość"
+
 #: front/src/components/library/ImportStatusModal.vue:3
 msgctxt "Popup/Import/Title"
 msgid "Import detail"
@@ -2112,14 +2283,10 @@ msgid "Import reference"
 msgstr "Importuj źródło"
 
 #: front/src/components/manage/library/UploadsTable.vue:20
-#: front/src/views/content/libraries/FilesTable.vue:11
-#: front/src/views/content/libraries/FilesTable.vue:59
-msgctxt "Content/Library/*/Noun"
-msgid "Import status"
-msgstr "Stan importu"
-
 #: front/src/components/manage/library/UploadsTable.vue:64
 #: front/src/views/admin/library/UploadDetail.vue:131
+#: front/src/views/content/libraries/FilesTable.vue:11
+#: front/src/views/content/libraries/FilesTable.vue:59
 msgctxt "Content/*/*/Noun"
 msgid "Import status"
 msgstr "Stan importu"
@@ -2160,12 +2327,12 @@ msgctxt "Popup/Moderation/List item"
 msgid "In radio suggestions"
 msgstr ""
 
-#: front/src/components/manage/users/UsersTable.vue:54
+#: front/src/components/manage/users/UsersTable.vue:55
 msgctxt "Content/Admin/Table"
 msgid "Inactive"
 msgstr "Nieaktywny"
 
-#: front/src/components/ShortcutsModal.vue:71
+#: front/src/components/ShortcutsModal.vue:124
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Increase volume"
 msgstr ""
@@ -2185,7 +2352,7 @@ msgctxt "Content/Settings/Dropdown/Short"
 msgid "Instance"
 msgstr "Radia instancji"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:71
+#: front/src/views/admin/moderation/DomainsDetail.vue:99
 msgctxt "Content/Moderation/Title"
 msgid "Instance data"
 msgstr "Radia instancji"
@@ -2210,19 +2377,25 @@ msgctxt "Popup/Instance/Input.Label/Noun"
 msgid "Instance URL"
 msgstr "Radia instancji"
 
+#: front/src/components/manage/moderation/ReportCard.vue:92
+#: front/src/components/manage/moderation/ReportCard.vue:203
+msgctxt "Content/*/*/Noun"
+msgid "Internal notes"
+msgstr ""
+
 #: front/src/components/library/FileUpload.vue:268
 msgctxt "Content/Library/Help text"
-msgid ""
-"Invalid file type, ensure you are uploading an audio file. Supported file "
-"extensions are %{ extensions }"
+msgid "Invalid file type, ensure you are uploading an audio file. Supported file extensions are %{ extensions }"
 msgstr ""
 
 #: front/src/components/library/ImportStatusModal.vue:139
+#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:46
 msgctxt "Popup/Import/Error.Label"
 msgid "Invalid metadata"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:44
+#: front/src/components/auth/SignupForm.vue:40
 #: front/src/components/manage/users/InvitationForm.vue:11
 msgctxt "Content/*/Input.Label"
 msgid "Invitation code"
@@ -2234,7 +2407,13 @@ msgctxt "*/Admin/*/Noun"
 msgid "Invitations"
 msgstr "Zaproszenia"
 
-#: front/src/components/Footer.vue:41
+#: front/src/components/manage/moderation/DomainsTable.vue:9
+#: front/src/views/admin/moderation/DomainsDetail.vue:106
+msgctxt "Content/Moderation/*/Adjective"
+msgid "Is present on allow-list"
+msgstr ""
+
+#: front/src/components/Footer.vue:49
 msgctxt "Footer/*/List item.Link"
 msgid "Issue tracker"
 msgstr "Śledzenie błędów"
@@ -2244,17 +2423,18 @@ msgctxt "Popup/Instance/Error message.Title"
 msgid "It is not possible to connect to the given URL"
 msgstr ""
 
-#: front/src/components/Home.vue:50
-msgctxt "Content/Home/List item/Verb"
-msgid "Keep a track of your favorite songs"
-msgstr "Zachowaj kontrolÄ™ nad ulubionymi utworami"
+#: front/src/components/mixins/Translations.vue:65
+#: front/src/components/mixins/Translations.vue:66
+msgctxt "*/*/*/Noun"
+msgid "Items"
+msgstr ""
 
 #: front/src/components/Footer.vue:33 src/components/ShortcutsModal.vue:3
 msgctxt "*/*/*/Noun"
 msgid "Keyboard shortcuts"
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:161
+#: front/src/views/admin/moderation/DomainsDetail.vue:198
 msgctxt "Content/Moderation/Table.Label.Link"
 msgid "Known accounts"
 msgstr "Moje konto"
@@ -2265,15 +2445,15 @@ msgid "Known libraries"
 msgstr "Znane biblioteki"
 
 #: front/src/components/manage/users/UsersTable.vue:41
-#: front/src/components/mixins/Translations.vue:58
-#: front/src/views/admin/moderation/AccountsDetail.vue:205
-#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:70
+#: front/src/views/admin/moderation/AccountsDetail.vue:206
+#: front/src/components/mixins/Translations.vue:71
 msgctxt "Content/Profile/Table.Label/Short, Noun (Value is a date)"
 msgid "Last activity"
 msgstr "Ostatnia aktywność"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:188
-#: front/src/views/admin/moderation/DomainsDetail.vue:78
+#: front/src/views/admin/moderation/AccountsDetail.vue:189
+#: front/src/views/admin/moderation/DomainsDetail.vue:115
 msgctxt "Content/*/Table.Label"
 msgid "Last checked"
 msgstr "Ostatnia aktualizacja:"
@@ -2288,13 +2468,13 @@ msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Last seen"
 msgstr "Ostatnia aktualizacja:"
 
-#: front/src/components/mixins/Translations.vue:47
-#: front/src/components/mixins/Translations.vue:48
+#: front/src/components/mixins/Translations.vue:57
+#: front/src/components/mixins/Translations.vue:58
 msgctxt "Content/Moderation/Dropdown/Noun"
 msgid "Last seen date"
 msgstr "Ostatnia aktualizacja:"
 
-#: front/src/views/content/remote/Card.vue:60
+#: front/src/views/content/remote/Card.vue:73
 msgctxt "Content/Library/Card.List item/Noun"
 msgid "Last update:"
 msgstr "Ostatnia aktualizacja:"
@@ -2304,60 +2484,60 @@ msgctxt "Modal/*/Button.Label/Short, Verb"
 msgid "Launch"
 msgstr "Uruchom"
 
-#: front/src/components/Home.vue:10
-msgctxt "Content/Home/Button.Label/Verb"
-msgid "Learn more about this instance"
-msgstr "Dowiedz się więcej o tej instancji"
+#: front/src/components/Home.vue:35
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Learn more"
+msgstr "Ładowanie śledzących…"
 
 #: front/src/components/manage/users/InvitationForm.vue:58
 msgctxt "Content/Admin/Input.Placeholder"
 msgid "Leave empty for a random code"
 msgstr "Pozostaw puste, aby wygenerować kod"
 
-#: front/src/components/audio/EmbedWizard.vue:7
+#: front/src/components/audio/EmbedWizard.vue:17
 msgctxt "Popup/Embed/Paragraph"
 msgid "Leave empty for a responsive widget"
 msgstr "Pozostaw puste, aby wygenerować kod"
 
-#: front/src/views/admin/library/AlbumDetail.vue:232
-#: front/src/views/admin/library/ArtistDetail.vue:221
-#: front/src/views/admin/library/TrackDetail.vue:284
-#: front/src/views/admin/moderation/AccountsDetail.vue:327
-#: front/src/views/admin/moderation/DomainsDetail.vue:234
-#: front/src/views/content/Base.vue:5
+#: front/src/components/mixins/Translations.vue:64
+#: front/src/components/mixins/Translations.vue:65
 msgctxt "*/*/*/Noun"
-msgid "Libraries"
-msgstr "Biblioteki"
+msgid "Length"
+msgstr ""
 
+#: front/src/views/admin/library/AlbumDetail.vue:248
+#: front/src/views/admin/library/ArtistDetail.vue:236
 #: front/src/views/admin/library/Base.vue:17
 #: front/src/views/admin/library/LibrariesList.vue:24
-msgctxt "*/*/*"
+#: front/src/views/admin/library/TrackDetail.vue:300
+#: front/src/views/admin/moderation/AccountsDetail.vue:339
+#: front/src/views/admin/moderation/DomainsDetail.vue:271
+#: front/src/views/content/Base.vue:5
+msgctxt "*/*/*/Noun"
 msgid "Libraries"
 msgstr "Biblioteki"
 
-#: front/src/components/mixins/Translations.vue:72
-#: front/src/components/mixins/Translations.vue:73
+#: front/src/components/mixins/Translations.vue:84
+#: front/src/components/mixins/Translations.vue:85
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Libraries and uploads"
 msgstr "Zaktualizowano bibliotekÄ™"
 
 #: front/src/views/content/libraries/Form.vue:2
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Libraries help you organize and share your music collections. You can upload"
-" your own music collection to Funkwhale and share it with your friends and "
-"family."
-msgstr ""
-"Biblioteki pomagają organizować i udostępniać kolekcje muzyki. Możesz wysłać"
-" własną kolekcję muzyki na Funkwhale i dzielić się nią z rodziną i "
-"znajomymi."
+msgid "Libraries help you organize and share your music collections. You can upload your own music collection to Funkwhale and share it with your friends and family."
+msgstr "Biblioteki pomagają organizować i udostępniać kolekcje muzyki. Możesz wysłać własną kolekcję muzyki na Funkwhale i dzielić się nią z rodziną i znajomymi."
 
-#: front/src/components/Sidebar.vue:85 src/components/instance/Stats.vue:30
+#: front/src/components/Sidebar.vue:85
 #: front/src/components/manage/library/UploadsTable.vue:60
-#: front/src/components/manage/users/UsersTable.vue:173
+#: front/src/components/manage/users/UsersTable.vue:174
+#: front/src/components/mixins/Report.vue:77
 #: front/src/views/admin/library/UploadDetail.vue:144
-#: front/src/views/admin/moderation/AccountsDetail.vue:498
-msgctxt "*/*/*"
+#: front/src/views/admin/moderation/AccountsDetail.vue:518 src/entities.js:132
+#: front/src/components/mixins/Report.vue:78
+#, fuzzy
+msgctxt "*/*/*/Noun"
 msgid "Library"
 msgstr "Biblioteka"
 
@@ -2388,21 +2568,37 @@ msgstr "Zaktualizowano bibliotekÄ™"
 
 #: front/src/components/library/TrackDetail.vue:19
 #: front/src/components/manage/library/TracksTable.vue:43
-#: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:61
+#: front/src/views/admin/library/TrackDetail.vue:165 src/edits.js:84
+#: front/src/entities.js:115
 msgctxt "Content/*/*/Noun"
 msgid "License"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:157
-#: front/src/views/admin/library/ArtistDetail.vue:146
-#: front/src/views/admin/library/TrackDetail.vue:209
-msgctxt "*/*/*/Noun"
-msgid "Listenings"
+#: front/src/components/Footer.vue:90
+msgctxt "Footer/Settings/Dropdown.Label/Theme name"
+msgid "Light"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:80
-#: front/src/components/mixins/Translations.vue:81
-msgctxt "Content/OAuth Scopes/Label"
+#: front/src/views/admin/library/AlbumDetail.vue:188
+#: front/src/views/admin/library/ArtistDetail.vue:176
+#: front/src/views/admin/library/LibraryDetail.vue:179
+#: front/src/views/admin/library/TrackDetail.vue:240
+#: front/src/views/admin/moderation/AccountsDetail.vue:269
+msgctxt "Content/Moderation/Table.Label/Noun"
+msgid "Linked reports"
+msgstr ""
+
+#: front/src/components/Home.vue:135
+msgctxt "Content/Home/Link"
+msgid "Listen to public albums and playlists shared on this pod"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:92
+#: front/src/views/admin/library/AlbumDetail.vue:163
+#: front/src/views/admin/library/ArtistDetail.vue:151
+#: front/src/views/admin/library/TrackDetail.vue:215
+#: front/src/components/mixins/Translations.vue:93
+msgctxt "*/*/*/Noun"
 msgid "Listenings"
 msgstr ""
 
@@ -2428,7 +2624,7 @@ msgctxt "Content/Library/Paragraph"
 msgid "Loading library data…"
 msgstr "Ładowanie danych biblioteki…"
 
-#: front/src/views/Notifications.vue:19
+#: front/src/views/Notifications.vue:84
 msgctxt "Content/Notifications/Paragraph"
 msgid "Loading notifications…"
 msgstr "Ładowanie powiadomień…"
@@ -2453,6 +2649,7 @@ msgstr "Ładowanie Twoich ulubionych…"
 #: front/src/components/manage/library/LibrariesTable.vue:75
 #: front/src/components/manage/library/TracksTable.vue:71
 #: front/src/components/manage/library/UploadsTable.vue:99
+#: front/src/components/manage/moderation/ReportCard.vue:173
 #: front/src/views/admin/library/AlbumDetail.vue:19
 #: front/src/views/admin/library/ArtistDetail.vue:18
 #: front/src/views/admin/library/LibraryDetail.vue:18
@@ -2468,12 +2665,12 @@ msgctxt "Content/Moderation/*/Short, Noun"
 msgid "Local account"
 msgstr "Moje konto"
 
-#: front/src/components/auth/Login.vue:84
+#: front/src/components/Home.vue:96 src/views/auth/Login.vue:29
 msgctxt "Head/Login/Title"
 msgid "Log In"
 msgstr "Zaloguj siÄ™"
 
-#: front/src/components/auth/Login.vue:4
+#: front/src/views/auth/Login.vue:4
 msgctxt "Content/Login/Title/Verb"
 msgid "Log in to your Funkwhale account"
 msgstr "Zaloguj siÄ™ na swoje konto Funkwhale"
@@ -2488,7 +2685,7 @@ msgctxt "Sidebar/Profile/List item.Link"
 msgid "Logged in as %{ username }"
 msgstr "Zalogowano jako %{ username }"
 
-#: front/src/components/Sidebar.vue:54 src/components/auth/Login.vue:42
+#: front/src/components/Sidebar.vue:54 src/components/auth/LoginForm.vue:41
 msgctxt "*/Login/*/Verb"
 msgid "Login"
 msgstr "Logowanie"
@@ -2506,43 +2703,42 @@ msgstr "Wyloguj siÄ™"
 #: front/src/views/content/libraries/Home.vue:9
 msgctxt "Content/Library/Paragraph"
 msgid "Looks like you don't have a library, it's time to create one."
-msgstr ""
-"Wygląda na to, że nie masz jeszcze żadnej biblioteki — czas na jej "
-"utworzenie!"
+msgstr "Wygląda na to, że nie masz jeszcze żadnej biblioteki — czas na jej utworzenie!"
 
-#: front/src/components/audio/Player.vue:632
-#: src/components/audio/Player.vue:633
+#: front/src/components/audio/Player.vue:658
+#: src/components/audio/Player.vue:659
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping disabled. Click to switch to single-track looping."
-msgstr ""
-"Zapętlanie jest wyłączone. Naciśnij, aby przełączyć na powtarzanie jednego "
-"utworu."
+msgstr "Zapętlanie jest wyłączone. Naciśnij, aby przełączyć na powtarzanie jednego utworu."
 
-#: front/src/components/audio/Player.vue:635
-#: src/components/audio/Player.vue:636
+#: front/src/components/audio/Player.vue:661
+#: src/components/audio/Player.vue:662
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping on a single track. Click to switch to whole queue looping."
-msgstr ""
-"Zapętlanie jednego utworu jest włączone. Naciśnij, aby przełączyć na "
-"powtarzanie całej kolejki."
+msgstr "Zapętlanie jednego utworu jest włączone. Naciśnij, aby przełączyć na powtarzanie całej kolejki."
 
-#: front/src/components/audio/Player.vue:638
-#: src/components/audio/Player.vue:639
+#: front/src/components/audio/Player.vue:664
+#: src/components/audio/Player.vue:665
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping on whole queue. Click to disable looping."
-msgstr ""
-"Zapętlanie całej kolejki jest włączone. Naciśnij, aby wyłączyć zapętlanie."
+msgstr "Zapętlanie całej kolejki jest włączone. Naciśnij, aby wyłączyć zapętlanie."
 
-#: front/src/components/Sidebar.vue:223
+#: front/src/components/Sidebar.vue:230
 msgctxt "Sidebar/*/Hidden text"
 msgid "Main menu"
 msgstr ""
 
-#: front/src/views/admin/library/Base.vue:31
+#: front/src/views/admin/library/Base.vue:34
 msgctxt "Head/Admin/Title"
 msgid "Manage library"
 msgstr "ZarzÄ…dzaj bibliotekÄ…"
 
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:8
+#, fuzzy
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Manage moderation rules for %{ obj }"
+msgstr "Usuń radio"
+
 #: front/src/components/playlists/PlaylistModal.vue:3
 msgctxt "Popup/Playlist/Title/Verb"
 msgid "Manage playlists"
@@ -2558,7 +2754,7 @@ msgctxt "Content/Playlist/Button.Label/Verb"
 msgid "Manage your playlists"
 msgstr "ZarzÄ…dzaj swoimi listami odtwarzania"
 
-#: front/src/views/Notifications.vue:14
+#: front/src/views/Notifications.vue:79
 msgctxt "Content/Notifications/Button.Label/Verb"
 msgid "Mark all as read"
 msgstr "Oznacz wszystko jako przeczytane"
@@ -2573,12 +2769,12 @@ msgctxt "Content/Notifications/Button.Tooltip/Verb"
 msgid "Mark as unread"
 msgstr "Oznacz wszystko jako przeczytane"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:310
+#: front/src/views/admin/moderation/AccountsDetail.vue:321
 msgctxt "Content/*/*/Unit"
 msgid "MB"
 msgstr "MB"
 
-#: front/src/components/audio/Player.vue:625
+#: front/src/components/audio/Player.vue:651
 msgctxt "Sidebar/Player/Hidden text"
 msgid "Media player"
 msgstr ""
@@ -2588,41 +2784,58 @@ msgctxt "Content/Profile/Paragraph"
 msgid "Member since %{ date }"
 msgstr "Zarejestrowany od %{ date }"
 
+#: front/src/components/manage/moderation/ReportCard.vue:109
+#: front/src/components/moderation/ReportModal.vue:41
+msgctxt "*/*/Field.Label/Noun"
+msgid "Message"
+msgstr ""
+
 #: front/src/components/Footer.vue:32
 msgctxt "Footer/*/List item.Link"
 msgid "Mobile and desktop apps"
 msgstr ""
 
+#: front/src/components/Home.vue:143
+msgctxt "Content/Home/Link"
+msgid "Mobile apps"
+msgstr ""
+
 #: front/src/components/Sidebar.vue:96
-#: src/components/manage/users/UsersTable.vue:177
-#: front/src/views/admin/moderation/AccountsDetail.vue:502
-#: front/src/views/admin/moderation/Base.vue:21
+#: src/components/manage/users/UsersTable.vue:178
+#: front/src/views/admin/Settings.vue:85
+#: front/src/views/admin/moderation/AccountsDetail.vue:522
+#: front/src/views/admin/moderation/Base.vue:43
 msgctxt "*/Moderation/*"
 msgid "Moderation"
 msgstr "Federacja"
 
 #: front/src/views/admin/moderation/AccountsDetail.vue:78
-#: front/src/views/admin/moderation/DomainsDetail.vue:42
+#: front/src/views/admin/moderation/DomainsDetail.vue:70
 msgctxt "Content/Moderation/Card.Paragraph"
-msgid ""
-"Moderation policies help you control how your instance interact with a given"
-" domain or account."
+msgid "Moderation policies help you control how your instance interact with a given domain or account."
 msgstr ""
 
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:4
+#, fuzzy
+msgctxt "Content/Moderation/Button.Label"
+msgid "Moderation rules…"
+msgstr "Usuń radio"
+
 #: front/src/components/library/EditCard.vue:5
 msgctxt "Content/Library/Card/Short"
 msgid "Modification %{ id }"
 msgstr "Data modyfikacji"
 
-#: front/src/components/mixins/Translations.vue:48
-#: front/src/components/mixins/Translations.vue:49
+#: front/src/components/mixins/Translations.vue:58
+#: front/src/components/mixins/Translations.vue:59
 msgctxt "Content/Playlist/Dropdown/Noun"
 msgid "Modification date"
 msgstr "Data modyfikacji"
 
-#: front/src/components/library/AlbumBase.vue:42
-#: front/src/components/library/ArtistBase.vue:53
-#: front/src/components/library/TrackBase.vue:61
+#: front/src/components/audio/PlayButton.vue:100
+#: front/src/components/library/AlbumBase.vue:43
+#: front/src/components/library/ArtistBase.vue:54
+#: front/src/components/library/TrackBase.vue:59
 msgctxt "*/*/Button.Label/Noun"
 msgid "More…"
 msgstr ""
@@ -2632,7 +2845,7 @@ msgctxt "*/*/*/Noun"
 msgid "Music"
 msgstr "Muzyka"
 
-#: front/src/components/audio/Player.vue:631
+#: front/src/components/audio/Player.vue:657
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Mute"
 msgstr "Wycisz"
@@ -2679,8 +2892,8 @@ msgctxt "Content/Library/Title"
 msgid "My libraries"
 msgstr "Moje biblioteki"
 
-#: front/src/components/audio/track/Row.vue:40
-#: src/components/library/EditCard.vue:60
+#: front/src/components/About.vue:105 src/components/audio/track/Row.vue:40
+#: front/src/components/library/EditCard.vue:60
 #: front/src/components/library/EditForm.vue:70
 #: front/src/components/library/TrackDetail.vue:34
 #: front/src/components/library/TrackDetail.vue:43
@@ -2690,54 +2903,56 @@ msgstr "Moje biblioteki"
 #: front/src/components/manage/library/TracksTable.vue:76
 #: front/src/components/manage/library/UploadsTable.vue:121
 #: front/src/components/manage/library/UploadsTable.vue:128
-#: front/src/components/manage/users/UsersTable.vue:61
+#: front/src/components/manage/moderation/ReportCard.vue:78
+#: front/src/components/manage/moderation/ReportCard.vue:87
+#: front/src/components/manage/moderation/ReportCard.vue:193
+#: front/src/components/manage/users/UsersTable.vue:62
 #: front/src/views/admin/library/UploadDetail.vue:179
 #: front/src/views/admin/library/UploadDetail.vue:214
 #: front/src/views/admin/library/UploadDetail.vue:233
 #: front/src/views/admin/library/UploadDetail.vue:244
 #: front/src/views/admin/library/UploadDetail.vue:257
-#: front/src/views/admin/moderation/AccountsDetail.vue:192
-#: front/src/views/admin/moderation/DomainsDetail.vue:82
+#: front/src/views/admin/moderation/AccountsDetail.vue:193
+#: front/src/views/admin/moderation/DomainsDetail.vue:119
 #: front/src/views/content/libraries/FilesTable.vue:95
 #: front/src/views/content/libraries/FilesTable.vue:101
 msgctxt "*/*/*"
 msgid "N/A"
 msgstr "N/A"
 
-#: front/src/components/manage/library/LibrariesTable.vue:48
-#: front/src/components/manage/library/UploadsTable.vue:59
-msgctxt "*/*/*"
-msgid "Name"
-msgstr "Nazwa"
-
 #: front/src/components/auth/ApplicationForm.vue:9
-msgctxt "Content/Applications/Input.Label/Noun"
-msgid "Name"
-msgstr "Nazwa"
-
 #: front/src/components/auth/Settings.vue:133
 #: front/src/components/manage/library/ArtistsTable.vue:39
+#: front/src/components/manage/library/LibrariesTable.vue:48
+#: front/src/components/manage/library/TagsTable.vue:41
+#: front/src/components/manage/library/UploadsTable.vue:59
 #: front/src/components/manage/moderation/AccountsTable.vue:39
-#: front/src/components/manage/moderation/DomainsTable.vue:38
-#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/manage/moderation/DomainsTable.vue:46
+#: front/src/components/mixins/Translations.vue:63
 #: front/src/components/playlists/PlaylistModal.vue:45
-#: front/src/views/admin/library/ArtistDetail.vue:98
+#: front/src/views/admin/library/ArtistDetail.vue:103
 #: front/src/views/admin/library/LibraryDetail.vue:85
+#: front/src/views/admin/library/TagDetail.vue:68
 #: front/src/views/admin/library/UploadDetail.vue:92
-#: front/src/views/admin/moderation/DomainsDetail.vue:97
-#: front/src/views/content/libraries/Form.vue:10 src/edits.js:10
-#: front/src/components/mixins/Translations.vue:54
+#: front/src/views/admin/moderation/DomainsDetail.vue:134
+#: front/src/views/content/libraries/Form.vue:10 src/edits.js:17
+#: front/src/components/mixins/Translations.vue:64
 msgctxt "*/*/*/Noun"
 msgid "Name"
 msgstr "Nazwa"
 
+#: front/src/views/Notifications.vue:24 src/views/Notifications.vue:58
+msgctxt "*/*/*"
+msgid "Never"
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:88
 #: front/src/views/auth/PasswordResetConfirm.vue:14
 msgctxt "Content/Settings/Input.Label"
 msgid "New password"
 msgstr "Nowe hasło"
 
-#: front/src/components/Sidebar.vue:173
+#: front/src/components/Sidebar.vue:177
 msgctxt "Sidebar/Player/Paragraph"
 msgid "New tracks will be appended here automatically."
 msgstr "Nowe utwory automatycznie pojawiÄ… siÄ™ tutaj."
@@ -2747,21 +2962,18 @@ msgctxt "Content/Library/Card.Table.Header/Short"
 msgid "New value"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:629
+#: front/src/components/audio/Player.vue:655
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Next track"
 msgstr "Następny utwór"
 
-#: front/src/components/Sidebar.vue:130
+#: front/src/components/Sidebar.vue:134
+#: front/src/components/manage/moderation/DomainsTable.vue:13
+#: front/src/views/admin/moderation/DomainsDetail.vue:110
 msgctxt "*/*/*"
 msgid "No"
 msgstr "Nie"
 
-#: front/src/components/Home.vue:95
-msgctxt "Content/Home/List item"
-msgid "No add-ons, no plugins : you only need a web library"
-msgstr "Brak wtyczek, brak dodatków: potrzebujesz tylko biblioteki sieciowej"
-
 #: front/src/components/audio/Search.vue:25
 msgctxt "Content/Search/Paragraph"
 msgid "No album matched your query"
@@ -2777,6 +2989,11 @@ msgctxt "Content/Track/Table.Paragraph"
 msgid "No copyright information available for this track"
 msgstr "Tekst nie jest dostępny dla tego utworu."
 
+#: front/src/components/About.vue:25 src/components/Home.vue:25
+msgctxt "Content/Home/Paragraph"
+msgid "No description available."
+msgstr ""
+
 #: front/src/components/library/TrackDetail.vue:25
 msgctxt "Content/Track/Table.Paragraph"
 msgid "No licensing information for this track"
@@ -2787,7 +3004,7 @@ msgctxt "Content/Federation/Paragraph"
 msgid "No matching library."
 msgstr "Brak pasujÄ…cej biblioteki."
 
-#: front/src/views/Notifications.vue:28
+#: front/src/views/Notifications.vue:93
 msgctxt "Content/Notifications/Paragraph"
 msgid "No notification to show."
 msgstr "Twoje powiadomienia"
@@ -2797,6 +3014,16 @@ msgctxt "Content/*/Paragraph"
 msgid "No results were found."
 msgstr ""
 
+#: front/src/components/About.vue:32
+msgctxt "Content/Home/Paragraph"
+msgid "No rules available."
+msgstr ""
+
+#: front/src/components/About.vue:39
+msgctxt "Content/Home/Paragraph"
+msgid "No terms available."
+msgstr ""
+
 #: front/src/components/mixins/Translations.vue:10
 #: front/src/components/mixins/Translations.vue:11
 msgctxt "Content/Settings/Dropdown"
@@ -2813,18 +3040,22 @@ msgctxt "Content/Admin/Table"
 msgid "Not used"
 msgstr "Nie użyty"
 
-#: front/src/components/mixins/Translations.vue:100
-#: front/src/components/mixins/Translations.vue:101
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Notifications"
-msgstr "Powiadomienia"
-
-#: front/src/components/Sidebar.vue:46 src/views/Notifications.vue:76
+#: front/src/components/Sidebar.vue:46
+#: src/components/mixins/Translations.vue:112
+#: front/src/views/Notifications.vue:151
+#: src/components/mixins/Translations.vue:113
 msgctxt "*/Notifications/*"
 msgid "Notifications"
 msgstr "Powiadomienia"
 
-#: front/src/components/Footer.vue:47
+#: front/src/components/mixins/Translations.vue:47
+#: front/src/components/mixins/Translations.vue:48
+#, fuzzy
+msgctxt "Content/Moderation/Dropdown"
+msgid "Offensive content"
+msgstr "Dodaj zawartość"
+
+#: front/src/components/Footer.vue:55
 msgctxt "Footer/*/List item.Link"
 msgid "Official website"
 msgstr "Oficjalna strona"
@@ -2839,6 +3070,12 @@ msgctxt "Content/Library/Card.Table.Header/Short"
 msgid "Old value"
 msgstr ""
 
+#: front/src/components/About.vue:90
+#, fuzzy
+msgctxt "*/*/*/State of registrations"
+msgid "Open"
+msgstr "Otwórz"
+
 #: front/src/components/manage/users/InvitationsTable.vue:20
 msgctxt "Content/Admin/Dropdown/Adjective"
 msgid "Open"
@@ -2846,27 +3083,29 @@ msgstr "Otwórz"
 
 #: front/src/components/library/ImportStatusModal.vue:56
 msgctxt "Popup/Import/Table.Label/Value"
-msgid ""
-"Open a support thread (include the debug information below in your message)"
+msgid "Open a support thread (include the debug information below in your message)"
 msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:73
-#: front/src/components/library/ArtistBase.vue:84
-#: front/src/components/library/TrackBase.vue:92
+#: front/src/components/library/AlbumBase.vue:87
+#: front/src/components/library/ArtistBase.vue:99
+#: front/src/components/library/TagDetail.vue:11
+#: front/src/components/library/TrackBase.vue:103
+#: front/src/components/manage/moderation/ReportCard.vue:128
 msgctxt "Content/Moderation/Link"
 msgid "Open in moderation interface"
 msgstr "Usuń radio"
 
-#: front/src/views/admin/library/AlbumDetail.vue:31
-#: front/src/views/admin/library/ArtistDetail.vue:30
-#: front/src/views/admin/library/TrackDetail.vue:30
+#: front/src/views/admin/library/AlbumDetail.vue:37
+#: front/src/views/admin/library/ArtistDetail.vue:35
+#: front/src/views/admin/library/TagDetail.vue:21
+#: front/src/views/admin/library/TrackDetail.vue:36
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open local profile"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:46
-#: front/src/views/admin/library/ArtistDetail.vue:45
-#: front/src/views/admin/library/TrackDetail.vue:45
+#: front/src/views/admin/library/AlbumDetail.vue:52
+#: front/src/views/admin/library/ArtistDetail.vue:50
+#: front/src/views/admin/library/TrackDetail.vue:51
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open on MusicBrainz"
 msgstr "Wyświetl na MusicBrainz"
@@ -2876,10 +3115,10 @@ msgctxt "Content/Moderation/Link/Verb"
 msgid "Open profile"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:54
-#: front/src/views/admin/library/ArtistDetail.vue:53
+#: front/src/views/admin/library/AlbumDetail.vue:60
+#: front/src/views/admin/library/ArtistDetail.vue:58
 #: front/src/views/admin/library/LibraryDetail.vue:49
-#: front/src/views/admin/library/TrackDetail.vue:53
+#: front/src/views/admin/library/TrackDetail.vue:59
 #: front/src/views/admin/library/UploadDetail.vue:50
 #: front/src/views/admin/moderation/AccountsDetail.vue:52
 msgctxt "Content/Moderation/Link/Verb"
@@ -2900,6 +3139,7 @@ msgstr "Dodaj filtry aby dostosować swoje radio"
 #: src/components/library/Radios.vue:41
 #: front/src/components/manage/library/EditsCardList.vue:37
 #: front/src/components/manage/users/UsersTable.vue:17
+#: front/src/views/admin/moderation/ReportsList.vue:42
 #: front/src/views/playlists/List.vue:25
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Order"
@@ -2907,40 +3147,51 @@ msgstr "PorzÄ…dkowanie"
 
 #: front/src/components/favorites/List.vue:24
 #: src/components/library/Albums.vue:15
-#: front/src/components/library/Artists.vue:15
+#: front/src/components/library/Artists.vue:19
 #: src/components/library/Radios.vue:33
 #: front/src/components/manage/library/AlbumsTable.vue:11
 #: front/src/components/manage/library/ArtistsTable.vue:11
 #: front/src/components/manage/library/EditsCardList.vue:29
 #: front/src/components/manage/library/LibrariesTable.vue:20
+#: front/src/components/manage/library/TagsTable.vue:11
 #: front/src/components/manage/library/TracksTable.vue:11
 #: front/src/components/manage/library/UploadsTable.vue:30
 #: front/src/components/manage/moderation/AccountsTable.vue:11
-#: front/src/components/manage/moderation/DomainsTable.vue:9
+#: front/src/components/manage/moderation/DomainsTable.vue:17
 #: front/src/components/manage/users/InvitationsTable.vue:9
 #: front/src/components/manage/users/UsersTable.vue:9
+#: front/src/views/admin/moderation/ReportsList.vue:34
 #: front/src/views/content/libraries/FilesTable.vue:21
 #: front/src/views/playlists/List.vue:17
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Ordering"
 msgstr "PorzÄ…dkowanie"
 
-#: front/src/components/library/Albums.vue:23
-#: src/components/library/Artists.vue:23
+#: front/src/components/library/Albums.vue:27
+#: src/components/library/Artists.vue:27
 #: front/src/components/manage/library/AlbumsTable.vue:19
 #: front/src/components/manage/library/ArtistsTable.vue:19
 #: front/src/components/manage/library/LibrariesTable.vue:28
+#: front/src/components/manage/library/TagsTable.vue:19
 #: front/src/components/manage/library/TracksTable.vue:19
 #: front/src/components/manage/library/UploadsTable.vue:38
 #: front/src/components/manage/moderation/AccountsTable.vue:19
-#: front/src/components/manage/moderation/DomainsTable.vue:17
+#: front/src/components/manage/moderation/DomainsTable.vue:25
 #: front/src/views/content/libraries/FilesTable.vue:29
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Ordering direction"
 msgstr "Kolejność porządkowania"
 
+#: front/src/components/mixins/Translations.vue:48
+#: front/src/components/mixins/Translations.vue:49
+msgctxt "Content/Moderation/Dropdown"
+msgid "Other"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:143
 #: front/src/components/manage/users/InvitationsTable.vue:38
-msgctxt "Content/Admin/Table.Label"
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Owner"
 msgstr "Właściciel"
 
@@ -2959,12 +3210,15 @@ msgctxt "Content/*/Hidden text/Noun"
 msgid "Pagination"
 msgstr ""
 
-#: front/src/components/auth/Login.vue:33 src/components/auth/Signup.vue:40
-msgctxt "Content/*/Input.Label"
+#: front/src/components/auth/LoginForm.vue:32
+#: src/components/auth/Settings.vue:291
+#: front/src/components/auth/SignupForm.vue:36
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Password"
 msgstr "Haslo"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:94
+#: front/src/components/auth/SubsonicTokenForm.vue:100
 msgctxt "Content/Settings/Message"
 msgid "Password updated"
 msgstr "Zmieniono hasło"
@@ -2974,12 +3228,12 @@ msgctxt "Content/Signup/Card.Title"
 msgid "Password updated successfully"
 msgstr "Pomyślnie zmieniono hasło"
 
-#: front/src/components/audio/Player.vue:628
+#: front/src/components/audio/Player.vue:654
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Pause track"
 msgstr "Wstrzymaj utwór"
 
-#: front/src/components/ShortcutsModal.vue:59
+#: front/src/components/ShortcutsModal.vue:96
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Pause/play the current track"
 msgstr "Odtwórz utwór"
@@ -3008,7 +3262,7 @@ msgctxt "Content/Library/Label"
 msgid "Pending files"
 msgstr "OczekujÄ…ce pliki"
 
-#: front/src/components/Sidebar.vue:225
+#: front/src/components/Sidebar.vue:232
 msgctxt "Sidebar/Notifications/Hidden text"
 msgid "Pending follow requests"
 msgstr "Oczekujące prośby o możliwość śledzenia"
@@ -3019,84 +3273,76 @@ msgctxt "Content/Admin/*/Noun"
 msgid "Pending review"
 msgstr "OczekujÄ…ce pliki"
 
-#: front/src/components/Sidebar.vue:226
+#: front/src/components/Sidebar.vue:233
 msgctxt "Sidebar/Moderation/Hidden text"
 msgid "Pending review edits"
 msgstr "OczekujÄ…ce pliki"
 
+#: front/src/components/auth/Settings.vue:176
 #: front/src/components/manage/users/UsersTable.vue:42
 #: front/src/views/admin/moderation/AccountsDetail.vue:166
-msgctxt "Content/Admin/Table.Label/Noun"
-msgid "Permissions"
-msgstr "Uprawnienia"
-
-#: front/src/components/auth/Settings.vue:176
 msgctxt "Content/*/*/Noun"
 msgid "Permissions"
 msgstr "Uprawnienia"
 
 #: front/src/components/audio/PlayButton.vue:9
-#: front/src/components/library/TrackBase.vue:26
+#: front/src/components/library/TrackBase.vue:24
 msgctxt "*/Queue/Button.Label/Short, Verb"
 msgid "Play"
 msgstr "Odtwórz"
 
 #: front/src/components/audio/album/Card.vue:48
-#: front/src/components/audio/artist/Card.vue:44
-#: front/src/components/library/AlbumBase.vue:20
+#: front/src/components/library/AlbumBase.vue:21
 #: front/src/components/library/AlbumDetail.vue:11
 #: src/views/playlists/Detail.vue:24
 msgctxt "Content/Queue/Button.Label/Short, Verb"
 msgid "Play all"
 msgstr "Odtwórz wszystkie"
 
-#: front/src/components/library/ArtistBase.vue:31
+#: front/src/components/library/ArtistBase.vue:32
 msgctxt "Content/Artist/Button.Label/Verb"
 msgid "Play all albums"
 msgstr "Odtwórz wszystkie albumy"
 
-#: front/src/components/audio/PlayButton.vue:76
+#: front/src/components/audio/PlayButton.vue:92
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play next"
 msgstr "Odtwórz następny"
 
-#: front/src/components/ShortcutsModal.vue:67
+#: front/src/components/ShortcutsModal.vue:120
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Play next track"
 msgstr "Odtwórz utwór"
 
-#: front/src/components/audio/PlayButton.vue:74
+#: front/src/components/audio/PlayButton.vue:90
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play now"
 msgstr "Odtwórz teraz"
 
-#: front/src/components/ShortcutsModal.vue:63
+#: front/src/components/ShortcutsModal.vue:116
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Play previous track"
 msgstr "Poprzedni utwór"
 
-#: front/src/components/audio/PlayButton.vue:77
+#: front/src/components/audio/PlayButton.vue:93
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play similar songs"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:224
+#: front/src/components/Sidebar.vue:231
 msgctxt "Sidebar/Player/Hidden text"
 msgid "Play this track"
 msgstr "Odtwórz utwór"
 
-#: front/src/components/audio/Player.vue:627
+#: front/src/components/audio/Player.vue:653
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Play track"
 msgstr "Odtwórz utwór"
 
-#: front/src/components/audio/PlayButton.vue:82
-msgctxt "*/Queue/Button/Title"
-msgid "Play..."
-msgstr "Odtwórz"
-
-#: front/src/views/playlists/Detail.vue:91
-msgctxt "Head/Playlist/Title"
+#: front/src/components/mixins/Report.vue:66 src/views/playlists/Detail.vue:121
+#: front/src/components/mixins/Report.vue:67
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Playlist"
 msgstr "Lista odtwarzania"
 
@@ -3134,62 +3380,60 @@ msgctxt "Content/Playlist/Dropdown.Label"
 msgid "Playlist visibility"
 msgstr "Widoczność listy odtwarzania"
 
-#: front/src/components/mixins/Translations.vue:88
-#: front/src/components/mixins/Translations.vue:89
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Playlists"
-msgstr "Listy odtwarzania"
-
 #: front/src/components/Sidebar.vue:71 src/components/library/Home.vue:16
-#: front/src/components/library/Library.vue:16 src/views/admin/Settings.vue:83
-#: front/src/views/admin/library/AlbumDetail.vue:173
-#: front/src/views/admin/library/ArtistDetail.vue:162
-#: front/src/views/admin/library/TrackDetail.vue:225
+#: front/src/components/library/Library.vue:16
+#: front/src/components/mixins/Translations.vue:100
+#: src/views/admin/Settings.vue:83
+#: front/src/views/admin/library/AlbumDetail.vue:179
+#: front/src/views/admin/library/ArtistDetail.vue:167
+#: front/src/views/admin/library/TrackDetail.vue:231
 #: src/views/playlists/List.vue:106
+#: front/src/components/mixins/Translations.vue:101
 msgctxt "*/*/*"
 msgid "Playlists"
 msgstr "Listy odtwarzania"
 
-#: front/src/components/Home.vue:56
-msgctxt "Content/Home/List item"
-msgid "Playlists? We got them"
-msgstr "Listy odtwarzania? Mamy je"
+#: front/src/components/audio/EmbedWizard.vue:9
+msgctxt "Content/Embed/Message"
+msgid "Please contact your admins and ask them to update the corresponding setting."
+msgstr ""
 
 #: front/src/components/auth/Settings.vue:79
 msgctxt "Content/Settings/Error message.List item/Call to action"
 msgid "Please double-check your password is correct"
 msgstr "Sprawdź dwukrotnie, czy Twoje hasło jest poprawne"
 
-#: front/src/components/auth/Login.vue:9
+#: front/src/components/auth/LoginForm.vue:5
 msgctxt "Content/Login/Error message.List item/Call to action"
 msgid "Please double-check your username/password couple is correct"
-msgstr ""
-"Sprawdź dwukrotnie, czy połączenie nazwy użytkownika i hasła jest poprawne"
+msgstr "Sprawdź dwukrotnie, czy połączenie nazwy użytkownika i hasła jest poprawne"
 
 #: front/src/components/auth/Settings.vue:46
 msgctxt "Content/Settings/Paragraph"
 msgid "PNG, GIF or JPG. At most 2MB. Will be downscaled to 400x400px."
+msgstr "PNG, GIF lub JPG. Maksymalnie 2MB. Zostanie pomniejszony do 400x400 pikseli."
+
+#: front/src/components/About.vue:72
+msgctxt "Content/About/Header/Name"
+msgid "Pod configuration"
 msgstr ""
-"PNG, GIF lub JPG. Maksymalnie 2MB. Zostanie pomniejszony do 400x400 pikseli."
 
-#: front/src/views/admin/library/TrackDetail.vue:137
-msgctxt "*/*/*/Noun"
+#: front/src/views/admin/library/TrackDetail.vue:143 src/edits.js:70
+msgctxt "*/*/*/Short, Noun"
 msgid "Position"
 msgstr "Opis"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:118
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Prevent account or domain from triggering notifications, except from "
-"followers."
+msgid "Prevent account or domain from triggering notifications, except from followers."
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:33
+#: front/src/components/audio/EmbedWizard.vue:43
 msgctxt "Popup/Embed/Title/Noun"
 msgid "Preview"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:626
+#: front/src/components/audio/Player.vue:652
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Previous track"
 msgstr "Poprzedni utwór"
@@ -3200,7 +3444,7 @@ msgctxt "Content/Settings/Dropdown/Short"
 msgid "Private"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:43
+#: front/src/views/content/remote/Card.vue:56
 msgctxt "Content/Library/Card.List item"
 msgid "Problem during scanning"
 msgstr "BÅ‚Ä…d podczas skanowania"
@@ -3221,14 +3465,20 @@ msgctxt "Content/Library/Tab.Title/Short"
 msgid "Processing"
 msgstr "Przetwarzanie"
 
-#: front/src/components/mixins/Translations.vue:68
-#: front/src/components/mixins/Translations.vue:69
+#: front/src/components/mixins/Translations.vue:80
+#: front/src/components/mixins/Translations.vue:81
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Profile"
 msgstr ""
 
+#: front/src/components/auth/SignupForm.vue:5
+#, fuzzy
+msgctxt "Content/Signup/Form/Paragraph"
+msgid "Public registrations are not possible on this instance. You will need an invitation code to sign up."
+msgstr "Rejestracja na tej instancji jest wyłączona, potrzebujesz kodu zapraszającego aby zarejestrować się."
+
 #: front/src/components/manage/moderation/AccountsTable.vue:188
-#: front/src/components/manage/moderation/DomainsTable.vue:168
+#: front/src/components/manage/moderation/DomainsTable.vue:186
 #: front/src/views/content/libraries/Quota.vue:36
 #: front/src/views/content/libraries/Quota.vue:39
 #: front/src/views/content/libraries/Quota.vue:62
@@ -3259,7 +3509,7 @@ msgctxt "Sidebar/Queue/Tab.Title/Noun"
 msgid "Queue"
 msgstr "Kolejka"
 
-#: front/src/components/audio/Player.vue:322
+#: front/src/components/audio/Player.vue:329
 msgctxt "Content/Queue/Message"
 msgid "Queue shuffled!"
 msgstr "Wymieszano kolejkÄ™!"
@@ -3291,16 +3541,12 @@ msgstr "Zaktualizowano radio"
 
 #: front/src/components/library/Library.vue:13
 #: src/components/library/Radios.vue:142
+#: front/src/components/mixins/Translations.vue:104
+#: front/src/components/mixins/Translations.vue:105
 msgctxt "*/*/*"
 msgid "Radios"
 msgstr "Radia"
 
-#: front/src/components/mixins/Translations.vue:92
-#: front/src/components/mixins/Translations.vue:93
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Radios"
-msgstr "Radia"
-
 #: front/src/components/auth/ApplicationForm.vue:151
 msgctxt "Content/OAuth Scopes/Label/Verb"
 msgid "Read"
@@ -3327,15 +3573,15 @@ msgctxt "Content/Moderation/*/Noun"
 msgid "Reason"
 msgstr ""
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:251
-#: front/src/views/admin/moderation/DomainsDetail.vue:179
+#: front/src/views/admin/moderation/AccountsDetail.vue:252
+#: front/src/views/admin/moderation/DomainsDetail.vue:216
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Received library follows"
 msgstr "Wprowadź adres URL biblioteki"
 
-#: front/src/components/manage/moderation/DomainsTable.vue:40
-#: front/src/components/mixins/Translations.vue:62
-#: front/src/components/mixins/Translations.vue:63
+#: front/src/components/manage/moderation/DomainsTable.vue:48
+#: front/src/components/mixins/Translations.vue:74
+#: front/src/components/mixins/Translations.vue:75
 msgctxt "Content/Moderation/*/Noun"
 msgid "Received messages"
 msgstr ""
@@ -3355,6 +3601,12 @@ msgctxt "Content/Home/Title"
 msgid "Recently added"
 msgstr "Ostatnio dodane"
 
+#: front/src/components/Home.vue:167
+#, fuzzy
+msgctxt "Content/Home/Title"
+msgid "Recently added albums"
+msgstr "Ostatnio dodane"
+
 #: front/src/components/library/Home.vue:11
 msgctxt "Content/Home/Title"
 msgid "Recently favorited"
@@ -3383,14 +3635,14 @@ msgctxt "Popup/*/Message.Title"
 msgid "Refresh error"
 msgstr "Odśwież"
 
-#: front/src/views/admin/library/AlbumDetail.vue:50
-#: front/src/views/admin/library/ArtistDetail.vue:49
-#: front/src/views/admin/library/TrackDetail.vue:49
+#: front/src/views/admin/library/AlbumDetail.vue:56
+#: front/src/views/admin/library/ArtistDetail.vue:54
+#: front/src/views/admin/library/TrackDetail.vue:55
 msgctxt "Content/Moderation/Button/Verb"
 msgid "Refresh from remote server"
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:127
+#: front/src/views/admin/moderation/DomainsDetail.vue:164
 msgctxt "Content/Moderation/Button.Label/Verb"
 msgid "Refresh node info"
 msgstr ""
@@ -3402,9 +3654,7 @@ msgstr "MalejÄ…co"
 
 #: front/src/components/federation/FetchButton.vue:80
 msgctxt "Popup/*/Message.Content"
-msgid ""
-"Refresh request wasn't proceed in time by our server. It will be processed "
-"later."
+msgid "Refresh request wasn't proceed in time by our server. It will be processed later."
 msgstr ""
 
 #: front/src/components/federation/FetchButton.vue:16
@@ -3427,16 +3677,13 @@ msgctxt "Popup/*/Title"
 msgid "Refreshing object from remote…"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:9
-msgctxt "Content/Signup/Form/Paragraph"
-msgid ""
-"Registration are closed on this instance, you will need an invitation code "
-"to signup."
-msgstr ""
-"Rejestracja na tej instancji jest wyłączona, potrzebujesz kodu "
-"zapraszającego aby zarejestrować się."
+#: front/src/components/About.vue:86
+#, fuzzy
+msgctxt "*/*/*"
+msgid "Registrations"
+msgstr "Administracja"
 
-#: front/src/components/manage/users/UsersTable.vue:71
+#: front/src/components/manage/users/UsersTable.vue:72
 msgctxt "Content/Admin/Table, User role"
 msgid "Regular user"
 msgstr "zwykły użytkownik"
@@ -3461,8 +3708,8 @@ msgid "Rejected"
 msgstr "Odrzucono"
 
 #: front/src/components/manage/library/AlbumsTable.vue:43
-#: front/src/components/mixins/Translations.vue:44 src/edits.js:28
-#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:54 src/edits.js:43
+#: front/src/components/mixins/Translations.vue:55
 msgctxt "Content/*/*/Noun"
 msgid "Release date"
 msgstr "Ostatnia aktualizacja:"
@@ -3472,6 +3719,11 @@ msgctxt "Content/Library/Paragraph"
 msgid "Remaining storage space"
 msgstr ""
 
+#: front/src/views/Notifications.vue:18 src/views/Notifications.vue:52
+msgctxt "Content/Notifications/Label"
+msgid "Remind me in:"
+msgstr ""
+
 #: front/src/views/content/remote/Home.vue:6
 msgctxt "Content/Library/Title/Noun"
 msgid "Remote libraries"
@@ -3479,12 +3731,8 @@ msgstr "Zdalne biblioteki"
 
 #: front/src/views/content/remote/Home.vue:7
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Remote libraries are owned by other users on the network. You can access "
-"them as long as they are public or you are granted access."
-msgstr ""
-"Zdalne biblioteki należą do innych użytkowników sieci. Możesz uzyskać do "
-"nich dostęp jeżeli są publiczne lub został Ci on przyznany."
+msgid "Remote libraries are owned by other users on the network. You can access them as long as they are public or you are granted access."
+msgstr "Zdalne biblioteki należą do innych użytkowników sieci. Możesz uzyskać do nich dostęp jeżeli są publiczne lub został Ci on przyznany."
 
 #: front/src/components/library/radios/Filter.vue:59
 msgctxt "Content/Radio/Button.Label/Verb"
@@ -3501,6 +3749,13 @@ msgctxt "Content/Moderation/Button.Label"
 msgid "Remove filter"
 msgstr "Usuń awatar"
 
+#: front/src/components/manage/moderation/DomainsTable.vue:198
+#: front/src/views/admin/moderation/DomainsDetail.vue:39
+#, fuzzy
+msgctxt "Content/Moderation/Action/Verb"
+msgid "Remove from allow-list"
+msgstr "Usuń z ulubionych"
+
 #: front/src/components/favorites/TrackFavoriteIcon.vue:26
 msgctxt "Content/Track/Icon.Tooltip/Verb"
 msgid "Remove from favorites"
@@ -3508,46 +3763,104 @@ msgstr "Usuń z ulubionych"
 
 #: front/src/views/content/libraries/Quota.vue:38
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded but yet to be processed tracks completely, adding the "
-"corresponding data to your quota."
-msgstr ""
-"Ta opcja usunie utwory które zostały wysłane, ale nie zostały jeszcze "
-"przetworzone. Bezpowrotnie usunie te pliki i zostanie Ci przywrócona "
-"odpowiednia przestrzeń."
+msgid "Removes uploaded but yet to be processed tracks completely, adding the corresponding data to your quota."
+msgstr "Ta opcja usunie utwory które zostały wysłane, ale nie zostały jeszcze przetworzone. Bezpowrotnie usunie te pliki i zostanie Ci przywrócona odpowiednia przestrzeń."
 
 #: front/src/views/content/libraries/Quota.vue:64
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded tracks skipped during the import processes completely, "
-"adding the corresponding data to your quota."
-msgstr ""
-"Ta opcja usunie utwory które zostały wysłane, lecz zostały z jakiegoś powodu"
-" pominięte w procesie importowania. Bezpowrotnie usunie te pliki i zostanie "
-"Ci przywrócona odpowiednia przestrzeń."
+msgid "Removes uploaded tracks skipped during the import processes completely, adding the corresponding data to your quota."
+msgstr "Ta opcja usunie utwory które zostały wysłane, lecz zostały z jakiegoś powodu pominięte w procesie importowania. Bezpowrotnie usunie te pliki i zostanie Ci przywrócona odpowiednia przestrzeń."
 
 #: front/src/views/content/libraries/Quota.vue:90
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded tracks that could not be processed by the server "
-"completely, adding the corresponding data to your quota."
+msgid "Removes uploaded tracks that could not be processed by the server completely, adding the corresponding data to your quota."
+msgstr "Ta opcja usunie utwory które zostały wysłane, ale nie zostały jeszcze przetworzone. Bezpowrotnie usunie te pliki i zostanie Ci przywrócona odpowiednia przestrzeń."
+
+#: front/src/components/audio/PlayButton.vue:94
+#, fuzzy
+msgctxt "*/Queue/Dropdown/Button/Title"
+msgid "Replace current queue"
+msgstr "Dodaj do kolejki"
+
+#: front/src/components/mixins/Report.vue:6 src/components/mixins/Report.vue:7
+msgctxt "*/Moderation/*/Verb"
+msgid "Report @%{ username }…"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:5
+msgctxt "Content/Moderation/Card/Short"
+msgid "Report %{ id }"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:139
+msgctxt "*/Moderation/Message"
+msgid "Report successfully submitted, thank you"
+msgstr ""
+
+#: front/src/components/mixins/Report.vue:36
+#: src/components/mixins/Report.vue:37
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this album…"
+msgstr "Odtwórz utwór"
+
+#: front/src/components/mixins/Report.vue:50
+#: src/components/mixins/Report.vue:51
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this artist…"
+msgstr "Odtwórz utwór"
+
+#: front/src/components/mixins/Report.vue:72
+#: src/components/mixins/Report.vue:73
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this library…"
+msgstr "Czy chcesz usunąć tę bibliotekę?"
+
+#: front/src/components/mixins/Report.vue:61
+#: src/components/mixins/Report.vue:62
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this playlist…"
+msgstr "Dodaj do tej playlisty"
+
+#: front/src/components/mixins/Report.vue:23
+#: src/components/mixins/Report.vue:24
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this track…"
+msgstr "Odtwórz utwór"
+
+#: front/src/components/audio/PlayButton.vue:95
+msgctxt "*/Moderation/*/Button/Label,Verb"
+msgid "Report…"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:117
+msgctxt "Content/*/*/Short"
+msgid "Reported object"
 msgstr ""
-"Ta opcja usunie utwory które zostały wysłane, ale nie zostały jeszcze "
-"przetworzone. Bezpowrotnie usunie te pliki i zostanie Ci przywrócona "
-"odpowiednia przestrzeń."
 
-#: front/src/components/auth/SubsonicTokenForm.vue:33
-#: front/src/components/auth/SubsonicTokenForm.vue:36
+#: front/src/views/admin/moderation/Base.vue:5
+#: front/src/views/admin/moderation/ReportsList.vue:3
+#: front/src/views/admin/moderation/ReportsList.vue:208
+msgctxt "*/Moderation/*/Noun"
+msgid "Reports"
+msgstr ""
+
+#: front/src/components/auth/SubsonicTokenForm.vue:38
+#: front/src/components/auth/SubsonicTokenForm.vue:41
 msgctxt "*/Settings/Button.Label/Verb"
 msgid "Request a new password"
 msgstr "Poproś o nowe hasło"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:34
+#: front/src/components/auth/SubsonicTokenForm.vue:39
 msgctxt "Popup/Settings/Title"
 msgid "Request a new Subsonic API password?"
 msgstr "Poprosić o nowe hasło API Subsonic?"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:42
+#: front/src/components/auth/SubsonicTokenForm.vue:47
 msgctxt "Content/Settings/Button.Label/Verb"
 msgid "Request a password"
 msgstr "Poproś o nowe hasło"
@@ -3557,35 +3870,52 @@ msgctxt "Popup/*/Loading.Title"
 msgid "Requesting a fetch…"
 msgstr ""
 
-#: front/src/components/library/EditForm.vue:82
+#: front/src/components/library/EditForm.vue:94
 msgctxt "Content/Library/Button.Label"
-msgid "Reset to initial value: %{ value }"
+msgid "Reset to initial value"
 msgstr ""
 
-#: front/src/components/auth/Login.vue:35 src/views/auth/PasswordReset.vue:4
-#: front/src/views/auth/PasswordReset.vue:53
+#: front/src/components/auth/LoginForm.vue:34
+#: src/views/auth/PasswordReset.vue:4 front/src/views/auth/PasswordReset.vue:53
 msgctxt "*/Login/*/Verb"
 msgid "Reset your password"
 msgstr "Ustaw nowe hasło"
 
+#: front/src/components/manage/moderation/ReportCard.vue:83
+#, fuzzy
+msgctxt "Content/*/*/Noun"
+msgid "Resolution date"
+msgstr "Data utworzenia"
+
+#: front/src/components/manage/moderation/ReportCard.vue:218
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Resolve"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:62
+#: front/src/views/admin/moderation/ReportsList.vue:20
+msgctxt "Content/*/*/Short"
+msgid "Resolved"
+msgstr ""
+
 #: front/src/views/content/libraries/FilesTable.vue:223
 msgctxt "Content/Library/Dropdown/Verb"
 msgid "Restart import"
 msgstr "Uruchom importowanie ponownie"
 
+#: front/src/components/library/EditForm.vue:31
+msgctxt "Content/Library/Button.Label"
+msgid "Restrict to unreviewed edits"
+msgstr ""
+
 #: front/src/components/favorites/List.vue:39
-#: src/components/library/Albums.vue:30
-#: front/src/components/library/Artists.vue:30
+#: src/components/library/Albums.vue:34
+#: front/src/components/library/Artists.vue:34
 #: src/components/library/Radios.vue:52 front/src/views/playlists/List.vue:32
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Results per page"
 msgstr "Wyniki na stronÄ™"
 
-#: front/src/components/library/EditForm.vue:31
-msgctxt "Content/Library/Button.Label"
-msgid "Retrict to unreviewed edits"
-msgstr ""
-
 #: front/src/views/auth/EmailConfirm.vue:17
 msgctxt "Content/Signup/Link/Verb"
 msgid "Return to login"
@@ -3616,52 +3946,53 @@ msgctxt "Content/Moderation/Card.Title/Noun"
 msgid "Rule"
 msgstr ""
 
-#: front/src/components/admin/SettingsGroup.vue:67
+#: front/src/components/About.vue:28 src/components/About.vue:56
+msgctxt "Content/About/Header"
+msgid "Rules"
+msgstr ""
+
+#: front/src/components/admin/SettingsGroup.vue:75
 #: front/src/components/library/radios/Builder.vue:34
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Save"
 msgstr "Zapisz"
 
-#: front/src/views/content/remote/Card.vue:175
+#: front/src/views/content/remote/Card.vue:203
 msgctxt "Content/Library/Message"
 msgid "Scan launched"
 msgstr "Uruchomiono skanowanie"
 
-#: front/src/views/content/remote/Card.vue:67
+#: front/src/views/content/remote/Card.vue:80
 msgctxt "Content/Library/Card.Button.Label/Verb"
 msgid "Scan now"
 msgstr "Odtwórz teraz"
 
-#: front/src/views/content/remote/Card.vue:35
+#: front/src/views/content/remote/Card.vue:48
 msgctxt "Content/Library/Card.List item"
 msgid "Scan pending"
 msgstr "RosnÄ…co"
 
-#: front/src/views/content/remote/Card.vue:176
+#: front/src/views/content/remote/Card.vue:204
 msgctxt "Content/Library/Message"
 msgid "Scan skipped (previous scan is too recent)"
 msgstr "Skanowanie pominęte (poprzednie skanowanie było zbyt wcześnie)"
 
-#: front/src/views/content/remote/Card.vue:47
+#: front/src/views/content/remote/Card.vue:60
 msgctxt "Content/Library/Card.List item"
 msgid "Scanned"
 msgstr "Uruchomiono skanowanie"
 
-#: front/src/views/content/remote/Card.vue:51
+#: front/src/views/content/remote/Card.vue:64
 msgctxt "Content/Library/Card.List item"
 msgid "Scanned with errors"
 msgstr "Zeskanowano z błędami"
 
-#: front/src/views/content/remote/Card.vue:39
+#: front/src/views/content/remote/Card.vue:52
 msgctxt "Content/Library/Card.List item"
 msgid "Scanning… (%{ progress }%)"
-msgstr "Skanowanie... (%{ progress }%)"
+msgstr "Skanowanie… (%{ progress }%)"
 
 #: front/src/components/auth/ApplicationForm.vue:22
-msgctxt "Content/Applications/Input.Label/Noun"
-msgid "Scopes"
-msgstr ""
-
 #: front/src/components/auth/Settings.vue:226
 msgctxt "Content/*/*/Noun"
 msgid "Scopes"
@@ -3674,12 +4005,14 @@ msgstr ""
 #: front/src/components/manage/library/ArtistsTable.vue:5
 #: front/src/components/manage/library/EditsCardList.vue:6
 #: front/src/components/manage/library/LibrariesTable.vue:5
+#: front/src/components/manage/library/TagsTable.vue:5
 #: front/src/components/manage/library/TracksTable.vue:5
 #: front/src/components/manage/library/UploadsTable.vue:5
 #: front/src/components/manage/moderation/AccountsTable.vue:5
 #: front/src/components/manage/moderation/DomainsTable.vue:5
 #: front/src/components/manage/users/InvitationsTable.vue:5
 #: front/src/components/manage/users/UsersTable.vue:5
+#: front/src/views/admin/moderation/ReportsList.vue:8
 #: front/src/views/content/libraries/FilesTable.vue:5
 #: src/views/playlists/List.vue:13
 msgctxt "Content/Search/Input.Label/Noun"
@@ -3692,6 +4025,7 @@ msgid "Search a remote library"
 msgstr "Wyszukaj w zdalnej bibliotece"
 
 #: front/src/components/manage/library/EditsCardList.vue:211
+#: front/src/views/admin/moderation/ReportsList.vue:207
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by account, summary, domain…"
 msgstr "Szukaj według tytułu, wykonawcy, domeny…"
@@ -3726,7 +4060,13 @@ msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by domain, username, bio…"
 msgstr "Szukaj według nazwy użytkownika, adresu e-mail, kodu…"
 
-#: front/src/components/manage/moderation/DomainsTable.vue:151
+#: front/src/components/manage/library/TagsTable.vue:165
+#, fuzzy
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by name"
+msgstr "Szukaj według nazwy użytkownika, adresu e-mail, nazwy…"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:168
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by name…"
 msgstr "Szukaj według nazwy użytkownika, adresu e-mail, nazwy…"
@@ -3741,12 +4081,12 @@ msgctxt "Content/Admin/Input.Placeholder/Verb"
 msgid "Search by username, e-mail address, code…"
 msgstr "Szukaj według nazwy użytkownika, adresu e-mail, kodu…"
 
-#: front/src/components/manage/users/UsersTable.vue:163
+#: front/src/components/manage/users/UsersTable.vue:164
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by username, e-mail address, name…"
 msgstr "Szukaj według nazwy użytkownika, adresu e-mail, nazwy…"
 
-#: front/src/components/audio/SearchBar.vue:20
+#: front/src/components/audio/SearchBar.vue:27
 msgctxt "Sidebar/Search/Input.Placeholder"
 msgid "Search for artists, albums, tracks…"
 msgstr "Szukaj wykonawców, albumów, utworów…"
@@ -3756,16 +4096,30 @@ msgctxt "Content/Search/Title"
 msgid "Search for some music"
 msgstr "Wyszukaj trochÄ™ muzyki"
 
-#: front/src/components/library/AlbumBase.vue:57
-#: front/src/components/library/ArtistBase.vue:68
-#: front/src/components/library/TrackBase.vue:76
+#: front/src/components/library/TagsSelector.vue:6
+#, fuzzy
+msgctxt "*/Dropdown/Placeholder/Verb"
+msgid "Search for tags…"
+msgstr "Szukaj według nazwy użytkownika, adresu e-mail, nazwy…"
+
+#: front/src/components/library/AlbumBase.vue:66
+#: front/src/components/library/ArtistBase.vue:77
+#: front/src/components/library/TrackBase.vue:82
+#, fuzzy
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Search on Discogs"
+msgstr "Wyszukaj trochÄ™ muzyki"
+
+#: front/src/components/library/AlbumBase.vue:58
+#: front/src/components/library/ArtistBase.vue:69
+#: front/src/components/library/TrackBase.vue:74
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Search on Wikipedia"
 msgstr "Szukaj na Wikipedii"
 
 #: front/src/components/library/Library.vue:35
-#: src/views/admin/library/Base.vue:32
-#: front/src/views/admin/moderation/Base.vue:22
+#: src/views/admin/library/Base.vue:35
+#: front/src/views/admin/moderation/Base.vue:44
 #: src/views/admin/users/Base.vue:21 front/src/views/content/Base.vue:19
 msgctxt "Menu/*/Hidden text"
 msgid "Secondary menu"
@@ -3776,6 +4130,26 @@ msgctxt "Content/Admin/Menu.Title"
 msgid "Sections"
 msgstr "Sekcje"
 
+#: front/src/components/ShortcutsModal.vue:108
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek backwards 30s"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:100
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek backwards 5s"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:112
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek forwards 30s"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:104
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek forwards 5s"
+msgstr ""
+
 #: front/src/components/library/radios/Builder.vue:46
 msgctxt "Content/Radio/Dropdown.Placeholder/Verb"
 msgid "Select a filter"
@@ -3795,9 +4169,14 @@ msgctxt "Content/*/Link/Verb"
 msgid "Select only current page"
 msgstr "Zaznacz tylko obecnÄ… stronÄ™"
 
-#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:108
-#: front/src/components/manage/users/UsersTable.vue:181
-#: front/src/views/admin/moderation/AccountsDetail.vue:506
+#: front/src/components/Home.vue:43
+msgctxt "Content/Home/Link"
+msgid "Server rules"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:112
+#: front/src/components/manage/users/UsersTable.vue:182
+#: front/src/views/admin/moderation/AccountsDetail.vue:526
 msgctxt "*/*/*/Noun"
 msgid "Settings"
 msgstr "Ustawienia"
@@ -3819,18 +4198,25 @@ msgstr "Udostępnij odnośnik"
 
 #: front/src/views/content/libraries/Detail.vue:15
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Share this link with other users so they can request access to your library."
-msgstr ""
-"Podziel się tym odnośnikiem z innymi użytkownikami, aby mogli poprosić od "
-"dostęp do Twojej biblioteki."
+msgid "Share this link with other users so they can request access to your library."
+msgstr "Podziel się tym odnośnikiem z innymi użytkownikami, aby mogli poprosić od dostęp do Twojej biblioteki."
 
 #: front/src/views/content/libraries/Detail.vue:14
-#: front/src/views/content/remote/Card.vue:77
+#: front/src/views/content/remote/Card.vue:90
 msgctxt "Content/Library/Title"
 msgid "Sharing link"
 msgstr "Odnośnik do udostępnienia"
 
+#: front/src/components/audio/EmbedWizard.vue:5
+msgctxt "Content/Embed/Message"
+msgid "Sharing will not work because this pod doesn't allow anonymous users to access content."
+msgstr ""
+
+#: front/src/components/About.vue:156
+msgctxt "*/*/*/Verb"
+msgid "Show"
+msgstr ""
+
 #: front/src/components/audio/album/Card.vue:38
 #, fuzzy
 msgctxt "Content/Album/Card.Link/Verb"
@@ -3840,11 +4226,11 @@ msgstr[0] "Pokaż %{ count } utwór więcej"
 msgstr[1] "Pokaż %{ count } utwory więcej"
 msgstr[2] "Pokaż %{ count } utworów więcej"
 
-#: front/src/components/audio/artist/Card.vue:30
+#: front/src/components/tags/List.vue:11
 #, fuzzy
-msgctxt "Content/Artist/Card.Link"
-msgid "Show 1 more album"
-msgid_plural "Show %{ count } more albums"
+msgctxt "Content/*/Button/Label/Verb"
+msgid "Show 1 more tag"
+msgid_plural "Show %{ count } more tags"
 msgstr[0] "Pokaż 1 kolejny album"
 msgstr[1] "Pokaż %{ count } kolejne albumy"
 msgstr[2] "Pokaż %{ count } kolejnych albumów"
@@ -3854,17 +4240,28 @@ msgctxt "Content/Library/Button.Label"
 msgid "Show all edits"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:42
+#: front/src/components/ShortcutsModal.vue:60
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Show available keyboard shortcuts"
 msgstr ""
 
-#: front/src/views/Notifications.vue:7
+#: front/src/components/common/ExpandableDiv.vue:7
+msgctxt "*/*/Button,Label"
+msgid "Show less"
+msgstr ""
+
+#: front/src/components/common/ExpandableDiv.vue:8
+#, fuzzy
+msgctxt "*/*/Button,Label"
+msgid "Show more"
+msgstr "Pokaż 1 kolejny album"
+
+#: front/src/views/Notifications.vue:72
 msgctxt "Content/Notifications/Form.Label/Verb"
 msgid "Show read notifications"
 msgstr "Pokaż przeczytane powiadomienia"
 
-#: front/src/components/forms/PasswordInput.vue:26
+#: front/src/components/forms/PasswordInput.vue:42
 msgctxt "Content/Settings/Button.Tooltip/Verb"
 msgid "Show/hide password"
 msgstr "Pokaż/ukryj hasło"
@@ -3873,59 +4270,67 @@ msgstr "Pokaż/ukryj hasło"
 #: front/src/components/manage/library/ArtistsTable.vue:84
 #: front/src/components/manage/library/EditsCardList.vue:72
 #: front/src/components/manage/library/LibrariesTable.vue:110
+#: front/src/components/manage/library/TagsTable.vue:79
 #: front/src/components/manage/library/TracksTable.vue:95
 #: front/src/components/manage/library/UploadsTable.vue:144
 #: front/src/components/manage/moderation/AccountsTable.vue:88
-#: front/src/components/manage/moderation/DomainsTable.vue:74
+#: front/src/components/manage/moderation/DomainsTable.vue:85
 #: front/src/components/manage/users/InvitationsTable.vue:76
-#: front/src/components/manage/users/UsersTable.vue:87
+#: front/src/components/manage/users/UsersTable.vue:88
 #: front/src/views/content/libraries/FilesTable.vue:117
 msgctxt "Content/*/Paragraph"
 msgid "Showing results %{ start }-%{ end } on %{ total }"
 msgstr "Wyświetlanie wyników %{ start }-%{ end } z %{ total }"
 
-#: front/src/components/ShortcutsModal.vue:83
+#: front/src/components/ShortcutsModal.vue:140
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Shuffle queue"
 msgstr "Wymieszaj kolejkÄ™"
 
-#: front/src/components/audio/Player.vue:641
+#: front/src/components/audio/Player.vue:667
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Shuffle your queue"
 msgstr "Wymieszaj kolejkÄ™"
 
-#: front/src/components/auth/Signup.vue:97
+#: front/src/components/Home.vue:103
+#, fuzzy
+msgctxt "*/Signup/Title"
+msgid "Sign up"
+msgstr "Rejestracja"
+
+#: front/src/views/auth/Signup.vue:37
 msgctxt "*/Signup/Title"
 msgid "Sign Up"
 msgstr "Rejestracja"
 
+#: front/src/components/Home.vue:107
+msgctxt "Content/Home/Paragraph"
+msgid "Sign up now to keep a track of your favorites, create playlists, discover new content and much more!"
+msgstr ""
+
 #: front/src/components/manage/users/UsersTable.vue:40
 msgctxt "Content/Admin/Table.Label/Short, Noun (Value is a date)"
 msgid "Sign-up"
 msgstr "Rejestracja"
 
-#: front/src/components/mixins/Translations.vue:57
-#: front/src/views/admin/moderation/AccountsDetail.vue:197
-#: front/src/components/mixins/Translations.vue:58
+#: front/src/components/mixins/Translations.vue:69
+#: front/src/views/admin/moderation/AccountsDetail.vue:198
+#: front/src/components/mixins/Translations.vue:70
 msgctxt "Content/Admin/Table.Label/Noun"
 msgid "Sign-up date"
 msgstr "Data rejestracji"
 
+#: front/src/components/library/FileUpload.vue:94
+#: front/src/components/library/TrackDetail.vue:39
 #: front/src/components/manage/library/UploadsTable.vue:65
+#: front/src/components/mixins/Translations.vue:66
 #: front/src/views/admin/library/UploadDetail.vue:219
+#: front/src/views/content/libraries/FilesTable.vue:61
+#: front/src/components/mixins/Translations.vue:67
 msgctxt "Content/*/*/Noun"
 msgid "Size"
 msgstr "Rozmiar"
 
-#: front/src/components/library/FileUpload.vue:94
-#: front/src/components/library/TrackDetail.vue:39
-#: front/src/components/mixins/Translations.vue:54
-#: front/src/views/content/libraries/FilesTable.vue:61
-#: front/src/components/mixins/Translations.vue:55
-msgctxt "Content/Library/*/in MB"
-msgid "Size"
-msgstr "Rozmiar"
-
 #: front/src/components/manage/library/UploadsTable.vue:24
 #: front/src/components/mixins/Translations.vue:24
 #: front/src/views/content/libraries/FilesTable.vue:15
@@ -3939,7 +4344,7 @@ msgctxt "Content/Library/Label"
 msgid "Skipped files"
 msgstr "Pominięte pliki"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:89
+#: front/src/views/admin/moderation/DomainsDetail.vue:126
 msgctxt "Content/Moderation/Table.Label"
 msgid "Software"
 msgstr ""
@@ -3954,87 +4359,65 @@ msgctxt "Content/*/Paragraph"
 msgid "Sorry, the page you asked for does not exist:"
 msgstr "Przepraszamy, strona której szukasz nie istnieje:"
 
-#: front/src/components/Footer.vue:49
+#: front/src/components/Footer.vue:57
 msgctxt "Footer/*/List item.Link"
 msgid "Source code"
 msgstr "Kod źródłowy"
 
 #: front/src/components/auth/Profile.vue:23
-#: front/src/components/manage/users/UsersTable.vue:70
+#: front/src/components/manage/users/UsersTable.vue:71
 msgctxt "Content/Profile/User role"
 msgid "Staff member"
 msgstr "Członek administracji"
 
-#: front/src/components/audio/PlayButton.vue:23
+#: front/src/components/audio/PlayButton.vue:27
 #: src/components/radios/Button.vue:4
 msgctxt "*/Queue/Button.Label/Short, Verb"
 msgid "Start radio"
 msgstr "Zatrzymaj radio"
 
-#: front/src/views/admin/Settings.vue:86
-msgctxt "Content/Admin/Menu"
+#: front/src/components/About.vue:170 src/components/Home.vue:53
+#: front/src/views/admin/Settings.vue:87
+#, fuzzy
+msgctxt "Content/Home/Header"
 msgid "Statistics"
 msgstr "Statystyki"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:490
+#: front/src/views/admin/moderation/AccountsDetail.vue:510
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this account"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this account"
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:371
+#: front/src/views/admin/moderation/DomainsDetail.vue:418
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this domain"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this domain"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:329
-#: front/src/views/admin/library/ArtistDetail.vue:328
-#: front/src/views/admin/library/LibraryDetail.vue:316
-#: front/src/views/admin/library/TrackDetail.vue:371
+#: front/src/views/admin/library/AlbumDetail.vue:346
+#: front/src/views/admin/library/ArtistDetail.vue:345
+#: front/src/views/admin/library/LibraryDetail.vue:356
+#: front/src/views/admin/library/TagDetail.vue:210
+#: front/src/views/admin/library/TrackDetail.vue:389
 #: front/src/views/admin/library/UploadDetail.vue:335
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this object"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this object"
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:115
-msgctxt "Content/Moderation/Table.Label (Value is Error message)"
-msgid "Status"
-msgstr "Stan"
-
 #: front/src/components/library/FileUpload.vue:95
-msgctxt "Content/Library/Table.Label (Value is Uploading/Uploaded/Error)"
-msgid "Status"
-msgstr "Stan"
-
-#: front/src/views/content/libraries/Detail.vue:28
-msgctxt "Content/Library.Federation/Table.Label (Value is Approved/Rejected)"
-msgid "Status"
-msgstr "Stan"
-
+#: front/src/components/manage/library/EditsCardList.vue:12
+#: front/src/components/manage/moderation/ReportCard.vue:57
 #: front/src/components/manage/users/InvitationsTable.vue:17
 #: front/src/components/manage/users/InvitationsTable.vue:39
-msgctxt "Content/Admin/*/Noun (Value is Used/Not used)"
-msgid "Status"
-msgstr "Stan"
-
 #: front/src/components/manage/users/UsersTable.vue:43
-msgctxt "Content/Admin/Table.Label/Noun (Value is Regular user/Admin)"
-msgid "Status"
-msgstr "Stan"
-
-#: front/src/components/manage/library/EditsCardList.vue:12
-msgctxt ""
-"Content/Search/Dropdown.Label (Value is All/Pending "
-"review/Approved/Rejected)"
+#: front/src/views/admin/moderation/DomainsDetail.vue:152
+#: front/src/views/admin/moderation/ReportsList.vue:14
+#: front/src/views/content/libraries/Detail.vue:28
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Status"
 msgstr "Stan"
 
-#: front/src/components/Sidebar.vue:174 src/components/radios/Button.vue:3
+#: front/src/components/Sidebar.vue:178 src/components/radios/Button.vue:3
 msgctxt "*/Player/Button.Label/Short, Verb"
 msgid "Stop radio"
 msgstr "Zatrzymaj radio"
@@ -4044,7 +4427,7 @@ msgctxt "*/*/Button.Label/Verb"
 msgid "Submit"
 msgstr "Wyślij"
 
-#: front/src/components/library/EditForm.vue:98
+#: front/src/components/library/EditForm.vue:110
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Submit and apply edit"
 msgstr ""
@@ -4054,12 +4437,24 @@ msgctxt "Content/Library/Button.Label"
 msgid "Submit another edit"
 msgstr ""
 
-#: front/src/components/library/EditForm.vue:99
+#: front/src/components/moderation/ReportModal.vue:64
+#, fuzzy
+msgctxt "Popup/*/Button.Label"
+msgid "Submit report"
+msgstr "Wyślij"
+
+#: front/src/components/library/EditForm.vue:111
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Submit suggestion"
 msgstr ""
 
-#: front/src/views/admin/Settings.vue:85
+#: front/src/components/manage/moderation/ReportCard.vue:17
+#, fuzzy
+msgctxt "Content/Moderation/*"
+msgid "Submitted by"
+msgstr "Wyślij"
+
+#: front/src/views/admin/Settings.vue:86
 msgctxt "Content/Admin/Menu"
 msgid "Subsonic"
 msgstr "Subsonic"
@@ -4099,16 +4494,21 @@ msgctxt "Content/Library/Tab.Title/Short"
 msgid "Summary"
 msgstr "Podsumowanie"
 
-#: front/src/components/library/EditForm.vue:87
+#: front/src/components/library/EditForm.vue:99
 msgctxt "*/*/*"
 msgid "Summary (optional)"
 msgstr ""
 
-#: front/src/components/Footer.vue:39
+#: front/src/components/Footer.vue:47
 msgctxt "Footer/*/Listitem.Link"
 msgid "Support forum"
 msgstr ""
 
+#: front/src/views/Notifications.vue:10
+msgctxt "Content/Notifications/Header"
+msgid "Support this Funkwhale pod"
+msgstr ""
+
 #: front/src/components/library/FileUpload.vue:85
 msgctxt "Content/Library/Paragraph"
 msgid "Supported extensions: %{ extensions }"
@@ -4119,25 +4519,47 @@ msgctxt "Content/Playlist/Paragraph"
 msgid "Syncing changes to server…"
 msgstr "Synchronizowanie zmian z serwerem…"
 
-#: front/src/components/audio/EmbedWizard.vue:25
+#: front/src/components/audio/SearchBar.vue:35
+msgctxt "*/*/*/Noun"
+msgid "Tag"
+msgstr ""
+
+#: front/src/views/admin/library/TagDetail.vue:61
+#, fuzzy
+msgctxt "Content/Moderation/Title"
+msgid "Tag data"
+msgstr "Tytuł utworu"
+
+#: front/src/components/library/Albums.vue:23
+#: src/components/library/Artists.vue:15
+#: front/src/views/admin/library/Base.vue:23
+#: src/views/admin/library/TagsList.vue:24 front/src/edits.js:24
+#: src/edits.js:50 src/edits.js:91 src/entities.js:120
+msgctxt "*/*/*/Noun"
+msgid "Tags"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:44
+#: front/src/components/mixins/Translations.vue:45
+#, fuzzy
+msgctxt "Content/Moderation/Dropdown"
+msgid "Takedown request"
+msgstr "Oczekujące prośby o możliwość śledzenia"
+
+#: front/src/components/About.vue:35 src/components/About.vue:61
+msgctxt "Content/About/Header"
+msgid "Terms and privacy policy"
+msgstr ""
+
+#: front/src/components/audio/EmbedWizard.vue:35
 #: front/src/components/common/CopyInput.vue:3
 msgctxt "Content/*/Paragraph"
 msgid "Text copied to clipboard!"
 msgstr "Skopiowano tekst do schowka!"
 
-#: front/src/components/Home.vue:26
-msgctxt "Content/Home/Paragraph"
-msgid ""
-"That's simple: we loved Grooveshark and we want to build something even "
-"better."
-msgstr ""
-"To proste: kochamy Grooveshark i chcemy utworzyć coś jeszcze lepszego."
-
-#: front/src/views/admin/library/AlbumDetail.vue:75
+#: front/src/views/admin/library/AlbumDetail.vue:81
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The album will be removed, as well as associated uploads, tracks, favorites "
-"and listening history. This action is irreversible."
+msgid "The album will be removed, as well as associated uploads, tracks, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/components/auth/Authorize.vue:39
@@ -4145,18 +4567,15 @@ msgctxt "Content/Auth/Paragraph"
 msgid "The application is also requesting the following unknown permissions:"
 msgstr ""
 
-#: front/src/views/admin/library/ArtistDetail.vue:74
+#: front/src/views/admin/library/ArtistDetail.vue:79
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The artist will be removed, as well as associated uploads, tracks, albums, "
-"favorites and listening history. This action is irreversible."
+msgid "The artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible."
 msgstr ""
 
-#: front/src/components/Footer.vue:53
+#: front/src/components/Footer.vue:61
 msgctxt "Footer/*/List item.Link"
 msgid "The funkwhale logo was kindly designed and provided by Francis Gading."
-msgstr ""
-"Logo Funkwhale zostało zaprojektowane i dostarczone przez Francisa Gadinga."
+msgstr "Logo Funkwhale zostało zaprojektowane i dostarczone przez Francisa Gadinga."
 
 #: front/src/components/SetInstanceModal.vue:8
 msgctxt "Popup/Instance/Error message.List item"
@@ -4165,24 +4584,17 @@ msgstr ""
 
 #: front/src/views/content/libraries/Form.vue:34
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"The library and all its tracks will be deleted. This can not be undone."
-msgstr ""
-"Biblioteka i wszystkie utwory z niej zostaną usunięte. To działanie jest "
-"nieodwracalne."
+msgid "The library and all its tracks will be deleted. This can not be undone."
+msgstr "Biblioteka i wszystkie utwory z niej zostaną usunięte. To działanie jest nieodwracalne."
 
 #: front/src/views/admin/library/LibraryDetail.vue:61
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The library will be removed, as well as associated uploads, and follows. "
-"This action is irreversible."
+msgid "The library will be removed, as well as associated uploads, and follows. This action is irreversible."
 msgstr ""
 
 #: front/src/components/library/ImportStatusModal.vue:140
 msgctxt "Popup/Import/Error.Label"
-msgid ""
-"The metadata included in the file is invalid or some mandatory fields are "
-"missing."
+msgid "The metadata included in the file is invalid or some mandatory fields are missing."
 msgstr ""
 
 #: front/src/components/library/FileUpload.vue:38
@@ -4195,14 +4607,15 @@ msgctxt "Sidebar/Player/Error message.Paragraph"
 msgid "The next track will play automatically in a few seconds…"
 msgstr ""
 
-#: front/src/components/Home.vue:116
-msgctxt "Content/Home/List item"
-msgid ""
-"The plaform is free and open-source, you can install it and modify it "
-"without worries"
+#: front/src/components/manage/moderation/NotesThread.vue:27
+msgctxt "Content/Moderation/Paragraph"
+msgid "The note will be removed. This action is irreversible."
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:120
+msgctxt "Content/Moderation/Message"
+msgid "The object associated with this report was deleted."
 msgstr ""
-"Platforma jest wolna i otwartoźródłowa, każdy może bez zmartwień "
-"zainstalować i modyfikować ją"
 
 #: front/src/components/playlists/Form.vue:14
 msgctxt "Content/Playlist/Error message.Title"
@@ -4216,46 +4629,42 @@ msgstr ""
 
 #: front/src/components/federation/FetchButton.vue:13
 msgctxt "Popup/*/Message.Content"
-msgid ""
-"The remote server answered, but returned data was unsupported by Funkwhale."
+msgid "The remote server answered, but returned data was unsupported by Funkwhale."
 msgstr ""
 
 #: front/src/components/federation/FetchButton.vue:44
 msgctxt "*/*/Error"
-msgid "The remote server didn't answered fast enough"
+msgid "The remote server didn't respond quickly enough"
 msgstr ""
 
 #: front/src/components/federation/FetchButton.vue:50
 msgctxt "*/*/Error"
-msgid "The return server returned invalid JSON or JSON-LD data"
+msgid "The remote server returned invalid JSON or JSON-LD data"
 msgstr ""
 
 #: front/src/components/manage/library/AlbumsTable.vue:189
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected albums will be removed, as well as associated tracks, uploads, "
-"favorites and listening history. This action is irreversible."
+msgid "The selected albums will be removed, as well as associated tracks, uploads, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/components/manage/library/ArtistsTable.vue:179
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected artist will be removed, as well as associated uploads, tracks, "
-"albums, favorites and listening history. This action is irreversible."
+msgid "The selected artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/components/manage/library/LibrariesTable.vue:206
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected library will be removed, as well as associated uploads and "
-"follows. This action is irreversible."
+msgid "The selected library will be removed, as well as associated uploads and follows. This action is irreversible."
+msgstr ""
+
+#: front/src/components/manage/library/TagsTable.vue:180
+msgctxt "Popup/*/Paragraph"
+msgid "The selected tag will be removed and unlinked with existing content, if any. This action is irreversible."
 msgstr ""
 
 #: front/src/components/manage/library/TracksTable.vue:189
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected tracks will be removed, as well as associated uploads, "
-"favorites and listening history. This action is irreversible."
+msgid "The selected tracks will be removed, as well as associated uploads, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/components/manage/library/UploadsTable.vue:256
@@ -4275,8 +4684,12 @@ msgstr "API Subsonic nie jest dostępne na tej instancji Funkwhale."
 
 #: front/src/components/library/EditCard.vue:96
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"The suggestion will be completely removed, this action is irreversible."
+msgid "The suggestion will be completely removed, this action is irreversible."
+msgstr ""
+
+#: front/src/views/admin/library/TagDetail.vue:44
+msgctxt "Content/Moderation/Paragraph"
+msgid "The tag will be removed and unlinked from any existing entity. This action is irreversible."
 msgstr ""
 
 #: front/src/components/playlists/PlaylistModal.vue:34
@@ -4289,11 +4702,9 @@ msgctxt "Sidebar/Player/Error message.Title"
 msgid "The track cannot be loaded"
 msgstr ""
 
-#: front/src/views/admin/library/TrackDetail.vue:74
+#: front/src/views/admin/library/TrackDetail.vue:80
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The track will be removed, as well as associated uploads, favorites and "
-"listening history. This action is irreversible."
+msgid "The track will be removed, as well as associated uploads, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/views/admin/library/UploadDetail.vue:68
@@ -4309,9 +4720,7 @@ msgstr "Wysyłane pliki muzyczne są w formacie OGG, FLAC lub MP3"
 #: front/src/views/content/Home.vue:4
 msgctxt "Content/Library/Paragraph"
 msgid "There are various ways to grab new content and make it available here."
-msgstr ""
-"Oferujemy różne sposoby zdobywania nowej zawartości i udostępniania jej "
-"tutaj"
+msgstr "Oferujemy różne sposoby zdobywania nowej zawartości i udostępniania jej tutaj"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:66
 msgctxt "Popup/Moderation/Paragraph"
@@ -4328,23 +4737,36 @@ msgctxt "Content/Artist/Paragraph"
 msgid "This artist is present in the following libraries:"
 msgstr "Ten artysta występuje w następujących bibliotekach:"
 
+#: front/src/components/manage/moderation/DomainsTable.vue:169
+#, fuzzy
+msgctxt "Content/Moderation/Popup"
+msgid "This domain is present in your allow-list"
+msgstr "Ten artysta występuje w następujących bibliotekach:"
+
 #: front/src/views/admin/moderation/AccountsDetail.vue:84
-#: front/src/views/admin/moderation/DomainsDetail.vue:48
+#: front/src/views/admin/moderation/DomainsDetail.vue:76
 msgctxt "Content/Moderation/Card.Title"
 msgid "This domain is subject to specific moderation rules"
 msgstr ""
 
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:16
+msgctxt "Content/Moderation/Card.Title"
+msgid "This entity is subject to specific moderation rules"
+msgstr ""
+
 #: front/src/views/content/Home.vue:9
 msgctxt "Content/Library/Paragraph"
 msgid "This instance offers up to %{quota} of storage space for every user."
+msgstr "Ta instancja oferuje maksymalnie %{quota} przestrzeni dla każdego użytkownika."
+
+#: front/src/components/auth/Settings.vue:300
+msgctxt "Popup/Settings/Paragraph"
+msgid "This is irreversible and will permanently remove your data from our servers. You will we immediatly logged out."
 msgstr ""
-"Ta instancja oferuje maksymalnie %{quota} przestrzeni dla każdego "
-"użytkownika."
 
 #: front/src/components/auth/Settings.vue:165
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"This is the list of applications that have access to your account data."
+msgid "This is the list of applications that have access to your account data."
 msgstr ""
 
 #: front/src/components/auth/Settings.vue:218
@@ -4360,30 +4782,22 @@ msgstr "To Ty!"
 #: front/src/views/content/libraries/Form.vue:73
 msgctxt "Content/Library/Input.Placeholder"
 msgid "This library contains my personal music, I hope you like it."
-msgstr ""
-"Ta instancja zawiera moją personalną bibliotekę, mam nadzieję że ją "
-"polubisz!"
+msgstr "Ta instancja zawiera moją personalną bibliotekę, mam nadzieję że ją polubisz!"
 
-#: front/src/views/content/remote/Card.vue:141
+#: front/src/views/content/remote/Card.vue:169
 msgctxt "Content/Library/Card.Help text"
-msgid ""
-"This library is private and your approval from its owner is needed to access"
-" its content"
+msgid "This library is private and your approval from its owner is needed to access its content"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:142
+#: front/src/views/content/remote/Card.vue:170
 msgctxt "Content/Library/Card.Help text"
 msgid "This library is public and you can access its content freely"
 msgstr ""
 
 #: front/src/components/common/ActionTable.vue:47
 msgctxt "Modal/*/Paragraph"
-msgid ""
-"This may affect a lot of elements or have irreversible consequences, please "
-"double check this is really what you want."
-msgstr ""
-"Może to wpływać na wiele rzeczy, sprawdź dwukrotnie czy to na pewno to, "
-"czego chcesz."
+msgid "This may affect a lot of elements or have irreversible consequences, please double check this is really what you want."
+msgstr "Może to wpływać na wiele rzeczy, sprawdź dwukrotnie czy to na pewno to, czego chcesz."
 
 #: front/src/components/library/AlbumEdit.vue:8
 #: front/src/components/library/ArtistEdit.vue:8
@@ -4392,6 +4806,11 @@ msgctxt "Content/*/Message"
 msgid "This object is managed by another server, you cannot edit it."
 msgstr ""
 
+#: front/src/components/Home.vue:87
+msgctxt "Content/Home/Paragraph"
+msgid "This pod runs Funkwhale, a community-driven project that lets you listen and share music and audio within a decentralized, open network."
+msgstr ""
+
 #: front/src/components/library/FileUpload.vue:51
 msgctxt "Content/Library/Paragraph"
 msgid "This reference will be used to group imported files together."
@@ -4399,19 +4818,16 @@ msgstr "Te źródła zostaną wykorzystane, aby pogrubować zaimportowane pliki"
 
 #: front/src/components/mixins/Translations.vue:33
 #: front/src/components/mixins/Translations.vue:34
+#, fuzzy
 msgctxt "Content/Library/Help text"
-msgid "This track could not be processed, please it is tagged correctly"
-msgstr ""
-"Wystąpił błąd w trakcie przetwarzania tego utworu, upewnij się że posiada on"
-" poprawne metadane"
+msgid "This track could not be processed, please make sure it is tagged correctly"
+msgstr "Wystąpił błąd w trakcie przetwarzania tego utworu, upewnij się że posiada on poprawne metadane"
 
 #: front/src/components/mixins/Translations.vue:29
 #: front/src/components/mixins/Translations.vue:30
 msgctxt "Content/Library/Help text"
-msgid ""
-"This track has been uploaded, but hasn't been processed by the server yet"
-msgstr ""
-"Utwór został zaimportowany, ale jeszcze nie jest przetworzony przez serwer"
+msgid "This track has been uploaded, but hasn't been processed by the server yet"
+msgstr "Utwór został zaimportowany, ale jeszcze nie jest przetworzony przez serwer"
 
 #: front/src/components/mixins/Translations.vue:25
 #: front/src/components/mixins/Translations.vue:26
@@ -4419,7 +4835,7 @@ msgctxt "Content/Library/Help text"
 msgid "This track is already present in one of your libraries"
 msgstr "Utwór jest już w jednej z twoich bibliotek"
 
-#: front/src/components/audio/PlayButton.vue:85
+#: front/src/components/audio/PlayButton.vue:103
 msgctxt "*/Queue/Button/Title"
 msgid "This track is not available in any library you have access to"
 msgstr ""
@@ -4429,7 +4845,7 @@ msgctxt "Content/Track/Paragraph"
 msgid "This track is present in the following libraries:"
 msgstr "Ten utwór występuje w następujących bibliotekach:"
 
-#: front/src/views/playlists/Detail.vue:38
+#: front/src/views/playlists/Detail.vue:46
 msgctxt "Popup/Playlist/Paragraph"
 msgid "This will completely delete this playlist and cannot be undone."
 msgstr "To całkowicie usunie listę odtwarzania i nie może zostać cofnięte."
@@ -4439,29 +4855,29 @@ msgctxt "Popup/Radio/Paragraph"
 msgid "This will completely delete this radio and cannot be undone."
 msgstr "To bezpowrotnie usunie radio."
 
-#: front/src/components/auth/SubsonicTokenForm.vue:50
+#: front/src/components/auth/SubsonicTokenForm.vue:55
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will completely disable access to the Subsonic API using from account."
+msgid "This will completely disable access to the Subsonic API using from account."
 msgstr "To całkowicie wyłączy dostęp do API Subsonic z tego konta."
 
-#: front/src/components/auth/SubsonicTokenForm.vue:35
+#: front/src/components/manage/moderation/ReportCard.vue:359
+msgctxt "Content/Moderation/Popup,Paragraph"
+msgid "This will delete the object associated with this report and mark the report as resolved. The deletion is irreversible."
+msgstr ""
+
+#: front/src/components/auth/SubsonicTokenForm.vue:40
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will log you out from existing devices that use the current password."
+msgid "This will log you out from existing devices that use the current password."
 msgstr "To wyloguje Cię z urządzeń na których jesteś obecnie zalogowany."
 
 #: front/src/components/auth/Settings.vue:253
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will permanently delete the application and all the associated tokens."
+msgid "This will permanently delete the application and all the associated tokens."
 msgstr "To całkowicie usunie listę odtwarzania i nie może zostać cofnięte."
 
 #: front/src/components/auth/Settings.vue:194
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will prevent this application from accessing the service on your "
-"behalf."
+msgid "This will prevent this application from accessing the service on your behalf."
 msgstr ""
 
 #: front/src/components/playlists/Editor.vue:54
@@ -4469,43 +4885,44 @@ msgctxt "Popup/Playlist/Paragraph"
 msgid "This will remove all tracks from this playlist and cannot be undone."
 msgstr "To bezpowrotnie usunie wszystkie utwory z tej listy odtwarzania."
 
-#: front/src/views/admin/library/AlbumDetail.vue:99
-#: front/src/views/admin/library/TrackDetail.vue:98 src/edits.js:21
-#: src/edits.js:39
-msgctxt "*/*/*/Noun"
-msgid "Title"
-msgstr "Tytuł"
-
 #: front/src/components/audio/track/Table.vue:7
-#: front/src/views/content/libraries/FilesTable.vue:55
-msgctxt "Content/Track/*/Noun"
-msgid "Title"
-msgstr "Tytuł"
-
 #: front/src/components/manage/library/AlbumsTable.vue:39
 #: front/src/components/manage/library/TracksTable.vue:39
-msgctxt "*/*/*"
+#: front/src/views/admin/library/AlbumDetail.vue:105
+#: front/src/views/admin/library/TrackDetail.vue:104
+#: front/src/views/content/libraries/FilesTable.vue:55 src/edits.js:36
+#: front/src/edits.js:62
+msgctxt "*/*/*/Noun"
 msgid "Title"
 msgstr "Tytuł"
 
 #: front/src/components/SetInstanceModal.vue:16
 msgctxt "Popup/Instance/Paragraph"
-msgid ""
-"To continue, please select the Funkwhale instance you want to connect to. "
-"Enter the address directly, or select one of the suggested choices."
+msgid "To continue, please select the Funkwhale instance you want to connect to. Enter the address directly, or select one of the suggested choices."
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:79
+#: front/src/components/ShortcutsModal.vue:148
+#, fuzzy
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle favorite"
+msgstr "1 polubienie"
+
+#: front/src/components/ShortcutsModal.vue:132
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle mute"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:136
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Toggle queue looping"
 msgstr ""
 
-#: front/src/views/admin/library/AlbumDetail.vue:222
-#: front/src/views/admin/library/ArtistDetail.vue:211
-#: front/src/views/admin/library/LibraryDetail.vue:200
-#: front/src/views/admin/library/TrackDetail.vue:274
-#: front/src/views/admin/moderation/AccountsDetail.vue:317
-#: front/src/views/admin/moderation/DomainsDetail.vue:225
+#: front/src/views/admin/library/AlbumDetail.vue:238
+#: front/src/views/admin/library/ArtistDetail.vue:226
+#: front/src/views/admin/library/LibraryDetail.vue:219
+#: front/src/views/admin/library/TrackDetail.vue:290
+#: front/src/views/admin/moderation/AccountsDetail.vue:329
+#: front/src/views/admin/moderation/DomainsDetail.vue:262
 msgctxt "Content/Moderation/Table.Label"
 msgid "Total size"
 msgstr "Nie użyty"
@@ -4515,20 +4932,18 @@ msgctxt "Content/Library/Card.Help text"
 msgid "Total size of the files in this library"
 msgstr "Łączny rozmiar wszystkich plików w tej bibliotece"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:105
+#: front/src/views/admin/moderation/DomainsDetail.vue:142
 msgctxt "Content/*/*"
 msgid "Total users"
 msgstr "Nie użyty"
 
-#: front/src/views/admin/library/UploadDetail.vue:199
-msgctxt "*/*/*"
-msgid "Track"
-msgstr "Utwór"
-
-#: front/src/components/audio/SearchBar.vue:27
-#: front/src/components/library/TrackBase.vue:173
+#: front/src/components/audio/SearchBar.vue:34
+#: front/src/components/library/TrackBase.vue:188
 #: front/src/components/library/TrackDetail.vue:128
 #: front/src/components/metadata/Search.vue:138
+#: src/components/mixins/Report.vue:28
+#: front/src/views/admin/library/UploadDetail.vue:199
+#: front/src/components/mixins/Report.vue:29
 msgctxt "*/*/*/Noun"
 msgid "Track"
 msgstr "Utwór"
@@ -4538,7 +4953,7 @@ msgctxt "Content/Library/Card/Short"
 msgid "Track #%{ id } - %{ name }"
 msgstr ""
 
-#: front/src/views/admin/library/TrackDetail.vue:91
+#: front/src/views/admin/library/TrackDetail.vue:97
 msgctxt "Content/Moderation/Title"
 msgid "Track data"
 msgstr "Tytuł utworu"
@@ -4548,30 +4963,28 @@ msgctxt "Content/Track/Title/Noun"
 msgid "Track information"
 msgstr "Informacje o utworze"
 
-#: front/src/components/mixins/Translations.vue:50
-#: front/src/components/mixins/Translations.vue:51
+#: front/src/components/mixins/Translations.vue:60
+#: front/src/components/mixins/Translations.vue:61
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Track name"
 msgstr "Tytuł utworu"
 
-#: front/src/components/instance/Stats.vue:54
 #: front/src/components/library/AlbumDetail.vue:19
-#: front/src/components/playlists/PlaylistModal.vue:47
-#: front/src/views/admin/moderation/AccountsDetail.vue:362
-#: front/src/views/admin/moderation/DomainsDetail.vue:274
-#: front/src/views/content/Base.vue:8 src/views/content/libraries/Detail.vue:8
-#: front/src/views/playlists/Detail.vue:51 src/views/radios/Detail.vue:34
-msgctxt "*/*/*/Noun"
-msgid "Tracks"
-msgstr "Utwory"
-
+#: front/src/components/library/TagDetail.vue:36
 #: front/src/components/manage/library/AlbumsTable.vue:42
 #: front/src/components/manage/library/ArtistsTable.vue:42
-#: front/src/views/admin/library/AlbumDetail.vue:252
-#: front/src/views/admin/library/ArtistDetail.vue:251
+#: front/src/components/manage/library/TagsTable.vue:44
+#: front/src/components/playlists/PlaylistModal.vue:47
+#: front/src/views/admin/library/AlbumDetail.vue:268
+#: front/src/views/admin/library/ArtistDetail.vue:266
 #: front/src/views/admin/library/Base.vue:14
-#: front/src/views/admin/library/LibraryDetail.vue:229
+#: front/src/views/admin/library/LibraryDetail.vue:248
+#: front/src/views/admin/library/TagDetail.vue:143
 #: front/src/views/admin/library/TracksList.vue:24
+#: front/src/views/admin/moderation/AccountsDetail.vue:374
+#: front/src/views/admin/moderation/DomainsDetail.vue:311
+#: front/src/views/content/Base.vue:8 src/views/content/libraries/Detail.vue:8
+#: front/src/views/playlists/Detail.vue:76 src/views/radios/Detail.vue:34
 msgctxt "*/*/*"
 msgid "Tracks"
 msgstr "Utwory"
@@ -4581,79 +4994,64 @@ msgctxt "Content/Artist/Title"
 msgid "Tracks by this artist"
 msgstr "Utwory tego wykonawcy"
 
-#: front/src/components/instance/Stats.vue:25
-msgctxt "Content/About/Paragraph/Unit"
-msgid "Tracks favorited"
-msgstr "Ulubione utwory"
-
-#: front/src/components/instance/Stats.vue:19
-msgctxt "Content/About/Paragraph/Unit"
-msgid "tracks listened"
-msgstr "wysłuchane utwory"
-
 #: front/src/components/library/radios/Filter.vue:44
 msgctxt "Popup/Radio/Title/Noun"
 msgid "Tracks matching filter"
 msgstr "Utwór zgodny z filtrem"
 
 #: front/src/components/library/TrackDetail.vue:57
+#: front/src/components/manage/moderation/ReportCard.vue:134
 #: front/src/views/admin/library/UploadDetail.vue:250
+#: front/src/views/admin/moderation/AccountsDetail.vue:181
 msgctxt "Content/Track/Table.Label/Noun"
 msgid "Type"
 msgstr "Rodzaj"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:180
-msgctxt "Content/Moderation/Table.Label/Noun"
-msgid "Type"
-msgstr "Rodzaj"
-
 #: front/src/components/manage/moderation/AccountsTable.vue:44
-#: front/src/components/manage/moderation/DomainsTable.vue:42
+#: front/src/components/manage/moderation/DomainsTable.vue:50
 msgctxt "Content/Moderation/Table.Label/Short"
 msgid "Under moderation rule"
 msgstr "Usuń radio"
 
-#: front/src/views/content/remote/Card.vue:109
-#: src/views/content/remote/Card.vue:114
+#: front/src/components/ShortcutsModal.vue:68
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Unfocus searchbar"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:122
+#: src/views/content/remote/Card.vue:127
 msgctxt "*/Library/Button.Label/Verb"
 msgid "Unfollow"
 msgstr "Przestań śledzić"
 
-#: front/src/views/content/remote/Card.vue:110
+#: front/src/views/content/remote/Card.vue:123
 msgctxt "Popup/Library/Title"
 msgid "Unfollow this library?"
 msgstr "Czy chcesz przestać śledzić tę bibliotekę?"
 
-#: front/src/components/About.vue:17
-msgctxt "Content/About/Paragraph"
-msgid ""
-"Unfortunately, the owners of this instance did not yet take the time to "
-"complete this page."
-msgstr ""
-"Niestety, właściciele tej instancji nie znaleźli czasu na wypełnienie tej "
-"strony."
-
 #: front/src/components/federation/FetchButton.vue:54
 #: front/src/components/federation/FetchButton.vue:55
-msgctxt "*/*/Error"
-msgid "Unknowkn error"
-msgstr ""
-
 #: front/src/components/library/ImportStatusModal.vue:144
-msgctxt "Popup/Import/Error.Label"
-msgid "Unkwown error"
+msgctxt "*/*/Error"
+msgid "Unknown error"
 msgstr ""
 
-#: front/src/components/Home.vue:37
-msgctxt "Content/Home/Title"
-msgid "Unlimited music"
-msgstr "Nieograniczona muzyka"
-
-#: front/src/components/audio/Player.vue:630
+#: front/src/components/audio/Player.vue:656
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Unmute"
 msgstr "Cofnij wyciszenie"
 
+#: front/src/components/manage/moderation/ReportCard.vue:225
+msgctxt "Content/*/Button.Label"
+msgid "Unresolve"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:67
+#: front/src/views/admin/moderation/ReportsList.vue:23
+msgctxt "Content/*/*/Short"
+msgid "Unresolved"
+msgstr ""
+
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:57
 msgctxt "Content/Moderation/Card.Button.Label/Verb"
 msgid "Update"
@@ -4717,12 +5115,8 @@ msgstr "Data wysyłania"
 
 #: front/src/components/library/FileUpload.vue:258
 msgctxt "Content/Library/Help text"
-msgid ""
-"Upload denied, ensure the file is not too big and that you have not reached "
-"your quota"
-msgstr ""
-"Błąd wysyłania, upewnij się że plik nie jest zbyt duży i że nie "
-"przekroczyłeś swojego limitu"
+msgid "Upload denied, ensure the file is not too big and that you have not reached your quota"
+msgstr "Błąd wysyłania, upewnij się że plik nie jest zbyt duży i że nie przekroczyłeś swojego limitu"
 
 #: front/src/components/library/ImportStatusModal.vue:8
 msgctxt "Popup/Import/Message"
@@ -4731,20 +5125,18 @@ msgstr ""
 
 #: front/src/views/content/Home.vue:7
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Upload music files (MP3, OGG, FLAC, etc.) from your personal library "
-"directly from your browser to enjoy them here."
-msgstr ""
-"Wyślij pliki muzyczne (mp3, ogg, flac itp.) ze swojej biblioteki "
-"bezpośrednio z przeglądarki, aby cieszyć się nimi tutaj."
+msgid "Upload music files (MP3, OGG, FLAC, etc.) from your personal library directly from your browser to enjoy them here."
+msgstr "Wyślij pliki muzyczne (mp3, ogg, flac itp.) ze swojej biblioteki bezpośrednio z przeglądarki, aby cieszyć się nimi tutaj."
 
 #: front/src/components/library/FileUpload.vue:30
 msgctxt "Content/Library/Title/Verb"
 msgid "Upload new tracks"
 msgstr "Wyślij nowe utwory"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:298
-msgctxt "Content/Moderation/Table.Label/Noun"
+#: front/src/components/About.vue:99
+#: front/src/views/admin/moderation/AccountsDetail.vue:309
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Upload quota"
 msgstr "Powierzchnia dyskowa"
 
@@ -4755,9 +5147,7 @@ msgstr "Importowanie zajęło zbyt długo, spróbuj jeszcze raz"
 
 #: front/src/components/library/ImportStatusModal.vue:14
 msgctxt "Popup/Import/Message"
-msgid ""
-"Upload was skipped because a similar one is already available in one of your"
-" libraries."
+msgid "Upload was skipped because a similar one is already available in one of your libraries."
 msgstr ""
 
 #: front/src/components/library/ImportStatusModal.vue:11
@@ -4780,35 +5170,25 @@ msgctxt "Content/Library/Table"
 msgid "Uploading…"
 msgstr "Wysyłanie"
 
+#: front/src/components/manage/library/LibrariesTable.vue:52
+#: front/src/components/manage/moderation/AccountsTable.vue:41
+#: front/src/components/mixins/Translations.vue:75
+#: front/src/views/admin/library/AlbumDetail.vue:258
+#: front/src/views/admin/library/ArtistDetail.vue:246
 #: front/src/views/admin/library/Base.vue:20
+#: front/src/views/admin/library/LibraryDetail.vue:258
+#: front/src/views/admin/library/TrackDetail.vue:310
 #: front/src/views/admin/library/UploadsList.vue:24
+#: front/src/views/admin/moderation/AccountsDetail.vue:349
+#: front/src/views/admin/moderation/DomainsDetail.vue:281
+#: front/src/components/mixins/Translations.vue:76
 msgctxt "*/*/*"
 msgid "Uploads"
 msgstr "Wyślij"
 
-#: front/src/components/manage/moderation/AccountsTable.vue:41
-#: front/src/components/mixins/Translations.vue:63
-#: front/src/views/admin/library/AlbumDetail.vue:242
-#: front/src/views/admin/library/ArtistDetail.vue:231
-#: front/src/views/admin/library/LibraryDetail.vue:239
-#: front/src/views/admin/library/TrackDetail.vue:294
-#: front/src/views/admin/moderation/AccountsDetail.vue:337
-#: front/src/views/admin/moderation/DomainsDetail.vue:244
-#: front/src/components/mixins/Translations.vue:64
-msgctxt "Content/Moderation/Table.Label/Noun"
-msgid "Uploads"
-msgstr "Wyślij"
-
-#: front/src/components/manage/library/LibrariesTable.vue:52
-msgctxt "Content/*/*/Noun"
-msgid "Uploads"
-msgstr "Wyślij"
-
 #: front/src/components/auth/ApplicationForm.vue:16
 msgctxt "Content/Applications/Help Text"
-msgid ""
-"Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is "
-"not served on the web."
+msgid "Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is not served on the web."
 msgstr ""
 
 #: front/src/components/Footer.vue:16
@@ -4816,20 +5196,29 @@ msgctxt "Footer/*/List item.Link"
 msgid "Use another instance"
 msgstr "Skorzystaj z innej instancji"
 
+#: front/src/components/Home.vue:146
+msgctxt "Content/Home/Link"
+msgid "Use Funkwhale on other devices with our apps"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:44
+msgctxt "*/*/Field,Help"
+msgid "Use this field to provide additional context to the moderator that will handle your report."
+msgstr ""
+
 #: front/src/views/auth/PasswordReset.vue:12
 msgctxt "Content/Signup/Paragraph"
-msgid ""
-"Use this form to request a password reset. We will send an email to the "
-"given address with instructions to reset your password."
+msgid "Use this form to request a password reset. We will send an email to the given address with instructions to reset your password."
+msgstr "Użyj tego formularza aby poprosić o zresetowanie hasła. Otrzymasz e-mail z instrukcjami resetowania hasła na podany adres."
+
+#: front/src/components/moderation/ReportModal.vue:18
+msgctxt "*/Moderation/Popup,Paragraph"
+msgid "Use this form to submit a report to our moderation team."
 msgstr ""
-"Użyj tego formularza aby poprosić o zresetowanie hasła. Otrzymasz e-mail z "
-"instrukcjami resetowania hasła na podany adres."
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:111
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Use this setting to temporarily enable/disable the policy without completely"
-" removing it."
+msgid "Use this setting to temporarily enable/disable the policy without completely removing it."
 msgstr ""
 
 #: front/src/components/manage/users/InvitationsTable.vue:49
@@ -4837,15 +5226,27 @@ msgctxt "Content/Admin/Table"
 msgid "Used"
 msgstr "Zużyty"
 
+#: front/src/components/Home.vue:125
+msgctxt "Content/Home/Header"
+msgid "Useful links"
+msgstr ""
+
 #: front/src/views/content/libraries/Detail.vue:26
 msgctxt "Content/Library/Table.Label"
 msgid "User"
 msgstr "Użytkownik"
 
-#: front/src/components/instance/Stats.vue:5
-msgctxt "Content/About/Title/Noun"
-msgid "User activity"
-msgstr "Aktywność użytkownika"
+#: front/src/components/Home.vue:154
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "User guides"
+msgstr "Biblioteki użytkownika"
+
+#: front/src/views/admin/Settings.vue:88
+#, fuzzy
+msgctxt "Content/Admin/Menu"
+msgid "User Interface"
+msgstr "Nazwa użytkownika"
 
 #: front/src/components/library/AlbumDetail.vue:26
 #: front/src/components/library/ArtistDetail.vue:39
@@ -4859,35 +5260,35 @@ msgctxt "Content/Radio/Title"
 msgid "User radios"
 msgstr "Radia użytkownika"
 
-#: front/src/components/auth/Signup.vue:19
+#: front/src/components/auth/SignupForm.vue:15
 #: front/src/components/manage/users/UsersTable.vue:37
-#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:71
 #: front/src/views/admin/moderation/AccountsDetail.vue:114
-#: front/src/components/mixins/Translations.vue:60
+#: front/src/components/mixins/Translations.vue:72
 msgctxt "Content/*/*"
 msgid "Username"
 msgstr "Nazwa użytkownika"
 
-#: front/src/components/auth/Login.vue:15
+#: front/src/components/auth/LoginForm.vue:11
 msgctxt "Content/Login/Input.Label/Noun"
 msgid "Username or email"
 msgstr "Nazwa użytkownika lub adres e-mail"
 
-#: front/src/components/instance/Stats.vue:13
-msgctxt "Content/About/Paragraph/Unit"
-msgid "users"
-msgstr "użytkownicy"
-
-#: front/src/components/Sidebar.vue:102
-#: front/src/components/manage/moderation/DomainsTable.vue:39
-#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/Sidebar.vue:106
+#: front/src/components/manage/moderation/DomainsTable.vue:47
+#: front/src/components/mixins/Translations.vue:73
 #: src/views/admin/Settings.vue:81 front/src/views/admin/users/Base.vue:5
 #: src/views/admin/users/UsersList.vue:21
-#: front/src/components/mixins/Translations.vue:62
+#: front/src/components/mixins/Translations.vue:74
 msgctxt "*/*/*/Noun"
 msgid "Users"
 msgstr "Użytkownicy"
 
+#: front/src/components/Home.vue:110
+msgctxt "Content/Home/Paragraph"
+msgid "Users on this pod also get %{ quota } of free storage to upload their own content!"
+msgstr ""
+
 #: front/src/components/Footer.vue:29
 msgctxt "Footer/*/Title"
 msgid "Using Funkwhale"
@@ -4905,45 +5306,60 @@ msgctxt "Content/Library/Link/Verb"
 msgid "View files"
 msgstr "Zobacz pliki"
 
-#: front/src/components/library/AlbumBase.vue:81
-#: front/src/components/library/ArtistBase.vue:92
-#: front/src/components/library/TrackBase.vue:100
-#: front/src/views/admin/library/AlbumDetail.vue:42
-#: front/src/views/admin/library/ArtistDetail.vue:41
+#: front/src/components/library/AlbumBase.vue:95
+#: front/src/components/library/ArtistBase.vue:107
+#: front/src/components/library/TrackBase.vue:111
+#: front/src/views/admin/library/AlbumDetail.vue:48
+#: front/src/views/admin/library/ArtistDetail.vue:46
 #: front/src/views/admin/library/LibraryDetail.vue:34
 #: front/src/views/admin/library/LibraryDetail.vue:45
-#: front/src/views/admin/library/TrackDetail.vue:41
+#: front/src/views/admin/library/TagDetail.vue:32
+#: front/src/views/admin/library/TrackDetail.vue:47
 #: front/src/views/admin/library/UploadDetail.vue:35
 #: front/src/views/admin/library/UploadDetail.vue:46
 #: front/src/views/admin/moderation/AccountsDetail.vue:37
 #: front/src/views/admin/moderation/AccountsDetail.vue:45
+#: front/src/views/admin/moderation/DomainsDetail.vue:30
 msgctxt "Content/Moderation/Link/Verb"
 msgid "View in Django's admin"
 msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:61
-#: front/src/components/library/ArtistBase.vue:72
-#: front/src/components/library/TrackBase.vue:80
+#: front/src/components/Home.vue:169
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "View more…"
+msgstr "Ładowanie śledzących…"
+
+#: front/src/components/library/AlbumBase.vue:62
+#: front/src/components/library/ArtistBase.vue:73
+#: front/src/components/library/TrackBase.vue:78
 #: front/src/components/metadata/ArtistCard.vue:49
 #: front/src/components/metadata/ReleaseCard.vue:53
 msgctxt "Content/*/*/Clickable, Verb"
 msgid "View on MusicBrainz"
 msgstr "Wyświetl na MusicBrainz"
 
+#: front/src/components/manage/moderation/ReportCard.vue:124
+msgctxt "Content/Moderation/Link"
+msgid "View public page"
+msgstr ""
+
 #: front/src/components/manage/library/LibrariesTable.vue:11
 #: front/src/components/manage/library/LibrariesTable.vue:51
 #: front/src/components/manage/library/UploadsTable.vue:11
 #: front/src/components/manage/library/UploadsTable.vue:63
 #: front/src/views/admin/library/LibraryDetail.vue:94
 #: front/src/views/admin/library/UploadDetail.vue:101
+#: front/src/views/content/libraries/Form.vue:18
 msgctxt "*/*/*"
 msgid "Visibility"
 msgstr "Widoczność"
 
-#: front/src/views/content/libraries/Form.vue:18
-msgctxt "Content/Library/Dropdown.Label"
-msgid "Visibility"
-msgstr "Widoczność"
+#: front/src/components/Home.vue:91
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Visit funkwhale.audio"
+msgstr "O Funkwhale"
 
 #: front/src/components/library/AlbumDetail.vue:4
 msgctxt "Content/Album/"
@@ -4955,7 +5371,13 @@ msgctxt "Popup/*/Loading.Title"
 msgid "Waiting for result…"
 msgstr "Ładowanie Twoich ulubionych…"
 
-#: front/src/components/auth/Login.vue:7
+#: front/src/components/auth/Settings.vue:285
+#, fuzzy
+msgctxt "Content/Settings/Error message.Title"
+msgid "We cannot delete your account"
+msgstr "Nie udało się zalogować Cię"
+
+#: front/src/components/auth/LoginForm.vue:3
 msgctxt "Content/Login/Error message.Title"
 msgid "We cannot log you in"
 msgstr "Nie udało się zalogować Cię"
@@ -4965,42 +5387,37 @@ msgctxt "Content/*/Error message.Title"
 msgid "We cannot save your changes"
 msgstr "Nie udało się utworzyć Ci konta"
 
-#: front/src/components/Home.vue:122
-msgctxt "Content/Home/List item"
-msgid "We do not track you or bother you with ads"
-msgstr "Nie śledzimy Cię i nie wyświetlamy Ci reklam"
+#: front/src/views/Notifications.vue:39
+msgctxt "Content/Notifications/Paragraph"
+msgid "We noticed you've been here for a while. If Funkwhale is useful to you, we could use your help to make it even better!"
+msgstr ""
 
 #: front/src/components/library/FileUpload.vue:39
 msgctxt "Content/Library/Link"
 msgid "We recommend using Picard for that purpose."
 msgstr "polecamy używać do tego Picarda"
 
-#: front/src/components/Home.vue:7
-msgctxt "Content/Home/Title"
-msgid "We think listening to music should be simple."
-msgstr "Uważamy, że słuchanie muzyki powinno być proste."
+#: front/src/components/moderation/ReportModal.vue:35
+msgctxt "*/*/Field,Help"
+msgid "We'll use this email if we need to contact you regarding this report."
+msgstr ""
 
-#: front/src/components/Home.vue:148
+#: front/src/components/Home.vue:207
 msgctxt "Head/Home/Title"
 msgid "Welcome"
 msgstr "Witaj"
 
 #: front/src/components/Home.vue:5
-msgctxt "Content/Home/Title/Verb"
-msgid "Welcome on Funkwhale"
-msgstr "Witamy na Funkwhale"
-
-#: front/src/components/Home.vue:24
-msgctxt "Content/Home/Title"
-msgid "Why funkwhale?"
-msgstr "Dlaczego funkwhale?"
+msgctxt "Content/Home/Header"
+msgid "Welcome to %{ podName }!"
+msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:13
+#: front/src/components/audio/EmbedWizard.vue:23
 msgctxt "Popup/Embed/Input.Label"
 msgid "Widget height"
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:6
+#: front/src/components/audio/EmbedWizard.vue:16
 msgctxt "Popup/Embed/Input.Label"
 msgid "Widget width"
 msgstr ""
@@ -5020,9 +5437,11 @@ msgctxt "Content/OAuth Scopes/Help Text"
 msgid "Write-only access to user data"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:129
+#: front/src/components/Sidebar.vue:133
 #: front/src/components/manage/moderation/AccountsTable.vue:72
-#: front/src/components/manage/moderation/DomainsTable.vue:58
+#: front/src/components/manage/moderation/DomainsTable.vue:12
+#: front/src/components/manage/moderation/DomainsTable.vue:69
+#: front/src/views/admin/moderation/DomainsDetail.vue:109
 msgctxt "*/*/*"
 msgid "Yes"
 msgstr "Tak"
@@ -5034,29 +5453,17 @@ msgstr "Tak, wyloguj mnie!"
 
 #: front/src/views/content/libraries/Form.vue:19
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You are able to share your library with other people, regardless of its "
-"visibility."
-msgstr ""
-"Będziesz mógł udostępniać swoją bibliotekę innym, nie zważając na jej "
-"widoczność."
+msgid "You are able to share your library with other people, regardless of its visibility."
+msgstr "Będziesz mógł udostępniać swoją bibliotekę innym, nie zważając na jej widoczność."
 
 #: front/src/components/library/FileUpload.vue:32
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You are about to upload music to your library. Before proceeding, please "
-"ensure that:"
-msgstr ""
-"Za chwilÄ™ dodasz utwory do swojej biblioteki. Zanim kontynuujesz, upewnij "
-"się że:"
+msgid "You are about to upload music to your library. Before proceeding, please ensure that:"
+msgstr "Za chwilę dodasz utwory do swojej biblioteki. Zanim kontynuujesz, upewnij się że:"
 
 #: front/src/components/SetInstanceModal.vue:12
 msgctxt "Popup/Login/Paragraph"
-msgid ""
-"You are currently connected to <a href=\"%{ url }\" target=\"_blank\">%{ "
-"hostname }&nbsp;<i class=\"external icon\"/></a>. If you continue, you will "
-"be disconnected from your current instance and all your local data will be "
-"deleted."
+msgid "You are currently connected to <a href=\"%{ url }\" target=\"_blank\">%{ hostname }&nbsp;<i class=\"external icon\"/></a>. If you continue, you will be disconnected from your current instance and all your local data will be deleted."
 msgstr ""
 
 #: front/src/components/library/ArtistDetail.vue:6
@@ -5071,9 +5478,7 @@ msgstr "JesteÅ› obecnie zalogowany jako %{ username }"
 
 #: front/src/components/library/FileUpload.vue:35
 msgctxt "Content/Library/List item"
-msgid ""
-"You are not uploading copyrighted content in a public library, otherwise you"
-" may be infringing the law"
+msgid "You are not uploading copyrighted content in a public library, otherwise you may be infringing the law"
 msgstr ""
 
 #: front/src/components/SetInstanceModal.vue:98
@@ -5082,55 +5487,35 @@ msgid "You are now using the Funkwhale instance at %{ url }"
 msgstr ""
 
 #: front/src/views/content/Home.vue:17
+#, fuzzy
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You can follow libraries from other users to get access to new music. Public"
-" libraries can be followed immediatly, while following a private library "
-"requires approval from its owner."
-msgstr ""
-"Możesz zaobserwować biblioteki innych użytkowników aby uzyskać dostęp do "
-"nowej muzyki. Publiczne biblioteki mogą być zaobserwowane natychmiast, a do "
-"zaobserwowania prywatnej biblioteki będziesz potrzebował zgody jej "
-"właściciela."
-
-#: front/src/components/Home.vue:128
-msgctxt "Content/Home/List item"
-msgid ""
-"You can invite friends and family to your instance so they can enjoy your "
-"music"
-msgstr ""
-"Możesz zaprosić znajomych i rodzinę na swoją instancję, aby mogli się "
-"cieszyć dodaną przez Ciebie muzyką"
+msgid "You can follow libraries from other users to get access to new music. Public libraries can be followed immediately, while following a private library requires approval from its owner."
+msgstr "Możesz zaobserwować biblioteki innych użytkowników aby uzyskać dostęp do nowej muzyki. Publiczne biblioteki mogą być zaobserwowane natychmiast, a do zaobserwowania prywatnej biblioteki będziesz potrzebował zgody jej właściciela."
 
 #: front/src/components/moderation/FilterModal.vue:31
 msgctxt "Popup/Moderation/Paragraph"
-msgid ""
-"You can manage and update your filters anytime from your account settings."
+msgid "You can manage and update your filters any time from your account settings."
 msgstr ""
 
 #: front/src/views/auth/EmailConfirm.vue:24
 msgctxt "Content/Signup/Paragraph"
 msgid "You can now use the service without limitations."
+msgstr "Twój adres e-mail został potwierdzony, możesz używać usługi bez ograniczeń."
+
+#: front/src/components/auth/Settings.vue:278
+msgctxt "Content/Settings/Paragraph'"
+msgid "You can permanently and irreversibly delete your account and all the associated data using the form below. You will be asked for confirmation."
 msgstr ""
-"Twój adres e-mail został potwierdzony, możesz używać usługi bez ograniczeń."
 
 #: front/src/components/library/radios/Builder.vue:7
 msgctxt "Content/Radio/Paragraph"
-msgid ""
-"You can use this interface to build your own custom radio, which will play "
-"tracks according to your criteria."
-msgstr ""
-"Możesz używać tego interfejsu aby utworzyć własne radio, które będzie "
-"odtwarzać utwory pasujące do Twoich kryteriów."
+msgid "You can use this interface to build your own custom radio, which will play tracks according to your criteria."
+msgstr "Możesz używać tego interfejsu aby utworzyć własne radio, które będzie odtwarzać utwory pasujące do Twoich kryteriów."
 
 #: front/src/components/auth/SubsonicTokenForm.vue:7
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"You can use those to enjoy your playlist and music in offline mode, on your "
-"smartphone or tablet, for instance."
-msgstr ""
-"Możesz używać tego, aby cieszyć się muzyką i swoją listą odtwarzania w "
-"trybie offline, na przykład na smartfonie i tablecie."
+msgid "You can use those to enjoy your playlist and music in offline mode, on your smartphone or tablet, for instance."
+msgstr "Możesz używać tego, aby cieszyć się muzyką i swoją listą odtwarzania w trybie offline, na przykład na smartfonie i tablecie."
 
 #: front/src/components/auth/Settings.vue:202
 msgctxt "Content/Applications/Paragraph"
@@ -5147,19 +5532,17 @@ msgctxt "Content/Moderation/Card.Title"
 msgid "You don't have any rule in place for this account."
 msgstr "Brak powiadomień do wyświetlenia!"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:39
+#: front/src/views/admin/moderation/DomainsDetail.vue:67
 msgctxt "Content/Moderation/Card.Title"
 msgid "You don't have any rule in place for this domain."
 msgstr "Brak powiadomień do wyświetlenia!"
 
 #: front/src/components/library/EditForm.vue:52
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You don't have the permission to edit this object, but you can suggest "
-"changes. Once submitted, suggestions will be reviewed before approval."
+msgid "You don't have the permission to edit this object, but you can suggest changes. Once submitted, suggestions will be reviewed before approval."
 msgstr ""
 
-#: front/src/components/Sidebar.vue:171
+#: front/src/components/Sidebar.vue:175
 msgctxt "Sidebar/Player/Title"
 msgid "You have a radio playing"
 msgstr "Odtwarzasz radio"
@@ -5171,8 +5554,7 @@ msgstr ""
 
 #: front/src/components/auth/Settings.vue:100
 msgctxt "Popup/Settings/List item"
-msgid ""
-"You will be logged out from this session and have to log in with the new one"
+msgid "You will be logged out from this session and have to log in with the new one"
 msgstr "Zostaniesz wylogowany z tej sesji i musisz zalogować się nowym hasłem"
 
 #: front/src/components/auth/Authorize.vue:51
@@ -5187,23 +5569,24 @@ msgstr ""
 
 #: front/src/components/auth/Settings.vue:71
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"You will have to update your password on your clients that use this "
-"password."
+msgid "You will have to update your password on your clients that use this password."
 msgstr "Będziesz musiał zmienić hasło na klientach używających tego hasła."
 
 #: front/src/components/moderation/FilterModal.vue:20
 msgctxt "Popup/Moderation/Paragraph"
-msgid ""
-"You will not see tracks, albums and user activity linked to this artist "
-"anymore:"
+msgid "You will not see tracks, albums and user activity linked to this artist any more:"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:13
+#: front/src/components/auth/SignupForm.vue:9
 msgctxt "Content/Signup/Form/Paragraph"
 msgid "Your account cannot be created."
 msgstr "Utworzono listÄ™ odtwarzania"
 
+#: front/src/components/auth/Settings.vue:281
+msgctxt "Content/Settings/Paragraph'"
+msgid "Your account will be deleted from our servers within a few minutes. We will also notify other servers who may have a copy of some of your data so they can proceed to deletion. Please note that some of these servers may be offline or unwilling to comply though."
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:215
 msgctxt "Content/Settings/Title/Noun"
 msgid "Your applications"
@@ -5214,6 +5597,11 @@ msgctxt "Content/Settings/Error message.Title"
 msgid "Your avatar cannot be saved"
 msgstr ""
 
+#: front/src/components/auth/Settings.vue:527
+msgctxt "*/Auth/Message"
+msgid "Your deletion request was submitted, your account and content will be deleted shortly"
+msgstr ""
+
 #: front/src/components/library/EditForm.vue:3
 msgctxt "Content/Library/Paragraph"
 msgid "Your edit was successfully submitted."
@@ -5224,12 +5612,12 @@ msgctxt "Head/Favorites/Title"
 msgid "Your Favorites"
 msgstr "Twoje ulubione"
 
-#: front/src/components/Home.vue:109
-msgctxt "Content/Home/Title"
-msgid "Your music, your way"
-msgstr "Twoja muzyka, po Twojemu"
+#: front/src/views/Notifications.vue:5
+msgctxt "Content/Notifications/Title"
+msgid "Your messages"
+msgstr ""
 
-#: front/src/views/Notifications.vue:4
+#: front/src/views/Notifications.vue:69
 msgctxt "Content/Notifications/Title"
 msgid "Your notifications"
 msgstr "Twoje powiadomienia"
@@ -5245,43 +5633,42 @@ msgid "Your password has been updated successfully."
 msgstr "Twoje hasło zostało pomyślnie zmienione."
 
 #: front/src/components/auth/Settings.vue:14
+#, fuzzy
 msgctxt "Content/Settings/Error message.Title"
-msgid "Your settings can't be updateds"
+msgid "Your settings can't be updated"
 msgstr "Zaktualizowano ustawienia"
 
 #: front/src/components/auth/Settings.vue:101
 msgctxt "Popup/Settings/List item"
-msgid ""
-"Your Subsonic password will be changed to a new, random one, logging you out"
-" from devices that used the old Subsonic password"
-msgstr ""
-"Twoje hasło Subsonic zostanie zmienione na nowe, losowe i zostaniesz "
-"wylogowany z urządzeń korzystających ze starego hasła Subsonic"
+msgid "Your Subsonic password will be changed to a new, random one, logging you out from devices that used the old Subsonic password"
+msgstr "Twoje hasło Subsonic zostanie zmienione na nowe, losowe i zostaniesz wylogowany z urządzeń korzystających ze starego hasła Subsonic"
 
-#: front/src/edits.js:47
-msgctxt "*/*/*/Short, Noun"
-msgid "Position"
-msgstr "Opis"
+#: front/src/entities.js:126
+#, fuzzy
+msgctxt "*/*/*/Noun"
+msgid "MusicBrainz ID"
+msgstr "Wyświetl na MusicBrainz"
 
-#: front/src/edits.js:54
-msgctxt "Content/Track/*/Noun"
-msgid "Copyright"
-msgstr "Kopiuj"
+#: front/src/main.js:110
+msgctxt "*/Error/Paragraph"
+msgid "You sent too many requests and have been rate limited, please try again in %{ delay }"
+msgstr ""
+
+#: front/src/main.js:113
+msgctxt "*/Error/Paragraph"
+msgid "You sent too many requests and have been rate limited, please try again later"
+msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:183
+#: front/src/components/library/AlbumBase.vue:208
 #, fuzzy
 msgctxt "Content/Album/Header.Title"
-msgid ""
-"Album containing %{ count } track, by <a class=\"internal\" href=\"%{ "
-"artistUrl }\">%{ artist }</a>"
-msgid_plural ""
-"Album containing %{ count } tracks, by <a class=\"internal\" href=\"%{ "
-"artistUrl }\">%{ artist }</a>"
+msgid "Album containing %{ count } track, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgid_plural "Album containing %{ count } tracks, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
 msgstr[0] "Album zawiera %{ count } utwór od %{ artist }"
 msgstr[1] "Album zawiera %{ count } utwory od %{ artist }"
 msgstr[2] "Album zawiera %{ count } utworów od %{ artist }"
 
-#: front/src/components/audio/PlayButton.vue:220
+#: front/src/components/audio/PlayButton.vue:246
 #, fuzzy
 msgctxt "*/Queue/Message"
 msgid "%{ count } track was added to your queue"
diff --git a/front/locales/pt_BR/LC_MESSAGES/app.po b/front/locales/pt_BR/LC_MESSAGES/app.po
index 181c3e8dde290ec0a07053371da6394439b29d44..42d2ca05779ca17b84f93807d531e6e99160425c 100644
--- a/front/locales/pt_BR/LC_MESSAGES/app.po
+++ b/front/locales/pt_BR/LC_MESSAGES/app.po
@@ -7,9 +7,9 @@ msgid ""
 msgstr ""
 "Project-Id-Version: front 0.1.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-05-16 10:35+0200\n"
-"PO-Revision-Date: 2019-05-16 07:47+0000\n"
-"Last-Translator: Daniele Lira Mereb <dlmereb@inf.ufpel.edu.br>\n"
+"POT-Creation-Date: 2019-10-01 15:15+0200\n"
+"PO-Revision-Date: 2019-06-06 09:17+0000\n"
+"Last-Translator: Nitai Bezerra da Silva <nitaibezerra@protonmail.com>\n"
 "Language-Team: none\n"
 "Language: pt_BR\n"
 "MIME-Version: 1.0\n"
@@ -34,23 +34,67 @@ msgid "(empty)"
 msgstr "(vazio)"
 
 #: front/src/components/auth/Authorize.vue:16
-#, fuzzy
 msgctxt "Content/Auth/Title"
 msgid "%{ app } wants to access your Funkwhale account"
-msgstr "Entrar com sua conta Funkwhale"
+msgstr "%{ app } quer acessar sua conta Funkwhale"
 
-#: front/src/components/common/ActionTable.vue:68
+#: front/src/components/About.vue:173 src/components/Home.vue:56
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } active user"
+msgid_plural "%{ count } active users"
+msgstr[0] "%{ count } faixa"
+msgstr[1] "%{ count } faixas"
+
+#: front/src/components/About.vue:182
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } albums"
+msgid_plural "%{ count } albums"
+msgstr[0] "%{ count } faixa"
+msgstr[1] "%{ count } faixas"
+
+#: front/src/components/About.vue:152
+msgctxt "*/*/*"
+msgid "%{ count } allowed domains"
+msgid_plural "%{ count } allowed domains"
+msgstr[0] ""
+msgstr[1] ""
+
+#: front/src/components/About.vue:179
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } artists"
+msgid_plural "%{ count } artists"
+msgstr[0] "%{ count } faixa"
+msgstr[1] "%{ count } faixas"
+
+#: front/src/components/About.vue:176 src/components/Home.vue:59
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } hour of music"
+msgid_plural "%{ count } hours of music"
+msgstr[0] "%{ count } faixa"
+msgstr[1] "%{ count } faixas"
+
+#: front/src/components/About.vue:188
 #, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } listenings"
+msgid_plural "%{ count } listenings"
+msgstr[0] "%{ count } faixa"
+msgstr[1] "%{ count } faixas"
+
+#: front/src/components/common/ActionTable.vue:68
 msgctxt "Content/*/Paragraph"
 msgid "%{ count } on %{ total } selected"
 msgid_plural "%{ count } on %{ total } selected"
 msgstr[0] "%{ count } de %{ total } selecionado"
 msgstr[1] "%{ count } de %{ total } selecionados"
 
-#: front/src/components/Sidebar.vue:121 src/components/audio/album/Card.vue:52
+#: front/src/components/Sidebar.vue:125 src/components/audio/album/Card.vue:52
 #: front/src/views/content/libraries/Card.vue:40
-#: src/views/content/remote/Card.vue:30
-#, fuzzy
+#: src/views/content/remote/Card.vue:43
 msgctxt "*/*/*"
 msgid "%{ count } track"
 msgid_plural "%{ count } tracks"
@@ -58,7 +102,6 @@ msgstr[0] "%{ count } faixa"
 msgstr[1] "%{ count } faixas"
 
 #: front/src/components/library/ArtistBase.vue:13
-#, fuzzy
 msgctxt "Content/Artist/Paragraph"
 msgid "%{ count } track in %{ albumsCount } albums"
 msgid_plural "%{ count } tracks in %{ albumsCount } albums"
@@ -66,15 +109,21 @@ msgstr[0] "%{ count } faixa em %{ albumsCount } álbuns"
 msgstr[1] "%{ count } faixas em %{ albumsCount } álbuns"
 
 #: front/src/components/library/radios/Builder.vue:81
-#, fuzzy
 msgctxt "Content/Radio/Table.Paragraph/Short"
 msgid "%{ count } track matching combined filters"
 msgid_plural "%{ count } tracks matching combined filters"
 msgstr[0] "%{ count } faixa encontrada com os filtros"
 msgstr[1] "%{ count } faixas encontradas com os filtros"
 
-#: front/src/components/playlists/Card.vue:18
+#: front/src/components/About.vue:185
 #, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } tracks"
+msgid_plural "%{ count } tracks"
+msgstr[0] "%{ count } faixa"
+msgstr[1] "%{ count } faixas"
+
+#: front/src/components/playlists/Card.vue:28
 msgctxt "Content/*/Card/List item"
 msgid "%{ count} track"
 msgid_plural "%{ count } tracks"
@@ -99,9 +148,7 @@ msgstr "%{ minutes } min"
 #: front/src/components/notifications/NotificationRow.vue:40
 msgctxt "Content/Notifications/Paragraph"
 msgid "%{ username } accepted your follow on library \"%{ library }\""
-msgstr ""
-"%{ username } aceitou sua solicitação para seguir a biblioteca \"%{ library "
-"}\""
+msgstr "%{ username } aceitou sua solicitação para seguir a biblioteca \"%{ library }\""
 
 #: front/src/components/notifications/NotificationRow.vue:39
 msgctxt "Content/Notifications/Paragraph"
@@ -109,7 +156,6 @@ msgid "%{ username } followed your library \"%{ library }\""
 msgstr "%{ username } seguiu sua biblioteca \"%{ library }\""
 
 #: front/src/components/notifications/NotificationRow.vue:41
-#, fuzzy
 msgctxt "Content/Notifications/Paragraph"
 msgid "%{ username } wants to follow your library \"%{ library }\""
 msgstr "%{ username } seguiu sua biblioteca \"%{ library }\""
@@ -121,12 +167,10 @@ msgstr "Perfil de %{ username }"
 
 #: front/src/components/playlists/PlaylistModal.vue:21
 msgctxt "Popup/Playlist/Paragraph"
-msgid ""
-"<strong>%{ track }</strong> is already in <strong>%{ playlist }</strong>."
-msgstr ""
+msgid "<strong>%{ track }</strong> is already in <strong>%{ playlist }</strong>."
+msgstr "<strong>%{ track }</strong> já está em <strong>%{ playlist }</strong>."
 
-#: front/src/components/audio/artist/Card.vue:41
-#, fuzzy
+#: front/src/components/audio/artist/Card.vue:11
 msgctxt "Content/Artist/Card"
 msgid "1 album"
 msgid_plural "%{ count } albums"
@@ -134,33 +178,50 @@ msgstr[0] "1 álbum"
 msgstr[1] "%{ count } álbuns"
 
 #: front/src/components/favorites/List.vue:10
-#, fuzzy
 msgctxt "Content/Favorites/Title"
 msgid "1 favorite"
 msgid_plural "%{ count } favorites"
 msgstr[0] "1 favorito"
 msgstr[1] "%{ count } favoritos"
 
-#: front/src/components/Home.vue:64
+#: front/src/components/audio/artist/Card.vue:15
 #, fuzzy
-msgctxt "Content/Home/Title"
-msgid "A clean library"
-msgstr "Biblioteca limpa"
+msgctxt "Content/Artist/Card"
+msgid "1 track"
+msgid_plural "%{ count } tracks"
+msgstr[0] "Adicionar faixa"
+msgstr[1] "Adicionar faixa"
+
+#: front/src/views/Notifications.vue:21 src/views/Notifications.vue:55
+msgctxt "*/*/*"
+msgid "30 days"
+msgstr ""
+
+#: front/src/views/Notifications.vue:22 src/views/Notifications.vue:56
+msgctxt "*/*/*"
+msgid "60 days"
+msgstr ""
+
+#: front/src/views/Notifications.vue:23 src/views/Notifications.vue:57
+msgctxt "*/*/*"
+msgid "90 days"
+msgstr ""
 
 #: front/src/components/library/FileUpload.vue:264
+#, fuzzy
 msgctxt "Content/Library/Help text"
-msgid "A network error occured while uploading this file"
+msgid "A network error occurred while uploading this file"
 msgstr "Ocorreu um erro de rede ao enviar este arquivo"
 
-#: front/src/components/library/EditForm.vue:145
-#, fuzzy
+#: front/src/components/library/EditForm.vue:161
 msgctxt "*/*/Placeholder"
 msgid "A short summary describing your changes."
-msgstr "Ocorreu um erro ao salvar suas alterações"
+msgstr "Ocorreu um erro ao salvar suas alterações."
 
 #: front/src/components/About.vue:5
-msgctxt "Content/About/Title/Short, Noun"
-msgid "About %{ instance }"
+#, fuzzy
+msgctxt "Content/Home/Header"
+msgid "About %{ podName }"
 msgstr "Sobre %{ instance }"
 
 #: front/src/components/Footer.vue:6
@@ -168,7 +229,7 @@ msgctxt "Footer/About/Title"
 msgid "About %{instanceName}"
 msgstr "Sobre %{instanceName}"
 
-#: front/src/components/Footer.vue:45
+#: front/src/components/Footer.vue:53 src/components/Home.vue:85
 msgctxt "Footer/*/Title/Short"
 msgid "About Funkwhale"
 msgstr "Sobre o Funkwhale"
@@ -178,9 +239,16 @@ msgctxt "Footer/About/List item.Link"
 msgid "About page"
 msgstr "Sobre"
 
-#: front/src/components/About.vue:8 src/components/About.vue:67
-msgctxt "Content/About/Title"
-msgid "About this instance"
+#: front/src/components/Home.vue:19
+#, fuzzy
+msgctxt "Content/Home/Header"
+msgid "About this Funkwhale pod"
+msgstr "Sobre o Funkwhale"
+
+#: front/src/components/About.vue:21 src/components/About.vue:51
+#, fuzzy
+msgctxt "Content/About/Header"
+msgid "About this pod"
 msgstr "Sobre esta instância"
 
 #: front/src/views/content/libraries/Detail.vue:48
@@ -193,105 +261,89 @@ msgctxt "Content/Library/Table/Short"
 msgid "Accepted"
 msgstr "Aceito"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:110
+#: front/src/components/auth/SubsonicTokenForm.vue:117
 msgctxt "Content/Settings/Message"
 msgid "Access disabled"
 msgstr "Acesso desativado"
 
-#: front/src/components/mixins/Translations.vue:73
-#: front/src/components/mixins/Translations.vue:74
+#: front/src/components/mixins/Translations.vue:85
+#: front/src/components/mixins/Translations.vue:86
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to audio files, libraries, artists, albums and tracks"
-msgstr ""
+msgstr "Ver arquivos de áudio, bibliotecas, artistas, álbuns e faixas"
 
-#: front/src/components/mixins/Translations.vue:97
-#: front/src/components/mixins/Translations.vue:98
+#: front/src/components/mixins/Translations.vue:109
+#: front/src/components/mixins/Translations.vue:110
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to content filters"
-msgstr ""
+msgstr "Ver filtros"
 
-#: front/src/components/mixins/Translations.vue:105
-#: front/src/components/mixins/Translations.vue:106
-#, fuzzy
+#: front/src/components/mixins/Translations.vue:117
+#: front/src/components/mixins/Translations.vue:118
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to edits"
-msgstr "Acesso desativado"
+msgstr "Ver edições"
 
-#: front/src/components/mixins/Translations.vue:69
-#: front/src/components/mixins/Translations.vue:70
+#: front/src/components/mixins/Translations.vue:81
+#: front/src/components/mixins/Translations.vue:82
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to email, username, and profile information"
-msgstr ""
+msgstr "Ver e-mail, nome de usuário e informações de perfil"
 
-#: front/src/components/mixins/Translations.vue:77
-#: front/src/components/mixins/Translations.vue:78
-#, fuzzy
+#: front/src/components/mixins/Translations.vue:89
+#: front/src/components/mixins/Translations.vue:90
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to favorites"
-msgstr "Favoritar"
+msgstr "Ver favoritos"
 
-#: front/src/components/mixins/Translations.vue:85
-#: front/src/components/mixins/Translations.vue:86
+#: front/src/components/mixins/Translations.vue:97
+#: front/src/components/mixins/Translations.vue:98
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to follows"
-msgstr ""
+msgstr "Ver seguidos"
 
-#: front/src/components/mixins/Translations.vue:81
-#: front/src/components/mixins/Translations.vue:82
+#: front/src/components/mixins/Translations.vue:93
+#: front/src/components/mixins/Translations.vue:94
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to listening history"
-msgstr ""
+msgstr "Ver histórico de escutadas"
 
-#: front/src/components/mixins/Translations.vue:101
-#: front/src/components/mixins/Translations.vue:102
-#, fuzzy
+#: front/src/components/mixins/Translations.vue:113
+#: front/src/components/mixins/Translations.vue:114
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to notifications"
-msgstr "Suas notificações"
+msgstr "Ver notificações"
 
-#: front/src/components/mixins/Translations.vue:89
-#: front/src/components/mixins/Translations.vue:90
-#, fuzzy
+#: front/src/components/mixins/Translations.vue:101
+#: front/src/components/mixins/Translations.vue:102
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to playlists"
-msgstr "Adicionar à lista…"
+msgstr "Ver listas"
 
-#: front/src/components/mixins/Translations.vue:93
-#: front/src/components/mixins/Translations.vue:94
-#, fuzzy
+#: front/src/components/mixins/Translations.vue:105
+#: front/src/components/mixins/Translations.vue:106
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to radios"
-msgstr "Acesso desativado"
-
-#: front/src/components/Home.vue:101
-#, fuzzy
-msgctxt "Content/Home/List item"
-msgid ""
-"Access your music from a clean interface that focuses on what really matters"
-msgstr ""
-"Ouça suas músicas numa interface limpa e focada no que realmente importa"
+msgstr "Ver rádios"
 
 #: front/src/components/manage/library/UploadsTable.vue:67
-#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:55
 #: front/src/views/admin/library/UploadDetail.vue:175
-#: front/src/components/mixins/Translations.vue:46
+#: front/src/components/mixins/Translations.vue:56
 msgctxt "Content/*/*/Noun"
 msgid "Accessed date"
 msgstr "Data de acesso"
 
-#: front/src/views/admin/library/LibraryDetail.vue:104
-#: front/src/views/admin/library/UploadDetail.vue:111
-#, fuzzy
-msgctxt "*/*/*/Noun"
-msgid "Account"
-msgstr "Contas"
-
 #: front/src/components/manage/library/LibrariesTable.vue:49
 #: front/src/components/manage/library/UploadsTable.vue:61
-#, fuzzy
-msgctxt "*/*/*"
+#: front/src/components/manage/moderation/ReportCard.vue:156
+#: front/src/components/mixins/Report.vue:13
+#: front/src/views/admin/library/LibraryDetail.vue:113
+#: front/src/views/admin/library/UploadDetail.vue:111
+#: front/src/components/mixins/Report.vue:14
+msgctxt "*/*/*/Noun"
 msgid "Account"
-msgstr "Contas"
+msgstr "Conta"
 
 #: front/src/views/admin/moderation/AccountsDetail.vue:107
 msgctxt "Content/Moderation/Title"
@@ -303,10 +355,10 @@ msgctxt "Content/Settings/Title"
 msgid "Account settings"
 msgstr "Configurações da conta"
 
-#: front/src/components/auth/Settings.vue:479
+#: front/src/components/auth/Settings.vue:544
 msgctxt "Head/Settings/Title"
 msgid "Account Settings"
-msgstr "Configurações de Conta"
+msgstr "Configurações da conta"
 
 #: front/src/components/manage/users/UsersTable.vue:39
 msgctxt "Content/Admin/Table.Label/Short, Noun"
@@ -320,7 +372,7 @@ msgstr "E-mail da conta"
 
 #: front/src/views/admin/moderation/AccountsList.vue:3
 #: front/src/views/admin/moderation/AccountsList.vue:24
-#: front/src/views/admin/moderation/Base.vue:8
+#: front/src/views/admin/moderation/Base.vue:11
 msgctxt "*/Moderation/Title"
 msgid "Accounts"
 msgstr "Contas"
@@ -331,32 +383,32 @@ msgid "Action"
 msgstr "Ação"
 
 #: front/src/components/common/ActionTable.vue:101
-#, fuzzy
 msgctxt "Content/*/Paragraph"
 msgid "Action %{ action } was launched successfully on %{ count } element"
-msgid_plural ""
-"Action %{ action } was launched successfully on %{ count } elements"
+msgid_plural "Action %{ action } was launched successfully on %{ count } elements"
 msgstr[0] "Ação %{ action } aplicada com sucesso em %{ count } elemento"
 msgstr[1] "Ação %{ action } aplicada com sucesso em %{ count } elementos"
 
 #: front/src/components/common/ActionTable.vue:22
 #: front/src/components/library/radios/Builder.vue:65
+#: front/src/components/manage/moderation/ReportCard.vue:210
 msgctxt "Content/*/*/Noun"
 msgid "Actions"
 msgstr "Ações"
 
-#: front/src/components/manage/users/UsersTable.vue:53
+#: front/src/components/manage/users/UsersTable.vue:54
 msgctxt "Content/Admin/Table"
 msgid "Active"
 msgstr "Ativo"
 
-#: front/src/views/admin/library/AlbumDetail.vue:134
-#: front/src/views/admin/library/ArtistDetail.vue:123
-#: front/src/views/admin/library/LibraryDetail.vue:138
-#: front/src/views/admin/library/TrackDetail.vue:186
+#: front/src/views/admin/library/AlbumDetail.vue:140
+#: front/src/views/admin/library/ArtistDetail.vue:128
+#: front/src/views/admin/library/LibraryDetail.vue:147
+#: front/src/views/admin/library/TagDetail.vue:83
+#: front/src/views/admin/library/TrackDetail.vue:192
 #: front/src/views/admin/library/UploadDetail.vue:160
-#: front/src/views/admin/moderation/AccountsDetail.vue:220
-#: front/src/views/admin/moderation/DomainsDetail.vue:136
+#: front/src/views/admin/moderation/AccountsDetail.vue:221
+#: front/src/views/admin/moderation/DomainsDetail.vue:173
 msgctxt "Content/Moderation/Title"
 msgid "Activity"
 msgstr "Atividade"
@@ -367,7 +419,7 @@ msgctxt "Content/Settings/Dropdown.Label/Noun"
 msgid "Activity visibility"
 msgstr "Visibilidade da atividade"
 
-#: front/src/views/admin/moderation/DomainsList.vue:18
+#: front/src/views/admin/moderation/DomainsList.vue:22
 msgctxt "Content/Moderation/Button/Verb"
 msgid "Add"
 msgstr "Adicionar"
@@ -378,10 +430,9 @@ msgid "Add a domain"
 msgstr "Adicionar domínio"
 
 #: front/src/views/admin/moderation/AccountsDetail.vue:79
-#, fuzzy
 msgctxt "Content/Moderation/Button/Verb"
 msgid "Add a moderation policy"
-msgstr "Adicionar nova regra de moderação"
+msgstr "Adicionar regra de moderação"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:4
 msgctxt "Content/Moderation/Card.Button.Label/Verb"
@@ -397,7 +448,7 @@ msgstr "Adicionar e gerenciar conteúdo"
 #: front/src/components/playlists/PlaylistModal.vue:31
 msgctxt "*/Playlist/Button.Label/Verb"
 msgid "Add anyways"
-msgstr ""
+msgstr "Adicionar assim mesmo"
 
 #: front/src/components/Sidebar.vue:75 src/views/content/Base.vue:18
 msgctxt "*/Library/*/Verb"
@@ -414,7 +465,21 @@ msgctxt "Content/Radio/Paragraph"
 msgid "Add filters to customize your radio"
 msgstr "Adicionar filtros para personalizar sua rádio"
 
-#: front/src/components/audio/PlayButton.vue:75
+#: front/src/components/manage/moderation/NoteForm.vue:12
+#, fuzzy
+msgctxt "Content/Moderation/Button.Label/Verb"
+msgid "Add note"
+msgstr "Adicionar conteúdo"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:191
+#: front/src/views/admin/moderation/DomainsDetail.vue:46
+#: front/src/views/admin/moderation/DomainsList.vue:18
+#, fuzzy
+msgctxt "Content/Moderation/Action/Verb"
+msgid "Add to allow-list"
+msgstr "Adicionar à lista…"
+
+#: front/src/components/audio/PlayButton.vue:91
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Add to current queue"
 msgstr "Adicionar à fila atual"
@@ -446,7 +511,7 @@ msgctxt "Popup/Playlist/Table.Button.Label/Verb"
 msgid "Add track"
 msgstr "Adicionar faixa"
 
-#: front/src/components/manage/users/UsersTable.vue:69
+#: front/src/components/manage/users/UsersTable.vue:70
 msgctxt "Content/Admin/Table.User role"
 msgid "Admin"
 msgstr "Administrador(a)"
@@ -456,51 +521,49 @@ msgctxt "Sidebar/Admin/Title/Noun"
 msgid "Administration"
 msgstr "Administração"
 
-#: front/src/views/admin/library/TrackDetail.vue:107
-msgctxt "*/*/*/Noun"
-msgid "Album"
-msgstr "Álbum"
-
-#: front/src/components/audio/SearchBar.vue:26
+#: front/src/components/audio/SearchBar.vue:33
 #: src/components/audio/track/Table.vue:9
-#: front/src/components/library/AlbumBase.vue:152
-#: front/src/components/library/ArtistBase.vue:194
+#: front/src/components/library/AlbumBase.vue:170
+#: front/src/components/library/ArtistBase.vue:212
 #: front/src/components/manage/library/TracksTable.vue:40
 #: front/src/components/metadata/Search.vue:134
+#: src/components/mixins/Report.vue:41
+#: front/src/views/admin/library/TrackDetail.vue:113
 #: front/src/views/content/libraries/FilesTable.vue:57
+#: front/src/components/mixins/Report.vue:42
 msgctxt "*/*/*"
 msgid "Album"
 msgstr "Álbum"
 
-#: front/src/views/admin/library/TrackDetail.vue:128
-#, fuzzy
+#: front/src/views/admin/library/TrackDetail.vue:134
 msgctxt "*/*/*/Noun"
 msgid "Album artist"
 msgstr "Álbuns deste artista"
 
-#: front/src/views/admin/library/AlbumDetail.vue:92
-#, fuzzy
+#: front/src/views/admin/library/AlbumDetail.vue:98
 msgctxt "Content/Moderation/Title"
 msgid "Album data"
-msgstr "Nome do álbum"
+msgstr "Dados do álbum"
 
-#: front/src/components/mixins/Translations.vue:51
-#: front/src/components/mixins/Translations.vue:52
+#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/mixins/Translations.vue:62
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Album name"
 msgstr "Nome do álbum"
 
 #: front/src/components/audio/Search.vue:19
-#: src/components/instance/Stats.vue:48
-#: front/src/components/library/Albums.vue:120
-#: src/components/library/Library.vue:7
+#: src/components/library/Albums.vue:129
+#: front/src/components/library/Library.vue:7
+#: src/components/library/TagDetail.vue:28
 #: front/src/components/manage/library/ArtistsTable.vue:41
+#: front/src/components/manage/library/TagsTable.vue:43
 #: front/src/views/admin/library/AlbumsList.vue:24
-#: front/src/views/admin/library/ArtistDetail.vue:241
+#: front/src/views/admin/library/ArtistDetail.vue:256
 #: front/src/views/admin/library/Base.vue:11
-#: front/src/views/admin/library/LibraryDetail.vue:219
-#: front/src/views/admin/moderation/AccountsDetail.vue:354
-#: front/src/views/admin/moderation/DomainsDetail.vue:264
+#: front/src/views/admin/library/LibraryDetail.vue:238
+#: front/src/views/admin/library/TagDetail.vue:133
+#: front/src/views/admin/moderation/AccountsDetail.vue:366
+#: front/src/views/admin/moderation/DomainsDetail.vue:301
 msgctxt "*/*/*"
 msgid "Albums"
 msgstr "Álbuns"
@@ -514,91 +577,103 @@ msgstr "Álbuns deste artista"
 #: front/src/components/manage/library/LibrariesTable.vue:13
 #: front/src/components/manage/library/UploadsTable.vue:13
 #: front/src/components/manage/library/UploadsTable.vue:22
+#: front/src/components/manage/moderation/DomainsTable.vue:11
 #: front/src/components/manage/users/InvitationsTable.vue:19
+#: front/src/components/moderation/ReportCategoryDropdown.vue:32
+#: front/src/views/admin/moderation/ReportsList.vue:17
 #: front/src/views/content/libraries/FilesTable.vue:13
 msgctxt "Content/*/Dropdown"
 msgid "All"
 msgstr "Todos"
 
 #: front/src/components/common/ActionTable.vue:59
-#, fuzzy
 msgctxt "Content/*/Paragraph"
 msgid "All %{ count } element selected"
 msgid_plural "All %{ count } elements selected"
-msgstr[0] "%{ count } de %{ total } selecionado"
-msgstr[1] "%{ count } de %{ total } selecionados"
+msgstr[0] "%{ count } elemento selecionado"
+msgstr[1] "%{ count } elementos selecionados"
 
 #: front/src/components/auth/Authorize.vue:107
 msgctxt "Head/Authorize/Title"
 msgid "Allow application"
+msgstr "Permitir aplicativo"
+
+#: front/src/components/About.vue:136
+msgctxt "*/*/*"
+msgid "Allow-list"
 msgstr ""
 
+#: front/src/components/About.vue:149
+#, fuzzy
+msgctxt "*/*/*"
+msgid "Allowed domains"
+msgstr "Adicionar domínio"
+
 #: front/src/components/library/ImportStatusModal.vue:17
+#, fuzzy
 msgctxt "Popup/Import/Message"
-msgid ""
-"An error occured during upload processing. You will find more information "
-"below."
-msgstr ""
+msgid "An error occurred during upload processing. You will find more information below."
+msgstr "Ocorreu um erro durante o envio. Veja mais sobre abaixo."
 
 #: front/src/components/playlists/Editor.vue:13
+#, fuzzy
 msgctxt "Content/Playlist/Error message.Title"
-msgid "An error occured while saving your changes"
+msgid "An error occurred while saving your changes"
 msgstr "Ocorreu um erro ao salvar suas alterações"
 
 #: front/src/components/federation/FetchButton.vue:21
 #, fuzzy
 msgctxt "Popup/*/Message.Content"
-msgid "An error occured while trying to refresh data:"
-msgstr "Ocorreu um erro ao salvar suas alterações"
+msgid "An error occurred while trying to refresh data:"
+msgstr "Ocorreu um erro ao salvar suas alterações:"
 
 #: front/src/components/federation/FetchButton.vue:41
 #, fuzzy
 msgctxt "*/*/Error"
-msgid "An HTTP error occured while contacting the remote server"
-msgstr "Ocorreu um erro ao salvar suas alterações"
-
-#: front/src/components/auth/Login.vue:10
-msgctxt "Content/Login/Error message/List item"
-msgid ""
-"An unknown error happend, this can mean the server is down or cannot be "
-"reached"
-msgstr ""
-"Ocorreu um erro desconhecido, o servidor pode ter caído ou estar inacessível"
+msgid "An HTTP error occurred while contacting the remote server"
+msgstr "Ocorreu um erro no HTTP ao contatar o servidor remoto"
 
 #: front/src/components/library/ImportStatusModal.vue:145
+#, fuzzy
 msgctxt "Popup/Import/Error.Label"
-msgid "An unkwown error occured"
+msgid "An unknown error occurred"
+msgstr "Ocorreu um erro desconhecido"
+
+#: front/src/components/About.vue:123
+msgctxt "*/*/*"
+msgid "Anonymous access"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:54
+msgctxt "Popup/Moderation/Error message"
+msgid "Anonymous reports are disabled, please sign-in to submit a report."
 msgstr ""
 
 #: front/src/components/auth/Settings.vue:175
 #: src/components/auth/Settings.vue:225
-#, fuzzy
 msgctxt "*/*/*/Noun"
 msgid "Application"
-msgstr "Ação"
+msgstr "Aplicativo"
 
 #: front/src/components/auth/ApplicationEdit.vue:12
 msgctxt "Content/Applications/Title"
 msgid "Application details"
-msgstr ""
+msgstr "Detalhes do aplicativo"
 
 #: front/src/components/auth/ApplicationEdit.vue:21
-#, fuzzy
 msgctxt "Content/Applications/Label"
 msgid "Application ID"
-msgstr "Ação"
+msgstr "ID do aplicativo"
 
 #: front/src/components/auth/ApplicationEdit.vue:16
 msgctxt "Content/Application/Paragraph/"
-msgid ""
-"Application ID and secret are really sensitive values and must be treated "
-"like passwords. Do not share those with anyone else."
-msgstr ""
+msgid "Application ID and secret are really sensitive values and must be treated like passwords. Do not share those with anyone else."
+msgstr "A ID e o segredo do aplicativo são valores realmente sensíveis e devem ser tratados como senhas. Não compartilhe isso com mais ninguém."
 
 #: front/src/components/auth/ApplicationEdit.vue:25
 msgctxt "Content/Applications/Label"
 msgid "Application secret"
-msgstr ""
+msgstr "Segredo do aplicativo"
 
 #: front/src/components/library/EditCard.vue:81
 #: front/src/components/notifications/NotificationRow.vue:66
@@ -608,45 +683,41 @@ msgstr "Aprovar"
 
 #: front/src/components/library/EditCard.vue:25
 #: front/src/components/manage/library/EditsCardList.vue:21
-#, fuzzy
 msgctxt "Content/*/*/Short"
 msgid "Approved"
-msgstr "Aprovar"
+msgstr "Aprovado"
 
 #: front/src/components/library/EditCard.vue:21
 msgctxt "Content/Library/Card/Short"
 msgid "Approved and applied"
-msgstr ""
+msgstr "Aprovado e aplicado"
 
 #: front/src/components/auth/Logout.vue:5
 msgctxt "Content/Login/Title"
 msgid "Are you sure you want to log out?"
 msgstr "Tem certeza de que deseja sair?"
 
+#: front/src/components/audio/SearchBar.vue:32
+#: src/components/audio/track/Table.vue:8
 #: front/src/components/manage/library/AlbumsTable.vue:40
 #: front/src/components/manage/library/TracksTable.vue:41
-msgctxt "*/*/*"
-msgid "Artist"
-msgstr "Artista"
-
-#: front/src/components/audio/SearchBar.vue:25
-#: src/components/audio/track/Table.vue:8
 #: front/src/components/metadata/Search.vue:130
-#: front/src/views/admin/library/AlbumDetail.vue:108
-#: front/src/views/admin/library/TrackDetail.vue:118
-#: front/src/views/content/libraries/FilesTable.vue:56
+#: src/components/mixins/Report.vue:55
+#: front/src/views/admin/library/AlbumDetail.vue:114
+#: front/src/views/admin/library/TrackDetail.vue:124
+#: front/src/views/content/libraries/FilesTable.vue:56 src/entities.js:12
+#: front/src/components/mixins/Report.vue:56
 msgctxt "*/*/*/Noun"
 msgid "Artist"
 msgstr "Artista"
 
-#: front/src/views/admin/library/ArtistDetail.vue:91
-#, fuzzy
+#: front/src/views/admin/library/ArtistDetail.vue:96
 msgctxt "Content/Moderation/Title"
 msgid "Artist data"
-msgstr "Nome do(a) artista"
+msgstr "Dados do(a) artista"
 
-#: front/src/components/mixins/Translations.vue:52
-#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/mixins/Translations.vue:62
+#: front/src/components/mixins/Translations.vue:63
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Artist name"
 msgstr "Nome do(a) artista"
@@ -656,36 +727,36 @@ msgctxt "*/Search/Input.Placeholder"
 msgid "Artist, album, track…"
 msgstr "Artista, álbum, faixa…"
 
+#: front/src/components/audio/Search.vue:10
+#: src/components/library/Artists.vue:117
+#: front/src/components/library/Library.vue:10
+#: front/src/components/library/TagDetail.vue:19
+#: front/src/components/manage/library/TagsTable.vue:42
 #: front/src/views/admin/library/ArtistsList.vue:24
 #: front/src/views/admin/library/Base.vue:8
-#: front/src/views/admin/library/LibraryDetail.vue:209
-msgctxt "*/*/*"
-msgid "Artists"
-msgstr "Artistas"
-
-#: front/src/components/audio/Search.vue:10
-#: src/components/instance/Stats.vue:42
-#: front/src/components/library/Artists.vue:117
-#: src/components/library/Library.vue:10
-#: front/src/views/admin/moderation/AccountsDetail.vue:346
-#: front/src/views/admin/moderation/DomainsDetail.vue:254
+#: front/src/views/admin/library/LibraryDetail.vue:228
+#: front/src/views/admin/library/TagDetail.vue:123
+#: front/src/views/admin/moderation/AccountsDetail.vue:358
+#: front/src/views/admin/moderation/DomainsDetail.vue:291
 msgctxt "*/*/*/Noun"
 msgid "Artists"
 msgstr "Artistas"
 
 #: front/src/components/favorites/List.vue:34
-#: src/components/library/Albums.vue:25
-#: front/src/components/library/Artists.vue:25
+#: src/components/library/Albums.vue:29
+#: front/src/components/library/Artists.vue:29
 #: src/components/library/Radios.vue:44
 #: front/src/components/manage/library/AlbumsTable.vue:21
 #: front/src/components/manage/library/ArtistsTable.vue:21
 #: front/src/components/manage/library/EditsCardList.vue:39
 #: front/src/components/manage/library/LibrariesTable.vue:30
+#: front/src/components/manage/library/TagsTable.vue:21
 #: front/src/components/manage/library/TracksTable.vue:21
 #: front/src/components/manage/library/UploadsTable.vue:40
 #: front/src/components/manage/moderation/AccountsTable.vue:21
-#: front/src/components/manage/moderation/DomainsTable.vue:19
+#: front/src/components/manage/moderation/DomainsTable.vue:27
 #: front/src/components/manage/users/UsersTable.vue:19
+#: front/src/views/admin/moderation/ReportsList.vue:44
 #: front/src/views/content/libraries/FilesTable.vue:31
 #: front/src/views/playlists/List.vue:27
 msgctxt "Content/Search/Dropdown"
@@ -697,18 +768,24 @@ msgctxt "Content/Signup/Button.Label/Verb"
 msgid "Ask for a password reset"
 msgstr "Solicitar redefinição de senha"
 
-#: front/src/views/admin/library/AlbumDetail.vue:198
-#: front/src/views/admin/library/ArtistDetail.vue:187
-#: front/src/views/admin/library/LibraryDetail.vue:176
-#: front/src/views/admin/library/TrackDetail.vue:250
+#: front/src/components/manage/moderation/ReportCard.vue:72
+msgctxt "Content/Moderation/*"
+msgid "Assigned to"
+msgstr ""
+
+#: front/src/views/admin/library/AlbumDetail.vue:214
+#: front/src/views/admin/library/ArtistDetail.vue:202
+#: front/src/views/admin/library/LibraryDetail.vue:195
+#: front/src/views/admin/library/TagDetail.vue:113
+#: front/src/views/admin/library/TrackDetail.vue:266
 #: front/src/views/admin/library/UploadDetail.vue:191
-#: front/src/views/admin/moderation/AccountsDetail.vue:274
-#: front/src/views/admin/moderation/DomainsDetail.vue:202
+#: front/src/views/admin/moderation/AccountsDetail.vue:285
+#: front/src/views/admin/moderation/DomainsDetail.vue:239
 msgctxt "Content/Moderation/Title"
 msgid "Audio content"
-msgstr "Conteúdo do áudio"
+msgstr "Conteúdo de áudio"
 
-#: front/src/components/ShortcutsModal.vue:55
+#: front/src/components/ShortcutsModal.vue:92
 msgctxt "Popup/Keyboard shortcuts/Title"
 msgid "Audio player shortcuts"
 msgstr "Atalhos do reprodutor de áudio"
@@ -716,17 +793,17 @@ msgstr "Atalhos do reprodutor de áudio"
 #: front/src/components/auth/Authorize.vue:47
 msgctxt "Content/Signup/Button.Label/Verb"
 msgid "Authorize %{ app }"
-msgstr ""
+msgstr "Permitir %{ app }"
 
 #: front/src/components/auth/Authorize.vue:4
 msgctxt "Content/Auth/Title/Verb"
 msgid "Authorize third-party app"
-msgstr ""
+msgstr "Permitir aplicativo de terceiros"
 
 #: front/src/components/auth/Settings.vue:162
 msgctxt "Content/Settings/Title/Noun"
 msgid "Authorized apps"
-msgstr ""
+msgstr "Aplicativos permitidos"
 
 #: front/src/components/playlists/PlaylistModal.vue:40
 msgctxt "Popup/Playlist/Title"
@@ -746,15 +823,14 @@ msgstr "Voltar à entrada"
 
 #: front/src/components/auth/ApplicationEdit.vue:9
 #: front/src/components/auth/ApplicationNew.vue:5
-#, fuzzy
 msgctxt "Content/Applications/Link"
 msgid "Back to settings"
-msgstr "Atualizar configurações"
+msgstr "Voltar à configurações"
 
 #: front/src/components/library/TrackDetail.vue:48
-#: front/src/components/mixins/Translations.vue:55
+#: front/src/components/mixins/Translations.vue:67
 #: front/src/views/admin/library/UploadDetail.vue:227
-#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:68
 msgctxt "Content/Track/*/Noun"
 msgid "Bitrate"
 msgstr "Taxa de bits"
@@ -767,13 +843,8 @@ msgstr "Bloquear tudo"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:112
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Block everything from this account or domain. This will prevent any "
-"interaction with the entity, and purge related content (uploads, libraries, "
-"follows, etc.)"
-msgstr ""
-"Bloquear tudo desta conta ou domínio. Isso impedirá a interação e eliminará "
-"conteúdos relacionados (envios, bibliotecas, seguidos, etc.)"
+msgid "Block everything from this account or domain. This will prevent any interaction with the entity, and purge related content (uploads, libraries, follows, etc.)"
+msgstr "Bloquear tudo desta conta ou domínio. Isso impedirá a interação e eliminará conteúdos relacionados (envios, bibliotecas, seguidos, etc.)"
 
 #: front/src/components/Sidebar.vue:18 src/components/library/Library.vue:4
 msgctxt "*/Library/*/Verb"
@@ -785,11 +856,16 @@ msgctxt "Sidebar/Library/List item.Link/Verb"
 msgid "Browse library"
 msgstr "Explorar biblioteca"
 
-#: front/src/components/library/Albums.vue:4
+#: front/src/components/Home.vue:132
 #, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Browse public content"
+msgstr "Atualizar tabela de conteúdo"
+
+#: front/src/components/library/Albums.vue:4
 msgctxt "Content/Album/Title"
 msgid "Browsing albums"
-msgstr "Explorando rádios"
+msgstr "Explorando álbums"
 
 #: front/src/components/library/Artists.vue:4
 msgctxt "Content/Artist/Title"
@@ -816,43 +892,43 @@ msgctxt "Content/Album/Card"
 msgid "By %{ artist }"
 msgstr "De %{ artist }"
 
-#: front/src/views/content/remote/Card.vue:112
+#: front/src/views/content/remote/Card.vue:125
 msgctxt "Popup/Library/Paragraph"
 msgid "By unfollowing this library, you loose access to its content."
-msgstr ""
-"Ao deixar de seguir esta biblioteca, você perderá o acesso ao seu conteúdo."
+msgstr "Ao deixar de seguir esta biblioteca, você não poderá mais ver o seu conteúdo."
 
-#: front/src/views/admin/library/AlbumDetail.vue:214
-#: front/src/views/admin/library/ArtistDetail.vue:203
-#: front/src/views/admin/library/LibraryDetail.vue:192
-#: front/src/views/admin/library/TrackDetail.vue:266
+#: front/src/views/admin/library/AlbumDetail.vue:230
+#: front/src/views/admin/library/ArtistDetail.vue:218
+#: front/src/views/admin/library/LibraryDetail.vue:211
+#: front/src/views/admin/library/TrackDetail.vue:282
 #: front/src/views/admin/library/UploadDetail.vue:208
-#: front/src/views/admin/moderation/AccountsDetail.vue:290
-#: front/src/views/admin/moderation/DomainsDetail.vue:217
+#: front/src/views/admin/moderation/AccountsDetail.vue:301
+#: front/src/views/admin/moderation/DomainsDetail.vue:254
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Cached size"
 msgstr "Tamanho em cache"
 
 #: front/src/components/SetInstanceModal.vue:37
 #: front/src/components/common/DangerousButton.vue:17
-#: front/src/components/library/AlbumBase.vue:36
-#: front/src/components/library/ArtistBase.vue:47
-#: front/src/components/library/EditForm.vue:95
-#: front/src/components/library/TrackBase.vue:55
+#: front/src/components/library/AlbumBase.vue:37
+#: front/src/components/library/ArtistBase.vue:48
+#: front/src/components/library/EditForm.vue:107
+#: front/src/components/library/TrackBase.vue:53
 #: front/src/components/library/radios/Filter.vue:53
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:54
 #: front/src/components/moderation/FilterModal.vue:39
+#: front/src/components/moderation/ReportModal.vue:59
 #: front/src/components/playlists/PlaylistModal.vue:26
 #: front/src/components/playlists/PlaylistModal.vue:77
+#: front/src/views/playlists/Detail.vue:62
 msgctxt "*/*/Button.Label/Verb"
 msgid "Cancel"
 msgstr "Cancelar"
 
-#: front/src/views/content/remote/Card.vue:97
-#, fuzzy
+#: front/src/views/content/remote/Card.vue:110
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Cancel follow request"
-msgstr "Solicitações de seguidor pendentes"
+msgstr "Cancelar solicitação para seguir"
 
 #: front/src/components/library/radios/Builder.vue:64
 msgctxt "Content/Radio/Table.Label/Noun (Value is a number of Tracks)"
@@ -862,8 +938,15 @@ msgstr "Candidatos(as)"
 #: front/src/components/library/FileUpload.vue:261
 msgctxt "Content/Library/Help text"
 msgid "Cannot upload this file, ensure it is not too big"
+msgstr "Não é possível enviar este arquivo, certifique-se de que não é grande demais"
+
+#: front/src/components/manage/moderation/ReportCard.vue:30
+#: front/src/components/mixins/Translations.vue:42
+#: front/src/components/moderation/ReportCategoryDropdown.vue:2
+#: front/src/components/mixins/Translations.vue:43
+msgctxt "*/*/*"
+msgid "Category"
 msgstr ""
-"Não é possível enviar este arquivo, certifique-se de que não é grande demais"
 
 #: front/src/components/Footer.vue:21
 msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
@@ -880,6 +963,11 @@ msgctxt "Content/Settings/Button.Label"
 msgid "Change password"
 msgstr "Alterar senha"
 
+#: front/src/components/Footer.vue:37
+msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
+msgid "Change theme"
+msgstr ""
+
 #: front/src/views/auth/PasswordResetConfirm.vue:62
 msgctxt "*/Signup/Title"
 msgid "Change your password"
@@ -897,42 +985,32 @@ msgstr "Alterações sincronizadas com o servidor"
 
 #: front/src/components/auth/Settings.vue:71
 msgctxt "Content/Settings/Paragraph'"
-msgid ""
-"Changing your password will also change your Subsonic API password if you "
-"have requested one."
-msgstr ""
-"A alteração de sua senha também modificará - caso use - a senha da API "
-"Subsonic."
+msgid "Changing your password will also change your Subsonic API password if you have requested one."
+msgstr "A alteração de sua senha também modificará - caso use - a senha da API Subsonic."
 
 #: front/src/components/auth/Settings.vue:98
-#, fuzzy
 msgctxt "Popup/Settings/Paragraph"
 msgid "Changing your password will have the following consequences:"
-msgstr "A alteração da senha terá as seguintes consequências"
+msgstr "Alterar a senha terá as seguintes consequências:"
 
-#: front/src/components/Footer.vue:40
+#: front/src/components/Footer.vue:48
 msgctxt "Footer/*/List item.Link"
 msgid "Chat room"
 msgstr "Sala de chat"
 
 #: front/src/components/auth/ApplicationForm.vue:24
 msgctxt "Content/Applications/Paragraph/"
-msgid ""
-"Checking the parent \"Read\" or \"Write\" scopes implies access to all the "
-"corresponding children scopes."
-msgstr ""
+msgid "Checking the parent \"Read\" or \"Write\" scopes implies access to all the corresponding children scopes."
+msgstr "Verificar \"Ler\" e \"Escrever\" implica em verificar também todos os seus dependentes."
 
 #: front/src/components/SetInstanceModal.vue:2
 msgctxt "Popup/Instance/Title"
 msgid "Choose your instance"
 msgstr "Escolha sua instância"
 
-#: front/src/components/manage/users/InvitationForm.vue:37
-msgctxt "Content/Admin/Button.Label/Verb"
-msgid "Clear"
-msgstr "Limpar"
-
 #: front/src/components/library/EditForm.vue:75
+#: front/src/components/library/EditForm.vue:88
+#: front/src/components/manage/users/InvitationForm.vue:37
 msgctxt "Content/Library/Button.Label"
 msgid "Clear"
 msgstr "Limpar"
@@ -943,45 +1021,46 @@ msgctxt "*/Playlist/Button.Label/Verb"
 msgid "Clear playlist"
 msgstr "Limpar lista"
 
-#: front/src/components/audio/Player.vue:642
-msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
-msgid "Clear your queue"
+#: front/src/components/ShortcutsModal.vue:144
+#, fuzzy
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Clear queue"
 msgstr "Limpar sua fila"
 
-#: front/src/components/Home.vue:44
-msgctxt "Content/Home/List item/Verb"
-msgid "Click once, listen for hours using built-in radios"
-msgstr "Clique uma vez e ouça as rádios nativas por horas"
+#: front/src/components/audio/Player.vue:668
+msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
+msgid "Clear your queue"
+msgstr "Limpar sua fila"
 
 #: front/src/components/mixins/Translations.vue:21
 #: front/src/components/mixins/Translations.vue:22
 msgctxt "Content/Library/Link.Title"
-msgid ""
-"Click to display more information about the import process for this upload"
-msgstr ""
+msgid "Click to display more information about the import process for this upload"
+msgstr "Clique para mostrar mais informações sobre o processo de importação desse envio"
 
 #: front/src/components/library/FileUpload.vue:82
 msgctxt "Content/Library/Paragraph/Call to action"
 msgid "Click to select files to upload or drag and drop files or directories"
-msgstr ""
-"Clique para selecionar arquivos para enviar ou arraste e solte arquivos ou "
-"pastas"
+msgstr "Clique para selecionar arquivos para enviar ou arraste e solte arquivos ou pastas"
 
+#: front/src/components/ShortcutsModal.vue:38
 #: front/src/components/federation/FetchButton.vue:85
 #: front/src/components/library/ImportStatusModal.vue:79
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:34
 msgctxt "*/*/Button.Label/Verb"
 msgid "Close"
 msgstr "Fechar"
 
-#: front/src/components/ShortcutsModal.vue:20
-msgctxt "Popup/Keyboard shortcuts/Button.Label/Verb"
-msgid "Close"
-msgstr "Fechar"
-
 #: front/src/components/federation/FetchButton.vue:88
 msgctxt "*/*/Button.Label/Verb"
 msgid "Close and reload page"
-msgstr ""
+msgstr "Fechar e atualizar a página"
+
+#: front/src/components/About.vue:94
+#, fuzzy
+msgctxt "*/*/*/State of registrations"
+msgid "Closed"
+msgstr "Fechar"
 
 #: front/src/components/manage/users/InvitationForm.vue:26
 #: front/src/components/manage/users/InvitationsTable.vue:42
@@ -990,8 +1069,9 @@ msgid "Code"
 msgstr "Código"
 
 #: front/src/components/audio/album/Card.vue:41
-#: front/src/components/audio/artist/Card.vue:33
-msgctxt "Content/*/Card.Link/Verb"
+#: front/src/components/common/CollapseLink.vue:3
+#, fuzzy
+msgctxt "*/*/Button,Label"
 msgid "Collapse"
 msgstr "Ocultar"
 
@@ -1015,48 +1095,52 @@ msgctxt "Content/Signup/Form.Label"
 msgid "Confirmation code"
 msgstr "Código de confirmação"
 
+#: front/src/components/About.vue:67 src/components/Home.vue:65
+msgctxt "Content/Home/Header/Name"
+msgid "Contact"
+msgstr ""
+
 #: front/src/components/moderation/FilterModal.vue:90
 msgctxt "*/Moderation/Message"
 msgid "Content filter successfully added"
-msgstr ""
-
-#: front/src/components/mixins/Translations.vue:96
-#: front/src/components/mixins/Translations.vue:97
-#, fuzzy
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Content filters"
-msgstr "Selecione um filtro"
+msgstr "Filtro adicionado"
 
 #: front/src/components/auth/Settings.vue:116
-#, fuzzy
+#: front/src/components/mixins/Translations.vue:108
+#: front/src/components/mixins/Translations.vue:109
 msgctxt "Content/Settings/Title/Noun"
 msgid "Content filters"
-msgstr "Selecione um filtro"
+msgstr "Filtros"
 
 #: front/src/components/auth/Settings.vue:119
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"Content filters help you hide content you don't want to see on the service."
-msgstr ""
+msgid "Content filters help you hide content you don't want to see on the service."
+msgstr "Filtros ajudam você a ocultar o que você não quer ver no Funkwhale."
 
 #: front/src/components/common/ActionTable.vue:8
 msgctxt "Content/*/Button.Help text.Paragraph"
 msgid "Content have been updated, click refresh to see up-to-date content"
-msgstr "Conteúdo modificado, atualize a página para ver o conteúdo atual"
+msgstr "Conteúdo alterado, atualize a página"
 
-#: front/src/components/Footer.vue:48
+#: front/src/components/About.vue:46
+#, fuzzy
+msgctxt "Content/About/Header"
+msgid "Contents"
+msgstr "Filtros"
+
+#: front/src/components/Footer.vue:56
 msgctxt "Footer/*/List item.Link"
 msgid "Contribute"
 msgstr "Colaborar"
 
-#: front/src/components/audio/EmbedWizard.vue:19
+#: front/src/components/audio/EmbedWizard.vue:29
 #: front/src/components/common/CopyInput.vue:8
+#: front/src/components/forms/PasswordInput.vue:43
 msgctxt "*/*/Button.Label/Short, Verb"
 msgid "Copy"
 msgstr "Copiar"
 
 #: front/src/components/playlists/Editor.vue:194
-#, fuzzy
 msgctxt "Content/Playlist/Button.Tooltip/Verb"
 msgid "Copy queued tracks to playlist"
 msgstr "Copiar faixas da fila atual para lista"
@@ -1064,16 +1148,16 @@ msgstr "Copiar faixas da fila atual para lista"
 #: front/src/components/auth/Authorize.vue:55
 msgctxt "Content/Auth/Paragraph"
 msgid "Copy-paste the following code in the application:"
-msgstr ""
+msgstr "Copie e cole no aplicativo o seguinte código:"
 
-#: front/src/components/audio/EmbedWizard.vue:21
+#: front/src/components/audio/EmbedWizard.vue:31
 msgctxt "Popup/Embed/Paragraph"
 msgid "Copy/paste this code in your website HTML"
 msgstr "Copie e cole este código HTML em seu site"
 
 #: front/src/components/library/TrackDetail.vue:10
-#: front/src/views/admin/library/TrackDetail.vue:153
-msgctxt "Content/Track/Table.Label/Noun"
+#: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:77
+msgctxt "Content/Track/*/Noun"
 msgid "Copyright"
 msgstr "Direitos autorais"
 
@@ -1087,33 +1171,22 @@ msgctxt "Content/Library/Error message.Title"
 msgid "Could not fetch remote library"
 msgstr "Não foi possível obter a biblioteca remota"
 
-#: front/src/components/Home.vue:80
-msgctxt "Content/Home/List item"
-msgid "Covers, lyrics, our goal is to have them all ;)"
-msgstr "Capas, letras, nosso objetivo é ter tudo isso! ;)"
-
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:58
 msgctxt "Content/Moderation/Card.Button.Label/Verb"
 msgid "Create"
 msgstr "Criar"
 
-#: front/src/components/auth/Signup.vue:4
+#: front/src/views/auth/Signup.vue:4
 msgctxt "Content/Signup/Title"
 msgid "Create a funkwhale account"
 msgstr "Criar conta Funkwhale"
 
-#: front/src/components/auth/Settings.vue:220
-#, fuzzy
-msgctxt "Content/Settings/Button.Label"
-msgid "Create a new application"
-msgstr "Criar nova lista"
-
 #: front/src/components/auth/ApplicationNew.vue:8
 #: front/src/components/auth/ApplicationNew.vue:41
-#, fuzzy
-msgctxt "Content/Applications/Title"
+#: front/src/components/auth/Settings.vue:220
+msgctxt "Content/Settings/Button.Label"
 msgid "Create a new application"
-msgstr "Criar nova lista"
+msgstr "Criar novo aplicativo"
 
 #: front/src/views/content/libraries/Home.vue:14
 msgctxt "Content/Library/Link/Verb"
@@ -1125,23 +1198,22 @@ msgctxt "Popup/Playlist/Title/Verb"
 msgid "Create a new playlist"
 msgstr "Criar nova lista"
 
-#: front/src/components/Sidebar.vue:57 src/components/auth/Login.vue:17
+#: front/src/components/Sidebar.vue:57 src/components/auth/LoginForm.vue:15
 msgctxt "*/Signup/Link/Verb"
 msgid "Create an account"
 msgstr "Criar conta"
 
 #: front/src/components/auth/ApplicationForm.vue:65
-#, fuzzy
 msgctxt "Content/Applications/Button.Label/Verb"
 msgid "Create application"
-msgstr "Criar lista"
+msgstr "Criar aplicativo"
 
 #: front/src/views/content/libraries/Form.vue:26
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Create library"
 msgstr "Criar biblioteca"
 
-#: front/src/components/auth/Signup.vue:53
+#: front/src/components/auth/SignupForm.vue:49
 msgctxt "Content/Signup/Button.Label"
 msgid "Create my account"
 msgstr "Criar minha conta"
@@ -1149,7 +1221,7 @@ msgstr "Criar minha conta"
 #: front/src/components/auth/Settings.vue:264
 msgctxt "Content/Applications/Paragraph"
 msgid "Create one to integrate Funkwhale with third-party applications."
-msgstr ""
+msgstr "Crie um para integrar o Funkwhale com aplicativos de terceiros."
 
 #: front/src/components/playlists/Form.vue:34
 msgctxt "Content/Playlist/Button.Label/Verb"
@@ -1166,11 +1238,13 @@ msgstr "Criar sua própria rádio"
 #: front/src/components/manage/library/AlbumsTable.vue:44
 #: front/src/components/manage/library/ArtistsTable.vue:43
 #: front/src/components/manage/library/LibrariesTable.vue:54
+#: front/src/components/manage/library/TagsTable.vue:45
 #: front/src/components/manage/library/TracksTable.vue:44
 #: front/src/components/manage/library/UploadsTable.vue:66
+#: front/src/components/manage/moderation/ReportCard.vue:43
 #: front/src/components/manage/users/InvitationsTable.vue:40
-#: front/src/components/mixins/Translations.vue:43
-#: front/src/components/mixins/Translations.vue:44
+#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/mixins/Translations.vue:54
 msgctxt "Content/*/*/Noun"
 msgid "Creation date"
 msgstr "Data de criação"
@@ -1180,6 +1254,12 @@ msgctxt "Content/Settings/Title/Noun"
 msgid "Current avatar"
 msgstr "Imagem de perfil atual"
 
+#: front/src/components/admin/SettingsGroup.vue:67
+#, fuzzy
+msgctxt "Content/Settings/Title/Noun"
+msgid "Current image"
+msgstr "Uso atual"
+
 #: front/src/views/content/libraries/DetailArea.vue:4
 msgctxt "Content/Library/Title"
 msgid "Current library"
@@ -1195,15 +1275,20 @@ msgctxt "Content/Library/Title"
 msgid "Current usage"
 msgstr "Uso atual"
 
+#: front/src/components/Footer.vue:94
+msgctxt "Footer/Settings/Dropdown.Label/Theme name"
+msgid "Dark"
+msgstr ""
+
 #: front/src/components/federation/FetchButton.vue:53
 msgctxt "*/*/Error"
 msgid "Data returned by the remote server had invalid or missing attributes"
-msgstr ""
+msgstr "Dados retornados pelo servidor remoto tinham atributos inválidos ou ausentes"
 
 #: front/src/components/federation/FetchButton.vue:17
 msgctxt "Popup/*/Message.Content"
 msgid "Data was refreshed successfully from remote server."
-msgstr ""
+msgstr "Os dados foram atualizados no servidor remoto."
 
 #: front/src/views/content/libraries/Detail.vue:27
 msgctxt "Content/Library/Table.Label"
@@ -1211,12 +1296,11 @@ msgid "Date"
 msgstr "Data"
 
 #: front/src/components/library/ImportStatusModal.vue:64
-#, fuzzy
 msgctxt "Popup/Import/Table.Label/Noun"
 msgid "Debug information"
-msgstr "Informações da faixa"
+msgstr "Informação de depuração"
 
-#: front/src/components/ShortcutsModal.vue:75
+#: front/src/components/ShortcutsModal.vue:128
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Decrease volume"
 msgstr "Diminuir volume"
@@ -1228,37 +1312,42 @@ msgstr "Diminuir volume"
 #: front/src/components/manage/library/AlbumsTable.vue:188
 #: front/src/components/manage/library/ArtistsTable.vue:178
 #: front/src/components/manage/library/LibrariesTable.vue:205
+#: front/src/components/manage/library/TagsTable.vue:179
 #: front/src/components/manage/library/TracksTable.vue:188
 #: front/src/components/manage/library/UploadsTable.vue:255
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:61
+#: front/src/components/manage/moderation/NotesThread.vue:24
+#: front/src/components/manage/moderation/NotesThread.vue:29
+#: front/src/components/manage/moderation/ReportCard.vue:360
 #: front/src/components/manage/users/InvitationsTable.vue:167
-#: front/src/views/admin/library/AlbumDetail.vue:72
-#: front/src/views/admin/library/AlbumDetail.vue:77
-#: front/src/views/admin/library/ArtistDetail.vue:71
+#: front/src/views/admin/library/AlbumDetail.vue:78
+#: front/src/views/admin/library/AlbumDetail.vue:83
 #: front/src/views/admin/library/ArtistDetail.vue:76
+#: front/src/views/admin/library/ArtistDetail.vue:81
 #: front/src/views/admin/library/LibraryDetail.vue:58
 #: front/src/views/admin/library/LibraryDetail.vue:63
-#: front/src/views/admin/library/TrackDetail.vue:71
-#: front/src/views/admin/library/TrackDetail.vue:76
+#: front/src/views/admin/library/TagDetail.vue:41
+#: front/src/views/admin/library/TagDetail.vue:46
+#: front/src/views/admin/library/TrackDetail.vue:77
+#: front/src/views/admin/library/TrackDetail.vue:82
 #: front/src/views/admin/library/UploadDetail.vue:65
 #: front/src/views/admin/library/UploadDetail.vue:70
 #: front/src/views/content/libraries/FilesTable.vue:222
 #: front/src/views/content/libraries/Form.vue:29
-#: src/views/playlists/Detail.vue:34
+#: src/views/playlists/Detail.vue:42
 msgctxt "*/*/*/Verb"
 msgid "Delete"
 msgstr "Excluir"
 
 #: front/src/components/auth/Settings.vue:254
-#, fuzzy
 msgctxt "*/Settings/Button.Label/Verb"
 msgid "Delete application"
-msgstr "Excluir lista"
+msgstr "Excluir aplicativo"
 
 #: front/src/components/auth/Settings.vue:252
 msgctxt "Popup/Settings/Title"
 msgid "Delete application \"%{ application }\"?"
-msgstr ""
+msgstr "Excluir aplicativo \"%{ application }\"?"
 
 #: front/src/views/content/libraries/Form.vue:39
 msgctxt "Popup/Library/Button.Label/Verb"
@@ -1270,7 +1359,20 @@ msgctxt "Popup/Moderation/Button.Label/Verb"
 msgid "Delete moderation rule"
 msgstr "Excluir regra de moderação"
 
-#: front/src/views/playlists/Detail.vue:39
+#: front/src/components/auth/Settings.vue:274
+#: src/components/auth/Settings.vue:302
+#, fuzzy
+msgctxt "*/*/Button.Label"
+msgid "Delete my account"
+msgstr "Criar minha conta"
+
+#: front/src/components/auth/Settings.vue:297
+#, fuzzy
+msgctxt "*/*/Button.Label"
+msgid "Delete my account…"
+msgstr "Criar minha conta"
+
+#: front/src/views/playlists/Detail.vue:47
 msgctxt "Popup/Playlist/Button.Label/Verb"
 msgid "Delete playlist"
 msgstr "Excluir lista"
@@ -1280,18 +1382,26 @@ msgctxt "Popup/Radio/Button.Label/Verb"
 msgid "Delete radio"
 msgstr "Excluir rádio"
 
-#: front/src/views/admin/library/AlbumDetail.vue:73
-#: front/src/views/admin/library/TrackDetail.vue:72
-#, fuzzy
+#: front/src/components/manage/moderation/ReportCard.vue:357
+msgctxt "Content/Moderation/Button/Verb"
+msgid "Delete reported object"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:358
+msgctxt "Content/Moderation/Popup/Header"
+msgid "Delete reported object?"
+msgstr ""
+
+#: front/src/views/admin/library/AlbumDetail.vue:79
+#: front/src/views/admin/library/TrackDetail.vue:78
 msgctxt "Popup/Library/Title"
 msgid "Delete this album?"
-msgstr "Excluir esta biblioteca?"
+msgstr "Excluir este álbum?"
 
-#: front/src/views/admin/library/ArtistDetail.vue:72
-#, fuzzy
+#: front/src/views/admin/library/ArtistDetail.vue:77
 msgctxt "Popup/Library/Title"
 msgid "Delete this artist?"
-msgstr "Excluir esta biblioteca?"
+msgstr "Excluir este artista?"
 
 #: front/src/views/admin/library/LibraryDetail.vue:59
 #: front/src/views/content/libraries/Form.vue:31
@@ -1304,62 +1414,71 @@ msgctxt "Popup/Moderation/Title"
 msgid "Delete this moderation rule?"
 msgstr "Excluir esta regra de moderação?"
 
-#: front/src/components/library/EditCard.vue:94
+#: front/src/components/manage/moderation/NotesThread.vue:25
 #, fuzzy
+msgctxt "Popup/Moderation/Title"
+msgid "Delete this note?"
+msgstr "Excluir este artista?"
+
+#: front/src/components/library/EditCard.vue:94
 msgctxt "Popup/Library/Title"
 msgid "Delete this suggestion?"
-msgstr "Excluir esta regra de moderação?"
+msgstr "Excluir esta sugestão?"
 
-#: front/src/views/admin/library/UploadDetail.vue:66
+#: front/src/views/admin/library/TagDetail.vue:42
 #, fuzzy
 msgctxt "Popup/Library/Title"
+msgid "Delete this tag?"
+msgstr "Excluir este álbum?"
+
+#: front/src/views/admin/library/UploadDetail.vue:66
+msgctxt "Popup/Library/Title"
 msgid "Delete this upload?"
-msgstr "Excluir esta biblioteca?"
+msgstr "Excluir este envio?"
 
 #: front/src/components/favorites/List.vue:35
-#: src/components/library/Albums.vue:26
-#: front/src/components/library/Artists.vue:26
+#: src/components/library/Albums.vue:30
+#: front/src/components/library/Artists.vue:30
 #: src/components/library/Radios.vue:47
 #: front/src/components/manage/library/AlbumsTable.vue:22
 #: front/src/components/manage/library/ArtistsTable.vue:22
 #: front/src/components/manage/library/EditsCardList.vue:40
 #: front/src/components/manage/library/LibrariesTable.vue:31
+#: front/src/components/manage/library/TagsTable.vue:22
 #: front/src/components/manage/library/TracksTable.vue:22
 #: front/src/components/manage/library/UploadsTable.vue:41
 #: front/src/components/manage/moderation/AccountsTable.vue:22
-#: front/src/components/manage/moderation/DomainsTable.vue:20
+#: front/src/components/manage/moderation/DomainsTable.vue:28
 #: front/src/components/manage/users/UsersTable.vue:20
+#: front/src/views/admin/moderation/ReportsList.vue:45
 #: front/src/views/content/libraries/FilesTable.vue:32
 #: front/src/views/playlists/List.vue:28
 msgctxt "Content/Search/Dropdown"
 msgid "Descending"
 msgstr "Descendente"
 
-#: front/src/views/admin/library/LibraryDetail.vue:123
-msgctxt "*/*/*/Noun"
-msgid "Description"
-msgstr "Descrição"
+#: front/src/components/manage/moderation/NoteForm.vue:37
+msgctxt "Content/Moderation/Placeholder"
+msgid "Describe what actions have been taken, or any other related updates…"
+msgstr ""
 
 #: front/src/components/library/radios/Builder.vue:25
+#: front/src/views/admin/library/LibraryDetail.vue:132
 #: front/src/views/content/libraries/Form.vue:14
-msgctxt "Content/*/Input.Label/Noun"
+msgctxt "*/*/*/Noun"
 msgid "Description"
 msgstr "Descrição"
 
 #: front/src/views/content/libraries/Card.vue:48
-#: src/views/content/remote/Card.vue:54
+#: src/views/content/remote/Card.vue:67
 msgctxt "Content/Library/Card.Button.Label/Noun"
 msgid "Details"
 msgstr "Detalhes"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:491
+#: front/src/views/admin/moderation/AccountsDetail.vue:511
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Determine how much content the user can upload. Leave empty to use the "
-"default value of the instance."
-msgstr ""
-"Determine quanto conteúdo o usuário pode enviar. Deixe em branco para "
-"utilizar o valor padrão da instância."
+msgid "Determine how much content the user can upload. Leave empty to use the default value of the instance."
+msgstr "Determine quanto conteúdo o usuário pode enviar. Deixe em branco para usar o valor padrão da instância."
 
 #: front/src/components/mixins/Translations.vue:8
 #: front/src/components/mixins/Translations.vue:9
@@ -1368,31 +1487,39 @@ msgid "Determine the visibility level of your activity"
 msgstr "Determine o nível de visibilidade de sua atividade"
 
 #: front/src/components/auth/Settings.vue:104
-#: front/src/components/auth/SubsonicTokenForm.vue:51
+#: front/src/components/auth/SubsonicTokenForm.vue:56
 msgctxt "Popup/Settings/Button.Label"
 msgid "Disable access"
 msgstr "Desativar acesso"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:48
+#: front/src/components/auth/SubsonicTokenForm.vue:53
 msgctxt "Content/Settings/Button.Label/Verb"
 msgid "Disable Subsonic access"
 msgstr "Desativar acesso Subsonic"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:49
+#: front/src/components/auth/SubsonicTokenForm.vue:54
 msgctxt "Popup/Settings/Title"
 msgid "Disable Subsonic API access?"
-msgstr "Desativar acesso da API Subsonic?"
+msgstr "Desativar acesso à API Subsonic?"
 
+#: front/src/components/About.vue:118 src/components/About.vue:131
+#: front/src/components/About.vue:144
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:18
 #: front/src/views/admin/moderation/AccountsDetail.vue:157
 #: front/src/views/admin/moderation/AccountsDetail.vue:161
-msgctxt "*/*/*"
+#, fuzzy
+msgctxt "*/*/*/State of feature"
 msgid "Disabled"
 msgstr "Desativado"
 
-#: front/src/views/admin/library/TrackDetail.vue:145
+#: front/src/views/admin/library/TrackDetail.vue:151
 msgctxt "*/*/*/Noun"
 msgid "Disc number"
+msgstr "Número do disco"
+
+#: front/src/components/Home.vue:157
+msgctxt "Content/Home/Link"
+msgid "Discover everything you need to know about Funkwhale and its features"
 msgstr ""
 
 #: front/src/components/auth/SubsonicTokenForm.vue:13
@@ -1400,6 +1527,11 @@ msgctxt "Content/Settings/Link"
 msgid "Discover how to use Funkwhale from other apps"
 msgstr "Aprenda a usar o Funkwhale em outros aplicativos"
 
+#: front/src/views/Notifications.vue:45
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Discover other ways to help"
+msgstr ""
+
 #: front/src/views/admin/moderation/AccountsDetail.vue:132
 msgctxt "'Content/*/*/Noun'"
 msgid "Display name"
@@ -1412,13 +1544,14 @@ msgstr "Mostrar publicamente"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:122
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Do not download any media file (audio, album cover, account avatar…) from "
-"this account or domain. This will purge existing content as well."
-msgstr ""
-"Não baixar nenhum arquivo de mídia (áudio, capa de álbum, imagem de "
-"exibição...) desta conta ou domínio. Esta ação também excluirá o conteúdo já"
-" existente."
+msgid "Do not download any media file (audio, album cover, account avatar…) from this account or domain. This will purge existing content as well."
+msgstr "Não baixar nenhum arquivo de mídia (áudio, capa de álbum, imagem de exibição…) desta conta ou domínio. Esta ação também excluirá o conteúdo já existente."
+
+#: front/src/views/Notifications.vue:36
+#, fuzzy
+msgctxt "Content/Notifications/Header"
+msgid "Do you like Funkwhale?"
+msgstr "Sobre o Funkwhale"
 
 #: front/src/components/playlists/Editor.vue:51
 msgctxt "Popup/Playlist/Title"
@@ -1430,7 +1563,7 @@ msgctxt "Modal/*/Title"
 msgid "Do you want to confirm this action?"
 msgstr "Você deseja confirmar esta ação?"
 
-#: front/src/views/playlists/Detail.vue:35
+#: front/src/views/playlists/Detail.vue:43
 msgctxt "Popup/Playlist/Title/Call to action"
 msgid "Do you want to delete the playlist \"%{ playlist }\"?"
 msgstr "Você deseja excluir a lista \"%{ playlist }\"?"
@@ -1440,21 +1573,31 @@ msgctxt "Popup/Radio/Title"
 msgid "Do you want to delete the radio \"%{ radio }\"?"
 msgstr "Você deseja excluir a rádio \"%{ radio }\"?"
 
-#: front/src/components/moderation/FilterModal.vue:3
+#: front/src/components/auth/Settings.vue:298
 #, fuzzy
+msgctxt "Popup/Settings/Title"
+msgid "Do you want to delete your account?"
+msgstr "Você deseja restaurar sua fila anterior?"
+
+#: front/src/components/moderation/FilterModal.vue:3
 msgctxt "Popup/Moderation/Title/Verb"
 msgid "Do you want to hide content from artist \"%{ name }\"?"
-msgstr "Você deseja excluir a rádio \"%{ radio }\"?"
+msgstr "Você deseja ocultar o conteúdo do(a) artista \"%{ name }\"?"
 
 #: front/src/components/common/ActionTable.vue:37
-#, fuzzy
 msgctxt "Modal/*/Title"
 msgid "Do you want to launch %{ action } on %{ count } element?"
 msgid_plural "Do you want to launch %{ action } on %{ count } elements?"
 msgstr[0] "Você deseja executar %{ action } em %{ count } elemento?"
 msgstr[1] "Você deseja executar %{ action } em %{ count } elementos?"
 
-#: front/src/components/Sidebar.vue:118
+#: front/src/components/moderation/ReportModal.vue:3
+#, fuzzy
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Do you want to report this object?"
+msgstr "Você deseja confirmar esta ação?"
+
+#: front/src/components/Sidebar.vue:122
 msgctxt "Sidebar/Queue/Message"
 msgid "Do you want to restore your previous queue?"
 msgstr "Você deseja restaurar sua fila anterior?"
@@ -1470,26 +1613,33 @@ msgstr "Documentação"
 #: front/src/components/manage/library/TracksTable.vue:42
 #: front/src/components/manage/library/UploadsTable.vue:62
 #: front/src/components/manage/moderation/AccountsTable.vue:40
-#: front/src/components/mixins/Translations.vue:60
-#: front/src/views/admin/library/AlbumDetail.vue:118
-#: front/src/views/admin/library/ArtistDetail.vue:107
-#: front/src/views/admin/library/LibraryDetail.vue:114
-#: front/src/views/admin/library/TrackDetail.vue:170
+#: front/src/components/manage/moderation/ReportCard.vue:169
+#: front/src/components/manage/moderation/ReportCard.vue:179
+#: front/src/components/mixins/Translations.vue:72
+#: front/src/views/admin/library/AlbumDetail.vue:124
+#: front/src/views/admin/library/ArtistDetail.vue:112
+#: front/src/views/admin/library/LibraryDetail.vue:123
+#: front/src/views/admin/library/TrackDetail.vue:176
 #: front/src/views/admin/library/UploadDetail.vue:121
 #: front/src/views/admin/moderation/AccountsDetail.vue:123
-#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/mixins/Translations.vue:73
 msgctxt "Content/Moderation/*/Noun"
 msgid "Domain"
 msgstr "Domínio"
 
-#: front/src/views/admin/moderation/Base.vue:5
+#: front/src/views/admin/moderation/Base.vue:8
 #: front/src/views/admin/moderation/DomainsList.vue:3
-#: front/src/views/admin/moderation/DomainsList.vue:48
+#: front/src/views/admin/moderation/DomainsList.vue:54
 msgctxt "*/Moderation/*/Noun"
 msgid "Domains"
 msgstr "Domínios"
 
-#: front/src/components/library/TrackBase.vue:39
+#: front/src/views/Notifications.vue:42
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Donate"
+msgstr ""
+
+#: front/src/components/library/TrackBase.vue:37
 #: front/src/views/admin/library/UploadDetail.vue:58
 msgctxt "Content/Track/Link/Verb"
 msgid "Download"
@@ -1502,10 +1652,10 @@ msgstr "Arraste as faixas para reorganizá-las na lista"
 
 #: front/src/components/audio/track/Table.vue:10
 #: front/src/components/library/TrackDetail.vue:30
-#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:68
 #: front/src/views/admin/library/UploadDetail.vue:238
 #: front/src/views/content/libraries/FilesTable.vue:60
-#: front/src/components/mixins/Translations.vue:57
+#: front/src/components/mixins/Translations.vue:69
 msgctxt "Content/*/*"
 msgid "Duration"
 msgstr "Duração"
@@ -1515,84 +1665,61 @@ msgctxt "Content/Signup/Message"
 msgid "E-mail address confirmed"
 msgstr "Endereço de e-mail confirmado"
 
-#: front/src/components/Home.vue:88
-msgctxt "Content/Home/Title"
-msgid "Easy to use"
-msgstr "Fácil de usar"
-
-#: front/src/components/library/AlbumBase.vue:68
-#: front/src/components/library/ArtistBase.vue:79
-#: front/src/components/library/TrackBase.vue:87
+#: front/src/components/auth/Settings.vue:246
+#: src/components/library/AlbumBase.vue:73
+#: front/src/components/library/ArtistBase.vue:84
+#: front/src/components/library/TrackBase.vue:89
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:45
 #: front/src/components/radios/Card.vue:23
-#: src/views/admin/library/AlbumDetail.vue:65
-#: front/src/views/admin/library/ArtistDetail.vue:64
-#: front/src/views/admin/library/TrackDetail.vue:64
+#: src/views/admin/library/AlbumDetail.vue:71
+#: front/src/views/admin/library/ArtistDetail.vue:69
+#: front/src/views/admin/library/TrackDetail.vue:70
 #: front/src/views/content/libraries/Detail.vue:9
 #: src/views/playlists/Detail.vue:31
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Edit"
 msgstr "Editar"
 
-#: front/src/components/auth/Settings.vue:246
-msgctxt "Content/Settings/Button.Label"
-msgid "Edit"
-msgstr "Editar"
-
 #: front/src/components/auth/ApplicationEdit.vue:30
 #: front/src/components/auth/ApplicationEdit.vue:75
-#, fuzzy
 msgctxt "Content/Applications/Title"
 msgid "Edit application"
-msgstr "Erro ao executar esta ação"
-
-#: front/src/components/About.vue:22
-msgctxt "Content/Settings/Button.Label/Verb"
-msgid "Edit instance info"
-msgstr "Editar informações da instância"
+msgstr "Editar aplicativo"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:3
-#, fuzzy
 msgctxt "Content/Moderation/Card.Title/Verb"
 msgid "Edit moderation rule"
-msgstr "Atualizar regra de moderação"
+msgstr "Editar regra de moderação"
 
 #: front/src/components/library/AlbumEdit.vue:4
 msgctxt "Content/*/Title"
 msgid "Edit this album"
-msgstr ""
+msgstr "Editar álbum"
 
 #: front/src/components/library/ArtistEdit.vue:4
-#, fuzzy
 msgctxt "Content/*/Title"
 msgid "Edit this artist"
-msgstr "Adicionar a esta lista"
+msgstr "Editar artista"
 
 #: front/src/components/library/TrackEdit.vue:4
-#, fuzzy
 msgctxt "Content/*/Title"
 msgid "Edit this track"
-msgstr "Reproduzir esta faixa"
+msgstr "Editar faixa"
 
-#: front/src/views/admin/library/AlbumDetail.vue:182
-#: front/src/views/admin/library/ArtistDetail.vue:171
+#: front/src/components/mixins/Translations.vue:116
+#: front/src/views/admin/library/AlbumDetail.vue:198
+#: front/src/views/admin/library/ArtistDetail.vue:186
 #: front/src/views/admin/library/Base.vue:5
 #: src/views/admin/library/EditsList.vue:24
-#: front/src/views/admin/library/TrackDetail.vue:234
-#, fuzzy
+#: front/src/views/admin/library/TrackDetail.vue:250
+#: front/src/components/mixins/Translations.vue:117
 msgctxt "*/Admin/*/Noun"
 msgid "Edits"
-msgstr "Editar"
-
-#: front/src/components/mixins/Translations.vue:104
-#: front/src/components/mixins/Translations.vue:105
-#, fuzzy
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Edits"
-msgstr "Editar"
+msgstr "Edições"
 
-#: front/src/components/auth/Signup.vue:30
+#: front/src/components/auth/SignupForm.vue:26
 #: front/src/components/manage/users/UsersTable.vue:38
+#: front/src/components/moderation/ReportModal.vue:31
 msgctxt "Content/*/*/Noun"
 msgid "Email"
 msgstr "E-mail"
@@ -1602,51 +1729,60 @@ msgctxt "Content/*/*"
 msgid "Email address"
 msgstr "Endereço de e-mail"
 
-#: front/src/components/library/AlbumBase.vue:53
-#: front/src/components/library/ArtistBase.vue:64
-#: front/src/components/library/TrackBase.vue:72
+#: front/src/components/library/AlbumBase.vue:54
+#: front/src/components/library/ArtistBase.vue:65
+#: front/src/components/library/TrackBase.vue:70
+#: src/views/playlists/Detail.vue:38
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Embed"
 msgstr "Incorporar"
 
-#: front/src/components/audio/EmbedWizard.vue:20
+#: front/src/components/audio/EmbedWizard.vue:30
 msgctxt "Popup/Embed/Input.Label/Noun"
 msgid "Embed code"
 msgstr "Código para incorporar"
 
-#: front/src/components/library/AlbumBase.vue:26
+#: front/src/components/library/AlbumBase.vue:27
 msgctxt "Popup/Album/Title/Verb"
 msgid "Embed this album on your website"
 msgstr "Incorpore este álbum em seu site"
 
-#: front/src/components/library/ArtistBase.vue:37
-#, fuzzy
+#: front/src/components/library/ArtistBase.vue:38
 msgctxt "Popup/Artist/Title/Verb"
 msgid "Embed this artist work on your website"
-msgstr "Incorpore esta faixa em seu site"
+msgstr "Incorpore a obra do(a) artista em seu site"
+
+#: front/src/views/playlists/Detail.vue:52
+#, fuzzy
+msgctxt "Popup/Album/Title/Verb"
+msgid "Embed this playlist on your website"
+msgstr "Incorpore este álbum em seu site"
 
-#: front/src/components/library/TrackBase.vue:45
+#: front/src/components/library/TrackBase.vue:43
 msgctxt "Popup/Track/Title"
 msgid "Embed this track on your website"
 msgstr "Incorpore esta faixa em seu site"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:259
-#: front/src/views/admin/moderation/DomainsDetail.vue:187
+#: front/src/views/admin/moderation/AccountsDetail.vue:260
+#: front/src/views/admin/moderation/DomainsDetail.vue:224
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Emitted library follows"
 msgstr "Biblioteca enviada segue"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:243
-#: front/src/views/admin/moderation/DomainsDetail.vue:171
+#: front/src/views/admin/moderation/AccountsDetail.vue:244
+#: front/src/views/admin/moderation/DomainsDetail.vue:208
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Emitted messages"
 msgstr "Mensagens enviadas"
 
+#: front/src/components/About.vue:114 src/components/About.vue:127
+#: front/src/components/About.vue:140
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:8
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:17
 #: front/src/views/admin/moderation/AccountsDetail.vue:156
 #: front/src/views/admin/moderation/AccountsDetail.vue:160
-msgctxt "*/*/*"
+#, fuzzy
+msgctxt "*/*/*/State of feature"
 msgid "Enabled"
 msgstr "Ativado"
 
@@ -1665,10 +1801,10 @@ msgctxt "Content/Search/Input.Placeholder"
 msgid "Enter a radio name…"
 msgstr "Insira o nome de uma rádio…"
 
-#: front/src/components/library/Albums.vue:119
+#: front/src/components/library/Albums.vue:128
 msgctxt "Content/Search/Input.Placeholder"
-msgid "Enter album title..."
-msgstr ""
+msgid "Enter album title…"
+msgstr "Insira o título do álbum…"
 
 #: front/src/components/library/Artists.vue:116
 msgctxt "Content/Search/Input.Placeholder"
@@ -1683,31 +1819,31 @@ msgstr "Insira o nome da lista…"
 #: front/src/views/auth/PasswordReset.vue:54
 #, fuzzy
 msgctxt "Content/Signup/Input.Placeholder"
-msgid "Enter the email address binded to your account"
+msgid "Enter the email address linked to your account"
 msgstr "Insira o endereço de e-mail associado à sua conta"
 
-#: front/src/components/auth/Signup.vue:103
+#: front/src/components/auth/SignupForm.vue:96
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your email"
 msgstr "Insira seu e-mail"
 
-#: front/src/components/auth/Signup.vue:98 src/components/auth/Signup.vue:100
+#: front/src/components/auth/SignupForm.vue:91
+#: src/components/auth/SignupForm.vue:93
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your invitation code (case insensitive)"
-msgstr ""
-"Insira seu código de convite (não diferencia maiúsculas de minúsculas)"
+msgstr "Insira seu código de convite (não diferencia maiúsculas de minúsculas)"
 
 #: front/src/components/metadata/Search.vue:114
 msgctxt "Content/Library/Input.Placeholder/Verb"
 msgid "Enter your search query…"
 msgstr "Insira palavras-chave…"
 
-#: front/src/components/auth/Signup.vue:102
+#: front/src/components/auth/SignupForm.vue:95
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your username"
 msgstr "Insira seu nome de usuário"
 
-#: front/src/components/auth/Login.vue:83
+#: front/src/components/auth/LoginForm.vue:81
 msgctxt "Content/Login/Input.Placeholder"
 msgid "Enter your username or email"
 msgstr "Insira seu nome de usuário ou e-mail"
@@ -1720,22 +1856,20 @@ msgstr "Erro"
 
 #: front/src/components/federation/FetchButton.vue:34
 #: front/src/components/library/ImportStatusModal.vue:32
-#, fuzzy
 msgctxt "Popup/Import/Table.Label/Noun"
 msgid "Error detail"
-msgstr "Relatório de erros"
+msgstr "Detalhe do erro"
 
-#: front/src/views/admin/Settings.vue:87
+#: front/src/views/admin/Settings.vue:89
 msgctxt "Content/Admin/Menu"
 msgid "Error reporting"
 msgstr "Relatório de erros"
 
 #: front/src/components/federation/FetchButton.vue:26
 #: front/src/components/library/ImportStatusModal.vue:24
-#, fuzzy
 msgctxt "Popup/Import/Table.Label/Noun"
 msgid "Error type"
-msgstr "Com erro"
+msgstr "Tipo do erro"
 
 #: front/src/components/common/ActionTable.vue:94
 msgctxt "Content/*/Error message/Header"
@@ -1748,10 +1882,9 @@ msgid "Error while asking for a password reset"
 msgstr "Erro ao solicitar redefinição de senha"
 
 #: front/src/components/auth/Authorize.vue:6
-#, fuzzy
 msgctxt "Popup/Moderation/Error message"
 msgid "Error while authorizing application"
-msgstr "Erro ao executar esta ação"
+msgstr "Erro ao permitir aplicativo"
 
 #: front/src/views/auth/PasswordResetConfirm.vue:7
 msgctxt "Content/Signup/Card.Title"
@@ -1764,10 +1897,9 @@ msgid "Error while creating domain"
 msgstr "Erro ao criar domínio"
 
 #: front/src/components/moderation/FilterModal.vue:13
-#, fuzzy
 msgctxt "Popup/Moderation/Error message"
 msgid "Error while creating filter"
-msgstr "Erro ao criar regra"
+msgstr "Erro ao criar filtro"
 
 #: front/src/components/manage/users/InvitationForm.vue:4
 msgctxt "Content/Admin/Error message.Title"
@@ -1780,31 +1912,37 @@ msgid "Error while creating rule"
 msgstr "Erro ao criar regra"
 
 #: front/src/components/auth/Authorize.vue:7
-#, fuzzy
 msgctxt "Popup/Moderation/Error message"
 msgid "Error while fetching application data"
-msgstr "Erro ao gerar convite"
+msgstr "Erro ao ver dados do aplicativo"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:118
+#: front/src/views/admin/moderation/DomainsDetail.vue:155
 msgctxt "Content/Moderation/Table"
 msgid "Error while fetching node info"
 msgstr "Erro ao obter node info"
 
 #: front/src/components/admin/SettingsGroup.vue:5
-msgctxt "Content/Settings/Error message.Title"
-msgid "Error while saving settings"
-msgstr "Erro ao salvar configurações"
-
 #: front/src/components/federation/FetchButton.vue:73
 msgctxt "Content/*/Error message.Title"
 msgid "Error while saving settings"
 msgstr "Erro ao salvar configurações"
 
 #: front/src/components/library/EditForm.vue:46
-#, fuzzy
 msgctxt "Content/Library/Error message.Title"
 msgid "Error while submitting edit"
-msgstr "Erro ao salvar configurações"
+msgstr "Erro ao editar"
+
+#: front/src/components/manage/moderation/NoteForm.vue:3
+#, fuzzy
+msgctxt "Content/Moderation/Error message.Title"
+msgid "Error while submitting note"
+msgstr "Erro ao editar"
+
+#: front/src/components/moderation/ReportModal.vue:11
+#, fuzzy
+msgctxt "Popup/Moderation/Error message"
+msgid "Error while submitting report"
+msgstr "Erro ao editar"
 
 #: front/src/components/mixins/Translations.vue:32
 #: front/src/components/mixins/Translations.vue:33
@@ -1840,9 +1978,14 @@ msgctxt "Content/Radio/Table.Label/Verb"
 msgid "Exclude"
 msgstr "Excluir"
 
+#: front/src/components/common/CollapseLink.vue:2
+msgctxt "*/*/Button,Label"
+msgid "Expand"
+msgstr ""
+
 #: front/src/components/manage/users/InvitationsTable.vue:41
-#: front/src/components/mixins/Translations.vue:49
-#: front/src/components/mixins/Translations.vue:50
+#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:60
 msgctxt "Content/Admin/Table.Label/Noun"
 msgid "Expiration date"
 msgstr "Data de expiração"
@@ -1859,16 +2002,8 @@ msgstr "Expirado/usado"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:110
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Explain why you're applying this policy. Depending on your instance "
-"configuration, this will help you remember why you acted on this account or "
-"domain, and may be displayed publicly to help users understand what "
-"moderation rules are in place."
-msgstr ""
-"Explique por que está aplicando esta regra. Dependendo da configuração de "
-"sua instância, a descrição te ajudará a se lembrar o motivo da ação e também"
-" será exposta publicamente para que os usuários possam saber quais regras de"
-" moderação estão ativas."
+msgid "Explain why you're applying this policy. Depending on your instance configuration, this will help you remember why you acted on this account or domain, and may be displayed publicly to help users understand what moderation rules are in place."
+msgstr "Explique por que está aplicando esta regra. Dependendo da configuração de sua instância, a descrição te ajudará a se lembrar o motivo da ação e também será exposta publicamente para que os usuários possam saber quais regras de moderação estão ativas."
 
 #: front/src/components/manage/library/UploadsTable.vue:25
 #: front/src/views/content/libraries/FilesTable.vue:16
@@ -1876,45 +2011,40 @@ msgctxt "Content/Library/Dropdown"
 msgid "Failed"
 msgstr "Falhou"
 
-#: front/src/views/content/remote/Card.vue:62
+#: front/src/views/content/remote/Card.vue:75
 msgctxt "Content/Library/Card.List item/Noun"
 msgid "Failed tracks:"
 msgstr "Faixas que falharam:"
 
-#: front/src/views/admin/library/AlbumDetail.vue:165
-#: front/src/views/admin/library/ArtistDetail.vue:154
-#: front/src/views/admin/library/TrackDetail.vue:217
-#, fuzzy
+#: front/src/views/admin/library/AlbumDetail.vue:171
+#: front/src/views/admin/library/ArtistDetail.vue:159
+#: front/src/views/admin/library/TrackDetail.vue:223
 msgctxt "*/*/*"
 msgid "Favorited tracks"
-msgstr "Faixas que falharam:"
+msgstr "Faixas favoritadas"
 
 #: front/src/components/Sidebar.vue:66
+#: src/components/mixins/Translations.vue:88
+#: front/src/components/mixins/Translations.vue:89
 msgctxt "Sidebar/Favorites/List item.Link/Noun"
 msgid "Favorites"
 msgstr "Favoritos"
 
-#: front/src/components/mixins/Translations.vue:76
-#: front/src/components/mixins/Translations.vue:77
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Favorites"
-msgstr "Favoritos"
-
-#: front/src/views/admin/Settings.vue:84
-msgctxt "Content/Admin/Menu"
+#: front/src/components/About.vue:110 src/views/admin/Settings.vue:84
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Federation"
 msgstr "Federação"
 
 #: front/src/components/library/TrackDetail.vue:66
-#, fuzzy
 msgctxt "Content/*/*/Noun"
 msgid "Federation ID"
-msgstr "Federação"
+msgstr "ID da federação"
 
 #: front/src/components/library/EditCard.vue:45
 msgctxt "Content/Library/Card.Table.Header/Short"
 msgid "Field"
-msgstr ""
+msgstr "Campo"
 
 #: front/src/components/library/FileUpload.vue:93
 msgctxt "Content/Library/Table.Label"
@@ -1926,6 +2056,12 @@ msgctxt "Content/Radio/Table.Label/Noun"
 msgid "Filter name"
 msgstr "Nome do filtro"
 
+#: front/src/components/Home.vue:118
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Find another pod"
+msgstr "Enviar outra edição"
+
 #: front/src/components/manage/library/UploadsTable.vue:26
 #: front/src/components/mixins/Translations.vue:36
 #: front/src/views/content/libraries/FilesTable.vue:17
@@ -1935,25 +2071,31 @@ msgid "Finished"
 msgstr "Finalizado"
 
 #: front/src/components/manage/moderation/AccountsTable.vue:42
-#: front/src/components/manage/moderation/DomainsTable.vue:41
-#: front/src/views/admin/library/AlbumDetail.vue:149
-#: front/src/views/admin/library/ArtistDetail.vue:138
-#: front/src/views/admin/library/LibraryDetail.vue:153
-#: front/src/views/admin/library/TrackDetail.vue:201
+#: front/src/components/manage/moderation/DomainsTable.vue:49
+#: front/src/views/admin/library/AlbumDetail.vue:155
+#: front/src/views/admin/library/ArtistDetail.vue:143
+#: front/src/views/admin/library/LibraryDetail.vue:162
+#: front/src/views/admin/library/TagDetail.vue:98
+#: front/src/views/admin/library/TrackDetail.vue:207
 #: front/src/views/admin/library/UploadDetail.vue:167
-#: front/src/views/admin/moderation/AccountsDetail.vue:235
-#: front/src/views/admin/moderation/DomainsDetail.vue:151
+#: front/src/views/admin/moderation/AccountsDetail.vue:236
+#: front/src/views/admin/moderation/DomainsDetail.vue:188
 msgctxt "Content/Moderation/Table.Label/Short (Value is a date)"
 msgid "First seen"
 msgstr "Visto primeiro"
 
-#: front/src/components/mixins/Translations.vue:46
-#: front/src/components/mixins/Translations.vue:47
+#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:57
 msgctxt "Content/Moderation/Dropdown/Noun"
 msgid "First seen date"
 msgstr "Data do primeiro acesso"
 
-#: front/src/views/content/remote/Card.vue:87
+#: front/src/components/ShortcutsModal.vue:64
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Focus searchbar"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:100
 msgctxt "Content/Library/Card.Button.Label/Verb"
 msgid "Follow"
 msgstr "Seguir"
@@ -1963,83 +2105,58 @@ msgctxt "Content/Library/Title/Verb"
 msgid "Follow remote libraries"
 msgstr "Seguir bibliotecas remotas"
 
-#: front/src/views/content/remote/Card.vue:92
+#: front/src/views/content/remote/Card.vue:105
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Follow request pending approval"
-msgstr "Solicitação de seguidor pendente"
+msgstr "Solicitação para seguir pendente"
 
-#: front/src/components/mixins/Translations.vue:64
-#: front/src/views/admin/library/LibraryDetail.vue:161
+#: front/src/components/manage/library/LibrariesTable.vue:53
+#: front/src/components/mixins/Translations.vue:76
+#: front/src/views/admin/library/LibraryDetail.vue:170
 #: front/src/views/content/libraries/Detail.vue:7
-#: front/src/components/mixins/Translations.vue:65
+#: front/src/components/mixins/Translations.vue:77
 msgctxt "Content/Federation/*/Noun"
 msgid "Followers"
 msgstr "Seguidores"
 
-#: front/src/components/manage/library/LibrariesTable.vue:53
-msgctxt "Content/*/*/Noun"
-msgid "Followers"
-msgstr "Seguidores"
-
-#: front/src/views/content/remote/Card.vue:103
+#: front/src/views/content/remote/Card.vue:116
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Following"
 msgstr "Seguindo"
 
-#: front/src/components/mixins/Translations.vue:84
-#: front/src/components/mixins/Translations.vue:85
-#, fuzzy
+#: front/src/components/mixins/Translations.vue:96
+#: front/src/components/mixins/Translations.vue:97
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Follows"
-msgstr "Seguir"
+msgstr "Seguidos"
 
-#: front/src/components/library/TrackBase.vue:17
+#: front/src/components/library/TrackBase.vue:245
 msgctxt "Content/Track/Paragraph"
-msgid ""
-"From album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> by <a"
-" class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
-msgstr ""
+msgid "From album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgstr "Do álbum <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> por <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
 
 #: front/src/components/auth/Authorize.vue:28
-#, fuzzy
 msgctxt "Content/Auth/Label/Noun"
 msgid "Full access"
-msgstr "Desativar acesso"
+msgstr "Acesso total"
 
 #: front/src/components/auth/SubsonicTokenForm.vue:7
 msgctxt "Content/Settings/Paragraph'"
-msgid ""
-"Funkwhale is compatible with other music players that support the Subsonic "
-"API."
-msgstr ""
-"O Funkwhale funciona em outros reprodutores de música compatíveis com a API "
-"Subsonic."
-
-#: front/src/components/Home.vue:90
-msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale is dead simple to use."
-msgstr "O Funkwhale é muito fácil de usar."
-
-#: front/src/components/Home.vue:39
-msgctxt "Content/Home/Paragraph"
-msgid ""
-"Funkwhale is designed to make it easy to listen to music you like, or to "
-"discover new artists."
-msgstr ""
-"O Funkwhale foi feito para ser fácil de ouvir as músicas que você curte ou "
-"conhecer novos(as) artistas."
+msgid "Funkwhale is compatible with other music players that support the Subsonic API."
+msgstr "O Funkwhale funciona em outros reprodutores de música compatíveis com a API Subsonic."
 
-#: front/src/components/Home.vue:111
+#: front/src/components/Home.vue:88
+#, fuzzy
 msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale is free and gives you control on your music."
+msgid "Funkwhale is free and developped by a friendly community of volunteers."
 msgstr "O Funkwhale é gratuito e te coloca no controle de suas músicas."
 
-#: front/src/components/Home.vue:66
-msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale takes care of handling your music"
-msgstr "O Funkwhale cuida da organização de suas músicas"
+#: front/src/components/About.vue:78
+msgctxt "*/*/*"
+msgid "Funkwhale version"
+msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:38
+#: front/src/components/ShortcutsModal.vue:56
 msgctxt "Popup/Keyboard shortcuts/Title"
 msgid "General shortcuts"
 msgstr "Atalhos gerais"
@@ -2049,35 +2166,17 @@ msgctxt "Content/Admin/Button.Label/Verb"
 msgid "Get a new invitation"
 msgstr "Solicitar novo convite"
 
-#: front/src/components/Home.vue:13
-msgctxt "Content/Home/Button.Label/Verb"
-msgid "Get me to the library"
-msgstr "Me leve à biblioteca"
-
-#: front/src/components/Home.vue:70
-msgctxt "Content/Home/List item/Verb"
-msgid ""
-"Get quality metadata about your music thanks to <a href=\"%{ url }\" "
-"target=\"_blank\">MusicBrainz</a>"
-msgstr ""
-"Tenha metadados de qualidade sobre suas músicas graças ao <a href=\"%{ url "
-"}\" target=\"_blank\">MusicBrainz</a>"
-
 #: front/src/views/content/Home.vue:12 src/views/content/Home.vue:19
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Get started"
 msgstr "Comece agora"
 
-#: front/src/components/Footer.vue:37
+#: front/src/components/Footer.vue:45
+#: src/components/library/ImportStatusModal.vue:45
 msgctxt "Footer/*/Link"
 msgid "Getting help"
 msgstr "Procurar ajuda"
 
-#: front/src/components/library/ImportStatusModal.vue:45
-msgctxt "Popup/Import/Table.Label/Noun"
-msgid "Getting help"
-msgstr "Procurar ajuda"
-
 #: front/src/components/common/ActionTable.vue:35
 #: front/src/components/common/ActionTable.vue:56
 msgctxt "Content/*/Button.Label/Short, Verb"
@@ -2089,11 +2188,20 @@ msgctxt "Content/*/Button.Label/Verb"
 msgid "Go to home page"
 msgstr "Ir à página inicial"
 
+#: front/src/views/Notifications.vue:27 src/views/Notifications.vue:61
+msgctxt "Content/Notifications/Button.Label"
+msgid "Got it!"
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:128
-#, fuzzy
 msgctxt "Content/Settings/Title"
 msgid "Hidden artists"
-msgstr "Explorando artistas"
+msgstr "Artistas ocultados"
+
+#: front/src/components/About.vue:155
+msgctxt "*/*/*/Verb"
+msgid "Hide"
+msgstr ""
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:114
 msgctxt "Content/Moderation/Help text"
@@ -2101,63 +2209,52 @@ msgid "Hide account or domain content, except from followers."
 msgstr "Ocultar conteúdo da conta ou domínio, exceto de seguidores."
 
 #: front/src/components/moderation/FilterModal.vue:40
-#, fuzzy
 msgctxt "Popup/*/Button.Label"
 msgid "Hide content"
-msgstr "Adicionar conteúdo"
+msgstr "Ocultar conteúdo"
 
-#: front/src/components/audio/PlayButton.vue:26
+#: front/src/components/audio/PlayButton.vue:31
 msgctxt "*/Queue/Dropdown/Button/Label/Short"
 msgid "Hide content from this artist"
-msgstr ""
+msgstr "Ocultar conteúdo deste(a) artista"
 
-#: front/src/components/audio/Player.vue:643
+#: front/src/components/audio/Player.vue:669
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Hide content from this artist…"
-msgstr ""
+msgstr "Ocultar conteúdo deste(a) artista…"
 
 #: front/src/components/library/Home.vue:65
 msgctxt "Head/Home/Title"
 msgid "Home"
 msgstr "Início"
 
-#: front/src/components/instance/Stats.vue:36
-msgctxt "Content/About/Paragraph/Unit"
-msgid "Hours of music"
-msgstr "Horas de música"
-
 #: front/src/components/auth/SubsonicTokenForm.vue:10
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"However, accessing Funkwhale from those clients require a separate password "
-"you can set below."
-msgstr ""
-"Porém, para acessar o Funkwhale a partir desses clientes você precisa de uma"
-" senha que pode ser configurada abaixo."
+msgid "However, accessing Funkwhale from those clients require a separate password you can set below."
+msgstr "Porém, para acessar o Funkwhale a partir desses clientes você precisa de uma senha que pode ser configurada abaixo."
 
 #: front/src/views/auth/PasswordResetConfirm.vue:24
+#, fuzzy
 msgctxt "Content/Signup/Paragraph"
-msgid ""
-"If the email address provided in the previous step is valid and binded to a "
-"user account, you should receive an email with reset instructions in the "
-"next couple of minutes."
-msgstr ""
-"Se o endereço de e-mail inserido anteriormente for válido e associado a uma "
-"conta de usuário, você receberá um e-mail com as instruções de redefinição "
-"nos próximos minutos."
+msgid "If the email address provided in the previous step is valid and linked to a user account, you should receive an email with reset instructions in the next couple of minutes."
+msgstr "Se o endereço de e-mail inserido anteriormente for válido e associado a uma conta de usuário, você receberá um e-mail com as instruções de redefinição nos próximos minutos."
 
 #: front/src/components/auth/Settings.vue:205
 msgctxt "Content/Applications/Paragraph"
-msgid ""
-"If you authorize third-party applications to access your data, those "
-"applications will be listed here."
-msgstr ""
+msgid "If you authorize third-party applications to access your data, those applications will be listed here."
+msgstr "Se você permitir que aplicativos de terceiros acessem seus dados, eles aparecerão aqui."
 
-#: front/src/components/library/ImportStatusModal.vue:3
+#: front/src/components/mixins/Translations.vue:46
+#: front/src/components/mixins/Translations.vue:47
 #, fuzzy
+msgctxt "Content/Moderation/Dropdown"
+msgid "Illegal content"
+msgstr "Ocultar conteúdo"
+
+#: front/src/components/library/ImportStatusModal.vue:3
 msgctxt "Popup/Import/Title"
 msgid "Import detail"
-msgstr "Data de importação"
+msgstr "Detalhe da importação"
 
 #: front/src/components/library/FileUpload.vue:50
 msgctxt "Content/Library/Input.Label/Noun"
@@ -2165,14 +2262,10 @@ msgid "Import reference"
 msgstr "Importar referência"
 
 #: front/src/components/manage/library/UploadsTable.vue:20
-#: front/src/views/content/libraries/FilesTable.vue:11
-#: front/src/views/content/libraries/FilesTable.vue:59
-msgctxt "Content/Library/*/Noun"
-msgid "Import status"
-msgstr "Importar status"
-
 #: front/src/components/manage/library/UploadsTable.vue:64
 #: front/src/views/admin/library/UploadDetail.vue:131
+#: front/src/views/content/libraries/FilesTable.vue:11
+#: front/src/views/content/libraries/FilesTable.vue:59
 msgctxt "Content/*/*/Noun"
 msgid "Import status"
 msgstr "Importar status"
@@ -2186,18 +2279,17 @@ msgstr "Importado"
 #: front/src/components/federation/FetchButton.vue:47
 msgctxt "*/*/Error"
 msgid "Impossible to connect to the remote server"
-msgstr ""
+msgstr "não foi possível se conectar com o servidor remoto"
 
 #: front/src/components/moderation/FilterModal.vue:26
-#, fuzzy
 msgctxt "Popup/Moderation/List item"
 msgid "In \"Recently added\" widget"
-msgstr "Adicionado recentemente"
+msgstr "No widget \"Recentemente adicionado\""
 
 #: front/src/components/moderation/FilterModal.vue:27
 msgctxt "Popup/Moderation/List item"
 msgid "In artists and album listings"
-msgstr ""
+msgstr "Em listas de artistas e álbuns"
 
 #: front/src/components/favorites/TrackFavoriteIcon.vue:3
 msgctxt "Content/Track/Button.Message"
@@ -2207,25 +2299,24 @@ msgstr "Nos favoritos"
 #: front/src/components/moderation/FilterModal.vue:25
 msgctxt "Popup/Moderation/List item"
 msgid "In other users favorites and listening history"
-msgstr ""
+msgstr "Nos favoritos e histórico de escutadas de outros usuários"
 
 #: front/src/components/moderation/FilterModal.vue:28
 msgctxt "Popup/Moderation/List item"
 msgid "In radio suggestions"
-msgstr ""
+msgstr "Nas sugestões de rádios"
 
-#: front/src/components/manage/users/UsersTable.vue:54
+#: front/src/components/manage/users/UsersTable.vue:55
 msgctxt "Content/Admin/Table"
 msgid "Inactive"
 msgstr "Inativo"
 
-#: front/src/components/ShortcutsModal.vue:71
+#: front/src/components/ShortcutsModal.vue:124
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Increase volume"
 msgstr "Aumentar volume"
 
 #: front/src/components/playlists/Editor.vue:41
-#, fuzzy
 msgctxt "Content/Playlist/Button.Label/Verb"
 msgid "Insert from queue (%{ count } track)"
 msgid_plural "Insert from queue (%{ count } tracks)"
@@ -2234,12 +2325,11 @@ msgstr[1] "Inserir da fila (%{ count } faixas)"
 
 #: front/src/components/mixins/Translations.vue:16
 #: front/src/components/mixins/Translations.vue:17
-#, fuzzy
 msgctxt "Content/Settings/Dropdown/Short"
 msgid "Instance"
-msgstr "Dados da instância"
+msgstr "Instância"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:71
+#: front/src/views/admin/moderation/DomainsDetail.vue:99
 msgctxt "Content/Moderation/Title"
 msgid "Instance data"
 msgstr "Dados da instância"
@@ -2260,26 +2350,29 @@ msgid "Instance settings"
 msgstr "Configurações da instância"
 
 #: front/src/components/SetInstanceModal.vue:19
-#, fuzzy
 msgctxt "Popup/Instance/Input.Label/Noun"
 msgid "Instance URL"
-msgstr "Dados da instância"
+msgstr "Link da instância"
+
+#: front/src/components/manage/moderation/ReportCard.vue:92
+#: front/src/components/manage/moderation/ReportCard.vue:203
+msgctxt "Content/*/*/Noun"
+msgid "Internal notes"
+msgstr ""
 
 #: front/src/components/library/FileUpload.vue:268
 msgctxt "Content/Library/Help text"
-msgid ""
-"Invalid file type, ensure you are uploading an audio file. Supported file "
-"extensions are %{ extensions }"
-msgstr ""
-"Formato de arquivo inválido. Certifique-se de estar enviando um arquivo de "
-"áudio. As extensões suportadas são %{ extensions }"
+msgid "Invalid file type, ensure you are uploading an audio file. Supported file extensions are %{ extensions }"
+msgstr "Formato de arquivo inválido. Certifique-se de estar enviando um arquivo de áudio. As extensões suportadas são %{ extensions }"
 
 #: front/src/components/library/ImportStatusModal.vue:139
+#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:46
 msgctxt "Popup/Import/Error.Label"
 msgid "Invalid metadata"
-msgstr ""
+msgstr "Metadado inválido"
 
-#: front/src/components/auth/Signup.vue:44
+#: front/src/components/auth/SignupForm.vue:40
 #: front/src/components/manage/users/InvitationForm.vue:11
 msgctxt "Content/*/Input.Label"
 msgid "Invitation code"
@@ -2291,7 +2384,13 @@ msgctxt "*/Admin/*/Noun"
 msgid "Invitations"
 msgstr "Convites"
 
-#: front/src/components/Footer.vue:41
+#: front/src/components/manage/moderation/DomainsTable.vue:9
+#: front/src/views/admin/moderation/DomainsDetail.vue:106
+msgctxt "Content/Moderation/*/Adjective"
+msgid "Is present on allow-list"
+msgstr ""
+
+#: front/src/components/Footer.vue:49
 msgctxt "Footer/*/List item.Link"
 msgid "Issue tracker"
 msgstr "Registro de bugs"
@@ -2299,19 +2398,20 @@ msgstr "Registro de bugs"
 #: front/src/components/SetInstanceModal.vue:5
 msgctxt "Popup/Instance/Error message.Title"
 msgid "It is not possible to connect to the given URL"
-msgstr ""
+msgstr "Não foi possível entrar neste link"
 
-#: front/src/components/Home.vue:50
-msgctxt "Content/Home/List item/Verb"
-msgid "Keep a track of your favorite songs"
-msgstr "Acompanhe suas músicas favoritas"
+#: front/src/components/mixins/Translations.vue:65
+#: front/src/components/mixins/Translations.vue:66
+msgctxt "*/*/*/Noun"
+msgid "Items"
+msgstr ""
 
 #: front/src/components/Footer.vue:33 src/components/ShortcutsModal.vue:3
 msgctxt "*/*/*/Noun"
 msgid "Keyboard shortcuts"
 msgstr "Atalhos de teclado"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:161
+#: front/src/views/admin/moderation/DomainsDetail.vue:198
 msgctxt "Content/Moderation/Table.Label.Link"
 msgid "Known accounts"
 msgstr "Contas conhecidas"
@@ -2322,15 +2422,15 @@ msgid "Known libraries"
 msgstr "Bibliotecas conhecidas"
 
 #: front/src/components/manage/users/UsersTable.vue:41
-#: front/src/components/mixins/Translations.vue:58
-#: front/src/views/admin/moderation/AccountsDetail.vue:205
-#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:70
+#: front/src/views/admin/moderation/AccountsDetail.vue:206
+#: front/src/components/mixins/Translations.vue:71
 msgctxt "Content/Profile/Table.Label/Short, Noun (Value is a date)"
 msgid "Last activity"
 msgstr "Última atividade"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:188
-#: front/src/views/admin/moderation/DomainsDetail.vue:78
+#: front/src/views/admin/moderation/AccountsDetail.vue:189
+#: front/src/views/admin/moderation/DomainsDetail.vue:115
 msgctxt "Content/*/Table.Label"
 msgid "Last checked"
 msgstr "Última verificação"
@@ -2345,13 +2445,13 @@ msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Last seen"
 msgstr "Última visualização"
 
-#: front/src/components/mixins/Translations.vue:47
-#: front/src/components/mixins/Translations.vue:48
+#: front/src/components/mixins/Translations.vue:57
+#: front/src/components/mixins/Translations.vue:58
 msgctxt "Content/Moderation/Dropdown/Noun"
 msgid "Last seen date"
 msgstr "Data da última visualização"
 
-#: front/src/views/content/remote/Card.vue:60
+#: front/src/views/content/remote/Card.vue:73
 msgctxt "Content/Library/Card.List item/Noun"
 msgid "Last update:"
 msgstr "Última atualização:"
@@ -2361,61 +2461,60 @@ msgctxt "Modal/*/Button.Label/Short, Verb"
 msgid "Launch"
 msgstr "Executar"
 
-#: front/src/components/Home.vue:10
-msgctxt "Content/Home/Button.Label/Verb"
-msgid "Learn more about this instance"
-msgstr "Veja mais sobre esta instância"
+#: front/src/components/Home.vue:35
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Learn more"
+msgstr "Ver mais…"
 
 #: front/src/components/manage/users/InvitationForm.vue:58
 msgctxt "Content/Admin/Input.Placeholder"
 msgid "Leave empty for a random code"
 msgstr "Deixe vazio para um código aleatório"
 
-#: front/src/components/audio/EmbedWizard.vue:7
+#: front/src/components/audio/EmbedWizard.vue:17
 msgctxt "Popup/Embed/Paragraph"
 msgid "Leave empty for a responsive widget"
 msgstr "Deixar vazio para um widget responsivo"
 
-#: front/src/views/admin/library/AlbumDetail.vue:232
-#: front/src/views/admin/library/ArtistDetail.vue:221
-#: front/src/views/admin/library/TrackDetail.vue:284
-#: front/src/views/admin/moderation/AccountsDetail.vue:327
-#: front/src/views/admin/moderation/DomainsDetail.vue:234
-#: front/src/views/content/Base.vue:5
+#: front/src/components/mixins/Translations.vue:64
+#: front/src/components/mixins/Translations.vue:65
 msgctxt "*/*/*/Noun"
-msgid "Libraries"
-msgstr "Bibliotecas"
+msgid "Length"
+msgstr ""
 
+#: front/src/views/admin/library/AlbumDetail.vue:248
+#: front/src/views/admin/library/ArtistDetail.vue:236
 #: front/src/views/admin/library/Base.vue:17
 #: front/src/views/admin/library/LibrariesList.vue:24
-msgctxt "*/*/*"
+#: front/src/views/admin/library/TrackDetail.vue:300
+#: front/src/views/admin/moderation/AccountsDetail.vue:339
+#: front/src/views/admin/moderation/DomainsDetail.vue:271
+#: front/src/views/content/Base.vue:5
+msgctxt "*/*/*/Noun"
 msgid "Libraries"
 msgstr "Bibliotecas"
 
-#: front/src/components/mixins/Translations.vue:72
-#: front/src/components/mixins/Translations.vue:73
-#, fuzzy
+#: front/src/components/mixins/Translations.vue:84
+#: front/src/components/mixins/Translations.vue:85
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Libraries and uploads"
-msgstr "Biblioteca atualizada"
+msgstr "Bibliotecas e envios"
 
 #: front/src/views/content/libraries/Form.vue:2
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Libraries help you organize and share your music collections. You can upload"
-" your own music collection to Funkwhale and share it with your friends and "
-"family."
-msgstr ""
-"Bibliotecas ajudam você a organizar e compartilhar suas coleções de músicas."
-" Você pode enviar sua própria coleção de músicas ao Funkwhale e compartilhar"
-" com seus amigos e família."
+msgid "Libraries help you organize and share your music collections. You can upload your own music collection to Funkwhale and share it with your friends and family."
+msgstr "Bibliotecas ajudam você a organizar e compartilhar suas coleções de músicas. Você pode enviar sua própria coleção de músicas ao Funkwhale e compartilhar com seus amigos e família."
 
-#: front/src/components/Sidebar.vue:85 src/components/instance/Stats.vue:30
+#: front/src/components/Sidebar.vue:85
 #: front/src/components/manage/library/UploadsTable.vue:60
-#: front/src/components/manage/users/UsersTable.vue:173
+#: front/src/components/manage/users/UsersTable.vue:174
+#: front/src/components/mixins/Report.vue:77
 #: front/src/views/admin/library/UploadDetail.vue:144
-#: front/src/views/admin/moderation/AccountsDetail.vue:498
-msgctxt "*/*/*"
+#: front/src/views/admin/moderation/AccountsDetail.vue:518 src/entities.js:132
+#: front/src/components/mixins/Report.vue:78
+#, fuzzy
+msgctxt "*/*/*/Noun"
 msgid "Library"
 msgstr "Biblioteca"
 
@@ -2425,10 +2524,9 @@ msgid "Library created"
 msgstr "Bibliloteca criada"
 
 #: front/src/views/admin/library/LibraryDetail.vue:78
-#, fuzzy
 msgctxt "Content/Moderation/Title"
 msgid "Library data"
-msgstr "Biblioteca atualizada"
+msgstr "Dados da biblioteca"
 
 #: front/src/views/content/libraries/Form.vue:123
 msgctxt "Content/Library/Message"
@@ -2436,10 +2534,9 @@ msgid "Library deleted"
 msgstr "Biblioteca excluída"
 
 #: front/src/views/admin/library/EditsList.vue:4
-#, fuzzy
 msgctxt "Content/Admin/Title/Noun"
 msgid "Library edits"
-msgstr "Arquivos da biblioteca"
+msgstr "Edições na biblioteca"
 
 #: front/src/views/content/libraries/Form.vue:100
 msgctxt "Content/Library/Message"
@@ -2448,30 +2545,45 @@ msgstr "Biblioteca atualizada"
 
 #: front/src/components/library/TrackDetail.vue:19
 #: front/src/components/manage/library/TracksTable.vue:43
-#: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:61
+#: front/src/views/admin/library/TrackDetail.vue:165 src/edits.js:84
+#: front/src/entities.js:115
 msgctxt "Content/*/*/Noun"
 msgid "License"
 msgstr "Licença"
 
-#: front/src/views/admin/library/AlbumDetail.vue:157
-#: front/src/views/admin/library/ArtistDetail.vue:146
-#: front/src/views/admin/library/TrackDetail.vue:209
-msgctxt "*/*/*/Noun"
-msgid "Listenings"
+#: front/src/components/Footer.vue:90
+msgctxt "Footer/Settings/Dropdown.Label/Theme name"
+msgid "Light"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:80
-#: front/src/components/mixins/Translations.vue:81
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Listenings"
+#: front/src/views/admin/library/AlbumDetail.vue:188
+#: front/src/views/admin/library/ArtistDetail.vue:176
+#: front/src/views/admin/library/LibraryDetail.vue:179
+#: front/src/views/admin/library/TrackDetail.vue:240
+#: front/src/views/admin/moderation/AccountsDetail.vue:269
+msgctxt "Content/Moderation/Table.Label/Noun"
+msgid "Linked reports"
 msgstr ""
 
+#: front/src/components/Home.vue:135
+msgctxt "Content/Home/Link"
+msgid "Listen to public albums and playlists shared on this pod"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:92
+#: front/src/views/admin/library/AlbumDetail.vue:163
+#: front/src/views/admin/library/ArtistDetail.vue:151
+#: front/src/views/admin/library/TrackDetail.vue:215
+#: front/src/components/mixins/Translations.vue:93
+msgctxt "*/*/*/Noun"
+msgid "Listenings"
+msgstr "Escutadas"
+
 #: front/src/components/audio/track/Table.vue:25
 #: front/src/components/library/ArtistDetail.vue:28
-#, fuzzy
 msgctxt "Content/*/Button.Label"
 msgid "Load more…"
-msgstr "Carregando seguidores…"
+msgstr "Ver mais…"
 
 #: front/src/views/content/libraries/Detail.vue:21
 msgctxt "Content/Library/Paragraph"
@@ -2489,16 +2601,15 @@ msgctxt "Content/Library/Paragraph"
 msgid "Loading library data…"
 msgstr "Carregando dados da biblioteca…"
 
-#: front/src/views/Notifications.vue:19
+#: front/src/views/Notifications.vue:84
 msgctxt "Content/Notifications/Paragraph"
 msgid "Loading notifications…"
 msgstr "Carregando notificações…"
 
 #: front/src/views/content/remote/Home.vue:3
-#, fuzzy
 msgctxt "Content/Library/Paragraph"
 msgid "Loading remote libraries…"
-msgstr "Carregando bibliotecas remotas..."
+msgstr "Carregando bibliotecas remotas…"
 
 #: front/src/views/content/libraries/Quota.vue:4
 msgctxt "Content/Library/Paragraph"
@@ -2515,6 +2626,7 @@ msgstr "Carregando seus favoritos…"
 #: front/src/components/manage/library/LibrariesTable.vue:75
 #: front/src/components/manage/library/TracksTable.vue:71
 #: front/src/components/manage/library/UploadsTable.vue:99
+#: front/src/components/manage/moderation/ReportCard.vue:173
 #: front/src/views/admin/library/AlbumDetail.vue:19
 #: front/src/views/admin/library/ArtistDetail.vue:18
 #: front/src/views/admin/library/LibraryDetail.vue:18
@@ -2522,7 +2634,7 @@ msgstr "Carregando seus favoritos…"
 #: front/src/views/admin/library/UploadDetail.vue:19
 msgctxt "Content/Moderation/*/Short, Noun"
 msgid "Local"
-msgstr ""
+msgstr "Local"
 
 #: front/src/components/manage/moderation/AccountsTable.vue:59
 #: front/src/views/admin/moderation/AccountsDetail.vue:18
@@ -2530,12 +2642,12 @@ msgctxt "Content/Moderation/*/Short, Noun"
 msgid "Local account"
 msgstr "Conta local"
 
-#: front/src/components/auth/Login.vue:84
+#: front/src/components/Home.vue:96 src/views/auth/Login.vue:29
 msgctxt "Head/Login/Title"
 msgid "Log In"
 msgstr "Entrar"
 
-#: front/src/components/auth/Login.vue:4
+#: front/src/views/auth/Login.vue:4
 msgctxt "Content/Login/Title/Verb"
 msgid "Log in to your Funkwhale account"
 msgstr "Entrar com sua conta Funkwhale"
@@ -2550,7 +2662,7 @@ msgctxt "Sidebar/Profile/List item.Link"
 msgid "Logged in as %{ username }"
 msgstr "Entrou como  %{ username }"
 
-#: front/src/components/Sidebar.vue:54 src/components/auth/Login.vue:42
+#: front/src/components/Sidebar.vue:54 src/components/auth/LoginForm.vue:41
 msgctxt "*/Login/*/Verb"
 msgid "Login"
 msgstr "Entrada"
@@ -2570,34 +2682,40 @@ msgctxt "Content/Library/Paragraph"
 msgid "Looks like you don't have a library, it's time to create one."
 msgstr "Parece que você não possui nenhuma biblioteca. É hora de criar uma."
 
-#: front/src/components/audio/Player.vue:632
-#: src/components/audio/Player.vue:633
+#: front/src/components/audio/Player.vue:658
+#: src/components/audio/Player.vue:659
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping disabled. Click to switch to single-track looping."
 msgstr "Repetição desativada. Clique para repetir uma única faixa."
 
-#: front/src/components/audio/Player.vue:635
-#: src/components/audio/Player.vue:636
+#: front/src/components/audio/Player.vue:661
+#: src/components/audio/Player.vue:662
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping on a single track. Click to switch to whole queue looping."
 msgstr "Repetindo uma única faixa. Clique para repetir a fila inteira."
 
-#: front/src/components/audio/Player.vue:638
-#: src/components/audio/Player.vue:639
+#: front/src/components/audio/Player.vue:664
+#: src/components/audio/Player.vue:665
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping on whole queue. Click to disable looping."
 msgstr "Repetindo a fila inteira. Clique para desativar a repetição."
 
-#: front/src/components/Sidebar.vue:223
+#: front/src/components/Sidebar.vue:230
 msgctxt "Sidebar/*/Hidden text"
 msgid "Main menu"
 msgstr "Menu principal"
 
-#: front/src/views/admin/library/Base.vue:31
+#: front/src/views/admin/library/Base.vue:34
 msgctxt "Head/Admin/Title"
 msgid "Manage library"
 msgstr "Gerenciar biblioteca"
 
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:8
+#, fuzzy
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Manage moderation rules for %{ obj }"
+msgstr "Sob regra de moderação"
+
 #: front/src/components/playlists/PlaylistModal.vue:3
 msgctxt "Popup/Playlist/Title/Verb"
 msgid "Manage playlists"
@@ -2613,7 +2731,7 @@ msgctxt "Content/Playlist/Button.Label/Verb"
 msgid "Manage your playlists"
 msgstr "Gerenciar suas listas de reprodução"
 
-#: front/src/views/Notifications.vue:14
+#: front/src/views/Notifications.vue:79
 msgctxt "Content/Notifications/Button.Label/Verb"
 msgid "Mark all as read"
 msgstr "Marcar tudo como lido"
@@ -2628,87 +2746,99 @@ msgctxt "Content/Notifications/Button.Tooltip/Verb"
 msgid "Mark as unread"
 msgstr "Marcar como não lido"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:310
+#: front/src/views/admin/moderation/AccountsDetail.vue:321
 msgctxt "Content/*/*/Unit"
 msgid "MB"
 msgstr "MB"
 
-#: front/src/components/audio/Player.vue:625
+#: front/src/components/audio/Player.vue:651
 msgctxt "Sidebar/Player/Hidden text"
 msgid "Media player"
 msgstr "Reprodutor de mídia"
 
 #: front/src/components/auth/Profile.vue:12
-#, fuzzy
 msgctxt "Content/Profile/Paragraph"
 msgid "Member since %{ date }"
-msgstr "Registrado desde %{ date }"
+msgstr "Membro desde %{ date }"
+
+#: front/src/components/manage/moderation/ReportCard.vue:109
+#: front/src/components/moderation/ReportModal.vue:41
+msgctxt "*/*/Field.Label/Noun"
+msgid "Message"
+msgstr ""
 
 #: front/src/components/Footer.vue:32
 msgctxt "Footer/*/List item.Link"
 msgid "Mobile and desktop apps"
-msgstr "Aplicativos móvel e de desktop"
+msgstr "Aplicativos móveis e de desktop"
+
+#: front/src/components/Home.vue:143
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Mobile apps"
+msgstr "Aplicativos móveis e de desktop"
 
 #: front/src/components/Sidebar.vue:96
-#: src/components/manage/users/UsersTable.vue:177
-#: front/src/views/admin/moderation/AccountsDetail.vue:502
-#: front/src/views/admin/moderation/Base.vue:21
+#: src/components/manage/users/UsersTable.vue:178
+#: front/src/views/admin/Settings.vue:85
+#: front/src/views/admin/moderation/AccountsDetail.vue:522
+#: front/src/views/admin/moderation/Base.vue:43
 msgctxt "*/Moderation/*"
 msgid "Moderation"
 msgstr "Moderação"
 
 #: front/src/views/admin/moderation/AccountsDetail.vue:78
-#: front/src/views/admin/moderation/DomainsDetail.vue:42
+#: front/src/views/admin/moderation/DomainsDetail.vue:70
 msgctxt "Content/Moderation/Card.Paragraph"
-msgid ""
-"Moderation policies help you control how your instance interact with a given"
-" domain or account."
-msgstr ""
-"Regras de moderação ajudam você a controlar como sua instância interage com "
-"um determinado domínio ou conta."
+msgid "Moderation policies help you control how your instance interact with a given domain or account."
+msgstr "Regras de moderação ajudam você a controlar como sua instância interage com um determinado domínio ou conta."
 
-#: front/src/components/library/EditCard.vue:5
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:4
 #, fuzzy
+msgctxt "Content/Moderation/Button.Label"
+msgid "Moderation rules…"
+msgstr "Editar regra de moderação"
+
+#: front/src/components/library/EditCard.vue:5
 msgctxt "Content/Library/Card/Short"
 msgid "Modification %{ id }"
-msgstr "Data de modificação"
+msgstr "Modificação %{ id }"
 
-#: front/src/components/mixins/Translations.vue:48
-#: front/src/components/mixins/Translations.vue:49
+#: front/src/components/mixins/Translations.vue:58
+#: front/src/components/mixins/Translations.vue:59
 msgctxt "Content/Playlist/Dropdown/Noun"
 msgid "Modification date"
 msgstr "Data de modificação"
 
-#: front/src/components/library/AlbumBase.vue:42
-#: front/src/components/library/ArtistBase.vue:53
-#: front/src/components/library/TrackBase.vue:61
+#: front/src/components/audio/PlayButton.vue:100
+#: front/src/components/library/AlbumBase.vue:43
+#: front/src/components/library/ArtistBase.vue:54
+#: front/src/components/library/TrackBase.vue:59
 msgctxt "*/*/Button.Label/Noun"
 msgid "More…"
-msgstr ""
+msgstr "Mais…"
 
 #: front/src/components/Sidebar.vue:63 src/views/admin/Settings.vue:82
 msgctxt "*/*/*/Noun"
 msgid "Music"
 msgstr "Músicas"
 
-#: front/src/components/audio/Player.vue:631
+#: front/src/components/audio/Player.vue:657
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Mute"
 msgstr "Silenciar"
 
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:24
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:115
-#, fuzzy
 msgctxt "Content/Moderation/*/Verb"
 msgid "Mute activity"
-msgstr "Última atividade"
+msgstr "Silenciar atividade"
 
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:28
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:119
-#, fuzzy
 msgctxt "Content/Moderation/*/Verb"
 msgid "Mute notifications"
-msgstr "Suas notificações"
+msgstr "Silenciar notificações"
 
 #: front/src/components/Sidebar.vue:34
 msgctxt "Sidebar/Profile/Title"
@@ -2740,8 +2870,8 @@ msgctxt "Content/Library/Title"
 msgid "My libraries"
 msgstr "Minhas bibliotecas"
 
-#: front/src/components/audio/track/Row.vue:40
-#: src/components/library/EditCard.vue:60
+#: front/src/components/About.vue:105 src/components/audio/track/Row.vue:40
+#: front/src/components/library/EditCard.vue:60
 #: front/src/components/library/EditForm.vue:70
 #: front/src/components/library/TrackDetail.vue:34
 #: front/src/components/library/TrackDetail.vue:43
@@ -2751,54 +2881,56 @@ msgstr "Minhas bibliotecas"
 #: front/src/components/manage/library/TracksTable.vue:76
 #: front/src/components/manage/library/UploadsTable.vue:121
 #: front/src/components/manage/library/UploadsTable.vue:128
-#: front/src/components/manage/users/UsersTable.vue:61
+#: front/src/components/manage/moderation/ReportCard.vue:78
+#: front/src/components/manage/moderation/ReportCard.vue:87
+#: front/src/components/manage/moderation/ReportCard.vue:193
+#: front/src/components/manage/users/UsersTable.vue:62
 #: front/src/views/admin/library/UploadDetail.vue:179
 #: front/src/views/admin/library/UploadDetail.vue:214
 #: front/src/views/admin/library/UploadDetail.vue:233
 #: front/src/views/admin/library/UploadDetail.vue:244
 #: front/src/views/admin/library/UploadDetail.vue:257
-#: front/src/views/admin/moderation/AccountsDetail.vue:192
-#: front/src/views/admin/moderation/DomainsDetail.vue:82
+#: front/src/views/admin/moderation/AccountsDetail.vue:193
+#: front/src/views/admin/moderation/DomainsDetail.vue:119
 #: front/src/views/content/libraries/FilesTable.vue:95
 #: front/src/views/content/libraries/FilesTable.vue:101
 msgctxt "*/*/*"
 msgid "N/A"
 msgstr "N/A"
 
-#: front/src/components/manage/library/LibrariesTable.vue:48
-#: front/src/components/manage/library/UploadsTable.vue:59
-msgctxt "*/*/*"
-msgid "Name"
-msgstr "Nome"
-
 #: front/src/components/auth/ApplicationForm.vue:9
-msgctxt "Content/Applications/Input.Label/Noun"
-msgid "Name"
-msgstr "Nome"
-
 #: front/src/components/auth/Settings.vue:133
 #: front/src/components/manage/library/ArtistsTable.vue:39
+#: front/src/components/manage/library/LibrariesTable.vue:48
+#: front/src/components/manage/library/TagsTable.vue:41
+#: front/src/components/manage/library/UploadsTable.vue:59
 #: front/src/components/manage/moderation/AccountsTable.vue:39
-#: front/src/components/manage/moderation/DomainsTable.vue:38
-#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/manage/moderation/DomainsTable.vue:46
+#: front/src/components/mixins/Translations.vue:63
 #: front/src/components/playlists/PlaylistModal.vue:45
-#: front/src/views/admin/library/ArtistDetail.vue:98
+#: front/src/views/admin/library/ArtistDetail.vue:103
 #: front/src/views/admin/library/LibraryDetail.vue:85
+#: front/src/views/admin/library/TagDetail.vue:68
 #: front/src/views/admin/library/UploadDetail.vue:92
-#: front/src/views/admin/moderation/DomainsDetail.vue:97
-#: front/src/views/content/libraries/Form.vue:10 src/edits.js:10
-#: front/src/components/mixins/Translations.vue:54
+#: front/src/views/admin/moderation/DomainsDetail.vue:134
+#: front/src/views/content/libraries/Form.vue:10 src/edits.js:17
+#: front/src/components/mixins/Translations.vue:64
 msgctxt "*/*/*/Noun"
 msgid "Name"
 msgstr "Nome"
 
+#: front/src/views/Notifications.vue:24 src/views/Notifications.vue:58
+msgctxt "*/*/*"
+msgid "Never"
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:88
 #: front/src/views/auth/PasswordResetConfirm.vue:14
 msgctxt "Content/Settings/Input.Label"
 msgid "New password"
 msgstr "Nova senha"
 
-#: front/src/components/Sidebar.vue:173
+#: front/src/components/Sidebar.vue:177
 msgctxt "Sidebar/Player/Paragraph"
 msgid "New tracks will be appended here automatically."
 msgstr "Novas faixas serão acrescentadas aqui automaticamente."
@@ -2806,23 +2938,20 @@ msgstr "Novas faixas serão acrescentadas aqui automaticamente."
 #: front/src/components/library/EditCard.vue:47
 msgctxt "Content/Library/Card.Table.Header/Short"
 msgid "New value"
-msgstr ""
+msgstr "Novo valor"
 
-#: front/src/components/audio/Player.vue:629
+#: front/src/components/audio/Player.vue:655
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Next track"
 msgstr "Próxima faixa"
 
-#: front/src/components/Sidebar.vue:130
+#: front/src/components/Sidebar.vue:134
+#: front/src/components/manage/moderation/DomainsTable.vue:13
+#: front/src/views/admin/moderation/DomainsDetail.vue:110
 msgctxt "*/*/*"
 msgid "No"
 msgstr "Não"
 
-#: front/src/components/Home.vue:95
-msgctxt "Content/Home/List item"
-msgid "No add-ons, no plugins : you only need a web library"
-msgstr "Sem add-ons, sem plugins: Você só precisa de uma biblioteca da web"
-
 #: front/src/components/audio/Search.vue:25
 msgctxt "Content/Search/Paragraph"
 msgid "No album matched your query"
@@ -2834,24 +2963,26 @@ msgid "No artist matched your query"
 msgstr "Artista não encontrado"
 
 #: front/src/components/library/TrackDetail.vue:14
-#, fuzzy
 msgctxt "Content/Track/Table.Paragraph"
 msgid "No copyright information available for this track"
-msgstr "Sem letras disponíveis para esta faixa."
+msgstr "Sem informações de direitos autorais para esta faixa"
+
+#: front/src/components/About.vue:25 src/components/Home.vue:25
+msgctxt "Content/Home/Paragraph"
+msgid "No description available."
+msgstr ""
 
 #: front/src/components/library/TrackDetail.vue:25
-#, fuzzy
 msgctxt "Content/Track/Table.Paragraph"
 msgid "No licensing information for this track"
-msgstr "Não temos informações de licenciamento para esta faixa"
+msgstr "Sem informações de licenciamento para esta faixa"
 
 #: front/src/components/federation/LibraryWidget.vue:6
 msgctxt "Content/Federation/Paragraph"
 msgid "No matching library."
 msgstr "Nenhuma biblioteca encontrada."
 
-#: front/src/views/Notifications.vue:28
-#, fuzzy
+#: front/src/views/Notifications.vue:93
 msgctxt "Content/Notifications/Paragraph"
 msgid "No notification to show."
 msgstr "Sem notificações."
@@ -2859,6 +2990,16 @@ msgstr "Sem notificações."
 #: front/src/components/common/EmptyState.vue:7
 msgctxt "Content/*/Paragraph"
 msgid "No results were found."
+msgstr "Sem resultados."
+
+#: front/src/components/About.vue:32
+msgctxt "Content/Home/Paragraph"
+msgid "No rules available."
+msgstr ""
+
+#: front/src/components/About.vue:39
+msgctxt "Content/Home/Paragraph"
+msgid "No terms available."
 msgstr ""
 
 #: front/src/components/mixins/Translations.vue:10
@@ -2877,18 +3018,22 @@ msgctxt "Content/Admin/Table"
 msgid "Not used"
 msgstr "Não usado"
 
-#: front/src/components/mixins/Translations.vue:100
-#: front/src/components/mixins/Translations.vue:101
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Notifications"
-msgstr "Notificações"
-
-#: front/src/components/Sidebar.vue:46 src/views/Notifications.vue:76
+#: front/src/components/Sidebar.vue:46
+#: src/components/mixins/Translations.vue:112
+#: front/src/views/Notifications.vue:151
+#: src/components/mixins/Translations.vue:113
 msgctxt "*/Notifications/*"
 msgid "Notifications"
 msgstr "Notificações"
 
-#: front/src/components/Footer.vue:47
+#: front/src/components/mixins/Translations.vue:47
+#: front/src/components/mixins/Translations.vue:48
+#, fuzzy
+msgctxt "Content/Moderation/Dropdown"
+msgid "Offensive content"
+msgstr "Ocultar conteúdo"
+
+#: front/src/components/Footer.vue:55
 msgctxt "Footer/*/List item.Link"
 msgid "Official website"
 msgstr "Site oficial"
@@ -2901,7 +3046,13 @@ msgstr "Senha antiga"
 #: front/src/components/library/EditCard.vue:46
 msgctxt "Content/Library/Card.Table.Header/Short"
 msgid "Old value"
-msgstr ""
+msgstr "Valor anterior"
+
+#: front/src/components/About.vue:90
+#, fuzzy
+msgctxt "*/*/*/State of registrations"
+msgid "Open"
+msgstr "Abrir"
 
 #: front/src/components/manage/users/InvitationsTable.vue:20
 msgctxt "Content/Admin/Dropdown/Adjective"
@@ -2910,49 +3061,47 @@ msgstr "Abrir"
 
 #: front/src/components/library/ImportStatusModal.vue:56
 msgctxt "Popup/Import/Table.Label/Value"
-msgid ""
-"Open a support thread (include the debug information below in your message)"
-msgstr ""
-
-#: front/src/components/library/AlbumBase.vue:73
-#: front/src/components/library/ArtistBase.vue:84
-#: front/src/components/library/TrackBase.vue:92
-#, fuzzy
+msgid "Open a support thread (include the debug information below in your message)"
+msgstr "Abra um tópico de suporte (inclua informação de depuração na mensagem)"
+
+#: front/src/components/library/AlbumBase.vue:87
+#: front/src/components/library/ArtistBase.vue:99
+#: front/src/components/library/TagDetail.vue:11
+#: front/src/components/library/TrackBase.vue:103
+#: front/src/components/manage/moderation/ReportCard.vue:128
 msgctxt "Content/Moderation/Link"
 msgid "Open in moderation interface"
-msgstr "Atualizar regra de moderação"
+msgstr "Abrir interface de moderação"
 
-#: front/src/views/admin/library/AlbumDetail.vue:31
-#: front/src/views/admin/library/ArtistDetail.vue:30
-#: front/src/views/admin/library/TrackDetail.vue:30
-#, fuzzy
+#: front/src/views/admin/library/AlbumDetail.vue:37
+#: front/src/views/admin/library/ArtistDetail.vue:35
+#: front/src/views/admin/library/TagDetail.vue:21
+#: front/src/views/admin/library/TrackDetail.vue:36
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open local profile"
-msgstr "Abrir perfil"
+msgstr "Abrir perfil local"
 
-#: front/src/views/admin/library/AlbumDetail.vue:46
-#: front/src/views/admin/library/ArtistDetail.vue:45
-#: front/src/views/admin/library/TrackDetail.vue:45
-#, fuzzy
+#: front/src/views/admin/library/AlbumDetail.vue:52
+#: front/src/views/admin/library/ArtistDetail.vue:50
+#: front/src/views/admin/library/TrackDetail.vue:51
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open on MusicBrainz"
-msgstr "Ver em MusicBrainz"
+msgstr "Abrir em MusicBrainz"
 
 #: front/src/views/admin/moderation/AccountsDetail.vue:23
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open profile"
 msgstr "Abrir perfil"
 
-#: front/src/views/admin/library/AlbumDetail.vue:54
-#: front/src/views/admin/library/ArtistDetail.vue:53
+#: front/src/views/admin/library/AlbumDetail.vue:60
+#: front/src/views/admin/library/ArtistDetail.vue:58
 #: front/src/views/admin/library/LibraryDetail.vue:49
-#: front/src/views/admin/library/TrackDetail.vue:53
+#: front/src/views/admin/library/TrackDetail.vue:59
 #: front/src/views/admin/library/UploadDetail.vue:50
 #: front/src/views/admin/moderation/AccountsDetail.vue:52
-#, fuzzy
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open remote profile"
-msgstr "Abrir perfil"
+msgstr "Abrir perfil remoto"
 
 #: front/src/views/admin/moderation/DomainsDetail.vue:16
 msgctxt "Content/Moderation/Link/Verb"
@@ -2968,6 +3117,7 @@ msgstr "Ou personalize sua regra"
 #: src/components/library/Radios.vue:41
 #: front/src/components/manage/library/EditsCardList.vue:37
 #: front/src/components/manage/users/UsersTable.vue:17
+#: front/src/views/admin/moderation/ReportsList.vue:42
 #: front/src/views/playlists/List.vue:25
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Order"
@@ -2975,40 +3125,51 @@ msgstr "Ordem"
 
 #: front/src/components/favorites/List.vue:24
 #: src/components/library/Albums.vue:15
-#: front/src/components/library/Artists.vue:15
+#: front/src/components/library/Artists.vue:19
 #: src/components/library/Radios.vue:33
 #: front/src/components/manage/library/AlbumsTable.vue:11
 #: front/src/components/manage/library/ArtistsTable.vue:11
 #: front/src/components/manage/library/EditsCardList.vue:29
 #: front/src/components/manage/library/LibrariesTable.vue:20
+#: front/src/components/manage/library/TagsTable.vue:11
 #: front/src/components/manage/library/TracksTable.vue:11
 #: front/src/components/manage/library/UploadsTable.vue:30
 #: front/src/components/manage/moderation/AccountsTable.vue:11
-#: front/src/components/manage/moderation/DomainsTable.vue:9
+#: front/src/components/manage/moderation/DomainsTable.vue:17
 #: front/src/components/manage/users/InvitationsTable.vue:9
 #: front/src/components/manage/users/UsersTable.vue:9
+#: front/src/views/admin/moderation/ReportsList.vue:34
 #: front/src/views/content/libraries/FilesTable.vue:21
 #: front/src/views/playlists/List.vue:17
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Ordering"
 msgstr "Ordenando"
 
-#: front/src/components/library/Albums.vue:23
-#: src/components/library/Artists.vue:23
+#: front/src/components/library/Albums.vue:27
+#: src/components/library/Artists.vue:27
 #: front/src/components/manage/library/AlbumsTable.vue:19
 #: front/src/components/manage/library/ArtistsTable.vue:19
 #: front/src/components/manage/library/LibrariesTable.vue:28
+#: front/src/components/manage/library/TagsTable.vue:19
 #: front/src/components/manage/library/TracksTable.vue:19
 #: front/src/components/manage/library/UploadsTable.vue:38
 #: front/src/components/manage/moderation/AccountsTable.vue:19
-#: front/src/components/manage/moderation/DomainsTable.vue:17
+#: front/src/components/manage/moderation/DomainsTable.vue:25
 #: front/src/views/content/libraries/FilesTable.vue:29
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Ordering direction"
 msgstr "Direção da ordem"
 
+#: front/src/components/mixins/Translations.vue:48
+#: front/src/components/mixins/Translations.vue:49
+msgctxt "Content/Moderation/Dropdown"
+msgid "Other"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:143
 #: front/src/components/manage/users/InvitationsTable.vue:38
-msgctxt "Content/Admin/Table.Label"
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Owner"
 msgstr "Dono(a)"
 
@@ -3027,12 +3188,15 @@ msgctxt "Content/*/Hidden text/Noun"
 msgid "Pagination"
 msgstr "Paginação"
 
-#: front/src/components/auth/Login.vue:33 src/components/auth/Signup.vue:40
-msgctxt "Content/*/Input.Label"
+#: front/src/components/auth/LoginForm.vue:32
+#: src/components/auth/Settings.vue:291
+#: front/src/components/auth/SignupForm.vue:36
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Password"
 msgstr "Senha"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:94
+#: front/src/components/auth/SubsonicTokenForm.vue:100
 msgctxt "Content/Settings/Message"
 msgid "Password updated"
 msgstr "Senha atualizada"
@@ -3042,15 +3206,15 @@ msgctxt "Content/Signup/Card.Title"
 msgid "Password updated successfully"
 msgstr "Senha atualizada com sucesso"
 
-#: front/src/components/audio/Player.vue:628
+#: front/src/components/audio/Player.vue:654
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Pause track"
 msgstr "Pausar faixa"
 
-#: front/src/components/ShortcutsModal.vue:59
+#: front/src/components/ShortcutsModal.vue:96
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Pause/play the current track"
-msgstr "Reproduzir/pausar a faixa atual"
+msgstr "Tocar/pausar a faixa atual"
 
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:12
 msgctxt "Content/Moderation/Card.List item"
@@ -3076,108 +3240,96 @@ msgctxt "Content/Library/Label"
 msgid "Pending files"
 msgstr "Arquivos pendentes"
 
-#: front/src/components/Sidebar.vue:225
+#: front/src/components/Sidebar.vue:232
 msgctxt "Sidebar/Notifications/Hidden text"
 msgid "Pending follow requests"
 msgstr "Solicitações de seguidor pendentes"
 
 #: front/src/components/library/EditCard.vue:29
 #: front/src/components/manage/library/EditsCardList.vue:18
-#, fuzzy
 msgctxt "Content/Admin/*/Noun"
 msgid "Pending review"
-msgstr "Arquivos pendentes"
+msgstr "Revisão pendente"
 
-#: front/src/components/Sidebar.vue:226
-#, fuzzy
+#: front/src/components/Sidebar.vue:233
 msgctxt "Sidebar/Moderation/Hidden text"
 msgid "Pending review edits"
-msgstr "Arquivos pendentes"
+msgstr "Edições de revisão pendente"
 
+#: front/src/components/auth/Settings.vue:176
 #: front/src/components/manage/users/UsersTable.vue:42
 #: front/src/views/admin/moderation/AccountsDetail.vue:166
-msgctxt "Content/Admin/Table.Label/Noun"
-msgid "Permissions"
-msgstr "Permissões"
-
-#: front/src/components/auth/Settings.vue:176
 msgctxt "Content/*/*/Noun"
 msgid "Permissions"
 msgstr "Permissões"
 
 #: front/src/components/audio/PlayButton.vue:9
-#: front/src/components/library/TrackBase.vue:26
+#: front/src/components/library/TrackBase.vue:24
 msgctxt "*/Queue/Button.Label/Short, Verb"
 msgid "Play"
-msgstr "Reproduzir"
+msgstr "Tocar"
 
 #: front/src/components/audio/album/Card.vue:48
-#: front/src/components/audio/artist/Card.vue:44
-#: front/src/components/library/AlbumBase.vue:20
+#: front/src/components/library/AlbumBase.vue:21
 #: front/src/components/library/AlbumDetail.vue:11
 #: src/views/playlists/Detail.vue:24
 msgctxt "Content/Queue/Button.Label/Short, Verb"
 msgid "Play all"
-msgstr "Reproduzir tudo"
+msgstr "Tocar tudo"
 
-#: front/src/components/library/ArtistBase.vue:31
+#: front/src/components/library/ArtistBase.vue:32
 msgctxt "Content/Artist/Button.Label/Verb"
 msgid "Play all albums"
-msgstr "Reproduzir todos os álbuns"
+msgstr "Tocar todos os álbuns"
 
-#: front/src/components/audio/PlayButton.vue:76
+#: front/src/components/audio/PlayButton.vue:92
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play next"
-msgstr "Reproduzir próxima"
+msgstr "Tocar próxima"
 
-#: front/src/components/ShortcutsModal.vue:67
+#: front/src/components/ShortcutsModal.vue:120
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Play next track"
-msgstr "Reproduzir próxima faixa"
+msgstr "Tocar próxima faixa"
 
-#: front/src/components/audio/PlayButton.vue:74
+#: front/src/components/audio/PlayButton.vue:90
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play now"
-msgstr "Reproduzir agora"
+msgstr "Tocar agora"
 
-#: front/src/components/ShortcutsModal.vue:63
+#: front/src/components/ShortcutsModal.vue:116
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Play previous track"
-msgstr "Reproduzir faixa anterior"
+msgstr "Tocar faixa anterior"
 
-#: front/src/components/audio/PlayButton.vue:77
+#: front/src/components/audio/PlayButton.vue:93
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play similar songs"
-msgstr ""
+msgstr "Tocar músicas parecidas"
 
-#: front/src/components/Sidebar.vue:224
+#: front/src/components/Sidebar.vue:231
 msgctxt "Sidebar/Player/Hidden text"
 msgid "Play this track"
-msgstr "Reproduzir esta faixa"
+msgstr "Tocar esta faixa"
 
-#: front/src/components/audio/Player.vue:627
+#: front/src/components/audio/Player.vue:653
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Play track"
-msgstr "Reproduzir faixa"
+msgstr "Tocar faixa"
 
-#: front/src/components/audio/PlayButton.vue:82
+#: front/src/components/mixins/Report.vue:66 src/views/playlists/Detail.vue:121
+#: front/src/components/mixins/Report.vue:67
 #, fuzzy
-msgctxt "*/Queue/Button/Title"
-msgid "Play..."
-msgstr "Reproduzir"
-
-#: front/src/views/playlists/Detail.vue:91
-msgctxt "Head/Playlist/Title"
+msgctxt "*/*/*"
 msgid "Playlist"
 msgstr "Lista"
 
 #: front/src/views/playlists/Detail.vue:12
-#, fuzzy
 msgctxt "Content/Playlist/Header.Subtitle"
 msgid "Playlist containing %{ count } track, by %{ username }"
 msgid_plural "Playlist containing %{ count } tracks, by %{ username }"
-msgstr[0] "Lista contendo %{ count } faixa, de %{ username }"
-msgstr[1] "Lista contendo %{ count } faixas, de %{ username }"
+msgstr[0] "Lista contendo %{ count } faixa de %{ username }"
+msgstr[1] "Lista contendo %{ count } faixas de %{ username }"
 
 #: front/src/components/playlists/Form.vue:9
 msgctxt "Content/Playlist/Message"
@@ -3204,33 +3356,30 @@ msgctxt "Content/Playlist/Dropdown.Label"
 msgid "Playlist visibility"
 msgstr "Visibilidade da lista"
 
-#: front/src/components/mixins/Translations.vue:88
-#: front/src/components/mixins/Translations.vue:89
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Playlists"
-msgstr "Listas de reprodução"
-
 #: front/src/components/Sidebar.vue:71 src/components/library/Home.vue:16
-#: front/src/components/library/Library.vue:16 src/views/admin/Settings.vue:83
-#: front/src/views/admin/library/AlbumDetail.vue:173
-#: front/src/views/admin/library/ArtistDetail.vue:162
-#: front/src/views/admin/library/TrackDetail.vue:225
+#: front/src/components/library/Library.vue:16
+#: front/src/components/mixins/Translations.vue:100
+#: src/views/admin/Settings.vue:83
+#: front/src/views/admin/library/AlbumDetail.vue:179
+#: front/src/views/admin/library/ArtistDetail.vue:167
+#: front/src/views/admin/library/TrackDetail.vue:231
 #: src/views/playlists/List.vue:106
+#: front/src/components/mixins/Translations.vue:101
 msgctxt "*/*/*"
 msgid "Playlists"
 msgstr "Listas de reprodução"
 
-#: front/src/components/Home.vue:56
-msgctxt "Content/Home/List item"
-msgid "Playlists? We got them"
-msgstr "Listas de reprodução? Nós temos"
+#: front/src/components/audio/EmbedWizard.vue:9
+msgctxt "Content/Embed/Message"
+msgid "Please contact your admins and ask them to update the corresponding setting."
+msgstr ""
 
 #: front/src/components/auth/Settings.vue:79
 msgctxt "Content/Settings/Error message.List item/Call to action"
 msgid "Please double-check your password is correct"
 msgstr "Por favor verifique novamente se a senha está certa"
 
-#: front/src/components/auth/Login.vue:9
+#: front/src/components/auth/LoginForm.vue:5
 msgctxt "Content/Login/Error message.List item/Call to action"
 msgid "Please double-check your username/password couple is correct"
 msgstr "Por favor verifique novamente se usuário/senha estão certos"
@@ -3240,25 +3389,27 @@ msgctxt "Content/Settings/Paragraph"
 msgid "PNG, GIF or JPG. At most 2MB. Will be downscaled to 400x400px."
 msgstr "PNG, GIF ou JPG. No máximo 2MB. Será reduzido para 400x400px."
 
-#: front/src/views/admin/library/TrackDetail.vue:137
-#, fuzzy
-msgctxt "*/*/*/Noun"
+#: front/src/components/About.vue:72
+msgctxt "Content/About/Header/Name"
+msgid "Pod configuration"
+msgstr ""
+
+#: front/src/views/admin/library/TrackDetail.vue:143 src/edits.js:70
+msgctxt "*/*/*/Short, Noun"
 msgid "Position"
-msgstr "Paginação"
+msgstr "Posição"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:118
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Prevent account or domain from triggering notifications, except from "
-"followers."
+msgid "Prevent account or domain from triggering notifications, except from followers."
 msgstr "Impedir conta ou domínio de notificar, exceto seguidores."
 
-#: front/src/components/audio/EmbedWizard.vue:33
+#: front/src/components/audio/EmbedWizard.vue:43
 msgctxt "Popup/Embed/Title/Noun"
 msgid "Preview"
 msgstr "Prévia"
 
-#: front/src/components/audio/Player.vue:626
+#: front/src/components/audio/Player.vue:652
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Previous track"
 msgstr "Faixa anterior"
@@ -3267,9 +3418,9 @@ msgstr "Faixa anterior"
 #: front/src/components/mixins/Translations.vue:16
 msgctxt "Content/Settings/Dropdown/Short"
 msgid "Private"
-msgstr ""
+msgstr "Privado"
 
-#: front/src/views/content/remote/Card.vue:43
+#: front/src/views/content/remote/Card.vue:56
 msgctxt "Content/Library/Card.List item"
 msgid "Problem during scanning"
 msgstr "Erro durante leitura"
@@ -3290,15 +3441,20 @@ msgctxt "Content/Library/Tab.Title/Short"
 msgid "Processing"
 msgstr "Processando"
 
-#: front/src/components/mixins/Translations.vue:68
-#: front/src/components/mixins/Translations.vue:69
-#, fuzzy
+#: front/src/components/mixins/Translations.vue:80
+#: front/src/components/mixins/Translations.vue:81
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Profile"
-msgstr "Abrir perfil"
+msgstr "Perfil"
+
+#: front/src/components/auth/SignupForm.vue:5
+#, fuzzy
+msgctxt "Content/Signup/Form/Paragraph"
+msgid "Public registrations are not possible on this instance. You will need an invitation code to sign up."
+msgstr "Cadastros estão fechados nesta instância, você precisa de um código de convite para criar uma conta."
 
 #: front/src/components/manage/moderation/AccountsTable.vue:188
-#: front/src/components/manage/moderation/DomainsTable.vue:168
+#: front/src/components/manage/moderation/DomainsTable.vue:186
 #: front/src/views/content/libraries/Quota.vue:36
 #: front/src/views/content/libraries/Quota.vue:39
 #: front/src/views/content/libraries/Quota.vue:62
@@ -3329,7 +3485,7 @@ msgctxt "Sidebar/Queue/Tab.Title/Noun"
 msgid "Queue"
 msgstr "Fila"
 
-#: front/src/components/audio/Player.vue:322
+#: front/src/components/audio/Player.vue:329
 msgctxt "Content/Queue/Message"
 msgid "Queue shuffled!"
 msgstr "Fila embaralhada!"
@@ -3361,35 +3517,31 @@ msgstr "Rádio atualizada"
 
 #: front/src/components/library/Library.vue:13
 #: src/components/library/Radios.vue:142
+#: front/src/components/mixins/Translations.vue:104
+#: front/src/components/mixins/Translations.vue:105
 msgctxt "*/*/*"
 msgid "Radios"
 msgstr "Rádios"
 
-#: front/src/components/mixins/Translations.vue:92
-#: front/src/components/mixins/Translations.vue:93
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Radios"
-msgstr "Rádios"
-
 #: front/src/components/auth/ApplicationForm.vue:151
 msgctxt "Content/OAuth Scopes/Label/Verb"
 msgid "Read"
-msgstr ""
+msgstr "Ler"
 
 #: front/src/components/library/ImportStatusModal.vue:51
 msgctxt "Popup/Import/Table.Label/Value"
 msgid "Read our documentation for this error"
-msgstr ""
+msgstr "Leia nossa documentação para este erro"
 
 #: front/src/components/auth/Authorize.vue:24
 msgctxt "Content/Auth/Label/Noun"
 msgid "Read-only"
-msgstr ""
+msgstr "Apenas leitura"
 
 #: front/src/components/auth/ApplicationForm.vue:152
 msgctxt "Content/OAuth Scopes/Help Text"
 msgid "Read-only access to user data"
-msgstr ""
+msgstr "Apenas lê seus dados de usuário"
 
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:39
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:25
@@ -3397,35 +3549,40 @@ msgctxt "Content/Moderation/*/Noun"
 msgid "Reason"
 msgstr "Motivo"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:251
-#: front/src/views/admin/moderation/DomainsDetail.vue:179
+#: front/src/views/admin/moderation/AccountsDetail.vue:252
+#: front/src/views/admin/moderation/DomainsDetail.vue:216
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Received library follows"
 msgstr "Biblioteca recebida segue"
 
-#: front/src/components/manage/moderation/DomainsTable.vue:40
-#: front/src/components/mixins/Translations.vue:62
-#: front/src/components/mixins/Translations.vue:63
+#: front/src/components/manage/moderation/DomainsTable.vue:48
+#: front/src/components/mixins/Translations.vue:74
+#: front/src/components/mixins/Translations.vue:75
 msgctxt "Content/Moderation/*/Noun"
 msgid "Received messages"
 msgstr "Mensagens recebidas"
 
 #: front/src/components/library/EditForm.vue:27
-#, fuzzy
 msgctxt "Content/Library/Paragraph"
 msgid "Recent edits"
-msgstr "Adicionado recentemente"
+msgstr "Edições recentes"
 
 #: front/src/components/library/EditForm.vue:17
 msgctxt "Content/Library/Paragraph"
 msgid "Recent edits awaiting review"
-msgstr ""
+msgstr "Edições recentes esperando revisão"
 
 #: front/src/components/library/Home.vue:24
 msgctxt "Content/Home/Title"
 msgid "Recently added"
 msgstr "Adicionado recentemente"
 
+#: front/src/components/Home.vue:167
+#, fuzzy
+msgctxt "Content/Home/Title"
+msgid "Recently added albums"
+msgstr "Adicionado recentemente"
+
 #: front/src/components/library/Home.vue:11
 msgctxt "Content/Home/Title"
 msgid "Recently favorited"
@@ -3439,7 +3596,7 @@ msgstr "Escutado recentemente"
 #: front/src/components/auth/ApplicationForm.vue:13
 msgctxt "Content/Applications/Input.Label/Noun"
 msgid "Redirect URI"
-msgstr ""
+msgstr "Redirecionar link"
 
 #: front/src/components/auth/Settings.vue:125
 #: src/components/auth/Settings.vue:170
@@ -3450,40 +3607,36 @@ msgid "Refresh"
 msgstr "Atualizar"
 
 #: front/src/components/federation/FetchButton.vue:20
-#, fuzzy
 msgctxt "Popup/*/Message.Title"
 msgid "Refresh error"
-msgstr "Atualizar"
+msgstr "Atualizar erro"
 
-#: front/src/views/admin/library/AlbumDetail.vue:50
-#: front/src/views/admin/library/ArtistDetail.vue:49
-#: front/src/views/admin/library/TrackDetail.vue:49
+#: front/src/views/admin/library/AlbumDetail.vue:56
+#: front/src/views/admin/library/ArtistDetail.vue:54
+#: front/src/views/admin/library/TrackDetail.vue:55
 msgctxt "Content/Moderation/Button/Verb"
 msgid "Refresh from remote server"
-msgstr ""
+msgstr "Atualizar a partir de um servidor remoto"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:127
+#: front/src/views/admin/moderation/DomainsDetail.vue:164
 msgctxt "Content/Moderation/Button.Label/Verb"
 msgid "Refresh node info"
 msgstr "Atualizar node info"
 
 #: front/src/components/federation/FetchButton.vue:79
-#, fuzzy
 msgctxt "Popup/*/Message.Title"
 msgid "Refresh pending"
-msgstr "Atualizar node info"
+msgstr "Atualizar pendentes"
 
 #: front/src/components/federation/FetchButton.vue:80
 msgctxt "Popup/*/Message.Content"
-msgid ""
-"Refresh request wasn't proceed in time by our server. It will be processed "
-"later."
-msgstr ""
+msgid "Refresh request wasn't proceed in time by our server. It will be processed later."
+msgstr "A solicitação de atualização não foi realizada a tempo pelo nosso servidor. Será processado mais tarde."
 
 #: front/src/components/federation/FetchButton.vue:16
 msgctxt "Popup/*/Message.Title"
 msgid "Refresh successful"
-msgstr ""
+msgstr "Atualizado"
 
 #: front/src/components/common/ActionTable.vue:275
 msgctxt "Content/*/Button.Tooltip/Verb"
@@ -3493,27 +3646,23 @@ msgstr "Atualizar tabela de conteúdo"
 #: front/src/components/federation/FetchButton.vue:12
 msgctxt "Popup/*/Message.Title"
 msgid "Refresh was skipped"
-msgstr ""
+msgstr "Atualização foi ignorada"
 
 #: front/src/components/federation/FetchButton.vue:7
 msgctxt "Popup/*/Title"
 msgid "Refreshing object from remote…"
-msgstr ""
-
-#: front/src/components/auth/Signup.vue:9
-msgctxt "Content/Signup/Form/Paragraph"
-msgid ""
-"Registration are closed on this instance, you will need an invitation code "
-"to signup."
-msgstr ""
-"Cadastros estão fechados nesta instância, você precisa de um código de "
-"convite para criar uma conta."
+msgstr "Atualizando objeto do servidor remoto…"
 
-#: front/src/components/manage/users/UsersTable.vue:71
+#: front/src/components/About.vue:86
 #, fuzzy
+msgctxt "*/*/*"
+msgid "Registrations"
+msgstr "Administração"
+
+#: front/src/components/manage/users/UsersTable.vue:72
 msgctxt "Content/Admin/Table, User role"
 msgid "Regular user"
-msgstr "usuário regular"
+msgstr "Usuário regular"
 
 #: front/src/components/library/EditCard.vue:87
 #: front/src/views/content/libraries/Detail.vue:51
@@ -3535,16 +3684,20 @@ msgid "Rejected"
 msgstr "Recusado"
 
 #: front/src/components/manage/library/AlbumsTable.vue:43
-#: front/src/components/mixins/Translations.vue:44 src/edits.js:28
-#: front/src/components/mixins/Translations.vue:45
-#, fuzzy
+#: front/src/components/mixins/Translations.vue:54 src/edits.js:43
+#: front/src/components/mixins/Translations.vue:55
 msgctxt "Content/*/*/Noun"
 msgid "Release date"
-msgstr "Data de acesso"
+msgstr "Data de lançamento"
 
 #: front/src/components/library/FileUpload.vue:63
 msgctxt "Content/Library/Paragraph"
 msgid "Remaining storage space"
+msgstr "Espaço de armazenamento restante"
+
+#: front/src/views/Notifications.vue:18 src/views/Notifications.vue:52
+msgctxt "Content/Notifications/Label"
+msgid "Remind me in:"
 msgstr ""
 
 #: front/src/views/content/remote/Home.vue:6
@@ -3554,12 +3707,8 @@ msgstr "Bibliotecas remotas"
 
 #: front/src/views/content/remote/Home.vue:7
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Remote libraries are owned by other users on the network. You can access "
-"them as long as they are public or you are granted access."
-msgstr ""
-"Bibliotecas remotas são propriedade de outros usuários da rede. Você pode "
-"acessá-las desde que você tenha permissão ou sejam públicas."
+msgid "Remote libraries are owned by other users on the network. You can access them as long as they are public or you are granted access."
+msgstr "Bibliotecas remotas são de outros usuários da rede. Você pode vê-las desde que você tenha permissão ou sejam públicas."
 
 #: front/src/components/library/radios/Filter.vue:59
 msgctxt "Content/Radio/Button.Label/Verb"
@@ -3572,10 +3721,16 @@ msgid "Remove avatar"
 msgstr "Remover imagem de perfil"
 
 #: front/src/components/library/ArtistDetail.vue:12
-#, fuzzy
 msgctxt "Content/Moderation/Button.Label"
 msgid "Remove filter"
-msgstr "Remover imagem de perfil"
+msgstr "Excluir filtro"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:198
+#: front/src/views/admin/moderation/DomainsDetail.vue:39
+#, fuzzy
+msgctxt "Content/Moderation/Action/Verb"
+msgid "Remove from allow-list"
+msgstr "Desfavoritar"
 
 #: front/src/components/favorites/TrackFavoriteIcon.vue:26
 msgctxt "Content/Track/Icon.Tooltip/Verb"
@@ -3584,43 +3739,105 @@ msgstr "Desfavoritar"
 
 #: front/src/views/content/libraries/Quota.vue:38
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded but yet to be processed tracks completely, adding the "
-"corresponding data to your quota."
-msgstr ""
-"Exclui completamente as faixas enviadas mas ainda a serem processadas, "
-"adicionando os dados correspondentes à sua cota."
+msgid "Removes uploaded but yet to be processed tracks completely, adding the corresponding data to your quota."
+msgstr "Exclui completamente as faixas enviadas mas ainda a serem processadas, adicionando os dados correspondentes à sua cota."
 
 #: front/src/views/content/libraries/Quota.vue:64
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded tracks skipped during the import processes completely, "
-"adding the corresponding data to your quota."
-msgstr ""
-"Exclui completamente as faixas ignoradas durante o processo de importação, "
-"adicionando os dados correspondentes à sua cota."
+msgid "Removes uploaded tracks skipped during the import processes completely, adding the corresponding data to your quota."
+msgstr "Exclui completamente as faixas ignoradas durante o processo de importação, adicionando os dados correspondentes à sua cota."
 
 #: front/src/views/content/libraries/Quota.vue:90
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded tracks that could not be processed by the server "
-"completely, adding the corresponding data to your quota."
+msgid "Removes uploaded tracks that could not be processed by the server completely, adding the corresponding data to your quota."
+msgstr "Exclui completamente faixas enviadas que não foram processadas pelo servidor, adicionando os dados correspondentes à sua cota."
+
+#: front/src/components/audio/PlayButton.vue:94
+#, fuzzy
+msgctxt "*/Queue/Dropdown/Button/Title"
+msgid "Replace current queue"
+msgstr "Adicionar à fila atual"
+
+#: front/src/components/mixins/Report.vue:6 src/components/mixins/Report.vue:7
+msgctxt "*/Moderation/*/Verb"
+msgid "Report @%{ username }…"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:5
+msgctxt "Content/Moderation/Card/Short"
+msgid "Report %{ id }"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:139
+#, fuzzy
+msgctxt "*/Moderation/Message"
+msgid "Report successfully submitted, thank you"
+msgstr "Sua edição foi enviada."
+
+#: front/src/components/mixins/Report.vue:36
+#: src/components/mixins/Report.vue:37
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this album…"
+msgstr "Editar álbum"
+
+#: front/src/components/mixins/Report.vue:50
+#: src/components/mixins/Report.vue:51
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this artist…"
+msgstr "Editar artista"
+
+#: front/src/components/mixins/Report.vue:72
+#: src/components/mixins/Report.vue:73
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this library…"
+msgstr "Excluir esta biblioteca?"
+
+#: front/src/components/mixins/Report.vue:61
+#: src/components/mixins/Report.vue:62
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this playlist…"
+msgstr "Adicionar a esta lista"
+
+#: front/src/components/mixins/Report.vue:23
+#: src/components/mixins/Report.vue:24
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this track…"
+msgstr "Editar faixa"
+
+#: front/src/components/audio/PlayButton.vue:95
+msgctxt "*/Moderation/*/Button/Label,Verb"
+msgid "Report…"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:117
+msgctxt "Content/*/*/Short"
+msgid "Reported object"
 msgstr ""
-"Exclui completamente faixas enviadas que não foram processadas pelo "
-"servidor, adicionando os dados correspondentes à sua cota."
 
-#: front/src/components/auth/SubsonicTokenForm.vue:33
-#: front/src/components/auth/SubsonicTokenForm.vue:36
+#: front/src/views/admin/moderation/Base.vue:5
+#: front/src/views/admin/moderation/ReportsList.vue:3
+#: front/src/views/admin/moderation/ReportsList.vue:208
+msgctxt "*/Moderation/*/Noun"
+msgid "Reports"
+msgstr ""
+
+#: front/src/components/auth/SubsonicTokenForm.vue:38
+#: front/src/components/auth/SubsonicTokenForm.vue:41
 msgctxt "*/Settings/Button.Label/Verb"
 msgid "Request a new password"
 msgstr "Solicitar uma nova senha"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:34
+#: front/src/components/auth/SubsonicTokenForm.vue:39
 msgctxt "Popup/Settings/Title"
 msgid "Request a new Subsonic API password?"
 msgstr "Solicitar uma nova senha da API Subsonic?"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:42
+#: front/src/components/auth/SubsonicTokenForm.vue:47
 msgctxt "Content/Settings/Button.Label/Verb"
 msgid "Request a password"
 msgstr "Solicitar uma senha"
@@ -3628,120 +3845,137 @@ msgstr "Solicitar uma senha"
 #: front/src/components/federation/FetchButton.vue:64
 msgctxt "Popup/*/Loading.Title"
 msgid "Requesting a fetch…"
-msgstr ""
+msgstr "Requisitando busca…"
 
-#: front/src/components/library/EditForm.vue:82
+#: front/src/components/library/EditForm.vue:94
+#, fuzzy
 msgctxt "Content/Library/Button.Label"
-msgid "Reset to initial value: %{ value }"
-msgstr ""
+msgid "Reset to initial value"
+msgstr "Redefinir para o valor inicial: %{ value }"
 
-#: front/src/components/auth/Login.vue:35 src/views/auth/PasswordReset.vue:4
-#: front/src/views/auth/PasswordReset.vue:53
+#: front/src/components/auth/LoginForm.vue:34
+#: src/views/auth/PasswordReset.vue:4 front/src/views/auth/PasswordReset.vue:53
 msgctxt "*/Login/*/Verb"
 msgid "Reset your password"
 msgstr "Redefinir sua senha"
 
-#: front/src/views/content/libraries/FilesTable.vue:223
+#: front/src/components/manage/moderation/ReportCard.vue:83
 #, fuzzy
+msgctxt "Content/*/*/Noun"
+msgid "Resolution date"
+msgstr "Data de criação"
+
+#: front/src/components/manage/moderation/ReportCard.vue:218
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Resolve"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:62
+#: front/src/views/admin/moderation/ReportsList.vue:20
+msgctxt "Content/*/*/Short"
+msgid "Resolved"
+msgstr ""
+
+#: front/src/views/content/libraries/FilesTable.vue:223
 msgctxt "Content/Library/Dropdown/Verb"
 msgid "Restart import"
-msgstr "Repetir importação"
+msgstr "Reiniciar importação"
+
+#: front/src/components/library/EditForm.vue:31
+msgctxt "Content/Library/Button.Label"
+msgid "Restrict to unreviewed edits"
+msgstr "Mostrar apenas edições não revisadas"
 
 #: front/src/components/favorites/List.vue:39
-#: src/components/library/Albums.vue:30
-#: front/src/components/library/Artists.vue:30
+#: src/components/library/Albums.vue:34
+#: front/src/components/library/Artists.vue:34
 #: src/components/library/Radios.vue:52 front/src/views/playlists/List.vue:32
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Results per page"
 msgstr "Resultados por página"
 
-#: front/src/components/library/EditForm.vue:31
-msgctxt "Content/Library/Button.Label"
-msgid "Retrict to unreviewed edits"
-msgstr ""
-
 #: front/src/views/auth/EmailConfirm.vue:17
 msgctxt "Content/Signup/Link/Verb"
 msgid "Return to login"
 msgstr "Voltar para entrada"
 
 #: front/src/components/library/ArtistDetail.vue:9
-#, fuzzy
 msgctxt "Content/Moderation/Link"
 msgid "Review my filters"
-msgstr "Ver arquivos"
+msgstr "Revisar filtros"
 
 #: front/src/components/auth/Settings.vue:192
 msgctxt "*/*/*/Verb"
 msgid "Revoke"
-msgstr ""
+msgstr "Revogar"
 
 #: front/src/components/auth/Settings.vue:195
 msgctxt "*/Settings/Button.Label/Verb"
 msgid "Revoke access"
-msgstr ""
+msgstr "Revogar acesso"
 
 #: front/src/components/auth/Settings.vue:193
 msgctxt "Popup/Settings/Title"
 msgid "Revoke access for application \"%{ application }\"?"
-msgstr ""
+msgstr "Revogar acesso do aplicativo \"%{ application }\"?"
 
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:16
 msgctxt "Content/Moderation/Card.Title/Noun"
 msgid "Rule"
 msgstr "Regra"
 
-#: front/src/components/admin/SettingsGroup.vue:67
+#: front/src/components/About.vue:28 src/components/About.vue:56
+#, fuzzy
+msgctxt "Content/About/Header"
+msgid "Rules"
+msgstr "Regra"
+
+#: front/src/components/admin/SettingsGroup.vue:75
 #: front/src/components/library/radios/Builder.vue:34
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Save"
 msgstr "Salvar"
 
-#: front/src/views/content/remote/Card.vue:175
+#: front/src/views/content/remote/Card.vue:203
 msgctxt "Content/Library/Message"
 msgid "Scan launched"
 msgstr "Varredura iniciada"
 
-#: front/src/views/content/remote/Card.vue:67
+#: front/src/views/content/remote/Card.vue:80
 msgctxt "Content/Library/Card.Button.Label/Verb"
 msgid "Scan now"
 msgstr "Iniciar varredura"
 
-#: front/src/views/content/remote/Card.vue:35
-#, fuzzy
+#: front/src/views/content/remote/Card.vue:48
 msgctxt "Content/Library/Card.List item"
 msgid "Scan pending"
-msgstr "Crescente"
+msgstr "Varredura pendente"
 
-#: front/src/views/content/remote/Card.vue:176
+#: front/src/views/content/remote/Card.vue:204
 msgctxt "Content/Library/Message"
 msgid "Scan skipped (previous scan is too recent)"
 msgstr "Varredura ignorada (a anterior é muito recente)"
 
-#: front/src/views/content/remote/Card.vue:47
+#: front/src/views/content/remote/Card.vue:60
 msgctxt "Content/Library/Card.List item"
 msgid "Scanned"
 msgstr "Varredura completa"
 
-#: front/src/views/content/remote/Card.vue:51
+#: front/src/views/content/remote/Card.vue:64
 msgctxt "Content/Library/Card.List item"
 msgid "Scanned with errors"
 msgstr "Varredura completa com erros"
 
-#: front/src/views/content/remote/Card.vue:39
+#: front/src/views/content/remote/Card.vue:52
 msgctxt "Content/Library/Card.List item"
 msgid "Scanning… (%{ progress }%)"
 msgstr "Varrendo… (%{ progress }%)"
 
 #: front/src/components/auth/ApplicationForm.vue:22
-msgctxt "Content/Applications/Input.Label/Noun"
-msgid "Scopes"
-msgstr ""
-
 #: front/src/components/auth/Settings.vue:226
 msgctxt "Content/*/*/Noun"
 msgid "Scopes"
-msgstr ""
+msgstr "Campos"
 
 #: front/src/components/library/Albums.vue:10
 #: src/components/library/Artists.vue:10
@@ -3750,12 +3984,14 @@ msgstr ""
 #: front/src/components/manage/library/ArtistsTable.vue:5
 #: front/src/components/manage/library/EditsCardList.vue:6
 #: front/src/components/manage/library/LibrariesTable.vue:5
+#: front/src/components/manage/library/TagsTable.vue:5
 #: front/src/components/manage/library/TracksTable.vue:5
 #: front/src/components/manage/library/UploadsTable.vue:5
 #: front/src/components/manage/moderation/AccountsTable.vue:5
 #: front/src/components/manage/moderation/DomainsTable.vue:5
 #: front/src/components/manage/users/InvitationsTable.vue:5
 #: front/src/components/manage/users/UsersTable.vue:5
+#: front/src/views/admin/moderation/ReportsList.vue:8
 #: front/src/views/content/libraries/FilesTable.vue:5
 #: src/views/playlists/List.vue:13
 msgctxt "Content/Search/Input.Label/Noun"
@@ -3768,52 +4004,51 @@ msgid "Search a remote library"
 msgstr "Pesquisar uma biblioteca remota"
 
 #: front/src/components/manage/library/EditsCardList.vue:211
-#, fuzzy
+#: front/src/views/admin/moderation/ReportsList.vue:207
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by account, summary, domain…"
-msgstr "Pesquisar por título, artista, domínio…"
+msgstr "Pesquisar por conta, resumo, domínio…"
 
 #: front/src/components/manage/library/LibrariesTable.vue:191
-#, fuzzy
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by domain, actor, name, description…"
-msgstr "Pesquisar por domínio, nome de usuário, biografia..."
+msgstr "Pesquisar por domínio, artista, nome, descrição…"
 
 #: front/src/components/manage/library/UploadsTable.vue:241
-#, fuzzy
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by domain, actor, name, reference, source…"
-msgstr "Pesquisar por domínio, nome de usuário, biografia..."
+msgstr "Pesquisar por domínio, artista, nome, referência, fonte…"
 
 #: front/src/components/manage/library/ArtistsTable.vue:164
-#, fuzzy
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by domain, name, MusicBrainz ID…"
-msgstr "Pesquisar por domínio, nome de usuário, biografia..."
+msgstr "Pesquisar por domínio, nome, ID MusicBrainz…"
 
 #: front/src/components/manage/library/TracksTable.vue:174
-#, fuzzy
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by domain, title, artist, album, MusicBrainz ID…"
-msgstr "Pesquisar por título, artista, álbum…"
+msgstr "Pesquisar por domínio, título, artista, álbum, ID MusicBrainz…"
 
 #: front/src/components/manage/library/AlbumsTable.vue:174
-#, fuzzy
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by domain, title, artist, MusicBrainz ID…"
-msgstr "Pesquisar por título, artista, domínio…"
+msgstr "Pesquisar por domínio, título, artista, ID MusicBrainz…"
 
 #: front/src/components/manage/moderation/AccountsTable.vue:171
-#, fuzzy
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by domain, username, bio…"
-msgstr "Pesquisar por domínio, nome de usuário, biografia..."
+msgstr "Pesquisar por domínio, nome de usuário, bio…"
 
-#: front/src/components/manage/moderation/DomainsTable.vue:151
+#: front/src/components/manage/library/TagsTable.vue:165
 #, fuzzy
 msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by name"
+msgstr "Pesquisar por nome…"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:168
+msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by name…"
-msgstr "Pesquisar por nome..."
+msgstr "Pesquisar por nome…"
 
 #: front/src/views/content/libraries/FilesTable.vue:208
 msgctxt "Content/Library/Input.Placeholder"
@@ -3825,12 +4060,12 @@ msgctxt "Content/Admin/Input.Placeholder/Verb"
 msgid "Search by username, e-mail address, code…"
 msgstr "Pesquisar por nome de usuário, e-mail, código…"
 
-#: front/src/components/manage/users/UsersTable.vue:163
+#: front/src/components/manage/users/UsersTable.vue:164
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by username, e-mail address, name…"
 msgstr "Pesquisar por nome de usuário, e-mail, nome…"
 
-#: front/src/components/audio/SearchBar.vue:20
+#: front/src/components/audio/SearchBar.vue:27
 msgctxt "Sidebar/Search/Input.Placeholder"
 msgid "Search for artists, albums, tracks…"
 msgstr "Pesquisar por artistas, álbuns, faixas…"
@@ -3840,16 +4075,30 @@ msgctxt "Content/Search/Title"
 msgid "Search for some music"
 msgstr "Pesquisar músicas"
 
-#: front/src/components/library/AlbumBase.vue:57
-#: front/src/components/library/ArtistBase.vue:68
-#: front/src/components/library/TrackBase.vue:76
+#: front/src/components/library/TagsSelector.vue:6
+#, fuzzy
+msgctxt "*/Dropdown/Placeholder/Verb"
+msgid "Search for tags…"
+msgstr "Pesquisar por nome…"
+
+#: front/src/components/library/AlbumBase.vue:66
+#: front/src/components/library/ArtistBase.vue:77
+#: front/src/components/library/TrackBase.vue:82
+#, fuzzy
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Search on Discogs"
+msgstr "Pesquisar músicas"
+
+#: front/src/components/library/AlbumBase.vue:58
+#: front/src/components/library/ArtistBase.vue:69
+#: front/src/components/library/TrackBase.vue:74
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Search on Wikipedia"
 msgstr "Pesquisar no Wikipedia"
 
 #: front/src/components/library/Library.vue:35
-#: src/views/admin/library/Base.vue:32
-#: front/src/views/admin/moderation/Base.vue:22
+#: src/views/admin/library/Base.vue:35
+#: front/src/views/admin/moderation/Base.vue:44
 #: src/views/admin/users/Base.vue:21 front/src/views/content/Base.vue:19
 msgctxt "Menu/*/Hidden text"
 msgid "Secondary menu"
@@ -3860,13 +4109,32 @@ msgctxt "Content/Admin/Menu.Title"
 msgid "Sections"
 msgstr "Seções"
 
+#: front/src/components/ShortcutsModal.vue:108
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek backwards 30s"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:100
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek backwards 5s"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:112
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek forwards 30s"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:104
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek forwards 5s"
+msgstr ""
+
 #: front/src/components/library/radios/Builder.vue:46
 msgctxt "Content/Radio/Dropdown.Placeholder/Verb"
 msgid "Select a filter"
 msgstr "Selecione um filtro"
 
 #: front/src/components/common/ActionTable.vue:79
-#, fuzzy
 msgctxt "Content/*/Link/Verb"
 msgid "Select all %{ total } elements"
 msgid_plural "Select all %{ total } elements"
@@ -3878,9 +4146,14 @@ msgctxt "Content/*/Link/Verb"
 msgid "Select only current page"
 msgstr "Selecionar apenas a página atual"
 
-#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:108
-#: front/src/components/manage/users/UsersTable.vue:181
-#: front/src/views/admin/moderation/AccountsDetail.vue:506
+#: front/src/components/Home.vue:43
+msgctxt "Content/Home/Link"
+msgid "Server rules"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:112
+#: front/src/components/manage/users/UsersTable.vue:182
+#: front/src/views/admin/moderation/AccountsDetail.vue:526
 msgctxt "*/*/*/Noun"
 msgid "Settings"
 msgstr "Configurações"
@@ -3893,7 +4166,7 @@ msgstr "Configurações atualizadas"
 #: front/src/components/admin/SettingsGroup.vue:11
 msgctxt "Content/Settings/Paragraph"
 msgid "Settings updated successfully."
-msgstr "As configurações foram atualizadas com sucesso."
+msgstr "As configurações foram atualizadas."
 
 #: front/src/components/manage/users/InvitationForm.vue:27
 msgctxt "Content/Admin/Table.Label/Noun"
@@ -3902,50 +4175,68 @@ msgstr "Compartilhar link"
 
 #: front/src/views/content/libraries/Detail.vue:15
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Share this link with other users so they can request access to your library."
-msgstr ""
-"Compartilhe este link com outros usuários para que possam solicitar acesso à"
-" sua biblioteca."
+msgid "Share this link with other users so they can request access to your library."
+msgstr "Compartilhe este link com outros usuários para que possam solicitar permissão para ver sua biblioteca."
 
 #: front/src/views/content/libraries/Detail.vue:14
-#: front/src/views/content/remote/Card.vue:77
+#: front/src/views/content/remote/Card.vue:90
 msgctxt "Content/Library/Title"
 msgid "Sharing link"
 msgstr "Link de compartilhamento"
 
+#: front/src/components/audio/EmbedWizard.vue:5
+msgctxt "Content/Embed/Message"
+msgid "Sharing will not work because this pod doesn't allow anonymous users to access content."
+msgstr ""
+
+#: front/src/components/About.vue:156
+msgctxt "*/*/*/Verb"
+msgid "Show"
+msgstr ""
+
 #: front/src/components/audio/album/Card.vue:38
-#, fuzzy
 msgctxt "Content/Album/Card.Link/Verb"
 msgid "Show %{ count } more track"
 msgid_plural "Show %{ count } more tracks"
 msgstr[0] "Mostrar mais %{ count } faixa"
 msgstr[1] "Mostrar mais %{ count } faixas"
 
-#: front/src/components/audio/artist/Card.vue:30
+#: front/src/components/tags/List.vue:11
 #, fuzzy
-msgctxt "Content/Artist/Card.Link"
-msgid "Show 1 more album"
-msgid_plural "Show %{ count } more albums"
+msgctxt "Content/*/Button/Label/Verb"
+msgid "Show 1 more tag"
+msgid_plural "Show %{ count } more tags"
 msgstr[0] "Mostrar mais 1 álbum"
 msgstr[1] "Mostrar mais %{ count } álbuns"
 
 #: front/src/components/library/EditForm.vue:21
 msgctxt "Content/Library/Button.Label"
 msgid "Show all edits"
-msgstr ""
+msgstr "Mostrar todas as edições"
 
-#: front/src/components/ShortcutsModal.vue:42
+#: front/src/components/ShortcutsModal.vue:60
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Show available keyboard shortcuts"
 msgstr "Mostrar atalhos de teclado disponíveis"
 
-#: front/src/views/Notifications.vue:7
+#: front/src/components/common/ExpandableDiv.vue:7
+#, fuzzy
+msgctxt "*/*/Button,Label"
+msgid "Show less"
+msgstr "Mostrar todas as edições"
+
+#: front/src/components/common/ExpandableDiv.vue:8
+#, fuzzy
+msgctxt "*/*/Button,Label"
+msgid "Show more"
+msgstr "Mostrar mais 1 álbum"
+
+#: front/src/views/Notifications.vue:72
 msgctxt "Content/Notifications/Form.Label/Verb"
 msgid "Show read notifications"
 msgstr "Mostrar notificações lidas"
 
-#: front/src/components/forms/PasswordInput.vue:26
+#: front/src/components/forms/PasswordInput.vue:42
 msgctxt "Content/Settings/Button.Tooltip/Verb"
 msgid "Show/hide password"
 msgstr "Mostrar/ocultar senha"
@@ -3954,56 +4245,64 @@ msgstr "Mostrar/ocultar senha"
 #: front/src/components/manage/library/ArtistsTable.vue:84
 #: front/src/components/manage/library/EditsCardList.vue:72
 #: front/src/components/manage/library/LibrariesTable.vue:110
+#: front/src/components/manage/library/TagsTable.vue:79
 #: front/src/components/manage/library/TracksTable.vue:95
 #: front/src/components/manage/library/UploadsTable.vue:144
 #: front/src/components/manage/moderation/AccountsTable.vue:88
-#: front/src/components/manage/moderation/DomainsTable.vue:74
+#: front/src/components/manage/moderation/DomainsTable.vue:85
 #: front/src/components/manage/users/InvitationsTable.vue:76
-#: front/src/components/manage/users/UsersTable.vue:87
+#: front/src/components/manage/users/UsersTable.vue:88
 #: front/src/views/content/libraries/FilesTable.vue:117
 msgctxt "Content/*/Paragraph"
 msgid "Showing results %{ start }-%{ end } on %{ total }"
 msgstr "Mostrando resultados %{ start }-%{ end } de %{ total }"
 
-#: front/src/components/ShortcutsModal.vue:83
+#: front/src/components/ShortcutsModal.vue:140
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Shuffle queue"
 msgstr "Embaralhar fila"
 
-#: front/src/components/audio/Player.vue:641
+#: front/src/components/audio/Player.vue:667
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Shuffle your queue"
 msgstr "Embaralhar sua fila"
 
-#: front/src/components/auth/Signup.vue:97
+#: front/src/components/Home.vue:103
+#, fuzzy
+msgctxt "*/Signup/Title"
+msgid "Sign up"
+msgstr "Criar conta"
+
+#: front/src/views/auth/Signup.vue:37
 msgctxt "*/Signup/Title"
 msgid "Sign Up"
 msgstr "Criar conta"
 
+#: front/src/components/Home.vue:107
+msgctxt "Content/Home/Paragraph"
+msgid "Sign up now to keep a track of your favorites, create playlists, discover new content and much more!"
+msgstr ""
+
 #: front/src/components/manage/users/UsersTable.vue:40
 msgctxt "Content/Admin/Table.Label/Short, Noun (Value is a date)"
 msgid "Sign-up"
 msgstr "Criar conta"
 
-#: front/src/components/mixins/Translations.vue:57
-#: front/src/views/admin/moderation/AccountsDetail.vue:197
-#: front/src/components/mixins/Translations.vue:58
+#: front/src/components/mixins/Translations.vue:69
+#: front/src/views/admin/moderation/AccountsDetail.vue:198
+#: front/src/components/mixins/Translations.vue:70
 msgctxt "Content/Admin/Table.Label/Noun"
 msgid "Sign-up date"
 msgstr "Data de criação"
 
-#: front/src/components/manage/library/UploadsTable.vue:65
-#: front/src/views/admin/library/UploadDetail.vue:219
-msgctxt "Content/*/*/Noun"
-msgid "Size"
-msgstr "Tamanho"
-
 #: front/src/components/library/FileUpload.vue:94
 #: front/src/components/library/TrackDetail.vue:39
-#: front/src/components/mixins/Translations.vue:54
+#: front/src/components/manage/library/UploadsTable.vue:65
+#: front/src/components/mixins/Translations.vue:66
+#: front/src/views/admin/library/UploadDetail.vue:219
 #: front/src/views/content/libraries/FilesTable.vue:61
-#: front/src/components/mixins/Translations.vue:55
-msgctxt "Content/Library/*/in MB"
+#: front/src/components/mixins/Translations.vue:67
+msgctxt "Content/*/*/Noun"
 msgid "Size"
 msgstr "Tamanho"
 
@@ -4020,7 +4319,7 @@ msgctxt "Content/Library/Label"
 msgid "Skipped files"
 msgstr "Arquivos ignorados"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:89
+#: front/src/views/admin/moderation/DomainsDetail.vue:126
 msgctxt "Content/Moderation/Table.Label"
 msgid "Software"
 msgstr "Software"
@@ -4028,103 +4327,72 @@ msgstr "Software"
 #: front/src/components/playlists/Editor.vue:21
 msgctxt "Content/Playlist/Paragraph"
 msgid "Some tracks in your queue are already in this playlist:"
-msgstr ""
+msgstr "Algumas faixas na sua fila já estão nesta lista:"
 
 #: front/src/components/PageNotFound.vue:10
-#, fuzzy
 msgctxt "Content/*/Paragraph"
 msgid "Sorry, the page you asked for does not exist:"
 msgstr "Desculpe, mas esta página não existe:"
 
-#: front/src/components/Footer.vue:49
+#: front/src/components/Footer.vue:57
 msgctxt "Footer/*/List item.Link"
 msgid "Source code"
 msgstr "Código fonte"
 
 #: front/src/components/auth/Profile.vue:23
-#: front/src/components/manage/users/UsersTable.vue:70
+#: front/src/components/manage/users/UsersTable.vue:71
 msgctxt "Content/Profile/User role"
 msgid "Staff member"
 msgstr "Membro da equipe"
 
-#: front/src/components/audio/PlayButton.vue:23
+#: front/src/components/audio/PlayButton.vue:27
 #: src/components/radios/Button.vue:4
-#, fuzzy
 msgctxt "*/Queue/Button.Label/Short, Verb"
 msgid "Start radio"
-msgstr "Parar rádio"
+msgstr "Reproduzir rádio"
 
-#: front/src/views/admin/Settings.vue:86
-msgctxt "Content/Admin/Menu"
+#: front/src/components/About.vue:170 src/components/Home.vue:53
+#: front/src/views/admin/Settings.vue:87
+#, fuzzy
+msgctxt "Content/Home/Header"
 msgid "Statistics"
 msgstr "Estatísticas"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:490
+#: front/src/views/admin/moderation/AccountsDetail.vue:510
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this account"
-msgstr ""
-"Estatísticas são calculadas por atividades conhecidas e conteúdo da "
-"instância, e não refletem a atividade geral desta conta"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this account"
+msgstr "Estatísticas são calculadas por atividades conhecidas e conteúdo da instância, e não refletem a atividade geral desta conta"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:371
+#: front/src/views/admin/moderation/DomainsDetail.vue:418
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this domain"
-msgstr ""
-"Estatísticas são calculadas por atividade conhecida e conteúdo da instância,"
-" e não refletem a atividade geral deste domínio"
-
-#: front/src/views/admin/library/AlbumDetail.vue:329
-#: front/src/views/admin/library/ArtistDetail.vue:328
-#: front/src/views/admin/library/LibraryDetail.vue:316
-#: front/src/views/admin/library/TrackDetail.vue:371
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this domain"
+msgstr "Estatísticas são calculadas por atividade conhecida e conteúdo da instância, e não refletem a atividade geral deste domínio"
+
+#: front/src/views/admin/library/AlbumDetail.vue:346
+#: front/src/views/admin/library/ArtistDetail.vue:345
+#: front/src/views/admin/library/LibraryDetail.vue:356
+#: front/src/views/admin/library/TagDetail.vue:210
+#: front/src/views/admin/library/TrackDetail.vue:389
 #: front/src/views/admin/library/UploadDetail.vue:335
-#, fuzzy
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this object"
-msgstr ""
-"Estatísticas são calculadas por atividades conhecidas e conteúdo da "
-"instância, e não refletem a atividade geral desta conta"
-
-#: front/src/views/admin/moderation/DomainsDetail.vue:115
-msgctxt "Content/Moderation/Table.Label (Value is Error message)"
-msgid "Status"
-msgstr "Status"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this object"
+msgstr "Estatísticas são calculadas por atividades conhecidas e conteúdo da instância, e não refletem a atividade geral deste objeto"
 
 #: front/src/components/library/FileUpload.vue:95
-msgctxt "Content/Library/Table.Label (Value is Uploading/Uploaded/Error)"
-msgid "Status"
-msgstr "Status"
-
-#: front/src/views/content/libraries/Detail.vue:28
-msgctxt "Content/Library.Federation/Table.Label (Value is Approved/Rejected)"
-msgid "Status"
-msgstr "Status"
-
+#: front/src/components/manage/library/EditsCardList.vue:12
+#: front/src/components/manage/moderation/ReportCard.vue:57
 #: front/src/components/manage/users/InvitationsTable.vue:17
 #: front/src/components/manage/users/InvitationsTable.vue:39
-msgctxt "Content/Admin/*/Noun (Value is Used/Not used)"
-msgid "Status"
-msgstr "Status"
-
 #: front/src/components/manage/users/UsersTable.vue:43
-msgctxt "Content/Admin/Table.Label/Noun (Value is Regular user/Admin)"
+#: front/src/views/admin/moderation/DomainsDetail.vue:152
+#: front/src/views/admin/moderation/ReportsList.vue:14
+#: front/src/views/content/libraries/Detail.vue:28
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Status"
 msgstr "Status"
 
-#: front/src/components/manage/library/EditsCardList.vue:12
-msgctxt ""
-"Content/Search/Dropdown.Label (Value is All/Pending "
-"review/Approved/Rejected)"
-msgid "Status"
-msgstr "Status"
-
-#: front/src/components/Sidebar.vue:174 src/components/radios/Button.vue:3
+#: front/src/components/Sidebar.vue:178 src/components/radios/Button.vue:3
 msgctxt "*/Player/Button.Label/Short, Verb"
 msgid "Stop radio"
 msgstr "Parar rádio"
@@ -4134,22 +4402,34 @@ msgctxt "*/*/Button.Label/Verb"
 msgid "Submit"
 msgstr "Enviar"
 
-#: front/src/components/library/EditForm.vue:98
+#: front/src/components/library/EditForm.vue:110
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Submit and apply edit"
-msgstr ""
+msgstr "Enviar e aplicar edição"
 
 #: front/src/components/library/EditForm.vue:7
 msgctxt "Content/Library/Button.Label"
 msgid "Submit another edit"
-msgstr ""
+msgstr "Enviar outra edição"
 
-#: front/src/components/library/EditForm.vue:99
+#: front/src/components/moderation/ReportModal.vue:64
+#, fuzzy
+msgctxt "Popup/*/Button.Label"
+msgid "Submit report"
+msgstr "Enviar"
+
+#: front/src/components/library/EditForm.vue:111
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Submit suggestion"
-msgstr ""
+msgstr "Enviar sugestão"
 
-#: front/src/views/admin/Settings.vue:85
+#: front/src/components/manage/moderation/ReportCard.vue:17
+#, fuzzy
+msgctxt "Content/Moderation/*"
+msgid "Submitted by"
+msgstr "Enviar"
+
+#: front/src/views/admin/Settings.vue:86
 msgctxt "Content/Admin/Menu"
 msgid "Subsonic"
 msgstr "Subsonic"
@@ -4162,23 +4442,22 @@ msgstr "Senha da API Subsonic"
 #: front/src/components/library/EditForm.vue:38
 msgctxt "Content/Library/Paragraph"
 msgid "Suggest a change using the form below."
-msgstr ""
+msgstr "Sugira uma alteração usando o formulário abaixo."
 
 #: front/src/components/library/AlbumEdit.vue:5
 msgctxt "Content/*/Title"
 msgid "Suggest an edit on this album"
-msgstr ""
+msgstr "Sugerir edição neste álbum"
 
 #: front/src/components/library/ArtistEdit.vue:5
 msgctxt "Content/*/Title"
 msgid "Suggest an edit on this artist"
-msgstr ""
+msgstr "Sugerir edição neste artista"
 
 #: front/src/components/library/TrackEdit.vue:5
-#, fuzzy
 msgctxt "Content/*/Title"
 msgid "Suggest an edit on this track"
-msgstr "Não foi possível carregar esta faixa"
+msgstr "Sugerir edição nesta faixa"
 
 #: front/src/components/SetInstanceModal.vue:31
 msgctxt "Popup/Instance/List.Label"
@@ -4190,16 +4469,21 @@ msgctxt "Content/Library/Tab.Title/Short"
 msgid "Summary"
 msgstr "Resumo"
 
-#: front/src/components/library/EditForm.vue:87
+#: front/src/components/library/EditForm.vue:99
 msgctxt "*/*/*"
 msgid "Summary (optional)"
-msgstr ""
+msgstr "Resumo (opcional)"
 
-#: front/src/components/Footer.vue:39
+#: front/src/components/Footer.vue:47
 msgctxt "Footer/*/Listitem.Link"
 msgid "Support forum"
 msgstr "Fórum de suporte"
 
+#: front/src/views/Notifications.vue:10
+msgctxt "Content/Notifications/Header"
+msgid "Support this Funkwhale pod"
+msgstr ""
+
 #: front/src/components/library/FileUpload.vue:85
 msgctxt "Content/Library/Paragraph"
 msgid "Supported extensions: %{ extensions }"
@@ -4210,159 +4494,167 @@ msgctxt "Content/Playlist/Paragraph"
 msgid "Syncing changes to server…"
 msgstr "Sincronizando alterações com o servidor…"
 
-#: front/src/components/audio/EmbedWizard.vue:25
+#: front/src/components/audio/SearchBar.vue:35
+msgctxt "*/*/*/Noun"
+msgid "Tag"
+msgstr ""
+
+#: front/src/views/admin/library/TagDetail.vue:61
+#, fuzzy
+msgctxt "Content/Moderation/Title"
+msgid "Tag data"
+msgstr "Dados da faixa"
+
+#: front/src/components/library/Albums.vue:23
+#: src/components/library/Artists.vue:15
+#: front/src/views/admin/library/Base.vue:23
+#: src/views/admin/library/TagsList.vue:24 front/src/edits.js:24
+#: src/edits.js:50 src/edits.js:91 src/entities.js:120
+msgctxt "*/*/*/Noun"
+msgid "Tags"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:44
+#: front/src/components/mixins/Translations.vue:45
+#, fuzzy
+msgctxt "Content/Moderation/Dropdown"
+msgid "Takedown request"
+msgstr "Cancelar solicitação para seguir"
+
+#: front/src/components/About.vue:35 src/components/About.vue:61
+msgctxt "Content/About/Header"
+msgid "Terms and privacy policy"
+msgstr ""
+
+#: front/src/components/audio/EmbedWizard.vue:35
 #: front/src/components/common/CopyInput.vue:3
 msgctxt "Content/*/Paragraph"
 msgid "Text copied to clipboard!"
 msgstr "Texto copiado para a área de transferência!"
 
-#: front/src/components/Home.vue:26
-msgctxt "Content/Home/Paragraph"
-msgid ""
-"That's simple: we loved Grooveshark and we want to build something even "
-"better."
-msgstr ""
-"É simples: nós amávamos o Grooveshark e queremos construir algo ainda "
-"melhor."
-
-#: front/src/views/admin/library/AlbumDetail.vue:75
+#: front/src/views/admin/library/AlbumDetail.vue:81
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The album will be removed, as well as associated uploads, tracks, favorites "
-"and listening history. This action is irreversible."
-msgstr ""
+msgid "The album will be removed, as well as associated uploads, tracks, favorites and listening history. This action is irreversible."
+msgstr "O álbum será permanentemente excluído, junto com os envios, faixas, favoritos e  histórico de escutadas."
 
 #: front/src/components/auth/Authorize.vue:39
 msgctxt "Content/Auth/Paragraph"
 msgid "The application is also requesting the following unknown permissions:"
-msgstr ""
+msgstr "O aplicativo também está solicitando as seguintes permissões desconhecidas:"
 
-#: front/src/views/admin/library/ArtistDetail.vue:74
+#: front/src/views/admin/library/ArtistDetail.vue:79
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The artist will be removed, as well as associated uploads, tracks, albums, "
-"favorites and listening history. This action is irreversible."
-msgstr ""
+msgid "The artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible."
+msgstr "O(A) artista será permanentemente excluído(a), junto com os envios, faixas, álbuns, favoritos e histórico de escutadas."
 
-#: front/src/components/Footer.vue:53
+#: front/src/components/Footer.vue:61
 msgctxt "Footer/*/List item.Link"
 msgid "The funkwhale logo was kindly designed and provided by Francis Gading."
-msgstr ""
-"A logo do Funkwhale foi gentilmente projetado e fornecido por Francis "
-"Gading."
+msgstr "A logo do Funkwhale foi gentilmente projetada e fornecida por Francis Gading."
 
 #: front/src/components/SetInstanceModal.vue:8
 msgctxt "Popup/Instance/Error message.List item"
 msgid "The given address is not a Funkwhale server"
-msgstr ""
+msgstr "Este link não é de uma instância Funkwhale"
 
 #: front/src/views/content/libraries/Form.vue:34
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"The library and all its tracks will be deleted. This can not be undone."
+msgid "The library and all its tracks will be deleted. This can not be undone."
 msgstr "A biblioteca e todas as suas faixas serão excluídas permanentemente."
 
 #: front/src/views/admin/library/LibraryDetail.vue:61
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The library will be removed, as well as associated uploads, and follows. "
-"This action is irreversible."
-msgstr ""
+msgid "The library will be removed, as well as associated uploads, and follows. This action is irreversible."
+msgstr "A biblioteca será permanentemente excluída, junto com os envios e os seguidos."
 
 #: front/src/components/library/ImportStatusModal.vue:140
 msgctxt "Popup/Import/Error.Label"
-msgid ""
-"The metadata included in the file is invalid or some mandatory fields are "
-"missing."
-msgstr ""
+msgid "The metadata included in the file is invalid or some mandatory fields are missing."
+msgstr "Os metadados incluídos no arquivo são inválidos ou alguns campos obrigatórios estão faltando."
 
 #: front/src/components/library/FileUpload.vue:38
-#, fuzzy
 msgctxt "Content/Library/List item"
 msgid "The music files you are uploading are tagged properly."
-msgstr "Os arquivos de áudio que você está enviando estão com as tags certas:"
+msgstr "Os arquivos de áudio que você está enviando estão com as tags adequadas."
 
 #: front/src/components/audio/Player.vue:65
-#, fuzzy
 msgctxt "Sidebar/Player/Error message.Paragraph"
 msgid "The next track will play automatically in a few seconds…"
-msgstr ""
-"A próxima faixa será reproduzida automaticamente em alguns segundos..."
+msgstr "A próxima faixa tocará automaticamente em alguns segundos…"
 
-#: front/src/components/Home.vue:116
-msgctxt "Content/Home/List item"
-msgid ""
-"The plaform is free and open-source, you can install it and modify it "
-"without worries"
+#: front/src/components/manage/moderation/NotesThread.vue:27
+#, fuzzy
+msgctxt "Content/Moderation/Paragraph"
+msgid "The note will be removed. This action is irreversible."
+msgstr "O envio será permanentemente excluído."
+
+#: front/src/components/manage/moderation/ReportCard.vue:120
+msgctxt "Content/Moderation/Message"
+msgid "The object associated with this report was deleted."
 msgstr ""
-"A plataforma é livre e de código aberto, você pode instalá-la e modificá-la "
-"sem se preocupar"
 
 #: front/src/components/playlists/Form.vue:14
-#, fuzzy
 msgctxt "Content/Playlist/Error message.Title"
 msgid "The playlist could not be created"
-msgstr "Lista criada"
+msgstr "A lista não foi criada"
 
 #: front/src/components/federation/FetchButton.vue:37
 msgctxt "*/*/Error"
 msgid "The remote server answered with HTTP %{ status }"
-msgstr ""
+msgstr "O servidor remoto retornou com HTTP %{ status }"
 
 #: front/src/components/federation/FetchButton.vue:13
 msgctxt "Popup/*/Message.Content"
-msgid ""
-"The remote server answered, but returned data was unsupported by Funkwhale."
-msgstr ""
+msgid "The remote server answered, but returned data was unsupported by Funkwhale."
+msgstr "O servidor remoto retornou dados não suportados pelo Funkwhale."
 
 #: front/src/components/federation/FetchButton.vue:44
+#, fuzzy
 msgctxt "*/*/Error"
-msgid "The remote server didn't answered fast enough"
-msgstr ""
+msgid "The remote server didn't respond quickly enough"
+msgstr "O servidor remoto não respondeu a tempo"
 
 #: front/src/components/federation/FetchButton.vue:50
+#, fuzzy
 msgctxt "*/*/Error"
-msgid "The return server returned invalid JSON or JSON-LD data"
-msgstr ""
+msgid "The remote server returned invalid JSON or JSON-LD data"
+msgstr "O servidor remoto retornou dados inválidos de JSON ou JSON-LD"
 
 #: front/src/components/manage/library/AlbumsTable.vue:189
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected albums will be removed, as well as associated tracks, uploads, "
-"favorites and listening history. This action is irreversible."
-msgstr ""
+msgid "The selected albums will be removed, as well as associated tracks, uploads, favorites and listening history. This action is irreversible."
+msgstr "Os álbuns selecionados serão permanentemente excluídos, junto com as faixas, envios, favoritos e histórico de escutadas."
 
 #: front/src/components/manage/library/ArtistsTable.vue:179
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected artist will be removed, as well as associated uploads, tracks, "
-"albums, favorites and listening history. This action is irreversible."
-msgstr ""
+msgid "The selected artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible."
+msgstr "O(A) artista selecionado(a) será permanentemente excluído(a), junto com as faixas, álbuns, favoritos e histórico de escutadas."
 
 #: front/src/components/manage/library/LibrariesTable.vue:206
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected library will be removed, as well as associated uploads and "
-"follows. This action is irreversible."
-msgstr ""
+msgid "The selected library will be removed, as well as associated uploads and follows. This action is irreversible."
+msgstr "A biblioteca selecionada será permanentemente excluída, junto com os envios e seguidos."
+
+#: front/src/components/manage/library/TagsTable.vue:180
+#, fuzzy
+msgctxt "Popup/*/Paragraph"
+msgid "The selected tag will be removed and unlinked with existing content, if any. This action is irreversible."
+msgstr "O envio selecionado será permanentemente excluído."
 
 #: front/src/components/manage/library/TracksTable.vue:189
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected tracks will be removed, as well as associated uploads, "
-"favorites and listening history. This action is irreversible."
-msgstr ""
+msgid "The selected tracks will be removed, as well as associated uploads, favorites and listening history. This action is irreversible."
+msgstr "As faixas selecionadas serão permanentemente excluídas, junto com os envios, favoritos e histórico de escutadas."
 
 #: front/src/components/manage/library/UploadsTable.vue:256
-#, fuzzy
 msgctxt "Popup/*/Paragraph"
 msgid "The selected upload will be removed. This action is irreversible."
-msgstr "Esta ação é irreversível."
+msgstr "O envio selecionado será permanentemente excluído."
 
 #: front/src/components/SetInstanceModal.vue:7
 msgctxt "Popup/Instance/Error message.List item"
 msgid "The server might be down"
-msgstr ""
+msgstr "Parece que o servidor caiu"
 
 #: front/src/components/auth/SubsonicTokenForm.vue:4
 msgctxt "Content/Settings/Paragraph"
@@ -4371,12 +4663,16 @@ msgstr "A API Subsonic não está disponível nesta instância do Funkwhale."
 
 #: front/src/components/library/EditCard.vue:96
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"The suggestion will be completely removed, this action is irreversible."
-msgstr ""
+msgid "The suggestion will be completely removed, this action is irreversible."
+msgstr "A sugestão será permanentemente excluída."
 
-#: front/src/components/playlists/PlaylistModal.vue:34
+#: front/src/views/admin/library/TagDetail.vue:44
 #, fuzzy
+msgctxt "Content/Moderation/Paragraph"
+msgid "The tag will be removed and unlinked from any existing entity. This action is irreversible."
+msgstr "A faixa será permanentemente excluída, junto com os envios, favoritos e histórico de escutadas."
+
+#: front/src/components/playlists/PlaylistModal.vue:34
 msgctxt "Popup/Playlist/Error message.Title"
 msgid "The track can't be added to a playlist"
 msgstr "Não foi possível adicionar a faixa na lista"
@@ -4384,20 +4680,17 @@ msgstr "Não foi possível adicionar a faixa na lista"
 #: front/src/components/audio/Player.vue:62
 msgctxt "Sidebar/Player/Error message.Title"
 msgid "The track cannot be loaded"
-msgstr ""
+msgstr "Não foi possível carregar a faixa"
 
-#: front/src/views/admin/library/TrackDetail.vue:74
+#: front/src/views/admin/library/TrackDetail.vue:80
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The track will be removed, as well as associated uploads, favorites and "
-"listening history. This action is irreversible."
-msgstr ""
+msgid "The track will be removed, as well as associated uploads, favorites and listening history. This action is irreversible."
+msgstr "A faixa será permanentemente excluída, junto com os envios, favoritos e histórico de escutadas."
 
 #: front/src/views/admin/library/UploadDetail.vue:68
-#, fuzzy
 msgctxt "Content/Moderation/Paragraph"
 msgid "The upload will be removed. This action is irreversible."
-msgstr "Esta ação é irreversível."
+msgstr "O envio será permanentemente excluído."
 
 #: front/src/components/library/FileUpload.vue:42
 msgctxt "Content/Library/List item"
@@ -4407,8 +4700,7 @@ msgstr "Os arquivos de áudio enviados estão no formato OGG, Flac ou MP3"
 #: front/src/views/content/Home.vue:4
 msgctxt "Content/Library/Paragraph"
 msgid "There are various ways to grab new content and make it available here."
-msgstr ""
-"Existem várias maneiras de obter novos conteúdos e disponibilizá-los aqui."
+msgstr "Existem várias maneiras de obter novos conteúdos e disponibilizá-los aqui."
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:66
 msgctxt "Popup/Moderation/Paragraph"
@@ -4425,28 +4717,43 @@ msgctxt "Content/Artist/Paragraph"
 msgid "This artist is present in the following libraries:"
 msgstr "Este artista está presente nas seguintes bibliotecas:"
 
+#: front/src/components/manage/moderation/DomainsTable.vue:169
+#, fuzzy
+msgctxt "Content/Moderation/Popup"
+msgid "This domain is present in your allow-list"
+msgstr "Este artista está presente nas seguintes bibliotecas:"
+
 #: front/src/views/admin/moderation/AccountsDetail.vue:84
-#: front/src/views/admin/moderation/DomainsDetail.vue:48
+#: front/src/views/admin/moderation/DomainsDetail.vue:76
 msgctxt "Content/Moderation/Card.Title"
 msgid "This domain is subject to specific moderation rules"
 msgstr "Este domínio está sujeito a regras específicas de moderação"
 
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:16
+#, fuzzy
+msgctxt "Content/Moderation/Card.Title"
+msgid "This entity is subject to specific moderation rules"
+msgstr "Este domínio está sujeito a regras específicas de moderação"
+
 #: front/src/views/content/Home.vue:9
 msgctxt "Content/Library/Paragraph"
 msgid "This instance offers up to %{quota} of storage space for every user."
+msgstr "Esta instância oferece até %{quota} de espaço de armazenamento por usuário."
+
+#: front/src/components/auth/Settings.vue:300
+msgctxt "Popup/Settings/Paragraph"
+msgid "This is irreversible and will permanently remove your data from our servers. You will we immediatly logged out."
 msgstr ""
-"Esta instância oferece até %{quota} de espaço de armazenamento por usuário."
 
 #: front/src/components/auth/Settings.vue:165
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"This is the list of applications that have access to your account data."
-msgstr ""
+msgid "This is the list of applications that have access to your account data."
+msgstr "Esta é a lista de aplicativos que tem acesso aos dados da sua conta."
 
 #: front/src/components/auth/Settings.vue:218
 msgctxt "Content/Settings/Paragraph"
 msgid "This is the list of applications that you have created."
-msgstr ""
+msgstr "Esta é a lista de aplicativos que você criou."
 
 #: front/src/components/auth/Profile.vue:16
 msgctxt "Content/Profile/Button.Paragraph"
@@ -4456,37 +4763,33 @@ msgstr "Este é você!"
 #: front/src/views/content/libraries/Form.vue:73
 msgctxt "Content/Library/Input.Placeholder"
 msgid "This library contains my personal music, I hope you like it."
-msgstr ""
-"Esta biblioteca contém minhas músicas pessoais, espero que você goste."
+msgstr "Esta biblioteca contém minhas músicas pessoais, espero que você goste."
 
-#: front/src/views/content/remote/Card.vue:141
+#: front/src/views/content/remote/Card.vue:169
 msgctxt "Content/Library/Card.Help text"
-msgid ""
-"This library is private and your approval from its owner is needed to access"
-" its content"
-msgstr ""
-"Esta biblioteca é privada e a permissão do dono é necessária para acessar "
-"seu conteúdo"
+msgid "This library is private and your approval from its owner is needed to access its content"
+msgstr "Esta biblioteca é privada e a permissão do dono é necessária para ver seu conteúdo"
 
-#: front/src/views/content/remote/Card.vue:142
+#: front/src/views/content/remote/Card.vue:170
 msgctxt "Content/Library/Card.Help text"
 msgid "This library is public and you can access its content freely"
-msgstr "Esta biblioteca é pública e você pode acessar seu conteúdo livremente"
+msgstr "Esta biblioteca é pública e você pode ver seu conteúdo livremente"
 
 #: front/src/components/common/ActionTable.vue:47
 msgctxt "Modal/*/Paragraph"
-msgid ""
-"This may affect a lot of elements or have irreversible consequences, please "
-"double check this is really what you want."
-msgstr ""
-"Isso pode afetar muitos elementos ou ter consequências irreversíveis, por "
-"favor, verifique se é o que você realmente deseja."
+msgid "This may affect a lot of elements or have irreversible consequences, please double check this is really what you want."
+msgstr "Isso pode afetar muitos elementos ou ter consequências irreversíveis, por favor, verifique se é o que você realmente deseja."
 
 #: front/src/components/library/AlbumEdit.vue:8
 #: front/src/components/library/ArtistEdit.vue:8
 #: front/src/components/library/TrackEdit.vue:8
 msgctxt "Content/*/Message"
 msgid "This object is managed by another server, you cannot edit it."
+msgstr "Não é possível editar este objeto, ele é gerenciado por outro servidor."
+
+#: front/src/components/Home.vue:87
+msgctxt "Content/Home/Paragraph"
+msgid "This pod runs Funkwhale, a community-driven project that lets you listen and share music and audio within a decentralized, open network."
 msgstr ""
 
 #: front/src/components/library/FileUpload.vue:51
@@ -4498,39 +4801,32 @@ msgstr "Essa referência será usada para agrupar arquivos importados."
 #: front/src/components/mixins/Translations.vue:34
 #, fuzzy
 msgctxt "Content/Library/Help text"
-msgid "This track could not be processed, please it is tagged correctly"
-msgstr ""
-"Não foi possível processar esta faixa, verifique se ela possui as tags "
-"certas"
+msgid "This track could not be processed, please make sure it is tagged correctly"
+msgstr "Não foi possível processar esta faixa, verifique se ela está com as tags adequadas"
 
 #: front/src/components/mixins/Translations.vue:29
 #: front/src/components/mixins/Translations.vue:30
-#, fuzzy
 msgctxt "Content/Library/Help text"
-msgid ""
-"This track has been uploaded, but hasn't been processed by the server yet"
+msgid "This track has been uploaded, but hasn't been processed by the server yet"
 msgstr "Faixa enviada, mas ainda não foi processada pelo servidor"
 
 #: front/src/components/mixins/Translations.vue:25
 #: front/src/components/mixins/Translations.vue:26
-#, fuzzy
 msgctxt "Content/Library/Help text"
 msgid "This track is already present in one of your libraries"
-msgstr "Faixa já presente em uma das suas bibliotecas"
+msgstr "Faixa já presente em uma de suas bibliotecas"
 
-#: front/src/components/audio/PlayButton.vue:85
+#: front/src/components/audio/PlayButton.vue:103
 msgctxt "*/Queue/Button/Title"
 msgid "This track is not available in any library you have access to"
-msgstr ""
-"Esta faixa não está disponível em nenhuma biblioteca à qual você tenha "
-"acesso"
+msgstr "Esta faixa não está disponível em nenhuma biblioteca à qual você possa ver"
 
 #: front/src/components/library/TrackDetail.vue:82
 msgctxt "Content/Track/Paragraph"
 msgid "This track is present in the following libraries:"
 msgstr "Esta faixa está presente nas seguintes bibliotecas:"
 
-#: front/src/views/playlists/Detail.vue:38
+#: front/src/views/playlists/Detail.vue:46
 msgctxt "Popup/Playlist/Paragraph"
 msgid "This will completely delete this playlist and cannot be undone."
 msgstr "Isso vai excluir permanentemente sua lista."
@@ -4540,77 +4836,74 @@ msgctxt "Popup/Radio/Paragraph"
 msgid "This will completely delete this radio and cannot be undone."
 msgstr "Isso vai excluir permanentemente sua rádio."
 
-#: front/src/components/auth/SubsonicTokenForm.vue:50
+#: front/src/components/auth/SubsonicTokenForm.vue:55
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will completely disable access to the Subsonic API using from account."
+msgid "This will completely disable access to the Subsonic API using from account."
+msgstr "Isso vai desativar completamente o acesso á API Subsonic usada na conta."
+
+#: front/src/components/manage/moderation/ReportCard.vue:359
+msgctxt "Content/Moderation/Popup,Paragraph"
+msgid "This will delete the object associated with this report and mark the report as resolved. The deletion is irreversible."
 msgstr ""
-"Isso vai desativar completamente o acesso á API Subsonic usada para a conta."
 
-#: front/src/components/auth/SubsonicTokenForm.vue:35
+#: front/src/components/auth/SubsonicTokenForm.vue:40
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will log you out from existing devices that use the current password."
-msgstr ""
-"Isso fará com que sua conta saia de todos os dispositivos que usem a senha "
-"atual."
+msgid "This will log you out from existing devices that use the current password."
+msgstr "Isso fará com que sua conta saia de todos os dispositivos que usem a senha atual."
 
 #: front/src/components/auth/Settings.vue:253
-#, fuzzy
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will permanently delete the application and all the associated tokens."
-msgstr "Isso vai excluir permanentemente sua lista."
+msgid "This will permanently delete the application and all the associated tokens."
+msgstr "Isso excluirá permanentemente seus aplicativos e todos os tokens associados."
 
 #: front/src/components/auth/Settings.vue:194
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will prevent this application from accessing the service on your "
-"behalf."
-msgstr ""
+msgid "This will prevent this application from accessing the service on your behalf."
+msgstr "Isso impedirá que esse aplicativo acesse o serviço em seu nome."
 
 #: front/src/components/playlists/Editor.vue:54
 msgctxt "Popup/Playlist/Paragraph"
 msgid "This will remove all tracks from this playlist and cannot be undone."
 msgstr "Isso vai excluir permanentemente todas as faixas da sua lista."
 
-#: front/src/views/admin/library/AlbumDetail.vue:99
-#: front/src/views/admin/library/TrackDetail.vue:98 src/edits.js:21
-#: src/edits.js:39
-msgctxt "*/*/*/Noun"
-msgid "Title"
-msgstr "Título"
-
 #: front/src/components/audio/track/Table.vue:7
-#: front/src/views/content/libraries/FilesTable.vue:55
-msgctxt "Content/Track/*/Noun"
-msgid "Title"
-msgstr "Título"
-
 #: front/src/components/manage/library/AlbumsTable.vue:39
 #: front/src/components/manage/library/TracksTable.vue:39
-msgctxt "*/*/*"
+#: front/src/views/admin/library/AlbumDetail.vue:105
+#: front/src/views/admin/library/TrackDetail.vue:104
+#: front/src/views/content/libraries/FilesTable.vue:55 src/edits.js:36
+#: front/src/edits.js:62
+msgctxt "*/*/*/Noun"
 msgid "Title"
 msgstr "Título"
 
 #: front/src/components/SetInstanceModal.vue:16
 msgctxt "Popup/Instance/Paragraph"
-msgid ""
-"To continue, please select the Funkwhale instance you want to connect to. "
-"Enter the address directly, or select one of the suggested choices."
+msgid "To continue, please select the Funkwhale instance you want to connect to. Enter the address directly, or select one of the suggested choices."
+msgstr "Para continuar, insira a instância Funkwhale que você deseja entrar. Digite o endereço ou selecione uma das sugeridas."
+
+#: front/src/components/ShortcutsModal.vue:148
+#, fuzzy
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle favorite"
+msgstr "1 favorito"
+
+#: front/src/components/ShortcutsModal.vue:132
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle mute"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:79
+#: front/src/components/ShortcutsModal.vue:136
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Toggle queue looping"
 msgstr "Botão de repetição da fila"
 
-#: front/src/views/admin/library/AlbumDetail.vue:222
-#: front/src/views/admin/library/ArtistDetail.vue:211
-#: front/src/views/admin/library/LibraryDetail.vue:200
-#: front/src/views/admin/library/TrackDetail.vue:274
-#: front/src/views/admin/moderation/AccountsDetail.vue:317
-#: front/src/views/admin/moderation/DomainsDetail.vue:225
+#: front/src/views/admin/library/AlbumDetail.vue:238
+#: front/src/views/admin/library/ArtistDetail.vue:226
+#: front/src/views/admin/library/LibraryDetail.vue:219
+#: front/src/views/admin/library/TrackDetail.vue:290
+#: front/src/views/admin/moderation/AccountsDetail.vue:329
+#: front/src/views/admin/moderation/DomainsDetail.vue:262
 msgctxt "Content/Moderation/Table.Label"
 msgid "Total size"
 msgstr "Tamanho total"
@@ -4620,20 +4913,18 @@ msgctxt "Content/Library/Card.Help text"
 msgid "Total size of the files in this library"
 msgstr "Tamanho total dos arquivos nesta biblioteca"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:105
+#: front/src/views/admin/moderation/DomainsDetail.vue:142
 msgctxt "Content/*/*"
 msgid "Total users"
 msgstr "Total de usuários"
 
-#: front/src/views/admin/library/UploadDetail.vue:199
-msgctxt "*/*/*"
-msgid "Track"
-msgstr "Faixa"
-
-#: front/src/components/audio/SearchBar.vue:27
-#: front/src/components/library/TrackBase.vue:173
+#: front/src/components/audio/SearchBar.vue:34
+#: front/src/components/library/TrackBase.vue:188
 #: front/src/components/library/TrackDetail.vue:128
 #: front/src/components/metadata/Search.vue:138
+#: src/components/mixins/Report.vue:28
+#: front/src/views/admin/library/UploadDetail.vue:199
+#: front/src/components/mixins/Report.vue:29
 msgctxt "*/*/*/Noun"
 msgid "Track"
 msgstr "Faixa"
@@ -4641,43 +4932,40 @@ msgstr "Faixa"
 #: front/src/components/library/EditCard.vue:13
 msgctxt "Content/Library/Card/Short"
 msgid "Track #%{ id } - %{ name }"
-msgstr ""
+msgstr "Faixa #%{ id } - %{ name }"
 
-#: front/src/views/admin/library/TrackDetail.vue:91
-#, fuzzy
+#: front/src/views/admin/library/TrackDetail.vue:97
 msgctxt "Content/Moderation/Title"
 msgid "Track data"
-msgstr "Nome da faixa"
+msgstr "Dados da faixa"
 
 #: front/src/components/library/TrackDetail.vue:4
 msgctxt "Content/Track/Title/Noun"
 msgid "Track information"
 msgstr "Informações da faixa"
 
-#: front/src/components/mixins/Translations.vue:50
-#: front/src/components/mixins/Translations.vue:51
+#: front/src/components/mixins/Translations.vue:60
+#: front/src/components/mixins/Translations.vue:61
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Track name"
 msgstr "Nome da faixa"
 
-#: front/src/components/instance/Stats.vue:54
 #: front/src/components/library/AlbumDetail.vue:19
-#: front/src/components/playlists/PlaylistModal.vue:47
-#: front/src/views/admin/moderation/AccountsDetail.vue:362
-#: front/src/views/admin/moderation/DomainsDetail.vue:274
-#: front/src/views/content/Base.vue:8 src/views/content/libraries/Detail.vue:8
-#: front/src/views/playlists/Detail.vue:51 src/views/radios/Detail.vue:34
-msgctxt "*/*/*/Noun"
-msgid "Tracks"
-msgstr "Faixas"
-
+#: front/src/components/library/TagDetail.vue:36
 #: front/src/components/manage/library/AlbumsTable.vue:42
 #: front/src/components/manage/library/ArtistsTable.vue:42
-#: front/src/views/admin/library/AlbumDetail.vue:252
-#: front/src/views/admin/library/ArtistDetail.vue:251
+#: front/src/components/manage/library/TagsTable.vue:44
+#: front/src/components/playlists/PlaylistModal.vue:47
+#: front/src/views/admin/library/AlbumDetail.vue:268
+#: front/src/views/admin/library/ArtistDetail.vue:266
 #: front/src/views/admin/library/Base.vue:14
-#: front/src/views/admin/library/LibraryDetail.vue:229
+#: front/src/views/admin/library/LibraryDetail.vue:248
+#: front/src/views/admin/library/TagDetail.vue:143
 #: front/src/views/admin/library/TracksList.vue:24
+#: front/src/views/admin/moderation/AccountsDetail.vue:374
+#: front/src/views/admin/moderation/DomainsDetail.vue:311
+#: front/src/views/content/Base.vue:8 src/views/content/libraries/Detail.vue:8
+#: front/src/views/playlists/Detail.vue:76 src/views/radios/Detail.vue:34
 msgctxt "*/*/*"
 msgid "Tracks"
 msgstr "Faixas"
@@ -4687,91 +4975,73 @@ msgctxt "Content/Artist/Title"
 msgid "Tracks by this artist"
 msgstr "Faixas deste artista"
 
-#: front/src/components/instance/Stats.vue:25
-msgctxt "Content/About/Paragraph/Unit"
-msgid "Tracks favorited"
-msgstr "Faixas favoritadas"
-
-#: front/src/components/instance/Stats.vue:19
-msgctxt "Content/About/Paragraph/Unit"
-msgid "tracks listened"
-msgstr "faixas escutadas"
-
 #: front/src/components/library/radios/Filter.vue:44
-#, fuzzy
 msgctxt "Popup/Radio/Title/Noun"
 msgid "Tracks matching filter"
-msgstr "Faixa encontrada"
+msgstr "Faixas encontradas"
 
 #: front/src/components/library/TrackDetail.vue:57
+#: front/src/components/manage/moderation/ReportCard.vue:134
 #: front/src/views/admin/library/UploadDetail.vue:250
+#: front/src/views/admin/moderation/AccountsDetail.vue:181
 msgctxt "Content/Track/Table.Label/Noun"
 msgid "Type"
 msgstr "Tipo"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:180
-msgctxt "Content/Moderation/Table.Label/Noun"
-msgid "Type"
-msgstr "Tipo"
-
 #: front/src/components/manage/moderation/AccountsTable.vue:44
-#: front/src/components/manage/moderation/DomainsTable.vue:42
+#: front/src/components/manage/moderation/DomainsTable.vue:50
 msgctxt "Content/Moderation/Table.Label/Short"
 msgid "Under moderation rule"
 msgstr "Sob regra de moderação"
 
-#: front/src/views/content/remote/Card.vue:109
-#: src/views/content/remote/Card.vue:114
+#: front/src/components/ShortcutsModal.vue:68
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Unfocus searchbar"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:122
+#: src/views/content/remote/Card.vue:127
 msgctxt "*/Library/Button.Label/Verb"
 msgid "Unfollow"
 msgstr "Deixar de seguir"
 
-#: front/src/views/content/remote/Card.vue:110
+#: front/src/views/content/remote/Card.vue:123
 msgctxt "Popup/Library/Title"
 msgid "Unfollow this library?"
 msgstr "Deixar de seguir esta biblioteca?"
 
-#: front/src/components/About.vue:17
-#, fuzzy
-msgctxt "Content/About/Paragraph"
-msgid ""
-"Unfortunately, the owners of this instance did not yet take the time to "
-"complete this page."
-msgstr ""
-"Infelizmente, os donos desta instância ainda não tiveram tempo para concluir"
-" esta página."
-
 #: front/src/components/federation/FetchButton.vue:54
 #: front/src/components/federation/FetchButton.vue:55
-msgctxt "*/*/Error"
-msgid "Unknowkn error"
-msgstr ""
-
 #: front/src/components/library/ImportStatusModal.vue:144
-msgctxt "Popup/Import/Error.Label"
-msgid "Unkwown error"
-msgstr ""
-
-#: front/src/components/Home.vue:37
-msgctxt "Content/Home/Title"
-msgid "Unlimited music"
-msgstr "Músicas ilimitadas"
+msgctxt "*/*/Error"
+msgid "Unknown error"
+msgstr "Erro desconhecido"
 
-#: front/src/components/audio/Player.vue:630
+#: front/src/components/audio/Player.vue:656
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Unmute"
 msgstr "Desfazer silêncio"
 
+#: front/src/components/manage/moderation/ReportCard.vue:225
+msgctxt "Content/*/Button.Label"
+msgid "Unresolve"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:67
+#: front/src/views/admin/moderation/ReportsList.vue:23
+msgctxt "Content/*/*/Short"
+msgid "Unresolved"
+msgstr ""
+
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:57
 msgctxt "Content/Moderation/Card.Button.Label/Verb"
 msgid "Update"
 msgstr "Atualizar"
 
 #: front/src/components/auth/ApplicationForm.vue:64
-#, fuzzy
 msgctxt "Content/Applications/Button.Label/Verb"
 msgid "Update application"
-msgstr "Atualizar lista"
+msgstr "Atualizar aplicativo"
 
 #: front/src/components/auth/Settings.vue:50
 msgctxt "Content/Settings/Button.Label/Verb"
@@ -4812,10 +5082,9 @@ msgstr "Enviar nova imagem de perfil"
 #: front/src/views/content/Home.vue:6
 msgctxt "Content/Library/Title/Verb"
 msgid "Upload audio content"
-msgstr "Enviar áudio"
+msgstr "Enviar conteúdo de áudio"
 
 #: front/src/views/admin/library/UploadDetail.vue:85
-#, fuzzy
 msgctxt "Content/Moderation/Title"
 msgid "Upload data"
 msgstr "Data de envio"
@@ -4827,34 +5096,28 @@ msgstr "Data de envio"
 
 #: front/src/components/library/FileUpload.vue:258
 msgctxt "Content/Library/Help text"
-msgid ""
-"Upload denied, ensure the file is not too big and that you have not reached "
-"your quota"
-msgstr ""
-"Não enviado, certifique-se de que o arquivo não é muito grande e você não "
-"atingiu sua cota"
+msgid "Upload denied, ensure the file is not too big and that you have not reached your quota"
+msgstr "Não enviado, certifique-se de que o arquivo não é muito grande e você não atingiu sua cota"
 
 #: front/src/components/library/ImportStatusModal.vue:8
 msgctxt "Popup/Import/Message"
 msgid "Upload is still pending and will soon be processed by the server."
-msgstr ""
+msgstr "O envio ainda está pendente e logo será processado pelo servidor."
 
 #: front/src/views/content/Home.vue:7
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Upload music files (MP3, OGG, FLAC, etc.) from your personal library "
-"directly from your browser to enjoy them here."
-msgstr ""
-"Envie áudios (MP3, OGG, FLAC, etc.) da sua biblioteca pessoal diretamente de"
-" seu navegador para curtí-los aqui."
+msgid "Upload music files (MP3, OGG, FLAC, etc.) from your personal library directly from your browser to enjoy them here."
+msgstr "Envie áudios (MP3, OGG, FLAC, etc.) da sua biblioteca pessoal diretamente de seu navegador para curtí-los aqui."
 
 #: front/src/components/library/FileUpload.vue:30
 msgctxt "Content/Library/Title/Verb"
 msgid "Upload new tracks"
 msgstr "Enviar novas faixas"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:298
-msgctxt "Content/Moderation/Table.Label/Noun"
+#: front/src/components/About.vue:99
+#: front/src/views/admin/moderation/AccountsDetail.vue:309
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Upload quota"
 msgstr "Cota de envio"
 
@@ -4865,16 +5128,13 @@ msgstr "Tempo de envio esgotado, por favor, tente novamente"
 
 #: front/src/components/library/ImportStatusModal.vue:14
 msgctxt "Popup/Import/Message"
-msgid ""
-"Upload was skipped because a similar one is already available in one of your"
-" libraries."
-msgstr ""
+msgid "Upload was skipped because a similar one is already available in one of your libraries."
+msgstr "O envio foi ignorado porque já existe em uma de suas bibliotecas."
 
 #: front/src/components/library/ImportStatusModal.vue:11
-#, fuzzy
 msgctxt "Popup/Import/Message"
 msgid "Upload was successfully processed by the server."
-msgstr "Faixa enviada, mas ainda não foi processada pelo servidor"
+msgstr "Envio foi processado pelo servidor."
 
 #: front/src/components/library/FileUpload.vue:109
 msgctxt "Content/Library/Table"
@@ -4891,56 +5151,55 @@ msgctxt "Content/Library/Table"
 msgid "Uploading…"
 msgstr "Enviando…"
 
+#: front/src/components/manage/library/LibrariesTable.vue:52
+#: front/src/components/manage/moderation/AccountsTable.vue:41
+#: front/src/components/mixins/Translations.vue:75
+#: front/src/views/admin/library/AlbumDetail.vue:258
+#: front/src/views/admin/library/ArtistDetail.vue:246
 #: front/src/views/admin/library/Base.vue:20
+#: front/src/views/admin/library/LibraryDetail.vue:258
+#: front/src/views/admin/library/TrackDetail.vue:310
 #: front/src/views/admin/library/UploadsList.vue:24
+#: front/src/views/admin/moderation/AccountsDetail.vue:349
+#: front/src/views/admin/moderation/DomainsDetail.vue:281
+#: front/src/components/mixins/Translations.vue:76
 msgctxt "*/*/*"
 msgid "Uploads"
 msgstr "Envios"
 
-#: front/src/components/manage/moderation/AccountsTable.vue:41
-#: front/src/components/mixins/Translations.vue:63
-#: front/src/views/admin/library/AlbumDetail.vue:242
-#: front/src/views/admin/library/ArtistDetail.vue:231
-#: front/src/views/admin/library/LibraryDetail.vue:239
-#: front/src/views/admin/library/TrackDetail.vue:294
-#: front/src/views/admin/moderation/AccountsDetail.vue:337
-#: front/src/views/admin/moderation/DomainsDetail.vue:244
-#: front/src/components/mixins/Translations.vue:64
-msgctxt "Content/Moderation/Table.Label/Noun"
-msgid "Uploads"
-msgstr "Envios"
-
-#: front/src/components/manage/library/LibrariesTable.vue:52
-msgctxt "Content/*/*/Noun"
-msgid "Uploads"
-msgstr "Envios"
-
 #: front/src/components/auth/ApplicationForm.vue:16
 msgctxt "Content/Applications/Help Text"
-msgid ""
-"Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is "
-"not served on the web."
-msgstr ""
+msgid "Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is not served on the web."
+msgstr "Use \"urn:ietf:wg:oauth:2.0:oob\" como link de redirecionamento se seu aplicativo não está na Web."
 
 #: front/src/components/Footer.vue:16
 msgctxt "Footer/*/List item.Link"
 msgid "Use another instance"
 msgstr "Usar outra instância"
 
+#: front/src/components/Home.vue:146
+msgctxt "Content/Home/Link"
+msgid "Use Funkwhale on other devices with our apps"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:44
+msgctxt "*/*/Field,Help"
+msgid "Use this field to provide additional context to the moderator that will handle your report."
+msgstr ""
+
 #: front/src/views/auth/PasswordReset.vue:12
 msgctxt "Content/Signup/Paragraph"
-msgid ""
-"Use this form to request a password reset. We will send an email to the "
-"given address with instructions to reset your password."
+msgid "Use this form to request a password reset. We will send an email to the given address with instructions to reset your password."
+msgstr "Use este formulário para solicitar redefinição de senha. Enviaremos um e-mail com instruções para o endereço fornecido."
+
+#: front/src/components/moderation/ReportModal.vue:18
+msgctxt "*/Moderation/Popup,Paragraph"
+msgid "Use this form to submit a report to our moderation team."
 msgstr ""
-"Use este formulário para solicitar redefinição de senha. Enviaremos um "
-"e-mail com instruções para o endereço fornecido."
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:111
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Use this setting to temporarily enable/disable the policy without completely"
-" removing it."
+msgid "Use this setting to temporarily enable/disable the policy without completely removing it."
 msgstr "Usar essa configuração ativa/desativa as regras sem removê-las."
 
 #: front/src/components/manage/users/InvitationsTable.vue:49
@@ -4948,15 +5207,27 @@ msgctxt "Content/Admin/Table"
 msgid "Used"
 msgstr "Usado"
 
+#: front/src/components/Home.vue:125
+msgctxt "Content/Home/Header"
+msgid "Useful links"
+msgstr ""
+
 #: front/src/views/content/libraries/Detail.vue:26
 msgctxt "Content/Library/Table.Label"
 msgid "User"
 msgstr "Usuário"
 
-#: front/src/components/instance/Stats.vue:5
-msgctxt "Content/About/Title/Noun"
-msgid "User activity"
-msgstr "Atividade do usuário"
+#: front/src/components/Home.vue:154
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "User guides"
+msgstr "Bibliotecas do usuário"
+
+#: front/src/views/admin/Settings.vue:88
+#, fuzzy
+msgctxt "Content/Admin/Menu"
+msgid "User Interface"
+msgstr "Nome de usuário"
 
 #: front/src/components/library/AlbumDetail.vue:26
 #: front/src/components/library/ArtistDetail.vue:39
@@ -4970,35 +5241,35 @@ msgctxt "Content/Radio/Title"
 msgid "User radios"
 msgstr "Rádios do usuário"
 
-#: front/src/components/auth/Signup.vue:19
+#: front/src/components/auth/SignupForm.vue:15
 #: front/src/components/manage/users/UsersTable.vue:37
-#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:71
 #: front/src/views/admin/moderation/AccountsDetail.vue:114
-#: front/src/components/mixins/Translations.vue:60
+#: front/src/components/mixins/Translations.vue:72
 msgctxt "Content/*/*"
 msgid "Username"
 msgstr "Nome de usuário"
 
-#: front/src/components/auth/Login.vue:15
+#: front/src/components/auth/LoginForm.vue:11
 msgctxt "Content/Login/Input.Label/Noun"
 msgid "Username or email"
 msgstr "Nome de usuário ou e-mail"
 
-#: front/src/components/instance/Stats.vue:13
-msgctxt "Content/About/Paragraph/Unit"
-msgid "users"
-msgstr "usuários"
-
-#: front/src/components/Sidebar.vue:102
-#: front/src/components/manage/moderation/DomainsTable.vue:39
-#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/Sidebar.vue:106
+#: front/src/components/manage/moderation/DomainsTable.vue:47
+#: front/src/components/mixins/Translations.vue:73
 #: src/views/admin/Settings.vue:81 front/src/views/admin/users/Base.vue:5
 #: src/views/admin/users/UsersList.vue:21
-#: front/src/components/mixins/Translations.vue:62
+#: front/src/components/mixins/Translations.vue:74
 msgctxt "*/*/*/Noun"
 msgid "Users"
 msgstr "Usuários"
 
+#: front/src/components/Home.vue:110
+msgctxt "Content/Home/Paragraph"
+msgid "Users on this pod also get %{ quota } of free storage to upload their own content!"
+msgstr ""
+
 #: front/src/components/Footer.vue:29
 msgctxt "Footer/*/Title"
 msgid "Using Funkwhale"
@@ -5016,45 +5287,60 @@ msgctxt "Content/Library/Link/Verb"
 msgid "View files"
 msgstr "Ver arquivos"
 
-#: front/src/components/library/AlbumBase.vue:81
-#: front/src/components/library/ArtistBase.vue:92
-#: front/src/components/library/TrackBase.vue:100
-#: front/src/views/admin/library/AlbumDetail.vue:42
-#: front/src/views/admin/library/ArtistDetail.vue:41
+#: front/src/components/library/AlbumBase.vue:95
+#: front/src/components/library/ArtistBase.vue:107
+#: front/src/components/library/TrackBase.vue:111
+#: front/src/views/admin/library/AlbumDetail.vue:48
+#: front/src/views/admin/library/ArtistDetail.vue:46
 #: front/src/views/admin/library/LibraryDetail.vue:34
 #: front/src/views/admin/library/LibraryDetail.vue:45
-#: front/src/views/admin/library/TrackDetail.vue:41
+#: front/src/views/admin/library/TagDetail.vue:32
+#: front/src/views/admin/library/TrackDetail.vue:47
 #: front/src/views/admin/library/UploadDetail.vue:35
 #: front/src/views/admin/library/UploadDetail.vue:46
 #: front/src/views/admin/moderation/AccountsDetail.vue:37
 #: front/src/views/admin/moderation/AccountsDetail.vue:45
+#: front/src/views/admin/moderation/DomainsDetail.vue:30
 msgctxt "Content/Moderation/Link/Verb"
 msgid "View in Django's admin"
-msgstr ""
+msgstr "Ver administração Django"
 
-#: front/src/components/library/AlbumBase.vue:61
-#: front/src/components/library/ArtistBase.vue:72
-#: front/src/components/library/TrackBase.vue:80
+#: front/src/components/Home.vue:169
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "View more…"
+msgstr "Ver mais…"
+
+#: front/src/components/library/AlbumBase.vue:62
+#: front/src/components/library/ArtistBase.vue:73
+#: front/src/components/library/TrackBase.vue:78
 #: front/src/components/metadata/ArtistCard.vue:49
 #: front/src/components/metadata/ReleaseCard.vue:53
 msgctxt "Content/*/*/Clickable, Verb"
 msgid "View on MusicBrainz"
 msgstr "Ver em MusicBrainz"
 
+#: front/src/components/manage/moderation/ReportCard.vue:124
+msgctxt "Content/Moderation/Link"
+msgid "View public page"
+msgstr ""
+
 #: front/src/components/manage/library/LibrariesTable.vue:11
 #: front/src/components/manage/library/LibrariesTable.vue:51
 #: front/src/components/manage/library/UploadsTable.vue:11
 #: front/src/components/manage/library/UploadsTable.vue:63
 #: front/src/views/admin/library/LibraryDetail.vue:94
 #: front/src/views/admin/library/UploadDetail.vue:101
+#: front/src/views/content/libraries/Form.vue:18
 msgctxt "*/*/*"
 msgid "Visibility"
 msgstr "Visibilidade"
 
-#: front/src/views/content/libraries/Form.vue:18
-msgctxt "Content/Library/Dropdown.Label"
-msgid "Visibility"
-msgstr "Visibilidade"
+#: front/src/components/Home.vue:91
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Visit funkwhale.audio"
+msgstr "Usando Funkwhale"
 
 #: front/src/components/library/AlbumDetail.vue:4
 msgctxt "Content/Album/"
@@ -5062,58 +5348,57 @@ msgid "Volume %{ number }"
 msgstr "Volume %{ number }"
 
 #: front/src/components/federation/FetchButton.vue:69
-#, fuzzy
 msgctxt "Popup/*/Loading.Title"
 msgid "Waiting for result…"
-msgstr "Carregando seus favoritos…"
+msgstr "Carregando…"
 
-#: front/src/components/auth/Login.vue:7
+#: front/src/components/auth/Settings.vue:285
+#, fuzzy
+msgctxt "Content/Settings/Error message.Title"
+msgid "We cannot delete your account"
+msgstr "Não foi possível entrar"
+
+#: front/src/components/auth/LoginForm.vue:3
 msgctxt "Content/Login/Error message.Title"
 msgid "We cannot log you in"
 msgstr "Não foi possível entrar"
 
 #: front/src/components/auth/ApplicationForm.vue:3
-#, fuzzy
 msgctxt "Content/*/Error message.Title"
 msgid "We cannot save your changes"
-msgstr "Não foi possível salvar suas configurações"
+msgstr "Não foi possível salvar as alterações"
 
-#: front/src/components/Home.vue:122
-msgctxt "Content/Home/List item"
-msgid "We do not track you or bother you with ads"
-msgstr "Nós não rastreamos ou incomodamos você com anúncios"
+#: front/src/views/Notifications.vue:39
+msgctxt "Content/Notifications/Paragraph"
+msgid "We noticed you've been here for a while. If Funkwhale is useful to you, we could use your help to make it even better!"
+msgstr ""
 
 #: front/src/components/library/FileUpload.vue:39
 msgctxt "Content/Library/Link"
 msgid "We recommend using Picard for that purpose."
 msgstr "Recomendamos o uso do Picard para este propósito."
 
-#: front/src/components/Home.vue:7
-msgctxt "Content/Home/Title"
-msgid "We think listening to music should be simple."
-msgstr "Nós acreditamos que ouvir músicas deve ser simples."
+#: front/src/components/moderation/ReportModal.vue:35
+msgctxt "*/*/Field,Help"
+msgid "We'll use this email if we need to contact you regarding this report."
+msgstr ""
 
-#: front/src/components/Home.vue:148
+#: front/src/components/Home.vue:207
 msgctxt "Head/Home/Title"
 msgid "Welcome"
 msgstr "Bem-vindo(a)"
 
 #: front/src/components/Home.vue:5
-msgctxt "Content/Home/Title/Verb"
-msgid "Welcome on Funkwhale"
-msgstr "Bem-vindo(a) ao Funkwhale"
-
-#: front/src/components/Home.vue:24
-msgctxt "Content/Home/Title"
-msgid "Why funkwhale?"
-msgstr "Por que funkwhale?"
+msgctxt "Content/Home/Header"
+msgid "Welcome to %{ podName }!"
+msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:13
+#: front/src/components/audio/EmbedWizard.vue:23
 msgctxt "Popup/Embed/Input.Label"
 msgid "Widget height"
 msgstr "Altura do widget"
 
-#: front/src/components/audio/EmbedWizard.vue:6
+#: front/src/components/audio/EmbedWizard.vue:16
 msgctxt "Popup/Embed/Input.Label"
 msgid "Widget width"
 msgstr "Largura do widget"
@@ -5121,21 +5406,23 @@ msgstr "Largura do widget"
 #: front/src/components/auth/ApplicationForm.vue:157
 msgctxt "Content/OAuth Scopes/Label/Verb"
 msgid "Write"
-msgstr ""
+msgstr "Escrita"
 
 #: front/src/components/auth/Authorize.vue:21
 msgctxt "Content/Auth/Label/Noun"
 msgid "Write-only"
-msgstr ""
+msgstr "Apenas escrita"
 
 #: front/src/components/auth/ApplicationForm.vue:158
 msgctxt "Content/OAuth Scopes/Help Text"
 msgid "Write-only access to user data"
-msgstr ""
+msgstr "Apenas escreve seus dados de usuário"
 
-#: front/src/components/Sidebar.vue:129
+#: front/src/components/Sidebar.vue:133
 #: front/src/components/manage/moderation/AccountsTable.vue:72
-#: front/src/components/manage/moderation/DomainsTable.vue:58
+#: front/src/components/manage/moderation/DomainsTable.vue:12
+#: front/src/components/manage/moderation/DomainsTable.vue:69
+#: front/src/views/admin/moderation/DomainsDetail.vue:109
 msgctxt "*/*/*"
 msgid "Yes"
 msgstr "Sim"
@@ -5147,35 +5434,23 @@ msgstr "Sim, quero sair!"
 
 #: front/src/views/content/libraries/Form.vue:19
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You are able to share your library with other people, regardless of its "
-"visibility."
-msgstr ""
-"Você pode compartilhar sua biblioteca com outras pessoas, independente da "
-"sua visibilidade."
+msgid "You are able to share your library with other people, regardless of its visibility."
+msgstr "Você pode compartilhar sua biblioteca com outras pessoas, independente da sua visibilidade."
 
 #: front/src/components/library/FileUpload.vue:32
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You are about to upload music to your library. Before proceeding, please "
-"ensure that:"
-msgstr ""
-"Você está prestes a enviar músicas para sua biblioteca. Antes de continuar, "
-"certifique-se de que:"
+msgid "You are about to upload music to your library. Before proceeding, please ensure that:"
+msgstr "Você está prestes a enviar músicas para sua biblioteca. Antes de continuar, certifique-se de que:"
 
 #: front/src/components/SetInstanceModal.vue:12
 msgctxt "Popup/Login/Paragraph"
-msgid ""
-"You are currently connected to <a href=\"%{ url }\" target=\"_blank\">%{ "
-"hostname }&nbsp;<i class=\"external icon\"/></a>. If you continue, you will "
-"be disconnected from your current instance and all your local data will be "
-"deleted."
-msgstr ""
+msgid "You are currently connected to <a href=\"%{ url }\" target=\"_blank\">%{ hostname }&nbsp;<i class=\"external icon\"/></a>. If you continue, you will be disconnected from your current instance and all your local data will be deleted."
+msgstr "Você está em <a href=\"%{ url }\" target=\"_blank\">%{ hostname }&nbsp;<i class=\"external icon\"/></a>. Se continuar, você sairá e todos os seus dados locais serão excluídos."
 
 #: front/src/components/library/ArtistDetail.vue:6
 msgctxt "Content/Artist/Paragraph"
 msgid "You are currently hiding content related to this artist."
-msgstr ""
+msgstr "Você ocultou conteúdos deste(a) artista."
 
 #: front/src/components/auth/Logout.vue:7
 msgctxt "Content/Login/Paragraph"
@@ -5184,95 +5459,72 @@ msgstr "Você entrou como %{ username }"
 
 #: front/src/components/library/FileUpload.vue:35
 msgctxt "Content/Library/List item"
-msgid ""
-"You are not uploading copyrighted content in a public library, otherwise you"
-" may be infringing the law"
-msgstr ""
+msgid "You are not uploading copyrighted content in a public library, otherwise you may be infringing the law"
+msgstr "Não envie conteúdo protegido por direitos autorais em uma biblioteca pública porque você pode estar violando a lei"
 
 #: front/src/components/SetInstanceModal.vue:98
 msgctxt "*/Instance/Message"
 msgid "You are now using the Funkwhale instance at %{ url }"
-msgstr ""
+msgstr "Você está usando a instância Funkwhale em %{ url }"
 
 #: front/src/views/content/Home.vue:17
+#, fuzzy
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You can follow libraries from other users to get access to new music. Public"
-" libraries can be followed immediatly, while following a private library "
-"requires approval from its owner."
-msgstr ""
-"Você pode seguir bibliotecas de outros usuários para conhecer novas músicas."
-" Bibliotecas públicas podem ser seguidas imediatamente, enquanto seguir uma "
-"biblioteca privada requer permissão do dono."
-
-#: front/src/components/Home.vue:128
-msgctxt "Content/Home/List item"
-msgid ""
-"You can invite friends and family to your instance so they can enjoy your "
-"music"
-msgstr ""
-"Você pode convidar seus amigos e família para sua instância para que eles "
-"possam curtir suas músicas"
+msgid "You can follow libraries from other users to get access to new music. Public libraries can be followed immediately, while following a private library requires approval from its owner."
+msgstr "Você pode seguir bibliotecas de outros usuários para conhecer novas músicas. Bibliotecas públicas podem ser seguidas imediatamente, enquanto seguir uma biblioteca privada requer permissão do dono."
 
 #: front/src/components/moderation/FilterModal.vue:31
+#, fuzzy
 msgctxt "Popup/Moderation/Paragraph"
-msgid ""
-"You can manage and update your filters anytime from your account settings."
-msgstr ""
+msgid "You can manage and update your filters any time from your account settings."
+msgstr "Você pode alterar e atualizar seus filtros a qualquer momento nas configurações da conta."
 
 #: front/src/views/auth/EmailConfirm.vue:24
 msgctxt "Content/Signup/Paragraph"
 msgid "You can now use the service without limitations."
 msgstr "Agora você pode usar o serviço sem limitações."
 
+#: front/src/components/auth/Settings.vue:278
+msgctxt "Content/Settings/Paragraph'"
+msgid "You can permanently and irreversibly delete your account and all the associated data using the form below. You will be asked for confirmation."
+msgstr ""
+
 #: front/src/components/library/radios/Builder.vue:7
 msgctxt "Content/Radio/Paragraph"
-msgid ""
-"You can use this interface to build your own custom radio, which will play "
-"tracks according to your criteria."
-msgstr ""
-"Você pode usar esta interface para criar sua própria rádio personalizada, "
-"que tocará faixas de sua escolha."
+msgid "You can use this interface to build your own custom radio, which will play tracks according to your criteria."
+msgstr "Você pode usar esta interface para criar sua própria rádio personalizada, que tocará faixas de sua escolha."
 
 #: front/src/components/auth/SubsonicTokenForm.vue:7
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"You can use those to enjoy your playlist and music in offline mode, on your "
-"smartphone or tablet, for instance."
-msgstr ""
-"Você pode usá-los para curtir sua lista no modo offline, em um dispositivo "
-"móvel, por exemplo."
+msgid "You can use those to enjoy your playlist and music in offline mode, on your smartphone or tablet, for instance."
+msgstr "Você pode usá-los para curtir sua lista no modo offline, em um dispositivo móvel, por exemplo."
 
 #: front/src/components/auth/Settings.vue:202
-#, fuzzy
 msgctxt "Content/Applications/Paragraph"
 msgid "You don't have any application connected with your account."
-msgstr "Você não tem nenhuma regra para esta conta."
+msgstr "Sem aplicativos."
 
 #: front/src/components/auth/Settings.vue:261
-#, fuzzy
 msgctxt "Content/Applications/Paragraph"
 msgid "You don't have any configured application yet."
-msgstr "Você não tem nenhuma regra para esta conta."
+msgstr "Sem aplicativos configurados."
 
 #: front/src/views/admin/moderation/AccountsDetail.vue:75
 msgctxt "Content/Moderation/Card.Title"
 msgid "You don't have any rule in place for this account."
 msgstr "Você não tem nenhuma regra para esta conta."
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:39
+#: front/src/views/admin/moderation/DomainsDetail.vue:67
 msgctxt "Content/Moderation/Card.Title"
 msgid "You don't have any rule in place for this domain."
 msgstr "Você não tem nenhuma regra para este domínio."
 
 #: front/src/components/library/EditForm.vue:52
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You don't have the permission to edit this object, but you can suggest "
-"changes. Once submitted, suggestions will be reviewed before approval."
-msgstr ""
+msgid "You don't have the permission to edit this object, but you can suggest changes. Once submitted, suggestions will be reviewed before approval."
+msgstr "Você não tem permissão para editar este objeto, mas pode sugerir alterações. Depois de enviadas, as sugestões serão revisadas antes da aprovação."
 
-#: front/src/components/Sidebar.vue:171
+#: front/src/components/Sidebar.vue:175
 msgctxt "Sidebar/Player/Title"
 msgid "You have a radio playing"
 msgstr "Você tem uma rádio tocando"
@@ -5284,66 +5536,72 @@ msgstr "Você pode ter um problema de conexão."
 
 #: front/src/components/auth/Settings.vue:100
 msgctxt "Popup/Settings/List item"
-msgid ""
-"You will be logged out from this session and have to log in with the new one"
+msgid "You will be logged out from this session and have to log in with the new one"
 msgstr "Você sairá desta conta e precisará entrar novamente"
 
 #: front/src/components/auth/Authorize.vue:51
 msgctxt "Content/Auth/Paragraph"
 msgid "You will be redirected to <strong>%{ url }</strong>"
-msgstr ""
+msgstr "Você será redirecionado para <strong>%{ url }</strong>"
 
 #: front/src/components/auth/Authorize.vue:49
 msgctxt "Content/Auth/Paragraph"
 msgid "You will be shown a code to copy-paste in the application."
-msgstr ""
+msgstr "Você verá um código para copiar e colar no aplicativo."
 
 #: front/src/components/auth/Settings.vue:71
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"You will have to update your password on your clients that use this "
-"password."
+msgid "You will have to update your password on your clients that use this password."
 msgstr "Você precisará atualizar a senha nos clientes que usam a senha atual."
 
 #: front/src/components/moderation/FilterModal.vue:20
+#, fuzzy
 msgctxt "Popup/Moderation/Paragraph"
-msgid ""
-"You will not see tracks, albums and user activity linked to this artist "
-"anymore:"
-msgstr ""
+msgid "You will not see tracks, albums and user activity linked to this artist any more:"
+msgstr "Você não verá mais faixas, álbuns e atividades de usuários vinculados a este(a) artista:"
 
-#: front/src/components/auth/Signup.vue:13
+#: front/src/components/auth/SignupForm.vue:9
 msgctxt "Content/Signup/Form/Paragraph"
 msgid "Your account cannot be created."
+msgstr "Não foi possível criar conta."
+
+#: front/src/components/auth/Settings.vue:281
+msgctxt "Content/Settings/Paragraph'"
+msgid "Your account will be deleted from our servers within a few minutes. We will also notify other servers who may have a copy of some of your data so they can proceed to deletion. Please note that some of these servers may be offline or unwilling to comply though."
 msgstr ""
 
 #: front/src/components/auth/Settings.vue:215
-#, fuzzy
 msgctxt "Content/Settings/Title/Noun"
 msgid "Your applications"
-msgstr "Suas notificações"
+msgstr "Seus aplicativos"
 
 #: front/src/components/auth/Settings.vue:38
 msgctxt "Content/Settings/Error message.Title"
 msgid "Your avatar cannot be saved"
+msgstr "Não foi possível salvar imagem de perfil"
+
+#: front/src/components/auth/Settings.vue:527
+msgctxt "*/Auth/Message"
+msgid "Your deletion request was submitted, your account and content will be deleted shortly"
 msgstr ""
 
 #: front/src/components/library/EditForm.vue:3
 msgctxt "Content/Library/Paragraph"
 msgid "Your edit was successfully submitted."
-msgstr ""
+msgstr "Sua edição foi enviada."
 
 #: front/src/components/favorites/List.vue:116
 msgctxt "Head/Favorites/Title"
 msgid "Your Favorites"
 msgstr "Seus Favoritos"
 
-#: front/src/components/Home.vue:109
-msgctxt "Content/Home/Title"
-msgid "Your music, your way"
-msgstr "Suas músicas, seu jeito"
+#: front/src/views/Notifications.vue:5
+#, fuzzy
+msgctxt "Content/Notifications/Title"
+msgid "Your messages"
+msgstr "Mensagens enviadas"
 
-#: front/src/views/Notifications.vue:4
+#: front/src/views/Notifications.vue:69
 msgctxt "Content/Notifications/Title"
 msgid "Your notifications"
 msgstr "Suas notificações"
@@ -5351,7 +5609,7 @@ msgstr "Suas notificações"
 #: front/src/components/auth/Settings.vue:76
 msgctxt "Content/Settings/Error message.Title"
 msgid "Your password cannot be changed"
-msgstr ""
+msgstr "Não foi possível alterar senha"
 
 #: front/src/views/auth/PasswordResetConfirm.vue:29
 msgctxt "Content/Signup/Card.Paragraph"
@@ -5361,43 +5619,38 @@ msgstr "Sua senha foi atualizada com sucesso."
 #: front/src/components/auth/Settings.vue:14
 #, fuzzy
 msgctxt "Content/Settings/Error message.Title"
-msgid "Your settings can't be updateds"
-msgstr "Configurações atualizadas"
+msgid "Your settings can't be updated"
+msgstr "Não foi possível atualizar configurações"
 
 #: front/src/components/auth/Settings.vue:101
 msgctxt "Popup/Settings/List item"
-msgid ""
-"Your Subsonic password will be changed to a new, random one, logging you out"
-" from devices that used the old Subsonic password"
-msgstr ""
-"Sua senha do Subsonic será alterada para uma nova aleatória, e sua conta "
-"sairá de dispositivos que usaram a senha antiga do Subsonic"
+msgid "Your Subsonic password will be changed to a new, random one, logging you out from devices that used the old Subsonic password"
+msgstr "Sua senha do Subsonic será alterada para uma nova aleatória, e sua conta sairá de dispositivos que usaram a senha antiga do Subsonic"
 
-#: front/src/edits.js:47
+#: front/src/entities.js:126
 #, fuzzy
-msgctxt "*/*/*/Short, Noun"
-msgid "Position"
-msgstr "Paginação"
+msgctxt "*/*/*/Noun"
+msgid "MusicBrainz ID"
+msgstr "Abrir em MusicBrainz"
 
-#: front/src/edits.js:54
-msgctxt "Content/Track/*/Noun"
-msgid "Copyright"
-msgstr "Direitos autorais"
+#: front/src/main.js:110
+msgctxt "*/Error/Paragraph"
+msgid "You sent too many requests and have been rate limited, please try again in %{ delay }"
+msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:183
-#, fuzzy
+#: front/src/main.js:113
+msgctxt "*/Error/Paragraph"
+msgid "You sent too many requests and have been rate limited, please try again later"
+msgstr ""
+
+#: front/src/components/library/AlbumBase.vue:208
 msgctxt "Content/Album/Header.Title"
-msgid ""
-"Album containing %{ count } track, by <a class=\"internal\" href=\"%{ "
-"artistUrl }\">%{ artist }</a>"
-msgid_plural ""
-"Album containing %{ count } tracks, by <a class=\"internal\" href=\"%{ "
-"artistUrl }\">%{ artist }</a>"
-msgstr[0] "Álbum com %{ count } faixa, de %{ artist }"
-msgstr[1] "Álbum com %{ count } faixas, de %{ artist }"
-
-#: front/src/components/audio/PlayButton.vue:220
-#, fuzzy
+msgid "Album containing %{ count } track, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgid_plural "Album containing %{ count } tracks, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgstr[0] "Álbum com %{ count } faixa de <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgstr[1] "Álbum com %{ count } faixas de <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+
+#: front/src/components/audio/PlayButton.vue:246
 msgctxt "*/Queue/Message"
 msgid "%{ count } track was added to your queue"
 msgid_plural "%{ count } tracks were added to your queue"
diff --git a/front/locales/pt_PT/LC_MESSAGES/app.po b/front/locales/pt_PT/LC_MESSAGES/app.po
index ec8c886805eeecd0c9f98e359a64c56aaec49d7a..8413b9c7db4b375a4c6ed1ca9a40df4924ab2353 100644
--- a/front/locales/pt_PT/LC_MESSAGES/app.po
+++ b/front/locales/pt_PT/LC_MESSAGES/app.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: front 1.0.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-05-16 10:35+0200\n"
+"POT-Creation-Date: 2019-10-01 15:15+0200\n"
 "PO-Revision-Date: 2019-01-18 21:50+0000\n"
 "Last-Translator: troll <my_name_is_troll@protonmail.com>\n"
 "Language-Team: none\n"
@@ -38,6 +38,53 @@ msgctxt "Content/Auth/Title"
 msgid "%{ app } wants to access your Funkwhale account"
 msgstr "Logar na sua conta Funkwhale"
 
+#: front/src/components/About.vue:173 src/components/Home.vue:56
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } active user"
+msgid_plural "%{ count } active users"
+msgstr[0] "%{ count } pista"
+msgstr[1] "%{ count } pistas"
+
+#: front/src/components/About.vue:182
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } albums"
+msgid_plural "%{ count } albums"
+msgstr[0] "%{ count } pista"
+msgstr[1] "%{ count } pistas"
+
+#: front/src/components/About.vue:152
+msgctxt "*/*/*"
+msgid "%{ count } allowed domains"
+msgid_plural "%{ count } allowed domains"
+msgstr[0] ""
+msgstr[1] ""
+
+#: front/src/components/About.vue:179
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } artists"
+msgid_plural "%{ count } artists"
+msgstr[0] "%{ count } pista"
+msgstr[1] "%{ count } pistas"
+
+#: front/src/components/About.vue:176 src/components/Home.vue:59
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } hour of music"
+msgid_plural "%{ count } hours of music"
+msgstr[0] "%{ count } pista"
+msgstr[1] "%{ count } pistas"
+
+#: front/src/components/About.vue:188
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } listenings"
+msgid_plural "%{ count } listenings"
+msgstr[0] "%{ count } pista"
+msgstr[1] "%{ count } pistas"
+
 #: front/src/components/common/ActionTable.vue:68
 #, fuzzy
 msgctxt "Content/*/Paragraph"
@@ -46,9 +93,9 @@ msgid_plural "%{ count } on %{ total } selected"
 msgstr[0] "%{ count } em %{ total } selecionado"
 msgstr[1] "%{ count } em %{ total } selecionados"
 
-#: front/src/components/Sidebar.vue:121 src/components/audio/album/Card.vue:52
+#: front/src/components/Sidebar.vue:125 src/components/audio/album/Card.vue:52
 #: front/src/views/content/libraries/Card.vue:40
-#: src/views/content/remote/Card.vue:30
+#: src/views/content/remote/Card.vue:43
 #, fuzzy
 msgctxt "*/*/*"
 msgid "%{ count } track"
@@ -72,7 +119,15 @@ msgid_plural "%{ count } tracks matching combined filters"
 msgstr[0] "%{ count } pista corresponde aos filtros selecionados"
 msgstr[1] "%{ count } pistas correspondem aos filtros selecionados"
 
-#: front/src/components/playlists/Card.vue:18
+#: front/src/components/About.vue:185
+#, fuzzy
+msgctxt "Content/Home/Stat"
+msgid "%{ count } tracks"
+msgid_plural "%{ count } tracks"
+msgstr[0] "%{ count } pista"
+msgstr[1] "%{ count } pistas"
+
+#: front/src/components/playlists/Card.vue:28
 #, fuzzy
 msgctxt "Content/*/Card/List item"
 msgid "%{ count} track"
@@ -117,11 +172,10 @@ msgstr "%{ username } perfil"
 
 #: front/src/components/playlists/PlaylistModal.vue:21
 msgctxt "Popup/Playlist/Paragraph"
-msgid ""
-"<strong>%{ track }</strong> is already in <strong>%{ playlist }</strong>."
+msgid "<strong>%{ track }</strong> is already in <strong>%{ playlist }</strong>."
 msgstr ""
 
-#: front/src/components/audio/artist/Card.vue:41
+#: front/src/components/audio/artist/Card.vue:11
 #, fuzzy
 msgctxt "Content/Artist/Card"
 msgid "1 album"
@@ -137,24 +191,44 @@ msgid_plural "%{ count } favorites"
 msgstr[0] "1 preferida"
 msgstr[1] "%{ count } preferidas"
 
-#: front/src/components/Home.vue:64
-msgctxt "Content/Home/Title"
-msgid "A clean library"
-msgstr "Biblioteca limpa"
+#: front/src/components/audio/artist/Card.vue:15
+#, fuzzy
+msgctxt "Content/Artist/Card"
+msgid "1 track"
+msgid_plural "%{ count } tracks"
+msgstr[0] "Adicionar música"
+msgstr[1] "Adicionar música"
+
+#: front/src/views/Notifications.vue:21 src/views/Notifications.vue:55
+msgctxt "*/*/*"
+msgid "30 days"
+msgstr ""
+
+#: front/src/views/Notifications.vue:22 src/views/Notifications.vue:56
+msgctxt "*/*/*"
+msgid "60 days"
+msgstr ""
+
+#: front/src/views/Notifications.vue:23 src/views/Notifications.vue:57
+msgctxt "*/*/*"
+msgid "90 days"
+msgstr ""
 
 #: front/src/components/library/FileUpload.vue:264
+#, fuzzy
 msgctxt "Content/Library/Help text"
-msgid "A network error occured while uploading this file"
+msgid "A network error occurred while uploading this file"
 msgstr "Ocorreu um erro durante o upload deste ficheiro"
 
-#: front/src/components/library/EditForm.vue:145
+#: front/src/components/library/EditForm.vue:161
 msgctxt "*/*/Placeholder"
 msgid "A short summary describing your changes."
 msgstr "Ocorreu um erro ao salvar suas mudanças"
 
 #: front/src/components/About.vue:5
-msgctxt "Content/About/Title/Short, Noun"
-msgid "About %{ instance }"
+#, fuzzy
+msgctxt "Content/Home/Header"
+msgid "About %{ podName }"
 msgstr "Sobre %{ instance }"
 
 #: front/src/components/Footer.vue:6
@@ -162,7 +236,7 @@ msgctxt "Footer/About/Title"
 msgid "About %{instanceName}"
 msgstr "Sobre %{instanceName}"
 
-#: front/src/components/Footer.vue:45
+#: front/src/components/Footer.vue:53 src/components/Home.vue:85
 msgctxt "Footer/*/Title/Short"
 msgid "About Funkwhale"
 msgstr "Sobre Funkwhale"
@@ -172,9 +246,16 @@ msgctxt "Footer/About/List item.Link"
 msgid "About page"
 msgstr "Sobre a página"
 
-#: front/src/components/About.vue:8 src/components/About.vue:67
-msgctxt "Content/About/Title"
-msgid "About this instance"
+#: front/src/components/Home.vue:19
+#, fuzzy
+msgctxt "Content/Home/Header"
+msgid "About this Funkwhale pod"
+msgstr "Sobre Funkwhale"
+
+#: front/src/components/About.vue:21 src/components/About.vue:51
+#, fuzzy
+msgctxt "Content/About/Header"
+msgid "About this pod"
 msgstr "Sobre esta instância"
 
 #: front/src/views/content/libraries/Detail.vue:48
@@ -187,96 +268,87 @@ msgctxt "Content/Library/Table/Short"
 msgid "Accepted"
 msgstr "Aceitado"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:110
+#: front/src/components/auth/SubsonicTokenForm.vue:117
 msgctxt "Content/Settings/Message"
 msgid "Access disabled"
 msgstr "Acesso desativado"
 
-#: front/src/components/mixins/Translations.vue:73
-#: front/src/components/mixins/Translations.vue:74
+#: front/src/components/mixins/Translations.vue:85
+#: front/src/components/mixins/Translations.vue:86
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to audio files, libraries, artists, albums and tracks"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:97
-#: front/src/components/mixins/Translations.vue:98
+#: front/src/components/mixins/Translations.vue:109
+#: front/src/components/mixins/Translations.vue:110
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to content filters"
 msgstr "Selecione um filtro"
 
-#: front/src/components/mixins/Translations.vue:105
-#: front/src/components/mixins/Translations.vue:106
+#: front/src/components/mixins/Translations.vue:117
+#: front/src/components/mixins/Translations.vue:118
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to edits"
 msgstr "Acesso desativado"
 
-#: front/src/components/mixins/Translations.vue:69
-#: front/src/components/mixins/Translations.vue:70
+#: front/src/components/mixins/Translations.vue:81
+#: front/src/components/mixins/Translations.vue:82
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to email, username, and profile information"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:77
-#: front/src/components/mixins/Translations.vue:78
+#: front/src/components/mixins/Translations.vue:89
+#: front/src/components/mixins/Translations.vue:90
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to favorites"
 msgstr "Adicionar aos favoritos"
 
-#: front/src/components/mixins/Translations.vue:85
-#: front/src/components/mixins/Translations.vue:86
+#: front/src/components/mixins/Translations.vue:97
+#: front/src/components/mixins/Translations.vue:98
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to follows"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:81
-#: front/src/components/mixins/Translations.vue:82
+#: front/src/components/mixins/Translations.vue:93
+#: front/src/components/mixins/Translations.vue:94
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to listening history"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:101
-#: front/src/components/mixins/Translations.vue:102
+#: front/src/components/mixins/Translations.vue:113
+#: front/src/components/mixins/Translations.vue:114
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to notifications"
 msgstr "Suas notificações"
 
-#: front/src/components/mixins/Translations.vue:89
-#: front/src/components/mixins/Translations.vue:90
+#: front/src/components/mixins/Translations.vue:101
+#: front/src/components/mixins/Translations.vue:102
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to playlists"
 msgstr "Adicionar à Playlist…"
 
-#: front/src/components/mixins/Translations.vue:93
-#: front/src/components/mixins/Translations.vue:94
+#: front/src/components/mixins/Translations.vue:105
+#: front/src/components/mixins/Translations.vue:106
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to radios"
 msgstr "Acesso desativado"
 
-#: front/src/components/Home.vue:101
-msgctxt "Content/Home/List item"
-msgid ""
-"Access your music from a clean interface that focuses on what really matters"
-msgstr ""
-"Aceda à sua música a partir de uma interface limpa que se concentra no que "
-"realmente importa"
-
 #: front/src/components/manage/library/UploadsTable.vue:67
-#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:55
 #: front/src/views/admin/library/UploadDetail.vue:175
-#: front/src/components/mixins/Translations.vue:46
+#: front/src/components/mixins/Translations.vue:56
 msgctxt "Content/*/*/Noun"
 msgid "Accessed date"
 msgstr "Acesso desativado"
 
-#: front/src/views/admin/library/LibraryDetail.vue:104
-#: front/src/views/admin/library/UploadDetail.vue:111
-msgctxt "*/*/*/Noun"
-msgid "Account"
-msgstr "Contas"
-
 #: front/src/components/manage/library/LibrariesTable.vue:49
 #: front/src/components/manage/library/UploadsTable.vue:61
-msgctxt "*/*/*"
+#: front/src/components/manage/moderation/ReportCard.vue:156
+#: front/src/components/mixins/Report.vue:13
+#: front/src/views/admin/library/LibraryDetail.vue:113
+#: front/src/views/admin/library/UploadDetail.vue:111
+#: front/src/components/mixins/Report.vue:14
+msgctxt "*/*/*/Noun"
 msgid "Account"
 msgstr "Contas"
 
@@ -290,7 +362,7 @@ msgctxt "Content/Settings/Title"
 msgid "Account settings"
 msgstr "Configurações da conta"
 
-#: front/src/components/auth/Settings.vue:479
+#: front/src/components/auth/Settings.vue:544
 msgctxt "Head/Settings/Title"
 msgid "Account Settings"
 msgstr "Configurações da Conta"
@@ -307,7 +379,7 @@ msgstr "Email da conta"
 
 #: front/src/views/admin/moderation/AccountsList.vue:3
 #: front/src/views/admin/moderation/AccountsList.vue:24
-#: front/src/views/admin/moderation/Base.vue:8
+#: front/src/views/admin/moderation/Base.vue:11
 msgctxt "*/Moderation/Title"
 msgid "Accounts"
 msgstr "Contas"
@@ -321,29 +393,30 @@ msgstr "Açao"
 #, fuzzy
 msgctxt "Content/*/Paragraph"
 msgid "Action %{ action } was launched successfully on %{ count } element"
-msgid_plural ""
-"Action %{ action } was launched successfully on %{ count } elements"
+msgid_plural "Action %{ action } was launched successfully on %{ count } elements"
 msgstr[0] "A ação %{ action } foi lançada com sucesso em %{ count } item"
 msgstr[1] "A ação %{ action } foi lançada com sucesso em %{ count } itens"
 
 #: front/src/components/common/ActionTable.vue:22
 #: front/src/components/library/radios/Builder.vue:65
+#: front/src/components/manage/moderation/ReportCard.vue:210
 msgctxt "Content/*/*/Noun"
 msgid "Actions"
 msgstr "Ações"
 
-#: front/src/components/manage/users/UsersTable.vue:53
+#: front/src/components/manage/users/UsersTable.vue:54
 msgctxt "Content/Admin/Table"
 msgid "Active"
 msgstr "Ativo"
 
-#: front/src/views/admin/library/AlbumDetail.vue:134
-#: front/src/views/admin/library/ArtistDetail.vue:123
-#: front/src/views/admin/library/LibraryDetail.vue:138
-#: front/src/views/admin/library/TrackDetail.vue:186
+#: front/src/views/admin/library/AlbumDetail.vue:140
+#: front/src/views/admin/library/ArtistDetail.vue:128
+#: front/src/views/admin/library/LibraryDetail.vue:147
+#: front/src/views/admin/library/TagDetail.vue:83
+#: front/src/views/admin/library/TrackDetail.vue:192
 #: front/src/views/admin/library/UploadDetail.vue:160
-#: front/src/views/admin/moderation/AccountsDetail.vue:220
-#: front/src/views/admin/moderation/DomainsDetail.vue:136
+#: front/src/views/admin/moderation/AccountsDetail.vue:221
+#: front/src/views/admin/moderation/DomainsDetail.vue:173
 msgctxt "Content/Moderation/Title"
 msgid "Activity"
 msgstr "Atividade"
@@ -354,7 +427,7 @@ msgctxt "Content/Settings/Dropdown.Label/Noun"
 msgid "Activity visibility"
 msgstr "Visibilidade da atividade"
 
-#: front/src/views/admin/moderation/DomainsList.vue:18
+#: front/src/views/admin/moderation/DomainsList.vue:22
 msgctxt "Content/Moderation/Button/Verb"
 msgid "Add"
 msgstr "Adicionar"
@@ -400,7 +473,21 @@ msgctxt "Content/Radio/Paragraph"
 msgid "Add filters to customize your radio"
 msgstr "Adicione filtros para personalizar seu rádio"
 
-#: front/src/components/audio/PlayButton.vue:75
+#: front/src/components/manage/moderation/NoteForm.vue:12
+#, fuzzy
+msgctxt "Content/Moderation/Button.Label/Verb"
+msgid "Add note"
+msgstr "Adicionar conteúdo"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:191
+#: front/src/views/admin/moderation/DomainsDetail.vue:46
+#: front/src/views/admin/moderation/DomainsList.vue:18
+#, fuzzy
+msgctxt "Content/Moderation/Action/Verb"
+msgid "Add to allow-list"
+msgstr "Adicionar à Playlist…"
+
+#: front/src/components/audio/PlayButton.vue:91
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Add to current queue"
 msgstr "Adicionar à fila atual"
@@ -432,7 +519,7 @@ msgctxt "Popup/Playlist/Table.Button.Label/Verb"
 msgid "Add track"
 msgstr "Adicionar música"
 
-#: front/src/components/manage/users/UsersTable.vue:69
+#: front/src/components/manage/users/UsersTable.vue:70
 msgctxt "Content/Admin/Table.User role"
 msgid "Admin"
 msgstr "Admin"
@@ -442,49 +529,49 @@ msgctxt "Sidebar/Admin/Title/Noun"
 msgid "Administration"
 msgstr "Administração"
 
-#: front/src/views/admin/library/TrackDetail.vue:107
-msgctxt "*/*/*/Noun"
-msgid "Album"
-msgstr "Álbum"
-
-#: front/src/components/audio/SearchBar.vue:26
+#: front/src/components/audio/SearchBar.vue:33
 #: src/components/audio/track/Table.vue:9
-#: front/src/components/library/AlbumBase.vue:152
-#: front/src/components/library/ArtistBase.vue:194
+#: front/src/components/library/AlbumBase.vue:170
+#: front/src/components/library/ArtistBase.vue:212
 #: front/src/components/manage/library/TracksTable.vue:40
 #: front/src/components/metadata/Search.vue:134
+#: src/components/mixins/Report.vue:41
+#: front/src/views/admin/library/TrackDetail.vue:113
 #: front/src/views/content/libraries/FilesTable.vue:57
+#: front/src/components/mixins/Report.vue:42
 msgctxt "*/*/*"
 msgid "Album"
 msgstr "Álbum"
 
-#: front/src/views/admin/library/TrackDetail.vue:128
+#: front/src/views/admin/library/TrackDetail.vue:134
 msgctxt "*/*/*/Noun"
 msgid "Album artist"
 msgstr "Álbuns deste artista"
 
-#: front/src/views/admin/library/AlbumDetail.vue:92
+#: front/src/views/admin/library/AlbumDetail.vue:98
 msgctxt "Content/Moderation/Title"
 msgid "Album data"
 msgstr "Nome do álbum"
 
-#: front/src/components/mixins/Translations.vue:51
-#: front/src/components/mixins/Translations.vue:52
+#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/mixins/Translations.vue:62
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Album name"
 msgstr "Nome do álbum"
 
 #: front/src/components/audio/Search.vue:19
-#: src/components/instance/Stats.vue:48
-#: front/src/components/library/Albums.vue:120
-#: src/components/library/Library.vue:7
+#: src/components/library/Albums.vue:129
+#: front/src/components/library/Library.vue:7
+#: src/components/library/TagDetail.vue:28
 #: front/src/components/manage/library/ArtistsTable.vue:41
+#: front/src/components/manage/library/TagsTable.vue:43
 #: front/src/views/admin/library/AlbumsList.vue:24
-#: front/src/views/admin/library/ArtistDetail.vue:241
+#: front/src/views/admin/library/ArtistDetail.vue:256
 #: front/src/views/admin/library/Base.vue:11
-#: front/src/views/admin/library/LibraryDetail.vue:219
-#: front/src/views/admin/moderation/AccountsDetail.vue:354
-#: front/src/views/admin/moderation/DomainsDetail.vue:264
+#: front/src/views/admin/library/LibraryDetail.vue:238
+#: front/src/views/admin/library/TagDetail.vue:133
+#: front/src/views/admin/moderation/AccountsDetail.vue:366
+#: front/src/views/admin/moderation/DomainsDetail.vue:301
 msgctxt "*/*/*"
 msgid "Albums"
 msgstr "Álbuns"
@@ -498,7 +585,10 @@ msgstr "Álbuns deste artista"
 #: front/src/components/manage/library/LibrariesTable.vue:13
 #: front/src/components/manage/library/UploadsTable.vue:13
 #: front/src/components/manage/library/UploadsTable.vue:22
+#: front/src/components/manage/moderation/DomainsTable.vue:11
 #: front/src/components/manage/users/InvitationsTable.vue:19
+#: front/src/components/moderation/ReportCategoryDropdown.vue:32
+#: front/src/views/admin/moderation/ReportsList.vue:17
 #: front/src/views/content/libraries/FilesTable.vue:13
 msgctxt "Content/*/Dropdown"
 msgid "All"
@@ -517,40 +607,53 @@ msgctxt "Head/Authorize/Title"
 msgid "Allow application"
 msgstr ""
 
+#: front/src/components/About.vue:136
+msgctxt "*/*/*"
+msgid "Allow-list"
+msgstr ""
+
+#: front/src/components/About.vue:149
+#, fuzzy
+msgctxt "*/*/*"
+msgid "Allowed domains"
+msgstr "Adicionar um domínio"
+
 #: front/src/components/library/ImportStatusModal.vue:17
 msgctxt "Popup/Import/Message"
-msgid ""
-"An error occured during upload processing. You will find more information "
-"below."
+msgid "An error occurred during upload processing. You will find more information below."
 msgstr ""
 
 #: front/src/components/playlists/Editor.vue:13
+#, fuzzy
 msgctxt "Content/Playlist/Error message.Title"
-msgid "An error occured while saving your changes"
+msgid "An error occurred while saving your changes"
 msgstr "Ocorreu um erro ao salvar suas mudanças"
 
 #: front/src/components/federation/FetchButton.vue:21
+#, fuzzy
 msgctxt "Popup/*/Message.Content"
-msgid "An error occured while trying to refresh data:"
+msgid "An error occurred while trying to refresh data:"
 msgstr "Ocorreu um erro ao salvar suas mudanças"
 
 #: front/src/components/federation/FetchButton.vue:41
+#, fuzzy
 msgctxt "*/*/Error"
-msgid "An HTTP error occured while contacting the remote server"
+msgid "An HTTP error occurred while contacting the remote server"
 msgstr "Ocorreu um erro ao salvar suas mudanças"
 
-#: front/src/components/auth/Login.vue:10
-msgctxt "Content/Login/Error message/List item"
-msgid ""
-"An unknown error happend, this can mean the server is down or cannot be "
-"reached"
-msgstr ""
-"Um erro desconhecido aconteceu, isso pode significar que o servidor está "
-"inoperante ou não pode ser alcançado"
-
 #: front/src/components/library/ImportStatusModal.vue:145
 msgctxt "Popup/Import/Error.Label"
-msgid "An unkwown error occured"
+msgid "An unknown error occurred"
+msgstr ""
+
+#: front/src/components/About.vue:123
+msgctxt "*/*/*"
+msgid "Anonymous access"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:54
+msgctxt "Popup/Moderation/Error message"
+msgid "Anonymous reports are disabled, please sign-in to submit a report."
 msgstr ""
 
 #: front/src/components/auth/Settings.vue:175
@@ -571,9 +674,7 @@ msgstr ""
 
 #: front/src/components/auth/ApplicationEdit.vue:16
 msgctxt "Content/Application/Paragraph/"
-msgid ""
-"Application ID and secret are really sensitive values and must be treated "
-"like passwords. Do not share those with anyone else."
+msgid "Application ID and secret are really sensitive values and must be treated like passwords. Do not share those with anyone else."
 msgstr ""
 
 #: front/src/components/auth/ApplicationEdit.vue:25
@@ -603,29 +704,27 @@ msgctxt "Content/Login/Title"
 msgid "Are you sure you want to log out?"
 msgstr "Tem certeza que deseja sair?"
 
+#: front/src/components/audio/SearchBar.vue:32
+#: src/components/audio/track/Table.vue:8
 #: front/src/components/manage/library/AlbumsTable.vue:40
 #: front/src/components/manage/library/TracksTable.vue:41
-msgctxt "*/*/*"
-msgid "Artist"
-msgstr "Artista"
-
-#: front/src/components/audio/SearchBar.vue:25
-#: src/components/audio/track/Table.vue:8
 #: front/src/components/metadata/Search.vue:130
-#: front/src/views/admin/library/AlbumDetail.vue:108
-#: front/src/views/admin/library/TrackDetail.vue:118
-#: front/src/views/content/libraries/FilesTable.vue:56
+#: src/components/mixins/Report.vue:55
+#: front/src/views/admin/library/AlbumDetail.vue:114
+#: front/src/views/admin/library/TrackDetail.vue:124
+#: front/src/views/content/libraries/FilesTable.vue:56 src/entities.js:12
+#: front/src/components/mixins/Report.vue:56
 msgctxt "*/*/*/Noun"
 msgid "Artist"
 msgstr "Artista"
 
-#: front/src/views/admin/library/ArtistDetail.vue:91
+#: front/src/views/admin/library/ArtistDetail.vue:96
 msgctxt "Content/Moderation/Title"
 msgid "Artist data"
 msgstr "Nome do artista"
 
-#: front/src/components/mixins/Translations.vue:52
-#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/mixins/Translations.vue:62
+#: front/src/components/mixins/Translations.vue:63
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Artist name"
 msgstr "Nome do artista"
@@ -635,36 +734,36 @@ msgctxt "*/Search/Input.Placeholder"
 msgid "Artist, album, track…"
 msgstr "Artista, álbum, música…"
 
+#: front/src/components/audio/Search.vue:10
+#: src/components/library/Artists.vue:117
+#: front/src/components/library/Library.vue:10
+#: front/src/components/library/TagDetail.vue:19
+#: front/src/components/manage/library/TagsTable.vue:42
 #: front/src/views/admin/library/ArtistsList.vue:24
 #: front/src/views/admin/library/Base.vue:8
-#: front/src/views/admin/library/LibraryDetail.vue:209
-msgctxt "*/*/*"
-msgid "Artists"
-msgstr "Artistas"
-
-#: front/src/components/audio/Search.vue:10
-#: src/components/instance/Stats.vue:42
-#: front/src/components/library/Artists.vue:117
-#: src/components/library/Library.vue:10
-#: front/src/views/admin/moderation/AccountsDetail.vue:346
-#: front/src/views/admin/moderation/DomainsDetail.vue:254
+#: front/src/views/admin/library/LibraryDetail.vue:228
+#: front/src/views/admin/library/TagDetail.vue:123
+#: front/src/views/admin/moderation/AccountsDetail.vue:358
+#: front/src/views/admin/moderation/DomainsDetail.vue:291
 msgctxt "*/*/*/Noun"
 msgid "Artists"
 msgstr "Artistas"
 
 #: front/src/components/favorites/List.vue:34
-#: src/components/library/Albums.vue:25
-#: front/src/components/library/Artists.vue:25
+#: src/components/library/Albums.vue:29
+#: front/src/components/library/Artists.vue:29
 #: src/components/library/Radios.vue:44
 #: front/src/components/manage/library/AlbumsTable.vue:21
 #: front/src/components/manage/library/ArtistsTable.vue:21
 #: front/src/components/manage/library/EditsCardList.vue:39
 #: front/src/components/manage/library/LibrariesTable.vue:30
+#: front/src/components/manage/library/TagsTable.vue:21
 #: front/src/components/manage/library/TracksTable.vue:21
 #: front/src/components/manage/library/UploadsTable.vue:40
 #: front/src/components/manage/moderation/AccountsTable.vue:21
-#: front/src/components/manage/moderation/DomainsTable.vue:19
+#: front/src/components/manage/moderation/DomainsTable.vue:27
 #: front/src/components/manage/users/UsersTable.vue:19
+#: front/src/views/admin/moderation/ReportsList.vue:44
 #: front/src/views/content/libraries/FilesTable.vue:31
 #: front/src/views/playlists/List.vue:27
 msgctxt "Content/Search/Dropdown"
@@ -676,18 +775,24 @@ msgctxt "Content/Signup/Button.Label/Verb"
 msgid "Ask for a password reset"
 msgstr "Peça uma redefinição de senha"
 
-#: front/src/views/admin/library/AlbumDetail.vue:198
-#: front/src/views/admin/library/ArtistDetail.vue:187
-#: front/src/views/admin/library/LibraryDetail.vue:176
-#: front/src/views/admin/library/TrackDetail.vue:250
+#: front/src/components/manage/moderation/ReportCard.vue:72
+msgctxt "Content/Moderation/*"
+msgid "Assigned to"
+msgstr ""
+
+#: front/src/views/admin/library/AlbumDetail.vue:214
+#: front/src/views/admin/library/ArtistDetail.vue:202
+#: front/src/views/admin/library/LibraryDetail.vue:195
+#: front/src/views/admin/library/TagDetail.vue:113
+#: front/src/views/admin/library/TrackDetail.vue:266
 #: front/src/views/admin/library/UploadDetail.vue:191
-#: front/src/views/admin/moderation/AccountsDetail.vue:274
-#: front/src/views/admin/moderation/DomainsDetail.vue:202
+#: front/src/views/admin/moderation/AccountsDetail.vue:285
+#: front/src/views/admin/moderation/DomainsDetail.vue:239
 msgctxt "Content/Moderation/Title"
 msgid "Audio content"
 msgstr "Conteúdo áudio"
 
-#: front/src/components/ShortcutsModal.vue:55
+#: front/src/components/ShortcutsModal.vue:92
 msgctxt "Popup/Keyboard shortcuts/Title"
 msgid "Audio player shortcuts"
 msgstr "Atalhos do leitor de áudio"
@@ -730,9 +835,9 @@ msgid "Back to settings"
 msgstr "Atualizar configurações"
 
 #: front/src/components/library/TrackDetail.vue:48
-#: front/src/components/mixins/Translations.vue:55
+#: front/src/components/mixins/Translations.vue:67
 #: front/src/views/admin/library/UploadDetail.vue:227
-#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:68
 msgctxt "Content/Track/*/Noun"
 msgid "Bitrate"
 msgstr "Bitrate"
@@ -745,14 +850,8 @@ msgstr "Bloquear tudo"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:112
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Block everything from this account or domain. This will prevent any "
-"interaction with the entity, and purge related content (uploads, libraries, "
-"follows, etc.)"
-msgstr ""
-"Bloquear tudo a partir desta conta ou domínio. Isso evitará qualquer "
-"interação com a entidade e eliminará conteúdo relacionado (uploads, "
-"bibliotecas, segue, etc.)"
+msgid "Block everything from this account or domain. This will prevent any interaction with the entity, and purge related content (uploads, libraries, follows, etc.)"
+msgstr "Bloquear tudo a partir desta conta ou domínio. Isso evitará qualquer interação com a entidade e eliminará conteúdo relacionado (uploads, bibliotecas, segue, etc.)"
 
 #: front/src/components/Sidebar.vue:18 src/components/library/Library.vue:4
 msgctxt "*/Library/*/Verb"
@@ -764,6 +863,12 @@ msgctxt "Sidebar/Library/List item.Link/Verb"
 msgid "Browse library"
 msgstr "Navegar pela biblioteca"
 
+#: front/src/components/Home.vue:132
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Browse public content"
+msgstr "Atualizar o conteúdo da tabela"
+
 #: front/src/components/library/Albums.vue:4
 msgctxt "Content/Album/Title"
 msgid "Browsing albums"
@@ -794,39 +899,40 @@ msgctxt "Content/Album/Card"
 msgid "By %{ artist }"
 msgstr "Por %{ artist }"
 
-#: front/src/views/content/remote/Card.vue:112
+#: front/src/views/content/remote/Card.vue:125
 msgctxt "Popup/Library/Paragraph"
 msgid "By unfollowing this library, you loose access to its content."
-msgstr ""
-"Ao deixar de seguir esta biblioteca, você perderá o acesso ao seu conteúdo."
+msgstr "Ao deixar de seguir esta biblioteca, você perderá o acesso ao seu conteúdo."
 
-#: front/src/views/admin/library/AlbumDetail.vue:214
-#: front/src/views/admin/library/ArtistDetail.vue:203
-#: front/src/views/admin/library/LibraryDetail.vue:192
-#: front/src/views/admin/library/TrackDetail.vue:266
+#: front/src/views/admin/library/AlbumDetail.vue:230
+#: front/src/views/admin/library/ArtistDetail.vue:218
+#: front/src/views/admin/library/LibraryDetail.vue:211
+#: front/src/views/admin/library/TrackDetail.vue:282
 #: front/src/views/admin/library/UploadDetail.vue:208
-#: front/src/views/admin/moderation/AccountsDetail.vue:290
-#: front/src/views/admin/moderation/DomainsDetail.vue:217
+#: front/src/views/admin/moderation/AccountsDetail.vue:301
+#: front/src/views/admin/moderation/DomainsDetail.vue:254
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Cached size"
 msgstr "Tamanho em cache"
 
 #: front/src/components/SetInstanceModal.vue:37
 #: front/src/components/common/DangerousButton.vue:17
-#: front/src/components/library/AlbumBase.vue:36
-#: front/src/components/library/ArtistBase.vue:47
-#: front/src/components/library/EditForm.vue:95
-#: front/src/components/library/TrackBase.vue:55
+#: front/src/components/library/AlbumBase.vue:37
+#: front/src/components/library/ArtistBase.vue:48
+#: front/src/components/library/EditForm.vue:107
+#: front/src/components/library/TrackBase.vue:53
 #: front/src/components/library/radios/Filter.vue:53
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:54
 #: front/src/components/moderation/FilterModal.vue:39
+#: front/src/components/moderation/ReportModal.vue:59
 #: front/src/components/playlists/PlaylistModal.vue:26
 #: front/src/components/playlists/PlaylistModal.vue:77
+#: front/src/views/playlists/Detail.vue:62
 msgctxt "*/*/Button.Label/Verb"
 msgid "Cancel"
 msgstr "Cancelar"
 
-#: front/src/views/content/remote/Card.vue:97
+#: front/src/views/content/remote/Card.vue:110
 #, fuzzy
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Cancel follow request"
@@ -840,8 +946,15 @@ msgstr "Candidatos"
 #: front/src/components/library/FileUpload.vue:261
 msgctxt "Content/Library/Help text"
 msgid "Cannot upload this file, ensure it is not too big"
+msgstr "Não é possível carregar este arquivo, assegure-se de que não é muito grande"
+
+#: front/src/components/manage/moderation/ReportCard.vue:30
+#: front/src/components/mixins/Translations.vue:42
+#: front/src/components/moderation/ReportCategoryDropdown.vue:2
+#: front/src/components/mixins/Translations.vue:43
+msgctxt "*/*/*"
+msgid "Category"
 msgstr ""
-"Não é possível carregar este arquivo, assegure-se de que não é muito grande"
 
 #: front/src/components/Footer.vue:21
 msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
@@ -858,6 +971,11 @@ msgctxt "Content/Settings/Button.Label"
 msgid "Change password"
 msgstr "Mudar senha"
 
+#: front/src/components/Footer.vue:37
+msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
+msgid "Change theme"
+msgstr ""
+
 #: front/src/views/auth/PasswordResetConfirm.vue:62
 msgctxt "*/Signup/Title"
 msgid "Change your password"
@@ -875,28 +993,22 @@ msgstr "Modificações sincronizadas com o servidor"
 
 #: front/src/components/auth/Settings.vue:71
 msgctxt "Content/Settings/Paragraph'"
-msgid ""
-"Changing your password will also change your Subsonic API password if you "
-"have requested one."
-msgstr ""
-"Mudar sua senha também muda sua senha da API Subsonic se você tiver "
-"solicitado uma."
+msgid "Changing your password will also change your Subsonic API password if you have requested one."
+msgstr "Mudar sua senha também muda sua senha da API Subsonic se você tiver solicitado uma."
 
 #: front/src/components/auth/Settings.vue:98
 msgctxt "Popup/Settings/Paragraph"
 msgid "Changing your password will have the following consequences:"
 msgstr "Alterar sua senha terá as seguintes consequências"
 
-#: front/src/components/Footer.vue:40
+#: front/src/components/Footer.vue:48
 msgctxt "Footer/*/List item.Link"
 msgid "Chat room"
 msgstr "Sala de bate-papo"
 
 #: front/src/components/auth/ApplicationForm.vue:24
 msgctxt "Content/Applications/Paragraph/"
-msgid ""
-"Checking the parent \"Read\" or \"Write\" scopes implies access to all the "
-"corresponding children scopes."
+msgid "Checking the parent \"Read\" or \"Write\" scopes implies access to all the corresponding children scopes."
 msgstr ""
 
 #: front/src/components/SetInstanceModal.vue:2
@@ -904,12 +1016,9 @@ msgctxt "Popup/Instance/Title"
 msgid "Choose your instance"
 msgstr "Escolha sua instância"
 
-#: front/src/components/manage/users/InvitationForm.vue:37
-msgctxt "Content/Admin/Button.Label/Verb"
-msgid "Clear"
-msgstr "Claro"
-
 #: front/src/components/library/EditForm.vue:75
+#: front/src/components/library/EditForm.vue:88
+#: front/src/components/manage/users/InvitationForm.vue:37
 msgctxt "Content/Library/Button.Label"
 msgid "Clear"
 msgstr "Claro"
@@ -920,46 +1029,47 @@ msgctxt "*/Playlist/Button.Label/Verb"
 msgid "Clear playlist"
 msgstr "Limpar playlist"
 
-#: front/src/components/audio/Player.vue:642
+#: front/src/components/ShortcutsModal.vue:144
+#, fuzzy
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Clear queue"
+msgstr "Limpar sua fila"
+
+#: front/src/components/audio/Player.vue:668
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Clear your queue"
 msgstr "Limpar sua fila"
 
-#: front/src/components/Home.vue:44
-msgctxt "Content/Home/List item/Verb"
-msgid "Click once, listen for hours using built-in radios"
-msgstr "Clique uma vez, ouça por horas usando rádios"
-
 #: front/src/components/mixins/Translations.vue:21
 #: front/src/components/mixins/Translations.vue:22
 msgctxt "Content/Library/Link.Title"
-msgid ""
-"Click to display more information about the import process for this upload"
+msgid "Click to display more information about the import process for this upload"
 msgstr ""
 
 #: front/src/components/library/FileUpload.vue:82
 msgctxt "Content/Library/Paragraph/Call to action"
 msgid "Click to select files to upload or drag and drop files or directories"
-msgstr ""
-"Clique para selecionar arquivos para carregar ou arrastar e soltar arquivos "
-"ou diretórios"
+msgstr "Clique para selecionar arquivos para carregar ou arrastar e soltar arquivos ou diretórios"
 
+#: front/src/components/ShortcutsModal.vue:38
 #: front/src/components/federation/FetchButton.vue:85
 #: front/src/components/library/ImportStatusModal.vue:79
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:34
 msgctxt "*/*/Button.Label/Verb"
 msgid "Close"
 msgstr "Fechar"
 
-#: front/src/components/ShortcutsModal.vue:20
-msgctxt "Popup/Keyboard shortcuts/Button.Label/Verb"
-msgid "Close"
-msgstr "Fechar"
-
 #: front/src/components/federation/FetchButton.vue:88
 msgctxt "*/*/Button.Label/Verb"
 msgid "Close and reload page"
 msgstr ""
 
+#: front/src/components/About.vue:94
+#, fuzzy
+msgctxt "*/*/*/State of registrations"
+msgid "Closed"
+msgstr "Fechar"
+
 #: front/src/components/manage/users/InvitationForm.vue:26
 #: front/src/components/manage/users/InvitationsTable.vue:42
 msgctxt "Content/Admin/Table.Label/Noun"
@@ -967,8 +1077,9 @@ msgid "Code"
 msgstr "Código"
 
 #: front/src/components/audio/album/Card.vue:41
-#: front/src/components/audio/artist/Card.vue:33
-msgctxt "Content/*/Card.Link/Verb"
+#: front/src/components/common/CollapseLink.vue:3
+#, fuzzy
+msgctxt "*/*/Button,Label"
 msgid "Collapse"
 msgstr "Colapso"
 
@@ -992,42 +1103,47 @@ msgctxt "Content/Signup/Form.Label"
 msgid "Confirmation code"
 msgstr "Código de confirmação"
 
+#: front/src/components/About.vue:67 src/components/Home.vue:65
+msgctxt "Content/Home/Header/Name"
+msgid "Contact"
+msgstr ""
+
 #: front/src/components/moderation/FilterModal.vue:90
 msgctxt "*/Moderation/Message"
 msgid "Content filter successfully added"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:96
-#: front/src/components/mixins/Translations.vue:97
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Content filters"
-msgstr "Selecione um filtro"
-
 #: front/src/components/auth/Settings.vue:116
+#: front/src/components/mixins/Translations.vue:108
+#: front/src/components/mixins/Translations.vue:109
 msgctxt "Content/Settings/Title/Noun"
 msgid "Content filters"
 msgstr "Selecione um filtro"
 
 #: front/src/components/auth/Settings.vue:119
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"Content filters help you hide content you don't want to see on the service."
+msgid "Content filters help you hide content you don't want to see on the service."
 msgstr ""
 
 #: front/src/components/common/ActionTable.vue:8
 msgctxt "Content/*/Button.Help text.Paragraph"
 msgid "Content have been updated, click refresh to see up-to-date content"
-msgstr ""
-"O conteúdo foi atualizado, clique em atualizar para ver o conteúdo "
-"atualizado"
+msgstr "O conteúdo foi atualizado, clique em atualizar para ver o conteúdo atualizado"
 
-#: front/src/components/Footer.vue:48
+#: front/src/components/About.vue:46
+#, fuzzy
+msgctxt "Content/About/Header"
+msgid "Contents"
+msgstr "Selecione um filtro"
+
+#: front/src/components/Footer.vue:56
 msgctxt "Footer/*/List item.Link"
 msgid "Contribute"
 msgstr "Contribuir"
 
-#: front/src/components/audio/EmbedWizard.vue:19
+#: front/src/components/audio/EmbedWizard.vue:29
 #: front/src/components/common/CopyInput.vue:8
+#: front/src/components/forms/PasswordInput.vue:43
 msgctxt "*/*/Button.Label/Short, Verb"
 msgid "Copy"
 msgstr "Cópia"
@@ -1042,14 +1158,14 @@ msgctxt "Content/Auth/Paragraph"
 msgid "Copy-paste the following code in the application:"
 msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:21
+#: front/src/components/audio/EmbedWizard.vue:31
 msgctxt "Popup/Embed/Paragraph"
 msgid "Copy/paste this code in your website HTML"
 msgstr "Copie/colar este código no seu website HTML"
 
 #: front/src/components/library/TrackDetail.vue:10
-#: front/src/views/admin/library/TrackDetail.vue:153
-msgctxt "Content/Track/Table.Label/Noun"
+#: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:77
+msgctxt "Content/Track/*/Noun"
 msgid "Copyright"
 msgstr "Direitos Autorais"
 
@@ -1063,29 +1179,20 @@ msgctxt "Content/Library/Error message.Title"
 msgid "Could not fetch remote library"
 msgstr "Não foi possível buscar a biblioteca remota"
 
-#: front/src/components/Home.vue:80
-msgctxt "Content/Home/List item"
-msgid "Covers, lyrics, our goal is to have them all ;)"
-msgstr "Capas, letras, nosso objetivo é tê-los todos ;)"
-
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:58
 msgctxt "Content/Moderation/Card.Button.Label/Verb"
 msgid "Create"
 msgstr "Criar"
 
-#: front/src/components/auth/Signup.vue:4
+#: front/src/views/auth/Signup.vue:4
 msgctxt "Content/Signup/Title"
 msgid "Create a funkwhale account"
 msgstr "Crie uma conta funkwhale"
 
-#: front/src/components/auth/Settings.vue:220
-msgctxt "Content/Settings/Button.Label"
-msgid "Create a new application"
-msgstr "Crie uma nova playlist"
-
 #: front/src/components/auth/ApplicationNew.vue:8
 #: front/src/components/auth/ApplicationNew.vue:41
-msgctxt "Content/Applications/Title"
+#: front/src/components/auth/Settings.vue:220
+msgctxt "Content/Settings/Button.Label"
 msgid "Create a new application"
 msgstr "Crie uma nova playlist"
 
@@ -1099,7 +1206,7 @@ msgctxt "Popup/Playlist/Title/Verb"
 msgid "Create a new playlist"
 msgstr "Crie uma nova playlist"
 
-#: front/src/components/Sidebar.vue:57 src/components/auth/Login.vue:17
+#: front/src/components/Sidebar.vue:57 src/components/auth/LoginForm.vue:15
 msgctxt "*/Signup/Link/Verb"
 msgid "Create an account"
 msgstr "Crie a sua conta"
@@ -1114,7 +1221,7 @@ msgctxt "Content/Library/Button.Label/Verb"
 msgid "Create library"
 msgstr "Criar biblioteca"
 
-#: front/src/components/auth/Signup.vue:53
+#: front/src/components/auth/SignupForm.vue:49
 msgctxt "Content/Signup/Button.Label"
 msgid "Create my account"
 msgstr "Criar a minha conta"
@@ -1139,11 +1246,13 @@ msgstr "Crie seu próprio rádio"
 #: front/src/components/manage/library/AlbumsTable.vue:44
 #: front/src/components/manage/library/ArtistsTable.vue:43
 #: front/src/components/manage/library/LibrariesTable.vue:54
+#: front/src/components/manage/library/TagsTable.vue:45
 #: front/src/components/manage/library/TracksTable.vue:44
 #: front/src/components/manage/library/UploadsTable.vue:66
+#: front/src/components/manage/moderation/ReportCard.vue:43
 #: front/src/components/manage/users/InvitationsTable.vue:40
-#: front/src/components/mixins/Translations.vue:43
-#: front/src/components/mixins/Translations.vue:44
+#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/mixins/Translations.vue:54
 msgctxt "Content/*/*/Noun"
 msgid "Creation date"
 msgstr "Data de criação"
@@ -1153,6 +1262,12 @@ msgctxt "Content/Settings/Title/Noun"
 msgid "Current avatar"
 msgstr "Avatar atual"
 
+#: front/src/components/admin/SettingsGroup.vue:67
+#, fuzzy
+msgctxt "Content/Settings/Title/Noun"
+msgid "Current image"
+msgstr "Uso atual"
+
 #: front/src/views/content/libraries/DetailArea.vue:4
 msgctxt "Content/Library/Title"
 msgid "Current library"
@@ -1168,6 +1283,11 @@ msgctxt "Content/Library/Title"
 msgid "Current usage"
 msgstr "Uso atual"
 
+#: front/src/components/Footer.vue:94
+msgctxt "Footer/Settings/Dropdown.Label/Theme name"
+msgid "Dark"
+msgstr ""
+
 #: front/src/components/federation/FetchButton.vue:53
 msgctxt "*/*/Error"
 msgid "Data returned by the remote server had invalid or missing attributes"
@@ -1188,7 +1308,7 @@ msgctxt "Popup/Import/Table.Label/Noun"
 msgid "Debug information"
 msgstr "Informação da música"
 
-#: front/src/components/ShortcutsModal.vue:75
+#: front/src/components/ShortcutsModal.vue:128
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Decrease volume"
 msgstr "Diminuir o volume"
@@ -1200,23 +1320,29 @@ msgstr "Diminuir o volume"
 #: front/src/components/manage/library/AlbumsTable.vue:188
 #: front/src/components/manage/library/ArtistsTable.vue:178
 #: front/src/components/manage/library/LibrariesTable.vue:205
+#: front/src/components/manage/library/TagsTable.vue:179
 #: front/src/components/manage/library/TracksTable.vue:188
 #: front/src/components/manage/library/UploadsTable.vue:255
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:61
+#: front/src/components/manage/moderation/NotesThread.vue:24
+#: front/src/components/manage/moderation/NotesThread.vue:29
+#: front/src/components/manage/moderation/ReportCard.vue:360
 #: front/src/components/manage/users/InvitationsTable.vue:167
-#: front/src/views/admin/library/AlbumDetail.vue:72
-#: front/src/views/admin/library/AlbumDetail.vue:77
-#: front/src/views/admin/library/ArtistDetail.vue:71
+#: front/src/views/admin/library/AlbumDetail.vue:78
+#: front/src/views/admin/library/AlbumDetail.vue:83
 #: front/src/views/admin/library/ArtistDetail.vue:76
+#: front/src/views/admin/library/ArtistDetail.vue:81
 #: front/src/views/admin/library/LibraryDetail.vue:58
 #: front/src/views/admin/library/LibraryDetail.vue:63
-#: front/src/views/admin/library/TrackDetail.vue:71
-#: front/src/views/admin/library/TrackDetail.vue:76
+#: front/src/views/admin/library/TagDetail.vue:41
+#: front/src/views/admin/library/TagDetail.vue:46
+#: front/src/views/admin/library/TrackDetail.vue:77
+#: front/src/views/admin/library/TrackDetail.vue:82
 #: front/src/views/admin/library/UploadDetail.vue:65
 #: front/src/views/admin/library/UploadDetail.vue:70
 #: front/src/views/content/libraries/FilesTable.vue:222
 #: front/src/views/content/libraries/Form.vue:29
-#: src/views/playlists/Detail.vue:34
+#: src/views/playlists/Detail.vue:42
 msgctxt "*/*/*/Verb"
 msgid "Delete"
 msgstr "Suprimir"
@@ -1241,7 +1367,20 @@ msgctxt "Popup/Moderation/Button.Label/Verb"
 msgid "Delete moderation rule"
 msgstr "Eliminar regra de moderação"
 
-#: front/src/views/playlists/Detail.vue:39
+#: front/src/components/auth/Settings.vue:274
+#: src/components/auth/Settings.vue:302
+#, fuzzy
+msgctxt "*/*/Button.Label"
+msgid "Delete my account"
+msgstr "Criar a minha conta"
+
+#: front/src/components/auth/Settings.vue:297
+#, fuzzy
+msgctxt "*/*/Button.Label"
+msgid "Delete my account…"
+msgstr "Criar a minha conta"
+
+#: front/src/views/playlists/Detail.vue:47
 msgctxt "Popup/Playlist/Button.Label/Verb"
 msgid "Delete playlist"
 msgstr "Suprimir Playlist"
@@ -1251,13 +1390,23 @@ msgctxt "Popup/Radio/Button.Label/Verb"
 msgid "Delete radio"
 msgstr "Suprimir radio"
 
-#: front/src/views/admin/library/AlbumDetail.vue:73
-#: front/src/views/admin/library/TrackDetail.vue:72
+#: front/src/components/manage/moderation/ReportCard.vue:357
+msgctxt "Content/Moderation/Button/Verb"
+msgid "Delete reported object"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:358
+msgctxt "Content/Moderation/Popup/Header"
+msgid "Delete reported object?"
+msgstr ""
+
+#: front/src/views/admin/library/AlbumDetail.vue:79
+#: front/src/views/admin/library/TrackDetail.vue:78
 msgctxt "Popup/Library/Title"
 msgid "Delete this album?"
 msgstr "Excluir esta biblioteca?"
 
-#: front/src/views/admin/library/ArtistDetail.vue:72
+#: front/src/views/admin/library/ArtistDetail.vue:77
 msgctxt "Popup/Library/Title"
 msgid "Delete this artist?"
 msgstr "Excluir esta biblioteca?"
@@ -1273,60 +1422,71 @@ msgctxt "Popup/Moderation/Title"
 msgid "Delete this moderation rule?"
 msgstr "Eliminar esta regra de moderação?"
 
+#: front/src/components/manage/moderation/NotesThread.vue:25
+#, fuzzy
+msgctxt "Popup/Moderation/Title"
+msgid "Delete this note?"
+msgstr "Excluir esta biblioteca?"
+
 #: front/src/components/library/EditCard.vue:94
 msgctxt "Popup/Library/Title"
 msgid "Delete this suggestion?"
 msgstr "Eliminar esta regra de moderação?"
 
-#: front/src/views/admin/library/UploadDetail.vue:66
+#: front/src/views/admin/library/TagDetail.vue:42
+#, fuzzy
+msgctxt "Popup/Library/Title"
+msgid "Delete this tag?"
+msgstr "Excluir esta biblioteca?"
+
+#: front/src/views/admin/library/UploadDetail.vue:66
 msgctxt "Popup/Library/Title"
 msgid "Delete this upload?"
 msgstr "Excluir esta biblioteca?"
 
 #: front/src/components/favorites/List.vue:35
-#: src/components/library/Albums.vue:26
-#: front/src/components/library/Artists.vue:26
+#: src/components/library/Albums.vue:30
+#: front/src/components/library/Artists.vue:30
 #: src/components/library/Radios.vue:47
 #: front/src/components/manage/library/AlbumsTable.vue:22
 #: front/src/components/manage/library/ArtistsTable.vue:22
 #: front/src/components/manage/library/EditsCardList.vue:40
 #: front/src/components/manage/library/LibrariesTable.vue:31
+#: front/src/components/manage/library/TagsTable.vue:22
 #: front/src/components/manage/library/TracksTable.vue:22
 #: front/src/components/manage/library/UploadsTable.vue:41
 #: front/src/components/manage/moderation/AccountsTable.vue:22
-#: front/src/components/manage/moderation/DomainsTable.vue:20
+#: front/src/components/manage/moderation/DomainsTable.vue:28
 #: front/src/components/manage/users/UsersTable.vue:20
+#: front/src/views/admin/moderation/ReportsList.vue:45
 #: front/src/views/content/libraries/FilesTable.vue:32
 #: front/src/views/playlists/List.vue:28
 msgctxt "Content/Search/Dropdown"
 msgid "Descending"
 msgstr "Descendente"
 
-#: front/src/views/admin/library/LibraryDetail.vue:123
-msgctxt "*/*/*/Noun"
-msgid "Description"
-msgstr "Descrição"
+#: front/src/components/manage/moderation/NoteForm.vue:37
+msgctxt "Content/Moderation/Placeholder"
+msgid "Describe what actions have been taken, or any other related updates…"
+msgstr ""
 
 #: front/src/components/library/radios/Builder.vue:25
+#: front/src/views/admin/library/LibraryDetail.vue:132
 #: front/src/views/content/libraries/Form.vue:14
-msgctxt "Content/*/Input.Label/Noun"
+msgctxt "*/*/*/Noun"
 msgid "Description"
 msgstr "Descrição"
 
 #: front/src/views/content/libraries/Card.vue:48
-#: src/views/content/remote/Card.vue:54
+#: src/views/content/remote/Card.vue:67
 msgctxt "Content/Library/Card.Button.Label/Noun"
 msgid "Details"
 msgstr "Detalhes"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:491
+#: front/src/views/admin/moderation/AccountsDetail.vue:511
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Determine how much content the user can upload. Leave empty to use the "
-"default value of the instance."
-msgstr ""
-"Determine quanto conteúdo o usuário pode enviar. Deixe em branco para usar o"
-" valor padrão da instância."
+msgid "Determine how much content the user can upload. Leave empty to use the default value of the instance."
+msgstr "Determine quanto conteúdo o usuário pode enviar. Deixe em branco para usar o valor padrão da instância."
 
 #: front/src/components/mixins/Translations.vue:8
 #: front/src/components/mixins/Translations.vue:9
@@ -1335,38 +1495,51 @@ msgid "Determine the visibility level of your activity"
 msgstr "Determinar o nível de visibilidade de sua atividade"
 
 #: front/src/components/auth/Settings.vue:104
-#: front/src/components/auth/SubsonicTokenForm.vue:51
+#: front/src/components/auth/SubsonicTokenForm.vue:56
 msgctxt "Popup/Settings/Button.Label"
 msgid "Disable access"
 msgstr "Desativar acesso"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:48
+#: front/src/components/auth/SubsonicTokenForm.vue:53
 msgctxt "Content/Settings/Button.Label/Verb"
 msgid "Disable Subsonic access"
 msgstr "Desativar o acesso a Subsonic"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:49
+#: front/src/components/auth/SubsonicTokenForm.vue:54
 msgctxt "Popup/Settings/Title"
 msgid "Disable Subsonic API access?"
 msgstr "Desativar o acesso o API Subsonic?"
 
+#: front/src/components/About.vue:118 src/components/About.vue:131
+#: front/src/components/About.vue:144
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:18
 #: front/src/views/admin/moderation/AccountsDetail.vue:157
 #: front/src/views/admin/moderation/AccountsDetail.vue:161
-msgctxt "*/*/*"
+#, fuzzy
+msgctxt "*/*/*/State of feature"
 msgid "Disabled"
 msgstr "Desativado"
 
-#: front/src/views/admin/library/TrackDetail.vue:145
+#: front/src/views/admin/library/TrackDetail.vue:151
 msgctxt "*/*/*/Noun"
 msgid "Disc number"
 msgstr ""
 
+#: front/src/components/Home.vue:157
+msgctxt "Content/Home/Link"
+msgid "Discover everything you need to know about Funkwhale and its features"
+msgstr ""
+
 #: front/src/components/auth/SubsonicTokenForm.vue:13
 msgctxt "Content/Settings/Link"
 msgid "Discover how to use Funkwhale from other apps"
 msgstr "Descubra como usar o Funkwhale em outros aplicativos"
 
+#: front/src/views/Notifications.vue:45
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Discover other ways to help"
+msgstr ""
+
 #: front/src/views/admin/moderation/AccountsDetail.vue:132
 msgctxt "'Content/*/*/Noun'"
 msgid "Display name"
@@ -1379,13 +1552,14 @@ msgstr "Exibir publicamente"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:122
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Do not download any media file (audio, album cover, account avatar…) from "
-"this account or domain. This will purge existing content as well."
-msgstr ""
-"Não faça o download de nenhum arquivo de mídia (áudio, capa do álbum, avatar"
-" da conta ...) dessa conta ou domínio. Isso também limpará o conteúdo "
-"existente."
+msgid "Do not download any media file (audio, album cover, account avatar…) from this account or domain. This will purge existing content as well."
+msgstr "Não faça o download de nenhum arquivo de mídia (áudio, capa do álbum, avatar da conta …) dessa conta ou domínio. Isso também limpará o conteúdo existente."
+
+#: front/src/views/Notifications.vue:36
+#, fuzzy
+msgctxt "Content/Notifications/Header"
+msgid "Do you like Funkwhale?"
+msgstr "Sobre Funkwhale"
 
 #: front/src/components/playlists/Editor.vue:51
 msgctxt "Popup/Playlist/Title"
@@ -1397,7 +1571,7 @@ msgctxt "Modal/*/Title"
 msgid "Do you want to confirm this action?"
 msgstr "Você quer confirmar esta ação?"
 
-#: front/src/views/playlists/Detail.vue:35
+#: front/src/views/playlists/Detail.vue:43
 msgctxt "Popup/Playlist/Title/Call to action"
 msgid "Do you want to delete the playlist \"%{ playlist }\"?"
 msgstr "Você deseja excluir a playlist \"%{ playlist }\"?"
@@ -1407,6 +1581,12 @@ msgctxt "Popup/Radio/Title"
 msgid "Do you want to delete the radio \"%{ radio }\"?"
 msgstr "Você deseja excluir a radio \"%{ radio }\"?"
 
+#: front/src/components/auth/Settings.vue:298
+#, fuzzy
+msgctxt "Popup/Settings/Title"
+msgid "Do you want to delete your account?"
+msgstr "Você quer restaurar sua fila anterior?"
+
 #: front/src/components/moderation/FilterModal.vue:3
 msgctxt "Popup/Moderation/Title/Verb"
 msgid "Do you want to hide content from artist \"%{ name }\"?"
@@ -1420,7 +1600,13 @@ msgid_plural "Do you want to launch %{ action } on %{ count } elements?"
 msgstr[0] "Deseja lançar %{ action } no %{ count } elemento?"
 msgstr[1] "Deseja lançar %{ action } nos %{ count } elementos?"
 
-#: front/src/components/Sidebar.vue:118
+#: front/src/components/moderation/ReportModal.vue:3
+#, fuzzy
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Do you want to report this object?"
+msgstr "Você quer confirmar esta ação?"
+
+#: front/src/components/Sidebar.vue:122
 msgctxt "Sidebar/Queue/Message"
 msgid "Do you want to restore your previous queue?"
 msgstr "Você quer restaurar sua fila anterior?"
@@ -1436,26 +1622,33 @@ msgstr "Documentação"
 #: front/src/components/manage/library/TracksTable.vue:42
 #: front/src/components/manage/library/UploadsTable.vue:62
 #: front/src/components/manage/moderation/AccountsTable.vue:40
-#: front/src/components/mixins/Translations.vue:60
-#: front/src/views/admin/library/AlbumDetail.vue:118
-#: front/src/views/admin/library/ArtistDetail.vue:107
-#: front/src/views/admin/library/LibraryDetail.vue:114
-#: front/src/views/admin/library/TrackDetail.vue:170
+#: front/src/components/manage/moderation/ReportCard.vue:169
+#: front/src/components/manage/moderation/ReportCard.vue:179
+#: front/src/components/mixins/Translations.vue:72
+#: front/src/views/admin/library/AlbumDetail.vue:124
+#: front/src/views/admin/library/ArtistDetail.vue:112
+#: front/src/views/admin/library/LibraryDetail.vue:123
+#: front/src/views/admin/library/TrackDetail.vue:176
 #: front/src/views/admin/library/UploadDetail.vue:121
 #: front/src/views/admin/moderation/AccountsDetail.vue:123
-#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/mixins/Translations.vue:73
 msgctxt "Content/Moderation/*/Noun"
 msgid "Domain"
 msgstr "Dominio"
 
-#: front/src/views/admin/moderation/Base.vue:5
+#: front/src/views/admin/moderation/Base.vue:8
 #: front/src/views/admin/moderation/DomainsList.vue:3
-#: front/src/views/admin/moderation/DomainsList.vue:48
+#: front/src/views/admin/moderation/DomainsList.vue:54
 msgctxt "*/Moderation/*/Noun"
 msgid "Domains"
 msgstr "Domínios"
 
-#: front/src/components/library/TrackBase.vue:39
+#: front/src/views/Notifications.vue:42
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Donate"
+msgstr ""
+
+#: front/src/components/library/TrackBase.vue:37
 #: front/src/views/admin/library/UploadDetail.vue:58
 msgctxt "Content/Track/Link/Verb"
 msgid "Download"
@@ -1468,10 +1661,10 @@ msgstr "Arraste e solte as linhas para reordenar as músicas da playlist"
 
 #: front/src/components/audio/track/Table.vue:10
 #: front/src/components/library/TrackDetail.vue:30
-#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:68
 #: front/src/views/admin/library/UploadDetail.vue:238
 #: front/src/views/content/libraries/FilesTable.vue:60
-#: front/src/components/mixins/Translations.vue:57
+#: front/src/components/mixins/Translations.vue:69
 msgctxt "Content/*/*"
 msgid "Duration"
 msgstr "Duração"
@@ -1481,41 +1674,27 @@ msgctxt "Content/Signup/Message"
 msgid "E-mail address confirmed"
 msgstr "E-mail confirmado"
 
-#: front/src/components/Home.vue:88
-msgctxt "Content/Home/Title"
-msgid "Easy to use"
-msgstr "Fácil de usar"
-
-#: front/src/components/library/AlbumBase.vue:68
-#: front/src/components/library/ArtistBase.vue:79
-#: front/src/components/library/TrackBase.vue:87
+#: front/src/components/auth/Settings.vue:246
+#: src/components/library/AlbumBase.vue:73
+#: front/src/components/library/ArtistBase.vue:84
+#: front/src/components/library/TrackBase.vue:89
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:45
 #: front/src/components/radios/Card.vue:23
-#: src/views/admin/library/AlbumDetail.vue:65
-#: front/src/views/admin/library/ArtistDetail.vue:64
-#: front/src/views/admin/library/TrackDetail.vue:64
+#: src/views/admin/library/AlbumDetail.vue:71
+#: front/src/views/admin/library/ArtistDetail.vue:69
+#: front/src/views/admin/library/TrackDetail.vue:70
 #: front/src/views/content/libraries/Detail.vue:9
 #: src/views/playlists/Detail.vue:31
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Edit"
 msgstr "Editar"
 
-#: front/src/components/auth/Settings.vue:246
-msgctxt "Content/Settings/Button.Label"
-msgid "Edit"
-msgstr "Editar"
-
 #: front/src/components/auth/ApplicationEdit.vue:30
 #: front/src/components/auth/ApplicationEdit.vue:75
 msgctxt "Content/Applications/Title"
 msgid "Edit application"
 msgstr "Erro ao aplicar a ação"
 
-#: front/src/components/About.vue:22
-msgctxt "Content/Settings/Button.Label/Verb"
-msgid "Edit instance info"
-msgstr "Editar informações da instância"
-
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:3
 msgctxt "Content/Moderation/Card.Title/Verb"
 msgid "Edit moderation rule"
@@ -1536,23 +1715,20 @@ msgctxt "Content/*/Title"
 msgid "Edit this track"
 msgstr "Jogar esta pista"
 
-#: front/src/views/admin/library/AlbumDetail.vue:182
-#: front/src/views/admin/library/ArtistDetail.vue:171
+#: front/src/components/mixins/Translations.vue:116
+#: front/src/views/admin/library/AlbumDetail.vue:198
+#: front/src/views/admin/library/ArtistDetail.vue:186
 #: front/src/views/admin/library/Base.vue:5
 #: src/views/admin/library/EditsList.vue:24
-#: front/src/views/admin/library/TrackDetail.vue:234
+#: front/src/views/admin/library/TrackDetail.vue:250
+#: front/src/components/mixins/Translations.vue:117
 msgctxt "*/Admin/*/Noun"
 msgid "Edits"
 msgstr "Editar"
 
-#: front/src/components/mixins/Translations.vue:104
-#: front/src/components/mixins/Translations.vue:105
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Edits"
-msgstr "Editar"
-
-#: front/src/components/auth/Signup.vue:30
+#: front/src/components/auth/SignupForm.vue:26
 #: front/src/components/manage/users/UsersTable.vue:38
+#: front/src/components/moderation/ReportModal.vue:31
 msgctxt "Content/*/*/Noun"
 msgid "Email"
 msgstr "Email"
@@ -1562,50 +1738,60 @@ msgctxt "Content/*/*"
 msgid "Email address"
 msgstr "Endereço de e-mail"
 
-#: front/src/components/library/AlbumBase.vue:53
-#: front/src/components/library/ArtistBase.vue:64
-#: front/src/components/library/TrackBase.vue:72
+#: front/src/components/library/AlbumBase.vue:54
+#: front/src/components/library/ArtistBase.vue:65
+#: front/src/components/library/TrackBase.vue:70
+#: src/views/playlists/Detail.vue:38
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Embed"
 msgstr "Incorporar"
 
-#: front/src/components/audio/EmbedWizard.vue:20
+#: front/src/components/audio/EmbedWizard.vue:30
 msgctxt "Popup/Embed/Input.Label/Noun"
 msgid "Embed code"
 msgstr "Código de incorporação"
 
-#: front/src/components/library/AlbumBase.vue:26
+#: front/src/components/library/AlbumBase.vue:27
 msgctxt "Popup/Album/Title/Verb"
 msgid "Embed this album on your website"
 msgstr "Incorpore este álbum no seu website"
 
-#: front/src/components/library/ArtistBase.vue:37
+#: front/src/components/library/ArtistBase.vue:38
 msgctxt "Popup/Artist/Title/Verb"
 msgid "Embed this artist work on your website"
 msgstr "Incorpore esta pista no seu website"
 
-#: front/src/components/library/TrackBase.vue:45
+#: front/src/views/playlists/Detail.vue:52
+#, fuzzy
+msgctxt "Popup/Album/Title/Verb"
+msgid "Embed this playlist on your website"
+msgstr "Incorpore este álbum no seu website"
+
+#: front/src/components/library/TrackBase.vue:43
 msgctxt "Popup/Track/Title"
 msgid "Embed this track on your website"
 msgstr "Incorpore esta pista no seu website"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:259
-#: front/src/views/admin/moderation/DomainsDetail.vue:187
+#: front/src/views/admin/moderation/AccountsDetail.vue:260
+#: front/src/views/admin/moderation/DomainsDetail.vue:224
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Emitted library follows"
 msgstr "A biblioteca emitida segue"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:243
-#: front/src/views/admin/moderation/DomainsDetail.vue:171
+#: front/src/views/admin/moderation/AccountsDetail.vue:244
+#: front/src/views/admin/moderation/DomainsDetail.vue:208
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Emitted messages"
 msgstr "Mensagens emitidas"
 
+#: front/src/components/About.vue:114 src/components/About.vue:127
+#: front/src/components/About.vue:140
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:8
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:17
 #: front/src/views/admin/moderation/AccountsDetail.vue:156
 #: front/src/views/admin/moderation/AccountsDetail.vue:160
-msgctxt "*/*/*"
+#, fuzzy
+msgctxt "*/*/*/State of feature"
 msgid "Enabled"
 msgstr "Ativado"
 
@@ -1624,9 +1810,9 @@ msgctxt "Content/Search/Input.Placeholder"
 msgid "Enter a radio name…"
 msgstr "Indicar um nome de rádio …"
 
-#: front/src/components/library/Albums.vue:119
+#: front/src/components/library/Albums.vue:128
 msgctxt "Content/Search/Input.Placeholder"
-msgid "Enter album title..."
+msgid "Enter album title…"
 msgstr ""
 
 #: front/src/components/library/Artists.vue:116
@@ -1640,32 +1826,33 @@ msgid "Enter playlist name…"
 msgstr "Indicar um nome de playlist…"
 
 #: front/src/views/auth/PasswordReset.vue:54
+#, fuzzy
 msgctxt "Content/Signup/Input.Placeholder"
-msgid "Enter the email address binded to your account"
+msgid "Enter the email address linked to your account"
 msgstr "Insira o endereço de e-mail associado à sua conta"
 
-#: front/src/components/auth/Signup.vue:103
+#: front/src/components/auth/SignupForm.vue:96
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your email"
 msgstr "Insira seu email"
 
-#: front/src/components/auth/Signup.vue:98 src/components/auth/Signup.vue:100
+#: front/src/components/auth/SignupForm.vue:91
+#: src/components/auth/SignupForm.vue:93
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your invitation code (case insensitive)"
-msgstr ""
-"Indicar seu código de convite (não diferencia maiúsculas de minúsculas)"
+msgstr "Indicar seu código de convite (não diferencia maiúsculas de minúsculas)"
 
 #: front/src/components/metadata/Search.vue:114
 msgctxt "Content/Library/Input.Placeholder/Verb"
 msgid "Enter your search query…"
 msgstr "Insira sua consulta de pesquisa …"
 
-#: front/src/components/auth/Signup.vue:102
+#: front/src/components/auth/SignupForm.vue:95
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your username"
 msgstr "Indicar seu nome de usuário"
 
-#: front/src/components/auth/Login.vue:83
+#: front/src/components/auth/LoginForm.vue:81
 msgctxt "Content/Login/Input.Placeholder"
 msgid "Enter your username or email"
 msgstr "Indicar seu nome de usuário ou email"
@@ -1682,7 +1869,7 @@ msgctxt "Popup/Import/Table.Label/Noun"
 msgid "Error detail"
 msgstr "Relatório de erros"
 
-#: front/src/views/admin/Settings.vue:87
+#: front/src/views/admin/Settings.vue:89
 msgctxt "Content/Admin/Menu"
 msgid "Error reporting"
 msgstr "Relatório de erros"
@@ -1738,16 +1925,12 @@ msgctxt "Popup/Moderation/Error message"
 msgid "Error while fetching application data"
 msgstr "Erro ao criar convite"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:118
+#: front/src/views/admin/moderation/DomainsDetail.vue:155
 msgctxt "Content/Moderation/Table"
 msgid "Error while fetching node info"
 msgstr "Erro ao buscar informações do nó"
 
 #: front/src/components/admin/SettingsGroup.vue:5
-msgctxt "Content/Settings/Error message.Title"
-msgid "Error while saving settings"
-msgstr "Erro ao salvar configurações"
-
 #: front/src/components/federation/FetchButton.vue:73
 msgctxt "Content/*/Error message.Title"
 msgid "Error while saving settings"
@@ -1758,6 +1941,18 @@ msgctxt "Content/Library/Error message.Title"
 msgid "Error while submitting edit"
 msgstr "Erro ao salvar configurações"
 
+#: front/src/components/manage/moderation/NoteForm.vue:3
+#, fuzzy
+msgctxt "Content/Moderation/Error message.Title"
+msgid "Error while submitting note"
+msgstr "Erro ao salvar configurações"
+
+#: front/src/components/moderation/ReportModal.vue:11
+#, fuzzy
+msgctxt "Popup/Moderation/Error message"
+msgid "Error while submitting report"
+msgstr "Erro ao salvar configurações"
+
 #: front/src/components/mixins/Translations.vue:32
 #: front/src/components/mixins/Translations.vue:33
 msgctxt "Content/Library/Table/Short"
@@ -1792,9 +1987,14 @@ msgctxt "Content/Radio/Table.Label/Verb"
 msgid "Exclude"
 msgstr "Excluir"
 
+#: front/src/components/common/CollapseLink.vue:2
+msgctxt "*/*/Button,Label"
+msgid "Expand"
+msgstr ""
+
 #: front/src/components/manage/users/InvitationsTable.vue:41
-#: front/src/components/mixins/Translations.vue:49
-#: front/src/components/mixins/Translations.vue:50
+#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:60
 msgctxt "Content/Admin/Table.Label/Noun"
 msgid "Expiration date"
 msgstr "Data de vencimento"
@@ -1811,16 +2011,8 @@ msgstr "Expirado / usados"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:110
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Explain why you're applying this policy. Depending on your instance "
-"configuration, this will help you remember why you acted on this account or "
-"domain, and may be displayed publicly to help users understand what "
-"moderation rules are in place."
-msgstr ""
-"Explique porque está a aplicar esta política. Dependendo da configuração da "
-"sua instância, isso o ajudará a lembrar por que você agiu nessa conta ou "
-"domínio e poderá ser exibido publicamente para ajudar os usuários a entender"
-" quais regras de moderação estão em vigor."
+msgid "Explain why you're applying this policy. Depending on your instance configuration, this will help you remember why you acted on this account or domain, and may be displayed publicly to help users understand what moderation rules are in place."
+msgstr "Explique porque está a aplicar esta política. Dependendo da configuração da sua instância, isso o ajudará a lembrar por que você agiu nessa conta ou domínio e poderá ser exibido publicamente para ajudar os usuários a entender quais regras de moderação estão em vigor."
 
 #: front/src/components/manage/library/UploadsTable.vue:25
 #: front/src/views/content/libraries/FilesTable.vue:16
@@ -1828,31 +2020,28 @@ msgctxt "Content/Library/Dropdown"
 msgid "Failed"
 msgstr "Falhou"
 
-#: front/src/views/content/remote/Card.vue:62
+#: front/src/views/content/remote/Card.vue:75
 msgctxt "Content/Library/Card.List item/Noun"
 msgid "Failed tracks:"
 msgstr "Pistas falhadas:"
 
-#: front/src/views/admin/library/AlbumDetail.vue:165
-#: front/src/views/admin/library/ArtistDetail.vue:154
-#: front/src/views/admin/library/TrackDetail.vue:217
+#: front/src/views/admin/library/AlbumDetail.vue:171
+#: front/src/views/admin/library/ArtistDetail.vue:159
+#: front/src/views/admin/library/TrackDetail.vue:223
 msgctxt "*/*/*"
 msgid "Favorited tracks"
 msgstr "Pistas falhadas:"
 
 #: front/src/components/Sidebar.vue:66
+#: src/components/mixins/Translations.vue:88
+#: front/src/components/mixins/Translations.vue:89
 msgctxt "Sidebar/Favorites/List item.Link/Noun"
 msgid "Favorites"
 msgstr "Favoritas"
 
-#: front/src/components/mixins/Translations.vue:76
-#: front/src/components/mixins/Translations.vue:77
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Favorites"
-msgstr "Favoritas"
-
-#: front/src/views/admin/Settings.vue:84
-msgctxt "Content/Admin/Menu"
+#: front/src/components/About.vue:110 src/views/admin/Settings.vue:84
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Federation"
 msgstr "Federação"
 
@@ -1876,6 +2065,11 @@ msgctxt "Content/Radio/Table.Label/Noun"
 msgid "Filter name"
 msgstr "Nome do filtro"
 
+#: front/src/components/Home.vue:118
+msgctxt "Content/Home/Link"
+msgid "Find another pod"
+msgstr ""
+
 #: front/src/components/manage/library/UploadsTable.vue:26
 #: front/src/components/mixins/Translations.vue:36
 #: front/src/views/content/libraries/FilesTable.vue:17
@@ -1885,25 +2079,31 @@ msgid "Finished"
 msgstr "Acabado"
 
 #: front/src/components/manage/moderation/AccountsTable.vue:42
-#: front/src/components/manage/moderation/DomainsTable.vue:41
-#: front/src/views/admin/library/AlbumDetail.vue:149
-#: front/src/views/admin/library/ArtistDetail.vue:138
-#: front/src/views/admin/library/LibraryDetail.vue:153
-#: front/src/views/admin/library/TrackDetail.vue:201
+#: front/src/components/manage/moderation/DomainsTable.vue:49
+#: front/src/views/admin/library/AlbumDetail.vue:155
+#: front/src/views/admin/library/ArtistDetail.vue:143
+#: front/src/views/admin/library/LibraryDetail.vue:162
+#: front/src/views/admin/library/TagDetail.vue:98
+#: front/src/views/admin/library/TrackDetail.vue:207
 #: front/src/views/admin/library/UploadDetail.vue:167
-#: front/src/views/admin/moderation/AccountsDetail.vue:235
-#: front/src/views/admin/moderation/DomainsDetail.vue:151
+#: front/src/views/admin/moderation/AccountsDetail.vue:236
+#: front/src/views/admin/moderation/DomainsDetail.vue:188
 msgctxt "Content/Moderation/Table.Label/Short (Value is a date)"
 msgid "First seen"
 msgstr "Visto pela primeira vez"
 
-#: front/src/components/mixins/Translations.vue:46
-#: front/src/components/mixins/Translations.vue:47
+#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:57
 msgctxt "Content/Moderation/Dropdown/Noun"
 msgid "First seen date"
 msgstr "Data da primeira vista"
 
-#: front/src/views/content/remote/Card.vue:87
+#: front/src/components/ShortcutsModal.vue:64
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Focus searchbar"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:100
 msgctxt "Content/Library/Card.Button.Label/Verb"
 msgid "Follow"
 msgstr "Segue"
@@ -1913,40 +2113,34 @@ msgctxt "Content/Library/Title/Verb"
 msgid "Follow remote libraries"
 msgstr "Siga as bibliotecas remotas"
 
-#: front/src/views/content/remote/Card.vue:92
+#: front/src/views/content/remote/Card.vue:105
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Follow request pending approval"
 msgstr "Solicitação de seguir pendente"
 
-#: front/src/components/mixins/Translations.vue:64
-#: front/src/views/admin/library/LibraryDetail.vue:161
+#: front/src/components/manage/library/LibrariesTable.vue:53
+#: front/src/components/mixins/Translations.vue:76
+#: front/src/views/admin/library/LibraryDetail.vue:170
 #: front/src/views/content/libraries/Detail.vue:7
-#: front/src/components/mixins/Translations.vue:65
+#: front/src/components/mixins/Translations.vue:77
 msgctxt "Content/Federation/*/Noun"
 msgid "Followers"
 msgstr "Seguidores"
 
-#: front/src/components/manage/library/LibrariesTable.vue:53
-msgctxt "Content/*/*/Noun"
-msgid "Followers"
-msgstr "Seguidores"
-
-#: front/src/views/content/remote/Card.vue:103
+#: front/src/views/content/remote/Card.vue:116
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Following"
 msgstr "Seguir"
 
-#: front/src/components/mixins/Translations.vue:84
-#: front/src/components/mixins/Translations.vue:85
+#: front/src/components/mixins/Translations.vue:96
+#: front/src/components/mixins/Translations.vue:97
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Follows"
 msgstr "Segue"
 
-#: front/src/components/library/TrackBase.vue:17
+#: front/src/components/library/TrackBase.vue:245
 msgctxt "Content/Track/Paragraph"
-msgid ""
-"From album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> by <a"
-" class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgid "From album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
 msgstr ""
 
 #: front/src/components/auth/Authorize.vue:28
@@ -1956,38 +2150,21 @@ msgstr "Desativar acesso"
 
 #: front/src/components/auth/SubsonicTokenForm.vue:7
 msgctxt "Content/Settings/Paragraph'"
-msgid ""
-"Funkwhale is compatible with other music players that support the Subsonic "
-"API."
-msgstr ""
-"O Funkwhale é compatível com outros players de música que suportam a API "
-"Subsonic."
-
-#: front/src/components/Home.vue:90
-msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale is dead simple to use."
-msgstr "Funkwhale é muito simples de usar."
-
-#: front/src/components/Home.vue:39
-msgctxt "Content/Home/Paragraph"
-msgid ""
-"Funkwhale is designed to make it easy to listen to music you like, or to "
-"discover new artists."
-msgstr ""
-"O Funkwhale foi projetado para facilitar a escuta da música que você gosta "
-"ou descobrir novos artistas."
+msgid "Funkwhale is compatible with other music players that support the Subsonic API."
+msgstr "O Funkwhale é compatível com outros players de música que suportam a API Subsonic."
 
-#: front/src/components/Home.vue:111
+#: front/src/components/Home.vue:88
+#, fuzzy
 msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale is free and gives you control on your music."
+msgid "Funkwhale is free and developped by a friendly community of volunteers."
 msgstr "O Funkwhale é gratuito e permite controlar sua música."
 
-#: front/src/components/Home.vue:66
-msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale takes care of handling your music"
-msgstr "Funkwhale cuida da sua música"
+#: front/src/components/About.vue:78
+msgctxt "*/*/*"
+msgid "Funkwhale version"
+msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:38
+#: front/src/components/ShortcutsModal.vue:56
 msgctxt "Popup/Keyboard shortcuts/Title"
 msgid "General shortcuts"
 msgstr "Atalhos gerais"
@@ -1997,35 +2174,17 @@ msgctxt "Content/Admin/Button.Label/Verb"
 msgid "Get a new invitation"
 msgstr "Receba um novo convite"
 
-#: front/src/components/Home.vue:13
-msgctxt "Content/Home/Button.Label/Verb"
-msgid "Get me to the library"
-msgstr "Me leve para a biblioteca"
-
-#: front/src/components/Home.vue:70
-msgctxt "Content/Home/List item/Verb"
-msgid ""
-"Get quality metadata about your music thanks to <a href=\"%{ url }\" "
-"target=\"_blank\">MusicBrainz</a>"
-msgstr ""
-"Obtenha metadados de qualidade sobre sua música graças ao <a href=\"%{ url "
-"}\" target=\"_blank\">MusicBrainz</a>"
-
 #: front/src/views/content/Home.vue:12 src/views/content/Home.vue:19
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Get started"
 msgstr "Começar"
 
-#: front/src/components/Footer.vue:37
+#: front/src/components/Footer.vue:45
+#: src/components/library/ImportStatusModal.vue:45
 msgctxt "Footer/*/Link"
 msgid "Getting help"
 msgstr "Obter ajuda"
 
-#: front/src/components/library/ImportStatusModal.vue:45
-msgctxt "Popup/Import/Table.Label/Noun"
-msgid "Getting help"
-msgstr "Obter ajuda"
-
 #: front/src/components/common/ActionTable.vue:35
 #: front/src/components/common/ActionTable.vue:56
 msgctxt "Content/*/Button.Label/Short, Verb"
@@ -2037,11 +2196,21 @@ msgctxt "Content/*/Button.Label/Verb"
 msgid "Go to home page"
 msgstr "Vá para a página inicial"
 
+#: front/src/views/Notifications.vue:27 src/views/Notifications.vue:61
+msgctxt "Content/Notifications/Button.Label"
+msgid "Got it!"
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:128
 msgctxt "Content/Settings/Title"
 msgid "Hidden artists"
 msgstr "Procurando artistas"
 
+#: front/src/components/About.vue:155
+msgctxt "*/*/*/Verb"
+msgid "Hide"
+msgstr ""
+
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:114
 msgctxt "Content/Moderation/Help text"
 msgid "Hide account or domain content, except from followers."
@@ -2052,12 +2221,12 @@ msgctxt "Popup/*/Button.Label"
 msgid "Hide content"
 msgstr "Adicionar conteúdo"
 
-#: front/src/components/audio/PlayButton.vue:26
+#: front/src/components/audio/PlayButton.vue:31
 msgctxt "*/Queue/Dropdown/Button/Label/Short"
 msgid "Hide content from this artist"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:643
+#: front/src/components/audio/Player.vue:669
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Hide content from this artist…"
 msgstr ""
@@ -2067,38 +2236,29 @@ msgctxt "Head/Home/Title"
 msgid "Home"
 msgstr "Casa"
 
-#: front/src/components/instance/Stats.vue:36
-msgctxt "Content/About/Paragraph/Unit"
-msgid "Hours of music"
-msgstr "Horas de música"
-
 #: front/src/components/auth/SubsonicTokenForm.vue:10
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"However, accessing Funkwhale from those clients require a separate password "
-"you can set below."
-msgstr ""
-"No entanto, acessar o Funkwhale desses clientes requer uma senha separada "
-"que você pode definir abaixo."
+msgid "However, accessing Funkwhale from those clients require a separate password you can set below."
+msgstr "No entanto, acessar o Funkwhale desses clientes requer uma senha separada que você pode definir abaixo."
 
 #: front/src/views/auth/PasswordResetConfirm.vue:24
+#, fuzzy
 msgctxt "Content/Signup/Paragraph"
-msgid ""
-"If the email address provided in the previous step is valid and binded to a "
-"user account, you should receive an email with reset instructions in the "
-"next couple of minutes."
-msgstr ""
-"Se o endereço de e-mail fornecido na etapa anterior for válido e vinculado a"
-" uma conta de usuário, você deverá receber um e-mail com instruções de "
-"redefinição nos próximos minutos."
+msgid "If the email address provided in the previous step is valid and linked to a user account, you should receive an email with reset instructions in the next couple of minutes."
+msgstr "Se o endereço de e-mail fornecido na etapa anterior for válido e vinculado a uma conta de usuário, você deverá receber um e-mail com instruções de redefinição nos próximos minutos."
 
 #: front/src/components/auth/Settings.vue:205
 msgctxt "Content/Applications/Paragraph"
-msgid ""
-"If you authorize third-party applications to access your data, those "
-"applications will be listed here."
+msgid "If you authorize third-party applications to access your data, those applications will be listed here."
 msgstr ""
 
+#: front/src/components/mixins/Translations.vue:46
+#: front/src/components/mixins/Translations.vue:47
+#, fuzzy
+msgctxt "Content/Moderation/Dropdown"
+msgid "Illegal content"
+msgstr "Adicionar conteúdo"
+
 #: front/src/components/library/ImportStatusModal.vue:3
 msgctxt "Popup/Import/Title"
 msgid "Import detail"
@@ -2110,14 +2270,10 @@ msgid "Import reference"
 msgstr "Referência de importação"
 
 #: front/src/components/manage/library/UploadsTable.vue:20
-#: front/src/views/content/libraries/FilesTable.vue:11
-#: front/src/views/content/libraries/FilesTable.vue:59
-msgctxt "Content/Library/*/Noun"
-msgid "Import status"
-msgstr "Status de Importação"
-
 #: front/src/components/manage/library/UploadsTable.vue:64
 #: front/src/views/admin/library/UploadDetail.vue:131
+#: front/src/views/content/libraries/FilesTable.vue:11
+#: front/src/views/content/libraries/FilesTable.vue:59
 msgctxt "Content/*/*/Noun"
 msgid "Import status"
 msgstr "Status de Importação"
@@ -2158,12 +2314,12 @@ msgctxt "Popup/Moderation/List item"
 msgid "In radio suggestions"
 msgstr ""
 
-#: front/src/components/manage/users/UsersTable.vue:54
+#: front/src/components/manage/users/UsersTable.vue:55
 msgctxt "Content/Admin/Table"
 msgid "Inactive"
 msgstr "Inativo"
 
-#: front/src/components/ShortcutsModal.vue:71
+#: front/src/components/ShortcutsModal.vue:124
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Increase volume"
 msgstr "Aumentar o volume"
@@ -2182,7 +2338,7 @@ msgctxt "Content/Settings/Dropdown/Short"
 msgid "Instance"
 msgstr "Dados da instância"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:71
+#: front/src/views/admin/moderation/DomainsDetail.vue:99
 msgctxt "Content/Moderation/Title"
 msgid "Instance data"
 msgstr "Dados da instância"
@@ -2207,21 +2363,25 @@ msgctxt "Popup/Instance/Input.Label/Noun"
 msgid "Instance URL"
 msgstr "Dados da instância"
 
+#: front/src/components/manage/moderation/ReportCard.vue:92
+#: front/src/components/manage/moderation/ReportCard.vue:203
+msgctxt "Content/*/*/Noun"
+msgid "Internal notes"
+msgstr ""
+
 #: front/src/components/library/FileUpload.vue:268
 msgctxt "Content/Library/Help text"
-msgid ""
-"Invalid file type, ensure you are uploading an audio file. Supported file "
-"extensions are %{ extensions }"
-msgstr ""
-"Tipo de ficheiro inválido, certifique-se de que está a carregar um ficheiro "
-"de áudio. As extensões de arquivo suportadas são %{ extensions }"
+msgid "Invalid file type, ensure you are uploading an audio file. Supported file extensions are %{ extensions }"
+msgstr "Tipo de ficheiro inválido, certifique-se de que está a carregar um ficheiro de áudio. As extensões de arquivo suportadas são %{ extensions }"
 
 #: front/src/components/library/ImportStatusModal.vue:139
+#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:46
 msgctxt "Popup/Import/Error.Label"
 msgid "Invalid metadata"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:44
+#: front/src/components/auth/SignupForm.vue:40
 #: front/src/components/manage/users/InvitationForm.vue:11
 msgctxt "Content/*/Input.Label"
 msgid "Invitation code"
@@ -2233,7 +2393,13 @@ msgctxt "*/Admin/*/Noun"
 msgid "Invitations"
 msgstr "Convites"
 
-#: front/src/components/Footer.vue:41
+#: front/src/components/manage/moderation/DomainsTable.vue:9
+#: front/src/views/admin/moderation/DomainsDetail.vue:106
+msgctxt "Content/Moderation/*/Adjective"
+msgid "Is present on allow-list"
+msgstr ""
+
+#: front/src/components/Footer.vue:49
 msgctxt "Footer/*/List item.Link"
 msgid "Issue tracker"
 msgstr "Rastreador de problemas"
@@ -2243,17 +2409,18 @@ msgctxt "Popup/Instance/Error message.Title"
 msgid "It is not possible to connect to the given URL"
 msgstr ""
 
-#: front/src/components/Home.vue:50
-msgctxt "Content/Home/List item/Verb"
-msgid "Keep a track of your favorite songs"
-msgstr "Guardar suas músicas favoritas"
+#: front/src/components/mixins/Translations.vue:65
+#: front/src/components/mixins/Translations.vue:66
+msgctxt "*/*/*/Noun"
+msgid "Items"
+msgstr ""
 
 #: front/src/components/Footer.vue:33 src/components/ShortcutsModal.vue:3
 msgctxt "*/*/*/Noun"
 msgid "Keyboard shortcuts"
 msgstr "Atalhos do teclado"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:161
+#: front/src/views/admin/moderation/DomainsDetail.vue:198
 msgctxt "Content/Moderation/Table.Label.Link"
 msgid "Known accounts"
 msgstr "Contas conhecidas"
@@ -2264,15 +2431,15 @@ msgid "Known libraries"
 msgstr "Bibliotecas conhecidas"
 
 #: front/src/components/manage/users/UsersTable.vue:41
-#: front/src/components/mixins/Translations.vue:58
-#: front/src/views/admin/moderation/AccountsDetail.vue:205
-#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:70
+#: front/src/views/admin/moderation/AccountsDetail.vue:206
+#: front/src/components/mixins/Translations.vue:71
 msgctxt "Content/Profile/Table.Label/Short, Noun (Value is a date)"
 msgid "Last activity"
 msgstr "Ultima atividade"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:188
-#: front/src/views/admin/moderation/DomainsDetail.vue:78
+#: front/src/views/admin/moderation/AccountsDetail.vue:189
+#: front/src/views/admin/moderation/DomainsDetail.vue:115
 msgctxt "Content/*/Table.Label"
 msgid "Last checked"
 msgstr "Última verificação"
@@ -2287,13 +2454,13 @@ msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Last seen"
 msgstr "Visto pela última vez"
 
-#: front/src/components/mixins/Translations.vue:47
-#: front/src/components/mixins/Translations.vue:48
+#: front/src/components/mixins/Translations.vue:57
+#: front/src/components/mixins/Translations.vue:58
 msgctxt "Content/Moderation/Dropdown/Noun"
 msgid "Last seen date"
 msgstr "Data da última vista"
 
-#: front/src/views/content/remote/Card.vue:60
+#: front/src/views/content/remote/Card.vue:73
 msgctxt "Content/Library/Card.List item/Noun"
 msgid "Last update:"
 msgstr "Última atualização:"
@@ -2303,60 +2470,60 @@ msgctxt "Modal/*/Button.Label/Short, Verb"
 msgid "Launch"
 msgstr "Lançamento"
 
-#: front/src/components/Home.vue:10
-msgctxt "Content/Home/Button.Label/Verb"
-msgid "Learn more about this instance"
-msgstr "Saiba mais sobre esta instância"
+#: front/src/components/Home.vue:35
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Learn more"
+msgstr "Carregando seguidores…"
 
 #: front/src/components/manage/users/InvitationForm.vue:58
 msgctxt "Content/Admin/Input.Placeholder"
 msgid "Leave empty for a random code"
 msgstr "Deixar vazio para um código aleatório"
 
-#: front/src/components/audio/EmbedWizard.vue:7
+#: front/src/components/audio/EmbedWizard.vue:17
 msgctxt "Popup/Embed/Paragraph"
 msgid "Leave empty for a responsive widget"
 msgstr "Deixe vazio para um widget responsivo"
 
-#: front/src/views/admin/library/AlbumDetail.vue:232
-#: front/src/views/admin/library/ArtistDetail.vue:221
-#: front/src/views/admin/library/TrackDetail.vue:284
-#: front/src/views/admin/moderation/AccountsDetail.vue:327
-#: front/src/views/admin/moderation/DomainsDetail.vue:234
-#: front/src/views/content/Base.vue:5
+#: front/src/components/mixins/Translations.vue:64
+#: front/src/components/mixins/Translations.vue:65
 msgctxt "*/*/*/Noun"
-msgid "Libraries"
-msgstr "Bibliotecas"
+msgid "Length"
+msgstr ""
 
+#: front/src/views/admin/library/AlbumDetail.vue:248
+#: front/src/views/admin/library/ArtistDetail.vue:236
 #: front/src/views/admin/library/Base.vue:17
 #: front/src/views/admin/library/LibrariesList.vue:24
-msgctxt "*/*/*"
+#: front/src/views/admin/library/TrackDetail.vue:300
+#: front/src/views/admin/moderation/AccountsDetail.vue:339
+#: front/src/views/admin/moderation/DomainsDetail.vue:271
+#: front/src/views/content/Base.vue:5
+msgctxt "*/*/*/Noun"
 msgid "Libraries"
 msgstr "Bibliotecas"
 
-#: front/src/components/mixins/Translations.vue:72
-#: front/src/components/mixins/Translations.vue:73
+#: front/src/components/mixins/Translations.vue:84
+#: front/src/components/mixins/Translations.vue:85
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Libraries and uploads"
 msgstr "Biblioteca atualizada"
 
 #: front/src/views/content/libraries/Form.vue:2
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Libraries help you organize and share your music collections. You can upload"
-" your own music collection to Funkwhale and share it with your friends and "
-"family."
-msgstr ""
-"As bibliotecas ajudam você a organizar e compartilhar suas coleções de "
-"músicas. Você pode enviar sua própria coleção de músicas para o Funkwhale e "
-"compartilhá-la com seus amigos e familiares."
+msgid "Libraries help you organize and share your music collections. You can upload your own music collection to Funkwhale and share it with your friends and family."
+msgstr "As bibliotecas ajudam você a organizar e compartilhar suas coleções de músicas. Você pode enviar sua própria coleção de músicas para o Funkwhale e compartilhá-la com seus amigos e familiares."
 
-#: front/src/components/Sidebar.vue:85 src/components/instance/Stats.vue:30
+#: front/src/components/Sidebar.vue:85
 #: front/src/components/manage/library/UploadsTable.vue:60
-#: front/src/components/manage/users/UsersTable.vue:173
+#: front/src/components/manage/users/UsersTable.vue:174
+#: front/src/components/mixins/Report.vue:77
 #: front/src/views/admin/library/UploadDetail.vue:144
-#: front/src/views/admin/moderation/AccountsDetail.vue:498
-msgctxt "*/*/*"
+#: front/src/views/admin/moderation/AccountsDetail.vue:518 src/entities.js:132
+#: front/src/components/mixins/Report.vue:78
+#, fuzzy
+msgctxt "*/*/*/Noun"
 msgid "Library"
 msgstr "Biblioteca"
 
@@ -2387,21 +2554,37 @@ msgstr "Biblioteca atualizada"
 
 #: front/src/components/library/TrackDetail.vue:19
 #: front/src/components/manage/library/TracksTable.vue:43
-#: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:61
+#: front/src/views/admin/library/TrackDetail.vue:165 src/edits.js:84
+#: front/src/entities.js:115
 msgctxt "Content/*/*/Noun"
 msgid "License"
 msgstr "Licença"
 
-#: front/src/views/admin/library/AlbumDetail.vue:157
-#: front/src/views/admin/library/ArtistDetail.vue:146
-#: front/src/views/admin/library/TrackDetail.vue:209
-msgctxt "*/*/*/Noun"
-msgid "Listenings"
+#: front/src/components/Footer.vue:90
+msgctxt "Footer/Settings/Dropdown.Label/Theme name"
+msgid "Light"
 msgstr ""
 
-#: front/src/components/mixins/Translations.vue:80
-#: front/src/components/mixins/Translations.vue:81
-msgctxt "Content/OAuth Scopes/Label"
+#: front/src/views/admin/library/AlbumDetail.vue:188
+#: front/src/views/admin/library/ArtistDetail.vue:176
+#: front/src/views/admin/library/LibraryDetail.vue:179
+#: front/src/views/admin/library/TrackDetail.vue:240
+#: front/src/views/admin/moderation/AccountsDetail.vue:269
+msgctxt "Content/Moderation/Table.Label/Noun"
+msgid "Linked reports"
+msgstr ""
+
+#: front/src/components/Home.vue:135
+msgctxt "Content/Home/Link"
+msgid "Listen to public albums and playlists shared on this pod"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:92
+#: front/src/views/admin/library/AlbumDetail.vue:163
+#: front/src/views/admin/library/ArtistDetail.vue:151
+#: front/src/views/admin/library/TrackDetail.vue:215
+#: front/src/components/mixins/Translations.vue:93
+msgctxt "*/*/*/Noun"
 msgid "Listenings"
 msgstr ""
 
@@ -2427,7 +2610,7 @@ msgctxt "Content/Library/Paragraph"
 msgid "Loading library data…"
 msgstr "Carregando dados da biblioteca…"
 
-#: front/src/views/Notifications.vue:19
+#: front/src/views/Notifications.vue:84
 msgctxt "Content/Notifications/Paragraph"
 msgid "Loading notifications…"
 msgstr "Carregando notificações…"
@@ -2435,7 +2618,7 @@ msgstr "Carregando notificações…"
 #: front/src/views/content/remote/Home.vue:3
 msgctxt "Content/Library/Paragraph"
 msgid "Loading remote libraries…"
-msgstr "Carregando bibliotecas remotas..."
+msgstr "Carregando bibliotecas remotas…"
 
 #: front/src/views/content/libraries/Quota.vue:4
 msgctxt "Content/Library/Paragraph"
@@ -2452,6 +2635,7 @@ msgstr "Carregando seus favoritos …"
 #: front/src/components/manage/library/LibrariesTable.vue:75
 #: front/src/components/manage/library/TracksTable.vue:71
 #: front/src/components/manage/library/UploadsTable.vue:99
+#: front/src/components/manage/moderation/ReportCard.vue:173
 #: front/src/views/admin/library/AlbumDetail.vue:19
 #: front/src/views/admin/library/ArtistDetail.vue:18
 #: front/src/views/admin/library/LibraryDetail.vue:18
@@ -2467,12 +2651,12 @@ msgctxt "Content/Moderation/*/Short, Noun"
 msgid "Local account"
 msgstr "Conta local"
 
-#: front/src/components/auth/Login.vue:84
+#: front/src/components/Home.vue:96 src/views/auth/Login.vue:29
 msgctxt "Head/Login/Title"
 msgid "Log In"
 msgstr "Autenticação"
 
-#: front/src/components/auth/Login.vue:4
+#: front/src/views/auth/Login.vue:4
 msgctxt "Content/Login/Title/Verb"
 msgid "Log in to your Funkwhale account"
 msgstr "Logar na sua conta Funkwhale"
@@ -2487,7 +2671,7 @@ msgctxt "Sidebar/Profile/List item.Link"
 msgid "Logged in as %{ username }"
 msgstr "Conectado como %{ username }"
 
-#: front/src/components/Sidebar.vue:54 src/components/auth/Login.vue:42
+#: front/src/components/Sidebar.vue:54 src/components/auth/LoginForm.vue:41
 msgctxt "*/Login/*/Verb"
 msgid "Login"
 msgstr "Entrar"
@@ -2507,36 +2691,40 @@ msgctxt "Content/Library/Paragraph"
 msgid "Looks like you don't have a library, it's time to create one."
 msgstr "Parece que você ainda não tem biblioteca, é hora de criar uma."
 
-#: front/src/components/audio/Player.vue:632
-#: src/components/audio/Player.vue:633
+#: front/src/components/audio/Player.vue:658
+#: src/components/audio/Player.vue:659
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping disabled. Click to switch to single-track looping."
-msgstr ""
-"Looping desativado. Clique para alternar para um loop de musica única."
+msgstr "Looping desativado. Clique para alternar para um loop de musica única."
 
-#: front/src/components/audio/Player.vue:635
-#: src/components/audio/Player.vue:636
+#: front/src/components/audio/Player.vue:661
+#: src/components/audio/Player.vue:662
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping on a single track. Click to switch to whole queue looping."
-msgstr ""
-"Looping em uma única música. Clique para alternar para todo o loop da fila."
+msgstr "Looping em uma única música. Clique para alternar para todo o loop da fila."
 
-#: front/src/components/audio/Player.vue:638
-#: src/components/audio/Player.vue:639
+#: front/src/components/audio/Player.vue:664
+#: src/components/audio/Player.vue:665
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping on whole queue. Click to disable looping."
 msgstr "Looping na fila inteira. Clique para desativar o loop."
 
-#: front/src/components/Sidebar.vue:223
+#: front/src/components/Sidebar.vue:230
 msgctxt "Sidebar/*/Hidden text"
 msgid "Main menu"
 msgstr "Menu principal"
 
-#: front/src/views/admin/library/Base.vue:31
+#: front/src/views/admin/library/Base.vue:34
 msgctxt "Head/Admin/Title"
 msgid "Manage library"
 msgstr "Gerenciar biblioteca"
 
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:8
+#, fuzzy
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Manage moderation rules for %{ obj }"
+msgstr "Atualizar a regra de moderação"
+
 #: front/src/components/playlists/PlaylistModal.vue:3
 msgctxt "Popup/Playlist/Title/Verb"
 msgid "Manage playlists"
@@ -2552,7 +2740,7 @@ msgctxt "Content/Playlist/Button.Label/Verb"
 msgid "Manage your playlists"
 msgstr "Gerenciar suas playlists"
 
-#: front/src/views/Notifications.vue:14
+#: front/src/views/Notifications.vue:79
 msgctxt "Content/Notifications/Button.Label/Verb"
 msgid "Mark all as read"
 msgstr "Marque tudo como lido"
@@ -2567,12 +2755,12 @@ msgctxt "Content/Notifications/Button.Tooltip/Verb"
 msgid "Mark as unread"
 msgstr "Marcar como não lido"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:310
+#: front/src/views/admin/moderation/AccountsDetail.vue:321
 msgctxt "Content/*/*/Unit"
 msgid "MB"
 msgstr "MB"
 
-#: front/src/components/audio/Player.vue:625
+#: front/src/components/audio/Player.vue:651
 msgctxt "Sidebar/Player/Hidden text"
 msgid "Media player"
 msgstr "Leitor de mídia"
@@ -2582,43 +2770,59 @@ msgctxt "Content/Profile/Paragraph"
 msgid "Member since %{ date }"
 msgstr "Registrado desde %{ date }"
 
+#: front/src/components/manage/moderation/ReportCard.vue:109
+#: front/src/components/moderation/ReportModal.vue:41
+msgctxt "*/*/Field.Label/Noun"
+msgid "Message"
+msgstr ""
+
 #: front/src/components/Footer.vue:32
 msgctxt "Footer/*/List item.Link"
 msgid "Mobile and desktop apps"
 msgstr "Aplicativos móveis e de computador"
 
+#: front/src/components/Home.vue:143
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Mobile apps"
+msgstr "Aplicativos móveis e de computador"
+
 #: front/src/components/Sidebar.vue:96
-#: src/components/manage/users/UsersTable.vue:177
-#: front/src/views/admin/moderation/AccountsDetail.vue:502
-#: front/src/views/admin/moderation/Base.vue:21
+#: src/components/manage/users/UsersTable.vue:178
+#: front/src/views/admin/Settings.vue:85
+#: front/src/views/admin/moderation/AccountsDetail.vue:522
+#: front/src/views/admin/moderation/Base.vue:43
 msgctxt "*/Moderation/*"
 msgid "Moderation"
 msgstr "Moderação"
 
 #: front/src/views/admin/moderation/AccountsDetail.vue:78
-#: front/src/views/admin/moderation/DomainsDetail.vue:42
+#: front/src/views/admin/moderation/DomainsDetail.vue:70
 msgctxt "Content/Moderation/Card.Paragraph"
-msgid ""
-"Moderation policies help you control how your instance interact with a given"
-" domain or account."
-msgstr ""
-"As políticas de moderação ajudam a controlar como sua instância interage com"
-" um determinado domínio ou conta."
+msgid "Moderation policies help you control how your instance interact with a given domain or account."
+msgstr "As políticas de moderação ajudam a controlar como sua instância interage com um determinado domínio ou conta."
+
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:4
+#, fuzzy
+msgctxt "Content/Moderation/Button.Label"
+msgid "Moderation rules…"
+msgstr "Atualizar a regra de moderação"
 
 #: front/src/components/library/EditCard.vue:5
 msgctxt "Content/Library/Card/Short"
 msgid "Modification %{ id }"
 msgstr "Data de modificação"
 
-#: front/src/components/mixins/Translations.vue:48
-#: front/src/components/mixins/Translations.vue:49
+#: front/src/components/mixins/Translations.vue:58
+#: front/src/components/mixins/Translations.vue:59
 msgctxt "Content/Playlist/Dropdown/Noun"
 msgid "Modification date"
 msgstr "Data de modificação"
 
-#: front/src/components/library/AlbumBase.vue:42
-#: front/src/components/library/ArtistBase.vue:53
-#: front/src/components/library/TrackBase.vue:61
+#: front/src/components/audio/PlayButton.vue:100
+#: front/src/components/library/AlbumBase.vue:43
+#: front/src/components/library/ArtistBase.vue:54
+#: front/src/components/library/TrackBase.vue:59
 msgctxt "*/*/Button.Label/Noun"
 msgid "More…"
 msgstr ""
@@ -2628,7 +2832,7 @@ msgctxt "*/*/*/Noun"
 msgid "Music"
 msgstr "Música"
 
-#: front/src/components/audio/Player.vue:631
+#: front/src/components/audio/Player.vue:657
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Mute"
 msgstr "Mudo"
@@ -2675,8 +2879,8 @@ msgctxt "Content/Library/Title"
 msgid "My libraries"
 msgstr "Minhas bibliotecas"
 
-#: front/src/components/audio/track/Row.vue:40
-#: src/components/library/EditCard.vue:60
+#: front/src/components/About.vue:105 src/components/audio/track/Row.vue:40
+#: front/src/components/library/EditCard.vue:60
 #: front/src/components/library/EditForm.vue:70
 #: front/src/components/library/TrackDetail.vue:34
 #: front/src/components/library/TrackDetail.vue:43
@@ -2686,54 +2890,56 @@ msgstr "Minhas bibliotecas"
 #: front/src/components/manage/library/TracksTable.vue:76
 #: front/src/components/manage/library/UploadsTable.vue:121
 #: front/src/components/manage/library/UploadsTable.vue:128
-#: front/src/components/manage/users/UsersTable.vue:61
+#: front/src/components/manage/moderation/ReportCard.vue:78
+#: front/src/components/manage/moderation/ReportCard.vue:87
+#: front/src/components/manage/moderation/ReportCard.vue:193
+#: front/src/components/manage/users/UsersTable.vue:62
 #: front/src/views/admin/library/UploadDetail.vue:179
 #: front/src/views/admin/library/UploadDetail.vue:214
 #: front/src/views/admin/library/UploadDetail.vue:233
 #: front/src/views/admin/library/UploadDetail.vue:244
 #: front/src/views/admin/library/UploadDetail.vue:257
-#: front/src/views/admin/moderation/AccountsDetail.vue:192
-#: front/src/views/admin/moderation/DomainsDetail.vue:82
+#: front/src/views/admin/moderation/AccountsDetail.vue:193
+#: front/src/views/admin/moderation/DomainsDetail.vue:119
 #: front/src/views/content/libraries/FilesTable.vue:95
 #: front/src/views/content/libraries/FilesTable.vue:101
 msgctxt "*/*/*"
 msgid "N/A"
 msgstr ""
 
-#: front/src/components/manage/library/LibrariesTable.vue:48
-#: front/src/components/manage/library/UploadsTable.vue:59
-msgctxt "*/*/*"
-msgid "Name"
-msgstr "Nome"
-
 #: front/src/components/auth/ApplicationForm.vue:9
-msgctxt "Content/Applications/Input.Label/Noun"
-msgid "Name"
-msgstr "Nome"
-
 #: front/src/components/auth/Settings.vue:133
 #: front/src/components/manage/library/ArtistsTable.vue:39
+#: front/src/components/manage/library/LibrariesTable.vue:48
+#: front/src/components/manage/library/TagsTable.vue:41
+#: front/src/components/manage/library/UploadsTable.vue:59
 #: front/src/components/manage/moderation/AccountsTable.vue:39
-#: front/src/components/manage/moderation/DomainsTable.vue:38
-#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/manage/moderation/DomainsTable.vue:46
+#: front/src/components/mixins/Translations.vue:63
 #: front/src/components/playlists/PlaylistModal.vue:45
-#: front/src/views/admin/library/ArtistDetail.vue:98
+#: front/src/views/admin/library/ArtistDetail.vue:103
 #: front/src/views/admin/library/LibraryDetail.vue:85
+#: front/src/views/admin/library/TagDetail.vue:68
 #: front/src/views/admin/library/UploadDetail.vue:92
-#: front/src/views/admin/moderation/DomainsDetail.vue:97
-#: front/src/views/content/libraries/Form.vue:10 src/edits.js:10
-#: front/src/components/mixins/Translations.vue:54
+#: front/src/views/admin/moderation/DomainsDetail.vue:134
+#: front/src/views/content/libraries/Form.vue:10 src/edits.js:17
+#: front/src/components/mixins/Translations.vue:64
 msgctxt "*/*/*/Noun"
 msgid "Name"
 msgstr "Nome"
 
+#: front/src/views/Notifications.vue:24 src/views/Notifications.vue:58
+msgctxt "*/*/*"
+msgid "Never"
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:88
 #: front/src/views/auth/PasswordResetConfirm.vue:14
 msgctxt "Content/Settings/Input.Label"
 msgid "New password"
 msgstr "Nova senha"
 
-#: front/src/components/Sidebar.vue:173
+#: front/src/components/Sidebar.vue:177
 msgctxt "Sidebar/Player/Paragraph"
 msgid "New tracks will be appended here automatically."
 msgstr "Novas músicas serão adicionadas automaticamente aqui."
@@ -2743,21 +2949,18 @@ msgctxt "Content/Library/Card.Table.Header/Short"
 msgid "New value"
 msgstr ""
 
-#: front/src/components/audio/Player.vue:629
+#: front/src/components/audio/Player.vue:655
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Next track"
 msgstr "Música seguinte"
 
-#: front/src/components/Sidebar.vue:130
+#: front/src/components/Sidebar.vue:134
+#: front/src/components/manage/moderation/DomainsTable.vue:13
+#: front/src/views/admin/moderation/DomainsDetail.vue:110
 msgctxt "*/*/*"
 msgid "No"
 msgstr "Não"
 
-#: front/src/components/Home.vue:95
-msgctxt "Content/Home/List item"
-msgid "No add-ons, no plugins : you only need a web library"
-msgstr "Sem add-ons, sem plugins: você só precisa de uma biblioteca da Web"
-
 #: front/src/components/audio/Search.vue:25
 msgctxt "Content/Search/Paragraph"
 msgid "No album matched your query"
@@ -2773,6 +2976,11 @@ msgctxt "Content/Track/Table.Paragraph"
 msgid "No copyright information available for this track"
 msgstr "Nenhuma letra disponível para esta música."
 
+#: front/src/components/About.vue:25 src/components/Home.vue:25
+msgctxt "Content/Home/Paragraph"
+msgid "No description available."
+msgstr ""
+
 #: front/src/components/library/TrackDetail.vue:25
 msgctxt "Content/Track/Table.Paragraph"
 msgid "No licensing information for this track"
@@ -2783,7 +2991,7 @@ msgctxt "Content/Federation/Paragraph"
 msgid "No matching library."
 msgstr "Nenhuma biblioteca correspondente."
 
-#: front/src/views/Notifications.vue:28
+#: front/src/views/Notifications.vue:93
 msgctxt "Content/Notifications/Paragraph"
 msgid "No notification to show."
 msgstr "Ainda não há notificações."
@@ -2793,6 +3001,16 @@ msgctxt "Content/*/Paragraph"
 msgid "No results were found."
 msgstr ""
 
+#: front/src/components/About.vue:32
+msgctxt "Content/Home/Paragraph"
+msgid "No rules available."
+msgstr ""
+
+#: front/src/components/About.vue:39
+msgctxt "Content/Home/Paragraph"
+msgid "No terms available."
+msgstr ""
+
 #: front/src/components/mixins/Translations.vue:10
 #: front/src/components/mixins/Translations.vue:11
 msgctxt "Content/Settings/Dropdown"
@@ -2809,18 +3027,22 @@ msgctxt "Content/Admin/Table"
 msgid "Not used"
 msgstr "Não usado"
 
-#: front/src/components/mixins/Translations.vue:100
-#: front/src/components/mixins/Translations.vue:101
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Notifications"
-msgstr "Notificações"
-
-#: front/src/components/Sidebar.vue:46 src/views/Notifications.vue:76
+#: front/src/components/Sidebar.vue:46
+#: src/components/mixins/Translations.vue:112
+#: front/src/views/Notifications.vue:151
+#: src/components/mixins/Translations.vue:113
 msgctxt "*/Notifications/*"
 msgid "Notifications"
 msgstr "Notificações"
 
-#: front/src/components/Footer.vue:47
+#: front/src/components/mixins/Translations.vue:47
+#: front/src/components/mixins/Translations.vue:48
+#, fuzzy
+msgctxt "Content/Moderation/Dropdown"
+msgid "Offensive content"
+msgstr "Adicionar conteúdo"
+
+#: front/src/components/Footer.vue:55
 msgctxt "Footer/*/List item.Link"
 msgid "Official website"
 msgstr "Website oficial"
@@ -2835,6 +3057,12 @@ msgctxt "Content/Library/Card.Table.Header/Short"
 msgid "Old value"
 msgstr ""
 
+#: front/src/components/About.vue:90
+#, fuzzy
+msgctxt "*/*/*/State of registrations"
+msgid "Open"
+msgstr "Aberto"
+
 #: front/src/components/manage/users/InvitationsTable.vue:20
 msgctxt "Content/Admin/Dropdown/Adjective"
 msgid "Open"
@@ -2842,27 +3070,29 @@ msgstr "Aberto"
 
 #: front/src/components/library/ImportStatusModal.vue:56
 msgctxt "Popup/Import/Table.Label/Value"
-msgid ""
-"Open a support thread (include the debug information below in your message)"
+msgid "Open a support thread (include the debug information below in your message)"
 msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:73
-#: front/src/components/library/ArtistBase.vue:84
-#: front/src/components/library/TrackBase.vue:92
+#: front/src/components/library/AlbumBase.vue:87
+#: front/src/components/library/ArtistBase.vue:99
+#: front/src/components/library/TagDetail.vue:11
+#: front/src/components/library/TrackBase.vue:103
+#: front/src/components/manage/moderation/ReportCard.vue:128
 msgctxt "Content/Moderation/Link"
 msgid "Open in moderation interface"
 msgstr "Atualizar a regra de moderação"
 
-#: front/src/views/admin/library/AlbumDetail.vue:31
-#: front/src/views/admin/library/ArtistDetail.vue:30
-#: front/src/views/admin/library/TrackDetail.vue:30
+#: front/src/views/admin/library/AlbumDetail.vue:37
+#: front/src/views/admin/library/ArtistDetail.vue:35
+#: front/src/views/admin/library/TagDetail.vue:21
+#: front/src/views/admin/library/TrackDetail.vue:36
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open local profile"
 msgstr "Abrir o perfil"
 
-#: front/src/views/admin/library/AlbumDetail.vue:46
-#: front/src/views/admin/library/ArtistDetail.vue:45
-#: front/src/views/admin/library/TrackDetail.vue:45
+#: front/src/views/admin/library/AlbumDetail.vue:52
+#: front/src/views/admin/library/ArtistDetail.vue:50
+#: front/src/views/admin/library/TrackDetail.vue:51
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open on MusicBrainz"
 msgstr "Ver no MusicBrainz"
@@ -2872,10 +3102,10 @@ msgctxt "Content/Moderation/Link/Verb"
 msgid "Open profile"
 msgstr "Abrir o perfil"
 
-#: front/src/views/admin/library/AlbumDetail.vue:54
-#: front/src/views/admin/library/ArtistDetail.vue:53
+#: front/src/views/admin/library/AlbumDetail.vue:60
+#: front/src/views/admin/library/ArtistDetail.vue:58
 #: front/src/views/admin/library/LibraryDetail.vue:49
-#: front/src/views/admin/library/TrackDetail.vue:53
+#: front/src/views/admin/library/TrackDetail.vue:59
 #: front/src/views/admin/library/UploadDetail.vue:50
 #: front/src/views/admin/moderation/AccountsDetail.vue:52
 msgctxt "Content/Moderation/Link/Verb"
@@ -2896,6 +3126,7 @@ msgstr "Ou personalize sua regra"
 #: src/components/library/Radios.vue:41
 #: front/src/components/manage/library/EditsCardList.vue:37
 #: front/src/components/manage/users/UsersTable.vue:17
+#: front/src/views/admin/moderation/ReportsList.vue:42
 #: front/src/views/playlists/List.vue:25
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Order"
@@ -2903,40 +3134,51 @@ msgstr "Ordenar"
 
 #: front/src/components/favorites/List.vue:24
 #: src/components/library/Albums.vue:15
-#: front/src/components/library/Artists.vue:15
+#: front/src/components/library/Artists.vue:19
 #: src/components/library/Radios.vue:33
 #: front/src/components/manage/library/AlbumsTable.vue:11
 #: front/src/components/manage/library/ArtistsTable.vue:11
 #: front/src/components/manage/library/EditsCardList.vue:29
 #: front/src/components/manage/library/LibrariesTable.vue:20
+#: front/src/components/manage/library/TagsTable.vue:11
 #: front/src/components/manage/library/TracksTable.vue:11
 #: front/src/components/manage/library/UploadsTable.vue:30
 #: front/src/components/manage/moderation/AccountsTable.vue:11
-#: front/src/components/manage/moderation/DomainsTable.vue:9
+#: front/src/components/manage/moderation/DomainsTable.vue:17
 #: front/src/components/manage/users/InvitationsTable.vue:9
 #: front/src/components/manage/users/UsersTable.vue:9
+#: front/src/views/admin/moderation/ReportsList.vue:34
 #: front/src/views/content/libraries/FilesTable.vue:21
 #: front/src/views/playlists/List.vue:17
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Ordering"
 msgstr "Ordenar"
 
-#: front/src/components/library/Albums.vue:23
-#: src/components/library/Artists.vue:23
+#: front/src/components/library/Albums.vue:27
+#: src/components/library/Artists.vue:27
 #: front/src/components/manage/library/AlbumsTable.vue:19
 #: front/src/components/manage/library/ArtistsTable.vue:19
 #: front/src/components/manage/library/LibrariesTable.vue:28
+#: front/src/components/manage/library/TagsTable.vue:19
 #: front/src/components/manage/library/TracksTable.vue:19
 #: front/src/components/manage/library/UploadsTable.vue:38
 #: front/src/components/manage/moderation/AccountsTable.vue:19
-#: front/src/components/manage/moderation/DomainsTable.vue:17
+#: front/src/components/manage/moderation/DomainsTable.vue:25
 #: front/src/views/content/libraries/FilesTable.vue:29
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Ordering direction"
 msgstr "Direção de ordenar"
 
+#: front/src/components/mixins/Translations.vue:48
+#: front/src/components/mixins/Translations.vue:49
+msgctxt "Content/Moderation/Dropdown"
+msgid "Other"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:143
 #: front/src/components/manage/users/InvitationsTable.vue:38
-msgctxt "Content/Admin/Table.Label"
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Owner"
 msgstr "Proprietário"
 
@@ -2955,12 +3197,15 @@ msgctxt "Content/*/Hidden text/Noun"
 msgid "Pagination"
 msgstr "Paginação"
 
-#: front/src/components/auth/Login.vue:33 src/components/auth/Signup.vue:40
-msgctxt "Content/*/Input.Label"
+#: front/src/components/auth/LoginForm.vue:32
+#: src/components/auth/Settings.vue:291
+#: front/src/components/auth/SignupForm.vue:36
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Password"
 msgstr "Palavra-passe"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:94
+#: front/src/components/auth/SubsonicTokenForm.vue:100
 msgctxt "Content/Settings/Message"
 msgid "Password updated"
 msgstr "Senha atualizada"
@@ -2970,12 +3215,12 @@ msgctxt "Content/Signup/Card.Title"
 msgid "Password updated successfully"
 msgstr "Senha atualizada com sucesso"
 
-#: front/src/components/audio/Player.vue:628
+#: front/src/components/audio/Player.vue:654
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Pause track"
 msgstr "Parar música"
 
-#: front/src/components/ShortcutsModal.vue:59
+#: front/src/components/ShortcutsModal.vue:96
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Pause/play the current track"
 msgstr "Pausa/leitura da pista actual"
@@ -3004,7 +3249,7 @@ msgctxt "Content/Library/Label"
 msgid "Pending files"
 msgstr "Ficheiros pendentes"
 
-#: front/src/components/Sidebar.vue:225
+#: front/src/components/Sidebar.vue:232
 msgctxt "Sidebar/Notifications/Hidden text"
 msgid "Pending follow requests"
 msgstr "Solicitações pendentes"
@@ -3015,84 +3260,76 @@ msgctxt "Content/Admin/*/Noun"
 msgid "Pending review"
 msgstr "Ficheiros pendentes"
 
-#: front/src/components/Sidebar.vue:226
+#: front/src/components/Sidebar.vue:233
 msgctxt "Sidebar/Moderation/Hidden text"
 msgid "Pending review edits"
 msgstr "Ficheiros pendentes"
 
+#: front/src/components/auth/Settings.vue:176
 #: front/src/components/manage/users/UsersTable.vue:42
 #: front/src/views/admin/moderation/AccountsDetail.vue:166
-msgctxt "Content/Admin/Table.Label/Noun"
-msgid "Permissions"
-msgstr "Permissões"
-
-#: front/src/components/auth/Settings.vue:176
 msgctxt "Content/*/*/Noun"
 msgid "Permissions"
 msgstr "Permissões"
 
 #: front/src/components/audio/PlayButton.vue:9
-#: front/src/components/library/TrackBase.vue:26
+#: front/src/components/library/TrackBase.vue:24
 msgctxt "*/Queue/Button.Label/Short, Verb"
 msgid "Play"
 msgstr "Jogar"
 
 #: front/src/components/audio/album/Card.vue:48
-#: front/src/components/audio/artist/Card.vue:44
-#: front/src/components/library/AlbumBase.vue:20
+#: front/src/components/library/AlbumBase.vue:21
 #: front/src/components/library/AlbumDetail.vue:11
 #: src/views/playlists/Detail.vue:24
 msgctxt "Content/Queue/Button.Label/Short, Verb"
 msgid "Play all"
 msgstr "Jogar tudo"
 
-#: front/src/components/library/ArtistBase.vue:31
+#: front/src/components/library/ArtistBase.vue:32
 msgctxt "Content/Artist/Button.Label/Verb"
 msgid "Play all albums"
 msgstr "Jogar todos os álbuns"
 
-#: front/src/components/audio/PlayButton.vue:76
+#: front/src/components/audio/PlayButton.vue:92
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play next"
 msgstr "Jogar seguinte"
 
-#: front/src/components/ShortcutsModal.vue:67
+#: front/src/components/ShortcutsModal.vue:120
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Play next track"
 msgstr "Jogar pista seguinte"
 
-#: front/src/components/audio/PlayButton.vue:74
+#: front/src/components/audio/PlayButton.vue:90
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play now"
 msgstr "Jogue agora"
 
-#: front/src/components/ShortcutsModal.vue:63
+#: front/src/components/ShortcutsModal.vue:116
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Play previous track"
 msgstr "Jogar pista anterior"
 
-#: front/src/components/audio/PlayButton.vue:77
+#: front/src/components/audio/PlayButton.vue:93
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play similar songs"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:224
+#: front/src/components/Sidebar.vue:231
 msgctxt "Sidebar/Player/Hidden text"
 msgid "Play this track"
 msgstr "Jogar esta pista"
 
-#: front/src/components/audio/Player.vue:627
+#: front/src/components/audio/Player.vue:653
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Play track"
 msgstr "Jogar mũsica"
 
-#: front/src/components/audio/PlayButton.vue:82
-msgctxt "*/Queue/Button/Title"
-msgid "Play..."
-msgstr "Jogar"
-
-#: front/src/views/playlists/Detail.vue:91
-msgctxt "Head/Playlist/Title"
+#: front/src/components/mixins/Report.vue:66 src/views/playlists/Detail.vue:121
+#: front/src/components/mixins/Report.vue:67
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Playlist"
 msgstr "Playlist"
 
@@ -3129,33 +3366,30 @@ msgctxt "Content/Playlist/Dropdown.Label"
 msgid "Playlist visibility"
 msgstr "Visibilidade da playlist"
 
-#: front/src/components/mixins/Translations.vue:88
-#: front/src/components/mixins/Translations.vue:89
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Playlists"
-msgstr "Playlists"
-
 #: front/src/components/Sidebar.vue:71 src/components/library/Home.vue:16
-#: front/src/components/library/Library.vue:16 src/views/admin/Settings.vue:83
-#: front/src/views/admin/library/AlbumDetail.vue:173
-#: front/src/views/admin/library/ArtistDetail.vue:162
-#: front/src/views/admin/library/TrackDetail.vue:225
+#: front/src/components/library/Library.vue:16
+#: front/src/components/mixins/Translations.vue:100
+#: src/views/admin/Settings.vue:83
+#: front/src/views/admin/library/AlbumDetail.vue:179
+#: front/src/views/admin/library/ArtistDetail.vue:167
+#: front/src/views/admin/library/TrackDetail.vue:231
 #: src/views/playlists/List.vue:106
+#: front/src/components/mixins/Translations.vue:101
 msgctxt "*/*/*"
 msgid "Playlists"
 msgstr "Playlists"
 
-#: front/src/components/Home.vue:56
-msgctxt "Content/Home/List item"
-msgid "Playlists? We got them"
-msgstr "Playlist criada"
+#: front/src/components/audio/EmbedWizard.vue:9
+msgctxt "Content/Embed/Message"
+msgid "Please contact your admins and ask them to update the corresponding setting."
+msgstr ""
 
 #: front/src/components/auth/Settings.vue:79
 msgctxt "Content/Settings/Error message.List item/Call to action"
 msgid "Please double-check your password is correct"
 msgstr "Por favor, verifique novamente se sua senha está correta"
 
-#: front/src/components/auth/Login.vue:9
+#: front/src/components/auth/LoginForm.vue:5
 msgctxt "Content/Login/Error message.List item/Call to action"
 msgid "Please double-check your username/password couple is correct"
 msgstr "Por favor, verifique se o seu nome de usuário e senha estão corretos"
@@ -3165,25 +3399,27 @@ msgctxt "Content/Settings/Paragraph"
 msgid "PNG, GIF or JPG. At most 2MB. Will be downscaled to 400x400px."
 msgstr "PNG, GIF ou JPG. No máximo 2MB. Será reduzido para 400x400px."
 
-#: front/src/views/admin/library/TrackDetail.vue:137
-msgctxt "*/*/*/Noun"
+#: front/src/components/About.vue:72
+msgctxt "Content/About/Header/Name"
+msgid "Pod configuration"
+msgstr ""
+
+#: front/src/views/admin/library/TrackDetail.vue:143 src/edits.js:70
+msgctxt "*/*/*/Short, Noun"
 msgid "Position"
 msgstr "Paginação"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:118
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Prevent account or domain from triggering notifications, except from "
-"followers."
-msgstr ""
-"Evite que uma conta ou domínio acione notificações, exceto de seguidores."
+msgid "Prevent account or domain from triggering notifications, except from followers."
+msgstr "Evite que uma conta ou domínio acione notificações, exceto de seguidores."
 
-#: front/src/components/audio/EmbedWizard.vue:33
+#: front/src/components/audio/EmbedWizard.vue:43
 msgctxt "Popup/Embed/Title/Noun"
 msgid "Preview"
 msgstr "Pré-visualização"
 
-#: front/src/components/audio/Player.vue:626
+#: front/src/components/audio/Player.vue:652
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Previous track"
 msgstr "Música anterior"
@@ -3194,7 +3430,7 @@ msgctxt "Content/Settings/Dropdown/Short"
 msgid "Private"
 msgstr ""
 
-#: front/src/views/content/remote/Card.vue:43
+#: front/src/views/content/remote/Card.vue:56
 msgctxt "Content/Library/Card.List item"
 msgid "Problem during scanning"
 msgstr "Erro durante a análise"
@@ -3215,14 +3451,20 @@ msgctxt "Content/Library/Tab.Title/Short"
 msgid "Processing"
 msgstr "Em tratamento"
 
-#: front/src/components/mixins/Translations.vue:68
-#: front/src/components/mixins/Translations.vue:69
+#: front/src/components/mixins/Translations.vue:80
+#: front/src/components/mixins/Translations.vue:81
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Profile"
 msgstr "Abrir o perfil"
 
+#: front/src/components/auth/SignupForm.vue:5
+#, fuzzy
+msgctxt "Content/Signup/Form/Paragraph"
+msgid "Public registrations are not possible on this instance. You will need an invitation code to sign up."
+msgstr "As inscrições estão fechadas nesta instância, você precisará de um código de convite para inscrição."
+
 #: front/src/components/manage/moderation/AccountsTable.vue:188
-#: front/src/components/manage/moderation/DomainsTable.vue:168
+#: front/src/components/manage/moderation/DomainsTable.vue:186
 #: front/src/views/content/libraries/Quota.vue:36
 #: front/src/views/content/libraries/Quota.vue:39
 #: front/src/views/content/libraries/Quota.vue:62
@@ -3253,7 +3495,7 @@ msgctxt "Sidebar/Queue/Tab.Title/Noun"
 msgid "Queue"
 msgstr "Fila"
 
-#: front/src/components/audio/Player.vue:322
+#: front/src/components/audio/Player.vue:329
 msgctxt "Content/Queue/Message"
 msgid "Queue shuffled!"
 msgstr "Fila embaralhada!"
@@ -3285,16 +3527,12 @@ msgstr "Rádio atualizado"
 
 #: front/src/components/library/Library.vue:13
 #: src/components/library/Radios.vue:142
+#: front/src/components/mixins/Translations.vue:104
+#: front/src/components/mixins/Translations.vue:105
 msgctxt "*/*/*"
 msgid "Radios"
 msgstr "Rádios"
 
-#: front/src/components/mixins/Translations.vue:92
-#: front/src/components/mixins/Translations.vue:93
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Radios"
-msgstr "Rádios"
-
 #: front/src/components/auth/ApplicationForm.vue:151
 msgctxt "Content/OAuth Scopes/Label/Verb"
 msgid "Read"
@@ -3321,15 +3559,15 @@ msgctxt "Content/Moderation/*/Noun"
 msgid "Reason"
 msgstr "Motivo"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:251
-#: front/src/views/admin/moderation/DomainsDetail.vue:179
+#: front/src/views/admin/moderation/AccountsDetail.vue:252
+#: front/src/views/admin/moderation/DomainsDetail.vue:216
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Received library follows"
 msgstr "A biblioteca emitida segue"
 
-#: front/src/components/manage/moderation/DomainsTable.vue:40
-#: front/src/components/mixins/Translations.vue:62
-#: front/src/components/mixins/Translations.vue:63
+#: front/src/components/manage/moderation/DomainsTable.vue:48
+#: front/src/components/mixins/Translations.vue:74
+#: front/src/components/mixins/Translations.vue:75
 msgctxt "Content/Moderation/*/Noun"
 msgid "Received messages"
 msgstr "Mensagens recebidas"
@@ -3349,6 +3587,12 @@ msgctxt "Content/Home/Title"
 msgid "Recently added"
 msgstr "Adicionado recentemente"
 
+#: front/src/components/Home.vue:167
+#, fuzzy
+msgctxt "Content/Home/Title"
+msgid "Recently added albums"
+msgstr "Adicionado recentemente"
+
 #: front/src/components/library/Home.vue:11
 msgctxt "Content/Home/Title"
 msgid "Recently favorited"
@@ -3377,14 +3621,14 @@ msgctxt "Popup/*/Message.Title"
 msgid "Refresh error"
 msgstr "Atualizar"
 
-#: front/src/views/admin/library/AlbumDetail.vue:50
-#: front/src/views/admin/library/ArtistDetail.vue:49
-#: front/src/views/admin/library/TrackDetail.vue:49
+#: front/src/views/admin/library/AlbumDetail.vue:56
+#: front/src/views/admin/library/ArtistDetail.vue:54
+#: front/src/views/admin/library/TrackDetail.vue:55
 msgctxt "Content/Moderation/Button/Verb"
 msgid "Refresh from remote server"
 msgstr ""
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:127
+#: front/src/views/admin/moderation/DomainsDetail.vue:164
 msgctxt "Content/Moderation/Button.Label/Verb"
 msgid "Refresh node info"
 msgstr "Atualizar informações do nó"
@@ -3396,9 +3640,7 @@ msgstr "Atualizar informações do nó"
 
 #: front/src/components/federation/FetchButton.vue:80
 msgctxt "Popup/*/Message.Content"
-msgid ""
-"Refresh request wasn't proceed in time by our server. It will be processed "
-"later."
+msgid "Refresh request wasn't proceed in time by our server. It will be processed later."
 msgstr ""
 
 #: front/src/components/federation/FetchButton.vue:16
@@ -3421,16 +3663,13 @@ msgctxt "Popup/*/Title"
 msgid "Refreshing object from remote…"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:9
-msgctxt "Content/Signup/Form/Paragraph"
-msgid ""
-"Registration are closed on this instance, you will need an invitation code "
-"to signup."
-msgstr ""
-"As inscrições estão fechadas nesta instância, você precisará de um código de"
-" convite para inscrição."
+#: front/src/components/About.vue:86
+#, fuzzy
+msgctxt "*/*/*"
+msgid "Registrations"
+msgstr "Administração"
 
-#: front/src/components/manage/users/UsersTable.vue:71
+#: front/src/components/manage/users/UsersTable.vue:72
 msgctxt "Content/Admin/Table, User role"
 msgid "Regular user"
 msgstr "usuário regular"
@@ -3455,8 +3694,8 @@ msgid "Rejected"
 msgstr "Rejeitado"
 
 #: front/src/components/manage/library/AlbumsTable.vue:43
-#: front/src/components/mixins/Translations.vue:44 src/edits.js:28
-#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:54 src/edits.js:43
+#: front/src/components/mixins/Translations.vue:55
 msgctxt "Content/*/*/Noun"
 msgid "Release date"
 msgstr "Data da última vista"
@@ -3466,6 +3705,11 @@ msgctxt "Content/Library/Paragraph"
 msgid "Remaining storage space"
 msgstr ""
 
+#: front/src/views/Notifications.vue:18 src/views/Notifications.vue:52
+msgctxt "Content/Notifications/Label"
+msgid "Remind me in:"
+msgstr ""
+
 #: front/src/views/content/remote/Home.vue:6
 msgctxt "Content/Library/Title/Noun"
 msgid "Remote libraries"
@@ -3473,12 +3717,8 @@ msgstr "Bibliotecas Remotas"
 
 #: front/src/views/content/remote/Home.vue:7
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Remote libraries are owned by other users on the network. You can access "
-"them as long as they are public or you are granted access."
-msgstr ""
-"Bibliotecas remotas são de propriedade de outros usuários na rede. Você pode"
-" acessá-los desde que sejam públicos ou tenha acesso."
+msgid "Remote libraries are owned by other users on the network. You can access them as long as they are public or you are granted access."
+msgstr "Bibliotecas remotas são de propriedade de outros usuários na rede. Você pode acessá-los desde que sejam públicos ou tenha acesso."
 
 #: front/src/components/library/radios/Filter.vue:59
 msgctxt "Content/Radio/Button.Label/Verb"
@@ -3495,6 +3735,13 @@ msgctxt "Content/Moderation/Button.Label"
 msgid "Remove filter"
 msgstr "Remover avatar"
 
+#: front/src/components/manage/moderation/DomainsTable.vue:198
+#: front/src/views/admin/moderation/DomainsDetail.vue:39
+#, fuzzy
+msgctxt "Content/Moderation/Action/Verb"
+msgid "Remove from allow-list"
+msgstr "Remover dos favoritos"
+
 #: front/src/components/favorites/TrackFavoriteIcon.vue:26
 msgctxt "Content/Track/Icon.Tooltip/Verb"
 msgid "Remove from favorites"
@@ -3502,43 +3749,104 @@ msgstr "Remover dos favoritos"
 
 #: front/src/views/content/libraries/Quota.vue:38
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded but yet to be processed tracks completely, adding the "
-"corresponding data to your quota."
-msgstr ""
-"Remove as pistas carregadas mas ainda a serem processadas completamente, "
-"adicionando os dados correspondentes à sua quota."
+msgid "Removes uploaded but yet to be processed tracks completely, adding the corresponding data to your quota."
+msgstr "Remove as pistas carregadas mas ainda a serem processadas completamente, adicionando os dados correspondentes à sua quota."
 
 #: front/src/views/content/libraries/Quota.vue:64
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded tracks skipped during the import processes completely, "
-"adding the corresponding data to your quota."
-msgstr ""
-"Remove as pistas carregadas ignoradas durante os processos de importação "
-"completamente, adicionando os dados correspondentes à sua quota."
+msgid "Removes uploaded tracks skipped during the import processes completely, adding the corresponding data to your quota."
+msgstr "Remove as pistas carregadas ignoradas durante os processos de importação completamente, adicionando os dados correspondentes à sua quota."
 
 #: front/src/views/content/libraries/Quota.vue:90
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded tracks that could not be processed by the server "
-"completely, adding the corresponding data to your quota."
+msgid "Removes uploaded tracks that could not be processed by the server completely, adding the corresponding data to your quota."
+msgstr "Remove as pistas carregadas que não puderam ser processadas completamente pelo servidor, adicionando os dados correspondentes à sua quota."
+
+#: front/src/components/audio/PlayButton.vue:94
+#, fuzzy
+msgctxt "*/Queue/Dropdown/Button/Title"
+msgid "Replace current queue"
+msgstr "Adicionar à fila atual"
+
+#: front/src/components/mixins/Report.vue:6 src/components/mixins/Report.vue:7
+msgctxt "*/Moderation/*/Verb"
+msgid "Report @%{ username }…"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:5
+msgctxt "Content/Moderation/Card/Short"
+msgid "Report %{ id }"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:139
+msgctxt "*/Moderation/Message"
+msgid "Report successfully submitted, thank you"
+msgstr ""
+
+#: front/src/components/mixins/Report.vue:36
+#: src/components/mixins/Report.vue:37
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this album…"
+msgstr "Jogar esta pista"
+
+#: front/src/components/mixins/Report.vue:50
+#: src/components/mixins/Report.vue:51
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this artist…"
+msgstr "Jogar esta pista"
+
+#: front/src/components/mixins/Report.vue:72
+#: src/components/mixins/Report.vue:73
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this library…"
+msgstr "Excluir esta biblioteca?"
+
+#: front/src/components/mixins/Report.vue:61
+#: src/components/mixins/Report.vue:62
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this playlist…"
+msgstr "Adicionar a esta playlist"
+
+#: front/src/components/mixins/Report.vue:23
+#: src/components/mixins/Report.vue:24
+#, fuzzy
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this track…"
+msgstr "Jogar esta pista"
+
+#: front/src/components/audio/PlayButton.vue:95
+msgctxt "*/Moderation/*/Button/Label,Verb"
+msgid "Report…"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:117
+msgctxt "Content/*/*/Short"
+msgid "Reported object"
+msgstr ""
+
+#: front/src/views/admin/moderation/Base.vue:5
+#: front/src/views/admin/moderation/ReportsList.vue:3
+#: front/src/views/admin/moderation/ReportsList.vue:208
+msgctxt "*/Moderation/*/Noun"
+msgid "Reports"
 msgstr ""
-"Remove as pistas carregadas que não puderam ser processadas completamente "
-"pelo servidor, adicionando os dados correspondentes à sua quota."
 
-#: front/src/components/auth/SubsonicTokenForm.vue:33
-#: front/src/components/auth/SubsonicTokenForm.vue:36
+#: front/src/components/auth/SubsonicTokenForm.vue:38
+#: front/src/components/auth/SubsonicTokenForm.vue:41
 msgctxt "*/Settings/Button.Label/Verb"
 msgid "Request a new password"
 msgstr "Solicite uma nova senha"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:34
+#: front/src/components/auth/SubsonicTokenForm.vue:39
 msgctxt "Popup/Settings/Title"
 msgid "Request a new Subsonic API password?"
 msgstr "Solicitar uma nova senha da Subsonic API?"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:42
+#: front/src/components/auth/SubsonicTokenForm.vue:47
 msgctxt "Content/Settings/Button.Label/Verb"
 msgid "Request a password"
 msgstr "Solicite uma senha"
@@ -3548,35 +3856,52 @@ msgctxt "Popup/*/Loading.Title"
 msgid "Requesting a fetch…"
 msgstr ""
 
-#: front/src/components/library/EditForm.vue:82
+#: front/src/components/library/EditForm.vue:94
 msgctxt "Content/Library/Button.Label"
-msgid "Reset to initial value: %{ value }"
+msgid "Reset to initial value"
 msgstr ""
 
-#: front/src/components/auth/Login.vue:35 src/views/auth/PasswordReset.vue:4
-#: front/src/views/auth/PasswordReset.vue:53
+#: front/src/components/auth/LoginForm.vue:34
+#: src/views/auth/PasswordReset.vue:4 front/src/views/auth/PasswordReset.vue:53
 msgctxt "*/Login/*/Verb"
 msgid "Reset your password"
 msgstr "Redefinir sua senha"
 
+#: front/src/components/manage/moderation/ReportCard.vue:83
+#, fuzzy
+msgctxt "Content/*/*/Noun"
+msgid "Resolution date"
+msgstr "Data de criação"
+
+#: front/src/components/manage/moderation/ReportCard.vue:218
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Resolve"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:62
+#: front/src/views/admin/moderation/ReportsList.vue:20
+msgctxt "Content/*/*/Short"
+msgid "Resolved"
+msgstr ""
+
 #: front/src/views/content/libraries/FilesTable.vue:223
 msgctxt "Content/Library/Dropdown/Verb"
 msgid "Restart import"
 msgstr "Reinicie a importação"
 
+#: front/src/components/library/EditForm.vue:31
+msgctxt "Content/Library/Button.Label"
+msgid "Restrict to unreviewed edits"
+msgstr ""
+
 #: front/src/components/favorites/List.vue:39
-#: src/components/library/Albums.vue:30
-#: front/src/components/library/Artists.vue:30
+#: src/components/library/Albums.vue:34
+#: front/src/components/library/Artists.vue:34
 #: src/components/library/Radios.vue:52 front/src/views/playlists/List.vue:32
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Results per page"
 msgstr "Resultados por página"
 
-#: front/src/components/library/EditForm.vue:31
-msgctxt "Content/Library/Button.Label"
-msgid "Retrict to unreviewed edits"
-msgstr ""
-
 #: front/src/views/auth/EmailConfirm.vue:17
 msgctxt "Content/Signup/Link/Verb"
 msgid "Return to login"
@@ -3607,52 +3932,54 @@ msgctxt "Content/Moderation/Card.Title/Noun"
 msgid "Rule"
 msgstr "Regra"
 
-#: front/src/components/admin/SettingsGroup.vue:67
+#: front/src/components/About.vue:28 src/components/About.vue:56
+#, fuzzy
+msgctxt "Content/About/Header"
+msgid "Rules"
+msgstr "Regra"
+
+#: front/src/components/admin/SettingsGroup.vue:75
 #: front/src/components/library/radios/Builder.vue:34
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Save"
 msgstr "Salvar"
 
-#: front/src/views/content/remote/Card.vue:175
+#: front/src/views/content/remote/Card.vue:203
 msgctxt "Content/Library/Message"
 msgid "Scan launched"
 msgstr "Análise iniciada"
 
-#: front/src/views/content/remote/Card.vue:67
+#: front/src/views/content/remote/Card.vue:80
 msgctxt "Content/Library/Card.Button.Label/Verb"
 msgid "Scan now"
 msgstr "Scanar agora"
 
-#: front/src/views/content/remote/Card.vue:35
+#: front/src/views/content/remote/Card.vue:48
 msgctxt "Content/Library/Card.List item"
 msgid "Scan pending"
 msgstr "Ascendente"
 
-#: front/src/views/content/remote/Card.vue:176
+#: front/src/views/content/remote/Card.vue:204
 msgctxt "Content/Library/Message"
 msgid "Scan skipped (previous scan is too recent)"
 msgstr "Análise ignorada (a análise anterior é muito recente)"
 
-#: front/src/views/content/remote/Card.vue:47
+#: front/src/views/content/remote/Card.vue:60
 msgctxt "Content/Library/Card.List item"
 msgid "Scanned"
 msgstr "Analisado"
 
-#: front/src/views/content/remote/Card.vue:51
+#: front/src/views/content/remote/Card.vue:64
 msgctxt "Content/Library/Card.List item"
 msgid "Scanned with errors"
 msgstr "Analisado com erros"
 
-#: front/src/views/content/remote/Card.vue:39
+#: front/src/views/content/remote/Card.vue:52
 msgctxt "Content/Library/Card.List item"
 msgid "Scanning… (%{ progress }%)"
 msgstr ""
 
 #: front/src/components/auth/ApplicationForm.vue:22
-msgctxt "Content/Applications/Input.Label/Noun"
-msgid "Scopes"
-msgstr ""
-
 #: front/src/components/auth/Settings.vue:226
 msgctxt "Content/*/*/Noun"
 msgid "Scopes"
@@ -3665,12 +3992,14 @@ msgstr ""
 #: front/src/components/manage/library/ArtistsTable.vue:5
 #: front/src/components/manage/library/EditsCardList.vue:6
 #: front/src/components/manage/library/LibrariesTable.vue:5
+#: front/src/components/manage/library/TagsTable.vue:5
 #: front/src/components/manage/library/TracksTable.vue:5
 #: front/src/components/manage/library/UploadsTable.vue:5
 #: front/src/components/manage/moderation/AccountsTable.vue:5
 #: front/src/components/manage/moderation/DomainsTable.vue:5
 #: front/src/components/manage/users/InvitationsTable.vue:5
 #: front/src/components/manage/users/UsersTable.vue:5
+#: front/src/views/admin/moderation/ReportsList.vue:8
 #: front/src/views/content/libraries/FilesTable.vue:5
 #: src/views/playlists/List.vue:13
 msgctxt "Content/Search/Input.Label/Noun"
@@ -3683,6 +4012,7 @@ msgid "Search a remote library"
 msgstr "Pesquisar uma biblioteca remota"
 
 #: front/src/components/manage/library/EditsCardList.vue:211
+#: front/src/views/admin/moderation/ReportsList.vue:207
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by account, summary, domain…"
 msgstr "Pesquisa por título, artista, domínio…"
@@ -3690,17 +4020,17 @@ msgstr "Pesquisa por título, artista, domínio…"
 #: front/src/components/manage/library/LibrariesTable.vue:191
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by domain, actor, name, description…"
-msgstr "Pesquisa por domínio, nome de utilizador, biografia..."
+msgstr "Pesquisa por domínio, nome de utilizador, biografia…"
 
 #: front/src/components/manage/library/UploadsTable.vue:241
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by domain, actor, name, reference, source…"
-msgstr "Pesquisa por domínio, nome de utilizador, biografia..."
+msgstr "Pesquisa por domínio, nome de utilizador, biografia…"
 
 #: front/src/components/manage/library/ArtistsTable.vue:164
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by domain, name, MusicBrainz ID…"
-msgstr "Pesquisa por domínio, nome de utilizador, biografia..."
+msgstr "Pesquisa por domínio, nome de utilizador, biografia…"
 
 #: front/src/components/manage/library/TracksTable.vue:174
 msgctxt "Content/Search/Input.Placeholder"
@@ -3715,12 +4045,18 @@ msgstr "Pesquisa por título, artista, álbum…"
 #: front/src/components/manage/moderation/AccountsTable.vue:171
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by domain, username, bio…"
-msgstr "Pesquisa por domínio, nome de utilizador, biografia..."
+msgstr "Pesquisa por domínio, nome de utilizador, biografia…"
+
+#: front/src/components/manage/library/TagsTable.vue:165
+#, fuzzy
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by name"
+msgstr "Pesquisar por nome…"
 
-#: front/src/components/manage/moderation/DomainsTable.vue:151
+#: front/src/components/manage/moderation/DomainsTable.vue:168
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by name…"
-msgstr "Pesquisar por nome..."
+msgstr "Pesquisar por nome…"
 
 #: front/src/views/content/libraries/FilesTable.vue:208
 msgctxt "Content/Library/Input.Placeholder"
@@ -3732,12 +4068,12 @@ msgctxt "Content/Admin/Input.Placeholder/Verb"
 msgid "Search by username, e-mail address, code…"
 msgstr "Pesquisa por nome de utilizador, endereço de e-mail, código…"
 
-#: front/src/components/manage/users/UsersTable.vue:163
+#: front/src/components/manage/users/UsersTable.vue:164
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by username, e-mail address, name…"
 msgstr "Pesquisa por nome de utilizador, endereço de e-mail, nome…"
 
-#: front/src/components/audio/SearchBar.vue:20
+#: front/src/components/audio/SearchBar.vue:27
 msgctxt "Sidebar/Search/Input.Placeholder"
 msgid "Search for artists, albums, tracks…"
 msgstr "Procure por artistas, álbuns, pistas…"
@@ -3747,16 +4083,30 @@ msgctxt "Content/Search/Title"
 msgid "Search for some music"
 msgstr "Procure alguma música"
 
-#: front/src/components/library/AlbumBase.vue:57
-#: front/src/components/library/ArtistBase.vue:68
-#: front/src/components/library/TrackBase.vue:76
+#: front/src/components/library/TagsSelector.vue:6
+#, fuzzy
+msgctxt "*/Dropdown/Placeholder/Verb"
+msgid "Search for tags…"
+msgstr "Pesquisar por nome…"
+
+#: front/src/components/library/AlbumBase.vue:66
+#: front/src/components/library/ArtistBase.vue:77
+#: front/src/components/library/TrackBase.vue:82
+#, fuzzy
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Search on Discogs"
+msgstr "Procure alguma música"
+
+#: front/src/components/library/AlbumBase.vue:58
+#: front/src/components/library/ArtistBase.vue:69
+#: front/src/components/library/TrackBase.vue:74
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Search on Wikipedia"
 msgstr "Procurar em Wikipedia"
 
 #: front/src/components/library/Library.vue:35
-#: src/views/admin/library/Base.vue:32
-#: front/src/views/admin/moderation/Base.vue:22
+#: src/views/admin/library/Base.vue:35
+#: front/src/views/admin/moderation/Base.vue:44
 #: src/views/admin/users/Base.vue:21 front/src/views/content/Base.vue:19
 msgctxt "Menu/*/Hidden text"
 msgid "Secondary menu"
@@ -3767,6 +4117,26 @@ msgctxt "Content/Admin/Menu.Title"
 msgid "Sections"
 msgstr "Secções"
 
+#: front/src/components/ShortcutsModal.vue:108
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek backwards 30s"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:100
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek backwards 5s"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:112
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek forwards 30s"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:104
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek forwards 5s"
+msgstr ""
+
 #: front/src/components/library/radios/Builder.vue:46
 msgctxt "Content/Radio/Dropdown.Placeholder/Verb"
 msgid "Select a filter"
@@ -3785,9 +4155,14 @@ msgctxt "Content/*/Link/Verb"
 msgid "Select only current page"
 msgstr "Selecione apenas a página atual"
 
-#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:108
-#: front/src/components/manage/users/UsersTable.vue:181
-#: front/src/views/admin/moderation/AccountsDetail.vue:506
+#: front/src/components/Home.vue:43
+msgctxt "Content/Home/Link"
+msgid "Server rules"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:112
+#: front/src/components/manage/users/UsersTable.vue:182
+#: front/src/views/admin/moderation/AccountsDetail.vue:526
 msgctxt "*/*/*/Noun"
 msgid "Settings"
 msgstr "Configurações"
@@ -3809,18 +4184,25 @@ msgstr "Compartilhe o link"
 
 #: front/src/views/content/libraries/Detail.vue:15
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Share this link with other users so they can request access to your library."
-msgstr ""
-"Compartilhe este link com outros usuários para que eles possam solicitar "
-"acesso à sua biblioteca."
+msgid "Share this link with other users so they can request access to your library."
+msgstr "Compartilhe este link com outros usuários para que eles possam solicitar acesso à sua biblioteca."
 
 #: front/src/views/content/libraries/Detail.vue:14
-#: front/src/views/content/remote/Card.vue:77
+#: front/src/views/content/remote/Card.vue:90
 msgctxt "Content/Library/Title"
 msgid "Sharing link"
 msgstr "Link de compartilhamento"
 
+#: front/src/components/audio/EmbedWizard.vue:5
+msgctxt "Content/Embed/Message"
+msgid "Sharing will not work because this pod doesn't allow anonymous users to access content."
+msgstr ""
+
+#: front/src/components/About.vue:156
+msgctxt "*/*/*/Verb"
+msgid "Show"
+msgstr ""
+
 #: front/src/components/audio/album/Card.vue:38
 #, fuzzy
 msgctxt "Content/Album/Card.Link/Verb"
@@ -3829,11 +4211,11 @@ msgid_plural "Show %{ count } more tracks"
 msgstr[0] "%{ count } tema"
 msgstr[1] "%{ count } temas"
 
-#: front/src/components/audio/artist/Card.vue:30
+#: front/src/components/tags/List.vue:11
 #, fuzzy
-msgctxt "Content/Artist/Card.Link"
-msgid "Show 1 more album"
-msgid_plural "Show %{ count } more albums"
+msgctxt "Content/*/Button/Label/Verb"
+msgid "Show 1 more tag"
+msgid_plural "Show %{ count } more tags"
 msgstr[0] "Mostrar mais 1 álbum"
 msgstr[1] "Mostrar mais %{ count } albums"
 
@@ -3842,17 +4224,28 @@ msgctxt "Content/Library/Button.Label"
 msgid "Show all edits"
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:42
+#: front/src/components/ShortcutsModal.vue:60
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Show available keyboard shortcuts"
 msgstr "Mostrar atalhos de teclado disponíveis"
 
-#: front/src/views/Notifications.vue:7
+#: front/src/components/common/ExpandableDiv.vue:7
+msgctxt "*/*/Button,Label"
+msgid "Show less"
+msgstr ""
+
+#: front/src/components/common/ExpandableDiv.vue:8
+#, fuzzy
+msgctxt "*/*/Button,Label"
+msgid "Show more"
+msgstr "Mostrar mais 1 álbum"
+
+#: front/src/views/Notifications.vue:72
 msgctxt "Content/Notifications/Form.Label/Verb"
 msgid "Show read notifications"
 msgstr "Mostrar notificações antigas"
 
-#: front/src/components/forms/PasswordInput.vue:26
+#: front/src/components/forms/PasswordInput.vue:42
 msgctxt "Content/Settings/Button.Tooltip/Verb"
 msgid "Show/hide password"
 msgstr "Mostrar/ocultar senha"
@@ -3861,56 +4254,64 @@ msgstr "Mostrar/ocultar senha"
 #: front/src/components/manage/library/ArtistsTable.vue:84
 #: front/src/components/manage/library/EditsCardList.vue:72
 #: front/src/components/manage/library/LibrariesTable.vue:110
+#: front/src/components/manage/library/TagsTable.vue:79
 #: front/src/components/manage/library/TracksTable.vue:95
 #: front/src/components/manage/library/UploadsTable.vue:144
 #: front/src/components/manage/moderation/AccountsTable.vue:88
-#: front/src/components/manage/moderation/DomainsTable.vue:74
+#: front/src/components/manage/moderation/DomainsTable.vue:85
 #: front/src/components/manage/users/InvitationsTable.vue:76
-#: front/src/components/manage/users/UsersTable.vue:87
+#: front/src/components/manage/users/UsersTable.vue:88
 #: front/src/views/content/libraries/FilesTable.vue:117
 msgctxt "Content/*/Paragraph"
 msgid "Showing results %{ start }-%{ end } on %{ total }"
 msgstr "Mostrando resultados %{ start }-%{ end } em %{ total }"
 
-#: front/src/components/ShortcutsModal.vue:83
+#: front/src/components/ShortcutsModal.vue:140
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Shuffle queue"
 msgstr "Fila de embaralhamento"
 
-#: front/src/components/audio/Player.vue:641
+#: front/src/components/audio/Player.vue:667
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Shuffle your queue"
 msgstr "Embaralhe sua fila"
 
-#: front/src/components/auth/Signup.vue:97
+#: front/src/components/Home.vue:103
+#, fuzzy
+msgctxt "*/Signup/Title"
+msgid "Sign up"
+msgstr "Inscrever-se"
+
+#: front/src/views/auth/Signup.vue:37
 msgctxt "*/Signup/Title"
 msgid "Sign Up"
 msgstr "Inscrever-se"
 
+#: front/src/components/Home.vue:107
+msgctxt "Content/Home/Paragraph"
+msgid "Sign up now to keep a track of your favorites, create playlists, discover new content and much more!"
+msgstr ""
+
 #: front/src/components/manage/users/UsersTable.vue:40
 msgctxt "Content/Admin/Table.Label/Short, Noun (Value is a date)"
 msgid "Sign-up"
 msgstr "Inscrever-se"
 
-#: front/src/components/mixins/Translations.vue:57
-#: front/src/views/admin/moderation/AccountsDetail.vue:197
-#: front/src/components/mixins/Translations.vue:58
+#: front/src/components/mixins/Translations.vue:69
+#: front/src/views/admin/moderation/AccountsDetail.vue:198
+#: front/src/components/mixins/Translations.vue:70
 msgctxt "Content/Admin/Table.Label/Noun"
 msgid "Sign-up date"
 msgstr "Data de inscrição"
 
-#: front/src/components/manage/library/UploadsTable.vue:65
-#: front/src/views/admin/library/UploadDetail.vue:219
-msgctxt "Content/*/*/Noun"
-msgid "Size"
-msgstr "Tamanho"
-
 #: front/src/components/library/FileUpload.vue:94
 #: front/src/components/library/TrackDetail.vue:39
-#: front/src/components/mixins/Translations.vue:54
+#: front/src/components/manage/library/UploadsTable.vue:65
+#: front/src/components/mixins/Translations.vue:66
+#: front/src/views/admin/library/UploadDetail.vue:219
 #: front/src/views/content/libraries/FilesTable.vue:61
-#: front/src/components/mixins/Translations.vue:55
-msgctxt "Content/Library/*/in MB"
+#: front/src/components/mixins/Translations.vue:67
+msgctxt "Content/*/*/Noun"
 msgid "Size"
 msgstr "Tamanho"
 
@@ -3927,7 +4328,7 @@ msgctxt "Content/Library/Label"
 msgid "Skipped files"
 msgstr "Arquivos ignorados"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:89
+#: front/src/views/admin/moderation/DomainsDetail.vue:126
 msgctxt "Content/Moderation/Table.Label"
 msgid "Software"
 msgstr "Software"
@@ -3942,93 +4343,65 @@ msgctxt "Content/*/Paragraph"
 msgid "Sorry, the page you asked for does not exist:"
 msgstr "Desculpe, a página que você pediu não existe:"
 
-#: front/src/components/Footer.vue:49
+#: front/src/components/Footer.vue:57
 msgctxt "Footer/*/List item.Link"
 msgid "Source code"
 msgstr ""
 
 #: front/src/components/auth/Profile.vue:23
-#: front/src/components/manage/users/UsersTable.vue:70
+#: front/src/components/manage/users/UsersTable.vue:71
 msgctxt "Content/Profile/User role"
 msgid "Staff member"
 msgstr "Membro da equipe"
 
-#: front/src/components/audio/PlayButton.vue:23
+#: front/src/components/audio/PlayButton.vue:27
 #: src/components/radios/Button.vue:4
 msgctxt "*/Queue/Button.Label/Short, Verb"
 msgid "Start radio"
 msgstr "Pare o rádio"
 
-#: front/src/views/admin/Settings.vue:86
-msgctxt "Content/Admin/Menu"
+#: front/src/components/About.vue:170 src/components/Home.vue:53
+#: front/src/views/admin/Settings.vue:87
+#, fuzzy
+msgctxt "Content/Home/Header"
 msgid "Statistics"
 msgstr "Estatisticas"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:490
+#: front/src/views/admin/moderation/AccountsDetail.vue:510
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this account"
-msgstr ""
-"As estatísticas são calculadas a partir de atividade e conteúdo conhecidos "
-"em sua instância, e não refletem a atividade geral para esta conta"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this account"
+msgstr "As estatísticas são calculadas a partir de atividade e conteúdo conhecidos em sua instância, e não refletem a atividade geral para esta conta"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:371
+#: front/src/views/admin/moderation/DomainsDetail.vue:418
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this domain"
-msgstr ""
-"As estatísticas são calculadas a partir da actividade e conteúdo conhecidos "
-"na sua instância e não reflectem a actividade geral para este domínio"
-
-#: front/src/views/admin/library/AlbumDetail.vue:329
-#: front/src/views/admin/library/ArtistDetail.vue:328
-#: front/src/views/admin/library/LibraryDetail.vue:316
-#: front/src/views/admin/library/TrackDetail.vue:371
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this domain"
+msgstr "As estatísticas são calculadas a partir da actividade e conteúdo conhecidos na sua instância e não reflectem a actividade geral para este domínio"
+
+#: front/src/views/admin/library/AlbumDetail.vue:346
+#: front/src/views/admin/library/ArtistDetail.vue:345
+#: front/src/views/admin/library/LibraryDetail.vue:356
+#: front/src/views/admin/library/TagDetail.vue:210
+#: front/src/views/admin/library/TrackDetail.vue:389
 #: front/src/views/admin/library/UploadDetail.vue:335
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this object"
-msgstr ""
-"As estatísticas são calculadas a partir de atividade e conteúdo conhecidos "
-"em sua instância, e não refletem a atividade geral para esta conta"
-
-#: front/src/views/admin/moderation/DomainsDetail.vue:115
-msgctxt "Content/Moderation/Table.Label (Value is Error message)"
-msgid "Status"
-msgstr "Estado"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this object"
+msgstr "As estatísticas são calculadas a partir de atividade e conteúdo conhecidos em sua instância, e não refletem a atividade geral para esta conta"
 
 #: front/src/components/library/FileUpload.vue:95
-msgctxt "Content/Library/Table.Label (Value is Uploading/Uploaded/Error)"
-msgid "Status"
-msgstr "Estado"
-
-#: front/src/views/content/libraries/Detail.vue:28
-msgctxt "Content/Library.Federation/Table.Label (Value is Approved/Rejected)"
-msgid "Status"
-msgstr "Estado"
-
+#: front/src/components/manage/library/EditsCardList.vue:12
+#: front/src/components/manage/moderation/ReportCard.vue:57
 #: front/src/components/manage/users/InvitationsTable.vue:17
 #: front/src/components/manage/users/InvitationsTable.vue:39
-msgctxt "Content/Admin/*/Noun (Value is Used/Not used)"
-msgid "Status"
-msgstr "Estado"
-
 #: front/src/components/manage/users/UsersTable.vue:43
-msgctxt "Content/Admin/Table.Label/Noun (Value is Regular user/Admin)"
-msgid "Status"
-msgstr "Estado"
-
-#: front/src/components/manage/library/EditsCardList.vue:12
-msgctxt ""
-"Content/Search/Dropdown.Label (Value is All/Pending "
-"review/Approved/Rejected)"
+#: front/src/views/admin/moderation/DomainsDetail.vue:152
+#: front/src/views/admin/moderation/ReportsList.vue:14
+#: front/src/views/content/libraries/Detail.vue:28
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Status"
 msgstr "Estado"
 
-#: front/src/components/Sidebar.vue:174 src/components/radios/Button.vue:3
+#: front/src/components/Sidebar.vue:178 src/components/radios/Button.vue:3
 msgctxt "*/Player/Button.Label/Short, Verb"
 msgid "Stop radio"
 msgstr "Pare o rádio"
@@ -4038,7 +4411,7 @@ msgctxt "*/*/Button.Label/Verb"
 msgid "Submit"
 msgstr "Enviar"
 
-#: front/src/components/library/EditForm.vue:98
+#: front/src/components/library/EditForm.vue:110
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Submit and apply edit"
 msgstr ""
@@ -4048,12 +4421,24 @@ msgctxt "Content/Library/Button.Label"
 msgid "Submit another edit"
 msgstr ""
 
-#: front/src/components/library/EditForm.vue:99
+#: front/src/components/moderation/ReportModal.vue:64
+#, fuzzy
+msgctxt "Popup/*/Button.Label"
+msgid "Submit report"
+msgstr "Enviar"
+
+#: front/src/components/library/EditForm.vue:111
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Submit suggestion"
 msgstr ""
 
-#: front/src/views/admin/Settings.vue:85
+#: front/src/components/manage/moderation/ReportCard.vue:17
+#, fuzzy
+msgctxt "Content/Moderation/*"
+msgid "Submitted by"
+msgstr "Enviar"
+
+#: front/src/views/admin/Settings.vue:86
 msgctxt "Content/Admin/Menu"
 msgid "Subsonic"
 msgstr "Subsonic"
@@ -4093,16 +4478,21 @@ msgctxt "Content/Library/Tab.Title/Short"
 msgid "Summary"
 msgstr "Sumário"
 
-#: front/src/components/library/EditForm.vue:87
+#: front/src/components/library/EditForm.vue:99
 msgctxt "*/*/*"
 msgid "Summary (optional)"
 msgstr ""
 
-#: front/src/components/Footer.vue:39
+#: front/src/components/Footer.vue:47
 msgctxt "Footer/*/Listitem.Link"
 msgid "Support forum"
 msgstr "Fórum de apoio"
 
+#: front/src/views/Notifications.vue:10
+msgctxt "Content/Notifications/Header"
+msgid "Support this Funkwhale pod"
+msgstr ""
+
 #: front/src/components/library/FileUpload.vue:85
 msgctxt "Content/Library/Paragraph"
 msgid "Supported extensions: %{ extensions }"
@@ -4113,26 +4503,47 @@ msgctxt "Content/Playlist/Paragraph"
 msgid "Syncing changes to server…"
 msgstr "Sincronizar mudanças no servidor…"
 
-#: front/src/components/audio/EmbedWizard.vue:25
+#: front/src/components/audio/SearchBar.vue:35
+msgctxt "*/*/*/Noun"
+msgid "Tag"
+msgstr ""
+
+#: front/src/views/admin/library/TagDetail.vue:61
+#, fuzzy
+msgctxt "Content/Moderation/Title"
+msgid "Tag data"
+msgstr "Título da música"
+
+#: front/src/components/library/Albums.vue:23
+#: src/components/library/Artists.vue:15
+#: front/src/views/admin/library/Base.vue:23
+#: src/views/admin/library/TagsList.vue:24 front/src/edits.js:24
+#: src/edits.js:50 src/edits.js:91 src/entities.js:120
+msgctxt "*/*/*/Noun"
+msgid "Tags"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:44
+#: front/src/components/mixins/Translations.vue:45
+#, fuzzy
+msgctxt "Content/Moderation/Dropdown"
+msgid "Takedown request"
+msgstr "Solicitações pendentes"
+
+#: front/src/components/About.vue:35 src/components/About.vue:61
+msgctxt "Content/About/Header"
+msgid "Terms and privacy policy"
+msgstr ""
+
+#: front/src/components/audio/EmbedWizard.vue:35
 #: front/src/components/common/CopyInput.vue:3
 msgctxt "Content/*/Paragraph"
 msgid "Text copied to clipboard!"
 msgstr "Texto copiado para a área de transferência!"
 
-#: front/src/components/Home.vue:26
-msgctxt "Content/Home/Paragraph"
-msgid ""
-"That's simple: we loved Grooveshark and we want to build something even "
-"better."
-msgstr ""
-"Isso é simples: nós amamos o Grooveshark e queremos construir algo ainda "
-"melhor."
-
-#: front/src/views/admin/library/AlbumDetail.vue:75
+#: front/src/views/admin/library/AlbumDetail.vue:81
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The album will be removed, as well as associated uploads, tracks, favorites "
-"and listening history. This action is irreversible."
+msgid "The album will be removed, as well as associated uploads, tracks, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/components/auth/Authorize.vue:39
@@ -4140,19 +4551,15 @@ msgctxt "Content/Auth/Paragraph"
 msgid "The application is also requesting the following unknown permissions:"
 msgstr ""
 
-#: front/src/views/admin/library/ArtistDetail.vue:74
+#: front/src/views/admin/library/ArtistDetail.vue:79
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The artist will be removed, as well as associated uploads, tracks, albums, "
-"favorites and listening history. This action is irreversible."
+msgid "The artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible."
 msgstr ""
 
-#: front/src/components/Footer.vue:53
+#: front/src/components/Footer.vue:61
 msgctxt "Footer/*/List item.Link"
 msgid "The funkwhale logo was kindly designed and provided by Francis Gading."
-msgstr ""
-"O logótipo funkwhale foi gentilmente projetado e fornecido por Francis "
-"Gading."
+msgstr "O logótipo funkwhale foi gentilmente projetado e fornecido por Francis Gading."
 
 #: front/src/components/SetInstanceModal.vue:8
 msgctxt "Popup/Instance/Error message.List item"
@@ -4161,45 +4568,39 @@ msgstr ""
 
 #: front/src/views/content/libraries/Form.vue:34
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"The library and all its tracks will be deleted. This can not be undone."
-msgstr ""
-"A biblioteca e todas as suas pistas serão removidas. Isto não pode ser "
-"desfeito."
+msgid "The library and all its tracks will be deleted. This can not be undone."
+msgstr "A biblioteca e todas as suas pistas serão removidas. Isto não pode ser desfeito."
 
 #: front/src/views/admin/library/LibraryDetail.vue:61
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The library will be removed, as well as associated uploads, and follows. "
-"This action is irreversible."
+msgid "The library will be removed, as well as associated uploads, and follows. This action is irreversible."
 msgstr ""
 
 #: front/src/components/library/ImportStatusModal.vue:140
 msgctxt "Popup/Import/Error.Label"
-msgid ""
-"The metadata included in the file is invalid or some mandatory fields are "
-"missing."
+msgid "The metadata included in the file is invalid or some mandatory fields are missing."
 msgstr ""
 
 #: front/src/components/library/FileUpload.vue:38
 msgctxt "Content/Library/List item"
 msgid "The music files you are uploading are tagged properly."
-msgstr ""
-"Os arquivos de música que você está enviando são marcados corretamente:"
+msgstr "Os arquivos de música que você está enviando são marcados corretamente:"
 
 #: front/src/components/audio/Player.vue:65
 msgctxt "Sidebar/Player/Error message.Paragraph"
 msgid "The next track will play automatically in a few seconds…"
-msgstr "A próxima pista será jogada automaticamente em poucos segundos..."
+msgstr "A próxima pista será jogada automaticamente em poucos segundos…"
 
-#: front/src/components/Home.vue:116
-msgctxt "Content/Home/List item"
-msgid ""
-"The plaform is free and open-source, you can install it and modify it "
-"without worries"
+#: front/src/components/manage/moderation/NotesThread.vue:27
+#, fuzzy
+msgctxt "Content/Moderation/Paragraph"
+msgid "The note will be removed. This action is irreversible."
+msgstr "Esta acção é irreversível."
+
+#: front/src/components/manage/moderation/ReportCard.vue:120
+msgctxt "Content/Moderation/Message"
+msgid "The object associated with this report was deleted."
 msgstr ""
-"A plataforma é gratuita e open-source, você pode instalá-lo e modificá-lo "
-"sem preocupações"
 
 #: front/src/components/playlists/Form.vue:14
 msgctxt "Content/Playlist/Error message.Title"
@@ -4213,46 +4614,43 @@ msgstr ""
 
 #: front/src/components/federation/FetchButton.vue:13
 msgctxt "Popup/*/Message.Content"
-msgid ""
-"The remote server answered, but returned data was unsupported by Funkwhale."
+msgid "The remote server answered, but returned data was unsupported by Funkwhale."
 msgstr ""
 
 #: front/src/components/federation/FetchButton.vue:44
 msgctxt "*/*/Error"
-msgid "The remote server didn't answered fast enough"
+msgid "The remote server didn't respond quickly enough"
 msgstr ""
 
 #: front/src/components/federation/FetchButton.vue:50
 msgctxt "*/*/Error"
-msgid "The return server returned invalid JSON or JSON-LD data"
+msgid "The remote server returned invalid JSON or JSON-LD data"
 msgstr ""
 
 #: front/src/components/manage/library/AlbumsTable.vue:189
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected albums will be removed, as well as associated tracks, uploads, "
-"favorites and listening history. This action is irreversible."
+msgid "The selected albums will be removed, as well as associated tracks, uploads, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/components/manage/library/ArtistsTable.vue:179
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected artist will be removed, as well as associated uploads, tracks, "
-"albums, favorites and listening history. This action is irreversible."
+msgid "The selected artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/components/manage/library/LibrariesTable.vue:206
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected library will be removed, as well as associated uploads and "
-"follows. This action is irreversible."
+msgid "The selected library will be removed, as well as associated uploads and follows. This action is irreversible."
 msgstr ""
 
+#: front/src/components/manage/library/TagsTable.vue:180
+#, fuzzy
+msgctxt "Popup/*/Paragraph"
+msgid "The selected tag will be removed and unlinked with existing content, if any. This action is irreversible."
+msgstr "Esta acção é irreversível."
+
 #: front/src/components/manage/library/TracksTable.vue:189
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected tracks will be removed, as well as associated uploads, "
-"favorites and listening history. This action is irreversible."
+msgid "The selected tracks will be removed, as well as associated uploads, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/components/manage/library/UploadsTable.vue:256
@@ -4272,10 +4670,15 @@ msgstr "A API Subsonic não está disponível nesta instância do Funkwhale."
 
 #: front/src/components/library/EditCard.vue:96
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"The suggestion will be completely removed, this action is irreversible."
+msgid "The suggestion will be completely removed, this action is irreversible."
 msgstr ""
 
+#: front/src/views/admin/library/TagDetail.vue:44
+#, fuzzy
+msgctxt "Content/Moderation/Paragraph"
+msgid "The tag will be removed and unlinked from any existing entity. This action is irreversible."
+msgstr "Esta acção é irreversível."
+
 #: front/src/components/playlists/PlaylistModal.vue:34
 msgctxt "Popup/Playlist/Error message.Title"
 msgid "The track can't be added to a playlist"
@@ -4286,11 +4689,9 @@ msgctxt "Sidebar/Player/Error message.Title"
 msgid "The track cannot be loaded"
 msgstr ""
 
-#: front/src/views/admin/library/TrackDetail.vue:74
+#: front/src/views/admin/library/TrackDetail.vue:80
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The track will be removed, as well as associated uploads, favorites and "
-"listening history. This action is irreversible."
+msgid "The track will be removed, as well as associated uploads, favorites and listening history. This action is irreversible."
 msgstr ""
 
 #: front/src/views/admin/library/UploadDetail.vue:68
@@ -4306,9 +4707,7 @@ msgstr "Os arquivos de música enviados estão no formato OGG, Flac ou MP3"
 #: front/src/views/content/Home.vue:4
 msgctxt "Content/Library/Paragraph"
 msgid "There are various ways to grab new content and make it available here."
-msgstr ""
-"Existem várias maneiras de obter novos conteúdos e torná-los disponíveis "
-"aqui."
+msgstr "Existem várias maneiras de obter novos conteúdos e torná-los disponíveis aqui."
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:66
 msgctxt "Popup/Moderation/Paragraph"
@@ -4325,22 +4724,37 @@ msgctxt "Content/Artist/Paragraph"
 msgid "This artist is present in the following libraries:"
 msgstr "Este artista está presente nas seguintes bibliotecas:"
 
+#: front/src/components/manage/moderation/DomainsTable.vue:169
+#, fuzzy
+msgctxt "Content/Moderation/Popup"
+msgid "This domain is present in your allow-list"
+msgstr "Este artista está presente nas seguintes bibliotecas:"
+
 #: front/src/views/admin/moderation/AccountsDetail.vue:84
-#: front/src/views/admin/moderation/DomainsDetail.vue:48
+#: front/src/views/admin/moderation/DomainsDetail.vue:76
 msgctxt "Content/Moderation/Card.Title"
 msgid "This domain is subject to specific moderation rules"
 msgstr "Este domínio está sujeito a regras de moderação específicas"
 
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:16
+#, fuzzy
+msgctxt "Content/Moderation/Card.Title"
+msgid "This entity is subject to specific moderation rules"
+msgstr "Este domínio está sujeito a regras de moderação específicas"
+
 #: front/src/views/content/Home.vue:9
 msgctxt "Content/Library/Paragraph"
 msgid "This instance offers up to %{quota} of storage space for every user."
+msgstr "Esta instância oferece até %{quota} de espaço de memória para cada usuário."
+
+#: front/src/components/auth/Settings.vue:300
+msgctxt "Popup/Settings/Paragraph"
+msgid "This is irreversible and will permanently remove your data from our servers. You will we immediatly logged out."
 msgstr ""
-"Esta instância oferece até %{quota} de espaço de memória para cada usuário."
 
 #: front/src/components/auth/Settings.vue:165
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"This is the list of applications that have access to your account data."
+msgid "This is the list of applications that have access to your account data."
 msgstr ""
 
 #: front/src/components/auth/Settings.vue:218
@@ -4358,28 +4772,20 @@ msgctxt "Content/Library/Input.Placeholder"
 msgid "This library contains my personal music, I hope you like it."
 msgstr "Esta biblioteca contém minha música pessoal, espero que você goste."
 
-#: front/src/views/content/remote/Card.vue:141
+#: front/src/views/content/remote/Card.vue:169
 msgctxt "Content/Library/Card.Help text"
-msgid ""
-"This library is private and your approval from its owner is needed to access"
-" its content"
-msgstr ""
-"Esta biblioteca é privada e sua aprovação do proprietário é necessária para "
-"acessar seu conteúdo"
+msgid "This library is private and your approval from its owner is needed to access its content"
+msgstr "Esta biblioteca é privada e sua aprovação do proprietário é necessária para acessar seu conteúdo"
 
-#: front/src/views/content/remote/Card.vue:142
+#: front/src/views/content/remote/Card.vue:170
 msgctxt "Content/Library/Card.Help text"
 msgid "This library is public and you can access its content freely"
 msgstr "Esta biblioteca é pública e você pode acessar seu conteúdo livremente"
 
 #: front/src/components/common/ActionTable.vue:47
 msgctxt "Modal/*/Paragraph"
-msgid ""
-"This may affect a lot of elements or have irreversible consequences, please "
-"double check this is really what you want."
-msgstr ""
-"Isso pode afetar muitos elementos ou ter consequências irreversíveis, por "
-"favor, verifique se isso é realmente o que você quer."
+msgid "This may affect a lot of elements or have irreversible consequences, please double check this is really what you want."
+msgstr "Isso pode afetar muitos elementos ou ter consequências irreversíveis, por favor, verifique se isso é realmente o que você quer."
 
 #: front/src/components/library/AlbumEdit.vue:8
 #: front/src/components/library/ArtistEdit.vue:8
@@ -4388,6 +4794,11 @@ msgctxt "Content/*/Message"
 msgid "This object is managed by another server, you cannot edit it."
 msgstr ""
 
+#: front/src/components/Home.vue:87
+msgctxt "Content/Home/Paragraph"
+msgid "This pod runs Funkwhale, a community-driven project that lets you listen and share music and audio within a decentralized, open network."
+msgstr ""
+
 #: front/src/components/library/FileUpload.vue:51
 msgctxt "Content/Library/Paragraph"
 msgid "This reference will be used to group imported files together."
@@ -4395,17 +4806,15 @@ msgstr "Esta referência será usada para agrupar arquivos importados."
 
 #: front/src/components/mixins/Translations.vue:33
 #: front/src/components/mixins/Translations.vue:34
+#, fuzzy
 msgctxt "Content/Library/Help text"
-msgid "This track could not be processed, please it is tagged correctly"
-msgstr ""
-"Não foi possível processar esta pista, certifique-se de que está "
-"correctamente etiquetada"
+msgid "This track could not be processed, please make sure it is tagged correctly"
+msgstr "Não foi possível processar esta pista, certifique-se de que está correctamente etiquetada"
 
 #: front/src/components/mixins/Translations.vue:29
 #: front/src/components/mixins/Translations.vue:30
 msgctxt "Content/Library/Help text"
-msgid ""
-"This track has been uploaded, but hasn't been processed by the server yet"
+msgid "This track has been uploaded, but hasn't been processed by the server yet"
 msgstr "Pista carregada, mas ainda não tratada pelo servidor"
 
 #: front/src/components/mixins/Translations.vue:25
@@ -4414,18 +4823,17 @@ msgctxt "Content/Library/Help text"
 msgid "This track is already present in one of your libraries"
 msgstr "Pista já disponível em uma de suas bibliotecas"
 
-#: front/src/components/audio/PlayButton.vue:85
+#: front/src/components/audio/PlayButton.vue:103
 msgctxt "*/Queue/Button/Title"
 msgid "This track is not available in any library you have access to"
-msgstr ""
-"Esta pista não está disponível em nenhuma biblioteca a que tenha acesso"
+msgstr "Esta pista não está disponível em nenhuma biblioteca a que tenha acesso"
 
 #: front/src/components/library/TrackDetail.vue:82
 msgctxt "Content/Track/Paragraph"
 msgid "This track is present in the following libraries:"
 msgstr "Esta música está presente nas seguintes bibliotecas:"
 
-#: front/src/views/playlists/Detail.vue:38
+#: front/src/views/playlists/Detail.vue:46
 msgctxt "Popup/Playlist/Paragraph"
 msgid "This will completely delete this playlist and cannot be undone."
 msgstr "Isso excluirá completamente essa playlist e não poderá ser desfeito."
@@ -4435,77 +4843,74 @@ msgctxt "Popup/Radio/Paragraph"
 msgid "This will completely delete this radio and cannot be undone."
 msgstr "Isto irá remover completamente o rádio e não pode ser cancelado."
 
-#: front/src/components/auth/SubsonicTokenForm.vue:50
+#: front/src/components/auth/SubsonicTokenForm.vue:55
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will completely disable access to the Subsonic API using from account."
+msgid "This will completely disable access to the Subsonic API using from account."
+msgstr "Isso desativará completamente o acesso à API do Subsonic usando a conta."
+
+#: front/src/components/manage/moderation/ReportCard.vue:359
+msgctxt "Content/Moderation/Popup,Paragraph"
+msgid "This will delete the object associated with this report and mark the report as resolved. The deletion is irreversible."
 msgstr ""
-"Isso desativará completamente o acesso à API do Subsonic usando a conta."
 
-#: front/src/components/auth/SubsonicTokenForm.vue:35
+#: front/src/components/auth/SubsonicTokenForm.vue:40
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will log you out from existing devices that use the current password."
-msgstr ""
-"Isto irá desconectá-lo a partir de dispositivos existentes que usam a senha "
-"atual."
+msgid "This will log you out from existing devices that use the current password."
+msgstr "Isto irá desconectá-lo a partir de dispositivos existentes que usam a senha atual."
 
 #: front/src/components/auth/Settings.vue:253
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will permanently delete the application and all the associated tokens."
+msgid "This will permanently delete the application and all the associated tokens."
 msgstr "Isso excluirá completamente essa playlist e não poderá ser desfeito."
 
 #: front/src/components/auth/Settings.vue:194
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will prevent this application from accessing the service on your "
-"behalf."
+msgid "This will prevent this application from accessing the service on your behalf."
 msgstr ""
 
 #: front/src/components/playlists/Editor.vue:54
 msgctxt "Popup/Playlist/Paragraph"
 msgid "This will remove all tracks from this playlist and cannot be undone."
-msgstr ""
-"Isso removerá todas as músicas dessa playlist e não poderá ser desfeito."
-
-#: front/src/views/admin/library/AlbumDetail.vue:99
-#: front/src/views/admin/library/TrackDetail.vue:98 src/edits.js:21
-#: src/edits.js:39
-msgctxt "*/*/*/Noun"
-msgid "Title"
-msgstr "Título"
+msgstr "Isso removerá todas as músicas dessa playlist e não poderá ser desfeito."
 
 #: front/src/components/audio/track/Table.vue:7
-#: front/src/views/content/libraries/FilesTable.vue:55
-msgctxt "Content/Track/*/Noun"
-msgid "Title"
-msgstr "Título"
-
 #: front/src/components/manage/library/AlbumsTable.vue:39
 #: front/src/components/manage/library/TracksTable.vue:39
-msgctxt "*/*/*"
+#: front/src/views/admin/library/AlbumDetail.vue:105
+#: front/src/views/admin/library/TrackDetail.vue:104
+#: front/src/views/content/libraries/FilesTable.vue:55 src/edits.js:36
+#: front/src/edits.js:62
+msgctxt "*/*/*/Noun"
 msgid "Title"
 msgstr "Título"
 
 #: front/src/components/SetInstanceModal.vue:16
 msgctxt "Popup/Instance/Paragraph"
-msgid ""
-"To continue, please select the Funkwhale instance you want to connect to. "
-"Enter the address directly, or select one of the suggested choices."
+msgid "To continue, please select the Funkwhale instance you want to connect to. Enter the address directly, or select one of the suggested choices."
 msgstr ""
 
-#: front/src/components/ShortcutsModal.vue:79
+#: front/src/components/ShortcutsModal.vue:148
+#, fuzzy
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle favorite"
+msgstr "1 preferida"
+
+#: front/src/components/ShortcutsModal.vue:132
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle mute"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:136
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Toggle queue looping"
 msgstr "Alternar looping de filas"
 
-#: front/src/views/admin/library/AlbumDetail.vue:222
-#: front/src/views/admin/library/ArtistDetail.vue:211
-#: front/src/views/admin/library/LibraryDetail.vue:200
-#: front/src/views/admin/library/TrackDetail.vue:274
-#: front/src/views/admin/moderation/AccountsDetail.vue:317
-#: front/src/views/admin/moderation/DomainsDetail.vue:225
+#: front/src/views/admin/library/AlbumDetail.vue:238
+#: front/src/views/admin/library/ArtistDetail.vue:226
+#: front/src/views/admin/library/LibraryDetail.vue:219
+#: front/src/views/admin/library/TrackDetail.vue:290
+#: front/src/views/admin/moderation/AccountsDetail.vue:329
+#: front/src/views/admin/moderation/DomainsDetail.vue:262
 msgctxt "Content/Moderation/Table.Label"
 msgid "Total size"
 msgstr "Tamanho total"
@@ -4515,20 +4920,18 @@ msgctxt "Content/Library/Card.Help text"
 msgid "Total size of the files in this library"
 msgstr "Tamanho total dos arquivos nesta biblioteca"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:105
+#: front/src/views/admin/moderation/DomainsDetail.vue:142
 msgctxt "Content/*/*"
 msgid "Total users"
 msgstr "Usuários totais"
 
-#: front/src/views/admin/library/UploadDetail.vue:199
-msgctxt "*/*/*"
-msgid "Track"
-msgstr "Música"
-
-#: front/src/components/audio/SearchBar.vue:27
-#: front/src/components/library/TrackBase.vue:173
+#: front/src/components/audio/SearchBar.vue:34
+#: front/src/components/library/TrackBase.vue:188
 #: front/src/components/library/TrackDetail.vue:128
 #: front/src/components/metadata/Search.vue:138
+#: src/components/mixins/Report.vue:28
+#: front/src/views/admin/library/UploadDetail.vue:199
+#: front/src/components/mixins/Report.vue:29
 msgctxt "*/*/*/Noun"
 msgid "Track"
 msgstr "Música"
@@ -4538,7 +4941,7 @@ msgctxt "Content/Library/Card/Short"
 msgid "Track #%{ id } - %{ name }"
 msgstr ""
 
-#: front/src/views/admin/library/TrackDetail.vue:91
+#: front/src/views/admin/library/TrackDetail.vue:97
 msgctxt "Content/Moderation/Title"
 msgid "Track data"
 msgstr "Título da música"
@@ -4548,30 +4951,28 @@ msgctxt "Content/Track/Title/Noun"
 msgid "Track information"
 msgstr "Informação da música"
 
-#: front/src/components/mixins/Translations.vue:50
-#: front/src/components/mixins/Translations.vue:51
+#: front/src/components/mixins/Translations.vue:60
+#: front/src/components/mixins/Translations.vue:61
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Track name"
 msgstr "Título da música"
 
-#: front/src/components/instance/Stats.vue:54
 #: front/src/components/library/AlbumDetail.vue:19
-#: front/src/components/playlists/PlaylistModal.vue:47
-#: front/src/views/admin/moderation/AccountsDetail.vue:362
-#: front/src/views/admin/moderation/DomainsDetail.vue:274
-#: front/src/views/content/Base.vue:8 src/views/content/libraries/Detail.vue:8
-#: front/src/views/playlists/Detail.vue:51 src/views/radios/Detail.vue:34
-msgctxt "*/*/*/Noun"
-msgid "Tracks"
-msgstr "Músicas"
-
+#: front/src/components/library/TagDetail.vue:36
 #: front/src/components/manage/library/AlbumsTable.vue:42
 #: front/src/components/manage/library/ArtistsTable.vue:42
-#: front/src/views/admin/library/AlbumDetail.vue:252
-#: front/src/views/admin/library/ArtistDetail.vue:251
+#: front/src/components/manage/library/TagsTable.vue:44
+#: front/src/components/playlists/PlaylistModal.vue:47
+#: front/src/views/admin/library/AlbumDetail.vue:268
+#: front/src/views/admin/library/ArtistDetail.vue:266
 #: front/src/views/admin/library/Base.vue:14
-#: front/src/views/admin/library/LibraryDetail.vue:229
+#: front/src/views/admin/library/LibraryDetail.vue:248
+#: front/src/views/admin/library/TagDetail.vue:143
 #: front/src/views/admin/library/TracksList.vue:24
+#: front/src/views/admin/moderation/AccountsDetail.vue:374
+#: front/src/views/admin/moderation/DomainsDetail.vue:311
+#: front/src/views/content/Base.vue:8 src/views/content/libraries/Detail.vue:8
+#: front/src/views/playlists/Detail.vue:76 src/views/radios/Detail.vue:34
 msgctxt "*/*/*"
 msgid "Tracks"
 msgstr "Músicas"
@@ -4581,79 +4982,64 @@ msgctxt "Content/Artist/Title"
 msgid "Tracks by this artist"
 msgstr "Musicas deste artista"
 
-#: front/src/components/instance/Stats.vue:25
-msgctxt "Content/About/Paragraph/Unit"
-msgid "Tracks favorited"
-msgstr "Músicas favoritas"
-
-#: front/src/components/instance/Stats.vue:19
-msgctxt "Content/About/Paragraph/Unit"
-msgid "tracks listened"
-msgstr "músicas escutadas"
-
 #: front/src/components/library/radios/Filter.vue:44
 msgctxt "Popup/Radio/Title/Noun"
 msgid "Tracks matching filter"
 msgstr "Filtro de correspondência de músicas"
 
 #: front/src/components/library/TrackDetail.vue:57
+#: front/src/components/manage/moderation/ReportCard.vue:134
 #: front/src/views/admin/library/UploadDetail.vue:250
+#: front/src/views/admin/moderation/AccountsDetail.vue:181
 msgctxt "Content/Track/Table.Label/Noun"
 msgid "Type"
 msgstr "Tipo"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:180
-msgctxt "Content/Moderation/Table.Label/Noun"
-msgid "Type"
-msgstr "Tipo"
-
 #: front/src/components/manage/moderation/AccountsTable.vue:44
-#: front/src/components/manage/moderation/DomainsTable.vue:42
+#: front/src/components/manage/moderation/DomainsTable.vue:50
 msgctxt "Content/Moderation/Table.Label/Short"
 msgid "Under moderation rule"
 msgstr "Atualizar a regra de moderação"
 
-#: front/src/views/content/remote/Card.vue:109
-#: src/views/content/remote/Card.vue:114
+#: front/src/components/ShortcutsModal.vue:68
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Unfocus searchbar"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:122
+#: src/views/content/remote/Card.vue:127
 msgctxt "*/Library/Button.Label/Verb"
 msgid "Unfollow"
 msgstr "Deixar de seguir"
 
-#: front/src/views/content/remote/Card.vue:110
+#: front/src/views/content/remote/Card.vue:123
 msgctxt "Popup/Library/Title"
 msgid "Unfollow this library?"
 msgstr "Deixar de seguir esta biblioteca?"
 
-#: front/src/components/About.vue:17
-msgctxt "Content/About/Paragraph"
-msgid ""
-"Unfortunately, the owners of this instance did not yet take the time to "
-"complete this page."
-msgstr ""
-"Infelizmente, os proprietários desta instância não ainda ter o tempo para "
-"preencher esta página."
-
 #: front/src/components/federation/FetchButton.vue:54
 #: front/src/components/federation/FetchButton.vue:55
-msgctxt "*/*/Error"
-msgid "Unknowkn error"
-msgstr ""
-
 #: front/src/components/library/ImportStatusModal.vue:144
-msgctxt "Popup/Import/Error.Label"
-msgid "Unkwown error"
+msgctxt "*/*/Error"
+msgid "Unknown error"
 msgstr ""
 
-#: front/src/components/Home.vue:37
-msgctxt "Content/Home/Title"
-msgid "Unlimited music"
-msgstr "Música ilimitada"
-
-#: front/src/components/audio/Player.vue:630
+#: front/src/components/audio/Player.vue:656
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Unmute"
 msgstr "Cancelar mudo"
 
+#: front/src/components/manage/moderation/ReportCard.vue:225
+msgctxt "Content/*/Button.Label"
+msgid "Unresolve"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:67
+#: front/src/views/admin/moderation/ReportsList.vue:23
+msgctxt "Content/*/*/Short"
+msgid "Unresolved"
+msgstr ""
+
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:57
 msgctxt "Content/Moderation/Card.Button.Label/Verb"
 msgid "Update"
@@ -4717,12 +5103,8 @@ msgstr "Data de upload"
 
 #: front/src/components/library/FileUpload.vue:258
 msgctxt "Content/Library/Help text"
-msgid ""
-"Upload denied, ensure the file is not too big and that you have not reached "
-"your quota"
-msgstr ""
-"Carregamento recusado, garantir que o arquivo não é muito grande e que você "
-"não atingiu sua cota"
+msgid "Upload denied, ensure the file is not too big and that you have not reached your quota"
+msgstr "Carregamento recusado, garantir que o arquivo não é muito grande e que você não atingiu sua cota"
 
 #: front/src/components/library/ImportStatusModal.vue:8
 msgctxt "Popup/Import/Message"
@@ -4731,20 +5113,18 @@ msgstr ""
 
 #: front/src/views/content/Home.vue:7
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Upload music files (MP3, OGG, FLAC, etc.) from your personal library "
-"directly from your browser to enjoy them here."
-msgstr ""
-"Carregue arquivos de música (mp3, ogg, flac, etc.) da sua biblioteca pessoal"
-" diretamente de seu navegador para apreciá-los aqui."
+msgid "Upload music files (MP3, OGG, FLAC, etc.) from your personal library directly from your browser to enjoy them here."
+msgstr "Carregue arquivos de música (mp3, ogg, flac, etc.) da sua biblioteca pessoal diretamente de seu navegador para apreciá-los aqui."
 
 #: front/src/components/library/FileUpload.vue:30
 msgctxt "Content/Library/Title/Verb"
 msgid "Upload new tracks"
 msgstr "Carregar novas músicas"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:298
-msgctxt "Content/Moderation/Table.Label/Noun"
+#: front/src/components/About.vue:99
+#: front/src/views/admin/moderation/AccountsDetail.vue:309
+#, fuzzy
+msgctxt "*/*/*"
 msgid "Upload quota"
 msgstr "Carregar quota"
 
@@ -4755,9 +5135,7 @@ msgstr "Tempo limite de upload, por favor, tente novamente"
 
 #: front/src/components/library/ImportStatusModal.vue:14
 msgctxt "Popup/Import/Message"
-msgid ""
-"Upload was skipped because a similar one is already available in one of your"
-" libraries."
+msgid "Upload was skipped because a similar one is already available in one of your libraries."
 msgstr ""
 
 #: front/src/components/library/ImportStatusModal.vue:11
@@ -4780,35 +5158,25 @@ msgctxt "Content/Library/Table"
 msgid "Uploading…"
 msgstr "Carregando…"
 
+#: front/src/components/manage/library/LibrariesTable.vue:52
+#: front/src/components/manage/moderation/AccountsTable.vue:41
+#: front/src/components/mixins/Translations.vue:75
+#: front/src/views/admin/library/AlbumDetail.vue:258
+#: front/src/views/admin/library/ArtistDetail.vue:246
 #: front/src/views/admin/library/Base.vue:20
+#: front/src/views/admin/library/LibraryDetail.vue:258
+#: front/src/views/admin/library/TrackDetail.vue:310
 #: front/src/views/admin/library/UploadsList.vue:24
+#: front/src/views/admin/moderation/AccountsDetail.vue:349
+#: front/src/views/admin/moderation/DomainsDetail.vue:281
+#: front/src/components/mixins/Translations.vue:76
 msgctxt "*/*/*"
 msgid "Uploads"
 msgstr "Envios"
 
-#: front/src/components/manage/moderation/AccountsTable.vue:41
-#: front/src/components/mixins/Translations.vue:63
-#: front/src/views/admin/library/AlbumDetail.vue:242
-#: front/src/views/admin/library/ArtistDetail.vue:231
-#: front/src/views/admin/library/LibraryDetail.vue:239
-#: front/src/views/admin/library/TrackDetail.vue:294
-#: front/src/views/admin/moderation/AccountsDetail.vue:337
-#: front/src/views/admin/moderation/DomainsDetail.vue:244
-#: front/src/components/mixins/Translations.vue:64
-msgctxt "Content/Moderation/Table.Label/Noun"
-msgid "Uploads"
-msgstr "Envios"
-
-#: front/src/components/manage/library/LibrariesTable.vue:52
-msgctxt "Content/*/*/Noun"
-msgid "Uploads"
-msgstr "Envios"
-
 #: front/src/components/auth/ApplicationForm.vue:16
 msgctxt "Content/Applications/Help Text"
-msgid ""
-"Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is "
-"not served on the web."
+msgid "Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is not served on the web."
 msgstr ""
 
 #: front/src/components/Footer.vue:16
@@ -4816,38 +5184,57 @@ msgctxt "Footer/*/List item.Link"
 msgid "Use another instance"
 msgstr "Use outra instância"
 
+#: front/src/components/Home.vue:146
+msgctxt "Content/Home/Link"
+msgid "Use Funkwhale on other devices with our apps"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:44
+msgctxt "*/*/Field,Help"
+msgid "Use this field to provide additional context to the moderator that will handle your report."
+msgstr ""
+
 #: front/src/views/auth/PasswordReset.vue:12
 msgctxt "Content/Signup/Paragraph"
-msgid ""
-"Use this form to request a password reset. We will send an email to the "
-"given address with instructions to reset your password."
+msgid "Use this form to request a password reset. We will send an email to the given address with instructions to reset your password."
+msgstr "Use este formulário para solicitar uma redefinição de senha. Enviaremos um email para o endereço fornecido com instruções para redefinir sua senha."
+
+#: front/src/components/moderation/ReportModal.vue:18
+msgctxt "*/Moderation/Popup,Paragraph"
+msgid "Use this form to submit a report to our moderation team."
 msgstr ""
-"Use este formulário para solicitar uma redefinição de senha. Enviaremos um "
-"email para o endereço fornecido com instruções para redefinir sua senha."
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:111
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Use this setting to temporarily enable/disable the policy without completely"
-" removing it."
-msgstr ""
-"Use esta configuração para ativar/desativar temporariamente a política sem "
-"removê-la completamente."
+msgid "Use this setting to temporarily enable/disable the policy without completely removing it."
+msgstr "Use esta configuração para ativar/desativar temporariamente a política sem removê-la completamente."
 
 #: front/src/components/manage/users/InvitationsTable.vue:49
 msgctxt "Content/Admin/Table"
 msgid "Used"
 msgstr "Usado"
 
+#: front/src/components/Home.vue:125
+msgctxt "Content/Home/Header"
+msgid "Useful links"
+msgstr ""
+
 #: front/src/views/content/libraries/Detail.vue:26
 msgctxt "Content/Library/Table.Label"
 msgid "User"
 msgstr "Usuário"
 
-#: front/src/components/instance/Stats.vue:5
-msgctxt "Content/About/Title/Noun"
-msgid "User activity"
-msgstr "Atividade do usuário"
+#: front/src/components/Home.vue:154
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "User guides"
+msgstr "Bibliotecas do usuário"
+
+#: front/src/views/admin/Settings.vue:88
+#, fuzzy
+msgctxt "Content/Admin/Menu"
+msgid "User Interface"
+msgstr "Nome de usuário"
 
 #: front/src/components/library/AlbumDetail.vue:26
 #: front/src/components/library/ArtistDetail.vue:39
@@ -4861,35 +5248,35 @@ msgctxt "Content/Radio/Title"
 msgid "User radios"
 msgstr "Rádios do usuário"
 
-#: front/src/components/auth/Signup.vue:19
+#: front/src/components/auth/SignupForm.vue:15
 #: front/src/components/manage/users/UsersTable.vue:37
-#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:71
 #: front/src/views/admin/moderation/AccountsDetail.vue:114
-#: front/src/components/mixins/Translations.vue:60
+#: front/src/components/mixins/Translations.vue:72
 msgctxt "Content/*/*"
 msgid "Username"
 msgstr "Nome de usuário"
 
-#: front/src/components/auth/Login.vue:15
+#: front/src/components/auth/LoginForm.vue:11
 msgctxt "Content/Login/Input.Label/Noun"
 msgid "Username or email"
 msgstr "Nome de usuário ou email"
 
-#: front/src/components/instance/Stats.vue:13
-msgctxt "Content/About/Paragraph/Unit"
-msgid "users"
-msgstr "usuários"
-
-#: front/src/components/Sidebar.vue:102
-#: front/src/components/manage/moderation/DomainsTable.vue:39
-#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/Sidebar.vue:106
+#: front/src/components/manage/moderation/DomainsTable.vue:47
+#: front/src/components/mixins/Translations.vue:73
 #: src/views/admin/Settings.vue:81 front/src/views/admin/users/Base.vue:5
 #: src/views/admin/users/UsersList.vue:21
-#: front/src/components/mixins/Translations.vue:62
+#: front/src/components/mixins/Translations.vue:74
 msgctxt "*/*/*/Noun"
 msgid "Users"
 msgstr "Usuários"
 
+#: front/src/components/Home.vue:110
+msgctxt "Content/Home/Paragraph"
+msgid "Users on this pod also get %{ quota } of free storage to upload their own content!"
+msgstr ""
+
 #: front/src/components/Footer.vue:29
 msgctxt "Footer/*/Title"
 msgid "Using Funkwhale"
@@ -4907,45 +5294,60 @@ msgctxt "Content/Library/Link/Verb"
 msgid "View files"
 msgstr "Ver ficheiros"
 
-#: front/src/components/library/AlbumBase.vue:81
-#: front/src/components/library/ArtistBase.vue:92
-#: front/src/components/library/TrackBase.vue:100
-#: front/src/views/admin/library/AlbumDetail.vue:42
-#: front/src/views/admin/library/ArtistDetail.vue:41
+#: front/src/components/library/AlbumBase.vue:95
+#: front/src/components/library/ArtistBase.vue:107
+#: front/src/components/library/TrackBase.vue:111
+#: front/src/views/admin/library/AlbumDetail.vue:48
+#: front/src/views/admin/library/ArtistDetail.vue:46
 #: front/src/views/admin/library/LibraryDetail.vue:34
 #: front/src/views/admin/library/LibraryDetail.vue:45
-#: front/src/views/admin/library/TrackDetail.vue:41
+#: front/src/views/admin/library/TagDetail.vue:32
+#: front/src/views/admin/library/TrackDetail.vue:47
 #: front/src/views/admin/library/UploadDetail.vue:35
 #: front/src/views/admin/library/UploadDetail.vue:46
 #: front/src/views/admin/moderation/AccountsDetail.vue:37
 #: front/src/views/admin/moderation/AccountsDetail.vue:45
+#: front/src/views/admin/moderation/DomainsDetail.vue:30
 msgctxt "Content/Moderation/Link/Verb"
 msgid "View in Django's admin"
 msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:61
-#: front/src/components/library/ArtistBase.vue:72
-#: front/src/components/library/TrackBase.vue:80
+#: front/src/components/Home.vue:169
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "View more…"
+msgstr "Carregando seguidores…"
+
+#: front/src/components/library/AlbumBase.vue:62
+#: front/src/components/library/ArtistBase.vue:73
+#: front/src/components/library/TrackBase.vue:78
 #: front/src/components/metadata/ArtistCard.vue:49
 #: front/src/components/metadata/ReleaseCard.vue:53
 msgctxt "Content/*/*/Clickable, Verb"
 msgid "View on MusicBrainz"
 msgstr "Ver no MusicBrainz"
 
+#: front/src/components/manage/moderation/ReportCard.vue:124
+msgctxt "Content/Moderation/Link"
+msgid "View public page"
+msgstr ""
+
 #: front/src/components/manage/library/LibrariesTable.vue:11
 #: front/src/components/manage/library/LibrariesTable.vue:51
 #: front/src/components/manage/library/UploadsTable.vue:11
 #: front/src/components/manage/library/UploadsTable.vue:63
 #: front/src/views/admin/library/LibraryDetail.vue:94
 #: front/src/views/admin/library/UploadDetail.vue:101
+#: front/src/views/content/libraries/Form.vue:18
 msgctxt "*/*/*"
 msgid "Visibility"
 msgstr "Visibilidade"
 
-#: front/src/views/content/libraries/Form.vue:18
-msgctxt "Content/Library/Dropdown.Label"
-msgid "Visibility"
-msgstr "Visibilidade"
+#: front/src/components/Home.vue:91
+#, fuzzy
+msgctxt "Content/Home/Link"
+msgid "Visit funkwhale.audio"
+msgstr "Usando Funkwhale"
 
 #: front/src/components/library/AlbumDetail.vue:4
 msgctxt "Content/Album/"
@@ -4957,7 +5359,13 @@ msgctxt "Popup/*/Loading.Title"
 msgid "Waiting for result…"
 msgstr "Carregando seus favoritos …"
 
-#: front/src/components/auth/Login.vue:7
+#: front/src/components/auth/Settings.vue:285
+#, fuzzy
+msgctxt "Content/Settings/Error message.Title"
+msgid "We cannot delete your account"
+msgstr "Nós não podemos te logar"
+
+#: front/src/components/auth/LoginForm.vue:3
 msgctxt "Content/Login/Error message.Title"
 msgid "We cannot log you in"
 msgstr "Nós não podemos te logar"
@@ -4967,42 +5375,37 @@ msgctxt "Content/*/Error message.Title"
 msgid "We cannot save your changes"
 msgstr "Não podemos criar sua conta"
 
-#: front/src/components/Home.vue:122
-msgctxt "Content/Home/List item"
-msgid "We do not track you or bother you with ads"
-msgstr "Nós não rastreamos ou incomodamos você com anúncios"
+#: front/src/views/Notifications.vue:39
+msgctxt "Content/Notifications/Paragraph"
+msgid "We noticed you've been here for a while. If Funkwhale is useful to you, we could use your help to make it even better!"
+msgstr ""
 
 #: front/src/components/library/FileUpload.vue:39
 msgctxt "Content/Library/Link"
 msgid "We recommend using Picard for that purpose."
 msgstr "Recomendamos usar o Picard para esse fim."
 
-#: front/src/components/Home.vue:7
-msgctxt "Content/Home/Title"
-msgid "We think listening to music should be simple."
-msgstr "Nós achamos que ouvir música deveria ser simples."
+#: front/src/components/moderation/ReportModal.vue:35
+msgctxt "*/*/Field,Help"
+msgid "We'll use this email if we need to contact you regarding this report."
+msgstr ""
 
-#: front/src/components/Home.vue:148
+#: front/src/components/Home.vue:207
 msgctxt "Head/Home/Title"
 msgid "Welcome"
 msgstr "Bem-vindo"
 
 #: front/src/components/Home.vue:5
-msgctxt "Content/Home/Title/Verb"
-msgid "Welcome on Funkwhale"
-msgstr "Bem-vindo ao Funkwhale"
-
-#: front/src/components/Home.vue:24
-msgctxt "Content/Home/Title"
-msgid "Why funkwhale?"
-msgstr "Por que o funkwhale?"
+msgctxt "Content/Home/Header"
+msgid "Welcome to %{ podName }!"
+msgstr ""
 
-#: front/src/components/audio/EmbedWizard.vue:13
+#: front/src/components/audio/EmbedWizard.vue:23
 msgctxt "Popup/Embed/Input.Label"
 msgid "Widget height"
 msgstr "Altura do widget"
 
-#: front/src/components/audio/EmbedWizard.vue:6
+#: front/src/components/audio/EmbedWizard.vue:16
 msgctxt "Popup/Embed/Input.Label"
 msgid "Widget width"
 msgstr "Largura do widget"
@@ -5022,9 +5425,11 @@ msgctxt "Content/OAuth Scopes/Help Text"
 msgid "Write-only access to user data"
 msgstr ""
 
-#: front/src/components/Sidebar.vue:129
+#: front/src/components/Sidebar.vue:133
 #: front/src/components/manage/moderation/AccountsTable.vue:72
-#: front/src/components/manage/moderation/DomainsTable.vue:58
+#: front/src/components/manage/moderation/DomainsTable.vue:12
+#: front/src/components/manage/moderation/DomainsTable.vue:69
+#: front/src/views/admin/moderation/DomainsDetail.vue:109
 msgctxt "*/*/*"
 msgid "Yes"
 msgstr "Sim"
@@ -5036,29 +5441,17 @@ msgstr "Sim, me desconecte!"
 
 #: front/src/views/content/libraries/Form.vue:19
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You are able to share your library with other people, regardless of its "
-"visibility."
-msgstr ""
-"Você pode compartilhar sua biblioteca com outras pessoas, independentemente "
-"de sua visibilidade."
+msgid "You are able to share your library with other people, regardless of its visibility."
+msgstr "Você pode compartilhar sua biblioteca com outras pessoas, independentemente de sua visibilidade."
 
 #: front/src/components/library/FileUpload.vue:32
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You are about to upload music to your library. Before proceeding, please "
-"ensure that:"
-msgstr ""
-"Você está prestes a fazer o upload de músicas para sua biblioteca. Antes de "
-"prosseguir, certifique-se de que:"
+msgid "You are about to upload music to your library. Before proceeding, please ensure that:"
+msgstr "Você está prestes a fazer o upload de músicas para sua biblioteca. Antes de prosseguir, certifique-se de que:"
 
 #: front/src/components/SetInstanceModal.vue:12
 msgctxt "Popup/Login/Paragraph"
-msgid ""
-"You are currently connected to <a href=\"%{ url }\" target=\"_blank\">%{ "
-"hostname }&nbsp;<i class=\"external icon\"/></a>. If you continue, you will "
-"be disconnected from your current instance and all your local data will be "
-"deleted."
+msgid "You are currently connected to <a href=\"%{ url }\" target=\"_blank\">%{ hostname }&nbsp;<i class=\"external icon\"/></a>. If you continue, you will be disconnected from your current instance and all your local data will be deleted."
 msgstr ""
 
 #: front/src/components/library/ArtistDetail.vue:6
@@ -5073,9 +5466,7 @@ msgstr "Você está logado como %{ username }"
 
 #: front/src/components/library/FileUpload.vue:35
 msgctxt "Content/Library/List item"
-msgid ""
-"You are not uploading copyrighted content in a public library, otherwise you"
-" may be infringing the law"
+msgid "You are not uploading copyrighted content in a public library, otherwise you may be infringing the law"
 msgstr ""
 
 #: front/src/components/SetInstanceModal.vue:98
@@ -5084,29 +5475,14 @@ msgid "You are now using the Funkwhale instance at %{ url }"
 msgstr ""
 
 #: front/src/views/content/Home.vue:17
+#, fuzzy
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You can follow libraries from other users to get access to new music. Public"
-" libraries can be followed immediatly, while following a private library "
-"requires approval from its owner."
-msgstr ""
-"Você pode seguir bibliotecas de outros usuários para obter acesso a novas "
-"músicas. Bibliotecas públicas podem ser seguidas imediatamente, enquanto "
-"seguir uma biblioteca privada requer aprovação de seu proprietário."
-
-#: front/src/components/Home.vue:128
-msgctxt "Content/Home/List item"
-msgid ""
-"You can invite friends and family to your instance so they can enjoy your "
-"music"
-msgstr ""
-"Você pode convidar amigos e familia para sua instância para que eles possam "
-"curtir sua música"
+msgid "You can follow libraries from other users to get access to new music. Public libraries can be followed immediately, while following a private library requires approval from its owner."
+msgstr "Você pode seguir bibliotecas de outros usuários para obter acesso a novas músicas. Bibliotecas públicas podem ser seguidas imediatamente, enquanto seguir uma biblioteca privada requer aprovação de seu proprietário."
 
 #: front/src/components/moderation/FilterModal.vue:31
 msgctxt "Popup/Moderation/Paragraph"
-msgid ""
-"You can manage and update your filters anytime from your account settings."
+msgid "You can manage and update your filters any time from your account settings."
 msgstr ""
 
 #: front/src/views/auth/EmailConfirm.vue:24
@@ -5114,23 +5490,20 @@ msgctxt "Content/Signup/Paragraph"
 msgid "You can now use the service without limitations."
 msgstr "Agora você pode usar o serviço sem limitações."
 
+#: front/src/components/auth/Settings.vue:278
+msgctxt "Content/Settings/Paragraph'"
+msgid "You can permanently and irreversibly delete your account and all the associated data using the form below. You will be asked for confirmation."
+msgstr ""
+
 #: front/src/components/library/radios/Builder.vue:7
 msgctxt "Content/Radio/Paragraph"
-msgid ""
-"You can use this interface to build your own custom radio, which will play "
-"tracks according to your criteria."
-msgstr ""
-"Você pode usar essa interface para construir a sua própria rádio que vai "
-"jogar músicas de acordo com seus critérios."
+msgid "You can use this interface to build your own custom radio, which will play tracks according to your criteria."
+msgstr "Você pode usar essa interface para construir a sua própria rádio que vai jogar músicas de acordo com seus critérios."
 
 #: front/src/components/auth/SubsonicTokenForm.vue:7
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"You can use those to enjoy your playlist and music in offline mode, on your "
-"smartphone or tablet, for instance."
-msgstr ""
-"Você pode usá-los para curtir sua playlist e música no modo off-line, em seu"
-" smartphone ou tablet, por exemplo."
+msgid "You can use those to enjoy your playlist and music in offline mode, on your smartphone or tablet, for instance."
+msgstr "Você pode usá-los para curtir sua playlist e música no modo off-line, em seu smartphone ou tablet, por exemplo."
 
 #: front/src/components/auth/Settings.vue:202
 msgctxt "Content/Applications/Paragraph"
@@ -5147,19 +5520,17 @@ msgctxt "Content/Moderation/Card.Title"
 msgid "You don't have any rule in place for this account."
 msgstr "Não tem nenhuma regra em vigor para esta conta."
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:39
+#: front/src/views/admin/moderation/DomainsDetail.vue:67
 msgctxt "Content/Moderation/Card.Title"
 msgid "You don't have any rule in place for this domain."
 msgstr "Você não tem nenhuma regra em vigor para este domínio."
 
 #: front/src/components/library/EditForm.vue:52
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You don't have the permission to edit this object, but you can suggest "
-"changes. Once submitted, suggestions will be reviewed before approval."
+msgid "You don't have the permission to edit this object, but you can suggest changes. Once submitted, suggestions will be reviewed before approval."
 msgstr ""
 
-#: front/src/components/Sidebar.vue:171
+#: front/src/components/Sidebar.vue:175
 msgctxt "Sidebar/Player/Title"
 msgid "You have a radio playing"
 msgstr "Você tem um rádio tocando"
@@ -5171,10 +5542,8 @@ msgstr "Você pode ter um problema de conectividade."
 
 #: front/src/components/auth/Settings.vue:100
 msgctxt "Popup/Settings/List item"
-msgid ""
-"You will be logged out from this session and have to log in with the new one"
-msgstr ""
-"Você será desconectado desta sessão e precisará fazer login com o novo"
+msgid "You will be logged out from this session and have to log in with the new one"
+msgstr "Você será desconectado desta sessão e precisará fazer login com o novo"
 
 #: front/src/components/auth/Authorize.vue:51
 msgctxt "Content/Auth/Paragraph"
@@ -5188,24 +5557,24 @@ msgstr ""
 
 #: front/src/components/auth/Settings.vue:71
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"You will have to update your password on your clients that use this "
-"password."
-msgstr ""
-"Você terá que atualizar sua senha em seus clientes que usam essa senha."
+msgid "You will have to update your password on your clients that use this password."
+msgstr "Você terá que atualizar sua senha em seus clientes que usam essa senha."
 
 #: front/src/components/moderation/FilterModal.vue:20
 msgctxt "Popup/Moderation/Paragraph"
-msgid ""
-"You will not see tracks, albums and user activity linked to this artist "
-"anymore:"
+msgid "You will not see tracks, albums and user activity linked to this artist any more:"
 msgstr ""
 
-#: front/src/components/auth/Signup.vue:13
+#: front/src/components/auth/SignupForm.vue:9
 msgctxt "Content/Signup/Form/Paragraph"
 msgid "Your account cannot be created."
 msgstr "Playlist criada"
 
+#: front/src/components/auth/Settings.vue:281
+msgctxt "Content/Settings/Paragraph'"
+msgid "Your account will be deleted from our servers within a few minutes. We will also notify other servers who may have a copy of some of your data so they can proceed to deletion. Please note that some of these servers may be offline or unwilling to comply though."
+msgstr ""
+
 #: front/src/components/auth/Settings.vue:215
 msgctxt "Content/Settings/Title/Noun"
 msgid "Your applications"
@@ -5216,6 +5585,11 @@ msgctxt "Content/Settings/Error message.Title"
 msgid "Your avatar cannot be saved"
 msgstr ""
 
+#: front/src/components/auth/Settings.vue:527
+msgctxt "*/Auth/Message"
+msgid "Your deletion request was submitted, your account and content will be deleted shortly"
+msgstr ""
+
 #: front/src/components/library/EditForm.vue:3
 msgctxt "Content/Library/Paragraph"
 msgid "Your edit was successfully submitted."
@@ -5226,12 +5600,13 @@ msgctxt "Head/Favorites/Title"
 msgid "Your Favorites"
 msgstr "Seus favoritos"
 
-#: front/src/components/Home.vue:109
-msgctxt "Content/Home/Title"
-msgid "Your music, your way"
-msgstr "Sua música, seu jeito"
+#: front/src/views/Notifications.vue:5
+#, fuzzy
+msgctxt "Content/Notifications/Title"
+msgid "Your messages"
+msgstr "Mensagens emitidas"
 
-#: front/src/views/Notifications.vue:4
+#: front/src/views/Notifications.vue:69
 msgctxt "Content/Notifications/Title"
 msgid "Your notifications"
 msgstr "Suas notificações"
@@ -5247,42 +5622,41 @@ msgid "Your password has been updated successfully."
 msgstr "Sua senha foi atualizada com sucesso."
 
 #: front/src/components/auth/Settings.vue:14
+#, fuzzy
 msgctxt "Content/Settings/Error message.Title"
-msgid "Your settings can't be updateds"
+msgid "Your settings can't be updated"
 msgstr "Configurações atualizadas"
 
 #: front/src/components/auth/Settings.vue:101
 msgctxt "Popup/Settings/List item"
-msgid ""
-"Your Subsonic password will be changed to a new, random one, logging you out"
-" from devices that used the old Subsonic password"
-msgstr ""
-"Sua senha do Subsonic será alterada para uma nova, aleatória, efetuando o "
-"logout de dispositivos que usaram a senha antiga do Subsonic"
+msgid "Your Subsonic password will be changed to a new, random one, logging you out from devices that used the old Subsonic password"
+msgstr "Sua senha do Subsonic será alterada para uma nova, aleatória, efetuando o logout de dispositivos que usaram a senha antiga do Subsonic"
 
-#: front/src/edits.js:47
-msgctxt "*/*/*/Short, Noun"
-msgid "Position"
-msgstr "Paginação"
+#: front/src/entities.js:126
+#, fuzzy
+msgctxt "*/*/*/Noun"
+msgid "MusicBrainz ID"
+msgstr "Ver no MusicBrainz"
 
-#: front/src/edits.js:54
-msgctxt "Content/Track/*/Noun"
-msgid "Copyright"
-msgstr "Direitos Autorais"
+#: front/src/main.js:110
+msgctxt "*/Error/Paragraph"
+msgid "You sent too many requests and have been rate limited, please try again in %{ delay }"
+msgstr ""
+
+#: front/src/main.js:113
+msgctxt "*/Error/Paragraph"
+msgid "You sent too many requests and have been rate limited, please try again later"
+msgstr ""
 
-#: front/src/components/library/AlbumBase.vue:183
+#: front/src/components/library/AlbumBase.vue:208
 #, fuzzy
 msgctxt "Content/Album/Header.Title"
-msgid ""
-"Album containing %{ count } track, by <a class=\"internal\" href=\"%{ "
-"artistUrl }\">%{ artist }</a>"
-msgid_plural ""
-"Album containing %{ count } tracks, by <a class=\"internal\" href=\"%{ "
-"artistUrl }\">%{ artist }</a>"
+msgid "Album containing %{ count } track, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgid_plural "Album containing %{ count } tracks, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
 msgstr[0] "Álbum contendo %{ count } pista, por %{ artist }"
 msgstr[1] "Álbum contendo %{ count } pistas, por %{ artist }"
 
-#: front/src/components/audio/PlayButton.vue:220
+#: front/src/components/audio/PlayButton.vue:246
 #, fuzzy
 msgctxt "*/Queue/Message"
 msgid "%{ count } track was added to your queue"
diff --git a/front/locales/ru/LC_MESSAGES/app.po b/front/locales/ru/LC_MESSAGES/app.po
index 4a3793d342c73fec567cf1e2521b9e158f8c8b4e..8c5e68495f69332ff248a072b4c4ba0d1db3bcd8 100644
--- a/front/locales/ru/LC_MESSAGES/app.po
+++ b/front/locales/ru/LC_MESSAGES/app.po
@@ -7,16 +7,17 @@ msgid ""
 msgstr ""
 "Project-Id-Version: front 0.1.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-05-16 10:35+0200\n"
-"PO-Revision-Date: 2018-10-20 14:22+0000\n"
-"Last-Translator: noname <noname@inventati.org>\n"
+"POT-Creation-Date: 2019-10-01 15:15+0200\n"
+"PO-Revision-Date: 2019-10-03 17:13+0000\n"
+"Last-Translator: SpcCw <ravnina@gmail.com>\n"
 "Language-Team: none\n"
 "Language: ru\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 2.20\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<="
+"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+"X-Generator: Weblate 3.7\n"
 
 #: front/src/components/playlists/PlaylistModal.vue:9
 msgctxt "Popup/Playlist/Paragraph"
@@ -36,21 +37,67 @@ msgstr "(пусто)"
 #: front/src/components/auth/Authorize.vue:16
 msgctxt "Content/Auth/Title"
 msgid "%{ app } wants to access your Funkwhale account"
-msgstr "Войти в ваш аккаунт Funkwhale"
+msgstr "%{ app } хочет получить доступ к Вашему аккаунту Funkwhale"
+
+#: front/src/components/About.vue:173 src/components/Home.vue:56
+msgctxt "Content/Home/Stat"
+msgid "%{ count } active user"
+msgid_plural "%{ count } active users"
+msgstr[0] "%{ count } активный пользователь"
+msgstr[1] "%{ count } активных пользователя"
+msgstr[2] "%{ count } активных пользователей"
+
+#: front/src/components/About.vue:182
+msgctxt "Content/Home/Stat"
+msgid "%{ count } albums"
+msgid_plural "%{ count } albums"
+msgstr[0] "%{ count } альбом"
+msgstr[1] "%{ count } альбома"
+msgstr[2] "%{ count } альбомов"
+
+#: front/src/components/About.vue:152
+msgctxt "*/*/*"
+msgid "%{ count } allowed domains"
+msgid_plural "%{ count } allowed domains"
+msgstr[0] "%{ count } разрешенный домен"
+msgstr[1] "%{ count } разрешенных домена"
+msgstr[2] "%{ count } разрешенных доменов"
+
+#: front/src/components/About.vue:179
+msgctxt "Content/Home/Stat"
+msgid "%{ count } artists"
+msgid_plural "%{ count } artists"
+msgstr[0] "%{ count } исполнитель"
+msgstr[1] "%{ count } исполнителя"
+msgstr[2] "%{ count } исполнителей"
+
+#: front/src/components/About.vue:176 src/components/Home.vue:59
+msgctxt "Content/Home/Stat"
+msgid "%{ count } hour of music"
+msgid_plural "%{ count } hours of music"
+msgstr[0] "%{ count } час музыки"
+msgstr[1] "%{ count } часа музыки"
+msgstr[2] "%{ count } часов музыки"
+
+#: front/src/components/About.vue:188
+msgctxt "Content/Home/Stat"
+msgid "%{ count } listenings"
+msgid_plural "%{ count } listenings"
+msgstr[0] "%{ count } прослушивание"
+msgstr[1] "%{ count } прослушивания"
+msgstr[2] "%{ count } прослушиваний"
 
 #: front/src/components/common/ActionTable.vue:68
-#, fuzzy
 msgctxt "Content/*/Paragraph"
 msgid "%{ count } on %{ total } selected"
 msgid_plural "%{ count } on %{ total } selected"
 msgstr[0] "выбран %{ count } из %{ total }"
-msgstr[1] "выбрано %{ count } из %{ total }"
+msgstr[1] "выбраны %{ count } из %{ total }"
 msgstr[2] "выбрано %{ count } из %{ total }"
 
-#: front/src/components/Sidebar.vue:121 src/components/audio/album/Card.vue:52
+#: front/src/components/Sidebar.vue:125 src/components/audio/album/Card.vue:52
 #: front/src/views/content/libraries/Card.vue:40
-#: src/views/content/remote/Card.vue:30
-#, fuzzy
+#: src/views/content/remote/Card.vue:43
 msgctxt "*/*/*"
 msgid "%{ count } track"
 msgid_plural "%{ count } tracks"
@@ -59,7 +106,6 @@ msgstr[1] "%{ count } трека"
 msgstr[2] "%{ count } треков"
 
 #: front/src/components/library/ArtistBase.vue:13
-#, fuzzy
 msgctxt "Content/Artist/Paragraph"
 msgid "%{ count } track in %{ albumsCount } albums"
 msgid_plural "%{ count } tracks in %{ albumsCount } albums"
@@ -68,7 +114,6 @@ msgstr[1] "%{ count } трека из %{ albumsCount } альбомов"
 msgstr[2] "%{ count } треков из %{ albumsCount } альбомов"
 
 #: front/src/components/library/radios/Builder.vue:81
-#, fuzzy
 msgctxt "Content/Radio/Table.Paragraph/Short"
 msgid "%{ count } track matching combined filters"
 msgid_plural "%{ count } tracks matching combined filters"
@@ -76,8 +121,15 @@ msgstr[0] "%{ count } подходящий трек"
 msgstr[1] "%{ count } подходящих трека"
 msgstr[2] "%{ count } подходящих треков"
 
-#: front/src/components/playlists/Card.vue:18
-#, fuzzy
+#: front/src/components/About.vue:185
+msgctxt "Content/Home/Stat"
+msgid "%{ count } tracks"
+msgid_plural "%{ count } tracks"
+msgstr[0] "%{ count } трек"
+msgstr[1] "%{ count } трека"
+msgstr[2] "%{ count } треков"
+
+#: front/src/components/playlists/Card.vue:28
 msgctxt "Content/*/Card/List item"
 msgid "%{ count} track"
 msgid_plural "%{ count } tracks"
@@ -103,17 +155,17 @@ msgstr "%{ minutes } мин"
 #: front/src/components/notifications/NotificationRow.vue:40
 msgctxt "Content/Notifications/Paragraph"
 msgid "%{ username } accepted your follow on library \"%{ library }\""
-msgstr ""
+msgstr "%{ username } принял Вашу подписку на библиотеку \"%{ library }\""
 
 #: front/src/components/notifications/NotificationRow.vue:39
 msgctxt "Content/Notifications/Paragraph"
 msgid "%{ username } followed your library \"%{ library }\""
-msgstr ""
+msgstr "%{ username } подписался на Вашу библиотеку \"%{ library }\""
 
 #: front/src/components/notifications/NotificationRow.vue:41
 msgctxt "Content/Notifications/Paragraph"
 msgid "%{ username } wants to follow your library \"%{ library }\""
-msgstr ""
+msgstr "%{ username } хочет подписаться на Вашу библиотеку \"%{ library }\""
 
 #: front/src/components/auth/Profile.vue:46
 msgctxt "Head/Profile/Title"
@@ -122,12 +174,10 @@ msgstr "Профиль %{ username }"
 
 #: front/src/components/playlists/PlaylistModal.vue:21
 msgctxt "Popup/Playlist/Paragraph"
-msgid ""
-"<strong>%{ track }</strong> is already in <strong>%{ playlist }</strong>."
-msgstr ""
+msgid "<strong>%{ track }</strong> is already in <strong>%{ playlist }</strong>."
+msgstr "<strong>%{ track }</strong> уже в списке воспроизведения <strong>%{ playlist }</strong>."
 
-#: front/src/components/audio/artist/Card.vue:41
-#, fuzzy
+#: front/src/components/audio/artist/Card.vue:11
 msgctxt "Content/Artist/Card"
 msgid "1 album"
 msgid_plural "%{ count } albums"
@@ -136,7 +186,6 @@ msgstr[1] "%{ count } альбома"
 msgstr[2] "%{ count } альбомов"
 
 #: front/src/components/favorites/List.vue:10
-#, fuzzy
 msgctxt "Content/Favorites/Title"
 msgid "1 favorite"
 msgid_plural "%{ count } favorites"
@@ -144,32 +193,50 @@ msgstr[0] "1 избранный"
 msgstr[1] "%{ count } избранных"
 msgstr[2] "%{ count } избранных"
 
-#: front/src/components/Home.vue:64
-msgctxt "Content/Home/Title"
-msgid "A clean library"
-msgstr "Очистить библиотеку"
+#: front/src/components/audio/artist/Card.vue:15
+msgctxt "Content/Artist/Card"
+msgid "1 track"
+msgid_plural "%{ count } tracks"
+msgstr[0] "один трек"
+msgstr[1] "%{ count } трека"
+msgstr[2] "%{ count } треков"
+
+#: front/src/views/Notifications.vue:21 src/views/Notifications.vue:55
+msgctxt "*/*/*"
+msgid "30 days"
+msgstr "30 дней"
+
+#: front/src/views/Notifications.vue:22 src/views/Notifications.vue:56
+msgctxt "*/*/*"
+msgid "60 days"
+msgstr "60 дней"
+
+#: front/src/views/Notifications.vue:23 src/views/Notifications.vue:57
+msgctxt "*/*/*"
+msgid "90 days"
+msgstr "90 дней"
 
 #: front/src/components/library/FileUpload.vue:264
 msgctxt "Content/Library/Help text"
-msgid "A network error occured while uploading this file"
+msgid "A network error occurred while uploading this file"
 msgstr "При загрузке этого файла произошла сетевая ошибка"
 
-#: front/src/components/library/EditForm.vue:145
+#: front/src/components/library/EditForm.vue:161
 msgctxt "*/*/Placeholder"
 msgid "A short summary describing your changes."
-msgstr "При сохранении ваших изменений произошла ошибка"
+msgstr "Краткая информация о Ваших правках."
 
 #: front/src/components/About.vue:5
-msgctxt "Content/About/Title/Short, Noun"
-msgid "About %{ instance }"
-msgstr "О %{ instance }"
+msgctxt "Content/Home/Header"
+msgid "About %{ podName }"
+msgstr "О %{ podName }"
 
 #: front/src/components/Footer.vue:6
 msgctxt "Footer/About/Title"
 msgid "About %{instanceName}"
 msgstr "О %{ instance }"
 
-#: front/src/components/Footer.vue:45
+#: front/src/components/Footer.vue:53 src/components/Home.vue:85
 msgctxt "Footer/*/Title/Short"
 msgid "About Funkwhale"
 msgstr "О Funkwhale"
@@ -177,11 +244,16 @@ msgstr "О Funkwhale"
 #: front/src/components/Footer.vue:10
 msgctxt "Footer/About/List item.Link"
 msgid "About page"
-msgstr "Страница альбома"
+msgstr "Информация"
 
-#: front/src/components/About.vue:8 src/components/About.vue:67
-msgctxt "Content/About/Title"
-msgid "About this instance"
+#: front/src/components/Home.vue:19
+msgctxt "Content/Home/Header"
+msgid "About this Funkwhale pod"
+msgstr "Об этом узле Funkwhale"
+
+#: front/src/components/About.vue:21 src/components/About.vue:51
+msgctxt "Content/About/Header"
+msgid "About this pod"
 msgstr "Об этом узле"
 
 #: front/src/views/content/libraries/Detail.vue:48
@@ -194,110 +266,101 @@ msgctxt "Content/Library/Table/Short"
 msgid "Accepted"
 msgstr "Подтверждено"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:110
+#: front/src/components/auth/SubsonicTokenForm.vue:117
 msgctxt "Content/Settings/Message"
 msgid "Access disabled"
 msgstr "Доступ отключен"
 
-#: front/src/components/mixins/Translations.vue:73
-#: front/src/components/mixins/Translations.vue:74
+#: front/src/components/mixins/Translations.vue:85
+#: front/src/components/mixins/Translations.vue:86
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to audio files, libraries, artists, albums and tracks"
-msgstr ""
+msgstr "Доступ к аудио файлам, библиотекам, исполнителям, альбомам и трекам"
 
-#: front/src/components/mixins/Translations.vue:97
-#: front/src/components/mixins/Translations.vue:98
+#: front/src/components/mixins/Translations.vue:109
+#: front/src/components/mixins/Translations.vue:110
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to content filters"
-msgstr "Выберите фильтр"
+msgstr "Доступ к фильтрам содержимого"
 
-#: front/src/components/mixins/Translations.vue:105
-#: front/src/components/mixins/Translations.vue:106
+#: front/src/components/mixins/Translations.vue:117
+#: front/src/components/mixins/Translations.vue:118
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to edits"
-msgstr "Доступ отключен"
+msgstr "Доступ к правкам"
 
-#: front/src/components/mixins/Translations.vue:69
-#: front/src/components/mixins/Translations.vue:70
+#: front/src/components/mixins/Translations.vue:81
+#: front/src/components/mixins/Translations.vue:82
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to email, username, and profile information"
-msgstr ""
+msgstr "Доступ к электронной почте, имени пользователя и информации профиля"
 
-#: front/src/components/mixins/Translations.vue:77
-#: front/src/components/mixins/Translations.vue:78
+#: front/src/components/mixins/Translations.vue:89
+#: front/src/components/mixins/Translations.vue:90
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to favorites"
-msgstr "Добавить в избранное"
+msgstr "Доступ к избранному"
 
-#: front/src/components/mixins/Translations.vue:85
-#: front/src/components/mixins/Translations.vue:86
+#: front/src/components/mixins/Translations.vue:97
+#: front/src/components/mixins/Translations.vue:98
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to follows"
-msgstr ""
+msgstr "Доступ к подпискам"
 
-#: front/src/components/mixins/Translations.vue:81
-#: front/src/components/mixins/Translations.vue:82
+#: front/src/components/mixins/Translations.vue:93
+#: front/src/components/mixins/Translations.vue:94
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to listening history"
-msgstr ""
+msgstr "Доступ к истории прослушивания"
 
-#: front/src/components/mixins/Translations.vue:101
-#: front/src/components/mixins/Translations.vue:102
+#: front/src/components/mixins/Translations.vue:113
+#: front/src/components/mixins/Translations.vue:114
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to notifications"
-msgstr "Ваши уведомления"
+msgstr "Доступ к уведомлениям"
 
-#: front/src/components/mixins/Translations.vue:89
-#: front/src/components/mixins/Translations.vue:90
+#: front/src/components/mixins/Translations.vue:101
+#: front/src/components/mixins/Translations.vue:102
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to playlists"
-msgstr "Добавить в список воспроизведения..."
+msgstr "Доступ к спискам воспроизведения"
 
-#: front/src/components/mixins/Translations.vue:93
-#: front/src/components/mixins/Translations.vue:94
+#: front/src/components/mixins/Translations.vue:105
+#: front/src/components/mixins/Translations.vue:106
 msgctxt "Content/OAuth Scopes/Paragraph"
 msgid "Access to radios"
-msgstr "Доступ отключен"
-
-#: front/src/components/Home.vue:101
-msgctxt "Content/Home/List item"
-msgid ""
-"Access your music from a clean interface that focuses on what really matters"
-msgstr ""
-"Получайте доступ к вашей музыке из простого интерфейса который сфокусирован "
-"на том что действительно важно"
+msgstr "Доступ к радио"
 
 #: front/src/components/manage/library/UploadsTable.vue:67
-#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:55
 #: front/src/views/admin/library/UploadDetail.vue:175
-#: front/src/components/mixins/Translations.vue:46
+#: front/src/components/mixins/Translations.vue:56
 msgctxt "Content/*/*/Noun"
 msgid "Accessed date"
-msgstr "Доступ отключен"
-
-#: front/src/views/admin/library/LibraryDetail.vue:104
-#: front/src/views/admin/library/UploadDetail.vue:111
-msgctxt "*/*/*/Noun"
-msgid "Account"
-msgstr "Статус аккаунта"
+msgstr "Время доступа"
 
 #: front/src/components/manage/library/LibrariesTable.vue:49
 #: front/src/components/manage/library/UploadsTable.vue:61
-msgctxt "*/*/*"
+#: front/src/components/manage/moderation/ReportCard.vue:156
+#: front/src/components/mixins/Report.vue:13
+#: front/src/views/admin/library/LibraryDetail.vue:113
+#: front/src/views/admin/library/UploadDetail.vue:111
+#: front/src/components/mixins/Report.vue:14
+msgctxt "*/*/*/Noun"
 msgid "Account"
 msgstr "Статус аккаунта"
 
 #: front/src/views/admin/moderation/AccountsDetail.vue:107
 msgctxt "Content/Moderation/Title"
 msgid "Account data"
-msgstr "Аккаунт активен"
+msgstr "Данные аккаунта"
 
 #: front/src/components/auth/Settings.vue:5
 msgctxt "Content/Settings/Title"
 msgid "Account settings"
 msgstr "Настройки аккаунта"
 
-#: front/src/components/auth/Settings.vue:479
+#: front/src/components/auth/Settings.vue:544
 msgctxt "Head/Settings/Title"
 msgid "Account Settings"
 msgstr "Настройки аккаунта"
@@ -310,14 +373,14 @@ msgstr "Статус аккаунта"
 #: front/src/views/auth/PasswordReset.vue:14
 msgctxt "Content/Signup/Input.Label"
 msgid "Account's email"
-msgstr "Электронная почта аккаунта"
+msgstr "Электронная почта"
 
 #: front/src/views/admin/moderation/AccountsList.vue:3
 #: front/src/views/admin/moderation/AccountsList.vue:24
-#: front/src/views/admin/moderation/Base.vue:8
+#: front/src/views/admin/moderation/Base.vue:11
 msgctxt "*/Moderation/Title"
 msgid "Accounts"
-msgstr "Статус аккаунта"
+msgstr "Аккаунты"
 
 #: front/src/views/content/libraries/Detail.vue:29
 msgctxt "Content/Library/Table.Label"
@@ -325,33 +388,33 @@ msgid "Action"
 msgstr "Действие"
 
 #: front/src/components/common/ActionTable.vue:101
-#, fuzzy
 msgctxt "Content/*/Paragraph"
 msgid "Action %{ action } was launched successfully on %{ count } element"
-msgid_plural ""
-"Action %{ action } was launched successfully on %{ count } elements"
+msgid_plural "Action %{ action } was launched successfully on %{ count } elements"
 msgstr[0] "Действие %{ action } было успешно запущено на %{ count } элементе"
 msgstr[1] "Действие %{ action } было успешно запущено на %{ count } элементах"
 msgstr[2] "Действие %{ action } было успешно запущено на %{ count } элементах"
 
 #: front/src/components/common/ActionTable.vue:22
 #: front/src/components/library/radios/Builder.vue:65
+#: front/src/components/manage/moderation/ReportCard.vue:210
 msgctxt "Content/*/*/Noun"
 msgid "Actions"
 msgstr "Действия"
 
-#: front/src/components/manage/users/UsersTable.vue:53
+#: front/src/components/manage/users/UsersTable.vue:54
 msgctxt "Content/Admin/Table"
 msgid "Active"
 msgstr "Активен(на)"
 
-#: front/src/views/admin/library/AlbumDetail.vue:134
-#: front/src/views/admin/library/ArtistDetail.vue:123
-#: front/src/views/admin/library/LibraryDetail.vue:138
-#: front/src/views/admin/library/TrackDetail.vue:186
+#: front/src/views/admin/library/AlbumDetail.vue:140
+#: front/src/views/admin/library/ArtistDetail.vue:128
+#: front/src/views/admin/library/LibraryDetail.vue:147
+#: front/src/views/admin/library/TagDetail.vue:83
+#: front/src/views/admin/library/TrackDetail.vue:192
 #: front/src/views/admin/library/UploadDetail.vue:160
-#: front/src/views/admin/moderation/AccountsDetail.vue:220
-#: front/src/views/admin/moderation/DomainsDetail.vue:136
+#: front/src/views/admin/moderation/AccountsDetail.vue:221
+#: front/src/views/admin/moderation/DomainsDetail.vue:173
 msgctxt "Content/Moderation/Title"
 msgid "Activity"
 msgstr "Активность"
@@ -362,25 +425,25 @@ msgctxt "Content/Settings/Dropdown.Label/Noun"
 msgid "Activity visibility"
 msgstr "Видимость активности"
 
-#: front/src/views/admin/moderation/DomainsList.vue:18
+#: front/src/views/admin/moderation/DomainsList.vue:22
 msgctxt "Content/Moderation/Button/Verb"
 msgid "Add"
-msgstr ""
+msgstr "Добавить"
 
 #: front/src/views/admin/moderation/DomainsList.vue:13
 msgctxt "Content/Moderation/Form.Label/Verb"
 msgid "Add a domain"
-msgstr ""
+msgstr "Добавить домен"
 
 #: front/src/views/admin/moderation/AccountsDetail.vue:79
 msgctxt "Content/Moderation/Button/Verb"
 msgid "Add a moderation policy"
-msgstr ""
+msgstr "Добавить политику модерации"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:4
 msgctxt "Content/Moderation/Card.Button.Label/Verb"
 msgid "Add a new moderation rule"
-msgstr "Удалить радио"
+msgstr "Добавить правило модерации"
 
 #: front/src/views/content/Home.vue:35
 msgctxt "Content/Library/Title/Verb"
@@ -391,7 +454,7 @@ msgstr "Добавить или управлять содержимым"
 #: front/src/components/playlists/PlaylistModal.vue:31
 msgctxt "*/Playlist/Button.Label/Verb"
 msgid "Add anyways"
-msgstr ""
+msgstr "Всё равно добавить"
 
 #: front/src/components/Sidebar.vue:75 src/views/content/Base.vue:18
 msgctxt "*/Library/*/Verb"
@@ -406,9 +469,21 @@ msgstr "Добавить фильтр"
 #: front/src/components/library/radios/Builder.vue:41
 msgctxt "Content/Radio/Paragraph"
 msgid "Add filters to customize your radio"
-msgstr "Добавить фильтры чтобы кастомизировать своё радио"
+msgstr "Добавить фильтры, чтобы настроить своё радио"
+
+#: front/src/components/manage/moderation/NoteForm.vue:12
+msgctxt "Content/Moderation/Button.Label/Verb"
+msgid "Add note"
+msgstr "Добавить примечание"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:191
+#: front/src/views/admin/moderation/DomainsDetail.vue:46
+#: front/src/views/admin/moderation/DomainsList.vue:18
+msgctxt "Content/Moderation/Action/Verb"
+msgid "Add to allow-list"
+msgstr "Добавить в \"белый\" список"
 
-#: front/src/components/audio/PlayButton.vue:75
+#: front/src/components/audio/PlayButton.vue:91
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Add to current queue"
 msgstr "Добавить в очередь"
@@ -423,7 +498,7 @@ msgstr "Добавить в избранное"
 #: front/src/components/playlists/TrackPlaylistIcon.vue:34
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Add to playlist…"
-msgstr "Добавить в список воспроизведения..."
+msgstr "Добавить в список воспроизведения…"
 
 #: front/src/components/audio/PlayButton.vue:15
 msgctxt "*/Queue/Dropdown/Button/Label/Short"
@@ -440,7 +515,7 @@ msgctxt "Popup/Playlist/Table.Button.Label/Verb"
 msgid "Add track"
 msgstr "Добавить трек"
 
-#: front/src/components/manage/users/UsersTable.vue:69
+#: front/src/components/manage/users/UsersTable.vue:70
 msgctxt "Content/Admin/Table.User role"
 msgid "Admin"
 msgstr "Администратор"
@@ -450,49 +525,49 @@ msgctxt "Sidebar/Admin/Title/Noun"
 msgid "Administration"
 msgstr "Администрирование"
 
-#: front/src/views/admin/library/TrackDetail.vue:107
-msgctxt "*/*/*/Noun"
-msgid "Album"
-msgstr "Альбом"
-
-#: front/src/components/audio/SearchBar.vue:26
+#: front/src/components/audio/SearchBar.vue:33
 #: src/components/audio/track/Table.vue:9
-#: front/src/components/library/AlbumBase.vue:152
-#: front/src/components/library/ArtistBase.vue:194
+#: front/src/components/library/AlbumBase.vue:170
+#: front/src/components/library/ArtistBase.vue:212
 #: front/src/components/manage/library/TracksTable.vue:40
 #: front/src/components/metadata/Search.vue:134
+#: src/components/mixins/Report.vue:41
+#: front/src/views/admin/library/TrackDetail.vue:113
 #: front/src/views/content/libraries/FilesTable.vue:57
+#: front/src/components/mixins/Report.vue:42
 msgctxt "*/*/*"
 msgid "Album"
 msgstr "Альбом"
 
-#: front/src/views/admin/library/TrackDetail.vue:128
+#: front/src/views/admin/library/TrackDetail.vue:134
 msgctxt "*/*/*/Noun"
 msgid "Album artist"
-msgstr "Альбомы этого исполнителя"
+msgstr "Исполнитель альбома"
 
-#: front/src/views/admin/library/AlbumDetail.vue:92
+#: front/src/views/admin/library/AlbumDetail.vue:98
 msgctxt "Content/Moderation/Title"
 msgid "Album data"
-msgstr "Название альбома"
+msgstr "Данные альбома"
 
-#: front/src/components/mixins/Translations.vue:51
-#: front/src/components/mixins/Translations.vue:52
+#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/mixins/Translations.vue:62
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Album name"
 msgstr "Название альбома"
 
 #: front/src/components/audio/Search.vue:19
-#: src/components/instance/Stats.vue:48
-#: front/src/components/library/Albums.vue:120
-#: src/components/library/Library.vue:7
+#: src/components/library/Albums.vue:129
+#: front/src/components/library/Library.vue:7
+#: src/components/library/TagDetail.vue:28
 #: front/src/components/manage/library/ArtistsTable.vue:41
+#: front/src/components/manage/library/TagsTable.vue:43
 #: front/src/views/admin/library/AlbumsList.vue:24
-#: front/src/views/admin/library/ArtistDetail.vue:241
+#: front/src/views/admin/library/ArtistDetail.vue:256
 #: front/src/views/admin/library/Base.vue:11
-#: front/src/views/admin/library/LibraryDetail.vue:219
-#: front/src/views/admin/moderation/AccountsDetail.vue:354
-#: front/src/views/admin/moderation/DomainsDetail.vue:264
+#: front/src/views/admin/library/LibraryDetail.vue:238
+#: front/src/views/admin/library/TagDetail.vue:133
+#: front/src/views/admin/moderation/AccountsDetail.vue:366
+#: front/src/views/admin/moderation/DomainsDetail.vue:301
 msgctxt "*/*/*"
 msgid "Albums"
 msgstr "Альбомы"
@@ -506,134 +581,142 @@ msgstr "Альбомы этого исполнителя"
 #: front/src/components/manage/library/LibrariesTable.vue:13
 #: front/src/components/manage/library/UploadsTable.vue:13
 #: front/src/components/manage/library/UploadsTable.vue:22
+#: front/src/components/manage/moderation/DomainsTable.vue:11
 #: front/src/components/manage/users/InvitationsTable.vue:19
+#: front/src/components/moderation/ReportCategoryDropdown.vue:32
+#: front/src/views/admin/moderation/ReportsList.vue:17
 #: front/src/views/content/libraries/FilesTable.vue:13
 msgctxt "Content/*/Dropdown"
 msgid "All"
 msgstr "Все"
 
 #: front/src/components/common/ActionTable.vue:59
-#, fuzzy
 msgctxt "Content/*/Paragraph"
 msgid "All %{ count } element selected"
 msgid_plural "All %{ count } elements selected"
-msgstr[0] "выбран %{ count } из %{ total }"
-msgstr[1] "выбрано %{ count } из %{ total }"
-msgstr[2] "выбрано %{ count } из %{ total }"
+msgstr[0] "Выбран %{ count } из %{ total }"
+msgstr[1] "Выбраны %{ count } из %{ total }"
+msgstr[2] "Выбрано %{ count } из %{ total }"
 
 #: front/src/components/auth/Authorize.vue:107
 msgctxt "Head/Authorize/Title"
 msgid "Allow application"
-msgstr ""
+msgstr "Разрешить приложение"
+
+#: front/src/components/About.vue:136
+msgctxt "*/*/*"
+msgid "Allow-list"
+msgstr "\"Белый\" список"
+
+#: front/src/components/About.vue:149
+msgctxt "*/*/*"
+msgid "Allowed domains"
+msgstr "Разрешённые домены"
 
 #: front/src/components/library/ImportStatusModal.vue:17
 msgctxt "Popup/Import/Message"
-msgid ""
-"An error occured during upload processing. You will find more information "
-"below."
-msgstr ""
+msgid "An error occurred during upload processing. You will find more information below."
+msgstr "Во время обработки закачки возникла ошибка. Дополнительная информация ниже."
 
 #: front/src/components/playlists/Editor.vue:13
 msgctxt "Content/Playlist/Error message.Title"
-msgid "An error occured while saving your changes"
-msgstr "При сохранении ваших изменений произошла ошибка"
+msgid "An error occurred while saving your changes"
+msgstr "При сохранении Ваших изменений произошла ошибка"
 
 #: front/src/components/federation/FetchButton.vue:21
 msgctxt "Popup/*/Message.Content"
-msgid "An error occured while trying to refresh data:"
-msgstr "При сохранении ваших изменений произошла ошибка"
+msgid "An error occurred while trying to refresh data:"
+msgstr "При попытке обновления данных произошла ошибка:"
 
 #: front/src/components/federation/FetchButton.vue:41
 msgctxt "*/*/Error"
-msgid "An HTTP error occured while contacting the remote server"
-msgstr "При сохранении ваших изменений произошла ошибка"
-
-#: front/src/components/auth/Login.vue:10
-msgctxt "Content/Login/Error message/List item"
-msgid ""
-"An unknown error happend, this can mean the server is down or cannot be "
-"reached"
-msgstr ""
-"Произошла неизвестная ошибка, возможно сервер перегружен или недоступен"
+msgid "An HTTP error occurred while contacting the remote server"
+msgstr "При соединении с удалённым сервером возникла ошибка HTTP"
 
 #: front/src/components/library/ImportStatusModal.vue:145
 msgctxt "Popup/Import/Error.Label"
-msgid "An unkwown error occured"
-msgstr ""
+msgid "An unknown error occurred"
+msgstr "Возникла неизвестная ошибка"
+
+#: front/src/components/About.vue:123
+msgctxt "*/*/*"
+msgid "Anonymous access"
+msgstr "Анонимный доступ"
+
+#: front/src/components/moderation/ReportModal.vue:54
+msgctxt "Popup/Moderation/Error message"
+msgid "Anonymous reports are disabled, please sign-in to submit a report."
+msgstr "Анонимные жалобы отключены, пожалуйста войдите для отправки жалобы."
 
 #: front/src/components/auth/Settings.vue:175
 #: src/components/auth/Settings.vue:225
 msgctxt "*/*/*/Noun"
 msgid "Application"
-msgstr "Действие"
+msgstr "Приложение"
 
 #: front/src/components/auth/ApplicationEdit.vue:12
 msgctxt "Content/Applications/Title"
 msgid "Application details"
-msgstr ""
+msgstr "Информация о приложении"
 
 #: front/src/components/auth/ApplicationEdit.vue:21
 msgctxt "Content/Applications/Label"
 msgid "Application ID"
-msgstr ""
+msgstr "ID приложения"
 
 #: front/src/components/auth/ApplicationEdit.vue:16
 msgctxt "Content/Application/Paragraph/"
-msgid ""
-"Application ID and secret are really sensitive values and must be treated "
-"like passwords. Do not share those with anyone else."
-msgstr ""
+msgid "Application ID and secret are really sensitive values and must be treated like passwords. Do not share those with anyone else."
+msgstr "ID приложения и секрет являются важной информацией, к ним нужно относиться как к паролям. Не передавайте их никому."
 
 #: front/src/components/auth/ApplicationEdit.vue:25
 msgctxt "Content/Applications/Label"
 msgid "Application secret"
-msgstr ""
+msgstr "Секрет приложения"
 
 #: front/src/components/library/EditCard.vue:81
 #: front/src/components/notifications/NotificationRow.vue:66
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Approve"
-msgstr ""
+msgstr "Одобрить"
 
 #: front/src/components/library/EditCard.vue:25
 #: front/src/components/manage/library/EditsCardList.vue:21
 msgctxt "Content/*/*/Short"
 msgid "Approved"
-msgstr ""
+msgstr "Одобрено"
 
 #: front/src/components/library/EditCard.vue:21
 msgctxt "Content/Library/Card/Short"
 msgid "Approved and applied"
-msgstr ""
+msgstr "Одобрено и применено"
 
 #: front/src/components/auth/Logout.vue:5
 msgctxt "Content/Login/Title"
 msgid "Are you sure you want to log out?"
-msgstr "Вы уверены что хотите выйти?"
+msgstr "Вы уверены, что хотите выйти?"
 
+#: front/src/components/audio/SearchBar.vue:32
+#: src/components/audio/track/Table.vue:8
 #: front/src/components/manage/library/AlbumsTable.vue:40
 #: front/src/components/manage/library/TracksTable.vue:41
-msgctxt "*/*/*"
-msgid "Artist"
-msgstr "Исполнитель"
-
-#: front/src/components/audio/SearchBar.vue:25
-#: src/components/audio/track/Table.vue:8
 #: front/src/components/metadata/Search.vue:130
-#: front/src/views/admin/library/AlbumDetail.vue:108
-#: front/src/views/admin/library/TrackDetail.vue:118
-#: front/src/views/content/libraries/FilesTable.vue:56
+#: src/components/mixins/Report.vue:55
+#: front/src/views/admin/library/AlbumDetail.vue:114
+#: front/src/views/admin/library/TrackDetail.vue:124
+#: front/src/views/content/libraries/FilesTable.vue:56 src/entities.js:12
+#: front/src/components/mixins/Report.vue:56
 msgctxt "*/*/*/Noun"
 msgid "Artist"
 msgstr "Исполнитель"
 
-#: front/src/views/admin/library/ArtistDetail.vue:91
+#: front/src/views/admin/library/ArtistDetail.vue:96
 msgctxt "Content/Moderation/Title"
 msgid "Artist data"
-msgstr "Имя исполнителя"
+msgstr "Данные исполнителя"
 
-#: front/src/components/mixins/Translations.vue:52
-#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/mixins/Translations.vue:62
+#: front/src/components/mixins/Translations.vue:63
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Artist name"
 msgstr "Имя исполнителя"
@@ -641,38 +724,38 @@ msgstr "Имя исполнителя"
 #: front/src/components/audio/Search.vue:65
 msgctxt "*/Search/Input.Placeholder"
 msgid "Artist, album, track…"
-msgstr "Исполнитель, альбом, трек..."
+msgstr "Исполнитель, альбом, трек…"
 
+#: front/src/components/audio/Search.vue:10
+#: src/components/library/Artists.vue:117
+#: front/src/components/library/Library.vue:10
+#: front/src/components/library/TagDetail.vue:19
+#: front/src/components/manage/library/TagsTable.vue:42
 #: front/src/views/admin/library/ArtistsList.vue:24
 #: front/src/views/admin/library/Base.vue:8
-#: front/src/views/admin/library/LibraryDetail.vue:209
-msgctxt "*/*/*"
-msgid "Artists"
-msgstr "Исполнители"
-
-#: front/src/components/audio/Search.vue:10
-#: src/components/instance/Stats.vue:42
-#: front/src/components/library/Artists.vue:117
-#: src/components/library/Library.vue:10
-#: front/src/views/admin/moderation/AccountsDetail.vue:346
-#: front/src/views/admin/moderation/DomainsDetail.vue:254
+#: front/src/views/admin/library/LibraryDetail.vue:228
+#: front/src/views/admin/library/TagDetail.vue:123
+#: front/src/views/admin/moderation/AccountsDetail.vue:358
+#: front/src/views/admin/moderation/DomainsDetail.vue:291
 msgctxt "*/*/*/Noun"
 msgid "Artists"
 msgstr "Исполнители"
 
 #: front/src/components/favorites/List.vue:34
-#: src/components/library/Albums.vue:25
-#: front/src/components/library/Artists.vue:25
+#: src/components/library/Albums.vue:29
+#: front/src/components/library/Artists.vue:29
 #: src/components/library/Radios.vue:44
 #: front/src/components/manage/library/AlbumsTable.vue:21
 #: front/src/components/manage/library/ArtistsTable.vue:21
 #: front/src/components/manage/library/EditsCardList.vue:39
 #: front/src/components/manage/library/LibrariesTable.vue:30
+#: front/src/components/manage/library/TagsTable.vue:21
 #: front/src/components/manage/library/TracksTable.vue:21
 #: front/src/components/manage/library/UploadsTable.vue:40
 #: front/src/components/manage/moderation/AccountsTable.vue:21
-#: front/src/components/manage/moderation/DomainsTable.vue:19
+#: front/src/components/manage/moderation/DomainsTable.vue:27
 #: front/src/components/manage/users/UsersTable.vue:19
+#: front/src/views/admin/moderation/ReportsList.vue:44
 #: front/src/views/content/libraries/FilesTable.vue:31
 #: front/src/views/playlists/List.vue:27
 msgctxt "Content/Search/Dropdown"
@@ -684,36 +767,42 @@ msgctxt "Content/Signup/Button.Label/Verb"
 msgid "Ask for a password reset"
 msgstr "Сбросить пароль"
 
-#: front/src/views/admin/library/AlbumDetail.vue:198
-#: front/src/views/admin/library/ArtistDetail.vue:187
-#: front/src/views/admin/library/LibraryDetail.vue:176
-#: front/src/views/admin/library/TrackDetail.vue:250
+#: front/src/components/manage/moderation/ReportCard.vue:72
+msgctxt "Content/Moderation/*"
+msgid "Assigned to"
+msgstr "Назначено на"
+
+#: front/src/views/admin/library/AlbumDetail.vue:214
+#: front/src/views/admin/library/ArtistDetail.vue:202
+#: front/src/views/admin/library/LibraryDetail.vue:195
+#: front/src/views/admin/library/TagDetail.vue:113
+#: front/src/views/admin/library/TrackDetail.vue:266
 #: front/src/views/admin/library/UploadDetail.vue:191
-#: front/src/views/admin/moderation/AccountsDetail.vue:274
-#: front/src/views/admin/moderation/DomainsDetail.vue:202
+#: front/src/views/admin/moderation/AccountsDetail.vue:285
+#: front/src/views/admin/moderation/DomainsDetail.vue:239
 msgctxt "Content/Moderation/Title"
 msgid "Audio content"
-msgstr "Добавить содержимое"
+msgstr "Музыкальный контент"
 
-#: front/src/components/ShortcutsModal.vue:55
+#: front/src/components/ShortcutsModal.vue:92
 msgctxt "Popup/Keyboard shortcuts/Title"
 msgid "Audio player shortcuts"
-msgstr ""
+msgstr "Горячие клавиши плеера"
 
 #: front/src/components/auth/Authorize.vue:47
 msgctxt "Content/Signup/Button.Label/Verb"
 msgid "Authorize %{ app }"
-msgstr ""
+msgstr "Авторизовать %{ app }"
 
 #: front/src/components/auth/Authorize.vue:4
 msgctxt "Content/Auth/Title/Verb"
 msgid "Authorize third-party app"
-msgstr ""
+msgstr "Авторизовать стороннее приложение"
 
 #: front/src/components/auth/Settings.vue:162
 msgctxt "Content/Settings/Title/Noun"
 msgid "Authorized apps"
-msgstr ""
+msgstr "Авторизованные приложения"
 
 #: front/src/components/playlists/PlaylistModal.vue:40
 msgctxt "Popup/Playlist/Title"
@@ -735,12 +824,12 @@ msgstr "Назад ко входу"
 #: front/src/components/auth/ApplicationNew.vue:5
 msgctxt "Content/Applications/Link"
 msgid "Back to settings"
-msgstr "Обновить настройки"
+msgstr "Назад к настройкам"
 
 #: front/src/components/library/TrackDetail.vue:48
-#: front/src/components/mixins/Translations.vue:55
+#: front/src/components/mixins/Translations.vue:67
 #: front/src/views/admin/library/UploadDetail.vue:227
-#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:68
 msgctxt "Content/Track/*/Noun"
 msgid "Bitrate"
 msgstr "Битрейт"
@@ -749,15 +838,12 @@ msgstr "Битрейт"
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:34
 msgctxt "Content/Moderation/*/Verb"
 msgid "Block everything"
-msgstr ""
+msgstr "Заблокировать всё"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:112
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Block everything from this account or domain. This will prevent any "
-"interaction with the entity, and purge related content (uploads, libraries, "
-"follows, etc.)"
-msgstr ""
+msgid "Block everything from this account or domain. This will prevent any interaction with the entity, and purge related content (uploads, libraries, follows, etc.)"
+msgstr "Заблокировать всё от этого пользователя или домена. Это остановит любое взаимодействие с ним и удалит связанный контент (закачки, библиотеки, подписки и т.п.)"
 
 #: front/src/components/Sidebar.vue:18 src/components/library/Library.vue:4
 msgctxt "*/Library/*/Verb"
@@ -769,10 +855,15 @@ msgctxt "Sidebar/Library/List item.Link/Verb"
 msgid "Browse library"
 msgstr "Просмотр библиотеки"
 
+#: front/src/components/Home.vue:132
+msgctxt "Content/Home/Link"
+msgid "Browse public content"
+msgstr "Посмотреть публичное содержимое"
+
 #: front/src/components/library/Albums.vue:4
 msgctxt "Content/Album/Title"
 msgid "Browsing albums"
-msgstr "Просмотр радио"
+msgstr "Просмотр альбомов"
 
 #: front/src/components/library/Artists.vue:4
 msgctxt "Content/Artist/Title"
@@ -799,42 +890,43 @@ msgctxt "Content/Album/Card"
 msgid "By %{ artist }"
 msgstr "От %{ artist }"
 
-#: front/src/views/content/remote/Card.vue:112
+#: front/src/views/content/remote/Card.vue:125
 msgctxt "Popup/Library/Paragraph"
 msgid "By unfollowing this library, you loose access to its content."
-msgstr "Отписавшись от этой библиотеки, вы потеряете доступ к её содержимому."
+msgstr "Отписавшись от этой библиотеки, Вы потеряете доступ к её содержимому."
 
-#: front/src/views/admin/library/AlbumDetail.vue:214
-#: front/src/views/admin/library/ArtistDetail.vue:203
-#: front/src/views/admin/library/LibraryDetail.vue:192
-#: front/src/views/admin/library/TrackDetail.vue:266
+#: front/src/views/admin/library/AlbumDetail.vue:230
+#: front/src/views/admin/library/ArtistDetail.vue:218
+#: front/src/views/admin/library/LibraryDetail.vue:211
+#: front/src/views/admin/library/TrackDetail.vue:282
 #: front/src/views/admin/library/UploadDetail.vue:208
-#: front/src/views/admin/moderation/AccountsDetail.vue:290
-#: front/src/views/admin/moderation/DomainsDetail.vue:217
+#: front/src/views/admin/moderation/AccountsDetail.vue:301
+#: front/src/views/admin/moderation/DomainsDetail.vue:254
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Cached size"
-msgstr ""
+msgstr "Размер в кэше"
 
 #: front/src/components/SetInstanceModal.vue:37
 #: front/src/components/common/DangerousButton.vue:17
-#: front/src/components/library/AlbumBase.vue:36
-#: front/src/components/library/ArtistBase.vue:47
-#: front/src/components/library/EditForm.vue:95
-#: front/src/components/library/TrackBase.vue:55
+#: front/src/components/library/AlbumBase.vue:37
+#: front/src/components/library/ArtistBase.vue:48
+#: front/src/components/library/EditForm.vue:107
+#: front/src/components/library/TrackBase.vue:53
 #: front/src/components/library/radios/Filter.vue:53
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:54
 #: front/src/components/moderation/FilterModal.vue:39
+#: front/src/components/moderation/ReportModal.vue:59
 #: front/src/components/playlists/PlaylistModal.vue:26
 #: front/src/components/playlists/PlaylistModal.vue:77
+#: front/src/views/playlists/Detail.vue:62
 msgctxt "*/*/Button.Label/Verb"
 msgid "Cancel"
 msgstr "Отмена"
 
-#: front/src/views/content/remote/Card.vue:97
-#, fuzzy
+#: front/src/views/content/remote/Card.vue:110
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Cancel follow request"
-msgstr "Ожидающие файлы"
+msgstr "Отменить запрос на подписку"
 
 #: front/src/components/library/radios/Builder.vue:64
 msgctxt "Content/Radio/Table.Label/Noun (Value is a number of Tracks)"
@@ -846,6 +938,14 @@ msgctxt "Content/Library/Help text"
 msgid "Cannot upload this file, ensure it is not too big"
 msgstr "Невозможно загрузить файл, убедитесь что он не слишком большой"
 
+#: front/src/components/manage/moderation/ReportCard.vue:30
+#: front/src/components/mixins/Translations.vue:42
+#: front/src/components/moderation/ReportCategoryDropdown.vue:2
+#: front/src/components/mixins/Translations.vue:43
+msgctxt "*/*/*"
+msgid "Category"
+msgstr "Категория"
+
 #: front/src/components/Footer.vue:21
 msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
 msgid "Change language"
@@ -861,15 +961,20 @@ msgctxt "Content/Settings/Button.Label"
 msgid "Change password"
 msgstr "Сменить пароль"
 
+#: front/src/components/Footer.vue:37
+msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
+msgid "Change theme"
+msgstr "Сменить тему"
+
 #: front/src/views/auth/PasswordResetConfirm.vue:62
 msgctxt "*/Signup/Title"
 msgid "Change your password"
-msgstr "Сменить ваш пароль"
+msgstr "Сменить Ваш пароль"
 
 #: front/src/components/auth/Settings.vue:96
 msgctxt "Popup/Settings/Title"
 msgid "Change your password?"
-msgstr "Сменить ваш пароль?"
+msgstr "Сменить Ваш пароль?"
 
 #: front/src/components/playlists/Editor.vue:31
 msgctxt "Content/Playlist/Paragraph"
@@ -878,41 +983,32 @@ msgstr "Изменения синхронизированы с сервером"
 
 #: front/src/components/auth/Settings.vue:71
 msgctxt "Content/Settings/Paragraph'"
-msgid ""
-"Changing your password will also change your Subsonic API password if you "
-"have requested one."
-msgstr ""
-"Изменение вашего пароля также изменит ваш пароль Subsonic API если вы "
-"запрашивали его."
+msgid "Changing your password will also change your Subsonic API password if you have requested one."
+msgstr "Изменение Вашего пароля также изменит Ваш пароль Subsonic API, если Вы запрашивали его."
 
 #: front/src/components/auth/Settings.vue:98
 msgctxt "Popup/Settings/Paragraph"
 msgid "Changing your password will have the following consequences:"
-msgstr "Изменение вашего пароля приведёт к следующим последствиям"
+msgstr "Изменение Вашего пароля приведёт к следующим последствиям:"
 
-#: front/src/components/Footer.vue:40
+#: front/src/components/Footer.vue:48
 msgctxt "Footer/*/List item.Link"
 msgid "Chat room"
-msgstr ""
+msgstr "Чат-комната"
 
 #: front/src/components/auth/ApplicationForm.vue:24
 msgctxt "Content/Applications/Paragraph/"
-msgid ""
-"Checking the parent \"Read\" or \"Write\" scopes implies access to all the "
-"corresponding children scopes."
-msgstr ""
+msgid "Checking the parent \"Read\" or \"Write\" scopes implies access to all the corresponding children scopes."
+msgstr "Отметка родительских областей на \"чтение\" или \"запись\" подразумевает доступ ко всем соответствующим дочерним объектам."
 
 #: front/src/components/SetInstanceModal.vue:2
 msgctxt "Popup/Instance/Title"
 msgid "Choose your instance"
 msgstr "Выберите свой узел"
 
-#: front/src/components/manage/users/InvitationForm.vue:37
-msgctxt "Content/Admin/Button.Label/Verb"
-msgid "Clear"
-msgstr "Очистить"
-
 #: front/src/components/library/EditForm.vue:75
+#: front/src/components/library/EditForm.vue:88
+#: front/src/components/manage/users/InvitationForm.vue:37
 msgctxt "Content/Library/Button.Label"
 msgid "Clear"
 msgstr "Очистить"
@@ -923,44 +1019,44 @@ msgctxt "*/Playlist/Button.Label/Verb"
 msgid "Clear playlist"
 msgstr "Очистить список воспроизведения"
 
-#: front/src/components/audio/Player.vue:642
+#: front/src/components/ShortcutsModal.vue:144
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Clear queue"
+msgstr "Очистить очередь"
+
+#: front/src/components/audio/Player.vue:668
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Clear your queue"
-msgstr "Очистить вашу очередь"
-
-#: front/src/components/Home.vue:44
-msgctxt "Content/Home/List item/Verb"
-msgid "Click once, listen for hours using built-in radios"
-msgstr "Нажмите один раз, слушайте часами с помощью встроенного радио"
+msgstr "Очистить Вашу очередь"
 
 #: front/src/components/mixins/Translations.vue:21
 #: front/src/components/mixins/Translations.vue:22
 msgctxt "Content/Library/Link.Title"
-msgid ""
-"Click to display more information about the import process for this upload"
-msgstr ""
+msgid "Click to display more information about the import process for this upload"
+msgstr "Нажмите, чтобы посмотреть больше информации об импорте этой закачки"
 
 #: front/src/components/library/FileUpload.vue:82
 msgctxt "Content/Library/Paragraph/Call to action"
 msgid "Click to select files to upload or drag and drop files or directories"
-msgstr ""
-"Нажмите чтобы выбрать файлы для загрузки или перетащите файлы или директории"
+msgstr "Нажмите чтобы выбрать файлы для загрузки или перетащите файлы или директории"
 
+#: front/src/components/ShortcutsModal.vue:38
 #: front/src/components/federation/FetchButton.vue:85
 #: front/src/components/library/ImportStatusModal.vue:79
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:34
 msgctxt "*/*/Button.Label/Verb"
 msgid "Close"
-msgstr ""
-
-#: front/src/components/ShortcutsModal.vue:20
-msgctxt "Popup/Keyboard shortcuts/Button.Label/Verb"
-msgid "Close"
-msgstr ""
+msgstr "Закрыть"
 
 #: front/src/components/federation/FetchButton.vue:88
 msgctxt "*/*/Button.Label/Verb"
 msgid "Close and reload page"
-msgstr ""
+msgstr "Закрыть и обновить страницу"
+
+#: front/src/components/About.vue:94
+msgctxt "*/*/*/State of registrations"
+msgid "Closed"
+msgstr "Закрыто"
 
 #: front/src/components/manage/users/InvitationForm.vue:26
 #: front/src/components/manage/users/InvitationsTable.vue:42
@@ -969,8 +1065,8 @@ msgid "Code"
 msgstr "Код"
 
 #: front/src/components/audio/album/Card.vue:41
-#: front/src/components/audio/artist/Card.vue:33
-msgctxt "Content/*/Card.Link/Verb"
+#: front/src/components/common/CollapseLink.vue:3
+msgctxt "*/*/Button,Label"
 msgid "Collapse"
 msgstr "Свернуть"
 
@@ -987,47 +1083,53 @@ msgstr "Подтвердить"
 #: front/src/views/auth/EmailConfirm.vue:51
 msgctxt "Head/Signup/Title"
 msgid "Confirm your e-mail address"
-msgstr "Подтвердить ваш адрес электронной почты"
+msgstr "Подтвердить Ваш адрес электронной почты"
 
 #: front/src/views/auth/EmailConfirm.vue:13
 msgctxt "Content/Signup/Form.Label"
 msgid "Confirmation code"
 msgstr "Код подтверждения"
 
+#: front/src/components/About.vue:67 src/components/Home.vue:65
+msgctxt "Content/Home/Header/Name"
+msgid "Contact"
+msgstr "Контакт"
+
 #: front/src/components/moderation/FilterModal.vue:90
 msgctxt "*/Moderation/Message"
 msgid "Content filter successfully added"
-msgstr ""
-
-#: front/src/components/mixins/Translations.vue:96
-#: front/src/components/mixins/Translations.vue:97
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Content filters"
-msgstr "Выберите фильтр"
+msgstr "Фильтр содержимого успешно добавлен"
 
 #: front/src/components/auth/Settings.vue:116
+#: front/src/components/mixins/Translations.vue:108
+#: front/src/components/mixins/Translations.vue:109
 msgctxt "Content/Settings/Title/Noun"
 msgid "Content filters"
-msgstr "Выберите фильтр"
+msgstr "Фильтры содержимого"
 
 #: front/src/components/auth/Settings.vue:119
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"Content filters help you hide content you don't want to see on the service."
-msgstr ""
+msgid "Content filters help you hide content you don't want to see on the service."
+msgstr "Фильтры содержимого помогают Вам скрывать контент, который Вы не ходите видеть в этом сервисе."
 
 #: front/src/components/common/ActionTable.vue:8
 msgctxt "Content/*/Button.Help text.Paragraph"
 msgid "Content have been updated, click refresh to see up-to-date content"
-msgstr ""
+msgstr "Контент обновлён, нажмите \"Обновить\", чтобы увидеть его"
 
-#: front/src/components/Footer.vue:48
+#: front/src/components/About.vue:46
+msgctxt "Content/About/Header"
+msgid "Contents"
+msgstr "Содержание"
+
+#: front/src/components/Footer.vue:56
 msgctxt "Footer/*/List item.Link"
 msgid "Contribute"
-msgstr ""
+msgstr "Помочь"
 
-#: front/src/components/audio/EmbedWizard.vue:19
+#: front/src/components/audio/EmbedWizard.vue:29
 #: front/src/components/common/CopyInput.vue:8
+#: front/src/components/forms/PasswordInput.vue:43
 msgctxt "*/*/Button.Label/Short, Verb"
 msgid "Copy"
 msgstr "Копировать"
@@ -1040,54 +1142,45 @@ msgstr "Копировать треки из текущей очереди в с
 #: front/src/components/auth/Authorize.vue:55
 msgctxt "Content/Auth/Paragraph"
 msgid "Copy-paste the following code in the application:"
-msgstr ""
+msgstr "Скопируйте и вставьте следующий код в приложение:"
 
-#: front/src/components/audio/EmbedWizard.vue:21
+#: front/src/components/audio/EmbedWizard.vue:31
 msgctxt "Popup/Embed/Paragraph"
 msgid "Copy/paste this code in your website HTML"
-msgstr ""
+msgstr "Скопируйте и вставьте этот код в HTML Вашего сайта"
 
 #: front/src/components/library/TrackDetail.vue:10
-#: front/src/views/admin/library/TrackDetail.vue:153
-msgctxt "Content/Track/Table.Label/Noun"
+#: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:77
+msgctxt "Content/Track/*/Noun"
 msgid "Copyright"
-msgstr "Копировать"
+msgstr "Копирайт"
 
 #: front/src/views/auth/EmailConfirm.vue:7
 msgctxt "Content/Signup/Paragraph"
 msgid "Could not confirm your e-mail address"
-msgstr "Подтвердить ваш адрес электронной почты"
+msgstr "Не удалось подтвердить Ваш адрес электронной почты"
 
 #: front/src/views/content/remote/ScanForm.vue:3
 msgctxt "Content/Library/Error message.Title"
 msgid "Could not fetch remote library"
 msgstr "Ошибка во время загрузки удалённой библиотеки"
 
-#: front/src/components/Home.vue:80
-msgctxt "Content/Home/List item"
-msgid "Covers, lyrics, our goal is to have them all ;)"
-msgstr "Обложки, тексты, наша цель собрать их все ;)"
-
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:58
 msgctxt "Content/Moderation/Card.Button.Label/Verb"
 msgid "Create"
-msgstr "Создать импорт"
+msgstr "Создать"
 
-#: front/src/components/auth/Signup.vue:4
+#: front/src/views/auth/Signup.vue:4
 msgctxt "Content/Signup/Title"
 msgid "Create a funkwhale account"
 msgstr "Создать аккаунт funkwhale"
 
-#: front/src/components/auth/Settings.vue:220
-msgctxt "Content/Settings/Button.Label"
-msgid "Create a new application"
-msgstr "Создать новый список воспроизведения"
-
 #: front/src/components/auth/ApplicationNew.vue:8
 #: front/src/components/auth/ApplicationNew.vue:41
-msgctxt "Content/Applications/Title"
+#: front/src/components/auth/Settings.vue:220
+msgctxt "Content/Settings/Button.Label"
 msgid "Create a new application"
-msgstr "Создать новый список воспроизведения"
+msgstr "Создать новое приложение"
 
 #: front/src/views/content/libraries/Home.vue:14
 msgctxt "Content/Library/Link/Verb"
@@ -1099,7 +1192,7 @@ msgctxt "Popup/Playlist/Title/Verb"
 msgid "Create a new playlist"
 msgstr "Создать новый список воспроизведения"
 
-#: front/src/components/Sidebar.vue:57 src/components/auth/Login.vue:17
+#: front/src/components/Sidebar.vue:57 src/components/auth/LoginForm.vue:15
 msgctxt "*/Signup/Link/Verb"
 msgid "Create an account"
 msgstr "Создать новый аккаунт"
@@ -1107,14 +1200,14 @@ msgstr "Создать новый аккаунт"
 #: front/src/components/auth/ApplicationForm.vue:65
 msgctxt "Content/Applications/Button.Label/Verb"
 msgid "Create application"
-msgstr "Создать список воспроизведения"
+msgstr "Создать приложение"
 
 #: front/src/views/content/libraries/Form.vue:26
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Create library"
 msgstr "Создать библиотеку"
 
-#: front/src/components/auth/Signup.vue:53
+#: front/src/components/auth/SignupForm.vue:49
 msgctxt "Content/Signup/Button.Label"
 msgid "Create my account"
 msgstr "Создать мой аккаунт"
@@ -1122,7 +1215,7 @@ msgstr "Создать мой аккаунт"
 #: front/src/components/auth/Settings.vue:264
 msgctxt "Content/Applications/Paragraph"
 msgid "Create one to integrate Funkwhale with third-party applications."
-msgstr ""
+msgstr "Создайте его, чтобы интегрировать Funkwhale со сторонними приложениями."
 
 #: front/src/components/playlists/Form.vue:34
 msgctxt "Content/Playlist/Button.Label/Verb"
@@ -1132,18 +1225,20 @@ msgstr "Создать список воспроизведения"
 #: front/src/components/library/Radios.vue:23
 msgctxt "Content/Radio/Button.Label/Verb"
 msgid "Create your own radio"
-msgstr "Создать ваше собственное радио"
+msgstr "Создать Ваше собственное радио"
 
 #: front/src/components/auth/Settings.vue:134
 #: src/components/auth/Settings.vue:227
 #: front/src/components/manage/library/AlbumsTable.vue:44
 #: front/src/components/manage/library/ArtistsTable.vue:43
 #: front/src/components/manage/library/LibrariesTable.vue:54
+#: front/src/components/manage/library/TagsTable.vue:45
 #: front/src/components/manage/library/TracksTable.vue:44
 #: front/src/components/manage/library/UploadsTable.vue:66
+#: front/src/components/manage/moderation/ReportCard.vue:43
 #: front/src/components/manage/users/InvitationsTable.vue:40
-#: front/src/components/mixins/Translations.vue:43
-#: front/src/components/mixins/Translations.vue:44
+#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/mixins/Translations.vue:54
 msgctxt "Content/*/*/Noun"
 msgid "Creation date"
 msgstr "Дата создания"
@@ -1153,6 +1248,11 @@ msgctxt "Content/Settings/Title/Noun"
 msgid "Current avatar"
 msgstr "Текущий аватар"
 
+#: front/src/components/admin/SettingsGroup.vue:67
+msgctxt "Content/Settings/Title/Noun"
+msgid "Current image"
+msgstr "Текущее изображение"
+
 #: front/src/views/content/libraries/DetailArea.vue:4
 msgctxt "Content/Library/Title"
 msgid "Current library"
@@ -1168,15 +1268,20 @@ msgctxt "Content/Library/Title"
 msgid "Current usage"
 msgstr "Текущее использование"
 
+#: front/src/components/Footer.vue:94
+msgctxt "Footer/Settings/Dropdown.Label/Theme name"
+msgid "Dark"
+msgstr "Темная"
+
 #: front/src/components/federation/FetchButton.vue:53
 msgctxt "*/*/Error"
 msgid "Data returned by the remote server had invalid or missing attributes"
-msgstr ""
+msgstr "Данные, принятые от удалённого сервера, содержали неправильные или отсутствующие атрибуты"
 
 #: front/src/components/federation/FetchButton.vue:17
 msgctxt "Popup/*/Message.Content"
 msgid "Data was refreshed successfully from remote server."
-msgstr ""
+msgstr "Данные с удалённого сервера успешно обновлены."
 
 #: front/src/views/content/libraries/Detail.vue:27
 msgctxt "Content/Library/Table.Label"
@@ -1186,12 +1291,12 @@ msgstr "Дата"
 #: front/src/components/library/ImportStatusModal.vue:64
 msgctxt "Popup/Import/Table.Label/Noun"
 msgid "Debug information"
-msgstr "Информация о треке"
+msgstr "Диагностика"
 
-#: front/src/components/ShortcutsModal.vue:75
+#: front/src/components/ShortcutsModal.vue:128
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Decrease volume"
-msgstr ""
+msgstr "Уменьшить громкость"
 
 #: front/src/components/auth/Settings.vue:150
 #: src/components/auth/Settings.vue:251
@@ -1200,23 +1305,29 @@ msgstr ""
 #: front/src/components/manage/library/AlbumsTable.vue:188
 #: front/src/components/manage/library/ArtistsTable.vue:178
 #: front/src/components/manage/library/LibrariesTable.vue:205
+#: front/src/components/manage/library/TagsTable.vue:179
 #: front/src/components/manage/library/TracksTable.vue:188
 #: front/src/components/manage/library/UploadsTable.vue:255
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:61
+#: front/src/components/manage/moderation/NotesThread.vue:24
+#: front/src/components/manage/moderation/NotesThread.vue:29
+#: front/src/components/manage/moderation/ReportCard.vue:360
 #: front/src/components/manage/users/InvitationsTable.vue:167
-#: front/src/views/admin/library/AlbumDetail.vue:72
-#: front/src/views/admin/library/AlbumDetail.vue:77
-#: front/src/views/admin/library/ArtistDetail.vue:71
+#: front/src/views/admin/library/AlbumDetail.vue:78
+#: front/src/views/admin/library/AlbumDetail.vue:83
 #: front/src/views/admin/library/ArtistDetail.vue:76
+#: front/src/views/admin/library/ArtistDetail.vue:81
 #: front/src/views/admin/library/LibraryDetail.vue:58
 #: front/src/views/admin/library/LibraryDetail.vue:63
-#: front/src/views/admin/library/TrackDetail.vue:71
-#: front/src/views/admin/library/TrackDetail.vue:76
+#: front/src/views/admin/library/TagDetail.vue:41
+#: front/src/views/admin/library/TagDetail.vue:46
+#: front/src/views/admin/library/TrackDetail.vue:77
+#: front/src/views/admin/library/TrackDetail.vue:82
 #: front/src/views/admin/library/UploadDetail.vue:65
 #: front/src/views/admin/library/UploadDetail.vue:70
 #: front/src/views/content/libraries/FilesTable.vue:222
 #: front/src/views/content/libraries/Form.vue:29
-#: src/views/playlists/Detail.vue:34
+#: src/views/playlists/Detail.vue:42
 msgctxt "*/*/*/Verb"
 msgid "Delete"
 msgstr "Удалить"
@@ -1224,12 +1335,12 @@ msgstr "Удалить"
 #: front/src/components/auth/Settings.vue:254
 msgctxt "*/Settings/Button.Label/Verb"
 msgid "Delete application"
-msgstr "Удалить список воспроизведения"
+msgstr "Удалить приложение"
 
 #: front/src/components/auth/Settings.vue:252
 msgctxt "Popup/Settings/Title"
 msgid "Delete application \"%{ application }\"?"
-msgstr ""
+msgstr "Удалить приложение \"%{ application }\"?"
 
 #: front/src/views/content/libraries/Form.vue:39
 msgctxt "Popup/Library/Button.Label/Verb"
@@ -1239,9 +1350,20 @@ msgstr "Удалить библиотеку"
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:69
 msgctxt "Popup/Moderation/Button.Label/Verb"
 msgid "Delete moderation rule"
-msgstr "Удалить радио"
+msgstr "Удалить правило модерации"
+
+#: front/src/components/auth/Settings.vue:274
+#: src/components/auth/Settings.vue:302
+msgctxt "*/*/Button.Label"
+msgid "Delete my account"
+msgstr "Удалить мой аккаунт"
 
-#: front/src/views/playlists/Detail.vue:39
+#: front/src/components/auth/Settings.vue:297
+msgctxt "*/*/Button.Label"
+msgid "Delete my account…"
+msgstr "Удалить мой аккаунт…"
+
+#: front/src/views/playlists/Detail.vue:47
 msgctxt "Popup/Playlist/Button.Label/Verb"
 msgid "Delete playlist"
 msgstr "Удалить список воспроизведения"
@@ -1251,16 +1373,26 @@ msgctxt "Popup/Radio/Button.Label/Verb"
 msgid "Delete radio"
 msgstr "Удалить радио"
 
-#: front/src/views/admin/library/AlbumDetail.vue:73
-#: front/src/views/admin/library/TrackDetail.vue:72
+#: front/src/components/manage/moderation/ReportCard.vue:357
+msgctxt "Content/Moderation/Button/Verb"
+msgid "Delete reported object"
+msgstr "Удалить объект по жалобе"
+
+#: front/src/components/manage/moderation/ReportCard.vue:358
+msgctxt "Content/Moderation/Popup/Header"
+msgid "Delete reported object?"
+msgstr "Удалить объект, на который пожаловались?"
+
+#: front/src/views/admin/library/AlbumDetail.vue:79
+#: front/src/views/admin/library/TrackDetail.vue:78
 msgctxt "Popup/Library/Title"
 msgid "Delete this album?"
-msgstr "Удалить эту библиотеку?"
+msgstr "Удалить этот альбом?"
 
-#: front/src/views/admin/library/ArtistDetail.vue:72
+#: front/src/views/admin/library/ArtistDetail.vue:77
 msgctxt "Popup/Library/Title"
 msgid "Delete this artist?"
-msgstr "Удалить эту библиотеку?"
+msgstr "Удалить этого исполнителя?"
 
 #: front/src/views/admin/library/LibraryDetail.vue:59
 #: front/src/views/content/libraries/Form.vue:31
@@ -1271,106 +1403,127 @@ msgstr "Удалить эту библиотеку?"
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:63
 msgctxt "Popup/Moderation/Title"
 msgid "Delete this moderation rule?"
-msgstr "Удалить эту библиотеку?"
+msgstr "Удалить это правило модерации?"
+
+#: front/src/components/manage/moderation/NotesThread.vue:25
+msgctxt "Popup/Moderation/Title"
+msgid "Delete this note?"
+msgstr "Удалить это примечание?"
 
 #: front/src/components/library/EditCard.vue:94
 msgctxt "Popup/Library/Title"
 msgid "Delete this suggestion?"
-msgstr "Удалить эту библиотеку?"
+msgstr "Удалить это предложение?"
+
+#: front/src/views/admin/library/TagDetail.vue:42
+msgctxt "Popup/Library/Title"
+msgid "Delete this tag?"
+msgstr "Удалить этот тег?"
 
 #: front/src/views/admin/library/UploadDetail.vue:66
 msgctxt "Popup/Library/Title"
 msgid "Delete this upload?"
-msgstr "Удалить эту библиотеку?"
+msgstr "Удалить эту закачку?"
 
 #: front/src/components/favorites/List.vue:35
-#: src/components/library/Albums.vue:26
-#: front/src/components/library/Artists.vue:26
+#: src/components/library/Albums.vue:30
+#: front/src/components/library/Artists.vue:30
 #: src/components/library/Radios.vue:47
 #: front/src/components/manage/library/AlbumsTable.vue:22
 #: front/src/components/manage/library/ArtistsTable.vue:22
 #: front/src/components/manage/library/EditsCardList.vue:40
 #: front/src/components/manage/library/LibrariesTable.vue:31
+#: front/src/components/manage/library/TagsTable.vue:22
 #: front/src/components/manage/library/TracksTable.vue:22
 #: front/src/components/manage/library/UploadsTable.vue:41
 #: front/src/components/manage/moderation/AccountsTable.vue:22
-#: front/src/components/manage/moderation/DomainsTable.vue:20
+#: front/src/components/manage/moderation/DomainsTable.vue:28
 #: front/src/components/manage/users/UsersTable.vue:20
+#: front/src/views/admin/moderation/ReportsList.vue:45
 #: front/src/views/content/libraries/FilesTable.vue:32
 #: front/src/views/playlists/List.vue:28
 msgctxt "Content/Search/Dropdown"
 msgid "Descending"
 msgstr "По убыванию"
 
-#: front/src/views/admin/library/LibraryDetail.vue:123
-msgctxt "*/*/*/Noun"
-msgid "Description"
-msgstr "Описание"
+#: front/src/components/manage/moderation/NoteForm.vue:37
+msgctxt "Content/Moderation/Placeholder"
+msgid "Describe what actions have been taken, or any other related updates…"
+msgstr "Опишите какие действия были предприняты, либо другие важные моменты…"
 
 #: front/src/components/library/radios/Builder.vue:25
+#: front/src/views/admin/library/LibraryDetail.vue:132
 #: front/src/views/content/libraries/Form.vue:14
-msgctxt "Content/*/Input.Label/Noun"
+msgctxt "*/*/*/Noun"
 msgid "Description"
 msgstr "Описание"
 
 #: front/src/views/content/libraries/Card.vue:48
-#: src/views/content/remote/Card.vue:54
+#: src/views/content/remote/Card.vue:67
 msgctxt "Content/Library/Card.Button.Label/Noun"
 msgid "Details"
 msgstr "Подробности"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:491
+#: front/src/views/admin/moderation/AccountsDetail.vue:511
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Determine how much content the user can upload. Leave empty to use the "
-"default value of the instance."
-msgstr ""
-"Выберите как много содержимого пользователь может загрузить. Оставьте пустым"
-" чтобы использовать значение по умолчанию для данного узла."
+msgid "Determine how much content the user can upload. Leave empty to use the default value of the instance."
+msgstr "Выберите как много содержимого пользователь может загрузить. Оставьте пустым, чтобы использовать значение по умолчанию для данного узла."
 
 #: front/src/components/mixins/Translations.vue:8
 #: front/src/components/mixins/Translations.vue:9
 msgctxt "Content/Settings/Dropdown.Help text"
 msgid "Determine the visibility level of your activity"
-msgstr "Определить уровень видимости вашей активности"
+msgstr "Определить уровень видимости Вашей активности"
 
 #: front/src/components/auth/Settings.vue:104
-#: front/src/components/auth/SubsonicTokenForm.vue:51
+#: front/src/components/auth/SubsonicTokenForm.vue:56
 msgctxt "Popup/Settings/Button.Label"
 msgid "Disable access"
 msgstr "Отключить доступ"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:48
+#: front/src/components/auth/SubsonicTokenForm.vue:53
 msgctxt "Content/Settings/Button.Label/Verb"
 msgid "Disable Subsonic access"
 msgstr "Отключить доступ Subsonic"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:49
+#: front/src/components/auth/SubsonicTokenForm.vue:54
 msgctxt "Popup/Settings/Title"
 msgid "Disable Subsonic API access?"
 msgstr "Отключить доступ Subsonic API?"
 
+#: front/src/components/About.vue:118 src/components/About.vue:131
+#: front/src/components/About.vue:144
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:18
 #: front/src/views/admin/moderation/AccountsDetail.vue:157
 #: front/src/views/admin/moderation/AccountsDetail.vue:161
-msgctxt "*/*/*"
+msgctxt "*/*/*/State of feature"
 msgid "Disabled"
-msgstr "Отключить доступ"
+msgstr "Отключено"
 
-#: front/src/views/admin/library/TrackDetail.vue:145
+#: front/src/views/admin/library/TrackDetail.vue:151
 msgctxt "*/*/*/Noun"
 msgid "Disc number"
-msgstr ""
+msgstr "Номер диска"
+
+#: front/src/components/Home.vue:157
+msgctxt "Content/Home/Link"
+msgid "Discover everything you need to know about Funkwhale and its features"
+msgstr "Узнайте всё о Funkwhale и её возможностях"
 
 #: front/src/components/auth/SubsonicTokenForm.vue:13
 msgctxt "Content/Settings/Link"
 msgid "Discover how to use Funkwhale from other apps"
 msgstr "Узнайте как использовать Funkwhale из других приложений"
 
+#: front/src/views/Notifications.vue:45
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Discover other ways to help"
+msgstr "Другие способы помочь"
+
 #: front/src/views/admin/moderation/AccountsDetail.vue:132
 msgctxt "'Content/*/*/Noun'"
 msgid "Display name"
-msgstr "Имя файла"
+msgstr "Видимое имя"
 
 #: front/src/components/library/radios/Builder.vue:30
 msgctxt "Content/Radio/Checkbox.Label/Verb"
@@ -1379,10 +1532,13 @@ msgstr "Публично отображать"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:122
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Do not download any media file (audio, album cover, account avatar…) from "
-"this account or domain. This will purge existing content as well."
-msgstr ""
+msgid "Do not download any media file (audio, album cover, account avatar…) from this account or domain. This will purge existing content as well."
+msgstr "Не скачивать ничего (музыку, обложки, аватары…) от этого пользователя или домена. Это так же удалит существующий контент."
+
+#: front/src/views/Notifications.vue:36
+msgctxt "Content/Notifications/Header"
+msgid "Do you like Funkwhale?"
+msgstr "Вам нравится Funkwhale?"
 
 #: front/src/components/playlists/Editor.vue:51
 msgctxt "Popup/Playlist/Title"
@@ -1394,7 +1550,7 @@ msgctxt "Modal/*/Title"
 msgid "Do you want to confirm this action?"
 msgstr "Вы хотите подтвердить это действие?"
 
-#: front/src/views/playlists/Detail.vue:35
+#: front/src/views/playlists/Detail.vue:43
 msgctxt "Popup/Playlist/Title/Call to action"
 msgid "Do you want to delete the playlist \"%{ playlist }\"?"
 msgstr "Вы хотите удалить список воспроизведения \"%{ playlist }\"?"
@@ -1404,13 +1560,17 @@ msgctxt "Popup/Radio/Title"
 msgid "Do you want to delete the radio \"%{ radio }\"?"
 msgstr "Вы хотите удалить радио \"%{ radio }\"?"
 
+#: front/src/components/auth/Settings.vue:298
+msgctxt "Popup/Settings/Title"
+msgid "Do you want to delete your account?"
+msgstr "Вы хотите удалить Ваш аккаунт?"
+
 #: front/src/components/moderation/FilterModal.vue:3
 msgctxt "Popup/Moderation/Title/Verb"
 msgid "Do you want to hide content from artist \"%{ name }\"?"
-msgstr "Вы хотите удалить радио \"%{ radio }\"?"
+msgstr "Вы хотите скрыть содержимое от исполнителя \"%{ name }\"?"
 
 #: front/src/components/common/ActionTable.vue:37
-#, fuzzy
 msgctxt "Modal/*/Title"
 msgid "Do you want to launch %{ action } on %{ count } element?"
 msgid_plural "Do you want to launch %{ action } on %{ count } elements?"
@@ -1418,10 +1578,15 @@ msgstr[0] "Вы хотите запустить %{ action } на %{ count } эл
 msgstr[1] "Вы хотите запустить %{ action } на %{ count } элементах?"
 msgstr[2] "Вы хотите запустить %{ action } на %{ count } элементах?"
 
-#: front/src/components/Sidebar.vue:118
+#: front/src/components/moderation/ReportModal.vue:3
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Do you want to report this object?"
+msgstr "Вы хотите пожаловаться на этот объект?"
+
+#: front/src/components/Sidebar.vue:122
 msgctxt "Sidebar/Queue/Message"
 msgid "Do you want to restore your previous queue?"
-msgstr "Вы хотите восстановить вашу предыдущую очередь?"
+msgstr "Вы хотите восстановить Вашу предыдущую очередь?"
 
 #: front/src/components/Footer.vue:31
 msgctxt "Footer/*/List item.Link/Short, Noun"
@@ -1434,26 +1599,33 @@ msgstr "Документация"
 #: front/src/components/manage/library/TracksTable.vue:42
 #: front/src/components/manage/library/UploadsTable.vue:62
 #: front/src/components/manage/moderation/AccountsTable.vue:40
-#: front/src/components/mixins/Translations.vue:60
-#: front/src/views/admin/library/AlbumDetail.vue:118
-#: front/src/views/admin/library/ArtistDetail.vue:107
-#: front/src/views/admin/library/LibraryDetail.vue:114
-#: front/src/views/admin/library/TrackDetail.vue:170
+#: front/src/components/manage/moderation/ReportCard.vue:169
+#: front/src/components/manage/moderation/ReportCard.vue:179
+#: front/src/components/mixins/Translations.vue:72
+#: front/src/views/admin/library/AlbumDetail.vue:124
+#: front/src/views/admin/library/ArtistDetail.vue:112
+#: front/src/views/admin/library/LibraryDetail.vue:123
+#: front/src/views/admin/library/TrackDetail.vue:176
 #: front/src/views/admin/library/UploadDetail.vue:121
 #: front/src/views/admin/moderation/AccountsDetail.vue:123
-#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/mixins/Translations.vue:73
 msgctxt "Content/Moderation/*/Noun"
 msgid "Domain"
-msgstr ""
+msgstr "Домен"
 
-#: front/src/views/admin/moderation/Base.vue:5
+#: front/src/views/admin/moderation/Base.vue:8
 #: front/src/views/admin/moderation/DomainsList.vue:3
-#: front/src/views/admin/moderation/DomainsList.vue:48
+#: front/src/views/admin/moderation/DomainsList.vue:54
 msgctxt "*/Moderation/*/Noun"
 msgid "Domains"
-msgstr ""
+msgstr "Домены"
 
-#: front/src/components/library/TrackBase.vue:39
+#: front/src/views/Notifications.vue:42
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Donate"
+msgstr "Поддержать"
+
+#: front/src/components/library/TrackBase.vue:37
 #: front/src/views/admin/library/UploadDetail.vue:58
 msgctxt "Content/Track/Link/Verb"
 msgid "Download"
@@ -1462,15 +1634,14 @@ msgstr "Скачать"
 #: front/src/components/playlists/Editor.vue:59
 msgctxt "Content/Playlist/Paragraph/Call to action"
 msgid "Drag and drop rows to reorder tracks in the playlist"
-msgstr ""
-"Перетаскивайте строки чтобы упорядочить треки в списке воспроизведения"
+msgstr "Перетаскивайте строки, чтобы упорядочить треки в списке воспроизведения"
 
 #: front/src/components/audio/track/Table.vue:10
 #: front/src/components/library/TrackDetail.vue:30
-#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:68
 #: front/src/views/admin/library/UploadDetail.vue:238
 #: front/src/views/content/libraries/FilesTable.vue:60
-#: front/src/components/mixins/Translations.vue:57
+#: front/src/components/mixins/Translations.vue:69
 msgctxt "Content/*/*"
 msgid "Duration"
 msgstr "Длительность"
@@ -1480,78 +1651,61 @@ msgctxt "Content/Signup/Message"
 msgid "E-mail address confirmed"
 msgstr "Адрес электронной почты подтверждён"
 
-#: front/src/components/Home.vue:88
-msgctxt "Content/Home/Title"
-msgid "Easy to use"
-msgstr "Легко в использовании"
-
-#: front/src/components/library/AlbumBase.vue:68
-#: front/src/components/library/ArtistBase.vue:79
-#: front/src/components/library/TrackBase.vue:87
+#: front/src/components/auth/Settings.vue:246
+#: src/components/library/AlbumBase.vue:73
+#: front/src/components/library/ArtistBase.vue:84
+#: front/src/components/library/TrackBase.vue:89
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:45
 #: front/src/components/radios/Card.vue:23
-#: src/views/admin/library/AlbumDetail.vue:65
-#: front/src/views/admin/library/ArtistDetail.vue:64
-#: front/src/views/admin/library/TrackDetail.vue:64
+#: src/views/admin/library/AlbumDetail.vue:71
+#: front/src/views/admin/library/ArtistDetail.vue:69
+#: front/src/views/admin/library/TrackDetail.vue:70
 #: front/src/views/content/libraries/Detail.vue:9
 #: src/views/playlists/Detail.vue:31
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Edit"
 msgstr "Редактировать"
 
-#: front/src/components/auth/Settings.vue:246
-msgctxt "Content/Settings/Button.Label"
-msgid "Edit"
-msgstr "Редактировать"
-
 #: front/src/components/auth/ApplicationEdit.vue:30
 #: front/src/components/auth/ApplicationEdit.vue:75
 msgctxt "Content/Applications/Title"
 msgid "Edit application"
-msgstr "Ошибка во время применения действия"
-
-#: front/src/components/About.vue:22
-msgctxt "Content/Settings/Button.Label/Verb"
-msgid "Edit instance info"
-msgstr "Редактировать информацию об узле"
+msgstr "Редактировать приложение"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:3
 msgctxt "Content/Moderation/Card.Title/Verb"
 msgid "Edit moderation rule"
-msgstr "Удалить радио"
+msgstr "Редактировать правило модерации"
 
 #: front/src/components/library/AlbumEdit.vue:4
 msgctxt "Content/*/Title"
 msgid "Edit this album"
-msgstr "Проиграть трек"
+msgstr "Редактировать этот альбом"
 
 #: front/src/components/library/ArtistEdit.vue:4
 msgctxt "Content/*/Title"
 msgid "Edit this artist"
-msgstr "Проиграть трек"
+msgstr "Редактировать этого исполнителя"
 
 #: front/src/components/library/TrackEdit.vue:4
 msgctxt "Content/*/Title"
 msgid "Edit this track"
-msgstr "Проиграть трек"
+msgstr "Редактировать этот трек"
 
-#: front/src/views/admin/library/AlbumDetail.vue:182
-#: front/src/views/admin/library/ArtistDetail.vue:171
+#: front/src/components/mixins/Translations.vue:116
+#: front/src/views/admin/library/AlbumDetail.vue:198
+#: front/src/views/admin/library/ArtistDetail.vue:186
 #: front/src/views/admin/library/Base.vue:5
 #: src/views/admin/library/EditsList.vue:24
-#: front/src/views/admin/library/TrackDetail.vue:234
+#: front/src/views/admin/library/TrackDetail.vue:250
+#: front/src/components/mixins/Translations.vue:117
 msgctxt "*/Admin/*/Noun"
 msgid "Edits"
-msgstr "Редактировать"
-
-#: front/src/components/mixins/Translations.vue:104
-#: front/src/components/mixins/Translations.vue:105
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Edits"
-msgstr "Редактировать"
+msgstr "Правки"
 
-#: front/src/components/auth/Signup.vue:30
+#: front/src/components/auth/SignupForm.vue:26
 #: front/src/components/manage/users/UsersTable.vue:38
+#: front/src/components/moderation/ReportModal.vue:31
 msgctxt "Content/*/*/Noun"
 msgid "Email"
 msgstr "Электронная почта"
@@ -1561,52 +1715,60 @@ msgctxt "Content/*/*"
 msgid "Email address"
 msgstr "Адрес электронной почты"
 
-#: front/src/components/library/AlbumBase.vue:53
-#: front/src/components/library/ArtistBase.vue:64
-#: front/src/components/library/TrackBase.vue:72
+#: front/src/components/library/AlbumBase.vue:54
+#: front/src/components/library/ArtistBase.vue:65
+#: front/src/components/library/TrackBase.vue:70
+#: src/views/playlists/Detail.vue:38
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Embed"
-msgstr ""
+msgstr "Внедрить"
 
-#: front/src/components/audio/EmbedWizard.vue:20
+#: front/src/components/audio/EmbedWizard.vue:30
 msgctxt "Popup/Embed/Input.Label/Noun"
 msgid "Embed code"
-msgstr ""
+msgstr "Внедрить код"
 
-#: front/src/components/library/AlbumBase.vue:26
+#: front/src/components/library/AlbumBase.vue:27
 msgctxt "Popup/Album/Title/Verb"
 msgid "Embed this album on your website"
-msgstr ""
+msgstr "Внедрить этот альбом на Ваш сайт"
 
-#: front/src/components/library/ArtistBase.vue:37
+#: front/src/components/library/ArtistBase.vue:38
 msgctxt "Popup/Artist/Title/Verb"
 msgid "Embed this artist work on your website"
-msgstr ""
+msgstr "Внедрить произведения этого исполнителя на Ваш сайт"
+
+#: front/src/views/playlists/Detail.vue:52
+msgctxt "Popup/Album/Title/Verb"
+msgid "Embed this playlist on your website"
+msgstr "Внедрить этот альбом на Ваш сайт"
 
-#: front/src/components/library/TrackBase.vue:45
+#: front/src/components/library/TrackBase.vue:43
 msgctxt "Popup/Track/Title"
 msgid "Embed this track on your website"
-msgstr ""
+msgstr "Внедрить этот трек на Ваш сайт"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:259
-#: front/src/views/admin/moderation/DomainsDetail.vue:187
+#: front/src/views/admin/moderation/AccountsDetail.vue:260
+#: front/src/views/admin/moderation/DomainsDetail.vue:224
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Emitted library follows"
-msgstr ""
+msgstr "Исходящие подписки на библиотеки"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:243
-#: front/src/views/admin/moderation/DomainsDetail.vue:171
+#: front/src/views/admin/moderation/AccountsDetail.vue:244
+#: front/src/views/admin/moderation/DomainsDetail.vue:208
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Emitted messages"
-msgstr ""
+msgstr "Исходящие сообщения"
 
+#: front/src/components/About.vue:114 src/components/About.vue:127
+#: front/src/components/About.vue:140
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:8
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:17
 #: front/src/views/admin/moderation/AccountsDetail.vue:156
 #: front/src/views/admin/moderation/AccountsDetail.vue:160
-msgctxt "*/*/*"
+msgctxt "*/*/*/State of feature"
 msgid "Enabled"
-msgstr "Отключить доступ"
+msgstr "Включено"
 
 #: front/src/views/playlists/Detail.vue:30
 msgctxt "Content/Playlist/Button.Label/Verb"
@@ -1616,57 +1778,58 @@ msgstr "Закончить редактирование"
 #: front/src/views/content/remote/ScanForm.vue:50
 msgctxt "Content/Library/Input.Placeholder"
 msgid "Enter a library URL"
-msgstr "Очистить библиотеку"
+msgstr "Введите URL библиотеки"
 
 #: front/src/components/library/Radios.vue:141
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Enter a radio name…"
-msgstr "Введите название радио..."
+msgstr "Введите название радио…"
 
-#: front/src/components/library/Albums.vue:119
+#: front/src/components/library/Albums.vue:128
 msgctxt "Content/Search/Input.Placeholder"
-msgid "Enter album title..."
-msgstr ""
+msgid "Enter album title…"
+msgstr "Введите название альбома…"
 
 #: front/src/components/library/Artists.vue:116
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Enter artist name…"
-msgstr "Введите имя исполнителя..."
+msgstr "Введите имя исполнителя…"
 
 #: front/src/views/playlists/List.vue:107
 msgctxt "Content/Playlist/Placeholder/Call to action"
 msgid "Enter playlist name…"
-msgstr "Введите название списка воспроизведения..."
+msgstr "Введите название списка воспроизведения…"
 
 #: front/src/views/auth/PasswordReset.vue:54
 msgctxt "Content/Signup/Input.Placeholder"
-msgid "Enter the email address binded to your account"
-msgstr ""
+msgid "Enter the email address linked to your account"
+msgstr "Введите адрес электронной почты, связанный с Вашим аккаунтом"
 
-#: front/src/components/auth/Signup.vue:103
+#: front/src/components/auth/SignupForm.vue:96
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your email"
-msgstr "Введите ваш адрес электронной почты"
+msgstr "Введите Ваш адрес электронной почты"
 
-#: front/src/components/auth/Signup.vue:98 src/components/auth/Signup.vue:100
+#: front/src/components/auth/SignupForm.vue:91
+#: src/components/auth/SignupForm.vue:93
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your invitation code (case insensitive)"
-msgstr "Введите ваш код приглашения (нечувствительно к регистру)"
+msgstr "Введите Ваш код приглашения (нечувствительно к регистру)"
 
 #: front/src/components/metadata/Search.vue:114
 msgctxt "Content/Library/Input.Placeholder/Verb"
 msgid "Enter your search query…"
-msgstr "Введите ваш поисковый запрос..."
+msgstr "Введите Ваш поисковый запрос…"
 
-#: front/src/components/auth/Signup.vue:102
+#: front/src/components/auth/SignupForm.vue:95
 msgctxt "Content/Signup/Form/Placeholder"
 msgid "Enter your username"
-msgstr "Введите ваше имя пользователя"
+msgstr "Введите Ваше имя пользователя"
 
-#: front/src/components/auth/Login.vue:83
+#: front/src/components/auth/LoginForm.vue:81
 msgctxt "Content/Login/Input.Placeholder"
 msgid "Enter your username or email"
-msgstr "Введите ваше имя пользователя или адрес электронной почты"
+msgstr "Введите Ваше имя пользователя или адрес электронной почты"
 
 #: front/src/components/auth/SubsonicTokenForm.vue:19
 #: front/src/views/content/libraries/Form.vue:4
@@ -1678,18 +1841,18 @@ msgstr "Ошибка"
 #: front/src/components/library/ImportStatusModal.vue:32
 msgctxt "Popup/Import/Table.Label/Noun"
 msgid "Error detail"
-msgstr "Ошибка во время создания приглашения"
+msgstr "Информация об ошибке"
 
-#: front/src/views/admin/Settings.vue:87
+#: front/src/views/admin/Settings.vue:89
 msgctxt "Content/Admin/Menu"
 msgid "Error reporting"
-msgstr "Ошибка во время создания приглашения"
+msgstr "Сообщения об ошибках"
 
 #: front/src/components/federation/FetchButton.vue:26
 #: front/src/components/library/ImportStatusModal.vue:24
 msgctxt "Popup/Import/Table.Label/Noun"
 msgid "Error type"
-msgstr "Ошибочно"
+msgstr "Тип ошибки"
 
 #: front/src/components/common/ActionTable.vue:94
 msgctxt "Content/*/Error message/Header"
@@ -1704,22 +1867,22 @@ msgstr "Ошибка во время запроса сброса пароля"
 #: front/src/components/auth/Authorize.vue:6
 msgctxt "Popup/Moderation/Error message"
 msgid "Error while authorizing application"
-msgstr "Ошибка во время применения действия"
+msgstr "Ошибка при авторизации приложения"
 
 #: front/src/views/auth/PasswordResetConfirm.vue:7
 msgctxt "Content/Signup/Card.Title"
 msgid "Error while changing your password"
-msgstr "Ошибка во время изменения вашего пароля"
+msgstr "Ошибка во время изменения Вашего пароля"
 
 #: front/src/views/admin/moderation/DomainsList.vue:6
 msgctxt "Content/Moderation/Message.Title"
 msgid "Error while creating domain"
-msgstr "Ошибка во время создания приглашения"
+msgstr "Ошибка во время создания домена"
 
 #: front/src/components/moderation/FilterModal.vue:13
 msgctxt "Popup/Moderation/Error message"
 msgid "Error while creating filter"
-msgstr "Ошибка во время создания приглашения"
+msgstr "Ошибка во время создания фильтра"
 
 #: front/src/components/manage/users/InvitationForm.vue:4
 msgctxt "Content/Admin/Error message.Title"
@@ -1729,23 +1892,19 @@ msgstr "Ошибка во время создания приглашения"
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:7
 msgctxt "Content/Moderation/Error message.Title"
 msgid "Error while creating rule"
-msgstr "Ошибка во время создания приглашения"
+msgstr "Ошибка во время создания правила"
 
 #: front/src/components/auth/Authorize.vue:7
 msgctxt "Popup/Moderation/Error message"
 msgid "Error while fetching application data"
-msgstr "Ошибка во время создания приглашения"
+msgstr "Ошибка при запросе данных приложения"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:118
+#: front/src/views/admin/moderation/DomainsDetail.vue:155
 msgctxt "Content/Moderation/Table"
 msgid "Error while fetching node info"
-msgstr "Ошибка во время загрузки удалённой библиотеки"
+msgstr "Ошибка при запросе данных узла"
 
 #: front/src/components/admin/SettingsGroup.vue:5
-msgctxt "Content/Settings/Error message.Title"
-msgid "Error while saving settings"
-msgstr "Ошибка во время сохранения настроек"
-
 #: front/src/components/federation/FetchButton.vue:73
 msgctxt "Content/*/Error message.Title"
 msgid "Error while saving settings"
@@ -1754,7 +1913,17 @@ msgstr "Ошибка во время сохранения настроек"
 #: front/src/components/library/EditForm.vue:46
 msgctxt "Content/Library/Error message.Title"
 msgid "Error while submitting edit"
-msgstr "Ошибка во время сохранения настроек"
+msgstr "Ошибка при отправке правки"
+
+#: front/src/components/manage/moderation/NoteForm.vue:3
+msgctxt "Content/Moderation/Error message.Title"
+msgid "Error while submitting note"
+msgstr "Ошибка при отправке примечания"
+
+#: front/src/components/moderation/ReportModal.vue:11
+msgctxt "Popup/Moderation/Error message"
+msgid "Error while submitting report"
+msgstr "Ошибка при отправке жалобы"
 
 #: front/src/components/mixins/Translations.vue:32
 #: front/src/components/mixins/Translations.vue:33
@@ -1783,16 +1952,21 @@ msgstr "Все на этом узле"
 #: front/src/components/mixins/Translations.vue:13
 msgctxt "Content/Settings/Dropdown"
 msgid "Everyone, across all instances"
-msgstr "Все на этом узле"
+msgstr "Все на всех узлах"
 
 #: front/src/components/library/radios/Builder.vue:62
 msgctxt "Content/Radio/Table.Label/Verb"
 msgid "Exclude"
 msgstr "Исключить"
 
+#: front/src/components/common/CollapseLink.vue:2
+msgctxt "*/*/Button,Label"
+msgid "Expand"
+msgstr "Раскрыть"
+
 #: front/src/components/manage/users/InvitationsTable.vue:41
-#: front/src/components/mixins/Translations.vue:49
-#: front/src/components/mixins/Translations.vue:50
+#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:60
 msgctxt "Content/Admin/Table.Label/Noun"
 msgid "Expiration date"
 msgstr "Дата истечения"
@@ -1809,56 +1983,48 @@ msgstr "Истёк/использован"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:110
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Explain why you're applying this policy. Depending on your instance "
-"configuration, this will help you remember why you acted on this account or "
-"domain, and may be displayed publicly to help users understand what "
-"moderation rules are in place."
-msgstr ""
+msgid "Explain why you're applying this policy. Depending on your instance configuration, this will help you remember why you acted on this account or domain, and may be displayed publicly to help users understand what moderation rules are in place."
+msgstr "Объясните назначение этой политики. В зависимости от настроек Вашего узла, это поможет Вам вспомнить, зачем Вы назначили её для этого аккаунта или домена, так же это может быть доступно публично, чтобы помочь пользователям понять действующие правила модерации."
 
 #: front/src/components/manage/library/UploadsTable.vue:25
 #: front/src/views/content/libraries/FilesTable.vue:16
 msgctxt "Content/Library/Dropdown"
 msgid "Failed"
-msgstr "Ошибочные треки:"
+msgstr "Ошибки"
 
-#: front/src/views/content/remote/Card.vue:62
+#: front/src/views/content/remote/Card.vue:75
 msgctxt "Content/Library/Card.List item/Noun"
 msgid "Failed tracks:"
 msgstr "Ошибочные треки:"
 
-#: front/src/views/admin/library/AlbumDetail.vue:165
-#: front/src/views/admin/library/ArtistDetail.vue:154
-#: front/src/views/admin/library/TrackDetail.vue:217
+#: front/src/views/admin/library/AlbumDetail.vue:171
+#: front/src/views/admin/library/ArtistDetail.vue:159
+#: front/src/views/admin/library/TrackDetail.vue:223
 msgctxt "*/*/*"
 msgid "Favorited tracks"
-msgstr "Ошибочные треки:"
+msgstr "Избранные треки"
 
 #: front/src/components/Sidebar.vue:66
+#: src/components/mixins/Translations.vue:88
+#: front/src/components/mixins/Translations.vue:89
 msgctxt "Sidebar/Favorites/List item.Link/Noun"
 msgid "Favorites"
 msgstr "Избранное"
 
-#: front/src/components/mixins/Translations.vue:76
-#: front/src/components/mixins/Translations.vue:77
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Favorites"
-msgstr "Избранное"
-
-#: front/src/views/admin/Settings.vue:84
-msgctxt "Content/Admin/Menu"
+#: front/src/components/About.vue:110 src/views/admin/Settings.vue:84
+msgctxt "*/*/*"
 msgid "Federation"
 msgstr "Федерация"
 
 #: front/src/components/library/TrackDetail.vue:66
 msgctxt "Content/*/*/Noun"
 msgid "Federation ID"
-msgstr "Федерация"
+msgstr "ID Федерации"
 
 #: front/src/components/library/EditCard.vue:45
 msgctxt "Content/Library/Card.Table.Header/Short"
 msgid "Field"
-msgstr ""
+msgstr "Поле"
 
 #: front/src/components/library/FileUpload.vue:93
 msgctxt "Content/Library/Table.Label"
@@ -1870,6 +2036,11 @@ msgctxt "Content/Radio/Table.Label/Noun"
 msgid "Filter name"
 msgstr "Имя фильтра"
 
+#: front/src/components/Home.vue:118
+msgctxt "Content/Home/Link"
+msgid "Find another pod"
+msgstr "Найти другой узел"
+
 #: front/src/components/manage/library/UploadsTable.vue:26
 #: front/src/components/mixins/Translations.vue:36
 #: front/src/views/content/libraries/FilesTable.vue:17
@@ -1879,25 +2050,31 @@ msgid "Finished"
 msgstr "Завершено"
 
 #: front/src/components/manage/moderation/AccountsTable.vue:42
-#: front/src/components/manage/moderation/DomainsTable.vue:41
-#: front/src/views/admin/library/AlbumDetail.vue:149
-#: front/src/views/admin/library/ArtistDetail.vue:138
-#: front/src/views/admin/library/LibraryDetail.vue:153
-#: front/src/views/admin/library/TrackDetail.vue:201
+#: front/src/components/manage/moderation/DomainsTable.vue:49
+#: front/src/views/admin/library/AlbumDetail.vue:155
+#: front/src/views/admin/library/ArtistDetail.vue:143
+#: front/src/views/admin/library/LibraryDetail.vue:162
+#: front/src/views/admin/library/TagDetail.vue:98
+#: front/src/views/admin/library/TrackDetail.vue:207
 #: front/src/views/admin/library/UploadDetail.vue:167
-#: front/src/views/admin/moderation/AccountsDetail.vue:235
-#: front/src/views/admin/moderation/DomainsDetail.vue:151
+#: front/src/views/admin/moderation/AccountsDetail.vue:236
+#: front/src/views/admin/moderation/DomainsDetail.vue:188
 msgctxt "Content/Moderation/Table.Label/Short (Value is a date)"
 msgid "First seen"
-msgstr "Дата истечения"
+msgstr "Впервые увиден"
 
-#: front/src/components/mixins/Translations.vue:46
-#: front/src/components/mixins/Translations.vue:47
+#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:57
 msgctxt "Content/Moderation/Dropdown/Noun"
 msgid "First seen date"
-msgstr "Дата истечения"
+msgstr "Дата первого появления"
+
+#: front/src/components/ShortcutsModal.vue:64
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Focus searchbar"
+msgstr "Перейти в панель поиска"
 
-#: front/src/views/content/remote/Card.vue:87
+#: front/src/views/content/remote/Card.vue:100
 msgctxt "Content/Library/Card.Button.Label/Verb"
 msgid "Follow"
 msgstr "Подписаться"
@@ -1907,211 +2084,164 @@ msgctxt "Content/Library/Title/Verb"
 msgid "Follow remote libraries"
 msgstr "Подписаться на удалённые библиотеки"
 
-#: front/src/views/content/remote/Card.vue:92
+#: front/src/views/content/remote/Card.vue:105
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Follow request pending approval"
 msgstr "Подписка требует подтверждения"
 
-#: front/src/components/mixins/Translations.vue:64
-#: front/src/views/admin/library/LibraryDetail.vue:161
+#: front/src/components/manage/library/LibrariesTable.vue:53
+#: front/src/components/mixins/Translations.vue:76
+#: front/src/views/admin/library/LibraryDetail.vue:170
 #: front/src/views/content/libraries/Detail.vue:7
-#: front/src/components/mixins/Translations.vue:65
+#: front/src/components/mixins/Translations.vue:77
 msgctxt "Content/Federation/*/Noun"
 msgid "Followers"
 msgstr "Подписчики"
 
-#: front/src/components/manage/library/LibrariesTable.vue:53
-msgctxt "Content/*/*/Noun"
-msgid "Followers"
-msgstr "Подписчики"
-
-#: front/src/views/content/remote/Card.vue:103
+#: front/src/views/content/remote/Card.vue:116
 msgctxt "Content/Library/Card.Paragraph"
 msgid "Following"
-msgstr "Подписаться"
+msgstr "Подписка"
 
-#: front/src/components/mixins/Translations.vue:84
-#: front/src/components/mixins/Translations.vue:85
+#: front/src/components/mixins/Translations.vue:96
+#: front/src/components/mixins/Translations.vue:97
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Follows"
-msgstr "Подписаться"
+msgstr "Подписки"
 
-#: front/src/components/library/TrackBase.vue:17
+#: front/src/components/library/TrackBase.vue:245
 msgctxt "Content/Track/Paragraph"
-msgid ""
-"From album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> by <a"
-" class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
-msgstr ""
+msgid "From album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgstr "Из альбома <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> от <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
 
 #: front/src/components/auth/Authorize.vue:28
 msgctxt "Content/Auth/Label/Noun"
 msgid "Full access"
-msgstr "Отключить доступ"
+msgstr "Полный доступ"
 
 #: front/src/components/auth/SubsonicTokenForm.vue:7
 msgctxt "Content/Settings/Paragraph'"
-msgid ""
-"Funkwhale is compatible with other music players that support the Subsonic "
-"API."
-msgstr ""
-"Funkwhale совместим с другими музыкальными плеерами которые поддерживают "
-"Subsonic API."
-
-#: front/src/components/Home.vue:90
-msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale is dead simple to use."
-msgstr "Funkwhale чрезвычайно прост в использовании."
-
-#: front/src/components/Home.vue:39
-msgctxt "Content/Home/Paragraph"
-msgid ""
-"Funkwhale is designed to make it easy to listen to music you like, or to "
-"discover new artists."
-msgstr ""
-"Funkwhale создан чтобы упростить прослушивание любимой музыки и поиск новых "
-"исполнителей."
+msgid "Funkwhale is compatible with other music players that support the Subsonic API."
+msgstr "Funkwhale совместим с другими музыкальными плеерами, которые поддерживают Subsonic API."
 
-#: front/src/components/Home.vue:111
+#: front/src/components/Home.vue:88
 msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale is free and gives you control on your music."
-msgstr "Funkwhale свободен и предоставляет вам контроль над вашей музыкой."
+msgid "Funkwhale is free and developped by a friendly community of volunteers."
+msgstr "Funkwhale бесплатен и разрабатывается дружелюбной командой добровольцев."
 
-#: front/src/components/Home.vue:66
-msgctxt "Content/Home/Paragraph"
-msgid "Funkwhale takes care of handling your music"
-msgstr "Funkwhale заботится об управлении вашей музыкой"
+#: front/src/components/About.vue:78
+msgctxt "*/*/*"
+msgid "Funkwhale version"
+msgstr "Версия Funkwhale"
 
-#: front/src/components/ShortcutsModal.vue:38
+#: front/src/components/ShortcutsModal.vue:56
 msgctxt "Popup/Keyboard shortcuts/Title"
 msgid "General shortcuts"
-msgstr ""
+msgstr "Общие горячие клавиши"
 
 #: front/src/components/manage/users/InvitationForm.vue:16
 msgctxt "Content/Admin/Button.Label/Verb"
 msgid "Get a new invitation"
 msgstr "Получить приглашение"
 
-#: front/src/components/Home.vue:13
-msgctxt "Content/Home/Button.Label/Verb"
-msgid "Get me to the library"
-msgstr "Перейти в библиотеку"
-
-#: front/src/components/Home.vue:70
-msgctxt "Content/Home/List item/Verb"
-msgid ""
-"Get quality metadata about your music thanks to <a href=\"%{ url }\" "
-"target=\"_blank\">MusicBrainz</a>"
-msgstr ""
-"Получайте качественные метаданные о вашей музыке с помощью <a href=\"%{ url "
-"}\" target=\"_blank\">MusicBrainz</a>"
-
 #: front/src/views/content/Home.vue:12 src/views/content/Home.vue:19
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Get started"
 msgstr "Начать"
 
-#: front/src/components/Footer.vue:37
+#: front/src/components/Footer.vue:45
+#: src/components/library/ImportStatusModal.vue:45
 msgctxt "Footer/*/Link"
 msgid "Getting help"
-msgstr "Настройки"
-
-#: front/src/components/library/ImportStatusModal.vue:45
-msgctxt "Popup/Import/Table.Label/Noun"
-msgid "Getting help"
-msgstr "Настройки"
+msgstr "Помощь"
 
 #: front/src/components/common/ActionTable.vue:35
 #: front/src/components/common/ActionTable.vue:56
 msgctxt "Content/*/Button.Label/Short, Verb"
 msgid "Go"
-msgstr ""
+msgstr "Перейти"
 
 #: front/src/components/PageNotFound.vue:14
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Go to home page"
 msgstr "Перейти на домашнюю страницу"
 
+#: front/src/views/Notifications.vue:27 src/views/Notifications.vue:61
+msgctxt "Content/Notifications/Button.Label"
+msgid "Got it!"
+msgstr "Ясно!"
+
 #: front/src/components/auth/Settings.vue:128
 msgctxt "Content/Settings/Title"
 msgid "Hidden artists"
-msgstr "Просмотр исполнителей"
+msgstr "Скрытые исполнители"
+
+#: front/src/components/About.vue:155
+msgctxt "*/*/*/Verb"
+msgid "Hide"
+msgstr "Скрыть"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:114
 msgctxt "Content/Moderation/Help text"
 msgid "Hide account or domain content, except from followers."
-msgstr ""
+msgstr "Скрыть контент аккаунта или домена от всех, кроме подписчиков."
 
 #: front/src/components/moderation/FilterModal.vue:40
 msgctxt "Popup/*/Button.Label"
 msgid "Hide content"
-msgstr "Добавить содержимое"
+msgstr "Скрыть содержимое"
 
-#: front/src/components/audio/PlayButton.vue:26
+#: front/src/components/audio/PlayButton.vue:31
 msgctxt "*/Queue/Dropdown/Button/Label/Short"
 msgid "Hide content from this artist"
-msgstr ""
+msgstr "Скрыть контент этого исполнителя"
 
-#: front/src/components/audio/Player.vue:643
+#: front/src/components/audio/Player.vue:669
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Hide content from this artist…"
-msgstr ""
+msgstr "Скрыть контент этого исполнителя…"
 
 #: front/src/components/library/Home.vue:65
 msgctxt "Head/Home/Title"
 msgid "Home"
 msgstr "Домой"
 
-#: front/src/components/instance/Stats.vue:36
-msgctxt "Content/About/Paragraph/Unit"
-msgid "Hours of music"
-msgstr "Часов музыки"
-
 #: front/src/components/auth/SubsonicTokenForm.vue:10
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"However, accessing Funkwhale from those clients require a separate password "
-"you can set below."
-msgstr ""
-"Однако, получение доступа к Freewhale из этих клиентов требует отдельного "
-"пароля который может быть установлен ниже."
+msgid "However, accessing Funkwhale from those clients require a separate password you can set below."
+msgstr "Однако, получение доступа к Freewhale из этих клиентов требует отдельного пароля, который может быть задан ниже."
 
 #: front/src/views/auth/PasswordResetConfirm.vue:24
 msgctxt "Content/Signup/Paragraph"
-msgid ""
-"If the email address provided in the previous step is valid and binded to a "
-"user account, you should receive an email with reset instructions in the "
-"next couple of minutes."
-msgstr ""
-"Если указанный на предыдущем шаге адрес электронной почты правильный и "
-"привязан к пользовательскому аккаунту, то вы должны получить письмо с "
-"инструкциями по сбросу в течение нескольких минут."
+msgid "If the email address provided in the previous step is valid and linked to a user account, you should receive an email with reset instructions in the next couple of minutes."
+msgstr "Если указанный на предыдущем шаге адрес электронной почты правильный и привязан к пользовательскому аккаунту, то Вы должны получить письмо с инструкциями по сбросу в течение нескольких минут."
 
 #: front/src/components/auth/Settings.vue:205
 msgctxt "Content/Applications/Paragraph"
-msgid ""
-"If you authorize third-party applications to access your data, those "
-"applications will be listed here."
-msgstr ""
+msgid "If you authorize third-party applications to access your data, those applications will be listed here."
+msgstr "Если Вы разрешите сторонним приложениям доступ к Вашим данным, эти приложения появятся здесь."
+
+#: front/src/components/mixins/Translations.vue:46
+#: front/src/components/mixins/Translations.vue:47
+msgctxt "Content/Moderation/Dropdown"
+msgid "Illegal content"
+msgstr "Незаконное содержимое"
 
 #: front/src/components/library/ImportStatusModal.vue:3
 msgctxt "Popup/Import/Title"
 msgid "Import detail"
-msgstr "Статус импорта"
+msgstr "Детали импорта"
 
 #: front/src/components/library/FileUpload.vue:50
 msgctxt "Content/Library/Input.Label/Noun"
 msgid "Import reference"
-msgstr ""
+msgstr "Ссылка на импорт"
 
 #: front/src/components/manage/library/UploadsTable.vue:20
-#: front/src/views/content/libraries/FilesTable.vue:11
-#: front/src/views/content/libraries/FilesTable.vue:59
-msgctxt "Content/Library/*/Noun"
-msgid "Import status"
-msgstr "Статус импорта"
-
 #: front/src/components/manage/library/UploadsTable.vue:64
 #: front/src/views/admin/library/UploadDetail.vue:131
+#: front/src/views/content/libraries/FilesTable.vue:11
+#: front/src/views/content/libraries/FilesTable.vue:59
 msgctxt "Content/*/*/Noun"
 msgid "Import status"
 msgstr "Статус импорта"
@@ -2120,22 +2250,22 @@ msgstr "Статус импорта"
 #: front/src/components/mixins/Translations.vue:38
 msgctxt "Content/Library/Help text"
 msgid "Imported"
-msgstr "Дата импорта"
+msgstr "Импортировано"
 
 #: front/src/components/federation/FetchButton.vue:47
 msgctxt "*/*/Error"
 msgid "Impossible to connect to the remote server"
-msgstr ""
+msgstr "Невозможно соединиться с удалённым сервером"
 
 #: front/src/components/moderation/FilterModal.vue:26
 msgctxt "Popup/Moderation/List item"
 msgid "In \"Recently added\" widget"
-msgstr "Недавно добавленные"
+msgstr "Из виджета \"Недавно добавленные\""
 
 #: front/src/components/moderation/FilterModal.vue:27
 msgctxt "Popup/Moderation/List item"
 msgid "In artists and album listings"
-msgstr ""
+msgstr "В списках исполнителей и альбомов"
 
 #: front/src/components/favorites/TrackFavoriteIcon.vue:3
 msgctxt "Content/Track/Button.Message"
@@ -2145,25 +2275,24 @@ msgstr "В избранном"
 #: front/src/components/moderation/FilterModal.vue:25
 msgctxt "Popup/Moderation/List item"
 msgid "In other users favorites and listening history"
-msgstr ""
+msgstr "В избранном и истории прослушивания других пользователей"
 
 #: front/src/components/moderation/FilterModal.vue:28
 msgctxt "Popup/Moderation/List item"
 msgid "In radio suggestions"
-msgstr ""
+msgstr "В рекомендованных радио"
 
-#: front/src/components/manage/users/UsersTable.vue:54
+#: front/src/components/manage/users/UsersTable.vue:55
 msgctxt "Content/Admin/Table"
 msgid "Inactive"
 msgstr "Неактивен(на)"
 
-#: front/src/components/ShortcutsModal.vue:71
+#: front/src/components/ShortcutsModal.vue:124
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Increase volume"
-msgstr ""
+msgstr "Увеличить громкость"
 
 #: front/src/components/playlists/Editor.vue:41
-#, fuzzy
 msgctxt "Content/Playlist/Button.Label/Verb"
 msgid "Insert from queue (%{ count } track)"
 msgid_plural "Insert from queue (%{ count } tracks)"
@@ -2175,12 +2304,12 @@ msgstr[2] "Вставить из очереди (%{ count } треков)"
 #: front/src/components/mixins/Translations.vue:17
 msgctxt "Content/Settings/Dropdown/Short"
 msgid "Instance"
-msgstr "Радио узла"
+msgstr "Узел"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:71
+#: front/src/views/admin/moderation/DomainsDetail.vue:99
 msgctxt "Content/Moderation/Title"
 msgid "Instance data"
-msgstr "Радио узла"
+msgstr "Данные узла"
 
 #: front/src/views/admin/Settings.vue:80
 msgctxt "Content/Admin/Menu"
@@ -2200,21 +2329,27 @@ msgstr "Настройки узла"
 #: front/src/components/SetInstanceModal.vue:19
 msgctxt "Popup/Instance/Input.Label/Noun"
 msgid "Instance URL"
-msgstr "Радио узла"
+msgstr "URL узла"
+
+#: front/src/components/manage/moderation/ReportCard.vue:92
+#: front/src/components/manage/moderation/ReportCard.vue:203
+msgctxt "Content/*/*/Noun"
+msgid "Internal notes"
+msgstr "Внутренние заметки"
 
 #: front/src/components/library/FileUpload.vue:268
 msgctxt "Content/Library/Help text"
-msgid ""
-"Invalid file type, ensure you are uploading an audio file. Supported file "
-"extensions are %{ extensions }"
-msgstr ""
+msgid "Invalid file type, ensure you are uploading an audio file. Supported file extensions are %{ extensions }"
+msgstr "Неправильный тип файла, убедитесь, что закачиваете аудио-файл. Поддерживаемые типы файлов: %{ extensions }"
 
 #: front/src/components/library/ImportStatusModal.vue:139
+#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:46
 msgctxt "Popup/Import/Error.Label"
 msgid "Invalid metadata"
-msgstr ""
+msgstr "Неправильные метаданные"
 
-#: front/src/components/auth/Signup.vue:44
+#: front/src/components/auth/SignupForm.vue:40
 #: front/src/components/manage/users/InvitationForm.vue:11
 msgctxt "Content/*/Input.Label"
 msgid "Invitation code"
@@ -2226,7 +2361,13 @@ msgctxt "*/Admin/*/Noun"
 msgid "Invitations"
 msgstr "Приглашения"
 
-#: front/src/components/Footer.vue:41
+#: front/src/components/manage/moderation/DomainsTable.vue:9
+#: front/src/views/admin/moderation/DomainsDetail.vue:106
+msgctxt "Content/Moderation/*/Adjective"
+msgid "Is present on allow-list"
+msgstr "Присутствует в \"белом\" списке"
+
+#: front/src/components/Footer.vue:49
 msgctxt "Footer/*/List item.Link"
 msgid "Issue tracker"
 msgstr "Багтрекер"
@@ -2234,22 +2375,23 @@ msgstr "Багтрекер"
 #: front/src/components/SetInstanceModal.vue:5
 msgctxt "Popup/Instance/Error message.Title"
 msgid "It is not possible to connect to the given URL"
-msgstr ""
+msgstr "Невозможно соединиться с указанным URL"
 
-#: front/src/components/Home.vue:50
-msgctxt "Content/Home/List item/Verb"
-msgid "Keep a track of your favorite songs"
-msgstr ""
+#: front/src/components/mixins/Translations.vue:65
+#: front/src/components/mixins/Translations.vue:66
+msgctxt "*/*/*/Noun"
+msgid "Items"
+msgstr "элементы"
 
 #: front/src/components/Footer.vue:33 src/components/ShortcutsModal.vue:3
 msgctxt "*/*/*/Noun"
 msgid "Keyboard shortcuts"
-msgstr ""
+msgstr "Горячие клавиши"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:161
+#: front/src/views/admin/moderation/DomainsDetail.vue:198
 msgctxt "Content/Moderation/Table.Label.Link"
 msgid "Known accounts"
-msgstr "Мой аккаунт"
+msgstr "Известные аккаунты"
 
 #: front/src/views/content/remote/Home.vue:14
 msgctxt "Content/Library/Title"
@@ -2257,18 +2399,18 @@ msgid "Known libraries"
 msgstr "Известные библиотеки"
 
 #: front/src/components/manage/users/UsersTable.vue:41
-#: front/src/components/mixins/Translations.vue:58
-#: front/src/views/admin/moderation/AccountsDetail.vue:205
-#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:70
+#: front/src/views/admin/moderation/AccountsDetail.vue:206
+#: front/src/components/mixins/Translations.vue:71
 msgctxt "Content/Profile/Table.Label/Short, Noun (Value is a date)"
 msgid "Last activity"
 msgstr "Последняя активность"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:188
-#: front/src/views/admin/moderation/DomainsDetail.vue:78
+#: front/src/views/admin/moderation/AccountsDetail.vue:189
+#: front/src/views/admin/moderation/DomainsDetail.vue:115
 msgctxt "Content/*/Table.Label"
 msgid "Last checked"
-msgstr "Последнее обновление:"
+msgstr "Последнее обновление"
 
 #: front/src/components/playlists/PlaylistModal.vue:46
 msgctxt "Popup/Playlist/Table.Label/Short"
@@ -2278,15 +2420,15 @@ msgstr "Последнее изменение"
 #: front/src/components/manage/moderation/AccountsTable.vue:43
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Last seen"
-msgstr "Последнее обновление:"
+msgstr "Последний раз был виден"
 
-#: front/src/components/mixins/Translations.vue:47
-#: front/src/components/mixins/Translations.vue:48
+#: front/src/components/mixins/Translations.vue:57
+#: front/src/components/mixins/Translations.vue:58
 msgctxt "Content/Moderation/Dropdown/Noun"
 msgid "Last seen date"
-msgstr "Последнее обновление:"
+msgstr "Дата последнего появления"
 
-#: front/src/views/content/remote/Card.vue:60
+#: front/src/views/content/remote/Card.vue:73
 msgctxt "Content/Library/Card.List item/Noun"
 msgid "Last update:"
 msgstr "Последнее обновление:"
@@ -2296,60 +2438,58 @@ msgctxt "Modal/*/Button.Label/Short, Verb"
 msgid "Launch"
 msgstr "Запустить"
 
-#: front/src/components/Home.vue:10
-msgctxt "Content/Home/Button.Label/Verb"
-msgid "Learn more about this instance"
-msgstr "Узнать больше об этом узле"
+#: front/src/components/Home.vue:35
+msgctxt "Content/Home/Link"
+msgid "Learn more"
+msgstr "Узнать больше"
 
 #: front/src/components/manage/users/InvitationForm.vue:58
 msgctxt "Content/Admin/Input.Placeholder"
 msgid "Leave empty for a random code"
 msgstr "Оставьте пустым для случайного кода"
 
-#: front/src/components/audio/EmbedWizard.vue:7
+#: front/src/components/audio/EmbedWizard.vue:17
 msgctxt "Popup/Embed/Paragraph"
 msgid "Leave empty for a responsive widget"
-msgstr "Оставьте пустым для случайного кода"
+msgstr "Оставьте пустым для динамического виджета"
 
-#: front/src/views/admin/library/AlbumDetail.vue:232
-#: front/src/views/admin/library/ArtistDetail.vue:221
-#: front/src/views/admin/library/TrackDetail.vue:284
-#: front/src/views/admin/moderation/AccountsDetail.vue:327
-#: front/src/views/admin/moderation/DomainsDetail.vue:234
-#: front/src/views/content/Base.vue:5
+#: front/src/components/mixins/Translations.vue:64
+#: front/src/components/mixins/Translations.vue:65
 msgctxt "*/*/*/Noun"
-msgid "Libraries"
-msgstr "Библиотеки"
+msgid "Length"
+msgstr "Длина"
 
+#: front/src/views/admin/library/AlbumDetail.vue:248
+#: front/src/views/admin/library/ArtistDetail.vue:236
 #: front/src/views/admin/library/Base.vue:17
 #: front/src/views/admin/library/LibrariesList.vue:24
-msgctxt "*/*/*"
+#: front/src/views/admin/library/TrackDetail.vue:300
+#: front/src/views/admin/moderation/AccountsDetail.vue:339
+#: front/src/views/admin/moderation/DomainsDetail.vue:271
+#: front/src/views/content/Base.vue:5
+msgctxt "*/*/*/Noun"
 msgid "Libraries"
 msgstr "Библиотеки"
 
-#: front/src/components/mixins/Translations.vue:72
-#: front/src/components/mixins/Translations.vue:73
+#: front/src/components/mixins/Translations.vue:84
+#: front/src/components/mixins/Translations.vue:85
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Libraries and uploads"
-msgstr "Библиотека обновлена"
+msgstr "Библиотеки и закачки"
 
 #: front/src/views/content/libraries/Form.vue:2
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Libraries help you organize and share your music collections. You can upload"
-" your own music collection to Funkwhale and share it with your friends and "
-"family."
-msgstr ""
-"Библиотеки помогают организовывать ваши музыкальные коллекции и делиться "
-"ими. Вы можете загружать вашу музыку на Funkwhale и делиться ею с вашими "
-"друзьями и семьёй."
+msgid "Libraries help you organize and share your music collections. You can upload your own music collection to Funkwhale and share it with your friends and family."
+msgstr "Библиотеки помогают организовывать Ваши музыкальные коллекции и делиться ими. Вы можете загружать Вашу музыку на Funkwhale и делиться ею с Вашими друзьями и семьёй."
 
-#: front/src/components/Sidebar.vue:85 src/components/instance/Stats.vue:30
+#: front/src/components/Sidebar.vue:85
 #: front/src/components/manage/library/UploadsTable.vue:60
-#: front/src/components/manage/users/UsersTable.vue:173
+#: front/src/components/manage/users/UsersTable.vue:174
+#: front/src/components/mixins/Report.vue:77
 #: front/src/views/admin/library/UploadDetail.vue:144
-#: front/src/views/admin/moderation/AccountsDetail.vue:498
-msgctxt "*/*/*"
+#: front/src/views/admin/moderation/AccountsDetail.vue:518 src/entities.js:132
+#: front/src/components/mixins/Report.vue:78
+msgctxt "*/*/*/Noun"
 msgid "Library"
 msgstr "Библиотека"
 
@@ -2361,17 +2501,17 @@ msgstr "Библиотека создана"
 #: front/src/views/admin/library/LibraryDetail.vue:78
 msgctxt "Content/Moderation/Title"
 msgid "Library data"
-msgstr "Библиотека обновлена"
+msgstr "Данные библиотеки"
 
 #: front/src/views/content/libraries/Form.vue:123
 msgctxt "Content/Library/Message"
 msgid "Library deleted"
-msgstr "Библиотека обновлена"
+msgstr "Библиотека удалена"
 
 #: front/src/views/admin/library/EditsList.vue:4
 msgctxt "Content/Admin/Title/Noun"
 msgid "Library edits"
-msgstr "Файлы библиотеки"
+msgstr "Правки библиотеки"
 
 #: front/src/views/content/libraries/Form.vue:100
 msgctxt "Content/Library/Message"
@@ -2380,71 +2520,88 @@ msgstr "Библиотека обновлена"
 
 #: front/src/components/library/TrackDetail.vue:19
 #: front/src/components/manage/library/TracksTable.vue:43
-#: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:61
+#: front/src/views/admin/library/TrackDetail.vue:165 src/edits.js:84
+#: front/src/entities.js:115
 msgctxt "Content/*/*/Noun"
 msgid "License"
-msgstr ""
+msgstr "Лицензия"
+
+#: front/src/components/Footer.vue:90
+msgctxt "Footer/Settings/Dropdown.Label/Theme name"
+msgid "Light"
+msgstr "Светлая"
+
+#: front/src/views/admin/library/AlbumDetail.vue:188
+#: front/src/views/admin/library/ArtistDetail.vue:176
+#: front/src/views/admin/library/LibraryDetail.vue:179
+#: front/src/views/admin/library/TrackDetail.vue:240
+#: front/src/views/admin/moderation/AccountsDetail.vue:269
+msgctxt "Content/Moderation/Table.Label/Noun"
+msgid "Linked reports"
+msgstr "Связанные жалобы"
 
-#: front/src/views/admin/library/AlbumDetail.vue:157
-#: front/src/views/admin/library/ArtistDetail.vue:146
-#: front/src/views/admin/library/TrackDetail.vue:209
-msgctxt "*/*/*/Noun"
-msgid "Listenings"
-msgstr ""
+#: front/src/components/Home.vue:135
+msgctxt "Content/Home/Link"
+msgid "Listen to public albums and playlists shared on this pod"
+msgstr "Слушайте публичные альбомы и списки воспроизведения, имеющиеся на этом узле"
 
-#: front/src/components/mixins/Translations.vue:80
-#: front/src/components/mixins/Translations.vue:81
-msgctxt "Content/OAuth Scopes/Label"
+#: front/src/components/mixins/Translations.vue:92
+#: front/src/views/admin/library/AlbumDetail.vue:163
+#: front/src/views/admin/library/ArtistDetail.vue:151
+#: front/src/views/admin/library/TrackDetail.vue:215
+#: front/src/components/mixins/Translations.vue:93
+msgctxt "*/*/*/Noun"
 msgid "Listenings"
-msgstr ""
+msgstr "Прослушивания"
 
 #: front/src/components/audio/track/Table.vue:25
 #: front/src/components/library/ArtistDetail.vue:28
 msgctxt "Content/*/Button.Label"
 msgid "Load more…"
-msgstr "Загружаем подписчиков..."
+msgstr "Загрузить ещё…"
 
 #: front/src/views/content/libraries/Detail.vue:21
 msgctxt "Content/Library/Paragraph"
 msgid "Loading followers…"
-msgstr "Загружаем подписчиков..."
+msgstr "Загружаем подписчиков…"
 
 #: front/src/views/content/libraries/Home.vue:3
 msgctxt "Content/Library/Paragraph"
 msgid "Loading Libraries…"
-msgstr "Загружаем Библиотеки..."
+msgstr "Загружаем Библиотеки…"
 
 #: front/src/views/content/libraries/Detail.vue:3
 #: front/src/views/content/libraries/Upload.vue:3
 msgctxt "Content/Library/Paragraph"
 msgid "Loading library data…"
-msgstr "Загружаем данные библиотеки..."
+msgstr "Загружаем данные библиотеки…"
 
-#: front/src/views/Notifications.vue:19
+#: front/src/views/Notifications.vue:84
 msgctxt "Content/Notifications/Paragraph"
 msgid "Loading notifications…"
-msgstr "Загружаем уведомления..."
+msgstr "Загружаем уведомления…"
 
 #: front/src/views/content/remote/Home.vue:3
 msgctxt "Content/Library/Paragraph"
 msgid "Loading remote libraries…"
-msgstr "Загружаем удалённые библиотеки..."
+msgstr "Загружаем удалённые библиотеки…"
 
 #: front/src/views/content/libraries/Quota.vue:4
 msgctxt "Content/Library/Paragraph"
 msgid "Loading usage data…"
-msgstr "Загружаем данные об использовании..."
+msgstr "Загружаем данные об использовании…"
 
 #: front/src/components/favorites/List.vue:5
 msgctxt "Content/Favorites/Message"
 msgid "Loading your favorites…"
-msgstr "Загружаем ваше избранное..."
+msgstr "Загружаем Ваше избранное…"
 
 #: front/src/components/manage/library/AlbumsTable.vue:65
 #: front/src/components/manage/library/ArtistsTable.vue:58
 #: front/src/components/manage/library/LibrariesTable.vue:75
 #: front/src/components/manage/library/TracksTable.vue:71
 #: front/src/components/manage/library/UploadsTable.vue:99
+#: front/src/components/manage/moderation/ReportCard.vue:173
 #: front/src/views/admin/library/AlbumDetail.vue:19
 #: front/src/views/admin/library/ArtistDetail.vue:18
 #: front/src/views/admin/library/LibraryDetail.vue:18
@@ -2452,7 +2609,7 @@ msgstr "Загружаем ваше избранное..."
 #: front/src/views/admin/library/UploadDetail.vue:19
 msgctxt "Content/Moderation/*/Short, Noun"
 msgid "Local"
-msgstr ""
+msgstr "Местное"
 
 #: front/src/components/manage/moderation/AccountsTable.vue:59
 #: front/src/views/admin/moderation/AccountsDetail.vue:18
@@ -2460,15 +2617,15 @@ msgctxt "Content/Moderation/*/Short, Noun"
 msgid "Local account"
 msgstr "Мой аккаунт"
 
-#: front/src/components/auth/Login.vue:84
+#: front/src/components/Home.vue:96 src/views/auth/Login.vue:29
 msgctxt "Head/Login/Title"
 msgid "Log In"
 msgstr "Вход"
 
-#: front/src/components/auth/Login.vue:4
+#: front/src/views/auth/Login.vue:4
 msgctxt "Content/Login/Title/Verb"
 msgid "Log in to your Funkwhale account"
-msgstr "Войти в ваш аккаунт Funkwhale"
+msgstr "Войти в Ваш аккаунт Funkwhale"
 
 #: front/src/components/auth/Logout.vue:20
 msgctxt "Head/Login/Title"
@@ -2480,7 +2637,7 @@ msgctxt "Sidebar/Profile/List item.Link"
 msgid "Logged in as %{ username }"
 msgstr "Вошли как %{ username }"
 
-#: front/src/components/Sidebar.vue:54 src/components/auth/Login.vue:42
+#: front/src/components/Sidebar.vue:54 src/components/auth/LoginForm.vue:41
 msgctxt "*/Login/*/Verb"
 msgid "Login"
 msgstr "Войти"
@@ -2498,39 +2655,41 @@ msgstr "Выйти"
 #: front/src/views/content/libraries/Home.vue:9
 msgctxt "Content/Library/Paragraph"
 msgid "Looks like you don't have a library, it's time to create one."
-msgstr "Похоже у вас ещё нет ни одной библиотеки, самое время создать её!"
+msgstr "Похоже у Вас ещё нет ни одной библиотеки, самое время создать её."
 
-#: front/src/components/audio/Player.vue:632
-#: src/components/audio/Player.vue:633
+#: front/src/components/audio/Player.vue:658
+#: src/components/audio/Player.vue:659
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping disabled. Click to switch to single-track looping."
-msgstr ""
-"Зацикливание отключено. Нажмите чтобы включить цикличное проигрывание трека."
+msgstr "Повтор отключен. Нажмите чтобы включить проигрывание трека по кругу."
 
-#: front/src/components/audio/Player.vue:635
-#: src/components/audio/Player.vue:636
+#: front/src/components/audio/Player.vue:661
+#: src/components/audio/Player.vue:662
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping on a single track. Click to switch to whole queue looping."
-msgstr ""
-"Зацикливание отключено. Нажмите чтобы включить цикличное проигрывание трека."
+msgstr "Режим повтора трека. Нажмите, чтобы включить проигрывание всего списка по кругу."
 
-#: front/src/components/audio/Player.vue:638
-#: src/components/audio/Player.vue:639
+#: front/src/components/audio/Player.vue:664
+#: src/components/audio/Player.vue:665
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Looping on whole queue. Click to disable looping."
-msgstr ""
-"Зацикливание отключено. Нажмите чтобы включить цикличное проигрывание трека."
+msgstr "Повтор всего списка включён. Нажмите, чтобы выключить повтор воспроизведения."
 
-#: front/src/components/Sidebar.vue:223
+#: front/src/components/Sidebar.vue:230
 msgctxt "Sidebar/*/Hidden text"
 msgid "Main menu"
-msgstr ""
+msgstr "Главное меню"
 
-#: front/src/views/admin/library/Base.vue:31
+#: front/src/views/admin/library/Base.vue:34
 msgctxt "Head/Admin/Title"
 msgid "Manage library"
 msgstr "Управление библиотекой"
 
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:8
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Manage moderation rules for %{ obj }"
+msgstr "Изменить правила модерации для %{ obj }"
+
 #: front/src/components/playlists/PlaylistModal.vue:3
 msgctxt "Popup/Playlist/Title/Verb"
 msgid "Manage playlists"
@@ -2544,9 +2703,9 @@ msgstr "Управлять пользователями"
 #: front/src/views/playlists/List.vue:8
 msgctxt "Content/Playlist/Button.Label/Verb"
 msgid "Manage your playlists"
-msgstr "Управлять вашими списками воспроизведения"
+msgstr "Управлять Вашими списками воспроизведения"
 
-#: front/src/views/Notifications.vue:14
+#: front/src/views/Notifications.vue:79
 msgctxt "Content/Notifications/Button.Label/Verb"
 msgid "Mark all as read"
 msgstr "Отметить все как прочитанные"
@@ -2554,88 +2713,104 @@ msgstr "Отметить все как прочитанные"
 #: front/src/components/notifications/NotificationRow.vue:46
 msgctxt "Content/Notifications/Button.Tooltip/Verb"
 msgid "Mark as read"
-msgstr "Отметить все как прочитанные"
+msgstr "Отметить как прочитанное"
 
 #: front/src/components/notifications/NotificationRow.vue:47
 msgctxt "Content/Notifications/Button.Tooltip/Verb"
 msgid "Mark as unread"
-msgstr "Отметить все как прочитанные"
+msgstr "Отметить как непрочитанное"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:310
+#: front/src/views/admin/moderation/AccountsDetail.vue:321
 msgctxt "Content/*/*/Unit"
 msgid "MB"
 msgstr "МБ"
 
-#: front/src/components/audio/Player.vue:625
+#: front/src/components/audio/Player.vue:651
 msgctxt "Sidebar/Player/Hidden text"
 msgid "Media player"
-msgstr ""
+msgstr "Плеер"
 
 #: front/src/components/auth/Profile.vue:12
 msgctxt "Content/Profile/Paragraph"
 msgid "Member since %{ date }"
-msgstr "Зарегистрировано с %{ date }"
+msgstr "Зарегистрирован с %{ date }"
+
+#: front/src/components/manage/moderation/ReportCard.vue:109
+#: front/src/components/moderation/ReportModal.vue:41
+msgctxt "*/*/Field.Label/Noun"
+msgid "Message"
+msgstr "Сообщение"
 
 #: front/src/components/Footer.vue:32
 msgctxt "Footer/*/List item.Link"
 msgid "Mobile and desktop apps"
-msgstr ""
+msgstr "Мобильные и ПК приложения"
+
+#: front/src/components/Home.vue:143
+msgctxt "Content/Home/Link"
+msgid "Mobile apps"
+msgstr "Мобильные приложения"
 
 #: front/src/components/Sidebar.vue:96
-#: src/components/manage/users/UsersTable.vue:177
-#: front/src/views/admin/moderation/AccountsDetail.vue:502
-#: front/src/views/admin/moderation/Base.vue:21
+#: src/components/manage/users/UsersTable.vue:178
+#: front/src/views/admin/Settings.vue:85
+#: front/src/views/admin/moderation/AccountsDetail.vue:522
+#: front/src/views/admin/moderation/Base.vue:43
 msgctxt "*/Moderation/*"
 msgid "Moderation"
-msgstr "Федерация"
+msgstr "Модерация"
 
 #: front/src/views/admin/moderation/AccountsDetail.vue:78
-#: front/src/views/admin/moderation/DomainsDetail.vue:42
+#: front/src/views/admin/moderation/DomainsDetail.vue:70
 msgctxt "Content/Moderation/Card.Paragraph"
-msgid ""
-"Moderation policies help you control how your instance interact with a given"
-" domain or account."
-msgstr ""
+msgid "Moderation policies help you control how your instance interact with a given domain or account."
+msgstr "Политики модерации позволяют Вам управлять тем, как Ваш узел взаимодействует с определённым доменом или аккаунтом."
+
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:4
+msgctxt "Content/Moderation/Button.Label"
+msgid "Moderation rules…"
+msgstr "Правила модерации…"
 
 #: front/src/components/library/EditCard.vue:5
 msgctxt "Content/Library/Card/Short"
 msgid "Modification %{ id }"
-msgstr "Дата последнего изменения"
+msgstr "Изменение %{ id }"
 
-#: front/src/components/mixins/Translations.vue:48
-#: front/src/components/mixins/Translations.vue:49
+#: front/src/components/mixins/Translations.vue:58
+#: front/src/components/mixins/Translations.vue:59
 msgctxt "Content/Playlist/Dropdown/Noun"
 msgid "Modification date"
-msgstr "Дата последнего изменения"
+msgstr "Дата изменения"
 
-#: front/src/components/library/AlbumBase.vue:42
-#: front/src/components/library/ArtistBase.vue:53
-#: front/src/components/library/TrackBase.vue:61
+#: front/src/components/audio/PlayButton.vue:100
+#: front/src/components/library/AlbumBase.vue:43
+#: front/src/components/library/ArtistBase.vue:54
+#: front/src/components/library/TrackBase.vue:59
 msgctxt "*/*/Button.Label/Noun"
 msgid "More…"
-msgstr ""
+msgstr "Ещё…"
 
 #: front/src/components/Sidebar.vue:63 src/views/admin/Settings.vue:82
 msgctxt "*/*/*/Noun"
 msgid "Music"
 msgstr "Музыка"
 
-#: front/src/components/audio/Player.vue:631
+#: front/src/components/audio/Player.vue:657
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Mute"
-msgstr "Приглушить"
+msgstr "Выключить звук"
 
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:24
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:115
 msgctxt "Content/Moderation/*/Verb"
 msgid "Mute activity"
-msgstr "Последняя активность"
+msgstr "Скрывать активность"
 
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:28
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:119
 msgctxt "Content/Moderation/*/Verb"
 msgid "Mute notifications"
-msgstr "Ваши уведомления"
+msgstr "Скрывать уведомления"
 
 #: front/src/components/Sidebar.vue:34
 msgctxt "Sidebar/Profile/Title"
@@ -2667,8 +2842,8 @@ msgctxt "Content/Library/Title"
 msgid "My libraries"
 msgstr "Мои библиотеки"
 
-#: front/src/components/audio/track/Row.vue:40
-#: src/components/library/EditCard.vue:60
+#: front/src/components/About.vue:105 src/components/audio/track/Row.vue:40
+#: front/src/components/library/EditCard.vue:60
 #: front/src/components/library/EditForm.vue:70
 #: front/src/components/library/TrackDetail.vue:34
 #: front/src/components/library/TrackDetail.vue:43
@@ -2678,54 +2853,56 @@ msgstr "Мои библиотеки"
 #: front/src/components/manage/library/TracksTable.vue:76
 #: front/src/components/manage/library/UploadsTable.vue:121
 #: front/src/components/manage/library/UploadsTable.vue:128
-#: front/src/components/manage/users/UsersTable.vue:61
+#: front/src/components/manage/moderation/ReportCard.vue:78
+#: front/src/components/manage/moderation/ReportCard.vue:87
+#: front/src/components/manage/moderation/ReportCard.vue:193
+#: front/src/components/manage/users/UsersTable.vue:62
 #: front/src/views/admin/library/UploadDetail.vue:179
 #: front/src/views/admin/library/UploadDetail.vue:214
 #: front/src/views/admin/library/UploadDetail.vue:233
 #: front/src/views/admin/library/UploadDetail.vue:244
 #: front/src/views/admin/library/UploadDetail.vue:257
-#: front/src/views/admin/moderation/AccountsDetail.vue:192
-#: front/src/views/admin/moderation/DomainsDetail.vue:82
+#: front/src/views/admin/moderation/AccountsDetail.vue:193
+#: front/src/views/admin/moderation/DomainsDetail.vue:119
 #: front/src/views/content/libraries/FilesTable.vue:95
 #: front/src/views/content/libraries/FilesTable.vue:101
 msgctxt "*/*/*"
 msgid "N/A"
 msgstr "Н/Д"
 
-#: front/src/components/manage/library/LibrariesTable.vue:48
-#: front/src/components/manage/library/UploadsTable.vue:59
-msgctxt "*/*/*"
-msgid "Name"
-msgstr "Имя"
-
 #: front/src/components/auth/ApplicationForm.vue:9
-msgctxt "Content/Applications/Input.Label/Noun"
-msgid "Name"
-msgstr "Имя"
-
 #: front/src/components/auth/Settings.vue:133
 #: front/src/components/manage/library/ArtistsTable.vue:39
+#: front/src/components/manage/library/LibrariesTable.vue:48
+#: front/src/components/manage/library/TagsTable.vue:41
+#: front/src/components/manage/library/UploadsTable.vue:59
 #: front/src/components/manage/moderation/AccountsTable.vue:39
-#: front/src/components/manage/moderation/DomainsTable.vue:38
-#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/manage/moderation/DomainsTable.vue:46
+#: front/src/components/mixins/Translations.vue:63
 #: front/src/components/playlists/PlaylistModal.vue:45
-#: front/src/views/admin/library/ArtistDetail.vue:98
+#: front/src/views/admin/library/ArtistDetail.vue:103
 #: front/src/views/admin/library/LibraryDetail.vue:85
+#: front/src/views/admin/library/TagDetail.vue:68
 #: front/src/views/admin/library/UploadDetail.vue:92
-#: front/src/views/admin/moderation/DomainsDetail.vue:97
-#: front/src/views/content/libraries/Form.vue:10 src/edits.js:10
-#: front/src/components/mixins/Translations.vue:54
+#: front/src/views/admin/moderation/DomainsDetail.vue:134
+#: front/src/views/content/libraries/Form.vue:10 src/edits.js:17
+#: front/src/components/mixins/Translations.vue:64
 msgctxt "*/*/*/Noun"
 msgid "Name"
 msgstr "Имя"
 
+#: front/src/views/Notifications.vue:24 src/views/Notifications.vue:58
+msgctxt "*/*/*"
+msgid "Never"
+msgstr "Никогда"
+
 #: front/src/components/auth/Settings.vue:88
 #: front/src/views/auth/PasswordResetConfirm.vue:14
 msgctxt "Content/Settings/Input.Label"
 msgid "New password"
 msgstr "Новый пароль"
 
-#: front/src/components/Sidebar.vue:173
+#: front/src/components/Sidebar.vue:177
 msgctxt "Sidebar/Player/Paragraph"
 msgid "New tracks will be appended here automatically."
 msgstr "Новые треки будут добавлены сюда автоматически."
@@ -2733,58 +2910,69 @@ msgstr "Новые треки будут добавлены сюда автом
 #: front/src/components/library/EditCard.vue:47
 msgctxt "Content/Library/Card.Table.Header/Short"
 msgid "New value"
-msgstr ""
+msgstr "Новое значение"
 
-#: front/src/components/audio/Player.vue:629
+#: front/src/components/audio/Player.vue:655
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Next track"
 msgstr "Следующий трек"
 
-#: front/src/components/Sidebar.vue:130
+#: front/src/components/Sidebar.vue:134
+#: front/src/components/manage/moderation/DomainsTable.vue:13
+#: front/src/views/admin/moderation/DomainsDetail.vue:110
 msgctxt "*/*/*"
 msgid "No"
 msgstr "Нет"
 
-#: front/src/components/Home.vue:95
-msgctxt "Content/Home/List item"
-msgid "No add-ons, no plugins : you only need a web library"
-msgstr ""
-
 #: front/src/components/audio/Search.vue:25
 msgctxt "Content/Search/Paragraph"
 msgid "No album matched your query"
-msgstr "Извините, мы не нашли никакого альбома подходящего под ваш запрос"
+msgstr "Нет альбомов, подходящих Вашему запросу"
 
 #: front/src/components/audio/Search.vue:16
 msgctxt "Content/Search/Paragraph"
 msgid "No artist matched your query"
-msgstr ""
-"Извините, мы не нашли ни одного исполнителя подходящего под ваш запрос"
+msgstr "Нет исполнителей по Вашему запросу"
 
 #: front/src/components/library/TrackDetail.vue:14
 msgctxt "Content/Track/Table.Paragraph"
 msgid "No copyright information available for this track"
-msgstr "Текст недоступен для этого трека."
+msgstr "Информация о правах недоступна для этого трека"
+
+#: front/src/components/About.vue:25 src/components/Home.vue:25
+msgctxt "Content/Home/Paragraph"
+msgid "No description available."
+msgstr "Нет описания."
 
 #: front/src/components/library/TrackDetail.vue:25
 msgctxt "Content/Track/Table.Paragraph"
 msgid "No licensing information for this track"
-msgstr "У нас нет уведомлений для показа!"
+msgstr "Нет информации о лицензиях для этого трека"
 
 #: front/src/components/federation/LibraryWidget.vue:6
 msgctxt "Content/Federation/Paragraph"
 msgid "No matching library."
 msgstr "Нет подходящей библиотеки."
 
-#: front/src/views/Notifications.vue:28
+#: front/src/views/Notifications.vue:93
 msgctxt "Content/Notifications/Paragraph"
 msgid "No notification to show."
-msgstr "Ваши уведомления"
+msgstr "Нет уведомлений."
 
 #: front/src/components/common/EmptyState.vue:7
 msgctxt "Content/*/Paragraph"
 msgid "No results were found."
-msgstr ""
+msgstr "Ничего не найдено."
+
+#: front/src/components/About.vue:32
+msgctxt "Content/Home/Paragraph"
+msgid "No rules available."
+msgstr "Нет доступных правил."
+
+#: front/src/components/About.vue:39
+msgctxt "Content/Home/Paragraph"
+msgid "No terms available."
+msgstr "Нет доступных условий."
 
 #: front/src/components/mixins/Translations.vue:10
 #: front/src/components/mixins/Translations.vue:11
@@ -2802,18 +2990,21 @@ msgctxt "Content/Admin/Table"
 msgid "Not used"
 msgstr "Не используется"
 
-#: front/src/components/mixins/Translations.vue:100
-#: front/src/components/mixins/Translations.vue:101
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Notifications"
-msgstr "Уведомления"
-
-#: front/src/components/Sidebar.vue:46 src/views/Notifications.vue:76
+#: front/src/components/Sidebar.vue:46
+#: src/components/mixins/Translations.vue:112
+#: front/src/views/Notifications.vue:151
+#: src/components/mixins/Translations.vue:113
 msgctxt "*/Notifications/*"
 msgid "Notifications"
 msgstr "Уведомления"
 
-#: front/src/components/Footer.vue:47
+#: front/src/components/mixins/Translations.vue:47
+#: front/src/components/mixins/Translations.vue:48
+msgctxt "Content/Moderation/Dropdown"
+msgid "Offensive content"
+msgstr "Оскорбительное содержание"
+
+#: front/src/components/Footer.vue:55
 msgctxt "Footer/*/List item.Link"
 msgid "Official website"
 msgstr "Официальный веб-сайт"
@@ -2826,7 +3017,12 @@ msgstr "Старый пароль"
 #: front/src/components/library/EditCard.vue:46
 msgctxt "Content/Library/Card.Table.Header/Short"
 msgid "Old value"
-msgstr ""
+msgstr "Старое значение"
+
+#: front/src/components/About.vue:90
+msgctxt "*/*/*/State of registrations"
+msgid "Open"
+msgstr "Открыть"
 
 #: front/src/components/manage/users/InvitationsTable.vue:20
 msgctxt "Content/Admin/Dropdown/Adjective"
@@ -2835,27 +3031,29 @@ msgstr "Открыть"
 
 #: front/src/components/library/ImportStatusModal.vue:56
 msgctxt "Popup/Import/Table.Label/Value"
-msgid ""
-"Open a support thread (include the debug information below in your message)"
-msgstr ""
-
-#: front/src/components/library/AlbumBase.vue:73
-#: front/src/components/library/ArtistBase.vue:84
-#: front/src/components/library/TrackBase.vue:92
+msgid "Open a support thread (include the debug information below in your message)"
+msgstr "Открыть тему в поддержке (вставьте диагностическую информацию ниже в Ваше сообщение)"
+
+#: front/src/components/library/AlbumBase.vue:87
+#: front/src/components/library/ArtistBase.vue:99
+#: front/src/components/library/TagDetail.vue:11
+#: front/src/components/library/TrackBase.vue:103
+#: front/src/components/manage/moderation/ReportCard.vue:128
 msgctxt "Content/Moderation/Link"
 msgid "Open in moderation interface"
-msgstr "Удалить радио"
+msgstr "Открыть в режиме модерации"
 
-#: front/src/views/admin/library/AlbumDetail.vue:31
-#: front/src/views/admin/library/ArtistDetail.vue:30
-#: front/src/views/admin/library/TrackDetail.vue:30
+#: front/src/views/admin/library/AlbumDetail.vue:37
+#: front/src/views/admin/library/ArtistDetail.vue:35
+#: front/src/views/admin/library/TagDetail.vue:21
+#: front/src/views/admin/library/TrackDetail.vue:36
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open local profile"
-msgstr ""
+msgstr "Открыть локальный профиль"
 
-#: front/src/views/admin/library/AlbumDetail.vue:46
-#: front/src/views/admin/library/ArtistDetail.vue:45
-#: front/src/views/admin/library/TrackDetail.vue:45
+#: front/src/views/admin/library/AlbumDetail.vue:52
+#: front/src/views/admin/library/ArtistDetail.vue:50
+#: front/src/views/admin/library/TrackDetail.vue:51
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open on MusicBrainz"
 msgstr "Смотреть на MusicBrainz"
@@ -2863,17 +3061,17 @@ msgstr "Смотреть на MusicBrainz"
 #: front/src/views/admin/moderation/AccountsDetail.vue:23
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open profile"
-msgstr ""
+msgstr "Открыть профиль"
 
-#: front/src/views/admin/library/AlbumDetail.vue:54
-#: front/src/views/admin/library/ArtistDetail.vue:53
+#: front/src/views/admin/library/AlbumDetail.vue:60
+#: front/src/views/admin/library/ArtistDetail.vue:58
 #: front/src/views/admin/library/LibraryDetail.vue:49
-#: front/src/views/admin/library/TrackDetail.vue:53
+#: front/src/views/admin/library/TrackDetail.vue:59
 #: front/src/views/admin/library/UploadDetail.vue:50
 #: front/src/views/admin/moderation/AccountsDetail.vue:52
 msgctxt "Content/Moderation/Link/Verb"
 msgid "Open remote profile"
-msgstr ""
+msgstr "Открыть удалённый профиль"
 
 #: front/src/views/admin/moderation/DomainsDetail.vue:16
 msgctxt "Content/Moderation/Link/Verb"
@@ -2883,12 +3081,13 @@ msgstr "Официальный веб-сайт"
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:40
 msgctxt "Content/Moderation/Card.Title"
 msgid "Or customize your rule"
-msgstr "Добавить фильтры чтобы кастомизировать своё радио"
+msgstr "Или настройте своё правило"
 
 #: front/src/components/favorites/List.vue:32
 #: src/components/library/Radios.vue:41
 #: front/src/components/manage/library/EditsCardList.vue:37
 #: front/src/components/manage/users/UsersTable.vue:17
+#: front/src/views/admin/moderation/ReportsList.vue:42
 #: front/src/views/playlists/List.vue:25
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Order"
@@ -2896,47 +3095,57 @@ msgstr "Порядок"
 
 #: front/src/components/favorites/List.vue:24
 #: src/components/library/Albums.vue:15
-#: front/src/components/library/Artists.vue:15
+#: front/src/components/library/Artists.vue:19
 #: src/components/library/Radios.vue:33
 #: front/src/components/manage/library/AlbumsTable.vue:11
 #: front/src/components/manage/library/ArtistsTable.vue:11
 #: front/src/components/manage/library/EditsCardList.vue:29
 #: front/src/components/manage/library/LibrariesTable.vue:20
+#: front/src/components/manage/library/TagsTable.vue:11
 #: front/src/components/manage/library/TracksTable.vue:11
 #: front/src/components/manage/library/UploadsTable.vue:30
 #: front/src/components/manage/moderation/AccountsTable.vue:11
-#: front/src/components/manage/moderation/DomainsTable.vue:9
+#: front/src/components/manage/moderation/DomainsTable.vue:17
 #: front/src/components/manage/users/InvitationsTable.vue:9
 #: front/src/components/manage/users/UsersTable.vue:9
+#: front/src/views/admin/moderation/ReportsList.vue:34
 #: front/src/views/content/libraries/FilesTable.vue:21
 #: front/src/views/playlists/List.vue:17
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Ordering"
 msgstr "Порядок"
 
-#: front/src/components/library/Albums.vue:23
-#: src/components/library/Artists.vue:23
+#: front/src/components/library/Albums.vue:27
+#: src/components/library/Artists.vue:27
 #: front/src/components/manage/library/AlbumsTable.vue:19
 #: front/src/components/manage/library/ArtistsTable.vue:19
 #: front/src/components/manage/library/LibrariesTable.vue:28
+#: front/src/components/manage/library/TagsTable.vue:19
 #: front/src/components/manage/library/TracksTable.vue:19
 #: front/src/components/manage/library/UploadsTable.vue:38
 #: front/src/components/manage/moderation/AccountsTable.vue:19
-#: front/src/components/manage/moderation/DomainsTable.vue:17
+#: front/src/components/manage/moderation/DomainsTable.vue:25
 #: front/src/views/content/libraries/FilesTable.vue:29
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Ordering direction"
 msgstr "Порядок"
 
+#: front/src/components/mixins/Translations.vue:48
+#: front/src/components/mixins/Translations.vue:49
+msgctxt "Content/Moderation/Dropdown"
+msgid "Other"
+msgstr "Другое"
+
+#: front/src/components/manage/moderation/ReportCard.vue:143
 #: front/src/components/manage/users/InvitationsTable.vue:38
-msgctxt "Content/Admin/Table.Label"
+msgctxt "*/*/*"
 msgid "Owner"
 msgstr "Владелец"
 
 #: front/src/components/PageNotFound.vue:33
 msgctxt "Head/*/Title"
 msgid "Page Not Found"
-msgstr "Страница не найдена!"
+msgstr "Страница не найдена"
 
 #: front/src/components/PageNotFound.vue:7
 msgctxt "Content/*/Title"
@@ -2946,14 +3155,16 @@ msgstr "Страница не найдена!"
 #: front/src/components/Pagination.vue:39
 msgctxt "Content/*/Hidden text/Noun"
 msgid "Pagination"
-msgstr ""
+msgstr "Страницы"
 
-#: front/src/components/auth/Login.vue:33 src/components/auth/Signup.vue:40
-msgctxt "Content/*/Input.Label"
+#: front/src/components/auth/LoginForm.vue:32
+#: src/components/auth/Settings.vue:291
+#: front/src/components/auth/SignupForm.vue:36
+msgctxt "*/*/*"
 msgid "Password"
 msgstr "Пароль"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:94
+#: front/src/components/auth/SubsonicTokenForm.vue:100
 msgctxt "Content/Settings/Message"
 msgid "Password updated"
 msgstr "Пароль обновлён"
@@ -2963,20 +3174,20 @@ msgctxt "Content/Signup/Card.Title"
 msgid "Password updated successfully"
 msgstr "Пароль успешно обновлён"
 
-#: front/src/components/audio/Player.vue:628
+#: front/src/components/audio/Player.vue:654
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Pause track"
 msgstr "Приостановить трек"
 
-#: front/src/components/ShortcutsModal.vue:59
+#: front/src/components/ShortcutsModal.vue:96
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Pause/play the current track"
-msgstr "Проиграть трек"
+msgstr "Проиграть/приостановить трек"
 
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:12
 msgctxt "Content/Moderation/Card.List item"
 msgid "Paused"
-msgstr ""
+msgstr "Пауза"
 
 #: front/src/components/library/FileUpload.vue:116
 #: front/src/components/manage/library/UploadsTable.vue:23
@@ -2997,100 +3208,90 @@ msgctxt "Content/Library/Label"
 msgid "Pending files"
 msgstr "Ожидающие файлы"
 
-#: front/src/components/Sidebar.vue:225
+#: front/src/components/Sidebar.vue:232
 msgctxt "Sidebar/Notifications/Hidden text"
 msgid "Pending follow requests"
-msgstr "Ожидающие файлы"
+msgstr "Запросы на подписку"
 
 #: front/src/components/library/EditCard.vue:29
 #: front/src/components/manage/library/EditsCardList.vue:18
 msgctxt "Content/Admin/*/Noun"
 msgid "Pending review"
-msgstr "Ожидающие файлы"
+msgstr "Ожидание одобрения"
 
-#: front/src/components/Sidebar.vue:226
+#: front/src/components/Sidebar.vue:233
 msgctxt "Sidebar/Moderation/Hidden text"
 msgid "Pending review edits"
-msgstr "Ожидающие файлы"
+msgstr "Правки, ожидающие одобрения"
 
+#: front/src/components/auth/Settings.vue:176
 #: front/src/components/manage/users/UsersTable.vue:42
 #: front/src/views/admin/moderation/AccountsDetail.vue:166
-msgctxt "Content/Admin/Table.Label/Noun"
-msgid "Permissions"
-msgstr "Разрешения"
-
-#: front/src/components/auth/Settings.vue:176
 msgctxt "Content/*/*/Noun"
 msgid "Permissions"
 msgstr "Разрешения"
 
 #: front/src/components/audio/PlayButton.vue:9
-#: front/src/components/library/TrackBase.vue:26
+#: front/src/components/library/TrackBase.vue:24
 msgctxt "*/Queue/Button.Label/Short, Verb"
 msgid "Play"
-msgstr "Проиграть всё"
+msgstr "Проиграть"
 
 #: front/src/components/audio/album/Card.vue:48
-#: front/src/components/audio/artist/Card.vue:44
-#: front/src/components/library/AlbumBase.vue:20
+#: front/src/components/library/AlbumBase.vue:21
 #: front/src/components/library/AlbumDetail.vue:11
 #: src/views/playlists/Detail.vue:24
 msgctxt "Content/Queue/Button.Label/Short, Verb"
 msgid "Play all"
 msgstr "Проиграть всё"
 
-#: front/src/components/library/ArtistBase.vue:31
+#: front/src/components/library/ArtistBase.vue:32
 msgctxt "Content/Artist/Button.Label/Verb"
 msgid "Play all albums"
 msgstr "Проиграть все альбомы"
 
-#: front/src/components/audio/PlayButton.vue:76
+#: front/src/components/audio/PlayButton.vue:92
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play next"
 msgstr "Проиграть следующий"
 
-#: front/src/components/ShortcutsModal.vue:67
+#: front/src/components/ShortcutsModal.vue:120
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Play next track"
-msgstr "Проиграть трек"
+msgstr "Проиграть следующий трек"
 
-#: front/src/components/audio/PlayButton.vue:74
+#: front/src/components/audio/PlayButton.vue:90
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play now"
-msgstr "Сейчас проигрывается"
+msgstr "Играть сейчас"
 
-#: front/src/components/ShortcutsModal.vue:63
+#: front/src/components/ShortcutsModal.vue:116
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Play previous track"
-msgstr "Предыдущий трек"
+msgstr "Проиграть предыдущий трек"
 
-#: front/src/components/audio/PlayButton.vue:77
+#: front/src/components/audio/PlayButton.vue:93
 msgctxt "*/Queue/Dropdown/Button/Title"
 msgid "Play similar songs"
-msgstr ""
+msgstr "Играть похожие треки"
 
-#: front/src/components/Sidebar.vue:224
+#: front/src/components/Sidebar.vue:231
 msgctxt "Sidebar/Player/Hidden text"
 msgid "Play this track"
-msgstr "Проиграть трек"
+msgstr "Проиграть этот трек"
 
-#: front/src/components/audio/Player.vue:627
+#: front/src/components/audio/Player.vue:653
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Play track"
 msgstr "Проиграть трек"
 
-#: front/src/components/audio/PlayButton.vue:82
-msgctxt "*/Queue/Button/Title"
-msgid "Play..."
-msgstr ""
-
-#: front/src/views/playlists/Detail.vue:91
-msgctxt "Head/Playlist/Title"
+#: front/src/components/mixins/Report.vue:66 src/views/playlists/Detail.vue:121
+#: front/src/components/mixins/Report.vue:67
+msgctxt "*/*/*"
 msgid "Playlist"
 msgstr "Список воспроизведения"
 
 #: front/src/views/playlists/Detail.vue:12
-#, fuzzy
 msgctxt "Content/Playlist/Header.Subtitle"
 msgid "Playlist containing %{ count } track, by %{ username }"
 msgid_plural "Playlist containing %{ count } tracks, by %{ username }"
@@ -3123,60 +3324,62 @@ msgctxt "Content/Playlist/Dropdown.Label"
 msgid "Playlist visibility"
 msgstr "Видимость списка воспроизведения"
 
-#: front/src/components/mixins/Translations.vue:88
-#: front/src/components/mixins/Translations.vue:89
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Playlists"
-msgstr "Списки воспроизведения"
-
 #: front/src/components/Sidebar.vue:71 src/components/library/Home.vue:16
-#: front/src/components/library/Library.vue:16 src/views/admin/Settings.vue:83
-#: front/src/views/admin/library/AlbumDetail.vue:173
-#: front/src/views/admin/library/ArtistDetail.vue:162
-#: front/src/views/admin/library/TrackDetail.vue:225
+#: front/src/components/library/Library.vue:16
+#: front/src/components/mixins/Translations.vue:100
+#: src/views/admin/Settings.vue:83
+#: front/src/views/admin/library/AlbumDetail.vue:179
+#: front/src/views/admin/library/ArtistDetail.vue:167
+#: front/src/views/admin/library/TrackDetail.vue:231
 #: src/views/playlists/List.vue:106
+#: front/src/components/mixins/Translations.vue:101
 msgctxt "*/*/*"
 msgid "Playlists"
 msgstr "Списки воспроизведения"
 
-#: front/src/components/Home.vue:56
-msgctxt "Content/Home/List item"
-msgid "Playlists? We got them"
-msgstr "Списки воспроизведения? У нас они есть"
+#: front/src/components/audio/EmbedWizard.vue:9
+msgctxt "Content/Embed/Message"
+msgid "Please contact your admins and ask them to update the corresponding setting."
+msgstr ""
+"Пожалуйста, свяжитесь с администратором и попросите изменить соответствующие "
+"настройки."
 
 #: front/src/components/auth/Settings.vue:79
 msgctxt "Content/Settings/Error message.List item/Call to action"
 msgid "Please double-check your password is correct"
-msgstr "Пожалуйста перепроверьте корректность вашего пароля"
+msgstr "Пожалуйста, перепроверьте правильный ввод пароля"
 
-#: front/src/components/auth/Login.vue:9
+#: front/src/components/auth/LoginForm.vue:5
 msgctxt "Content/Login/Error message.List item/Call to action"
 msgid "Please double-check your username/password couple is correct"
-msgstr "Пожалуйста перепроверьте что ваше имя пользователя и пароль верны"
+msgstr "Пожалуйста перепроверьте, что Ваше имя пользователя и пароль верны"
 
 #: front/src/components/auth/Settings.vue:46
 msgctxt "Content/Settings/Paragraph"
 msgid "PNG, GIF or JPG. At most 2MB. Will be downscaled to 400x400px."
 msgstr "PNG, GIF или JPG. Не больше 2MB. Будет уменьшено до 400x400px."
 
-#: front/src/views/admin/library/TrackDetail.vue:137
-msgctxt "*/*/*/Noun"
+#: front/src/components/About.vue:72
+msgctxt "Content/About/Header/Name"
+msgid "Pod configuration"
+msgstr "Конфигурация узла"
+
+#: front/src/views/admin/library/TrackDetail.vue:143 src/edits.js:70
+msgctxt "*/*/*/Short, Noun"
 msgid "Position"
-msgstr "Описание"
+msgstr "Позиция"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:118
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Prevent account or domain from triggering notifications, except from "
-"followers."
-msgstr ""
+msgid "Prevent account or domain from triggering notifications, except from followers."
+msgstr "Запретить аккаунту или домену присылать уведомления, за исключением подписчиков."
 
-#: front/src/components/audio/EmbedWizard.vue:33
+#: front/src/components/audio/EmbedWizard.vue:43
 msgctxt "Popup/Embed/Title/Noun"
 msgid "Preview"
-msgstr ""
+msgstr "Предпросмотр"
 
-#: front/src/components/audio/Player.vue:626
+#: front/src/components/audio/Player.vue:652
 msgctxt "Sidebar/Player/Icon.Tooltip"
 msgid "Previous track"
 msgstr "Предыдущий трек"
@@ -3185,9 +3388,9 @@ msgstr "Предыдущий трек"
 #: front/src/components/mixins/Translations.vue:16
 msgctxt "Content/Settings/Dropdown/Short"
 msgid "Private"
-msgstr ""
+msgstr "Личное"
 
-#: front/src/views/content/remote/Card.vue:43
+#: front/src/views/content/remote/Card.vue:56
 msgctxt "Content/Library/Card.List item"
 msgid "Problem during scanning"
 msgstr "Ошибка во время сканирования"
@@ -3201,21 +3404,26 @@ msgstr "Продолжить"
 #: front/src/views/auth/PasswordResetConfirm.vue:31
 msgctxt "Content/Signup/Link/Verb"
 msgid "Proceed to login"
-msgstr "Назад ко входу"
+msgstr "Перейти ко входу"
 
 #: front/src/components/library/FileUpload.vue:17
 msgctxt "Content/Library/Tab.Title/Short"
 msgid "Processing"
 msgstr "Обработка"
 
-#: front/src/components/mixins/Translations.vue:68
-#: front/src/components/mixins/Translations.vue:69
+#: front/src/components/mixins/Translations.vue:80
+#: front/src/components/mixins/Translations.vue:81
 msgctxt "Content/OAuth Scopes/Label"
 msgid "Profile"
-msgstr ""
+msgstr "Профиль"
+
+#: front/src/components/auth/SignupForm.vue:5
+msgctxt "Content/Signup/Form/Paragraph"
+msgid "Public registrations are not possible on this instance. You will need an invitation code to sign up."
+msgstr "Регистрация на этом узле закрыта, Вам понадобится код приглашения чтобы зарегистрироваться."
 
 #: front/src/components/manage/moderation/AccountsTable.vue:188
-#: front/src/components/manage/moderation/DomainsTable.vue:168
+#: front/src/components/manage/moderation/DomainsTable.vue:186
 #: front/src/views/content/libraries/Quota.vue:36
 #: front/src/views/content/libraries/Quota.vue:39
 #: front/src/views/content/libraries/Quota.vue:62
@@ -3246,7 +3454,7 @@ msgctxt "Sidebar/Queue/Tab.Title/Noun"
 msgid "Queue"
 msgstr "Очередь"
 
-#: front/src/components/audio/Player.vue:322
+#: front/src/components/audio/Player.vue:329
 msgctxt "Content/Queue/Message"
 msgid "Queue shuffled!"
 msgstr "Очередь перемешана!"
@@ -3278,70 +3486,71 @@ msgstr "Радио обновлено"
 
 #: front/src/components/library/Library.vue:13
 #: src/components/library/Radios.vue:142
+#: front/src/components/mixins/Translations.vue:104
+#: front/src/components/mixins/Translations.vue:105
 msgctxt "*/*/*"
 msgid "Radios"
 msgstr "Радио"
 
-#: front/src/components/mixins/Translations.vue:92
-#: front/src/components/mixins/Translations.vue:93
-msgctxt "Content/OAuth Scopes/Label"
-msgid "Radios"
-msgstr "Радио"
-
 #: front/src/components/auth/ApplicationForm.vue:151
 msgctxt "Content/OAuth Scopes/Label/Verb"
 msgid "Read"
-msgstr ""
+msgstr "Чтение"
 
 #: front/src/components/library/ImportStatusModal.vue:51
 msgctxt "Popup/Import/Table.Label/Value"
 msgid "Read our documentation for this error"
-msgstr ""
+msgstr "Посмотрите нашу документацию по этой ошибке"
 
 #: front/src/components/auth/Authorize.vue:24
 msgctxt "Content/Auth/Label/Noun"
 msgid "Read-only"
-msgstr ""
+msgstr "Только чтение"
 
 #: front/src/components/auth/ApplicationForm.vue:152
 msgctxt "Content/OAuth Scopes/Help Text"
 msgid "Read-only access to user data"
-msgstr ""
+msgstr "Доступ к данным пользователя только для чтения"
 
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:39
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:25
 msgctxt "Content/Moderation/*/Noun"
 msgid "Reason"
-msgstr ""
+msgstr "Причина"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:251
-#: front/src/views/admin/moderation/DomainsDetail.vue:179
+#: front/src/views/admin/moderation/AccountsDetail.vue:252
+#: front/src/views/admin/moderation/DomainsDetail.vue:216
 msgctxt "Content/Moderation/Table.Label/Noun"
 msgid "Received library follows"
-msgstr ""
+msgstr "Полученные подписки на библиотеку"
 
-#: front/src/components/manage/moderation/DomainsTable.vue:40
-#: front/src/components/mixins/Translations.vue:62
-#: front/src/components/mixins/Translations.vue:63
+#: front/src/components/manage/moderation/DomainsTable.vue:48
+#: front/src/components/mixins/Translations.vue:74
+#: front/src/components/mixins/Translations.vue:75
 msgctxt "Content/Moderation/*/Noun"
 msgid "Received messages"
-msgstr ""
+msgstr "Полученные сообщения"
 
 #: front/src/components/library/EditForm.vue:27
 msgctxt "Content/Library/Paragraph"
 msgid "Recent edits"
-msgstr "Недавно добавленные"
+msgstr "Недавние правки"
 
 #: front/src/components/library/EditForm.vue:17
 msgctxt "Content/Library/Paragraph"
 msgid "Recent edits awaiting review"
-msgstr ""
+msgstr "Свежие правки в ожидании принятия"
 
 #: front/src/components/library/Home.vue:24
 msgctxt "Content/Home/Title"
 msgid "Recently added"
 msgstr "Недавно добавленные"
 
+#: front/src/components/Home.vue:167
+msgctxt "Content/Home/Title"
+msgid "Recently added albums"
+msgstr "Недавно добавленные альбомы"
+
 #: front/src/components/library/Home.vue:11
 msgctxt "Content/Home/Title"
 msgid "Recently favorited"
@@ -3355,7 +3564,7 @@ msgstr "Недавно прослушанные"
 #: front/src/components/auth/ApplicationForm.vue:13
 msgctxt "Content/Applications/Input.Label/Noun"
 msgid "Redirect URI"
-msgstr ""
+msgstr "URI перенаправления"
 
 #: front/src/components/auth/Settings.vue:125
 #: src/components/auth/Settings.vue:170
@@ -3368,65 +3577,59 @@ msgstr "Обновить"
 #: front/src/components/federation/FetchButton.vue:20
 msgctxt "Popup/*/Message.Title"
 msgid "Refresh error"
-msgstr "Обновить"
+msgstr "Ошибка при обновлении"
 
-#: front/src/views/admin/library/AlbumDetail.vue:50
-#: front/src/views/admin/library/ArtistDetail.vue:49
-#: front/src/views/admin/library/TrackDetail.vue:49
+#: front/src/views/admin/library/AlbumDetail.vue:56
+#: front/src/views/admin/library/ArtistDetail.vue:54
+#: front/src/views/admin/library/TrackDetail.vue:55
 msgctxt "Content/Moderation/Button/Verb"
 msgid "Refresh from remote server"
-msgstr ""
+msgstr "Обновить с удалённого сервера"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:127
+#: front/src/views/admin/moderation/DomainsDetail.vue:164
 msgctxt "Content/Moderation/Button.Label/Verb"
 msgid "Refresh node info"
-msgstr ""
+msgstr "Обновить информацию узла"
 
 #: front/src/components/federation/FetchButton.vue:79
 msgctxt "Popup/*/Message.Title"
 msgid "Refresh pending"
-msgstr "По убыванию"
+msgstr "Ожидание обновления"
 
 #: front/src/components/federation/FetchButton.vue:80
 msgctxt "Popup/*/Message.Content"
-msgid ""
-"Refresh request wasn't proceed in time by our server. It will be processed "
-"later."
-msgstr ""
+msgid "Refresh request wasn't proceed in time by our server. It will be processed later."
+msgstr "Запрос на обновление не был обработан вовремя нашим сервером. Он будет обработан позже."
 
 #: front/src/components/federation/FetchButton.vue:16
 msgctxt "Popup/*/Message.Title"
 msgid "Refresh successful"
-msgstr ""
+msgstr "Обновление успешно"
 
 #: front/src/components/common/ActionTable.vue:275
 msgctxt "Content/*/Button.Tooltip/Verb"
 msgid "Refresh table content"
-msgstr ""
+msgstr "Обновить данные таблицы"
 
 #: front/src/components/federation/FetchButton.vue:12
 msgctxt "Popup/*/Message.Title"
 msgid "Refresh was skipped"
-msgstr ""
+msgstr "Обновление было пропущено"
 
 #: front/src/components/federation/FetchButton.vue:7
 msgctxt "Popup/*/Title"
 msgid "Refreshing object from remote…"
-msgstr ""
+msgstr "Обновляем объект с удалённого сервера…"
 
-#: front/src/components/auth/Signup.vue:9
-msgctxt "Content/Signup/Form/Paragraph"
-msgid ""
-"Registration are closed on this instance, you will need an invitation code "
-"to signup."
-msgstr ""
-"Регистрация на этом узле закрыта, вам понадобится код приглашения чтобы "
-"зарегистрироваться."
+#: front/src/components/About.vue:86
+msgctxt "*/*/*"
+msgid "Registrations"
+msgstr "Регистрации"
 
-#: front/src/components/manage/users/UsersTable.vue:71
+#: front/src/components/manage/users/UsersTable.vue:72
 msgctxt "Content/Admin/Table, User role"
 msgid "Regular user"
-msgstr "обычный пользователь"
+msgstr "Обычный пользователь"
 
 #: front/src/components/library/EditCard.vue:87
 #: front/src/views/content/libraries/Detail.vue:51
@@ -3438,7 +3641,7 @@ msgstr "Отклонить"
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:123
 msgctxt "Content/Moderation/*/Verb"
 msgid "Reject media"
-msgstr "Отклонено"
+msgstr "Отклонить"
 
 #: front/src/components/library/EditCard.vue:33
 #: front/src/components/manage/library/EditsCardList.vue:24
@@ -3448,16 +3651,21 @@ msgid "Rejected"
 msgstr "Отклонено"
 
 #: front/src/components/manage/library/AlbumsTable.vue:43
-#: front/src/components/mixins/Translations.vue:44 src/edits.js:28
-#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:54 src/edits.js:43
+#: front/src/components/mixins/Translations.vue:55
 msgctxt "Content/*/*/Noun"
 msgid "Release date"
-msgstr "Последнее обновление:"
+msgstr "Дата выпуска"
 
 #: front/src/components/library/FileUpload.vue:63
 msgctxt "Content/Library/Paragraph"
 msgid "Remaining storage space"
-msgstr ""
+msgstr "Свободное место"
+
+#: front/src/views/Notifications.vue:18 src/views/Notifications.vue:52
+msgctxt "Content/Notifications/Label"
+msgid "Remind me in:"
+msgstr "Напомнить мне через:"
 
 #: front/src/views/content/remote/Home.vue:6
 msgctxt "Content/Library/Title/Noun"
@@ -3466,12 +3674,8 @@ msgstr "Удалённые библиотеки"
 
 #: front/src/views/content/remote/Home.vue:7
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Remote libraries are owned by other users on the network. You can access "
-"them as long as they are public or you are granted access."
-msgstr ""
-"Удалёнными библиотеками владеют другие пользователи в сети. Вы можете "
-"получить к ним доступ если они публичны или вам предоставлен доступ."
+msgid "Remote libraries are owned by other users on the network. You can access them as long as they are public or you are granted access."
+msgstr "Удалёнными библиотеками владеют другие пользователи в сети. Вы можете получить к ним доступ если они публичны или Вам предоставлен доступ."
 
 #: front/src/components/library/radios/Filter.vue:59
 msgctxt "Content/Radio/Button.Label/Verb"
@@ -3486,7 +3690,13 @@ msgstr "Удалить аватар"
 #: front/src/components/library/ArtistDetail.vue:12
 msgctxt "Content/Moderation/Button.Label"
 msgid "Remove filter"
-msgstr "Удалить аватар"
+msgstr "Удалить фильтр"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:198
+#: front/src/views/admin/moderation/DomainsDetail.vue:39
+msgctxt "Content/Moderation/Action/Verb"
+msgid "Remove from allow-list"
+msgstr "Удалить из \"белого\" списка"
 
 #: front/src/components/favorites/TrackFavoriteIcon.vue:26
 msgctxt "Content/Track/Icon.Tooltip/Verb"
@@ -3495,43 +3705,98 @@ msgstr "Удалить из избранного"
 
 #: front/src/views/content/libraries/Quota.vue:38
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded but yet to be processed tracks completely, adding the "
-"corresponding data to your quota."
-msgstr ""
-"Это удалит треки которые были загружены но ещё не обработаны. Файлы будут "
-"полностью удалены и вы получите соответствующую квоту."
+msgid "Removes uploaded but yet to be processed tracks completely, adding the corresponding data to your quota."
+msgstr "Это удалит треки которые были загружены но ещё не обработаны. Файлы будут полностью удалены, увеличив доступную квоту."
 
 #: front/src/views/content/libraries/Quota.vue:64
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded tracks skipped during the import processes completely, "
-"adding the corresponding data to your quota."
-msgstr ""
-"Это удалит треки которые были загружены но ещё не обработаны. Файлы будут "
-"полностью удалены и вы получите соответствующую квоту."
+msgid "Removes uploaded tracks skipped during the import processes completely, adding the corresponding data to your quota."
+msgstr "Это удалит треки которые были загружены, но пропущены при импорте. Файлы будут полностью удалены и свободное место увеличится."
 
 #: front/src/views/content/libraries/Quota.vue:90
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"Removes uploaded tracks that could not be processed by the server "
-"completely, adding the corresponding data to your quota."
-msgstr ""
-"Это удалит треки которые были загружены но ещё не обработаны. Файлы будут "
-"полностью удалены и вы получите соответствующую квоту."
+msgid "Removes uploaded tracks that could not be processed by the server completely, adding the corresponding data to your quota."
+msgstr "Это удалит треки которые были загружены но ещё не обработаны. Файлы будут полностью удалены и свободное место увеличится."
+
+#: front/src/components/audio/PlayButton.vue:94
+msgctxt "*/Queue/Dropdown/Button/Title"
+msgid "Replace current queue"
+msgstr "Заменить текущую очередь"
+
+#: front/src/components/mixins/Report.vue:6 src/components/mixins/Report.vue:7
+msgctxt "*/Moderation/*/Verb"
+msgid "Report @%{ username }…"
+msgstr "Пожаловаться на @%{ username }…"
+
+#: front/src/components/manage/moderation/ReportCard.vue:5
+msgctxt "Content/Moderation/Card/Short"
+msgid "Report %{ id }"
+msgstr "Жалоба %{ id }"
+
+#: front/src/components/moderation/ReportModal.vue:139
+msgctxt "*/Moderation/Message"
+msgid "Report successfully submitted, thank you"
+msgstr "Ваша жалоба была успешно отправлена, спасибо"
+
+#: front/src/components/mixins/Report.vue:36
+#: src/components/mixins/Report.vue:37
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this album…"
+msgstr "Пожаловаться на этот альбом…"
+
+#: front/src/components/mixins/Report.vue:50
+#: src/components/mixins/Report.vue:51
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this artist…"
+msgstr "Пожаловаться на этого исполнителя…"
+
+#: front/src/components/mixins/Report.vue:72
+#: src/components/mixins/Report.vue:73
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this library…"
+msgstr "Пожаловаться на эту библиотеку…"
+
+#: front/src/components/mixins/Report.vue:61
+#: src/components/mixins/Report.vue:62
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this playlist…"
+msgstr "Пожаловаться на этот список воспроизведения…"
+
+#: front/src/components/mixins/Report.vue:23
+#: src/components/mixins/Report.vue:24
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this track…"
+msgstr "Пожаловаться на этот трек…"
+
+#: front/src/components/audio/PlayButton.vue:95
+msgctxt "*/Moderation/*/Button/Label,Verb"
+msgid "Report…"
+msgstr "Пожаловаться…"
+
+#: front/src/components/manage/moderation/ReportCard.vue:117
+msgctxt "Content/*/*/Short"
+msgid "Reported object"
+msgstr "Предмет жалобы"
+
+#: front/src/views/admin/moderation/Base.vue:5
+#: front/src/views/admin/moderation/ReportsList.vue:3
+#: front/src/views/admin/moderation/ReportsList.vue:208
+msgctxt "*/Moderation/*/Noun"
+msgid "Reports"
+msgstr "Жалобы"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:33
-#: front/src/components/auth/SubsonicTokenForm.vue:36
+#: front/src/components/auth/SubsonicTokenForm.vue:38
+#: front/src/components/auth/SubsonicTokenForm.vue:41
 msgctxt "*/Settings/Button.Label/Verb"
 msgid "Request a new password"
 msgstr "Запросить новый пароль"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:34
+#: front/src/components/auth/SubsonicTokenForm.vue:39
 msgctxt "Popup/Settings/Title"
 msgid "Request a new Subsonic API password?"
 msgstr "Запросить новый пароль Subsonic API?"
 
-#: front/src/components/auth/SubsonicTokenForm.vue:42
+#: front/src/components/auth/SubsonicTokenForm.vue:47
 msgctxt "Content/Settings/Button.Label/Verb"
 msgid "Request a password"
 msgstr "Запросить пароль"
@@ -3539,36 +3804,52 @@ msgstr "Запросить пароль"
 #: front/src/components/federation/FetchButton.vue:64
 msgctxt "Popup/*/Loading.Title"
 msgid "Requesting a fetch…"
-msgstr ""
+msgstr "Запрашиваем данные…"
 
-#: front/src/components/library/EditForm.vue:82
+#: front/src/components/library/EditForm.vue:94
 msgctxt "Content/Library/Button.Label"
-msgid "Reset to initial value: %{ value }"
-msgstr ""
+msgid "Reset to initial value"
+msgstr "Сброс на начальное значение"
 
-#: front/src/components/auth/Login.vue:35 src/views/auth/PasswordReset.vue:4
-#: front/src/views/auth/PasswordReset.vue:53
+#: front/src/components/auth/LoginForm.vue:34
+#: src/views/auth/PasswordReset.vue:4 front/src/views/auth/PasswordReset.vue:53
 msgctxt "*/Login/*/Verb"
 msgid "Reset your password"
 msgstr "Сбросить ваш пароль"
 
+#: front/src/components/manage/moderation/ReportCard.vue:83
+msgctxt "Content/*/*/Noun"
+msgid "Resolution date"
+msgstr "Дата разрешения"
+
+#: front/src/components/manage/moderation/ReportCard.vue:218
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Resolve"
+msgstr "Разрешить"
+
+#: front/src/components/manage/moderation/ReportCard.vue:62
+#: front/src/views/admin/moderation/ReportsList.vue:20
+msgctxt "Content/*/*/Short"
+msgid "Resolved"
+msgstr "Решено"
+
 #: front/src/views/content/libraries/FilesTable.vue:223
 msgctxt "Content/Library/Dropdown/Verb"
 msgid "Restart import"
 msgstr "Перезапустить импорт"
 
+#: front/src/components/library/EditForm.vue:31
+msgctxt "Content/Library/Button.Label"
+msgid "Restrict to unreviewed edits"
+msgstr "Ограничить неодобренные правки"
+
 #: front/src/components/favorites/List.vue:39
-#: src/components/library/Albums.vue:30
-#: front/src/components/library/Artists.vue:30
+#: src/components/library/Albums.vue:34
+#: front/src/components/library/Artists.vue:34
 #: src/components/library/Radios.vue:52 front/src/views/playlists/List.vue:32
 msgctxt "Content/Search/Dropdown.Label/Noun"
 msgid "Results per page"
-msgstr "Результатов на страницу"
-
-#: front/src/components/library/EditForm.vue:31
-msgctxt "Content/Library/Button.Label"
-msgid "Retrict to unreviewed edits"
-msgstr ""
+msgstr "Результатов на странице"
 
 #: front/src/views/auth/EmailConfirm.vue:17
 msgctxt "Content/Signup/Link/Verb"
@@ -3578,78 +3859,79 @@ msgstr "Назад ко входу"
 #: front/src/components/library/ArtistDetail.vue:9
 msgctxt "Content/Moderation/Link"
 msgid "Review my filters"
-msgstr "Просмотреть файлы"
+msgstr "Просмотреть мои фильтры"
 
 #: front/src/components/auth/Settings.vue:192
 msgctxt "*/*/*/Verb"
 msgid "Revoke"
-msgstr ""
+msgstr "Отозвать"
 
 #: front/src/components/auth/Settings.vue:195
 msgctxt "*/Settings/Button.Label/Verb"
 msgid "Revoke access"
-msgstr ""
+msgstr "Отозвать доступ"
 
 #: front/src/components/auth/Settings.vue:193
 msgctxt "Popup/Settings/Title"
 msgid "Revoke access for application \"%{ application }\"?"
-msgstr ""
+msgstr "Отозвать доступ для приложения \"%{ application }\"?"
 
 #: front/src/components/manage/moderation/InstancePolicyCard.vue:16
 msgctxt "Content/Moderation/Card.Title/Noun"
 msgid "Rule"
-msgstr ""
+msgstr "Правило"
 
-#: front/src/components/admin/SettingsGroup.vue:67
+#: front/src/components/About.vue:28 src/components/About.vue:56
+msgctxt "Content/About/Header"
+msgid "Rules"
+msgstr "Правила"
+
+#: front/src/components/admin/SettingsGroup.vue:75
 #: front/src/components/library/radios/Builder.vue:34
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Save"
 msgstr "Сохранить"
 
-#: front/src/views/content/remote/Card.vue:175
+#: front/src/views/content/remote/Card.vue:203
 msgctxt "Content/Library/Message"
 msgid "Scan launched"
 msgstr "Сканирование запущено"
 
-#: front/src/views/content/remote/Card.vue:67
+#: front/src/views/content/remote/Card.vue:80
 msgctxt "Content/Library/Card.Button.Label/Verb"
 msgid "Scan now"
-msgstr "Сейчас проигрывается"
+msgstr "Сканировать сейчас"
 
-#: front/src/views/content/remote/Card.vue:35
+#: front/src/views/content/remote/Card.vue:48
 msgctxt "Content/Library/Card.List item"
 msgid "Scan pending"
-msgstr "По возрастанию"
+msgstr "Ожидание сканирования"
 
-#: front/src/views/content/remote/Card.vue:176
+#: front/src/views/content/remote/Card.vue:204
 msgctxt "Content/Library/Message"
 msgid "Scan skipped (previous scan is too recent)"
 msgstr "Сканирование пропущено (предыдущее сканирование было совсем недавно)"
 
-#: front/src/views/content/remote/Card.vue:47
+#: front/src/views/content/remote/Card.vue:60
 msgctxt "Content/Library/Card.List item"
 msgid "Scanned"
-msgstr "Сканирование запущено"
+msgstr "Просканировано"
 
-#: front/src/views/content/remote/Card.vue:51
+#: front/src/views/content/remote/Card.vue:64
 msgctxt "Content/Library/Card.List item"
 msgid "Scanned with errors"
 msgstr "Просканировано с ошибками"
 
-#: front/src/views/content/remote/Card.vue:39
+#: front/src/views/content/remote/Card.vue:52
 msgctxt "Content/Library/Card.List item"
 msgid "Scanning… (%{ progress }%)"
-msgstr "Сканирование... (%{ progress }%)"
+msgstr "Сканирование… (%{ progress }%)"
 
 #: front/src/components/auth/ApplicationForm.vue:22
-msgctxt "Content/Applications/Input.Label/Noun"
-msgid "Scopes"
-msgstr ""
-
 #: front/src/components/auth/Settings.vue:226
 msgctxt "Content/*/*/Noun"
 msgid "Scopes"
-msgstr ""
+msgstr "Области"
 
 #: front/src/components/library/Albums.vue:10
 #: src/components/library/Artists.vue:10
@@ -3658,12 +3940,14 @@ msgstr ""
 #: front/src/components/manage/library/ArtistsTable.vue:5
 #: front/src/components/manage/library/EditsCardList.vue:6
 #: front/src/components/manage/library/LibrariesTable.vue:5
+#: front/src/components/manage/library/TagsTable.vue:5
 #: front/src/components/manage/library/TracksTable.vue:5
 #: front/src/components/manage/library/UploadsTable.vue:5
 #: front/src/components/manage/moderation/AccountsTable.vue:5
 #: front/src/components/manage/moderation/DomainsTable.vue:5
 #: front/src/components/manage/users/InvitationsTable.vue:5
 #: front/src/components/manage/users/UsersTable.vue:5
+#: front/src/views/admin/moderation/ReportsList.vue:8
 #: front/src/views/content/libraries/FilesTable.vue:5
 #: src/views/playlists/List.vue:13
 msgctxt "Content/Search/Input.Label/Noun"
@@ -3676,97 +3960,134 @@ msgid "Search a remote library"
 msgstr "Искать в удалённой библиотеке"
 
 #: front/src/components/manage/library/EditsCardList.vue:211
+#: front/src/views/admin/moderation/ReportsList.vue:207
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by account, summary, domain…"
-msgstr "Искать по названию, исполнителю, домену..."
+msgstr "Искать по учетной записи, примечанию, домену…"
 
 #: front/src/components/manage/library/LibrariesTable.vue:191
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by domain, actor, name, description…"
-msgstr "Искать по пользователю, адресу электронной почты, коду..."
+msgstr "Искать по домену, исполнителю, имени, описанию…"
 
 #: front/src/components/manage/library/UploadsTable.vue:241
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by domain, actor, name, reference, source…"
-msgstr "Искать по пользователю, адресу электронной почты, коду..."
+msgstr "Искать по домену, исполнителю, имени, справке, источнику…"
 
 #: front/src/components/manage/library/ArtistsTable.vue:164
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by domain, name, MusicBrainz ID…"
-msgstr "Искать по пользователю, адресу электронной почты, коду..."
+msgstr "Искать по домену, имени, MusicBrainz ID…"
 
 #: front/src/components/manage/library/TracksTable.vue:174
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by domain, title, artist, album, MusicBrainz ID…"
-msgstr "Искать по названию, исполнителю, альбому..."
+msgstr "Искать по домену, названию, исполнителю, альбому, MusicBrainz ID…"
 
 #: front/src/components/manage/library/AlbumsTable.vue:174
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by domain, title, artist, MusicBrainz ID…"
-msgstr "Искать по названию, исполнителю, альбому..."
+msgstr "Искать по домену, названию, исполнителю, MusicBrainz ID…"
 
 #: front/src/components/manage/moderation/AccountsTable.vue:171
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by domain, username, bio…"
-msgstr "Искать по пользователю, адресу электронной почты, коду..."
+msgstr "Искать по домену, имени пользователя, информации пользователя…"
 
-#: front/src/components/manage/moderation/DomainsTable.vue:151
+#: front/src/components/manage/library/TagsTable.vue:165
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by name"
+msgstr "Искать по имени"
+
+#: front/src/components/manage/moderation/DomainsTable.vue:168
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by name…"
-msgstr "Искать по имени пользователя, адресу электронной почты, имени..."
+msgstr "Искать по имени…"
 
 #: front/src/views/content/libraries/FilesTable.vue:208
 msgctxt "Content/Library/Input.Placeholder"
 msgid "Search by title, artist, album…"
-msgstr "Искать по названию, исполнителю, альбому..."
+msgstr "Искать по названию, исполнителю, альбому…"
 
 #: front/src/components/manage/users/InvitationsTable.vue:153
 msgctxt "Content/Admin/Input.Placeholder/Verb"
 msgid "Search by username, e-mail address, code…"
-msgstr "Искать по пользователю, адресу электронной почты, коду..."
+msgstr "Искать по пользователю, адресу электронной почты, коду…"
 
-#: front/src/components/manage/users/UsersTable.vue:163
+#: front/src/components/manage/users/UsersTable.vue:164
 msgctxt "Content/Search/Input.Placeholder"
 msgid "Search by username, e-mail address, name…"
-msgstr "Искать по имени пользователя, адресу электронной почты, имени..."
+msgstr "Искать по имени пользователя, адресу электронной почты, имени…"
 
-#: front/src/components/audio/SearchBar.vue:20
+#: front/src/components/audio/SearchBar.vue:27
 msgctxt "Sidebar/Search/Input.Placeholder"
 msgid "Search for artists, albums, tracks…"
-msgstr "Искать исполнителей, альбомы, треки..."
+msgstr "Искать исполнителей, альбомы, треки…"
 
 #: front/src/components/audio/Search.vue:2
 msgctxt "Content/Search/Title"
 msgid "Search for some music"
 msgstr "Поискать музыку"
 
-#: front/src/components/library/AlbumBase.vue:57
-#: front/src/components/library/ArtistBase.vue:68
-#: front/src/components/library/TrackBase.vue:76
+#: front/src/components/library/TagsSelector.vue:6
+msgctxt "*/Dropdown/Placeholder/Verb"
+msgid "Search for tags…"
+msgstr "Искать по тегам…"
+
+#: front/src/components/library/AlbumBase.vue:66
+#: front/src/components/library/ArtistBase.vue:77
+#: front/src/components/library/TrackBase.vue:82
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Search on Discogs"
+msgstr "Искать на Discogs"
+
+#: front/src/components/library/AlbumBase.vue:58
+#: front/src/components/library/ArtistBase.vue:69
+#: front/src/components/library/TrackBase.vue:74
 msgctxt "Content/*/Button.Label/Verb"
 msgid "Search on Wikipedia"
 msgstr "Искать на Википедии"
 
 #: front/src/components/library/Library.vue:35
-#: src/views/admin/library/Base.vue:32
-#: front/src/views/admin/moderation/Base.vue:22
+#: src/views/admin/library/Base.vue:35
+#: front/src/views/admin/moderation/Base.vue:44
 #: src/views/admin/users/Base.vue:21 front/src/views/content/Base.vue:19
 msgctxt "Menu/*/Hidden text"
 msgid "Secondary menu"
-msgstr ""
+msgstr "Дополнительное меню"
 
 #: front/src/views/admin/Settings.vue:15
 msgctxt "Content/Admin/Menu.Title"
 msgid "Sections"
 msgstr "Разделы"
 
+#: front/src/components/ShortcutsModal.vue:108
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek backwards 30s"
+msgstr "Перемотать назад на 30сек"
+
+#: front/src/components/ShortcutsModal.vue:100
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek backwards 5s"
+msgstr "Перемотать назад на 5сек"
+
+#: front/src/components/ShortcutsModal.vue:112
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek forwards 30s"
+msgstr "Перемотать вперёд на 30сек"
+
+#: front/src/components/ShortcutsModal.vue:104
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek forwards 5s"
+msgstr "Перемотать вперёд на 5сек"
+
 #: front/src/components/library/radios/Builder.vue:46
 msgctxt "Content/Radio/Dropdown.Placeholder/Verb"
 msgid "Select a filter"
 msgstr "Выберите фильтр"
 
 #: front/src/components/common/ActionTable.vue:79
-#, fuzzy
 msgctxt "Content/*/Link/Verb"
 msgid "Select all %{ total } elements"
 msgid_plural "Select all %{ total } elements"
@@ -3779,9 +4100,14 @@ msgctxt "Content/*/Link/Verb"
 msgid "Select only current page"
 msgstr "Выбрать только текущую страницу"
 
-#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:108
-#: front/src/components/manage/users/UsersTable.vue:181
-#: front/src/views/admin/moderation/AccountsDetail.vue:506
+#: front/src/components/Home.vue:43
+msgctxt "Content/Home/Link"
+msgid "Server rules"
+msgstr "Правила сервера"
+
+#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:112
+#: front/src/components/manage/users/UsersTable.vue:182
+#: front/src/views/admin/moderation/AccountsDetail.vue:526
 msgctxt "*/*/*/Noun"
 msgid "Settings"
 msgstr "Настройки"
@@ -3803,20 +4129,28 @@ msgstr "Поделиться ссылкой"
 
 #: front/src/views/content/libraries/Detail.vue:15
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Share this link with other users so they can request access to your library."
-msgstr ""
-"Поделитесь этой ссылкой с другими пользователями чтобы они могли запросить "
-"доступ к вашей библиотеке."
+msgid "Share this link with other users so they can request access to your library."
+msgstr "Поделитесь этой ссылкой с другими пользователями чтобы они могли запросить доступ к вашей библиотеке."
 
 #: front/src/views/content/libraries/Detail.vue:14
-#: front/src/views/content/remote/Card.vue:77
+#: front/src/views/content/remote/Card.vue:90
 msgctxt "Content/Library/Title"
 msgid "Sharing link"
 msgstr "Поделиться ссылкой"
 
+#: front/src/components/audio/EmbedWizard.vue:5
+msgctxt "Content/Embed/Message"
+msgid "Sharing will not work because this pod doesn't allow anonymous users to access content."
+msgstr ""
+"Общий доступ не будет работать, так как данный узел не разрешает анонимным "
+"пользователям доступ к содержимому."
+
+#: front/src/components/About.vue:156
+msgctxt "*/*/*/Verb"
+msgid "Show"
+msgstr "Показать"
+
 #: front/src/components/audio/album/Card.vue:38
-#, fuzzy
 msgctxt "Content/Album/Card.Link/Verb"
 msgid "Show %{ count } more track"
 msgid_plural "Show %{ count } more tracks"
@@ -3824,31 +4158,40 @@ msgstr[0] "Показать больше на %{ count } трек"
 msgstr[1] "Показать больше на %{ count } трека"
 msgstr[2] "Показать больше на %{ count } треков"
 
-#: front/src/components/audio/artist/Card.vue:30
-#, fuzzy
-msgctxt "Content/Artist/Card.Link"
-msgid "Show 1 more album"
-msgid_plural "Show %{ count } more albums"
-msgstr[0] "Показать больше на %{ count } альбом"
-msgstr[1] "Показать больше на %{ count } альбома"
-msgstr[2] "Показать больше на %{ count } альбомов"
+#: front/src/components/tags/List.vue:11
+msgctxt "Content/*/Button/Label/Verb"
+msgid "Show 1 more tag"
+msgid_plural "Show %{ count } more tags"
+msgstr[0] "Показать ещё один тег"
+msgstr[1] "Показать ещё %{ count } тега"
+msgstr[2] "Показать ещё %{ count } тегов"
 
 #: front/src/components/library/EditForm.vue:21
 msgctxt "Content/Library/Button.Label"
 msgid "Show all edits"
-msgstr ""
+msgstr "Показать все правки"
 
-#: front/src/components/ShortcutsModal.vue:42
+#: front/src/components/ShortcutsModal.vue:60
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Show available keyboard shortcuts"
-msgstr ""
+msgstr "Показать доступные горячие клавиши"
+
+#: front/src/components/common/ExpandableDiv.vue:7
+msgctxt "*/*/Button,Label"
+msgid "Show less"
+msgstr "Показать меньше"
+
+#: front/src/components/common/ExpandableDiv.vue:8
+msgctxt "*/*/Button,Label"
+msgid "Show more"
+msgstr "Показать больше"
 
-#: front/src/views/Notifications.vue:7
+#: front/src/views/Notifications.vue:72
 msgctxt "Content/Notifications/Form.Label/Verb"
 msgid "Show read notifications"
 msgstr "Показывать прочитанные уведомления"
 
-#: front/src/components/forms/PasswordInput.vue:26
+#: front/src/components/forms/PasswordInput.vue:42
 msgctxt "Content/Settings/Button.Tooltip/Verb"
 msgid "Show/hide password"
 msgstr "Показать/скрыть пароль"
@@ -3857,56 +4200,63 @@ msgstr "Показать/скрыть пароль"
 #: front/src/components/manage/library/ArtistsTable.vue:84
 #: front/src/components/manage/library/EditsCardList.vue:72
 #: front/src/components/manage/library/LibrariesTable.vue:110
+#: front/src/components/manage/library/TagsTable.vue:79
 #: front/src/components/manage/library/TracksTable.vue:95
 #: front/src/components/manage/library/UploadsTable.vue:144
 #: front/src/components/manage/moderation/AccountsTable.vue:88
-#: front/src/components/manage/moderation/DomainsTable.vue:74
+#: front/src/components/manage/moderation/DomainsTable.vue:85
 #: front/src/components/manage/users/InvitationsTable.vue:76
-#: front/src/components/manage/users/UsersTable.vue:87
+#: front/src/components/manage/users/UsersTable.vue:88
 #: front/src/views/content/libraries/FilesTable.vue:117
 msgctxt "Content/*/Paragraph"
 msgid "Showing results %{ start }-%{ end } on %{ total }"
 msgstr "Показаны результаты %{ start }-%{ end } из %{ total }"
 
-#: front/src/components/ShortcutsModal.vue:83
+#: front/src/components/ShortcutsModal.vue:140
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Shuffle queue"
-msgstr "Перемешать вашу очередь"
+msgstr "Перемешать очередь"
 
-#: front/src/components/audio/Player.vue:641
+#: front/src/components/audio/Player.vue:667
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Shuffle your queue"
-msgstr "Перемешать вашу очередь"
+msgstr "Перемешать очередь"
 
-#: front/src/components/auth/Signup.vue:97
+#: front/src/components/Home.vue:103
+msgctxt "*/Signup/Title"
+msgid "Sign up"
+msgstr "Регистрация"
+
+#: front/src/views/auth/Signup.vue:37
 msgctxt "*/Signup/Title"
 msgid "Sign Up"
 msgstr "Регистрация"
 
+#: front/src/components/Home.vue:107
+msgctxt "Content/Home/Paragraph"
+msgid "Sign up now to keep a track of your favorites, create playlists, discover new content and much more!"
+msgstr "Зарегистрируйтесь сейчас, чтобы добавлять треки в избранное, создавать списки, находить новую музыку и многое другое!"
+
 #: front/src/components/manage/users/UsersTable.vue:40
 msgctxt "Content/Admin/Table.Label/Short, Noun (Value is a date)"
 msgid "Sign-up"
 msgstr "Регистрация"
 
-#: front/src/components/mixins/Translations.vue:57
-#: front/src/views/admin/moderation/AccountsDetail.vue:197
-#: front/src/components/mixins/Translations.vue:58
+#: front/src/components/mixins/Translations.vue:69
+#: front/src/views/admin/moderation/AccountsDetail.vue:198
+#: front/src/components/mixins/Translations.vue:70
 msgctxt "Content/Admin/Table.Label/Noun"
 msgid "Sign-up date"
 msgstr "Дата регистрации"
 
-#: front/src/components/manage/library/UploadsTable.vue:65
-#: front/src/views/admin/library/UploadDetail.vue:219
-msgctxt "Content/*/*/Noun"
-msgid "Size"
-msgstr "Размер"
-
 #: front/src/components/library/FileUpload.vue:94
 #: front/src/components/library/TrackDetail.vue:39
-#: front/src/components/mixins/Translations.vue:54
+#: front/src/components/manage/library/UploadsTable.vue:65
+#: front/src/components/mixins/Translations.vue:66
+#: front/src/views/admin/library/UploadDetail.vue:219
 #: front/src/views/content/libraries/FilesTable.vue:61
-#: front/src/components/mixins/Translations.vue:55
-msgctxt "Content/Library/*/in MB"
+#: front/src/components/mixins/Translations.vue:67
+msgctxt "Content/*/*/Noun"
 msgid "Size"
 msgstr "Размер"
 
@@ -3923,102 +4273,78 @@ msgctxt "Content/Library/Label"
 msgid "Skipped files"
 msgstr "Пропущенные файлы"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:89
+#: front/src/views/admin/moderation/DomainsDetail.vue:126
 msgctxt "Content/Moderation/Table.Label"
 msgid "Software"
-msgstr ""
+msgstr "Программное обеспечение"
 
 #: front/src/components/playlists/Editor.vue:21
 msgctxt "Content/Playlist/Paragraph"
 msgid "Some tracks in your queue are already in this playlist:"
-msgstr ""
+msgstr "Некоторые треки из очереди уже находятся в этом списке воспроизведения:"
 
 #: front/src/components/PageNotFound.vue:10
 msgctxt "Content/*/Paragraph"
 msgid "Sorry, the page you asked for does not exist:"
-msgstr "Извините, страницы которую вы запрашивали не существует:"
+msgstr "Извините, страницы, которую вы запрашивали, не существует:"
 
-#: front/src/components/Footer.vue:49
+#: front/src/components/Footer.vue:57
 msgctxt "Footer/*/List item.Link"
 msgid "Source code"
 msgstr "Исходный код"
 
 #: front/src/components/auth/Profile.vue:23
-#: front/src/components/manage/users/UsersTable.vue:70
+#: front/src/components/manage/users/UsersTable.vue:71
 msgctxt "Content/Profile/User role"
 msgid "Staff member"
-msgstr ""
+msgstr "Член команды"
 
-#: front/src/components/audio/PlayButton.vue:23
+#: front/src/components/audio/PlayButton.vue:27
 #: src/components/radios/Button.vue:4
 msgctxt "*/Queue/Button.Label/Short, Verb"
 msgid "Start radio"
-msgstr "Остановить радио"
+msgstr "Включить радио"
 
-#: front/src/views/admin/Settings.vue:86
-msgctxt "Content/Admin/Menu"
+#: front/src/components/About.vue:170 src/components/Home.vue:53
+#: front/src/views/admin/Settings.vue:87
+msgctxt "Content/Home/Header"
 msgid "Statistics"
 msgstr "Статистика"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:490
+#: front/src/views/admin/moderation/AccountsDetail.vue:510
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this account"
-msgstr ""
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this account"
+msgstr "Статистика считается по известной активности и содержимому Вашего узла и не отражает всю активность для этого аккаунта"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:371
+#: front/src/views/admin/moderation/DomainsDetail.vue:418
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this domain"
-msgstr ""
-
-#: front/src/views/admin/library/AlbumDetail.vue:329
-#: front/src/views/admin/library/ArtistDetail.vue:328
-#: front/src/views/admin/library/LibraryDetail.vue:316
-#: front/src/views/admin/library/TrackDetail.vue:371
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this domain"
+msgstr "Статистика считается по известной активности и содержимому Вашего узла и не отражает всю активность для этого домена"
+
+#: front/src/views/admin/library/AlbumDetail.vue:346
+#: front/src/views/admin/library/ArtistDetail.vue:345
+#: front/src/views/admin/library/LibraryDetail.vue:356
+#: front/src/views/admin/library/TagDetail.vue:210
+#: front/src/views/admin/library/TrackDetail.vue:389
 #: front/src/views/admin/library/UploadDetail.vue:335
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Statistics are computed from known activity and content on your instance, "
-"and do not reflect general activity for this object"
-msgstr ""
-
-#: front/src/views/admin/moderation/DomainsDetail.vue:115
-msgctxt "Content/Moderation/Table.Label (Value is Error message)"
-msgid "Status"
-msgstr "Статус"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this object"
+msgstr "Статистика считается по известной активности и содержимому Вашего узла и не отражает всю активность для этого объекта"
 
 #: front/src/components/library/FileUpload.vue:95
-msgctxt "Content/Library/Table.Label (Value is Uploading/Uploaded/Error)"
-msgid "Status"
-msgstr "Статус"
-
-#: front/src/views/content/libraries/Detail.vue:28
-msgctxt "Content/Library.Federation/Table.Label (Value is Approved/Rejected)"
-msgid "Status"
-msgstr "Статус"
-
+#: front/src/components/manage/library/EditsCardList.vue:12
+#: front/src/components/manage/moderation/ReportCard.vue:57
 #: front/src/components/manage/users/InvitationsTable.vue:17
 #: front/src/components/manage/users/InvitationsTable.vue:39
-msgctxt "Content/Admin/*/Noun (Value is Used/Not used)"
-msgid "Status"
-msgstr "Статус"
-
 #: front/src/components/manage/users/UsersTable.vue:43
-msgctxt "Content/Admin/Table.Label/Noun (Value is Regular user/Admin)"
-msgid "Status"
-msgstr "Статус"
-
-#: front/src/components/manage/library/EditsCardList.vue:12
-msgctxt ""
-"Content/Search/Dropdown.Label (Value is All/Pending "
-"review/Approved/Rejected)"
+#: front/src/views/admin/moderation/DomainsDetail.vue:152
+#: front/src/views/admin/moderation/ReportsList.vue:14
+#: front/src/views/content/libraries/Detail.vue:28
+msgctxt "*/*/*"
 msgid "Status"
 msgstr "Статус"
 
-#: front/src/components/Sidebar.vue:174 src/components/radios/Button.vue:3
+#: front/src/components/Sidebar.vue:178 src/components/radios/Button.vue:3
 msgctxt "*/Player/Button.Label/Short, Verb"
 msgid "Stop radio"
 msgstr "Остановить радио"
@@ -4028,22 +4354,32 @@ msgctxt "*/*/Button.Label/Verb"
 msgid "Submit"
 msgstr "Отправить"
 
-#: front/src/components/library/EditForm.vue:98
+#: front/src/components/library/EditForm.vue:110
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Submit and apply edit"
-msgstr ""
+msgstr "Применить изменения"
 
 #: front/src/components/library/EditForm.vue:7
 msgctxt "Content/Library/Button.Label"
 msgid "Submit another edit"
-msgstr ""
+msgstr "Отправить ещё одну правку"
 
-#: front/src/components/library/EditForm.vue:99
+#: front/src/components/moderation/ReportModal.vue:64
+msgctxt "Popup/*/Button.Label"
+msgid "Submit report"
+msgstr "Отправить жалобу"
+
+#: front/src/components/library/EditForm.vue:111
 msgctxt "Content/Library/Button.Label/Verb"
 msgid "Submit suggestion"
-msgstr ""
+msgstr "Отправить предложение"
 
-#: front/src/views/admin/Settings.vue:85
+#: front/src/components/manage/moderation/ReportCard.vue:17
+msgctxt "Content/Moderation/*"
+msgid "Submitted by"
+msgstr "Отправлено от"
+
+#: front/src/views/admin/Settings.vue:86
 msgctxt "Content/Admin/Menu"
 msgid "Subsonic"
 msgstr "Subsonic"
@@ -4056,22 +4392,22 @@ msgstr "Пароль Subsonic API"
 #: front/src/components/library/EditForm.vue:38
 msgctxt "Content/Library/Paragraph"
 msgid "Suggest a change using the form below."
-msgstr ""
+msgstr "Предложите правку, используя форму ниже."
 
 #: front/src/components/library/AlbumEdit.vue:5
 msgctxt "Content/*/Title"
 msgid "Suggest an edit on this album"
-msgstr "Нам не удалось добавить трек в список воспроизведения"
+msgstr "Предложите правку для этого альбома"
 
 #: front/src/components/library/ArtistEdit.vue:5
 msgctxt "Content/*/Title"
 msgid "Suggest an edit on this artist"
-msgstr "Нам не удалось добавить трек в список воспроизведения"
+msgstr "Предложите правку для этого исполнителя"
 
 #: front/src/components/library/TrackEdit.vue:5
 msgctxt "Content/*/Title"
 msgid "Suggest an edit on this track"
-msgstr "Нам не удалось добавить трек в список воспроизведения"
+msgstr "Предложите правку для этого трека"
 
 #: front/src/components/SetInstanceModal.vue:31
 msgctxt "Popup/Instance/List.Label"
@@ -4081,62 +4417,85 @@ msgstr "Предложенные изменения"
 #: front/src/components/library/FileUpload.vue:3
 msgctxt "Content/Library/Tab.Title/Short"
 msgid "Summary"
-msgstr ""
+msgstr "Сводка"
 
-#: front/src/components/library/EditForm.vue:87
+#: front/src/components/library/EditForm.vue:99
 msgctxt "*/*/*"
 msgid "Summary (optional)"
-msgstr ""
+msgstr "Сводка (необязательно)"
 
-#: front/src/components/Footer.vue:39
+#: front/src/components/Footer.vue:47
 msgctxt "Footer/*/Listitem.Link"
 msgid "Support forum"
-msgstr ""
+msgstr "Форум поддержки"
+
+#: front/src/views/Notifications.vue:10
+msgctxt "Content/Notifications/Header"
+msgid "Support this Funkwhale pod"
+msgstr "Поддержать этот узел Funkwhale"
 
 #: front/src/components/library/FileUpload.vue:85
 msgctxt "Content/Library/Paragraph"
 msgid "Supported extensions: %{ extensions }"
-msgstr ""
+msgstr "Поддерживаемые расширения: %{ extensions }"
 
 #: front/src/components/playlists/Editor.vue:9
 msgctxt "Content/Playlist/Paragraph"
 msgid "Syncing changes to server…"
-msgstr "Синхронизируем изменения с сервером..."
+msgstr "Синхронизируем изменения с сервером…"
 
-#: front/src/components/audio/EmbedWizard.vue:25
+#: front/src/components/audio/SearchBar.vue:35
+msgctxt "*/*/*/Noun"
+msgid "Tag"
+msgstr "Тег"
+
+#: front/src/views/admin/library/TagDetail.vue:61
+msgctxt "Content/Moderation/Title"
+msgid "Tag data"
+msgstr "Теги"
+
+#: front/src/components/library/Albums.vue:23
+#: src/components/library/Artists.vue:15
+#: front/src/views/admin/library/Base.vue:23
+#: src/views/admin/library/TagsList.vue:24 front/src/edits.js:24
+#: src/edits.js:50 src/edits.js:91 src/entities.js:120
+msgctxt "*/*/*/Noun"
+msgid "Tags"
+msgstr "Теги"
+
+#: front/src/components/mixins/Translations.vue:44
+#: front/src/components/mixins/Translations.vue:45
+msgctxt "Content/Moderation/Dropdown"
+msgid "Takedown request"
+msgstr "Запрос на удаление"
+
+#: front/src/components/About.vue:35 src/components/About.vue:61
+msgctxt "Content/About/Header"
+msgid "Terms and privacy policy"
+msgstr "Условия использования и политика приватности"
+
+#: front/src/components/audio/EmbedWizard.vue:35
 #: front/src/components/common/CopyInput.vue:3
 msgctxt "Content/*/Paragraph"
 msgid "Text copied to clipboard!"
 msgstr "Текст скопирован в буфер обмена!"
 
-#: front/src/components/Home.vue:26
-msgctxt "Content/Home/Paragraph"
-msgid ""
-"That's simple: we loved Grooveshark and we want to build something even "
-"better."
-msgstr ""
-"Это просто: нам нравился Grooveshark и мы хотели создать что-то ещё лучшее."
-
-#: front/src/views/admin/library/AlbumDetail.vue:75
+#: front/src/views/admin/library/AlbumDetail.vue:81
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The album will be removed, as well as associated uploads, tracks, favorites "
-"and listening history. This action is irreversible."
-msgstr ""
+msgid "The album will be removed, as well as associated uploads, tracks, favorites and listening history. This action is irreversible."
+msgstr "Альбом будет удалён вместе со связанными с ним закачками, треками, избранным и историей прослушивания. Это действие нельзя отменить."
 
 #: front/src/components/auth/Authorize.vue:39
 msgctxt "Content/Auth/Paragraph"
 msgid "The application is also requesting the following unknown permissions:"
-msgstr ""
+msgstr "Приложение также запрашивает следующие неизвестные разрешения:"
 
-#: front/src/views/admin/library/ArtistDetail.vue:74
+#: front/src/views/admin/library/ArtistDetail.vue:79
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The artist will be removed, as well as associated uploads, tracks, albums, "
-"favorites and listening history. This action is irreversible."
-msgstr ""
+msgid "The artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible."
+msgstr "Исполнитель будет удалён вместе со связанными с ним закачками, треками, альбомами, избранным и историей прослушивания. Это действие нельзя отменить."
 
-#: front/src/components/Footer.vue:53
+#: front/src/components/Footer.vue:61
 msgctxt "Footer/*/List item.Link"
 msgid "The funkwhale logo was kindly designed and provided by Francis Gading."
 msgstr "Логотип funkwhale был любезно предоставлен Francis Gading."
@@ -4144,108 +4503,102 @@ msgstr "Логотип funkwhale был любезно предоставлен
 #: front/src/components/SetInstanceModal.vue:8
 msgctxt "Popup/Instance/Error message.List item"
 msgid "The given address is not a Funkwhale server"
-msgstr ""
+msgstr "Заданный адрес не является сервером Funkwhale"
 
 #: front/src/views/content/libraries/Form.vue:34
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"The library and all its tracks will be deleted. This can not be undone."
+msgid "The library and all its tracks will be deleted. This can not be undone."
 msgstr "Библиотека и все треки в ней будут удалены. Это действие необратимо."
 
 #: front/src/views/admin/library/LibraryDetail.vue:61
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The library will be removed, as well as associated uploads, and follows. "
-"This action is irreversible."
-msgstr ""
+msgid "The library will be removed, as well as associated uploads, and follows. This action is irreversible."
+msgstr "Библиотека будет удалена вместе со связанными с ней закачками и подписками. Это действие нельзя отменить."
 
 #: front/src/components/library/ImportStatusModal.vue:140
 msgctxt "Popup/Import/Error.Label"
-msgid ""
-"The metadata included in the file is invalid or some mandatory fields are "
-"missing."
-msgstr ""
+msgid "The metadata included in the file is invalid or some mandatory fields are missing."
+msgstr "Метаданные файла неправильные или некоторые обязательные поля отсутствуют."
 
 #: front/src/components/library/FileUpload.vue:38
 msgctxt "Content/Library/List item"
 msgid "The music files you are uploading are tagged properly."
-msgstr ""
+msgstr "Закачиваемые вами файлы имеют правильные теги."
 
 #: front/src/components/audio/Player.vue:65
 msgctxt "Sidebar/Player/Error message.Paragraph"
 msgid "The next track will play automatically in a few seconds…"
-msgstr ""
+msgstr "Следующий трек запустится автоматически через несколько секунд…"
 
-#: front/src/components/Home.vue:116
-msgctxt "Content/Home/List item"
-msgid ""
-"The plaform is free and open-source, you can install it and modify it "
-"without worries"
-msgstr ""
+#: front/src/components/manage/moderation/NotesThread.vue:27
+msgctxt "Content/Moderation/Paragraph"
+msgid "The note will be removed. This action is irreversible."
+msgstr "Заметка будет удалена. Это действие нельзя отменить."
+
+#: front/src/components/manage/moderation/ReportCard.vue:120
+msgctxt "Content/Moderation/Message"
+msgid "The object associated with this report was deleted."
+msgstr "Объект, связанный с этой жалобой, был удалён."
 
 #: front/src/components/playlists/Form.vue:14
 msgctxt "Content/Playlist/Error message.Title"
 msgid "The playlist could not be created"
-msgstr "Список воспроизведения создан"
+msgstr "Список воспроизведения не может быть создан"
 
 #: front/src/components/federation/FetchButton.vue:37
 msgctxt "*/*/Error"
 msgid "The remote server answered with HTTP %{ status }"
-msgstr ""
+msgstr "Удалённый сервер ответил с HTTP %{ status }"
 
 #: front/src/components/federation/FetchButton.vue:13
 msgctxt "Popup/*/Message.Content"
-msgid ""
-"The remote server answered, but returned data was unsupported by Funkwhale."
-msgstr ""
+msgid "The remote server answered, but returned data was unsupported by Funkwhale."
+msgstr "Удалённый сервер ответил, но ответ не поддерживается Funkwhale."
 
 #: front/src/components/federation/FetchButton.vue:44
 msgctxt "*/*/Error"
-msgid "The remote server didn't answered fast enough"
-msgstr ""
+msgid "The remote server didn't respond quickly enough"
+msgstr "Удалённый сервер не ответил достаточно быстро"
 
 #: front/src/components/federation/FetchButton.vue:50
 msgctxt "*/*/Error"
-msgid "The return server returned invalid JSON or JSON-LD data"
-msgstr ""
+msgid "The remote server returned invalid JSON or JSON-LD data"
+msgstr "Удалённый сервер вернул неправильные JSON или JSON-LD данные"
 
 #: front/src/components/manage/library/AlbumsTable.vue:189
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected albums will be removed, as well as associated tracks, uploads, "
-"favorites and listening history. This action is irreversible."
-msgstr ""
+msgid "The selected albums will be removed, as well as associated tracks, uploads, favorites and listening history. This action is irreversible."
+msgstr "Выбранные альбомы будут удалены вместе со связанными треками, закачками, избранным и историей прослушивания. Это действие нельзя отменить."
 
 #: front/src/components/manage/library/ArtistsTable.vue:179
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected artist will be removed, as well as associated uploads, tracks, "
-"albums, favorites and listening history. This action is irreversible."
-msgstr ""
+msgid "The selected artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible."
+msgstr "Выбранный исполнитель будет удален вместе со связанными закачками, треками, альбомами, избранным и историей прослушивания. Это действие нельзя отменить."
 
 #: front/src/components/manage/library/LibrariesTable.vue:206
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected library will be removed, as well as associated uploads and "
-"follows. This action is irreversible."
-msgstr ""
+msgid "The selected library will be removed, as well as associated uploads and follows. This action is irreversible."
+msgstr "Выбранная библиотека будет удалена вместе со связанными закачками и подписками. Это действие нельзя отменить."
+
+#: front/src/components/manage/library/TagsTable.vue:180
+msgctxt "Popup/*/Paragraph"
+msgid "The selected tag will be removed and unlinked with existing content, if any. This action is irreversible."
+msgstr "Выбранный тег будет снят со всего связанного с ним содержимого (если оно есть) и удалён. Это действие нельзя отменить."
 
 #: front/src/components/manage/library/TracksTable.vue:189
 msgctxt "Popup/*/Paragraph"
-msgid ""
-"The selected tracks will be removed, as well as associated uploads, "
-"favorites and listening history. This action is irreversible."
-msgstr ""
+msgid "The selected tracks will be removed, as well as associated uploads, favorites and listening history. This action is irreversible."
+msgstr "Выбранные треки будут удалены вместе со связанными закачками, избранным и историей прослушивания. Это действие нельзя отменить."
 
 #: front/src/components/manage/library/UploadsTable.vue:256
 msgctxt "Popup/*/Paragraph"
 msgid "The selected upload will be removed. This action is irreversible."
-msgstr ""
+msgstr "Выбранная закачка будет удалена. Это действие нельзя отменить."
 
 #: front/src/components/SetInstanceModal.vue:7
 msgctxt "Popup/Instance/Error message.List item"
 msgid "The server might be down"
-msgstr ""
+msgstr "Сервер может быть недоступен"
 
 #: front/src/components/auth/SubsonicTokenForm.vue:4
 msgctxt "Content/Settings/Paragraph"
@@ -4254,9 +4607,13 @@ msgstr "Subsonic API недоступен на этом узле Funkwhale."
 
 #: front/src/components/library/EditCard.vue:96
 msgctxt "Popup/Library/Paragraph"
-msgid ""
-"The suggestion will be completely removed, this action is irreversible."
-msgstr ""
+msgid "The suggestion will be completely removed, this action is irreversible."
+msgstr "Предложенная правка будет удалена, это действие нельзя отменить."
+
+#: front/src/views/admin/library/TagDetail.vue:44
+msgctxt "Content/Moderation/Paragraph"
+msgid "The tag will be removed and unlinked from any existing entity. This action is irreversible."
+msgstr "Тег будет отвязан от всех существующих объектов и удалён. Это действие нельзя отменить."
 
 #: front/src/components/playlists/PlaylistModal.vue:34
 msgctxt "Popup/Playlist/Error message.Title"
@@ -4266,19 +4623,17 @@ msgstr "Нам не удалось добавить трек в список в
 #: front/src/components/audio/Player.vue:62
 msgctxt "Sidebar/Player/Error message.Title"
 msgid "The track cannot be loaded"
-msgstr ""
+msgstr "Трек не может быть загружен"
 
-#: front/src/views/admin/library/TrackDetail.vue:74
+#: front/src/views/admin/library/TrackDetail.vue:80
 msgctxt "Content/Moderation/Paragraph"
-msgid ""
-"The track will be removed, as well as associated uploads, favorites and "
-"listening history. This action is irreversible."
-msgstr ""
+msgid "The track will be removed, as well as associated uploads, favorites and listening history. This action is irreversible."
+msgstr "Трек будет удалён вместе со связанными закачками, избранным и историей прослушивания. Это действие нельзя отменить."
 
 #: front/src/views/admin/library/UploadDetail.vue:68
 msgctxt "Content/Moderation/Paragraph"
 msgid "The upload will be removed. This action is irreversible."
-msgstr ""
+msgstr "Закачка будет удалена. Это действие нельзя отменить."
 
 #: front/src/components/library/FileUpload.vue:42
 msgctxt "Content/Library/List item"
@@ -4288,12 +4643,12 @@ msgstr "Загружаемые музыкальные файлы в формат
 #: front/src/views/content/Home.vue:4
 msgctxt "Content/Library/Paragraph"
 msgid "There are various ways to grab new content and make it available here."
-msgstr ""
+msgstr "Есть разные способы получить новый контент и разместить его здесь."
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:66
 msgctxt "Popup/Moderation/Paragraph"
 msgid "This action is irreversible."
-msgstr ""
+msgstr "Это действие нельзя отменить."
 
 #: front/src/components/library/AlbumDetail.vue:29
 msgctxt "Content/Album/Paragraph"
@@ -4305,105 +4660,113 @@ msgctxt "Content/Artist/Paragraph"
 msgid "This artist is present in the following libraries:"
 msgstr "Исполнитель представлен в следующих библиотеках:"
 
+#: front/src/components/manage/moderation/DomainsTable.vue:169
+msgctxt "Content/Moderation/Popup"
+msgid "This domain is present in your allow-list"
+msgstr "Этот домен присутствует в Вашем \"белом\" списке"
+
 #: front/src/views/admin/moderation/AccountsDetail.vue:84
-#: front/src/views/admin/moderation/DomainsDetail.vue:48
+#: front/src/views/admin/moderation/DomainsDetail.vue:76
 msgctxt "Content/Moderation/Card.Title"
 msgid "This domain is subject to specific moderation rules"
-msgstr ""
+msgstr "К этому домену применяются особые правила модерации"
+
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:16
+msgctxt "Content/Moderation/Card.Title"
+msgid "This entity is subject to specific moderation rules"
+msgstr "К этому объекту применяются особые правила модерации"
 
 #: front/src/views/content/Home.vue:9
 msgctxt "Content/Library/Paragraph"
 msgid "This instance offers up to %{quota} of storage space for every user."
-msgstr ""
-"Этот узел предоставляет до %{quota} дискового пространства каждому "
-"пользователю."
+msgstr "Этот узел предоставляет до %{quota} дискового пространства каждому пользователю."
+
+#: front/src/components/auth/Settings.vue:300
+msgctxt "Popup/Settings/Paragraph"
+msgid "This is irreversible and will permanently remove your data from our servers. You will we immediatly logged out."
+msgstr "Это окончательно и бесповоротно удалит ваши данные с наших серверов. Вы немедленно выйдете из системы."
 
 #: front/src/components/auth/Settings.vue:165
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"This is the list of applications that have access to your account data."
-msgstr ""
+msgid "This is the list of applications that have access to your account data."
+msgstr "Это список приложений, которые имеют доступ к данным Вашего аккаунта."
 
 #: front/src/components/auth/Settings.vue:218
 msgctxt "Content/Settings/Paragraph"
 msgid "This is the list of applications that you have created."
-msgstr ""
+msgstr "Это список приложений, которые Вы создали."
 
 #: front/src/components/auth/Profile.vue:16
 msgctxt "Content/Profile/Button.Paragraph"
 msgid "This is you!"
-msgstr "Это вы!"
+msgstr "Это Вы!"
 
 #: front/src/views/content/libraries/Form.vue:73
 msgctxt "Content/Library/Input.Placeholder"
 msgid "This library contains my personal music, I hope you like it."
-msgstr "Эта библиотека содержит мою музыку, надеюсь она вам понравится!"
+msgstr "Эта библиотека содержит мою музыку, надеюсь она Вам понравится!"
 
-#: front/src/views/content/remote/Card.vue:141
+#: front/src/views/content/remote/Card.vue:169
 msgctxt "Content/Library/Card.Help text"
-msgid ""
-"This library is private and your approval from its owner is needed to access"
-" its content"
-msgstr ""
+msgid "This library is private and your approval from its owner is needed to access its content"
+msgstr "Это личная библиотека и для доступа к ней необходимо получить разрешение владельца"
 
-#: front/src/views/content/remote/Card.vue:142
+#: front/src/views/content/remote/Card.vue:170
 msgctxt "Content/Library/Card.Help text"
 msgid "This library is public and you can access its content freely"
-msgstr ""
+msgstr "Это публичная библиотека и у Вас есть свободный доступ к её содержимому"
 
 #: front/src/components/common/ActionTable.vue:47
 msgctxt "Modal/*/Paragraph"
-msgid ""
-"This may affect a lot of elements or have irreversible consequences, please "
-"double check this is really what you want."
-msgstr ""
-"Это может повлиять на многие элементы, пожалуйста перепроверьте что вы "
-"действительно хотите этого."
+msgid "This may affect a lot of elements or have irreversible consequences, please double check this is really what you want."
+msgstr "Это может повлиять на многие элементы, пожалуйста перепроверьте что Вы действительно хотите этого."
 
 #: front/src/components/library/AlbumEdit.vue:8
 #: front/src/components/library/ArtistEdit.vue:8
 #: front/src/components/library/TrackEdit.vue:8
 msgctxt "Content/*/Message"
 msgid "This object is managed by another server, you cannot edit it."
-msgstr ""
+msgstr "Этот объект управляется другим сервером, Вы не можете редактировать его."
+
+#: front/src/components/Home.vue:87
+msgctxt "Content/Home/Paragraph"
+msgid "This pod runs Funkwhale, a community-driven project that lets you listen and share music and audio within a decentralized, open network."
+msgstr "Этот узел работает на Funkwhale, общественном проекте, который позволяет Вам слушать и делиться музыкой и другим аудио по децентрализованной открытой сети."
 
 #: front/src/components/library/FileUpload.vue:51
 msgctxt "Content/Library/Paragraph"
 msgid "This reference will be used to group imported files together."
-msgstr ""
+msgstr "Это примечание будет использовано для обозначения группы файлов, импортированных вместе."
 
 #: front/src/components/mixins/Translations.vue:33
 #: front/src/components/mixins/Translations.vue:34
 msgctxt "Content/Library/Help text"
-msgid "This track could not be processed, please it is tagged correctly"
-msgstr ""
-"Произошла ошибка во время обработки этого трека, убедитесь что у него "
-"корректные теги"
+msgid "This track could not be processed, please make sure it is tagged correctly"
+msgstr "Произошла ошибка во время обработки этого трека, убедитесь что у него корректные теги"
 
 #: front/src/components/mixins/Translations.vue:29
 #: front/src/components/mixins/Translations.vue:30
 msgctxt "Content/Library/Help text"
-msgid ""
-"This track has been uploaded, but hasn't been processed by the server yet"
-msgstr "Трек загружен но ещё не обработан сервером"
+msgid "This track has been uploaded, but hasn't been processed by the server yet"
+msgstr "Трек загружен, но ещё не обработан сервером"
 
 #: front/src/components/mixins/Translations.vue:25
 #: front/src/components/mixins/Translations.vue:26
 msgctxt "Content/Library/Help text"
 msgid "This track is already present in one of your libraries"
-msgstr "Трек уже был представлен в одной из ваших библиотек"
+msgstr "Трек уже находится в одной из Ваших библиотек"
 
-#: front/src/components/audio/PlayButton.vue:85
+#: front/src/components/audio/PlayButton.vue:103
 msgctxt "*/Queue/Button/Title"
 msgid "This track is not available in any library you have access to"
-msgstr ""
+msgstr "Этот трек недоступен ни в одной из библиотек, к которым у Вас есть доступ"
 
 #: front/src/components/library/TrackDetail.vue:82
 msgctxt "Content/Track/Paragraph"
 msgid "This track is present in the following libraries:"
 msgstr "Этот трек представлен в следующих библиотеках:"
 
-#: front/src/views/playlists/Detail.vue:38
+#: front/src/views/playlists/Detail.vue:46
 msgctxt "Popup/Playlist/Paragraph"
 msgid "This will completely delete this playlist and cannot be undone."
 msgstr "Это необратимо удалит список воспроизведения."
@@ -4413,97 +4776,94 @@ msgctxt "Popup/Radio/Paragraph"
 msgid "This will completely delete this radio and cannot be undone."
 msgstr "Это радио будет необратимо удалено."
 
-#: front/src/components/auth/SubsonicTokenForm.vue:50
+#: front/src/components/auth/SubsonicTokenForm.vue:55
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will completely disable access to the Subsonic API using from account."
+msgid "This will completely disable access to the Subsonic API using from account."
 msgstr "Это полностью отключит доступ к Subsonic API для этого аккаунта."
 
-#: front/src/components/auth/SubsonicTokenForm.vue:35
+#: front/src/components/manage/moderation/ReportCard.vue:359
+msgctxt "Content/Moderation/Popup,Paragraph"
+msgid "This will delete the object associated with this report and mark the report as resolved. The deletion is irreversible."
+msgstr "Это удалит объект, связанный с этой жалобой, и пометит саму жалобу как разрешённую. Это действие нельзя отменить."
+
+#: front/src/components/auth/SubsonicTokenForm.vue:40
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will log you out from existing devices that use the current password."
-msgstr ""
-"Это приведёт к отключению устройств которые используют текущий пароль."
+msgid "This will log you out from existing devices that use the current password."
+msgstr "Это приведёт к отключению устройств которые используют текущий пароль."
 
 #: front/src/components/auth/Settings.vue:253
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will permanently delete the application and all the associated tokens."
-msgstr "Это необратимо удалит список воспроизведения."
+msgid "This will permanently delete the application and all the associated tokens."
+msgstr "Это необратимо удалит приложение и все связанные с ним токены."
 
 #: front/src/components/auth/Settings.vue:194
 msgctxt "Popup/Settings/Paragraph"
-msgid ""
-"This will prevent this application from accessing the service on your "
-"behalf."
-msgstr ""
+msgid "This will prevent this application from accessing the service on your behalf."
+msgstr "Это предотвратит доступ приложения к сервису от вашего имени."
 
 #: front/src/components/playlists/Editor.vue:54
 msgctxt "Popup/Playlist/Paragraph"
 msgid "This will remove all tracks from this playlist and cannot be undone."
 msgstr "Это необратимо удалит все треки из этого списка воспроизведения."
 
-#: front/src/views/admin/library/AlbumDetail.vue:99
-#: front/src/views/admin/library/TrackDetail.vue:98 src/edits.js:21
-#: src/edits.js:39
-msgctxt "*/*/*/Noun"
-msgid "Title"
-msgstr "Название"
-
 #: front/src/components/audio/track/Table.vue:7
-#: front/src/views/content/libraries/FilesTable.vue:55
-msgctxt "Content/Track/*/Noun"
-msgid "Title"
-msgstr "Название"
-
 #: front/src/components/manage/library/AlbumsTable.vue:39
 #: front/src/components/manage/library/TracksTable.vue:39
-msgctxt "*/*/*"
+#: front/src/views/admin/library/AlbumDetail.vue:105
+#: front/src/views/admin/library/TrackDetail.vue:104
+#: front/src/views/content/libraries/FilesTable.vue:55 src/edits.js:36
+#: front/src/edits.js:62
+msgctxt "*/*/*/Noun"
 msgid "Title"
 msgstr "Название"
 
 #: front/src/components/SetInstanceModal.vue:16
 msgctxt "Popup/Instance/Paragraph"
-msgid ""
-"To continue, please select the Funkwhale instance you want to connect to. "
-"Enter the address directly, or select one of the suggested choices."
-msgstr ""
+msgid "To continue, please select the Funkwhale instance you want to connect to. Enter the address directly, or select one of the suggested choices."
+msgstr "Чтобы продолжить, пожалуйста выберите узел Funkwhale, к которому Вы соединяетесь. Введите сам адрес или выберите один из предложенных вариантов."
 
-#: front/src/components/ShortcutsModal.vue:79
+#: front/src/components/ShortcutsModal.vue:148
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle favorite"
+msgstr "Добавить/убрать из избранного"
+
+#: front/src/components/ShortcutsModal.vue:132
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle mute"
+msgstr "Вкл/откл. звук"
+
+#: front/src/components/ShortcutsModal.vue:136
 msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
 msgid "Toggle queue looping"
-msgstr ""
+msgstr "Включить цикличное проигрывание очереди"
 
-#: front/src/views/admin/library/AlbumDetail.vue:222
-#: front/src/views/admin/library/ArtistDetail.vue:211
-#: front/src/views/admin/library/LibraryDetail.vue:200
-#: front/src/views/admin/library/TrackDetail.vue:274
-#: front/src/views/admin/moderation/AccountsDetail.vue:317
-#: front/src/views/admin/moderation/DomainsDetail.vue:225
+#: front/src/views/admin/library/AlbumDetail.vue:238
+#: front/src/views/admin/library/ArtistDetail.vue:226
+#: front/src/views/admin/library/LibraryDetail.vue:219
+#: front/src/views/admin/library/TrackDetail.vue:290
+#: front/src/views/admin/moderation/AccountsDetail.vue:329
+#: front/src/views/admin/moderation/DomainsDetail.vue:262
 msgctxt "Content/Moderation/Table.Label"
 msgid "Total size"
-msgstr "Не используется"
+msgstr "Общий размер"
 
 #: front/src/views/content/libraries/Card.vue:68
 msgctxt "Content/Library/Card.Help text"
 msgid "Total size of the files in this library"
 msgstr "Суммарный размер файлов в этой библиотеке"
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:105
+#: front/src/views/admin/moderation/DomainsDetail.vue:142
 msgctxt "Content/*/*"
 msgid "Total users"
-msgstr "Не используется"
-
-#: front/src/views/admin/library/UploadDetail.vue:199
-msgctxt "*/*/*"
-msgid "Track"
-msgstr "Трек"
+msgstr "Всего пользователей"
 
-#: front/src/components/audio/SearchBar.vue:27
-#: front/src/components/library/TrackBase.vue:173
+#: front/src/components/audio/SearchBar.vue:34
+#: front/src/components/library/TrackBase.vue:188
 #: front/src/components/library/TrackDetail.vue:128
 #: front/src/components/metadata/Search.vue:138
+#: src/components/mixins/Report.vue:28
+#: front/src/views/admin/library/UploadDetail.vue:199
+#: front/src/components/mixins/Report.vue:29
 msgctxt "*/*/*/Noun"
 msgid "Track"
 msgstr "Трек"
@@ -4511,42 +4871,40 @@ msgstr "Трек"
 #: front/src/components/library/EditCard.vue:13
 msgctxt "Content/Library/Card/Short"
 msgid "Track #%{ id } - %{ name }"
-msgstr ""
+msgstr "Трек #%{ id } - %{ name }"
 
-#: front/src/views/admin/library/TrackDetail.vue:91
+#: front/src/views/admin/library/TrackDetail.vue:97
 msgctxt "Content/Moderation/Title"
 msgid "Track data"
-msgstr "Название трека"
+msgstr "Данные трека"
 
 #: front/src/components/library/TrackDetail.vue:4
 msgctxt "Content/Track/Title/Noun"
 msgid "Track information"
 msgstr "Информация о треке"
 
-#: front/src/components/mixins/Translations.vue:50
-#: front/src/components/mixins/Translations.vue:51
+#: front/src/components/mixins/Translations.vue:60
+#: front/src/components/mixins/Translations.vue:61
 msgctxt "Content/*/Dropdown/Noun"
 msgid "Track name"
 msgstr "Название трека"
 
-#: front/src/components/instance/Stats.vue:54
 #: front/src/components/library/AlbumDetail.vue:19
-#: front/src/components/playlists/PlaylistModal.vue:47
-#: front/src/views/admin/moderation/AccountsDetail.vue:362
-#: front/src/views/admin/moderation/DomainsDetail.vue:274
-#: front/src/views/content/Base.vue:8 src/views/content/libraries/Detail.vue:8
-#: front/src/views/playlists/Detail.vue:51 src/views/radios/Detail.vue:34
-msgctxt "*/*/*/Noun"
-msgid "Tracks"
-msgstr "Треки"
-
+#: front/src/components/library/TagDetail.vue:36
 #: front/src/components/manage/library/AlbumsTable.vue:42
 #: front/src/components/manage/library/ArtistsTable.vue:42
-#: front/src/views/admin/library/AlbumDetail.vue:252
-#: front/src/views/admin/library/ArtistDetail.vue:251
+#: front/src/components/manage/library/TagsTable.vue:44
+#: front/src/components/playlists/PlaylistModal.vue:47
+#: front/src/views/admin/library/AlbumDetail.vue:268
+#: front/src/views/admin/library/ArtistDetail.vue:266
 #: front/src/views/admin/library/Base.vue:14
-#: front/src/views/admin/library/LibraryDetail.vue:229
+#: front/src/views/admin/library/LibraryDetail.vue:248
+#: front/src/views/admin/library/TagDetail.vue:143
 #: front/src/views/admin/library/TracksList.vue:24
+#: front/src/views/admin/moderation/AccountsDetail.vue:374
+#: front/src/views/admin/moderation/DomainsDetail.vue:311
+#: front/src/views/content/Base.vue:8 src/views/content/libraries/Detail.vue:8
+#: front/src/views/playlists/Detail.vue:76 src/views/radios/Detail.vue:34
 msgctxt "*/*/*"
 msgid "Tracks"
 msgstr "Треки"
@@ -4556,76 +4914,63 @@ msgctxt "Content/Artist/Title"
 msgid "Tracks by this artist"
 msgstr "Треки этого исполнителя"
 
-#: front/src/components/instance/Stats.vue:25
-msgctxt "Content/About/Paragraph/Unit"
-msgid "Tracks favorited"
-msgstr "Избранные треки"
-
-#: front/src/components/instance/Stats.vue:19
-msgctxt "Content/About/Paragraph/Unit"
-msgid "tracks listened"
-msgstr "треков прослушано"
-
 #: front/src/components/library/radios/Filter.vue:44
 msgctxt "Popup/Radio/Title/Noun"
 msgid "Tracks matching filter"
-msgstr "Трек подходящий под фильтр"
+msgstr "Треки, подходящие под фильтр"
 
 #: front/src/components/library/TrackDetail.vue:57
+#: front/src/components/manage/moderation/ReportCard.vue:134
 #: front/src/views/admin/library/UploadDetail.vue:250
+#: front/src/views/admin/moderation/AccountsDetail.vue:181
 msgctxt "Content/Track/Table.Label/Noun"
 msgid "Type"
 msgstr "Тип"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:180
-msgctxt "Content/Moderation/Table.Label/Noun"
-msgid "Type"
-msgstr "Тип"
-
 #: front/src/components/manage/moderation/AccountsTable.vue:44
-#: front/src/components/manage/moderation/DomainsTable.vue:42
+#: front/src/components/manage/moderation/DomainsTable.vue:50
 msgctxt "Content/Moderation/Table.Label/Short"
 msgid "Under moderation rule"
-msgstr "Удалить радио"
+msgstr "Действуют правила модерации"
 
-#: front/src/views/content/remote/Card.vue:109
-#: src/views/content/remote/Card.vue:114
+#: front/src/components/ShortcutsModal.vue:68
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Unfocus searchbar"
+msgstr "Выйти из панели поиска"
+
+#: front/src/views/content/remote/Card.vue:122
+#: src/views/content/remote/Card.vue:127
 msgctxt "*/Library/Button.Label/Verb"
 msgid "Unfollow"
 msgstr "Отписаться"
 
-#: front/src/views/content/remote/Card.vue:110
+#: front/src/views/content/remote/Card.vue:123
 msgctxt "Popup/Library/Title"
 msgid "Unfollow this library?"
 msgstr "Отписаться от этой библиотеки?"
 
-#: front/src/components/About.vue:17
-msgctxt "Content/About/Paragraph"
-msgid ""
-"Unfortunately, the owners of this instance did not yet take the time to "
-"complete this page."
-msgstr "К сожалению, владельцы этого узла ещё не заполнили эту страницу."
-
 #: front/src/components/federation/FetchButton.vue:54
 #: front/src/components/federation/FetchButton.vue:55
-msgctxt "*/*/Error"
-msgid "Unknowkn error"
-msgstr ""
-
 #: front/src/components/library/ImportStatusModal.vue:144
-msgctxt "Popup/Import/Error.Label"
-msgid "Unkwown error"
-msgstr ""
-
-#: front/src/components/Home.vue:37
-msgctxt "Content/Home/Title"
-msgid "Unlimited music"
-msgstr "Безграничная музыка"
+msgctxt "*/*/Error"
+msgid "Unknown error"
+msgstr "Неизвестная ошибка"
 
-#: front/src/components/audio/Player.vue:630
+#: front/src/components/audio/Player.vue:656
 msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
 msgid "Unmute"
-msgstr ""
+msgstr "Включить звук"
+
+#: front/src/components/manage/moderation/ReportCard.vue:225
+msgctxt "Content/*/Button.Label"
+msgid "Unresolve"
+msgstr "Открыть заново"
+
+#: front/src/components/manage/moderation/ReportCard.vue:67
+#: front/src/views/admin/moderation/ReportsList.vue:23
+msgctxt "Content/*/*/Short"
+msgid "Unresolved"
+msgstr "Нерешённые"
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:57
 msgctxt "Content/Moderation/Card.Button.Label/Verb"
@@ -4635,7 +4980,7 @@ msgstr "Дата загрузки"
 #: front/src/components/auth/ApplicationForm.vue:64
 msgctxt "Content/Applications/Button.Label/Verb"
 msgid "Update application"
-msgstr "Обновить список воспроизведения"
+msgstr "Обновить приложение"
 
 #: front/src/components/auth/Settings.vue:50
 msgctxt "Content/Settings/Button.Label/Verb"
@@ -4660,7 +5005,7 @@ msgstr "Обновить настройки"
 #: front/src/views/auth/PasswordResetConfirm.vue:21
 msgctxt "Content/Signup/Button.Label"
 msgid "Update your password"
-msgstr "Обновите ваш пароль"
+msgstr "Обновите Ваш пароль"
 
 #: front/src/views/content/libraries/Card.vue:45
 #: front/src/views/content/libraries/DetailArea.vue:24
@@ -4681,7 +5026,7 @@ msgstr "Загрузить аудио"
 #: front/src/views/admin/library/UploadDetail.vue:85
 msgctxt "Content/Moderation/Title"
 msgid "Upload data"
-msgstr "Дата загрузки"
+msgstr "Загруженные данные"
 
 #: front/src/views/content/libraries/FilesTable.vue:58
 msgctxt "*/*/*/Noun"
@@ -4690,53 +5035,44 @@ msgstr "Дата загрузки"
 
 #: front/src/components/library/FileUpload.vue:258
 msgctxt "Content/Library/Help text"
-msgid ""
-"Upload denied, ensure the file is not too big and that you have not reached "
-"your quota"
-msgstr ""
-"Загрузка отклонена, убедитсь что файл не слишком большой и вы не превысили "
-"квоту"
+msgid "Upload denied, ensure the file is not too big and that you have not reached your quota"
+msgstr "Загрузка отклонена, убедитесь, что файл не слишком большой и Вы не превысили квоту"
 
 #: front/src/components/library/ImportStatusModal.vue:8
 msgctxt "Popup/Import/Message"
 msgid "Upload is still pending and will soon be processed by the server."
-msgstr ""
+msgstr "Закачка всё ещё в очереди и скоро будет обработана сервером."
 
 #: front/src/views/content/Home.vue:7
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"Upload music files (MP3, OGG, FLAC, etc.) from your personal library "
-"directly from your browser to enjoy them here."
-msgstr ""
-"Загрузите музыку (mp3, ogg, flac и т.д.) из вашей личной библиотеки прямо из"
-" вашего браузера и наслаждайтесь ей здесь."
+msgid "Upload music files (MP3, OGG, FLAC, etc.) from your personal library directly from your browser to enjoy them here."
+msgstr "Загрузите музыку (mp3, ogg, flac и т.д.) из Вашей личной библиотеки прямо из Вашего браузера и наслаждайтесь ей здесь."
 
 #: front/src/components/library/FileUpload.vue:30
 msgctxt "Content/Library/Title/Verb"
 msgid "Upload new tracks"
 msgstr "Загрузить новые треки"
 
-#: front/src/views/admin/moderation/AccountsDetail.vue:298
-msgctxt "Content/Moderation/Table.Label/Noun"
+#: front/src/components/About.vue:99
+#: front/src/views/admin/moderation/AccountsDetail.vue:309
+msgctxt "*/*/*"
 msgid "Upload quota"
 msgstr "Квота загрузки"
 
 #: front/src/components/library/FileUpload.vue:267
 msgctxt "Content/Library/Help text"
 msgid "Upload timeout, please try again"
-msgstr ""
+msgstr "Таймаут загрузки, попробуйте ещё раз"
 
 #: front/src/components/library/ImportStatusModal.vue:14
 msgctxt "Popup/Import/Message"
-msgid ""
-"Upload was skipped because a similar one is already available in one of your"
-" libraries."
-msgstr ""
+msgid "Upload was skipped because a similar one is already available in one of your libraries."
+msgstr "Закачка была пропущена, так как похожая уже есть в одной из ваших библиотек."
 
 #: front/src/components/library/ImportStatusModal.vue:11
 msgctxt "Popup/Import/Message"
 msgid "Upload was successfully processed by the server."
-msgstr ""
+msgstr "Закачка была успешно обработана сервером."
 
 #: front/src/components/library/FileUpload.vue:109
 msgctxt "Content/Library/Table"
@@ -4751,74 +5087,83 @@ msgstr "Загружается"
 #: front/src/components/library/FileUpload.vue:112
 msgctxt "Content/Library/Table"
 msgid "Uploading…"
-msgstr "Загружается"
+msgstr "Загружается…"
 
+#: front/src/components/manage/library/LibrariesTable.vue:52
+#: front/src/components/manage/moderation/AccountsTable.vue:41
+#: front/src/components/mixins/Translations.vue:75
+#: front/src/views/admin/library/AlbumDetail.vue:258
+#: front/src/views/admin/library/ArtistDetail.vue:246
 #: front/src/views/admin/library/Base.vue:20
+#: front/src/views/admin/library/LibraryDetail.vue:258
+#: front/src/views/admin/library/TrackDetail.vue:310
 #: front/src/views/admin/library/UploadsList.vue:24
+#: front/src/views/admin/moderation/AccountsDetail.vue:349
+#: front/src/views/admin/moderation/DomainsDetail.vue:281
+#: front/src/components/mixins/Translations.vue:76
 msgctxt "*/*/*"
 msgid "Uploads"
-msgstr "Загрузить"
-
-#: front/src/components/manage/moderation/AccountsTable.vue:41
-#: front/src/components/mixins/Translations.vue:63
-#: front/src/views/admin/library/AlbumDetail.vue:242
-#: front/src/views/admin/library/ArtistDetail.vue:231
-#: front/src/views/admin/library/LibraryDetail.vue:239
-#: front/src/views/admin/library/TrackDetail.vue:294
-#: front/src/views/admin/moderation/AccountsDetail.vue:337
-#: front/src/views/admin/moderation/DomainsDetail.vue:244
-#: front/src/components/mixins/Translations.vue:64
-msgctxt "Content/Moderation/Table.Label/Noun"
-msgid "Uploads"
-msgstr "Загрузить"
-
-#: front/src/components/manage/library/LibrariesTable.vue:52
-msgctxt "Content/*/*/Noun"
-msgid "Uploads"
-msgstr "Загрузить"
+msgstr "Закачки"
 
 #: front/src/components/auth/ApplicationForm.vue:16
 msgctxt "Content/Applications/Help Text"
-msgid ""
-"Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is "
-"not served on the web."
-msgstr ""
+msgid "Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is not served on the web."
+msgstr "Используйте \"urn:ietf:wg:oauth:2.0:oob\" как URI перенаправления, если Ваше приложение не опубликовано в Интернет."
 
 #: front/src/components/Footer.vue:16
 msgctxt "Footer/*/List item.Link"
 msgid "Use another instance"
 msgstr "Использовать другой узел"
 
+#: front/src/components/Home.vue:146
+msgctxt "Content/Home/Link"
+msgid "Use Funkwhale on other devices with our apps"
+msgstr "Используйте Funkwhale на других устройствах с помощью наших приложений"
+
+#: front/src/components/moderation/ReportModal.vue:44
+msgctxt "*/*/Field,Help"
+msgid "Use this field to provide additional context to the moderator that will handle your report."
+msgstr "Укажите здесь дополнительную информацию для модератора, который займётся рассмотрением вашей жалобы."
+
 #: front/src/views/auth/PasswordReset.vue:12
 msgctxt "Content/Signup/Paragraph"
-msgid ""
-"Use this form to request a password reset. We will send an email to the "
-"given address with instructions to reset your password."
-msgstr ""
-"Используйте эту форму чтобы запросить сброс пароля. Мы вышлем письмо на "
-"указанный адрес с инструкциями по сбросу вашего пароля."
+msgid "Use this form to request a password reset. We will send an email to the given address with instructions to reset your password."
+msgstr "Используйте эту форму чтобы запросить сброс пароля. Мы вышлем письмо на указанный адрес с инструкциями по сбросу Вашего пароля."
+
+#: front/src/components/moderation/ReportModal.vue:18
+msgctxt "*/Moderation/Popup,Paragraph"
+msgid "Use this form to submit a report to our moderation team."
+msgstr "С помощью этой формы вы можете отправить жалобу нашим модераторам."
 
 #: front/src/components/manage/moderation/InstancePolicyForm.vue:111
 msgctxt "Content/Moderation/Help text"
-msgid ""
-"Use this setting to temporarily enable/disable the policy without completely"
-" removing it."
-msgstr ""
+msgid "Use this setting to temporarily enable/disable the policy without completely removing it."
+msgstr "Используйте эту настройку для временного включения/отключения политики без полного её удаления."
 
 #: front/src/components/manage/users/InvitationsTable.vue:49
 msgctxt "Content/Admin/Table"
 msgid "Used"
 msgstr "Использовано"
 
+#: front/src/components/Home.vue:125
+msgctxt "Content/Home/Header"
+msgid "Useful links"
+msgstr "Полезные ссылки"
+
 #: front/src/views/content/libraries/Detail.vue:26
 msgctxt "Content/Library/Table.Label"
 msgid "User"
 msgstr "Пользователь"
 
-#: front/src/components/instance/Stats.vue:5
-msgctxt "Content/About/Title/Noun"
-msgid "User activity"
-msgstr "Пользовательская активность"
+#: front/src/components/Home.vue:154
+msgctxt "Content/Home/Link"
+msgid "User guides"
+msgstr "Руководства пользователя"
+
+#: front/src/views/admin/Settings.vue:88
+msgctxt "Content/Admin/Menu"
+msgid "User Interface"
+msgstr "Интерфейс пользователя"
 
 #: front/src/components/library/AlbumDetail.vue:26
 #: front/src/components/library/ArtistDetail.vue:39
@@ -4832,35 +5177,35 @@ msgctxt "Content/Radio/Title"
 msgid "User radios"
 msgstr "Пользовательские радио"
 
-#: front/src/components/auth/Signup.vue:19
+#: front/src/components/auth/SignupForm.vue:15
 #: front/src/components/manage/users/UsersTable.vue:37
-#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:71
 #: front/src/views/admin/moderation/AccountsDetail.vue:114
-#: front/src/components/mixins/Translations.vue:60
+#: front/src/components/mixins/Translations.vue:72
 msgctxt "Content/*/*"
 msgid "Username"
 msgstr "Имя пользователя"
 
-#: front/src/components/auth/Login.vue:15
+#: front/src/components/auth/LoginForm.vue:11
 msgctxt "Content/Login/Input.Label/Noun"
 msgid "Username or email"
-msgstr "Имя пользователя или пароль"
+msgstr "Имя пользователя или почта"
 
-#: front/src/components/instance/Stats.vue:13
-msgctxt "Content/About/Paragraph/Unit"
-msgid "users"
-msgstr "пользователи"
-
-#: front/src/components/Sidebar.vue:102
-#: front/src/components/manage/moderation/DomainsTable.vue:39
-#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/Sidebar.vue:106
+#: front/src/components/manage/moderation/DomainsTable.vue:47
+#: front/src/components/mixins/Translations.vue:73
 #: src/views/admin/Settings.vue:81 front/src/views/admin/users/Base.vue:5
 #: src/views/admin/users/UsersList.vue:21
-#: front/src/components/mixins/Translations.vue:62
+#: front/src/components/mixins/Translations.vue:74
 msgctxt "*/*/*/Noun"
 msgid "Users"
 msgstr "Пользователи"
 
+#: front/src/components/Home.vue:110
+msgctxt "Content/Home/Paragraph"
+msgid "Users on this pod also get %{ quota } of free storage to upload their own content!"
+msgstr "Пользователи этого узла так же получают %{ quota } места бесплатно, чтобы делиться своей музыкой!"
+
 #: front/src/components/Footer.vue:29
 msgctxt "Footer/*/Title"
 msgid "Using Funkwhale"
@@ -4869,7 +5214,7 @@ msgstr "О Funkwhale"
 #: front/src/components/Footer.vue:13
 msgctxt "Footer/*/List item"
 msgid "Version %{version}"
-msgstr "Исходный код (%{version})"
+msgstr "Версия (%{version})"
 
 #: front/src/views/content/libraries/Quota.vue:29
 #: front/src/views/content/libraries/Quota.vue:56
@@ -4878,124 +5223,139 @@ msgctxt "Content/Library/Link/Verb"
 msgid "View files"
 msgstr "Просмотреть файлы"
 
-#: front/src/components/library/AlbumBase.vue:81
-#: front/src/components/library/ArtistBase.vue:92
-#: front/src/components/library/TrackBase.vue:100
-#: front/src/views/admin/library/AlbumDetail.vue:42
-#: front/src/views/admin/library/ArtistDetail.vue:41
+#: front/src/components/library/AlbumBase.vue:95
+#: front/src/components/library/ArtistBase.vue:107
+#: front/src/components/library/TrackBase.vue:111
+#: front/src/views/admin/library/AlbumDetail.vue:48
+#: front/src/views/admin/library/ArtistDetail.vue:46
 #: front/src/views/admin/library/LibraryDetail.vue:34
 #: front/src/views/admin/library/LibraryDetail.vue:45
-#: front/src/views/admin/library/TrackDetail.vue:41
+#: front/src/views/admin/library/TagDetail.vue:32
+#: front/src/views/admin/library/TrackDetail.vue:47
 #: front/src/views/admin/library/UploadDetail.vue:35
 #: front/src/views/admin/library/UploadDetail.vue:46
 #: front/src/views/admin/moderation/AccountsDetail.vue:37
 #: front/src/views/admin/moderation/AccountsDetail.vue:45
+#: front/src/views/admin/moderation/DomainsDetail.vue:30
 msgctxt "Content/Moderation/Link/Verb"
 msgid "View in Django's admin"
-msgstr ""
+msgstr "Посмотреть в админке Django"
+
+#: front/src/components/Home.vue:169
+msgctxt "Content/Home/Link"
+msgid "View more…"
+msgstr "Загрузить ещё…"
 
-#: front/src/components/library/AlbumBase.vue:61
-#: front/src/components/library/ArtistBase.vue:72
-#: front/src/components/library/TrackBase.vue:80
+#: front/src/components/library/AlbumBase.vue:62
+#: front/src/components/library/ArtistBase.vue:73
+#: front/src/components/library/TrackBase.vue:78
 #: front/src/components/metadata/ArtistCard.vue:49
 #: front/src/components/metadata/ReleaseCard.vue:53
 msgctxt "Content/*/*/Clickable, Verb"
 msgid "View on MusicBrainz"
 msgstr "Смотреть на MusicBrainz"
 
+#: front/src/components/manage/moderation/ReportCard.vue:124
+msgctxt "Content/Moderation/Link"
+msgid "View public page"
+msgstr "Посмотреть публичную страницу"
+
 #: front/src/components/manage/library/LibrariesTable.vue:11
 #: front/src/components/manage/library/LibrariesTable.vue:51
 #: front/src/components/manage/library/UploadsTable.vue:11
 #: front/src/components/manage/library/UploadsTable.vue:63
 #: front/src/views/admin/library/LibraryDetail.vue:94
 #: front/src/views/admin/library/UploadDetail.vue:101
+#: front/src/views/content/libraries/Form.vue:18
 msgctxt "*/*/*"
 msgid "Visibility"
 msgstr "Видимость"
 
-#: front/src/views/content/libraries/Form.vue:18
-msgctxt "Content/Library/Dropdown.Label"
-msgid "Visibility"
-msgstr "Видимость"
+#: front/src/components/Home.vue:91
+msgctxt "Content/Home/Link"
+msgid "Visit funkwhale.audio"
+msgstr "Посетить funkwhale.audio"
 
 #: front/src/components/library/AlbumDetail.vue:4
 msgctxt "Content/Album/"
 msgid "Volume %{ number }"
-msgstr ""
+msgstr "Том %{ number }"
 
 #: front/src/components/federation/FetchButton.vue:69
 msgctxt "Popup/*/Loading.Title"
 msgid "Waiting for result…"
-msgstr "Загружаем ваше избранное..."
+msgstr "Ждем результатов…"
+
+#: front/src/components/auth/Settings.vue:285
+msgctxt "Content/Settings/Error message.Title"
+msgid "We cannot delete your account"
+msgstr "Нам не удалось удалить Ваш аккаунт"
 
-#: front/src/components/auth/Login.vue:7
+#: front/src/components/auth/LoginForm.vue:3
 msgctxt "Content/Login/Error message.Title"
 msgid "We cannot log you in"
-msgstr "Мы не смогли сохранить ваши настройки"
+msgstr "Вход не удался"
 
 #: front/src/components/auth/ApplicationForm.vue:3
 msgctxt "Content/*/Error message.Title"
 msgid "We cannot save your changes"
-msgstr "Нам не удалось создать ваш аккаунт"
+msgstr "Мы не смогли сохранить Ваши изменения"
 
-#: front/src/components/Home.vue:122
-msgctxt "Content/Home/List item"
-msgid "We do not track you or bother you with ads"
-msgstr "Мы не отслеживаем вас и не надоедаем вам рекламой"
+#: front/src/views/Notifications.vue:39
+msgctxt "Content/Notifications/Paragraph"
+msgid "We noticed you've been here for a while. If Funkwhale is useful to you, we could use your help to make it even better!"
+msgstr "Мы заметили, Вы уже давно с нами. Если Funkwhale Вам полезен, Вы можете помочь нам сделать его ещё лучше!"
 
 #: front/src/components/library/FileUpload.vue:39
 msgctxt "Content/Library/Link"
 msgid "We recommend using Picard for that purpose."
-msgstr "мы рекомендуем использовать Picard для этого"
+msgstr "Мы рекомендуем использовать Picard для этого."
 
-#: front/src/components/Home.vue:7
-msgctxt "Content/Home/Title"
-msgid "We think listening to music should be simple."
-msgstr "Мы считаем что прослушивание музыки должно быть простым."
+#: front/src/components/moderation/ReportModal.vue:35
+msgctxt "*/*/Field,Help"
+msgid "We'll use this email if we need to contact you regarding this report."
+msgstr "Мы воспользуемся этим адресом, если нам потребуется связаться с Вами по вопросам, связанным с Вашей жалобой."
 
-#: front/src/components/Home.vue:148
+#: front/src/components/Home.vue:207
 msgctxt "Head/Home/Title"
 msgid "Welcome"
 msgstr "Добро пожаловать"
 
 #: front/src/components/Home.vue:5
-msgctxt "Content/Home/Title/Verb"
-msgid "Welcome on Funkwhale"
-msgstr "Добро пожаловать в Funkwhale"
-
-#: front/src/components/Home.vue:24
-msgctxt "Content/Home/Title"
-msgid "Why funkwhale?"
-msgstr "Почему funkwhale?"
+msgctxt "Content/Home/Header"
+msgid "Welcome to %{ podName }!"
+msgstr "Добро пожаловать на %{ podName }!"
 
-#: front/src/components/audio/EmbedWizard.vue:13
+#: front/src/components/audio/EmbedWizard.vue:23
 msgctxt "Popup/Embed/Input.Label"
 msgid "Widget height"
-msgstr ""
+msgstr "Высота виджета"
 
-#: front/src/components/audio/EmbedWizard.vue:6
+#: front/src/components/audio/EmbedWizard.vue:16
 msgctxt "Popup/Embed/Input.Label"
 msgid "Widget width"
-msgstr ""
+msgstr "Ширина виджета"
 
 #: front/src/components/auth/ApplicationForm.vue:157
 msgctxt "Content/OAuth Scopes/Label/Verb"
 msgid "Write"
-msgstr ""
+msgstr "Запись"
 
 #: front/src/components/auth/Authorize.vue:21
 msgctxt "Content/Auth/Label/Noun"
 msgid "Write-only"
-msgstr ""
+msgstr "Только запись"
 
 #: front/src/components/auth/ApplicationForm.vue:158
 msgctxt "Content/OAuth Scopes/Help Text"
 msgid "Write-only access to user data"
-msgstr ""
+msgstr "Доступ к данным пользователя только для записи"
 
-#: front/src/components/Sidebar.vue:129
+#: front/src/components/Sidebar.vue:133
 #: front/src/components/manage/moderation/AccountsTable.vue:72
-#: front/src/components/manage/moderation/DomainsTable.vue:58
+#: front/src/components/manage/moderation/DomainsTable.vue:12
+#: front/src/components/manage/moderation/DomainsTable.vue:69
+#: front/src/views/admin/moderation/DomainsDetail.vue:109
 msgctxt "*/*/*"
 msgid "Yes"
 msgstr "Да"
@@ -5003,39 +5363,27 @@ msgstr "Да"
 #: front/src/components/auth/Logout.vue:8
 msgctxt "Content/Login/Button.Label"
 msgid "Yes, log me out!"
-msgstr ""
+msgstr "Да, выйти!"
 
 #: front/src/views/content/libraries/Form.vue:19
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You are able to share your library with other people, regardless of its "
-"visibility."
-msgstr ""
-"Вы сможете делиться вашей библиотекой с другими людьми независимо от её "
-"видимости."
+msgid "You are able to share your library with other people, regardless of its visibility."
+msgstr "Вы сможете делиться Вашей библиотекой с другими людьми независимо от её видимости."
 
 #: front/src/components/library/FileUpload.vue:32
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You are about to upload music to your library. Before proceeding, please "
-"ensure that:"
-msgstr ""
-"Вы собираетесь загрузить музыку в вашу библиотеку. Перед тем как продолжить,"
-" убедитесь что:"
+msgid "You are about to upload music to your library. Before proceeding, please ensure that:"
+msgstr "Вы собираетесь загрузить музыку в Вашу библиотеку. Перед тем как продолжить, убедитесь что:"
 
 #: front/src/components/SetInstanceModal.vue:12
 msgctxt "Popup/Login/Paragraph"
-msgid ""
-"You are currently connected to <a href=\"%{ url }\" target=\"_blank\">%{ "
-"hostname }&nbsp;<i class=\"external icon\"/></a>. If you continue, you will "
-"be disconnected from your current instance and all your local data will be "
-"deleted."
-msgstr ""
+msgid "You are currently connected to <a href=\"%{ url }\" target=\"_blank\">%{ hostname }&nbsp;<i class=\"external icon\"/></a>. If you continue, you will be disconnected from your current instance and all your local data will be deleted."
+msgstr "В настоящий момент Вы соединены с <a href=\"%{ url }\" target=\"_blank\">%{ hostname }&nbsp;<i class=\"external icon\"/></a>. Если Вы продолжите, Вы будете отсоединены от Вашего текущего узла и все Ваши местные данные будут удалены."
 
 #: front/src/components/library/ArtistDetail.vue:6
 msgctxt "Content/Artist/Paragraph"
 msgid "You are currently hiding content related to this artist."
-msgstr ""
+msgstr "Сейчас Вы скрываете содержимое, связанное с этим исполнителем."
 
 #: front/src/components/auth/Logout.vue:7
 msgctxt "Content/Login/Paragraph"
@@ -5044,166 +5392,145 @@ msgstr "Вы вошли как %{ username }"
 
 #: front/src/components/library/FileUpload.vue:35
 msgctxt "Content/Library/List item"
-msgid ""
-"You are not uploading copyrighted content in a public library, otherwise you"
-" may be infringing the law"
-msgstr ""
+msgid "You are not uploading copyrighted content in a public library, otherwise you may be infringing the law"
+msgstr "Вы не загружаете контент, защищенный авторскими правами, в публичные библиотеки, это может быть нарушением закона"
 
 #: front/src/components/SetInstanceModal.vue:98
 msgctxt "*/Instance/Message"
 msgid "You are now using the Funkwhale instance at %{ url }"
-msgstr ""
+msgstr "Вы используете узел Funkwhale на %{ url }"
 
 #: front/src/views/content/Home.vue:17
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You can follow libraries from other users to get access to new music. Public"
-" libraries can be followed immediatly, while following a private library "
-"requires approval from its owner."
-msgstr ""
-"Вы можете подписаться на библиотеки других пользователей чтобы получать "
-"доступ к новой музыке. На публичные библиотеки можно подписаться сразу, в то"
-" время как подписка на приватную библиотеку требует подтверждения владельца."
-
-#: front/src/components/Home.vue:128
-msgctxt "Content/Home/List item"
-msgid ""
-"You can invite friends and family to your instance so they can enjoy your "
-"music"
-msgstr ""
-"Вы можете пригласить друзей и семью на ваш узел чтобы они могли наслаждаться"
-" вашей музыкой"
+msgid "You can follow libraries from other users to get access to new music. Public libraries can be followed immediately, while following a private library requires approval from its owner."
+msgstr "Вы можете подписаться на библиотеки других пользователей чтобы получать доступ к новой музыке. На публичные библиотеки можно подписаться сразу, в то время как подписка на приватную библиотеку требует подтверждения владельца."
 
 #: front/src/components/moderation/FilterModal.vue:31
 msgctxt "Popup/Moderation/Paragraph"
-msgid ""
-"You can manage and update your filters anytime from your account settings."
-msgstr ""
+msgid "You can manage and update your filters any time from your account settings."
+msgstr "Вы можете управлять своими фильтрами в любой момент через настройки аккаунта."
 
 #: front/src/views/auth/EmailConfirm.vue:24
 msgctxt "Content/Signup/Paragraph"
 msgid "You can now use the service without limitations."
-msgstr ""
-"Ваш адрес электронной почты был подтверждён, теперь вы можете пользоваться "
-"сервисом без ограничений."
+msgstr "Теперь Вы можете пользоваться сервисом без ограничений."
+
+#: front/src/components/auth/Settings.vue:278
+msgctxt "Content/Settings/Paragraph'"
+msgid "You can permanently and irreversibly delete your account and all the associated data using the form below. You will be asked for confirmation."
+msgstr "Вы можете окончательно и бесповоротно удалить Ваш аккаунт и все связанные с ним данные, используя форму ниже. Потребуется дополнительное подтверждение."
 
 #: front/src/components/library/radios/Builder.vue:7
 msgctxt "Content/Radio/Paragraph"
-msgid ""
-"You can use this interface to build your own custom radio, which will play "
-"tracks according to your criteria."
-msgstr ""
-"Вы можете использовать этот интерфейс чтобы создать собственное радио, "
-"которое будет проигрывать треки согласно вашим критериям."
+msgid "You can use this interface to build your own custom radio, which will play tracks according to your criteria."
+msgstr "Вы можете использовать этот интерфейс чтобы создать собственное радио, которое будет проигрывать треки согласно Вашим критериям."
 
 #: front/src/components/auth/SubsonicTokenForm.vue:7
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"You can use those to enjoy your playlist and music in offline mode, on your "
-"smartphone or tablet, for instance."
-msgstr ""
-"Вы можете наслаждаться вашим списком воспроизведения и музыкой в режиме "
-"оффлайн, например с вашего смартфона или планшета."
+msgid "You can use those to enjoy your playlist and music in offline mode, on your smartphone or tablet, for instance."
+msgstr "Вы можете наслаждаться Вашим списком воспроизведения и музыкой в режиме оффлайн, например с Вашего смартфона или планшета."
 
 #: front/src/components/auth/Settings.vue:202
 msgctxt "Content/Applications/Paragraph"
 msgid "You don't have any application connected with your account."
-msgstr "У нас нет уведомлений для показа!"
+msgstr "У Вас нет приложений, связанных с Вашей учётной записью."
 
 #: front/src/components/auth/Settings.vue:261
 msgctxt "Content/Applications/Paragraph"
 msgid "You don't have any configured application yet."
-msgstr "У нас нет уведомлений для показа!"
+msgstr "У Вас пока нет настроенных приложений."
 
 #: front/src/views/admin/moderation/AccountsDetail.vue:75
 msgctxt "Content/Moderation/Card.Title"
 msgid "You don't have any rule in place for this account."
-msgstr "У нас нет уведомлений для показа!"
+msgstr "У Вас нет установленных правил для этого аккаунта."
 
-#: front/src/views/admin/moderation/DomainsDetail.vue:39
+#: front/src/views/admin/moderation/DomainsDetail.vue:67
 msgctxt "Content/Moderation/Card.Title"
 msgid "You don't have any rule in place for this domain."
-msgstr "У нас нет уведомлений для показа!"
+msgstr "У Вас нет установленных правил для этого домена."
 
 #: front/src/components/library/EditForm.vue:52
 msgctxt "Content/Library/Paragraph"
-msgid ""
-"You don't have the permission to edit this object, but you can suggest "
-"changes. Once submitted, suggestions will be reviewed before approval."
-msgstr ""
+msgid "You don't have the permission to edit this object, but you can suggest changes. Once submitted, suggestions will be reviewed before approval."
+msgstr "Вы не имеете разрешений для редактирования этого объекта, но Вы можете предложить правки. После отправки правки будут рассмотрены перед применением."
 
-#: front/src/components/Sidebar.vue:171
+#: front/src/components/Sidebar.vue:175
 msgctxt "Sidebar/Player/Title"
 msgid "You have a radio playing"
-msgstr "У вас проигрывается радио"
+msgstr "У Вас проигрывается радио"
 
 #: front/src/components/audio/Player.vue:69
 msgctxt "Sidebar/Player/Error message.Paragraph"
 msgid "You may have a connectivity issue."
-msgstr ""
+msgstr "У Вас могут быть проблемы со связью."
 
 #: front/src/components/auth/Settings.vue:100
 msgctxt "Popup/Settings/List item"
-msgid ""
-"You will be logged out from this session and have to log in with the new one"
-msgstr ""
+msgid "You will be logged out from this session and have to log in with the new one"
+msgstr "Вы будете отключены от этого сеанса и Вам нужно будет зайти заново"
 
 #: front/src/components/auth/Authorize.vue:51
 msgctxt "Content/Auth/Paragraph"
 msgid "You will be redirected to <strong>%{ url }</strong>"
-msgstr ""
+msgstr "Вы будете перенаправлены на <strong>%{ url }</strong>"
 
 #: front/src/components/auth/Authorize.vue:49
 msgctxt "Content/Auth/Paragraph"
 msgid "You will be shown a code to copy-paste in the application."
-msgstr ""
+msgstr "Вам будет показан код для вставки в приложение."
 
 #: front/src/components/auth/Settings.vue:71
 msgctxt "Content/Settings/Paragraph"
-msgid ""
-"You will have to update your password on your clients that use this "
-"password."
-msgstr ""
-"Вам потребуется обновить пароль на своих клиентах чтобы использовать его."
+msgid "You will have to update your password on your clients that use this password."
+msgstr "Вам потребуется обновить пароль на своих клиентах, которые используют его."
 
 #: front/src/components/moderation/FilterModal.vue:20
 msgctxt "Popup/Moderation/Paragraph"
-msgid ""
-"You will not see tracks, albums and user activity linked to this artist "
-"anymore:"
-msgstr ""
+msgid "You will not see tracks, albums and user activity linked to this artist any more:"
+msgstr "Вы больше не увидите треков, альбомов и активности пользователей, связанной с этим исполнителем:"
 
-#: front/src/components/auth/Signup.vue:13
+#: front/src/components/auth/SignupForm.vue:9
 msgctxt "Content/Signup/Form/Paragraph"
 msgid "Your account cannot be created."
-msgstr "Список воспроизведения создан"
+msgstr "Ваша учётная запись не может быть создана."
+
+#: front/src/components/auth/Settings.vue:281
+msgctxt "Content/Settings/Paragraph'"
+msgid "Your account will be deleted from our servers within a few minutes. We will also notify other servers who may have a copy of some of your data so they can proceed to deletion. Please note that some of these servers may be offline or unwilling to comply though."
+msgstr "Ваш аккаунт будет удалён с наших серверов в течение нескольких минут. Мы сообщим об удалении и другим серверам, которые могут иметь частичные копии Ваших данных, чтобы они тоже произвели удаление. Обратите внимание, что некоторые из них могут быть недоступны или откажутся выполнить эту просьбу."
 
 #: front/src/components/auth/Settings.vue:215
 msgctxt "Content/Settings/Title/Noun"
 msgid "Your applications"
-msgstr "Ваши уведомления"
+msgstr "Ваши приложения"
 
 #: front/src/components/auth/Settings.vue:38
 msgctxt "Content/Settings/Error message.Title"
 msgid "Your avatar cannot be saved"
-msgstr ""
+msgstr "Ваш аватар не может быть сохранён"
+
+#: front/src/components/auth/Settings.vue:527
+msgctxt "*/Auth/Message"
+msgid "Your deletion request was submitted, your account and content will be deleted shortly"
+msgstr "Ваш запрос на удаление был отправлен, Ваш аккаунт и данные будут удалены в ближайшее время"
 
 #: front/src/components/library/EditForm.vue:3
 msgctxt "Content/Library/Paragraph"
 msgid "Your edit was successfully submitted."
-msgstr ""
+msgstr "Ваша правка была успешно отправлена."
 
 #: front/src/components/favorites/List.vue:116
 msgctxt "Head/Favorites/Title"
 msgid "Your Favorites"
 msgstr "Ваше избранное"
 
-#: front/src/components/Home.vue:109
-msgctxt "Content/Home/Title"
-msgid "Your music, your way"
-msgstr ""
+#: front/src/views/Notifications.vue:5
+msgctxt "Content/Notifications/Title"
+msgid "Your messages"
+msgstr "Ваши сообщения"
 
-#: front/src/views/Notifications.vue:4
+#: front/src/views/Notifications.vue:69
 msgctxt "Content/Notifications/Title"
 msgid "Your notifications"
 msgstr "Ваши уведомления"
@@ -5211,7 +5538,7 @@ msgstr "Ваши уведомления"
 #: front/src/components/auth/Settings.vue:76
 msgctxt "Content/Settings/Error message.Title"
 msgid "Your password cannot be changed"
-msgstr ""
+msgstr "Ваш пароль не может быть изменён"
 
 #: front/src/views/auth/PasswordResetConfirm.vue:29
 msgctxt "Content/Signup/Card.Paragraph"
@@ -5220,43 +5547,38 @@ msgstr "Ваш пароль был успешно обновлён."
 
 #: front/src/components/auth/Settings.vue:14
 msgctxt "Content/Settings/Error message.Title"
-msgid "Your settings can't be updateds"
-msgstr "Настройки обновлены"
+msgid "Your settings can't be updated"
+msgstr "Настройки не могут быть обновлены"
 
 #: front/src/components/auth/Settings.vue:101
 msgctxt "Popup/Settings/List item"
-msgid ""
-"Your Subsonic password will be changed to a new, random one, logging you out"
-" from devices that used the old Subsonic password"
-msgstr ""
-"Ваш пароль Subsonic будет изменён на новый случайный, что приведёт к "
-"отключению всех устройств, которые использовали старый пароль Subsonic"
+msgid "Your Subsonic password will be changed to a new, random one, logging you out from devices that used the old Subsonic password"
+msgstr "Ваш пароль Subsonic будет изменён на новый случайный, что приведёт к отключению всех устройств, которые использовали старый пароль Subsonic"
 
-#: front/src/edits.js:47
-msgctxt "*/*/*/Short, Noun"
-msgid "Position"
-msgstr "Описание"
+#: front/src/entities.js:126
+msgctxt "*/*/*/Noun"
+msgid "MusicBrainz ID"
+msgstr "Смотреть на MusicBrainz"
 
-#: front/src/edits.js:54
-msgctxt "Content/Track/*/Noun"
-msgid "Copyright"
-msgstr "Копировать"
+#: front/src/main.js:110
+msgctxt "*/Error/Paragraph"
+msgid "You sent too many requests and have been rate limited, please try again in %{ delay }"
+msgstr "Вы отправили слишком много запросов и попали под временное ограничение, пожалуйста, попробуйте снова через %{ delay }"
 
-#: front/src/components/library/AlbumBase.vue:183
-#, fuzzy
+#: front/src/main.js:113
+msgctxt "*/Error/Paragraph"
+msgid "You sent too many requests and have been rate limited, please try again later"
+msgstr "Вы отправили слишком много запросов и попали под ограничение, пожалуйста, попробуйте позже"
+
+#: front/src/components/library/AlbumBase.vue:208
 msgctxt "Content/Album/Header.Title"
-msgid ""
-"Album containing %{ count } track, by <a class=\"internal\" href=\"%{ "
-"artistUrl }\">%{ artist }</a>"
-msgid_plural ""
-"Album containing %{ count } tracks, by <a class=\"internal\" href=\"%{ "
-"artistUrl }\">%{ artist }</a>"
-msgstr[0] "Альбом содержит %{ count } трек от %{ artist }"
-msgstr[1] "Альбом содержит %{ count } трека от %{ artist }"
-msgstr[2] "Альбом содержит %{ count } треков от %{ artist }"
-
-#: front/src/components/audio/PlayButton.vue:220
-#, fuzzy
+msgid "Album containing %{ count } track, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgid_plural "Album containing %{ count } tracks, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgstr[0] "Альбом содержит %{ count } трек от <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgstr[1] "Альбом содержит %{ count } трека от <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgstr[2] "Альбом содержит %{ count } треков от <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+
+#: front/src/components/audio/PlayButton.vue:246
 msgctxt "*/Queue/Message"
 msgid "%{ count } track was added to your queue"
 msgid_plural "%{ count } tracks were added to your queue"
diff --git a/front/locales/sv/LC_MESSAGES/app.po b/front/locales/sv/LC_MESSAGES/app.po
index 25c3596a676c575f82e9711ba0c461ce0bdb4b5d..5d4226f662af7df7f51c9b5dd88bb266c8f8f979 100644
--- a/front/locales/sv/LC_MESSAGES/app.po
+++ b/front/locales/sv/LC_MESSAGES/app.po
@@ -195,8 +195,8 @@ msgstr "Lägg till i favoriter"
 
 #: front/src/components/playlists/TrackPlaylistIcon.vue:6
 #: front/src/components/playlists/TrackPlaylistIcon.vue:32
-msgid "Add to playlist..."
-msgstr "Lägg till i spellista..."
+msgid "Add to playlist…"
+msgstr "Lägg till i spellista…"
 
 #: front/src/components/audio/PlayButton.vue:14
 msgid "Add to queue"
@@ -313,8 +313,8 @@ msgid "Artist page"
 msgstr "Artistsida"
 
 #: front/src/components/audio/Search.vue:65
-msgid "Artist, album, track..."
-msgstr "Artist, album, spår..."
+msgid "Artist, album, track…"
+msgstr "Artist, album, spår…"
 
 #: front/src/components/audio/Search.vue:10 src/components/instance/Stats.vue:42
 #: front/src/components/library/Artists.vue:119 src/components/library/Library.vue:7
@@ -702,8 +702,8 @@ msgid "Edit instance info"
 msgstr "Redigera info om instans"
 
 #: front/src/components/radios/Card.vue:20 src/views/playlists/Detail.vue:30
-msgid "Edit..."
-msgstr "Redigera..."
+msgid "Edit…"
+msgstr "Redigera…"
 
 #: front/src/components/auth/Signup.vue:29
 #: front/src/components/manage/users/UsersTable.vue:38
@@ -727,20 +727,20 @@ msgid "Ensure your music files are properly tagged before uploading them."
 msgstr "Se till att dina musikfiler är korrekt taggade innan du laddar upp dem."
 
 #: front/src/components/library/Radios.vue:140
-msgid "Enter a radio name..."
-msgstr "Ange namn på radiostation..."
+msgid "Enter a radio name…"
+msgstr "Ange namn på radiostation…"
 
 #: front/src/components/library/Artists.vue:118
-msgid "Enter an artist name..."
-msgstr "Ange ett artistnamn..."
+msgid "Enter an artist name…"
+msgstr "Ange ett artistnamn…"
 
 #: front/src/views/federation/LibraryList.vue:122
-msgid "Enter an library domain name..."
+msgid "Enter an library domain name…"
 msgstr ""
 
 #: front/src/views/playlists/List.vue:104
-msgid "Enter an playlist name..."
-msgstr "Ange ett spellistenamn..."
+msgid "Enter an playlist name…"
+msgstr "Ange ett spellistenamn…"
 
 #: front/src/components/auth/Signup.vue:98
 msgid "Enter your email"
@@ -751,8 +751,8 @@ msgid "Enter your invitation code (case insensitive)"
 msgstr "Ange din inbjudningskod (skiftlägesokänsligt)"
 
 #: front/src/components/metadata/Search.vue:114
-msgid "Enter your search query..."
-msgstr "Ange dina söktermer..."
+msgid "Enter your search query…"
+msgstr "Ange dina söktermer…"
 
 #: front/src/components/auth/Signup.vue:97
 msgid "Enter your username"
@@ -1240,11 +1240,11 @@ msgid "Links"
 msgstr ""
 
 #: front/src/views/instance/Timeline.vue:4
-msgid "Loading timeline..."
+msgid "Loading timeline…"
 msgstr ""
 
 #: front/src/components/favorites/List.vue:5
-msgid "Loading your favorites..."
+msgid "Loading your favorites…"
 msgstr ""
 
 #: front/src/components/auth/Login.vue:78
@@ -1773,36 +1773,36 @@ msgid "Search an entity you want to import:"
 msgstr ""
 
 #: front/src/components/manage/library/RequestsTable.vue:180
-msgid "Search by artist, username, comment..."
+msgid "Search by artist, username, comment…"
 msgstr ""
 
 #: front/src/components/library/import/BatchDetail.vue:188
-msgid "Search by source..."
+msgid "Search by source…"
 msgstr ""
 
 #: front/src/components/library/import/BatchList.vue:116
-msgid "Search by submitter, source..."
+msgid "Search by submitter, source…"
 msgstr ""
 
 #: front/src/components/federation/LibraryTrackTable.vue:182
 #: front/src/components/manage/library/FilesTable.vue:175
-msgid "Search by title, artist, domain..."
+msgid "Search by title, artist, domain…"
 msgstr ""
 
 #: front/src/components/federation/LibraryFollowTable.vue:140
-msgid "Search by username, domain..."
+msgid "Search by username, domain…"
 msgstr ""
 
 #: front/src/components/manage/users/InvitationsTable.vue:152
-msgid "Search by username, email, code..."
+msgid "Search by username, email, code…"
 msgstr ""
 
 #: front/src/components/manage/users/UsersTable.vue:162
-msgid "Search by username, email, name..."
+msgid "Search by username, email, name…"
 msgstr ""
 
 #: front/src/components/audio/SearchBar.vue:20
-msgid "Search for artists, albums, tracks..."
+msgid "Search for artists, albums, tracks…"
 msgstr ""
 
 #: front/src/components/audio/Search.vue:2
@@ -1837,7 +1837,7 @@ msgstr[0] ""
 msgstr[1] ""
 
 #: front/src/components/library/import/FileUpload.vue:22
-msgid "Select files to upload..."
+msgid "Select files to upload…"
 msgstr ""
 
 #: front/src/components/common/ActionTable.vue:69
@@ -1866,7 +1866,7 @@ msgid "Settings updated successfully."
 msgstr ""
 
 #: front/src/components/auth/Profile.vue:24
-msgid "Settings..."
+msgid "Settings…"
 msgstr ""
 
 #: front/src/components/manage/users/InvitationForm.vue:27
@@ -2030,7 +2030,7 @@ msgid "Suggested choices"
 msgstr ""
 
 #: front/src/components/playlists/Editor.vue:9
-msgid "Syncing changes to server..."
+msgid "Syncing changes to server…"
 msgstr ""
 
 #: front/src/components/Home.vue:26
@@ -2206,7 +2206,7 @@ msgid "Uploaded files or external source"
 msgstr ""
 
 #: front/src/components/library/import/FileUpload.vue:57
-msgid "Uploading..."
+msgid "Uploading…"
 msgstr ""
 
 #: front/src/App.vue:45
diff --git a/front/locales/zh_Hant/LC_MESSAGES/app.po b/front/locales/zh_Hant/LC_MESSAGES/app.po
new file mode 100644
index 0000000000000000000000000000000000000000..d8a02a12216243f75a7fb2ed13c980f319a6bb08
--- /dev/null
+++ b/front/locales/zh_Hant/LC_MESSAGES/app.po
@@ -0,0 +1,5556 @@
+# Chinese translations for front package.
+# Copyright (C) 2019 THE front'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the front package.
+# Automatically generated, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: front 0.1.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2019-10-01 15:15+0200\n"
+"PO-Revision-Date: 2019-09-23 11:57+0200\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: zh_Hant\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
+
+#: front/src/components/playlists/PlaylistModal.vue:9
+msgctxt "Popup/Playlist/Paragraph"
+msgid "\"%{ title }\", by %{ artist }"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:24
+msgctxt "Sidebar/Queue/Tab.Title"
+msgid "(%{ index } of %{ length })"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:22
+msgctxt "Sidebar/Queue/Tab.Title"
+msgid "(empty)"
+msgstr ""
+
+#: front/src/components/auth/Authorize.vue:16
+msgctxt "Content/Auth/Title"
+msgid "%{ app } wants to access your Funkwhale account"
+msgstr ""
+
+#: front/src/components/About.vue:173 src/components/Home.vue:56
+msgctxt "Content/Home/Stat"
+msgid "%{ count } active user"
+msgid_plural "%{ count } active users"
+msgstr[0] ""
+msgstr[1] ""
+
+#: front/src/components/About.vue:182
+msgctxt "Content/Home/Stat"
+msgid "%{ count } albums"
+msgid_plural "%{ count } albums"
+msgstr[0] ""
+msgstr[1] ""
+
+#: front/src/components/About.vue:152
+msgctxt "*/*/*"
+msgid "%{ count } allowed domains"
+msgid_plural "%{ count } allowed domains"
+msgstr[0] ""
+msgstr[1] ""
+
+#: front/src/components/About.vue:179
+msgctxt "Content/Home/Stat"
+msgid "%{ count } artists"
+msgid_plural "%{ count } artists"
+msgstr[0] ""
+msgstr[1] ""
+
+#: front/src/components/About.vue:176 src/components/Home.vue:59
+msgctxt "Content/Home/Stat"
+msgid "%{ count } hour of music"
+msgid_plural "%{ count } hours of music"
+msgstr[0] ""
+msgstr[1] ""
+
+#: front/src/components/About.vue:188
+msgctxt "Content/Home/Stat"
+msgid "%{ count } listenings"
+msgid_plural "%{ count } listenings"
+msgstr[0] ""
+msgstr[1] ""
+
+#: front/src/components/common/ActionTable.vue:68
+msgctxt "Content/*/Paragraph"
+msgid "%{ count } on %{ total } selected"
+msgid_plural "%{ count } on %{ total } selected"
+msgstr[0] ""
+msgstr[1] ""
+
+#: front/src/components/Sidebar.vue:125 src/components/audio/album/Card.vue:52
+#: front/src/views/content/libraries/Card.vue:40
+#: src/views/content/remote/Card.vue:43
+msgctxt "*/*/*"
+msgid "%{ count } track"
+msgid_plural "%{ count } tracks"
+msgstr[0] ""
+msgstr[1] ""
+
+#: front/src/components/library/ArtistBase.vue:13
+msgctxt "Content/Artist/Paragraph"
+msgid "%{ count } track in %{ albumsCount } albums"
+msgid_plural "%{ count } tracks in %{ albumsCount } albums"
+msgstr[0] ""
+msgstr[1] ""
+
+#: front/src/components/library/radios/Builder.vue:81
+msgctxt "Content/Radio/Table.Paragraph/Short"
+msgid "%{ count } track matching combined filters"
+msgid_plural "%{ count } tracks matching combined filters"
+msgstr[0] ""
+msgstr[1] ""
+
+#: front/src/components/About.vue:185
+msgctxt "Content/Home/Stat"
+msgid "%{ count } tracks"
+msgid_plural "%{ count } tracks"
+msgstr[0] ""
+msgstr[1] ""
+
+#: front/src/components/playlists/Card.vue:28
+msgctxt "Content/*/Card/List item"
+msgid "%{ count} track"
+msgid_plural "%{ count } tracks"
+msgstr[0] ""
+msgstr[1] ""
+
+#: front/src/views/content/libraries/Quota.vue:11
+msgctxt "Content/Library/Paragraph"
+msgid "%{ current } used on %{ max } allowed"
+msgstr ""
+
+#: front/src/components/common/Duration.vue:2
+msgctxt "Content/*/Paragraph"
+msgid "%{ hours } h %{ minutes } min"
+msgstr ""
+
+#: front/src/components/common/Duration.vue:5
+msgctxt "Content/*/Paragraph"
+msgid "%{ minutes } min"
+msgstr ""
+
+#: front/src/components/notifications/NotificationRow.vue:40
+msgctxt "Content/Notifications/Paragraph"
+msgid "%{ username } accepted your follow on library \"%{ library }\""
+msgstr ""
+
+#: front/src/components/notifications/NotificationRow.vue:39
+msgctxt "Content/Notifications/Paragraph"
+msgid "%{ username } followed your library \"%{ library }\""
+msgstr ""
+
+#: front/src/components/notifications/NotificationRow.vue:41
+msgctxt "Content/Notifications/Paragraph"
+msgid "%{ username } wants to follow your library \"%{ library }\""
+msgstr ""
+
+#: front/src/components/auth/Profile.vue:46
+msgctxt "Head/Profile/Title"
+msgid "%{ username }'s profile"
+msgstr ""
+
+#: front/src/components/playlists/PlaylistModal.vue:21
+msgctxt "Popup/Playlist/Paragraph"
+msgid "<strong>%{ track }</strong> is already in <strong>%{ playlist }</strong>."
+msgstr ""
+
+#: front/src/components/audio/artist/Card.vue:11
+msgctxt "Content/Artist/Card"
+msgid "1 album"
+msgid_plural "%{ count } albums"
+msgstr[0] ""
+msgstr[1] ""
+
+#: front/src/components/favorites/List.vue:10
+msgctxt "Content/Favorites/Title"
+msgid "1 favorite"
+msgid_plural "%{ count } favorites"
+msgstr[0] ""
+msgstr[1] ""
+
+#: front/src/components/audio/artist/Card.vue:15
+msgctxt "Content/Artist/Card"
+msgid "1 track"
+msgid_plural "%{ count } tracks"
+msgstr[0] ""
+msgstr[1] ""
+
+#: front/src/views/Notifications.vue:21 src/views/Notifications.vue:55
+msgctxt "*/*/*"
+msgid "30 days"
+msgstr ""
+
+#: front/src/views/Notifications.vue:22 src/views/Notifications.vue:56
+msgctxt "*/*/*"
+msgid "60 days"
+msgstr ""
+
+#: front/src/views/Notifications.vue:23 src/views/Notifications.vue:57
+msgctxt "*/*/*"
+msgid "90 days"
+msgstr ""
+
+#: front/src/components/library/FileUpload.vue:264
+msgctxt "Content/Library/Help text"
+msgid "A network error occurred while uploading this file"
+msgstr ""
+
+#: front/src/components/library/EditForm.vue:161
+msgctxt "*/*/Placeholder"
+msgid "A short summary describing your changes."
+msgstr ""
+
+#: front/src/components/About.vue:5
+msgctxt "Content/Home/Header"
+msgid "About %{ podName }"
+msgstr ""
+
+#: front/src/components/Footer.vue:6
+msgctxt "Footer/About/Title"
+msgid "About %{instanceName}"
+msgstr ""
+
+#: front/src/components/Footer.vue:53 src/components/Home.vue:85
+msgctxt "Footer/*/Title/Short"
+msgid "About Funkwhale"
+msgstr ""
+
+#: front/src/components/Footer.vue:10
+msgctxt "Footer/About/List item.Link"
+msgid "About page"
+msgstr ""
+
+#: front/src/components/Home.vue:19
+msgctxt "Content/Home/Header"
+msgid "About this Funkwhale pod"
+msgstr ""
+
+#: front/src/components/About.vue:21 src/components/About.vue:51
+msgctxt "Content/About/Header"
+msgid "About this pod"
+msgstr ""
+
+#: front/src/views/content/libraries/Detail.vue:48
+msgctxt "Content/Library/Button.Label"
+msgid "Accept"
+msgstr ""
+
+#: front/src/views/content/libraries/Detail.vue:40
+msgctxt "Content/Library/Table/Short"
+msgid "Accepted"
+msgstr ""
+
+#: front/src/components/auth/SubsonicTokenForm.vue:117
+msgctxt "Content/Settings/Message"
+msgid "Access disabled"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:85
+#: front/src/components/mixins/Translations.vue:86
+msgctxt "Content/OAuth Scopes/Paragraph"
+msgid "Access to audio files, libraries, artists, albums and tracks"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:109
+#: front/src/components/mixins/Translations.vue:110
+msgctxt "Content/OAuth Scopes/Paragraph"
+msgid "Access to content filters"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:117
+#: front/src/components/mixins/Translations.vue:118
+msgctxt "Content/OAuth Scopes/Paragraph"
+msgid "Access to edits"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:81
+#: front/src/components/mixins/Translations.vue:82
+msgctxt "Content/OAuth Scopes/Paragraph"
+msgid "Access to email, username, and profile information"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:89
+#: front/src/components/mixins/Translations.vue:90
+msgctxt "Content/OAuth Scopes/Paragraph"
+msgid "Access to favorites"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:97
+#: front/src/components/mixins/Translations.vue:98
+msgctxt "Content/OAuth Scopes/Paragraph"
+msgid "Access to follows"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:93
+#: front/src/components/mixins/Translations.vue:94
+msgctxt "Content/OAuth Scopes/Paragraph"
+msgid "Access to listening history"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:113
+#: front/src/components/mixins/Translations.vue:114
+msgctxt "Content/OAuth Scopes/Paragraph"
+msgid "Access to notifications"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:101
+#: front/src/components/mixins/Translations.vue:102
+msgctxt "Content/OAuth Scopes/Paragraph"
+msgid "Access to playlists"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:105
+#: front/src/components/mixins/Translations.vue:106
+msgctxt "Content/OAuth Scopes/Paragraph"
+msgid "Access to radios"
+msgstr ""
+
+#: front/src/components/manage/library/UploadsTable.vue:67
+#: front/src/components/mixins/Translations.vue:55
+#: front/src/views/admin/library/UploadDetail.vue:175
+#: front/src/components/mixins/Translations.vue:56
+msgctxt "Content/*/*/Noun"
+msgid "Accessed date"
+msgstr ""
+
+#: front/src/components/manage/library/LibrariesTable.vue:49
+#: front/src/components/manage/library/UploadsTable.vue:61
+#: front/src/components/manage/moderation/ReportCard.vue:156
+#: front/src/components/mixins/Report.vue:13
+#: front/src/views/admin/library/LibraryDetail.vue:113
+#: front/src/views/admin/library/UploadDetail.vue:111
+#: front/src/components/mixins/Report.vue:14
+msgctxt "*/*/*/Noun"
+msgid "Account"
+msgstr ""
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:107
+msgctxt "Content/Moderation/Title"
+msgid "Account data"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:5
+msgctxt "Content/Settings/Title"
+msgid "Account settings"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:544
+msgctxt "Head/Settings/Title"
+msgid "Account Settings"
+msgstr ""
+
+#: front/src/components/manage/users/UsersTable.vue:39
+msgctxt "Content/Admin/Table.Label/Short, Noun"
+msgid "Account status"
+msgstr ""
+
+#: front/src/views/auth/PasswordReset.vue:14
+msgctxt "Content/Signup/Input.Label"
+msgid "Account's email"
+msgstr ""
+
+#: front/src/views/admin/moderation/AccountsList.vue:3
+#: front/src/views/admin/moderation/AccountsList.vue:24
+#: front/src/views/admin/moderation/Base.vue:11
+msgctxt "*/Moderation/Title"
+msgid "Accounts"
+msgstr ""
+
+#: front/src/views/content/libraries/Detail.vue:29
+msgctxt "Content/Library/Table.Label"
+msgid "Action"
+msgstr ""
+
+#: front/src/components/common/ActionTable.vue:101
+msgctxt "Content/*/Paragraph"
+msgid "Action %{ action } was launched successfully on %{ count } element"
+msgid_plural "Action %{ action } was launched successfully on %{ count } elements"
+msgstr[0] ""
+msgstr[1] ""
+
+#: front/src/components/common/ActionTable.vue:22
+#: front/src/components/library/radios/Builder.vue:65
+#: front/src/components/manage/moderation/ReportCard.vue:210
+msgctxt "Content/*/*/Noun"
+msgid "Actions"
+msgstr ""
+
+#: front/src/components/manage/users/UsersTable.vue:54
+msgctxt "Content/Admin/Table"
+msgid "Active"
+msgstr ""
+
+#: front/src/views/admin/library/AlbumDetail.vue:140
+#: front/src/views/admin/library/ArtistDetail.vue:128
+#: front/src/views/admin/library/LibraryDetail.vue:147
+#: front/src/views/admin/library/TagDetail.vue:83
+#: front/src/views/admin/library/TrackDetail.vue:192
+#: front/src/views/admin/library/UploadDetail.vue:160
+#: front/src/views/admin/moderation/AccountsDetail.vue:221
+#: front/src/views/admin/moderation/DomainsDetail.vue:173
+msgctxt "Content/Moderation/Title"
+msgid "Activity"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:7
+#: front/src/components/mixins/Translations.vue:8
+msgctxt "Content/Settings/Dropdown.Label/Noun"
+msgid "Activity visibility"
+msgstr ""
+
+#: front/src/views/admin/moderation/DomainsList.vue:22
+msgctxt "Content/Moderation/Button/Verb"
+msgid "Add"
+msgstr ""
+
+#: front/src/views/admin/moderation/DomainsList.vue:13
+msgctxt "Content/Moderation/Form.Label/Verb"
+msgid "Add a domain"
+msgstr ""
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:79
+msgctxt "Content/Moderation/Button/Verb"
+msgid "Add a moderation policy"
+msgstr ""
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:4
+msgctxt "Content/Moderation/Card.Button.Label/Verb"
+msgid "Add a new moderation rule"
+msgstr ""
+
+#: front/src/views/content/Home.vue:35
+msgctxt "Content/Library/Title/Verb"
+msgid "Add and manage content"
+msgstr ""
+
+#: front/src/components/playlists/Editor.vue:28
+#: front/src/components/playlists/PlaylistModal.vue:31
+msgctxt "*/Playlist/Button.Label/Verb"
+msgid "Add anyways"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:75 src/views/content/Base.vue:18
+msgctxt "*/Library/*/Verb"
+msgid "Add content"
+msgstr ""
+
+#: front/src/components/library/radios/Builder.vue:51
+msgctxt "Content/Radio/Button.Label/Verb"
+msgid "Add filter"
+msgstr ""
+
+#: front/src/components/library/radios/Builder.vue:41
+msgctxt "Content/Radio/Paragraph"
+msgid "Add filters to customize your radio"
+msgstr ""
+
+#: front/src/components/manage/moderation/NoteForm.vue:12
+msgctxt "Content/Moderation/Button.Label/Verb"
+msgid "Add note"
+msgstr ""
+
+#: front/src/components/manage/moderation/DomainsTable.vue:191
+#: front/src/views/admin/moderation/DomainsDetail.vue:46
+#: front/src/views/admin/moderation/DomainsList.vue:18
+msgctxt "Content/Moderation/Action/Verb"
+msgid "Add to allow-list"
+msgstr ""
+
+#: front/src/components/audio/PlayButton.vue:91
+msgctxt "*/Queue/Dropdown/Button/Title"
+msgid "Add to current queue"
+msgstr ""
+
+#: front/src/components/favorites/TrackFavoriteIcon.vue:4
+#: front/src/components/favorites/TrackFavoriteIcon.vue:28
+msgctxt "Content/Track/*/Verb"
+msgid "Add to favorites"
+msgstr ""
+
+#: front/src/components/playlists/TrackPlaylistIcon.vue:6
+#: front/src/components/playlists/TrackPlaylistIcon.vue:34
+msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
+msgid "Add to playlist…"
+msgstr ""
+
+#: front/src/components/audio/PlayButton.vue:15
+msgctxt "*/Queue/Dropdown/Button/Label/Short"
+msgid "Add to queue"
+msgstr ""
+
+#: front/src/components/playlists/PlaylistModal.vue:142
+msgctxt "Popup/Playlist/Table.Button.Tooltip/Verb"
+msgid "Add to this playlist"
+msgstr ""
+
+#: front/src/components/playlists/PlaylistModal.vue:68
+msgctxt "Popup/Playlist/Table.Button.Label/Verb"
+msgid "Add track"
+msgstr ""
+
+#: front/src/components/manage/users/UsersTable.vue:70
+msgctxt "Content/Admin/Table.User role"
+msgid "Admin"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:79
+msgctxt "Sidebar/Admin/Title/Noun"
+msgid "Administration"
+msgstr ""
+
+#: front/src/components/audio/SearchBar.vue:33
+#: src/components/audio/track/Table.vue:9
+#: front/src/components/library/AlbumBase.vue:170
+#: front/src/components/library/ArtistBase.vue:212
+#: front/src/components/manage/library/TracksTable.vue:40
+#: front/src/components/metadata/Search.vue:134
+#: src/components/mixins/Report.vue:41
+#: front/src/views/admin/library/TrackDetail.vue:113
+#: front/src/views/content/libraries/FilesTable.vue:57
+#: front/src/components/mixins/Report.vue:42
+msgctxt "*/*/*"
+msgid "Album"
+msgstr ""
+
+#: front/src/views/admin/library/TrackDetail.vue:134
+msgctxt "*/*/*/Noun"
+msgid "Album artist"
+msgstr ""
+
+#: front/src/views/admin/library/AlbumDetail.vue:98
+msgctxt "Content/Moderation/Title"
+msgid "Album data"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:61
+#: front/src/components/mixins/Translations.vue:62
+msgctxt "Content/*/Dropdown/Noun"
+msgid "Album name"
+msgstr ""
+
+#: front/src/components/audio/Search.vue:19
+#: src/components/library/Albums.vue:129
+#: front/src/components/library/Library.vue:7
+#: src/components/library/TagDetail.vue:28
+#: front/src/components/manage/library/ArtistsTable.vue:41
+#: front/src/components/manage/library/TagsTable.vue:43
+#: front/src/views/admin/library/AlbumsList.vue:24
+#: front/src/views/admin/library/ArtistDetail.vue:256
+#: front/src/views/admin/library/Base.vue:11
+#: front/src/views/admin/library/LibraryDetail.vue:238
+#: front/src/views/admin/library/TagDetail.vue:133
+#: front/src/views/admin/moderation/AccountsDetail.vue:366
+#: front/src/views/admin/moderation/DomainsDetail.vue:301
+msgctxt "*/*/*"
+msgid "Albums"
+msgstr ""
+
+#: front/src/components/library/ArtistDetail.vue:21
+msgctxt "Content/Artist/Title"
+msgid "Albums by this artist"
+msgstr ""
+
+#: front/src/components/manage/library/EditsCardList.vue:15
+#: front/src/components/manage/library/LibrariesTable.vue:13
+#: front/src/components/manage/library/UploadsTable.vue:13
+#: front/src/components/manage/library/UploadsTable.vue:22
+#: front/src/components/manage/moderation/DomainsTable.vue:11
+#: front/src/components/manage/users/InvitationsTable.vue:19
+#: front/src/components/moderation/ReportCategoryDropdown.vue:32
+#: front/src/views/admin/moderation/ReportsList.vue:17
+#: front/src/views/content/libraries/FilesTable.vue:13
+msgctxt "Content/*/Dropdown"
+msgid "All"
+msgstr ""
+
+#: front/src/components/common/ActionTable.vue:59
+msgctxt "Content/*/Paragraph"
+msgid "All %{ count } element selected"
+msgid_plural "All %{ count } elements selected"
+msgstr[0] ""
+msgstr[1] ""
+
+#: front/src/components/auth/Authorize.vue:107
+msgctxt "Head/Authorize/Title"
+msgid "Allow application"
+msgstr ""
+
+#: front/src/components/About.vue:136
+msgctxt "*/*/*"
+msgid "Allow-list"
+msgstr ""
+
+#: front/src/components/About.vue:149
+msgctxt "*/*/*"
+msgid "Allowed domains"
+msgstr ""
+
+#: front/src/components/library/ImportStatusModal.vue:17
+msgctxt "Popup/Import/Message"
+msgid "An error occurred during upload processing. You will find more information below."
+msgstr ""
+
+#: front/src/components/playlists/Editor.vue:13
+msgctxt "Content/Playlist/Error message.Title"
+msgid "An error occurred while saving your changes"
+msgstr ""
+
+#: front/src/components/federation/FetchButton.vue:21
+msgctxt "Popup/*/Message.Content"
+msgid "An error occurred while trying to refresh data:"
+msgstr ""
+
+#: front/src/components/federation/FetchButton.vue:41
+msgctxt "*/*/Error"
+msgid "An HTTP error occurred while contacting the remote server"
+msgstr ""
+
+#: front/src/components/library/ImportStatusModal.vue:145
+msgctxt "Popup/Import/Error.Label"
+msgid "An unknown error occurred"
+msgstr ""
+
+#: front/src/components/About.vue:123
+msgctxt "*/*/*"
+msgid "Anonymous access"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:54
+msgctxt "Popup/Moderation/Error message"
+msgid "Anonymous reports are disabled, please sign-in to submit a report."
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:175
+#: src/components/auth/Settings.vue:225
+msgctxt "*/*/*/Noun"
+msgid "Application"
+msgstr ""
+
+#: front/src/components/auth/ApplicationEdit.vue:12
+msgctxt "Content/Applications/Title"
+msgid "Application details"
+msgstr ""
+
+#: front/src/components/auth/ApplicationEdit.vue:21
+msgctxt "Content/Applications/Label"
+msgid "Application ID"
+msgstr ""
+
+#: front/src/components/auth/ApplicationEdit.vue:16
+msgctxt "Content/Application/Paragraph/"
+msgid "Application ID and secret are really sensitive values and must be treated like passwords. Do not share those with anyone else."
+msgstr ""
+
+#: front/src/components/auth/ApplicationEdit.vue:25
+msgctxt "Content/Applications/Label"
+msgid "Application secret"
+msgstr ""
+
+#: front/src/components/library/EditCard.vue:81
+#: front/src/components/notifications/NotificationRow.vue:66
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Approve"
+msgstr ""
+
+#: front/src/components/library/EditCard.vue:25
+#: front/src/components/manage/library/EditsCardList.vue:21
+msgctxt "Content/*/*/Short"
+msgid "Approved"
+msgstr ""
+
+#: front/src/components/library/EditCard.vue:21
+msgctxt "Content/Library/Card/Short"
+msgid "Approved and applied"
+msgstr ""
+
+#: front/src/components/auth/Logout.vue:5
+msgctxt "Content/Login/Title"
+msgid "Are you sure you want to log out?"
+msgstr ""
+
+#: front/src/components/audio/SearchBar.vue:32
+#: src/components/audio/track/Table.vue:8
+#: front/src/components/manage/library/AlbumsTable.vue:40
+#: front/src/components/manage/library/TracksTable.vue:41
+#: front/src/components/metadata/Search.vue:130
+#: src/components/mixins/Report.vue:55
+#: front/src/views/admin/library/AlbumDetail.vue:114
+#: front/src/views/admin/library/TrackDetail.vue:124
+#: front/src/views/content/libraries/FilesTable.vue:56 src/entities.js:12
+#: front/src/components/mixins/Report.vue:56
+msgctxt "*/*/*/Noun"
+msgid "Artist"
+msgstr ""
+
+#: front/src/views/admin/library/ArtistDetail.vue:96
+msgctxt "Content/Moderation/Title"
+msgid "Artist data"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:62
+#: front/src/components/mixins/Translations.vue:63
+msgctxt "Content/*/Dropdown/Noun"
+msgid "Artist name"
+msgstr ""
+
+#: front/src/components/audio/Search.vue:65
+msgctxt "*/Search/Input.Placeholder"
+msgid "Artist, album, track…"
+msgstr ""
+
+#: front/src/components/audio/Search.vue:10
+#: src/components/library/Artists.vue:117
+#: front/src/components/library/Library.vue:10
+#: front/src/components/library/TagDetail.vue:19
+#: front/src/components/manage/library/TagsTable.vue:42
+#: front/src/views/admin/library/ArtistsList.vue:24
+#: front/src/views/admin/library/Base.vue:8
+#: front/src/views/admin/library/LibraryDetail.vue:228
+#: front/src/views/admin/library/TagDetail.vue:123
+#: front/src/views/admin/moderation/AccountsDetail.vue:358
+#: front/src/views/admin/moderation/DomainsDetail.vue:291
+msgctxt "*/*/*/Noun"
+msgid "Artists"
+msgstr ""
+
+#: front/src/components/favorites/List.vue:34
+#: src/components/library/Albums.vue:29
+#: front/src/components/library/Artists.vue:29
+#: src/components/library/Radios.vue:44
+#: front/src/components/manage/library/AlbumsTable.vue:21
+#: front/src/components/manage/library/ArtistsTable.vue:21
+#: front/src/components/manage/library/EditsCardList.vue:39
+#: front/src/components/manage/library/LibrariesTable.vue:30
+#: front/src/components/manage/library/TagsTable.vue:21
+#: front/src/components/manage/library/TracksTable.vue:21
+#: front/src/components/manage/library/UploadsTable.vue:40
+#: front/src/components/manage/moderation/AccountsTable.vue:21
+#: front/src/components/manage/moderation/DomainsTable.vue:27
+#: front/src/components/manage/users/UsersTable.vue:19
+#: front/src/views/admin/moderation/ReportsList.vue:44
+#: front/src/views/content/libraries/FilesTable.vue:31
+#: front/src/views/playlists/List.vue:27
+msgctxt "Content/Search/Dropdown"
+msgid "Ascending"
+msgstr ""
+
+#: front/src/views/auth/PasswordReset.vue:28
+msgctxt "Content/Signup/Button.Label/Verb"
+msgid "Ask for a password reset"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:72
+msgctxt "Content/Moderation/*"
+msgid "Assigned to"
+msgstr ""
+
+#: front/src/views/admin/library/AlbumDetail.vue:214
+#: front/src/views/admin/library/ArtistDetail.vue:202
+#: front/src/views/admin/library/LibraryDetail.vue:195
+#: front/src/views/admin/library/TagDetail.vue:113
+#: front/src/views/admin/library/TrackDetail.vue:266
+#: front/src/views/admin/library/UploadDetail.vue:191
+#: front/src/views/admin/moderation/AccountsDetail.vue:285
+#: front/src/views/admin/moderation/DomainsDetail.vue:239
+msgctxt "Content/Moderation/Title"
+msgid "Audio content"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:92
+msgctxt "Popup/Keyboard shortcuts/Title"
+msgid "Audio player shortcuts"
+msgstr ""
+
+#: front/src/components/auth/Authorize.vue:47
+msgctxt "Content/Signup/Button.Label/Verb"
+msgid "Authorize %{ app }"
+msgstr ""
+
+#: front/src/components/auth/Authorize.vue:4
+msgctxt "Content/Auth/Title/Verb"
+msgid "Authorize third-party app"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:162
+msgctxt "Content/Settings/Title/Noun"
+msgid "Authorized apps"
+msgstr ""
+
+#: front/src/components/playlists/PlaylistModal.vue:40
+msgctxt "Popup/Playlist/Title"
+msgid "Available playlists"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:34
+msgctxt "Content/Settings/Title"
+msgid "Avatar"
+msgstr ""
+
+#: front/src/views/auth/PasswordReset.vue:25
+#: front/src/views/auth/PasswordResetConfirm.vue:18
+msgctxt "Content/Signup/Link"
+msgid "Back to login"
+msgstr ""
+
+#: front/src/components/auth/ApplicationEdit.vue:9
+#: front/src/components/auth/ApplicationNew.vue:5
+msgctxt "Content/Applications/Link"
+msgid "Back to settings"
+msgstr ""
+
+#: front/src/components/library/TrackDetail.vue:48
+#: front/src/components/mixins/Translations.vue:67
+#: front/src/views/admin/library/UploadDetail.vue:227
+#: front/src/components/mixins/Translations.vue:68
+msgctxt "Content/Track/*/Noun"
+msgid "Bitrate"
+msgstr ""
+
+#: front/src/components/manage/moderation/InstancePolicyCard.vue:19
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:34
+msgctxt "Content/Moderation/*/Verb"
+msgid "Block everything"
+msgstr ""
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:112
+msgctxt "Content/Moderation/Help text"
+msgid "Block everything from this account or domain. This will prevent any interaction with the entity, and purge related content (uploads, libraries, follows, etc.)"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:18 src/components/library/Library.vue:4
+msgctxt "*/Library/*/Verb"
+msgid "Browse"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:65
+msgctxt "Sidebar/Library/List item.Link/Verb"
+msgid "Browse library"
+msgstr ""
+
+#: front/src/components/Home.vue:132
+msgctxt "Content/Home/Link"
+msgid "Browse public content"
+msgstr ""
+
+#: front/src/components/library/Albums.vue:4
+msgctxt "Content/Album/Title"
+msgid "Browsing albums"
+msgstr ""
+
+#: front/src/components/library/Artists.vue:4
+msgctxt "Content/Artist/Title"
+msgid "Browsing artists"
+msgstr ""
+
+#: front/src/views/playlists/List.vue:3
+msgctxt "Content/Playlist/Title"
+msgid "Browsing playlists"
+msgstr ""
+
+#: front/src/components/library/Radios.vue:4
+msgctxt "Content/Radio/Title"
+msgid "Browsing radios"
+msgstr ""
+
+#: front/src/components/library/radios/Builder.vue:5
+msgctxt "Content/Radio/Title"
+msgid "Builder"
+msgstr ""
+
+#: front/src/components/audio/album/Card.vue:13
+msgctxt "Content/Album/Card"
+msgid "By %{ artist }"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:125
+msgctxt "Popup/Library/Paragraph"
+msgid "By unfollowing this library, you loose access to its content."
+msgstr ""
+
+#: front/src/views/admin/library/AlbumDetail.vue:230
+#: front/src/views/admin/library/ArtistDetail.vue:218
+#: front/src/views/admin/library/LibraryDetail.vue:211
+#: front/src/views/admin/library/TrackDetail.vue:282
+#: front/src/views/admin/library/UploadDetail.vue:208
+#: front/src/views/admin/moderation/AccountsDetail.vue:301
+#: front/src/views/admin/moderation/DomainsDetail.vue:254
+msgctxt "Content/Moderation/Table.Label/Noun"
+msgid "Cached size"
+msgstr ""
+
+#: front/src/components/SetInstanceModal.vue:37
+#: front/src/components/common/DangerousButton.vue:17
+#: front/src/components/library/AlbumBase.vue:37
+#: front/src/components/library/ArtistBase.vue:48
+#: front/src/components/library/EditForm.vue:107
+#: front/src/components/library/TrackBase.vue:53
+#: front/src/components/library/radios/Filter.vue:53
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:54
+#: front/src/components/moderation/FilterModal.vue:39
+#: front/src/components/moderation/ReportModal.vue:59
+#: front/src/components/playlists/PlaylistModal.vue:26
+#: front/src/components/playlists/PlaylistModal.vue:77
+#: front/src/views/playlists/Detail.vue:62
+msgctxt "*/*/Button.Label/Verb"
+msgid "Cancel"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:110
+msgctxt "Content/Library/Card.Paragraph"
+msgid "Cancel follow request"
+msgstr ""
+
+#: front/src/components/library/radios/Builder.vue:64
+msgctxt "Content/Radio/Table.Label/Noun (Value is a number of Tracks)"
+msgid "Candidates"
+msgstr ""
+
+#: front/src/components/library/FileUpload.vue:261
+msgctxt "Content/Library/Help text"
+msgid "Cannot upload this file, ensure it is not too big"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:30
+#: front/src/components/mixins/Translations.vue:42
+#: front/src/components/moderation/ReportCategoryDropdown.vue:2
+#: front/src/components/mixins/Translations.vue:43
+msgctxt "*/*/*"
+msgid "Category"
+msgstr ""
+
+#: front/src/components/Footer.vue:21
+msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
+msgid "Change language"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:68
+msgctxt "Content/Settings/Title/Verb"
+msgid "Change my password"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:95
+msgctxt "Content/Settings/Button.Label"
+msgid "Change password"
+msgstr ""
+
+#: front/src/components/Footer.vue:37
+msgctxt "Footer/Settings/Dropdown.Label/Short, Verb"
+msgid "Change theme"
+msgstr ""
+
+#: front/src/views/auth/PasswordResetConfirm.vue:62
+msgctxt "*/Signup/Title"
+msgid "Change your password"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:96
+msgctxt "Popup/Settings/Title"
+msgid "Change your password?"
+msgstr ""
+
+#: front/src/components/playlists/Editor.vue:31
+msgctxt "Content/Playlist/Paragraph"
+msgid "Changes synced with server"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:71
+msgctxt "Content/Settings/Paragraph'"
+msgid "Changing your password will also change your Subsonic API password if you have requested one."
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:98
+msgctxt "Popup/Settings/Paragraph"
+msgid "Changing your password will have the following consequences:"
+msgstr ""
+
+#: front/src/components/Footer.vue:48
+msgctxt "Footer/*/List item.Link"
+msgid "Chat room"
+msgstr ""
+
+#: front/src/components/auth/ApplicationForm.vue:24
+msgctxt "Content/Applications/Paragraph/"
+msgid "Checking the parent \"Read\" or \"Write\" scopes implies access to all the corresponding children scopes."
+msgstr ""
+
+#: front/src/components/SetInstanceModal.vue:2
+msgctxt "Popup/Instance/Title"
+msgid "Choose your instance"
+msgstr ""
+
+#: front/src/components/library/EditForm.vue:75
+#: front/src/components/library/EditForm.vue:88
+#: front/src/components/manage/users/InvitationForm.vue:37
+msgctxt "Content/Library/Button.Label"
+msgid "Clear"
+msgstr ""
+
+#: front/src/components/playlists/Editor.vue:50
+#: front/src/components/playlists/Editor.vue:55
+msgctxt "*/Playlist/Button.Label/Verb"
+msgid "Clear playlist"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:144
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Clear queue"
+msgstr ""
+
+#: front/src/components/audio/Player.vue:668
+msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
+msgid "Clear your queue"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:21
+#: front/src/components/mixins/Translations.vue:22
+msgctxt "Content/Library/Link.Title"
+msgid "Click to display more information about the import process for this upload"
+msgstr ""
+
+#: front/src/components/library/FileUpload.vue:82
+msgctxt "Content/Library/Paragraph/Call to action"
+msgid "Click to select files to upload or drag and drop files or directories"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:38
+#: front/src/components/federation/FetchButton.vue:85
+#: front/src/components/library/ImportStatusModal.vue:79
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:34
+msgctxt "*/*/Button.Label/Verb"
+msgid "Close"
+msgstr ""
+
+#: front/src/components/federation/FetchButton.vue:88
+msgctxt "*/*/Button.Label/Verb"
+msgid "Close and reload page"
+msgstr ""
+
+#: front/src/components/About.vue:94
+msgctxt "*/*/*/State of registrations"
+msgid "Closed"
+msgstr ""
+
+#: front/src/components/manage/users/InvitationForm.vue:26
+#: front/src/components/manage/users/InvitationsTable.vue:42
+msgctxt "Content/Admin/Table.Label/Noun"
+msgid "Code"
+msgstr ""
+
+#: front/src/components/audio/album/Card.vue:41
+#: front/src/components/common/CollapseLink.vue:3
+msgctxt "*/*/Button,Label"
+msgid "Collapse"
+msgstr ""
+
+#: front/src/components/library/radios/Builder.vue:63
+msgctxt "Content/Radio/Table.Label/Verb (Value is a List of Parameters)"
+msgid "Config"
+msgstr ""
+
+#: front/src/components/common/DangerousButton.vue:21
+msgctxt "Modal/*/Button.Label/Short, Verb"
+msgid "Confirm"
+msgstr ""
+
+#: front/src/views/auth/EmailConfirm.vue:51
+msgctxt "Head/Signup/Title"
+msgid "Confirm your e-mail address"
+msgstr ""
+
+#: front/src/views/auth/EmailConfirm.vue:13
+msgctxt "Content/Signup/Form.Label"
+msgid "Confirmation code"
+msgstr ""
+
+#: front/src/components/About.vue:67 src/components/Home.vue:65
+msgctxt "Content/Home/Header/Name"
+msgid "Contact"
+msgstr ""
+
+#: front/src/components/moderation/FilterModal.vue:90
+msgctxt "*/Moderation/Message"
+msgid "Content filter successfully added"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:116
+#: front/src/components/mixins/Translations.vue:108
+#: front/src/components/mixins/Translations.vue:109
+msgctxt "Content/Settings/Title/Noun"
+msgid "Content filters"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:119
+msgctxt "Content/Settings/Paragraph"
+msgid "Content filters help you hide content you don't want to see on the service."
+msgstr ""
+
+#: front/src/components/common/ActionTable.vue:8
+msgctxt "Content/*/Button.Help text.Paragraph"
+msgid "Content have been updated, click refresh to see up-to-date content"
+msgstr ""
+
+#: front/src/components/About.vue:46
+msgctxt "Content/About/Header"
+msgid "Contents"
+msgstr ""
+
+#: front/src/components/Footer.vue:56
+msgctxt "Footer/*/List item.Link"
+msgid "Contribute"
+msgstr ""
+
+#: front/src/components/audio/EmbedWizard.vue:29
+#: front/src/components/common/CopyInput.vue:8
+#: front/src/components/forms/PasswordInput.vue:43
+msgctxt "*/*/Button.Label/Short, Verb"
+msgid "Copy"
+msgstr ""
+
+#: front/src/components/playlists/Editor.vue:194
+msgctxt "Content/Playlist/Button.Tooltip/Verb"
+msgid "Copy queued tracks to playlist"
+msgstr ""
+
+#: front/src/components/auth/Authorize.vue:55
+msgctxt "Content/Auth/Paragraph"
+msgid "Copy-paste the following code in the application:"
+msgstr ""
+
+#: front/src/components/audio/EmbedWizard.vue:31
+msgctxt "Popup/Embed/Paragraph"
+msgid "Copy/paste this code in your website HTML"
+msgstr ""
+
+#: front/src/components/library/TrackDetail.vue:10
+#: front/src/views/admin/library/TrackDetail.vue:159 src/edits.js:77
+msgctxt "Content/Track/*/Noun"
+msgid "Copyright"
+msgstr ""
+
+#: front/src/views/auth/EmailConfirm.vue:7
+msgctxt "Content/Signup/Paragraph"
+msgid "Could not confirm your e-mail address"
+msgstr ""
+
+#: front/src/views/content/remote/ScanForm.vue:3
+msgctxt "Content/Library/Error message.Title"
+msgid "Could not fetch remote library"
+msgstr ""
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:58
+msgctxt "Content/Moderation/Card.Button.Label/Verb"
+msgid "Create"
+msgstr ""
+
+#: front/src/views/auth/Signup.vue:4
+msgctxt "Content/Signup/Title"
+msgid "Create a funkwhale account"
+msgstr ""
+
+#: front/src/components/auth/ApplicationNew.vue:8
+#: front/src/components/auth/ApplicationNew.vue:41
+#: front/src/components/auth/Settings.vue:220
+msgctxt "Content/Settings/Button.Label"
+msgid "Create a new application"
+msgstr ""
+
+#: front/src/views/content/libraries/Home.vue:14
+msgctxt "Content/Library/Link/Verb"
+msgid "Create a new library"
+msgstr ""
+
+#: front/src/components/playlists/Form.vue:2
+msgctxt "Popup/Playlist/Title/Verb"
+msgid "Create a new playlist"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:57 src/components/auth/LoginForm.vue:15
+msgctxt "*/Signup/Link/Verb"
+msgid "Create an account"
+msgstr ""
+
+#: front/src/components/auth/ApplicationForm.vue:65
+msgctxt "Content/Applications/Button.Label/Verb"
+msgid "Create application"
+msgstr ""
+
+#: front/src/views/content/libraries/Form.vue:26
+msgctxt "Content/Library/Button.Label/Verb"
+msgid "Create library"
+msgstr ""
+
+#: front/src/components/auth/SignupForm.vue:49
+msgctxt "Content/Signup/Button.Label"
+msgid "Create my account"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:264
+msgctxt "Content/Applications/Paragraph"
+msgid "Create one to integrate Funkwhale with third-party applications."
+msgstr ""
+
+#: front/src/components/playlists/Form.vue:34
+msgctxt "Content/Playlist/Button.Label/Verb"
+msgid "Create playlist"
+msgstr ""
+
+#: front/src/components/library/Radios.vue:23
+msgctxt "Content/Radio/Button.Label/Verb"
+msgid "Create your own radio"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:134
+#: src/components/auth/Settings.vue:227
+#: front/src/components/manage/library/AlbumsTable.vue:44
+#: front/src/components/manage/library/ArtistsTable.vue:43
+#: front/src/components/manage/library/LibrariesTable.vue:54
+#: front/src/components/manage/library/TagsTable.vue:45
+#: front/src/components/manage/library/TracksTable.vue:44
+#: front/src/components/manage/library/UploadsTable.vue:66
+#: front/src/components/manage/moderation/ReportCard.vue:43
+#: front/src/components/manage/users/InvitationsTable.vue:40
+#: front/src/components/mixins/Translations.vue:53
+#: front/src/components/mixins/Translations.vue:54
+msgctxt "Content/*/*/Noun"
+msgid "Creation date"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:54
+msgctxt "Content/Settings/Title/Noun"
+msgid "Current avatar"
+msgstr ""
+
+#: front/src/components/admin/SettingsGroup.vue:67
+msgctxt "Content/Settings/Title/Noun"
+msgid "Current image"
+msgstr ""
+
+#: front/src/views/content/libraries/DetailArea.vue:4
+msgctxt "Content/Library/Title"
+msgid "Current library"
+msgstr ""
+
+#: front/src/components/playlists/PlaylistModal.vue:8
+msgctxt "Popup/Playlist/Title"
+msgid "Current track"
+msgstr ""
+
+#: front/src/views/content/libraries/Quota.vue:2
+msgctxt "Content/Library/Title"
+msgid "Current usage"
+msgstr ""
+
+#: front/src/components/Footer.vue:94
+msgctxt "Footer/Settings/Dropdown.Label/Theme name"
+msgid "Dark"
+msgstr ""
+
+#: front/src/components/federation/FetchButton.vue:53
+msgctxt "*/*/Error"
+msgid "Data returned by the remote server had invalid or missing attributes"
+msgstr ""
+
+#: front/src/components/federation/FetchButton.vue:17
+msgctxt "Popup/*/Message.Content"
+msgid "Data was refreshed successfully from remote server."
+msgstr ""
+
+#: front/src/views/content/libraries/Detail.vue:27
+msgctxt "Content/Library/Table.Label"
+msgid "Date"
+msgstr ""
+
+#: front/src/components/library/ImportStatusModal.vue:64
+msgctxt "Popup/Import/Table.Label/Noun"
+msgid "Debug information"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:128
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Decrease volume"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:150
+#: src/components/auth/Settings.vue:251
+#: front/src/components/library/EditCard.vue:93
+#: front/src/components/library/EditCard.vue:98
+#: front/src/components/manage/library/AlbumsTable.vue:188
+#: front/src/components/manage/library/ArtistsTable.vue:178
+#: front/src/components/manage/library/LibrariesTable.vue:205
+#: front/src/components/manage/library/TagsTable.vue:179
+#: front/src/components/manage/library/TracksTable.vue:188
+#: front/src/components/manage/library/UploadsTable.vue:255
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:61
+#: front/src/components/manage/moderation/NotesThread.vue:24
+#: front/src/components/manage/moderation/NotesThread.vue:29
+#: front/src/components/manage/moderation/ReportCard.vue:360
+#: front/src/components/manage/users/InvitationsTable.vue:167
+#: front/src/views/admin/library/AlbumDetail.vue:78
+#: front/src/views/admin/library/AlbumDetail.vue:83
+#: front/src/views/admin/library/ArtistDetail.vue:76
+#: front/src/views/admin/library/ArtistDetail.vue:81
+#: front/src/views/admin/library/LibraryDetail.vue:58
+#: front/src/views/admin/library/LibraryDetail.vue:63
+#: front/src/views/admin/library/TagDetail.vue:41
+#: front/src/views/admin/library/TagDetail.vue:46
+#: front/src/views/admin/library/TrackDetail.vue:77
+#: front/src/views/admin/library/TrackDetail.vue:82
+#: front/src/views/admin/library/UploadDetail.vue:65
+#: front/src/views/admin/library/UploadDetail.vue:70
+#: front/src/views/content/libraries/FilesTable.vue:222
+#: front/src/views/content/libraries/Form.vue:29
+#: src/views/playlists/Detail.vue:42
+msgctxt "*/*/*/Verb"
+msgid "Delete"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:254
+msgctxt "*/Settings/Button.Label/Verb"
+msgid "Delete application"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:252
+msgctxt "Popup/Settings/Title"
+msgid "Delete application \"%{ application }\"?"
+msgstr ""
+
+#: front/src/views/content/libraries/Form.vue:39
+msgctxt "Popup/Library/Button.Label/Verb"
+msgid "Delete library"
+msgstr ""
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:69
+msgctxt "Popup/Moderation/Button.Label/Verb"
+msgid "Delete moderation rule"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:274
+#: src/components/auth/Settings.vue:302
+msgctxt "*/*/Button.Label"
+msgid "Delete my account"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:297
+msgctxt "*/*/Button.Label"
+msgid "Delete my account…"
+msgstr ""
+
+#: front/src/views/playlists/Detail.vue:47
+msgctxt "Popup/Playlist/Button.Label/Verb"
+msgid "Delete playlist"
+msgstr ""
+
+#: front/src/views/radios/Detail.vue:28
+msgctxt "Popup/Radio/Button.Label/Verb"
+msgid "Delete radio"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:357
+msgctxt "Content/Moderation/Button/Verb"
+msgid "Delete reported object"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:358
+msgctxt "Content/Moderation/Popup/Header"
+msgid "Delete reported object?"
+msgstr ""
+
+#: front/src/views/admin/library/AlbumDetail.vue:79
+#: front/src/views/admin/library/TrackDetail.vue:78
+msgctxt "Popup/Library/Title"
+msgid "Delete this album?"
+msgstr ""
+
+#: front/src/views/admin/library/ArtistDetail.vue:77
+msgctxt "Popup/Library/Title"
+msgid "Delete this artist?"
+msgstr ""
+
+#: front/src/views/admin/library/LibraryDetail.vue:59
+#: front/src/views/content/libraries/Form.vue:31
+msgctxt "Popup/Library/Title"
+msgid "Delete this library?"
+msgstr ""
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:63
+msgctxt "Popup/Moderation/Title"
+msgid "Delete this moderation rule?"
+msgstr ""
+
+#: front/src/components/manage/moderation/NotesThread.vue:25
+msgctxt "Popup/Moderation/Title"
+msgid "Delete this note?"
+msgstr ""
+
+#: front/src/components/library/EditCard.vue:94
+msgctxt "Popup/Library/Title"
+msgid "Delete this suggestion?"
+msgstr ""
+
+#: front/src/views/admin/library/TagDetail.vue:42
+msgctxt "Popup/Library/Title"
+msgid "Delete this tag?"
+msgstr ""
+
+#: front/src/views/admin/library/UploadDetail.vue:66
+msgctxt "Popup/Library/Title"
+msgid "Delete this upload?"
+msgstr ""
+
+#: front/src/components/favorites/List.vue:35
+#: src/components/library/Albums.vue:30
+#: front/src/components/library/Artists.vue:30
+#: src/components/library/Radios.vue:47
+#: front/src/components/manage/library/AlbumsTable.vue:22
+#: front/src/components/manage/library/ArtistsTable.vue:22
+#: front/src/components/manage/library/EditsCardList.vue:40
+#: front/src/components/manage/library/LibrariesTable.vue:31
+#: front/src/components/manage/library/TagsTable.vue:22
+#: front/src/components/manage/library/TracksTable.vue:22
+#: front/src/components/manage/library/UploadsTable.vue:41
+#: front/src/components/manage/moderation/AccountsTable.vue:22
+#: front/src/components/manage/moderation/DomainsTable.vue:28
+#: front/src/components/manage/users/UsersTable.vue:20
+#: front/src/views/admin/moderation/ReportsList.vue:45
+#: front/src/views/content/libraries/FilesTable.vue:32
+#: front/src/views/playlists/List.vue:28
+msgctxt "Content/Search/Dropdown"
+msgid "Descending"
+msgstr ""
+
+#: front/src/components/manage/moderation/NoteForm.vue:37
+msgctxt "Content/Moderation/Placeholder"
+msgid "Describe what actions have been taken, or any other related updates…"
+msgstr ""
+
+#: front/src/components/library/radios/Builder.vue:25
+#: front/src/views/admin/library/LibraryDetail.vue:132
+#: front/src/views/content/libraries/Form.vue:14
+msgctxt "*/*/*/Noun"
+msgid "Description"
+msgstr ""
+
+#: front/src/views/content/libraries/Card.vue:48
+#: src/views/content/remote/Card.vue:67
+msgctxt "Content/Library/Card.Button.Label/Noun"
+msgid "Details"
+msgstr ""
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:511
+msgctxt "Content/Moderation/Help text"
+msgid "Determine how much content the user can upload. Leave empty to use the default value of the instance."
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:8
+#: front/src/components/mixins/Translations.vue:9
+msgctxt "Content/Settings/Dropdown.Help text"
+msgid "Determine the visibility level of your activity"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:104
+#: front/src/components/auth/SubsonicTokenForm.vue:56
+msgctxt "Popup/Settings/Button.Label"
+msgid "Disable access"
+msgstr ""
+
+#: front/src/components/auth/SubsonicTokenForm.vue:53
+msgctxt "Content/Settings/Button.Label/Verb"
+msgid "Disable Subsonic access"
+msgstr ""
+
+#: front/src/components/auth/SubsonicTokenForm.vue:54
+msgctxt "Popup/Settings/Title"
+msgid "Disable Subsonic API access?"
+msgstr ""
+
+#: front/src/components/About.vue:118 src/components/About.vue:131
+#: front/src/components/About.vue:144
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:18
+#: front/src/views/admin/moderation/AccountsDetail.vue:157
+#: front/src/views/admin/moderation/AccountsDetail.vue:161
+msgctxt "*/*/*/State of feature"
+msgid "Disabled"
+msgstr ""
+
+#: front/src/views/admin/library/TrackDetail.vue:151
+msgctxt "*/*/*/Noun"
+msgid "Disc number"
+msgstr ""
+
+#: front/src/components/Home.vue:157
+msgctxt "Content/Home/Link"
+msgid "Discover everything you need to know about Funkwhale and its features"
+msgstr ""
+
+#: front/src/components/auth/SubsonicTokenForm.vue:13
+msgctxt "Content/Settings/Link"
+msgid "Discover how to use Funkwhale from other apps"
+msgstr ""
+
+#: front/src/views/Notifications.vue:45
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Discover other ways to help"
+msgstr ""
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:132
+msgctxt "'Content/*/*/Noun'"
+msgid "Display name"
+msgstr ""
+
+#: front/src/components/library/radios/Builder.vue:30
+msgctxt "Content/Radio/Checkbox.Label/Verb"
+msgid "Display publicly"
+msgstr ""
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:122
+msgctxt "Content/Moderation/Help text"
+msgid "Do not download any media file (audio, album cover, account avatar…) from this account or domain. This will purge existing content as well."
+msgstr ""
+
+#: front/src/views/Notifications.vue:36
+msgctxt "Content/Notifications/Header"
+msgid "Do you like Funkwhale?"
+msgstr ""
+
+#: front/src/components/playlists/Editor.vue:51
+msgctxt "Popup/Playlist/Title"
+msgid "Do you want to clear the playlist \"%{ playlist }\"?"
+msgstr ""
+
+#: front/src/components/common/DangerousButton.vue:7
+msgctxt "Modal/*/Title"
+msgid "Do you want to confirm this action?"
+msgstr ""
+
+#: front/src/views/playlists/Detail.vue:43
+msgctxt "Popup/Playlist/Title/Call to action"
+msgid "Do you want to delete the playlist \"%{ playlist }\"?"
+msgstr ""
+
+#: front/src/views/radios/Detail.vue:26
+msgctxt "Popup/Radio/Title"
+msgid "Do you want to delete the radio \"%{ radio }\"?"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:298
+msgctxt "Popup/Settings/Title"
+msgid "Do you want to delete your account?"
+msgstr ""
+
+#: front/src/components/moderation/FilterModal.vue:3
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Do you want to hide content from artist \"%{ name }\"?"
+msgstr ""
+
+#: front/src/components/common/ActionTable.vue:37
+msgctxt "Modal/*/Title"
+msgid "Do you want to launch %{ action } on %{ count } element?"
+msgid_plural "Do you want to launch %{ action } on %{ count } elements?"
+msgstr[0] ""
+msgstr[1] ""
+
+#: front/src/components/moderation/ReportModal.vue:3
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Do you want to report this object?"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:122
+msgctxt "Sidebar/Queue/Message"
+msgid "Do you want to restore your previous queue?"
+msgstr ""
+
+#: front/src/components/Footer.vue:31
+msgctxt "Footer/*/List item.Link/Short, Noun"
+msgid "Documentation"
+msgstr ""
+
+#: front/src/components/manage/library/AlbumsTable.vue:41
+#: front/src/components/manage/library/ArtistsTable.vue:40
+#: front/src/components/manage/library/LibrariesTable.vue:50
+#: front/src/components/manage/library/TracksTable.vue:42
+#: front/src/components/manage/library/UploadsTable.vue:62
+#: front/src/components/manage/moderation/AccountsTable.vue:40
+#: front/src/components/manage/moderation/ReportCard.vue:169
+#: front/src/components/manage/moderation/ReportCard.vue:179
+#: front/src/components/mixins/Translations.vue:72
+#: front/src/views/admin/library/AlbumDetail.vue:124
+#: front/src/views/admin/library/ArtistDetail.vue:112
+#: front/src/views/admin/library/LibraryDetail.vue:123
+#: front/src/views/admin/library/TrackDetail.vue:176
+#: front/src/views/admin/library/UploadDetail.vue:121
+#: front/src/views/admin/moderation/AccountsDetail.vue:123
+#: front/src/components/mixins/Translations.vue:73
+msgctxt "Content/Moderation/*/Noun"
+msgid "Domain"
+msgstr ""
+
+#: front/src/views/admin/moderation/Base.vue:8
+#: front/src/views/admin/moderation/DomainsList.vue:3
+#: front/src/views/admin/moderation/DomainsList.vue:54
+msgctxt "*/Moderation/*/Noun"
+msgid "Domains"
+msgstr ""
+
+#: front/src/views/Notifications.vue:42
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Donate"
+msgstr ""
+
+#: front/src/components/library/TrackBase.vue:37
+#: front/src/views/admin/library/UploadDetail.vue:58
+msgctxt "Content/Track/Link/Verb"
+msgid "Download"
+msgstr ""
+
+#: front/src/components/playlists/Editor.vue:59
+msgctxt "Content/Playlist/Paragraph/Call to action"
+msgid "Drag and drop rows to reorder tracks in the playlist"
+msgstr ""
+
+#: front/src/components/audio/track/Table.vue:10
+#: front/src/components/library/TrackDetail.vue:30
+#: front/src/components/mixins/Translations.vue:68
+#: front/src/views/admin/library/UploadDetail.vue:238
+#: front/src/views/content/libraries/FilesTable.vue:60
+#: front/src/components/mixins/Translations.vue:69
+msgctxt "Content/*/*"
+msgid "Duration"
+msgstr ""
+
+#: front/src/views/auth/EmailConfirm.vue:23
+msgctxt "Content/Signup/Message"
+msgid "E-mail address confirmed"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:246
+#: src/components/library/AlbumBase.vue:73
+#: front/src/components/library/ArtistBase.vue:84
+#: front/src/components/library/TrackBase.vue:89
+#: front/src/components/manage/moderation/InstancePolicyCard.vue:45
+#: front/src/components/radios/Card.vue:23
+#: src/views/admin/library/AlbumDetail.vue:71
+#: front/src/views/admin/library/ArtistDetail.vue:69
+#: front/src/views/admin/library/TrackDetail.vue:70
+#: front/src/views/content/libraries/Detail.vue:9
+#: src/views/playlists/Detail.vue:31
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Edit"
+msgstr ""
+
+#: front/src/components/auth/ApplicationEdit.vue:30
+#: front/src/components/auth/ApplicationEdit.vue:75
+msgctxt "Content/Applications/Title"
+msgid "Edit application"
+msgstr ""
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:3
+msgctxt "Content/Moderation/Card.Title/Verb"
+msgid "Edit moderation rule"
+msgstr ""
+
+#: front/src/components/library/AlbumEdit.vue:4
+msgctxt "Content/*/Title"
+msgid "Edit this album"
+msgstr ""
+
+#: front/src/components/library/ArtistEdit.vue:4
+msgctxt "Content/*/Title"
+msgid "Edit this artist"
+msgstr ""
+
+#: front/src/components/library/TrackEdit.vue:4
+msgctxt "Content/*/Title"
+msgid "Edit this track"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:116
+#: front/src/views/admin/library/AlbumDetail.vue:198
+#: front/src/views/admin/library/ArtistDetail.vue:186
+#: front/src/views/admin/library/Base.vue:5
+#: src/views/admin/library/EditsList.vue:24
+#: front/src/views/admin/library/TrackDetail.vue:250
+#: front/src/components/mixins/Translations.vue:117
+msgctxt "*/Admin/*/Noun"
+msgid "Edits"
+msgstr ""
+
+#: front/src/components/auth/SignupForm.vue:26
+#: front/src/components/manage/users/UsersTable.vue:38
+#: front/src/components/moderation/ReportModal.vue:31
+msgctxt "Content/*/*/Noun"
+msgid "Email"
+msgstr ""
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:140
+msgctxt "Content/*/*"
+msgid "Email address"
+msgstr ""
+
+#: front/src/components/library/AlbumBase.vue:54
+#: front/src/components/library/ArtistBase.vue:65
+#: front/src/components/library/TrackBase.vue:70
+#: src/views/playlists/Detail.vue:38
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Embed"
+msgstr ""
+
+#: front/src/components/audio/EmbedWizard.vue:30
+msgctxt "Popup/Embed/Input.Label/Noun"
+msgid "Embed code"
+msgstr ""
+
+#: front/src/components/library/AlbumBase.vue:27
+msgctxt "Popup/Album/Title/Verb"
+msgid "Embed this album on your website"
+msgstr ""
+
+#: front/src/components/library/ArtistBase.vue:38
+msgctxt "Popup/Artist/Title/Verb"
+msgid "Embed this artist work on your website"
+msgstr ""
+
+#: front/src/views/playlists/Detail.vue:52
+msgctxt "Popup/Album/Title/Verb"
+msgid "Embed this playlist on your website"
+msgstr ""
+
+#: front/src/components/library/TrackBase.vue:43
+msgctxt "Popup/Track/Title"
+msgid "Embed this track on your website"
+msgstr ""
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:260
+#: front/src/views/admin/moderation/DomainsDetail.vue:224
+msgctxt "Content/Moderation/Table.Label/Noun"
+msgid "Emitted library follows"
+msgstr ""
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:244
+#: front/src/views/admin/moderation/DomainsDetail.vue:208
+msgctxt "Content/Moderation/Table.Label/Noun"
+msgid "Emitted messages"
+msgstr ""
+
+#: front/src/components/About.vue:114 src/components/About.vue:127
+#: front/src/components/About.vue:140
+#: front/src/components/manage/moderation/InstancePolicyCard.vue:8
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:17
+#: front/src/views/admin/moderation/AccountsDetail.vue:156
+#: front/src/views/admin/moderation/AccountsDetail.vue:160
+msgctxt "*/*/*/State of feature"
+msgid "Enabled"
+msgstr ""
+
+#: front/src/views/playlists/Detail.vue:30
+msgctxt "Content/Playlist/Button.Label/Verb"
+msgid "End edition"
+msgstr ""
+
+#: front/src/views/content/remote/ScanForm.vue:50
+msgctxt "Content/Library/Input.Placeholder"
+msgid "Enter a library URL"
+msgstr ""
+
+#: front/src/components/library/Radios.vue:141
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Enter a radio name…"
+msgstr ""
+
+#: front/src/components/library/Albums.vue:128
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Enter album title…"
+msgstr ""
+
+#: front/src/components/library/Artists.vue:116
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Enter artist name…"
+msgstr ""
+
+#: front/src/views/playlists/List.vue:107
+msgctxt "Content/Playlist/Placeholder/Call to action"
+msgid "Enter playlist name…"
+msgstr ""
+
+#: front/src/views/auth/PasswordReset.vue:54
+msgctxt "Content/Signup/Input.Placeholder"
+msgid "Enter the email address linked to your account"
+msgstr ""
+
+#: front/src/components/auth/SignupForm.vue:96
+msgctxt "Content/Signup/Form/Placeholder"
+msgid "Enter your email"
+msgstr ""
+
+#: front/src/components/auth/SignupForm.vue:91
+#: src/components/auth/SignupForm.vue:93
+msgctxt "Content/Signup/Form/Placeholder"
+msgid "Enter your invitation code (case insensitive)"
+msgstr ""
+
+#: front/src/components/metadata/Search.vue:114
+msgctxt "Content/Library/Input.Placeholder/Verb"
+msgid "Enter your search query…"
+msgstr ""
+
+#: front/src/components/auth/SignupForm.vue:95
+msgctxt "Content/Signup/Form/Placeholder"
+msgid "Enter your username"
+msgstr ""
+
+#: front/src/components/auth/LoginForm.vue:81
+msgctxt "Content/Login/Input.Placeholder"
+msgid "Enter your username or email"
+msgstr ""
+
+#: front/src/components/auth/SubsonicTokenForm.vue:19
+#: front/src/views/content/libraries/Form.vue:4
+msgctxt "Content/*/Error message.Title"
+msgid "Error"
+msgstr ""
+
+#: front/src/components/federation/FetchButton.vue:34
+#: front/src/components/library/ImportStatusModal.vue:32
+msgctxt "Popup/Import/Table.Label/Noun"
+msgid "Error detail"
+msgstr ""
+
+#: front/src/views/admin/Settings.vue:89
+msgctxt "Content/Admin/Menu"
+msgid "Error reporting"
+msgstr ""
+
+#: front/src/components/federation/FetchButton.vue:26
+#: front/src/components/library/ImportStatusModal.vue:24
+msgctxt "Popup/Import/Table.Label/Noun"
+msgid "Error type"
+msgstr ""
+
+#: front/src/components/common/ActionTable.vue:94
+msgctxt "Content/*/Error message/Header"
+msgid "Error while applying action"
+msgstr ""
+
+#: front/src/views/auth/PasswordReset.vue:7
+msgctxt "Content/Signup/Card.Title"
+msgid "Error while asking for a password reset"
+msgstr ""
+
+#: front/src/components/auth/Authorize.vue:6
+msgctxt "Popup/Moderation/Error message"
+msgid "Error while authorizing application"
+msgstr ""
+
+#: front/src/views/auth/PasswordResetConfirm.vue:7
+msgctxt "Content/Signup/Card.Title"
+msgid "Error while changing your password"
+msgstr ""
+
+#: front/src/views/admin/moderation/DomainsList.vue:6
+msgctxt "Content/Moderation/Message.Title"
+msgid "Error while creating domain"
+msgstr ""
+
+#: front/src/components/moderation/FilterModal.vue:13
+msgctxt "Popup/Moderation/Error message"
+msgid "Error while creating filter"
+msgstr ""
+
+#: front/src/components/manage/users/InvitationForm.vue:4
+msgctxt "Content/Admin/Error message.Title"
+msgid "Error while creating invitation"
+msgstr ""
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:7
+msgctxt "Content/Moderation/Error message.Title"
+msgid "Error while creating rule"
+msgstr ""
+
+#: front/src/components/auth/Authorize.vue:7
+msgctxt "Popup/Moderation/Error message"
+msgid "Error while fetching application data"
+msgstr ""
+
+#: front/src/views/admin/moderation/DomainsDetail.vue:155
+msgctxt "Content/Moderation/Table"
+msgid "Error while fetching node info"
+msgstr ""
+
+#: front/src/components/admin/SettingsGroup.vue:5
+#: front/src/components/federation/FetchButton.vue:73
+msgctxt "Content/*/Error message.Title"
+msgid "Error while saving settings"
+msgstr ""
+
+#: front/src/components/library/EditForm.vue:46
+msgctxt "Content/Library/Error message.Title"
+msgid "Error while submitting edit"
+msgstr ""
+
+#: front/src/components/manage/moderation/NoteForm.vue:3
+msgctxt "Content/Moderation/Error message.Title"
+msgid "Error while submitting note"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:11
+msgctxt "Popup/Moderation/Error message"
+msgid "Error while submitting report"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:32
+#: front/src/components/mixins/Translations.vue:33
+msgctxt "Content/Library/Table/Short"
+msgid "Errored"
+msgstr ""
+
+#: front/src/views/content/libraries/Quota.vue:75
+msgctxt "Content/Library/Label"
+msgid "Errored files"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:17
+#: front/src/components/mixins/Translations.vue:18
+msgctxt "Content/Settings/Dropdown/Short"
+msgid "Everyone"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:11
+#: front/src/components/mixins/Translations.vue:12
+msgctxt "Content/Settings/Dropdown"
+msgid "Everyone on this instance"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:12
+#: front/src/components/mixins/Translations.vue:13
+msgctxt "Content/Settings/Dropdown"
+msgid "Everyone, across all instances"
+msgstr ""
+
+#: front/src/components/library/radios/Builder.vue:62
+msgctxt "Content/Radio/Table.Label/Verb"
+msgid "Exclude"
+msgstr ""
+
+#: front/src/components/common/CollapseLink.vue:2
+msgctxt "*/*/Button,Label"
+msgid "Expand"
+msgstr ""
+
+#: front/src/components/manage/users/InvitationsTable.vue:41
+#: front/src/components/mixins/Translations.vue:59
+#: front/src/components/mixins/Translations.vue:60
+msgctxt "Content/Admin/Table.Label/Noun"
+msgid "Expiration date"
+msgstr ""
+
+#: front/src/components/manage/users/InvitationsTable.vue:50
+msgctxt "Content/Admin/Table"
+msgid "Expired"
+msgstr ""
+
+#: front/src/components/manage/users/InvitationsTable.vue:21
+msgctxt "Content/Admin/Dropdown/Adjective"
+msgid "Expired/used"
+msgstr ""
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:110
+msgctxt "Content/Moderation/Help text"
+msgid "Explain why you're applying this policy. Depending on your instance configuration, this will help you remember why you acted on this account or domain, and may be displayed publicly to help users understand what moderation rules are in place."
+msgstr ""
+
+#: front/src/components/manage/library/UploadsTable.vue:25
+#: front/src/views/content/libraries/FilesTable.vue:16
+msgctxt "Content/Library/Dropdown"
+msgid "Failed"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:75
+msgctxt "Content/Library/Card.List item/Noun"
+msgid "Failed tracks:"
+msgstr ""
+
+#: front/src/views/admin/library/AlbumDetail.vue:171
+#: front/src/views/admin/library/ArtistDetail.vue:159
+#: front/src/views/admin/library/TrackDetail.vue:223
+msgctxt "*/*/*"
+msgid "Favorited tracks"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:66
+#: src/components/mixins/Translations.vue:88
+#: front/src/components/mixins/Translations.vue:89
+msgctxt "Sidebar/Favorites/List item.Link/Noun"
+msgid "Favorites"
+msgstr ""
+
+#: front/src/components/About.vue:110 src/views/admin/Settings.vue:84
+msgctxt "*/*/*"
+msgid "Federation"
+msgstr ""
+
+#: front/src/components/library/TrackDetail.vue:66
+msgctxt "Content/*/*/Noun"
+msgid "Federation ID"
+msgstr ""
+
+#: front/src/components/library/EditCard.vue:45
+msgctxt "Content/Library/Card.Table.Header/Short"
+msgid "Field"
+msgstr ""
+
+#: front/src/components/library/FileUpload.vue:93
+msgctxt "Content/Library/Table.Label"
+msgid "Filename"
+msgstr ""
+
+#: front/src/components/library/radios/Builder.vue:61
+msgctxt "Content/Radio/Table.Label/Noun"
+msgid "Filter name"
+msgstr ""
+
+#: front/src/components/Home.vue:118
+msgctxt "Content/Home/Link"
+msgid "Find another pod"
+msgstr ""
+
+#: front/src/components/manage/library/UploadsTable.vue:26
+#: front/src/components/mixins/Translations.vue:36
+#: front/src/views/content/libraries/FilesTable.vue:17
+#: front/src/components/mixins/Translations.vue:37
+msgctxt "Content/Library/*"
+msgid "Finished"
+msgstr ""
+
+#: front/src/components/manage/moderation/AccountsTable.vue:42
+#: front/src/components/manage/moderation/DomainsTable.vue:49
+#: front/src/views/admin/library/AlbumDetail.vue:155
+#: front/src/views/admin/library/ArtistDetail.vue:143
+#: front/src/views/admin/library/LibraryDetail.vue:162
+#: front/src/views/admin/library/TagDetail.vue:98
+#: front/src/views/admin/library/TrackDetail.vue:207
+#: front/src/views/admin/library/UploadDetail.vue:167
+#: front/src/views/admin/moderation/AccountsDetail.vue:236
+#: front/src/views/admin/moderation/DomainsDetail.vue:188
+msgctxt "Content/Moderation/Table.Label/Short (Value is a date)"
+msgid "First seen"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:56
+#: front/src/components/mixins/Translations.vue:57
+msgctxt "Content/Moderation/Dropdown/Noun"
+msgid "First seen date"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:64
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Focus searchbar"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:100
+msgctxt "Content/Library/Card.Button.Label/Verb"
+msgid "Follow"
+msgstr ""
+
+#: front/src/views/content/Home.vue:16
+msgctxt "Content/Library/Title/Verb"
+msgid "Follow remote libraries"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:105
+msgctxt "Content/Library/Card.Paragraph"
+msgid "Follow request pending approval"
+msgstr ""
+
+#: front/src/components/manage/library/LibrariesTable.vue:53
+#: front/src/components/mixins/Translations.vue:76
+#: front/src/views/admin/library/LibraryDetail.vue:170
+#: front/src/views/content/libraries/Detail.vue:7
+#: front/src/components/mixins/Translations.vue:77
+msgctxt "Content/Federation/*/Noun"
+msgid "Followers"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:116
+msgctxt "Content/Library/Card.Paragraph"
+msgid "Following"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:96
+#: front/src/components/mixins/Translations.vue:97
+msgctxt "Content/OAuth Scopes/Label"
+msgid "Follows"
+msgstr ""
+
+#: front/src/components/library/TrackBase.vue:245
+msgctxt "Content/Track/Paragraph"
+msgid "From album <a class=\"internal\" href=\"%{ albumUrl }\">%{ album }</a> by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgstr ""
+
+#: front/src/components/auth/Authorize.vue:28
+msgctxt "Content/Auth/Label/Noun"
+msgid "Full access"
+msgstr ""
+
+#: front/src/components/auth/SubsonicTokenForm.vue:7
+msgctxt "Content/Settings/Paragraph'"
+msgid "Funkwhale is compatible with other music players that support the Subsonic API."
+msgstr ""
+
+#: front/src/components/Home.vue:88
+msgctxt "Content/Home/Paragraph"
+msgid "Funkwhale is free and developped by a friendly community of volunteers."
+msgstr ""
+
+#: front/src/components/About.vue:78
+msgctxt "*/*/*"
+msgid "Funkwhale version"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:56
+msgctxt "Popup/Keyboard shortcuts/Title"
+msgid "General shortcuts"
+msgstr ""
+
+#: front/src/components/manage/users/InvitationForm.vue:16
+msgctxt "Content/Admin/Button.Label/Verb"
+msgid "Get a new invitation"
+msgstr ""
+
+#: front/src/views/content/Home.vue:12 src/views/content/Home.vue:19
+msgctxt "Content/Library/Button.Label/Verb"
+msgid "Get started"
+msgstr ""
+
+#: front/src/components/Footer.vue:45
+#: src/components/library/ImportStatusModal.vue:45
+msgctxt "Footer/*/Link"
+msgid "Getting help"
+msgstr ""
+
+#: front/src/components/common/ActionTable.vue:35
+#: front/src/components/common/ActionTable.vue:56
+msgctxt "Content/*/Button.Label/Short, Verb"
+msgid "Go"
+msgstr ""
+
+#: front/src/components/PageNotFound.vue:14
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Go to home page"
+msgstr ""
+
+#: front/src/views/Notifications.vue:27 src/views/Notifications.vue:61
+msgctxt "Content/Notifications/Button.Label"
+msgid "Got it!"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:128
+msgctxt "Content/Settings/Title"
+msgid "Hidden artists"
+msgstr ""
+
+#: front/src/components/About.vue:155
+msgctxt "*/*/*/Verb"
+msgid "Hide"
+msgstr ""
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:114
+msgctxt "Content/Moderation/Help text"
+msgid "Hide account or domain content, except from followers."
+msgstr ""
+
+#: front/src/components/moderation/FilterModal.vue:40
+msgctxt "Popup/*/Button.Label"
+msgid "Hide content"
+msgstr ""
+
+#: front/src/components/audio/PlayButton.vue:31
+msgctxt "*/Queue/Dropdown/Button/Label/Short"
+msgid "Hide content from this artist"
+msgstr ""
+
+#: front/src/components/audio/Player.vue:669
+msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
+msgid "Hide content from this artist…"
+msgstr ""
+
+#: front/src/components/library/Home.vue:65
+msgctxt "Head/Home/Title"
+msgid "Home"
+msgstr ""
+
+#: front/src/components/auth/SubsonicTokenForm.vue:10
+msgctxt "Content/Settings/Paragraph"
+msgid "However, accessing Funkwhale from those clients require a separate password you can set below."
+msgstr ""
+
+#: front/src/views/auth/PasswordResetConfirm.vue:24
+msgctxt "Content/Signup/Paragraph"
+msgid "If the email address provided in the previous step is valid and linked to a user account, you should receive an email with reset instructions in the next couple of minutes."
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:205
+msgctxt "Content/Applications/Paragraph"
+msgid "If you authorize third-party applications to access your data, those applications will be listed here."
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:46
+#: front/src/components/mixins/Translations.vue:47
+msgctxt "Content/Moderation/Dropdown"
+msgid "Illegal content"
+msgstr ""
+
+#: front/src/components/library/ImportStatusModal.vue:3
+msgctxt "Popup/Import/Title"
+msgid "Import detail"
+msgstr ""
+
+#: front/src/components/library/FileUpload.vue:50
+msgctxt "Content/Library/Input.Label/Noun"
+msgid "Import reference"
+msgstr ""
+
+#: front/src/components/manage/library/UploadsTable.vue:20
+#: front/src/components/manage/library/UploadsTable.vue:64
+#: front/src/views/admin/library/UploadDetail.vue:131
+#: front/src/views/content/libraries/FilesTable.vue:11
+#: front/src/views/content/libraries/FilesTable.vue:59
+msgctxt "Content/*/*/Noun"
+msgid "Import status"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:37
+#: front/src/components/mixins/Translations.vue:38
+msgctxt "Content/Library/Help text"
+msgid "Imported"
+msgstr ""
+
+#: front/src/components/federation/FetchButton.vue:47
+msgctxt "*/*/Error"
+msgid "Impossible to connect to the remote server"
+msgstr ""
+
+#: front/src/components/moderation/FilterModal.vue:26
+msgctxt "Popup/Moderation/List item"
+msgid "In \"Recently added\" widget"
+msgstr ""
+
+#: front/src/components/moderation/FilterModal.vue:27
+msgctxt "Popup/Moderation/List item"
+msgid "In artists and album listings"
+msgstr ""
+
+#: front/src/components/favorites/TrackFavoriteIcon.vue:3
+msgctxt "Content/Track/Button.Message"
+msgid "In favorites"
+msgstr ""
+
+#: front/src/components/moderation/FilterModal.vue:25
+msgctxt "Popup/Moderation/List item"
+msgid "In other users favorites and listening history"
+msgstr ""
+
+#: front/src/components/moderation/FilterModal.vue:28
+msgctxt "Popup/Moderation/List item"
+msgid "In radio suggestions"
+msgstr ""
+
+#: front/src/components/manage/users/UsersTable.vue:55
+msgctxt "Content/Admin/Table"
+msgid "Inactive"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:124
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Increase volume"
+msgstr ""
+
+#: front/src/components/playlists/Editor.vue:41
+msgctxt "Content/Playlist/Button.Label/Verb"
+msgid "Insert from queue (%{ count } track)"
+msgid_plural "Insert from queue (%{ count } tracks)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: front/src/components/mixins/Translations.vue:16
+#: front/src/components/mixins/Translations.vue:17
+msgctxt "Content/Settings/Dropdown/Short"
+msgid "Instance"
+msgstr ""
+
+#: front/src/views/admin/moderation/DomainsDetail.vue:99
+msgctxt "Content/Moderation/Title"
+msgid "Instance data"
+msgstr ""
+
+#: front/src/views/admin/Settings.vue:80
+msgctxt "Content/Admin/Menu"
+msgid "Instance information"
+msgstr ""
+
+#: front/src/components/library/Radios.vue:9
+msgctxt "Content/Radio/Title"
+msgid "Instance radios"
+msgstr ""
+
+#: front/src/views/admin/Settings.vue:75
+msgctxt "Head/Admin/Title"
+msgid "Instance settings"
+msgstr ""
+
+#: front/src/components/SetInstanceModal.vue:19
+msgctxt "Popup/Instance/Input.Label/Noun"
+msgid "Instance URL"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:92
+#: front/src/components/manage/moderation/ReportCard.vue:203
+msgctxt "Content/*/*/Noun"
+msgid "Internal notes"
+msgstr ""
+
+#: front/src/components/library/FileUpload.vue:268
+msgctxt "Content/Library/Help text"
+msgid "Invalid file type, ensure you are uploading an audio file. Supported file extensions are %{ extensions }"
+msgstr ""
+
+#: front/src/components/library/ImportStatusModal.vue:139
+#: front/src/components/mixins/Translations.vue:45
+#: front/src/components/mixins/Translations.vue:46
+msgctxt "Popup/Import/Error.Label"
+msgid "Invalid metadata"
+msgstr ""
+
+#: front/src/components/auth/SignupForm.vue:40
+#: front/src/components/manage/users/InvitationForm.vue:11
+msgctxt "Content/*/Input.Label"
+msgid "Invitation code"
+msgstr ""
+
+#: front/src/views/admin/users/Base.vue:8
+#: front/src/views/admin/users/InvitationsList.vue:24
+msgctxt "*/Admin/*/Noun"
+msgid "Invitations"
+msgstr ""
+
+#: front/src/components/manage/moderation/DomainsTable.vue:9
+#: front/src/views/admin/moderation/DomainsDetail.vue:106
+msgctxt "Content/Moderation/*/Adjective"
+msgid "Is present on allow-list"
+msgstr ""
+
+#: front/src/components/Footer.vue:49
+msgctxt "Footer/*/List item.Link"
+msgid "Issue tracker"
+msgstr ""
+
+#: front/src/components/SetInstanceModal.vue:5
+msgctxt "Popup/Instance/Error message.Title"
+msgid "It is not possible to connect to the given URL"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:65
+#: front/src/components/mixins/Translations.vue:66
+msgctxt "*/*/*/Noun"
+msgid "Items"
+msgstr ""
+
+#: front/src/components/Footer.vue:33 src/components/ShortcutsModal.vue:3
+msgctxt "*/*/*/Noun"
+msgid "Keyboard shortcuts"
+msgstr ""
+
+#: front/src/views/admin/moderation/DomainsDetail.vue:198
+msgctxt "Content/Moderation/Table.Label.Link"
+msgid "Known accounts"
+msgstr ""
+
+#: front/src/views/content/remote/Home.vue:14
+msgctxt "Content/Library/Title"
+msgid "Known libraries"
+msgstr ""
+
+#: front/src/components/manage/users/UsersTable.vue:41
+#: front/src/components/mixins/Translations.vue:70
+#: front/src/views/admin/moderation/AccountsDetail.vue:206
+#: front/src/components/mixins/Translations.vue:71
+msgctxt "Content/Profile/Table.Label/Short, Noun (Value is a date)"
+msgid "Last activity"
+msgstr ""
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:189
+#: front/src/views/admin/moderation/DomainsDetail.vue:115
+msgctxt "Content/*/Table.Label"
+msgid "Last checked"
+msgstr ""
+
+#: front/src/components/playlists/PlaylistModal.vue:46
+msgctxt "Popup/Playlist/Table.Label/Short"
+msgid "Last modification"
+msgstr ""
+
+#: front/src/components/manage/moderation/AccountsTable.vue:43
+msgctxt "Content/Moderation/Table.Label/Noun"
+msgid "Last seen"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:57
+#: front/src/components/mixins/Translations.vue:58
+msgctxt "Content/Moderation/Dropdown/Noun"
+msgid "Last seen date"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:73
+msgctxt "Content/Library/Card.List item/Noun"
+msgid "Last update:"
+msgstr ""
+
+#: front/src/components/common/ActionTable.vue:49
+msgctxt "Modal/*/Button.Label/Short, Verb"
+msgid "Launch"
+msgstr ""
+
+#: front/src/components/Home.vue:35
+msgctxt "Content/Home/Link"
+msgid "Learn more"
+msgstr ""
+
+#: front/src/components/manage/users/InvitationForm.vue:58
+msgctxt "Content/Admin/Input.Placeholder"
+msgid "Leave empty for a random code"
+msgstr ""
+
+#: front/src/components/audio/EmbedWizard.vue:17
+msgctxt "Popup/Embed/Paragraph"
+msgid "Leave empty for a responsive widget"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:64
+#: front/src/components/mixins/Translations.vue:65
+msgctxt "*/*/*/Noun"
+msgid "Length"
+msgstr ""
+
+#: front/src/views/admin/library/AlbumDetail.vue:248
+#: front/src/views/admin/library/ArtistDetail.vue:236
+#: front/src/views/admin/library/Base.vue:17
+#: front/src/views/admin/library/LibrariesList.vue:24
+#: front/src/views/admin/library/TrackDetail.vue:300
+#: front/src/views/admin/moderation/AccountsDetail.vue:339
+#: front/src/views/admin/moderation/DomainsDetail.vue:271
+#: front/src/views/content/Base.vue:5
+msgctxt "*/*/*/Noun"
+msgid "Libraries"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:84
+#: front/src/components/mixins/Translations.vue:85
+msgctxt "Content/OAuth Scopes/Label"
+msgid "Libraries and uploads"
+msgstr ""
+
+#: front/src/views/content/libraries/Form.vue:2
+msgctxt "Content/Library/Paragraph"
+msgid "Libraries help you organize and share your music collections. You can upload your own music collection to Funkwhale and share it with your friends and family."
+msgstr ""
+
+#: front/src/components/Sidebar.vue:85
+#: front/src/components/manage/library/UploadsTable.vue:60
+#: front/src/components/manage/users/UsersTable.vue:174
+#: front/src/components/mixins/Report.vue:77
+#: front/src/views/admin/library/UploadDetail.vue:144
+#: front/src/views/admin/moderation/AccountsDetail.vue:518 src/entities.js:132
+#: front/src/components/mixins/Report.vue:78
+msgctxt "*/*/*/Noun"
+msgid "Library"
+msgstr ""
+
+#: front/src/views/content/libraries/Form.vue:103
+msgctxt "Content/Library/Message"
+msgid "Library created"
+msgstr ""
+
+#: front/src/views/admin/library/LibraryDetail.vue:78
+msgctxt "Content/Moderation/Title"
+msgid "Library data"
+msgstr ""
+
+#: front/src/views/content/libraries/Form.vue:123
+msgctxt "Content/Library/Message"
+msgid "Library deleted"
+msgstr ""
+
+#: front/src/views/admin/library/EditsList.vue:4
+msgctxt "Content/Admin/Title/Noun"
+msgid "Library edits"
+msgstr ""
+
+#: front/src/views/content/libraries/Form.vue:100
+msgctxt "Content/Library/Message"
+msgid "Library updated"
+msgstr ""
+
+#: front/src/components/library/TrackDetail.vue:19
+#: front/src/components/manage/library/TracksTable.vue:43
+#: front/src/views/admin/library/TrackDetail.vue:165 src/edits.js:84
+#: front/src/entities.js:115
+msgctxt "Content/*/*/Noun"
+msgid "License"
+msgstr ""
+
+#: front/src/components/Footer.vue:90
+msgctxt "Footer/Settings/Dropdown.Label/Theme name"
+msgid "Light"
+msgstr ""
+
+#: front/src/views/admin/library/AlbumDetail.vue:188
+#: front/src/views/admin/library/ArtistDetail.vue:176
+#: front/src/views/admin/library/LibraryDetail.vue:179
+#: front/src/views/admin/library/TrackDetail.vue:240
+#: front/src/views/admin/moderation/AccountsDetail.vue:269
+msgctxt "Content/Moderation/Table.Label/Noun"
+msgid "Linked reports"
+msgstr ""
+
+#: front/src/components/Home.vue:135
+msgctxt "Content/Home/Link"
+msgid "Listen to public albums and playlists shared on this pod"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:92
+#: front/src/views/admin/library/AlbumDetail.vue:163
+#: front/src/views/admin/library/ArtistDetail.vue:151
+#: front/src/views/admin/library/TrackDetail.vue:215
+#: front/src/components/mixins/Translations.vue:93
+msgctxt "*/*/*/Noun"
+msgid "Listenings"
+msgstr ""
+
+#: front/src/components/audio/track/Table.vue:25
+#: front/src/components/library/ArtistDetail.vue:28
+msgctxt "Content/*/Button.Label"
+msgid "Load more…"
+msgstr ""
+
+#: front/src/views/content/libraries/Detail.vue:21
+msgctxt "Content/Library/Paragraph"
+msgid "Loading followers…"
+msgstr ""
+
+#: front/src/views/content/libraries/Home.vue:3
+msgctxt "Content/Library/Paragraph"
+msgid "Loading Libraries…"
+msgstr ""
+
+#: front/src/views/content/libraries/Detail.vue:3
+#: front/src/views/content/libraries/Upload.vue:3
+msgctxt "Content/Library/Paragraph"
+msgid "Loading library data…"
+msgstr ""
+
+#: front/src/views/Notifications.vue:84
+msgctxt "Content/Notifications/Paragraph"
+msgid "Loading notifications…"
+msgstr ""
+
+#: front/src/views/content/remote/Home.vue:3
+msgctxt "Content/Library/Paragraph"
+msgid "Loading remote libraries…"
+msgstr ""
+
+#: front/src/views/content/libraries/Quota.vue:4
+msgctxt "Content/Library/Paragraph"
+msgid "Loading usage data…"
+msgstr ""
+
+#: front/src/components/favorites/List.vue:5
+msgctxt "Content/Favorites/Message"
+msgid "Loading your favorites…"
+msgstr ""
+
+#: front/src/components/manage/library/AlbumsTable.vue:65
+#: front/src/components/manage/library/ArtistsTable.vue:58
+#: front/src/components/manage/library/LibrariesTable.vue:75
+#: front/src/components/manage/library/TracksTable.vue:71
+#: front/src/components/manage/library/UploadsTable.vue:99
+#: front/src/components/manage/moderation/ReportCard.vue:173
+#: front/src/views/admin/library/AlbumDetail.vue:19
+#: front/src/views/admin/library/ArtistDetail.vue:18
+#: front/src/views/admin/library/LibraryDetail.vue:18
+#: front/src/views/admin/library/TrackDetail.vue:18
+#: front/src/views/admin/library/UploadDetail.vue:19
+msgctxt "Content/Moderation/*/Short, Noun"
+msgid "Local"
+msgstr ""
+
+#: front/src/components/manage/moderation/AccountsTable.vue:59
+#: front/src/views/admin/moderation/AccountsDetail.vue:18
+msgctxt "Content/Moderation/*/Short, Noun"
+msgid "Local account"
+msgstr ""
+
+#: front/src/components/Home.vue:96 src/views/auth/Login.vue:29
+msgctxt "Head/Login/Title"
+msgid "Log In"
+msgstr ""
+
+#: front/src/views/auth/Login.vue:4
+msgctxt "Content/Login/Title/Verb"
+msgid "Log in to your Funkwhale account"
+msgstr ""
+
+#: front/src/components/auth/Logout.vue:20
+msgctxt "Head/Login/Title"
+msgid "Log Out"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:38
+msgctxt "Sidebar/Profile/List item.Link"
+msgid "Logged in as %{ username }"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:54 src/components/auth/LoginForm.vue:41
+msgctxt "*/Login/*/Verb"
+msgid "Login"
+msgstr ""
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:148
+msgctxt "Content/*/*/Noun"
+msgid "Login status"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:52
+msgctxt "Sidebar/Login/List item.Link/Verb"
+msgid "Logout"
+msgstr ""
+
+#: front/src/views/content/libraries/Home.vue:9
+msgctxt "Content/Library/Paragraph"
+msgid "Looks like you don't have a library, it's time to create one."
+msgstr ""
+
+#: front/src/components/audio/Player.vue:658
+#: src/components/audio/Player.vue:659
+msgctxt "Sidebar/Player/Icon.Tooltip"
+msgid "Looping disabled. Click to switch to single-track looping."
+msgstr ""
+
+#: front/src/components/audio/Player.vue:661
+#: src/components/audio/Player.vue:662
+msgctxt "Sidebar/Player/Icon.Tooltip"
+msgid "Looping on a single track. Click to switch to whole queue looping."
+msgstr ""
+
+#: front/src/components/audio/Player.vue:664
+#: src/components/audio/Player.vue:665
+msgctxt "Sidebar/Player/Icon.Tooltip"
+msgid "Looping on whole queue. Click to disable looping."
+msgstr ""
+
+#: front/src/components/Sidebar.vue:230
+msgctxt "Sidebar/*/Hidden text"
+msgid "Main menu"
+msgstr ""
+
+#: front/src/views/admin/library/Base.vue:34
+msgctxt "Head/Admin/Title"
+msgid "Manage library"
+msgstr ""
+
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:8
+msgctxt "Popup/Moderation/Title/Verb"
+msgid "Manage moderation rules for %{ obj }"
+msgstr ""
+
+#: front/src/components/playlists/PlaylistModal.vue:3
+msgctxt "Popup/Playlist/Title/Verb"
+msgid "Manage playlists"
+msgstr ""
+
+#: front/src/views/admin/users/Base.vue:20
+msgctxt "Head/Admin/Title"
+msgid "Manage users"
+msgstr ""
+
+#: front/src/views/playlists/List.vue:8
+msgctxt "Content/Playlist/Button.Label/Verb"
+msgid "Manage your playlists"
+msgstr ""
+
+#: front/src/views/Notifications.vue:79
+msgctxt "Content/Notifications/Button.Label/Verb"
+msgid "Mark all as read"
+msgstr ""
+
+#: front/src/components/notifications/NotificationRow.vue:46
+msgctxt "Content/Notifications/Button.Tooltip/Verb"
+msgid "Mark as read"
+msgstr ""
+
+#: front/src/components/notifications/NotificationRow.vue:47
+msgctxt "Content/Notifications/Button.Tooltip/Verb"
+msgid "Mark as unread"
+msgstr ""
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:321
+msgctxt "Content/*/*/Unit"
+msgid "MB"
+msgstr ""
+
+#: front/src/components/audio/Player.vue:651
+msgctxt "Sidebar/Player/Hidden text"
+msgid "Media player"
+msgstr ""
+
+#: front/src/components/auth/Profile.vue:12
+msgctxt "Content/Profile/Paragraph"
+msgid "Member since %{ date }"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:109
+#: front/src/components/moderation/ReportModal.vue:41
+msgctxt "*/*/Field.Label/Noun"
+msgid "Message"
+msgstr ""
+
+#: front/src/components/Footer.vue:32
+msgctxt "Footer/*/List item.Link"
+msgid "Mobile and desktop apps"
+msgstr ""
+
+#: front/src/components/Home.vue:143
+msgctxt "Content/Home/Link"
+msgid "Mobile apps"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:96
+#: src/components/manage/users/UsersTable.vue:178
+#: front/src/views/admin/Settings.vue:85
+#: front/src/views/admin/moderation/AccountsDetail.vue:522
+#: front/src/views/admin/moderation/Base.vue:43
+msgctxt "*/Moderation/*"
+msgid "Moderation"
+msgstr ""
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:78
+#: front/src/views/admin/moderation/DomainsDetail.vue:70
+msgctxt "Content/Moderation/Card.Paragraph"
+msgid "Moderation policies help you control how your instance interact with a given domain or account."
+msgstr ""
+
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:4
+msgctxt "Content/Moderation/Button.Label"
+msgid "Moderation rules…"
+msgstr ""
+
+#: front/src/components/library/EditCard.vue:5
+msgctxt "Content/Library/Card/Short"
+msgid "Modification %{ id }"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:58
+#: front/src/components/mixins/Translations.vue:59
+msgctxt "Content/Playlist/Dropdown/Noun"
+msgid "Modification date"
+msgstr ""
+
+#: front/src/components/audio/PlayButton.vue:100
+#: front/src/components/library/AlbumBase.vue:43
+#: front/src/components/library/ArtistBase.vue:54
+#: front/src/components/library/TrackBase.vue:59
+msgctxt "*/*/Button.Label/Noun"
+msgid "More…"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:63 src/views/admin/Settings.vue:82
+msgctxt "*/*/*/Noun"
+msgid "Music"
+msgstr ""
+
+#: front/src/components/audio/Player.vue:657
+msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
+msgid "Mute"
+msgstr ""
+
+#: front/src/components/manage/moderation/InstancePolicyCard.vue:24
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:115
+msgctxt "Content/Moderation/*/Verb"
+msgid "Mute activity"
+msgstr ""
+
+#: front/src/components/manage/moderation/InstancePolicyCard.vue:28
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:119
+msgctxt "Content/Moderation/*/Verb"
+msgid "Mute notifications"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:34
+msgctxt "Sidebar/Profile/Title"
+msgid "My account"
+msgstr ""
+
+#: front/src/components/library/radios/Builder.vue:238
+msgctxt "Content/Radio/Input.Placeholder"
+msgid "My awesome description"
+msgstr ""
+
+#: front/src/views/content/libraries/Form.vue:72
+msgctxt "Content/Library/Input.Placeholder"
+msgid "My awesome library"
+msgstr ""
+
+#: front/src/components/playlists/Form.vue:76
+msgctxt "Content/Playlist/Input.Placeholder"
+msgid "My awesome playlist"
+msgstr ""
+
+#: front/src/components/library/radios/Builder.vue:237
+msgctxt "Content/Radio/Input.Placeholder"
+msgid "My awesome radio"
+msgstr ""
+
+#: front/src/views/content/libraries/Home.vue:6
+msgctxt "Content/Library/Title"
+msgid "My libraries"
+msgstr ""
+
+#: front/src/components/About.vue:105 src/components/audio/track/Row.vue:40
+#: front/src/components/library/EditCard.vue:60
+#: front/src/components/library/EditForm.vue:70
+#: front/src/components/library/TrackDetail.vue:34
+#: front/src/components/library/TrackDetail.vue:43
+#: front/src/components/library/TrackDetail.vue:52
+#: front/src/components/library/TrackDetail.vue:61
+#: front/src/components/manage/library/AlbumsTable.vue:73
+#: front/src/components/manage/library/TracksTable.vue:76
+#: front/src/components/manage/library/UploadsTable.vue:121
+#: front/src/components/manage/library/UploadsTable.vue:128
+#: front/src/components/manage/moderation/ReportCard.vue:78
+#: front/src/components/manage/moderation/ReportCard.vue:87
+#: front/src/components/manage/moderation/ReportCard.vue:193
+#: front/src/components/manage/users/UsersTable.vue:62
+#: front/src/views/admin/library/UploadDetail.vue:179
+#: front/src/views/admin/library/UploadDetail.vue:214
+#: front/src/views/admin/library/UploadDetail.vue:233
+#: front/src/views/admin/library/UploadDetail.vue:244
+#: front/src/views/admin/library/UploadDetail.vue:257
+#: front/src/views/admin/moderation/AccountsDetail.vue:193
+#: front/src/views/admin/moderation/DomainsDetail.vue:119
+#: front/src/views/content/libraries/FilesTable.vue:95
+#: front/src/views/content/libraries/FilesTable.vue:101
+msgctxt "*/*/*"
+msgid "N/A"
+msgstr ""
+
+#: front/src/components/auth/ApplicationForm.vue:9
+#: front/src/components/auth/Settings.vue:133
+#: front/src/components/manage/library/ArtistsTable.vue:39
+#: front/src/components/manage/library/LibrariesTable.vue:48
+#: front/src/components/manage/library/TagsTable.vue:41
+#: front/src/components/manage/library/UploadsTable.vue:59
+#: front/src/components/manage/moderation/AccountsTable.vue:39
+#: front/src/components/manage/moderation/DomainsTable.vue:46
+#: front/src/components/mixins/Translations.vue:63
+#: front/src/components/playlists/PlaylistModal.vue:45
+#: front/src/views/admin/library/ArtistDetail.vue:103
+#: front/src/views/admin/library/LibraryDetail.vue:85
+#: front/src/views/admin/library/TagDetail.vue:68
+#: front/src/views/admin/library/UploadDetail.vue:92
+#: front/src/views/admin/moderation/DomainsDetail.vue:134
+#: front/src/views/content/libraries/Form.vue:10 src/edits.js:17
+#: front/src/components/mixins/Translations.vue:64
+msgctxt "*/*/*/Noun"
+msgid "Name"
+msgstr ""
+
+#: front/src/views/Notifications.vue:24 src/views/Notifications.vue:58
+msgctxt "*/*/*"
+msgid "Never"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:88
+#: front/src/views/auth/PasswordResetConfirm.vue:14
+msgctxt "Content/Settings/Input.Label"
+msgid "New password"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:177
+msgctxt "Sidebar/Player/Paragraph"
+msgid "New tracks will be appended here automatically."
+msgstr ""
+
+#: front/src/components/library/EditCard.vue:47
+msgctxt "Content/Library/Card.Table.Header/Short"
+msgid "New value"
+msgstr ""
+
+#: front/src/components/audio/Player.vue:655
+msgctxt "Sidebar/Player/Icon.Tooltip"
+msgid "Next track"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:134
+#: front/src/components/manage/moderation/DomainsTable.vue:13
+#: front/src/views/admin/moderation/DomainsDetail.vue:110
+msgctxt "*/*/*"
+msgid "No"
+msgstr ""
+
+#: front/src/components/audio/Search.vue:25
+msgctxt "Content/Search/Paragraph"
+msgid "No album matched your query"
+msgstr ""
+
+#: front/src/components/audio/Search.vue:16
+msgctxt "Content/Search/Paragraph"
+msgid "No artist matched your query"
+msgstr ""
+
+#: front/src/components/library/TrackDetail.vue:14
+msgctxt "Content/Track/Table.Paragraph"
+msgid "No copyright information available for this track"
+msgstr ""
+
+#: front/src/components/About.vue:25 src/components/Home.vue:25
+msgctxt "Content/Home/Paragraph"
+msgid "No description available."
+msgstr ""
+
+#: front/src/components/library/TrackDetail.vue:25
+msgctxt "Content/Track/Table.Paragraph"
+msgid "No licensing information for this track"
+msgstr ""
+
+#: front/src/components/federation/LibraryWidget.vue:6
+msgctxt "Content/Federation/Paragraph"
+msgid "No matching library."
+msgstr ""
+
+#: front/src/views/Notifications.vue:93
+msgctxt "Content/Notifications/Paragraph"
+msgid "No notification to show."
+msgstr ""
+
+#: front/src/components/common/EmptyState.vue:7
+msgctxt "Content/*/Paragraph"
+msgid "No results were found."
+msgstr ""
+
+#: front/src/components/About.vue:32
+msgctxt "Content/Home/Paragraph"
+msgid "No rules available."
+msgstr ""
+
+#: front/src/components/About.vue:39
+msgctxt "Content/Home/Paragraph"
+msgid "No terms available."
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:10
+#: front/src/components/mixins/Translations.vue:11
+msgctxt "Content/Settings/Dropdown"
+msgid "Nobody except me"
+msgstr ""
+
+#: front/src/views/content/libraries/Detail.vue:57
+msgctxt "Content/Library/Paragraph"
+msgid "Nobody is following this library"
+msgstr ""
+
+#: front/src/components/manage/users/InvitationsTable.vue:51
+msgctxt "Content/Admin/Table"
+msgid "Not used"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:46
+#: src/components/mixins/Translations.vue:112
+#: front/src/views/Notifications.vue:151
+#: src/components/mixins/Translations.vue:113
+msgctxt "*/Notifications/*"
+msgid "Notifications"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:47
+#: front/src/components/mixins/Translations.vue:48
+msgctxt "Content/Moderation/Dropdown"
+msgid "Offensive content"
+msgstr ""
+
+#: front/src/components/Footer.vue:55
+msgctxt "Footer/*/List item.Link"
+msgid "Official website"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:83
+msgctxt "Content/Settings/Input.Label"
+msgid "Old password"
+msgstr ""
+
+#: front/src/components/library/EditCard.vue:46
+msgctxt "Content/Library/Card.Table.Header/Short"
+msgid "Old value"
+msgstr ""
+
+#: front/src/components/About.vue:90
+msgctxt "*/*/*/State of registrations"
+msgid "Open"
+msgstr ""
+
+#: front/src/components/manage/users/InvitationsTable.vue:20
+msgctxt "Content/Admin/Dropdown/Adjective"
+msgid "Open"
+msgstr ""
+
+#: front/src/components/library/ImportStatusModal.vue:56
+msgctxt "Popup/Import/Table.Label/Value"
+msgid "Open a support thread (include the debug information below in your message)"
+msgstr ""
+
+#: front/src/components/library/AlbumBase.vue:87
+#: front/src/components/library/ArtistBase.vue:99
+#: front/src/components/library/TagDetail.vue:11
+#: front/src/components/library/TrackBase.vue:103
+#: front/src/components/manage/moderation/ReportCard.vue:128
+msgctxt "Content/Moderation/Link"
+msgid "Open in moderation interface"
+msgstr ""
+
+#: front/src/views/admin/library/AlbumDetail.vue:37
+#: front/src/views/admin/library/ArtistDetail.vue:35
+#: front/src/views/admin/library/TagDetail.vue:21
+#: front/src/views/admin/library/TrackDetail.vue:36
+msgctxt "Content/Moderation/Link/Verb"
+msgid "Open local profile"
+msgstr ""
+
+#: front/src/views/admin/library/AlbumDetail.vue:52
+#: front/src/views/admin/library/ArtistDetail.vue:50
+#: front/src/views/admin/library/TrackDetail.vue:51
+msgctxt "Content/Moderation/Link/Verb"
+msgid "Open on MusicBrainz"
+msgstr ""
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:23
+msgctxt "Content/Moderation/Link/Verb"
+msgid "Open profile"
+msgstr ""
+
+#: front/src/views/admin/library/AlbumDetail.vue:60
+#: front/src/views/admin/library/ArtistDetail.vue:58
+#: front/src/views/admin/library/LibraryDetail.vue:49
+#: front/src/views/admin/library/TrackDetail.vue:59
+#: front/src/views/admin/library/UploadDetail.vue:50
+#: front/src/views/admin/moderation/AccountsDetail.vue:52
+msgctxt "Content/Moderation/Link/Verb"
+msgid "Open remote profile"
+msgstr ""
+
+#: front/src/views/admin/moderation/DomainsDetail.vue:16
+msgctxt "Content/Moderation/Link/Verb"
+msgid "Open website"
+msgstr ""
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:40
+msgctxt "Content/Moderation/Card.Title"
+msgid "Or customize your rule"
+msgstr ""
+
+#: front/src/components/favorites/List.vue:32
+#: src/components/library/Radios.vue:41
+#: front/src/components/manage/library/EditsCardList.vue:37
+#: front/src/components/manage/users/UsersTable.vue:17
+#: front/src/views/admin/moderation/ReportsList.vue:42
+#: front/src/views/playlists/List.vue:25
+msgctxt "Content/Search/Dropdown.Label/Noun"
+msgid "Order"
+msgstr ""
+
+#: front/src/components/favorites/List.vue:24
+#: src/components/library/Albums.vue:15
+#: front/src/components/library/Artists.vue:19
+#: src/components/library/Radios.vue:33
+#: front/src/components/manage/library/AlbumsTable.vue:11
+#: front/src/components/manage/library/ArtistsTable.vue:11
+#: front/src/components/manage/library/EditsCardList.vue:29
+#: front/src/components/manage/library/LibrariesTable.vue:20
+#: front/src/components/manage/library/TagsTable.vue:11
+#: front/src/components/manage/library/TracksTable.vue:11
+#: front/src/components/manage/library/UploadsTable.vue:30
+#: front/src/components/manage/moderation/AccountsTable.vue:11
+#: front/src/components/manage/moderation/DomainsTable.vue:17
+#: front/src/components/manage/users/InvitationsTable.vue:9
+#: front/src/components/manage/users/UsersTable.vue:9
+#: front/src/views/admin/moderation/ReportsList.vue:34
+#: front/src/views/content/libraries/FilesTable.vue:21
+#: front/src/views/playlists/List.vue:17
+msgctxt "Content/Search/Dropdown.Label/Noun"
+msgid "Ordering"
+msgstr ""
+
+#: front/src/components/library/Albums.vue:27
+#: src/components/library/Artists.vue:27
+#: front/src/components/manage/library/AlbumsTable.vue:19
+#: front/src/components/manage/library/ArtistsTable.vue:19
+#: front/src/components/manage/library/LibrariesTable.vue:28
+#: front/src/components/manage/library/TagsTable.vue:19
+#: front/src/components/manage/library/TracksTable.vue:19
+#: front/src/components/manage/library/UploadsTable.vue:38
+#: front/src/components/manage/moderation/AccountsTable.vue:19
+#: front/src/components/manage/moderation/DomainsTable.vue:25
+#: front/src/views/content/libraries/FilesTable.vue:29
+msgctxt "Content/Search/Dropdown.Label/Noun"
+msgid "Ordering direction"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:48
+#: front/src/components/mixins/Translations.vue:49
+msgctxt "Content/Moderation/Dropdown"
+msgid "Other"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:143
+#: front/src/components/manage/users/InvitationsTable.vue:38
+msgctxt "*/*/*"
+msgid "Owner"
+msgstr ""
+
+#: front/src/components/PageNotFound.vue:33
+msgctxt "Head/*/Title"
+msgid "Page Not Found"
+msgstr ""
+
+#: front/src/components/PageNotFound.vue:7
+msgctxt "Content/*/Title"
+msgid "Page not found!"
+msgstr ""
+
+#: front/src/components/Pagination.vue:39
+msgctxt "Content/*/Hidden text/Noun"
+msgid "Pagination"
+msgstr ""
+
+#: front/src/components/auth/LoginForm.vue:32
+#: src/components/auth/Settings.vue:291
+#: front/src/components/auth/SignupForm.vue:36
+msgctxt "*/*/*"
+msgid "Password"
+msgstr ""
+
+#: front/src/components/auth/SubsonicTokenForm.vue:100
+msgctxt "Content/Settings/Message"
+msgid "Password updated"
+msgstr ""
+
+#: front/src/views/auth/PasswordResetConfirm.vue:28
+msgctxt "Content/Signup/Card.Title"
+msgid "Password updated successfully"
+msgstr ""
+
+#: front/src/components/audio/Player.vue:654
+msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
+msgid "Pause track"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:96
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Pause/play the current track"
+msgstr ""
+
+#: front/src/components/manage/moderation/InstancePolicyCard.vue:12
+msgctxt "Content/Moderation/Card.List item"
+msgid "Paused"
+msgstr ""
+
+#: front/src/components/library/FileUpload.vue:116
+#: front/src/components/manage/library/UploadsTable.vue:23
+#: front/src/components/mixins/Translations.vue:28
+#: front/src/views/content/libraries/FilesTable.vue:14
+#: front/src/components/mixins/Translations.vue:29
+msgctxt "Content/Library/*/Short"
+msgid "Pending"
+msgstr ""
+
+#: front/src/views/content/libraries/Detail.vue:37
+msgctxt "Content/Library/Table/Short"
+msgid "Pending approval"
+msgstr ""
+
+#: front/src/views/content/libraries/Quota.vue:22
+msgctxt "Content/Library/Label"
+msgid "Pending files"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:232
+msgctxt "Sidebar/Notifications/Hidden text"
+msgid "Pending follow requests"
+msgstr ""
+
+#: front/src/components/library/EditCard.vue:29
+#: front/src/components/manage/library/EditsCardList.vue:18
+msgctxt "Content/Admin/*/Noun"
+msgid "Pending review"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:233
+msgctxt "Sidebar/Moderation/Hidden text"
+msgid "Pending review edits"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:176
+#: front/src/components/manage/users/UsersTable.vue:42
+#: front/src/views/admin/moderation/AccountsDetail.vue:166
+msgctxt "Content/*/*/Noun"
+msgid "Permissions"
+msgstr ""
+
+#: front/src/components/audio/PlayButton.vue:9
+#: front/src/components/library/TrackBase.vue:24
+msgctxt "*/Queue/Button.Label/Short, Verb"
+msgid "Play"
+msgstr ""
+
+#: front/src/components/audio/album/Card.vue:48
+#: front/src/components/library/AlbumBase.vue:21
+#: front/src/components/library/AlbumDetail.vue:11
+#: src/views/playlists/Detail.vue:24
+msgctxt "Content/Queue/Button.Label/Short, Verb"
+msgid "Play all"
+msgstr ""
+
+#: front/src/components/library/ArtistBase.vue:32
+msgctxt "Content/Artist/Button.Label/Verb"
+msgid "Play all albums"
+msgstr ""
+
+#: front/src/components/audio/PlayButton.vue:92
+msgctxt "*/Queue/Dropdown/Button/Title"
+msgid "Play next"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:120
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Play next track"
+msgstr ""
+
+#: front/src/components/audio/PlayButton.vue:90
+msgctxt "*/Queue/Dropdown/Button/Title"
+msgid "Play now"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:116
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Play previous track"
+msgstr ""
+
+#: front/src/components/audio/PlayButton.vue:93
+msgctxt "*/Queue/Dropdown/Button/Title"
+msgid "Play similar songs"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:231
+msgctxt "Sidebar/Player/Hidden text"
+msgid "Play this track"
+msgstr ""
+
+#: front/src/components/audio/Player.vue:653
+msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
+msgid "Play track"
+msgstr ""
+
+#: front/src/components/mixins/Report.vue:66 src/views/playlists/Detail.vue:121
+#: front/src/components/mixins/Report.vue:67
+msgctxt "*/*/*"
+msgid "Playlist"
+msgstr ""
+
+#: front/src/views/playlists/Detail.vue:12
+msgctxt "Content/Playlist/Header.Subtitle"
+msgid "Playlist containing %{ count } track, by %{ username }"
+msgid_plural "Playlist containing %{ count } tracks, by %{ username }"
+msgstr[0] ""
+msgstr[1] ""
+
+#: front/src/components/playlists/Form.vue:9
+msgctxt "Content/Playlist/Message"
+msgid "Playlist created"
+msgstr ""
+
+#: front/src/components/playlists/Editor.vue:4
+msgctxt "Content/Playlist/Title"
+msgid "Playlist editor"
+msgstr ""
+
+#: front/src/components/playlists/Form.vue:21
+msgctxt "Content/Playlist/Input.Label"
+msgid "Playlist name"
+msgstr ""
+
+#: front/src/components/playlists/Form.vue:6
+msgctxt "Content/Playlist/Message"
+msgid "Playlist updated"
+msgstr ""
+
+#: front/src/components/playlists/Form.vue:25
+msgctxt "Content/Playlist/Dropdown.Label"
+msgid "Playlist visibility"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:71 src/components/library/Home.vue:16
+#: front/src/components/library/Library.vue:16
+#: front/src/components/mixins/Translations.vue:100
+#: src/views/admin/Settings.vue:83
+#: front/src/views/admin/library/AlbumDetail.vue:179
+#: front/src/views/admin/library/ArtistDetail.vue:167
+#: front/src/views/admin/library/TrackDetail.vue:231
+#: src/views/playlists/List.vue:106
+#: front/src/components/mixins/Translations.vue:101
+msgctxt "*/*/*"
+msgid "Playlists"
+msgstr ""
+
+#: front/src/components/audio/EmbedWizard.vue:9
+msgctxt "Content/Embed/Message"
+msgid "Please contact your admins and ask them to update the corresponding setting."
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:79
+msgctxt "Content/Settings/Error message.List item/Call to action"
+msgid "Please double-check your password is correct"
+msgstr ""
+
+#: front/src/components/auth/LoginForm.vue:5
+msgctxt "Content/Login/Error message.List item/Call to action"
+msgid "Please double-check your username/password couple is correct"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:46
+msgctxt "Content/Settings/Paragraph"
+msgid "PNG, GIF or JPG. At most 2MB. Will be downscaled to 400x400px."
+msgstr ""
+
+#: front/src/components/About.vue:72
+msgctxt "Content/About/Header/Name"
+msgid "Pod configuration"
+msgstr ""
+
+#: front/src/views/admin/library/TrackDetail.vue:143 src/edits.js:70
+msgctxt "*/*/*/Short, Noun"
+msgid "Position"
+msgstr ""
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:118
+msgctxt "Content/Moderation/Help text"
+msgid "Prevent account or domain from triggering notifications, except from followers."
+msgstr ""
+
+#: front/src/components/audio/EmbedWizard.vue:43
+msgctxt "Popup/Embed/Title/Noun"
+msgid "Preview"
+msgstr ""
+
+#: front/src/components/audio/Player.vue:652
+msgctxt "Sidebar/Player/Icon.Tooltip"
+msgid "Previous track"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:15
+#: front/src/components/mixins/Translations.vue:16
+msgctxt "Content/Settings/Dropdown/Short"
+msgid "Private"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:56
+msgctxt "Content/Library/Card.List item"
+msgid "Problem during scanning"
+msgstr ""
+
+#: front/src/components/library/FileUpload.vue:57
+msgctxt "Content/Library/Button.Label"
+msgid "Proceed"
+msgstr ""
+
+#: front/src/views/auth/EmailConfirm.vue:26
+#: front/src/views/auth/PasswordResetConfirm.vue:31
+msgctxt "Content/Signup/Link/Verb"
+msgid "Proceed to login"
+msgstr ""
+
+#: front/src/components/library/FileUpload.vue:17
+msgctxt "Content/Library/Tab.Title/Short"
+msgid "Processing"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:80
+#: front/src/components/mixins/Translations.vue:81
+msgctxt "Content/OAuth Scopes/Label"
+msgid "Profile"
+msgstr ""
+
+#: front/src/components/auth/SignupForm.vue:5
+msgctxt "Content/Signup/Form/Paragraph"
+msgid "Public registrations are not possible on this instance. You will need an invitation code to sign up."
+msgstr ""
+
+#: front/src/components/manage/moderation/AccountsTable.vue:188
+#: front/src/components/manage/moderation/DomainsTable.vue:186
+#: front/src/views/content/libraries/Quota.vue:36
+#: front/src/views/content/libraries/Quota.vue:39
+#: front/src/views/content/libraries/Quota.vue:62
+#: front/src/views/content/libraries/Quota.vue:65
+#: front/src/views/content/libraries/Quota.vue:88
+#: front/src/views/content/libraries/Quota.vue:91
+msgctxt "*/*/*/Verb"
+msgid "Purge"
+msgstr ""
+
+#: front/src/views/content/libraries/Quota.vue:89
+msgctxt "Popup/Library/Title"
+msgid "Purge errored files?"
+msgstr ""
+
+#: front/src/views/content/libraries/Quota.vue:37
+msgctxt "Popup/Library/Title"
+msgid "Purge pending files?"
+msgstr ""
+
+#: front/src/views/content/libraries/Quota.vue:63
+msgctxt "Popup/Library/Title"
+msgid "Purge skipped files?"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:20
+msgctxt "Sidebar/Queue/Tab.Title/Noun"
+msgid "Queue"
+msgstr ""
+
+#: front/src/components/audio/Player.vue:329
+msgctxt "Content/Queue/Message"
+msgid "Queue shuffled!"
+msgstr ""
+
+#: front/src/views/radios/Detail.vue:80
+msgctxt "Head/Radio/Title"
+msgid "Radio"
+msgstr ""
+
+#: front/src/components/library/radios/Builder.vue:235
+msgctxt "Head/Radio/Title"
+msgid "Radio Builder"
+msgstr ""
+
+#: front/src/components/library/radios/Builder.vue:15
+msgctxt "Content/Radio/Message"
+msgid "Radio created"
+msgstr ""
+
+#: front/src/components/library/radios/Builder.vue:21
+msgctxt "Content/Radio/Input.Label/Noun"
+msgid "Radio name"
+msgstr ""
+
+#: front/src/components/library/radios/Builder.vue:12
+msgctxt "Content/Radio/Message"
+msgid "Radio updated"
+msgstr ""
+
+#: front/src/components/library/Library.vue:13
+#: src/components/library/Radios.vue:142
+#: front/src/components/mixins/Translations.vue:104
+#: front/src/components/mixins/Translations.vue:105
+msgctxt "*/*/*"
+msgid "Radios"
+msgstr ""
+
+#: front/src/components/auth/ApplicationForm.vue:151
+msgctxt "Content/OAuth Scopes/Label/Verb"
+msgid "Read"
+msgstr ""
+
+#: front/src/components/library/ImportStatusModal.vue:51
+msgctxt "Popup/Import/Table.Label/Value"
+msgid "Read our documentation for this error"
+msgstr ""
+
+#: front/src/components/auth/Authorize.vue:24
+msgctxt "Content/Auth/Label/Noun"
+msgid "Read-only"
+msgstr ""
+
+#: front/src/components/auth/ApplicationForm.vue:152
+msgctxt "Content/OAuth Scopes/Help Text"
+msgid "Read-only access to user data"
+msgstr ""
+
+#: front/src/components/manage/moderation/InstancePolicyCard.vue:39
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:25
+msgctxt "Content/Moderation/*/Noun"
+msgid "Reason"
+msgstr ""
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:252
+#: front/src/views/admin/moderation/DomainsDetail.vue:216
+msgctxt "Content/Moderation/Table.Label/Noun"
+msgid "Received library follows"
+msgstr ""
+
+#: front/src/components/manage/moderation/DomainsTable.vue:48
+#: front/src/components/mixins/Translations.vue:74
+#: front/src/components/mixins/Translations.vue:75
+msgctxt "Content/Moderation/*/Noun"
+msgid "Received messages"
+msgstr ""
+
+#: front/src/components/library/EditForm.vue:27
+msgctxt "Content/Library/Paragraph"
+msgid "Recent edits"
+msgstr ""
+
+#: front/src/components/library/EditForm.vue:17
+msgctxt "Content/Library/Paragraph"
+msgid "Recent edits awaiting review"
+msgstr ""
+
+#: front/src/components/library/Home.vue:24
+msgctxt "Content/Home/Title"
+msgid "Recently added"
+msgstr ""
+
+#: front/src/components/Home.vue:167
+msgctxt "Content/Home/Title"
+msgid "Recently added albums"
+msgstr ""
+
+#: front/src/components/library/Home.vue:11
+msgctxt "Content/Home/Title"
+msgid "Recently favorited"
+msgstr ""
+
+#: front/src/components/library/Home.vue:6
+msgctxt "Content/Home/Title"
+msgid "Recently listened"
+msgstr ""
+
+#: front/src/components/auth/ApplicationForm.vue:13
+msgctxt "Content/Applications/Input.Label/Noun"
+msgid "Redirect URI"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:125
+#: src/components/auth/Settings.vue:170
+#: front/src/components/common/EmptyState.vue:16
+#: src/views/content/remote/Home.vue:15
+msgctxt "Content/*/Button.Label/Short, Verb"
+msgid "Refresh"
+msgstr ""
+
+#: front/src/components/federation/FetchButton.vue:20
+msgctxt "Popup/*/Message.Title"
+msgid "Refresh error"
+msgstr ""
+
+#: front/src/views/admin/library/AlbumDetail.vue:56
+#: front/src/views/admin/library/ArtistDetail.vue:54
+#: front/src/views/admin/library/TrackDetail.vue:55
+msgctxt "Content/Moderation/Button/Verb"
+msgid "Refresh from remote server"
+msgstr ""
+
+#: front/src/views/admin/moderation/DomainsDetail.vue:164
+msgctxt "Content/Moderation/Button.Label/Verb"
+msgid "Refresh node info"
+msgstr ""
+
+#: front/src/components/federation/FetchButton.vue:79
+msgctxt "Popup/*/Message.Title"
+msgid "Refresh pending"
+msgstr ""
+
+#: front/src/components/federation/FetchButton.vue:80
+msgctxt "Popup/*/Message.Content"
+msgid "Refresh request wasn't proceed in time by our server. It will be processed later."
+msgstr ""
+
+#: front/src/components/federation/FetchButton.vue:16
+msgctxt "Popup/*/Message.Title"
+msgid "Refresh successful"
+msgstr ""
+
+#: front/src/components/common/ActionTable.vue:275
+msgctxt "Content/*/Button.Tooltip/Verb"
+msgid "Refresh table content"
+msgstr ""
+
+#: front/src/components/federation/FetchButton.vue:12
+msgctxt "Popup/*/Message.Title"
+msgid "Refresh was skipped"
+msgstr ""
+
+#: front/src/components/federation/FetchButton.vue:7
+msgctxt "Popup/*/Title"
+msgid "Refreshing object from remote…"
+msgstr ""
+
+#: front/src/components/About.vue:86
+msgctxt "*/*/*"
+msgid "Registrations"
+msgstr ""
+
+#: front/src/components/manage/users/UsersTable.vue:72
+msgctxt "Content/Admin/Table, User role"
+msgid "Regular user"
+msgstr ""
+
+#: front/src/components/library/EditCard.vue:87
+#: front/src/views/content/libraries/Detail.vue:51
+msgctxt "Content/Library/Button.Label"
+msgid "Reject"
+msgstr ""
+
+#: front/src/components/manage/moderation/InstancePolicyCard.vue:32
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:123
+msgctxt "Content/Moderation/*/Verb"
+msgid "Reject media"
+msgstr ""
+
+#: front/src/components/library/EditCard.vue:33
+#: front/src/components/manage/library/EditsCardList.vue:24
+#: front/src/views/content/libraries/Detail.vue:43
+msgctxt "Content/Library/*/Short"
+msgid "Rejected"
+msgstr ""
+
+#: front/src/components/manage/library/AlbumsTable.vue:43
+#: front/src/components/mixins/Translations.vue:54 src/edits.js:43
+#: front/src/components/mixins/Translations.vue:55
+msgctxt "Content/*/*/Noun"
+msgid "Release date"
+msgstr ""
+
+#: front/src/components/library/FileUpload.vue:63
+msgctxt "Content/Library/Paragraph"
+msgid "Remaining storage space"
+msgstr ""
+
+#: front/src/views/Notifications.vue:18 src/views/Notifications.vue:52
+msgctxt "Content/Notifications/Label"
+msgid "Remind me in:"
+msgstr ""
+
+#: front/src/views/content/remote/Home.vue:6
+msgctxt "Content/Library/Title/Noun"
+msgid "Remote libraries"
+msgstr ""
+
+#: front/src/views/content/remote/Home.vue:7
+msgctxt "Content/Library/Paragraph"
+msgid "Remote libraries are owned by other users on the network. You can access them as long as they are public or you are granted access."
+msgstr ""
+
+#: front/src/components/library/radios/Filter.vue:59
+msgctxt "Content/Radio/Button.Label/Verb"
+msgid "Remove"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:58
+msgctxt "Content/Settings/Button.Label/Verb"
+msgid "Remove avatar"
+msgstr ""
+
+#: front/src/components/library/ArtistDetail.vue:12
+msgctxt "Content/Moderation/Button.Label"
+msgid "Remove filter"
+msgstr ""
+
+#: front/src/components/manage/moderation/DomainsTable.vue:198
+#: front/src/views/admin/moderation/DomainsDetail.vue:39
+msgctxt "Content/Moderation/Action/Verb"
+msgid "Remove from allow-list"
+msgstr ""
+
+#: front/src/components/favorites/TrackFavoriteIcon.vue:26
+msgctxt "Content/Track/Icon.Tooltip/Verb"
+msgid "Remove from favorites"
+msgstr ""
+
+#: front/src/views/content/libraries/Quota.vue:38
+msgctxt "Popup/Library/Paragraph"
+msgid "Removes uploaded but yet to be processed tracks completely, adding the corresponding data to your quota."
+msgstr ""
+
+#: front/src/views/content/libraries/Quota.vue:64
+msgctxt "Popup/Library/Paragraph"
+msgid "Removes uploaded tracks skipped during the import processes completely, adding the corresponding data to your quota."
+msgstr ""
+
+#: front/src/views/content/libraries/Quota.vue:90
+msgctxt "Popup/Library/Paragraph"
+msgid "Removes uploaded tracks that could not be processed by the server completely, adding the corresponding data to your quota."
+msgstr ""
+
+#: front/src/components/audio/PlayButton.vue:94
+msgctxt "*/Queue/Dropdown/Button/Title"
+msgid "Replace current queue"
+msgstr ""
+
+#: front/src/components/mixins/Report.vue:6 src/components/mixins/Report.vue:7
+msgctxt "*/Moderation/*/Verb"
+msgid "Report @%{ username }…"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:5
+msgctxt "Content/Moderation/Card/Short"
+msgid "Report %{ id }"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:139
+msgctxt "*/Moderation/Message"
+msgid "Report successfully submitted, thank you"
+msgstr ""
+
+#: front/src/components/mixins/Report.vue:36
+#: src/components/mixins/Report.vue:37
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this album…"
+msgstr ""
+
+#: front/src/components/mixins/Report.vue:50
+#: src/components/mixins/Report.vue:51
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this artist…"
+msgstr ""
+
+#: front/src/components/mixins/Report.vue:72
+#: src/components/mixins/Report.vue:73
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this library…"
+msgstr ""
+
+#: front/src/components/mixins/Report.vue:61
+#: src/components/mixins/Report.vue:62
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this playlist…"
+msgstr ""
+
+#: front/src/components/mixins/Report.vue:23
+#: src/components/mixins/Report.vue:24
+msgctxt "*/Moderation/*/Verb"
+msgid "Report this track…"
+msgstr ""
+
+#: front/src/components/audio/PlayButton.vue:95
+msgctxt "*/Moderation/*/Button/Label,Verb"
+msgid "Report…"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:117
+msgctxt "Content/*/*/Short"
+msgid "Reported object"
+msgstr ""
+
+#: front/src/views/admin/moderation/Base.vue:5
+#: front/src/views/admin/moderation/ReportsList.vue:3
+#: front/src/views/admin/moderation/ReportsList.vue:208
+msgctxt "*/Moderation/*/Noun"
+msgid "Reports"
+msgstr ""
+
+#: front/src/components/auth/SubsonicTokenForm.vue:38
+#: front/src/components/auth/SubsonicTokenForm.vue:41
+msgctxt "*/Settings/Button.Label/Verb"
+msgid "Request a new password"
+msgstr ""
+
+#: front/src/components/auth/SubsonicTokenForm.vue:39
+msgctxt "Popup/Settings/Title"
+msgid "Request a new Subsonic API password?"
+msgstr ""
+
+#: front/src/components/auth/SubsonicTokenForm.vue:47
+msgctxt "Content/Settings/Button.Label/Verb"
+msgid "Request a password"
+msgstr ""
+
+#: front/src/components/federation/FetchButton.vue:64
+msgctxt "Popup/*/Loading.Title"
+msgid "Requesting a fetch…"
+msgstr ""
+
+#: front/src/components/library/EditForm.vue:94
+msgctxt "Content/Library/Button.Label"
+msgid "Reset to initial value"
+msgstr ""
+
+#: front/src/components/auth/LoginForm.vue:34
+#: src/views/auth/PasswordReset.vue:4 front/src/views/auth/PasswordReset.vue:53
+msgctxt "*/Login/*/Verb"
+msgid "Reset your password"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:83
+msgctxt "Content/*/*/Noun"
+msgid "Resolution date"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:218
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Resolve"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:62
+#: front/src/views/admin/moderation/ReportsList.vue:20
+msgctxt "Content/*/*/Short"
+msgid "Resolved"
+msgstr ""
+
+#: front/src/views/content/libraries/FilesTable.vue:223
+msgctxt "Content/Library/Dropdown/Verb"
+msgid "Restart import"
+msgstr ""
+
+#: front/src/components/library/EditForm.vue:31
+msgctxt "Content/Library/Button.Label"
+msgid "Restrict to unreviewed edits"
+msgstr ""
+
+#: front/src/components/favorites/List.vue:39
+#: src/components/library/Albums.vue:34
+#: front/src/components/library/Artists.vue:34
+#: src/components/library/Radios.vue:52 front/src/views/playlists/List.vue:32
+msgctxt "Content/Search/Dropdown.Label/Noun"
+msgid "Results per page"
+msgstr ""
+
+#: front/src/views/auth/EmailConfirm.vue:17
+msgctxt "Content/Signup/Link/Verb"
+msgid "Return to login"
+msgstr ""
+
+#: front/src/components/library/ArtistDetail.vue:9
+msgctxt "Content/Moderation/Link"
+msgid "Review my filters"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:192
+msgctxt "*/*/*/Verb"
+msgid "Revoke"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:195
+msgctxt "*/Settings/Button.Label/Verb"
+msgid "Revoke access"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:193
+msgctxt "Popup/Settings/Title"
+msgid "Revoke access for application \"%{ application }\"?"
+msgstr ""
+
+#: front/src/components/manage/moderation/InstancePolicyCard.vue:16
+msgctxt "Content/Moderation/Card.Title/Noun"
+msgid "Rule"
+msgstr ""
+
+#: front/src/components/About.vue:28 src/components/About.vue:56
+msgctxt "Content/About/Header"
+msgid "Rules"
+msgstr ""
+
+#: front/src/components/admin/SettingsGroup.vue:75
+#: front/src/components/library/radios/Builder.vue:34
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Save"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:203
+msgctxt "Content/Library/Message"
+msgid "Scan launched"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:80
+msgctxt "Content/Library/Card.Button.Label/Verb"
+msgid "Scan now"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:48
+msgctxt "Content/Library/Card.List item"
+msgid "Scan pending"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:204
+msgctxt "Content/Library/Message"
+msgid "Scan skipped (previous scan is too recent)"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:60
+msgctxt "Content/Library/Card.List item"
+msgid "Scanned"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:64
+msgctxt "Content/Library/Card.List item"
+msgid "Scanned with errors"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:52
+msgctxt "Content/Library/Card.List item"
+msgid "Scanning… (%{ progress }%)"
+msgstr ""
+
+#: front/src/components/auth/ApplicationForm.vue:22
+#: front/src/components/auth/Settings.vue:226
+msgctxt "Content/*/*/Noun"
+msgid "Scopes"
+msgstr ""
+
+#: front/src/components/library/Albums.vue:10
+#: src/components/library/Artists.vue:10
+#: front/src/components/library/Radios.vue:29
+#: front/src/components/manage/library/AlbumsTable.vue:5
+#: front/src/components/manage/library/ArtistsTable.vue:5
+#: front/src/components/manage/library/EditsCardList.vue:6
+#: front/src/components/manage/library/LibrariesTable.vue:5
+#: front/src/components/manage/library/TagsTable.vue:5
+#: front/src/components/manage/library/TracksTable.vue:5
+#: front/src/components/manage/library/UploadsTable.vue:5
+#: front/src/components/manage/moderation/AccountsTable.vue:5
+#: front/src/components/manage/moderation/DomainsTable.vue:5
+#: front/src/components/manage/users/InvitationsTable.vue:5
+#: front/src/components/manage/users/UsersTable.vue:5
+#: front/src/views/admin/moderation/ReportsList.vue:8
+#: front/src/views/content/libraries/FilesTable.vue:5
+#: src/views/playlists/List.vue:13
+msgctxt "Content/Search/Input.Label/Noun"
+msgid "Search"
+msgstr ""
+
+#: front/src/views/content/remote/ScanForm.vue:9
+msgctxt "Content/Library/Input.Label/Verb"
+msgid "Search a remote library"
+msgstr ""
+
+#: front/src/components/manage/library/EditsCardList.vue:211
+#: front/src/views/admin/moderation/ReportsList.vue:207
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by account, summary, domain…"
+msgstr ""
+
+#: front/src/components/manage/library/LibrariesTable.vue:191
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by domain, actor, name, description…"
+msgstr ""
+
+#: front/src/components/manage/library/UploadsTable.vue:241
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by domain, actor, name, reference, source…"
+msgstr ""
+
+#: front/src/components/manage/library/ArtistsTable.vue:164
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by domain, name, MusicBrainz ID…"
+msgstr ""
+
+#: front/src/components/manage/library/TracksTable.vue:174
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by domain, title, artist, album, MusicBrainz ID…"
+msgstr ""
+
+#: front/src/components/manage/library/AlbumsTable.vue:174
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by domain, title, artist, MusicBrainz ID…"
+msgstr ""
+
+#: front/src/components/manage/moderation/AccountsTable.vue:171
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by domain, username, bio…"
+msgstr ""
+
+#: front/src/components/manage/library/TagsTable.vue:165
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by name"
+msgstr ""
+
+#: front/src/components/manage/moderation/DomainsTable.vue:168
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by name…"
+msgstr ""
+
+#: front/src/views/content/libraries/FilesTable.vue:208
+msgctxt "Content/Library/Input.Placeholder"
+msgid "Search by title, artist, album…"
+msgstr ""
+
+#: front/src/components/manage/users/InvitationsTable.vue:153
+msgctxt "Content/Admin/Input.Placeholder/Verb"
+msgid "Search by username, e-mail address, code…"
+msgstr ""
+
+#: front/src/components/manage/users/UsersTable.vue:164
+msgctxt "Content/Search/Input.Placeholder"
+msgid "Search by username, e-mail address, name…"
+msgstr ""
+
+#: front/src/components/audio/SearchBar.vue:27
+msgctxt "Sidebar/Search/Input.Placeholder"
+msgid "Search for artists, albums, tracks…"
+msgstr ""
+
+#: front/src/components/audio/Search.vue:2
+msgctxt "Content/Search/Title"
+msgid "Search for some music"
+msgstr ""
+
+#: front/src/components/library/TagsSelector.vue:6
+msgctxt "*/Dropdown/Placeholder/Verb"
+msgid "Search for tags…"
+msgstr ""
+
+#: front/src/components/library/AlbumBase.vue:66
+#: front/src/components/library/ArtistBase.vue:77
+#: front/src/components/library/TrackBase.vue:82
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Search on Discogs"
+msgstr ""
+
+#: front/src/components/library/AlbumBase.vue:58
+#: front/src/components/library/ArtistBase.vue:69
+#: front/src/components/library/TrackBase.vue:74
+msgctxt "Content/*/Button.Label/Verb"
+msgid "Search on Wikipedia"
+msgstr ""
+
+#: front/src/components/library/Library.vue:35
+#: src/views/admin/library/Base.vue:35
+#: front/src/views/admin/moderation/Base.vue:44
+#: src/views/admin/users/Base.vue:21 front/src/views/content/Base.vue:19
+msgctxt "Menu/*/Hidden text"
+msgid "Secondary menu"
+msgstr ""
+
+#: front/src/views/admin/Settings.vue:15
+msgctxt "Content/Admin/Menu.Title"
+msgid "Sections"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:108
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek backwards 30s"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:100
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek backwards 5s"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:112
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek forwards 30s"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:104
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Seek forwards 5s"
+msgstr ""
+
+#: front/src/components/library/radios/Builder.vue:46
+msgctxt "Content/Radio/Dropdown.Placeholder/Verb"
+msgid "Select a filter"
+msgstr ""
+
+#: front/src/components/common/ActionTable.vue:79
+msgctxt "Content/*/Link/Verb"
+msgid "Select all %{ total } elements"
+msgid_plural "Select all %{ total } elements"
+msgstr[0] ""
+msgstr[1] ""
+
+#: front/src/components/common/ActionTable.vue:88
+msgctxt "Content/*/Link/Verb"
+msgid "Select only current page"
+msgstr ""
+
+#: front/src/components/Home.vue:43
+msgctxt "Content/Home/Link"
+msgid "Server rules"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:43 src/components/Sidebar.vue:112
+#: front/src/components/manage/users/UsersTable.vue:182
+#: front/src/views/admin/moderation/AccountsDetail.vue:526
+msgctxt "*/*/*/Noun"
+msgid "Settings"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:10
+msgctxt "Content/Settings/Message"
+msgid "Settings updated"
+msgstr ""
+
+#: front/src/components/admin/SettingsGroup.vue:11
+msgctxt "Content/Settings/Paragraph"
+msgid "Settings updated successfully."
+msgstr ""
+
+#: front/src/components/manage/users/InvitationForm.vue:27
+msgctxt "Content/Admin/Table.Label/Noun"
+msgid "Share link"
+msgstr ""
+
+#: front/src/views/content/libraries/Detail.vue:15
+msgctxt "Content/Library/Paragraph"
+msgid "Share this link with other users so they can request access to your library."
+msgstr ""
+
+#: front/src/views/content/libraries/Detail.vue:14
+#: front/src/views/content/remote/Card.vue:90
+msgctxt "Content/Library/Title"
+msgid "Sharing link"
+msgstr ""
+
+#: front/src/components/audio/EmbedWizard.vue:5
+msgctxt "Content/Embed/Message"
+msgid "Sharing will not work because this pod doesn't allow anonymous users to access content."
+msgstr ""
+
+#: front/src/components/About.vue:156
+msgctxt "*/*/*/Verb"
+msgid "Show"
+msgstr ""
+
+#: front/src/components/audio/album/Card.vue:38
+msgctxt "Content/Album/Card.Link/Verb"
+msgid "Show %{ count } more track"
+msgid_plural "Show %{ count } more tracks"
+msgstr[0] ""
+msgstr[1] ""
+
+#: front/src/components/tags/List.vue:11
+msgctxt "Content/*/Button/Label/Verb"
+msgid "Show 1 more tag"
+msgid_plural "Show %{ count } more tags"
+msgstr[0] ""
+msgstr[1] ""
+
+#: front/src/components/library/EditForm.vue:21
+msgctxt "Content/Library/Button.Label"
+msgid "Show all edits"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:60
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Show available keyboard shortcuts"
+msgstr ""
+
+#: front/src/components/common/ExpandableDiv.vue:7
+msgctxt "*/*/Button,Label"
+msgid "Show less"
+msgstr ""
+
+#: front/src/components/common/ExpandableDiv.vue:8
+msgctxt "*/*/Button,Label"
+msgid "Show more"
+msgstr ""
+
+#: front/src/views/Notifications.vue:72
+msgctxt "Content/Notifications/Form.Label/Verb"
+msgid "Show read notifications"
+msgstr ""
+
+#: front/src/components/forms/PasswordInput.vue:42
+msgctxt "Content/Settings/Button.Tooltip/Verb"
+msgid "Show/hide password"
+msgstr ""
+
+#: front/src/components/manage/library/AlbumsTable.vue:93
+#: front/src/components/manage/library/ArtistsTable.vue:84
+#: front/src/components/manage/library/EditsCardList.vue:72
+#: front/src/components/manage/library/LibrariesTable.vue:110
+#: front/src/components/manage/library/TagsTable.vue:79
+#: front/src/components/manage/library/TracksTable.vue:95
+#: front/src/components/manage/library/UploadsTable.vue:144
+#: front/src/components/manage/moderation/AccountsTable.vue:88
+#: front/src/components/manage/moderation/DomainsTable.vue:85
+#: front/src/components/manage/users/InvitationsTable.vue:76
+#: front/src/components/manage/users/UsersTable.vue:88
+#: front/src/views/content/libraries/FilesTable.vue:117
+msgctxt "Content/*/Paragraph"
+msgid "Showing results %{ start }-%{ end } on %{ total }"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:140
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Shuffle queue"
+msgstr ""
+
+#: front/src/components/audio/Player.vue:667
+msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
+msgid "Shuffle your queue"
+msgstr ""
+
+#: front/src/components/Home.vue:103
+msgctxt "*/Signup/Title"
+msgid "Sign up"
+msgstr ""
+
+#: front/src/views/auth/Signup.vue:37
+msgctxt "*/Signup/Title"
+msgid "Sign Up"
+msgstr ""
+
+#: front/src/components/Home.vue:107
+msgctxt "Content/Home/Paragraph"
+msgid "Sign up now to keep a track of your favorites, create playlists, discover new content and much more!"
+msgstr ""
+
+#: front/src/components/manage/users/UsersTable.vue:40
+msgctxt "Content/Admin/Table.Label/Short, Noun (Value is a date)"
+msgid "Sign-up"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:69
+#: front/src/views/admin/moderation/AccountsDetail.vue:198
+#: front/src/components/mixins/Translations.vue:70
+msgctxt "Content/Admin/Table.Label/Noun"
+msgid "Sign-up date"
+msgstr ""
+
+#: front/src/components/library/FileUpload.vue:94
+#: front/src/components/library/TrackDetail.vue:39
+#: front/src/components/manage/library/UploadsTable.vue:65
+#: front/src/components/mixins/Translations.vue:66
+#: front/src/views/admin/library/UploadDetail.vue:219
+#: front/src/views/content/libraries/FilesTable.vue:61
+#: front/src/components/mixins/Translations.vue:67
+msgctxt "Content/*/*/Noun"
+msgid "Size"
+msgstr ""
+
+#: front/src/components/manage/library/UploadsTable.vue:24
+#: front/src/components/mixins/Translations.vue:24
+#: front/src/views/content/libraries/FilesTable.vue:15
+#: front/src/components/mixins/Translations.vue:25
+msgctxt "Content/Library/*"
+msgid "Skipped"
+msgstr ""
+
+#: front/src/views/content/libraries/Quota.vue:49
+msgctxt "Content/Library/Label"
+msgid "Skipped files"
+msgstr ""
+
+#: front/src/views/admin/moderation/DomainsDetail.vue:126
+msgctxt "Content/Moderation/Table.Label"
+msgid "Software"
+msgstr ""
+
+#: front/src/components/playlists/Editor.vue:21
+msgctxt "Content/Playlist/Paragraph"
+msgid "Some tracks in your queue are already in this playlist:"
+msgstr ""
+
+#: front/src/components/PageNotFound.vue:10
+msgctxt "Content/*/Paragraph"
+msgid "Sorry, the page you asked for does not exist:"
+msgstr ""
+
+#: front/src/components/Footer.vue:57
+msgctxt "Footer/*/List item.Link"
+msgid "Source code"
+msgstr ""
+
+#: front/src/components/auth/Profile.vue:23
+#: front/src/components/manage/users/UsersTable.vue:71
+msgctxt "Content/Profile/User role"
+msgid "Staff member"
+msgstr ""
+
+#: front/src/components/audio/PlayButton.vue:27
+#: src/components/radios/Button.vue:4
+msgctxt "*/Queue/Button.Label/Short, Verb"
+msgid "Start radio"
+msgstr ""
+
+#: front/src/components/About.vue:170 src/components/Home.vue:53
+#: front/src/views/admin/Settings.vue:87
+msgctxt "Content/Home/Header"
+msgid "Statistics"
+msgstr ""
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:510
+msgctxt "Content/Moderation/Help text"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this account"
+msgstr ""
+
+#: front/src/views/admin/moderation/DomainsDetail.vue:418
+msgctxt "Content/Moderation/Help text"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this domain"
+msgstr ""
+
+#: front/src/views/admin/library/AlbumDetail.vue:346
+#: front/src/views/admin/library/ArtistDetail.vue:345
+#: front/src/views/admin/library/LibraryDetail.vue:356
+#: front/src/views/admin/library/TagDetail.vue:210
+#: front/src/views/admin/library/TrackDetail.vue:389
+#: front/src/views/admin/library/UploadDetail.vue:335
+msgctxt "Content/Moderation/Help text"
+msgid "Statistics are computed from known activity and content on your instance, and do not reflect general activity for this object"
+msgstr ""
+
+#: front/src/components/library/FileUpload.vue:95
+#: front/src/components/manage/library/EditsCardList.vue:12
+#: front/src/components/manage/moderation/ReportCard.vue:57
+#: front/src/components/manage/users/InvitationsTable.vue:17
+#: front/src/components/manage/users/InvitationsTable.vue:39
+#: front/src/components/manage/users/UsersTable.vue:43
+#: front/src/views/admin/moderation/DomainsDetail.vue:152
+#: front/src/views/admin/moderation/ReportsList.vue:14
+#: front/src/views/content/libraries/Detail.vue:28
+msgctxt "*/*/*"
+msgid "Status"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:178 src/components/radios/Button.vue:3
+msgctxt "*/Player/Button.Label/Short, Verb"
+msgid "Stop radio"
+msgstr ""
+
+#: front/src/components/SetInstanceModal.vue:23
+msgctxt "*/*/Button.Label/Verb"
+msgid "Submit"
+msgstr ""
+
+#: front/src/components/library/EditForm.vue:110
+msgctxt "Content/Library/Button.Label/Verb"
+msgid "Submit and apply edit"
+msgstr ""
+
+#: front/src/components/library/EditForm.vue:7
+msgctxt "Content/Library/Button.Label"
+msgid "Submit another edit"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:64
+msgctxt "Popup/*/Button.Label"
+msgid "Submit report"
+msgstr ""
+
+#: front/src/components/library/EditForm.vue:111
+msgctxt "Content/Library/Button.Label/Verb"
+msgid "Submit suggestion"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:17
+msgctxt "Content/Moderation/*"
+msgid "Submitted by"
+msgstr ""
+
+#: front/src/views/admin/Settings.vue:86
+msgctxt "Content/Admin/Menu"
+msgid "Subsonic"
+msgstr ""
+
+#: front/src/components/auth/SubsonicTokenForm.vue:2
+msgctxt "Content/Settings/Title"
+msgid "Subsonic API password"
+msgstr ""
+
+#: front/src/components/library/EditForm.vue:38
+msgctxt "Content/Library/Paragraph"
+msgid "Suggest a change using the form below."
+msgstr ""
+
+#: front/src/components/library/AlbumEdit.vue:5
+msgctxt "Content/*/Title"
+msgid "Suggest an edit on this album"
+msgstr ""
+
+#: front/src/components/library/ArtistEdit.vue:5
+msgctxt "Content/*/Title"
+msgid "Suggest an edit on this artist"
+msgstr ""
+
+#: front/src/components/library/TrackEdit.vue:5
+msgctxt "Content/*/Title"
+msgid "Suggest an edit on this track"
+msgstr ""
+
+#: front/src/components/SetInstanceModal.vue:31
+msgctxt "Popup/Instance/List.Label"
+msgid "Suggested choices"
+msgstr ""
+
+#: front/src/components/library/FileUpload.vue:3
+msgctxt "Content/Library/Tab.Title/Short"
+msgid "Summary"
+msgstr ""
+
+#: front/src/components/library/EditForm.vue:99
+msgctxt "*/*/*"
+msgid "Summary (optional)"
+msgstr ""
+
+#: front/src/components/Footer.vue:47
+msgctxt "Footer/*/Listitem.Link"
+msgid "Support forum"
+msgstr ""
+
+#: front/src/views/Notifications.vue:10
+msgctxt "Content/Notifications/Header"
+msgid "Support this Funkwhale pod"
+msgstr ""
+
+#: front/src/components/library/FileUpload.vue:85
+msgctxt "Content/Library/Paragraph"
+msgid "Supported extensions: %{ extensions }"
+msgstr ""
+
+#: front/src/components/playlists/Editor.vue:9
+msgctxt "Content/Playlist/Paragraph"
+msgid "Syncing changes to server…"
+msgstr ""
+
+#: front/src/components/audio/SearchBar.vue:35
+msgctxt "*/*/*/Noun"
+msgid "Tag"
+msgstr ""
+
+#: front/src/views/admin/library/TagDetail.vue:61
+msgctxt "Content/Moderation/Title"
+msgid "Tag data"
+msgstr ""
+
+#: front/src/components/library/Albums.vue:23
+#: src/components/library/Artists.vue:15
+#: front/src/views/admin/library/Base.vue:23
+#: src/views/admin/library/TagsList.vue:24 front/src/edits.js:24
+#: src/edits.js:50 src/edits.js:91 src/entities.js:120
+msgctxt "*/*/*/Noun"
+msgid "Tags"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:44
+#: front/src/components/mixins/Translations.vue:45
+msgctxt "Content/Moderation/Dropdown"
+msgid "Takedown request"
+msgstr ""
+
+#: front/src/components/About.vue:35 src/components/About.vue:61
+msgctxt "Content/About/Header"
+msgid "Terms and privacy policy"
+msgstr ""
+
+#: front/src/components/audio/EmbedWizard.vue:35
+#: front/src/components/common/CopyInput.vue:3
+msgctxt "Content/*/Paragraph"
+msgid "Text copied to clipboard!"
+msgstr ""
+
+#: front/src/views/admin/library/AlbumDetail.vue:81
+msgctxt "Content/Moderation/Paragraph"
+msgid "The album will be removed, as well as associated uploads, tracks, favorites and listening history. This action is irreversible."
+msgstr ""
+
+#: front/src/components/auth/Authorize.vue:39
+msgctxt "Content/Auth/Paragraph"
+msgid "The application is also requesting the following unknown permissions:"
+msgstr ""
+
+#: front/src/views/admin/library/ArtistDetail.vue:79
+msgctxt "Content/Moderation/Paragraph"
+msgid "The artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible."
+msgstr ""
+
+#: front/src/components/Footer.vue:61
+msgctxt "Footer/*/List item.Link"
+msgid "The funkwhale logo was kindly designed and provided by Francis Gading."
+msgstr ""
+
+#: front/src/components/SetInstanceModal.vue:8
+msgctxt "Popup/Instance/Error message.List item"
+msgid "The given address is not a Funkwhale server"
+msgstr ""
+
+#: front/src/views/content/libraries/Form.vue:34
+msgctxt "Popup/Library/Paragraph"
+msgid "The library and all its tracks will be deleted. This can not be undone."
+msgstr ""
+
+#: front/src/views/admin/library/LibraryDetail.vue:61
+msgctxt "Content/Moderation/Paragraph"
+msgid "The library will be removed, as well as associated uploads, and follows. This action is irreversible."
+msgstr ""
+
+#: front/src/components/library/ImportStatusModal.vue:140
+msgctxt "Popup/Import/Error.Label"
+msgid "The metadata included in the file is invalid or some mandatory fields are missing."
+msgstr ""
+
+#: front/src/components/library/FileUpload.vue:38
+msgctxt "Content/Library/List item"
+msgid "The music files you are uploading are tagged properly."
+msgstr ""
+
+#: front/src/components/audio/Player.vue:65
+msgctxt "Sidebar/Player/Error message.Paragraph"
+msgid "The next track will play automatically in a few seconds…"
+msgstr ""
+
+#: front/src/components/manage/moderation/NotesThread.vue:27
+msgctxt "Content/Moderation/Paragraph"
+msgid "The note will be removed. This action is irreversible."
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:120
+msgctxt "Content/Moderation/Message"
+msgid "The object associated with this report was deleted."
+msgstr ""
+
+#: front/src/components/playlists/Form.vue:14
+msgctxt "Content/Playlist/Error message.Title"
+msgid "The playlist could not be created"
+msgstr ""
+
+#: front/src/components/federation/FetchButton.vue:37
+msgctxt "*/*/Error"
+msgid "The remote server answered with HTTP %{ status }"
+msgstr ""
+
+#: front/src/components/federation/FetchButton.vue:13
+msgctxt "Popup/*/Message.Content"
+msgid "The remote server answered, but returned data was unsupported by Funkwhale."
+msgstr ""
+
+#: front/src/components/federation/FetchButton.vue:44
+msgctxt "*/*/Error"
+msgid "The remote server didn't respond quickly enough"
+msgstr ""
+
+#: front/src/components/federation/FetchButton.vue:50
+msgctxt "*/*/Error"
+msgid "The remote server returned invalid JSON or JSON-LD data"
+msgstr ""
+
+#: front/src/components/manage/library/AlbumsTable.vue:189
+msgctxt "Popup/*/Paragraph"
+msgid "The selected albums will be removed, as well as associated tracks, uploads, favorites and listening history. This action is irreversible."
+msgstr ""
+
+#: front/src/components/manage/library/ArtistsTable.vue:179
+msgctxt "Popup/*/Paragraph"
+msgid "The selected artist will be removed, as well as associated uploads, tracks, albums, favorites and listening history. This action is irreversible."
+msgstr ""
+
+#: front/src/components/manage/library/LibrariesTable.vue:206
+msgctxt "Popup/*/Paragraph"
+msgid "The selected library will be removed, as well as associated uploads and follows. This action is irreversible."
+msgstr ""
+
+#: front/src/components/manage/library/TagsTable.vue:180
+msgctxt "Popup/*/Paragraph"
+msgid "The selected tag will be removed and unlinked with existing content, if any. This action is irreversible."
+msgstr ""
+
+#: front/src/components/manage/library/TracksTable.vue:189
+msgctxt "Popup/*/Paragraph"
+msgid "The selected tracks will be removed, as well as associated uploads, favorites and listening history. This action is irreversible."
+msgstr ""
+
+#: front/src/components/manage/library/UploadsTable.vue:256
+msgctxt "Popup/*/Paragraph"
+msgid "The selected upload will be removed. This action is irreversible."
+msgstr ""
+
+#: front/src/components/SetInstanceModal.vue:7
+msgctxt "Popup/Instance/Error message.List item"
+msgid "The server might be down"
+msgstr ""
+
+#: front/src/components/auth/SubsonicTokenForm.vue:4
+msgctxt "Content/Settings/Paragraph"
+msgid "The Subsonic API is not available on this Funkwhale instance."
+msgstr ""
+
+#: front/src/components/library/EditCard.vue:96
+msgctxt "Popup/Library/Paragraph"
+msgid "The suggestion will be completely removed, this action is irreversible."
+msgstr ""
+
+#: front/src/views/admin/library/TagDetail.vue:44
+msgctxt "Content/Moderation/Paragraph"
+msgid "The tag will be removed and unlinked from any existing entity. This action is irreversible."
+msgstr ""
+
+#: front/src/components/playlists/PlaylistModal.vue:34
+msgctxt "Popup/Playlist/Error message.Title"
+msgid "The track can't be added to a playlist"
+msgstr ""
+
+#: front/src/components/audio/Player.vue:62
+msgctxt "Sidebar/Player/Error message.Title"
+msgid "The track cannot be loaded"
+msgstr ""
+
+#: front/src/views/admin/library/TrackDetail.vue:80
+msgctxt "Content/Moderation/Paragraph"
+msgid "The track will be removed, as well as associated uploads, favorites and listening history. This action is irreversible."
+msgstr ""
+
+#: front/src/views/admin/library/UploadDetail.vue:68
+msgctxt "Content/Moderation/Paragraph"
+msgid "The upload will be removed. This action is irreversible."
+msgstr ""
+
+#: front/src/components/library/FileUpload.vue:42
+msgctxt "Content/Library/List item"
+msgid "The uploaded music files are in OGG, Flac or MP3 format"
+msgstr ""
+
+#: front/src/views/content/Home.vue:4
+msgctxt "Content/Library/Paragraph"
+msgid "There are various ways to grab new content and make it available here."
+msgstr ""
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:66
+msgctxt "Popup/Moderation/Paragraph"
+msgid "This action is irreversible."
+msgstr ""
+
+#: front/src/components/library/AlbumDetail.vue:29
+msgctxt "Content/Album/Paragraph"
+msgid "This album is present in the following libraries:"
+msgstr ""
+
+#: front/src/components/library/ArtistDetail.vue:42
+msgctxt "Content/Artist/Paragraph"
+msgid "This artist is present in the following libraries:"
+msgstr ""
+
+#: front/src/components/manage/moderation/DomainsTable.vue:169
+msgctxt "Content/Moderation/Popup"
+msgid "This domain is present in your allow-list"
+msgstr ""
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:84
+#: front/src/views/admin/moderation/DomainsDetail.vue:76
+msgctxt "Content/Moderation/Card.Title"
+msgid "This domain is subject to specific moderation rules"
+msgstr ""
+
+#: front/src/components/manage/moderation/InstancePolicyModal.vue:16
+msgctxt "Content/Moderation/Card.Title"
+msgid "This entity is subject to specific moderation rules"
+msgstr ""
+
+#: front/src/views/content/Home.vue:9
+msgctxt "Content/Library/Paragraph"
+msgid "This instance offers up to %{quota} of storage space for every user."
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:300
+msgctxt "Popup/Settings/Paragraph"
+msgid "This is irreversible and will permanently remove your data from our servers. You will we immediatly logged out."
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:165
+msgctxt "Content/Settings/Paragraph"
+msgid "This is the list of applications that have access to your account data."
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:218
+msgctxt "Content/Settings/Paragraph"
+msgid "This is the list of applications that you have created."
+msgstr ""
+
+#: front/src/components/auth/Profile.vue:16
+msgctxt "Content/Profile/Button.Paragraph"
+msgid "This is you!"
+msgstr ""
+
+#: front/src/views/content/libraries/Form.vue:73
+msgctxt "Content/Library/Input.Placeholder"
+msgid "This library contains my personal music, I hope you like it."
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:169
+msgctxt "Content/Library/Card.Help text"
+msgid "This library is private and your approval from its owner is needed to access its content"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:170
+msgctxt "Content/Library/Card.Help text"
+msgid "This library is public and you can access its content freely"
+msgstr ""
+
+#: front/src/components/common/ActionTable.vue:47
+msgctxt "Modal/*/Paragraph"
+msgid "This may affect a lot of elements or have irreversible consequences, please double check this is really what you want."
+msgstr ""
+
+#: front/src/components/library/AlbumEdit.vue:8
+#: front/src/components/library/ArtistEdit.vue:8
+#: front/src/components/library/TrackEdit.vue:8
+msgctxt "Content/*/Message"
+msgid "This object is managed by another server, you cannot edit it."
+msgstr ""
+
+#: front/src/components/Home.vue:87
+msgctxt "Content/Home/Paragraph"
+msgid "This pod runs Funkwhale, a community-driven project that lets you listen and share music and audio within a decentralized, open network."
+msgstr ""
+
+#: front/src/components/library/FileUpload.vue:51
+msgctxt "Content/Library/Paragraph"
+msgid "This reference will be used to group imported files together."
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:33
+#: front/src/components/mixins/Translations.vue:34
+msgctxt "Content/Library/Help text"
+msgid "This track could not be processed, please make sure it is tagged correctly"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:29
+#: front/src/components/mixins/Translations.vue:30
+msgctxt "Content/Library/Help text"
+msgid "This track has been uploaded, but hasn't been processed by the server yet"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:25
+#: front/src/components/mixins/Translations.vue:26
+msgctxt "Content/Library/Help text"
+msgid "This track is already present in one of your libraries"
+msgstr ""
+
+#: front/src/components/audio/PlayButton.vue:103
+msgctxt "*/Queue/Button/Title"
+msgid "This track is not available in any library you have access to"
+msgstr ""
+
+#: front/src/components/library/TrackDetail.vue:82
+msgctxt "Content/Track/Paragraph"
+msgid "This track is present in the following libraries:"
+msgstr ""
+
+#: front/src/views/playlists/Detail.vue:46
+msgctxt "Popup/Playlist/Paragraph"
+msgid "This will completely delete this playlist and cannot be undone."
+msgstr ""
+
+#: front/src/views/radios/Detail.vue:27
+msgctxt "Popup/Radio/Paragraph"
+msgid "This will completely delete this radio and cannot be undone."
+msgstr ""
+
+#: front/src/components/auth/SubsonicTokenForm.vue:55
+msgctxt "Popup/Settings/Paragraph"
+msgid "This will completely disable access to the Subsonic API using from account."
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:359
+msgctxt "Content/Moderation/Popup,Paragraph"
+msgid "This will delete the object associated with this report and mark the report as resolved. The deletion is irreversible."
+msgstr ""
+
+#: front/src/components/auth/SubsonicTokenForm.vue:40
+msgctxt "Popup/Settings/Paragraph"
+msgid "This will log you out from existing devices that use the current password."
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:253
+msgctxt "Popup/Settings/Paragraph"
+msgid "This will permanently delete the application and all the associated tokens."
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:194
+msgctxt "Popup/Settings/Paragraph"
+msgid "This will prevent this application from accessing the service on your behalf."
+msgstr ""
+
+#: front/src/components/playlists/Editor.vue:54
+msgctxt "Popup/Playlist/Paragraph"
+msgid "This will remove all tracks from this playlist and cannot be undone."
+msgstr ""
+
+#: front/src/components/audio/track/Table.vue:7
+#: front/src/components/manage/library/AlbumsTable.vue:39
+#: front/src/components/manage/library/TracksTable.vue:39
+#: front/src/views/admin/library/AlbumDetail.vue:105
+#: front/src/views/admin/library/TrackDetail.vue:104
+#: front/src/views/content/libraries/FilesTable.vue:55 src/edits.js:36
+#: front/src/edits.js:62
+msgctxt "*/*/*/Noun"
+msgid "Title"
+msgstr ""
+
+#: front/src/components/SetInstanceModal.vue:16
+msgctxt "Popup/Instance/Paragraph"
+msgid "To continue, please select the Funkwhale instance you want to connect to. Enter the address directly, or select one of the suggested choices."
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:148
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle favorite"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:132
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle mute"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:136
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Toggle queue looping"
+msgstr ""
+
+#: front/src/views/admin/library/AlbumDetail.vue:238
+#: front/src/views/admin/library/ArtistDetail.vue:226
+#: front/src/views/admin/library/LibraryDetail.vue:219
+#: front/src/views/admin/library/TrackDetail.vue:290
+#: front/src/views/admin/moderation/AccountsDetail.vue:329
+#: front/src/views/admin/moderation/DomainsDetail.vue:262
+msgctxt "Content/Moderation/Table.Label"
+msgid "Total size"
+msgstr ""
+
+#: front/src/views/content/libraries/Card.vue:68
+msgctxt "Content/Library/Card.Help text"
+msgid "Total size of the files in this library"
+msgstr ""
+
+#: front/src/views/admin/moderation/DomainsDetail.vue:142
+msgctxt "Content/*/*"
+msgid "Total users"
+msgstr ""
+
+#: front/src/components/audio/SearchBar.vue:34
+#: front/src/components/library/TrackBase.vue:188
+#: front/src/components/library/TrackDetail.vue:128
+#: front/src/components/metadata/Search.vue:138
+#: src/components/mixins/Report.vue:28
+#: front/src/views/admin/library/UploadDetail.vue:199
+#: front/src/components/mixins/Report.vue:29
+msgctxt "*/*/*/Noun"
+msgid "Track"
+msgstr ""
+
+#: front/src/components/library/EditCard.vue:13
+msgctxt "Content/Library/Card/Short"
+msgid "Track #%{ id } - %{ name }"
+msgstr ""
+
+#: front/src/views/admin/library/TrackDetail.vue:97
+msgctxt "Content/Moderation/Title"
+msgid "Track data"
+msgstr ""
+
+#: front/src/components/library/TrackDetail.vue:4
+msgctxt "Content/Track/Title/Noun"
+msgid "Track information"
+msgstr ""
+
+#: front/src/components/mixins/Translations.vue:60
+#: front/src/components/mixins/Translations.vue:61
+msgctxt "Content/*/Dropdown/Noun"
+msgid "Track name"
+msgstr ""
+
+#: front/src/components/library/AlbumDetail.vue:19
+#: front/src/components/library/TagDetail.vue:36
+#: front/src/components/manage/library/AlbumsTable.vue:42
+#: front/src/components/manage/library/ArtistsTable.vue:42
+#: front/src/components/manage/library/TagsTable.vue:44
+#: front/src/components/playlists/PlaylistModal.vue:47
+#: front/src/views/admin/library/AlbumDetail.vue:268
+#: front/src/views/admin/library/ArtistDetail.vue:266
+#: front/src/views/admin/library/Base.vue:14
+#: front/src/views/admin/library/LibraryDetail.vue:248
+#: front/src/views/admin/library/TagDetail.vue:143
+#: front/src/views/admin/library/TracksList.vue:24
+#: front/src/views/admin/moderation/AccountsDetail.vue:374
+#: front/src/views/admin/moderation/DomainsDetail.vue:311
+#: front/src/views/content/Base.vue:8 src/views/content/libraries/Detail.vue:8
+#: front/src/views/playlists/Detail.vue:76 src/views/radios/Detail.vue:34
+msgctxt "*/*/*"
+msgid "Tracks"
+msgstr ""
+
+#: front/src/components/library/ArtistDetail.vue:33
+msgctxt "Content/Artist/Title"
+msgid "Tracks by this artist"
+msgstr ""
+
+#: front/src/components/library/radios/Filter.vue:44
+msgctxt "Popup/Radio/Title/Noun"
+msgid "Tracks matching filter"
+msgstr ""
+
+#: front/src/components/library/TrackDetail.vue:57
+#: front/src/components/manage/moderation/ReportCard.vue:134
+#: front/src/views/admin/library/UploadDetail.vue:250
+#: front/src/views/admin/moderation/AccountsDetail.vue:181
+msgctxt "Content/Track/Table.Label/Noun"
+msgid "Type"
+msgstr ""
+
+#: front/src/components/manage/moderation/AccountsTable.vue:44
+#: front/src/components/manage/moderation/DomainsTable.vue:50
+msgctxt "Content/Moderation/Table.Label/Short"
+msgid "Under moderation rule"
+msgstr ""
+
+#: front/src/components/ShortcutsModal.vue:68
+msgctxt "Popup/Keyboard shortcuts/Table.Label/Verb"
+msgid "Unfocus searchbar"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:122
+#: src/views/content/remote/Card.vue:127
+msgctxt "*/Library/Button.Label/Verb"
+msgid "Unfollow"
+msgstr ""
+
+#: front/src/views/content/remote/Card.vue:123
+msgctxt "Popup/Library/Title"
+msgid "Unfollow this library?"
+msgstr ""
+
+#: front/src/components/federation/FetchButton.vue:54
+#: front/src/components/federation/FetchButton.vue:55
+#: front/src/components/library/ImportStatusModal.vue:144
+msgctxt "*/*/Error"
+msgid "Unknown error"
+msgstr ""
+
+#: front/src/components/audio/Player.vue:656
+msgctxt "Sidebar/Player/Icon.Tooltip/Verb"
+msgid "Unmute"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:225
+msgctxt "Content/*/Button.Label"
+msgid "Unresolve"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:67
+#: front/src/views/admin/moderation/ReportsList.vue:23
+msgctxt "Content/*/*/Short"
+msgid "Unresolved"
+msgstr ""
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:57
+msgctxt "Content/Moderation/Card.Button.Label/Verb"
+msgid "Update"
+msgstr ""
+
+#: front/src/components/auth/ApplicationForm.vue:64
+msgctxt "Content/Applications/Button.Label/Verb"
+msgid "Update application"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:50
+msgctxt "Content/Settings/Button.Label/Verb"
+msgid "Update avatar"
+msgstr ""
+
+#: front/src/views/content/libraries/Form.vue:25
+msgctxt "Content/Library/Button.Label/Verb"
+msgid "Update library"
+msgstr ""
+
+#: front/src/components/playlists/Form.vue:33
+msgctxt "Content/Playlist/Button.Label/Verb"
+msgid "Update playlist"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:27
+msgctxt "Content/Settings/Button.Label/Verb"
+msgid "Update settings"
+msgstr ""
+
+#: front/src/views/auth/PasswordResetConfirm.vue:21
+msgctxt "Content/Signup/Button.Label"
+msgid "Update your password"
+msgstr ""
+
+#: front/src/views/content/libraries/Card.vue:45
+#: front/src/views/content/libraries/DetailArea.vue:24
+msgctxt "Content/Library/Card.Button.Label/Verb"
+msgid "Upload"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:45
+msgctxt "Content/Settings/Title/Verb"
+msgid "Upload a new avatar"
+msgstr ""
+
+#: front/src/views/content/Home.vue:6
+msgctxt "Content/Library/Title/Verb"
+msgid "Upload audio content"
+msgstr ""
+
+#: front/src/views/admin/library/UploadDetail.vue:85
+msgctxt "Content/Moderation/Title"
+msgid "Upload data"
+msgstr ""
+
+#: front/src/views/content/libraries/FilesTable.vue:58
+msgctxt "*/*/*/Noun"
+msgid "Upload date"
+msgstr ""
+
+#: front/src/components/library/FileUpload.vue:258
+msgctxt "Content/Library/Help text"
+msgid "Upload denied, ensure the file is not too big and that you have not reached your quota"
+msgstr ""
+
+#: front/src/components/library/ImportStatusModal.vue:8
+msgctxt "Popup/Import/Message"
+msgid "Upload is still pending and will soon be processed by the server."
+msgstr ""
+
+#: front/src/views/content/Home.vue:7
+msgctxt "Content/Library/Paragraph"
+msgid "Upload music files (MP3, OGG, FLAC, etc.) from your personal library directly from your browser to enjoy them here."
+msgstr ""
+
+#: front/src/components/library/FileUpload.vue:30
+msgctxt "Content/Library/Title/Verb"
+msgid "Upload new tracks"
+msgstr ""
+
+#: front/src/components/About.vue:99
+#: front/src/views/admin/moderation/AccountsDetail.vue:309
+msgctxt "*/*/*"
+msgid "Upload quota"
+msgstr ""
+
+#: front/src/components/library/FileUpload.vue:267
+msgctxt "Content/Library/Help text"
+msgid "Upload timeout, please try again"
+msgstr ""
+
+#: front/src/components/library/ImportStatusModal.vue:14
+msgctxt "Popup/Import/Message"
+msgid "Upload was skipped because a similar one is already available in one of your libraries."
+msgstr ""
+
+#: front/src/components/library/ImportStatusModal.vue:11
+msgctxt "Popup/Import/Message"
+msgid "Upload was successfully processed by the server."
+msgstr ""
+
+#: front/src/components/library/FileUpload.vue:109
+msgctxt "Content/Library/Table"
+msgid "Uploaded"
+msgstr ""
+
+#: front/src/components/library/FileUpload.vue:5
+msgctxt "Content/Library/Tab.Title/Short"
+msgid "Uploading"
+msgstr ""
+
+#: front/src/components/library/FileUpload.vue:112
+msgctxt "Content/Library/Table"
+msgid "Uploading…"
+msgstr ""
+
+#: front/src/components/manage/library/LibrariesTable.vue:52
+#: front/src/components/manage/moderation/AccountsTable.vue:41
+#: front/src/components/mixins/Translations.vue:75
+#: front/src/views/admin/library/AlbumDetail.vue:258
+#: front/src/views/admin/library/ArtistDetail.vue:246
+#: front/src/views/admin/library/Base.vue:20
+#: front/src/views/admin/library/LibraryDetail.vue:258
+#: front/src/views/admin/library/TrackDetail.vue:310
+#: front/src/views/admin/library/UploadsList.vue:24
+#: front/src/views/admin/moderation/AccountsDetail.vue:349
+#: front/src/views/admin/moderation/DomainsDetail.vue:281
+#: front/src/components/mixins/Translations.vue:76
+msgctxt "*/*/*"
+msgid "Uploads"
+msgstr ""
+
+#: front/src/components/auth/ApplicationForm.vue:16
+msgctxt "Content/Applications/Help Text"
+msgid "Use \"urn:ietf:wg:oauth:2.0:oob\" as a redirect URI if your application is not served on the web."
+msgstr ""
+
+#: front/src/components/Footer.vue:16
+msgctxt "Footer/*/List item.Link"
+msgid "Use another instance"
+msgstr ""
+
+#: front/src/components/Home.vue:146
+msgctxt "Content/Home/Link"
+msgid "Use Funkwhale on other devices with our apps"
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:44
+msgctxt "*/*/Field,Help"
+msgid "Use this field to provide additional context to the moderator that will handle your report."
+msgstr ""
+
+#: front/src/views/auth/PasswordReset.vue:12
+msgctxt "Content/Signup/Paragraph"
+msgid "Use this form to request a password reset. We will send an email to the given address with instructions to reset your password."
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:18
+msgctxt "*/Moderation/Popup,Paragraph"
+msgid "Use this form to submit a report to our moderation team."
+msgstr ""
+
+#: front/src/components/manage/moderation/InstancePolicyForm.vue:111
+msgctxt "Content/Moderation/Help text"
+msgid "Use this setting to temporarily enable/disable the policy without completely removing it."
+msgstr ""
+
+#: front/src/components/manage/users/InvitationsTable.vue:49
+msgctxt "Content/Admin/Table"
+msgid "Used"
+msgstr ""
+
+#: front/src/components/Home.vue:125
+msgctxt "Content/Home/Header"
+msgid "Useful links"
+msgstr ""
+
+#: front/src/views/content/libraries/Detail.vue:26
+msgctxt "Content/Library/Table.Label"
+msgid "User"
+msgstr ""
+
+#: front/src/components/Home.vue:154
+msgctxt "Content/Home/Link"
+msgid "User guides"
+msgstr ""
+
+#: front/src/views/admin/Settings.vue:88
+msgctxt "Content/Admin/Menu"
+msgid "User Interface"
+msgstr ""
+
+#: front/src/components/library/AlbumDetail.vue:26
+#: front/src/components/library/ArtistDetail.vue:39
+#: front/src/components/library/TrackDetail.vue:79
+msgctxt "Content/*/Title/Noun"
+msgid "User libraries"
+msgstr ""
+
+#: front/src/components/library/Radios.vue:20
+msgctxt "Content/Radio/Title"
+msgid "User radios"
+msgstr ""
+
+#: front/src/components/auth/SignupForm.vue:15
+#: front/src/components/manage/users/UsersTable.vue:37
+#: front/src/components/mixins/Translations.vue:71
+#: front/src/views/admin/moderation/AccountsDetail.vue:114
+#: front/src/components/mixins/Translations.vue:72
+msgctxt "Content/*/*"
+msgid "Username"
+msgstr ""
+
+#: front/src/components/auth/LoginForm.vue:11
+msgctxt "Content/Login/Input.Label/Noun"
+msgid "Username or email"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:106
+#: front/src/components/manage/moderation/DomainsTable.vue:47
+#: front/src/components/mixins/Translations.vue:73
+#: src/views/admin/Settings.vue:81 front/src/views/admin/users/Base.vue:5
+#: src/views/admin/users/UsersList.vue:21
+#: front/src/components/mixins/Translations.vue:74
+msgctxt "*/*/*/Noun"
+msgid "Users"
+msgstr ""
+
+#: front/src/components/Home.vue:110
+msgctxt "Content/Home/Paragraph"
+msgid "Users on this pod also get %{ quota } of free storage to upload their own content!"
+msgstr ""
+
+#: front/src/components/Footer.vue:29
+msgctxt "Footer/*/Title"
+msgid "Using Funkwhale"
+msgstr ""
+
+#: front/src/components/Footer.vue:13
+msgctxt "Footer/*/List item"
+msgid "Version %{version}"
+msgstr ""
+
+#: front/src/views/content/libraries/Quota.vue:29
+#: front/src/views/content/libraries/Quota.vue:56
+#: front/src/views/content/libraries/Quota.vue:82
+msgctxt "Content/Library/Link/Verb"
+msgid "View files"
+msgstr ""
+
+#: front/src/components/library/AlbumBase.vue:95
+#: front/src/components/library/ArtistBase.vue:107
+#: front/src/components/library/TrackBase.vue:111
+#: front/src/views/admin/library/AlbumDetail.vue:48
+#: front/src/views/admin/library/ArtistDetail.vue:46
+#: front/src/views/admin/library/LibraryDetail.vue:34
+#: front/src/views/admin/library/LibraryDetail.vue:45
+#: front/src/views/admin/library/TagDetail.vue:32
+#: front/src/views/admin/library/TrackDetail.vue:47
+#: front/src/views/admin/library/UploadDetail.vue:35
+#: front/src/views/admin/library/UploadDetail.vue:46
+#: front/src/views/admin/moderation/AccountsDetail.vue:37
+#: front/src/views/admin/moderation/AccountsDetail.vue:45
+#: front/src/views/admin/moderation/DomainsDetail.vue:30
+msgctxt "Content/Moderation/Link/Verb"
+msgid "View in Django's admin"
+msgstr ""
+
+#: front/src/components/Home.vue:169
+msgctxt "Content/Home/Link"
+msgid "View more…"
+msgstr ""
+
+#: front/src/components/library/AlbumBase.vue:62
+#: front/src/components/library/ArtistBase.vue:73
+#: front/src/components/library/TrackBase.vue:78
+#: front/src/components/metadata/ArtistCard.vue:49
+#: front/src/components/metadata/ReleaseCard.vue:53
+msgctxt "Content/*/*/Clickable, Verb"
+msgid "View on MusicBrainz"
+msgstr ""
+
+#: front/src/components/manage/moderation/ReportCard.vue:124
+msgctxt "Content/Moderation/Link"
+msgid "View public page"
+msgstr ""
+
+#: front/src/components/manage/library/LibrariesTable.vue:11
+#: front/src/components/manage/library/LibrariesTable.vue:51
+#: front/src/components/manage/library/UploadsTable.vue:11
+#: front/src/components/manage/library/UploadsTable.vue:63
+#: front/src/views/admin/library/LibraryDetail.vue:94
+#: front/src/views/admin/library/UploadDetail.vue:101
+#: front/src/views/content/libraries/Form.vue:18
+msgctxt "*/*/*"
+msgid "Visibility"
+msgstr ""
+
+#: front/src/components/Home.vue:91
+msgctxt "Content/Home/Link"
+msgid "Visit funkwhale.audio"
+msgstr ""
+
+#: front/src/components/library/AlbumDetail.vue:4
+msgctxt "Content/Album/"
+msgid "Volume %{ number }"
+msgstr ""
+
+#: front/src/components/federation/FetchButton.vue:69
+msgctxt "Popup/*/Loading.Title"
+msgid "Waiting for result…"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:285
+msgctxt "Content/Settings/Error message.Title"
+msgid "We cannot delete your account"
+msgstr ""
+
+#: front/src/components/auth/LoginForm.vue:3
+msgctxt "Content/Login/Error message.Title"
+msgid "We cannot log you in"
+msgstr ""
+
+#: front/src/components/auth/ApplicationForm.vue:3
+msgctxt "Content/*/Error message.Title"
+msgid "We cannot save your changes"
+msgstr ""
+
+#: front/src/views/Notifications.vue:39
+msgctxt "Content/Notifications/Paragraph"
+msgid "We noticed you've been here for a while. If Funkwhale is useful to you, we could use your help to make it even better!"
+msgstr ""
+
+#: front/src/components/library/FileUpload.vue:39
+msgctxt "Content/Library/Link"
+msgid "We recommend using Picard for that purpose."
+msgstr ""
+
+#: front/src/components/moderation/ReportModal.vue:35
+msgctxt "*/*/Field,Help"
+msgid "We'll use this email if we need to contact you regarding this report."
+msgstr ""
+
+#: front/src/components/Home.vue:207
+msgctxt "Head/Home/Title"
+msgid "Welcome"
+msgstr ""
+
+#: front/src/components/Home.vue:5
+msgctxt "Content/Home/Header"
+msgid "Welcome to %{ podName }!"
+msgstr ""
+
+#: front/src/components/audio/EmbedWizard.vue:23
+msgctxt "Popup/Embed/Input.Label"
+msgid "Widget height"
+msgstr ""
+
+#: front/src/components/audio/EmbedWizard.vue:16
+msgctxt "Popup/Embed/Input.Label"
+msgid "Widget width"
+msgstr ""
+
+#: front/src/components/auth/ApplicationForm.vue:157
+msgctxt "Content/OAuth Scopes/Label/Verb"
+msgid "Write"
+msgstr ""
+
+#: front/src/components/auth/Authorize.vue:21
+msgctxt "Content/Auth/Label/Noun"
+msgid "Write-only"
+msgstr ""
+
+#: front/src/components/auth/ApplicationForm.vue:158
+msgctxt "Content/OAuth Scopes/Help Text"
+msgid "Write-only access to user data"
+msgstr ""
+
+#: front/src/components/Sidebar.vue:133
+#: front/src/components/manage/moderation/AccountsTable.vue:72
+#: front/src/components/manage/moderation/DomainsTable.vue:12
+#: front/src/components/manage/moderation/DomainsTable.vue:69
+#: front/src/views/admin/moderation/DomainsDetail.vue:109
+msgctxt "*/*/*"
+msgid "Yes"
+msgstr ""
+
+#: front/src/components/auth/Logout.vue:8
+msgctxt "Content/Login/Button.Label"
+msgid "Yes, log me out!"
+msgstr ""
+
+#: front/src/views/content/libraries/Form.vue:19
+msgctxt "Content/Library/Paragraph"
+msgid "You are able to share your library with other people, regardless of its visibility."
+msgstr ""
+
+#: front/src/components/library/FileUpload.vue:32
+msgctxt "Content/Library/Paragraph"
+msgid "You are about to upload music to your library. Before proceeding, please ensure that:"
+msgstr ""
+
+#: front/src/components/SetInstanceModal.vue:12
+msgctxt "Popup/Login/Paragraph"
+msgid "You are currently connected to <a href=\"%{ url }\" target=\"_blank\">%{ hostname }&nbsp;<i class=\"external icon\"/></a>. If you continue, you will be disconnected from your current instance and all your local data will be deleted."
+msgstr ""
+
+#: front/src/components/library/ArtistDetail.vue:6
+msgctxt "Content/Artist/Paragraph"
+msgid "You are currently hiding content related to this artist."
+msgstr ""
+
+#: front/src/components/auth/Logout.vue:7
+msgctxt "Content/Login/Paragraph"
+msgid "You are currently logged in as %{ username }"
+msgstr ""
+
+#: front/src/components/library/FileUpload.vue:35
+msgctxt "Content/Library/List item"
+msgid "You are not uploading copyrighted content in a public library, otherwise you may be infringing the law"
+msgstr ""
+
+#: front/src/components/SetInstanceModal.vue:98
+msgctxt "*/Instance/Message"
+msgid "You are now using the Funkwhale instance at %{ url }"
+msgstr ""
+
+#: front/src/views/content/Home.vue:17
+msgctxt "Content/Library/Paragraph"
+msgid "You can follow libraries from other users to get access to new music. Public libraries can be followed immediately, while following a private library requires approval from its owner."
+msgstr ""
+
+#: front/src/components/moderation/FilterModal.vue:31
+msgctxt "Popup/Moderation/Paragraph"
+msgid "You can manage and update your filters any time from your account settings."
+msgstr ""
+
+#: front/src/views/auth/EmailConfirm.vue:24
+msgctxt "Content/Signup/Paragraph"
+msgid "You can now use the service without limitations."
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:278
+msgctxt "Content/Settings/Paragraph'"
+msgid "You can permanently and irreversibly delete your account and all the associated data using the form below. You will be asked for confirmation."
+msgstr ""
+
+#: front/src/components/library/radios/Builder.vue:7
+msgctxt "Content/Radio/Paragraph"
+msgid "You can use this interface to build your own custom radio, which will play tracks according to your criteria."
+msgstr ""
+
+#: front/src/components/auth/SubsonicTokenForm.vue:7
+msgctxt "Content/Settings/Paragraph"
+msgid "You can use those to enjoy your playlist and music in offline mode, on your smartphone or tablet, for instance."
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:202
+msgctxt "Content/Applications/Paragraph"
+msgid "You don't have any application connected with your account."
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:261
+msgctxt "Content/Applications/Paragraph"
+msgid "You don't have any configured application yet."
+msgstr ""
+
+#: front/src/views/admin/moderation/AccountsDetail.vue:75
+msgctxt "Content/Moderation/Card.Title"
+msgid "You don't have any rule in place for this account."
+msgstr ""
+
+#: front/src/views/admin/moderation/DomainsDetail.vue:67
+msgctxt "Content/Moderation/Card.Title"
+msgid "You don't have any rule in place for this domain."
+msgstr ""
+
+#: front/src/components/library/EditForm.vue:52
+msgctxt "Content/Library/Paragraph"
+msgid "You don't have the permission to edit this object, but you can suggest changes. Once submitted, suggestions will be reviewed before approval."
+msgstr ""
+
+#: front/src/components/Sidebar.vue:175
+msgctxt "Sidebar/Player/Title"
+msgid "You have a radio playing"
+msgstr ""
+
+#: front/src/components/audio/Player.vue:69
+msgctxt "Sidebar/Player/Error message.Paragraph"
+msgid "You may have a connectivity issue."
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:100
+msgctxt "Popup/Settings/List item"
+msgid "You will be logged out from this session and have to log in with the new one"
+msgstr ""
+
+#: front/src/components/auth/Authorize.vue:51
+msgctxt "Content/Auth/Paragraph"
+msgid "You will be redirected to <strong>%{ url }</strong>"
+msgstr ""
+
+#: front/src/components/auth/Authorize.vue:49
+msgctxt "Content/Auth/Paragraph"
+msgid "You will be shown a code to copy-paste in the application."
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:71
+msgctxt "Content/Settings/Paragraph"
+msgid "You will have to update your password on your clients that use this password."
+msgstr ""
+
+#: front/src/components/moderation/FilterModal.vue:20
+msgctxt "Popup/Moderation/Paragraph"
+msgid "You will not see tracks, albums and user activity linked to this artist any more:"
+msgstr ""
+
+#: front/src/components/auth/SignupForm.vue:9
+msgctxt "Content/Signup/Form/Paragraph"
+msgid "Your account cannot be created."
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:281
+msgctxt "Content/Settings/Paragraph'"
+msgid "Your account will be deleted from our servers within a few minutes. We will also notify other servers who may have a copy of some of your data so they can proceed to deletion. Please note that some of these servers may be offline or unwilling to comply though."
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:215
+msgctxt "Content/Settings/Title/Noun"
+msgid "Your applications"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:38
+msgctxt "Content/Settings/Error message.Title"
+msgid "Your avatar cannot be saved"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:527
+msgctxt "*/Auth/Message"
+msgid "Your deletion request was submitted, your account and content will be deleted shortly"
+msgstr ""
+
+#: front/src/components/library/EditForm.vue:3
+msgctxt "Content/Library/Paragraph"
+msgid "Your edit was successfully submitted."
+msgstr ""
+
+#: front/src/components/favorites/List.vue:116
+msgctxt "Head/Favorites/Title"
+msgid "Your Favorites"
+msgstr ""
+
+#: front/src/views/Notifications.vue:5
+msgctxt "Content/Notifications/Title"
+msgid "Your messages"
+msgstr ""
+
+#: front/src/views/Notifications.vue:69
+msgctxt "Content/Notifications/Title"
+msgid "Your notifications"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:76
+msgctxt "Content/Settings/Error message.Title"
+msgid "Your password cannot be changed"
+msgstr ""
+
+#: front/src/views/auth/PasswordResetConfirm.vue:29
+msgctxt "Content/Signup/Card.Paragraph"
+msgid "Your password has been updated successfully."
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:14
+msgctxt "Content/Settings/Error message.Title"
+msgid "Your settings can't be updated"
+msgstr ""
+
+#: front/src/components/auth/Settings.vue:101
+msgctxt "Popup/Settings/List item"
+msgid "Your Subsonic password will be changed to a new, random one, logging you out from devices that used the old Subsonic password"
+msgstr ""
+
+#: front/src/entities.js:126
+msgctxt "*/*/*/Noun"
+msgid "MusicBrainz ID"
+msgstr ""
+
+#: front/src/main.js:110
+msgctxt "*/Error/Paragraph"
+msgid "You sent too many requests and have been rate limited, please try again in %{ delay }"
+msgstr ""
+
+#: front/src/main.js:113
+msgctxt "*/Error/Paragraph"
+msgid "You sent too many requests and have been rate limited, please try again later"
+msgstr ""
+
+#: front/src/components/library/AlbumBase.vue:208
+msgctxt "Content/Album/Header.Title"
+msgid "Album containing %{ count } track, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgid_plural "Album containing %{ count } tracks, by <a class=\"internal\" href=\"%{ artistUrl }\">%{ artist }</a>"
+msgstr[0] ""
+msgstr[1] ""
+
+#: front/src/components/audio/PlayButton.vue:246
+msgctxt "*/Queue/Message"
+msgid "%{ count } track was added to your queue"
+msgid_plural "%{ count } tracks were added to your queue"
+msgstr[0] ""
+msgstr[1] ""
diff --git a/front/package.json b/front/package.json
index 22b5f3bb5ed35aebd5cb562c5f752ec2a65f8533..c6b71944e8e59ebad4df087562dbd368c17fe64c 100644
--- a/front/package.json
+++ b/front/package.json
@@ -15,13 +15,15 @@
     "dateformat": "^3.0.3",
     "diff": "^4.0.1",
     "django-channels": "^1.1.6",
+    "fomantic-ui-css": "^2.7",
     "howler": "^2.0.14",
     "js-logger": "^1.4.1",
     "jwt-decode": "^2.2.0",
     "lodash": "^4.17.10",
     "masonry-layout": "^4.2.2",
     "moment": "^2.22.2",
-    "semantic-ui-css": "^2.4.1",
+    "qs": "^6.7.0",
+    "sanitize-html": "^1.20.1",
     "showdown": "^1.8.6",
     "vue": "^2.5.17",
     "vue-gettext": "^2.1.0",
@@ -44,9 +46,11 @@
     "chai": "^4.1.2",
     "easygettext": "^2.6.3",
     "eslint-plugin-html": "^4.0.5",
+    "glob-all": "^3.1.0",
     "mocha": "^5.2.0",
     "moxios": "^0.4.0",
     "node-sass": "^4.9.3",
+    "purgecss-webpack-plugin": "^1.6.0",
     "sass-loader": "^7.1.0",
     "sinon": "^6.1.5",
     "vue-template-compiler": "^2.5.17",
@@ -85,9 +89,20 @@
     }
   },
   "browserslist": [
-    "> 1%",
-    "last 2 versions",
-    "not ie <= 8"
+    "IE >= 11",
+    "Firefox >= 52",
+    "ChromeAndroid >= 70",
+    "Chrome >= 49",
+    "Safari >= 9",
+    "Edge >= 16",
+    "Opera >= 57",
+    "OperaMini >= 57",
+    "Samsung >= 7",
+    "FirefoxAndroid >= 63",
+    "UCAndroid >= 11",
+    "iOS >= 9",
+    "Android >= 4",
+    "not dead"
   ],
   "author": "Eliot Berriot <contact@eliotberriot.com>",
   "description": "Funkwhale front-end"
diff --git a/front/public/index.html b/front/public/index.html
index 7b09feaf028a141997212222c7967639038a1bd1..142419ca63f3295dadbf8773931f2cbe7e37e1cc 100644
--- a/front/public/index.html
+++ b/front/public/index.html
@@ -9,7 +9,7 @@
   <title>Funkwhale</title>
 </head>
 
-<body>
+<body class="theme-light" id="body">
   <noscript>
     <strong>We're sorry but Funkwhale doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
   </noscript>
diff --git a/front/scripts/i18n-extract.sh b/front/scripts/i18n-extract.sh
index 1b36d7b1cc635da1e34531b29a5dad3dcd1b36d8..df2c37ea523c066da48e145b14f5149479af8278 100755
--- a/front/scripts/i18n-extract.sh
+++ b/front/scripts/i18n-extract.sh
@@ -4,7 +4,7 @@ locales_dir="locales"
 sources=$(find src -name '*.vue' -o -name '*.html' 2> /dev/null)
 js_sources=$(find src -name '*.vue' -o -name '*.js')
 touch $locales_dir/app.pot
-
+GENERATE=${GENERATE-true}
 # Create a main .pot template, then generate .po files for each available language.
 # Extract gettext strings from templates files and create a POT dictionary template.
 $(yarn bin)/gettext-extract --attribute v-translate --quiet --output $locales_dir/app.pot $sources
@@ -18,12 +18,14 @@ xgettext --language=JavaScript --keyword=npgettext:1c,2,3 \
 # Fix broken files path/lines in pot
 sed -e 's|#: src/|#: front/src/|' -i $locales_dir/app.pot
 
-# Generate .po files for each available language.
-echo $locales
-for lang in $locales; do \
-    po_file=$locales_dir/$lang/LC_MESSAGES/app.po; \
-    echo "msgmerge --update $po_file "; \
-    mkdir -p $(dirname $po_file); \
-    [ -f $po_file ] && msgmerge --lang=$lang --update $po_file $locales_dir/app.pot --no-wrap || msginit --no-wrap --no-translator --locale=$lang --input=$locales_dir/app.pot --output-file=$po_file; \
-    msgattrib --no-wrap --no-obsolete -o $po_file $po_file; \
-done;
+if [ $GENERATE = 'true' ]; then
+    # Generate .po files for each available language.
+    echo $locales
+    for lang in $locales; do \
+        po_file=$locales_dir/$lang/LC_MESSAGES/app.po; \
+        echo "msgmerge --update $po_file "; \
+        mkdir -p $(dirname $po_file); \
+        [ -f $po_file ] && msgmerge --lang=$lang --update $po_file $locales_dir/app.pot --no-wrap || msginit --no-wrap --no-translator --locale=$lang --input=$locales_dir/app.pot --output-file=$po_file; \
+        msgattrib --no-wrap --no-obsolete -o $po_file $po_file; \
+    done;
+fi
diff --git a/front/scripts/print-duplicates-source.py b/front/scripts/print-duplicates-source.py
new file mode 100644
index 0000000000000000000000000000000000000000..9d7733b6b7044a6d84761c6ce531e4643e6be326
--- /dev/null
+++ b/front/scripts/print-duplicates-source.py
@@ -0,0 +1,33 @@
+import argparse
+import collections
+import polib
+
+
+def print_duplicates(path):
+    pofile = polib.pofile(path)
+
+    contexts_by_id = collections.defaultdict(list)
+    for e in pofile:
+        contexts_by_id[e.msgid].append(e.msgctxt)
+    count = collections.Counter(
+        [e.msgid for e in pofile]
+    )
+    duplicates = [
+        (k, v) for k, v in count.items()
+        if v > 1
+    ]
+    for k, v in sorted(duplicates, key=lambda r: r[1], reverse=True):
+        print('{} entries - {}:'.format(v, k))
+        for ctx in contexts_by_id[k]:
+            print('  - {}'.format(ctx))
+        print()
+
+    total_duplicates = sum([v - 1 for _, v in duplicates])
+    print('{} total duplicates'.format(total_duplicates))
+
+if __name__ == "__main__":
+    parser = argparse.ArgumentParser()
+    parser.add_argument("po", help="Path of the po file to use as a source")
+    args = parser.parse_args()
+
+    print_duplicates(path=args.po)
diff --git a/front/src/App.vue b/front/src/App.vue
index 5711466c5bb9cd29eaec058174a9fe7a4c5376b9..5be97dfb5655f43f5093353fcfffd55e034aa310 100644
--- a/front/src/App.vue
+++ b/front/src/App.vue
@@ -21,6 +21,7 @@
       ></app-footer>
       <playlist-modal v-if="$store.state.auth.authenticated"></playlist-modal>
       <filter-modal v-if="$store.state.auth.authenticated"></filter-modal>
+      <report-modal></report-modal>
       <shortcuts-modal @update:show="showShortcutsModal = $event" :show="showShortcutsModal"></shortcuts-modal>
       <GlobalEvents @keydown.h.exact="showShortcutsModal = !showShortcutsModal"/>
     </template>
@@ -41,6 +42,7 @@ import moment from  'moment'
 import locales from './locales'
 import PlaylistModal from '@/components/playlists/PlaylistModal'
 import FilterModal from '@/components/moderation/FilterModal'
+import ReportModal from '@/components/moderation/ReportModal'
 import ShortcutsModal from '@/components/ShortcutsModal'
 import SetInstanceModal from '@/components/SetInstanceModal'
 
@@ -50,6 +52,7 @@ export default {
     Sidebar,
     AppFooter,
     FilterModal,
+    ReportModal,
     PlaylistModal,
     ShortcutsModal,
     GlobalEvents,
@@ -59,21 +62,27 @@ export default {
   data () {
     return {
       bridge: null,
-      nodeinfo: null,
       instanceUrl: null,
       showShortcutsModal: false,
       showSetInstanceModal: false,
     }
   },
-  created () {
+  async created () {
     this.openWebsocket()
     let self = this
-    this.autodetectLanguage()
+    if (!this.$store.state.ui.selectedLanguage) {
+      this.autodetectLanguage()
+    }
     setInterval(() => {
       // used to redraw ago dates every minute
       self.$store.commit('ui/computeLastDate')
     }, 1000 * 60)
-    if (!this.$store.state.instance.instanceUrl) {
+    const urlParams = new URLSearchParams(window.location.search);
+    const serverUrl = urlParams.get('_server')
+    if (serverUrl) {
+      this.$store.commit('instance/instanceUrl', serverUrl)
+    }
+    else if (!this.$store.state.instance.instanceUrl) {
       // we have several way to guess the API server url. By order of precedence:
       // 1. use the url provided in settings.json, if any
       // 2. use the url specified when building via VUE_APP_INSTANCE_URL
@@ -84,9 +93,9 @@ export default {
       // needed to trigger initialization of axios
       this.$store.commit('instance/instanceUrl', this.$store.state.instance.instanceUrl)
     }
+    await this.fetchNodeInfo()
     this.$store.dispatch('auth/check')
     this.$store.dispatch('instance/fetchSettings')
-    this.fetchNodeInfo()
     this.$store.commit('ui/addWebsocketEventHandler', {
       eventName: 'inbox.item_added',
       id: 'sidebarCount',
@@ -102,6 +111,11 @@ export default {
       id: 'sidebarReviewEditCount',
       handler: this.incrementReviewEditCountInSidebar
     })
+    this.$store.commit('ui/addWebsocketEventHandler', {
+      eventName: 'report.created',
+      id: 'sidebarPendingReviewReportCount',
+      handler: this.incrementPendingReviewReportsCountInSidebar
+    })
   },
   mounted () {
     let self = this
@@ -128,6 +142,10 @@ export default {
       eventName: 'mutation.updated',
       id: 'sidebarReviewEditCount',
     })
+    this.$store.commit('ui/removeWebsocketEventHandler', {
+      eventName: 'mutation.updated',
+      id: 'sidebarPendingReviewReportCount',
+    })
     this.disconnect()
   },
   methods: {
@@ -137,11 +155,12 @@ export default {
     incrementReviewEditCountInSidebar (event) {
       this.$store.commit('ui/incrementNotifications', {type: 'pendingReviewEdits', value: event.pending_review_count})
     },
-    fetchNodeInfo () {
-      let self = this
-      axios.get('instance/nodeinfo/2.0/').then(response => {
-        self.nodeinfo = response.data
-      })
+    incrementPendingReviewReportsCountInSidebar (event) {
+      this.$store.commit('ui/incrementNotifications', {type: 'pendingReviewReports', value: event.unresolved_count})
+    },
+    async fetchNodeInfo () {
+      let response = await axios.get('instance/nodeinfo/2.0/')
+      this.$store.commit('instance/nodeinfo', response.data)
     },
     autodetectLanguage () {
       let userLanguage = navigator.language || navigator.userLanguage
@@ -217,7 +236,8 @@ export default {
   },
   computed: {
     ...mapState({
-      messages: state => state.ui.messages
+      messages: state => state.ui.messages,
+      nodeinfo: state => state.instance.nodeinfo,
     }),
     ...mapGetters({
       currentTrack: 'queue/currentTrack'
@@ -251,6 +271,14 @@ export default {
       this.$store.dispatch('instance/fetchSettings')
       this.fetchNodeInfo()
     },
+    '$store.state.ui.theme': {
+      immediate: true,
+      handler (newValue, oldValue) {
+        let oldTheme = oldValue || 'light'
+        document.body.classList.remove(`theme-${oldTheme}`)
+        document.body.classList.add(`theme-${newValue}`)
+      },
+    },
     '$store.state.auth.authenticated' (newValue) {
       if (!newValue) {
         this.disconnect()
diff --git a/front/src/EmbedFrame.vue b/front/src/EmbedFrame.vue
index 9c677e56e3a52ac1845460e86657c04fda60e873..f44f1ba4d2d07654ac5857f75eaf69cf70c5cbea 100644
--- a/front/src/EmbedFrame.vue
+++ b/front/src/EmbedFrame.vue
@@ -72,10 +72,10 @@
             <span v-else-if="error === 'invalid_id'" class="error">Widget improperly configured (missing resource id).</span>
             <span v-else-if="error === 'server_not_found'" class="error">Track not found.</span>
             <span v-else-if="error === 'server_requires_auth'" class="error">You need to login to access this resource.</span>
-            <span v-else-if="error === 'server_error'" class="error">A server error occured.</span>
-            <span v-else-if="error === 'server_error'" class="error">An unknown error occured while loading track data from server.</span>
+            <span v-else-if="error === 'server_error'" class="error">A server error occurred.</span>
+            <span v-else-if="error === 'server_error'" class="error">An unknown error occurred while loading track data from server.</span>
             <span v-else-if="currentTrack && currentTrack.sources.length === 0" class="error">This track is unavailable.</span>
-            <span v-else class="error">An unknown error occured while loading track data.</span>
+            <span v-else class="error">An unknown error occurred while loading track data.</span>
           </div>
           <a title="Funkwhale" href="https://funkwhale.audio" target="_blank" rel="noopener noreferrer" class="logo-wrapper">
             <logo :fill="currentTheme.textColor" class="logo"></logo>
@@ -139,7 +139,7 @@ export default {
   data () {
     return {
       time,
-      supportedTypes: ['track', 'album', 'artist'],
+      supportedTypes: ['track', 'album', 'artist', 'playlist'],
       baseUrl: '',
       error: null,
       type: null,
@@ -235,6 +235,9 @@ export default {
       if (type === 'artist') {
         this.fetchTracks({artist: id, playable: true, ordering: "-release_date,disc_number,position"})
       }
+      if (type === 'playlist') {
+        this.fetchTracks({}, `/api/v1/playlists/${id}/tracks/`)
+      }
     },
     play (index) {
       this.currentIndex = index
@@ -269,9 +272,10 @@ export default {
         self.isLoading = false;
       })
     },
-    fetchTracks (filters) {
+    fetchTracks (filters, path) {
+      path = path || "/api/v1/tracks/"
       let self = this
-      let url = `${this.baseUrl}/api/v1/tracks/`
+      let url = `${this.baseUrl}${path}`
       axios.get(url, {params: filters}).then(response => {
         self.tracks = self.parseTracks(response.data.results)
         self.isLoading = false;
@@ -297,6 +301,11 @@ export default {
     },
     parseTracks (tracks) {
       let self = this
+      if (this.type === 'playlist') {
+        tracks = tracks.map((t) => {
+          return t.track
+        })
+      }
       return tracks.map(t => {
         return {
           id: t.id,
@@ -374,6 +383,8 @@ export default {
 </script>
 
 <style lang="scss">
+@import "~plyr/src/sass/plyr.scss";
+
 html,
 body,
 main {
diff --git a/front/src/assets/network.png b/front/src/assets/network.png
new file mode 100644
index 0000000000000000000000000000000000000000..e9d5f4ddd465afcb18acd5d7359c4b788b706d9a
Binary files /dev/null and b/front/src/assets/network.png differ
diff --git a/front/src/components/About.vue b/front/src/components/About.vue
index 87f741aa819f38ba84c856522979f25e6f6016d1..3c84b48f9642bc132b54cd16a8b0508fb669711e 100644
--- a/front/src/components/About.vue
+++ b/front/src/components/About.vue
@@ -1,38 +1,197 @@
 <template>
-  <main class="main pusher" v-title="labels.title">
-    <section class="ui vertical center aligned stripe segment">
-      <div class="ui text container">
-        <h1 class="ui huge header">
-            <span v-translate="{instance: instance.name.value}" translate-context="Content/About/Title/Short, Noun" v-if="instance.name.value" :translate-params="{instance: instance.name.value}">
-             About %{ instance }
-            </span>
-            <translate translate-context="Content/About/Title" v-else>About this instance</translate>
+  <main class="main pusher">
+    <section :class="['ui', 'head', {'with-background': banner}, 'vertical', 'center', 'aligned', 'stripe', 'segment']" :style="headerStyle">
+      <div class="segment-content">
+        <h1 class="ui center aligned large header">
+          <translate translate-context="Content/Home/Header"
+            :translate-params="{podName: podName}">
+            About %{ podName }
+          </translate>
+          <div v-if="shortDescription" class="sub header">
+            {{ shortDescription }}
+          </div>
         </h1>
-        <stats></stats>
       </div>
     </section>
     <section class="ui vertical stripe segment">
-      <div
-        class="ui middle aligned stackable text container">
-        <p
-        v-if="!instance.short_description.value && !instance.long_description.value"><translate translate-context="Content/About/Paragraph">Unfortunately, the owners of this instance did not yet take the time to complete this page.</translate></p>
-        <router-link
-          class="ui button"
-          v-if="$store.state.auth.availablePermissions['settings']"
-          :to="{path: '/manage/settings', hash: 'instance'}">
-          <i class="pencil icon"></i><translate translate-context="Content/Settings/Button.Label/Verb">Edit instance info</translate>
-        </router-link>
-        <div class="ui hidden divider"></div>
-      </div>
-      <div
-        v-if="instance.short_description.value"
-        class="ui middle aligned stackable text container">
-        <p>{{ instance.short_description.value }}</p>
-      </div>
-      <div
-        v-if="markdown && instance.long_description.value"
-        class="ui middle aligned stackable text container"
-        v-html="markdown.makeHtml(instance.long_description.value)">
+      <div class="ui container">
+        <div class="ui mobile reversed stackable grid">
+          <div class="ten wide column">
+            <div class="ui text container">
+              <h3 class="ui header" id="description">
+                <translate translate-context="Content/About/Header">About this pod</translate>
+              </h3>
+              <div v-html="markdown.makeHtml(longDescription)" v-if="longDescription"></div>
+              <p v-else>
+                <translate translate-context="Content/Home/Paragraph">No description available.</translate>
+              </p>
+              <h3 class="ui header" id="rules">
+                <translate translate-context="Content/About/Header">Rules</translate>
+              </h3>
+              <div v-html="markdown.makeHtml(rules)" v-if="rules"></div>
+              <p v-else>
+                <translate translate-context="Content/Home/Paragraph">No rules available.</translate>
+              </p>
+              <h3 class="ui header" id="terms">
+                <translate translate-context="Content/About/Header">Terms and privacy policy</translate>
+              </h3>
+              <div v-html="markdown.makeHtml(terms)" v-if="terms"></div>
+              <p v-else>
+                <translate translate-context="Content/Home/Paragraph">No terms available.</translate>
+              </p>
+            </div>
+          </div>
+          <div class="six wide column">
+            <div class="ui raised segment">
+              <h3 class="ui header">
+                <translate translate-context="Content/About/Header">Contents</translate>
+              </h3>
+              <div class="ui list">
+                <div class="ui item">
+                  <a href="#description">
+                    <translate translate-context="Content/About/Header">About this pod</translate>
+                  </a>
+                </div>
+                <div class="ui item">
+                  <a href="#rules">
+                    <translate translate-context="Content/About/Header">Rules</translate>
+                  </a>
+                </div>
+                <div class="ui item">
+                  <a href="#terms">
+                    <translate translate-context="Content/About/Header">Terms and privacy policy</translate>
+                  </a>
+                </div>
+              </div>
+              <template v-if="contactEmail">
+                <h3 class="header">
+                  <translate translate-context="Content/Home/Header/Name">Contact</translate>
+                </h3>
+                <a :href="`mailto:${contactEmail}`">{{ contactEmail }}</a>
+              </template>
+              <h3 class="header">
+                <translate translate-context="Content/About/Header/Name">Pod configuration</translate>
+              </h3>
+              <table class="ui very basic table">
+                <tbody>
+                  <tr v-if="version">
+                    <td>
+                      <translate translate-context="*/*/*">Funkwhale version</translate>
+                    </td>
+                    <td>
+                      {{ version }}
+                    </td>
+                  </tr>
+                  <tr>
+                    <td>
+                      <translate translate-context="*/*/*">Registrations</translate>
+                    </td>
+                    <td v-if="openRegistrations">
+                      <i class="check icon"></i>
+                      <translate translate-context="*/*/*/State of registrations">Open</translate>
+                    </td>
+                    <td v-else>
+                      <i class="x icon"></i>
+                      <translate translate-context="*/*/*/State of registrations">Closed</translate>
+                    </td>
+                  </tr>
+                  <tr>
+                    <td>
+                      <translate translate-context="*/*/*">Upload quota</translate>
+                    </td>
+                    <td v-if="defaultUploadQuota">
+                      {{ defaultUploadQuota * 1000 * 1000 | humanSize }}
+                    </td>
+                    <td v-else>
+                      <translate translate-context="*/*/*">N/A</translate>
+                    </td>
+                  </tr>
+                  <tr>
+                    <td>
+                      <translate translate-context="*/*/*">Federation</translate>
+                    </td>
+                    <td v-if="federationEnabled">
+                      <i class="check icon"></i>
+                      <translate translate-context="*/*/*/State of feature">Enabled</translate>
+                    </td>
+                    <td v-else>
+                      <i class="x icon"></i>
+                      <translate translate-context="*/*/*/State of feature">Disabled</translate>
+                    </td>
+                  </tr>
+                  <tr>
+                    <td>
+                      <translate translate-context="*/*/*">Anonymous access</translate>
+                    </td>
+                    <td v-if="anonymousCanListen">
+                      <i class="check icon"></i>
+                      <translate translate-context="*/*/*/State of feature">Enabled</translate>
+                    </td>
+                    <td v-else>
+                      <i class="x icon"></i>
+                      <translate translate-context="*/*/*/State of feature">Disabled</translate>
+                    </td>
+                  </tr>
+                  <tr>
+                    <td>
+                      <translate translate-context="*/*/*">Allow-list</translate>
+                    </td>
+                    <td v-if="allowListEnabled">
+                      <i class="check icon"></i>
+                      <translate translate-context="*/*/*/State of feature">Enabled</translate>
+                    </td>
+                    <td v-else>
+                      <i class="x icon"></i>
+                      <translate translate-context="*/*/*/State of feature">Disabled</translate>
+                    </td>
+                  </tr>
+                  <tr v-if="allowListDomains">
+                    <td>
+                      <translate translate-context="*/*/*">Allowed domains</translate>
+                    </td>
+                    <td>
+                      <translate :translate-n="allowListDomains.length"  translate-plural="%{ count } allowed domains" :translate-params="{count: allowListDomains.length}" translate-context="*/*/*">%{ count } allowed domains</translate>
+                      <br>
+                      <a @click.prevent="showAllowedDomains = !showAllowedDomains">
+                        <translate v-if="showAllowedDomains" key="1" translate-context="*/*/*/Verb">Hide</translate>
+                        <translate v-else key="2" translate-context="*/*/*/Verb">Show</translate>
+                      </a>
+                      <ul class="ui list" v-if="showAllowedDomains">
+                        <li v-for="domain in allowListDomains" :key="domain">
+                          <a :href="`https://${domain}`" target="_blank" rel="noopener">{{ domain }}</a>
+                        </li>
+                      </ul>
+                    </td>
+                  </tr>
+                </tbody>
+              </table>
+
+              <template v-if="stats">
+                <h3 class="header">
+                  <translate translate-context="Content/Home/Header">Statistics</translate>
+                </h3>
+                <p>
+                  <i class="user grey icon"></i><translate translate-context="Content/Home/Stat" :translate-params="{count: stats.users.toLocaleString($store.state.ui.momentLocale) }" :translate-n="stats.users" translate-plural="%{ count } active users">%{ count } active user</translate>
+                </p>
+                <p>
+                  <i class="music grey icon"></i><translate translate-context="Content/Home/Stat" :translate-params="{count: parseInt(stats.hours).toLocaleString($store.state.ui.momentLocale)}" :translate-n="parseInt(stats.hours)" translate-plural="%{ count } hours of music">%{ count } hour of music</translate>
+                </p>
+                <p v-if="stats.artists">
+                  <i class="users grey icon"></i><translate translate-context="Content/Home/Stat" :translate-params="{count: stats.artists.toLocaleString($store.state.ui.momentLocale) }" :translate-n="stats.artists" translate-plural="%{ count } artists">%{ count } artists</translate>
+                </p>
+                <p v-if="stats.albums">
+                  <i class="headphones grey icon"></i><translate translate-context="Content/Home/Stat" :translate-params="{count: stats.albums.toLocaleString($store.state.ui.momentLocale) }" :translate-n="stats.albums" translate-plural="%{ count } albums">%{ count } albums</translate>
+                </p>
+                <p v-if="stats.tracks">
+                  <i class="file grey icon"></i><translate translate-context="Content/Home/Stat" :translate-params="{count: stats.tracks.toLocaleString($store.state.ui.momentLocale) }" :translate-n="stats.tracks" translate-plural="%{ count } tracks">%{ count } tracks</translate>
+                </p>
+                <p v-if="stats.listenings">
+                  <i class="play grey icon"></i><translate translate-context="Content/Home/Stat" :translate-params="{count: stats.listenings.toLocaleString($store.state.ui.momentLocale) }" :translate-n="stats.listenings" translate-plural="%{ count } listenings">%{ count } listenings</translate>
+                </p>
+              </template>
+            </div>
+          </div>
+        </div>
       </div>
     </section>
   </main>
@@ -40,37 +199,122 @@
 
 <script>
 import { mapState } from "vuex"
-import Stats from "@/components/instance/Stats"
+import _ from '@/lodash'
+import showdown from 'showdown'
 
 export default {
-  components: {
-    Stats
-  },
   data () {
     return {
-      markdown: null
+      markdown: new showdown.Converter(),
+      showAllowedDomains: false,
     }
   },
-  created () {
-    this.$store.dispatch("instance/fetchSettings")
-    let self = this
-    import('showdown').then(module => {
-      self.markdown = new module.default.Converter()
-    })
-  },
   computed: {
-    ...mapState({
-      instance: state => state.instance.settings.instance
+
+  ...mapState({
+      nodeinfo: state => state.instance.nodeinfo,
     }),
-    labels() {
-      return {
-        title: this.$pgettext('Content/About/Title', "About this instance")
+    podName() {
+      return _.get(this.nodeinfo, 'metadata.nodeName') || "Funkwhale"
+    },
+    banner () {
+      return _.get(this.nodeinfo, 'metadata.banner')
+    },
+    shortDescription () {
+      return _.get(this.nodeinfo, 'metadata.shortDescription')
+    },
+    longDescription () {
+      return _.get(this.nodeinfo, 'metadata.longDescription')
+    },
+    rules () {
+      return _.get(this.nodeinfo, 'metadata.rules')
+    },
+    terms () {
+      return _.get(this.nodeinfo, 'metadata.terms')
+    },
+    stats () {
+      let data = {
+        users: _.get(this.nodeinfo, 'usage.users.activeMonth', null),
+        hours: _.get(this.nodeinfo, 'metadata.library.music.hours', null),
+        artists: _.get(this.nodeinfo, 'metadata.library.artists.total', null),
+        albums: _.get(this.nodeinfo, 'metadata.library.albums.total', null),
+        tracks: _.get(this.nodeinfo, 'metadata.library.tracks.total', null),
+        listenings: _.get(this.nodeinfo, 'metadata.usage.listenings.total', null),
       }
-    }
+      if (data.users === null || data.artists === null) {
+        return
+      }
+      return data
+    },
+    contactEmail () {
+      return _.get(this.nodeinfo, 'metadata.contactEmail')
+    },
+    anonymousCanListen () {
+      return _.get(this.nodeinfo, 'metadata.library.anonymousCanListen')
+    },
+    allowListEnabled () {
+      return _.get(this.nodeinfo, 'metadata.allowList.enabled')
+    },
+    allowListDomains () {
+      return _.get(this.nodeinfo, 'metadata.allowList.domains')
+    },
+    version () {
+      return _.get(this.nodeinfo, 'software.version')
+    },
+    openRegistrations () {
+      return _.get(this.nodeinfo, 'openRegistrations')
+    },
+    defaultUploadQuota () {
+      return _.get(this.nodeinfo, 'metadata.defaultUploadQuota')
+    },
+    federationEnabled () {
+      return _.get(this.nodeinfo, 'metadata.library.federationEnabled')
+    },
+    headerStyle() {
+      if (!this.banner) {
+        return ""
+      }
+      return (
+        "background-image: url(" +
+        this.$store.getters["instance/absoluteUrl"](this.banner) +
+        ")"
+      )
+    },
   }
 }
 </script>
 
 <!-- Add "scoped" attribute to limit CSS to this component only -->
-<style scoped>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style scoped lang="scss">
+
+.ui.list .list.icon {
+  padding: 0;
+}
+
+h1.header, h1 .sub.header {
+  text-shadow: 0 2px 0 rgba(0,0,0,.8);
+  color: #fff !important;
+}
+h1.ui.header {
+  font-size: 3em;
+}
+h1.ui.header .sub.header {
+  font-size: 0.8em;
+}
+.main.pusher {
+  margin-top: 0;
+  min-height: 10em;
+}
+section.segment.head {
+  padding: 8em 3em;
+  background: linear-gradient(90deg, rgba(40,88,125,1) 0%, rgba(64,130,180,1) 100%);
+  background-repeat: no-repeat;
+  background-size: cover;
+}
+#pod {
+  font-size: 110%;
+  display: block;
+}
 </style>
diff --git a/front/src/components/Footer.vue b/front/src/components/Footer.vue
index 2d06b50c768e368c538b15bbcf6b33a00c6b42ab..d758b456bf9edaea8b6af87efe6e349a7e640778 100644
--- a/front/src/components/Footer.vue
+++ b/front/src/components/Footer.vue
@@ -33,6 +33,14 @@
             <a href="https://funkwhale.audio/apps" class="item" target="_blank"><translate translate-context="Footer/*/List item.Link">Mobile and desktop apps</translate></a>
             <div role="button" class="item" @click="$emit('show:shortcuts-modal')"><translate translate-context="*/*/*/Noun">Keyboard shortcuts</translate></div>
           </div>
+          <div class="ui form">
+            <div class="ui field">
+              <label><translate translate-context="Footer/Settings/Dropdown.Label/Short, Verb">Change theme</translate></label>
+              <select class="ui dropdown" :value="$store.state.ui.theme" @change="$store.commit('ui/theme', $event.target.value)">
+                <option v-for="theme in themes" :key="theme.key" :value="theme.key">{{ theme.name }}</option>
+              </select>
+            </div>
+          </div>
         </section>
         <section class="four wide column">
           <h4 v-translate translate-context="Footer/*/Link" class="ui header">Getting help</h4>
@@ -76,15 +84,18 @@ export default {
       parser.href = url
       return parser.hostname
     },
+    themes () {
+      return [
+        {
+          name: this.$pgettext('Footer/Settings/Dropdown.Label/Theme name', 'Light'),
+          key: 'light'
+        },
+        {
+          name: this.$pgettext('Footer/Settings/Dropdown.Label/Theme name', 'Dark'),
+          key: 'dark'
+        }
+      ]
+    }
   }
 }
 </script>
-<style scoped>
-footer p {
-  color: grey;
-}
-
-footer#footer div.item:hover {
-  color: rgba(0, 0, 0, 0.87);
-}
-</style>
diff --git a/front/src/components/Home.vue b/front/src/components/Home.vue
index bbcc9a8f959a89b9d20ffadc402acfa74da5274b..34bc19a32c3fd836af59ec0abd260c196e0c5174 100644
--- a/front/src/components/Home.vue
+++ b/front/src/components/Home.vue
@@ -1,152 +1,276 @@
 <template>
   <main class="main pusher" v-title="labels.title">
-    <section class="ui vertical center aligned stripe segment">
-      <div class="ui text container">
-        <h1 class="ui huge header">
-          <translate translate-context="Content/Home/Title/Verb">Welcome on Funkwhale</translate>
+    <section :class="['ui', 'head', {'with-background': banner}, 'vertical', 'center', 'aligned', 'stripe', 'segment']" :style="headerStyle">
+      <div class="segment-content">
+        <h1 class="ui center aligned large header">
+          <translate translate-context="Content/Home/Header"
+            :translate-params="{podName: podName}">
+            Welcome to %{ podName }!
+          </translate>
+          <div v-if="shortDescription" class="sub header">
+            {{ shortDescription }}
+          </div>
         </h1>
-        <p><translate translate-context="Content/Home/Title">We think listening to music should be simple.</translate></p>
-        <router-link class="ui icon button" to="/about">
-          <i class="info icon"></i>
-          <translate translate-context="Content/Home/Button.Label/Verb">Learn more about this instance</translate>
-        </router-link>
-        <router-link class="ui icon teal button" to="/library">
-          <translate translate-context="Content/Home/Button.Label/Verb">Get me to the library</translate>
-          <i class="right arrow icon"></i>
-        </router-link>
       </div>
     </section>
     <section class="ui vertical stripe segment">
-      <div class="ui middle aligned stackable text container">
-        <div class="ui grid">
-          <div class="row">
-            <div class="eight wide left floated column">
-              <h2 class="ui header">
-                <translate translate-context="Content/Home/Title">Why funkwhale?</translate>
-              </h2>
-              <p><translate translate-context="Content/Home/Paragraph">That's simple: we loved Grooveshark and we want to build something even better.</translate></p>
-            </div>
-            <div class="four wide left floated column">
-              <img class="ui medium image" src="../assets/logo/logo.png" />
+      <div class="ui stackable grid">
+        <div class="ten wide column">
+          <h3 class="header">
+            <translate translate-context="Content/Home/Header">About this Funkwhale pod</translate>
+          </h3>
+          <div class="ui raised segment" id="pod">
+            <div class="ui stackable grid">
+              <div class="eight wide column">
+                <p v-if="!truncatedDescription">
+                  <translate translate-context="Content/Home/Paragraph">No description available.</translate>
+                </p>
+                <template v-if="truncatedDescription || rules">
+                  <div v-if="truncatedDescription" v-html="truncatedDescription"></div>
+                  <div v-if="truncatedDescription" class="ui hidden divider"></div>
+                  <div class="ui relaxed list">
+                    <div class="item" v-if="truncatedDescription">
+                      <i class="arrow right grey icon"></i>
+                      <div class="content">
+                        <router-link class="ui link" :to="{name: 'about'}">
+                          <translate translate-context="Content/Home/Link">Learn more</translate>
+                        </router-link>
+                      </div>
+                    </div>
+                    <div class="item" v-if="rules">
+                      <i class="book open grey icon"></i>
+                      <div class="content">
+                        <router-link class="ui link" v-if="rules" :to="{name: 'about', hash: '#rules'}">
+                          <translate translate-context="Content/Home/Link">Server rules</translate>
+                        </router-link>
+                      </div>
+                    </div>
+                  </div>
+                </template>
+              </div>
+              <div class="eight wide column">
+                <template v-if="stats">
+                  <h3 class="sub header">
+                    <translate translate-context="Content/Home/Header">Statistics</translate>
+                  </h3>
+                  <p>
+                    <i class="user grey icon"></i><translate translate-context="Content/Home/Stat" :translate-params="{count: stats.users.toLocaleString($store.state.ui.momentLocale) }" :translate-n="stats.users" translate-plural="%{ count } active users">%{ count } active user</translate>
+                  </p>
+                  <p>
+                    <i class="music grey icon"></i><translate translate-context="Content/Home/Stat" :translate-params="{count: parseInt(stats.hours).toLocaleString($store.state.ui.momentLocale)}" :translate-n="parseInt(stats.hours)" translate-plural="%{ count } hours of music">%{ count } hour of music</translate>
+                  </p>
+
+                </template>
+                <template v-if="contactEmail">
+                  <h3 class="sub header">
+                    <translate translate-context="Content/Home/Header/Name">Contact</translate>
+                  </h3>
+                  <i class="at grey icon"></i>
+                  <a :href="`mailto:${contactEmail}`">{{ contactEmail }}</a>
+                </template>
+
+              </div>
             </div>
           </div>
         </div>
-      </div>
-      <div class="ui middle aligned stackable text container">
-        <div class="ui hidden divider"></div>
-        <h2 class="ui header">
-          <translate translate-context="Content/Home/Title">Unlimited music</translate>
-        </h2>
-        <p><translate translate-context="Content/Home/Paragraph">Funkwhale is designed to make it easy to listen to music you like, or to discover new artists.</translate></p>
-        <div class="ui list">
-          <div class="item">
-            <i class="sound icon"></i>
-            <div class="content">
-              <translate translate-context="Content/Home/List item/Verb">Click once, listen for hours using built-in radios</translate>
-            </div>
-          </div>
-          <div class="item">
-            <i class="heart icon"></i>
-            <div class="content">
-              <translate translate-context="Content/Home/List item/Verb">Keep a track of your favorite songs</translate>
-            </div>
-          </div>
-          <div class="item">
-            <i class="list icon"></i>
-            <div class="content">
-              <translate translate-context="Content/Home/List item">Playlists? We got them</translate>
-            </div>
-          </div>
+
+        <div class="six wide column">
+          <img class="ui image" src="../assets/network.png" />
         </div>
       </div>
-      <div class="ui middle aligned stackable text container">
-        <div class="ui hidden divider"></div>
-        <h2 class="ui header">
-          <translate translate-context="Content/Home/Title">A clean library</translate>
-        </h2>
-        <p><translate translate-context="Content/Home/Paragraph">Funkwhale takes care of handling your music</translate>.</p>
-        <div class="ui list">
-          <div class="item">
-            <i class="tag icon"></i>
-            <div class="content" v-html="musicbrainzItem"></div>
-          </div>
-          <div class="item">
-            <i class="plus icon"></i>
-            <div class="content">
-              <translate translate-context="Content/Home/List item">Covers, lyrics, our goal is to have them all ;)</translate>
-            </div>
-          </div>
+      <div class="ui hidden divider"></div>
+      <div class="ui hidden divider"></div>
+      <div class="ui stackable grid">
+        <div class="four wide column">
+          <h3 class="header">
+            <translate translate-context="Footer/*/Title/Short">About Funkwhale</translate>
+          </h3>
+          <p v-translate translate-context="Content/Home/Paragraph">This pod runs Funkwhale, a community-driven project that lets you listen and share music and audio within a decentralized, open network.</p>
+          <p v-translate translate-context="Content/Home/Paragraph">Funkwhale is free and developped by a friendly community of volunteers.</p>
+          <a target="_blank" rel="noopener" href="https://funkwhale.audio">
+            <i class="external alternate icon"></i>
+            <translate translate-context="Content/Home/Link">Visit funkwhale.audio</translate>
+          </a>
         </div>
-      </div>
-      <div class="ui middle aligned stackable text container">
-        <div class="ui hidden divider"></div>
-        <h2 class="ui header">
-          <translate translate-context="Content/Home/Title">Easy to use</translate>
-        </h2>
-        <p><translate translate-context="Content/Home/Paragraph">Funkwhale is dead simple to use.</translate></p>
-        <div class="ui list">
-          <div class="item">
-            <i class="book icon"></i>
-            <div class="content">
-              <translate translate-context="Content/Home/List item">No add-ons, no plugins : you only need a web library</translate>
-            </div>
-          </div>
-          <div class="item">
-            <i class="wizard icon"></i>
-            <div class="content">
-              <translate translate-context="Content/Home/List item">Access your music from a clean interface that focuses on what really matters</translate>
-            </div>
+        <div class="four wide column">
+          <h3 class="header">
+            <translate translate-context="Head/Login/Title">Log In</translate>
+          </h3>
+          <login-form button-classes="basic green" :show-signup="false"></login-form>
+          <div class="ui hidden clearing divider"></div>
+        </div>
+        <div class="four wide column">
+          <h3 class="header">
+            <translate translate-context="*/Signup/Title">Sign up</translate>
+          </h3>
+          <template v-if="openRegistrations">
+            <p>
+              <translate translate-context="Content/Home/Paragraph">Sign up now to keep a track of your favorites, create playlists, discover new content and much more!</translate>
+            </p>
+            <p v-if="defaultUploadQuota">
+              <translate translate-context="Content/Home/Paragraph" :translate-params="{quota: humanSize(defaultUploadQuota * 1000 * 1000)}">Users on this pod also get %{ quota } of free storage to upload their own content!</translate>
+            </p>
+            <signup-form button-classes="basic green" :show-login="false"></signup-form>
+          </template>
+          <div v-else>
+            <p translate-context="Content/Home/Paragraph">Registrations are closed on this pod. You can signup on another pod using the link below.</p>
+            <a target="_blank" rel="noopener" href="https://funkwhale.audio/#get-started">
+              <i class="external alternate icon"></i>
+              <translate translate-context="Content/Home/Link">Find another pod</translate>
+            </a>
           </div>
         </div>
-      </div>
-      <div class="ui middle aligned stackable text container">
-        <div class="ui hidden divider"></div>
-        <h2 class="ui header">
-          <translate translate-context="Content/Home/Title">Your music, your way</translate>
-        </h2>
-        <p><translate translate-context="Content/Home/Paragraph">Funkwhale is free and gives you control on your music.</translate></p>
-        <div class="ui list">
-          <div class="item">
-            <i class="smile icon"></i>
-            <div class="content">
-              <translate translate-context="Content/Home/List item">The plaform is free and open-source, you can install it and modify it without worries</translate>
+
+        <div class="four wide column">
+          <h3 class="header">
+            <translate translate-context="Content/Home/Header">Useful links</translate>
+          </h3>
+          <div class="ui relaxed list">
+            <div class="item">
+              <i class="headphones icon"></i>
+              <div class="content">
+                <router-link v-if="anonymousCanListen" class="header" to="/library">
+                  <translate translate-context="Content/Home/Link">Browse public content</translate>
+                </router-link>
+                <div class="description">
+                  <translate translate-context="Content/Home/Link">Listen to public albums and playlists shared on this pod</translate>
+                </div>
+              </div>
             </div>
-          </div>
-          <div class="item">
-            <i class="protect icon"></i>
-            <div class="content">
-              <translate translate-context="Content/Home/List item">We do not track you or bother you with ads</translate>
+            <div class="item">
+              <i class="mobile alternate icon"></i>
+              <div class="content">
+                <a class="header" href="https://funkwhale.audio/apps" target="_blank" rel="noopener">
+                  <translate translate-context="Content/Home/Link">Mobile apps</translate>
+                </a>
+                <div class="description">
+                  <translate translate-context="Content/Home/Link">Use Funkwhale on other devices with our apps</translate>
+                </div>
+              </div>
             </div>
-          </div>
-          <div class="item">
-            <i class="users icon"></i>
-            <div class="content">
-              <translate translate-context="Content/Home/List item">You can invite friends and family to your instance so they can enjoy your music</translate>
+            <div class="item">
+              <i class="book icon"></i>
+              <div class="content">
+                <a class="header" href="https://docs.funkwhale.audio/users/index.html" target="_blank" rel="noopener">
+                  <translate translate-context="Content/Home/Link">User guides</translate>
+                </a>
+                <div class="description">
+                  <translate translate-context="Content/Home/Link">Discover everything you need to know about Funkwhale and its features</translate>
+                </div>
+              </div>
             </div>
           </div>
         </div>
       </div>
     </section>
+    <section v-if="anonymousCanListen" class="ui vertical stripe segment">
+      <album-widget :filters="{playable: true, ordering: '-creation_date'}" :limit="10">
+        <template slot="title"><translate translate-context="Content/Home/Title">Recently added albums</translate></template>
+        <router-link to="/library">
+          <translate translate-context="Content/Home/Link">View more…</translate>
+          <div class="ui hidden divider"></div>
+        </router-link>
+      </album-widget>
+    </section>
   </main>
 </template>
 
 <script>
+import $ from 'jquery'
+import _ from '@/lodash'
+import {mapState} from 'vuex'
+import showdown from 'showdown'
+import AlbumWidget from "@/components/audio/album/Widget"
+import LoginForm from "@/components/auth/LoginForm"
+import SignupForm from "@/components/auth/SignupForm"
+import {humanSize } from '@/filters'
+
 export default {
-  data() {
+  components: {
+    AlbumWidget,
+    LoginForm,
+    SignupForm,
+  },
+  data () {
     return {
-      musicbrainzUrl: "https://musicbrainz.org/"
+      markdown: new showdown.Converter(),
+      excerptLength: 2, // html nodes,
+      humanSize
     }
   },
   computed: {
+    ...mapState({
+      nodeinfo: state => state.instance.nodeinfo,
+    }),
     labels() {
       return {
         title: this.$pgettext('Head/Home/Title', "Welcome")
       }
     },
-    musicbrainzItem () {
-      let msg = this.$pgettext('Content/Home/List item/Verb', 'Get quality metadata about your music thanks to <a href="%{ url }" target="_blank">MusicBrainz</a>')
-      return this.$gettextInterpolate(msg, {url: this.musicbrainzUrl})
-    }
+    podName() {
+      return _.get(this.nodeinfo, 'metadata.nodeName') || "Funkwhale"
+    },
+    banner () {
+      return _.get(this.nodeinfo, 'metadata.banner')
+    },
+    shortDescription () {
+      return _.get(this.nodeinfo, 'metadata.shortDescription')
+    },
+    longDescription () {
+      return _.get(this.nodeinfo, 'metadata.longDescription')
+    },
+    rules () {
+      return _.get(this.nodeinfo, 'metadata.rules')
+    },
+    truncatedDescription () {
+      if (!this.longDescription) {
+        return
+      }
+      let doc = this.markdown.makeHtml(this.longDescription)
+      let nodes = $.parseHTML(doc)
+      let excerptParts = []
+      let handled = 0
+      nodes.forEach((n) => {
+        let content = n.innerHTML || n.nodeValue
+        if (handled < this.excerptLength && content.trim()) {
+          excerptParts.push(n)
+          handled += 1
+        }
+      })
+      return excerptParts.map((p) => { return p.outerHTML }).join('')
+    },
+    stats () {
+      let data = {
+        users: _.get(this.nodeinfo, 'usage.users.activeMonth', null),
+        hours: _.get(this.nodeinfo, 'metadata.library.music.hours', null),
+      }
+      if (data.users === null || data.artists === null) {
+        return
+      }
+      return data
+    },
+    contactEmail () {
+      return _.get(this.nodeinfo, 'metadata.contactEmail')
+    },
+    defaultUploadQuota () {
+      return _.get(this.nodeinfo, 'metadata.defaultUploadQuota')
+    },
+    anonymousCanListen () {
+      return _.get(this.nodeinfo, 'metadata.library.anonymousCanListen')
+    },
+    openRegistrations () {
+      return _.get(this.nodeinfo, 'openRegistrations')
+    },
+    headerStyle() {
+      if (!this.banner) {
+        return ""
+      }
+      return (
+        "background-image: url(" +
+        this.$store.getters["instance/absoluteUrl"](this.banner) +
+        ")"
+      )
+    },
   },
   watch: {
     '$store.state.auth.authenticated': {
@@ -164,11 +288,37 @@ export default {
 </script>
 
 <!-- Add "scoped" attribute to limit CSS to this component only -->
-<style scoped>
-.stripe p {
-  font-size: 120%;
-}
+<style scoped lang="scss">
+@import "../style/vendor/media";
+
 .ui.list .list.icon {
   padding: 0;
 }
+
+h1.header, h1 .sub.header {
+  text-shadow: 1px 1px 2px rgba(0,0,0,.8);
+  color: #fff !important;
+}
+h1.ui.header {
+  @include media(">tablet") {
+    font-size: 3em;
+  }
+}
+h1.ui.header .sub.header {
+  font-size: 0.8em;
+}
+.main.pusher {
+  margin-top: 0;
+  min-height: 10em;
+}
+section.segment.head {
+  padding: 8em 3em;
+  background: linear-gradient(90deg, rgba(40,88,125,1) 0%, rgba(64,130,180,1) 100%);
+  background-repeat: no-repeat;
+  background-size: cover;
+}
+#pod {
+  font-size: 110%;
+  display: block;
+}
 </style>
diff --git a/front/src/components/SetInstanceModal.vue b/front/src/components/SetInstanceModal.vue
index b2c278564a8f453cb729f5d65def4ad29d73bd93..07be79f4339f4b8a7d5cb37b97664e173efae516 100644
--- a/front/src/components/SetInstanceModal.vue
+++ b/front/src/components/SetInstanceModal.vue
@@ -92,7 +92,7 @@ export default {
       })
     },
     switchInstance (url) {
-      // Here we disconnect from the current instance and reconnect to the new one. No check is performed...
+      // Here we disconnect from the current instance and reconnect to the new one. No check is performed…
       this.$emit('update:show', false)
       this.isError = false
       let msg = this.$pgettext('*/Instance/Message', 'You are now using the Funkwhale instance at %{ url }')
@@ -108,7 +108,7 @@ export default {
     },
     checkAndSwitch (url) {
       // First we have to check if the address is a valid FW server. If yes, we switch:
-      this.isError = false // Clear error message if any...
+      this.isError = false // Clear error message if any…
       this.isLoading = true
       this.requestDistantNodeInfo(url)
     },
diff --git a/front/src/components/ShortcutsModal.vue b/front/src/components/ShortcutsModal.vue
index 5b1a7349d441a0de9c708f2ab9dbc03f576ab98e..999d24dd389e2765e2b08e7d52617043e6413442 100644
--- a/front/src/components/ShortcutsModal.vue
+++ b/front/src/components/ShortcutsModal.vue
@@ -4,21 +4,39 @@
       <translate translate-context="*/*/*/Noun">Keyboard shortcuts</translate>
     </header>
     <section class="scrolling content">
-      <table
-        class="ui compact collapsing basic table"
-        v-for="section in sections"
-        :key="section.title">
-      <caption>{{ section.title }}</caption>
-      <tbody>
-        <tr v-for="shortcut in section.shortcuts" :key="shortcut.summary">
-          <td>{{ shortcut.summary }}</td>
-          <td><span class="ui label">{{ shortcut.key }}</span></td>
-        </tr>
-      </tbody>
-      </table>
+      <div class="ui stackable two column grid">
+        <div class="column">
+          <table
+            class="ui compact basic table"
+            v-for="section in player"
+            :key="section.title">
+          <caption>{{ section.title }}</caption>
+          <tbody>
+            <tr v-for="shortcut in section.shortcuts" :key="shortcut.summary">
+              <td>{{ shortcut.summary }}</td>
+              <td><span class="ui label">{{ shortcut.key }}</span></td>
+            </tr>
+          </tbody>
+          </table>
+        </div>
+        <div class="column">
+          <table
+            class="ui compact basic table"
+            v-for="section in general"
+            :key="section.title">
+          <caption>{{ section.title }}</caption>
+          <tbody>
+            <tr v-for="shortcut in section.shortcuts" :key="shortcut.summary">
+              <td>{{ shortcut.summary }}</td>
+              <td><span class="ui label">{{ shortcut.key }}</span></td>
+            </tr>
+          </tbody>
+          </table>
+        </div>
+      </div>
     </section>
     <footer class="actions">
-      <div class="ui cancel button"><translate translate-context="Popup/Keyboard shortcuts/Button.Label/Verb">Close</translate></div>
+      <div class="ui cancel button"><translate translate-context="*/*/Button.Label/Verb">Close</translate></div>
     </footer>
   </modal>
 </template>
@@ -32,7 +50,7 @@ export default {
     Modal,
   },
   computed: {
-    sections () {
+    general () {
       return [
         {
           title: this.$pgettext('Popup/Keyboard shortcuts/Title', 'General shortcuts'),
@@ -40,17 +58,36 @@ export default {
             {
               key: 'h',
               summary: this.$pgettext('Popup/Keyboard shortcuts/Table.Label/Verb', 'Show available keyboard shortcuts')
-            }
+            },
+            {
+              key: 'shift + f',
+              summary: this.$pgettext('Popup/Keyboard shortcuts/Table.Label/Verb', 'Focus searchbar')
+            },
+            {
+              key: 'esc',
+              summary: this.$pgettext('Popup/Keyboard shortcuts/Table.Label/Verb', 'Unfocus searchbar')
+            },
           ]
         },
+      ]
+    },
         // space.prevent.exact="togglePlay"
-        // ctrl.left.prevent.exact="previous"
-        // ctrl.right.prevent.exact="next"
-        // ctrl.down.prevent.exact="$store.commit('player/incrementVolume', -0.1)"
-        // ctrl.up.prevent.exact="$store.commit('player/incrementVolume', 0.1)"
+        // ctrl.shift.left.prevent.exact="previous"
+        // ctrl.shift.right.prevent.exact="next"
+        // shift.down.prevent.exact="$store.commit('player/incrementVolume', -0.1)"
+        // shift.up.prevent.exact="$store.commit('player/incrementVolume', 0.1)"
+        // right.prevent.exact="seek (5)"
+        // left.prevent.exact="seek (-5)"
+        // shift.right.prevent.exact="seek (30)"
+        // shift.left.prevent.exact="seek (-30)"
+        // m.prevent.exact="toggleMute"
         // l.prevent.exact="$store.commit('player/toggleLooping')"
         // s.prevent.exact="shuffle"
+        // f.prevent.exact="$store.dispatch('favorites/toggle', currentTrack.id)"
+        // q.prevent.exact="clean"
 
+    player () {
+      return [
         {
           title: this.$pgettext('Popup/Keyboard shortcuts/Title', 'Audio player shortcuts'),
           shortcuts: [
@@ -59,21 +96,41 @@ export default {
               summary: this.$pgettext('Popup/Keyboard shortcuts/Table.Label/Verb', 'Pause/play the current track')
             },
             {
-              key: 'ctrl left',
+              key: 'left',
+              summary: this.$pgettext('Popup/Keyboard shortcuts/Table.Label/Verb', 'Seek backwards 5s')
+            },
+            {
+              key: 'right',
+              summary: this.$pgettext('Popup/Keyboard shortcuts/Table.Label/Verb', 'Seek forwards 5s')
+            },
+            {
+              key: 'shift + left',
+              summary: this.$pgettext('Popup/Keyboard shortcuts/Table.Label/Verb', 'Seek backwards 30s')
+            },
+            {
+              key: 'shift + right',
+              summary: this.$pgettext('Popup/Keyboard shortcuts/Table.Label/Verb', 'Seek forwards 30s')
+            },
+            {
+              key: 'ctrl + shift + left',
               summary: this.$pgettext('Popup/Keyboard shortcuts/Table.Label/Verb', 'Play previous track')
             },
             {
-              key: 'ctrl right',
+              key: 'ctrl + shift + right',
               summary: this.$pgettext('Popup/Keyboard shortcuts/Table.Label/Verb', 'Play next track')
             },
             {
-              key: 'ctrl up',
+              key: 'shift + up',
               summary: this.$pgettext('Popup/Keyboard shortcuts/Table.Label/Verb', 'Increase volume')
             },
             {
-              key: 'ctrl down',
+              key: 'shift + down',
               summary: this.$pgettext('Popup/Keyboard shortcuts/Table.Label/Verb', 'Decrease volume')
             },
+            {
+              key: 'm',
+              summary: this.$pgettext('Popup/Keyboard shortcuts/Table.Label/Verb', 'Toggle mute')
+            },
             {
               key: 'l',
               summary: this.$pgettext('Popup/Keyboard shortcuts/Table.Label/Verb', 'Toggle queue looping')
@@ -82,6 +139,14 @@ export default {
               key: 's',
               summary: this.$pgettext('Popup/Keyboard shortcuts/Table.Label/Verb', 'Shuffle queue')
             },
+            {
+              key: 'q',
+              summary: this.$pgettext('Popup/Keyboard shortcuts/Table.Label/Verb', 'Clear queue')
+            },
+            {
+              key: 'f',
+              summary: this.$pgettext('Popup/Keyboard shortcuts/Table.Label/Verb', 'Toggle favorite')
+            },
           ]
         }
       ]
diff --git a/front/src/components/Sidebar.vue b/front/src/components/Sidebar.vue
index 0f2809064cb1052eedda92d6c262a5f266819d35..ddeba0bb8bd9c742f9dd7a3f205bd4d17097a3b1 100644
--- a/front/src/components/Sidebar.vue
+++ b/front/src/components/Sidebar.vue
@@ -46,9 +46,9 @@
               <i class="feed icon"></i>
               <translate translate-context="*/Notifications/*">Notifications</translate>
               <div
-                v-if="$store.state.ui.notifications.inbox > 0"
+                v-if="$store.state.ui.notifications.inbox + additionalNotifications > 0"
                 :class="['ui', 'teal', 'label']">
-                {{ $store.state.ui.notifications.inbox }}</div>
+                {{ $store.state.ui.notifications.inbox + additionalNotifications }}</div>
             </router-link>
             <router-link class="item" v-if="$store.state.auth.authenticated" :to="{name: 'logout'}"><i class="sign out icon"></i><translate translate-context="Sidebar/Login/List item.Link/Verb">Logout</translate></router-link>
             <template v-else>
@@ -83,7 +83,7 @@
               v-if="$store.state.auth.availablePermissions['library']"
               class="item"
               :to="{name: 'manage.library.edits', query: {q: 'is_approved:null'}}">
-              <i class="book icon"></i><translate translate-context="*/*/*">Library</translate>
+              <i class="book icon"></i><translate translate-context="*/*/*/Noun">Library</translate>
               <div
                 v-if="$store.state.ui.notifications.pendingReviewEdits > 0"
                 :title="labels.pendingReviewEdits"
@@ -93,8 +93,12 @@
             <router-link
               v-if="$store.state.auth.availablePermissions['moderation']"
               class="item"
-              :to="{name: 'manage.moderation.domains.list'}">
+              :to="{name: 'manage.moderation.reports.list', query: {q: 'resolved:no'}}">
               <i class="shield icon"></i><translate translate-context="*/Moderation/*">Moderation</translate>
+              <div
+                v-if="$store.state.ui.notifications.pendingReviewReports > 0"
+                :title="labels.pendingReviewReports"
+                :class="['ui', 'teal', 'label']">{{ $store.state.ui.notifications.pendingReviewReports }}</div>
             </router-link>
             <router-link
               v-if="$store.state.auth.availablePermissions['settings']"
@@ -134,7 +138,7 @@
     </div>
     <section :class="['ui', 'bottom', 'attached', {active: selectedTab === 'queue'}, 'tab']">
       <table class="ui compact inverted very basic fixed single line unstackable table">
-        <draggable v-model="tracks" element="tbody" @update="reorder">
+        <draggable v-model="tracks" tag="tbody" @update="reorder">
           <tr
               @click="$store.dispatch('queue/currentIndex', index)"
               v-for="(track, index) in tracks"
@@ -182,7 +186,7 @@
 </template>
 
 <script>
-import { mapState, mapActions } from "vuex"
+import { mapState, mapActions, mapGetters } from "vuex"
 
 import Player from "@/components/audio/Player"
 import Logo from "@/components/Logo"
@@ -215,6 +219,9 @@ export default {
     }
   },
   computed: {
+    ...mapGetters({
+      additionalNotifications: "ui/additionalNotifications",
+    }),
     ...mapState({
       queue: state => state.queue,
       url: state => state.route.path
@@ -338,7 +345,7 @@ $sidebar-color: #3d3e3f;
       display: none !important;
     }
   }
-  @include media("<desktop") {
+  @include media("<=desktop") {
     position: static !important;
     width: 100% !important;
     &.collapsed {
@@ -393,7 +400,7 @@ $sidebar-color: #3d3e3f;
   flex-direction: column;
   overflow-y: auto;
   justify-content: space-between;
-  @include media("<desktop") {
+  @include media("<=desktop") {
     max-height: 500px;
   }
 }
diff --git a/front/src/components/admin/SettingsGroup.vue b/front/src/components/admin/SettingsGroup.vue
index 0c0774bbe1055f9baf771246c2c00a8b56994307..70894c7d6d0a0209a48199b0aa9e185bce6c77c6 100644
--- a/front/src/components/admin/SettingsGroup.vue
+++ b/front/src/components/admin/SettingsGroup.vue
@@ -3,7 +3,7 @@
     <div class="ui divider" />
     <h3 class="ui header">{{ group.label }}</h3>
     <div v-if="errors.length > 0" class="ui negative message">
-      <div class="header"><translate translate-context="Content/Settings/Error message.Title">Error while saving settings</translate></div>
+      <div class="header"><translate translate-context="Content/*/Error message.Title">Error while saving settings</translate></div>
       <ul class="list">
         <li v-for="error in errors">{{ error }}</li>
       </ul>
@@ -61,6 +61,14 @@
         class="ui search selection dropdown">
         <option v-for="v in setting.additional_data.choices" :value="v[0]">{{ v[1] }}</option>
       </select>
+      <div v-else-if="setting.field.widget.class === 'ImageWidget'">
+        <input type="file" :ref="setting.identifier">
+        <div v-if="values[setting.identifier]">
+          <div class="ui hidden divider"></div>
+          <h3 class="ui header"><translate translate-context="Content/Settings/Title/Noun">Current image</translate></h3>
+          <img class="ui image" v-if="values[setting.identifier]" :src="$store.getters['instance/absoluteUrl'](values[setting.identifier])" />
+        </div>
+      </div>
     </div>
     <button
       type="submit"
@@ -98,8 +106,34 @@ export default {
       this.isLoading = true
       self.errors = []
       self.result = null
-      axios.post('instance/admin/settings/bulk/', self.values).then((response) => {
+      let postData = self.values
+      let contentType = 'application/json'
+      let fileSettingsIDs = this.fileSettings.map((s) => {return s.identifier})
+      if (fileSettingsIDs.length > 0) {
+        contentType = 'multipart/form-data'
+        postData = new FormData()
+        this.settings.forEach((s) => {
+          if (fileSettingsIDs.indexOf(s.identifier) > -1) {
+            let input = self.$refs[s.identifier][0]
+            let files = input.files
+            console.log('ref', input, files)
+            if (files && files.length > 0) {
+              postData.append(s.identifier, files[0])
+            }
+          } else {
+            postData.append(s.identifier, self.values[s.identifier])
+          }
+        })
+      }
+      axios.post('instance/admin/settings/bulk/', postData, {
+        headers: {
+          'Content-Type': contentType,
+        },
+      }).then((response) => {
         self.result = true
+        response.data.forEach((s) => {
+          self.values[s.identifier] = s.value
+        })
         self.isLoading = false
         self.$store.dispatch('instance/fetchSettings')
       }, error => {
@@ -117,6 +151,11 @@ export default {
       return this.group.settings.map(e => {
         return byIdentifier[e]
       })
+    },
+    fileSettings () {
+      return this.settings.filter((s) => {
+        return s.field.widget.class === 'ImageWidget'
+      })
     }
   }
 }
diff --git a/front/src/components/audio/EmbedWizard.vue b/front/src/components/audio/EmbedWizard.vue
index e4412937e54e542a684381656a0810cf4c924b9b..04a6fe62fba2bd285cf169246dea108e344342a1 100644
--- a/front/src/components/audio/EmbedWizard.vue
+++ b/front/src/components/audio/EmbedWizard.vue
@@ -1,5 +1,15 @@
 <template>
   <div>
+    <div class="ui warning message" v-if="!anonymousCanListen">
+      <p>
+        <strong>
+          <translate translate-context="Content/Embed/Message">Sharing will not work because this pod doesn't allow anonymous users to access content.</translate>
+        </strong>
+      </p>
+      <p>
+        <translate translate-context="Content/Embed/Message">Please contact your admins and ask them to update the corresponding setting.</translate>
+      </p>
+    </div>
     <div class="ui form">
       <div class="two fields">
         <div class="field">
@@ -41,6 +51,9 @@
 
 <script>
 
+import { mapState } from "vuex"
+import _ from '@/lodash'
+
 export default {
   props: ['type', 'id'],
   data () {
@@ -50,17 +63,33 @@ export default {
       minHeight: 100,
       copied: false
     }
-    if (this.type === 'album') {
+    if (this.type === 'album' || this.type === 'artist' || this.type === 'playlist') {
       d.height = 330
       d.minHeight = 250
     }
     return d
   },
   computed: {
+    ...mapState({
+      nodeinfo: state => state.instance.nodeinfo,
+    }),
+    anonymousCanListen () {
+      return _.get(this.nodeinfo, 'metadata.library.anonymousCanListen', false)
+    },
     iframeSrc () {
-      return this.$store.getters['instance/absoluteUrl'](
-        `/front/embed.html?&type=${this.type}&id=${this.id}`
-      )
+      let base = process.env.BASE_URL
+      if (base.startsWith('/')) {
+        // include hostname/protocol too so that the iframe link is absolute
+        base = `${window.location.protocol}//${window.location.host}${base}`
+      }
+      let instanceUrl = this.$store.state.instance.instanceUrl
+      let b = ''
+      if (!window.location.href.startsWith(instanceUrl)) {
+        // the frontend is running on a separate domain, so we need to provide
+        // the b= parameter in the iframe
+        b = `&b=${instanceUrl}`
+      }
+      return `${base}embed.html?&type=${this.type}&id=${this.id}${b}`
     },
     frameWidth () {
       if (this.width) {
@@ -89,7 +118,7 @@ export default {
 
 <!-- Add "scoped" attribute to limit CSS to this component only -->
 <style scoped>
-.message {
+p.message {
   position: absolute;
   right: 0;
   bottom: -2em;
diff --git a/front/src/components/audio/PlayButton.vue b/front/src/components/audio/PlayButton.vue
index c1eeeedd47b30c308fee7bbba6861e1942d1d00f..96e210e7df5362486b6e49163e6ff5b8392e54bc 100644
--- a/front/src/components/audio/PlayButton.vue
+++ b/front/src/components/audio/PlayButton.vue
@@ -19,13 +19,25 @@
           <i class="step forward icon"></i>{{ labels.playNext }}
         </button>
         <button class="item basic" ref="playNow" data-ref="playNow" :disabled="!playable" @click.stop.prevent="addNext(true)" :title="labels.playNow">
-          <i class="play icon"></i>{{ labels.playNow }}</button>
+          <i class="play icon"></i>{{ labels.playNow }}
+        </button>
+        <button class="item basic" ref="replacePlay" data-ref="replacePlay" :disabled="!playable" @click.stop.prevent="replacePlay()" :title="labels.replacePlay">
+          <i class="list icon"></i>{{ labels.replacePlay }}
+        </button>
         <button v-if="track" class="item basic" :disabled="!playable" @click.stop.prevent="$store.dispatch('radios/start', {type: 'similar', objectId: track.id})" :title="labels.startRadio">
           <i class="feed icon"></i><translate translate-context="*/Queue/Button.Label/Short, Verb">Start radio</translate>
         </button>
+        <div class="divider"></div>
         <button v-if="filterableArtist" class="item basic" :disabled="!filterableArtist" @click.stop.prevent="filterArtist" :title="labels.hideArtist">
           <i class="eye slash outline icon"></i><translate translate-context="*/Queue/Dropdown/Button/Label/Short">Hide content from this artist</translate>
         </button>
+        <button
+          v-for="obj in getReportableObjs({track, album, artist, playlist, account})"
+          :key="obj.target.type + obj.target.id"
+          class="item basic"
+          @click.stop.prevent="$store.dispatch('moderation/report', obj.target)">
+          <i class="share icon" /> {{ obj.label }}
+        </button>
       </div>
     </div>
   </span>
@@ -35,11 +47,15 @@
 import axios from 'axios'
 import jQuery from 'jquery'
 
+import ReportMixin from '@/components/mixins/Report'
+
 export default {
+  mixins: [ReportMixin],
   props: {
     // we can either have a single or multiple tracks to play when clicked
     tracks: {type: Array, required: false},
     track: {type: Object, required: false},
+    account: {type: Object, required: false},
     dropdownIconClasses: {type: Array, required: false, default: () => { return ['dropdown'] }},
     playIconClass: {type: String, required: false, default: 'play icon'},
     buttonClasses: {type: Array, required: false, default: () => { return ['button'] }},
@@ -74,12 +90,14 @@ export default {
         playNow: this.$pgettext('*/Queue/Dropdown/Button/Title', 'Play now'),
         addToQueue: this.$pgettext('*/Queue/Dropdown/Button/Title', 'Add to current queue'),
         playNext: this.$pgettext('*/Queue/Dropdown/Button/Title', 'Play next'),
-        startRadio: this.$pgettext('*/Queue/Dropdown/Button/Title', 'Play similar songs')
+        startRadio: this.$pgettext('*/Queue/Dropdown/Button/Title', 'Play similar songs'),
+        replacePlay: this.$pgettext('*/Queue/Dropdown/Button/Title', 'Replace current queue'),
+        report: this.$pgettext('*/Moderation/*/Button/Label,Verb', 'Report…'),
       }
     },
     title () {
       if (this.playable) {
-        return this.$pgettext('*/Queue/Button/Title', 'Play...')
+        return this.$pgettext('*/*/Button.Label/Noun', 'More…')
       } else {
         if (this.track) {
           return this.$pgettext('*/Queue/Button/Title', 'This track is not available in any library you have access to')
@@ -113,7 +131,7 @@ export default {
       if (this.artist) {
         return this.artist
       }
-    }
+    },
   },
   methods: {
 
@@ -201,6 +219,14 @@ export default {
       })
       jQuery(self.$el).find('.ui.dropdown').dropdown('hide')
     },
+    replacePlay () {
+      let self = this
+      self.$store.dispatch('queue/clean')
+      this.getPlayableTracks().then((tracks) => {
+        self.$store.dispatch('queue/appendMany', {tracks: tracks}).then(() => self.addMessage(tracks))
+      })
+      jQuery(self.$el).find('.ui.dropdown').dropdown('hide')
+    },
     addNext (next) {
       let self = this
       let wasEmpty = this.$store.state.queue.tracks.length === 0
diff --git a/front/src/components/audio/Player.vue b/front/src/components/audio/Player.vue
index 0be5182d1e7e510d46e9c677794861dce1252a20..7fda9520f4f63ded54b5bb1b95a3e4990903359b 100644
--- a/front/src/components/audio/Player.vue
+++ b/front/src/components/audio/Player.vue
@@ -55,7 +55,7 @@
           :class="['ui', 'small', 'orange', 'inverted', {'indicating': isLoadingAudio}, 'progress']"
           @click="touchProgress">
           <div class="buffer bar" :data-percent="bufferProgress" :style="{ 'width': bufferProgress + '%' }"></div>
-          <div class="bar" :data-percent="progress" :style="{ 'width': progress + '%' }"></div>
+          <div class="position bar" :data-percent="progress" :style="{ 'width': progress + '%' }"></div>
         </div>
       </div>
       <div class="ui small warning message" v-if="currentTrack && errored">
@@ -78,7 +78,7 @@
           class="two wide column control"
           @click.prevent.stop="previous"
           :disabled="emptyQueue">
-            <i :class="['ui', 'backward step', {'disabled': emptyQueue}, 'secondary', 'icon']"></i>
+            <i :class="['ui', 'backward step', {'disabled': emptyQueue}, 'icon']"></i>
         </span>
         <span
           role="button"
@@ -87,7 +87,7 @@
           :aria-label="labels.play"
           @click.prevent.stop="togglePlay"
           class="two wide column control">
-            <i :class="['ui', 'play', {'disabled': !currentTrack}, 'secondary', 'icon']"></i>
+            <i :class="['ui', 'play', {'disabled': !currentTrack}, 'icon']"></i>
         </span>
         <span
           role="button"
@@ -96,7 +96,7 @@
           :aria-label="labels.pause"
           @click.prevent.stop="togglePlay"
           class="two wide column control">
-            <i :class="['ui', 'pause', {'disabled': !currentTrack}, 'secondary', 'icon']"></i>
+            <i :class="['ui', 'pause', {'disabled': !currentTrack}, 'icon']"></i>
         </span>
         <span
           role="button"
@@ -105,7 +105,7 @@
           class="two wide column control"
           @click.prevent.stop="next"
           :disabled="!hasNext">
-            <i :class="['ui', {'disabled': !hasNext}, 'forward step', 'secondary', 'icon']" ></i>
+            <i :class="['ui', {'disabled': !hasNext}, 'forward step', 'icon']" ></i>
         </span>
         <div
           class="wide column control volume-control"
@@ -118,7 +118,7 @@
             :title="labels.unmute"
             :aria-label="labels.unmute"
             @click.prevent.stop="unmute">
-            <i class="volume off secondary icon"></i>
+            <i class="volume off icon"></i>
           </span>
           <span
             role="button"
@@ -126,7 +126,7 @@
             :title="labels.mute"
             :aria-label="labels.mute"
             @click.prevent.stop="mute">
-            <i class="volume down secondary icon"></i>
+            <i class="volume down icon"></i>
           </span>
           <span
             role="button"
@@ -134,7 +134,7 @@
             :title="labels.mute"
             :aria-label="labels.mute"
             @click.prevent.stop="mute">
-            <i class="volume up secondary icon"></i>
+            <i class="volume up icon"></i>
           </span>
           <input
             type="range"
@@ -152,7 +152,7 @@
             :aria-label="labels.loopingDisabled"
             @click.prevent.stop="$store.commit('player/looping', 1)"
             :disabled="!currentTrack">
-            <i :class="['ui', {'disabled': !currentTrack}, 'step', 'repeat', 'secondary', 'icon']"></i>
+            <i :class="['ui', {'disabled': !currentTrack}, 'step', 'repeat', 'icon']"></i>
           </span>
           <span
             role="button"
@@ -162,7 +162,7 @@
             v-if="looping === 1"
             :disabled="!currentTrack">
             <i
-              class="repeat secondary icon">
+              class="repeat icon">
               <span class="ui circular tiny orange label">1</span>
             </i>
           </span>
@@ -174,7 +174,7 @@
             :disabled="!currentTrack"
             @click.prevent.stop="$store.commit('player/looping', 0)">
             <i
-              class="repeat orange secondary icon">
+              class="repeat orange icon">
             </i>
           </span>
         </div>
@@ -187,7 +187,7 @@
           @click.prevent.stop="shuffle()"
           class="two wide column control">
           <div v-if="isShuffling" class="ui inline shuffling inverted tiny active loader"></div>
-          <i v-else :class="['ui', 'random', 'secondary', {'disabled': queue.tracks.length === 0}, 'icon']" ></i>
+          <i v-else :class="['ui', 'random', {'disabled': queue.tracks.length === 0}, 'icon']" ></i>
         </span>
         <div class="one wide column" v-if="!showVolume"></div>
         <span
@@ -199,19 +199,26 @@
           @click.prevent.stop="clean()"
           class="two wide column control">
           <i class="icons">
-            <i :class="['ui', 'trash', 'secondary', {'disabled': queue.tracks.length === 0}, 'icon']" ></i>
-            <i :class="['ui corner large inverted', 'list', {'disabled': queue.tracks.length === 0}, 'icon']" ></i>
+            <i :class="['ui', 'trash', {'disabled': queue.tracks.length === 0}, 'icon']" ></i>
+            <i :class="['ui corner inverted', 'list', {'disabled': queue.tracks.length === 0}, 'icon']" ></i>
           </i>
         </span>
       </div>
       <GlobalEvents
         @keydown.space.prevent.exact="togglePlay"
-        @keydown.ctrl.left.prevent.exact="previous"
-        @keydown.ctrl.right.prevent.exact="next"
-        @keydown.ctrl.down.prevent.exact="$store.commit('player/incrementVolume', -0.1)"
-        @keydown.ctrl.up.prevent.exact="$store.commit('player/incrementVolume', 0.1)"
+        @keydown.ctrl.shift.left.prevent.exact="previous"
+        @keydown.ctrl.shift.right.prevent.exact="next"
+        @keydown.shift.down.prevent.exact="$store.commit('player/incrementVolume', -0.1)"
+        @keydown.shift.up.prevent.exact="$store.commit('player/incrementVolume', 0.1)"
+        @keydown.right.prevent.exact="seek (5)"
+        @keydown.left.prevent.exact="seek (-5)"
+        @keydown.shift.right.prevent.exact="seek (30)"
+        @keydown.shift.left.prevent.exact="seek (-30)"
+        @keydown.m.prevent.exact="toggleMute"
         @keydown.l.prevent.exact="$store.commit('player/toggleLooping')"
         @keydown.s.prevent.exact="shuffle"
+        @keydown.f.prevent.exact="$store.dispatch('favorites/toggle', currentTrack.id)"
+        @keydown.q.prevent.exact="clean"
         />
     </div>
   </section>
@@ -294,6 +301,7 @@ export default {
       mute: "player/mute",
       unmute: "player/unmute",
       clean: "queue/clean",
+      toggleMute: "player/toggleMute",
     }),
     async getTrackData (trackData) {
       let data = null
@@ -493,6 +501,21 @@ export default {
         }
       }
     },
+    seek (step) {
+      if (step > 0) {
+        // seek right
+        if (this.currentTime + step < this.duration) {
+        this.$store.dispatch('player/updateProgress', (this.currentTime + step))
+        } else {
+        this.next() // parenthesis where missing here
+        }
+      }
+      else {
+        // seek left
+        let position = Math.max(this.currentTime + step, 0)
+        this.$store.dispatch('player/updateProgress', position)
+      }
+    },
     observeProgress: function (enable) {
       let self = this
       if (enable) {
@@ -797,12 +820,16 @@ export default {
   vertical-align: middle;
 }
 
-.secondary.icon {
+.control .icon {
   font-size: 1.5em;
 }
 .progress-area .actions {
   text-align: center;
 }
+.ui.progress:not([data-percent]):not(.indeterminate)
+  .bar.position:not(.buffer) {
+  background: #ff851b;
+}
 .volume-control {
   position: relative;
   width: 12.5% !important;
diff --git a/front/src/components/audio/SearchBar.vue b/front/src/components/audio/SearchBar.vue
index 28b11b040d19dec5832cd5eb44971fd0e3a9b764..d73571fcbf53ddbd2cef5f710c125a72cc22b9bc 100644
--- a/front/src/components/audio/SearchBar.vue
+++ b/front/src/components/audio/SearchBar.vue
@@ -1,19 +1,26 @@
 <template>
   <div class="ui fluid category search">
     <slot></slot><div class="ui icon input">
-      <input class="prompt" name="search" :placeholder="labels.placeholder" type="text">
+      <input class="prompt" ref="search" name="search" :placeholder="labels.placeholder" type="text" @keydown.esc="$event.target.blur()">
       <i class="search icon"></i>
     </div>
     <div class="results"></div>
     <slot name="after"></slot>
+    <GlobalEvents
+      @keydown.shift.f.prevent.exact="focusSearch"
+    />
   </div>
 </template>
 
 <script>
 import jQuery from 'jquery'
 import router from '@/router'
+import GlobalEvents from "@/components/utils/global-events"
 
 export default {
+  components: {
+  GlobalEvents,
+  },
   computed: {
     labels () {
       return {
@@ -25,7 +32,20 @@ export default {
     let artistLabel = this.$pgettext('*/*/*/Noun', 'Artist')
     let albumLabel = this.$pgettext('*/*/*', 'Album')
     let trackLabel = this.$pgettext('*/*/*/Noun', 'Track')
+    let tagLabel = this.$pgettext('*/*/*/Noun', 'Tag')
     let self = this
+    var searchQuery;
+
+    jQuery(this.$el).keypress(function(e) {
+      if(e.which == 13) {
+        // Cancel any API search request to backend…
+        jQuery(this.$el).search('cancel query');
+        // Go direct to the artist page…
+        router.push("/library/artists?query=" + searchQuery + "&page=1&paginateBy=25&ordering=name");
+	}
+    });
+
+
     jQuery(this.$el).search({
       type: 'category',
       minCharacters: 3,
@@ -34,6 +54,7 @@ export default {
       },
       onSearchQuery (query) {
         self.$emit('search')
+        searchQuery = query;
       },
       apiSettings: {
         beforeXHR: function (xhrObject) {
@@ -55,6 +76,9 @@ export default {
               },
               getDescription (r) {
                 return ''
+              },
+              getId (t) {
+                return t.id
               }
             },
             {
@@ -65,7 +89,10 @@ export default {
                 return r.title
               },
               getDescription (r) {
-                return ''
+                return r.artist.name
+              },
+              getId (t) {
+                return t.id
               }
             },
             {
@@ -75,8 +102,25 @@ export default {
               getTitle (r) {
                 return r.title
               },
+              getDescription (r) {
+                return `${r.album.artist.name} - ${r.album.title}`
+              },
+              getId (t) {
+                return t.id
+              }
+            },
+            {
+              code: 'tags',
+              route: 'library.tags.detail',
+              name: tagLabel,
+              getTitle (r) {
+                return `#${r.name}`
+              },
               getDescription (r) {
                 return ''
+              },
+              getId (t) {
+                return t.name
               }
             }
           ]
@@ -86,13 +130,14 @@ export default {
               results: []
             }
             initialResponse[category.code].forEach(result => {
+              let id = category.getId(result)
               results[category.code].results.push({
                 title: category.getTitle(result),
-                id: result.id,
+                id,
                 routerUrl: {
                   name: category.route,
                   params: {
-                    id: result.id
+                    id
                   }
                 },
                 description: category.getDescription(result)
@@ -104,6 +149,11 @@ export default {
         url: this.$store.getters['instance/absoluteUrl']('api/v1/search?query={query}')
       }
     })
+  },
+  methods: {
+    focusSearch () {
+      this.$refs.search.focus()
+    },
   }
 }
 </script>
diff --git a/front/src/components/audio/album/Card.vue b/front/src/components/audio/album/Card.vue
index 1012cc578fefb876caa7cbf9049387f90d32e208..67d1eb706cc68e3145583c26f464f0017bd3a1ec 100644
--- a/front/src/components/audio/album/Card.vue
+++ b/front/src/components/audio/album/Card.vue
@@ -1,5 +1,5 @@
 <template>
-    <div class="ui card">
+    <div :class="['ui', 'card', mode]">
       <div class="content">
         <div class="right floated tiny ui image">
           <img v-if="album.cover.original" v-lazy="$store.getters['instance/absoluteUrl'](album.cover.square_crop)">
@@ -39,7 +39,7 @@
               <translate translate-context="Content/Album/Card.Link/Verb" :translate-params="{count: album.tracks.length - initialTracks}" :translate-n="album.tracks.length - initialTracks" translate-plural="Show %{ count } more tracks">Show %{ count } more track</translate>
             </em>
             <em v-else @click="showAllTracks = false" class="expand">
-              <translate translate-context="Content/*/Card.Link/Verb">Collapse</translate>
+              <translate translate-context="*/*/Button,Label">Collapse</translate>
             </em>
           </div>
         </div>
@@ -138,4 +138,8 @@ tr {
 .expand {
   cursor: pointer;
 }
+
+.ui .card.rich {
+  align-self: flex-start;
+}
 </style>
diff --git a/front/src/components/audio/album/Widget.vue b/front/src/components/audio/album/Widget.vue
index ecc0a280ed04b26779de42fad4537b77b4243426..c9e395f3c7022d9741f4f894ebc18212efcc4382 100644
--- a/front/src/components/audio/album/Widget.vue
+++ b/front/src/components/audio/album/Widget.vue
@@ -2,10 +2,12 @@
   <div class="wrapper">
     <h3 class="ui header">
       <slot name="title"></slot>
+      <span v-if="showCount" class="ui tiny circular label">{{ count }}</span>
     </h3>
-    <button :disabled="!previousPage" @click="fetchData(previousPage)" :class="['ui', {disabled: !previousPage}, 'circular', 'icon', 'basic', 'button']"><i :class="['ui', 'angle left', 'icon']"></i></button>
-    <button :disabled="!nextPage" @click="fetchData(nextPage)" :class="['ui', {disabled: !nextPage}, 'circular', 'icon', 'basic', 'button']"><i :class="['ui', 'angle right', 'icon']"></i></button>
-    <button @click="fetchData('albums/')" :class="['ui', 'circular', 'icon', 'basic', 'button']"><i :class="['ui', 'refresh', 'icon']"></i></button>
+    <slot></slot>
+    <button v-if="controls" :disabled="!previousPage" @click="fetchData(previousPage)" :class="['ui', {disabled: !previousPage}, 'circular', 'icon', 'basic', 'button']"><i :class="['ui', 'angle left', 'icon']"></i></button>
+    <button v-if="controls" :disabled="!nextPage" @click="fetchData(nextPage)" :class="['ui', {disabled: !nextPage}, 'circular', 'icon', 'basic', 'button']"><i :class="['ui', 'angle right', 'icon']"></i></button>
+    <button v-if="controls" @click="fetchData('albums/')" :class="['ui', 'circular', 'icon', 'basic', 'button']"><i :class="['ui', 'refresh', 'icon']"></i></button>
     <div class="ui hidden divider"></div>
     <div class="ui five cards">
       <div v-if="isLoading" class="ui inverted active dimmer">
@@ -33,6 +35,7 @@
         </div>
       </div>
     </div>
+    <div v-if="!isLoading && albums.length === 0">No results matching your query.</div>
   </div>
 </template>
 
@@ -43,7 +46,10 @@ import PlayButton from '@/components/audio/PlayButton'
 
 export default {
   props: {
-    filters: {type: Object, required: true}
+    filters: {type: Object, required: true},
+    controls: {type: Boolean, default: true},
+    showCount: {type: Boolean, default: false},
+    limit: {type: Number, default: 12},
   },
   components: {
     PlayButton
@@ -51,7 +57,7 @@ export default {
   data () {
     return {
       albums: [],
-      limit: 12,
+      count: 0,
       isLoading: false,
       errors: null,
       previousPage: null,
@@ -76,6 +82,7 @@ export default {
         self.nextPage = response.data.next
         self.isLoading = false
         self.albums = response.data.results
+        self.count = response.data.count
       }, error => {
         self.isLoading = false
         self.errors = error.backendErrors
diff --git a/front/src/components/audio/artist/Card.vue b/front/src/components/audio/artist/Card.vue
index b06cdcd75b126c3d5b7f68abce5923caf0c18a2a..6fe70e266717c7e4ef8e1bec82591d27bac2b1f8 100644
--- a/front/src/components/audio/artist/Card.vue
+++ b/front/src/components/audio/artist/Card.vue
@@ -1,85 +1,95 @@
 <template>
-  <div class="ui card">
-    <div class="content">
-        <div class="header">
-          <router-link class="discrete link" :to="{name: 'library.artists.detail', params: {id: artist.id }}">
-            {{ artist.name }}
-          </router-link>
-        </div>
-        <div class="description">
-          <table class="ui compact very basic fixed single line unstackable table">
-            <tbody>
-              <tr v-for="album in albums">
-                <td>
-                  <img class="ui mini image" v-if="album.cover.original" v-lazy="$store.getters['instance/absoluteUrl'](album.cover.small_square_crop)">
-                  <img class="ui mini image" v-else src="../../../assets/audio/default-cover.png">
-                </td>
-                <td colspan="4">
-                  <router-link :title="album.title" class="discrete link" :to="{name: 'library.albums.detail', params: {id: album.id }}">
-                    <strong>{{ album.title }}</strong>
-                  </router-link><br />
-                  {{ album.tracks_count }} tracks
-                </td>
-                <td>
-                  <play-button class="right floated basic icon" :is-playable="album.is_playable" :discrete="true" :album="album"></play-button>
-                </td>
-              </tr>
-            </tbody>
-          </table>
-          <div class="center aligned segment" v-if="artist.albums.length > initialAlbums">
-            <em v-if="!showAllAlbums" @click="showAllAlbums = true" class="expand">
-              <translate translate-context="Content/Artist/Card.Link" :translate-params="{count: artist.albums.length - initialAlbums}" :translate-n="artist.albums.length - initialAlbums" translate-plural="Show %{ count } more albums">Show 1 more album</translate>
-            </em>
-            <em v-else @click="showAllAlbums = false" class="expand">
-              <translate translate-context="Content/*/Card.Link/Verb">Collapse</translate>
-            </em>
-          </div>
-        </div>
+  <div class="flat inline card">
+    <div :class="['ui', 'image', 'with-overlay', {'default-cover': !cover.original}]" v-lazy:background-image="imageUrl">
+      <play-button class="play-overlay" :icon-only="true" :is-playable="artist.is_playable" :button-classes="['ui', 'circular', 'large', 'orange', 'icon', 'button']" :artist="artist"></play-button>
     </div>
-    <div class="extra content">
-        <span>
-          <i class="sound icon"></i>
-            <translate translate-context="Content/Artist/Card" :translate-params="{count: artist.albums.length}" :translate-n="artist.albums.length" translate-plural="%{ count } albums">1 album</translate>
-        </span>
-        <play-button :is-playable="isPlayable" class="mini basic orange right floated" :artist="artist">
-          <translate translate-context="Content/Queue/Button.Label/Short, Verb">Play all</translate>
-        </play-button>
+    <div class="content">
+      <router-link :title="artist.name" :to="{name: 'library.artists.detail', params: {id: artist.id}}">
+        {{ artist.name|truncate(30) }}
+      </router-link>
+      <div v-if="artist.albums.length > 0">
+        <i class="small sound icon"></i>
+        <translate translate-context="Content/Artist/Card" :translate-params="{count: artist.albums.length}" :translate-n="artist.albums.length" translate-plural="%{ count } albums">1 album</translate>
+      </div>
+      <div v-else-if="artist.tracks_count">
+        <i class="small sound icon"></i>
+        <translate translate-context="Content/Artist/Card" :translate-params="{count: artist.tracks_count}" :translate-n="artist.tracks_count" translate-plural="%{ count } tracks">1 track</translate>
       </div>
+      <tags-list label-classes="tiny" :truncate-size="20" :limit="2" :show-more="false" :tags="artist.tags"></tags-list>
+
+      <play-button
+        class="play-button basic icon"
+        :dropdown-only="true"
+        :is-playable="artist.is_playable"
+        :dropdown-icon-classes="['ellipsis', 'vertical', 'large', 'grey']"
+        :artist="artist"></play-button>
     </div>
+  </div>
 </template>
 
 <script>
 import backend from '@/audio/backend'
 import PlayButton from '@/components/audio/PlayButton'
+import TagsList from "@/components/tags/List"
 
 export default {
   props: ['artist'],
   components: {
-    PlayButton
+    PlayButton,
+    TagsList
   },
   data () {
     return {
       backend: backend,
       initialAlbums: 30,
-      showAllAlbums: true
+      showAllAlbums: true,
     }
   },
   computed: {
-    albums () {
-      if (this.showAllAlbums) {
-        return this.artist.albums
+    imageUrl () {
+      let url = '../../../assets/audio/default-cover.png'
+      let cover = this.cover
+      if (cover.original) {
+        url = this.$store.getters['instance/absoluteUrl'](cover.medium_square_crop)
+      } else {
+        return null
       }
-      return this.artist.albums.slice(0, this.initialAlbums)
+      return url
+    },
+    cover () {
+      return this.artist.albums.map((a) => {
+        return a.cover
+      }).filter((c) => {
+        return !!c
+      })[0] || {}
     },
-    isPlayable () {
-      return this.artist.albums.filter((a) => {
-        return a.is_playable
-      }).length > 0
-    }
   }
 }
 </script>
 
 <!-- Add "scoped" attribute to limit CSS to this component only -->
 <style scoped>
+.default-cover {
+  background-image: url("../../../assets/audio/default-cover.png") !important;
+}
+
+.play-button {
+  position: absolute;
+  right: 0;
+  bottom: 40%;
+}
+
+.with-overlay {
+  background-size: cover !important;
+  background-position: center !important;
+  height: 8em;
+  width: 8em;
+  display: flex !important;
+  justify-content: center !important;
+  align-items: center !important;
+}
+.flat.card .with-overlay.image {
+  border-radius: 50% !important;
+  margin: 0 auto;
+}
 </style>
diff --git a/front/src/components/audio/artist/Widget.vue b/front/src/components/audio/artist/Widget.vue
new file mode 100644
index 0000000000000000000000000000000000000000..603b96fbc8dd9f7855bb206760f3f123b9357116
--- /dev/null
+++ b/front/src/components/audio/artist/Widget.vue
@@ -0,0 +1,111 @@
+<template>
+  <div class="wrapper">
+    <h3 v-if="header" class="ui header">
+      <slot name="title"></slot>
+      <span class="ui tiny circular label">{{ count }}</span>
+    </h3>
+    <button v-if="controls" :disabled="!previousPage" @click="fetchData(previousPage)" :class="['ui', {disabled: !previousPage}, 'circular', 'icon', 'basic', 'button']"><i :class="['ui', 'angle left', 'icon']"></i></button>
+    <button v-if="controls" :disabled="!nextPage" @click="fetchData(nextPage)" :class="['ui', {disabled: !nextPage}, 'circular', 'icon', 'basic', 'button']"><i :class="['ui', 'angle right', 'icon']"></i></button>
+    <button v-if="controls" @click="fetchData('artists/')" :class="['ui', 'circular', 'icon', 'basic', 'button']"><i :class="['ui', 'refresh', 'icon']"></i></button>
+    <div class="ui hidden divider"></div>
+    <div class="ui three cards">
+      <div v-if="isLoading" class="ui inverted active dimmer">
+        <div class="ui loader"></div>
+      </div>
+      <artist-card :artist="artist" v-for="artist in objects" :key="artist.id"></artist-card>
+    </div>
+    <div v-if="!isLoading && objects.length === 0">No results matching your query.</div>
+  </div>
+</template>
+
+<script>
+import _ from '@/lodash'
+import axios from 'axios'
+import ArtistCard from "@/components/audio/artist/Card"
+
+export default {
+  props: {
+    filters: {type: Object, required: true},
+    controls: {type: Boolean, default: true},
+    header: {type: Boolean, default: true},
+  },
+  components: {
+    ArtistCard,
+  },
+  data () {
+    return {
+      objects: [],
+      limit: 12,
+      count: 0,
+      isLoading: false,
+      errors: null,
+      previousPage: null,
+      nextPage: null
+    }
+  },
+  created () {
+    this.fetchData('artists/')
+  },
+  methods: {
+    fetchData (url) {
+      if (!url) {
+        return
+      }
+      this.isLoading = true
+      let self = this
+      let params = _.clone(this.filters)
+      params.page_size = this.limit
+      params.offset = this.offset
+      axios.get(url, {params: params}).then((response) => {
+        self.previousPage = response.data.previous
+        self.nextPage = response.data.next
+        self.isLoading = false
+        self.objects = response.data.results
+        self.count = response.data.count
+      }, error => {
+        self.isLoading = false
+        self.errors = error.backendErrors
+      })
+    },
+    updateOffset (increment) {
+      if (increment) {
+        this.offset += this.limit
+      } else {
+        this.offset = Math.max(this.offset - this.limit, 0)
+      }
+    },
+  },
+  watch: {
+    offset () {
+      this.fetchData()
+    },
+    "$store.state.moderation.lastUpdate": function () {
+      this.fetchData('objects/')
+    }
+  }
+}
+</script>
+<style scoped lang="scss">
+@import "../../../style/vendor/media";
+
+.wrapper {
+  width: 100%;
+}
+.ui.cards {
+  justify-content: flex-start;
+}
+
+.ui.three.cards .card {
+  width: 100%;
+}
+@include media(">tablet") {
+  .ui.three.cards .card {
+    width: 25em;
+  }
+}
+</style>
+<style>
+.ui.cards .ui.button {
+  margin-right: 0px;
+}
+</style>
diff --git a/front/src/components/audio/track/Row.vue b/front/src/components/audio/track/Row.vue
index 624467f211855c73722f12eccf03cc8e4b684492..1f5b23a6c44b5d056dee78b34649a7ca156451c2 100644
--- a/front/src/components/audio/track/Row.vue
+++ b/front/src/components/audio/track/Row.vue
@@ -42,6 +42,13 @@
     </td>
     <td colspan="2" class="align right">
       <track-favorite-icon class="favorite-icon" :track="track"></track-favorite-icon>
+      <play-button
+        class="play-button basic icon"
+        :dropdown-only="true"
+        :is-playable="track.is_playable"
+        :dropdown-icon-classes="['ellipsis', 'vertical', 'large', 'grey']"
+        :track="track"
+      ></play-button>
       <track-playlist-icon
         v-if="$store.state.auth.authenticated"
         :track="track"></track-playlist-icon>
diff --git a/front/src/components/audio/track/Table.vue b/front/src/components/audio/track/Table.vue
index 31327ee3a5e3286cec4eded21ccc801d73e0b1eb..b70d84c62f594b49265fb8b6aff116c234bc27eb 100644
--- a/front/src/components/audio/track/Table.vue
+++ b/front/src/components/audio/track/Table.vue
@@ -5,7 +5,7 @@
         <tr>
           <th></th>
           <th></th>
-          <th colspan="6"><translate translate-context="Content/Track/*/Noun">Title</translate></th>
+          <th colspan="6"><translate translate-context="*/*/*/Noun">Title</translate></th>
           <th colspan="4"><translate translate-context="*/*/*/Noun">Artist</translate></th>
           <th colspan="4"><translate translate-context="*/*/*">Album</translate></th>
           <th colspan="4"><translate translate-context="Content/*/*">Duration</translate></th>
@@ -85,4 +85,7 @@ tr:not(:hover) .favorite-icon:not(.favorited) {
 pre {
   overflow-x: scroll;
 }
+.table-wrapper {
+  overflow: visible;
+}
 </style>
diff --git a/front/src/components/audio/track/Widget.vue b/front/src/components/audio/track/Widget.vue
index b8ad3c639c66eb756ca7f3d50148d08aa5e7c5df..788d279d0f893a236a3d08d336fb27a8e77fceaf 100644
--- a/front/src/components/audio/track/Widget.vue
+++ b/front/src/components/audio/track/Widget.vue
@@ -2,12 +2,13 @@
   <div>
     <h3 class="ui header">
       <slot name="title"></slot>
+      <span v-if="showCount" class="ui tiny circular label">{{ count }}</span>
     </h3>
     <button :disabled="!previousPage" @click="fetchData(previousPage)" :class="['ui', {disabled: !previousPage}, 'circular', 'icon', 'basic', 'button']"><i :class="['ui', 'angle up', 'icon']"></i></button>
     <button :disabled="!nextPage" @click="fetchData(nextPage)" :class="['ui', {disabled: !nextPage}, 'circular', 'icon', 'basic', 'button']"><i :class="['ui', 'angle down', 'icon']"></i></button>
     <button @click="fetchData(url)" :class="['ui', 'circular', 'icon', 'basic', 'button']"><i :class="['ui', 'refresh', 'icon']"></i></button>
     <div class="ui divided unstackable items">
-      <div class="item" v-for="object in objects" :key="object.id">
+      <div :class="['item', itemClasses]" v-for="object in objects" :key="object.id">
         <div class="ui tiny image">
           <img v-if="object.track.album.cover.original" v-lazy="$store.getters['instance/absoluteUrl'](object.track.album.cover.medium_square_crop)">
           <img v-else src="../../../assets/audio/default-cover.png">
@@ -28,13 +29,20 @@
                   </router-link>
                 </span>
               </div>
-              <div class="extra">
+              <tags-list label-classes="tiny" :truncate-size="20" :limit="2" :show-more="false" :tags="object.track.tags"></tags-list>
+
+              <div class="extra" v-if="isActivity">
                 <span class="left floated">@{{ object.user.username }}</span>
                 <span class="right floated"><human-date :date="object.creation_date" /></span>
               </div>
             </div>
             <div class="one wide stretched column">
-              <play-button class="basic icon" :dropdown-only="true" :dropdown-icon-classes="['ellipsis', 'vertical', 'large', 'grey']" :track="object.track"></play-button>
+              <play-button
+                class="basic icon"
+                :account="object.actor"
+                :dropdown-only="true"
+                :dropdown-icon-classes="['ellipsis', 'vertical', 'large', 'grey']"
+                :track="object.track"></play-button>
             </div>
           </div>
         </div>
@@ -50,19 +58,25 @@
 import _ from '@/lodash'
 import axios from 'axios'
 import PlayButton from '@/components/audio/PlayButton'
+import TagsList from "@/components/tags/List"
 
 export default {
   props: {
     filters: {type: Object, required: true},
-    url: {type: String, required: true}
+    url: {type: String, required: true},
+    isActivity: {type: Boolean, default: true},
+    showCount: {type: Boolean, default: false},
+    limit: {type: Number, default: 5},
+    itemClasses: {type: String, default: ''},
   },
   components: {
-    PlayButton
+    PlayButton,
+    TagsList
   },
   data () {
     return {
       objects: [],
-      limit: 5,
+      count: 0,
       isLoading: false,
       errors: null,
       previousPage: null,
@@ -86,7 +100,15 @@ export default {
         self.previousPage = response.data.previous
         self.nextPage = response.data.next
         self.isLoading = false
-        self.objects = response.data.results
+        self.count = response.data.count
+        if (self.isActivity) {
+          // we have listening/favorites objects, not directly tracks
+          self.objects = response.data.results
+        } else {
+          self.objects = response.data.results.map((r) => {
+            return {track: r}
+          })
+        }
       }, error => {
         self.isLoading = false
         self.errors = error.backendErrors
@@ -129,4 +151,18 @@ export default {
 .ui.divided.items > .item:last-child {
   padding-bottom: 1em !important;
 }
+
+@include media(">tablet") {
+  .divided.items > .track-item.inline {
+    width: 25em;
+    float: left;
+    border-top: none;
+    &,
+    &:first-child {
+      margin-top: 0.5em !important;
+      margin-right: 0.5em !important;
+      padding: 1em 0 !important;
+    }
+  }
+}
 </style>
diff --git a/front/src/components/auth/ApplicationForm.vue b/front/src/components/auth/ApplicationForm.vue
index c2eefbfdfb705643aad0bf728e7f8764a7d3a6af..b8427357ad464e8ea32cf942ded347009f8847f9 100644
--- a/front/src/components/auth/ApplicationForm.vue
+++ b/front/src/components/auth/ApplicationForm.vue
@@ -8,7 +8,7 @@
       </ul>
     </div>
     <div class="ui field">
-      <label><translate translate-context="Content/Applications/Input.Label/Noun">Name</translate></label>
+      <label><translate translate-context="*/*/*/Noun">Name</translate></label>
       <input name="name" required type="text" v-model="fields.name" />
     </div>
     <div class="ui field">
@@ -21,7 +21,7 @@
       </p>
     </div>
     <div class="ui field">
-      <label><translate translate-context="Content/Applications/Input.Label/Noun">Scopes</translate></label>
+      <label><translate translate-context="Content/*/*/Noun">Scopes</translate></label>
       <p>
         <translate translate-context="Content/Applications/Paragraph/">
           Checking the parent "Read" or "Write" scopes implies access to all the corresponding children scopes.
diff --git a/front/src/components/auth/ApplicationNew.vue b/front/src/components/auth/ApplicationNew.vue
index ba1a575fe79a95ae72d4c6f4611986bbc9efe9cb..4c7bb903bbd9587179e9ba6ab1ff65efbdac068a 100644
--- a/front/src/components/auth/ApplicationNew.vue
+++ b/front/src/components/auth/ApplicationNew.vue
@@ -6,7 +6,7 @@
           <translate translate-context="Content/Applications/Link">Back to settings</translate>
         </router-link>
         <h2 class="ui header">
-          <translate translate-context="Content/Applications/Title">Create a new application</translate>
+          <translate translate-context="Content/Settings/Button.Label">Create a new application</translate>
         </h2>
         <application-form
           :defaults="defaults"
@@ -38,7 +38,7 @@ export default {
   computed: {
     labels() {
       return {
-        title: this.$pgettext('Content/Applications/Title', "Create a new application")
+        title: this.$pgettext('Content/Settings/Button.Label', "Create a new application")
       }
     },
   }
diff --git a/front/src/components/auth/Login.vue b/front/src/components/auth/Login.vue
deleted file mode 100644
index 20aff3236bd797e0c03a50ce9ec36b29287e20c9..0000000000000000000000000000000000000000
--- a/front/src/components/auth/Login.vue
+++ /dev/null
@@ -1,122 +0,0 @@
-<template>
-  <main class="main pusher" v-title="labels.title">
-    <section class="ui vertical stripe segment">
-      <div class="ui small text container">
-        <h2><translate translate-context="Content/Login/Title/Verb">Log in to your Funkwhale account</translate></h2>
-        <form class="ui form" @submit.prevent="submit()">
-          <div v-if="error" class="ui negative message">
-            <div class="header"><translate translate-context="Content/Login/Error message.Title">We cannot log you in</translate></div>
-            <ul class="list">
-              <li v-if="error == 'invalid_credentials'"><translate translate-context="Content/Login/Error message.List item/Call to action">Please double-check your username/password couple is correct</translate></li>
-              <li v-else><translate translate-context="Content/Login/Error message/List item">An unknown error happend, this can mean the server is down or cannot be reached</translate></li>
-            </ul>
-          </div>
-          <div class="field">
-            <label>
-              <translate translate-context="Content/Login/Input.Label/Noun">Username or email</translate> |
-              <router-link :to="{path: '/signup'}">
-                <translate translate-context="*/Signup/Link/Verb">Create an account</translate>
-              </router-link>
-            </label>
-            <input
-            ref="username"
-            tabindex="1"
-            required
-            name="username"
-            type="text"
-            autofocus
-            :placeholder="labels.usernamePlaceholder"
-            v-model="credentials.username"
-            >
-          </div>
-          <div class="field">
-            <label>
-              <translate translate-context="Content/*/Input.Label">Password</translate> |
-              <router-link :to="{name: 'auth.password-reset', query: {email: credentials.username}}">
-                <translate translate-context="*/Login/*/Verb">Reset your password</translate>
-              </router-link>
-            </label>
-            <password-input :index="2" required v-model="credentials.password" />
-
-          </div>
-          <button tabindex="3" :class="['ui', {'loading': isLoading}, 'right', 'floated', 'green', 'button']" type="submit">
-             <translate translate-context="*/Login/*/Verb">Login</translate>
-          </button>
-        </form>
-      </div>
-    </section>
-  </main>
-</template>
-
-<script>
-import PasswordInput from "@/components/forms/PasswordInput"
-
-export default {
-  props: {
-    next: { type: String, default: "/library" }
-  },
-  components: {
-    PasswordInput
-  },
-  data() {
-    return {
-      // We need to initialize the component with any
-      // properties that will be used in it
-      credentials: {
-        username: "",
-        password: ""
-      },
-      error: "",
-      isLoading: false
-    }
-  },
-  created () {
-    if (this.$store.state.auth.authenticated) {
-      this.$router.push(this.next)
-    }
-  },
-  mounted() {
-    this.$refs.username.focus()
-  },
-  computed: {
-    labels() {
-      let usernamePlaceholder = this.$pgettext('Content/Login/Input.Placeholder', "Enter your username or email")
-      let title = this.$pgettext('Head/Login/Title', "Log In")
-      return {
-        usernamePlaceholder,
-        title
-      }
-    }
-  },
-  methods: {
-    submit() {
-      var self = this
-      self.isLoading = true
-      this.error = ""
-      var credentials = {
-        username: this.credentials.username,
-        password: this.credentials.password
-      }
-      this.$store
-        .dispatch("auth/login", {
-          credentials,
-          next: this.next,
-          onError: error => {
-            if (error.response.status === 400) {
-              self.error = "invalid_credentials"
-            } else {
-              self.error = "unknown_error"
-            }
-          }
-        })
-        .then(e => {
-          self.isLoading = false
-        })
-    }
-  }
-}
-</script>
-
-<!-- Add "scoped" attribute to limit CSS to this component only -->
-<style scoped>
-</style>
diff --git a/front/src/components/auth/LoginForm.vue b/front/src/components/auth/LoginForm.vue
new file mode 100644
index 0000000000000000000000000000000000000000..6ba652c3e3c63e6ee411820ef5b34ba3be17c1d6
--- /dev/null
+++ b/front/src/components/auth/LoginForm.vue
@@ -0,0 +1,118 @@
+<template>
+  <form class="ui form" @submit.prevent="submit()">
+    <div v-if="error" class="ui negative message">
+      <div class="header"><translate translate-context="Content/Login/Error message.Title">We cannot log you in</translate></div>
+      <ul class="list">
+        <li v-if="error == 'invalid_credentials'"><translate translate-context="Content/Login/Error message.List item/Call to action">Please double-check your username/password couple is correct</translate></li>
+        <li v-else>{{ error }}</li>
+      </ul>
+    </div>
+    <div class="field">
+      <label>
+        <translate translate-context="Content/Login/Input.Label/Noun">Username or email</translate>
+        <template v-if="showSignup">
+          |
+          <router-link :to="{path: '/signup'}">
+            <translate translate-context="*/Signup/Link/Verb">Create an account</translate>
+          </router-link>
+        </template>
+      </label>
+      <input
+      ref="username"
+      tabindex="1"
+      required
+      name="username"
+      type="text"
+      autofocus
+      :placeholder="labels.usernamePlaceholder"
+      v-model="credentials.username"
+      >
+    </div>
+    <div class="field">
+      <label>
+        <translate translate-context="*/*/*">Password</translate> |
+        <router-link :to="{name: 'auth.password-reset', query: {email: credentials.username}}">
+          <translate translate-context="*/Login/*/Verb">Reset your password</translate>
+        </router-link>
+      </label>
+      <password-input :index="2" required v-model="credentials.password" />
+
+    </div>
+    <button tabindex="3" :class="['ui', {'loading': isLoading}, 'right', 'floated', buttonClasses, 'button']" type="submit">
+        <translate translate-context="*/Login/*/Verb">Login</translate>
+    </button>
+  </form>
+</template>
+
+<script>
+import PasswordInput from "@/components/forms/PasswordInput"
+
+export default {
+  props: {
+    next: { type: String, default: "/library" },
+    buttonClasses: { type: String, default: "green" },
+    showSignup: { type: Boolean, default: true},
+  },
+  components: {
+    PasswordInput
+  },
+  data() {
+    return {
+      // We need to initialize the component with any
+      // properties that will be used in it
+      credentials: {
+        username: "",
+        password: ""
+      },
+      error: "",
+      isLoading: false
+    }
+  },
+  created () {
+    if (this.$store.state.auth.authenticated) {
+      this.$router.push(this.next)
+    }
+  },
+  mounted() {
+    this.$refs.username.focus()
+  },
+  computed: {
+    labels() {
+      let usernamePlaceholder = this.$pgettext('Content/Login/Input.Placeholder', "Enter your username or email")
+      return {
+        usernamePlaceholder,
+      }
+    }
+  },
+  methods: {
+    submit() {
+      var self = this
+      self.isLoading = true
+      this.error = ""
+      var credentials = {
+        username: this.credentials.username,
+        password: this.credentials.password
+      }
+      this.$store
+        .dispatch("auth/login", {
+          credentials,
+          next: this.next,
+          onError: error => {
+            if (error.response.status === 400) {
+              self.error = "invalid_credentials"
+            } else {
+              self.error = error.backendErrors[0]
+            }
+          }
+        })
+        .then(e => {
+          self.isLoading = false
+        })
+    }
+  }
+}
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style scoped>
+</style>
diff --git a/front/src/components/auth/Settings.vue b/front/src/components/auth/Settings.vue
index 6e2516ed87156da3c31b360d6358d027ef3009cb..795a5c45e92d599d8d83eccd1474dcd86046702b 100644
--- a/front/src/components/auth/Settings.vue
+++ b/front/src/components/auth/Settings.vue
@@ -12,7 +12,7 @@
             </div>
           </div>
           <div v-if="settings.errors.length > 0" class="ui negative message">
-            <div class="header"><translate translate-context="Content/Settings/Error message.Title">Your settings can't be updateds</translate></div>
+            <div class="header"><translate translate-context="Content/Settings/Error message.Title">Your settings can't be updated</translate></div>
             <ul class="list">
               <li v-for="error in settings.errors">{{ error }}</li>
             </ul>
@@ -244,7 +244,7 @@
               </td>
               <td>
                 <router-link class="ui basic tiny green button" :to="{name: 'settings.applications.edit', params: {id: app.client_id}}">
-                  <translate translate-context="Content/Settings/Button.Label">Edit</translate>
+                  <translate translate-context="Content/*/Button.Label/Verb">Edit</translate>
                 </router-link>
                 <dangerous-button
                   class="ui tiny basic button"
@@ -267,6 +267,43 @@
           </translate>
         </empty-state>
       </section>
+      <section class="ui text container">
+        <div class="ui hidden divider"></div>
+        <h2 class="ui header">
+          <i class="trash icon"></i>
+          <div class="content">
+            <translate translate-context="*/*/Button.Label">Delete my account</translate>
+          </div>
+        </h2>
+        <p>
+          <translate translate-context="Content/Settings/Paragraph'">You can permanently and irreversibly delete your account and all the associated data using the form below. You will be asked for confirmation.</translate>
+        </p>
+        <div class="ui warning message">
+          <translate translate-context="Content/Settings/Paragraph'">Your account will be deleted from our servers within a few minutes. We will also notify other servers who may have a copy of some of your data so they can proceed to deletion. Please note that some of these servers may be offline or unwilling to comply though.</translate>
+        </div>
+        <div class="ui form"">
+          <div v-if="accountDeleteErrors.length > 0" class="ui negative message">
+            <div class="header"><translate translate-context="Content/Settings/Error message.Title">We cannot delete your account</translate></div>
+            <ul class="list">
+              <li v-for="error in accountDeleteErrors">{{ error }}</li>
+            </ul>
+          </div>
+          <div class="field">
+            <label><translate translate-context="*/*/*">Password</translate></label>
+            <password-input required v-model="password" />
+          </div>
+          <dangerous-button
+            :class="['ui', {'loading': isDeletingAccount}, {disabled: !password}, 'button']"
+            :action="deleteAccount">
+            <translate translate-context="*/*/Button.Label">Delete my account…</translate>
+            <p slot="modal-header"><translate translate-context="Popup/Settings/Title">Do you want to delete your account?</translate></p>
+            <div slot="modal-content">
+              <p><translate translate-context="Popup/Settings/Paragraph">This is irreversible and will permanently remove your data from our servers. You will we immediatly logged out.</translate></p>
+            </div>
+            <div slot="modal-confirm"><translate translate-context="*/*/Button.Label">Delete my account</translate></div>
+          </dangerous-button>
+        </div>
+      </section>
     </div>
   </main>
 </template>
@@ -293,8 +330,11 @@ export default {
       new_password: "",
       currentAvatar: this.$store.state.auth.profile.avatar,
       passwordError: "",
+      password: "",
       isLoading: false,
       isLoadingAvatar: false,
+      isDeletingAccount: false,
+      accountDeleteErrors: [],
       avatarErrors: [],
       avatar: null,
       apps: [],
@@ -471,7 +511,32 @@ export default {
           self.isLoading = false
         }
       )
-    }
+    },
+    deleteAccount() {
+      this.isDeletingAccount = true
+      this.accountDeleteErrors = []
+      let self = this
+      let payload = {
+        confirm: true,
+        password: this.password,
+      }
+      axios.delete(`users/users/me/`, {data: payload})
+        .then(
+          response => {
+            self.isDeletingAccount = false
+            let msg = self.$pgettext('*/Auth/Message', 'Your deletion request was submitted, your account and content will be deleted shortly')
+            self.$store.commit('ui/addMessage', {
+              content: msg,
+              date: new Date()
+            })
+            self.$store.dispatch('auth/logout')
+          },
+          error => {
+            self.isDeletingAccount = false
+            self.accountDeleteErrors = error.backendErrors
+          }
+        )
+    },
   },
   computed: {
     labels() {
diff --git a/front/src/components/auth/Signup.vue b/front/src/components/auth/Signup.vue
deleted file mode 100644
index 974d082bda98153009cc2e9f35cd4c0e67ab16fd..0000000000000000000000000000000000000000
--- a/front/src/components/auth/Signup.vue
+++ /dev/null
@@ -1,146 +0,0 @@
-<template>
-  <main class="main pusher" v-title="labels.title">
-    <section class="ui vertical stripe segment">
-      <div class="ui small text container">
-        <h2><translate translate-context="Content/Signup/Title">Create a funkwhale account</translate></h2>
-        <form
-          :class="['ui', {'loading': isLoadingInstanceSetting}, 'form']"
-          @submit.prevent="submit()">
-          <p class="ui message" v-if="!$store.state.instance.settings.users.registration_enabled.value">
-            <translate translate-context="Content/Signup/Form/Paragraph">Registration are closed on this instance, you will need an invitation code to signup.</translate>
-          </p>
-
-          <div v-if="errors.length > 0" class="ui negative message">
-            <div class="header"><translate translate-context="Content/Signup/Form/Paragraph">Your account cannot be created.</translate></div>
-            <ul class="list">
-              <li v-for="error in errors">{{ error }}</li>
-            </ul>
-          </div>
-          <div class="field">
-            <label><translate translate-context="Content/*/*">Username</translate></label>
-            <input
-            ref="username"
-            name="username"
-            required
-            type="text"
-            autofocus
-            :placeholder="labels.usernamePlaceholder"
-            v-model="username">
-          </div>
-          <div class="field">
-            <label><translate translate-context="Content/*/*/Noun">Email</translate></label>
-            <input
-            ref="email"
-            name="email"
-            required
-            type="email"
-            :placeholder="labels.emailPlaceholder"
-            v-model="email">
-          </div>
-          <div class="field">
-            <label><translate translate-context="Content/*/Input.Label">Password</translate></label>
-            <password-input v-model="password" />
-          </div>
-          <div class="field" v-if="!$store.state.instance.settings.users.registration_enabled.value">
-            <label><translate translate-context="Content/*/Input.Label">Invitation code</translate></label>
-            <input
-            required
-            type="text"
-            name="invitation"
-            :placeholder="labels.placeholder"
-            v-model="invitation">
-          </div>
-          <button :class="['ui', 'green', {'loading': isLoading}, 'button']" type="submit">
-            <translate translate-context="Content/Signup/Button.Label">Create my account</translate>
-          </button>
-        </form>
-      </div>
-    </section>
-  </main>
-</template>
-
-<script>
-import axios from "axios"
-import logger from "@/logging"
-
-import PasswordInput from "@/components/forms/PasswordInput"
-
-export default {
-  props: {
-    defaultInvitation: { type: String, required: false, default: null },
-    next: { type: String, default: "/" }
-  },
-  components: {
-    PasswordInput
-  },
-  data() {
-    return {
-      username: "",
-      email: "",
-      password: "",
-      isLoadingInstanceSetting: true,
-      errors: [],
-      isLoading: false,
-      invitation: this.defaultInvitation
-    }
-  },
-  created() {
-    let self = this
-    this.$store.dispatch("instance/fetchSettings", {
-      callback: function() {
-        self.isLoadingInstanceSetting = false
-      }
-    })
-  },
-  computed: {
-    labels() {
-      let title = this.$pgettext("*/Signup/Title", "Sign Up")
-      let placeholder = this.$pgettext(
-        "Content/Signup/Form/Placeholder",
-        "Enter your invitation code (case insensitive)"
-      )
-      let usernamePlaceholder = this.$pgettext("Content/Signup/Form/Placeholder", "Enter your username")
-      let emailPlaceholder = this.$pgettext("Content/Signup/Form/Placeholder", "Enter your email")
-      return {
-        title,
-        usernamePlaceholder,
-        emailPlaceholder,
-        placeholder
-      }
-    }
-  },
-  methods: {
-    submit() {
-      var self = this
-      self.isLoading = true
-      this.errors = []
-      var payload = {
-        username: this.username,
-        password1: this.password,
-        password2: this.password,
-        email: this.email,
-        invitation: this.invitation
-      }
-      return axios.post("auth/registration/", payload).then(
-        response => {
-          logger.default.info("Successfully created account")
-          self.$router.push({
-            name: "profile",
-            params: {
-              username: this.username
-            }
-          })
-        },
-        error => {
-          self.errors = error.backendErrors
-          self.isLoading = false
-        }
-      )
-    }
-  }
-}
-</script>
-
-<!-- Add "scoped" attribute to limit CSS to this component only -->
-<style scoped>
-</style>
diff --git a/front/src/components/auth/SignupForm.vue b/front/src/components/auth/SignupForm.vue
new file mode 100644
index 0000000000000000000000000000000000000000..6374ef3a7106cde1c442ccc1c5a8ef9b6c6f23d9
--- /dev/null
+++ b/front/src/components/auth/SignupForm.vue
@@ -0,0 +1,138 @@
+<template>
+  <form
+    :class="['ui', {'loading': isLoadingInstanceSetting}, 'form']"
+    @submit.prevent="submit()">
+    <p class="ui message" v-if="!$store.state.instance.settings.users.registration_enabled.value">
+      <translate translate-context="Content/Signup/Form/Paragraph">Public registrations are not possible on this instance. You will need an invitation code to sign up.</translate>
+    </p>
+
+    <div v-if="errors.length > 0" class="ui negative message">
+      <div class="header"><translate translate-context="Content/Signup/Form/Paragraph">Your account cannot be created.</translate></div>
+      <ul class="list">
+        <li v-for="error in errors">{{ error }}</li>
+      </ul>
+    </div>
+    <div class="field">
+      <label><translate translate-context="Content/*/*">Username</translate></label>
+      <input
+      ref="username"
+      name="username"
+      required
+      type="text"
+      autofocus
+      :placeholder="labels.usernamePlaceholder"
+      v-model="username">
+    </div>
+    <div class="field">
+      <label><translate translate-context="Content/*/*/Noun">Email</translate></label>
+      <input
+      ref="email"
+      name="email"
+      required
+      type="email"
+      :placeholder="labels.emailPlaceholder"
+      v-model="email">
+    </div>
+    <div class="field">
+      <label><translate translate-context="*/*/*">Password</translate></label>
+      <password-input v-model="password" />
+    </div>
+    <div class="field" v-if="!$store.state.instance.settings.users.registration_enabled.value">
+      <label><translate translate-context="Content/*/Input.Label">Invitation code</translate></label>
+      <input
+      required
+      type="text"
+      name="invitation"
+      :placeholder="labels.placeholder"
+      v-model="invitation">
+    </div>
+    <button :class="['ui', buttonClasses, {'loading': isLoading}, ' right floated button']" type="submit">
+      <translate translate-context="Content/Signup/Button.Label">Create my account</translate>
+    </button>
+  </form>
+</template>
+
+<script>
+import axios from "axios"
+import logger from "@/logging"
+
+import PasswordInput from "@/components/forms/PasswordInput"
+
+export default {
+  props: {
+    defaultInvitation: { type: String, required: false, default: null },
+    next: { type: String, default: "/" },
+    buttonClasses: { type: String, default: "green" },
+  },
+  components: {
+    PasswordInput
+  },
+  data() {
+    return {
+      username: "",
+      email: "",
+      password: "",
+      isLoadingInstanceSetting: true,
+      errors: [],
+      isLoading: false,
+      invitation: this.defaultInvitation
+    }
+  },
+  created() {
+    let self = this
+    this.$store.dispatch("instance/fetchSettings", {
+      callback: function() {
+        self.isLoadingInstanceSetting = false
+      }
+    })
+  },
+  computed: {
+    labels() {
+      let placeholder = this.$pgettext(
+        "Content/Signup/Form/Placeholder",
+        "Enter your invitation code (case insensitive)"
+      )
+      let usernamePlaceholder = this.$pgettext("Content/Signup/Form/Placeholder", "Enter your username")
+      let emailPlaceholder = this.$pgettext("Content/Signup/Form/Placeholder", "Enter your email")
+      return {
+        usernamePlaceholder,
+        emailPlaceholder,
+        placeholder
+      }
+    }
+  },
+  methods: {
+    submit() {
+      var self = this
+      self.isLoading = true
+      this.errors = []
+      var payload = {
+        username: this.username,
+        password1: this.password,
+        password2: this.password,
+        email: this.email,
+        invitation: this.invitation
+      }
+      return axios.post("auth/registration/", payload).then(
+        response => {
+          logger.default.info("Successfully created account")
+          self.$router.push({
+            name: "profile",
+            params: {
+              username: this.username
+            }
+          })
+        },
+        error => {
+          self.errors = error.backendErrors
+          self.isLoading = false
+        }
+      )
+    }
+  }
+}
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style scoped>
+</style>
diff --git a/front/src/components/common/ActionFeedback.vue b/front/src/components/common/ActionFeedback.vue
new file mode 100644
index 0000000000000000000000000000000000000000..5f53e989dc38889e0e1058a02e51c2e33178762e
--- /dev/null
+++ b/front/src/components/common/ActionFeedback.vue
@@ -0,0 +1,45 @@
+<template>
+  <span class="feedback" v-if="isLoading || isDone">
+    <span v-if="isLoading" :class="['ui', 'active', size, 'inline', 'loader']"></span>
+    <i v-if="isDone" :class="['green', size, 'check', 'icon']"></i>
+  </span>
+</template>
+
+<script>
+import {hashCode, intToRGB} from '@/utils/color'
+
+export default {
+  props: {
+    isLoading: {type: Boolean, required: true},
+    size: {type: String, default: 'small'},
+  },
+  data () {
+    return {
+      timer: null,
+      isDone: false,
+    }
+  },
+  destroyed () {
+    if (this.timer) {
+      clearTimeout(this.timer)
+    }
+  },
+  watch: {
+    isLoading (v) {
+      let self = this
+      if (v && this.timer) {
+        clearTimeout(this.timer)
+      }
+      if (v) {
+        this.isDone = false
+      } else {
+        this.isDone = true
+        this.timer = setTimeout(() => {
+          self.isDone = false
+        }, (2000));
+
+      }
+    }
+  }
+}
+</script>
diff --git a/front/src/components/common/ActorLink.vue b/front/src/components/common/ActorLink.vue
index 518e67c863d2953fec2dc2a74052d705485ada74..7a3eefd33283e373a9c0695c4f7d8132ac3c0d84 100644
--- a/front/src/components/common/ActorLink.vue
+++ b/front/src/components/common/ActorLink.vue
@@ -1,5 +1,9 @@
 <template>
-  <span :title="actor.full_username">
+  <router-link :to="{name: 'manage.moderation.accounts.detail', params: {id: actor.full_username}}" v-if="admin" :title="actor.full_username">
+    <actor-avatar v-if="avatar" :actor="actor" />
+    &nbsp;{{ actor.full_username | truncate(30) }}
+  </router-link>
+  <span v-else :title="actor.full_username">
     <actor-avatar v-if="avatar" :actor="actor" />
     &nbsp;{{ actor.full_username | truncate(30) }}
   </span>
@@ -11,7 +15,8 @@ import {hashCode, intToRGB} from '@/utils/color'
 export default {
   props: {
     actor: {type: Object},
-    avatar: {type: Boolean, default: true}
+    avatar: {type: Boolean, default: true},
+    admin: {type: Boolean, default: false},
   }
 }
 </script>
diff --git a/front/src/components/common/CollapseLink.vue b/front/src/components/common/CollapseLink.vue
new file mode 100644
index 0000000000000000000000000000000000000000..072a3282bad8bac66383f5d465ce4c8c659ca222
--- /dev/null
+++ b/front/src/components/common/CollapseLink.vue
@@ -0,0 +1,20 @@
+<template>
+  <a role="button" class="collapse link" @click.prevent="$emit('input', !value)">
+    <translate v-if="isCollapsed" key="1" translate-context="*/*/Button,Label">Expand</translate>
+    <translate v-else key="2" translate-context="*/*/Button,Label">Collapse</translate>
+    <i :class="[{down: !isCollapsed}, {right: isCollapsed}, 'angle', 'icon']"></i>
+  </a>
+</template>
+<script>
+
+export default {
+  props: {
+    value: {type: Boolean, required: true},
+  },
+  computed: {
+    isCollapsed () {
+      return this.value
+    }
+  }
+}
+</script>
diff --git a/front/src/components/common/ExpandableDiv.vue b/front/src/components/common/ExpandableDiv.vue
new file mode 100644
index 0000000000000000000000000000000000000000..653286ad21019afcb0a17e6264b970ef730b12cb
--- /dev/null
+++ b/front/src/components/common/ExpandableDiv.vue
@@ -0,0 +1,32 @@
+<template>
+  <div class="expandable-wrapper">
+    <div :class="['expandable-content', {expandable: truncated.length < content.length}, {expanded: isExpanded}]">
+      <slot>{{ content }}</slot>
+    </div>
+    <a v-if="truncated.length < content.length" role="button" @click.prevent="isExpanded = !isExpanded">
+      <br>
+      <translate v-if="isExpanded" key="1" translate-context="*/*/Button,Label">Show less</translate>
+      <translate v-else key="2" translate-context="*/*/Button,Label">Show more</translate>
+    </a>
+  </div>
+</template>
+<script>
+import sanitize from "@/sanitize"
+
+export default {
+  props: {
+    content: {type: String, required: true},
+    length: {type: Number, default: 150, required: false},
+  },
+  data () {
+    return {
+      isExpanded: false,
+    }
+  },
+  computed: {
+    truncated () {
+      return this.content.substring(0, this.length)
+    }
+  }
+}
+</script>
diff --git a/front/src/components/federation/FetchButton.vue b/front/src/components/federation/FetchButton.vue
index 5c7f4b66e2638c7777d4d9783739bd6b11b7504c..065d72f47b3cf7dbd4a0f3c976d1aa85d550bb0c 100644
--- a/front/src/components/federation/FetchButton.vue
+++ b/front/src/components/federation/FetchButton.vue
@@ -19,7 +19,7 @@
           </div>
           <div v-else-if="fetch.status === 'errored'" class="ui error message">
             <div class="header"><translate translate-context="Popup/*/Message.Title">Refresh error</translate></div>
-            <p><translate translate-context="Popup/*/Message.Content">An error occured while trying to refresh data:</translate></p>
+            <p><translate translate-context="Popup/*/Message.Content">An error occurred while trying to refresh data:</translate></p>
             <table class="ui very basic collapsing celled table">
               <tbody>
                 <tr>
@@ -41,19 +41,19 @@
                       translate-context="*/*/Error">The remote server answered with HTTP %{ status }</translate>
                     <translate
                       v-else-if="['http', 'request'].indexOf(fetch.detail.error_code) > -1"
-                      translate-context="*/*/Error">An HTTP error occured while contacting the remote server</translate>
+                      translate-context="*/*/Error">An HTTP error occurred while contacting the remote server</translate>
                     <translate
                       v-else-if="fetch.detail.error_code === 'timeout'"
-                      translate-context="*/*/Error">The remote server didn't answered fast enough</translate>
+                      translate-context="*/*/Error">The remote server didn't respond quickly enough</translate>
                     <translate
                       v-else-if="fetch.detail.error_code === 'connection'"
                       translate-context="*/*/Error">Impossible to connect to the remote server</translate>
                     <translate
                       v-else-if="['invalid_json', 'invalid_jsonld', 'missing_jsonld_type'].indexOf(fetch.detail.error_code) > -1"
-                      translate-context="*/*/Error">The return server returned invalid JSON or JSON-LD data</translate>
+                      translate-context="*/*/Error">The remote server returned invalid JSON or JSON-LD data</translate>
                     <translate v-else-if="fetch.detail.error_code === 'validation'" translate-context="*/*/Error">Data returned by the remote server had invalid or missing attributes</translate>
-                    <translate v-else-if="fetch.detail.error_code === 'unhandled'" translate-context="*/*/Error">Unknowkn error</translate>
-                    <translate v-else translate-context="*/*/Error">Unknowkn error</translate>
+                    <translate v-else-if="fetch.detail.error_code === 'unhandled'" translate-context="*/*/Error">Unknown error</translate>
+                    <translate v-else translate-context="*/*/Error">Unknown error</translate>
                   </td>
                 </tr>
               </tbody>
diff --git a/front/src/components/globals.js b/front/src/components/globals.js
index 711b227ae956a8943c8085087b0215029a50499d..01e33b00fa76c873da1cd21c7baede59ccd4e275 100644
--- a/front/src/components/globals.js
+++ b/front/src/components/globals.js
@@ -48,4 +48,16 @@ import EmptyState from '@/components/common/EmptyState'
 
 Vue.component('empty-state', EmptyState)
 
+import ExpandableDiv from '@/components/common/ExpandableDiv'
+
+Vue.component('expandable-div', ExpandableDiv)
+
+import CollapseLink from '@/components/common/CollapseLink'
+
+Vue.component('collapse-link', CollapseLink)
+
+import ActionFeedback from '@/components/common/ActionFeedback'
+
+Vue.component('action-feedback', ActionFeedback)
+
 export default {}
diff --git a/front/src/components/instance/Stats.vue b/front/src/components/instance/Stats.vue
deleted file mode 100644
index c245cf9955e5e787a826521e4453f204774f1926..0000000000000000000000000000000000000000
--- a/front/src/components/instance/Stats.vue
+++ /dev/null
@@ -1,101 +0,0 @@
-<template>
-  <div>
-    <div v-if="stats && stats.trackFavorites !== undefined" class="ui stackable two column grid">
-      <div class="column">
-        <h3 class="ui left aligned header">
-          <translate translate-context="Content/About/Title/Noun">User activity</translate>
-        </h3>
-        <div v-if="stats" class="ui mini horizontal statistics">
-          <div class="statistic">
-            <div class="value">
-              <i class="green user icon"></i>
-              {{ stats.users }}
-            </div>
-            <div class="label"><translate translate-context="Content/About/Paragraph/Unit">users</translate></div>
-          </div>
-          <div class="statistic">
-            <div class="value">
-              <i class="orange sound icon"></i> {{ stats.listenings }}
-            </div>
-            <div class="label"><translate translate-context="Content/About/Paragraph/Unit">tracks listened</translate></div>
-          </div>
-          <div class="statistic">
-            <div class="value">
-              <i class="pink heart icon"></i> {{ stats.trackFavorites }}
-            </div>
-            <div class="label"><translate translate-context="Content/About/Paragraph/Unit">Tracks favorited</translate></div>
-          </div>
-        </div>
-      </div>
-      <div class="column">
-        <h3 class="ui left aligned header"><translate translate-context="*/*/*">Library</translate></h3>
-        <div class="ui mini horizontal statistics">
-          <div class="statistic">
-            <div class="value">
-              {{ parseInt(stats.musicDuration) }}
-            </div>
-            <div class="label"><translate translate-context="Content/About/Paragraph/Unit">Hours of music</translate></div>
-          </div>
-          <div class="statistic">
-            <div class="value">
-              {{ stats.artists }}
-            </div>
-            <div class="label"><translate translate-context="*/*/*/Noun">Artists</translate></div>
-          </div>
-          <div class="statistic">
-            <div class="value">
-              {{ stats.albums }}
-            </div>
-            <div class="label"><translate translate-context="*/*/*">Albums</translate></div>
-          </div>
-          <div class="statistic">
-            <div class="value">
-              {{ stats.tracks }}
-            </div>
-            <div class="label"><translate translate-context="*/*/*/Noun">Tracks</translate></div>
-          </div>
-        </div>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-import _ from '@/lodash'
-import axios from 'axios'
-import logger from '@/logging'
-
-export default {
-  data () {
-    return {
-      stats: null
-    }
-  },
-  created () {
-    this.fetchData()
-  },
-  methods: {
-    fetchData () {
-      var self = this
-      this.isLoading = true
-      logger.default.debug('Fetching instance stats...')
-      axios.get('instance/nodeinfo/2.0/').then((response) => {
-        let d = response.data
-        self.stats = {}
-        self.stats.users = _.get(d, 'usage.users.total')
-        self.stats.listenings = _.get(d, 'metadata.usage.listenings.total')
-        self.stats.trackFavorites = _.get(d, 'metadata.usage.favorites.tracks.total')
-        self.stats.musicDuration = _.get(d, 'metadata.library.music.hours')
-        self.stats.artists = _.get(d, 'metadata.library.artists.total')
-        self.stats.albums = _.get(d, 'metadata.library.albums.total')
-        self.stats.tracks = _.get(d, 'metadata.library.tracks.total')
-        self.isLoading = false
-      })
-    }
-  }
-}
-</script>
-
-<!-- Add "scoped" attribute to limit CSS to this component only -->
-<style scoped>
-</style>
diff --git a/front/src/components/library/AlbumBase.vue b/front/src/components/library/AlbumBase.vue
index 016be2c3779e99ddc14c9dcd1ca585ea8e462a59..e42f3e826be6cec0707577b85203af0d2e6c71c6 100644
--- a/front/src/components/library/AlbumBase.vue
+++ b/front/src/components/library/AlbumBase.vue
@@ -13,6 +13,7 @@
               <div v-html="subtitle"></div>
             </div>
           </h2>
+          <tags-list v-if="object.tags && object.tags.length > 0" :tags="object.tags"></tags-list>
           <div class="ui hidden divider"></div>
           <div class="header-buttons">
 
@@ -73,6 +74,15 @@
                     <translate translate-context="Content/*/Button.Label/Verb">Edit</translate>
                   </router-link>
                   <div class="divider"></div>
+                  <div
+                    role="button"
+                    class="basic item"
+                    v-for="obj in getReportableObjs({album: object})"
+                    :key="obj.target.type + obj.target.id"
+                    @click.stop.prevent="$store.dispatch('moderation/report', obj.target)">
+                    <i class="share icon" /> {{ obj.label }}
+                  </div>
+                  <div class="divider"></div>
                   <router-link class="basic item" v-if="$store.state.auth.availablePermissions['library']" :to="{name: 'manage.library.albums.detail', params: {id: object.id}}">
                     <i class="wrench icon"></i>
                     <translate translate-context="Content/Moderation/Link">Open in moderation interface</translate>
@@ -103,6 +113,8 @@ import backend from "@/audio/backend"
 import PlayButton from "@/components/audio/PlayButton"
 import EmbedWizard from "@/components/audio/EmbedWizard"
 import Modal from '@/components/semantic/Modal'
+import TagsList from "@/components/tags/List"
+import ReportMixin from '@/components/mixins/Report'
 
 const FETCH_URL = "albums/"
 
@@ -119,11 +131,13 @@ function groupByDisc(acc, track) {
 }
 
 export default {
+  mixins: [ReportMixin],
   props: ["id"],
   components: {
     PlayButton,
     EmbedWizard,
-    Modal
+    Modal,
+    TagsList,
   },
   data() {
     return {
@@ -143,7 +157,7 @@ export default {
       this.isLoading = true
       let url = FETCH_URL + this.id + "/"
       logger.default.debug('Fetching album "' + this.id + '"')
-      axios.get(url).then(response => {
+      axios.get(url, {params: {refresh: 'true'}}).then(response => {
         self.object = backend.Album.clean(response.data)
         self.discs = self.object.tracks.reduce(groupByDisc, [])
         self.isLoading = false
diff --git a/front/src/components/library/AlbumDetail.vue b/front/src/components/library/AlbumDetail.vue
index d695b6e596b3d46de95774d8191f18e7309bb277..a3b924d940ae6eb0b030f5095f107cf62d6a5966 100644
--- a/front/src/components/library/AlbumDetail.vue
+++ b/front/src/components/library/AlbumDetail.vue
@@ -17,7 +17,7 @@
     <template v-else>
       <section class="ui vertical stripe segment">
         <h2>
-          <translate translate-context="*/*/*/Noun">Tracks</translate>
+          <translate translate-context="*/*/*">Tracks</translate>
         </h2>
         <track-table v-if="object" :artist="object.artist" :display-position="true" :tracks="object.tracks"></track-table>
       </section>
diff --git a/front/src/components/library/Albums.vue b/front/src/components/library/Albums.vue
index 9817af830770142065f1e84f4253cbdda23c41e6..7aad836f041db980d96690774ea46a1013ba25a7 100644
--- a/front/src/components/library/Albums.vue
+++ b/front/src/components/library/Albums.vue
@@ -20,6 +20,10 @@
               </option>
             </select>
           </div>
+          <div class="field">
+            <label><translate translate-context="*/*/*/Noun">Tags</translate></label>
+            <tags-selector v-model="tags"></tags-selector>
+          </div>
           <div class="field">
             <label><translate translate-context="Content/Search/Dropdown.Label/Noun">Ordering direction</translate></label>
             <select class="ui dropdown" v-model="orderingDirection">
@@ -70,6 +74,7 @@
 </template>
 
 <script>
+import qs from 'qs'
 import axios from "axios"
 import _ from "@/lodash"
 import $ from "jquery"
@@ -81,17 +86,20 @@ import PaginationMixin from "@/components/mixins/Pagination"
 import TranslationsMixin from "@/components/mixins/Translations"
 import AlbumCard from "@/components/audio/album/Card"
 import Pagination from "@/components/Pagination"
+import TagsSelector from '@/components/library/TagsSelector'
 
 const FETCH_URL = "albums/"
 
 export default {
   mixins: [OrderingMixin, PaginationMixin, TranslationsMixin],
   props: {
-    defaultQuery: { type: String, required: false, default: "" }
+    defaultQuery: { type: String, required: false, default: "" },
+    defaultTags: { type: Array, required: false, default: () => { return [] } },
   },
   components: {
     AlbumCard,
-    Pagination
+    Pagination,
+    TagsSelector,
   },
   data() {
     let defaultOrdering = this.getOrderingFromString(
@@ -102,6 +110,7 @@ export default {
       result: null,
       page: parseInt(this.defaultPage),
       query: this.defaultQuery,
+      tags: (this.defaultTags || []).filter((t) => { return t.length > 0 }),
       paginateBy: parseInt(this.defaultPaginateBy || 25),
       orderingDirection: defaultOrdering.direction || "+",
       ordering: defaultOrdering.field,
@@ -116,7 +125,7 @@ export default {
   },
   computed: {
     labels() {
-      let searchPlaceholder = this.$pgettext('Content/Search/Input.Placeholder', "Enter album title...")
+      let searchPlaceholder = this.$pgettext('Content/Search/Input.Placeholder', "Enter album title…")
       let title = this.$pgettext('*/*/*', "Albums")
       return {
         searchPlaceholder,
@@ -126,14 +135,18 @@ export default {
   },
   methods: {
     updateQueryString: _.debounce(function() {
-      this.$router.replace({
-        query: {
+      history.pushState(
+        {},
+        null,
+        this.$route.path + '?' + new URLSearchParams(
+          {
           query: this.query,
           page: this.page,
+          tag: this.tags,
           paginateBy: this.paginateBy,
           ordering: this.getOrderingAsString()
-        }
-      })
+        }).toString()
+      )
     }, 500),
     fetchData: _.debounce(function() {
       var self = this
@@ -144,10 +157,19 @@ export default {
         page_size: this.paginateBy,
         q: this.query,
         ordering: this.getOrderingAsString(),
-        playable: "true"
+        playable: "true",
+        tag: this.tags,
       }
       logger.default.debug("Fetching albums")
-      axios.get(url, { params: params }).then(response => {
+      axios.get(
+        url,
+        {
+          params: params,
+          paramsSerializer: function(params) {
+            return qs.stringify(params, { indices: false })
+          }
+        }
+      ).then(response => {
         self.result = response.data
         self.isLoading = false
       })
@@ -177,6 +199,10 @@ export default {
       this.updateQueryString()
       this.fetchData()
     },
+    tags() {
+      this.updateQueryString()
+      this.fetchData()
+    },
     "$store.state.moderation.lastUpdate": function () {
       this.fetchData()
     }
diff --git a/front/src/components/library/ArtistBase.vue b/front/src/components/library/ArtistBase.vue
index 3c21f603fe150109ade24448510bb42805ac4663..2c5d5284aac8b1c39016f854830795a9de785e9b 100644
--- a/front/src/components/library/ArtistBase.vue
+++ b/front/src/components/library/ArtistBase.vue
@@ -21,6 +21,7 @@
               </div>
             </div>
           </h2>
+          <tags-list v-if="object.tags && object.tags.length > 0" :tags="object.tags"></tags-list>
           <div class="ui hidden divider"></div>
           <div class="header-buttons">
             <div class="ui buttons">
@@ -83,6 +84,16 @@
                     <i class="edit icon"></i>
                     <translate translate-context="Content/*/Button.Label/Verb">Edit</translate>
                   </router-link>
+                  <div class="divider"></div>
+                  <div
+                    role="button"
+                    class="basic item"
+                    v-for="obj in getReportableObjs({artist: object})"
+                    :key="obj.target.type + obj.target.id"
+                    @click.stop.prevent="$store.dispatch('moderation/report', obj.target)">
+                    <i class="share icon" /> {{ obj.label }}
+                  </div>
+
                   <div class="divider"></div>
                   <router-link class="basic item" v-if="$store.state.auth.availablePermissions['library']" :to="{name: 'manage.library.artists.detail', params: {id: object.id}}">
                     <i class="wrench icon"></i>
@@ -123,17 +134,20 @@ import PlayButton from "@/components/audio/PlayButton"
 import EmbedWizard from "@/components/audio/EmbedWizard"
 import Modal from '@/components/semantic/Modal'
 import RadioButton from "@/components/radios/Button"
+import TagsList from "@/components/tags/List"
+import ReportMixin from '@/components/mixins/Report'
 
 const FETCH_URL = "albums/"
 
-
 export default {
+  mixins: [ReportMixin],
   props: ["id"],
   components: {
     PlayButton,
     EmbedWizard,
     Modal,
-    RadioButton
+    RadioButton,
+    TagsList,
   },
   data() {
     return {
@@ -175,7 +189,7 @@ export default {
 
       })
 
-      let artistPromise = axios.get("artists/" + this.id + "/").then(response => {
+      let artistPromise = axios.get("artists/" + this.id + "/", {params: {refresh: 'true'}}).then(response => {
         self.object = response.data
       })
       await trackPromise
diff --git a/front/src/components/library/Artists.vue b/front/src/components/library/Artists.vue
index 5f4102ab1c269cc6610bf8cec3fa95b33b9d5b83..2ac23ac8e7df59906629ccd6aaa5d922639838e7 100644
--- a/front/src/components/library/Artists.vue
+++ b/front/src/components/library/Artists.vue
@@ -12,6 +12,10 @@
             </label>
             <input type="text" name="search" v-model="query" :placeholder="labels.searchPlaceholder"/>
           </div>
+          <div class="field">
+            <label><translate translate-context="*/*/*/Noun">Tags</translate></label>
+            <tags-selector v-model="tags"></tags-selector>
+          </div>
           <div class="field">
             <label><translate translate-context="Content/Search/Dropdown.Label/Noun">Ordering</translate></label>
             <select class="ui dropdown" v-model="ordering">
@@ -31,27 +35,18 @@
             <label><translate translate-context="Content/Search/Dropdown.Label/Noun">Results per page</translate></label>
             <select class="ui dropdown" v-model="paginateBy">
               <option :value="parseInt(12)">12</option>
-              <option :value="parseInt(25)">25</option>
+              <option :value="parseInt(30)">30</option>
               <option :value="parseInt(50)">50</option>
             </select>
           </div>
         </div>
       </div>
       <div class="ui hidden divider"></div>
-      <div
-        v-if="result"
-        v-masonry
-        transition-duration="0"
-        item-selector=".card"
-        percent-position="true"
-        stagger="0">
-        <div v-if="result.results.length > 0" class="ui cards">
-          <artist-card
-            v-masonry-tile
-            v-for="artist in result.results"
-            :key="artist.id"
-            :artist="artist"></artist-card>
+      <div v-if="result && result.results.length > 0" class="ui three cards">
+        <div v-if="isLoading" class="ui inverted active dimmer">
+          <div class="ui loader"></div>
         </div>
+        <artist-card :artist="artist" v-for="artist in result.results" :key="artist.id"></artist-card>
       </div>
       <div class="ui center aligned basic segment">
         <pagination
@@ -67,6 +62,7 @@
 </template>
 
 <script>
+import qs from 'qs'
 import axios from "axios"
 import _ from "@/lodash"
 import $ from "jquery"
@@ -78,17 +74,20 @@ import PaginationMixin from "@/components/mixins/Pagination"
 import TranslationsMixin from "@/components/mixins/Translations"
 import ArtistCard from "@/components/audio/artist/Card"
 import Pagination from "@/components/Pagination"
+import TagsSelector from '@/components/library/TagsSelector'
 
 const FETCH_URL = "artists/"
 
 export default {
   mixins: [OrderingMixin, PaginationMixin, TranslationsMixin],
   props: {
-    defaultQuery: { type: String, required: false, default: "" }
+    defaultQuery: { type: String, required: false, default: "" },
+    defaultTags: { type: Array, required: false, default: () => { return [] } },
   },
   components: {
     ArtistCard,
-    Pagination
+    Pagination,
+    TagsSelector,
   },
   data() {
     let defaultOrdering = this.getOrderingFromString(
@@ -99,7 +98,8 @@ export default {
       result: null,
       page: parseInt(this.defaultPage),
       query: this.defaultQuery,
-      paginateBy: parseInt(this.defaultPaginateBy || 12),
+      tags: (this.defaultTags || []).filter((t) => { return t.length > 0 }),
+      paginateBy: parseInt(this.defaultPaginateBy || 30),
       orderingDirection: defaultOrdering.direction || "+",
       ordering: defaultOrdering.field,
       orderingOptions: [["creation_date", "creation_date"], ["name", "name"]]
@@ -123,14 +123,18 @@ export default {
   },
   methods: {
     updateQueryString: _.debounce(function() {
-      this.$router.replace({
-        query: {
+      history.pushState(
+        {},
+        null,
+        this.$route.path + '?' + new URLSearchParams(
+          {
           query: this.query,
           page: this.page,
+          tag: this.tags,
           paginateBy: this.paginateBy,
           ordering: this.getOrderingAsString()
-        }
-      })
+        }).toString()
+      )
     }, 500),
     fetchData: _.debounce(function() {
       var self = this
@@ -141,10 +145,19 @@ export default {
         page_size: this.paginateBy,
         name__icontains: this.query,
         ordering: this.getOrderingAsString(),
-        playable: "true"
+        playable: "true",
+        tag: this.tags,
       }
       logger.default.debug("Fetching artists")
-      axios.get(url, { params: params }).then(response => {
+      axios.get(
+        url,
+        {
+          params: params,
+          paramsSerializer: function(params) {
+            return qs.stringify(params, { indices: false })
+          }
+        }
+      ).then(response => {
         self.result = response.data
         self.isLoading = false
       })
@@ -174,6 +187,10 @@ export default {
       this.updateQueryString()
       this.fetchData()
     },
+    tags() {
+      this.updateQueryString()
+      this.fetchData()
+    },
     "$store.state.moderation.lastUpdate": function () {
       this.fetchData()
     }
@@ -182,5 +199,22 @@ export default {
 </script>
 
 <!-- Add "scoped" attribute to limit CSS to this component only -->
-<style scoped>
+<style scoped lang="scss">
+@import "../../style/vendor/media";
+
+.wrapper {
+  width: 100%;
+}
+.ui.cards {
+  justify-content: flex-start;
+}
+
+.ui.three.cards .card {
+  width: 100%;
+}
+@include media(">tablet") {
+  .ui.three.cards .card {
+    width: 25em;
+  }
+}
 </style>
diff --git a/front/src/components/library/EditCard.vue b/front/src/components/library/EditCard.vue
index e72823aa74d7aa406e14bb7e87eea1d7ff3c0179..fc5efea55548fb41e3e04c1a0000bb449657e057 100644
--- a/front/src/components/library/EditCard.vue
+++ b/front/src/components/library/EditCard.vue
@@ -49,7 +49,7 @@
           </tr>
         </thead>
         <tbody>
-          <tr v-for="field in getUpdatedFields(obj.payload, previousState)" :key="field.id">
+          <tr v-for="field in updatedFields" :key="field.id">
             <td>{{ field.id }}</td>
 
             <td v-if="field.diff">
@@ -61,12 +61,12 @@
               <translate translate-context="*/*/*">N/A</translate>
             </td>
 
-            <td v-if="field.diff">
+            <td v-if="field.diff" :title="field.newRepr">
               <span v-if="!part.removed" v-for="part in field.diff" :class="['diff', {added: part.added}]">
                 {{ part.value }}
               </span>
             </td>
-            <td v-else>{{ field.new }}</td>
+            <td v-else :title="field.newRepr">{{ field.newRepr }}</td>
           </tr>
         </tbody>
       </table>
@@ -126,6 +126,7 @@ export default {
     }
   },
   computed: {
+    configs: edits.getConfigs,
     canApprove: edits.getCanApprove,
     canDelete: edits.getCanDelete,
     previousState () {
@@ -154,6 +155,35 @@ export default {
         namespace = 'library.artists.edit.detail'
       }
       return this.$router.resolve({name: namespace, params: {id, editId: this.obj.uuid}}).href
+    },
+
+    updatedFields () {
+      if (!this.obj.target) {
+        return []
+      }
+      let payload = this.obj.payload
+      let previousState = this.previousState
+      let fields = Object.keys(payload)
+      let self = this
+      return fields.map((f) => {
+        let fieldConfig = edits.getFieldConfig(self.configs, this.obj.target.type, f)
+        let dummyRepr = (v) => { return v }
+        let getValueRepr = fieldConfig.getValueRepr || dummyRepr
+        let d = {
+          id: f,
+        }
+        if (previousState && previousState[f]) {
+          d.old = previousState[f]
+          d.oldRepr = castValue(getValueRepr(d.old.value))
+        }
+        d.new = payload[f]
+        d.newRepr = castValue(getValueRepr(d.new))
+        if (d.old) {
+          // we compute the diffs between the old and new values
+          d.diff = diffWordsWithSpace(d.oldRepr, d.newRepr)
+        }
+        return d
+      })
     }
   },
   methods: {
@@ -184,26 +214,6 @@ export default {
         self.isLoading = false
       })
     },
-    getUpdatedFields (payload, previousState) {
-      let fields = Object.keys(payload)
-      return fields.map((f) => {
-        let d = {
-          id: f,
-        }
-        if (previousState && previousState[f]) {
-          d.old = previousState[f]
-        }
-        d.new = payload[f]
-        if (d.old) {
-          // we compute the diffs between the old and new values
-
-          let oldValue = castValue(d.old.value)
-          let newValue = castValue(d.new)
-          d.diff = diffWordsWithSpace(oldValue, newValue)
-        }
-        return d
-      })
-    }
   }
 }
 </script>
diff --git a/front/src/components/library/EditForm.vue b/front/src/components/library/EditForm.vue
index 617917c6812f03924934c48ec0e7d92079f95a72..ea9fc7696989e3448c18516bdc98426470a40fce 100644
--- a/front/src/components/library/EditForm.vue
+++ b/front/src/components/library/EditForm.vue
@@ -30,7 +30,7 @@
           </translate>
           <button class="ui tiny basic right floated button" @click.prevent="showPendingReview = true">
             <translate translate-context="Content/Library/Button.Label">
-              Retrict to unreviewed edits
+              Restrict to unreviewed edits
             </translate>
           </button>
         </template>
@@ -77,10 +77,22 @@
           </button>
 
         </template>
+        <template v-else-if="fieldConfig.type === 'tags'">
+          <label :for="fieldConfig.id">{{ fieldConfig.label }}</label>
+          <tags-selector
+            ref="tags"
+            v-model="values[fieldConfig.id]"
+            :id="fieldConfig.id"
+            required="fieldConfig.required"></tags-selector>
+          <button class="ui tiny basic left floated button" form="noop" @click.prevent="values[fieldConfig.id] = []">
+            <i class="x icon"></i>
+            <translate translate-context="Content/Library/Button.Label">Clear</translate>
+          </button>
+        </template>
         <div v-if="values[fieldConfig.id] != initialValues[fieldConfig.id]">
           <button class="ui tiny basic right floated reset button" form="noop" @click.prevent="values[fieldConfig.id] = initialValues[fieldConfig.id]">
             <i class="undo icon"></i>
-            <translate translate-context="Content/Library/Button.Label" :translate-params="{value: initialValues[fieldConfig.id] || ''}">Reset to initial value: %{ value }</translate>
+            <translate translate-context="Content/Library/Button.Label">Reset to initial value</translate>
           </button>
         </div>
       </div>
@@ -110,13 +122,17 @@ import _ from '@/lodash'
 import axios from "axios"
 import EditList from '@/components/library/EditList'
 import EditCard from '@/components/library/EditCard'
+import TagsSelector from '@/components/library/TagsSelector'
 import edits from '@/edits'
 
+import lodash from '@/lodash'
+
 export default {
   props: ["objectType", "object", "licenses"],
   components: {
     EditList,
-    EditCard
+    EditCard,
+    TagsSelector
   },
   data() {
     return {
@@ -159,7 +175,7 @@ export default {
     mutationPayload () {
       let self = this
       let changedFields = this.config.fields.filter(f => {
-        return self.values[f.id] != self.initialValues[f.id]
+        return !lodash.isEqual(self.values[f.id], self.initialValues[f.id])
       })
       if (changedFields.length === 0) {
         return null
diff --git a/front/src/components/library/FileUpload.vue b/front/src/components/library/FileUpload.vue
index a8a5d2f374e0eb4ce0c51f4c134fac28ed78c0b2..d88efd5ab0b92acf3f0ba17fec90d8cbbdc1b605 100644
--- a/front/src/components/library/FileUpload.vue
+++ b/front/src/components/library/FileUpload.vue
@@ -92,8 +92,8 @@
           <thead>
             <tr>
               <th><translate translate-context="Content/Library/Table.Label">Filename</translate></th>
-              <th><translate translate-context="Content/Library/*/in MB">Size</translate></th>
-              <th><translate translate-context="Content/Library/Table.Label (Value is Uploading/Uploaded/Error)">Status</translate></th>
+              <th><translate translate-context="Content/*/*/Noun">Size</translate></th>
+              <th><translate translate-context="*/*/*">Status</translate></th>
             </tr>
           </thead>
           <tbody>
@@ -158,7 +158,7 @@ export default {
       currentTab: "summary",
       uploadUrl: this.$store.getters['instance/absoluteUrl']("/api/v1/uploads/"),
       importReference,
-      supportedExtensions: ["flac", "ogg", "mp3", "opus"],
+      supportedExtensions: ["flac", "ogg", "mp3", "opus", "aac", "m4a"],
       isLoadingQuota: false,
       quotaStatus: null,
       uploads: {
@@ -262,7 +262,7 @@ export default {
         "Cannot upload this file, ensure it is not too big"
       );
       let network = this.$pgettext('Content/Library/Help text',
-        "A network error occured while uploading this file"
+        "A network error occurred while uploading this file"
       );
       let timeout = this.$pgettext('Content/Library/Help text', "Upload timeout, please try again");
       let extension = this.$pgettext('Content/Library/Help text',
diff --git a/front/src/components/library/ImportStatusModal.vue b/front/src/components/library/ImportStatusModal.vue
index 5632e95943cb78571ed55af3a458ab788e7bceca..1750e2213602878a0565162caeeb62f8bc3adc6f 100644
--- a/front/src/components/library/ImportStatusModal.vue
+++ b/front/src/components/library/ImportStatusModal.vue
@@ -16,7 +16,7 @@
           <translate translate-context="Popup/Import/Message">Upload was skipped because a similar one is already available in one of your libraries.</translate>
         </div>
         <div class="ui error message" v-if="upload.import_status === 'errored'">
-          <translate translate-context="Popup/Import/Message">An error occured during upload processing. You will find more information below.</translate>
+          <translate translate-context="Popup/Import/Message">An error occurred during upload processing. You will find more information below.</translate>
         </div>
         <template v-if="upload.import_status === 'errored'">
           <table class="ui very basic collapsing celled table">
@@ -44,7 +44,7 @@
               </tr>
               <tr>
                 <td>
-                  <translate translate-context="Popup/Import/Table.Label/Noun">Getting help</translate>
+                  <translate translate-context="Footer/*/Link">Getting help</translate>
                 </td>
                 <td>
                   <ul>
@@ -141,8 +141,8 @@ export default {
         let detail = payload.detail || {}
         d.errorRows = getErrors(detail)
       } else {
-        d.label = this.$pgettext('Popup/Import/Error.Label', 'Unkwown error')
-        d.detail = this.$pgettext('Popup/Import/Error.Label', 'An unkwown error occured')
+        d.label = this.$pgettext('*/*/Error', 'Unknown error')
+        d.detail = this.$pgettext('Popup/Import/Error.Label', 'An unknown error occurred')
       }
       let debugInfo = {
         source: upload.source,
diff --git a/front/src/components/library/Radios.vue b/front/src/components/library/Radios.vue
index 9f59db514ccb2bab0b0d9860d1cee72eb6facab5..2d68d9072381cbb375eca65f992e8bb8b2f2f574 100644
--- a/front/src/components/library/Radios.vue
+++ b/front/src/components/library/Radios.vue
@@ -154,14 +154,17 @@ export default {
   },
   methods: {
     updateQueryString: _.debounce(function() {
-      this.$router.replace({
-        query: {
+      history.pushState(
+        {},
+        null,
+        this.$route.path + '?' + new URLSearchParams(
+          {
           query: this.query,
           page: this.page,
           paginateBy: this.paginateBy,
           ordering: this.getOrderingAsString()
-        }
-      })
+        }).toString()
+      )
     }, 500),
     fetchData: _.debounce(function() {
       var self = this
diff --git a/front/src/components/library/TagDetail.vue b/front/src/components/library/TagDetail.vue
new file mode 100644
index 0000000000000000000000000000000000000000..9a954ccf66ce7013cb48090954b54f5f5af97754
--- /dev/null
+++ b/front/src/components/library/TagDetail.vue
@@ -0,0 +1,86 @@
+<template>
+  <main v-title="labels.title">
+    <section class="ui vertical stripe segment">
+      <h2 class="ui header">
+        <span class="ui circular huge hashtag label">
+          {{ labels.title }}
+        </span>
+      </h2>
+      <radio-button type="tag" :object-id="id"></radio-button>
+      <router-link class="ui right floated button" v-if="$store.state.auth.availablePermissions['library']" :to="{name: 'manage.library.tags.detail', params: {id: id}}">
+        <i class="wrench icon"></i>
+        <translate translate-context="Content/Moderation/Link">Open in moderation interface</translate>
+      </router-link>
+
+      <div class="ui hidden divider"></div>
+      <div class="ui row">
+        <artist-widget :controls="false" :filters="{playable: true, ordering: '-creation_date', tag: id}">
+          <template slot="title">
+            <router-link :to="{name: 'library.artists.browse', query: {tag: id}}">
+              <translate translate-context="*/*/*/Noun">Artists</translate>
+            </router-link>
+          </template>
+        </artist-widget>
+        <div class="ui hidden divider"></div>
+        <div class="ui hidden divider"></div>
+        <album-widget :show-count="true" :controls="false" :filters="{playable: true, ordering: '-creation_date', tag: id}">
+          <template slot="title">
+            <router-link :to="{name: 'library.albums.browse', query: {tag: id}}">
+              <translate translate-context="*/*/*">Albums</translate>
+            </router-link>
+          </template>
+        </album-widget>
+        <div class="ui hidden divider"></div>
+        <div class="ui hidden divider"></div>
+        <track-widget :show-count="true" :limit="12" item-classes="track-item inline" :url="'/tracks/'" :is-activity="false" :filters="{playable: true, ordering: '-creation_date', tag: id}">
+          <template slot="title">
+            <translate translate-context="*/*/*">Tracks</translate>
+          </template>
+        </track-widget>
+        <div class="ui clearing hidden divider"></div>
+      </div>
+    </section>
+  </main>
+</template>
+
+<script>
+
+import TrackWidget from "@/components/audio/track/Widget"
+import AlbumWidget from "@/components/audio/album/Widget"
+import ArtistWidget from "@/components/audio/artist/Widget"
+import RadioButton from "@/components/radios/Button"
+
+export default {
+  props: {
+    id: { type: String, required: true }
+  },
+  components: {
+    ArtistWidget,
+    AlbumWidget,
+    TrackWidget,
+    RadioButton,
+  },
+  computed: {
+    labels() {
+      let title = `#${this.id}`
+      return {
+        title
+      }
+    },
+    isAuthenticated () {
+      return this.$store.state.auth.authenticated
+    },
+    hasFavorites () {
+      return this.$store.state.favorites.count > 0
+    },
+  },
+}
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style scoped>
+.ui.circular.label {
+  padding-left: 1em !important;
+  padding-right: 1em !important;
+}
+</style>
diff --git a/front/src/components/library/TagsSelector.vue b/front/src/components/library/TagsSelector.vue
new file mode 100644
index 0000000000000000000000000000000000000000..6a1fe06e825c8c2309c0638df7dc6a40878a8c9d
--- /dev/null
+++ b/front/src/components/library/TagsSelector.vue
@@ -0,0 +1,77 @@
+<template>
+  <div ref="dropdown" class="ui multiple search selection dropdown">
+    <input type="hidden">
+    <i class="dropdown icon"></i>
+    <input type="text" class="search">
+    <div class="default text">
+      <translate translate-context="*/Dropdown/Placeholder/Verb">Search for tags…</translate>
+    </div>
+  </div>
+</template>
+<script>
+import $ from 'jquery'
+
+import lodash from '@/lodash'
+export default {
+  props: ['value'],
+  mounted () {
+    this.$nextTick(() => {
+      this.initDropdown()
+
+    })
+  },
+  methods: {
+    initDropdown () {
+      let self = this
+      let handleUpdate = () => {
+        let value = $(self.$refs.dropdown).dropdown('get value').split(',')
+        self.$emit('input', value)
+        return value
+      }
+      let settings = {
+        saveRemoteData: false,
+        filterRemoteData: true,
+        apiSettings: {
+          url: this.$store.getters['instance/absoluteUrl']('/api/v1/tags/?name__startswith={query}&ordering=length&page_size=5'),
+          beforeXHR: function (xhrObject) {
+            xhrObject.setRequestHeader('Authorization', self.$store.getters['auth/header'])
+            return xhrObject
+          },
+        },
+        fields: {
+          remoteValues: 'results',
+          value: 'name'
+        },
+        allowAdditions: true,
+        minCharacters: 1,
+        onAdd: handleUpdate,
+        onRemove: handleUpdate,
+        onLabelRemove: handleUpdate,
+        onChange: handleUpdate,
+      }
+      $(this.$refs.dropdown).dropdown(settings)
+      $(this.$refs.dropdown).dropdown('set exactly', this.value)
+    }
+  },
+  watch: {
+    value: {
+      handler (v) {
+        let current = $(this.$refs.dropdown).dropdown('get value').split(',').sort()
+        if (!lodash.isEqual([...v].sort(), current)) {
+          $(this.$refs.dropdown).dropdown('set exactly', v)
+        }
+      },
+      deep: true
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+.ui.form .field > .selection.dropdown {
+  min-width: 200px;
+}
+
+</style>
+
diff --git a/front/src/components/library/TrackBase.vue b/front/src/components/library/TrackBase.vue
index 2f3cc51a9d74b1b855e2edefa6288704a6bcb0db..82f3aa8a7b4c548b9cc7a38ac43f3f1f0f5684e3 100644
--- a/front/src/components/library/TrackBase.vue
+++ b/front/src/components/library/TrackBase.vue
@@ -17,6 +17,8 @@
               <div class="sub header" v-html="subtitle"></div>
             </div>
           </h2>
+          <tags-list v-if="track.tags && track.tags.length > 0" :tags="track.tags"></tags-list>
+          <div class="ui hidden divider"></div>
           <div class="header-buttons">
             <div class="ui buttons">
               <play-button class="orange" :track="track">
@@ -88,6 +90,15 @@
                     <translate translate-context="Content/*/Button.Label/Verb">Edit</translate>
                   </router-link>
                   <div class="divider"></div>
+                  <div
+                    role="button"
+                    class="basic item"
+                    v-for="obj in getReportableObjs({track})"
+                    :key="obj.target.type + obj.target.id"
+                    @click.stop.prevent="$store.dispatch('moderation/report', obj.target)">
+                    <i class="share icon" /> {{ obj.label }}
+                  </div>
+                  <div class="divider"></div>
                   <router-link class="basic item" v-if="$store.state.auth.availablePermissions['library']" :to="{name: 'manage.library.tracks.detail', params: {id: track.id}}">
                     <i class="wrench icon"></i>
                     <translate translate-context="Content/Moderation/Link">Open in moderation interface</translate>
@@ -121,17 +132,21 @@ import TrackFavoriteIcon from "@/components/favorites/TrackFavoriteIcon"
 import TrackPlaylistIcon from "@/components/playlists/TrackPlaylistIcon"
 import Modal from '@/components/semantic/Modal'
 import EmbedWizard from "@/components/audio/EmbedWizard"
+import TagsList from "@/components/tags/List"
+import ReportMixin from '@/components/mixins/Report'
 
 const FETCH_URL = "tracks/"
 
 export default {
   props: ["id"],
+  mixins: [ReportMixin],
   components: {
     PlayButton,
     TrackPlaylistIcon,
     TrackFavoriteIcon,
     Modal,
-    EmbedWizard
+    EmbedWizard,
+    TagsList,
   },
   data() {
     return {
@@ -151,7 +166,7 @@ export default {
       this.isLoadingTrack = true
       let url = FETCH_URL + this.id + "/"
       logger.default.debug('Fetching track "' + this.id + '"')
-      axios.get(url).then(response => {
+      axios.get(url, {params: {refresh: 'true'}}).then(response => {
         self.track = response.data
         self.isLoadingTrack = false
       })
diff --git a/front/src/components/library/TrackDetail.vue b/front/src/components/library/TrackDetail.vue
index 2eb9a0009b0bbf813b19a1affdcd2d4f129c6a7c..ce443fcd4edf3b51d7deb83c6327407f94303f6b 100644
--- a/front/src/components/library/TrackDetail.vue
+++ b/front/src/components/library/TrackDetail.vue
@@ -9,7 +9,7 @@
         <tbody>
           <tr>
             <td>
-              <translate translate-context="Content/Track/Table.Label/Noun">Copyright</translate>
+              <translate translate-context="Content/Track/*/Noun">Copyright</translate>
             </td>
             <td v-if="track.copyright" :title="track.copyright">{{ track.copyright|truncate(50) }}</td>
             <td v-else>
@@ -38,7 +38,7 @@
           </tr>
           <tr>
             <td>
-              <translate translate-context="Content/Library/*/in MB">Size</translate>
+              <translate translate-context="Content/*/*/Noun">Size</translate>
             </td>
             <td v-if="upload && upload.size">{{ upload.size | humanSize }}</td>
             <td v-else>
@@ -116,7 +116,7 @@ export default {
   methods: {
     fetchLicenseData(licenseId) {
       var self = this
-      let url = `licenses/${licenseId}/`
+      let url = `licenses/${licenseId}`
       axios.get(url).then(response => {
         self.licenseData = response.data
       })
diff --git a/front/src/components/library/radios/Builder.vue b/front/src/components/library/radios/Builder.vue
index c6101a3200b0def3a9b3249dbba6bdbb70e740c1..07c387cbe777bfb613ae7da3a0f210d8af1a0c65 100644
--- a/front/src/components/library/radios/Builder.vue
+++ b/front/src/components/library/radios/Builder.vue
@@ -23,7 +23,7 @@
               <input id="name" name="name" type="text" v-model="radioName" :placeholder="labels.placeholder.name" />
             </div>
             <div class="field">
-              <label for="description"><translate translate-context="Content/*/Input.Label/Noun">Description</translate></label>
+              <label for="description"><translate translate-context="*/*/*/Noun">Description</translate></label>
               <textarea rows="2" id="description" type="text" v-model="radioDesc" :placeholder="labels.placeholder.description" />
             </div>
             <div class="ui toggle checkbox">
diff --git a/front/src/components/manage/library/AlbumsTable.vue b/front/src/components/manage/library/AlbumsTable.vue
index 3af2da4db9bccd1d5d691f2b0ee9152fe9d2b7e1..3c9dd6a90d5b87518ec8a0a2b1184e955f676e79 100644
--- a/front/src/components/manage/library/AlbumsTable.vue
+++ b/front/src/components/manage/library/AlbumsTable.vue
@@ -37,8 +37,8 @@
         action-url="manage/library/albums/action/"
         :filters="actionFilters">
         <template slot="header-cells">
-          <th><translate translate-context="*/*/*">Title</translate></th>
-          <th><translate translate-context="*/*/*">Artist</translate></th>
+          <th><translate translate-context="*/*/*/Noun">Title</translate></th>
+          <th><translate translate-context="*/*/*/Noun">Artist</translate></th>
           <th><translate translate-context="Content/Moderation/*/Noun">Domain</translate></th>
           <th><translate translate-context="*/*/*">Tracks</translate></th>
           <th><translate translate-context="Content/*/*/Noun">Release date</translate></th>
diff --git a/front/src/components/manage/library/EditsCardList.vue b/front/src/components/manage/library/EditsCardList.vue
index 28b07f37480b334e5b563e603977bc2a7d5fa245..abf9985544c939f514b42e18eb80b1ebf6f1e722 100644
--- a/front/src/components/manage/library/EditsCardList.vue
+++ b/front/src/components/manage/library/EditsCardList.vue
@@ -10,7 +10,7 @@
           </form>
         </div>
         <div class="field">
-          <label><translate translate-context="Content/Search/Dropdown.Label (Value is All/Pending review/Approved/Rejected)">Status</translate></label>
+          <label><translate translate-context="*/*/*">Status</translate></label>
           <select class="ui dropdown" @change="addSearchToken('is_approved', $event.target.value)" :value="getTokenValue('is_approved', '')">
             <option value="">
               <translate translate-context="Content/*/Dropdown">All</translate>
diff --git a/front/src/components/manage/library/LibrariesTable.vue b/front/src/components/manage/library/LibrariesTable.vue
index 88c58f3110ff068b9905a81d9bd09deffc1e7bda..965ba9f9107fb449721b73f759aecaa25b5c4e55 100644
--- a/front/src/components/manage/library/LibrariesTable.vue
+++ b/front/src/components/manage/library/LibrariesTable.vue
@@ -46,12 +46,12 @@
         action-url="manage/library/libraries/action/"
         :filters="actionFilters">
         <template slot="header-cells">
-          <th><translate translate-context="*/*/*">Name</translate></th>
-          <th><translate translate-context="*/*/*">Account</translate></th>
+          <th><translate translate-context="*/*/*/Noun">Name</translate></th>
+          <th><translate translate-context="*/*/*/Noun">Account</translate></th>
           <th><translate translate-context="Content/Moderation/*/Noun">Domain</translate></th>
           <th><translate translate-context="*/*/*">Visibility</translate></th>
-          <th><translate translate-context="Content/*/*/Noun">Uploads</translate></th>
-          <th><translate translate-context="Content/*/*/Noun">Followers</translate></th>
+          <th><translate translate-context="*/*/*">Uploads</translate></th>
+          <th><translate translate-context="Content/Federation/*/Noun">Followers</translate></th>
           <th><translate translate-context="Content/*/*/Noun">Creation date</translate></th>
         </template>
         <template slot="row-cells" slot-scope="scope">
diff --git a/front/src/components/manage/library/TagsTable.vue b/front/src/components/manage/library/TagsTable.vue
new file mode 100644
index 0000000000000000000000000000000000000000..9016f5011c249c2f8fd276ab7326013e2ee40c40
--- /dev/null
+++ b/front/src/components/manage/library/TagsTable.vue
@@ -0,0 +1,209 @@
+<template>
+  <div>
+    <div class="ui inline form">
+      <div class="fields">
+        <div class="ui six wide field">
+          <label><translate translate-context="Content/Search/Input.Label/Noun">Search</translate></label>
+          <form @submit.prevent="search.query = $refs.search.value">
+            <input name="search" ref="search" type="text" :value="search.query" :placeholder="labels.searchPlaceholder" />
+          </form>
+        </div>
+        <div class="field">
+          <label><translate translate-context="Content/Search/Dropdown.Label/Noun">Ordering</translate></label>
+          <select class="ui dropdown" v-model="ordering">
+            <option v-for="option in orderingOptions" :value="option[0]">
+              {{ sharedLabels.filters[option[1]] }}
+            </option>
+          </select>
+        </div>
+        <div class="field">
+          <label><translate translate-context="Content/Search/Dropdown.Label/Noun">Ordering direction</translate></label>
+          <select class="ui dropdown" v-model="orderingDirection">
+            <option value="+"><translate translate-context="Content/Search/Dropdown">Ascending</translate></option>
+            <option value="-"><translate translate-context="Content/Search/Dropdown">Descending</translate></option>
+          </select>
+        </div>
+      </div>
+    </div>
+    <import-status-modal :upload="detailedUpload" :show.sync="showUploadDetailModal" />
+    <div class="dimmable">
+      <div v-if="isLoading" class="ui active inverted dimmer">
+          <div class="ui loader"></div>
+      </div>
+      <action-table
+        v-if="result"
+        @action-launched="fetchData"
+        :objects-data="result"
+        :actions="actions"
+        action-url="manage/tags/action/"
+        idField="name"
+        :filters="actionFilters">
+        <template slot="header-cells">
+          <th><translate translate-context="*/*/*/Noun">Name</translate></th>
+          <th><translate translate-context="*/*/*/Noun">Artists</translate></th>
+          <th><translate translate-context="*/*/*">Albums</translate></th>
+          <th><translate translate-context="*/*/*">Tracks</translate></th>
+          <th><translate translate-context="Content/*/*/Noun">Creation date</translate></th>
+        </template>
+        <template slot="row-cells" slot-scope="scope">
+          <td>
+            <router-link :to="{name: 'manage.library.tags.detail', params: {id: scope.obj.name }}" :title="scope.obj.name">
+              {{ scope.obj.name|truncate(30, "…", true) }}
+            </router-link>
+          </td>
+          <td>
+            {{ scope.obj.artists_count }}
+          </td>
+          <td>
+            {{ scope.obj.albums_count }}
+          </td>
+          <td>
+            {{ scope.obj.tracks_count }}
+          </td>
+          <td>
+            <human-date :date="scope.obj.creation_date"></human-date>
+          </td>
+        </template>
+      </action-table>
+    </div>
+    <div>
+      <pagination
+        v-if="result && result.count > paginateBy"
+        @page-changed="selectPage"
+        :compact="true"
+        :current="page"
+        :paginate-by="paginateBy"
+        :total="result.count"
+        ></pagination>
+
+      <span v-if="result && result.results.length > 0">
+        <translate translate-context="Content/*/Paragraph"
+          :translate-params="{start: ((page-1) * paginateBy) + 1, end: ((page-1) * paginateBy) + result.results.length, total: result.count}">
+          Showing results %{ start }-%{ end } on %{ total }
+        </translate>
+      </span>
+    </div>
+  </div>
+</template>
+
+<script>
+import axios from 'axios'
+import _ from '@/lodash'
+import time from '@/utils/time'
+import {normalizeQuery, parseTokens} from '@/search'
+import Pagination from '@/components/Pagination'
+import ActionTable from '@/components/common/ActionTable'
+import OrderingMixin from '@/components/mixins/Ordering'
+import TranslationsMixin from '@/components/mixins/Translations'
+import SmartSearchMixin from '@/components/mixins/SmartSearch'
+import ImportStatusModal from '@/components/library/ImportStatusModal'
+
+
+export default {
+  mixins: [OrderingMixin, TranslationsMixin, SmartSearchMixin],
+  props: {
+    filters: {type: Object, required: false},
+  },
+  components: {
+    Pagination,
+    ActionTable,
+    ImportStatusModal
+  },
+  data () {
+    let defaultOrdering = this.getOrderingFromString(this.defaultOrdering || '-creation_date')
+    return {
+      detailedUpload: null,
+      showUploadDetailModal: false,
+      time,
+      isLoading: false,
+      result: null,
+      page: 1,
+      paginateBy: 50,
+      search: {
+        query: this.defaultQuery,
+        tokens: parseTokens(normalizeQuery(this.defaultQuery))
+      },
+      orderingDirection: defaultOrdering.direction || '+',
+      ordering: defaultOrdering.field,
+      orderingOptions: [
+        ['creation_date', 'creation_date'],
+        ['name', 'name'],
+        ['length', 'length'],
+        ['items_count', 'items_count'],
+      ]
+    }
+  },
+  created () {
+    this.fetchData()
+  },
+  methods: {
+    fetchData () {
+      let params = _.merge({
+        'page': this.page,
+        'page_size': this.paginateBy,
+        'q': this.search.query,
+        'ordering': this.getOrderingAsString()
+      }, this.filters)
+      let self = this
+      self.isLoading = true
+      self.checked = []
+      axios.get('/manage/tags/', {params: params}).then((response) => {
+        self.isLoading = false
+        self.result = response.data
+      }, error => {
+        self.isLoading = false
+        self.errors = error.backendErrors
+      })
+    },
+    selectPage: function (page) {
+      this.page = page
+    },
+  },
+  computed: {
+    labels () {
+      return {
+        searchPlaceholder: this.$pgettext('Content/Search/Input.Placeholder', 'Search by name')
+      }
+    },
+    actionFilters () {
+      var currentFilters = {
+        q: this.search.query
+      }
+      if (this.filters) {
+        return _.merge(currentFilters, this.filters)
+      } else {
+        return currentFilters
+      }
+    },
+    actions () {
+      let deleteLabel = this.$pgettext('*/*/*/Verb', 'Delete')
+      let confirmationMessage = this.$pgettext('Popup/*/Paragraph', 'The selected tag will be removed and unlinked with existing content, if any. This action is irreversible.')
+      return [
+        {
+          name: 'delete',
+          label: deleteLabel,
+          confirmationMessage: confirmationMessage,
+          isDangerous: true,
+          allowAll: false,
+          confirmColor: 'red',
+        },
+      ]
+    }
+  },
+  watch: {
+    search (newValue) {
+      this.page = 1
+      this.fetchData()
+    },
+    page () {
+      this.fetchData()
+    },
+    ordering () {
+      this.fetchData()
+    },
+    orderingDirection () {
+      this.fetchData()
+    }
+  }
+}
+</script>
diff --git a/front/src/components/manage/library/TracksTable.vue b/front/src/components/manage/library/TracksTable.vue
index a702d8e25cb180827e1134aad530f99936bd7675..91c07c81b66d22fd892dde3a10e7b2b366a4b3fb 100644
--- a/front/src/components/manage/library/TracksTable.vue
+++ b/front/src/components/manage/library/TracksTable.vue
@@ -37,9 +37,9 @@
         action-url="manage/library/tracks/action/"
         :filters="actionFilters">
         <template slot="header-cells">
-          <th><translate translate-context="*/*/*">Title</translate></th>
+          <th><translate translate-context="*/*/*/Noun">Title</translate></th>
           <th><translate translate-context="*/*/*">Album</translate></th>
-          <th><translate translate-context="*/*/*">Artist</translate></th>
+          <th><translate translate-context="*/*/*/Noun">Artist</translate></th>
           <th><translate translate-context="Content/Moderation/*/Noun">Domain</translate></th>
           <th><translate translate-context="Content/*/*/Noun">License</translate></th>
           <th><translate translate-context="Content/*/*/Noun">Creation date</translate></th>
diff --git a/front/src/components/manage/library/UploadsTable.vue b/front/src/components/manage/library/UploadsTable.vue
index efc4e23944387bf84ae8330452a561d341e90dfe..5215a538f22f899435750b5159422a3cfbe5b0a7 100644
--- a/front/src/components/manage/library/UploadsTable.vue
+++ b/front/src/components/manage/library/UploadsTable.vue
@@ -18,7 +18,7 @@
           </select>
         </div>
         <div class="field">
-          <label><translate translate-context="Content/Library/*/Noun">Import status</translate></label>
+          <label><translate translate-context="Content/*/*/Noun">Import status</translate></label>
           <select class="ui dropdown" @change="addSearchToken('status', $event.target.value)" :value="getTokenValue('status', '')">
             <option value=""><translate translate-context="Content/*/Dropdown">All</translate></option>
             <option value="pending"><translate translate-context="Content/Library/*/Short">Pending</translate></option>
@@ -57,9 +57,9 @@
         action-url="manage/library/uploads/action/"
         :filters="actionFilters">
         <template slot="header-cells">
-          <th><translate translate-context="*/*/*">Name</translate></th>
-          <th><translate translate-context="*/*/*">Library</translate></th>
-          <th><translate translate-context="*/*/*">Account</translate></th>
+          <th><translate translate-context="*/*/*/Noun">Name</translate></th>
+          <th><translate translate-context="*/*/*/Noun">Library</translate></th>
+          <th><translate translate-context="*/*/*/Noun">Account</translate></th>
           <th><translate translate-context="Content/Moderation/*/Noun">Domain</translate></th>
           <th><translate translate-context="*/*/*">Visibility</translate></th>
           <th><translate translate-context="Content/*/*/Noun">Import status</translate></th>
diff --git a/front/src/components/manage/moderation/AccountsTable.vue b/front/src/components/manage/moderation/AccountsTable.vue
index ce91fe43e32df84913066f594442b8adbfdac07e..c0cb75fcc6b45cf7f516c7dfd4a335f4a37a6248 100644
--- a/front/src/components/manage/moderation/AccountsTable.vue
+++ b/front/src/components/manage/moderation/AccountsTable.vue
@@ -39,7 +39,7 @@
         <template slot="header-cells">
           <th><translate translate-context="*/*/*/Noun">Name</translate></th>
           <th><translate translate-context="Content/Moderation/*/Noun">Domain</translate></th>
-          <th><translate translate-context="Content/Moderation/Table.Label/Noun">Uploads</translate></th>
+          <th><translate translate-context="*/*/*">Uploads</translate></th>
           <th><translate translate-context="Content/Moderation/Table.Label/Short (Value is a date)">First seen</translate></th>
           <th><translate translate-context="Content/Moderation/Table.Label/Noun">Last seen</translate></th>
           <th><translate translate-context="Content/Moderation/Table.Label/Short">Under moderation rule</translate></th>
diff --git a/front/src/components/manage/moderation/DomainsTable.vue b/front/src/components/manage/moderation/DomainsTable.vue
index 544d91156f3101236b8395bec133b9248d2d112a..4b7d20739a43f570be55288b52b029e3f9be5fa6 100644
--- a/front/src/components/manage/moderation/DomainsTable.vue
+++ b/front/src/components/manage/moderation/DomainsTable.vue
@@ -6,6 +6,14 @@
           <label><translate translate-context="Content/Search/Input.Label/Noun">Search</translate></label>
           <input name="search" type="text" v-model="search" :placeholder="labels.searchPlaceholder" />
         </div>
+        <div class="field" v-if="allowListEnabled">
+          <label><translate translate-context="Content/Moderation/*/Adjective">Is present on allow-list</translate></label>
+          <select class="ui dropdown" v-model="allowed">
+            <option :value="null"><translate translate-context="Content/*/Dropdown">All</translate></option>
+            <option :value="true"><translate translate-context="*/*/*">Yes</translate></option>
+            <option :value="false"><translate translate-context="*/*/*">No</translate></option>
+          </select>
+        </div>
         <div class="field">
           <label><translate translate-context="Content/Search/Dropdown.Label/Noun">Ordering</translate></label>
           <select class="ui dropdown" v-model="ordering">
@@ -44,7 +52,10 @@
         </template>
         <template slot="row-cells" slot-scope="scope">
           <td>
-            <router-link :to="{name: 'manage.moderation.domains.detail', params: {id: scope.obj.name }}">{{ scope.obj.name }}</router-link>
+            <router-link :to="{name: 'manage.moderation.domains.detail', params: {id: scope.obj.name }}">
+              {{ scope.obj.name }}
+              <i v-if="allowListEnabled && scope.obj.allowed" class="green check icon" :title="labels.allowListTitle"></i>
+            </router-link>
           </td>
           <td>
             {{ scope.obj.actors_count }}
@@ -93,7 +104,8 @@ import TranslationsMixin from '@/components/mixins/Translations'
 export default {
   mixins: [OrderingMixin, TranslationsMixin],
   props: {
-    filters: {type: Object, required: false}
+    filters: {type: Object, required: false},
+    allowListEnabled: {type: Boolean, default: false},
   },
   components: {
     Pagination,
@@ -108,6 +120,7 @@ export default {
       page: 1,
       paginateBy: 50,
       search: '',
+      allowed: null,
       orderingDirection: defaultOrdering.direction || '+',
       ordering: defaultOrdering.field,
       orderingOptions: [
@@ -124,12 +137,16 @@ export default {
   },
   methods: {
     fetchData () {
-      let params = _.merge({
+      let baseFilters = {
         'page': this.page,
         'page_size': this.paginateBy,
         'q': this.search,
-        'ordering': this.getOrderingAsString()
-      }, this.filters)
+        'ordering': this.getOrderingAsString(),
+      }
+      if (this.allowed !== null) {
+        baseFilters.allowed = this.allowed
+      }
+      let params = _.merge(baseFilters, this.filters)
       let self = this
       self.isLoading = true
       self.checked = []
@@ -148,7 +165,8 @@ export default {
   computed: {
     labels () {
       return {
-        searchPlaceholder: this.$pgettext('Content/Search/Input.Placeholder', 'Search by name…')
+        searchPlaceholder: this.$pgettext('Content/Search/Input.Placeholder', 'Search by name…'),
+        allowListTitle: this.$pgettext('Content/Moderation/Popup', 'This domain is present in your allow-list'),
       }
     },
     actionFilters () {
@@ -167,7 +185,21 @@ export default {
           name: 'purge',
           label: this.$pgettext('*/*/*/Verb', 'Purge'),
           isDangerous: true
-        }
+        },
+        {
+          name: 'allow_list_add',
+          label: this.$pgettext('Content/Moderation/Action/Verb', 'Add to allow-list'),
+          filterCheckable: (obj) => {
+            return !obj.allowed
+          }
+        },
+        {
+          name: 'allow_list_remove',
+          label: this.$pgettext('Content/Moderation/Action/Verb', 'Remove from allow-list'),
+          filterCheckable: (obj) => {
+            return obj.allowed
+          }
+        },
       ]
     }
   },
@@ -179,6 +211,9 @@ export default {
     page () {
       this.fetchData()
     },
+    allowed () {
+      this.fetchData()
+    },
     ordering () {
       this.fetchData()
     },
diff --git a/front/src/components/manage/moderation/InstancePolicyCard.vue b/front/src/components/manage/moderation/InstancePolicyCard.vue
index 040195d0975f259a4a613d329284d1c95e84e9b4..994003e3a1cbae469b9902116dde43b6425fa4e0 100644
--- a/front/src/components/manage/moderation/InstancePolicyCard.vue
+++ b/front/src/components/manage/moderation/InstancePolicyCard.vue
@@ -6,7 +6,7 @@
       <i class="user icon"></i>{{ object.actor }}  &nbsp;
       <template v-if="object.is_active">
         <i class="play icon"></i>
-        <translate translate-context="*/*/*">Enabled</translate>
+        <translate translate-context="*/*/*/State of feature">Enabled</translate>
       </template>
       <template v-if="!object.is_active">
         <i class="pause icon"></i>
diff --git a/front/src/components/manage/moderation/InstancePolicyForm.vue b/front/src/components/manage/moderation/InstancePolicyForm.vue
index b38a2a9a586f22038ea5de6b42ced404067e1526..ebb946d5a661804a6129b02021622b124e7854be 100644
--- a/front/src/components/manage/moderation/InstancePolicyForm.vue
+++ b/front/src/components/manage/moderation/InstancePolicyForm.vue
@@ -15,8 +15,8 @@
       <div class="ui toggle checkbox">
         <input id="policy-is-active" v-model="current.isActive" type="checkbox">
         <label for="policy-is-active">
-          <translate translate-context="*/*/*" v-if="current.isActive" key="1">Enabled</translate>
-          <translate translate-context="*/*/*" v-else key="2">Disabled</translate>
+          <translate translate-context="*/*/*/State of feature" v-if="current.isActive" key="1">Enabled</translate>
+          <translate translate-context="*/*/*/State of feature" v-else key="2">Disabled</translate>
           <tooltip :content="labels.isActiveHelp" />
         </label>
       </div>
diff --git a/front/src/components/manage/moderation/InstancePolicyModal.vue b/front/src/components/manage/moderation/InstancePolicyModal.vue
new file mode 100644
index 0000000000000000000000000000000000000000..d905a1d8c0fa85ea501851156bfc31394173570b
--- /dev/null
+++ b/front/src/components/manage/moderation/InstancePolicyModal.vue
@@ -0,0 +1,99 @@
+<template>
+  <button class="ui button" @click.prevent="show = !show">
+    <i class="shield icon"></i>&nbsp;
+    <slot>
+      <translate translate-context="Content/Moderation/Button.Label">Moderation rules…</translate>
+    </slot>
+    <modal :show.sync="show" @show="fetchData">
+      <div class="header">
+        <translate :translate-params="{obj: target}" translate-context="Popup/Moderation/Title/Verb">Manage moderation rules for %{ obj }</translate>
+      </div>
+      <div class="content">
+        <div class="description">
+          <div v-if="isLoading" class="ui active loader"></div>
+          <instance-policy-card v-else-if="obj && !showForm" :object="obj" @update="showForm = true">
+            <header class="ui header">
+              <h3>
+                <translate translate-context="Content/Moderation/Card.Title">This entity is subject to specific moderation rules</translate>
+              </h3>
+            </header>
+            </instance-policy-card>
+            <instance-policy-form
+              v-else
+              @cancel="showForm = false"
+              @save="showForm = false; result = {count: 1, results: [$event]}"
+              @delete="result = {count: 0, results: []}; showForm = false"
+              :object="obj"
+              :type="type"
+              :target="target" />
+        </div>
+        <div class="ui hidden divider"></div>
+        <div class="ui hidden divider"></div>
+      </div>
+      <div class="actions">
+        <div class="ui deny button">
+          <translate translate-context="*/*/Button.Label/Verb">Close</translate>
+        </div>
+      </div>
+    </modal>
+
+  </button>
+</template>
+
+<script>
+import axios from 'axios'
+import InstancePolicyForm from "@/components/manage/moderation/InstancePolicyForm"
+import InstancePolicyCard from "@/components/manage/moderation/InstancePolicyCard"
+import Modal from '@/components/semantic/Modal'
+
+export default {
+  props: {
+    target: {required: true},
+    type: {required: true},
+  },
+  components: {
+    InstancePolicyForm,
+    InstancePolicyCard,
+    Modal,
+  },
+  data () {
+    return {
+      show: false,
+      isLoading: false,
+      errors: [],
+      showForm: false,
+      result: null,
+    }
+  },
+  computed: {
+    obj () {
+      if (!this.result) {
+        return null
+      }
+      return this.result.results[0]
+    }
+  },
+  methods: {
+    fetchData () {
+      let params = {}
+      if (this.type === 'domain') {
+        params.target_domain = this.target
+      }
+      if (this.type === 'actor') {
+        let parts = this.target.split('@')
+        params.target_account_username = parts[0]
+        params.target_account_domain = parts[1]
+      }
+      let self = this
+      self.isLoading = true
+      axios.get('/manage/moderation/instance-policies/', {params: params}).then((response) => {
+        self.result = response.data
+        self.isLoading = false
+      }, error => {
+        self.isLoading = false
+        self.errors = error.backendErrors
+      })
+    }
+  }
+}
+</script>
diff --git a/front/src/components/manage/moderation/NoteForm.vue b/front/src/components/manage/moderation/NoteForm.vue
new file mode 100644
index 0000000000000000000000000000000000000000..bef549771a09767d39e00697f153fd4b1e85633a
--- /dev/null
+++ b/front/src/components/manage/moderation/NoteForm.vue
@@ -0,0 +1,60 @@
+<template>
+  <form class="ui form" @submit.prevent="submit()">
+    <div v-if="errors.length > 0" class="ui negative message">
+      <div class="header"><translate translate-context="Content/Moderation/Error message.Title">Error while submitting note</translate></div>
+      <ul class="list">
+        <li v-for="error in errors">{{ error }}</li>
+      </ul>
+    </div>
+    <div class="field">
+      <textarea name="change-summary" required v-model="summary" id="change-summary" rows="3" :placeholder="labels.summaryPlaceholder"></textarea>
+    </div>
+    <button :class="['ui', {'loading': isLoading}, 'right', 'floated', 'button']" type="submit" :disabled="isLoading">
+      <translate translate-context="Content/Moderation/Button.Label/Verb">Add note</translate>
+    </button>
+  </form>
+</template>
+
+<script>
+import axios from 'axios'
+import showdown from 'showdown'
+
+export default {
+  props: {
+    target: {required: true},
+  },
+  data () {
+      return {
+      markdown: new showdown.Converter(),
+      isLoading: false,
+      summary: '',
+      errors: [],
+    }
+  },
+  computed: {
+    labels () {
+      return {
+        summaryPlaceholder: this.$pgettext('Content/Moderation/Placeholder', 'Describe what actions have been taken, or any other related updates…'),
+      }
+    },
+  },
+  methods: {
+    submit () {
+      let self = this
+      this.isLoading = true
+      let payload = {
+        target: this.target,
+        summary: this.summary
+      }
+      axios.post(`manage/moderation/notes/`, payload).then((response) => {
+        self.$emit('created', response.data)
+        self.summary = ''
+        self.isLoading = false
+      }, error => {
+        self.errors = error.backendErrors
+        self.isLoading = false
+      })
+    },
+  }
+}
+</script>
diff --git a/front/src/components/manage/moderation/NotesThread.vue b/front/src/components/manage/moderation/NotesThread.vue
new file mode 100644
index 0000000000000000000000000000000000000000..705354ec8e7c5f90b8955453f6e80c8f0dbf4395
--- /dev/null
+++ b/front/src/components/manage/moderation/NotesThread.vue
@@ -0,0 +1,65 @@
+<template>
+  <div class="ui feed">
+    <div class="event" v-for="note in notes" :key="note.uuid">
+      <div class="label">
+        <i class="comment outline icon"></i>
+      </div>
+      <div class="content">
+        <div class="summary">
+          <actor-link :admin="true" :actor="note.author"></actor-link>
+          <div class="date">
+            <human-date :date="note.creation_date"></human-date>
+          </div>
+        </div>
+        <div class="extra text">
+          <expandable-div :content="note.summary">
+            <div v-html="markdown.makeHtml(note.summary)"></div>
+          </expandable-div>
+        </div>
+        <div class="meta">
+          <dangerous-button
+            :class="['ui', {loading: isLoading}, 'basic borderless mini button']"
+            color="grey"
+            @confirm="remove(note)">
+            <i class="trash icon"></i>
+            <translate translate-context="*/*/*/Verb">Delete</translate>
+            <p slot="modal-header"><translate translate-context="Popup/Moderation/Title">Delete this note?</translate></p>
+            <div slot="modal-content">
+              <p><translate translate-context="Content/Moderation/Paragraph">The note will be removed. This action is irreversible.</translate></p>
+            </div>
+            <p slot="modal-confirm"><translate translate-context="*/*/*/Verb">Delete</translate></p>
+          </dangerous-button>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import axios from 'axios'
+import showdown from 'showdown'
+
+export default {
+  props: {
+    notes: {required: true},
+  },
+  data () {
+      return {
+      markdown: new showdown.Converter(),
+      isLoading: false,
+    }
+  },
+  methods: {
+    remove (obj) {
+      let self = this
+      this.isLoading = true
+      axios.delete(`manage/moderation/notes/${obj.uuid}/`).then((response) => {
+        self.$emit('deleted', obj.uuid)
+        self.isLoading = false
+      }, error => {
+        self.isLoading = false
+      })
+    },
+  }
+}
+</script>
diff --git a/front/src/components/manage/moderation/ReportCard.vue b/front/src/components/manage/moderation/ReportCard.vue
new file mode 100644
index 0000000000000000000000000000000000000000..65fb3773cc4cb665672301d969ed972571943190
--- /dev/null
+++ b/front/src/components/manage/moderation/ReportCard.vue
@@ -0,0 +1,422 @@
+<template>
+  <div class="ui fluid report card">
+    <div class="content">
+      <div class="header">
+        <router-link :to="{name: 'manage.moderation.reports.detail', params: {id: obj.uuid}}">
+          <translate translate-context="Content/Moderation/Card/Short" :translate-params="{id: obj.uuid.substring(0, 8)}">Report %{ id }</translate>
+        </router-link>
+        <collapse-link class="right floated" v-model="isCollapsed"></collapse-link>
+      </div>
+      <div class="content">
+        <div class="ui hidden divider"></div>
+        <div class="ui stackable two column grid">
+          <div class="column">
+            <table class="ui very basic unstackable table">
+              <tbody>
+                <tr>
+                  <td>
+                    <translate translate-context="Content/Moderation/*">Submitted by</translate>
+                  </td>
+                  <td>
+                    <div v-if="obj.submitter">
+                      <actor-link :admin="true" :actor="obj.submitter" />
+                    </div>
+                    <div v-else="obj.submitter_email">
+                      {{ obj.submitter_email }}
+                    </div>
+                  </td>
+                </tr>
+                <tr>
+                  <td>
+                    <translate translate-context="*/*/*">Category</translate>
+                  </td>
+                  <td>
+                    <report-category-dropdown
+                      :value="obj.type"
+                      @input="update({type: $event})">
+                      &#32;
+                      <action-feedback :is-loading="updating.type"></action-feedback>
+                    </report-category-dropdown>
+                  </td>
+                </tr>
+                <tr>
+                  <td>
+                    <translate translate-context="Content/*/*/Noun">Creation date</translate>
+                  </td>
+                  <td>
+                    <human-date :date="obj.creation_date" :icon="true"></human-date>
+                  </td>
+                </tr>
+              </tbody>
+            </table>
+          </div>
+          <div class="column">
+            <table class="ui very basic unstackable table">
+              <tbody>
+                <tr>
+                  <td>
+                    <translate translate-context="*/*/*">Status</translate>
+                  </td>
+                  <td v-if="obj.is_handled">
+                    <span v-if="obj.is_handled">
+                      <i class="green check icon"></i>
+                      <translate translate-context="Content/*/*/Short">Resolved</translate>
+                    </span>
+                  </td>
+                  <td v-else>
+                    <i class="red x icon"></i>
+                    <translate translate-context="Content/*/*/Short">Unresolved</translate>
+                  </td>
+                </tr>
+                <tr>
+                  <td>
+                    <translate translate-context="Content/Moderation/*">Assigned to</translate>
+                  </td>
+                  <td>
+                    <div v-if="obj.assigned_to">
+                      <actor-link :admin="true" :actor="obj.assigned_to" />
+                    </div>
+                    <translate v-else translate-context="*/*/*">N/A</translate>
+                  </td>
+                </tr>
+                <tr>
+                  <td>
+                    <translate translate-context="Content/*/*/Noun">Resolution date</translate>
+                  </td>
+                  <td>
+                    <human-date v-if="obj.handled_date" :date="obj.handled_date" :icon="true"></human-date>
+                    <translate v-else translate-context="*/*/*">N/A</translate>
+                  </td>
+                </tr>
+                <tr>
+                  <td>
+                    <translate translate-context="Content/*/*/Noun">Internal notes</translate>
+                  </td>
+                  <td>
+                    <i class="comment icon"></i>
+                    {{ obj.notes.length }}
+                  </td>
+                </tr>
+              </tbody>
+            </table>
+          </div>
+        </div>
+      </div>
+    </div>
+    <div class="main content" v-if="!isCollapsed">
+      <div class="ui stackable two column grid">
+        <div class="column">
+          <h3>
+            <translate translate-context="*/*/Field.Label/Noun">Message</translate>
+          </h3>
+          <expandable-div v-if="obj.summary" class="summary" :content="obj.summary">
+            <div v-html="markdown.makeHtml(obj.summary)"></div>
+          </expandable-div>
+        </div>
+        <aside class="column">
+          <h3>
+            <translate translate-context="Content/*/*/Short">Reported object</translate>
+          </h3>
+          <div v-if="!obj.target" class="ui warning message">
+            <translate translate-context="Content/Moderation/Message">The object associated with this report was deleted.</translate>
+          </div>
+          <router-link class="ui basic button" v-if="target && configs[target.type].urls.getDetail" :to="configs[target.type].urls.getDetail(obj.target_state)">
+            <i class="eye icon"></i>
+            <translate translate-context="Content/Moderation/Link">View public page</translate>
+          </router-link>
+          <router-link class="ui basic button" v-if="target && configs[target.type].urls.getAdminDetail" :to="configs[target.type].urls.getAdminDetail(obj.target_state)">
+            <i class="wrench icon"></i>
+            <translate translate-context="Content/Moderation/Link">Open in moderation interface</translate>
+          </router-link>
+          <table class="ui very basic unstackable table">
+            <tbody>
+              <tr v-if="target">
+                <td>
+                  <translate translate-context="Content/Track/Table.Label/Noun">Type</translate>
+                </td>
+                <td colspan="2">
+                  <i :class="[configs[target.type].icon, 'icon']"></i>
+                  {{ configs[target.type].label }}
+                </td>
+              </tr>
+              <tr v-if="obj.target_owner && (!target || target.type !== 'account')">
+                <td>
+                  <translate translate-context="*/*/*">Owner</translate>
+                </td>
+                <td>
+                  <actor-link :admin="true" :actor="obj.target_owner"></actor-link>
+                </td>
+                <td>
+                  <instance-policy-modal
+                    v-if="!obj.target_owner.is_local"
+                    class="right floated mini basic" type="actor" :target="obj.target_owner.full_username" />
+                </td>
+              </tr>
+              <tr v-if="target && target.type === 'account'">
+                <td>
+                  <translate translate-context="*/*/*/Noun">Account</translate>
+                </td>
+                <td>
+                  <actor-link :admin="true" :actor="obj.target_owner"></actor-link>
+                </td>
+                <td>
+                  <instance-policy-modal
+                    v-if="!obj.target_owner.is_local"
+                    class="right floated mini basic" type="actor" :target="obj.target_owner.full_username" />
+                </td>
+              </tr>
+              <tr v-if="obj.target_state.is_local">
+                <td>
+                  <translate translate-context="Content/Moderation/*/Noun">Domain</translate>
+                </td>
+                <td colspan="2">
+                  <i class="home icon"></i>
+                  <translate translate-context="Content/Moderation/*/Short, Noun">Local</translate>
+                </td>
+              </tr>
+              <tr v-else-if="obj.target_state.domain">
+                <td>
+                  <router-link :to="{name: 'manage.moderation.domains.detail', params: {id: obj.target_state.domain }}">
+                    <translate translate-context="Content/Moderation/*/Noun">Domain</translate>
+                  </router-link>
+                </td>
+                <td>
+                  {{ obj.target_state.domain }}
+                </td>
+                <td>
+                  <instance-policy-modal class="right floated mini basic" type="domain" :target="obj.target_state.domain" />
+                </td>
+              </tr>
+              <tr v-for="field in targetFields" :key="field.id">
+                <td>{{ field.label }}</td>
+                <td colspan="2" v-if="field.repr">{{ field.repr }}</td>
+                <td colspan="2" v-else>
+                  <translate translate-context="*/*/*">N/A</translate>
+                </td>
+              </tr>
+            </tbody>
+          </table>
+        </aside>
+      </div>
+      <div class="ui stackable two column grid">
+        <div class="column">
+          <h3>
+            <translate translate-context="Content/*/*/Noun">Internal notes</translate>
+          </h3>
+          <notes-thread @deleted="handleRemovedNote($event)" :notes="obj.notes" />
+          <note-form @created="obj.notes.push($event)" :target="{type: 'report', uuid: obj.uuid}" />
+        </div>
+        <div class="column">
+          <h3>
+            <translate translate-context="Content/*/*/Noun">Actions</translate>
+          </h3>
+          <div class="ui labelled icon basic buttons">
+            <button
+              v-if="obj.is_handled === false"
+              @click="resolve(true)"
+              :class="['ui', {loading: isLoading}, 'button']">
+              <i class="green check icon"></i>&nbsp;
+              <translate translate-context="Content/*/Button.Label/Verb">Resolve</translate>
+            </button>
+            <button
+              v-if="obj.is_handled === true"
+              @click="resolve(false)"
+              :class="['ui', {loading: isLoading}, 'button']">
+              <i class="yellow redo icon"></i>&nbsp;
+              <translate translate-context="Content/*/Button.Label">Unresolve</translate>
+            </button>
+            <template v-for="action in actions">
+              <dangerous-button
+                v-if="action.dangerous && action.show(obj)"
+                :class="['ui', {loading: isLoading}, 'button']"
+                color=""
+                :action="action.handler">
+                <i :class="[action.iconColor, action.icon, 'icon']"></i>&nbsp;
+                {{ action.label }}
+                <p slot="modal-header">{{ action.modalHeader}}</p>
+                <div slot="modal-content">
+                  <p>{{ action.modalContent }}</p>
+                </div>
+                <p slot="modal-confirm">{{ action.modalConfirmLabel }}</p>
+              </dangerous-button>
+            </template>
+          </div>
+        </div>
+      </div>
+    </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import axios from 'axios'
+import { diffWordsWithSpace } from 'diff'
+import NoteForm from '@/components/manage/moderation/NoteForm'
+import NotesThread from '@/components/manage/moderation/NotesThread'
+import ReportCategoryDropdown from '@/components/moderation/ReportCategoryDropdown'
+import InstancePolicyModal from '@/components/manage/moderation/InstancePolicyModal'
+import entities from '@/entities'
+import {setUpdate} from '@/utils'
+import showdown from 'showdown'
+
+
+function castValue (value) {
+  if (value === null || value === undefined) {
+    return ''
+  }
+  return String(value)
+}
+
+export default {
+  props: {
+    obj: {required: true},
+    currentState: {required: false}
+  },
+  components: {
+    NoteForm,
+    NotesThread,
+    ReportCategoryDropdown,
+    InstancePolicyModal,
+  },
+  data () {
+    return {
+      markdown: new showdown.Converter(),
+      isLoading: false,
+      isCollapsed: false,
+      updating: {
+        type: false,
+      }
+    }
+  },
+  computed: {
+    configs: entities.getConfigs,
+    previousState () {
+      if (this.obj.is_applied) {
+        // mutation was applied, we use the previous state that is stored
+        // on the mutation itself
+        return this.obj.previous_state
+      }
+      // mutation is not applied yet, so we use the current state that was
+      // passed to the component, if any
+      return this.currentState
+    },
+    detailUrl () {
+      if (!this.target) {
+        return ''
+      }
+      let namespace
+      let id = this.target.id
+      if (this.target.type === 'track') {
+        namespace = 'library.tracks.edit.detail'
+      }
+      if (this.target.type === 'album') {
+        namespace = 'library.albums.edit.detail'
+      }
+      if (this.target.type === 'artist') {
+        namespace = 'library.artists.edit.detail'
+      }
+      return this.$router.resolve({name: namespace, params: {id, editId: this.obj.uuid}}).href
+    },
+
+    targetFields () {
+      if (!this.target) {
+        return []
+      }
+      let payload = this.obj.target_state
+      let fields = this.configs[this.target.type].moderatedFields
+      let self = this
+      return fields.map((fieldConfig) => {
+        let dummyRepr = (v) => { return v }
+        let getValueRepr = fieldConfig.getValueRepr || dummyRepr
+        let d = {
+          id: fieldConfig.id,
+          label: fieldConfig.label,
+          value: payload[fieldConfig.id],
+          repr: castValue(getValueRepr(payload[fieldConfig.id])),
+        }
+        return d
+      })
+    },
+    target () {
+      if (this.obj.target) {
+        return this.obj.target
+      } else {
+        return this.obj.target_state._target
+      }
+    },
+    actions () {
+      if (!this.target) {
+        return []
+      }
+      let self = this
+      let actions = []
+      let typeConfig = this.configs[this.target.type]
+      if (typeConfig.getDeleteUrl) {
+        let deleteUrl = typeConfig.getDeleteUrl(this.target)
+        actions.push({
+          label: this.$pgettext('Content/Moderation/Button/Verb', 'Delete reported object'),
+          modalHeader: this.$pgettext('Content/Moderation/Popup/Header', 'Delete reported object?'),
+          modalContent: this.$pgettext('Content/Moderation/Popup,Paragraph', 'This will delete the object associated with this report and mark the report as resolved. The deletion is irreversible.'),
+          modalConfirmLabel: this.$pgettext('*/*/*/Verb', 'Delete'),
+          icon: 'x',
+          iconColor: 'red',
+          show: (obj) => { return !!obj.target },
+          dangerous: true,
+          handler: () => {
+            axios.delete(deleteUrl).then((response) => {
+              console.log('Target deleted')
+              self.obj.target = null
+              self.resolve(true)
+            }, error => {
+              console.log('Error while deleting target')
+            })
+          }
+        })
+      }
+      return actions
+    }
+  },
+  methods: {
+    update (payload) {
+      let url = `manage/moderation/reports/${this.obj.uuid}/`
+      let self = this
+      this.isLoading = true
+      setUpdate(payload, this.updating, true)
+      axios.patch(url, payload).then((response) => {
+        self.$emit('updated', payload)
+        Object.assign(self.obj, payload)
+        self.isLoading = false
+        setUpdate(payload, self.updating, false)
+      }, error => {
+        self.isLoading = false
+        setUpdate(payload, self.updating, false)
+      })
+    },
+    resolve (v) {
+      let url = `manage/moderation/reports/${this.obj.uuid}/`
+      let self = this
+      this.isLoading = true
+      axios.patch(url, {is_handled: v}).then((response) => {
+        self.$emit('handled', v)
+        self.isLoading = false
+        self.obj.is_handled = v
+        let increment
+        if (v) {
+          self.isCollapsed = true
+          increment = -1
+        } else {
+          increment = 1
+        }
+        self.$store.commit('ui/incrementNotifications', {count: increment, type: 'pendingReviewReports'})
+      }, error => {
+        self.isLoading = false
+      })
+    },
+    handleRemovedNote (uuid) {
+      this.obj.notes = this.obj.notes.filter((note) => {
+        return note.uuid != uuid
+      })
+    },
+  }
+}
+</script>
diff --git a/front/src/components/manage/users/InvitationForm.vue b/front/src/components/manage/users/InvitationForm.vue
index 950e11e08e72c6f5dedbabd72a071b1cdc8f4b0f..1d7023652d0ecd2155cb90c26a4a6787343641ef 100644
--- a/front/src/components/manage/users/InvitationForm.vue
+++ b/front/src/components/manage/users/InvitationForm.vue
@@ -35,7 +35,7 @@
           </tr>
         </tbody>
       </table>
-      <button class="ui basic button" @click="invitations = []"><translate translate-context="Content/Admin/Button.Label/Verb">Clear</translate></button>
+      <button class="ui basic button" @click="invitations = []"><translate translate-context="Content/Library/Button.Label">Clear</translate></button>
     </div>
   </div>
 </template>
diff --git a/front/src/components/manage/users/InvitationsTable.vue b/front/src/components/manage/users/InvitationsTable.vue
index 6f557c8af2c879a64613f5dff68dbd0fbffd5159..feeca041d5d6e9574d27a2ebbf1621f17762f7ed 100644
--- a/front/src/components/manage/users/InvitationsTable.vue
+++ b/front/src/components/manage/users/InvitationsTable.vue
@@ -15,7 +15,7 @@
           </select>
         </div>
         <div class="field">
-          <label><translate translate-context="Content/Admin/*/Noun (Value is Used/Not used)">Status</translate></label>
+          <label><translate translate-context="*/*/*">Status</translate></label>
           <select class="ui dropdown" v-model="isOpen">
             <option :value="null"><translate translate-context="Content/*/Dropdown">All</translate></option>
             <option :value="true"><translate translate-context="Content/Admin/Dropdown/Adjective">Open</translate></option>
@@ -36,8 +36,8 @@
         :action-url="'manage/users/invitations/action/'"
         :filters="actionFilters">
         <template slot="header-cells">
-          <th><translate translate-context="Content/Admin/Table.Label">Owner</translate></th>
-          <th><translate translate-context="Content/Admin/*/Noun (Value is Used/Not used)">Status</translate></th>
+          <th><translate translate-context="*/*/*">Owner</translate></th>
+          <th><translate translate-context="*/*/*">Status</translate></th>
           <th><translate translate-context="Content/*/*/Noun">Creation date</translate></th>
           <th><translate translate-context="Content/Admin/Table.Label/Noun">Expiration date</translate></th>
           <th><translate translate-context="Content/Admin/Table.Label/Noun">Code</translate></th>
diff --git a/front/src/components/manage/users/UsersTable.vue b/front/src/components/manage/users/UsersTable.vue
index a508f5be9469050d834d5f15a897dabf63b3d6c2..33ceb27269c70967e6a2cab5db3b07220e155c24 100644
--- a/front/src/components/manage/users/UsersTable.vue
+++ b/front/src/components/manage/users/UsersTable.vue
@@ -40,8 +40,8 @@
           <th><translate translate-context="Content/Admin/Table.Label/Short, Noun">Account status</translate></th>
           <th><translate translate-context="Content/Admin/Table.Label/Short, Noun (Value is a date)">Sign-up</translate></th>
           <th><translate translate-context="Content/Profile/Table.Label/Short, Noun (Value is a date)">Last activity</translate></th>
-          <th><translate translate-context="Content/Admin/Table.Label/Noun">Permissions</translate></th>
-          <th><translate translate-context="Content/Admin/Table.Label/Noun (Value is Regular user/Admin)">Status</translate></th>
+          <th><translate translate-context="Content/*/*/Noun">Permissions</translate></th>
+          <th><translate translate-context="*/*/*">Status</translate></th>
         </template>
         <template slot="row-cells" slot-scope="scope">
           <td>
@@ -171,7 +171,7 @@ export default {
       return [
         {
           'code': 'library',
-          'label': this.$pgettext('*/*/*', 'Library')
+          'label': this.$pgettext('*/*/*/Noun', 'Library')
         },
         {
           'code': 'moderation',
diff --git a/front/src/components/mixins/Report.vue b/front/src/components/mixins/Report.vue
new file mode 100644
index 0000000000000000000000000000000000000000..29eabb996160b30918ee3fe46e25418f18628753
--- /dev/null
+++ b/front/src/components/mixins/Report.vue
@@ -0,0 +1,86 @@
+<script>
+export default {
+  methods: {
+    getReportableObjs ({track, album, artist, playlist, account, library}) {
+      let reportableObjs = []
+      if (account) {
+        let accountLabel = this.$pgettext('*/Moderation/*/Verb', "Report @%{ username }…")
+        reportableObjs.push({
+          label: this.$gettextInterpolate(accountLabel, {username: account.preferred_username}),
+          target: {
+            type: 'account',
+            full_username: account.full_username,
+            label: account.full_username,
+            typeLabel: this.$pgettext("*/*/*/Noun", 'Account'),
+          }
+        })
+        if (track) {
+          album = track.album
+          artist = track.artist
+        }
+      }
+      if (track) {
+        reportableObjs.push({
+          label: this.$pgettext('*/Moderation/*/Verb', "Report this track…"),
+          target: {
+            type: 'track',
+            id: track.id,
+            label: track.title,
+            typeLabel: this.$pgettext("*/*/*/Noun", 'Track'),
+          }
+        })
+        album = track.album
+        artist = track.artist
+      }
+      if (album) {
+        reportableObjs.push({
+          label: this.$pgettext('*/Moderation/*/Verb', "Report this album…"),
+          target: {
+            type: 'album',
+            id: album.id,
+            label: album.title,
+            typeLabel: this.$pgettext("*/*/*", 'Album'),
+          }
+        })
+        if (!artist) {
+          artist = album.artist
+        }
+      }
+      if (artist) {
+        reportableObjs.push({
+          label: this.$pgettext('*/Moderation/*/Verb', "Report this artist…"),
+          target: {
+            type: 'artist',
+            id: artist.id,
+            label: artist.name,
+            typeLabel: this.$pgettext("*/*/*/Noun", 'Artist'),
+          }
+        })
+      }
+      if (playlist) {
+        reportableObjs.push({
+          label: this.$pgettext('*/Moderation/*/Verb', "Report this playlist…"),
+          target: {
+            type: 'playlist',
+            id: playlist.id,
+            label: playlist.name,
+            typeLabel: this.$pgettext("*/*/*", 'Playlist'),
+          }
+        })
+      }
+      if (library) {
+        reportableObjs.push({
+          label: this.$pgettext('*/Moderation/*/Verb', "Report this library…"),
+          target: {
+            type: 'library',
+            uuid: library.uuid,
+            label: library.name,
+            typeLabel: this.$pgettext("*/*/*/Noun", 'Library'),
+          }
+        })
+      }
+      return reportableObjs
+    },
+  }
+}
+</script>
diff --git a/front/src/components/mixins/Translations.vue b/front/src/components/mixins/Translations.vue
index 56ea3ed152642d6b5fa99e415d42625262571224..c56d6667aa45e4e270fcebc137add133bcfaad93 100644
--- a/front/src/components/mixins/Translations.vue
+++ b/front/src/components/mixins/Translations.vue
@@ -31,7 +31,7 @@ export default {
               },
               errored: {
                 label: this.$pgettext('Content/Library/Table/Short', 'Errored'),
-                help: this.$pgettext('Content/Library/Help text', 'This track could not be processed, please it is tagged correctly'),
+                help: this.$pgettext('Content/Library/Help text', 'This track could not be processed, please make sure it is tagged correctly'),
               },
               finished: {
                 label: this.$pgettext('Content/Library/*', 'Finished'),
@@ -39,6 +39,16 @@ export default {
               },
             }
           },
+          report_type: {
+            label: this.$pgettext('*/*/*', 'Category'),
+            choices: {
+              takedown_request: this.$pgettext("Content/Moderation/Dropdown", "Takedown request"),
+              invalid_metadata: this.$pgettext("Popup/Import/Error.Label", "Invalid metadata"),
+              illegal_content: this.$pgettext("Content/Moderation/Dropdown", "Illegal content"),
+              offensive_content: this.$pgettext("Content/Moderation/Dropdown", "Offensive content"),
+              other: this.$pgettext("Content/Moderation/Dropdown", "Other"),
+            },
+          },
         },
         filters: {
           creation_date: this.$pgettext('Content/*/*/Noun', 'Creation date'),
@@ -52,7 +62,9 @@ export default {
           album_title: this.$pgettext('Content/*/Dropdown/Noun', 'Album name'),
           artist_name: this.$pgettext('Content/*/Dropdown/Noun', 'Artist name'),
           name: this.$pgettext('*/*/*/Noun', 'Name'),
-          size: this.$pgettext('Content/Library/*/in MB', 'Size'),
+          length: this.$pgettext('*/*/*/Noun', 'Length'),
+          items_count: this.$pgettext('*/*/*/Noun', 'Items'),
+          size: this.$pgettext('Content/*/*/Noun', 'Size'),
           bitrate: this.$pgettext('Content/Track/*/Noun', 'Bitrate'),
           duration: this.$pgettext('Content/*/*', 'Duration'),
           date_joined: this.$pgettext('Content/Admin/Table.Label/Noun', 'Sign-up date'),
@@ -61,7 +73,7 @@ export default {
           domain: this.$pgettext('Content/Moderation/*/Noun', 'Domain'),
           users: this.$pgettext('*/*/*/Noun', 'Users'),
           received_messages: this.$pgettext('Content/Moderation/*/Noun', 'Received messages'),
-          uploads: this.$pgettext('Content/Moderation/Table.Label/Noun', 'Uploads'),
+          uploads: this.$pgettext('*/*/*', 'Uploads'),
           followers: this.$pgettext('Content/Federation/*/Noun', 'Followers'),
         },
         scopes: {
@@ -74,11 +86,11 @@ export default {
             description: this.$pgettext('Content/OAuth Scopes/Paragraph', 'Access to audio files, libraries, artists, albums and tracks'),
           },
           favorites: {
-            label: this.$pgettext('Content/OAuth Scopes/Label', 'Favorites'),
+            label: this.$pgettext('Sidebar/Favorites/List item.Link/Noun', 'Favorites'),
             description: this.$pgettext('Content/OAuth Scopes/Paragraph', 'Access to favorites'),
           },
           listenings: {
-            label: this.$pgettext('Content/OAuth Scopes/Label', 'Listenings'),
+            label: this.$pgettext('*/*/*/Noun', 'Listenings'),
             description: this.$pgettext('Content/OAuth Scopes/Paragraph', 'Access to listening history'),
           },
           follows: {
@@ -86,23 +98,23 @@ export default {
             description: this.$pgettext('Content/OAuth Scopes/Paragraph', 'Access to follows'),
           },
           playlists: {
-            label: this.$pgettext('Content/OAuth Scopes/Label', 'Playlists'),
+            label: this.$pgettext('*/*/*', 'Playlists'),
             description: this.$pgettext('Content/OAuth Scopes/Paragraph', 'Access to playlists'),
           },
           radios: {
-            label: this.$pgettext('Content/OAuth Scopes/Label', 'Radios'),
+            label: this.$pgettext('*/*/*', 'Radios'),
             description: this.$pgettext('Content/OAuth Scopes/Paragraph', 'Access to radios'),
           },
           filters: {
-            label: this.$pgettext('Content/OAuth Scopes/Label', 'Content filters'),
+            label: this.$pgettext('Content/Settings/Title/Noun', 'Content filters'),
             description: this.$pgettext('Content/OAuth Scopes/Paragraph', 'Access to content filters'),
           },
           notifications: {
-            label: this.$pgettext('Content/OAuth Scopes/Label', 'Notifications'),
+            label: this.$pgettext('*/Notifications/*', 'Notifications'),
             description: this.$pgettext('Content/OAuth Scopes/Paragraph', 'Access to notifications'),
           },
           edits: {
-            label: this.$pgettext('Content/OAuth Scopes/Label', 'Edits'),
+            label: this.$pgettext('*/Admin/*/Noun', 'Edits'),
             description: this.$pgettext('Content/OAuth Scopes/Paragraph', 'Access to edits'),
           }
         }
diff --git a/front/src/components/moderation/FilterModal.vue b/front/src/components/moderation/FilterModal.vue
index 8885e61fc08f6f9a5dde2787c1ec77ad56afa2fe..51e9eb70e9bfb2ea5948967f95f2a03429ba5c8c 100644
--- a/front/src/components/moderation/FilterModal.vue
+++ b/front/src/components/moderation/FilterModal.vue
@@ -19,7 +19,7 @@
         <template v-if="type === 'artist'">
           <p>
             <translate translate-context="Popup/Moderation/Paragraph">
-              You will not see tracks, albums and user activity linked to this artist anymore:
+              You will not see tracks, albums and user activity linked to this artist any more:
             </translate>
           </p>
           <ul>
@@ -30,7 +30,7 @@
           </ul>
           <p>
             <translate translate-context="Popup/Moderation/Paragraph">
-              You can manage and update your filters anytime from your account settings.
+              You can manage and update your filters any time from your account settings.
             </translate>
           </p>
         </template>
diff --git a/front/src/components/moderation/ReportCategoryDropdown.vue b/front/src/components/moderation/ReportCategoryDropdown.vue
new file mode 100644
index 0000000000000000000000000000000000000000..617f89b182a293aca78e96a270b0bbd0032530e1
--- /dev/null
+++ b/front/src/components/moderation/ReportCategoryDropdown.vue
@@ -0,0 +1,53 @@
+<template>
+  <div>
+    <label v-if="label"><translate translate-context="*/*/*">Category</translate></label>
+    <select class="ui dropdown" :value="value" @change="$emit('input', $event.target.value)" :required="required">
+      <option v-if="empty" disabled value=''></option>
+      <option :value="option.value" v-for="option in allCategories">{{ option.label }}</option>
+    </select>
+    <slot></slot>
+  </div>
+</template>
+
+<script>
+import TranslationsMixin from '@/components/mixins/Translations'
+import lodash from '@/lodash'
+export default {
+  mixins: [TranslationsMixin],
+  props: {
+    value: {},
+    all: {},
+    label: {},
+    empty: {},
+    required: {},
+    restrictTo: {default: () => { return [] }}
+  },
+  computed: {
+    allCategories () {
+      let c = []
+      if (this.all) {
+        c.push(
+          {
+            value: '',
+            label: this.$pgettext('Content/*/Dropdown', 'All')
+          },
+        )
+      }
+      let choices
+      if (this.restrictTo.length > 0)  {
+        choices = this.restrictTo
+      } else {
+        choices = lodash.keys(this.sharedLabels.fields.report_type.choices)
+      }
+      return c.concat(
+        choices.sort().map((v) => {
+          return {
+            value: v,
+            label: this.sharedLabels.fields.report_type.choices[v] || v
+          }
+        })
+      )
+    }
+  }
+}
+</script>
diff --git a/front/src/components/moderation/ReportModal.vue b/front/src/components/moderation/ReportModal.vue
new file mode 100644
index 0000000000000000000000000000000000000000..da2c1bfcb57c283272bd3726074b87dd3a91b7ca
--- /dev/null
+++ b/front/src/components/moderation/ReportModal.vue
@@ -0,0 +1,174 @@
+<template>
+  <modal @update:show="update" :show="$store.state.moderation.showReportModal">
+    <h2 class="ui header" v-if="target">
+      <translate translate-context="Popup/Moderation/Title/Verb">Do you want to report this object?</translate>
+      <div class="ui sub header">
+        {{ target.typeLabel }} - {{ target.label }}
+      </div>
+    </h2>
+    <div class="scrolling content">
+      <div class="description">
+        <div v-if="errors.length > 0" class="ui negative message">
+          <div class="header"><translate translate-context="Popup/Moderation/Error message">Error while submitting report</translate></div>
+          <ul class="list">
+            <li v-for="error in errors">{{ error }}</li>
+          </ul>
+        </div>
+      </div>
+      <p>
+        <translate translate-context="*/Moderation/Popup,Paragraph">Use this form to submit a report to our moderation team.</translate>
+      </p>
+      <form v-if="canSubmit" id="report-form" class="ui form" @submit.prevent="submit">
+        <div class="fields">
+          <report-category-dropdown
+            class="ui required eight wide field"
+            v-model="category"
+            :required="true"
+            :empty="true"
+            :restrict-to="allowedCategories"
+            :label="true"></report-category-dropdown>
+          <div v-if="!$store.state.auth.authenticated" class="ui eight wide required field">
+            <label for="report-submitter-email">
+              <translate translate-context="Content/*/*/Noun">Email</translate>
+            </label>
+            <input type="email" v-model="submitterEmail" name="report-submitter-email" id="report-submitter-email" required>
+            <p>
+              <translate translate-context="*/*/Field,Help">We'll use this email if we need to contact you regarding this report.</translate>
+            </p>
+          </div>
+        </div>
+        <div class="ui field">
+          <label for="report-summary">
+            <translate translate-context="*/*/Field.Label/Noun">Message</translate>
+          </label>
+          <p>
+            <translate translate-context="*/*/Field,Help">Use this field to provide additional context to the moderator that will handle your report.</translate>
+          </p>
+          <textarea name="report-summary" id="report-summary" rows="8" v-model="summary"></textarea>
+        </div>
+      </form>
+      <div v-else-if="isLoadingReportTypes" class="ui inline active loader">
+
+      </div>
+      <div v-else class="ui warning message">
+        <div class="header">
+          <translate translate-context="Popup/Moderation/Error message">Anonymous reports are disabled, please sign-in to submit a report.</translate>
+        </div>
+      </div>
+    </div>
+    <div class="actions">
+      <div class="ui cancel button"><translate translate-context="*/*/Button.Label/Verb">Cancel</translate></div>
+      <button
+        v-if="canSubmit"
+        :class="['ui', 'green', {loading: isLoading}, 'button']"
+        type="submit" form="report-form">
+        <translate translate-context="Popup/*/Button.Label">Submit report</translate>
+      </button>
+    </div>
+  </modal>
+</template>
+
+<script>
+import _ from '@/lodash'
+import axios from 'axios'
+import {mapState} from 'vuex'
+
+import logger from '@/logging'
+import Modal from '@/components/semantic/Modal'
+import ReportCategoryDropdown from '@/components/moderation/ReportCategoryDropdown'
+
+export default {
+  components: {
+    Modal,
+    ReportCategoryDropdown,
+  },
+  data () {
+    return {
+      formKey: String(new Date()),
+      errors: [],
+      isLoading: false,
+      isLoadingReportTypes: false,
+      summary: '',
+      submitterEmail: '',
+      category: null,
+      reportTypes: [],
+    }
+  },
+  computed: {
+    ...mapState({
+      target: state => state.moderation.reportModalTarget,
+    }),
+    allowedCategories () {
+      if (this.$store.state.auth.authenticated) {
+        return []
+      }
+      return this.reportTypes.filter((t) => {
+        return t.anonymous === true
+      }).map((c) => {
+        return c.type
+      })
+
+    },
+    canSubmit () {
+      if (this.$store.state.auth.authenticated) {
+        return true
+      }
+
+      return this.allowedCategories.length > 0
+    }
+  },
+  methods: {
+    update (v) {
+      this.$store.commit('moderation/showReportModal', v)
+      this.errors = []
+    },
+    submit () {
+      let self = this
+      self.isLoading = true
+      let payload = {
+        target: this.target,
+        summary: this.summary,
+        type: this.category,
+      }
+      if (!this.$store.state.auth.authenticated) {
+        payload.submitter_email = this.submitterEmail
+      }
+      return axios.post('moderation/reports/', payload).then(response => {
+        self.update(false)
+        self.isLoading = false
+        let msg = this.$pgettext('*/Moderation/Message', 'Report successfully submitted, thank you')
+        self.$store.commit('moderation/contentFilter', response.data)
+        self.$store.commit('ui/addMessage', {
+          content: msg,
+          date: new Date()
+        })
+        self.summary = ''
+        self.category = ''
+      }, error => {
+        self.errors = error.backendErrors
+        self.isLoading = false
+      })
+    }
+  },
+  watch: {
+    '$store.state.moderation.showReportModal': function (v) {
+      if (!v || this.$store.state.auth.authenticated) {
+        return
+      }
+
+      let self = this
+      self.isLoadingReportTypes = true
+      axios.get('instance/nodeinfo/2.0/').then(response => {
+        self.isLoadingReportTypes = false
+        self.reportTypes = response.data.metadata.reportTypes || []
+      }, error => {
+        self.isLoadingReportTypes = false
+      })
+    }
+  }
+}
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style scoped>
+</style>
diff --git a/front/src/components/notifications/NotificationRow.vue b/front/src/components/notifications/NotificationRow.vue
index b8e145647d03340fb62b8edc981f25179f341a9a..95f8e36440f486d1e7916b813a2301639e3efbd8 100644
--- a/front/src/components/notifications/NotificationRow.vue
+++ b/front/src/components/notifications/NotificationRow.vue
@@ -126,7 +126,4 @@ export default {
 .read > span {
   cursor: pointer;
 }
-.disabled-row {
-  color: rgba(40, 40, 40, 0.3);
-}
 </style>
diff --git a/front/src/components/playlists/Card.vue b/front/src/components/playlists/Card.vue
index 60a322ab4c86486842d79f176b6b536b6714041e..a8e5c149a5efb37aa8ba5c2ba76279ce444ad512 100644
--- a/front/src/components/playlists/Card.vue
+++ b/front/src/components/playlists/Card.vue
@@ -5,8 +5,18 @@
     <div class="content">
       <div class="header">
         <div class="right floated">
-          <play-button :is-playable="playlist.is_playable" :icon-only="true" class="ui inline" :button-classes="['ui', 'circular', 'large', {orange: playlist.tracks_count > 0}, 'icon', 'button', {disabled: playlist.tracks_count === 0}]" :playlist="playlist"></play-button>
-          <play-button :is-playable="playlist.is_playable" class="basic inline icon" :dropdown-only="true" :dropdown-icon-classes="['ellipsis', 'vertical', 'large', {disabled: playlist.tracks_count === 0}, 'grey']" :playlist="playlist"></play-button>
+          <play-button
+            :is-playable="playlist.is_playable"
+            :icon-only="true" class="ui inline"
+            :button-classes="['ui', 'circular', 'large', {orange: playlist.tracks_count > 0}, 'icon', 'button', {disabled: playlist.tracks_count === 0}]"
+            :playlist="playlist"></play-button>
+          <play-button
+            :is-playable="playlist.is_playable"
+            class="basic inline icon"
+            :dropdown-only="true"
+            :dropdown-icon-classes="['ellipsis', 'vertical', 'large', {disabled: playlist.tracks_count === 0}, 'grey']"
+            :account="playlist.actor"
+            :playlist="playlist"></play-button>
         </div>
         <router-link :title="playlist.name" class="discrete link" :to="{name: 'library.playlists.detail', params: {id: playlist.id }}">
           {{ playlist.name | truncate(30) }}
@@ -59,12 +69,10 @@ export default {
 
 <!-- Add "scoped" attribute to limit CSS to this component only -->
 <style>
-
 .playlist.card .header .ellipsis.vertical.large.grey {
   font-size: 1.2em;
   margin-right: 0;
 }
-
 </style>
 <style scoped>
 .card .header {
@@ -72,8 +80,7 @@ export default {
 }
 
 .attached.button {
-  background-color: rgb(243, 244, 245);
-  background-size: 25% ;
+  background-size: 25%;
   background-repeat: no-repeat;
   background-origin: border-box;
   background-position: 0 0, 33.33% 0, 66.67% 0, 100% 0;
@@ -82,5 +89,4 @@ export default {
   font-size: 4em;
   box-shadow: 0px 0px 0px 1px rgba(34, 36, 38, 0.15) inset !important;
 }
-
 </style>
diff --git a/front/src/components/playlists/Editor.vue b/front/src/components/playlists/Editor.vue
index 3ce554301901df62fb142b348edb51ea2d17e0f5..2ebd9614babde74840fc2b49e9594941de424a79 100644
--- a/front/src/components/playlists/Editor.vue
+++ b/front/src/components/playlists/Editor.vue
@@ -11,7 +11,7 @@
       </template>
       <template v-else-if="status === 'errored'">
         <i class="red close icon"></i>
-        <translate translate-context="Content/Playlist/Error message.Title">An error occured while saving your changes</translate>
+        <translate translate-context="Content/Playlist/Error message.Title">An error occurred while saving your changes</translate>
         <div v-if="errors.length > 0" class="ui negative message">
           <ul class="list">
             <li v-for="error in errors">{{ error }}</li>
@@ -60,7 +60,7 @@
         <p><translate translate-context="Content/Playlist/Paragraph/Call to action">Drag and drop rows to reorder tracks in the playlist</translate></p>
         <div class="table-wrapper">
           <table class="ui compact very basic unstackable table">
-            <draggable v-model="plts" element="tbody" @update="reorder">
+            <draggable v-model="plts" tag="tbody" @update="reorder">
               <tr v-for="(plt, index) in plts" :key="plt.id">
                 <td class="left aligned">{{ plt.index + 1}}</td>
                 <td class="center aligned">
diff --git a/front/src/components/playlists/PlaceholderWidget.vue b/front/src/components/playlists/PlaceholderWidget.vue
new file mode 100644
index 0000000000000000000000000000000000000000..d72ab95fbc5922b42790f96d0bed7f5b7a073648
--- /dev/null
+++ b/front/src/components/playlists/PlaceholderWidget.vue
@@ -0,0 +1,18 @@
+<template>
+  <div class="ui placeholder segment">
+    <div class="ui icon header">
+      <i class="pdf file outline icon"></i>
+      <translate translate-context="Content/Home/Placeholder">
+        No playlists have been created yet
+      </translate>
+    </div>
+    <button
+      @click="$store.commit('playlists/chooseTrack', null)"
+      class="ui primary button"
+      >
+      <translate translate-context="Content/Home/CreatePlaylist">
+        Create Playlist
+      </translate>
+    </button>
+  </div>
+</template>
diff --git a/front/src/components/playlists/PlaylistModal.vue b/front/src/components/playlists/PlaylistModal.vue
index 97c5f0a1eb80c7a913db32f175597549cbc7e464..9fb77d8757cadf73b011f0b7e62a8576a9ee6cef 100644
--- a/front/src/components/playlists/PlaylistModal.vue
+++ b/front/src/components/playlists/PlaylistModal.vue
@@ -45,7 +45,7 @@
               <th></th>
               <th><translate translate-context="*/*/*/Noun">Name</translate></th>
               <th class="sorted descending"><translate translate-context="Popup/Playlist/Table.Label/Short">Last modification</translate></th>
-              <th><translate translate-context="*/*/*/Noun">Tracks</translate></th>
+              <th><translate translate-context="*/*/*">Tracks</translate></th>
               <th></th>
             </tr>
           </thead>
diff --git a/front/src/components/playlists/Widget.vue b/front/src/components/playlists/Widget.vue
index b018f9731e97b307df3ded23a5d1660c6eba9ea9..9cd1c1d16ad7a859e8c8018def7e590f495499f3 100644
--- a/front/src/components/playlists/Widget.vue
+++ b/front/src/components/playlists/Widget.vue
@@ -9,7 +9,12 @@
     <div v-if="isLoading" class="ui inverted active dimmer">
       <div class="ui loader"></div>
     </div>
-    <playlist-card v-for="playlist in objects" :key="playlist.id" :playlist="playlist"></playlist-card>
+    <template v-if="playlistsExist">
+      <playlist-card v-for="playlist in objects" :key="playlist.id" :playlist="playlist"></playlist-card>
+    </template>
+    <template v-else>
+      <placeholder-widget></placeholder-widget>
+    </template>
   </div>
 </template>
 
@@ -17,6 +22,7 @@
 import _ from '@/lodash'
 import axios from 'axios'
 import PlaylistCard from '@/components/playlists/Card'
+import PlaceholderWidget from '@/components/playlists/PlaceholderWidget'
 
 export default {
   props: {
@@ -24,7 +30,8 @@ export default {
     url: {type: String, required: true}
   },
   components: {
-    PlaylistCard
+    PlaylistCard,
+    PlaceholderWidget
   },
   data () {
     return {
@@ -39,6 +46,11 @@ export default {
   created () {
     this.fetchData(this.url)
   },
+  computed: {
+    playlistsExist: function () {
+      return this.objects.length > 0
+    }
+  },
   methods: {
     fetchData (url) {
       if (!url) {
diff --git a/front/src/components/radios/Button.vue b/front/src/components/radios/Button.vue
index e66f97ad5fafe1622e6a586c8e2d88155e87a766..f335a6596273838e844f1357f7c9c5503ace7ff7 100644
--- a/front/src/components/radios/Button.vue
+++ b/front/src/components/radios/Button.vue
@@ -12,7 +12,7 @@ export default {
   props: {
     customRadioId: {required: false},
     type: {type: String, required: false},
-    objectId: {type: Number, default: null}
+    objectId: {default: null}
   },
   methods: {
     toggleRadio () {
diff --git a/front/src/components/semantic/Modal.vue b/front/src/components/semantic/Modal.vue
index 076b3e466dac8b487924d06f0ae24d4d04a0b854..c3af1524b050c06253c9c1e763a65ad4df16d9c6 100644
--- a/front/src/components/semantic/Modal.vue
+++ b/front/src/components/semantic/Modal.vue
@@ -46,9 +46,11 @@ export default {
       handler (newValue) {
         if (newValue) {
           this.initModal()
+          this.$emit('show')
           this.control.modal('show')
         } else {
           if (this.control) {
+            this.$emit('hide')
             this.control.modal('hide')
             this.control.remove()
           }
diff --git a/front/src/components/tags/List.vue b/front/src/components/tags/List.vue
new file mode 100644
index 0000000000000000000000000000000000000000..e5bba5b5816ce96e6e66cc0ae226d0fcd5450dac
--- /dev/null
+++ b/front/src/components/tags/List.vue
@@ -0,0 +1,49 @@
+<template>
+  <div class="tag-list">
+    <router-link
+      :to="{name: detailRoute, params: {id: tag}}"
+      :class="['ui', 'circular', 'hashtag', 'label', labelClasses]"
+      v-for="tag in toDisplay"
+      :title="tag"
+      :key="tag">
+      #{{ tag|truncate(truncateSize) }}
+    </router-link>
+    <div role="button" @click.prevent="honorLimit = false" class="ui circular inverted teal label" v-if="showMore && toDisplay.length < tags.length">
+      <translate translate-context="Content/*/Button/Label/Verb" :translate-params="{count: tags.length - toDisplay.length}" :translate-n="tags.length - toDisplay.length" translate-plural="Show %{ count } more tags">Show 1 more tag</translate>
+    </div>
+  </div>
+</template>
+<script>
+export default {
+  props: {
+    tags: {type: Array, required: true},
+    showMore: {type: Boolean, default: true},
+    truncateSize: {type: Number, default: 25},
+    limit: {type: Number, default: 5},
+    labelClasses: {type: String, default: ''},
+    detailRoute: {type: String, default: 'library.tags.detail'},
+  },
+  data () {
+    return {
+      honorLimit: true,
+    }
+  },
+  computed: {
+    toDisplay () {
+      if (!this.honorLimit) {
+        return this.tags
+      }
+      return (this.tags || []).slice(0, this.limit)
+    }
+  }
+}
+</script>
+<style lang="scss" scoped>
+.ui.circular.label {
+  padding-left: 1em !important;
+  padding-right: 1em !important;
+}
+.hashtag {
+  margin: 0.25em;
+}
+</style>
diff --git a/front/src/edits.js b/front/src/edits.js
index a53ab2fcc286d31815b81b99cb4a161a53416c4a..5c9e9be880e90cdae1041e7ef96f1c1d3bca5324 100644
--- a/front/src/edits.js
+++ b/front/src/edits.js
@@ -1,3 +1,10 @@
+function getTagsValueRepr (val) {
+  if (!val) {
+    return ''
+  }
+  return val.slice().sort().join('\n')
+}
+
 export default {
   getConfigs () {
     return {
@@ -10,6 +17,14 @@ export default {
             label: this.$pgettext('*/*/*/Noun', 'Name'),
             getValue: (obj) => { return obj.name }
           },
+          {
+            id: 'tags',
+            type: 'tags',
+            required: true,
+            label: this.$pgettext('*/*/*/Noun', 'Tags'),
+            getValue: (obj) => { return obj.tags },
+            getValueRepr: getTagsValueRepr
+          }
         ]
       },
       album: {
@@ -28,6 +43,14 @@ export default {
             label: this.$pgettext('Content/*/*/Noun', 'Release date'),
             getValue: (obj) => { return obj.release_date }
           },
+          {
+            id: 'tags',
+            type: 'tags',
+            required: true,
+            label: this.$pgettext('*/*/*/Noun', 'Tags'),
+            getValue: (obj) => { return obj.tags },
+            getValueRepr: getTagsValueRepr
+          }
         ]
       },
       track: {
@@ -61,6 +84,14 @@ export default {
             label: this.$pgettext('Content/*/*/Noun', 'License'),
             getValue: (obj) => { return obj.license },
           },
+          {
+            id: 'tags',
+            type: 'tags',
+            required: true,
+            label: this.$pgettext('*/*/*/Noun', 'Tags'),
+            getValue: (obj) => { return obj.tags },
+            getValueRepr: getTagsValueRepr
+          }
         ]
       }
     }
@@ -69,7 +100,12 @@ export default {
   getConfig () {
     return this.configs[this.objectType]
   },
-
+  getFieldConfig (configs, type, fieldId) {
+    let c = configs[type]
+    return c.fields.filter((f) => {
+      return f.id == fieldId
+    })[0]
+  },
   getCurrentState () {
     let self = this
     let s = {}
@@ -111,7 +147,14 @@ export default {
     if (!this.$store.state.auth.authenticated) {
       return false
     }
-    return this.$store.state.auth.availablePermissions['library']
+
+    let libraryPermission = this.$store.state.auth.availablePermissions['library']
+    let objData = this.object || {}
+    let isOwner = false
+    if (objData.attributed_to) {
+      isOwner = this.$store.state.auth.fullUsername === objData.attributed_to.full_username
+    }
+    return libraryPermission || isOwner
   },
 
 }
diff --git a/front/src/embed.js b/front/src/embed.js
index 5a924a9b11322fbca820d97a8288ceb5710c9594..a079ee08507fd0db148a2221b704000a6f08abb6 100644
--- a/front/src/embed.js
+++ b/front/src/embed.js
@@ -10,6 +10,8 @@ Vue.config.productionTip = false
 /* eslint-disable no-new */
 new Vue({
   el: '#app',
-  template: '<EmbedFrame/>',
+  render (h) {
+    return h('EmbedFrame')
+  },
   components: { EmbedFrame }
 })
diff --git a/front/src/entities.js b/front/src/entities.js
new file mode 100644
index 0000000000000000000000000000000000000000..83ed3dba2082e3aed998f20008323c55897a4512
--- /dev/null
+++ b/front/src/entities.js
@@ -0,0 +1,217 @@
+function getTagsValueRepr (val) {
+  if (!val) {
+    return ''
+  }
+  return val.slice().sort().join('\n')
+}
+
+export default {
+  getConfigs () {
+    return {
+      artist: {
+        label: this.$pgettext('*/*/*/Noun', 'Artist'),
+        icon: 'users',
+        getDeleteUrl: (obj) => {
+          return `manage/library/artists/${obj.id}/`
+        },
+        urls: {
+          getDetail: (obj) => { return {name: 'library.artists.detail', params: {id: obj.id}}},
+          getAdminDetail: (obj) => { return {name: 'manage.library.artists.detail', params: {id: obj.id}}},
+        },
+        moderatedFields: [
+          {
+            id: 'name',
+            label: this.$pgettext('*/*/*/Noun', 'Name'),
+            getValue: (obj) => { return obj.name }
+          },
+          {
+            id: 'creation_date',
+            label: this.$pgettext('Content/*/*/Noun', 'Creation date'),
+            getValue: (obj) => { return obj.creation_date }
+          },
+          {
+            id: 'tags',
+            type: 'tags',
+            label: this.$pgettext('*/*/*/Noun', 'Tags'),
+            getValue: (obj) => { return obj.tags },
+            getValueRepr: getTagsValueRepr
+          },
+          {
+            id: 'mbid',
+            label: this.$pgettext('*/*/*/Noun', 'MusicBrainz ID'),
+            getValue: (obj) => { return obj.mbid }
+          },
+        ]
+      },
+      album: {
+        label: this.$pgettext('*/*/*', 'Album'),
+        icon: 'play',
+        getDeleteUrl: (obj) => {
+          return `manage/library/albums/${obj.id}/`
+        },
+        urls: {
+          getDetail: (obj) => { return {name: 'library.albums.detail', params: {id: obj.id}}},
+          getAdminDetail: (obj) => { return {name: 'manage.library.albums.detail', params: {id: obj.id}}}
+        },
+        moderatedFields: [
+          {
+            id: 'title',
+            label: this.$pgettext('*/*/*/Noun', 'Title'),
+            getValue: (obj) => { return obj.title }
+          },
+          {
+            id: 'creation_date',
+            label: this.$pgettext('Content/*/*/Noun', 'Creation date'),
+            getValue: (obj) => { return obj.creation_date }
+          },
+          {
+            id: 'release_date',
+            label: this.$pgettext('Content/*/*/Noun', 'Release date'),
+            getValue: (obj) => { return obj.release_date }
+          },
+          {
+            id: 'tags',
+            type: 'tags',
+            required: true,
+            label: this.$pgettext('*/*/*/Noun', 'Tags'),
+            getValue: (obj) => { return obj.tags },
+            getValueRepr: getTagsValueRepr
+          },
+          {
+            id: 'mbid',
+            label: this.$pgettext('*/*/*/Noun', 'MusicBrainz ID'),
+            getValue: (obj) => { return obj.mbid }
+          },
+        ]
+      },
+      track: {
+        label: this.$pgettext('*/*/*/Noun', 'Track'),
+        icon: 'music',
+        getDeleteUrl: (obj) => {
+          return `manage/library/tracks/${obj.id}/`
+        },
+        urls: {
+          getDetail: (obj) => { return {name: 'library.tracks.detail', params: {id: obj.id}}},
+          getAdminDetail: (obj) => { return {name: 'manage.library.tracks.detail', params: {id: obj.id}}}
+        },
+        moderatedFields: [
+          {
+            id: 'title',
+            label: this.$pgettext('*/*/*/Noun', 'Title'),
+            getValue: (obj) => { return obj.title }
+          },
+          {
+            id: 'position',
+            label: this.$pgettext('*/*/*/Short, Noun', 'Position'),
+            getValue: (obj) => { return obj.position }
+          },
+          {
+            id: 'copyright',
+            label: this.$pgettext('Content/Track/*/Noun', 'Copyright'),
+            getValue: (obj) => { return obj.copyright }
+          },
+          {
+            id: 'license',
+            label: this.$pgettext('Content/*/*/Noun', 'License'),
+            getValue: (obj) => { return obj.license },
+          },
+          {
+            id: 'tags',
+            label: this.$pgettext('*/*/*/Noun', 'Tags'),
+            getValue: (obj) => { return obj.tags },
+            getValueRepr: getTagsValueRepr
+          },
+          {
+            id: 'mbid',
+            label: this.$pgettext('*/*/*/Noun', 'MusicBrainz ID'),
+            getValue: (obj) => { return obj.mbid }
+          },
+        ]
+      },
+      library: {
+        label: this.$pgettext('*/*/*/Noun', 'Library'),
+        icon: 'book',
+        getDeleteUrl: (obj) => {
+          return `manage/library/libraries/${obj.uuid}/`
+        },
+        urls: {
+          getAdminDetail: (obj) => { return {name: 'manage.library.libraries.detail', params: {id: obj.uuid}}}
+        },
+        moderatedFields: [
+          {
+            id: 'name',
+            label: this.$pgettext('*/*/*/Noun', 'Name'),
+            getValue: (obj) => { return obj.name }
+          },
+          {
+            id: 'description',
+            label: this.$pgettext('*/*/*/Noun', 'Description'),
+            getValue: (obj) => { return obj.position }
+          },
+          {
+            id: 'privacy_level',
+            label: this.$pgettext('*/*/*', 'Visibility'),
+            getValue: (obj) => { return obj.privacy_level }
+          },
+        ]
+      },
+      playlist: {
+        label: this.$pgettext('*/*/*', 'Playlist'),
+        icon: 'list',
+        urls: {
+          getDetail: (obj) => { return {name: 'library.playlists.detail', params: {id: obj.id}}},
+          // getAdminDetail: (obj) => { return {name: 'manage.playlists.detail', params: {id: obj.id}}}
+        },
+        moderatedFields: [
+          {
+            id: 'name',
+            label: this.$pgettext('*/*/*/Noun', 'Name'),
+            getValue: (obj) => { return obj.name }
+          },
+          {
+            id: 'privacy_level',
+            label: this.$pgettext('*/*/*', 'Visibility'),
+            getValue: (obj) => { return obj.privacy_level }
+          },
+        ]
+      },
+      account: {
+        label: this.$pgettext('*/*/*/Noun', 'Account'),
+        icon: 'user',
+        urls: {
+          getAdminDetail: (obj) => { return {name: 'manage.moderation.accounts.detail', params: {id: `${obj.preferred_username}@${obj.domain}`}}}
+        },
+        moderatedFields: [
+          {
+            id: 'name',
+            label: this.$pgettext('*/*/*/Noun', 'Name'),
+            getValue: (obj) => { return obj.name }
+          },
+          {
+            id: 'summary',
+            label: this.$pgettext('*/*/*/Noun', 'Bio'),
+            getValue: (obj) => { return obj.summary }
+          },
+        ]
+      },
+    }
+  },
+
+  getConfig () {
+    return this.configs[this.objectType]
+  },
+  getFieldConfig (configs, type, fieldId) {
+    let c = configs[type]
+    return c.fields.filter((f) => {
+      return f.id == fieldId
+    })[0]
+  },
+  getCurrentStateForObj (obj, config) {
+    let s = {}
+    config.fields.forEach(f => {
+      s[f.id] = {value: f.getValue(obj)}
+    })
+    return s
+  },
+
+}
diff --git a/front/src/locales.js b/front/src/locales.js
index 287581217a9614883cc26c1f17710f62538b04e8..f0bcd704be2c2a89b28c3c095d3bf0483e621a2f 100644
--- a/front/src/locales.js
+++ b/front/src/locales.js
@@ -5,12 +5,25 @@ export default {
       "code": "ar",
       "label": "العربية"
     },
+    {
+      "code": "zh_Hant",
+      "label": "漢語"
+    },
     {
       "code": "en_US",
       "label": "English (United-States)"
-    },{
-      "code": "eo",
-      "label": "Esperanto"
+    },
+    {
+      "code": "en_GB",
+      "label": "English (UK)"
+    },
+    {
+      "code": "ca",
+      "label": "Català"
+    },
+    {
+      "code": "cs",
+      "label": "Čeština"
     },
     {
       "code": "de",
diff --git a/front/src/lodash.js b/front/src/lodash.js
index 8cd3ed92f41e86b0eff9b88bd5af923742b1864e..213711bd345db246051081b57bb9125ba2269ed7 100644
--- a/front/src/lodash.js
+++ b/front/src/lodash.js
@@ -2,6 +2,7 @@
 
 export default {
   clone: require('lodash/clone'),
+  keys: require('lodash/keys'),
   debounce: require('lodash/debounce'),
   get: require('lodash/get'),
   merge: require('lodash/merge'),
@@ -12,4 +13,5 @@ export default {
   uniq: require('lodash/uniq'),
   remove: require('lodash/remove'),
   reverse: require('lodash/reverse'),
+  isEqual: require('lodash/isEqual'),
 }
diff --git a/front/src/main.js b/front/src/main.js
index dd755dee356f427a58d3ceb89b6e0c5e5419d35f..f58cdbdbc14c1553e45c59a9342bbec9623ac426 100644
--- a/front/src/main.js
+++ b/front/src/main.js
@@ -7,6 +7,7 @@ logger.default.debug('Environment variables:', process.env)
 import jQuery from "jquery"
 
 import Vue from 'vue'
+import moment from 'moment'
 import App from './App'
 import router from './router'
 import axios from 'axios'
@@ -25,6 +26,7 @@ sync(store, router)
 window.$ = window.jQuery = require('jquery')
 require('./semantic.js')
 require('masonry-layout')
+let APP = null
 
 let availableLanguages = (function () {
   let l = {}
@@ -91,6 +93,32 @@ axios.interceptors.response.use(function (response) {
     error.backendErrors.push('Resource not found')
   } else if (error.response.status === 403) {
     error.backendErrors.push('Permission denied')
+  } else if (error.response.status === 429) {
+    let message
+    let rateLimitStatus = {
+      limit: error.response.headers['x-ratelimit-limit'],
+      scope: error.response.headers['x-ratelimit-scope'],
+      remaining: error.response.headers['x-ratelimit-remaining'],
+      duration: error.response.headers['x-ratelimit-duration'],
+      availableSeconds: error.response.headers['retry-after'],
+      reset: error.response.headers['x-ratelimit-reset'],
+      resetSeconds: error.response.headers['x-ratelimit-resetseconds'],
+    }
+    if (rateLimitStatus.availableSeconds) {
+      rateLimitStatus.availableSeconds = parseInt(rateLimitStatus.availableSeconds)
+      let tryAgain = moment().add(rateLimitStatus.availableSeconds, 's').toNow(true)
+      message = APP.$pgettext('*/Error/Paragraph', 'You sent too many requests and have been rate limited, please try again in %{ delay }')
+      message = APP.$gettextInterpolate(message, {delay: tryAgain})
+    } else {
+      message =  APP.$pgettext('*/Error/Paragraph', 'You sent too many requests and have been rate limited, please try again later')
+    }
+    error.backendErrors.push(message)
+    store.commit("ui/addMessage", {
+      content: message,
+      date: new Date(),
+      level: 'error',
+    })
+    logger.default.error('This client is rate-limited!', rateLimitStatus)
   } else if (error.response.status === 500) {
     error.backendErrors.push('A server error occured')
   } else if (error.response.data) {
@@ -122,8 +150,13 @@ store.dispatch('instance/fetchFrontSettings').finally(() => {
     el: '#app',
     router,
     store,
-    template: '<App/>',
-    components: { App }
+    render (h) {
+      return h('App')
+    },
+    components: { App },
+    created () {
+      APP = this
+    },
   })
 
   logger.default.info('Everything loaded!')
diff --git a/front/src/router/index.js b/front/src/router/index.js
index 6a9ba6112f7680766b22945bfd41097db3f143aa..1a99b6072019383ef2107fd096213b12e95d5826 100644
--- a/front/src/router/index.js
+++ b/front/src/router/index.js
@@ -1,428 +1,545 @@
-import Vue from 'vue'
-import Router from 'vue-router'
+import Vue from "vue"
+import Router from "vue-router"
 
 Vue.use(Router)
 
 console.log('PROCESS', process.env)
 export default new Router({
-  mode: 'history',
-  linkActiveClass: 'active',
-  base: process.env.VUE_APP_ROUTER_BASE_URL || '/',
+  mode: "history",
+  linkActiveClass: "active",
+  base: process.env.VUE_APP_ROUTER_BASE_URL || "/",
+  scrollBehavior(to, from, savedPosition) {
+    return new Promise(resolve => {
+      setTimeout(() => {
+        if (to.hash) {
+          resolve({ selector: to.hash });
+        }
+        let pos = savedPosition || { x: 0, y: 0 };
+        resolve(pos);
+      }, 100);
+    });
+  },
   routes: [
     {
-      path: '/',
-      name: 'index',
+      path: "/",
+      name: "index",
       component: () =>
-        import(/* webpackChunkName: "core" */ "@/components/Home"),
+        import(/* webpackChunkName: "core" */ "@/components/Home")
     },
     {
-      path: '/front',
-      name: 'front',
-      redirect: '/'
+      path: "/front",
+      name: "front",
+      redirect: to => {
+        const { hash, params, query } = to
+        return { name: 'index', hash, query }
+      }
     },
     {
-      path: '/about',
-      name: 'about',
+      path: "/about",
+      name: "about",
       component: () =>
-        import(/* webpackChunkName: "core" */ "@/components/About"),
+        import(/* webpackChunkName: "core" */ "@/components/About")
     },
     {
-      path: '/login',
-      name: 'login',
+      path: "/login",
+      name: "login",
       component: () =>
-        import(/* webpackChunkName: "core" */ "@/components/auth/Login"),
-      props: (route) => ({ next: route.query.next || '/library' })
+        import(/* webpackChunkName: "core" */ "@/views/auth/Login"),
+      props: route => ({ next: route.query.next || "/library" })
     },
     {
-      path: '/notifications',
-      name: 'notifications',
+      path: "/notifications",
+      name: "notifications",
       component: () =>
-        import(/* webpackChunkName: "core" */ "@/views/Notifications"),
+        import(/* webpackChunkName: "core" */ "@/views/Notifications")
     },
     {
-      path: '/auth/password/reset',
-      name: 'auth.password-reset',
+      path: "/auth/password/reset",
+      name: "auth.password-reset",
       component: () =>
         import(/* webpackChunkName: "core" */ "@/views/auth/PasswordReset"),
-      props: (route) => ({
+      props: route => ({
         defaultEmail: route.query.email
       })
     },
     {
-      path: '/auth/email/confirm',
-      name: 'auth.email-confirm',
+      path: "/auth/email/confirm",
+      name: "auth.email-confirm",
       component: () =>
         import(/* webpackChunkName: "core" */ "@/views/auth/EmailConfirm"),
-      props: (route) => ({
+      props: route => ({
         defaultKey: route.query.key
       })
     },
     {
-      path: '/auth/password/reset/confirm',
-      name: 'auth.password-reset-confirm',
+      path: "/auth/password/reset/confirm",
+      name: "auth.password-reset-confirm",
       component: () =>
-        import(/* webpackChunkName: "core" */ "@/views/auth/PasswordResetConfirm"),
-      props: (route) => ({
+        import(
+          /* webpackChunkName: "core" */ "@/views/auth/PasswordResetConfirm"
+        ),
+      props: route => ({
         defaultUid: route.query.uid,
         defaultToken: route.query.token
       })
     },
     {
-      path: '/authorize',
-      name: 'authorize',
+      path: "/authorize",
+      name: "authorize",
       component: () =>
         import(/* webpackChunkName: "core" */ "@/components/auth/Authorize"),
-      props: (route) => ({
+      props: route => ({
         clientId: route.query.client_id,
         redirectUri: route.query.redirect_uri,
         scope: route.query.scope,
         responseType: route.query.response_type,
         nonce: route.query.nonce,
-        state: route.query.state,
+        state: route.query.state
       })
     },
     {
-      path: '/signup',
-      name: 'signup',
+      path: "/signup",
+      name: "signup",
       component: () =>
-        import(/* webpackChunkName: "core" */ "@/components/auth/Signup"),
-      props: (route) => ({
+        import(/* webpackChunkName: "core" */ "@/views/auth/Signup"),
+      props: route => ({
         defaultInvitation: route.query.invitation
       })
     },
     {
-      path: '/logout',
-      name: 'logout',
+      path: "/logout",
+      name: "logout",
       component: () =>
-        import(/* webpackChunkName: "core" */ "@/components/auth/Logout"),
-
+        import(/* webpackChunkName: "core" */ "@/components/auth/Logout")
     },
     {
-      path: '/settings',
-      name: 'settings',
+      path: "/settings",
+      name: "settings",
       component: () =>
-        import(/* webpackChunkName: "core" */ "@/components/auth/Settings"),
+        import(/* webpackChunkName: "core" */ "@/components/auth/Settings")
     },
     {
-      path: '/settings/applications/new',
-      name: 'settings.applications.new',
-      props: (route) => ({
+      path: "/settings/applications/new",
+      name: "settings.applications.new",
+      props: route => ({
         scopes: route.query.scopes,
         name: route.query.name,
-        redirect_uris: route.query.redirect_uris,
+        redirect_uris: route.query.redirect_uris
       }),
       component: () =>
-        import(/* webpackChunkName: "core" */ "@/components/auth/ApplicationNew"),
+        import(
+          /* webpackChunkName: "core" */ "@/components/auth/ApplicationNew"
+        )
     },
     {
-      path: '/settings/applications/:id/edit',
-      name: 'settings.applications.edit',
+      path: "/settings/applications/:id/edit",
+      name: "settings.applications.edit",
       component: () =>
-        import(/* webpackChunkName: "core" */ "@/components/auth/ApplicationEdit"),
+        import(
+          /* webpackChunkName: "core" */ "@/components/auth/ApplicationEdit"
+        ),
       props: true
     },
     {
-      path: '/@:username',
-      name: 'profile',
+      path: "/@:username",
+      name: "profile",
       component: () =>
         import(/* webpackChunkName: "core" */ "@/components/auth/Profile"),
       props: true
     },
     {
-      path: '/favorites',
+      path: "/favorites",
       component: () =>
         import(/* webpackChunkName: "core" */ "@/components/favorites/List"),
-      props: (route) => ({
+      props: route => ({
         defaultOrdering: route.query.ordering,
         defaultPage: route.query.page,
         defaultPaginateBy: route.query.paginateBy
       })
     },
     {
-      path: '/content',
+      path: "/content",
       component: () =>
         import(/* webpackChunkName: "core" */ "@/views/content/Base"),
       children: [
         {
-          path: '',
-          name: 'content.index',
+          path: "",
+          name: "content.index",
           component: () =>
-            import(/* webpackChunkName: "core" */ "@/views/content/Home"),
+            import(/* webpackChunkName: "core" */ "@/views/content/Home")
         }
       ]
     },
     {
-      path: '/content/libraries/tracks',
+      path: "/content/libraries/tracks",
       component: () =>
         import(/* webpackChunkName: "core" */ "@/views/content/Base"),
       children: [
         {
-          path: '',
-          name: 'content.libraries.files',
+          path: "",
+          name: "content.libraries.files",
           component: () =>
-            import(/* webpackChunkName: "core" */ "@/views/content/libraries/Files"),
-          props: (route) => ({
+            import(
+              /* webpackChunkName: "core" */ "@/views/content/libraries/Files"
+            ),
+          props: route => ({
             query: route.query.q
           })
         }
       ]
     },
     {
-      path: '/content/libraries',
+      path: "/content/libraries",
       component: () =>
         import(/* webpackChunkName: "core" */ "@/views/content/Base"),
       children: [
         {
-          path: '',
-          name: 'content.libraries.index',
+          path: "",
+          name: "content.libraries.index",
           component: () =>
-            import(/* webpackChunkName: "core" */ "@/views/content/libraries/Home"),
+            import(
+              /* webpackChunkName: "core" */ "@/views/content/libraries/Home"
+            )
         },
         {
-          path: ':id/upload',
-          name: 'content.libraries.detail.upload',
+          path: ":id/upload",
+          name: "content.libraries.detail.upload",
           component: () =>
-            import(/* webpackChunkName: "core" */ "@/views/content/libraries/Upload"),
-          props: (route) => ({
+            import(
+              /* webpackChunkName: "core" */ "@/views/content/libraries/Upload"
+            ),
+          props: route => ({
             id: route.params.id,
             defaultImportReference: route.query.import
           })
         },
         {
-          path: ':id',
-          name: 'content.libraries.detail',
+          path: ":id",
+          name: "content.libraries.detail",
           component: () =>
-            import(/* webpackChunkName: "core" */ "@/views/content/libraries/Detail"),
+            import(
+              /* webpackChunkName: "core" */ "@/views/content/libraries/Detail"
+            ),
           props: true
         }
       ]
     },
     {
-      path: '/content/remote',
+      path: "/content/remote",
       component: () =>
         import(/* webpackChunkName: "core" */ "@/views/content/Base"),
       children: [
         {
-          path: '',
-          name: 'content.remote.index',
+          path: "",
+          name: "content.remote.index",
           component: () =>
-            import(/* webpackChunkName: "core" */ "@/views/content/remote/Home"),
+            import(/* webpackChunkName: "core" */ "@/views/content/remote/Home")
         }
       ]
     },
     {
-      path: '/manage/settings',
-      name: 'manage.settings',
+      path: "/manage/settings",
+      name: "manage.settings",
       component: () =>
-        import(/* webpackChunkName: "admin" */ "@/views/admin/Settings"),
+        import(/* webpackChunkName: "admin" */ "@/views/admin/Settings")
     },
     {
-      path: '/manage/library',
+      path: "/manage/library",
       component: () =>
         import(/* webpackChunkName: "admin" */ "@/views/admin/library/Base"),
       children: [
         {
-          path: 'edits',
-          name: 'manage.library.edits',
+          path: "edits",
+          name: "manage.library.edits",
           component: () =>
-            import(/* webpackChunkName: "admin" */ "@/views/admin/library/EditsList"),
-          props: (route) => {
+            import(
+              /* webpackChunkName: "admin" */ "@/views/admin/library/EditsList"
+            ),
+          props: route => {
             return {
-              defaultQuery: route.query.q,
+              defaultQuery: route.query.q
             }
           }
         },
         {
-          path: 'artists',
-          name: 'manage.library.artists',
+          path: "artists",
+          name: "manage.library.artists",
           component: () =>
-            import(/* webpackChunkName: "admin" */ "@/views/admin/library/ArtistsList"),
-          props: (route) => {
+            import(
+              /* webpackChunkName: "admin" */ "@/views/admin/library/ArtistsList"
+            ),
+          props: route => {
             return {
-              defaultQuery: route.query.q,
+              defaultQuery: route.query.q
             }
           }
         },
         {
-          path: 'artists/:id',
-          name: 'manage.library.artists.detail',
+          path: "artists/:id",
+          name: "manage.library.artists.detail",
           component: () =>
-            import(/* webpackChunkName: "admin" */ "@/views/admin/library/ArtistDetail"),
+            import(
+              /* webpackChunkName: "admin" */ "@/views/admin/library/ArtistDetail"
+            ),
           props: true
         },
         {
-          path: 'albums',
-          name: 'manage.library.albums',
+          path: "albums",
+          name: "manage.library.albums",
           component: () =>
-            import(/* webpackChunkName: "admin" */ "@/views/admin/library/AlbumsList"),
-          props: (route) => {
+            import(
+              /* webpackChunkName: "admin" */ "@/views/admin/library/AlbumsList"
+            ),
+          props: route => {
             return {
-              defaultQuery: route.query.q,
+              defaultQuery: route.query.q
             }
           }
         },
         {
-          path: 'albums/:id',
-          name: 'manage.library.albums.detail',
+          path: "albums/:id",
+          name: "manage.library.albums.detail",
           component: () =>
-            import(/* webpackChunkName: "admin" */ "@/views/admin/library/AlbumDetail"),
+            import(
+              /* webpackChunkName: "admin" */ "@/views/admin/library/AlbumDetail"
+            ),
           props: true
         },
         {
-          path: 'tracks',
-          name: 'manage.library.tracks',
+          path: "tracks",
+          name: "manage.library.tracks",
           component: () =>
-            import(/* webpackChunkName: "admin" */ "@/views/admin/library/TracksList"),
-          props: (route) => {
+            import(
+              /* webpackChunkName: "admin" */ "@/views/admin/library/TracksList"
+            ),
+          props: route => {
             return {
-              defaultQuery: route.query.q,
+              defaultQuery: route.query.q
             }
           }
         },
         {
-          path: 'tracks/:id',
-          name: 'manage.library.tracks.detail',
+          path: "tracks/:id",
+          name: "manage.library.tracks.detail",
           component: () =>
-            import(/* webpackChunkName: "admin" */ "@/views/admin/library/TrackDetail"),
+            import(
+              /* webpackChunkName: "admin" */ "@/views/admin/library/TrackDetail"
+            ),
           props: true
         },
         {
-          path: 'libraries',
-          name: 'manage.library.libraries',
+          path: "libraries",
+          name: "manage.library.libraries",
           component: () =>
-            import(/* webpackChunkName: "admin" */ "@/views/admin/library/LibrariesList"),
-          props: (route) => {
+            import(
+              /* webpackChunkName: "admin" */ "@/views/admin/library/LibrariesList"
+            ),
+          props: route => {
             return {
-              defaultQuery: route.query.q,
+              defaultQuery: route.query.q
             }
           }
         },
         {
-          path: 'libraries/:id',
-          name: 'manage.library.libraries.detail',
+          path: "libraries/:id",
+          name: "manage.library.libraries.detail",
           component: () =>
-            import(/* webpackChunkName: "admin" */ "@/views/admin/library/LibraryDetail"),
+            import(
+              /* webpackChunkName: "admin" */ "@/views/admin/library/LibraryDetail"
+            ),
           props: true
         },
         {
-          path: 'uploads',
-          name: 'manage.library.uploads',
+          path: "uploads",
+          name: "manage.library.uploads",
           component: () =>
-            import(/* webpackChunkName: "admin" */ "@/views/admin/library/UploadsList"),
-          props: (route) => {
+            import(
+              /* webpackChunkName: "admin" */ "@/views/admin/library/UploadsList"
+            ),
+          props: route => {
             return {
-              defaultQuery: route.query.q,
+              defaultQuery: route.query.q
             }
           }
         },
         {
-          path: 'uploads/:id',
-          name: 'manage.library.uploads.detail',
+          path: "uploads/:id",
+          name: "manage.library.uploads.detail",
           component: () =>
-            import(/* webpackChunkName: "admin" */ "@/views/admin/library/UploadDetail"),
+            import(
+              /* webpackChunkName: "admin" */ "@/views/admin/library/UploadDetail"
+            ),
           props: true
         },
+        {
+          path: "tags",
+          name: "manage.library.tags",
+          component: () =>
+            import(
+              /* webpackChunkName: "admin" */ "@/views/admin/library/TagsList"
+            ),
+          props: route => {
+            return {
+              defaultQuery: route.query.q
+            }
+          }
+        },
+        {
+          path: "tags/:id",
+          name: "manage.library.tags.detail",
+          component: () =>
+            import(
+              /* webpackChunkName: "admin" */ "@/views/admin/library/TagDetail"
+            ),
+          props: true
+        }
       ]
     },
     {
-      path: '/manage/users',
+      path: "/manage/users",
       component: () =>
         import(/* webpackChunkName: "admin" */ "@/views/admin/users/Base"),
       children: [
         {
-          path: 'users',
-          name: 'manage.users.users.list',
+          path: "users",
+          name: "manage.users.users.list",
           component: () =>
-            import(/* webpackChunkName: "admin" */ "@/views/admin/users/UsersList"),
+            import(
+              /* webpackChunkName: "admin" */ "@/views/admin/users/UsersList"
+            )
         },
         {
-          path: 'invitations',
-          name: 'manage.users.invitations.list',
+          path: "invitations",
+          name: "manage.users.invitations.list",
           component: () =>
-            import(/* webpackChunkName: "admin" */ "@/views/admin/users/InvitationsList"),
+            import(
+              /* webpackChunkName: "admin" */ "@/views/admin/users/InvitationsList"
+            )
         }
       ]
     },
     {
-      path: '/manage/moderation',
+      path: "/manage/moderation",
       component: () =>
         import(/* webpackChunkName: "admin" */ "@/views/admin/moderation/Base"),
       children: [
         {
-          path: 'domains',
-          name: 'manage.moderation.domains.list',
+          path: "domains",
+          name: "manage.moderation.domains.list",
+          component: () =>
+            import(
+              /* webpackChunkName: "admin" */ "@/views/admin/moderation/DomainsList"
+            )
+        },
+        {
+          path: "domains/:id",
+          name: "manage.moderation.domains.detail",
+          component: () =>
+            import(
+              /* webpackChunkName: "admin" */ "@/views/admin/moderation/DomainsDetail"
+            ),
+          props: true
+        },
+        {
+          path: "accounts",
+          name: "manage.moderation.accounts.list",
           component: () =>
-            import(/* webpackChunkName: "admin" */ "@/views/admin/moderation/DomainsList"),
+            import(
+              /* webpackChunkName: "admin" */ "@/views/admin/moderation/AccountsList"
+            ),
+          props: route => {
+            return {
+              defaultQuery: route.query.q
+            }
+          }
         },
         {
-          path: 'domains/:id',
-          name: 'manage.moderation.domains.detail',
+          path: "accounts/:id",
+          name: "manage.moderation.accounts.detail",
           component: () =>
-            import(/* webpackChunkName: "admin" */ "@/views/admin/moderation/DomainsDetail"),
+            import(
+              /* webpackChunkName: "admin" */ "@/views/admin/moderation/AccountsDetail"
+            ),
           props: true
         },
         {
-          path: 'accounts',
-          name: 'manage.moderation.accounts.list',
+          path: "reports",
+          name: "manage.moderation.reports.list",
           component: () =>
-            import(/* webpackChunkName: "admin" */ "@/views/admin/moderation/AccountsList"),
-          props: (route) => {
+            import(
+              /* webpackChunkName: "admin" */ "@/views/admin/moderation/ReportsList"
+            ),
+          props: route => {
             return {
               defaultQuery: route.query.q,
-
+              updateUrl: true
             }
           }
         },
         {
-          path: 'accounts/:id',
-          name: 'manage.moderation.accounts.detail',
+          path: "reports/:id",
+          name: "manage.moderation.reports.detail",
           component: () =>
-            import(/* webpackChunkName: "admin" */ "@/views/admin/moderation/AccountsDetail"),
+            import(
+              /* webpackChunkName: "admin" */ "@/views/admin/moderation/ReportDetail"
+            ),
           props: true
-        }
+        },
       ]
     },
     {
-      path: '/library',
+      path: "/library",
       component: () =>
         import(/* webpackChunkName: "core" */ "@/components/library/Library"),
       children: [
         {
-          path: '',
+          path: "",
           component: () =>
             import(/* webpackChunkName: "core" */ "@/components/library/Home"),
-          name: 'library.index'
+          name: "library.index"
         },
         {
-          path: 'artists/',
-          name: 'library.artists.browse',
+          path: "artists/",
+          name: "library.artists.browse",
           component: () =>
-            import(/* webpackChunkName: "core" */ "@/components/library/Artists"),
-          props: (route) => ({
+            import(
+              /* webpackChunkName: "core" */ "@/components/library/Artists"
+            ),
+          props: route => ({
             defaultOrdering: route.query.ordering,
             defaultQuery: route.query.query,
+            defaultTags: Array.isArray(route.query.tag || [])
+              ? route.query.tag
+              : [route.query.tag],
             defaultPaginateBy: route.query.paginateBy,
             defaultPage: route.query.page
           })
         },
         {
-          path: 'albums/',
-          name: 'library.albums.browse',
+          path: "albums/",
+          name: "library.albums.browse",
           component: () =>
-            import(/* webpackChunkName: "core" */ "@/components/library/Albums"),
-          props: (route) => ({
+            import(
+              /* webpackChunkName: "core" */ "@/components/library/Albums"
+            ),
+          props: route => ({
             defaultOrdering: route.query.ordering,
             defaultQuery: route.query.query,
+            defaultTags: Array.isArray(route.query.tag || [])
+              ? route.query.tag
+              : [route.query.tag],
             defaultPaginateBy: route.query.paginateBy,
             defaultPage: route.query.page
           })
         },
         {
-          path: 'radios/',
-          name: 'library.radios.browse',
+          path: "radios/",
+          name: "library.radios.browse",
           component: () =>
-            import(/* webpackChunkName: "core" */ "@/components/library/Radios"),
-          props: (route) => ({
+            import(
+              /* webpackChunkName: "core" */ "@/components/library/Radios"
+            ),
+          props: route => ({
             defaultOrdering: route.query.ordering,
             defaultQuery: route.query.query,
             defaultPaginateBy: route.query.paginateBy,
@@ -430,32 +547,36 @@ export default new Router({
           })
         },
         {
-          path: 'radios/build',
-          name: 'library.radios.build',
+          path: "radios/build",
+          name: "library.radios.build",
           component: () =>
-            import(/* webpackChunkName: "core" */ "@/components/library/radios/Builder"),
+            import(
+              /* webpackChunkName: "core" */ "@/components/library/radios/Builder"
+            ),
           props: true
         },
         {
-          path: 'radios/build/:id',
-          name: 'library.radios.edit',
+          path: "radios/build/:id",
+          name: "library.radios.edit",
           component: () =>
-            import(/* webpackChunkName: "core" */ "@/components/library/radios/Builder"),
+            import(
+              /* webpackChunkName: "core" */ "@/components/library/radios/Builder"
+            ),
           props: true
         },
         {
-          path: 'radios/:id',
-          name: 'library.radios.detail',
+          path: "radios/:id",
+          name: "library.radios.detail",
           component: () =>
             import(/* webpackChunkName: "core" */ "@/views/radios/Detail"),
           props: true
         },
         {
-          path: 'playlists/',
-          name: 'library.playlists.browse',
+          path: "playlists/",
+          name: "library.playlists.browse",
           component: () =>
             import(/* webpackChunkName: "core" */ "@/views/playlists/List"),
-          props: (route) => ({
+          props: route => ({
             defaultOrdering: route.query.ordering,
             defaultQuery: route.query.query,
             defaultPaginateBy: route.query.paginateBy,
@@ -463,105 +584,139 @@ export default new Router({
           })
         },
         {
-          path: 'playlists/:id',
-          name: 'library.playlists.detail',
+          path: "playlists/:id",
+          name: "library.playlists.detail",
           component: () =>
             import(/* webpackChunkName: "core" */ "@/views/playlists/Detail"),
-          props: (route) => ({
+          props: route => ({
             id: route.params.id,
-            defaultEdit: route.query.mode === 'edit' })
+            defaultEdit: route.query.mode === "edit"
+          })
         },
         {
-          path: 'artists/:id',
+          path: "tags/:id",
+          name: "library.tags.detail",
           component: () =>
-            import(/* webpackChunkName: "core" */ "@/components/library/ArtistBase"),
+            import(
+              /* webpackChunkName: "core" */ "@/components/library/TagDetail"
+            ),
+          props: true
+        },
+        {
+          path: "artists/:id",
+          component: () =>
+            import(
+              /* webpackChunkName: "core" */ "@/components/library/ArtistBase"
+            ),
           props: true,
           children: [
             {
-              path: '',
-              name: 'library.artists.detail',
+              path: "",
+              name: "library.artists.detail",
               component: () =>
-                import(/* webpackChunkName: "core" */ "@/components/library/ArtistDetail"),
+                import(
+                  /* webpackChunkName: "core" */ "@/components/library/ArtistDetail"
+                )
             },
             {
-              path: 'edit',
-              name: 'library.artists.edit',
+              path: "edit",
+              name: "library.artists.edit",
               component: () =>
-                import(/* webpackChunkName: "core" */ "@/components/library/ArtistEdit"),
+                import(
+                  /* webpackChunkName: "core" */ "@/components/library/ArtistEdit"
+                )
             },
             {
-              path: 'edit/:editId',
-              name: 'library.artists.edit.detail',
+              path: "edit/:editId",
+              name: "library.artists.edit.detail",
               component: () =>
-                import(/* webpackChunkName: "core" */ "@/components/library/EditDetail"),
-              props: true,
+                import(
+                  /* webpackChunkName: "core" */ "@/components/library/EditDetail"
+                ),
+              props: true
             }
           ]
         },
         {
-          path: 'albums/:id',
+          path: "albums/:id",
           component: () =>
-            import(/* webpackChunkName: "core" */ "@/components/library/AlbumBase"),
+            import(
+              /* webpackChunkName: "core" */ "@/components/library/AlbumBase"
+            ),
           props: true,
           children: [
             {
-              path: '',
-              name: 'library.albums.detail',
+              path: "",
+              name: "library.albums.detail",
               component: () =>
-            import(/* webpackChunkName: "core" */ "@/components/library/AlbumDetail"),
+                import(
+                  /* webpackChunkName: "core" */ "@/components/library/AlbumDetail"
+                )
             },
             {
-              path: 'edit',
-              name: 'library.albums.edit',
+              path: "edit",
+              name: "library.albums.edit",
               component: () =>
-            import(/* webpackChunkName: "core" */ "@/components/library/AlbumEdit"),
+                import(
+                  /* webpackChunkName: "core" */ "@/components/library/AlbumEdit"
+                )
             },
             {
-              path: 'edit/:editId',
-              name: 'library.albums.edit.detail',
+              path: "edit/:editId",
+              name: "library.albums.edit.detail",
               component: () =>
-                import(/* webpackChunkName: "core" */ "@/components/library/EditDetail"),
-              props: true,
+                import(
+                  /* webpackChunkName: "core" */ "@/components/library/EditDetail"
+                ),
+              props: true
             }
           ]
         },
         {
-          path: 'tracks/:id',
+          path: "tracks/:id",
           component: () =>
-            import(/* webpackChunkName: "core" */ "@/components/library/TrackBase"),
+            import(
+              /* webpackChunkName: "core" */ "@/components/library/TrackBase"
+            ),
           props: true,
           children: [
             {
-              path: '',
-              name: 'library.tracks.detail',
+              path: "",
+              name: "library.tracks.detail",
               component: () =>
-                import(/* webpackChunkName: "core" */ "@/components/library/TrackDetail"),
+                import(
+                  /* webpackChunkName: "core" */ "@/components/library/TrackDetail"
+                )
             },
             {
-              path: 'edit',
-              name: 'library.tracks.edit',
+              path: "edit",
+              name: "library.tracks.edit",
               component: () =>
-                import(/* webpackChunkName: "core" */ "@/components/library/TrackEdit"),
+                import(
+                  /* webpackChunkName: "core" */ "@/components/library/TrackEdit"
+                )
             },
             {
-              path: 'edit/:editId',
-              name: 'library.tracks.edit.detail',
+              path: "edit/:editId",
+              name: "library.tracks.edit.detail",
               component: () =>
-                import(/* webpackChunkName: "core" */ "@/components/library/EditDetail"),
-              props: true,
+                import(
+                  /* webpackChunkName: "core" */ "@/components/library/EditDetail"
+                ),
+              props: true
             }
           ]
-        },
+        }
       ]
     },
     {
-      path: '*/index.html',
-      redirect: '/'
+      path: "*/index.html",
+      redirect: "/"
     },
     {
-      path: '*',
+      path: "*",
       component: () =>
-        import(/* webpackChunkName: "core" */ "@/components/PageNotFound"),
+        import(/* webpackChunkName: "core" */ "@/components/PageNotFound")
     }
   ]
 })
diff --git a/front/src/sanitize.js b/front/src/sanitize.js
new file mode 100644
index 0000000000000000000000000000000000000000..4e42d5a4b440b1f751bfe55b1c26b7ad9d6d525b
--- /dev/null
+++ b/front/src/sanitize.js
@@ -0,0 +1,43 @@
+import sanitizeHtml from "sanitize-html"
+
+const allowedTags = [
+  "h3",
+  "h4",
+  "h5",
+  "h6",
+  "blockquote",
+  "p",
+  "a",
+  "ul",
+  "ol",
+  "nl",
+  "li",
+  "b",
+  "i",
+  "strong",
+  "em",
+  "strike",
+  "code",
+  "hr",
+  "br",
+  "div",
+  "table",
+  "thead",
+  "caption",
+  "tbody",
+  "tr",
+  "th",
+  "td",
+  "pre",
+]
+const allowedAttributes = {
+  a: ["href", "name", "target"],
+  // We don't currently allow img itself by default, but this
+  // would make sense if we did. You could add srcset here,
+  // and if you do the URL is checked for safety
+  img: ["src"]
+}
+
+export default function sanitize(input) {
+  return sanitizeHtml(input, {allowedAttributes, allowedAttributes})
+}
diff --git a/front/src/semantic.js b/front/src/semantic.js
index f5dad819256c1d08940c9dd304b4a1888ae1e6c0..206b59149fcc099e3c2f012b14149fe06f5ece00 100644
--- a/front/src/semantic.js
+++ b/front/src/semantic.js
@@ -1,24 +1,24 @@
-// require('semantic-ui-css/components/accordion.min.js')
-require('semantic-ui-css/components/api.min.js')
-require('semantic-ui-css/components/checkbox.min.js')
-// require('semantic-ui-css/components/colorize.min.js')
-require('semantic-ui-css/components/dimmer.min.js')
-require('semantic-ui-css/components/dropdown.min.js')
-// require('semantic-ui-css/components/embed.min.js')
-// require('semantic-ui-css/components/form.min.js')
-require('semantic-ui-css/components/modal.min.js')
-// require('semantic-ui-css/components/nag.min.js')
-// require('semantic-ui-css/components/popup.min.js')
-require('semantic-ui-css/components/progress.min.js')
-// require('semantic-ui-css/components/rating.min.js')
-require('semantic-ui-css/components/search.min.js')
-// require('semantic-ui-css/components/shape.min.js')
-// require('semantic-ui-css/components/sidebar.min.js')
-require('semantic-ui-css/components/site.min.js')
-require('semantic-ui-css/components/state.min.js')
-require('semantic-ui-css/components/sticky.min.js')
-// require('semantic-ui-css/components/tab.min.js')
-require('semantic-ui-css/components/transition.min.js')
-// require('semantic-ui-css/components/video.min.js')
-require('semantic-ui-css/components/visibility.min.js')
-// require('semantic-ui-css/components/visit.min.js')
+// require('fomantic-ui-css/components/accordion.min.js')
+require('fomantic-ui-css/components/api.min.js')
+require('fomantic-ui-css/components/checkbox.min.js')
+// require('fomantic-ui-css/components/colorize.min.js')
+require('fomantic-ui-css/components/dimmer.min.js')
+require('fomantic-ui-css/components/dropdown.min.js')
+// require('fomantic-ui-css/components/embed.min.js')
+// require('fomantic-ui-css/components/form.min.js')
+require('fomantic-ui-css/components/modal.min.js')
+// require('fomantic-ui-css/components/nag.min.js')
+// require('fomantic-ui-css/components/popup.min.js')
+require('fomantic-ui-css/components/progress.min.js')
+// require('fomantic-ui-css/components/rating.min.js')
+require('fomantic-ui-css/components/search.min.js')
+// require('fomantic-ui-css/components/shape.min.js')
+// require('fomantic-ui-css/components/sidebar.min.js')
+require('fomantic-ui-css/components/site.min.js')
+require('fomantic-ui-css/components/state.min.js')
+require('fomantic-ui-css/components/sticky.min.js')
+// require('fomantic-ui-css/components/tab.min.js')
+require('fomantic-ui-css/components/transition.min.js')
+// require('fomantic-ui-css/components/video.min.js')
+require('fomantic-ui-css/components/visibility.min.js')
+// require('fomantic-ui-css/components/visit.min.js')
diff --git a/front/src/store/auth.js b/front/src/store/auth.js
index 52cc98a6de7abde1ebfb1c03bd5ea434e1fa2af8..93ba3b4318d2d708d8560bc9a1a3edd9701232db 100644
--- a/front/src/store/auth.js
+++ b/front/src/store/auth.js
@@ -1,7 +1,9 @@
+import Vue from 'vue'
 import axios from 'axios'
 import jwtDecode from 'jwt-decode'
 import logger from '@/logging'
 import router from '@/router'
+import lodash from '@/lodash'
 
 export default {
   namespaced: true,
@@ -73,6 +75,11 @@ export default {
     },
     permission: (state, {key, status}) => {
       state.availablePermissions[key] = status
+    },
+    profilePartialUpdate: (state, payload) => {
+      lodash.keys(payload).forEach((k) => {
+        Vue.set(state.profile, k, payload[k])
+      })
     }
   },
   actions: {
@@ -106,7 +113,7 @@ export default {
       router.push({name: 'index'})
     },
     check ({commit, dispatch, state}) {
-      logger.default.info('Checking authentication...')
+      logger.default.info('Checking authentication…')
       var jwt = state.token
       if (jwt) {
         commit('token', jwt)
@@ -126,7 +133,12 @@ export default {
             resolve(response.data)
           })
           dispatch('ui/fetchUnreadNotifications', null, { root: true })
-          dispatch('ui/fetchPendingReviewEdits', null, { root: true })
+          if (response.data.permissions.library) {
+            dispatch('ui/fetchPendingReviewEdits', null, { root: true })
+          }
+          if (response.data.permissions.moderation) {
+            dispatch('ui/fetchPendingReviewReports', null, { root: true })
+          }
           dispatch('favorites/fetch', null, { root: true })
           dispatch('moderation/fetchContentFilters', null, { root: true })
           dispatch('playlists/fetchOwn', null, { root: true })
diff --git a/front/src/store/index.js b/front/src/store/index.js
index 791dbb1e92fd1d3add3509ea67575dc734c64dd8..d94a0bcc77b61fd09ad8e47f35c40c39ffcd1360 100644
--- a/front/src/store/index.js
+++ b/front/src/store/index.js
@@ -40,7 +40,7 @@ export default new Vuex.Store({
     }),
     createPersistedState({
       key: 'ui',
-      paths: ['ui.currentLanguage', 'ui.momentLocale']
+      paths: ['ui.currentLanguage', 'ui.selectedLanguage', 'ui.momentLocale', 'ui.theme']
     }),
     createPersistedState({
       key: 'radios',
diff --git a/front/src/store/instance.js b/front/src/store/instance.js
index 6af36e8090e3ba276c7fabaf870ebd251f086a15..ec4e47b43d16cc29d5c1bd98e2a1fdde88282078 100644
--- a/front/src/store/instance.js
+++ b/front/src/store/instance.js
@@ -17,6 +17,7 @@ export default {
     instanceUrl: process.env.VUE_APP_INSTANCE_URL,
     events: [],
     knownInstances: [],
+    nodeinfo: null,
     settings: {
       instance: {
         name: {
@@ -27,6 +28,12 @@ export default {
         },
         long_description: {
           value: ''
+        },
+        funkwhale_support_message_enabled: {
+          value: true
+        },
+        support_message: {
+          value: ''
         }
       },
       users: {
@@ -41,7 +48,7 @@ export default {
         enabled: {
           value: true
         }
-      }
+      },
     }
   },
   mutations: {
@@ -57,6 +64,9 @@ export default {
     events: (state, value) => {
       state.events = value
     },
+    nodeinfo: (state, value) => {
+      state.nodeinfo = value
+    },
     frontSettings: (state, value) => {
       state.frontSettings = value
     },
diff --git a/front/src/store/moderation.js b/front/src/store/moderation.js
index 153f3cd5959d307d0edbf7760a4ff34d6a8eced3..16caf60aa4a5abca53b6fd06f4f4e7ff61f37c36 100644
--- a/front/src/store/moderation.js
+++ b/front/src/store/moderation.js
@@ -7,16 +7,24 @@ export default {
   state: {
     filters: [],
     showFilterModal: false,
+    showReportModal: false,
     lastUpdate: new Date(),
     filterModalTarget: {
       type: null,
       target: null,
+    },
+    reportModalTarget: {
+      type: null,
+      target: null,
     }
   },
   mutations: {
     filterModalTarget (state, value) {
       state.filterModalTarget = value
     },
+    reportModalTarget (state, value) {
+      state.reportModalTarget = value
+    },
     empty (state) {
       state.filters = []
     },
@@ -35,10 +43,21 @@ export default {
         }
       }
     },
+    showReportModal (state, value) {
+      state.showReportModal = value
+      if (!value) {
+        state.reportModalTarget = {
+          type: null,
+          target: null,
+        }
+      }
+    },
     reset (state) {
       state.filters = []
       state.filterModalTarget = null
       state.showFilterModal = false
+      state.showReportModal = false
+      state.reportModalTarget = {}
     },
     deleteContentFilter (state, uuid) {
       state.filters = state.filters.filter((e) => {
@@ -61,6 +80,10 @@ export default {
       commit('filterModalTarget', payload)
       commit('showFilterModal', true)
     },
+    report ({commit}, payload) {
+      commit('reportModalTarget', payload)
+      commit('showReportModal', true)
+    },
     fetchContentFilters ({dispatch, state, commit, rootState}, url) {
       let params = {}
       let promise
diff --git a/front/src/store/player.js b/front/src/store/player.js
index fac17368d10377b959fb98520f242eb2f77f4aa2..6757f0beef1e04655c60a366a844d3f10d179638 100644
--- a/front/src/store/player.js
+++ b/front/src/store/player.js
@@ -109,6 +109,15 @@ export default {
         }, 3000)
       }
     },
+    toggleMute({commit, state}) {
+      if (state.volume > 0) {
+        commit('tempVolume', state.volume)
+        commit('volume', 0)
+      }
+      else {
+        commit('volume', state.tempVolume)
+      }
+    },
     trackListened ({commit, rootState}, track) {
       if (!rootState.auth.authenticated) {
         return
diff --git a/front/src/store/ui.js b/front/src/store/ui.js
index 8a8bc1da01854a6b630c5a3877bca91217feb524..48795116f98ed1081424845228b1d1ede6b8dc3a 100644
--- a/front/src/store/ui.js
+++ b/front/src/store/ui.js
@@ -5,23 +5,65 @@ export default {
   namespaced: true,
   state: {
     currentLanguage: 'en_US',
+    selectedLanguage: false,
     momentLocale: 'en',
     lastDate: new Date(),
     maxMessages: 100,
     messageDisplayDuration: 10000,
     messages: [],
+    theme: 'light',
     notifications: {
       inbox: 0,
       pendingReviewEdits: 0,
+      pendingReviewReports: 0,
     },
     websocketEventsHandlers: {
       'inbox.item_added': {},
       'import.status_updated': {},
       'mutation.created': {},
       'mutation.updated': {},
+      'report.created': {},
     },
     pageTitle: null
   },
+  getters: {
+    showInstanceSupportMessage: (state, getters, rootState) => {
+      if (!rootState.auth.profile) {
+        return false
+      }
+      if (!rootState.instance.settings.instance.support_message.value) {
+        return false
+      }
+      let displayDate = rootState.auth.profile.instance_support_message_display_date
+      if (!displayDate) {
+        return false
+      }
+      return moment(displayDate) < moment(state.lastDate)
+    },
+    showFunkwhaleSupportMessage: (state, getters, rootState) => {
+      if (!rootState.auth.profile) {
+        return false
+      }
+      if (!rootState.instance.settings.instance.funkwhale_support_message_enabled.value) {
+        return false
+      }
+      let displayDate = rootState.auth.profile.funkwhale_support_message_display_date
+      if (!displayDate) {
+        return false
+      }
+      return moment(displayDate) < moment(state.lastDate)
+    },
+    additionalNotifications: (state, getters) => {
+      let count = 0
+      if (getters.showInstanceSupportMessage) {
+        count += 1
+      }
+      if (getters.showFunkwhaleSupportMessage) {
+        count += 1
+      }
+      return count
+    }
+  },
   mutations: {
     addWebsocketEventHandler: (state, {eventName, id, handler}) => {
       state.websocketEventsHandlers[eventName][id] = handler
@@ -31,6 +73,7 @@ export default {
     },
     currentLanguage: (state, value) => {
       state.currentLanguage = value
+      state.selectedLanguage = true
     },
     momentLocale: (state, value) => {
       state.momentLocale = value
@@ -39,6 +82,9 @@ export default {
     computeLastDate: (state) => {
       state.lastDate = new Date()
     },
+    theme: (state, value) => {
+      state.theme = value
+    },
     addMessage (state, message) {
       state.messages.push(message)
       if (state.messages.length > state.maxMessages) {
@@ -70,6 +116,11 @@ export default {
         commit('notifications', {type: 'pendingReviewEdits', count: response.data.count})
       })
     },
+    fetchPendingReviewReports ({commit, rootState}, payload) {
+      axios.get('manage/moderation/reports/', {params: {is_handled: 'false', page_size: 1}}).then((response) => {
+        commit('notifications', {type: 'pendingReviewReports', count: response.data.count})
+      })
+    },
     websocketEvent ({state}, event) {
       let handlers = state.websocketEventsHandlers[event.type]
       console.log('Dispatching websocket event', event, handlers)
diff --git a/front/src/style/_main.scss b/front/src/style/_main.scss
index d1eb1e3fbbf164d5c8dbcf07f3572f0293b017a3..b98584f7d21e510a8ec9476fc1d25facbef2ab26 100644
--- a/front/src/style/_main.scss
+++ b/front/src/style/_main.scss
@@ -10,62 +10,66 @@
   Import this file into your LESS project to use Semantic UI without build tools
 */
 
+// Those fomantic-ui-css/*.scss don't exist in the package, but we create them
+// via scripts/link-scss-files.sh on postinstall, so we can include theme
+// under a class namespace
+
 /* Global */
-@import "~semantic-ui-css/components/reset.css";
+@import "~fomantic-ui-css/components/reset.css";
 // we use our custom site css here to avoid loading google font
 @import "./site";
 
 /* Elements */
-@import "~semantic-ui-css/components/button.css";
-@import "~semantic-ui-css/components/container.css";
-@import "~semantic-ui-css/components/divider.css";
-// @import "~semantic-ui-css/components/flag.css";
-@import "~semantic-ui-css/components/header.css";
-@import "~semantic-ui-css/components/icon.css";
-@import "~semantic-ui-css/components/image.css";
-@import "~semantic-ui-css/components/input.css";
-@import "~semantic-ui-css/components/label.css";
-@import "~semantic-ui-css/components/list.css";
-@import "~semantic-ui-css/components/loader.css";
-@import "~semantic-ui-css/components/placeholder.css";
-// @import "~semantic-ui-css/components/rail.css";
-// @import "~semantic-ui-css/components/reveal.css";
-@import "~semantic-ui-css/components/segment.css";
-@import "~semantic-ui-css/components/step.css";
+@import "~fomantic-ui-css/components/button.css";
+@import "~fomantic-ui-css/components/container.css";
+@import "~fomantic-ui-css/components/divider.css";
+// @import "~fomantic-ui-css/components/flag.css";
+@import "~fomantic-ui-css/components/header.css";
+@import "~fomantic-ui-css/components/icon.css";
+@import "~fomantic-ui-css/components/image.css";
+@import "~fomantic-ui-css/components/input.css";
+@import "~fomantic-ui-css/components/label.css";
+@import "~fomantic-ui-css/components/list.css";
+@import "~fomantic-ui-css/components/loader.css";
+@import "~fomantic-ui-css/components/placeholder.css";
+// @import "~fomantic-ui-css/components/rail.css";
+// @import "~fomantic-ui-css/components/reveal.css";
+@import "~fomantic-ui-css/components/segment.css";
+@import "~fomantic-ui-css/components/step.css";
 
 /* Collections */
-// @import "~semantic-ui-css/components/breadcrumb.css";
-@import "~semantic-ui-css/components/form.css";
-@import "~semantic-ui-css/components/grid.css";
-@import "~semantic-ui-css/components/menu.css";
-@import "~semantic-ui-css/components/message.css";
-@import "~semantic-ui-css/components/table.css";
+// @import "~fomantic-ui-css/components/breadcrumb.css";
+@import "~fomantic-ui-css/components/form.css";
+@import "~fomantic-ui-css/components/grid.css";
+@import "~fomantic-ui-css/components/menu.css";
+@import "~fomantic-ui-css/components/message.css";
+@import "~fomantic-ui-css/components/table.css";
 
 /* Views */
-// @import "~semantic-ui-css/components/ad.css";
-@import "~semantic-ui-css/components/card.css";
-// @import "~semantic-ui-css/components/comment.css";
-// @import "~semantic-ui-css/components/feed.css";
-@import "~semantic-ui-css/components/item.css";
-@import "~semantic-ui-css/components/statistic.css";
+// @import "~fomantic-ui-css/components/ad.css";
+@import "~fomantic-ui-css/components/card.css";
+// @import "~fomantic-ui-css/components/comment.css";
+@import "~fomantic-ui-css/components/feed.css";
+@import "~fomantic-ui-css/components/item.css";
+@import "~fomantic-ui-css/components/statistic.css";
 
 /* Modules */
-// @import "~semantic-ui-css/components/accordion.css";
-@import "~semantic-ui-css/components/checkbox.css";
-@import "~semantic-ui-css/components/dimmer.css";
-@import "~semantic-ui-css/components/dropdown.css";
-// @import "~semantic-ui-css/components/embed.css";
-@import "~semantic-ui-css/components/modal.css";
-// @import "~semantic-ui-css/components/nag.css";
-@import "~semantic-ui-css/components/popup.css";
-@import "~semantic-ui-css/components/progress.css";
-// @import "~semantic-ui-css/components/rating.css";
-@import "~semantic-ui-css/components/search.css";
-// @import "~semantic-ui-css/components/shape.css";
-@import "~semantic-ui-css/components/sidebar.css";
-@import "~semantic-ui-css/components/sticky.css";
-@import "~semantic-ui-css/components/tab.css";
-@import "~semantic-ui-css/components/transition.css";
+// @import "~fomantic-ui-css/components/accordion.css";
+@import "~fomantic-ui-css/components/checkbox.css";
+@import "~fomantic-ui-css/components/dimmer.css";
+@import "~fomantic-ui-css/components/dropdown.css";
+// @import "~fomantic-ui-css/components/embed.css";
+@import "~fomantic-ui-css/components/modal.css";
+// @import "~fomantic-ui-css/components/nag.css";
+@import "~fomantic-ui-css/components/popup.css";
+@import "~fomantic-ui-css/components/progress.css";
+// @import "~fomantic-ui-css/components/rating.css";
+@import "~fomantic-ui-css/components/search.css";
+// @import "~fomantic-ui-css/components/shape.css";
+@import "~fomantic-ui-css/components/sidebar.css";
+@import "~fomantic-ui-css/components/sticky.css";
+@import "~fomantic-ui-css/components/tab.css";
+@import "~fomantic-ui-css/components/transition.css";
 
 
 
@@ -80,7 +84,7 @@ $widedesktop-sidebar-width: 350px;
 
 html,
 body {
-  @include media("<desktop") {
+  @include media("<=desktop") {
     font-size: 90%;
   }
 }
@@ -96,6 +100,7 @@ body {
 #app > main, #app > .main {
   flex: 1;
 }
+
 .instance-chooser {
   margin-top: 2em;
 }
@@ -127,14 +132,10 @@ body {
   margin-right: 0;
   border: none;
   overflow-y: auto;
-  box-shadow: inset 0px -2px 0px 0px rgba(34, 36, 38, 0.15);
   .ui.item {
     border: none;
     border-bottom-style: none;
     margin-bottom: 0px;
-    &.active {
-      box-shadow: inset 0px -2px 0px 0px #000;
-    }
   }
   @include media(">tablet") {
     padding: 0 2.5rem;
@@ -149,7 +150,6 @@ body {
   @include media(">widedesktop") {
     left: $widedesktop-sidebar-width;
   }
-  background-color: white;
   .item {
     padding-top: 1.5em;
     padding-bottom: 1.5em;
@@ -166,6 +166,9 @@ body {
   @include media(">widedesktop") {
     left: $widedesktop-sidebar-width;
   }
+  > .ui.message {
+    box-shadow: 0px 0px 7px rgba(0, 0, 0, 0.7);
+  }
 }
 .main-pusher {
   padding: 1.5rem 0;
@@ -181,7 +184,7 @@ body {
   }
 }
 
-.ellipsis {
+.ellipsis:not(.icon) {
   text-overflow: ellipsis;
   white-space: nowrap;
   overflow: hidden;
@@ -209,9 +212,6 @@ body {
   }
 }
 
-.discrete {
-  color: rgba(0, 0, 0, 0.87);
-}
 .link {
   cursor: pointer;
 }
@@ -250,6 +250,9 @@ a {
   display: none;
 }
 
+.nomargin {
+  margin: 0 !important;
+}
 button.reset {
   border: none;
   margin: 0;
@@ -345,6 +348,20 @@ td.align.right {
   word-wrap: break-word;
 }
 
+.ui.cards > .flat.card, .flat.card {
+  box-shadow: none;
+  .content {
+    border: none;
+  }
+}
+
+.ui.cards > .inline.card {
+  flex-direction: row;
+  .content {
+    padding: 0.5em 0.75em;
+  }
+}
+
 .ui.checkbox label {
   cursor: pointer;
 }
@@ -353,6 +370,27 @@ input + .help {
   margin-top: 0.5em;
 }
 
-.table td .ui.dropdown {
-  min-width: 150px;
+.tag-list {
+  margin-top: 0.5em;
+}
+
+.expandable {
+  &:not(.expanded) {
+    overflow: hidden;
+    max-height: 15vh;
+    background: linear-gradient(top, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 90%, rgba(0, 0, 0, 0.3) 100%);
+  }
 }
+
+.ui.borderless.button {
+  border: none !important;
+  box-shadow: none !important;
+  padding-left: 0;
+  padding-right: 0;
+}
+.column .ui.text.container {
+  max-width: 100% !important;
+}
+
+@import "./themes/_light.scss";
+@import "./themes/_dark.scss";
diff --git a/front/src/style/themes/_dark.scss b/front/src/style/themes/_dark.scss
new file mode 100644
index 0000000000000000000000000000000000000000..a34b60cb5399b72ef5e55518d92609ef2b23f13f
--- /dev/null
+++ b/front/src/style/themes/_dark.scss
@@ -0,0 +1,286 @@
+/* purgecss start ignore */
+
+$background-color: rgb(43, 58, 66);
+$button-hover-color: rgb(33, 48, 56);
+$light-background-color: rgb(51, 71, 82);
+$input-background-color: rgb(189, 211, 222);
+$loading-background-color: rgba(43, 58, 66, 0.9);
+$text-color: rgb(223, 235, 240);
+$discrete-text-color: rgba(223, 235, 240, 0.904);
+$border-color: rgb(63, 88, 102);
+$light-shadow-color: rgba(223, 235, 240, 0.15);
+$shadow-color: rgba(63, 102, 97, 0.95);
+$box-shadow: 0px 1px 3px 0px rgba(63, 88, 102, 0.95),
+  0px 0px 0px 1px rgba(63, 88, 102, 0.98);
+$link-color: rgb(255, 144, 0);
+
+.theme-dark {
+  background-color: $background-color;
+  .ui.labeled.input {
+    input,
+    .label {
+      background-color: $input-background-color;
+      &::placeholder {
+        color: $light-background-color;
+      }
+    }
+  }
+  .ui.statistics .statistic {
+    > .label,
+    > .value {
+      color: $text-color;
+    }
+  }
+  .ui.link.list.list .active.item,
+  .ui.link.list.list .active.item a:not(.ui) {
+    color: inherit;
+  }
+  .ui.form textarea,
+  .ui.form select,
+  .ui.selection.dropdown,
+  .ui.dropdown.selected,
+  .ui.dropdown .menu .selected.item,
+  .ui.form input:not([type]),
+  .ui.form input[type="date"],
+  .ui.form input[type="datetime-local"],
+  .ui.form input[type="email"],
+  .ui.form input[type="number"],
+  .ui.form input[type="password"],
+  .ui.form input[type="search"],
+  .ui.form input[type="tel"],
+  .ui.form input[type="time"],
+  .ui.form input[type="text"],
+  .ui.form input[type="file"],
+  .ui.form input[type="url"] {
+    background-color: $input-background-color;
+    &::placeholder {
+      color: $light-background-color;
+    }
+  }
+  .ui.dropdown .menu .item:hover {
+    background-color: $light-background-color;
+    color: $text-color;
+  }
+  .main.pusher > .ui.secondary.menu {
+    background-color: $background-color;
+    box-shadow: inset 0px -2px 0px 0px $light-background-color;
+    .ui.item {
+      color: $text-color;
+      &.active {
+        box-shadow: inset 0px -2px 0px 0px $shadow-color;
+      }
+    }
+  }
+  .ui.modal {
+    > .header,
+    > .content,
+    > .actions {
+      background-color: $background-color;
+    }
+    > .header {
+      border-bottom: 1px solid $border-color;
+    }
+
+    > .actions {
+      border-top: 1px solid $border-color;
+    }
+  }
+  main,
+  .main,
+  footer,
+  .modal {
+    .ui.menu {
+      background-color: $light-background-color;
+      .item {
+        color: $text-color;
+      }
+    }
+    .ui.secondary.menu .dropdown.item:hover,
+    .ui.secondary.menu .link.item:hover,
+    .ui.secondary.menu a.item:hover {
+      background: $background-color;
+      color: $text-color;
+    }
+    .header,
+    .ui.form .field > label,
+    .sub.header {
+      color: $text-color;
+    }
+    .ui.attached.header {
+      background-color: transparent;
+    }
+    .ui.toggle.checkbox input:checked ~ .box,
+    .ui.toggle.checkbox input:checked ~ label {
+      color: $text-color !important;
+    }
+    .ui.toggle.checkbox .box::before,
+    .ui.toggle.checkbox label::before {
+      background-color: $light-background-color;
+    }
+    a:not(.ui):not(.discrete) {
+      color: $link-color;
+    }
+    .ui.segment:not(.basic) {
+      background-color: $light-background-color;
+    }
+    .link {
+      color: $link-color;
+    }
+    .ui.list,
+    .ui.dropdown {
+      .item,
+      div.item,
+      a.item,
+      .button.item {
+        background-color: $background-color;
+        color: $discrete-text-color;
+      }
+      .selected.item:not(:hover) {
+        color: $background-color;
+      }
+    }
+    .segment .ui.list .item {
+      background-color: transparent;
+    }
+    .ui.divided.items > .item:not(:first-child) {
+      border-top: 1px solid $border-color;
+    }
+    .ui.items {
+      .extra {
+        color: $discrete-text-color;
+      }
+    }
+    label,
+    .toggle label {
+      color: $text-color !important;
+    }
+    &,
+    .main.pusher,
+    .ui.vertical.segment {
+      color: $text-color;
+      background-color: $background-color;
+    }
+
+    .discrete {
+      color: $discrete-text-color;
+    }
+
+    .ui.table thead th,
+    .ui.table {
+      color: $text-color;
+    }
+    .ui.divider:not(.vertical):not(.horizontal) {
+      border-top: 1px solid $border-color;
+      border-bottom: 1px solid $border-color;
+    }
+    .ui.cards > .card,
+    .ui.card {
+      color: $text-color;
+      background-color: $background-color;
+      &:not(.flat) {
+        box-shadow: $box-shadow;
+      }
+      .content,
+      .header,
+      .description {
+        color: $text-color;
+      }
+      .extra,
+      .meta {
+        color: $discrete-text-color;
+      }
+    }
+    .playlist.card {
+      .attached.button {
+        background-color: $light-background-color;
+      }
+    }
+
+    // buttons
+    [class="ui button ui button"],
+    [class="ui button"],
+    [class="ui icon button"],
+    [class="ui fluid button"],
+    [class="ui cancel button"] {
+      background-color: $light-background-color;
+      color: $text-color;
+      &:hover {
+        background-color: $button-hover-color;
+      }
+    }
+    .ui.buttons > .ui.button:not(.basic):not(.inverted),
+    .ui.buttons:not(.basic):not(.inverted) > .button {
+      box-shadow: 0px 0px 0px 1px $light-shadow-color inset;
+    }
+    .ui.basic.buttons:not(:hover):not(.green):not(.orange):not(.yellow):not(.red)
+      .button,
+    .ui.basic.button {
+      box-shadow: 0px 0px 0px 1px $text-color inset;
+      &:not(:hover):not(.green):not(.orange):not(.yellow):not(.red) {
+        color: $text-color !important;
+      }
+    }
+    .ui.basic.buttons .button,
+    .ui.basic.button {
+      &:hover {
+        color: $text-color !important;
+      }
+    }
+    .ui.basic.buttons:not(.green):not(.orange):not(.yellow):not(.red)
+      .button:hover,
+    .ui.basic.button:not(.green):not(.orange):not(.yellow):not(.red):hover,
+    .ui.basic.button:not(.green):not(.orange):not(.yellow):not(.red):active,
+    .ui.basic.button:not(.green):not(.orange):not(.yellow):not(.red):focus {
+      color: $background-color !important;
+    }
+    // loading /dimmers
+    .ui.loading.form::before {
+      background-color: $loading-background-color;
+    }
+    .ui.inverted.dimmer {
+      background-color: $loading-background-color;
+    }
+    // table
+    .ui.basic.table tbody tr,
+    .ui.table tr td {
+      border-bottom: 1px solid $border-color;
+    }
+    .ui.table thead th {
+      border-bottom: 1px solid $border-color;
+    }
+    .ui.table {
+      &:not(.basic) {
+        &,
+        thead th {
+          background-color: $light-background-color;
+        }
+      }
+    }
+  }
+  .ui.list > .item .description {
+    color: $text-color;
+  }
+  .ui.link.list.list a.item:hover,
+  .ui.link.list.list .item a:not(.ui):not(.button):hover, .ui.list > .item a.header {
+    color: $link-color !important;
+  }
+  [data-tooltip]::after {
+    background-color: $light-background-color;
+    color: $text-color;
+  }
+  .ui.progress > .label {
+    color: $text-color;
+  }
+  i.grey.icon {
+    color: $text-color !important;
+  }
+  input {
+    &::selection,
+    &::-moz-selection {
+      background: $background-color;
+      color: $text-color;
+    }
+  }
+}
+
+/* purgecss end ignore */
diff --git a/front/src/style/themes/_light.scss b/front/src/style/themes/_light.scss
new file mode 100644
index 0000000000000000000000000000000000000000..a6e1a0cdf621edaf3b7ed5dd57d0a6e8c4727b02
--- /dev/null
+++ b/front/src/style/themes/_light.scss
@@ -0,0 +1,35 @@
+
+
+.theme-light {
+
+  .main.pusher > .ui.secondary.menu {
+    box-shadow: inset 0px -2px 0px 0px rgba(34, 36, 38, 0.15);
+    background-color: white;
+    .ui.item {
+      &.active {
+        box-shadow: inset 0px -2px 0px 0px #000;
+      }
+    }
+  }
+
+  .discrete {
+    color: rgba(0, 0, 0, 0.87);
+  }
+  .playlist.card {
+    .attached.button {
+      background-color: rgb(243, 244, 245);
+    }
+  }
+
+  .disabled-row {
+    color: rgba(40, 40, 40, 0.3);
+  }
+  footer p {
+    color: grey;
+  }
+
+  footer#footer div.item:hover {
+    color: rgba(0, 0, 0, 0.87);
+  }
+
+}
diff --git a/front/src/utils.js b/front/src/utils.js
new file mode 100644
index 0000000000000000000000000000000000000000..eee36f8e68df0aea62b13e2d0e598dfe1c911b3f
--- /dev/null
+++ b/front/src/utils.js
@@ -0,0 +1,8 @@
+import lodash from '@/lodash'
+
+export function setUpdate(obj, statuses, value) {
+  let updatedKeys = lodash.keys(obj)
+  updatedKeys.forEach((k) => {
+    statuses[k] = value
+  })
+}
diff --git a/front/src/views/Notifications.vue b/front/src/views/Notifications.vue
index 648654c8fc1c02ede3fc86a94263bacb528f902e..3a10d399d3d24f9ca1e577cda4cc07b6f0a3cc0a 100644
--- a/front/src/views/Notifications.vue
+++ b/front/src/views/Notifications.vue
@@ -2,6 +2,71 @@
   <main class="main pusher" v-title="labels.title">
     <section class="ui vertical aligned stripe segment">
       <div class="ui container">
+        <div class="ui container" v-if="additionalNotifications">
+          <h1 class="ui header"><translate translate-context="Content/Notifications/Title">Your messages</translate></h1>
+          <div class="ui two column stackable grid">
+            <div class="column" v-if="showInstanceSupportMessage">
+              <div class="ui attached info message">
+                <div class="header">
+                  <translate translate-context="Content/Notifications/Header">Support this Funkwhale pod</translate>
+                </div>
+                <div v-html="markdown.makeHtml($store.state.instance.settings.instance.support_message.value)"></div>
+              </div>
+              <div class="ui bottom attached segment">
+                <form @submit.prevent="setDisplayDate('instance_support_message_display_date', instanceSupportMessageDelay)" class="ui inline form">
+                  <div class="inline field">
+                    <label>
+                      <translate translate-context="Content/Notifications/Label">Remind me in:</translate>
+                    </label>
+                    <select v-model="instanceSupportMessageDelay">
+                      <option :value="30"><translate translate-context="*/*/*">30 days</translate></option>
+                      <option :value="60"><translate translate-context="*/*/*">60 days</translate></option>
+                      <option :value="90"><translate translate-context="*/*/*">90 days</translate></option>
+                      <option :value="null"><translate translate-context="*/*/*">Never</translate></option>
+                    </select>
+                    <button type="submit" class="ui right floated basic button">
+                      <translate translate-context="Content/Notifications/Button.Label">Got it!</translate>
+                    </button>
+                  </div>
+                </form>
+              </div>
+            </div>
+            <div class="column" v-if="showFunkwhaleSupportMessage">
+              <div class="ui info attached message">
+                <div class="header">
+                  <translate translate-context="Content/Notifications/Header">Do you like Funkwhale?</translate>
+                </div>
+                <p>
+                  <translate translate-context="Content/Notifications/Paragraph">We noticed you've been here for a while. If Funkwhale is useful to you, we could use your help to make it even better!</translate>
+                </p>
+                <a href="https://funkwhale.audio/support-us" _target="blank" rel="noopener" class="ui primary inverted button">
+                  <translate translate-context="Content/Notifications/Button.Label/Verb">Donate</translate>
+                </a>
+                <a href="https://contribute.funkwhale.audio" _target="blank" rel="noopener" class="ui secondary inverted button">
+                  <translate translate-context="Content/Notifications/Button.Label/Verb">Discover other ways to help</translate>
+                </a>
+              </div>
+              <div class="ui bottom attached segment">
+                <form @submit.prevent="setDisplayDate('funkwhale_support_message_display_date', funkwhaleSupportMessageDelay)" class="ui inline form">
+                  <div class="inline field">
+                    <label>
+                      <translate translate-context="Content/Notifications/Label">Remind me in:</translate>
+                    </label>
+                    <select v-model="funkwhaleSupportMessageDelay">
+                      <option :value="30"><translate translate-context="*/*/*">30 days</translate></option>
+                      <option :value="60"><translate translate-context="*/*/*">60 days</translate></option>
+                      <option :value="90"><translate translate-context="*/*/*">90 days</translate></option>
+                      <option :value="null"><translate translate-context="*/*/*">Never</translate></option>
+                    </select>
+                    <button type="submit" class="ui right floated basic button">
+                      <translate translate-context="Content/Notifications/Button.Label">Got it!</translate>
+                    </button>
+                  </div>
+                </form>
+              </div>
+            </div>
+          </div>
+        </div>
         <h1 class="ui header"><translate translate-context="Content/Notifications/Title">Your notifications</translate></h1>
         <div class="ui toggle checkbox">
           <input v-model="filters.is_read" type="checkbox">
@@ -25,7 +90,7 @@
             <notification-row :item="item" v-for="item in notifications.results" :key="item.id" />
           </tbody>
         </table>
-        <p v-else>
+        <p v-else-if="additionalNotifications === 0">
           <translate translate-context="Content/Notifications/Paragraph">No notification to show.</translate>
         </p>
       </div>
@@ -34,9 +99,11 @@
 </template>
 
 <script>
-import { mapState } from "vuex"
+import { mapState, mapGetters } from "vuex"
 import axios from "axios"
 import logger from "@/logging"
+import showdown from 'showdown'
+import moment from 'moment'
 
 import NotificationRow from "@/components/notifications/NotificationRow"
 
@@ -44,7 +111,10 @@ export default {
   data() {
     return {
       isLoading: false,
+      markdown: new showdown.Converter(),
       notifications: {count: 0, results: []},
+      instanceSupportMessageDelay: 60,
+      funkwhaleSupportMessageDelay: 60,
       filters: {
         is_read: false
       }
@@ -71,6 +141,11 @@ export default {
     ...mapState({
       events: state => state.instance.events
     }),
+    ...mapGetters({
+      additionalNotifications: 'ui/additionalNotifications',
+      showInstanceSupportMessage: 'ui/showInstanceSupportMessage',
+      showFunkwhaleSupportMessage: 'ui/showFunkwhaleSupportMessage',
+    }),
     labels() {
       return {
         title: this.$pgettext('*/Notifications/*', "Notifications")
@@ -82,6 +157,20 @@ export default {
       this.notifications.count += 1
       this.notifications.results.unshift(event.item)
     },
+    setDisplayDate (field, days) {
+      let payload = {}
+      let newDisplayDate
+      if (days) {
+        newDisplayDate = moment().add({days})
+      } else {
+        newDisplayDate = null
+      }
+      payload[field] = newDisplayDate
+      let self = this
+      axios.patch(`users/users/${this.$store.state.auth.username}/`, payload).then((response) => {
+        self.$store.commit('auth/profilePartialUpdate', response.data)
+      })
+    },
     fetch(params) {
       this.isLoading = true
       let self = this
diff --git a/front/src/views/admin/Settings.vue b/front/src/views/admin/Settings.vue
index e7075bcc231f9c7cb411a568eab0ea460ef6a3aa..eeba965ad724a86b13cb352e2062c1bd1d4af007 100644
--- a/front/src/views/admin/Settings.vue
+++ b/front/src/views/admin/Settings.vue
@@ -81,9 +81,10 @@ export default {
       let usersLabel = this.$pgettext('*/*/*/Noun', 'Users')
       let musicLabel = this.$pgettext('*/*/*/Noun', 'Music')
       let playlistsLabel = this.$pgettext('*/*/*', 'Playlists')
-      let federationLabel = this.$pgettext('Content/Admin/Menu', 'Federation')
+      let federationLabel = this.$pgettext('*/*/*', 'Federation')
+      let moderationLabel = this.$pgettext('*/Moderation/*', 'Moderation')
       let subsonicLabel = this.$pgettext('Content/Admin/Menu', 'Subsonic')
-      let statisticsLabel = this.$pgettext('Content/Admin/Menu', 'Statistics')
+      let statisticsLabel = this.$pgettext('Content/Home/Header', 'Statistics')
       let uiLabel = this.$pgettext('Content/Admin/Menu', 'User Interface')
       let errorLabel = this.$pgettext('Content/Admin/Menu', 'Error reporting')
       return [
@@ -93,7 +94,12 @@ export default {
           settings: [
             "instance__name",
             "instance__short_description",
-            "instance__long_description"
+            "instance__long_description",
+            "instance__contact_email",
+            "instance__rules",
+            "instance__terms",
+            "instance__banner",
+            "instance__support_message"
           ]
         },
         {
@@ -119,6 +125,15 @@ export default {
           id: "playlists",
           settings: ["playlists__max_tracks"]
         },
+        {
+          label: moderationLabel,
+          id: "moderation",
+          settings: [
+            "moderation__allow_list_enabled",
+            "moderation__allow_list_public",
+            "moderation__unauthenticated_report_types",
+          ]
+        },
         {
           label: federationLabel,
           id: "federation",
@@ -138,7 +153,7 @@ export default {
         {
           label: uiLabel,
           id: "ui",
-          settings: ["ui__custom_css"]
+          settings: ["ui__custom_css", "instance__funkwhale_support_message_enabled"]
         },
         {
           label: statisticsLabel,
diff --git a/front/src/views/admin/library/AlbumDetail.vue b/front/src/views/admin/library/AlbumDetail.vue
index b89afb945d7003cef05c7a92a68c8404b4e2e1c0..fdfc4c7faab2aa11efe793534368e9c99a1b1a99 100644
--- a/front/src/views/admin/library/AlbumDetail.vue
+++ b/front/src/views/admin/library/AlbumDetail.vue
@@ -24,6 +24,12 @@
                   </div>
                 </div>
               </h2>
+
+              <template v-if="object.tags && object.tags.length > 0">
+                <tags-list :limit="5" detail-route="manage.library.tags.detail" :tags="object.tags"></tags-list>
+                <div class="ui hidden divider"></div>
+              </template>
+
               <div class="header-buttons">
 
                 <div class="ui icon buttons">
@@ -177,6 +183,16 @@
                       {{ stats.playlists }}
                     </td>
                   </tr>
+                  <tr>
+                    <td>
+                      <router-link :to="{name: 'manage.moderation.reports.list', query: {q: getQuery('target', `album:${object.id}`) }}">
+                        <translate translate-context="Content/Moderation/Table.Label/Noun">Linked reports</translate>
+                      </router-link>
+                    </td>
+                    <td>
+                      {{ stats.reports }}
+                    </td>
+                  </tr>
                   <tr>
                     <td>
                       <router-link :to="{name: 'manage.library.edits', query: {q: getQuery('target', 'album ' + object.id)}}">
@@ -240,7 +256,7 @@
                   <tr>
                     <td>
                       <router-link :to="{name: 'manage.library.uploads', query: {q: getQuery('album_id', object.id) }}">
-                        <translate translate-context="Content/Moderation/Table.Label/Noun">Uploads</translate>
+                        <translate translate-context="*/*/*">Uploads</translate>
                       </router-link>
                     </td>
                     <td>
@@ -273,12 +289,13 @@
 import axios from "axios"
 import logger from "@/logging"
 import FetchButton from "@/components/federation/FetchButton"
-
+import TagsList from "@/components/tags/List"
 
 export default {
   props: ["id"],
   components: {
-    FetchButton
+    FetchButton,
+    TagsList
   },
   data() {
     return {
diff --git a/front/src/views/admin/library/ArtistDetail.vue b/front/src/views/admin/library/ArtistDetail.vue
index 0c4175bae4a84a68bb1f526deafd1af2fce42cea..e6b4a127b34a5175ebff959f659a52e099609d9e 100644
--- a/front/src/views/admin/library/ArtistDetail.vue
+++ b/front/src/views/admin/library/ArtistDetail.vue
@@ -23,6 +23,11 @@
                   </div>
                 </div>
               </h2>
+              <template v-if="object.tags && object.tags.length > 0">
+                <tags-list :limit="5" detail-route="manage.library.tags.detail" :tags="object.tags"></tags-list>
+                <div class="ui hidden divider"></div>
+              </template>
+
               <div class="header-buttons">
 
                 <div class="ui icon buttons">
@@ -166,6 +171,16 @@
                       {{ stats.playlists }}
                     </td>
                   </tr>
+                  <tr>
+                    <td>
+                      <router-link :to="{name: 'manage.moderation.reports.list', query: {q: getQuery('target', `artist:${object.id}`) }}">
+                        <translate translate-context="Content/Moderation/Table.Label/Noun">Linked reports</translate>
+                      </router-link>
+                    </td>
+                    <td>
+                      {{ stats.reports }}
+                    </td>
+                  </tr>
                   <tr>
                     <td>
                       <router-link :to="{name: 'manage.library.edits', query: {q: getQuery('target', 'artist ' + object.id)}}">
@@ -229,7 +244,7 @@
                   <tr>
                     <td>
                       <router-link :to="{name: 'manage.library.uploads', query: {q: getQuery('artist_id', object.id) }}">
-                        <translate translate-context="Content/Moderation/Table.Label/Noun">Uploads</translate>
+                        <translate translate-context="*/*/*">Uploads</translate>
                       </router-link>
                     </td>
                     <td>
@@ -272,12 +287,14 @@
 import axios from "axios"
 import logger from "@/logging"
 
+import TagsList from "@/components/tags/List"
 import FetchButton from "@/components/federation/FetchButton"
 
 export default {
   props: ["id"],
   components: {
-    FetchButton
+    FetchButton,
+    TagsList
   },
   data() {
     return {
diff --git a/front/src/views/admin/library/ArtistsList.vue b/front/src/views/admin/library/ArtistsList.vue
index 2a5932796ec6003703942ee1fe6e7e31f4d532c9..dae856be445f84b938e40c1a972e2fcb59f13852 100644
--- a/front/src/views/admin/library/ArtistsList.vue
+++ b/front/src/views/admin/library/ArtistsList.vue
@@ -21,7 +21,7 @@ export default {
   computed: {
     labels() {
       return {
-        title: this.$pgettext('*/*/*', 'Artists')
+        title: this.$pgettext('*/*/*/Noun', 'Artists')
       }
     }
   }
diff --git a/front/src/views/admin/library/Base.vue b/front/src/views/admin/library/Base.vue
index 009e1ca95c9f8bc615c73c37f808887b14949711..8b99b273b371ad27c187a171ee100f37174f9270 100644
--- a/front/src/views/admin/library/Base.vue
+++ b/front/src/views/admin/library/Base.vue
@@ -6,7 +6,7 @@
         :to="{name: 'manage.library.edits'}"><translate translate-context="*/Admin/*/Noun">Edits</translate></router-link>
       <router-link
         class="ui item"
-        :to="{name: 'manage.library.artists'}"><translate translate-context="*/*/*">Artists</translate></router-link>
+        :to="{name: 'manage.library.artists'}"><translate translate-context="*/*/*/Noun">Artists</translate></router-link>
       <router-link
         class="ui item"
         :to="{name: 'manage.library.albums'}"><translate translate-context="*/*/*">Albums</translate></router-link>
@@ -15,10 +15,13 @@
         :to="{name: 'manage.library.tracks'}"><translate translate-context="*/*/*">Tracks</translate></router-link>
       <router-link
         class="ui item"
-        :to="{name: 'manage.library.libraries'}"><translate translate-context="*/*/*">Libraries</translate></router-link>
+        :to="{name: 'manage.library.libraries'}"><translate translate-context="*/*/*/Noun">Libraries</translate></router-link>
       <router-link
         class="ui item"
         :to="{name: 'manage.library.uploads'}"><translate translate-context="*/*/*">Uploads</translate></router-link>
+      <router-link
+        class="ui item"
+        :to="{name: 'manage.library.tags'}"><translate translate-context="*/*/*/Noun">Tags</translate></router-link>
     </nav>
     <router-view :key="$route.fullPath"></router-view>
   </div>
diff --git a/front/src/views/admin/library/LibrariesList.vue b/front/src/views/admin/library/LibrariesList.vue
index 495a660c19609fde101fff87b2774f6ca7890c3c..479008bdb1f88939fe13daeae071244d6cc7aa89 100644
--- a/front/src/views/admin/library/LibrariesList.vue
+++ b/front/src/views/admin/library/LibrariesList.vue
@@ -21,7 +21,7 @@ export default {
   computed: {
     labels() {
       return {
-        title: this.$pgettext('*/*/*', 'Libraries')
+        title: this.$pgettext('*/*/*/Noun', 'Libraries')
       }
     }
   }
diff --git a/front/src/views/admin/library/LibraryDetail.vue b/front/src/views/admin/library/LibraryDetail.vue
index beec7e2b408cf6b032c5f0114c979d77f958a64c..2a7b74767029294c8578c3c9276323ce462e6f90 100644
--- a/front/src/views/admin/library/LibraryDetail.vue
+++ b/front/src/views/admin/library/LibraryDetail.vue
@@ -96,7 +96,16 @@
                       </router-link>
                     </td>
                     <td>
-                      {{ sharedLabels.fields.privacy_level.shortChoices[object.privacy_level] }}
+                      <select
+                        v-dropdown
+                        v-if="object.is_local"
+                        @change="updateObj('privacy_level')"
+                        v-model="object.privacy_level"
+
+                        class="ui search selection dropdown">
+                        <option v-for="p in ['me', 'instance', 'everyone']" :value="p">{{ sharedLabels.fields.privacy_level.shortChoices[p] }}</option>
+                      </select>
+                      <template v-else>{{ sharedLabels.fields.privacy_level.shortChoices[object.privacy_level] }}</template>
                     </td>
                   </tr>
                   <tr>
@@ -165,6 +174,16 @@
                       {{ stats.followers }}
                     </td>
                   </tr>
+                  <tr>
+                    <td>
+                      <router-link :to="{name: 'manage.moderation.reports.list', query: {q: getQuery('target', `library:${object.uuid}`) }}">
+                        <translate translate-context="Content/Moderation/Table.Label/Noun">Linked reports</translate>
+                      </router-link>
+                    </td>
+                    <td>
+                      {{ stats.reports }}
+                    </td>
+                  </tr>
                 </tbody>
               </table>
             </section>
@@ -207,7 +226,7 @@
                   <tr>
                     <td>
                       <router-link :to="{name: 'manage.library.artists', query: {q: getQuery('library_id', object.id) }}">
-                        <translate translate-context="*/*/*">Artists</translate>
+                        <translate translate-context="*/*/*/Noun">Artists</translate>
                       </router-link>
                     </td>
                     <td>
@@ -237,7 +256,7 @@
                   <tr>
                     <td>
                       <router-link :to="{name: 'manage.library.uploads', query: {q: getQuery('library_id', object.id) }}">
-                        <translate translate-context="Content/Moderation/Table.Label/Noun">Uploads</translate>
+                        <translate translate-context="*/*/*">Uploads</translate>
                       </router-link>
                     </td>
                     <td>
@@ -308,7 +327,28 @@ export default {
     },
     getQuery (field, value) {
       return `${field}:"${value}"`
-    }
+    },
+    updateObj(attr, toNull) {
+      let newValue = this.object[attr]
+      if (toNull && !newValue) {
+        newValue = null
+      }
+      let params = {}
+      params[attr] = newValue
+      axios.patch(`manage/library/libraries/${this.id}/`, params).then(
+        response => {
+          logger.default.info(
+            `${attr} was updated succcessfully to ${newValue}`
+          )
+        },
+        error => {
+          logger.default.error(
+            `Error while setting ${attr} to ${newValue}`,
+            error
+          )
+        }
+      )
+    },
   },
   computed: {
     labels() {
diff --git a/front/src/views/admin/library/TagDetail.vue b/front/src/views/admin/library/TagDetail.vue
new file mode 100644
index 0000000000000000000000000000000000000000..c434f2805f45f278a5e0be8ec5aa9eb74ff4416c
--- /dev/null
+++ b/front/src/views/admin/library/TagDetail.vue
@@ -0,0 +1,215 @@
+<template>
+  <main>
+    <div v-if="isLoading" class="ui vertical segment">
+      <div :class="['ui', 'centered', 'active', 'inline', 'loader']"></div>
+    </div>
+    <template v-if="object">
+      <section :class="['ui', 'head', 'vertical', 'stripe', 'segment']" v-title="object.name">
+        <div class="ui stackable one column grid">
+          <div class="ui column">
+            <div class="segment-content">
+              <h2 class="ui header">
+                <i class="circular inverted hashtag icon"></i>
+                <div class="content">
+                  {{ object.name | truncate(100) }}
+                </div>
+              </h2>
+              <div class="header-buttons">
+
+                <div class="ui icon buttons">
+                  <router-link class="ui labeled icon button" :to="{name: 'library.tags.detail', params: {id: object.name }}">
+                    <i class="info icon"></i>
+                    <translate translate-context="Content/Moderation/Link/Verb">Open local profile</translate>&nbsp;
+                  </router-link>
+                  <div class="ui floating dropdown icon button" v-dropdown>
+                    <i class="dropdown icon"></i>
+                    <div class="menu">
+                      <a
+                        v-if="$store.state.auth.profile && $store.state.auth.profile.is_superuser"
+                        class="basic item"
+                        :href="$store.getters['instance/absoluteUrl'](`/api/admin/tags/tag/${object.id}`)"
+                        target="_blank" rel="noopener noreferrer">
+                        <i class="wrench icon"></i>
+                        <translate translate-context="Content/Moderation/Link/Verb">View in Django's admin</translate>&nbsp;
+                      </a>
+                    </div>
+                  </div>
+                </div>
+                <div class="ui buttons">
+                  <dangerous-button
+                    :class="['ui', {loading: isLoading}, 'basic button']"
+                    :action="remove">
+                    <translate translate-context="*/*/*/Verb">Delete</translate>
+                    <p slot="modal-header"><translate translate-context="Popup/Library/Title">Delete this tag?</translate></p>
+                    <div slot="modal-content">
+                      <p><translate translate-context="Content/Moderation/Paragraph">The tag will be removed and unlinked from any existing entity. This action is irreversible.</translate></p>
+                    </div>
+                    <p slot="modal-confirm"><translate translate-context="*/*/*/Verb">Delete</translate></p>
+                  </dangerous-button>
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </section>
+      <div class="ui vertical stripe segment">
+        <div class="ui stackable three column grid">
+          <div class="column">
+            <section>
+              <h3 class="ui header">
+                <i class="info icon"></i>
+                <div class="content">
+                  <translate translate-context="Content/Moderation/Title">Tag data</translate>
+                </div>
+              </h3>
+              <table class="ui very basic table">
+                <tbody>
+                  <tr>
+                    <td>
+                      <translate translate-context="*/*/*/Noun">Name</translate>
+                    </td>
+                    <td>
+                      {{ object.name }}
+                    </td>
+                  </tr>
+                </tbody>
+              </table>
+            </section>
+          </div>
+          <div class="column">
+            <section>
+              <h3 class="ui header">
+                <i class="feed icon"></i>
+                <div class="content">
+                  <translate translate-context="Content/Moderation/Title">Activity</translate>&nbsp;
+                  <span :data-tooltip="labels.statsWarning"><i class="question circle icon"></i></span>
+
+                </div>
+              </h3>
+              <div v-if="isLoadingStats" class="ui placeholder">
+                <div class="full line"></div>
+                <div class="short line"></div>
+                <div class="medium line"></div>
+                <div class="long line"></div>
+              </div>
+              <table v-else class="ui very basic table">
+                <tbody>
+                  <tr>
+                    <td>
+                      <translate translate-context="Content/Moderation/Table.Label/Short (Value is a date)">First seen</translate>
+                    </td>
+                    <td>
+                      <human-date :date="object.creation_date"></human-date>
+                    </td>
+                  </tr>
+                </tbody>
+              </table>
+            </section>
+          </div>
+          <div class="column">
+            <section>
+              <h3 class="ui header">
+                <i class="music icon"></i>
+                <div class="content">
+                  <translate translate-context="Content/Moderation/Title">Audio content</translate>&nbsp;
+                  <span :data-tooltip="labels.statsWarning"><i class="question circle icon"></i></span>
+
+                </div>
+              </h3>
+              <table class="ui very basic table">
+                <tbody>
+                  <tr>
+                    <td>
+                      <router-link :to="{name: 'manage.library.artists', query: {q: getQuery('tag', object.name) }}">
+                        <translate translate-context="*/*/*/Noun">Artists</translate>
+                      </router-link>
+                    </td>
+                    <td>
+                      {{ object.artists_count }}
+                    </td>
+                  </tr>
+                  <tr>
+                    <td>
+                      <router-link :to="{name: 'manage.library.albums', query: {q: getQuery('tag', object.name) }}">
+                        <translate translate-context="*/*/*">Albums</translate>
+                      </router-link>
+                    </td>
+                    <td>
+                      {{ object.albums_count }}
+                    </td>
+                  </tr>
+                  <tr>
+                    <td>
+                      <router-link :to="{name: 'manage.library.tracks', query: {q: getQuery('tag', object.name) }}">
+                        <translate translate-context="*/*/*">Tracks</translate>
+                      </router-link>
+                    </td>
+                    <td>
+                      {{ object.tracks_count }}
+                    </td>
+                  </tr>
+                </tbody>
+              </table>
+
+            </section>
+          </div>
+        </div>
+      </div>
+
+    </template>
+  </main>
+</template>
+
+<script>
+import axios from "axios"
+import logger from "@/logging"
+
+import FetchButton from "@/components/federation/FetchButton"
+
+export default {
+  props: ["id"],
+  components: {
+    FetchButton
+  },
+  data() {
+    return {
+      isLoading: true,
+      isLoadingStats: false,
+      object: null,
+      stats: null,
+    }
+  },
+  created() {
+    this.fetchData()
+  },
+  methods: {
+    fetchData() {
+      var self = this
+      this.isLoading = true
+      let url = `manage/tags/${this.id}/`
+      axios.get(url).then(response => {
+        self.object = response.data
+        self.isLoading = false
+      })
+    },
+    remove () {
+      var self = this
+      this.isLoading = true
+      let url = `manage/tags/${this.id}/`
+      axios.delete(url).then(response => {
+        self.$router.push({name: 'manage.library.tags'})
+      })
+    },
+    getQuery (field, value) {
+      return `${field}:"${value}"`
+    }
+  },
+  computed: {
+    labels() {
+      return {
+        statsWarning: this.$pgettext('Content/Moderation/Help text', 'Statistics are computed from known activity and content on your instance, and do not reflect general activity for this object'),
+      }
+    },
+  }
+}
+</script>
diff --git a/front/src/views/admin/library/TagsList.vue b/front/src/views/admin/library/TagsList.vue
new file mode 100644
index 0000000000000000000000000000000000000000..81e892a401bb03d8d8c78f49303a5fa56c958395
--- /dev/null
+++ b/front/src/views/admin/library/TagsList.vue
@@ -0,0 +1,29 @@
+<template>
+  <main v-title="labels.title">
+    <section class="ui vertical stripe segment">
+      <h2 class="ui header">{{ labels.title }}</h2>
+      <div class="ui hidden divider"></div>
+      <tags-table :update-url="true" :default-query="defaultQuery"></tags-table>
+    </section>
+  </main>
+</template>
+
+<script>
+import TagsTable from "@/components/manage/library/TagsTable"
+
+export default {
+  components: {
+    TagsTable
+  },
+  props: {
+    defaultQuery: {type: String, required: false},
+  },
+  computed: {
+    labels() {
+      return {
+        title: this.$pgettext('*/*/*/Noun', 'Tags')
+      }
+    }
+  }
+}
+</script>
diff --git a/front/src/views/admin/library/TrackDetail.vue b/front/src/views/admin/library/TrackDetail.vue
index 29cd29810ee619bf96be7ac499b6a5f6d3d5cbcb..152d3390bf76034319f3ff2802c1a4c8fd30b6a8 100644
--- a/front/src/views/admin/library/TrackDetail.vue
+++ b/front/src/views/admin/library/TrackDetail.vue
@@ -23,6 +23,12 @@
                   </div>
                 </div>
               </h2>
+
+              <template v-if="object.tags && object.tags.length > 0">
+                <tags-list :limit="5" detail-route="manage.library.tags.detail" :tags="object.tags"></tags-list>
+                <div class="ui hidden divider"></div>
+              </template>
+
               <div class="header-buttons">
 
                 <div class="ui icon buttons">
@@ -105,7 +111,7 @@
                   <tr>
                     <td>
                       <router-link :to="{name: 'manage.library.albums.detail', params: {id: object.album.id }}">
-                        <translate translate-context="*/*/*/Noun">Album</translate>
+                        <translate translate-context="*/*/*">Album</translate>
                       </router-link>
                     </td>
                     <td>
@@ -135,7 +141,7 @@
                   </tr>
                   <tr>
                     <td>
-                      <translate translate-context="*/*/*/Noun">Position</translate>
+                      <translate translate-context="*/*/*/Short, Noun">Position</translate>
                     </td>
                     <td>
                       {{ object.position }}
@@ -151,7 +157,7 @@
                   </tr>
                   <tr v-if="object.copyright">
                     <td>
-                      <translate translate-context="Content/Track/Table.Label/Noun">Copyright</translate>
+                      <translate translate-context="Content/Track/*/Noun">Copyright</translate>
                     </td>
                     <td>{{ object.copyright }}</td>
                   </tr>
@@ -229,6 +235,16 @@
                       {{ stats.playlists }}
                     </td>
                   </tr>
+                  <tr>
+                    <td>
+                      <router-link :to="{name: 'manage.moderation.reports.list', query: {q: getQuery('target', `track:${object.id}`) }}">
+                        <translate translate-context="Content/Moderation/Table.Label/Noun">Linked reports</translate>
+                      </router-link>
+                    </td>
+                    <td>
+                      {{ stats.reports }}
+                    </td>
+                  </tr>
                   <tr>
                     <td>
                       <router-link :to="{name: 'manage.library.edits', query: {q: getQuery('target', 'track ' + object.id)}}">
@@ -292,7 +308,7 @@
                   <tr>
                     <td>
                       <router-link :to="{name: 'manage.library.uploads', query: {q: getQuery('track_id', object.id) }}">
-                        <translate translate-context="Content/Moderation/Table.Label/Noun">Uploads</translate>
+                        <translate translate-context="*/*/*">Uploads</translate>
                       </router-link>
                     </td>
                     <td>
@@ -315,12 +331,14 @@
 import axios from "axios"
 import logger from "@/logging"
 import FetchButton from "@/components/federation/FetchButton"
+import TagsList from "@/components/tags/List"
 
 
 export default {
   props: ["id"],
   components: {
-    FetchButton
+    FetchButton,
+    TagsList
   },
   data() {
     return {
diff --git a/front/src/views/admin/library/UploadDetail.vue b/front/src/views/admin/library/UploadDetail.vue
index 4dbd83793c5b52374d174417265eae7b5cabcf4b..cf2ddc0a98670ff69afa89cd895222b7d2514a1b 100644
--- a/front/src/views/admin/library/UploadDetail.vue
+++ b/front/src/views/admin/library/UploadDetail.vue
@@ -142,7 +142,7 @@
                   <tr>
                     <td>
                       <router-link :to="{name: 'manage.library.libraries.detail', params: {id: object.library.uuid }}">
-                        <translate translate-context="*/*/*">Library</translate>
+                        <translate translate-context="*/*/*/Noun">Library</translate>
                       </router-link>
                     </td>
                     <td>
@@ -197,7 +197,7 @@
                   <tr v-if="object.track">
                     <td>
                       <router-link :to="{name: 'manage.library.tracks.detail', params: {id: object.track.id }}">
-                        <translate translate-context="*/*/*">Track</translate>
+                        <translate translate-context="*/*/*/Noun">Track</translate>
                       </router-link>
                     </td>
                     <td>
diff --git a/front/src/views/admin/moderation/AccountsDetail.vue b/front/src/views/admin/moderation/AccountsDetail.vue
index 09b5bb8244faf339fd08a20e31068bf7e4a8cdb7..e9fd06bea997af10f48bfe27e55be0813dd53fcf 100644
--- a/front/src/views/admin/moderation/AccountsDetail.vue
+++ b/front/src/views/admin/moderation/AccountsDetail.vue
@@ -154,17 +154,17 @@
                           @change="updateUser('is_active')"
                           v-model="object.user.is_active" type="checkbox">
                         <label>
-                          <translate v-if="object.user.is_active" key="1" translate-context="*/*/*">Enabled</translate>
-                          <translate v-else key="2" translate-context="*/*/*">Disabled</translate>
+                          <translate v-if="object.user.is_active" key="1" translate-context="*/*/*/State of feature">Enabled</translate>
+                          <translate v-else key="2" translate-context="*/*/*/State of feature">Disabled</translate>
                         </label>
                       </div>
-                      <translate v-else-if="object.user.is_active" key="1" translate-context="*/*/*">Enabled</translate>
-                      <translate v-else key="2" translate-context="*/*/*">Disabled</translate>
+                      <translate v-else-if="object.user.is_active" key="1" translate-context="*/*/*/State of feature">Enabled</translate>
+                      <translate v-else key="2" translate-context="*/*/*/State of feature">Disabled</translate>
                     </td>
                   </tr>
                   <tr v-if="object.user">
                     <td>
-                      <translate translate-context="Content/Admin/Table.Label/Noun">Permissions</translate>
+                      <translate translate-context="Content/*/*/Noun">Permissions</translate>
                     </td>
                     <td>
                       <select
@@ -174,11 +174,12 @@
                         class="ui search selection dropdown">
                         <option v-for="p in allPermissions" :value="p.code">{{ p.label }}</option>
                       </select>
+                      <action-feedback :is-loading="updating.permissions"></action-feedback>
                     </td>
                   </tr>
                   <tr>
                     <td>
-                      <translate translate-context="Content/Moderation/Table.Label/Noun">Type</translate>
+                      <translate translate-context="Content/Track/Table.Label/Noun">Type</translate>
                     </td>
                     <td>
                       {{ object.type }}
@@ -263,6 +264,16 @@
                       {{ stats.emitted_library_follows}}
                     </td>
                   </tr>
+                  <tr>
+                    <td>
+                      <router-link :to="{name: 'manage.moderation.reports.list', query: {q: getQuery('target', `account:${object.full_username}`) }}">
+                        <translate translate-context="Content/Moderation/Table.Label/Noun">Linked reports</translate>
+                      </router-link>
+                    </td>
+                    <td>
+                      {{ stats.reports }}
+                    </td>
+                  </tr>
                 </tbody>
               </table>
             </section>
@@ -296,7 +307,7 @@
                   </tr>
                   <tr v-if="object.user">
                     <td>
-                      <translate translate-context="Content/Moderation/Table.Label/Noun" >Upload quota</translate>
+                      <translate translate-context="*/*/*" >Upload quota</translate>
                       <span :data-tooltip="labels.uploadQuota"><i class="question circle icon"></i></span>
                     </td>
                     <td>
@@ -308,8 +319,9 @@
                           name="quota"
                           type="number" />
                         <div class="ui basic label">
-                          <translate translate-context="Content/*/*/Unit">MB</translate>
+                          <translate translate-context="Content/*/*/Unit">MB</translate>&#32;
                         </div>
+                        <action-feedback class="ui basic label" size="tiny" :is-loading="updating.upload_quota"></action-feedback>
                       </div>
                     </td>
                   </tr>
@@ -335,7 +347,7 @@
                   <tr>
                     <td>
                       <router-link :to="{name: 'manage.library.uploads', query: {q: getQuery('account', object.full_username) }}">
-                        <translate translate-context="Content/Moderation/Table.Label/Noun">Uploads</translate>
+                        <translate translate-context="*/*/*">Uploads</translate>
                       </router-link>
                     </td>
                     <td>
@@ -360,7 +372,7 @@
                   </tr>
                   <tr>
                     <td>
-                      <translate translate-context="*/*/*/Noun">Tracks</translate>
+                      <translate translate-context="*/*/*">Tracks</translate>
                     </td>
                     <td>
                       {{ stats.tracks }}
@@ -403,6 +415,10 @@ export default {
       stats: null,
       showPolicyForm: false,
       permissions: [],
+      updating: {
+        permissions: false,
+        upload_quota: false,
+      }
     }
   },
   created() {
@@ -457,6 +473,8 @@ export default {
       if (toNull && !newValue) {
         newValue = null
       }
+      let self = this
+      this.updating[attr] = true
       let params = {}
       if (attr === "permissions") {
         params["permissions"] = {}
@@ -471,12 +489,14 @@ export default {
           logger.default.info(
             `${attr} was updated succcessfully to ${newValue}`
           )
+          self.updating[attr] = false
         },
         error => {
           logger.default.error(
             `Error while setting ${attr} to ${newValue}`,
             error
           )
+          self.updating[attr] = false
         }
       )
     },
@@ -495,7 +515,7 @@ export default {
       return [
         {
           code: "library",
-          label: this.$pgettext('*/*/*', "Library")
+          label: this.$pgettext('*/*/*/Noun', "Library")
         },
         {
           code: "moderation",
diff --git a/front/src/views/admin/moderation/Base.vue b/front/src/views/admin/moderation/Base.vue
index 564debf79ae8f7dcc42abe94e073511de237f1ac..04753cd364ffb9b14e68c93c8a72f6e8deecacc8 100644
--- a/front/src/views/admin/moderation/Base.vue
+++ b/front/src/views/admin/moderation/Base.vue
@@ -1,6 +1,9 @@
 <template>
   <div class="main pusher"  v-title="labels.moderation">
     <nav class="ui secondary pointing menu" role="navigation" :aria-label="labels.secondaryMenu">
+      <router-link
+        class="ui item"
+        :to="{name: 'manage.moderation.reports.list'}"><translate translate-context="*/Moderation/*/Noun">Reports</translate></router-link>
       <router-link
         class="ui item"
         :to="{name: 'manage.moderation.domains.list'}"><translate translate-context="*/Moderation/*/Noun">Domains</translate></router-link>
@@ -9,12 +12,31 @@
         :to="{name: 'manage.moderation.accounts.list'}"><translate translate-context="*/Moderation/Title">Accounts</translate></router-link>
 
     </nav>
-    <router-view :key="$route.fullPath"></router-view>
+    <router-view :allow-list-enabled="allowListEnabled" :key="$route.fullPath"></router-view>
   </div>
 </template>
 
 <script>
+import _ from '@/lodash'
+import axios from 'axios'
+
 export default {
+  data () {
+    return {
+      allowListEnabled: false
+    }
+  },
+  created () {
+    this.fetchNodeInfo()
+  },
+  methods: {
+    fetchNodeInfo () {
+      let self = this
+      axios.get('instance/nodeinfo/2.0/').then(response => {
+        self.allowListEnabled = _.get(response.data, 'metadata.allowList.enabled', false)
+      })
+    },
+  },
   computed: {
     labels() {
       return {
@@ -22,6 +44,6 @@ export default {
         secondaryMenu: this.$pgettext('Menu/*/Hidden text', "Secondary menu")
       }
     }
-  }
+  },
 }
 </script>
diff --git a/front/src/views/admin/moderation/DomainsDetail.vue b/front/src/views/admin/moderation/DomainsDetail.vue
index 575b15f93ca2bbf696b9672cbb38e7535c8b09ab..65434f2eca1eaa81b35fa78f590f5845cd639fc7 100644
--- a/front/src/views/admin/moderation/DomainsDetail.vue
+++ b/front/src/views/admin/moderation/DomainsDetail.vue
@@ -20,6 +20,34 @@
                   </div>
                 </div>
               </h2>
+              <div class="header-buttons">
+                <div class="ui icon buttons">
+                  <a
+                    v-if="$store.state.auth.profile.is_superuser"
+                    class="ui labeled icon button"
+                    :href="$store.getters['instance/absoluteUrl'](`/api/admin/federation/domain/${object.name}`)"
+                    target="_blank" rel="noopener noreferrer">
+                    <i class="wrench icon"></i>
+                    <translate translate-context="Content/Moderation/Link/Verb">View in Django's admin</translate>&nbsp;
+                  </a>
+                </div>
+                <div v-if="allowListEnabled" class="ui icon buttons">
+                  <button
+                    v-if="object.allowed"
+                    @click.prevent="setAllowList(false)"
+                    :class="['ui', 'labeled', {loading: isLoadingAllowList}, 'icon', 'button']">
+                    <i class="x icon"></i>
+                    <translate translate-context="Content/Moderation/Action/Verb">Remove from allow-list</translate>
+                  </button>
+                  <button
+                    v-else
+                    @click.prevent="setAllowList(true)"
+                    :class="['ui', 'labeled', {loading: isLoadingAllowList}, 'icon', 'button']">
+                    <i class="check icon"></i>
+                    <translate translate-context="Content/Moderation/Action/Verb">Add to allow-list</translate>
+                  </button>
+                </div>
+              </div>
             </div>
           </div>
           <div class="ui column">
@@ -74,6 +102,15 @@
               </h3>
               <table class="ui very basic table">
                 <tbody>
+                  <tr v-if="allowListEnabled">
+                    <td>
+                      <translate translate-context="Content/Moderation/*/Adjective">Is present on allow-list</translate>
+                    </td>
+                    <td>
+                      <translate v-if="object.allowed" translate-context="*/*/*">Yes</translate>
+                      <translate v-else translate-context="*/*/*">No</translate>
+                    </td>
+                  </tr>
                   <tr>
                     <td>
                       <translate translate-context="Content/*/Table.Label">Last checked</translate>
@@ -113,7 +150,7 @@
                   <template v-if="object.nodeinfo && object.nodeinfo.status === 'error'">
                     <tr>
                       <td>
-                        <translate translate-context="Content/Moderation/Table.Label (Value is Error message)">Status</translate>
+                        <translate translate-context="*/*/*">Status</translate>
                       </td>
                       <td>
                         <translate translate-context="Content/Moderation/Table">Error while fetching node info</translate>&nbsp;
@@ -242,7 +279,7 @@
                   <tr>
                     <td>
                       <router-link :to="{name: 'manage.library.uploads', query: {q: getQuery('domain', object.name) }}">
-                        <translate translate-context="Content/Moderation/Table.Label/Noun">Uploads</translate>
+                        <translate translate-context="*/*/*">Uploads</translate>
                       </router-link>
                     </td>
                     <td>
@@ -272,7 +309,7 @@
                   <tr>
                     <td>
                       <router-link :to="{name: 'manage.library.tracks', query: {q: getQuery('domain', object.name) }}">
-                        <translate translate-context="*/*/*/Noun">Tracks</translate>
+                        <translate translate-context="*/*/*">Tracks</translate>
                       </router-link>
                     </td>
                     <td>
@@ -300,7 +337,7 @@ import InstancePolicyForm from "@/components/manage/moderation/InstancePolicyFor
 import InstancePolicyCard from "@/components/manage/moderation/InstancePolicyCard"
 
 export default {
-  props: ["id"],
+  props: ["id", "allowListEnabled"],
   components: {
     InstancePolicyForm,
     InstancePolicyCard,
@@ -311,6 +348,7 @@ export default {
       isLoading: true,
       isLoadingStats: false,
       isLoadingPolicy: false,
+      isLoadingAllowList: false,
       policy: null,
       object: null,
       stats: null,
@@ -353,6 +391,15 @@ export default {
         self.isLoadingPolicy = false
       })
     },
+    setAllowList(value) {
+      var self = this
+      this.isLoadingAllowList = true
+      let url = `manage/federation/domains/${this.id}/`
+      axios.patch(url, {allowed: value}).then(response => {
+        self.object = response.data
+        self.isLoadingAllowList = false
+      })
+    },
     refreshNodeInfo (data) {
       this.object.nodeinfo = data
       this.object.nodeinfo_fetch_date = new Date()
diff --git a/front/src/views/admin/moderation/DomainsList.vue b/front/src/views/admin/moderation/DomainsList.vue
index 3ce8e6afc44a2e653bc5ecb88a6837c3d80181d9..b42d4b228640898c8c138b8088bce6f56995f9ea 100644
--- a/front/src/views/admin/moderation/DomainsList.vue
+++ b/front/src/views/admin/moderation/DomainsList.vue
@@ -14,6 +14,10 @@
             <label for="domain"><translate translate-context="Content/Moderation/Form.Label/Verb">Add a domain</translate></label>
             <input type="text" name="domain" id="domain" v-model="domainName">
           </div>
+          <div class="field" v-if="allowListEnabled">
+            <input type="checkbox" name="allowed" id="allowed" v-model="domainAllowed">
+            <label for="allowed"><translate translate-context="Content/Moderation/Action/Verb">Add to allow-list</translate></label>
+          </div>
           <div class="field">
             <button :class="['ui', {'loading': isCreating}, 'green', 'button']" type="submit" :disabled="isCreating">
               <label for="domain"><translate translate-context="Content/Moderation/Button/Verb">Add</translate></label>
@@ -22,7 +26,7 @@
         </div>
       </form>
       <div class="ui clearing hidden divider"></div>
-      <domains-table></domains-table>
+      <domains-table :allow-list-enabled="allowListEnabled"></domains-table>
     </section>
   </main>
 </template>
@@ -32,12 +36,14 @@ import axios from 'axios'
 
 import DomainsTable from "@/components/manage/moderation/DomainsTable"
 export default {
+  props: ['allowListEnabled'],
   components: {
     DomainsTable
   },
   data () {
     return {
       domainName: '',
+      domainAllowed: this.allowListEnabled ? true : null,
       isCreating: false,
       errors: []
     }
@@ -54,7 +60,7 @@ export default {
       let self = this
       this.isCreating = true
       this.errors = []
-      axios.post('manage/federation/domains/', {name: this.domainName}).then((response) => {
+      axios.post('manage/federation/domains/', {name: this.domainName, allowed: this.domainAllowed}).then((response) => {
         this.isCreating = false
         this.$router.push({
           name: "manage.moderation.domains.detail",
diff --git a/front/src/views/admin/moderation/ReportDetail.vue b/front/src/views/admin/moderation/ReportDetail.vue
new file mode 100644
index 0000000000000000000000000000000000000000..ab2bd3e42440f313146c7d303b521a42aea71866
--- /dev/null
+++ b/front/src/views/admin/moderation/ReportDetail.vue
@@ -0,0 +1,46 @@
+<template>
+  <main>
+    <div v-if="isLoading" class="ui vertical segment">
+      <div :class="['ui', 'centered', 'active', 'inline', 'loader']"></div>
+    </div>
+    <template v-if="object">
+
+      <div class="ui vertical stripe segment">
+        <report-card :obj="object"></report-card>
+      </div>
+    </template>
+  </main>
+</template>
+
+<script>
+import axios from "axios"
+
+import ReportCard from "@/components/manage/moderation/ReportCard"
+
+export default {
+  props: ["id"],
+  components: {
+    ReportCard,
+  },
+  data() {
+    return {
+      isLoading: true,
+      object: null,
+    }
+  },
+  created() {
+    this.fetchData()
+  },
+  methods: {
+    fetchData() {
+      var self = this
+      this.isLoading = true
+      let url = `manage/moderation/reports/${this.id}/`
+      axios.get(url).then(response => {
+        self.object = response.data
+        self.isLoading = false
+      })
+    },
+  },
+}
+</script>
diff --git a/front/src/views/admin/moderation/ReportsList.vue b/front/src/views/admin/moderation/ReportsList.vue
new file mode 100644
index 0000000000000000000000000000000000000000..dc6c17f614b6675458d5dc2cf9ba9d916ef3f8ac
--- /dev/null
+++ b/front/src/views/admin/moderation/ReportsList.vue
@@ -0,0 +1,233 @@
+<template>
+  <main v-title="labels.accounts">
+    <section class="ui vertical stripe segment">
+      <h2 class="ui header"><translate translate-context="*/Moderation/*/Noun">Reports</translate></h2>
+      <div class="ui hidden divider"></div>
+      <div class="ui inline form">
+        <div class="fields">
+          <div class="ui field">
+            <label><translate translate-context="Content/Search/Input.Label/Noun">Search</translate></label>
+            <form @submit.prevent="search.query = $refs.search.value">
+              <input name="search" ref="search" type="text" :value="search.query" :placeholder="labels.searchPlaceholder" />
+            </form>
+          </div>
+          <div class="field">
+            <label><translate translate-context="*/*/*">Status</translate></label>
+            <select class="ui dropdown" @change="addSearchToken('resolved', $event.target.value)" :value="getTokenValue('resolved', '')">
+              <option value="">
+                <translate translate-context="Content/*/Dropdown">All</translate>
+              </option>
+              <option value="yes">
+                <translate translate-context="Content/*/*/Short">Resolved</translate>
+              </option>
+              <option value="no">
+                <translate translate-context="Content/*/*/Short">Unresolved</translate>
+              </option>
+            </select>
+          </div>
+          <report-category-dropdown
+            class="field"
+            @input="addSearchToken('category', $event)"
+            :all="true"
+            :label="true"
+            :value="getTokenValue('category', '')"></report-category-dropdown>
+          <div class="field">
+            <label><translate translate-context="Content/Search/Dropdown.Label/Noun">Ordering</translate></label>
+            <select class="ui dropdown" v-model="ordering">
+              <option v-for="option in orderingOptions" :value="option[0]">
+                {{ sharedLabels.filters[option[1]] }}
+              </option>
+            </select>
+          </div>
+          <div class="field">
+            <label><translate translate-context="Content/Search/Dropdown.Label/Noun">Order</translate></label>
+            <select class="ui dropdown" v-model="orderingDirection">
+              <option value="+"><translate translate-context="Content/Search/Dropdown">Ascending</translate></option>
+              <option value="-"><translate translate-context="Content/Search/Dropdown">Descending</translate></option>
+            </select>
+          </div>
+        </div>
+      </div>
+      <div v-if="isLoading" class="ui active inverted dimmer">
+        <div class="ui loader"></div>
+      </div>
+      <div v-else-if="!result || result.count === 0">
+        <empty-state @refresh="fetchData()" :refresh="true"></empty-state>
+      </div>
+      <div v-else-if="mode === 'card'">
+        <report-card @handled="fetchData" :obj="obj" v-for="obj in result.results" :key="obj.uuid" />
+      </div>
+      <div class="ui center aligned basic segment">
+        <pagination
+          v-if="result && result.count > paginateBy"
+          @page-changed="selectPage"
+          :current="page"
+          :paginate-by="paginateBy"
+          :total="result.count"
+          ></pagination>
+      </div>
+    </section>
+  </main>
+</template>
+
+<script>
+
+
+import axios from 'axios'
+import _ from '@/lodash'
+import time from '@/utils/time'
+import Pagination from '@/components/Pagination'
+import OrderingMixin from '@/components/mixins/Ordering'
+import TranslationsMixin from '@/components/mixins/Translations'
+import ReportCard from '@/components/manage/moderation/ReportCard'
+import ReportCategoryDropdown from '@/components/moderation/ReportCategoryDropdown'
+import {normalizeQuery, parseTokens} from '@/search'
+import SmartSearchMixin from '@/components/mixins/SmartSearch'
+
+
+export default {
+  mixins: [OrderingMixin, TranslationsMixin, SmartSearchMixin],
+  components: {
+    Pagination,
+    ReportCard,
+    ReportCategoryDropdown,
+  },
+  props: {
+    mode: {default: 'card'},
+  },
+  data () {
+    let defaultOrdering = this.getOrderingFromString(this.defaultOrdering || '-creation_date')
+    return {
+      time,
+      isLoading: false,
+      result: null,
+      page: 1,
+      paginateBy: 25,
+      search: {
+        query: this.defaultQuery,
+        tokens: parseTokens(normalizeQuery(this.defaultQuery))
+      },
+      orderingDirection: defaultOrdering.direction || '+',
+      ordering: defaultOrdering.field,
+      orderingOptions: [
+        ['creation_date', 'creation_date'],
+        ['applied_date', 'applied_date'],
+      ],
+      targets: {
+        track: {}
+      }
+    }
+  },
+  created () {
+    this.fetchData()
+  },
+  methods: {
+    fetchData () {
+      let params = _.merge({
+        'page': this.page,
+        'page_size': this.paginateBy,
+        'q': this.search.query,
+        'ordering': this.getOrderingAsString()
+      }, this.filters)
+      let self = this
+      self.isLoading = true
+      this.result = null
+      axios.get('manage/moderation/reports/', {params: params}).then((response) => {
+        self.result = response.data
+        self.isLoading = false
+        if (self.search.query === 'resolved:no') {
+          console.log('Refreshing sidebar notifications')
+          self.$store.commit('ui/incrementNotifications', {type: 'pendingReviewReports', value: response.data.count})
+        }
+      }, error => {
+        self.isLoading = false
+        self.errors = error.backendErrors
+      })
+    },
+    fetchTargets () {
+      // we request target data via the API so we can display previous state
+      // additionnal data next to the edit card
+      let self = this
+      let typesAndIds = {
+        track: {
+          url: 'tracks/',
+          ids: [],
+        }
+      }
+      this.result.results.forEach((m) => {
+        if (!m.target || !typesAndIds[m.target.type]) {
+          return
+        }
+        typesAndIds[m.target.type]['ids'].push(m.target.id)
+      })
+      Object.keys(typesAndIds).forEach((k) => {
+        let config = typesAndIds[k]
+        if (config.ids.length === 0) {
+          return
+        }
+        axios.get(config.url, {params: {id: _.uniq(config.ids), hidden: 'null'}}).then((response) => {
+          response.data.results.forEach((e) => {
+            self.$set(self.targets[k], e.id, {
+              payload: e,
+              currentState: edits.getCurrentStateForObj(e, edits.getConfigs.bind(self)()[k])
+            })
+          })
+        }, error => {
+          self.errors = error.backendErrors
+        })
+      })
+    },
+    selectPage: function (page) {
+      this.page = page
+    },
+    handle (type, id, value) {
+      if (type === 'delete') {
+        this.exclude.push(id)
+      }
+
+      this.result.results.forEach((e) => {
+        if (e.uuid === id) {
+          e.is_approved = value
+        }
+      })
+    },
+    getCurrentState (target) {
+      if (!target) {
+        return {}
+      }
+      if (this.targets[target.type] && this.targets[target.type][String(target.id)]) {
+        return this.targets[target.type][String(target.id)].currentState
+      }
+      return {}
+    }
+  },
+  computed: {
+    labels () {
+      return {
+        searchPlaceholder: this.$pgettext('Content/Search/Input.Placeholder', 'Search by account, summary, domain…'),
+        reports: this.$pgettext('*/Moderation/*/Noun', "Reports"),
+      }
+    },
+  },
+  watch: {
+    search (newValue) {
+      this.page = 1
+      this.fetchData()
+    },
+    page () {
+      this.fetchData()
+    },
+    ordering () {
+      this.fetchData()
+    },
+    orderingDirection () {
+      this.fetchData()
+    }
+  }
+}
+
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style scoped>
+</style>
diff --git a/front/src/views/auth/Login.vue b/front/src/views/auth/Login.vue
new file mode 100644
index 0000000000000000000000000000000000000000..22285bc9cc7952428e6b5d3354d7da766e8f4212
--- /dev/null
+++ b/front/src/views/auth/Login.vue
@@ -0,0 +1,40 @@
+<template>
+  <main class="main pusher" v-title="labels.title">
+    <section class="ui vertical stripe segment">
+      <div class="ui small text container">
+        <h2><translate translate-context="Content/Login/Title/Verb">Log in to your Funkwhale account</translate></h2>
+        <login-form :next="next"></login-form>
+      </div>
+    </section>
+  </main>
+</template>
+
+<script>
+import LoginForm from "@/components/auth/LoginForm"
+
+export default {
+  props: {
+    next: { type: String, default: "/library" }
+  },
+  components: {
+    LoginForm
+  },
+  created () {
+    if (this.$store.state.auth.authenticated) {
+      this.$router.push(this.next)
+    }
+  },
+  computed: {
+    labels() {
+      let title = this.$pgettext('Head/Login/Title', "Log In")
+      return {
+        title
+      }
+    }
+  }
+}
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style scoped>
+</style>
diff --git a/front/src/views/auth/PasswordReset.vue b/front/src/views/auth/PasswordReset.vue
index b1aab6f855699955419f0cd29df95fb6d18fbce9..b60a411463f9f0aad72af77ece8760f6eb3b7c8b 100644
--- a/front/src/views/auth/PasswordReset.vue
+++ b/front/src/views/auth/PasswordReset.vue
@@ -51,7 +51,7 @@ export default {
   computed: {
     labels() {
       let reset = this.$pgettext('*/Login/*/Verb', "Reset your password")
-      let placeholder = this.$pgettext('Content/Signup/Input.Placeholder', "Enter the email address binded to your account"
+      let placeholder = this.$pgettext('Content/Signup/Input.Placeholder', "Enter the email address linked to your account"
       )
       return {
         reset,
diff --git a/front/src/views/auth/PasswordResetConfirm.vue b/front/src/views/auth/PasswordResetConfirm.vue
index c2a7c677818059cccd84cc2986fdb732a18cdea3..025458ba1f8e51021d24ff46f8baacee1e8433ac 100644
--- a/front/src/views/auth/PasswordResetConfirm.vue
+++ b/front/src/views/auth/PasswordResetConfirm.vue
@@ -22,7 +22,7 @@
               <translate translate-context="Content/Signup/Button.Label">Update your password</translate></button>
           </template>
           <template v-else>
-            <p><translate translate-context="Content/Signup/Paragraph">If the email address provided in the previous step is valid and binded to a user account, you should receive an email with reset instructions in the next couple of minutes.</translate></p>
+            <p><translate translate-context="Content/Signup/Paragraph">If the email address provided in the previous step is valid and linked to a user account, you should receive an email with reset instructions in the next couple of minutes.</translate></p>
           </template>
         </form>
         <div v-else class="ui positive message">
diff --git a/front/src/views/auth/Signup.vue b/front/src/views/auth/Signup.vue
new file mode 100644
index 0000000000000000000000000000000000000000..37b918c72bd4c08b3949c3698f74055211152008
--- /dev/null
+++ b/front/src/views/auth/Signup.vue
@@ -0,0 +1,48 @@
+<template>
+  <main class="main pusher" v-title="labels.title">
+    <section class="ui vertical stripe segment">
+      <div class="ui small text container">
+        <h2><translate translate-context="Content/Signup/Title">Create a funkwhale account</translate></h2>
+        <signup-form :default-invitation="defaultInvitation" :next="next"></signup-form>
+      </div>
+    </section>
+  </main>
+</template>
+
+<script>
+
+import SignupForm from "@/components/auth/SignupForm"
+
+export default {
+  props: {
+    defaultInvitation: { type: String, required: false, default: null },
+    next: { type: String, default: "/" }
+  },
+  components: {
+    SignupForm
+  },
+  data() {
+    return {
+      username: "",
+      email: "",
+      password: "",
+      isLoadingInstanceSetting: true,
+      errors: [],
+      isLoading: false,
+      invitation: this.defaultInvitation
+    }
+  },
+  computed: {
+    labels() {
+      let title = this.$pgettext("*/Signup/Title", "Sign Up")
+      return {
+        title
+      }
+    }
+  },
+}
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style scoped>
+</style>
diff --git a/front/src/views/content/Base.vue b/front/src/views/content/Base.vue
index 4e755ee1a8790c1311d7c0a542f44582758f56e2..bd593be55ec186570cb648b9d40725767b1b7070 100644
--- a/front/src/views/content/Base.vue
+++ b/front/src/views/content/Base.vue
@@ -6,7 +6,7 @@
         :to="{name: 'content.libraries.index'}"><translate translate-context="*/*/*/Noun">Libraries</translate></router-link>
       <router-link
         class="ui item"
-        :to="{name: 'content.libraries.files'}"><translate translate-context="*/*/*/Noun">Tracks</translate></router-link>
+        :to="{name: 'content.libraries.files'}"><translate translate-context="*/*/*">Tracks</translate></router-link>
     </nav>
     <router-view :key="$route.fullPath"></router-view>
   </main>
diff --git a/front/src/views/content/Home.vue b/front/src/views/content/Home.vue
index de8a86e256e8b3d9d4bd092c58abb9afc6131895..fb8128b9f29af3c111e99df3493065e1844888d5 100644
--- a/front/src/views/content/Home.vue
+++ b/front/src/views/content/Home.vue
@@ -15,7 +15,7 @@
       </div>
       <div class="ui segment">
         <h2><translate translate-context="Content/Library/Title/Verb">Follow remote libraries</translate></h2>
-        <p><translate translate-context="Content/Library/Paragraph">You can follow libraries from other users to get access to new music. Public libraries can be followed immediatly, while following a private library requires approval from its owner.</translate></p>
+        <p><translate translate-context="Content/Library/Paragraph">You can follow libraries from other users to get access to new music. Public libraries can be followed immediately, while following a private library requires approval from its owner.</translate></p>
         <router-link :to="{name: 'content.remote.index'}" class="ui green button">
           <translate translate-context="Content/Library/Button.Label/Verb">Get started</translate>
         </router-link>
diff --git a/front/src/views/content/libraries/Detail.vue b/front/src/views/content/libraries/Detail.vue
index d879ab71c7731ae9e1aae82f0f3fc2197675267c..c936baa8256ba2deb248465e324dfafd6bbec2aa 100644
--- a/front/src/views/content/libraries/Detail.vue
+++ b/front/src/views/content/libraries/Detail.vue
@@ -6,7 +6,7 @@
     <detail-area v-else :library="library">
       <div class="ui top attached tabular menu">
         <a :class="['item', {active: currentTab === 'follows'}]" @click="currentTab = 'follows'"><translate translate-context="Content/Federation/*/Noun">Followers</translate></a>
-        <a :class="['item', {active: currentTab === 'tracks'}]" @click="currentTab = 'tracks'"><translate translate-context="*/*/*/Noun">Tracks</translate></a>
+        <a :class="['item', {active: currentTab === 'tracks'}]" @click="currentTab = 'tracks'"><translate translate-context="*/*/*">Tracks</translate></a>
         <a :class="['item', {active: currentTab === 'edit'}]" @click="currentTab = 'edit'"><translate translate-context="Content/*/Button.Label/Verb">Edit</translate></a>
       </div>
       <div :class="['ui', 'bottom', 'attached', 'segment', {hidden: currentTab != 'follows'}]">
@@ -26,7 +26,7 @@
             <tr>
               <th><translate translate-context="Content/Library/Table.Label">User</translate></th>
               <th><translate translate-context="Content/Library/Table.Label">Date</translate></th>
-              <th><translate translate-context="Content/Library.Federation/Table.Label (Value is Approved/Rejected)">Status</translate></th>
+              <th><translate translate-context="*/*/*">Status</translate></th>
               <th><translate translate-context="Content/Library/Table.Label">Action</translate></th>
             </tr>
           </thead>
diff --git a/front/src/views/content/libraries/FilesTable.vue b/front/src/views/content/libraries/FilesTable.vue
index 9ea4634adcb6360dbc5e8c454405b6deeac11527..4e67eb180a286ce913d8a92495baa873778c8a21 100644
--- a/front/src/views/content/libraries/FilesTable.vue
+++ b/front/src/views/content/libraries/FilesTable.vue
@@ -9,7 +9,7 @@
           </form>
         </div>
         <div class="field">
-          <label><translate translate-context="Content/Library/*/Noun">Import status</translate></label>
+          <label><translate translate-context="Content/*/*/Noun">Import status</translate></label>
           <select class="ui dropdown" @change="addSearchToken('status', $event.target.value)" :value="getTokenValue('status', '')">
             <option value=""><translate translate-context="Content/*/Dropdown">All</translate></option>
             <option value="pending"><translate translate-context="Content/Library/*/Short">Pending</translate></option>
@@ -53,13 +53,13 @@
         @refresh="fetchData"
         :filters="actionFilters">
         <template slot="header-cells">
-          <th><translate translate-context="Content/Track/*/Noun">Title</translate></th>
+          <th><translate translate-context="*/*/*/Noun">Title</translate></th>
           <th><translate translate-context="*/*/*/Noun">Artist</translate></th>
           <th><translate translate-context="*/*/*">Album</translate></th>
           <th><translate translate-context="*/*/*/Noun">Upload date</translate></th>
-          <th><translate translate-context="Content/Library/*/Noun">Import status</translate></th>
+          <th><translate translate-context="Content/*/*/Noun">Import status</translate></th>
           <th><translate translate-context="Content/*/*">Duration</translate></th>
-          <th><translate translate-context="Content/Library/*/in MB">Size</translate></th>
+          <th><translate translate-context="Content/*/*/Noun">Size</translate></th>
         </template>
         <template slot="row-cells" slot-scope="scope">
           <template v-if="scope.obj.track">
diff --git a/front/src/views/content/libraries/Form.vue b/front/src/views/content/libraries/Form.vue
index 93530df41b875cf80c61883eaad6389b92dbc8c0..48c4f8bc37c7e04710250577db50864c54939634 100644
--- a/front/src/views/content/libraries/Form.vue
+++ b/front/src/views/content/libraries/Form.vue
@@ -12,11 +12,11 @@
       <input name="name" v-model="currentName" :placeholder="labels.namePlaceholder" required maxlength="100">
     </div>
     <div class="field">
-      <label><translate translate-context="Content/*/Input.Label/Noun">Description</translate></label>
+      <label><translate translate-context="*/*/*/Noun">Description</translate></label>
       <textarea v-model="currentDescription" :placeholder="labels.descriptionPlaceholder" maxlength="2000"></textarea>
     </div>
     <div class="field">
-      <label><translate translate-context="Content/Library/Dropdown.Label">Visibility</translate></label>
+      <label><translate translate-context="*/*/*">Visibility</translate></label>
       <p><translate translate-context="Content/Library/Paragraph">You are able to share your library with other people, regardless of its visibility.</translate></p>
       <select class="ui dropdown" v-model="currentVisibilityLevel">
         <option :value="c" v-for="c in ['me', 'instance', 'everyone']">{{ sharedLabels.fields.privacy_level.choices[c] }}</option>
diff --git a/front/src/views/content/libraries/Quota.vue b/front/src/views/content/libraries/Quota.vue
index 687a825cf78e1d89b5770c98a7cfced695cead7e..f043b54b67d187abb629593666f99ddd9199cbe5 100644
--- a/front/src/views/content/libraries/Quota.vue
+++ b/front/src/views/content/libraries/Quota.vue
@@ -4,7 +4,7 @@
     <div v-if="isLoading" :class="['ui', {'active': isLoading}, 'inverted', 'dimmer']">
       <div class="ui text loader"><translate translate-context="Content/Library/Paragraph">Loading usage data…</translate></div>
     </div>
-    <div :class="['ui', {'success': progress < 60}, {'yellow': progress >= 60 && progress < 96}, {'error': progress >= 95}, 'progress']">
+    <div :class="['ui', {'success': progress < 60}, {'yellow': progress >= 60 && progress < 96}, {'error': progress >= 95}, 'progress']" data-percent=progress>
       <div class="bar" :style="{width: `${progress}%`}">
         <div class="progress">{{ progress }}%</div>
       </div>
@@ -154,4 +154,4 @@ export default {
     }
   }
 }
-</script>
+</script>
\ No newline at end of file
diff --git a/front/src/views/content/remote/Card.vue b/front/src/views/content/remote/Card.vue
index b78f7f220af0b02438d87740e3ab3c1d2d7981be..0fbb94c0cc76d7d6f10e5221ea6e4aa29797e3a6 100644
--- a/front/src/views/content/remote/Card.vue
+++ b/front/src/views/content/remote/Card.vue
@@ -3,17 +3,30 @@
     <div class="content">
       <div class="header">
         {{ library.name }}
+        <div class="ui right floated dropdown">
+          <i class="ellipsis vertical grey large icon nomargin"></i>
+          <div class="menu">
+            <div
+              role="button"
+              v-for="obj in getReportableObjs({library, account: library.actor})"
+              :key="obj.target.type + obj.target.id"
+              class="item basic"
+              @click.stop.prevent="$store.dispatch('moderation/report', obj.target)">
+              <i class="share icon" /> {{ obj.label }}
+            </div>
+          </div>
+        </div>
         <span
           v-if="library.privacy_level === 'me'"
           class="right floated"
           :data-tooltip="labels.tooltips.me">
-          <i class="small lock icon"></i>
+          <i class="small lock grey icon"></i>
         </span>
         <span
           v-else-if="library.privacy_level === 'everyone'"
           class="right floated"
           :data-tooltip="labels.tooltips.everyone">
-          <i class="small globe icon"></i>
+          <i class="small globe grey icon"></i>
         </span>
       </div>
       <div class="meta">
@@ -120,8 +133,11 @@
 </template>
 <script>
 import axios from 'axios'
+import ReportMixin from '@/components/mixins/Report'
+import jQuery from 'jquery'
 
 export default {
+  mixins: [ReportMixin],
   props: {
     library: {type: Object, required: true},
     displayFollow: {type: Boolean, default: true},
@@ -136,6 +152,18 @@ export default {
       latestScan: this.library.latest_scan,
     }
   },
+  mounted () {
+    let self = this
+    jQuery(this.$el).find('.ui.dropdown').dropdown({
+      selectOnKeydown: false,
+      action: function (text, value, $el) {
+        // used ton ensure focusing the dropdown and clicking via keyboard
+        // works as expected
+        self.$refs[$el.data('ref')].click()
+        jQuery(self.$el).find('.ui.dropdown').dropdown('hide')
+      }
+    })
+  },
   computed: {
     labels () {
       let me = this.$pgettext('Content/Library/Card.Help text', 'This library is private and your approval from its owner is needed to access its content')
diff --git a/front/src/views/playlists/Detail.vue b/front/src/views/playlists/Detail.vue
index 6fe7a4c8a1874d588b30363209aaf62ed4fdfcb0..3b6b9000bdd5295d5e7a5f548c537074c627ea96 100644
--- a/front/src/views/playlists/Detail.vue
+++ b/front/src/views/playlists/Detail.vue
@@ -31,6 +31,14 @@
           <template v-if="edit"><translate translate-context="Content/Playlist/Button.Label/Verb">End edition</translate></template>
           <template v-else><translate translate-context="Content/*/Button.Label/Verb">Edit</translate></template>
         </button>
+        <button
+          class="ui icon labeled button"
+          v-if="playlist.privacy_level === 'everyone' && playlist.is_playable"
+          @click="showEmbedModal = !showEmbedModal">
+          <i class="code icon"></i>
+          <translate translate-context="Content/*/Button.Label/Verb">Embed</translate>
+        </button>
+
         <dangerous-button v-if="$store.state.auth.profile && playlist.user.id === $store.state.auth.profile.id" class="labeled icon" :action="deletePlaylist">
           <i class="trash icon"></i> <translate translate-context="*/*/*/Verb">Delete</translate>
           <p slot="modal-header" v-translate="{playlist: playlist.name}" translate-context="Popup/Playlist/Title/Call to action" :translate-params="{playlist: playlist.name}">
@@ -40,6 +48,23 @@
           <div slot="modal-confirm"><translate translate-context="Popup/Playlist/Button.Label/Verb">Delete playlist</translate></div>
         </dangerous-button>
       </div>
+      <modal v-if="playlist.privacy_level === 'everyone' && playlist.is_playable" :show.sync="showEmbedModal">
+        <div class="header">
+          <translate translate-context="Popup/Album/Title/Verb">Embed this playlist on your website</translate>
+        </div>
+        <div class="content">
+          <div class="description">
+            <embed-wizard type="playlist" :id="playlist.id" />
+
+          </div>
+        </div>
+        <div class="actions">
+          <div class="ui deny button">
+            <translate translate-context="*/*/Button.Label/Verb">Cancel</translate>
+          </div>
+        </div>
+      </modal>
+
     </section>
     <section class="ui vertical stripe segment">
       <template v-if="edit">
@@ -49,7 +74,7 @@
           :playlist="playlist" :playlist-tracks="playlistTracks"></playlist-editor>
       </template>
       <template v-else>
-        <h2><translate translate-context="*/*/*/Noun">Tracks</translate></h2>
+        <h2><translate translate-context="*/*/*">Tracks</translate></h2>
         <track-table :display-position="true" :tracks="tracks"></track-table>
       </template>
     </section>
@@ -61,6 +86,8 @@ import TrackTable from "@/components/audio/track/Table"
 import RadioButton from "@/components/radios/Button"
 import PlayButton from "@/components/audio/PlayButton"
 import PlaylistEditor from "@/components/playlists/Editor"
+import EmbedWizard from "@/components/audio/EmbedWizard"
+import Modal from '@/components/semantic/Modal'
 
 export default {
   props: {
@@ -71,7 +98,9 @@ export default {
     PlaylistEditor,
     TrackTable,
     PlayButton,
-    RadioButton
+    RadioButton,
+    Modal,
+    EmbedWizard,
   },
   data: function() {
     return {
@@ -79,7 +108,8 @@ export default {
       isLoading: false,
       playlist: null,
       tracks: [],
-      playlistTracks: []
+      playlistTracks: [],
+      showEmbedModal: false,
     }
   },
   created: function() {
@@ -88,7 +118,7 @@ export default {
   computed: {
     labels() {
       return {
-        playlist: this.$pgettext('Head/Playlist/Title', 'Playlist')
+        playlist: this.$pgettext('*/*/*', 'Playlist')
       }
     }
   },
diff --git a/front/src/views/playlists/List.vue b/front/src/views/playlists/List.vue
index 160b7b83c3785ee44bb3b449c97ef99bc54a756b..1ff56b5d5492b8692d5ce63be73447fb1312a148 100644
--- a/front/src/views/playlists/List.vue
+++ b/front/src/views/playlists/List.vue
@@ -113,14 +113,17 @@ export default {
   },
   methods: {
     updateQueryString: _.debounce(function() {
-      this.$router.replace({
-        query: {
+      history.pushState(
+        {},
+        null,
+        this.$route.path + '?' + new URLSearchParams(
+          {
           query: this.query,
           page: this.page,
           paginateBy: this.paginateBy,
           ordering: this.getOrderingAsString()
-        }
-      })
+        }).toString()
+      )
     }, 250),
     fetchData: _.debounce(function() {
       var self = this
diff --git a/front/src/views/radios/Detail.vue b/front/src/views/radios/Detail.vue
index d15aaf366a73477d445212ef2210c5d6d4f94a3f..355ed8e84a2333649405363b6fbf311128147554 100644
--- a/front/src/views/radios/Detail.vue
+++ b/front/src/views/radios/Detail.vue
@@ -32,7 +32,7 @@
       </div>
     </section>
     <section class="ui vertical stripe segment">
-      <h2><translate translate-context="*/*/*/Noun">Tracks</translate></h2>
+      <h2><translate translate-context="*/*/*">Tracks</translate></h2>
       <track-table :tracks="tracks"></track-table>
       <div class="ui center aligned basic segment">
         <pagination
diff --git a/front/vue.config.js b/front/vue.config.js
index 4b1d9f5d400f87cb11c67dca41bfe6685244eb1c..ffaf1cede62e5d616899ef1cac6eef791f6f908b 100644
--- a/front/vue.config.js
+++ b/front/vue.config.js
@@ -1,7 +1,9 @@
 
 const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
 const webpack = require('webpack');
-
+const PurgecssPlugin = require('purgecss-webpack-plugin')
+const glob = require('glob-all')
+const path = require('path')
 let plugins = [
   // do not include moment.js locales since it's quite heavy
   new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
@@ -9,8 +11,20 @@ let plugins = [
 if (process.env.BUNDLE_ANALYZE === '1') {
   plugins.push(new BundleAnalyzerPlugin())
 }
+plugins.push(
+  new PurgecssPlugin({
+    paths: glob.sync([
+      path.join(__dirname, './public/index.html'),
+      path.join(__dirname, './public/embed.html'),
+      path.join(__dirname, './**/*.vue'),
+      path.join(__dirname, './src/**/*.js')
+    ]),
+    whitelist: ['scale']
+  }),
+)
 module.exports = {
   baseUrl: process.env.BASE_URL || '/front/',
+  productionSourceMap: false,
   pages: {
     embed: {
       entry: 'src/embed.js',
@@ -30,11 +44,7 @@ module.exports = {
   },
   configureWebpack: {
     plugins: plugins,
-    resolve: {
-      alias: {
-        'vue$': 'vue/dist/vue.esm.js'
-      }
-    }
+    devtool: false
   },
   devServer: {
     disableHostCheck: true,
diff --git a/front/yarn.lock b/front/yarn.lock
index 5d20f4ac1bea08bd5ab6eb8cbd1fe27de24d78b4..1bca8dd16527c6c7611daa617b8fbf8de73a4873 100644
--- a/front/yarn.lock
+++ b/front/yarn.lock
@@ -10,33 +10,33 @@
     "@babel/highlight" "^7.0.0"
 
 "@babel/core@^7.0.0":
-  version "7.2.2"
-  resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.2.2.tgz#07adba6dde27bb5ad8d8672f15fde3e08184a687"
-  integrity sha512-59vB0RWt09cAct5EIe58+NzGP4TFSD3Bz//2/ELy3ZeTeKF6VTD1AXlH8BGGbCX0PuobZBsIzO7IAI9PH67eKw==
+  version "7.4.5"
+  resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.5.tgz#081f97e8ffca65a9b4b0fdc7e274e703f000c06a"
+  integrity sha512-OvjIh6aqXtlsA8ujtGKfC7LYWksYSX8yQcM8Ay3LuvVeQ63lcOKgoZWVqcpFwkd29aYU9rVx7jxhfhiEDV9MZA==
   dependencies:
     "@babel/code-frame" "^7.0.0"
-    "@babel/generator" "^7.2.2"
-    "@babel/helpers" "^7.2.0"
-    "@babel/parser" "^7.2.2"
-    "@babel/template" "^7.2.2"
-    "@babel/traverse" "^7.2.2"
-    "@babel/types" "^7.2.2"
+    "@babel/generator" "^7.4.4"
+    "@babel/helpers" "^7.4.4"
+    "@babel/parser" "^7.4.5"
+    "@babel/template" "^7.4.4"
+    "@babel/traverse" "^7.4.5"
+    "@babel/types" "^7.4.4"
     convert-source-map "^1.1.0"
     debug "^4.1.0"
     json5 "^2.1.0"
-    lodash "^4.17.10"
+    lodash "^4.17.11"
     resolve "^1.3.2"
     semver "^5.4.1"
     source-map "^0.5.0"
 
-"@babel/generator@^7.2.2":
-  version "7.2.2"
-  resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.2.2.tgz#18c816c70962640eab42fe8cae5f3947a5c65ccc"
-  integrity sha512-I4o675J/iS8k+P38dvJ3IBGqObLXyQLTxtrR4u9cSUJOURvafeEWb/pFMOTwtNrmq73mJzyF6ueTbO1BtN0Zeg==
+"@babel/generator@^7.4.4":
+  version "7.4.4"
+  resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.4.4.tgz#174a215eb843fc392c7edcaabeaa873de6e8f041"
+  integrity sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ==
   dependencies:
-    "@babel/types" "^7.2.2"
+    "@babel/types" "^7.4.4"
     jsesc "^2.5.1"
-    lodash "^4.17.10"
+    lodash "^4.17.11"
     source-map "^0.5.0"
     trim-right "^1.0.1"
 
@@ -55,34 +55,35 @@
     "@babel/helper-explode-assignable-expression" "^7.1.0"
     "@babel/types" "^7.0.0"
 
-"@babel/helper-call-delegate@^7.1.0":
-  version "7.1.0"
-  resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.1.0.tgz#6a957f105f37755e8645343d3038a22e1449cc4a"
-  integrity sha512-YEtYZrw3GUK6emQHKthltKNZwszBcHK58Ygcis+gVUrF4/FmTVr5CCqQNSfmvg2y+YDEANyYoaLz/SHsnusCwQ==
+"@babel/helper-call-delegate@^7.4.4":
+  version "7.4.4"
+  resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz#87c1f8ca19ad552a736a7a27b1c1fcf8b1ff1f43"
+  integrity sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ==
   dependencies:
-    "@babel/helper-hoist-variables" "^7.0.0"
-    "@babel/traverse" "^7.1.0"
-    "@babel/types" "^7.0.0"
+    "@babel/helper-hoist-variables" "^7.4.4"
+    "@babel/traverse" "^7.4.4"
+    "@babel/types" "^7.4.4"
 
-"@babel/helper-create-class-features-plugin@^7.2.1", "@babel/helper-create-class-features-plugin@^7.2.2":
-  version "7.2.2"
-  resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.2.2.tgz#aac79552e41c94716a804d371e943f20171df0c5"
-  integrity sha512-Q4qZE5wS3NWpOS6UV9yhIS/NmSyf2keF0E0IwDvx8WxTheVopVIY6BSQ/0vz72OTTruz0cOA2yIUh6Kdg3qprA==
+"@babel/helper-create-class-features-plugin@^7.4.4":
+  version "7.4.4"
+  resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.4.4.tgz#fc3d690af6554cc9efc607364a82d48f58736dba"
+  integrity sha512-UbBHIa2qeAGgyiNR9RszVF7bUHEdgS4JAUNT8SiqrAN6YJVxlOxeLr5pBzb5kan302dejJ9nla4RyKcR1XT6XA==
   dependencies:
     "@babel/helper-function-name" "^7.1.0"
     "@babel/helper-member-expression-to-functions" "^7.0.0"
     "@babel/helper-optimise-call-expression" "^7.0.0"
     "@babel/helper-plugin-utils" "^7.0.0"
-    "@babel/helper-replace-supers" "^7.1.0"
+    "@babel/helper-replace-supers" "^7.4.4"
+    "@babel/helper-split-export-declaration" "^7.4.4"
 
-"@babel/helper-define-map@^7.1.0":
-  version "7.1.0"
-  resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz#3b74caec329b3c80c116290887c0dd9ae468c20c"
-  integrity sha512-yPPcW8dc3gZLN+U1mhYV91QU3n5uTbx7DUdf8NnPbjS0RMwBuHi9Xt2MUgppmNz7CJxTBWsGczTiEp1CSOTPRg==
+"@babel/helper-define-map@^7.4.4":
+  version "7.4.4"
+  resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.4.4.tgz#6969d1f570b46bdc900d1eba8e5d59c48ba2c12a"
+  integrity sha512-IX3Ln8gLhZpSuqHJSnTNBWGDE9kdkTEWl21A/K7PQ00tseBwbqCHTvNLHSBd9M0R5rER4h5Rsvj9vw0R5SieBg==
   dependencies:
     "@babel/helper-function-name" "^7.1.0"
-    "@babel/types" "^7.0.0"
-    lodash "^4.17.10"
+    "@babel/types" "^7.4.4"
+    lodash "^4.17.11"
 
 "@babel/helper-explode-assignable-expression@^7.1.0":
   version "7.1.0"
@@ -108,12 +109,12 @@
   dependencies:
     "@babel/types" "^7.0.0"
 
-"@babel/helper-hoist-variables@^7.0.0":
-  version "7.0.0"
-  resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz#46adc4c5e758645ae7a45deb92bab0918c23bb88"
-  integrity sha512-Ggv5sldXUeSKsuzLkddtyhyHe2YantsxWKNi7A+7LeD12ExRDWTRk29JCXpaHPAbMaIPZSil7n+lq78WY2VY7w==
+"@babel/helper-hoist-variables@^7.4.4":
+  version "7.4.4"
+  resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz#0298b5f25c8c09c53102d52ac4a98f773eb2850a"
+  integrity sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w==
   dependencies:
-    "@babel/types" "^7.0.0"
+    "@babel/types" "^7.4.4"
 
 "@babel/helper-member-expression-to-functions@^7.0.0":
   version "7.0.0"
@@ -129,17 +130,17 @@
   dependencies:
     "@babel/types" "^7.0.0"
 
-"@babel/helper-module-transforms@^7.1.0":
-  version "7.2.2"
-  resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.2.2.tgz#ab2f8e8d231409f8370c883d20c335190284b963"
-  integrity sha512-YRD7I6Wsv+IHuTPkAmAS4HhY0dkPobgLftHp0cRGZSdrRvmZY8rFvae/GVu3bD00qscuvK3WPHB3YdNpBXUqrA==
+"@babel/helper-module-transforms@^7.1.0", "@babel/helper-module-transforms@^7.4.4":
+  version "7.4.4"
+  resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.4.4.tgz#96115ea42a2f139e619e98ed46df6019b94414b8"
+  integrity sha512-3Z1yp8TVQf+B4ynN7WoHPKS8EkdTbgAEy0nU0rs/1Kw4pDgmvYH3rz3aI11KgxKCba2cn7N+tqzV1mY2HMN96w==
   dependencies:
     "@babel/helper-module-imports" "^7.0.0"
     "@babel/helper-simple-access" "^7.1.0"
-    "@babel/helper-split-export-declaration" "^7.0.0"
-    "@babel/template" "^7.2.2"
-    "@babel/types" "^7.2.2"
-    lodash "^4.17.10"
+    "@babel/helper-split-export-declaration" "^7.4.4"
+    "@babel/template" "^7.4.4"
+    "@babel/types" "^7.4.4"
+    lodash "^4.17.11"
 
 "@babel/helper-optimise-call-expression@^7.0.0":
   version "7.0.0"
@@ -153,12 +154,12 @@
   resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250"
   integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==
 
-"@babel/helper-regex@^7.0.0":
-  version "7.0.0"
-  resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.0.0.tgz#2c1718923b57f9bbe64705ffe5640ac64d9bdb27"
-  integrity sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg==
+"@babel/helper-regex@^7.0.0", "@babel/helper-regex@^7.4.4":
+  version "7.4.4"
+  resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.4.4.tgz#a47e02bc91fb259d2e6727c2a30013e3ac13c4a2"
+  integrity sha512-Y5nuB/kESmR3tKjU8Nkn1wMGEx1tjJX076HBMeL3XLQCu6vA/YRzuTW0bbb+qRnXvQGn+d6Rx953yffl8vEy7Q==
   dependencies:
-    lodash "^4.17.10"
+    lodash "^4.17.11"
 
 "@babel/helper-remap-async-to-generator@^7.1.0":
   version "7.1.0"
@@ -171,15 +172,15 @@
     "@babel/traverse" "^7.1.0"
     "@babel/types" "^7.0.0"
 
-"@babel/helper-replace-supers@^7.1.0":
-  version "7.1.0"
-  resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.1.0.tgz#5fc31de522ec0ef0899dc9b3e7cf6a5dd655f362"
-  integrity sha512-BvcDWYZRWVuDeXTYZWxekQNO5D4kO55aArwZOTFXw6rlLQA8ZaDicJR1sO47h+HrnCiDFiww0fSPV0d713KBGQ==
+"@babel/helper-replace-supers@^7.1.0", "@babel/helper-replace-supers@^7.4.4":
+  version "7.4.4"
+  resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.4.4.tgz#aee41783ebe4f2d3ab3ae775e1cc6f1a90cefa27"
+  integrity sha512-04xGEnd+s01nY1l15EuMS1rfKktNF+1CkKmHoErDppjAAZL+IUBZpzT748x262HF7fibaQPhbvWUl5HeSt1EXg==
   dependencies:
     "@babel/helper-member-expression-to-functions" "^7.0.0"
     "@babel/helper-optimise-call-expression" "^7.0.0"
-    "@babel/traverse" "^7.1.0"
-    "@babel/types" "^7.0.0"
+    "@babel/traverse" "^7.4.4"
+    "@babel/types" "^7.4.4"
 
 "@babel/helper-simple-access@^7.1.0":
   version "7.1.0"
@@ -189,12 +190,12 @@
     "@babel/template" "^7.1.0"
     "@babel/types" "^7.0.0"
 
-"@babel/helper-split-export-declaration@^7.0.0":
-  version "7.0.0"
-  resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz#3aae285c0311c2ab095d997b8c9a94cad547d813"
-  integrity sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==
+"@babel/helper-split-export-declaration@^7.4.4":
+  version "7.4.4"
+  resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677"
+  integrity sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==
   dependencies:
-    "@babel/types" "^7.0.0"
+    "@babel/types" "^7.4.4"
 
 "@babel/helper-wrap-function@^7.1.0":
   version "7.2.0"
@@ -206,14 +207,14 @@
     "@babel/traverse" "^7.1.0"
     "@babel/types" "^7.2.0"
 
-"@babel/helpers@^7.2.0":
-  version "7.2.0"
-  resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.2.0.tgz#8335f3140f3144270dc63c4732a4f8b0a50b7a21"
-  integrity sha512-Fr07N+ea0dMcMN8nFpuK6dUIT7/ivt9yKQdEEnjVS83tG2pHwPi03gYmk/tyuwONnZ+sY+GFFPlWGgCtW1hF9A==
+"@babel/helpers@^7.4.4":
+  version "7.4.4"
+  resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.4.4.tgz#868b0ef59c1dd4e78744562d5ce1b59c89f2f2a5"
+  integrity sha512-igczbR/0SeuPR8RFfC7tGrbdTbFL3QTvH6D+Z6zNxnTe//GyqmtHmDkzrqDmyZ3eSwPqB/LhyKoU5DXsp+Vp2A==
   dependencies:
-    "@babel/template" "^7.1.2"
-    "@babel/traverse" "^7.1.5"
-    "@babel/types" "^7.2.0"
+    "@babel/template" "^7.4.4"
+    "@babel/traverse" "^7.4.4"
+    "@babel/types" "^7.4.4"
 
 "@babel/highlight@^7.0.0":
   version "7.0.0"
@@ -224,10 +225,10 @@
     esutils "^2.0.2"
     js-tokens "^4.0.0"
 
-"@babel/parser@^7.0.0", "@babel/parser@^7.2.2":
-  version "7.2.2"
-  resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.2.2.tgz#37ebdbc88a2e1ebc6c8dd3d35ea9436e3e39e477"
-  integrity sha512-UNTmQ5cSLDeBGBl+s7JeowkqIHgmFAGBnLDdIzFmUNSuS5JF0XBcN59jsh/vJO/YjfsBqMxhMjoFGmNExmf0FA==
+"@babel/parser@^7.0.0", "@babel/parser@^7.4.4", "@babel/parser@^7.4.5":
+  version "7.4.5"
+  resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.4.5.tgz#04af8d5d5a2b044a2a1bffacc1e5e6673544e872"
+  integrity sha512-9mUqkL1FF5T7f0WDFfAoDdiMVPWsdD1gZYzSnaXsxUCUqzuch/8of9G3VUSNiZmMBoRxT3neyVsqeiL/ZPcjew==
 
 "@babel/plugin-proposal-async-generator-functions@^7.2.0":
   version "7.2.0"
@@ -239,19 +240,19 @@
     "@babel/plugin-syntax-async-generators" "^7.2.0"
 
 "@babel/plugin-proposal-class-properties@^7.0.0":
-  version "7.2.1"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.2.1.tgz#c734a53e0a1ec40fe5c22ee5069d26da3b187d05"
-  integrity sha512-/4FKFChkQ2Jgb8lBDsvFX496YTi7UWTetVgS8oJUpX1e/DlaoeEK57At27ug8Hu2zI2g8bzkJ+8k9qrHZRPGPA==
+  version "7.4.4"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.4.4.tgz#93a6486eed86d53452ab9bab35e368e9461198ce"
+  integrity sha512-WjKTI8g8d5w1Bc9zgwSz2nfrsNQsXcCf9J9cdCvrJV6RF56yztwm4TmJC0MgJ9tvwO9gUA/mcYe89bLdGfiXFg==
   dependencies:
-    "@babel/helper-create-class-features-plugin" "^7.2.1"
+    "@babel/helper-create-class-features-plugin" "^7.4.4"
     "@babel/helper-plugin-utils" "^7.0.0"
 
 "@babel/plugin-proposal-decorators@^7.1.0":
-  version "7.2.2"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.2.2.tgz#e7ce762732760542a5268a49bd19251f06dccd08"
-  integrity sha512-ylkKcbbS5IUocCti0gk762LMiMODWmlwRzyj1OCbPa83vSBlTKLmeBo9KMhoNpydibPcVwrP5rYJd0cKTVu7hw==
+  version "7.4.4"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.4.4.tgz#de9b2a1a8ab0196f378e2a82f10b6e2a36f21cc0"
+  integrity sha512-z7MpQz3XC/iQJWXH9y+MaWcLPNSMY9RQSthrLzak8R8hCj0fuyNk+Dzi9kfNe/JxxlWQ2g7wkABbgWjW36MTcw==
   dependencies:
-    "@babel/helper-create-class-features-plugin" "^7.2.2"
+    "@babel/helper-create-class-features-plugin" "^7.4.4"
     "@babel/helper-plugin-utils" "^7.0.0"
     "@babel/plugin-syntax-decorators" "^7.2.0"
 
@@ -263,10 +264,10 @@
     "@babel/helper-plugin-utils" "^7.0.0"
     "@babel/plugin-syntax-json-strings" "^7.2.0"
 
-"@babel/plugin-proposal-object-rest-spread@^7.2.0":
-  version "7.2.0"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.2.0.tgz#88f5fec3e7ad019014c97f7ee3c992f0adbf7fb8"
-  integrity sha512-1L5mWLSvR76XYUQJXkd/EEQgjq8HHRP6lQuZTTg0VA4tTGPpGemmCdAfQIz1rzEuWAm+ecP8PyyEm30jC1eQCg==
+"@babel/plugin-proposal-object-rest-spread@^7.3.4":
+  version "7.4.4"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.4.tgz#1ef173fcf24b3e2df92a678f027673b55e7e3005"
+  integrity sha512-dMBG6cSPBbHeEBdFXeQ2QLc5gUpg4Vkaz8octD4aoW/ISO+jBOcsuxYL7bsb5WSu8RLP6boxrBIALEHgoHtO9g==
   dependencies:
     "@babel/helper-plugin-utils" "^7.0.0"
     "@babel/plugin-syntax-object-rest-spread" "^7.2.0"
@@ -280,13 +281,13 @@
     "@babel/plugin-syntax-optional-catch-binding" "^7.2.0"
 
 "@babel/plugin-proposal-unicode-property-regex@^7.2.0":
-  version "7.2.0"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.2.0.tgz#abe7281fe46c95ddc143a65e5358647792039520"
-  integrity sha512-LvRVYb7kikuOtIoUeWTkOxQEV1kYvL5B6U3iWEGCzPNRus1MzJweFqORTj+0jkxozkTSYNJozPOddxmqdqsRpw==
+  version "7.4.4"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz#501ffd9826c0b91da22690720722ac7cb1ca9c78"
+  integrity sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA==
   dependencies:
     "@babel/helper-plugin-utils" "^7.0.0"
-    "@babel/helper-regex" "^7.0.0"
-    regexpu-core "^4.2.0"
+    "@babel/helper-regex" "^7.4.4"
+    regexpu-core "^4.5.4"
 
 "@babel/plugin-syntax-async-generators@^7.2.0":
   version "7.2.0"
@@ -316,7 +317,7 @@
   dependencies:
     "@babel/helper-plugin-utils" "^7.0.0"
 
-"@babel/plugin-syntax-jsx@^7.0.0":
+"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.2.0":
   version "7.2.0"
   resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz#0b85a3b4bc7cdf4cc4b8bf236335b907ca22e7c7"
   integrity sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw==
@@ -344,10 +345,10 @@
   dependencies:
     "@babel/helper-plugin-utils" "^7.0.0"
 
-"@babel/plugin-transform-async-to-generator@^7.2.0":
-  version "7.2.0"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.2.0.tgz#68b8a438663e88519e65b776f8938f3445b1a2ff"
-  integrity sha512-CEHzg4g5UraReozI9D4fblBYABs7IM6UerAVG7EJVrTLC5keh00aEuLUT+O40+mJCEzaXkYfTCUKIyeDfMOFFQ==
+"@babel/plugin-transform-async-to-generator@^7.3.4":
+  version "7.4.4"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.4.tgz#a3f1d01f2f21cadab20b33a82133116f14fb5894"
+  integrity sha512-YiqW2Li8TXmzgbXw+STsSqPBPFnGviiaSp6CYOq55X8GQ2SGVLrXB6pNid8HkqkZAzOH6knbai3snhP7v0fNwA==
   dependencies:
     "@babel/helper-module-imports" "^7.0.0"
     "@babel/helper-plugin-utils" "^7.0.0"
@@ -360,26 +361,26 @@
   dependencies:
     "@babel/helper-plugin-utils" "^7.0.0"
 
-"@babel/plugin-transform-block-scoping@^7.2.0":
-  version "7.2.0"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.2.0.tgz#f17c49d91eedbcdf5dd50597d16f5f2f770132d4"
-  integrity sha512-vDTgf19ZEV6mx35yiPJe4fS02mPQUUcBNwWQSZFXSzTSbsJFQvHt7DqyS3LK8oOWALFOsJ+8bbqBgkirZteD5Q==
+"@babel/plugin-transform-block-scoping@^7.3.4":
+  version "7.4.4"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.4.tgz#c13279fabf6b916661531841a23c4b7dae29646d"
+  integrity sha512-jkTUyWZcTrwxu5DD4rWz6rDB5Cjdmgz6z7M7RLXOJyCUkFBawssDGcGh8M/0FTSB87avyJI1HsTwUXp9nKA1PA==
   dependencies:
     "@babel/helper-plugin-utils" "^7.0.0"
-    lodash "^4.17.10"
+    lodash "^4.17.11"
 
-"@babel/plugin-transform-classes@^7.2.0":
-  version "7.2.2"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.2.2.tgz#6c90542f210ee975aa2aa8c8b5af7fa73a126953"
-  integrity sha512-gEZvgTy1VtcDOaQty1l10T3jQmJKlNVxLDCs+3rCVPr6nMkODLELxViq5X9l+rfxbie3XrfrMCYYY6eX3aOcOQ==
+"@babel/plugin-transform-classes@^7.3.4":
+  version "7.4.4"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.4.tgz#0ce4094cdafd709721076d3b9c38ad31ca715eb6"
+  integrity sha512-/e44eFLImEGIpL9qPxSRat13I5QNRgBLu2hOQJCF7VLy/otSM/sypV1+XaIw5+502RX/+6YaSAPmldk+nhHDPw==
   dependencies:
     "@babel/helper-annotate-as-pure" "^7.0.0"
-    "@babel/helper-define-map" "^7.1.0"
+    "@babel/helper-define-map" "^7.4.4"
     "@babel/helper-function-name" "^7.1.0"
     "@babel/helper-optimise-call-expression" "^7.0.0"
     "@babel/helper-plugin-utils" "^7.0.0"
-    "@babel/helper-replace-supers" "^7.1.0"
-    "@babel/helper-split-export-declaration" "^7.0.0"
+    "@babel/helper-replace-supers" "^7.4.4"
+    "@babel/helper-split-export-declaration" "^7.4.4"
     globals "^11.1.0"
 
 "@babel/plugin-transform-computed-properties@^7.2.0":
@@ -390,20 +391,20 @@
     "@babel/helper-plugin-utils" "^7.0.0"
 
 "@babel/plugin-transform-destructuring@^7.2.0":
-  version "7.2.0"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.2.0.tgz#e75269b4b7889ec3a332cd0d0c8cff8fed0dc6f3"
-  integrity sha512-coVO2Ayv7g0qdDbrNiadE4bU7lvCd9H539m2gMknyVjjMdwF/iCOM7R+E8PkntoqLkltO0rk+3axhpp/0v68VQ==
+  version "7.4.4"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.4.tgz#9d964717829cc9e4b601fc82a26a71a4d8faf20f"
+  integrity sha512-/aOx+nW0w8eHiEHm+BTERB2oJn5D127iye/SUQl7NjHy0lf+j7h4MKMMSOwdazGq9OxgiNADncE+SRJkCxjZpQ==
   dependencies:
     "@babel/helper-plugin-utils" "^7.0.0"
 
 "@babel/plugin-transform-dotall-regex@^7.2.0":
-  version "7.2.0"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.2.0.tgz#f0aabb93d120a8ac61e925ea0ba440812dbe0e49"
-  integrity sha512-sKxnyHfizweTgKZf7XsXu/CNupKhzijptfTM+bozonIuyVrLWVUvYjE2bhuSBML8VQeMxq4Mm63Q9qvcvUcciQ==
+  version "7.4.4"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz#361a148bc951444312c69446d76ed1ea8e4450c3"
+  integrity sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg==
   dependencies:
     "@babel/helper-plugin-utils" "^7.0.0"
-    "@babel/helper-regex" "^7.0.0"
-    regexpu-core "^4.1.3"
+    "@babel/helper-regex" "^7.4.4"
+    regexpu-core "^4.5.4"
 
 "@babel/plugin-transform-duplicate-keys@^7.2.0":
   version "7.2.0"
@@ -421,16 +422,16 @@
     "@babel/helper-plugin-utils" "^7.0.0"
 
 "@babel/plugin-transform-for-of@^7.2.0":
-  version "7.2.0"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.2.0.tgz#ab7468befa80f764bb03d3cb5eef8cc998e1cad9"
-  integrity sha512-Kz7Mt0SsV2tQk6jG5bBv5phVbkd0gd27SgYD4hH1aLMJRchM0dzHaXvrWhVZ+WxAlDoAKZ7Uy3jVTW2mKXQ1WQ==
+  version "7.4.4"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz#0267fc735e24c808ba173866c6c4d1440fc3c556"
+  integrity sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ==
   dependencies:
     "@babel/helper-plugin-utils" "^7.0.0"
 
 "@babel/plugin-transform-function-name@^7.2.0":
-  version "7.2.0"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.2.0.tgz#f7930362829ff99a3174c39f0afcc024ef59731a"
-  integrity sha512-kWgksow9lHdvBC2Z4mxTsvc7YdY7w/V6B2vy9cTIPtLEE9NhwoWivaxdNM/S37elu5bqlLP/qOY906LukO9lkQ==
+  version "7.4.4"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz#e1436116abb0610c2259094848754ac5230922ad"
+  integrity sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA==
   dependencies:
     "@babel/helper-function-name" "^7.1.0"
     "@babel/helper-plugin-utils" "^7.0.0"
@@ -451,20 +452,20 @@
     "@babel/helper-plugin-utils" "^7.0.0"
 
 "@babel/plugin-transform-modules-commonjs@^7.2.0":
-  version "7.2.0"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.2.0.tgz#c4f1933f5991d5145e9cfad1dfd848ea1727f404"
-  integrity sha512-V6y0uaUQrQPXUrmj+hgnks8va2L0zcZymeU7TtWEgdRLNkceafKXEduv7QzgQAE4lT+suwooG9dC7LFhdRAbVQ==
+  version "7.4.4"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.4.tgz#0bef4713d30f1d78c2e59b3d6db40e60192cac1e"
+  integrity sha512-4sfBOJt58sEo9a2BQXnZq+Q3ZTSAUXyK3E30o36BOGnJ+tvJ6YSxF0PG6kERvbeISgProodWuI9UVG3/FMY6iw==
   dependencies:
-    "@babel/helper-module-transforms" "^7.1.0"
+    "@babel/helper-module-transforms" "^7.4.4"
     "@babel/helper-plugin-utils" "^7.0.0"
     "@babel/helper-simple-access" "^7.1.0"
 
-"@babel/plugin-transform-modules-systemjs@^7.2.0":
-  version "7.2.0"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.2.0.tgz#912bfe9e5ff982924c81d0937c92d24994bb9068"
-  integrity sha512-aYJwpAhoK9a+1+O625WIjvMY11wkB/ok0WClVwmeo3mCjcNRjt+/8gHWrB5i+00mUju0gWsBkQnPpdvQ7PImmQ==
+"@babel/plugin-transform-modules-systemjs@^7.3.4":
+  version "7.4.4"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.4.tgz#dc83c5665b07d6c2a7b224c00ac63659ea36a405"
+  integrity sha512-MSiModfILQc3/oqnG7NrP1jHaSPryO6tA2kOMmAQApz5dayPxWiHqmq4sWH2xF5LcQK56LlbKByCd8Aah/OIkQ==
   dependencies:
-    "@babel/helper-hoist-variables" "^7.0.0"
+    "@babel/helper-hoist-variables" "^7.4.4"
     "@babel/helper-plugin-utils" "^7.0.0"
 
 "@babel/plugin-transform-modules-umd@^7.2.0":
@@ -475,10 +476,17 @@
     "@babel/helper-module-transforms" "^7.1.0"
     "@babel/helper-plugin-utils" "^7.0.0"
 
+"@babel/plugin-transform-named-capturing-groups-regex@^7.3.0":
+  version "7.4.5"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.5.tgz#9d269fd28a370258199b4294736813a60bbdd106"
+  integrity sha512-z7+2IsWafTBbjNsOxU/Iv5CvTJlr5w4+HGu1HovKYTtgJ362f7kBcQglkfmlspKKZ3bgrbSGvLfNx++ZJgCWsg==
+  dependencies:
+    regexp-tree "^0.1.6"
+
 "@babel/plugin-transform-new-target@^7.0.0":
-  version "7.0.0"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz#ae8fbd89517fa7892d20e6564e641e8770c3aa4a"
-  integrity sha512-yin069FYjah+LbqfGeTfzIBODex/e++Yfa0rH0fpfam9uTbuEeEOx5GLGr210ggOV77mVRNoeqSYqeuaqSzVSw==
+  version "7.4.4"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz#18d120438b0cc9ee95a47f2c72bc9768fbed60a5"
+  integrity sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA==
   dependencies:
     "@babel/helper-plugin-utils" "^7.0.0"
 
@@ -491,25 +499,25 @@
     "@babel/helper-replace-supers" "^7.1.0"
 
 "@babel/plugin-transform-parameters@^7.2.0":
-  version "7.2.0"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.2.0.tgz#0d5ad15dc805e2ea866df4dd6682bfe76d1408c2"
-  integrity sha512-kB9+hhUidIgUoBQ0MsxMewhzr8i60nMa2KgeJKQWYrqQpqcBYtnpR+JgkadZVZoaEZ/eKu9mclFaVwhRpLNSzA==
+  version "7.4.4"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz#7556cf03f318bd2719fe4c922d2d808be5571e16"
+  integrity sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw==
   dependencies:
-    "@babel/helper-call-delegate" "^7.1.0"
+    "@babel/helper-call-delegate" "^7.4.4"
     "@babel/helper-get-function-arity" "^7.0.0"
     "@babel/helper-plugin-utils" "^7.0.0"
 
-"@babel/plugin-transform-regenerator@^7.0.0":
-  version "7.0.0"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0.tgz#5b41686b4ed40bef874d7ed6a84bdd849c13e0c1"
-  integrity sha512-sj2qzsEx8KDVv1QuJc/dEfilkg3RRPvPYx/VnKLtItVQRWt1Wqf5eVCOLZm29CiGFfYYsA3VPjfizTCV0S0Dlw==
+"@babel/plugin-transform-regenerator@^7.3.4":
+  version "7.4.5"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz#629dc82512c55cee01341fb27bdfcb210354680f"
+  integrity sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA==
   dependencies:
-    regenerator-transform "^0.13.3"
+    regenerator-transform "^0.14.0"
 
-"@babel/plugin-transform-runtime@^7.0.0":
-  version "7.2.0"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.2.0.tgz#566bc43f7d0aedc880eaddbd29168d0f248966ea"
-  integrity sha512-jIgkljDdq4RYDnJyQsiWbdvGeei/0MOTtSHKO/rfbd/mXBxNpdlulMx49L0HQ4pug1fXannxoqCI+fYSle9eSw==
+"@babel/plugin-transform-runtime@^7.4.0":
+  version "7.4.4"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.4.4.tgz#a50f5d16e9c3a4ac18a1a9f9803c107c380bce08"
+  integrity sha512-aMVojEjPszvau3NRg+TIH14ynZLvPewH4xhlCW1w6A3rkxTS1m4uwzRclYR9oS+rl/dr+kT+pzbfHuAWP/lc7Q==
   dependencies:
     "@babel/helper-module-imports" "^7.0.0"
     "@babel/helper-plugin-utils" "^7.0.0"
@@ -539,9 +547,9 @@
     "@babel/helper-regex" "^7.0.0"
 
 "@babel/plugin-transform-template-literals@^7.2.0":
-  version "7.2.0"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.2.0.tgz#d87ed01b8eaac7a92473f608c97c089de2ba1e5b"
-  integrity sha512-FkPix00J9A/XWXv4VoKJBMeSkyY9x/TqIh76wzcdfl57RJJcf8CehQ08uwfhCDNtRQYtHQKBTwKZDEyjE13Lwg==
+  version "7.4.4"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz#9d28fea7bbce637fb7612a0750989d8321d4bcb0"
+  integrity sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g==
   dependencies:
     "@babel/helper-annotate-as-pure" "^7.0.0"
     "@babel/helper-plugin-utils" "^7.0.0"
@@ -554,34 +562,35 @@
     "@babel/helper-plugin-utils" "^7.0.0"
 
 "@babel/plugin-transform-unicode-regex@^7.2.0":
-  version "7.2.0"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.2.0.tgz#4eb8db16f972f8abb5062c161b8b115546ade08b"
-  integrity sha512-m48Y0lMhrbXEJnVUaYly29jRXbQ3ksxPrS1Tg8t+MHqzXhtBYAvI51euOBaoAlZLPHsieY9XPVMf80a5x0cPcA==
+  version "7.4.4"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz#ab4634bb4f14d36728bf5978322b35587787970f"
+  integrity sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA==
   dependencies:
     "@babel/helper-plugin-utils" "^7.0.0"
-    "@babel/helper-regex" "^7.0.0"
-    regexpu-core "^4.1.3"
+    "@babel/helper-regex" "^7.4.4"
+    regexpu-core "^4.5.4"
 
-"@babel/preset-env@^7.0.0":
-  version "7.2.0"
-  resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.2.0.tgz#a5030e7e4306af5a295dd5d7c78dc5464af3fee2"
-  integrity sha512-haGR38j5vOGVeBatrQPr3l0xHbs14505DcM57cbJy48kgMFvvHHoYEhHuRV+7vi559yyAUAVbTWzbK/B/pzJng==
+"@babel/preset-env@^7.0.0 < 7.4.0":
+  version "7.3.4"
+  resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.3.4.tgz#887cf38b6d23c82f19b5135298bdb160062e33e1"
+  integrity sha512-2mwqfYMK8weA0g0uBKOt4FE3iEodiHy9/CW0b+nWXcbL+pGzLx8ESYc+j9IIxr6LTDHWKgPm71i9smo02bw+gA==
   dependencies:
     "@babel/helper-module-imports" "^7.0.0"
     "@babel/helper-plugin-utils" "^7.0.0"
     "@babel/plugin-proposal-async-generator-functions" "^7.2.0"
     "@babel/plugin-proposal-json-strings" "^7.2.0"
-    "@babel/plugin-proposal-object-rest-spread" "^7.2.0"
+    "@babel/plugin-proposal-object-rest-spread" "^7.3.4"
     "@babel/plugin-proposal-optional-catch-binding" "^7.2.0"
     "@babel/plugin-proposal-unicode-property-regex" "^7.2.0"
     "@babel/plugin-syntax-async-generators" "^7.2.0"
+    "@babel/plugin-syntax-json-strings" "^7.2.0"
     "@babel/plugin-syntax-object-rest-spread" "^7.2.0"
     "@babel/plugin-syntax-optional-catch-binding" "^7.2.0"
     "@babel/plugin-transform-arrow-functions" "^7.2.0"
-    "@babel/plugin-transform-async-to-generator" "^7.2.0"
+    "@babel/plugin-transform-async-to-generator" "^7.3.4"
     "@babel/plugin-transform-block-scoped-functions" "^7.2.0"
-    "@babel/plugin-transform-block-scoping" "^7.2.0"
-    "@babel/plugin-transform-classes" "^7.2.0"
+    "@babel/plugin-transform-block-scoping" "^7.3.4"
+    "@babel/plugin-transform-classes" "^7.3.4"
     "@babel/plugin-transform-computed-properties" "^7.2.0"
     "@babel/plugin-transform-destructuring" "^7.2.0"
     "@babel/plugin-transform-dotall-regex" "^7.2.0"
@@ -592,12 +601,13 @@
     "@babel/plugin-transform-literals" "^7.2.0"
     "@babel/plugin-transform-modules-amd" "^7.2.0"
     "@babel/plugin-transform-modules-commonjs" "^7.2.0"
-    "@babel/plugin-transform-modules-systemjs" "^7.2.0"
+    "@babel/plugin-transform-modules-systemjs" "^7.3.4"
     "@babel/plugin-transform-modules-umd" "^7.2.0"
+    "@babel/plugin-transform-named-capturing-groups-regex" "^7.3.0"
     "@babel/plugin-transform-new-target" "^7.0.0"
     "@babel/plugin-transform-object-super" "^7.2.0"
     "@babel/plugin-transform-parameters" "^7.2.0"
-    "@babel/plugin-transform-regenerator" "^7.0.0"
+    "@babel/plugin-transform-regenerator" "^7.3.4"
     "@babel/plugin-transform-shorthand-properties" "^7.2.0"
     "@babel/plugin-transform-spread" "^7.2.0"
     "@babel/plugin-transform-sticky-regex" "^7.2.0"
@@ -609,46 +619,80 @@
     js-levenshtein "^1.1.3"
     semver "^5.3.0"
 
+"@babel/runtime-corejs2@^7.2.0":
+  version "7.4.5"
+  resolved "https://registry.yarnpkg.com/@babel/runtime-corejs2/-/runtime-corejs2-7.4.5.tgz#3d892f0560df21bafb384dd7727e33853e95d3c9"
+  integrity sha512-5yLuwzvIDecKwYMzJtiarky4Fb5643H3Ao5jwX0HrMR5oM5mn2iHH9wSZonxwNK0oAjAFUQAiOd4jT7/9Y2jMQ==
+  dependencies:
+    core-js "^2.6.5"
+    regenerator-runtime "^0.13.2"
+
 "@babel/runtime@^7.0.0":
-  version "7.2.0"
-  resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.2.0.tgz#b03e42eeddf5898e00646e4c840fa07ba8dcad7f"
-  integrity sha512-oouEibCbHMVdZSDlJBO6bZmID/zA/G/Qx3H1d3rSNPTD+L8UNKvCat7aKWSJ74zYbm5zWGh0GQN0hKj8zYFTCg==
+  version "7.4.5"
+  resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.5.tgz#582bb531f5f9dc67d2fcb682979894f75e253f12"
+  integrity sha512-TuI4qpWZP6lGOGIuGWtp9sPluqYICmbk8T/1vpSysqJxRPkudh/ofFWyqdcMsDf2s7KvDL4/YHgKyvcS3g9CJQ==
   dependencies:
-    regenerator-runtime "^0.12.0"
+    regenerator-runtime "^0.13.2"
 
-"@babel/template@^7.1.0", "@babel/template@^7.1.2", "@babel/template@^7.2.2":
-  version "7.2.2"
-  resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.2.2.tgz#005b3fdf0ed96e88041330379e0da9a708eb2907"
-  integrity sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==
+"@babel/template@^7.1.0", "@babel/template@^7.4.4":
+  version "7.4.4"
+  resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237"
+  integrity sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==
   dependencies:
     "@babel/code-frame" "^7.0.0"
-    "@babel/parser" "^7.2.2"
-    "@babel/types" "^7.2.2"
+    "@babel/parser" "^7.4.4"
+    "@babel/types" "^7.4.4"
 
-"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.1.5", "@babel/traverse@^7.2.2":
-  version "7.2.2"
-  resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.2.2.tgz#961039de1f9bcb946d807efe2dba9c92e859d188"
-  integrity sha512-E5Bn9FSwHpSkUhthw/XEuvFZxIgrqb9M8cX8j5EUQtrUG5DQUy6bFyl7G7iQ1D1Czudor+xkmp81JbLVVM0Sjg==
+"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.4", "@babel/traverse@^7.4.5":
+  version "7.4.5"
+  resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.4.5.tgz#4e92d1728fd2f1897dafdd321efbff92156c3216"
+  integrity sha512-Vc+qjynwkjRmIFGxy0KYoPj4FdVDxLej89kMHFsWScq999uX+pwcX4v9mWRjW0KcAYTPAuVQl2LKP1wEVLsp+A==
   dependencies:
     "@babel/code-frame" "^7.0.0"
-    "@babel/generator" "^7.2.2"
+    "@babel/generator" "^7.4.4"
     "@babel/helper-function-name" "^7.1.0"
-    "@babel/helper-split-export-declaration" "^7.0.0"
-    "@babel/parser" "^7.2.2"
-    "@babel/types" "^7.2.2"
+    "@babel/helper-split-export-declaration" "^7.4.4"
+    "@babel/parser" "^7.4.5"
+    "@babel/types" "^7.4.4"
     debug "^4.1.0"
     globals "^11.1.0"
-    lodash "^4.17.10"
+    lodash "^4.17.11"
 
-"@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.2.2":
-  version "7.2.2"
-  resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.2.2.tgz#44e10fc24e33af524488b716cdaee5360ea8ed1e"
-  integrity sha512-fKCuD6UFUMkR541eDWL+2ih/xFZBXPOg/7EQFeTluMDebfqR4jrpaCjLhkWlQS4hT6nRa2PMEgXKbRB5/H2fpg==
+"@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.4.4":
+  version "7.4.4"
+  resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.4.4.tgz#8db9e9a629bb7c29370009b4b779ed93fe57d5f0"
+  integrity sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==
   dependencies:
     esutils "^2.0.2"
-    lodash "^4.17.10"
+    lodash "^4.17.11"
     to-fast-properties "^2.0.0"
 
+"@hapi/address@2.x.x":
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.0.0.tgz#9f05469c88cb2fd3dcd624776b54ee95c312126a"
+  integrity sha512-mV6T0IYqb0xL1UALPFplXYQmR0twnXG0M6jUswpquqT2sD12BOiCiLy3EvMp/Fy7s3DZElC4/aPjEjo2jeZpvw==
+
+"@hapi/hoek@6.x.x":
+  version "6.2.4"
+  resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-6.2.4.tgz#4b95fbaccbfba90185690890bdf1a2fbbda10595"
+  integrity sha512-HOJ20Kc93DkDVvjwHyHawPwPkX44sIrbXazAUDiUXaY2R9JwQGo2PhFfnQtdrsIe4igjG2fPgMra7NYw7qhy0A==
+
+"@hapi/joi@^15.0.1":
+  version "15.0.3"
+  resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.0.3.tgz#e94568fd859e5e945126d5675e7dd218484638a7"
+  integrity sha512-z6CesJ2YBwgVCi+ci8SI8zixoj8bGFn/vZb9MBPbSyoxsS2PnWYjHcyTM17VLK6tx64YVK38SDIh10hJypB+ig==
+  dependencies:
+    "@hapi/address" "2.x.x"
+    "@hapi/hoek" "6.x.x"
+    "@hapi/topo" "3.x.x"
+
+"@hapi/topo@3.x.x":
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.0.tgz#5c47cd9637c2953db185aa957a27bcb2a8b7a6f8"
+  integrity sha512-gZDI/eXOIk8kP2PkUKjWu9RW8GGVd2Hkgjxyr/S7Z+JF+0mr7bAlbw+DkTRxnD580o8Kqxlnba9wvqp5aOHBww==
+  dependencies:
+    "@hapi/hoek" "6.x.x"
+
 "@intervolga/optimize-cssnano-plugin@^1.0.5":
   version "1.0.6"
   resolved "https://registry.yarnpkg.com/@intervolga/optimize-cssnano-plugin/-/optimize-cssnano-plugin-1.0.6.tgz#be7c7846128b88f6a9b1d1261a0ad06eb5c0fdf8"
@@ -671,182 +715,298 @@
   resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b"
   integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==
 
-"@sinonjs/commons@^1.0.2":
-  version "1.3.0"
-  resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.3.0.tgz#50a2754016b6f30a994ceda6d9a0a8c36adda849"
-  integrity sha512-j4ZwhaHmwsCb4DlDOIWnI5YyKDNMoNThsmwEpfHx6a1EpsGZ9qYLxP++LMlmBRjtGptGHFsGItJ768snllFWpA==
+"@sinonjs/commons@^1", "@sinonjs/commons@^1.0.2":
+  version "1.4.0"
+  resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.4.0.tgz#7b3ec2d96af481d7a0321252e7b1c94724ec5a78"
+  integrity sha512-9jHK3YF/8HtJ9wCAbG+j8cD0i0+ATS9A7gXFqS36TblLPNy6rEEc+SB0imo91eCboGaBYGV/MT1/br/J+EE7Tw==
   dependencies:
     type-detect "4.0.8"
 
 "@sinonjs/formatio@^3.0.0", "@sinonjs/formatio@^3.1.0":
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/@sinonjs/formatio/-/formatio-3.1.0.tgz#6ac9d1eb1821984d84c4996726e45d1646d8cce5"
-  integrity sha512-ZAR2bPHOl4Xg6eklUGpsdiIJ4+J1SNag1DHHrG/73Uz/nVwXqjgUtRPLoS+aVyieN9cSbc0E4LsU984tWcDyNg==
-  dependencies:
-    "@sinonjs/samsam" "^2 || ^3"
-
-"@sinonjs/samsam@^2 || ^3":
-  version "3.0.2"
-  resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-3.0.2.tgz#304fb33bd5585a0b2df8a4c801fcb47fa84d8e43"
-  integrity sha512-m08g4CS3J6lwRQk1pj1EO+KEVWbrbXsmi9Pw0ySmrIbcVxVaedoFgLvFsV8wHLwh01EpROVz3KvVcD1Jmks9FQ==
+  version "3.2.1"
+  resolved "https://registry.yarnpkg.com/@sinonjs/formatio/-/formatio-3.2.1.tgz#52310f2f9bcbc67bdac18c94ad4901b95fde267e"
+  integrity sha512-tsHvOB24rvyvV2+zKMmPkZ7dXX6LSLKZ7aOtXY6Edklp0uRcgGpOsQTTGTcWViFyx4uhWc6GV8QdnALbIbIdeQ==
   dependencies:
-    "@sinonjs/commons" "^1.0.2"
-    array-from "^2.1.1"
-    lodash.get "^4.4.2"
+    "@sinonjs/commons" "^1"
+    "@sinonjs/samsam" "^3.1.0"
 
 "@sinonjs/samsam@^2.1.2":
   version "2.1.3"
   resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-2.1.3.tgz#62cf2a9b624edc795134135fe37fc2ae8ea36be3"
   integrity sha512-8zNeBkSKhU9a5cRNbpCKau2WWPfan+Q2zDlcXvXyhn9EsMqgYs4qzo0XHNVlXC6ABQL8fT6nV+zzo5RTHJzyXw==
 
+"@sinonjs/samsam@^3.1.0":
+  version "3.3.1"
+  resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-3.3.1.tgz#e88c53fbd9d91ad9f0f2b0140c16c7c107fe0d07"
+  integrity sha512-wRSfmyd81swH0hA1bxJZJ57xr22kC07a1N4zuIL47yTS04bDk6AoCkczcqHEjcRPmJ+FruGJ9WBQiJwMtIElFw==
+  dependencies:
+    "@sinonjs/commons" "^1.0.2"
+    array-from "^2.1.1"
+    lodash "^4.17.11"
+
+"@sinonjs/text-encoding@^0.7.1":
+  version "0.7.1"
+  resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz#8da5c6530915653f3a1f38fd5f101d8c3f8079c5"
+  integrity sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==
+
+"@soda/friendly-errors-webpack-plugin@^1.7.1":
+  version "1.7.1"
+  resolved "https://registry.yarnpkg.com/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.1.tgz#706f64bcb4a8b9642b48ae3ace444c70334d615d"
+  integrity sha512-cWKrGaFX+rfbMrAxVv56DzhPNqOJPZuNIS2HGMELtgGzb+vsMzyig9mml5gZ/hr2BGtSLV+dP2LUEuAL8aG2mQ==
+  dependencies:
+    chalk "^1.1.3"
+    error-stack-parser "^2.0.0"
+    string-width "^2.0.0"
+
 "@types/babel-types@*", "@types/babel-types@^7.0.0":
-  version "7.0.4"
-  resolved "https://registry.yarnpkg.com/@types/babel-types/-/babel-types-7.0.4.tgz#bfd5b0d0d1ba13e351dff65b6e52783b816826c8"
-  integrity sha512-WiZhq3SVJHFRgRYLXvpf65XnV6ipVHhnNaNvE8yCimejrGglkg38kEj0JcizqwSHxmPSjcTlig/6JouxLGEhGw==
+  version "7.0.7"
+  resolved "https://registry.yarnpkg.com/@types/babel-types/-/babel-types-7.0.7.tgz#667eb1640e8039436028055737d2b9986ee336e3"
+  integrity sha512-dBtBbrc+qTHy1WdfHYjBwRln4+LWqASWakLHsWHR2NWHIFkv4W3O070IGoGLEBrJBvct3r0L1BUPuvURi7kYUQ==
 
 "@types/babylon@^6.16.2":
-  version "6.16.4"
-  resolved "https://registry.yarnpkg.com/@types/babylon/-/babylon-6.16.4.tgz#d3df72518b34a6a015d0dc58745cd238b5bb8ad2"
-  integrity sha512-8dZMcGPno3g7pJ/d0AyJERo+lXh9i1JhDuCUs+4lNIN9eUe5Yh6UCLrpgSEi05Ve2JMLauL2aozdvKwNL0px1Q==
+  version "6.16.5"
+  resolved "https://registry.yarnpkg.com/@types/babylon/-/babylon-6.16.5.tgz#1c5641db69eb8cdf378edd25b4be7754beeb48b4"
+  integrity sha512-xH2e58elpj1X4ynnKp9qSnWlsRTIs6n3tgLGNfwAGHwePw0mulHQllV34n0T25uYSu1k0hRKkWXF890B1yS47w==
   dependencies:
     "@types/babel-types" "*"
 
+"@types/events@*":
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7"
+  integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==
+
+"@types/glob@^7.1.1":
+  version "7.1.1"
+  resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575"
+  integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==
+  dependencies:
+    "@types/events" "*"
+    "@types/minimatch" "*"
+    "@types/node" "*"
+
+"@types/minimatch@*":
+  version "3.0.3"
+  resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
+  integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
+
 "@types/node@*":
-  version "10.12.18"
-  resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.18.tgz#1d3ca764718915584fcd9f6344621b7672665c67"
-  integrity sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==
+  version "12.0.8"
+  resolved "https://registry.yarnpkg.com/@types/node/-/node-12.0.8.tgz#551466be11b2adc3f3d47156758f610bd9f6b1d8"
+  integrity sha512-b8bbUOTwzIY3V5vDTY1fIJ+ePKDUBqt2hC2woVGotdQQhG/2Sh62HOKHrT7ab+VerXAcPyAiTEipPu/FsreUtg==
+
+"@types/normalize-package-data@^2.4.0":
+  version "2.4.0"
+  resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e"
+  integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==
 
 "@types/q@^1.5.1":
-  version "1.5.1"
-  resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.1.tgz#48fd98c1561fe718b61733daed46ff115b496e18"
-  integrity sha512-eqz8c/0kwNi/OEHQfvIuJVLTst3in0e7uTKeuY+WL/zfKn0xVujOTp42bS/vUUokhK5P2BppLd9JXMOMHcgbjA==
+  version "1.5.2"
+  resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8"
+  integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==
 
-"@vue/babel-preset-app@^3.2.0":
-  version "3.2.0"
-  resolved "https://registry.yarnpkg.com/@vue/babel-preset-app/-/babel-preset-app-3.2.0.tgz#a443acdbd34f66d7645db271d9ac58fbe4fe870d"
-  integrity sha512-yDPMhdeOnQ49EOsOnHXJZQ4aR+g+TZVkImUjRBN90MKv9V1C9HXxhU73Je6pWUQaJ0yugMr5jl058ns6Mx6mNA==
+"@vue/babel-helper-vue-jsx-merge-props@^1.0.0":
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.0.0.tgz#048fe579958da408fb7a8b2a3ec050b50a661040"
+  integrity sha512-6tyf5Cqm4m6v7buITuwS+jHzPlIPxbFzEhXR5JGZpbrvOcp1hiQKckd305/3C7C36wFekNTQSxAtgeM0j0yoUw==
+
+"@vue/babel-plugin-transform-vue-jsx@^1.0.0":
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.0.0.tgz#ebcbf39c312c94114c8c4f407ee4f6c97aa45432"
+  integrity sha512-U+JNwVQSmaLKjO3lzCUC3cNXxprgezV1N+jOdqbP4xWNaqtWUCJnkjTVcgECM18A/AinDKPcUUeoyhU7yxUxXQ==
+  dependencies:
+    "@babel/helper-module-imports" "^7.0.0"
+    "@babel/plugin-syntax-jsx" "^7.2.0"
+    "@vue/babel-helper-vue-jsx-merge-props" "^1.0.0"
+    html-tags "^2.0.0"
+    lodash.kebabcase "^4.1.1"
+    svg-tags "^1.0.0"
+
+"@vue/babel-preset-app@^3.8.0":
+  version "3.8.0"
+  resolved "https://registry.yarnpkg.com/@vue/babel-preset-app/-/babel-preset-app-3.8.0.tgz#c889627c6a30418b2fb89caccd9065c4acae0829"
+  integrity sha512-A2NBzIVdtNq52foc+P+yQ/7rSm2q2oPpn2FJVW4hFgaWVOL+HaOLCjWDEQyEeMbRZvyOVHMuom097u3p2H2Rfw==
   dependencies:
+    "@babel/helper-module-imports" "^7.0.0"
     "@babel/plugin-proposal-class-properties" "^7.0.0"
     "@babel/plugin-proposal-decorators" "^7.1.0"
     "@babel/plugin-syntax-dynamic-import" "^7.0.0"
     "@babel/plugin-syntax-jsx" "^7.0.0"
-    "@babel/plugin-transform-runtime" "^7.0.0"
-    "@babel/preset-env" "^7.0.0"
+    "@babel/plugin-transform-runtime" "^7.4.0"
+    "@babel/preset-env" "^7.0.0 < 7.4.0"
     "@babel/runtime" "^7.0.0"
-    babel-helper-vue-jsx-merge-props "^2.0.3"
+    "@babel/runtime-corejs2" "^7.2.0"
+    "@vue/babel-preset-jsx" "^1.0.0"
     babel-plugin-dynamic-import-node "^2.2.0"
-    babel-plugin-transform-vue-jsx "^4.0.1"
-    core-js "^2.5.7"
+    babel-plugin-module-resolver "3.2.0"
+    core-js "^2.6.5"
 
-"@vue/cli-overlay@^3.2.0":
-  version "3.2.0"
-  resolved "https://registry.yarnpkg.com/@vue/cli-overlay/-/cli-overlay-3.2.0.tgz#bb5d781914bb5af97d92410babbaa3720707b728"
-  integrity sha512-RKMSfgTtRs4VOXQhmbrNZJaCCheshebji9NcPNGyXzukCMBtoAbu3cG9HxizCSUA//oFFAdPP5BGeHvv0cpu/A==
+"@vue/babel-preset-jsx@^1.0.0":
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/@vue/babel-preset-jsx/-/babel-preset-jsx-1.0.0.tgz#e515cd453a5a8ea6b0f30b2bb92f266d8ab4e9f5"
+  integrity sha512-5CbDu/QHS+TtQNw5aYAffiMxBBB2Eo9+RJpS8X+6FJbdG5Rvc4TVipEqkrg0pJviWadNg7TEy0Uz4o7VNXeIZw==
+  dependencies:
+    "@vue/babel-helper-vue-jsx-merge-props" "^1.0.0"
+    "@vue/babel-plugin-transform-vue-jsx" "^1.0.0"
+    "@vue/babel-sugar-functional-vue" "^1.0.0"
+    "@vue/babel-sugar-inject-h" "^1.0.0"
+    "@vue/babel-sugar-v-model" "^1.0.0"
+    "@vue/babel-sugar-v-on" "^1.0.0"
+
+"@vue/babel-sugar-functional-vue@^1.0.0":
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.0.0.tgz#17e2c4ca27b74b244da3b923240ec91d10048cb3"
+  integrity sha512-XE/jNaaorTuhWayCz+QClk5AB9OV5HzrwbzEC6sIUY0J60A28ONQKeTwxfidW42egOkqNH/UU6eE3KLfmiDj0Q==
+  dependencies:
+    "@babel/plugin-syntax-jsx" "^7.2.0"
+
+"@vue/babel-sugar-inject-h@^1.0.0":
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.0.0.tgz#e5efb6c5b5b7988dc03831af6d133bf7bcde6347"
+  integrity sha512-NxWU+DqtbZgfGvd25GPoFMj+rvyQ8ZA1pHj8vIeqRij+vx3sXoKkObjA9ulZunvWw5F6uG9xYy4ytpxab/X+Hg==
+  dependencies:
+    "@babel/plugin-syntax-jsx" "^7.2.0"
+
+"@vue/babel-sugar-v-model@^1.0.0":
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.0.0.tgz#f4da56aa67f65a349bd2c269a95e72e601af4613"
+  integrity sha512-Pfg2Al0io66P1eO6zUbRIgpyKCU2qTnumiE0lao/wA/uNdb7Dx5Tfd1W6tO5SsByETPnEs8i8+gawRIXX40rFw==
+  dependencies:
+    "@babel/plugin-syntax-jsx" "^7.2.0"
+    "@vue/babel-helper-vue-jsx-merge-props" "^1.0.0"
+    "@vue/babel-plugin-transform-vue-jsx" "^1.0.0"
+    camelcase "^5.0.0"
+    html-tags "^2.0.0"
+    svg-tags "^1.0.0"
+
+"@vue/babel-sugar-v-on@^1.0.0":
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.0.0.tgz#a633ee8fe205763e865b011246981b7f89668033"
+  integrity sha512-2aqJaDLKdSSGlxZU+GjFERaSNUaa6DQreV+V/K4W/6Lxj8520/r1lChWEa/zuAoPD2Vhy0D2QrqqO+I0D6CkKw==
+  dependencies:
+    "@babel/plugin-syntax-jsx" "^7.2.0"
+    "@vue/babel-plugin-transform-vue-jsx" "^1.0.0"
+    camelcase "^5.0.0"
+
+"@vue/cli-overlay@^3.8.0":
+  version "3.8.0"
+  resolved "https://registry.yarnpkg.com/@vue/cli-overlay/-/cli-overlay-3.8.0.tgz#e4e8e2fa92b06fc282916df9c924f1dba50eeabb"
+  integrity sha512-4hY/+r9OwpMb7BPFnQGKftMC8CrfbV00REEFOij52+L4swQw+m879+5zX3Z0xHfPftw6JyaqJB0rmQ0ILI6Ovw==
 
 "@vue/cli-plugin-babel@^3.0.0":
-  version "3.2.0"
-  resolved "https://registry.yarnpkg.com/@vue/cli-plugin-babel/-/cli-plugin-babel-3.2.0.tgz#5548e052f07512156942f50dcf18948ad29be7ec"
-  integrity sha512-HRhwsUIZ9DZYH+cVS8O0Qfk2W43vKpl5/JcvCS8YWWmRjwZjjHtRDifnfQuLC3Q0cUMTcv4bv8vnPMtkAbvXKg==
+  version "3.8.0"
+  resolved "https://registry.yarnpkg.com/@vue/cli-plugin-babel/-/cli-plugin-babel-3.8.0.tgz#a7ce6ef9c6680e7953c609d859451dd937c7284e"
+  integrity sha512-VLWvpgDM+HN2FZu1x+r9pisombDTK1k+RPNPeslnwjGjrUXmKNAamXL1ZIsPwsj6k6PpWPN4jetBIMqcBzBu6Q==
   dependencies:
     "@babel/core" "^7.0.0"
-    "@vue/babel-preset-app" "^3.2.0"
-    babel-loader "^8.0.4"
+    "@vue/babel-preset-app" "^3.8.0"
+    "@vue/cli-shared-utils" "^3.8.0"
+    babel-loader "^8.0.5"
+    webpack ">=4 < 4.29"
 
 "@vue/cli-plugin-eslint@^3.0.0":
-  version "3.2.1"
-  resolved "https://registry.yarnpkg.com/@vue/cli-plugin-eslint/-/cli-plugin-eslint-3.2.1.tgz#4dc353add93023363bf4c6b347e64472d1f2f432"
-  integrity sha512-Z/eQw18FjTypMMryNg8WCYJxEBmSAtnzukRWWNFwqNnh2zM/2J6yR4dYhsyjNtMEMUOnQsAsJnqgw45rLu8sJg==
+  version "3.8.0"
+  resolved "https://registry.yarnpkg.com/@vue/cli-plugin-eslint/-/cli-plugin-eslint-3.8.0.tgz#0402dfd3864b0224bceb264df89a4209000bb98c"
+  integrity sha512-18LDJmjH0DDw9T4+RbrSVk4xkF8t8RDRsEPJLPurno1YVJodIkQ6lqVu82faVgtvPyCoqiaicoTq/iwi1avoLQ==
   dependencies:
-    "@vue/cli-shared-utils" "^3.2.0"
+    "@vue/cli-shared-utils" "^3.8.0"
     babel-eslint "^10.0.1"
+    eslint-loader "^2.1.2"
+    globby "^9.2.0"
+    webpack ">=4 < 4.29"
+  optionalDependencies:
     eslint "^4.19.1"
-    eslint-loader "^2.1.1"
     eslint-plugin-vue "^4.7.1"
-    globby "^8.0.1"
 
 "@vue/cli-plugin-unit-mocha@^3.0.0":
-  version "3.2.0"
-  resolved "https://registry.yarnpkg.com/@vue/cli-plugin-unit-mocha/-/cli-plugin-unit-mocha-3.2.0.tgz#76828eae415ffe949c7fbfcad8e3b7d6a2e991c6"
-  integrity sha512-lT7arkoJFiTBJMIqt5IKFDY0VAoVOf7ZksAlp4WeD3Rwimh/q4tp9yMeNW4x92oxulbQFszkbtoTs5+ARzbN5w==
+  version "3.8.0"
+  resolved "https://registry.yarnpkg.com/@vue/cli-plugin-unit-mocha/-/cli-plugin-unit-mocha-3.8.0.tgz#c3fdfd16ca756ee6335970e3dd669b42dad6ecbb"
+  integrity sha512-J+uPJUNsLVOR/mPtqXiQSQf/dgSU7oOyJSgFXB5vX2WOE3V736DHgWB7iR7qG9eCUV0fqcuz/q896VfszfsY0Q==
   dependencies:
-    "@vue/cli-shared-utils" "^3.2.0"
-    jsdom "^13.0.0"
+    "@vue/cli-shared-utils" "^3.8.0"
+    jsdom "^13.2.0"
     jsdom-global "^3.0.2"
     mocha "^5.2.0"
     mocha-webpack "^2.0.0-beta.0"
 
 "@vue/cli-service@^3.0.0":
-  version "3.2.0"
-  resolved "https://registry.yarnpkg.com/@vue/cli-service/-/cli-service-3.2.0.tgz#96e8ee7b33a911ab71710c126ab55cd64c2a4c51"
-  integrity sha512-HTiaz1IBXV/JCfrmyhHJvDOYpPTBK0uQAekSVRTt5AddCeOV68ktdUqHbDe3VPDfrWFA5x3d3kIHlJd6WK31mA==
+  version "3.8.4"
+  resolved "https://registry.yarnpkg.com/@vue/cli-service/-/cli-service-3.8.4.tgz#fecf63c8e0a838e2468d2a79059e39f2cbb1fdc5"
+  integrity sha512-OWKTPZN+Wk3gpd8ar6DsQWlpIFPCIULZuVsHarJXjlXpIx3FOleXzaT2QiDB+tprbTRZMfsMMZMt5b0nvacY9Q==
   dependencies:
     "@intervolga/optimize-cssnano-plugin" "^1.0.5"
-    "@vue/cli-overlay" "^3.2.0"
-    "@vue/cli-shared-utils" "^3.2.0"
+    "@soda/friendly-errors-webpack-plugin" "^1.7.1"
+    "@vue/cli-overlay" "^3.8.0"
+    "@vue/cli-shared-utils" "^3.8.0"
+    "@vue/component-compiler-utils" "^2.6.0"
     "@vue/preload-webpack-plugin" "^1.1.0"
     "@vue/web-component-wrapper" "^1.2.0"
-    acorn "^6.0.4"
+    acorn "^6.1.1"
     acorn-walk "^6.1.1"
     address "^1.0.3"
-    autoprefixer "^8.6.5"
-    cache-loader "^1.2.5"
-    case-sensitive-paths-webpack-plugin "^2.1.2"
-    chalk "^2.4.1"
-    clipboardy "^1.2.3"
-    cliui "^4.1.0"
+    autoprefixer "^9.5.1"
+    browserslist "^4.5.4"
+    cache-loader "^2.0.1"
+    case-sensitive-paths-webpack-plugin "^2.2.0"
+    chalk "^2.4.2"
+    cli-highlight "^2.1.0"
+    clipboardy "^2.0.0"
+    cliui "^5.0.0"
     copy-webpack-plugin "^4.6.0"
     css-loader "^1.0.1"
-    cssnano "^4.1.7"
-    debug "^4.1.0"
+    cssnano "^4.1.10"
+    current-script-polyfill "^1.0.0"
+    debug "^4.1.1"
+    default-gateway "^5.0.2"
+    dotenv "^7.0.0"
+    dotenv-expand "^5.1.0"
     escape-string-regexp "^1.0.5"
-    file-loader "^2.0.0"
-    friendly-errors-webpack-plugin "^1.7.0"
+    file-loader "^3.0.1"
     fs-extra "^7.0.1"
-    globby "^8.0.1"
+    globby "^9.2.0"
     hash-sum "^1.0.2"
     html-webpack-plugin "^3.2.0"
     launch-editor-middleware "^2.2.1"
     lodash.defaultsdeep "^4.6.0"
     lodash.mapvalues "^4.6.0"
     lodash.transform "^4.6.0"
-    mini-css-extract-plugin "^0.4.5"
+    mini-css-extract-plugin "^0.6.0"
     minimist "^1.2.0"
-    ora "^3.0.0"
-    portfinder "^1.0.19"
+    ora "^3.4.0"
+    portfinder "^1.0.20"
     postcss-loader "^3.0.0"
-    read-pkg "^4.0.1"
-    semver "^5.6.0"
+    read-pkg "^5.0.0"
+    semver "^6.0.0"
     slash "^2.0.0"
     source-map-url "^0.4.0"
     ssri "^6.0.1"
     string.prototype.padend "^3.0.0"
-    terser-webpack-plugin "^1.1.0"
-    thread-loader "^1.2.0"
+    terser-webpack-plugin "^1.2.3"
+    thread-loader "^2.1.2"
     url-loader "^1.1.2"
-    vue-loader "^15.4.2"
-    webpack "^4.26.1"
-    webpack-bundle-analyzer "^3.0.3"
+    vue-loader "^15.7.0"
+    webpack ">=4 < 4.29"
+    webpack-bundle-analyzer "^3.3.0"
     webpack-chain "^4.11.0"
-    webpack-dev-server "^3.1.10"
-    webpack-merge "^4.1.4"
+    webpack-dev-server "^3.4.1"
+    webpack-merge "^4.2.1"
     yorkie "^2.0.0"
 
-"@vue/cli-shared-utils@^3.2.0":
-  version "3.2.0"
-  resolved "https://registry.yarnpkg.com/@vue/cli-shared-utils/-/cli-shared-utils-3.2.0.tgz#504037063c2a4a346dc35c9652bd3863da4816e7"
-  integrity sha512-FCX5ABFg5pWhomyXLpCaogJktMvjsS5d4Mn5BfvqcJxCvzOX6ze8ihFK3u//XMeM78dOFpHSjxnRSvHtkEwgsg==
+"@vue/cli-shared-utils@^3.8.0":
+  version "3.8.0"
+  resolved "https://registry.yarnpkg.com/@vue/cli-shared-utils/-/cli-shared-utils-3.8.0.tgz#e7e728164eb92bd9e205fcd08dae896ee79cba5a"
+  integrity sha512-wn1L8pmQnotfftHOYm0VeXs2+cQTySd73uhWXwyO6pT0ehjqlY5c2RTipClmFF3Q+YCYjwlNpsV650F3l1tV8w==
   dependencies:
+    "@hapi/joi" "^15.0.1"
     chalk "^2.4.1"
     execa "^1.0.0"
-    joi "^13.0.0"
     launch-editor "^2.2.1"
-    lru-cache "^4.1.3"
+    lru-cache "^5.1.1"
     node-ipc "^9.1.1"
-    opn "^5.3.0"
-    ora "^2.1.0"
+    open "^6.3.0"
+    ora "^3.4.0"
     request "^2.87.0"
-    request-promise-native "^1.0.5"
-    semver "^5.5.0"
+    request-promise-native "^1.0.7"
+    semver "^6.0.0"
     string.prototype.padstart "^3.0.0"
 
 "@vue/component-compiler-utils@^1.2.1":
@@ -864,20 +1024,20 @@
     source-map "^0.5.6"
     vue-template-es2015-compiler "^1.6.0"
 
-"@vue/component-compiler-utils@^2.0.0":
-  version "2.3.1"
-  resolved "https://registry.yarnpkg.com/@vue/component-compiler-utils/-/component-compiler-utils-2.3.1.tgz#d1c2623f02ad3fe6b6fc9c3762be55c9c61e3977"
-  integrity sha512-8VuzMhHTf5UU7+HvBeEbBmYiNLvRxIXtDpvxUl5x26WBPgKmQuuJVFY3dN3GFgnWK9Rveh/u/8NF4quhdUUQ1Q==
+"@vue/component-compiler-utils@^2.5.1", "@vue/component-compiler-utils@^2.6.0":
+  version "2.6.0"
+  resolved "https://registry.yarnpkg.com/@vue/component-compiler-utils/-/component-compiler-utils-2.6.0.tgz#aa46d2a6f7647440b0b8932434d22f12371e543b"
+  integrity sha512-IHjxt7LsOFYc0DkTncB7OXJL7UzwOLPPQCfEUNyxL2qt+tF12THV+EO33O1G2Uk4feMSWua3iD39Itszx0f0bw==
   dependencies:
     consolidate "^0.15.1"
     hash-sum "^1.0.2"
     lru-cache "^4.1.2"
     merge-source-map "^1.1.0"
-    postcss "^6.0.20"
-    postcss-selector-parser "^3.1.1"
-    prettier "1.13.7"
-    source-map "^0.5.6"
-    vue-template-es2015-compiler "^1.6.0"
+    postcss "^7.0.14"
+    postcss-selector-parser "^5.0.0"
+    prettier "1.16.3"
+    source-map "~0.6.1"
+    vue-template-es2015-compiler "^1.9.0"
 
 "@vue/preload-webpack-plugin@^1.1.0":
   version "1.1.0"
@@ -885,9 +1045,9 @@
   integrity sha512-rcn2KhSHESBFMPj5vc5X2pI9bcBNQQixvJXhD5gZ4rN2iym/uH2qfDSQfUS5+qwiz0a85TCkeUs6w6jxFDudbw==
 
 "@vue/test-utils@^1.0.0-beta.20":
-  version "1.0.0-beta.27"
-  resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-1.0.0-beta.27.tgz#7e5f7b7180c00e28a4ca55c0ff0a7e754377fdb2"
-  integrity sha512-Lzrd4ZBkS70Tl8JbXbDrN/NcSaH9aZT6+7emU3QhTJ+CrorJpyFDA1dkvSIhH+rDTs8sHFbGeXjXV/qorXxtRw==
+  version "1.0.0-beta.29"
+  resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-1.0.0-beta.29.tgz#c942cf25e891cf081b6a03332b4ae1ef430726f0"
+  integrity sha512-yX4sxEIHh4M9yAbLA/ikpEnGKMNBCnoX98xE1RwxfhQVcn0MaXNSj1Qmac+ZydTj6VBSEVukchBogXBTwc+9iA==
   dependencies:
     dom-event-types "^1.0.0"
     lodash "^4.17.4"
@@ -1060,13 +1220,13 @@ abbrev@1:
   resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
   integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
 
-accepts@~1.3.4, accepts@~1.3.5:
-  version "1.3.5"
-  resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2"
-  integrity sha1-63d99gEXI6OxTopywIBcjoZ0a9I=
+accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7:
+  version "1.3.7"
+  resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
+  integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==
   dependencies:
-    mime-types "~2.1.18"
-    negotiator "0.6.1"
+    mime-types "~2.1.24"
+    negotiator "0.6.2"
 
 acorn-bigint@^0.2.0:
   version "0.2.0"
@@ -1097,9 +1257,9 @@ acorn-globals@^3.0.0:
     acorn "^4.0.4"
 
 acorn-globals@^4.3.0:
-  version "4.3.0"
-  resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.0.tgz#e3b6f8da3c1552a95ae627571f7dd6923bb54103"
-  integrity sha512-hMtHj3s5RnuhvHPowpBYvJVj3rAar82JiDQHvGs1zO0l10ocX/xEdBShNHTJaboucJUsScghp74pH3s7EnHHQw==
+  version "4.3.2"
+  resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.2.tgz#4e2c2313a597fd589720395f6354b41cd5ec8006"
+  integrity sha512-BbzvZhVtZP+Bs1J1HcwrQe8ycfO0wStkSGxuul3He3GkHOIZ6eTqOkPuw9IP1X3+IkOo4wiJmwkobzXYz4wewQ==
   dependencies:
     acorn "^6.0.1"
     acorn-walk "^6.0.1"
@@ -1176,20 +1336,20 @@ acorn@^4.0.4, acorn@~4.0.2:
   resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787"
   integrity sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=
 
-acorn@^5.0.0, acorn@^5.2.1, acorn@^5.3.0, acorn@^5.4.0, acorn@^5.4.1, acorn@^5.5.0, acorn@^5.5.3, acorn@^5.6.2, acorn@^5.7.3:
+acorn@^5.0.0, acorn@^5.2.1, acorn@^5.3.0, acorn@^5.4.0, acorn@^5.4.1, acorn@^5.5.0, acorn@^5.5.3, acorn@^5.6.2:
   version "5.7.3"
   resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279"
   integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==
 
-acorn@^6.0.1, acorn@^6.0.4:
-  version "6.0.4"
-  resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.0.4.tgz#77377e7353b72ec5104550aa2d2097a2fd40b754"
-  integrity sha512-VY4i5EKSKkofY2I+6QLTbTTN/UvEQPCo6eiwzzSaSWfpaDhOmStMCMod6wmuPciNq+XS0faCglFu2lHZpdHUtg==
+acorn@^6.0.1, acorn@^6.0.4, acorn@^6.0.7, acorn@^6.1.1:
+  version "6.1.1"
+  resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f"
+  integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==
 
 address@^1.0.3:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/address/-/address-1.0.3.tgz#b5f50631f8d6cec8bd20c963963afb55e06cbce9"
-  integrity sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg==
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/address/-/address-1.1.0.tgz#ef8e047847fcd2c5b6f50c16965f924fd99fe709"
+  integrity sha512-4diPfzWbLEIElVG4AnqP+00SULlPzNuyJFNnmMrLgyaxG6tZXJ1sn7mjBu4fHrJE+Yp/jgylOweJn2xsLMFggQ==
 
 ajv-errors@^1.0.0:
   version "1.0.1"
@@ -1202,9 +1362,9 @@ ajv-keywords@^2.1.0:
   integrity sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=
 
 ajv-keywords@^3.1.0:
-  version "3.2.0"
-  resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a"
-  integrity sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=
+  version "3.4.0"
+  resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.0.tgz#4b831e7b531415a7cc518cd404e73f6193c6349d"
+  integrity sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw==
 
 ajv@^5.2.3, ajv@^5.3.0:
   version "5.5.2"
@@ -1217,9 +1377,9 @@ ajv@^5.2.3, ajv@^5.3.0:
     json-schema-traverse "^0.3.0"
 
 ajv@^6.1.0, ajv@^6.5.5:
-  version "6.6.2"
-  resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.6.2.tgz#caceccf474bf3fc3ce3b147443711a24063cc30d"
-  integrity sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g==
+  version "6.10.0"
+  resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1"
+  integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==
   dependencies:
     fast-deep-equal "^2.0.1"
     fast-json-stable-stringify "^2.0.0"
@@ -1246,14 +1406,14 @@ amdefine@>=0.0.4:
   integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=
 
 ansi-colors@^3.0.0:
-  version "3.2.3"
-  resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813"
-  integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==
+  version "3.2.4"
+  resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf"
+  integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==
 
 ansi-escapes@^3.0.0:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30"
-  integrity sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==
+  version "3.2.0"
+  resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b"
+  integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==
 
 ansi-html@0.0.7:
   version "0.0.7"
@@ -1270,18 +1430,28 @@ ansi-regex@^3.0.0:
   resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
   integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
 
+ansi-regex@^4.1.0:
+  version "4.1.0"
+  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
+  integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
+
 ansi-styles@^2.2.1:
   version "2.2.1"
   resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
   integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
 
-ansi-styles@^3.2.1:
+ansi-styles@^3.2.0, ansi-styles@^3.2.1:
   version "3.2.1"
   resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
   integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
   dependencies:
     color-convert "^1.9.0"
 
+any-promise@^1.0.0:
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f"
+  integrity sha1-q8av7tzqUugJzcA3au0845Y10X8=
+
 anymatch@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
@@ -1295,7 +1465,7 @@ aproba@^1.0.3, aproba@^1.1.1:
   resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
   integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
 
-arch@^2.1.0:
+arch@^2.1.1:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/arch/-/arch-2.1.1.tgz#8f5c2731aa35a30929221bb0640eed65175ec84e"
   integrity sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg==
@@ -1370,14 +1540,14 @@ array-reduce@~0.0.0:
   resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b"
   integrity sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=
 
-array-union@^1.0.1:
+array-union@^1.0.1, array-union@^1.0.2:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
   integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=
   dependencies:
     array-uniq "^1.0.1"
 
-array-uniq@^1.0.1:
+array-uniq@^1.0.1, array-uniq@^1.0.2:
   version "1.0.3"
   resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
   integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=
@@ -1387,11 +1557,6 @@ array-unique@^0.3.2:
   resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
   integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
 
-arrify@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
-  integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
-
 asap@~2.0.3:
   version "2.0.6"
   resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
@@ -1419,10 +1584,11 @@ assert-plus@1.0.0, assert-plus@^1.0.0:
   integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
 
 assert@^1.1.1:
-  version "1.4.1"
-  resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91"
-  integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=
+  version "1.5.0"
+  resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb"
+  integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==
   dependencies:
+    object-assign "^4.1.1"
     util "0.10.3"
 
 assertion-error@^1.1.0:
@@ -1435,10 +1601,10 @@ assign-symbols@^1.0.0:
   resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
   integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
 
-async-each@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
-  integrity sha1-GdOGodntxufByF04iu28xW0zYC0=
+async-each@^1.0.1:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf"
+  integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==
 
 async-foreach@^0.1.3:
   version "0.1.3"
@@ -1455,13 +1621,6 @@ async@^1.5.2:
   resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
   integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=
 
-async@^2.3.0:
-  version "2.6.1"
-  resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610"
-  integrity sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==
-  dependencies:
-    lodash "^4.17.10"
-
 asynckit@^0.4.0:
   version "0.4.0"
   resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
@@ -1472,17 +1631,18 @@ atob@^2.1.1:
   resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
   integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
 
-autoprefixer@^8.6.5:
-  version "8.6.5"
-  resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-8.6.5.tgz#343f3d193ed568b3208e00117a1b96eb691d4ee9"
-  integrity sha512-PLWJN3Xo/rycNkx+mp8iBDMTm3FeWe4VmYaZDSqL5QQB9sLsQkG5k8n+LNDFnhh9kdq2K+egL/icpctOmDHwig==
+autoprefixer@^9.5.1:
+  version "9.6.0"
+  resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.6.0.tgz#0111c6bde2ad20c6f17995a33fad7cf6854b4c87"
+  integrity sha512-kuip9YilBqhirhHEGHaBTZKXL//xxGnzvsD0FtBQa6z+A69qZD6s/BAX9VzDF1i9VKDquTJDQaPLSEhOnL6FvQ==
   dependencies:
-    browserslist "^3.2.8"
-    caniuse-lite "^1.0.30000864"
+    browserslist "^4.6.1"
+    caniuse-lite "^1.0.30000971"
+    chalk "^2.4.2"
     normalize-range "^0.1.2"
     num2fraction "^1.2.2"
-    postcss "^6.0.23"
-    postcss-value-parser "^3.2.3"
+    postcss "^7.0.16"
+    postcss-value-parser "^3.3.1"
 
 aws-sign2@~0.7.0:
   version "0.7.0"
@@ -1495,12 +1655,12 @@ aws4@^1.8.0:
   integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==
 
 axios@^0.18.0:
-  version "0.18.0"
-  resolved "https://registry.yarnpkg.com/axios/-/axios-0.18.0.tgz#32d53e4851efdc0a11993b6cd000789d70c05102"
-  integrity sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=
+  version "0.18.1"
+  resolved "https://registry.yarnpkg.com/axios/-/axios-0.18.1.tgz#ff3f0de2e7b5d180e757ad98000f1081b87bcea3"
+  integrity sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g==
   dependencies:
-    follow-redirects "^1.3.0"
-    is-buffer "^1.1.5"
+    follow-redirects "1.5.10"
+    is-buffer "^2.0.2"
 
 babel-code-frame@^6.22.0, babel-code-frame@^6.26.0:
   version "6.26.0"
@@ -1523,20 +1683,15 @@ babel-eslint@^10.0.1:
     eslint-scope "3.7.1"
     eslint-visitor-keys "^1.0.0"
 
-babel-helper-vue-jsx-merge-props@^2.0.3:
-  version "2.0.3"
-  resolved "https://registry.yarnpkg.com/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz#22aebd3b33902328e513293a8e4992b384f9f1b6"
-  integrity sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg==
-
-babel-loader@^8.0.4:
-  version "8.0.4"
-  resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.4.tgz#7bbf20cbe4560629e2e41534147692d3fecbdce6"
-  integrity sha512-fhBhNkUToJcW9nV46v8w87AJOwAJDz84c1CL57n3Stj73FANM/b9TbCUK4YhdOwEyZ+OxhYpdeZDNzSI29Firw==
+babel-loader@^8.0.5:
+  version "8.0.6"
+  resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.6.tgz#e33bdb6f362b03f4bb141a0c21ab87c501b70dfb"
+  integrity sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==
   dependencies:
-    find-cache-dir "^1.0.0"
+    find-cache-dir "^2.0.0"
     loader-utils "^1.0.2"
     mkdirp "^0.5.1"
-    util.promisify "^1.0.0"
+    pify "^4.0.1"
 
 babel-plugin-dynamic-import-node@^2.2.0:
   version "2.2.0"
@@ -1545,12 +1700,16 @@ babel-plugin-dynamic-import-node@^2.2.0:
   dependencies:
     object.assign "^4.1.0"
 
-babel-plugin-transform-vue-jsx@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-4.0.1.tgz#2c8bddce87a6ef09eaa59869ff1bfbeeafc5f88d"
-  integrity sha512-wbOz7ITB5cloLSjKUU1hWn8zhR+Dwah/RZiTiJY/CQliCwhowmzu6m7NEF+y5EJX/blDzGjRtZvC10Vdb3Q7vw==
+babel-plugin-module-resolver@3.2.0:
+  version "3.2.0"
+  resolved "https://registry.yarnpkg.com/babel-plugin-module-resolver/-/babel-plugin-module-resolver-3.2.0.tgz#ddfa5e301e3b9aa12d852a9979f18b37881ff5a7"
+  integrity sha512-tjR0GvSndzPew/Iayf4uICWZqjBwnlMWjSx6brryfQ81F9rxBVqwDJtFCV8oOs0+vJeefK9TmdZtkIFdFe1UnA==
   dependencies:
-    esutils "^2.0.2"
+    find-babel-config "^1.1.0"
+    glob "^7.1.2"
+    pkg-up "^2.0.0"
+    reselect "^3.0.1"
+    resolve "^1.4.0"
 
 babel-runtime@^6.18.0, babel-runtime@^6.26.0:
   version "6.26.0"
@@ -1625,10 +1784,15 @@ big.js@^3.1.3:
   resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e"
   integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==
 
+big.js@^5.2.2:
+  version "5.2.2"
+  resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
+  integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
+
 binary-extensions@^1.0.0:
-  version "1.12.0"
-  resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.12.0.tgz#c2d780f53d45bba8317a8902d4ceeaf3a6385b14"
-  integrity sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==
+  version "1.13.1"
+  resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65"
+  integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==
 
 block-stream@*:
   version "0.0.9"
@@ -1637,31 +1801,31 @@ block-stream@*:
   dependencies:
     inherits "~2.0.0"
 
-bluebird@^3.1.1, bluebird@^3.5.1:
-  version "3.5.3"
-  resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.3.tgz#7d01c6f9616c9a51ab0f8c549a79dfe6ec33efa7"
-  integrity sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==
+bluebird@^3.1.1, bluebird@^3.5.1, bluebird@^3.5.3:
+  version "3.5.5"
+  resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f"
+  integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==
 
 bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
   version "4.11.8"
   resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f"
   integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==
 
-body-parser@1.18.3:
-  version "1.18.3"
-  resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4"
-  integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=
+body-parser@1.19.0:
+  version "1.19.0"
+  resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a"
+  integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==
   dependencies:
-    bytes "3.0.0"
+    bytes "3.1.0"
     content-type "~1.0.4"
     debug "2.6.9"
     depd "~1.1.2"
-    http-errors "~1.6.3"
-    iconv-lite "0.4.23"
+    http-errors "1.7.2"
+    iconv-lite "0.4.24"
     on-finished "~2.3.0"
-    qs "6.5.2"
-    raw-body "2.3.3"
-    type-is "~1.6.16"
+    qs "6.7.0"
+    raw-body "2.4.0"
+    type-is "~1.6.17"
 
 bonjour@^3.5.0:
   version "3.5.0"
@@ -1688,7 +1852,7 @@ brace-expansion@^1.1.7:
     balanced-match "^1.0.0"
     concat-map "0.0.1"
 
-braces@^2.3.0, braces@^2.3.1:
+braces@^2.3.1, braces@^2.3.2:
   version "2.3.2"
   resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
   integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==
@@ -1778,22 +1942,14 @@ browserify-zlib@^0.2.0:
   dependencies:
     pako "~1.0.5"
 
-browserslist@^3.2.8:
-  version "3.2.8"
-  resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6"
-  integrity sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==
-  dependencies:
-    caniuse-lite "^1.0.30000844"
-    electron-to-chromium "^1.3.47"
-
-browserslist@^4.0.0, browserslist@^4.3.4:
-  version "4.3.6"
-  resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.3.6.tgz#0f9d9081afc66b36f477c6bdf3813f784f42396a"
-  integrity sha512-kMGKs4BTzRWviZ8yru18xBpx+CyHG9eqgRbj9XbE3IMgtczf4aiA0Y1YCpVdvUieKGZ03kolSPXqTcscBCb9qw==
+browserslist@^4.0.0, browserslist@^4.3.4, browserslist@^4.5.4, browserslist@^4.6.1:
+  version "4.6.2"
+  resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.6.2.tgz#574c665950915c2ac73a4594b8537a9eba26203f"
+  integrity sha512-2neU/V0giQy9h3XMPwLhEY3+Ao0uHSwHvU8Q1Ea6AgLVL1sXbX3dzPrJ8NWe5Hi4PoTkCYXOtVR9rfRLI0J/8Q==
   dependencies:
-    caniuse-lite "^1.0.30000921"
-    electron-to-chromium "^1.3.92"
-    node-releases "^1.1.1"
+    caniuse-lite "^1.0.30000974"
+    electron-to-chromium "^1.3.150"
+    node-releases "^1.1.23"
 
 buffer-from@^1.0.0:
   version "1.1.1"
@@ -1819,11 +1975,6 @@ buffer@^4.3.0:
     ieee754 "^1.1.4"
     isarray "^1.0.0"
 
-builtin-modules@^1.0.0:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
-  integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=
-
 builtin-status-codes@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
@@ -1834,6 +1985,11 @@ bytes@3.0.0:
   resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
   integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=
 
+bytes@3.1.0:
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6"
+  integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==
+
 cacache@^10.0.4:
   version "10.0.4"
   resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460"
@@ -1853,24 +2009,24 @@ cacache@^10.0.4:
     unique-filename "^1.1.0"
     y18n "^4.0.0"
 
-cacache@^11.0.2:
-  version "11.3.1"
-  resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.1.tgz#d09d25f6c4aca7a6d305d141ae332613aa1d515f"
-  integrity sha512-2PEw4cRRDu+iQvBTTuttQifacYjLPhET+SYO/gEFMy8uhi+jlJREDAjSF5FWSdV/Aw5h18caHA7vMTw2c+wDzA==
+cacache@^11.3.2:
+  version "11.3.2"
+  resolved "https://registry.yarnpkg.com/cacache/-/cacache-11.3.2.tgz#2d81e308e3d258ca38125b676b98b2ac9ce69bfa"
+  integrity sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==
   dependencies:
-    bluebird "^3.5.1"
-    chownr "^1.0.1"
-    figgy-pudding "^3.1.0"
-    glob "^7.1.2"
-    graceful-fs "^4.1.11"
-    lru-cache "^4.1.3"
+    bluebird "^3.5.3"
+    chownr "^1.1.1"
+    figgy-pudding "^3.5.1"
+    glob "^7.1.3"
+    graceful-fs "^4.1.15"
+    lru-cache "^5.1.1"
     mississippi "^3.0.0"
     mkdirp "^0.5.1"
     move-concurrently "^1.0.1"
     promise-inflight "^1.0.1"
     rimraf "^2.6.2"
-    ssri "^6.0.0"
-    unique-filename "^1.1.0"
+    ssri "^6.0.1"
+    unique-filename "^1.1.1"
     y18n "^4.0.0"
 
 cache-base@^1.0.1:
@@ -1888,15 +2044,16 @@ cache-base@^1.0.1:
     union-value "^1.0.0"
     unset-value "^1.0.0"
 
-cache-loader@^1.2.5:
-  version "1.2.5"
-  resolved "https://registry.yarnpkg.com/cache-loader/-/cache-loader-1.2.5.tgz#9ab15b0ae5f546f376083a695fc1a75f546cb266"
-  integrity sha512-enWKEQ4kO3YreDFd7AtVRjtJBmNiqh/X9hVDReu0C4qm8gsGmySkwuWtdc+N5O+vq5FzxL1mIZc30NyXCB7o/Q==
+cache-loader@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/cache-loader/-/cache-loader-2.0.1.tgz#5758f41a62d7c23941e3c3c7016e6faeb03acb07"
+  integrity sha512-V99T3FOynmGx26Zom+JrVBytLBsmUCzVG2/4NnUKgvXN4bEV42R1ERl1IyiH/cvFIDA1Ytq2lPZ9tXDSahcQpQ==
   dependencies:
     loader-utils "^1.1.0"
     mkdirp "^0.5.1"
-    neo-async "^2.5.0"
-    schema-utils "^0.4.2"
+    neo-async "^2.6.0"
+    normalize-path "^3.0.0"
+    schema-utils "^1.0.0"
 
 call-me-maybe@^1.0.1:
   version "1.0.1"
@@ -1970,6 +2127,11 @@ camelcase@^4.1.0:
   resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
   integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=
 
+camelcase@^5.0.0:
+  version "5.3.1"
+  resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
+  integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
+
 caniuse-api@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0"
@@ -1980,15 +2142,15 @@ caniuse-api@^3.0.0:
     lodash.memoize "^4.1.2"
     lodash.uniq "^4.5.0"
 
-caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30000864, caniuse-lite@^1.0.30000921:
-  version "1.0.30000923"
-  resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000923.tgz#148f9bda508024b5ce957b463ae2e8302b451bb2"
-  integrity sha512-j5ur7eeluOFjjPUkydtXP4KFAsmH3XaQNch5tvWSO+dLHYt5PE+VgJZLWtbVOodfWij6m6zas28T4gB/cLYq1w==
+caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000971, caniuse-lite@^1.0.30000974:
+  version "1.0.30000974"
+  resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000974.tgz#b7afe14ee004e97ce6dc73e3f878290a12928ad8"
+  integrity sha512-xc3rkNS/Zc3CmpMKuczWEdY2sZgx09BkAxfvkxlAEBTqcMHeL8QnPqhKse+5sRTi3nrw2pJwToD2WvKn1Uhvww==
 
-case-sensitive-paths-webpack-plugin@^2.1.2:
-  version "2.1.2"
-  resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.1.2.tgz#c899b52175763689224571dad778742e133f0192"
-  integrity sha512-oEZgAFfEvKtjSRCu6VgYkuGxwrWXMnQzyBmlLPP7r6PWQVtHxP5Z5N6XsuJvtoVax78am/r7lr46bwo3IVEBOg==
+case-sensitive-paths-webpack-plugin@^2.2.0:
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.2.0.tgz#3371ef6365ef9c25fa4b81c16ace0e9c7dc58c3e"
+  integrity sha512-u5ElzokS8A1pm9vM3/iDgTcI3xqHxuCao94Oz8etI3cf0Tio0p8izkDYbTIn09uP3yUUr6+veaE6IkjnTYS46g==
 
 caseless@~0.12.0:
   version "0.12.0"
@@ -2026,10 +2188,10 @@ chalk@^1.1.1, chalk@^1.1.3:
     strip-ansi "^3.0.0"
     supports-color "^2.0.0"
 
-chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.4.1:
-  version "2.4.1"
-  resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e"
-  integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==
+chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2:
+  version "2.4.2"
+  resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
+  integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
   dependencies:
     ansi-styles "^3.2.1"
     escape-string-regexp "^1.0.5"
@@ -2058,36 +2220,35 @@ check-types@^7.3.0:
   integrity sha512-YbulWHdfP99UfZ73NcUDlNJhEIDgm9Doq9GhpyXbF+7Aegi3CVV7qqMCKTTqJxlvEvnQBp9IA+dxsGN6xK/nSg==
 
 cheerio@^1.0.0-rc.2:
-  version "1.0.0-rc.2"
-  resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.2.tgz#4b9f53a81b27e4d5dac31c0ffd0cfa03cc6830db"
-  integrity sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs=
+  version "1.0.0-rc.3"
+  resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.3.tgz#094636d425b2e9c0f4eb91a46c05630c9a1a8bf6"
+  integrity sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA==
   dependencies:
     css-select "~1.2.0"
-    dom-serializer "~0.1.0"
+    dom-serializer "~0.1.1"
     entities "~1.1.1"
     htmlparser2 "^3.9.1"
     lodash "^4.15.0"
     parse5 "^3.0.1"
 
-chokidar@^2.0.0, chokidar@^2.0.2:
-  version "2.0.4"
-  resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26"
-  integrity sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==
+chokidar@^2.0.2, chokidar@^2.1.6:
+  version "2.1.6"
+  resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.6.tgz#b6cad653a929e244ce8a834244164d241fa954c5"
+  integrity sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==
   dependencies:
     anymatch "^2.0.0"
-    async-each "^1.0.0"
-    braces "^2.3.0"
+    async-each "^1.0.1"
+    braces "^2.3.2"
     glob-parent "^3.1.0"
-    inherits "^2.0.1"
+    inherits "^2.0.3"
     is-binary-path "^1.0.0"
     is-glob "^4.0.0"
-    lodash.debounce "^4.0.8"
-    normalize-path "^2.1.1"
+    normalize-path "^3.0.0"
     path-is-absolute "^1.0.0"
-    readdirp "^2.0.0"
-    upath "^1.0.5"
+    readdirp "^2.2.1"
+    upath "^1.1.1"
   optionalDependencies:
-    fsevents "^1.2.2"
+    fsevents "^1.2.7"
 
 chownr@^1.0.1, chownr@^1.1.1:
   version "1.1.1"
@@ -2095,9 +2256,9 @@ chownr@^1.0.1, chownr@^1.1.1:
   integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==
 
 chrome-trace-event@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz#45a91bd2c20c9411f0963b5aaeb9a1b95e09cc48"
-  integrity sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4"
+  integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==
   dependencies:
     tslib "^1.9.0"
 
@@ -2143,23 +2304,34 @@ cli-cursor@^2.1.0:
   dependencies:
     restore-cursor "^2.0.0"
 
-cli-spinners@^1.1.0:
-  version "1.3.1"
-  resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.3.1.tgz#002c1990912d0d59580c93bd36c056de99e4259a"
-  integrity sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==
+cli-highlight@^2.1.0:
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/cli-highlight/-/cli-highlight-2.1.1.tgz#2180223d51618b112f4509cf96e4a6c750b07e97"
+  integrity sha512-0y0VlNmdD99GXZHYnvrQcmHxP8Bi6T00qucGgBgGv4kJ0RyDthNnnFPupHV7PYv/OXSVk+azFbOeaW6+vGmx9A==
+  dependencies:
+    chalk "^2.3.0"
+    highlight.js "^9.6.0"
+    mz "^2.4.0"
+    parse5 "^4.0.0"
+    yargs "^13.0.0"
+
+cli-spinners@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.1.0.tgz#22c34b4d51f573240885b201efda4e4ec9fff3c7"
+  integrity sha512-8B00fJOEh1HPrx4fo5eW16XmE1PcL1tGpGrxy63CXGP9nHdPBN63X75hA1zhvQuhVztJWLqV58Roj2qlNM7cAA==
 
 cli-width@^2.0.0:
   version "2.2.0"
   resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639"
   integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=
 
-clipboardy@^1.2.3:
-  version "1.2.3"
-  resolved "https://registry.yarnpkg.com/clipboardy/-/clipboardy-1.2.3.tgz#0526361bf78724c1f20be248d428e365433c07ef"
-  integrity sha512-2WNImOvCRe6r63Gk9pShfkwXsVtKCroMAevIbiae021mS850UkWPbevxsBz3tnvjZIEGvlwaqCPsw+4ulzNgJA==
+clipboardy@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/clipboardy/-/clipboardy-2.1.0.tgz#0123a0c8fac92f256dc56335e0bb8be97a4909a5"
+  integrity sha512-2pzOUxWcLlXWtn+Jd6js3o12TysNOOVes/aQfg+MT/35vrxWzedHlLwyoJpXjsFKWm95BTNEcMGD9+a7mKzZkQ==
   dependencies:
-    arch "^2.1.0"
-    execa "^0.8.0"
+    arch "^2.1.1"
+    execa "^1.0.0"
 
 cliui@^2.1.0:
   version "2.1.0"
@@ -2179,7 +2351,7 @@ cliui@^3.2.0:
     strip-ansi "^3.0.1"
     wrap-ansi "^2.0.0"
 
-cliui@^4.0.0, cliui@^4.1.0:
+cliui@^4.0.0:
   version "4.1.0"
   resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49"
   integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==
@@ -2188,6 +2360,15 @@ cliui@^4.0.0, cliui@^4.1.0:
     strip-ansi "^4.0.0"
     wrap-ansi "^2.0.0"
 
+cliui@^5.0.0:
+  version "5.0.0"
+  resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5"
+  integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==
+  dependencies:
+    string-width "^3.1.0"
+    strip-ansi "^5.2.0"
+    wrap-ansi "^5.1.0"
+
 clone-deep@^2.0.1:
   version "2.0.2"
   resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-2.0.2.tgz#00db3a1e173656730d1188c3d6aced6d7ea97713"
@@ -2208,7 +2389,7 @@ co@^4.6.0:
   resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
   integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=
 
-coa@~2.0.1:
+coa@^2.0.2:
   version "2.0.2"
   resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3"
   integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==
@@ -2256,22 +2437,17 @@ color-string@^1.5.2:
     simple-swizzle "^0.2.2"
 
 color@^3.0.0:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/color/-/color-3.1.0.tgz#d8e9fb096732875774c84bf922815df0308d0ffc"
-  integrity sha512-CwyopLkuRYO5ei2EpzpIh6LqJMt6Mt+jZhO5VI5f/wJLZriXQE32/SSqzmrh+QB+AZT81Cj8yv+7zwToW8ahZg==
+  version "3.1.2"
+  resolved "https://registry.yarnpkg.com/color/-/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10"
+  integrity sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==
   dependencies:
     color-convert "^1.9.1"
     color-string "^1.5.2"
 
-colors@~1.1.2:
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63"
-  integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM=
-
 combined-stream@^1.0.6, combined-stream@~1.0.6:
-  version "1.0.7"
-  resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828"
-  integrity sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==
+  version "1.0.8"
+  resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
+  integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
   dependencies:
     delayed-stream "~1.0.0"
 
@@ -2280,12 +2456,17 @@ commander@2.15.1:
   resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f"
   integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==
 
-commander@2.17.x, commander@~2.17.1:
+commander@2.17.x:
   version "2.17.1"
   resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf"
   integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==
 
 commander@^2.18.0, commander@^2.19.0:
+  version "2.20.0"
+  resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422"
+  integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==
+
+commander@~2.19.0:
   version "2.19.0"
   resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a"
   integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==
@@ -2296,27 +2477,27 @@ commondir@^1.0.1:
   integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
 
 component-emitter@^1.2.1:
-  version "1.2.1"
-  resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
-  integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
+  integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
 
-compressible@~2.0.14:
-  version "2.0.15"
-  resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.15.tgz#857a9ab0a7e5a07d8d837ed43fe2defff64fe212"
-  integrity sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw==
+compressible@~2.0.16:
+  version "2.0.17"
+  resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1"
+  integrity sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==
   dependencies:
-    mime-db ">= 1.36.0 < 2"
+    mime-db ">= 1.40.0 < 2"
 
-compression@^1.5.2:
-  version "1.7.3"
-  resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.3.tgz#27e0e176aaf260f7f2c2813c3e440adb9f1993db"
-  integrity sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==
+compression@^1.7.4:
+  version "1.7.4"
+  resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f"
+  integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==
   dependencies:
     accepts "~1.3.5"
     bytes "3.0.0"
-    compressible "~2.0.14"
+    compressible "~2.0.16"
     debug "2.6.9"
-    on-headers "~1.0.1"
+    on-headers "~1.0.2"
     safe-buffer "5.1.2"
     vary "~1.1.2"
 
@@ -2335,10 +2516,10 @@ concat-stream@^1.5.0, concat-stream@^1.6.0:
     readable-stream "^2.2.2"
     typedarray "^0.0.6"
 
-connect-history-api-fallback@^1.3.0:
-  version "1.5.0"
-  resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#b06873934bc5e344fef611a196a6faae0aee015a"
-  integrity sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=
+connect-history-api-fallback@^1.6.0:
+  version "1.6.0"
+  resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc"
+  integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==
 
 console-browserify@^1.1.0:
   version "1.1.0"
@@ -2374,10 +2555,12 @@ constants-browserify@^1.0.0:
   resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
   integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=
 
-content-disposition@0.5.2:
-  version "0.5.2"
-  resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4"
-  integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ=
+content-disposition@0.5.3:
+  version "0.5.3"
+  resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd"
+  integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==
+  dependencies:
+    safe-buffer "5.1.2"
 
 content-type@~1.0.4:
   version "1.0.4"
@@ -2396,10 +2579,10 @@ cookie-signature@1.0.6:
   resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
   integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw=
 
-cookie@0.3.1:
-  version "0.3.1"
-  resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
-  integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=
+cookie@0.4.0:
+  version "0.4.0"
+  resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba"
+  integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==
 
 copy-concurrently@^1.0.0:
   version "1.0.5"
@@ -2432,34 +2615,29 @@ copy-webpack-plugin@^4.6.0:
     p-limit "^1.0.0"
     serialize-javascript "^1.4.0"
 
-core-js@^2.4.0, core-js@^2.5.7:
-  version "2.6.1"
-  resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.1.tgz#87416ae817de957a3f249b3b5ca475d4aaed6042"
-  integrity sha512-L72mmmEayPJBejKIWe2pYtGis5r0tQ5NaJekdhyXgeMQTpJoBsH0NL4ElY2LfSoV15xeQWKQ+XTTOZdyero5Xg==
+core-js@^2.4.0, core-js@^2.6.5:
+  version "2.6.9"
+  resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.9.tgz#6b4b214620c834152e179323727fc19741b084f2"
+  integrity sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==
+
+core-js@^3.0.1:
+  version "3.1.4"
+  resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.1.4.tgz#3a2837fc48e582e1ae25907afcd6cf03b0cc7a07"
+  integrity sha512-YNZN8lt82XIMLnLirj9MhKDFZHalwzzrL9YLt6eb0T5D0EDl4IQ90IGkua8mHbnxNrkj1d8hbdizMc0Qmg1WnQ==
 
 core-util-is@1.0.2, core-util-is@~1.0.0:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
   integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
 
-cosmiconfig@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-4.0.0.tgz#760391549580bbd2df1e562bc177b13c290972dc"
-  integrity sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ==
-  dependencies:
-    is-directory "^0.3.1"
-    js-yaml "^3.9.0"
-    parse-json "^4.0.0"
-    require-from-string "^2.0.1"
-
 cosmiconfig@^5.0.0:
-  version "5.0.7"
-  resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.0.7.tgz#39826b292ee0d78eda137dfa3173bd1c21a43b04"
-  integrity sha512-PcLqxTKiDmNT6pSpy4N6KtuPwb53W+2tzNvwOZw0WH9N6O0vLIBq0x8aj8Oj75ere4YcGi48bDFCL+3fRJdlNA==
+  version "5.2.1"
+  resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a"
+  integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==
   dependencies:
     import-fresh "^2.0.0"
     is-directory "^0.3.1"
-    js-yaml "^3.9.0"
+    js-yaml "^3.13.1"
     parse-json "^4.0.0"
 
 create-ecdh@^4.0.0:
@@ -2569,7 +2747,7 @@ css-loader@^1.0.1:
     postcss-value-parser "^3.3.0"
     source-list-map "^2.0.0"
 
-css-select-base-adapter@~0.1.0:
+css-select-base-adapter@^0.1.1:
   version "0.1.1"
   resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7"
   integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==
@@ -2630,9 +2808,9 @@ css-url-regex@^1.1.0:
   integrity sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w=
 
 css-what@2.1, css-what@^2.1.2:
-  version "2.1.2"
-  resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.2.tgz#c0876d9d0480927d7d4920dcd72af3595649554d"
-  integrity sha512-wan8dMWQ0GUeF7DGEPVjhHemVW/vy6xUYmFzRY8RYqgA0JtXC9rJmbScBjqSu6dg9q0lwPQy6ZAmJVr3PPTvqQ==
+  version "2.1.3"
+  resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2"
+  integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==
 
 cssesc@^0.1.0:
   version "0.1.0"
@@ -2644,40 +2822,45 @@ cssesc@^2.0.0:
   resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703"
   integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==
 
-cssnano-preset-default@^4.0.0, cssnano-preset-default@^4.0.5:
-  version "4.0.5"
-  resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.5.tgz#d1756c0259d98ad311e601ba76e95c60f6771ac1"
-  integrity sha512-f1uhya0ZAjPYtDD58QkBB0R+uYdzHPei7cDxJyQQIHt5acdhyGXaSXl2nDLzWHLwGFbZcHxQtkJS8mmNwnxTvw==
+cssesc@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
+  integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
+
+cssnano-preset-default@^4.0.0, cssnano-preset-default@^4.0.7:
+  version "4.0.7"
+  resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76"
+  integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==
   dependencies:
     css-declaration-sorter "^4.0.1"
     cssnano-util-raw-cache "^4.0.1"
     postcss "^7.0.0"
-    postcss-calc "^7.0.0"
-    postcss-colormin "^4.0.2"
+    postcss-calc "^7.0.1"
+    postcss-colormin "^4.0.3"
     postcss-convert-values "^4.0.1"
-    postcss-discard-comments "^4.0.1"
+    postcss-discard-comments "^4.0.2"
     postcss-discard-duplicates "^4.0.2"
     postcss-discard-empty "^4.0.1"
     postcss-discard-overridden "^4.0.1"
-    postcss-merge-longhand "^4.0.9"
-    postcss-merge-rules "^4.0.2"
+    postcss-merge-longhand "^4.0.11"
+    postcss-merge-rules "^4.0.3"
     postcss-minify-font-values "^4.0.2"
-    postcss-minify-gradients "^4.0.1"
-    postcss-minify-params "^4.0.1"
-    postcss-minify-selectors "^4.0.1"
+    postcss-minify-gradients "^4.0.2"
+    postcss-minify-params "^4.0.2"
+    postcss-minify-selectors "^4.0.2"
     postcss-normalize-charset "^4.0.1"
-    postcss-normalize-display-values "^4.0.1"
-    postcss-normalize-positions "^4.0.1"
-    postcss-normalize-repeat-style "^4.0.1"
-    postcss-normalize-string "^4.0.1"
-    postcss-normalize-timing-functions "^4.0.1"
+    postcss-normalize-display-values "^4.0.2"
+    postcss-normalize-positions "^4.0.2"
+    postcss-normalize-repeat-style "^4.0.2"
+    postcss-normalize-string "^4.0.2"
+    postcss-normalize-timing-functions "^4.0.2"
     postcss-normalize-unicode "^4.0.1"
     postcss-normalize-url "^4.0.1"
-    postcss-normalize-whitespace "^4.0.1"
-    postcss-ordered-values "^4.1.1"
-    postcss-reduce-initial "^4.0.2"
-    postcss-reduce-transforms "^4.0.1"
-    postcss-svgo "^4.0.1"
+    postcss-normalize-whitespace "^4.0.2"
+    postcss-ordered-values "^4.1.2"
+    postcss-reduce-initial "^4.0.3"
+    postcss-reduce-transforms "^4.0.2"
+    postcss-svgo "^4.0.2"
     postcss-unique-selectors "^4.0.1"
 
 cssnano-util-get-arguments@^4.0.0:
@@ -2702,17 +2885,17 @@ cssnano-util-same-parent@^4.0.0:
   resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3"
   integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==
 
-cssnano@^4.0.0, cssnano@^4.1.7:
-  version "4.1.7"
-  resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.7.tgz#0bf112294bec103ab5f68d3f805732c8325a0b1b"
-  integrity sha512-AiXL90l+MDuQmRNyypG2P7ux7K4XklxYzNNUd5HXZCNcH8/N9bHPcpN97v8tXgRVeFL/Ed8iP8mVmAAu0ZpT7A==
+cssnano@^4.0.0, cssnano@^4.1.10:
+  version "4.1.10"
+  resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2"
+  integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==
   dependencies:
     cosmiconfig "^5.0.0"
-    cssnano-preset-default "^4.0.5"
+    cssnano-preset-default "^4.0.7"
     is-resolvable "^1.0.0"
     postcss "^7.0.0"
 
-csso@^3.5.0:
+csso@^3.5.1:
   version "3.5.1"
   resolved "https://registry.yarnpkg.com/csso/-/csso-3.5.1.tgz#7b9eb8be61628973c1b261e169d2f024008e758b"
   integrity sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==
@@ -2720,17 +2903,22 @@ csso@^3.5.0:
     css-tree "1.0.0-alpha.29"
 
 cssom@0.3.x, cssom@^0.3.4:
-  version "0.3.4"
-  resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.4.tgz#8cd52e8a3acfd68d3aed38ee0a640177d2f9d797"
-  integrity sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog==
+  version "0.3.6"
+  resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.6.tgz#f85206cee04efa841f3c5982a74ba96ab20d65ad"
+  integrity sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A==
 
 cssstyle@^1.1.1:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.1.1.tgz#18b038a9c44d65f7a8e428a653b9f6fe42faf5fb"
-  integrity sha512-364AI1l/M5TYcFH83JnOH/pSqgaNnKmYgKrm0didZMGKWjQB60dymwWy1rKUgL3J1ffdq9xVi2yGLHdSjjSNog==
+  version "1.2.2"
+  resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.2.2.tgz#427ea4d585b18624f6fdbf9de7a2a1a3ba713077"
+  integrity sha512-43wY3kl1CVQSvL7wUY1qXkxVGkStjpkDmVjiIKX8R97uhajy8Bybay78uOtqvh7Q5GK75dNPfW0geWjE6qQQow==
   dependencies:
     cssom "0.3.x"
 
+current-script-polyfill@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/current-script-polyfill/-/current-script-polyfill-1.0.0.tgz#f31cf7e4f3e218b0726e738ca92a02d3488ef615"
+  integrity sha1-8xz35PPiGLBybnOMqSoC00iO9hU=
+
 currently-unhandled@^0.4.1:
   version "0.4.1"
   resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
@@ -2738,10 +2926,10 @@ currently-unhandled@^0.4.1:
   dependencies:
     array-find-index "^1.0.1"
 
-custom-event-polyfill@^1.0.6:
-  version "1.0.6"
-  resolved "https://registry.yarnpkg.com/custom-event-polyfill/-/custom-event-polyfill-1.0.6.tgz#6b026e81cd9f7bc896bd6b016a427407bb068db1"
-  integrity sha512-3FxpFlzGcHrDykwWu+xWVXZ8PfykM/9/bI3zXb953sh+AjInZWcQmrnmvPoZgiqNjmbtTm10PWvYqvRW527x6g==
+custom-event-polyfill@^1.0.7:
+  version "1.0.7"
+  resolved "https://registry.yarnpkg.com/custom-event-polyfill/-/custom-event-polyfill-1.0.7.tgz#9bc993ddda937c1a30ccd335614c6c58c4f87aee"
+  integrity sha512-TDDkd5DkaZxZFM8p+1I3yAlvM3rSr1wbrOliG4yJiwinMZN8z/iGL7BTlDkrJcYTmgUSb4ywVCc3ZaUtOtC76w==
 
 cyclist@~0.2.2:
   version "0.2.2"
@@ -2779,7 +2967,7 @@ de-indent@^1.0.2:
   resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d"
   integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=
 
-debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8:
+debug@2.6.9, debug@^2.2.0, debug@^2.3.3:
   version "2.6.9"
   resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
   integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
@@ -2793,32 +2981,25 @@ debug@3.1.0, debug@=3.1.0:
   dependencies:
     ms "2.0.0"
 
-debug@^3.1.0, debug@^3.2.5:
+debug@^3.1.0, debug@^3.2.5, debug@^3.2.6:
   version "3.2.6"
   resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
   integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
   dependencies:
     ms "^2.1.1"
 
-debug@^4.1.0:
-  version "4.1.0"
-  resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.0.tgz#373687bffa678b38b1cd91f861b63850035ddc87"
-  integrity sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==
+debug@^4.1.0, debug@^4.1.1:
+  version "4.1.1"
+  resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
+  integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
   dependencies:
     ms "^2.1.1"
 
-decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:
+decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
   integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
 
-decamelize@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-2.0.0.tgz#656d7bbc8094c4c788ea53c5840908c9c7d063c7"
-  integrity sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==
-  dependencies:
-    xregexp "4.0.0"
-
 decode-uri-component@^0.2.0:
   version "0.2.0"
   resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
@@ -2856,12 +3037,20 @@ deepmerge@^2.1.0:
   resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.2.1.tgz#5d3ff22a01c00f645405a2fbc17d0778a1801170"
   integrity sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==
 
-default-gateway@^2.6.0:
-  version "2.7.2"
-  resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-2.7.2.tgz#b7ef339e5e024b045467af403d50348db4642d0f"
-  integrity sha512-lAc4i9QJR0YHSDFdzeBQKfZ1SRDG3hsJNEkrpcZa8QhBfidLAilT60BDEIVUUGqosFp425KOgB3uYqcnQrWafQ==
+default-gateway@^4.2.0:
+  version "4.2.0"
+  resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b"
+  integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==
+  dependencies:
+    execa "^1.0.0"
+    ip-regex "^2.1.0"
+
+default-gateway@^5.0.2:
+  version "5.0.2"
+  resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-5.0.2.tgz#d2d8a13d6fee406d9365d19ec9adccb8a60b82b3"
+  integrity sha512-wXuT0q8T5vxQNecrTgz/KbU2lPUMRc98I9Y5dnH3yhFB3BGYqtADK4lhivLlG0OfjhmfKx1PGILG2jR4zjI+WA==
   dependencies:
-    execa "^0.10.0"
+    execa "^1.0.0"
     ip-regex "^2.1.0"
 
 defaults@^1.0.3:
@@ -2871,7 +3060,7 @@ defaults@^1.0.3:
   dependencies:
     clone "^1.0.2"
 
-define-properties@^1.1.2:
+define-properties@^1.1.2, define-properties@^1.1.3:
   version "1.1.3"
   resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
   integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
@@ -2900,17 +3089,18 @@ define-property@^2.0.2:
     is-descriptor "^1.0.2"
     isobject "^3.0.1"
 
-del@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5"
-  integrity sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=
+del@^4.1.1:
+  version "4.1.1"
+  resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4"
+  integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==
   dependencies:
+    "@types/glob" "^7.1.1"
     globby "^6.1.0"
-    is-path-cwd "^1.0.0"
-    is-path-in-cwd "^1.0.0"
-    p-map "^1.1.1"
-    pify "^3.0.0"
-    rimraf "^2.2.8"
+    is-path-cwd "^2.0.0"
+    is-path-in-cwd "^2.0.0"
+    p-map "^2.0.0"
+    pify "^4.0.1"
+    rimraf "^2.6.3"
 
 delayed-stream@~1.0.0:
   version "1.0.0"
@@ -2950,7 +3140,7 @@ detect-libc@^1.0.2:
   resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
   integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=
 
-detect-node@^2.0.3:
+detect-node@^2.0.4:
   version "2.0.4"
   resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c"
   integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==
@@ -2974,12 +3164,11 @@ diffie-hellman@^5.0.0:
     miller-rabin "^4.0.0"
     randombytes "^2.0.0"
 
-dir-glob@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034"
-  integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==
+dir-glob@^2.0.0, dir-glob@^2.2.2:
+  version "2.2.2"
+  resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4"
+  integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==
   dependencies:
-    arrify "^1.0.1"
     path-type "^3.0.0"
 
 django-channels@^1.1.6:
@@ -3021,7 +3210,7 @@ doctypes@^1.1.0:
   resolved "https://registry.yarnpkg.com/doctypes/-/doctypes-1.1.0.tgz#ea80b106a87538774e8a3a4a5afe293de489e0a9"
   integrity sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=
 
-dom-converter@~0.2:
+dom-converter@^0.2:
   version "0.2.0"
   resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768"
   integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==
@@ -3033,29 +3222,24 @@ dom-event-types@^1.0.0:
   resolved "https://registry.yarnpkg.com/dom-event-types/-/dom-event-types-1.0.0.tgz#5830a0a29e1bf837fe50a70cd80a597232813cae"
   integrity sha512-2G2Vwi2zXTHBGqXHsJ4+ak/iP0N8Ar+G8a7LiD2oup5o4sQWytwqqrZu/O6hIMV0KMID2PL69OhpshLO0n7UJQ==
 
-dom-serializer@0, dom-serializer@~0.1.0:
-  version "0.1.0"
-  resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82"
-  integrity sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=
+dom-serializer@0, dom-serializer@~0.1.1:
+  version "0.1.1"
+  resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0"
+  integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==
   dependencies:
-    domelementtype "~1.1.1"
-    entities "~1.1.1"
+    domelementtype "^1.3.0"
+    entities "^1.1.1"
 
 domain-browser@^1.1.1:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
   integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==
 
-domelementtype@1, domelementtype@^1.3.0:
+domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1:
   version "1.3.1"
   resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f"
   integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==
 
-domelementtype@~1.1.1:
-  version "1.1.3"
-  resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b"
-  integrity sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=
-
 domexception@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90"
@@ -3063,13 +3247,6 @@ domexception@^1.0.1:
   dependencies:
     webidl-conversions "^4.0.2"
 
-domhandler@2.1:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594"
-  integrity sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=
-  dependencies:
-    domelementtype "1"
-
 domhandler@^2.3.0:
   version "2.4.2"
   resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803"
@@ -3077,13 +3254,6 @@ domhandler@^2.3.0:
   dependencies:
     domelementtype "1"
 
-domutils@1.1:
-  version "1.1.6"
-  resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485"
-  integrity sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=
-  dependencies:
-    domelementtype "1"
-
 domutils@1.5.1:
   version "1.5.1"
   resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf"
@@ -3107,15 +3277,25 @@ dot-prop@^4.1.1:
   dependencies:
     is-obj "^1.0.0"
 
+dotenv-expand@^5.1.0:
+  version "5.1.0"
+  resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0"
+  integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==
+
+dotenv@^7.0.0:
+  version "7.0.0"
+  resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-7.0.0.tgz#a2be3cd52736673206e8a85fb5210eea29628e7c"
+  integrity sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==
+
 duplexer@^0.1.1:
   version "0.1.1"
   resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
   integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=
 
 duplexify@^3.4.2, duplexify@^3.6.0:
-  version "3.6.1"
-  resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.6.1.tgz#b1a7a29c4abfd639585efaecce80d666b1e34125"
-  integrity sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==
+  version "3.7.1"
+  resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309"
+  integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==
   dependencies:
     end-of-stream "^1.0.0"
     inherits "^2.0.1"
@@ -3155,14 +3335,14 @@ ee-first@1.1.1:
   integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
 
 ejs@^2.6.1:
-  version "2.6.1"
-  resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.1.tgz#498ec0d495655abc6f23cd61868d926464071aa0"
-  integrity sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ==
+  version "2.6.2"
+  resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.6.2.tgz#3a32c63d1cd16d11266cd4703b14fec4e74ab4f6"
+  integrity sha512-PcW2a0tyTuPHz3tWyYqtK6r1fZ3gp+3Sop8Ph+ZYN81Ob5rwmbHEzaqs10N3BEsaGTkh/ooniXK+WwszGlc2+Q==
 
-electron-to-chromium@^1.3.47, electron-to-chromium@^1.3.92:
-  version "1.3.95"
-  resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.95.tgz#79fac438813ca7f3db182a525c2ab432934f6484"
-  integrity sha512-0JZEDKOQAE05EO/4rk3vLAE+PYFI9OLCVLAS4QAq1y+Bb2y1N6MyQJz62ynzHN/y0Ka/nO5jVJcahbCEdfiXLQ==
+electron-to-chromium@^1.3.150:
+  version "1.3.163"
+  resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.163.tgz#7fc3d637f5d8fa4ca4a052cad0de7675bd98b911"
+  integrity sha512-uCEoqQeKrjlhUSUudY0XvyNVDhWR5XmnCIV0WXr2Qo9PVzEVXI75LHGtzwro9Qh8NNetRjSitrm8AfQvPGaSqA==
 
 elliptic@^6.0.0:
   version "6.4.1"
@@ -3177,6 +3357,11 @@ elliptic@^6.0.0:
     minimalistic-assert "^1.0.0"
     minimalistic-crypto-utils "^1.0.0"
 
+emoji-regex@^7.0.1:
+  version "7.0.3"
+  resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
+  integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
+
 emojis-list@^2.0.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
@@ -3229,18 +3414,19 @@ error-stack-parser@^2.0.0:
   dependencies:
     stackframe "^1.0.4"
 
-es-abstract@^1.4.3, es-abstract@^1.5.1, es-abstract@^1.6.1:
-  version "1.12.0"
-  resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165"
-  integrity sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==
+es-abstract@^1.12.0, es-abstract@^1.4.3, es-abstract@^1.5.1:
+  version "1.13.0"
+  resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9"
+  integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==
   dependencies:
-    es-to-primitive "^1.1.1"
+    es-to-primitive "^1.2.0"
     function-bind "^1.1.1"
-    has "^1.0.1"
-    is-callable "^1.1.3"
+    has "^1.0.3"
+    is-callable "^1.1.4"
     is-regex "^1.0.4"
+    object-keys "^1.0.12"
 
-es-to-primitive@^1.1.1:
+es-to-primitive@^1.2.0:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377"
   integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==
@@ -3260,9 +3446,9 @@ escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1
   integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
 
 escodegen@^1.11.0:
-  version "1.11.0"
-  resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.0.tgz#b27a9389481d5bfd5bec76f7bb1eb3f8f4556589"
-  integrity sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==
+  version "1.11.1"
+  resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.1.tgz#c485ff8d6b4cdb89e27f4a856e91f118401ca510"
+  integrity sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==
   dependencies:
     esprima "^3.1.3"
     estraverse "^4.2.0"
@@ -3271,10 +3457,10 @@ escodegen@^1.11.0:
   optionalDependencies:
     source-map "~0.6.1"
 
-eslint-loader@^2.1.1:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-2.1.1.tgz#2a9251523652430bfdd643efdb0afc1a2a89546a"
-  integrity sha512-1GrJFfSevQdYpoDzx8mEE2TDWsb/zmFuY09l6hURg1AeFIKQOvZ+vH0UPjzmd1CZIbfTV5HUkMeBmFiDBkgIsQ==
+eslint-loader@^2.1.2:
+  version "2.1.2"
+  resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-2.1.2.tgz#453542a1230d6ffac90e4e7cb9cadba9d851be68"
+  integrity sha512-rA9XiXEOilLYPOIInvVH5S/hYfyTPyxag6DZhoQOduM+3TkghAEQ3VcFO8VnX4J4qg/UIBzp72aOf/xvYmpmsg==
   dependencies:
     loader-fs-cache "^1.0.0"
     loader-utils "^1.0.2"
@@ -3313,9 +3499,9 @@ eslint-scope@^3.7.1:
     estraverse "^4.1.1"
 
 eslint-scope@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.0.tgz#50bf3071e9338bcdc43331794a0cb533f0136172"
-  integrity sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==
+  version "4.0.3"
+  resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848"
+  integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==
   dependencies:
     esrecurse "^4.1.0"
     estraverse "^4.1.1"
@@ -3427,14 +3613,14 @@ event-pubsub@4.3.0:
   integrity sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==
 
 eventemitter3@^3.0.0:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163"
-  integrity sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==
+  version "3.1.2"
+  resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7"
+  integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==
 
-events@^1.0.0:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
-  integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=
+events@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88"
+  integrity sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==
 
 eventsource@^1.0.7:
   version "1.0.7"
@@ -3451,19 +3637,6 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
     md5.js "^1.3.4"
     safe-buffer "^5.1.1"
 
-execa@^0.10.0:
-  version "0.10.0"
-  resolved "https://registry.yarnpkg.com/execa/-/execa-0.10.0.tgz#ff456a8f53f90f8eccc71a96d11bdfc7f082cb50"
-  integrity sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==
-  dependencies:
-    cross-spawn "^6.0.0"
-    get-stream "^3.0.0"
-    is-stream "^1.1.0"
-    npm-run-path "^2.0.0"
-    p-finally "^1.0.0"
-    signal-exit "^3.0.0"
-    strip-eof "^1.0.0"
-
 execa@^0.7.0:
   version "0.7.0"
   resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777"
@@ -3516,39 +3689,39 @@ expand-brackets@^2.1.4:
     snapdragon "^0.8.1"
     to-regex "^3.0.1"
 
-express@^4.16.2, express@^4.16.3:
-  version "4.16.4"
-  resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e"
-  integrity sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==
+express@^4.16.3, express@^4.17.1:
+  version "4.17.1"
+  resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134"
+  integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==
   dependencies:
-    accepts "~1.3.5"
+    accepts "~1.3.7"
     array-flatten "1.1.1"
-    body-parser "1.18.3"
-    content-disposition "0.5.2"
+    body-parser "1.19.0"
+    content-disposition "0.5.3"
     content-type "~1.0.4"
-    cookie "0.3.1"
+    cookie "0.4.0"
     cookie-signature "1.0.6"
     debug "2.6.9"
     depd "~1.1.2"
     encodeurl "~1.0.2"
     escape-html "~1.0.3"
     etag "~1.8.1"
-    finalhandler "1.1.1"
+    finalhandler "~1.1.2"
     fresh "0.5.2"
     merge-descriptors "1.0.1"
     methods "~1.1.2"
     on-finished "~2.3.0"
-    parseurl "~1.3.2"
+    parseurl "~1.3.3"
     path-to-regexp "0.1.7"
-    proxy-addr "~2.0.4"
-    qs "6.5.2"
-    range-parser "~1.2.0"
+    proxy-addr "~2.0.5"
+    qs "6.7.0"
+    range-parser "~1.2.1"
     safe-buffer "5.1.2"
-    send "0.16.2"
-    serve-static "1.13.2"
-    setprototypeof "1.1.0"
-    statuses "~1.4.0"
-    type-is "~1.6.16"
+    send "0.17.1"
+    serve-static "1.14.1"
+    setprototypeof "1.1.1"
+    statuses "~1.5.0"
+    type-is "~1.6.18"
     utils-merge "1.0.1"
     vary "~1.1.2"
 
@@ -3615,10 +3788,10 @@ fast-deep-equal@^2.0.1:
   resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
   integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=
 
-fast-glob@^2.0.2:
-  version "2.2.4"
-  resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.4.tgz#e54f4b66d378040e0e4d6a68ec36bbc5b04363c0"
-  integrity sha512-FjK2nCGI/McyzgNtTESqaWP3trPvHyRyoyY70hxjc3oKPNmDe8taohLZpoVKoUjW85tbU5txaYUZCNtVzygl1g==
+fast-glob@^2.2.6:
+  version "2.2.7"
+  resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d"
+  integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==
   dependencies:
     "@mrmlnc/readdir-enhanced" "^2.2.1"
     "@nodelib/fs.stat" "^1.1.2"
@@ -3650,13 +3823,13 @@ faye-websocket@^0.10.0:
     websocket-driver ">=0.5.1"
 
 faye-websocket@~0.11.1:
-  version "0.11.1"
-  resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.1.tgz#f0efe18c4f56e4f40afc7e06c719fd5ee6188f38"
-  integrity sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=
+  version "0.11.3"
+  resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e"
+  integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==
   dependencies:
     websocket-driver ">=0.5.1"
 
-figgy-pudding@^3.1.0, figgy-pudding@^3.5.1:
+figgy-pudding@^3.5.1:
   version "3.5.1"
   resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790"
   integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==
@@ -3676,10 +3849,10 @@ file-entry-cache@^2.0.0:
     flat-cache "^1.2.1"
     object-assign "^4.0.1"
 
-file-loader@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-2.0.0.tgz#39749c82f020b9e85901dcff98e8004e6401cfde"
-  integrity sha512-YCsBfd1ZGCyonOKLxPiKPdu+8ld9HAaMEvJewzz+b2eTF7uL5Zm/HdBF6FjCrpCMRq25Mi0U1gl4pwn2TlH7hQ==
+file-loader@^3.0.1:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-3.0.1.tgz#f8e0ba0b599918b51adfe45d66d1e771ad560faa"
+  integrity sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw==
   dependencies:
     loader-utils "^1.0.2"
     schema-utils "^1.0.0"
@@ -3699,19 +3872,27 @@ fill-range@^4.0.0:
     repeat-string "^1.6.1"
     to-regex-range "^2.1.0"
 
-finalhandler@1.1.1:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105"
-  integrity sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==
+finalhandler@~1.1.2:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d"
+  integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==
   dependencies:
     debug "2.6.9"
     encodeurl "~1.0.2"
     escape-html "~1.0.3"
     on-finished "~2.3.0"
-    parseurl "~1.3.2"
-    statuses "~1.4.0"
+    parseurl "~1.3.3"
+    statuses "~1.5.0"
     unpipe "~1.0.0"
 
+find-babel-config@^1.1.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/find-babel-config/-/find-babel-config-1.2.0.tgz#a9b7b317eb5b9860cda9d54740a8c8337a2283a2"
+  integrity sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA==
+  dependencies:
+    json5 "^0.5.1"
+    path-exists "^3.0.0"
+
 find-cache-dir@^0.1.1:
   version "0.1.1"
   resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9"
@@ -3731,12 +3912,12 @@ find-cache-dir@^1.0.0:
     pkg-dir "^2.0.0"
 
 find-cache-dir@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.0.0.tgz#4c1faed59f45184530fb9d7fa123a4d04a98472d"
-  integrity sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA==
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7"
+  integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==
   dependencies:
     commondir "^1.0.1"
-    make-dir "^1.0.0"
+    make-dir "^2.0.0"
     pkg-dir "^3.0.0"
 
 find-up@^1.0.0:
@@ -3779,19 +3960,33 @@ flat-cache@^1.2.1:
     write "^0.2.1"
 
 flush-write-stream@^1.0.0:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.0.3.tgz#c5d586ef38af6097650b49bc41b55fabb19f35bd"
-  integrity sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8"
+  integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==
   dependencies:
-    inherits "^2.0.1"
-    readable-stream "^2.0.4"
+    inherits "^2.0.3"
+    readable-stream "^2.3.6"
+
+follow-redirects@1.5.10:
+  version "1.5.10"
+  resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a"
+  integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==
+  dependencies:
+    debug "=3.1.0"
+
+follow-redirects@^1.0.0:
+  version "1.7.0"
+  resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.7.0.tgz#489ebc198dc0e7f64167bd23b03c4c19b5784c76"
+  integrity sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==
+  dependencies:
+    debug "^3.2.6"
 
-follow-redirects@^1.0.0, follow-redirects@^1.3.0:
-  version "1.5.10"
-  resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a"
-  integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==
+fomantic-ui-css@^2.7:
+  version "2.7.6"
+  resolved "https://registry.yarnpkg.com/fomantic-ui-css/-/fomantic-ui-css-2.7.6.tgz#8af84c0afce21142bf663979cf7452155562e6e2"
+  integrity sha512-oruD/DoMDZGSfK6fE3EnWKGad3vbhpiOtXrCwS0Bi+3QWXHwQsDU0k6P0Q8HzawoLXqHff83LmTDJWST5ARTxw==
   dependencies:
-    debug "=3.1.0"
+    jquery "^3.4.0"
 
 for-in@^0.1.3:
   version "0.1.8"
@@ -3841,15 +4036,6 @@ fresh@0.5.2:
   resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
   integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
 
-friendly-errors-webpack-plugin@^1.7.0:
-  version "1.7.0"
-  resolved "https://registry.yarnpkg.com/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.0.tgz#efc86cbb816224565861a1be7a9d84d0aafea136"
-  integrity sha512-K27M3VK30wVoOarP651zDmb93R9zF28usW4ocaK3mfQeIEI5BPht/EzZs5E8QLLwbLRJQMwscAjDxYPb1FuNiw==
-  dependencies:
-    chalk "^1.1.3"
-    error-stack-parser "^2.0.0"
-    string-width "^2.0.0"
-
 from2@^2.1.0:
   version "2.3.0"
   resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af"
@@ -3868,9 +4054,9 @@ fs-extra@^7.0.1:
     universalify "^0.1.0"
 
 fs-minipass@^1.2.5:
-  version "1.2.5"
-  resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d"
-  integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==
+  version "1.2.6"
+  resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.6.tgz#2c5cc30ded81282bfe8a0d7c7c1853ddeb102c07"
+  integrity sha512-crhvyXcMejjv3Z5d2Fa9sf5xLYVCF5O1c71QxbVnbLsmYMBEvDAftewesN/HhY03YRoA7zOMxjNGrF5svGaaeQ==
   dependencies:
     minipass "^2.2.1"
 
@@ -3889,25 +4075,25 @@ fs.realpath@^1.0.0:
   resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
   integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
 
-fsevents@^1.2.2:
-  version "1.2.4"
-  resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426"
-  integrity sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==
+fsevents@^1.2.7:
+  version "1.2.9"
+  resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f"
+  integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==
   dependencies:
-    nan "^2.9.2"
-    node-pre-gyp "^0.10.0"
+    nan "^2.12.1"
+    node-pre-gyp "^0.12.0"
 
-fstream@^1.0.0, fstream@^1.0.2:
-  version "1.0.11"
-  resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171"
-  integrity sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=
+fstream@^1.0.0, fstream@^1.0.12:
+  version "1.0.12"
+  resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045"
+  integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==
   dependencies:
     graceful-fs "^4.1.2"
     inherits "~2.0.0"
     mkdirp ">=0.5 0"
     rimraf "2"
 
-function-bind@^1.0.2, function-bind@^1.1.0, function-bind@^1.1.1:
+function-bind@^1.0.2, function-bind@^1.1.1:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
   integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
@@ -3943,6 +4129,11 @@ get-caller-file@^1.0.1:
   resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
   integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==
 
+get-caller-file@^2.0.1:
+  version "2.0.5"
+  resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
+  integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
+
 get-func-name@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41"
@@ -3982,6 +4173,14 @@ getpass@^0.1.1:
   dependencies:
     assert-plus "^1.0.0"
 
+glob-all@^3.1.0:
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/glob-all/-/glob-all-3.1.0.tgz#8913ddfb5ee1ac7812656241b03d5217c64b02ab"
+  integrity sha1-iRPd+17hrHgSZWJBsD1SF8ZLAqs=
+  dependencies:
+    glob "^7.0.5"
+    yargs "~1.2.6"
+
 glob-parent@^3.1.0:
   version "3.1.0"
   resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
@@ -4007,10 +4206,10 @@ glob@7.1.2:
     once "^1.3.0"
     path-is-absolute "^1.0.0"
 
-glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.2, glob@~7.1.1:
-  version "7.1.3"
-  resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1"
-  integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==
+glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.2, glob@^7.1.3, glob@~7.1.1:
+  version "7.1.4"
+  resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255"
+  integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==
   dependencies:
     fs.realpath "^1.0.0"
     inflight "^1.0.4"
@@ -4020,9 +4219,9 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.2, glob@~7.1.1:
     path-is-absolute "^1.0.0"
 
 globals@^11.0.1, globals@^11.1.0:
-  version "11.9.0"
-  resolved "https://registry.yarnpkg.com/globals/-/globals-11.9.0.tgz#bde236808e987f290768a93d065060d78e6ab249"
-  integrity sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg==
+  version "11.12.0"
+  resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
+  integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
 
 globby@^6.1.0:
   version "6.1.0"
@@ -4047,18 +4246,19 @@ globby@^7.1.1:
     pify "^3.0.0"
     slash "^1.0.0"
 
-globby@^8.0.1:
-  version "8.0.1"
-  resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.1.tgz#b5ad48b8aa80b35b814fc1281ecc851f1d2b5b50"
-  integrity sha512-oMrYrJERnKBLXNLVTqhm3vPEdJ/b2ZE28xN4YARiix1NOIOBPEpOUnm844K1iu/BkphCaf2WNFwMszv8Soi1pw==
-  dependencies:
-    array-union "^1.0.1"
-    dir-glob "^2.0.0"
-    fast-glob "^2.0.2"
-    glob "^7.1.2"
-    ignore "^3.3.5"
-    pify "^3.0.0"
-    slash "^1.0.0"
+globby@^9.2.0:
+  version "9.2.0"
+  resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d"
+  integrity sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==
+  dependencies:
+    "@types/glob" "^7.1.1"
+    array-union "^1.0.2"
+    dir-glob "^2.2.2"
+    fast-glob "^2.2.6"
+    glob "^7.1.3"
+    ignore "^4.0.3"
+    pify "^4.0.1"
+    slash "^2.0.0"
 
 globule@^1.0.0:
   version "1.2.1"
@@ -4069,7 +4269,7 @@ globule@^1.0.0:
     lodash "~4.17.10"
     minimatch "~3.0.2"
 
-graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6:
+graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6:
   version "4.1.15"
   resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00"
   integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==
@@ -4080,17 +4280,17 @@ growl@1.10.5:
   integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==
 
 gzip-size@^5.0.0:
-  version "5.0.0"
-  resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.0.0.tgz#a55ecd99222f4c48fd8c01c625ce3b349d0a0e80"
-  integrity sha512-5iI7omclyqrnWw4XbXAmGhPsABkSIDQonv2K0h61lybgofWa6iZyvrI3r2zsJH4P8Nb64fFVzlvfhs0g7BBxAA==
+  version "5.1.1"
+  resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274"
+  integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==
   dependencies:
     duplexer "^0.1.1"
-    pify "^3.0.0"
+    pify "^4.0.1"
 
-handle-thing@^1.2.5:
-  version "1.2.5"
-  resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4"
-  integrity sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=
+handle-thing@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754"
+  integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==
 
 har-schema@^2.0.0:
   version "2.0.0"
@@ -4158,7 +4358,7 @@ has-values@^1.0.0:
     is-number "^3.0.0"
     kind-of "^4.0.0"
 
-has@^1.0.0, has@^1.0.1:
+has@^1.0.0, has@^1.0.1, has@^1.0.3:
   version "1.0.3"
   resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
   integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
@@ -4201,6 +4401,11 @@ hex-color-regex@^1.1.0:
   resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e"
   integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==
 
+highlight.js@^9.6.0:
+  version "9.15.8"
+  resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.15.8.tgz#f344fda123f36f1a65490e932cf90569e4999971"
+  integrity sha512-RrapkKQWwE+wKdF73VsOa2RQdIoO3mxwJ4P8mhbI6KYJUraUHRKM5w5zQQKXNk0xNL4UVRdulV9SBJcmzJNzVA==
+
 hmac-drbg@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
@@ -4210,16 +4415,6 @@ hmac-drbg@^1.0.0:
     minimalistic-assert "^1.0.0"
     minimalistic-crypto-utils "^1.0.1"
 
-hoek@5.x.x:
-  version "5.0.4"
-  resolved "https://registry.yarnpkg.com/hoek/-/hoek-5.0.4.tgz#0f7fa270a1cafeb364a4b2ddfaa33f864e4157da"
-  integrity sha512-Alr4ZQgoMlnere5FZJsIyfIjORBqZll5POhDsF4q64dPuJR6rNxXdDxtHSQq8OXRurhmx+PWYEE8bXRROY8h0w==
-
-hoek@6.x.x:
-  version "6.1.2"
-  resolved "https://registry.yarnpkg.com/hoek/-/hoek-6.1.2.tgz#99e6d070561839de74ee427b61aa476bd6bddfd6"
-  integrity sha512-6qhh/wahGYZHFSFw12tBbJw5fsAhhwrrG/y3Cs0YMTv2WzMnL0oLPnQJjv1QJvEfylRSOFuP+xCu+tdx0tD16Q==
-
 hoopy@^0.1.2:
   version "0.1.4"
   resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d"
@@ -4231,9 +4426,9 @@ hosted-git-info@^2.1.4:
   integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==
 
 howler@^2.0.14:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/howler/-/howler-2.1.1.tgz#b8ae44b83f4b8a5b5ef354030ed0927314d8a996"
-  integrity sha512-9nwyDCGxhAGMmNXDfMLv0M/uS/WUg2//jG6t96D8DqbbsVZgXQzsP/ZMItbWO/Fqg7Gg69kOv3xVSDzJdd7aqA==
+  version "2.1.2"
+  resolved "https://registry.yarnpkg.com/howler/-/howler-2.1.2.tgz#8433a09d8fe84132a3e726e05cb2bd352ef8bd49"
+  integrity sha512-oKrTFaVXsDRoB/jik7cEpWKTj7VieoiuzMYJ7E/EU5ayvmpRhumCv3YQ3823zi9VTJkSWAhbryHnlZAionGAJg==
 
 hpack.js@^2.1.6:
   version "2.1.6"
@@ -4267,7 +4462,7 @@ html-encoding-sniffer@^1.0.2:
   dependencies:
     whatwg-encoding "^1.0.1"
 
-html-entities@^1.2.0:
+html-entities@^1.2.1:
   version "1.2.1"
   resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f"
   integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=
@@ -4285,6 +4480,11 @@ html-minifier@^3.2.3:
     relateurl "0.2.x"
     uglify-js "3.4.x"
 
+html-tags@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-2.0.0.tgz#10b30a386085f43cede353cc8fa7cb0deeea668b"
+  integrity sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=
+
 html-webpack-plugin@^3.2.0:
   version "3.2.0"
   resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b"
@@ -4298,34 +4498,35 @@ html-webpack-plugin@^3.2.0:
     toposort "^1.0.0"
     util.promisify "1.0.0"
 
-htmlparser2@^3.8.2, htmlparser2@^3.9.1:
-  version "3.10.0"
-  resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.0.tgz#5f5e422dcf6119c0d983ed36260ce9ded0bee464"
-  integrity sha512-J1nEUGv+MkXS0weHNWVKJJ+UrLfePxRWpN3C9bEi9fLxL2+ggW94DQvgYVXsaT30PGwYRIZKNZXuyMhp3Di4bQ==
+htmlparser2@^3.10.0, htmlparser2@^3.3.0, htmlparser2@^3.8.2, htmlparser2@^3.9.1:
+  version "3.10.1"
+  resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f"
+  integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==
   dependencies:
-    domelementtype "^1.3.0"
+    domelementtype "^1.3.1"
     domhandler "^2.3.0"
     domutils "^1.5.1"
     entities "^1.1.1"
     inherits "^2.0.1"
-    readable-stream "^3.0.6"
-
-htmlparser2@~3.3.0:
-  version "3.3.0"
-  resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe"
-  integrity sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=
-  dependencies:
-    domelementtype "1"
-    domhandler "2.1"
-    domutils "1.1"
-    readable-stream "1.0"
+    readable-stream "^3.1.1"
 
 http-deceiver@^1.2.7:
   version "1.2.7"
   resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87"
   integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=
 
-http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3:
+http-errors@1.7.2, http-errors@~1.7.2:
+  version "1.7.2"
+  resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f"
+  integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==
+  dependencies:
+    depd "~1.1.2"
+    inherits "2.0.3"
+    setprototypeof "1.1.1"
+    statuses ">= 1.5.0 < 2"
+    toidentifier "1.0.0"
+
+http-errors@~1.6.2:
   version "1.6.3"
   resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
   integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=
@@ -4335,22 +4536,22 @@ http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3:
     setprototypeof "1.1.0"
     statuses ">= 1.4.0 < 2"
 
-http-parser-js@>=0.4.0:
-  version "0.5.0"
-  resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.0.tgz#d65edbede84349d0dc30320815a15d39cc3cbbd8"
-  integrity sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==
+"http-parser-js@>=0.4.0 <0.4.11":
+  version "0.4.10"
+  resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4"
+  integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=
 
-http-proxy-middleware@~0.18.0:
-  version "0.18.0"
-  resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz#0987e6bb5a5606e5a69168d8f967a87f15dd8aab"
-  integrity sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q==
+http-proxy-middleware@^0.19.1:
+  version "0.19.1"
+  resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a"
+  integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==
   dependencies:
-    http-proxy "^1.16.2"
+    http-proxy "^1.17.0"
     is-glob "^4.0.0"
-    lodash "^4.17.5"
-    micromatch "^3.1.9"
+    lodash "^4.17.11"
+    micromatch "^3.1.10"
 
-http-proxy@^1.16.2:
+http-proxy@^1.17.0:
   version "1.17.0"
   resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a"
   integrity sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==
@@ -4378,13 +4579,6 @@ humanize@0.0.9:
   resolved "https://registry.yarnpkg.com/humanize/-/humanize-0.0.9.tgz#1994ffaecdfe9c441ed2bdac7452b7bb4c9e41a4"
   integrity sha1-GZT/rs3+nEQe0r2sdFK3u0yeQaQ=
 
-iconv-lite@0.4.23:
-  version "0.4.23"
-  resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63"
-  integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==
-  dependencies:
-    safer-buffer ">= 2.1.2 < 3"
-
 iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.4:
   version "0.4.24"
   resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
@@ -4405,9 +4599,9 @@ icss-utils@^2.1.0:
     postcss "^6.0.1"
 
 ieee754@^1.1.4:
-  version "1.1.12"
-  resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b"
-  integrity sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==
+  version "1.1.13"
+  resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
+  integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==
 
 iferr@^0.1.5:
   version "0.1.5"
@@ -4426,6 +4620,11 @@ ignore@^3.3.3, ignore@^3.3.5:
   resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043"
   integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==
 
+ignore@^4.0.3:
+  version "4.0.6"
+  resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
+  integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
+
 imagesloaded@4.1.4:
   version "4.1.4"
   resolved "https://registry.yarnpkg.com/imagesloaded/-/imagesloaded-4.1.4.tgz#1376efcd162bb768c34c3727ac89cc04051f3cc7"
@@ -4485,11 +4684,6 @@ indexes-of@^1.0.1:
   resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607"
   integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc=
 
-indexof@0.0.1:
-  version "0.0.1"
-  resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d"
-  integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=
-
 inflight@^1.0.4:
   version "1.0.6"
   resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
@@ -4533,18 +4727,18 @@ inquirer@^3.0.6:
     strip-ansi "^4.0.0"
     through "^2.3.6"
 
-internal-ip@^3.0.1:
-  version "3.0.1"
-  resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-3.0.1.tgz#df5c99876e1d2eb2ea2d74f520e3f669a00ece27"
-  integrity sha512-NXXgESC2nNVtU+pqmC9e6R8B1GpKxzsAQhffvh5AL79qKnodd+L7tnEQmTiUAVngqLalPbSqRA7XGIEL5nCd0Q==
+internal-ip@^4.3.0:
+  version "4.3.0"
+  resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907"
+  integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==
   dependencies:
-    default-gateway "^2.6.0"
-    ipaddr.js "^1.5.2"
+    default-gateway "^4.2.0"
+    ipaddr.js "^1.9.0"
 
 interpret@^1.0.1:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614"
-  integrity sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296"
+  integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==
 
 invariant@^2.2.2:
   version "2.2.4"
@@ -4573,15 +4767,10 @@ ip@^1.1.0, ip@^1.1.5:
   resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
   integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=
 
-ipaddr.js@1.8.0:
-  version "1.8.0"
-  resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.0.tgz#eaa33d6ddd7ace8f7f6fe0c9ca0440e706738b1e"
-  integrity sha1-6qM9bd16zo9/b+DJygRA5wZzix4=
-
-ipaddr.js@^1.5.2:
-  version "1.8.1"
-  resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.8.1.tgz#fa4b79fa47fd3def5e3b159825161c0a519c9427"
-  integrity sha1-+kt5+kf9Pe9eOxWYJRYcClGclCc=
+ipaddr.js@1.9.0, ipaddr.js@^1.9.0:
+  version "1.9.0"
+  resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65"
+  integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==
 
 is-absolute-url@^2.0.0:
   version "2.1.0"
@@ -4624,14 +4813,12 @@ is-buffer@^1.1.5:
   resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
   integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
 
-is-builtin-module@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe"
-  integrity sha1-VAVy0096wxGfj3bDDLwbHgN6/74=
-  dependencies:
-    builtin-modules "^1.0.0"
+is-buffer@^2.0.2:
+  version "2.0.3"
+  resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.3.tgz#4ecf3fcf749cbd1e472689e109ac66261a25e725"
+  integrity sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==
 
-is-callable@^1.1.3, is-callable@^1.1.4:
+is-callable@^1.1.4:
   version "1.1.4"
   resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75"
   integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==
@@ -4749,9 +4936,9 @@ is-glob@^3.1.0:
     is-extglob "^2.1.0"
 
 is-glob@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0"
-  integrity sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=
+  version "4.0.1"
+  resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
+  integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
   dependencies:
     is-extglob "^2.1.1"
 
@@ -4767,24 +4954,29 @@ is-obj@^1.0.0:
   resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
   integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8=
 
-is-path-cwd@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d"
-  integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=
+is-path-cwd@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.1.0.tgz#2e0c7e463ff5b7a0eb60852d851a6809347a124c"
+  integrity sha512-Sc5j3/YnM8tDeyCsVeKlm/0p95075DyLmDEIkSgQ7mXkrOX+uTCtmQFm0CYzVyJwcCCmO3k8qfJt17SxQwB5Zw==
 
-is-path-in-cwd@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52"
-  integrity sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==
+is-path-in-cwd@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb"
+  integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==
   dependencies:
-    is-path-inside "^1.0.0"
+    is-path-inside "^2.1.0"
 
-is-path-inside@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036"
-  integrity sha1-jvW33lBDej/cprToZe96pVy0gDY=
+is-path-inside@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2"
+  integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==
   dependencies:
-    path-is-inside "^1.0.1"
+    path-is-inside "^1.0.2"
+
+is-plain-obj@^1.0.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
+  integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4=
 
 is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4:
   version "2.0.4"
@@ -4859,13 +5051,6 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
   resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
   integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
 
-isemail@3.x.x:
-  version "3.2.0"
-  resolved "https://registry.yarnpkg.com/isemail/-/isemail-3.2.0.tgz#59310a021931a9fb06bbb51e155ce0b3f236832c"
-  integrity sha512-zKqkK+O+dGqevc93KNsbZ/TqTUFd46MwWjYOoMrjIMZ51eU7DtQG3Wmd9SQQT7i7RVnuTPEiYEWHU3MSbxC1Tg==
-  dependencies:
-    punycode "2.x.x"
-
 isexe@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
@@ -4893,29 +5078,20 @@ javascript-stringify@^1.6.0:
   resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-1.6.0.tgz#142d111f3a6e3dae8f4a9afd77d45855b5a9cce3"
   integrity sha1-FC0RHzpuPa6PSpr9d9RYVbWpzOM=
 
-joi@^13.0.0:
-  version "13.7.0"
-  resolved "https://registry.yarnpkg.com/joi/-/joi-13.7.0.tgz#cfd85ebfe67e8a1900432400b4d03bbd93fb879f"
-  integrity sha512-xuY5VkHfeOYK3Hdi91ulocfuFopwgbSORmIwzcwHKESQhC7w1kD5jaVSPnqDxS2I8t3RZ9omCKAxNwXN5zG1/Q==
-  dependencies:
-    hoek "5.x.x"
-    isemail "3.x.x"
-    topo "3.x.x"
-
-jquery@x.*:
-  version "3.3.1"
-  resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.3.1.tgz#958ce29e81c9790f31be7792df5d4d95fc57fbca"
-  integrity sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==
+jquery@^3.4.0:
+  version "3.4.1"
+  resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.4.1.tgz#714f1f8d9dde4bdfa55764ba37ef214630d80ef2"
+  integrity sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw==
 
 js-base64@^2.1.8:
-  version "2.5.0"
-  resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.0.tgz#42255ba183ab67ce59a0dee640afdc00ab5ae93e"
-  integrity sha512-wlEBIZ5LP8usDylWbDNhKPEFVFdI5hCHpnVoT/Ysvoi/PRhJENm/Rlh9TvjYB38HFfKZN7OzEbRjmjvLkFw11g==
+  version "2.5.1"
+  resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.1.tgz#1efa39ef2c5f7980bb1784ade4a8af2de3291121"
+  integrity sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==
 
 js-levenshtein@^1.1.3:
-  version "1.1.4"
-  resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.4.tgz#3a56e3cbf589ca0081eb22cd9ba0b1290a16d26e"
-  integrity sha512-PxfGzSs0ztShKrUYPIn5r0MtyAhYcCwmndozzpz8YObbPnD1jFxzlBGbRnX2mIu6Z13xN6+PTu05TQFnZFlzow==
+  version "1.1.6"
+  resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d"
+  integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==
 
 js-logger@^1.4.1:
   version "1.6.0"
@@ -4949,10 +5125,10 @@ js-tokens@^3.0.2:
   resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
   integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls=
 
-js-yaml@^3.12.0, js-yaml@^3.9.0, js-yaml@^3.9.1:
-  version "3.12.0"
-  resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1"
-  integrity sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==
+js-yaml@^3.13.1, js-yaml@^3.9.1:
+  version "3.13.1"
+  resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
+  integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
   dependencies:
     argparse "^1.0.7"
     esprima "^4.0.0"
@@ -4967,10 +5143,10 @@ jsdom-global@^3.0.2:
   resolved "https://registry.yarnpkg.com/jsdom-global/-/jsdom-global-3.0.2.tgz#6bd299c13b0c4626b2da2c0393cd4385d606acb9"
   integrity sha1-a9KZwTsMRiay2iwDk81DhdYGrLk=
 
-jsdom@^13.0.0:
-  version "13.1.0"
-  resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-13.1.0.tgz#fa7356f0cc8111d0f1077cb7800d06f22f1d66c7"
-  integrity sha512-C2Kp0qNuopw0smXFaHeayvharqF3kkcNqlcIlSX71+3XrsOFwkEPLt/9f5JksMmaul2JZYIQuY+WTpqHpQQcLg==
+jsdom@^13.2.0:
+  version "13.2.0"
+  resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-13.2.0.tgz#b1a0dbdadc255435262be8ea3723d2dba0d7eb3a"
+  integrity sha512-cG1NtMWO9hWpqRNRR3dSvEQa8bFI6iLlqU2x4kwX51FQjp0qus8T9aBaAO6iGp3DeBrhdwuKxckknohkmfvsFw==
   dependencies:
     abab "^2.0.0"
     acorn "^6.0.4"
@@ -4987,7 +5163,7 @@ jsdom@^13.0.0:
     pn "^1.1.0"
     request "^2.88.0"
     request-promise-native "^1.0.5"
-    saxes "^3.1.4"
+    saxes "^3.1.5"
     symbol-tree "^3.2.2"
     tough-cookie "^2.5.0"
     w3c-hr-time "^1.0.1"
@@ -5040,15 +5216,22 @@ json-stringify-safe@~5.0.1:
   integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
 
 json3@^3.3.2:
-  version "3.3.2"
-  resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1"
-  integrity sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=
+  version "3.3.3"
+  resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81"
+  integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==
 
-json5@^0.5.0:
+json5@^0.5.0, json5@^0.5.1:
   version "0.5.1"
   resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
   integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=
 
+json5@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
+  integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==
+  dependencies:
+    minimist "^1.2.0"
+
 json5@^2.1.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850"
@@ -5096,7 +5279,7 @@ jwt-decode@^2.2.0:
   resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-2.2.0.tgz#7d86bd56679f58ce6a84704a657dd392bba81a79"
   integrity sha1-fYa9VmefWM5qhHBKZX3TkruoGnk=
 
-killable@^1.0.0:
+killable@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892"
   integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==
@@ -5179,17 +5362,17 @@ load-json-file@^1.0.0:
     strip-bom "^2.0.0"
 
 loader-fs-cache@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/loader-fs-cache/-/loader-fs-cache-1.0.1.tgz#56e0bf08bd9708b26a765b68509840c8dec9fdbc"
-  integrity sha1-VuC/CL2XCLJqdltoUJhAyN7J/bw=
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/loader-fs-cache/-/loader-fs-cache-1.0.2.tgz#54cedf6b727e1779fd8f01205f05f6e88706f086"
+  integrity sha512-70IzT/0/L+M20jUlEqZhZyArTU6VKLRTYRDAYN26g4jfzpJqjipLL3/hgYpySqI9PwsVRHHFja0LfEmsx9X2Cw==
   dependencies:
     find-cache-dir "^0.1.1"
     mkdirp "0.5.1"
 
-loader-runner@^2.3.0:
-  version "2.3.1"
-  resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.1.tgz#026f12fe7c3115992896ac02ba022ba92971b979"
-  integrity sha512-By6ZFY7ETWOc9RFaAIb23IjJVcM4dvJC/N57nmdz9RSkMXvAXGI7SyVlAw3v8vjtDRlqThgVDVmTnr9fqMlxkw==
+loader-runner@^2.3.0, loader-runner@^2.3.1:
+  version "2.4.0"
+  resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357"
+  integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==
 
 loader-utils@^0.2.16:
   version "0.2.17"
@@ -5201,19 +5384,19 @@ loader-utils@^0.2.16:
     json5 "^0.5.0"
     object-assign "^4.0.1"
 
-loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd"
-  integrity sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=
+loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3:
+  version "1.2.3"
+  resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7"
+  integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==
   dependencies:
-    big.js "^3.1.3"
+    big.js "^5.2.2"
     emojis-list "^2.0.0"
-    json5 "^0.5.0"
+    json5 "^1.0.1"
 
-loadjs@^3.5.4:
-  version "3.5.5"
-  resolved "https://registry.yarnpkg.com/loadjs/-/loadjs-3.5.5.tgz#2fbaa981ffdd079e0f8786ea75aeed643483b368"
-  integrity sha512-qBuLnKt4C6+vctutozFqPHQ6s4SSa9tcE64NsvDJ92UZmUrFvqGI1oVOtnZz2xwpgOT+2niQtHtQIDP4e/wlTA==
+loadjs@^3.6.1:
+  version "3.6.1"
+  resolved "https://registry.yarnpkg.com/loadjs/-/loadjs-3.6.1.tgz#1e756ccd4f4c5ed4988085b330e1b4ad9b6a8340"
+  integrity sha512-AZEBw2GWdJk2IzBgQ+Wohoao5j+t0rajqK8dJu8jQqgYxDTxhmCt0ayMo/vCa0ZAMvZxnJcam6uLICfnVd8KAw==
 
 locate-path@^2.0.0:
   version "2.0.0"
@@ -5231,31 +5414,41 @@ locate-path@^3.0.0:
     p-locate "^3.0.0"
     path-exists "^3.0.0"
 
-lodash.assign@^4.2.0:
-  version "4.2.0"
-  resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7"
-  integrity sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=
-
-lodash.clonedeep@^4.3.2:
+lodash.clonedeep@^4.5.0:
   version "4.5.0"
   resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
   integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=
 
-lodash.debounce@^4.0.8:
-  version "4.0.8"
-  resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
-  integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168=
-
 lodash.defaultsdeep@^4.6.0:
   version "4.6.0"
   resolved "https://registry.yarnpkg.com/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.0.tgz#bec1024f85b1bd96cbea405b23c14ad6443a6f81"
   integrity sha1-vsECT4WxvZbL6kBbI8FK1kQ6b4E=
 
+lodash.escaperegexp@^4.1.2:
+  version "4.1.2"
+  resolved "https://registry.yarnpkg.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz#64762c48618082518ac3df4ccf5d5886dae20347"
+  integrity sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=
+
 lodash.get@^4.4.2:
   version "4.4.2"
   resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
   integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=
 
+lodash.isplainobject@^4.0.6:
+  version "4.0.6"
+  resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb"
+  integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=
+
+lodash.isstring@^4.0.1:
+  version "4.0.1"
+  resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451"
+  integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=
+
+lodash.kebabcase@^4.1.1:
+  version "4.1.1"
+  resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36"
+  integrity sha1-hImxyw0p/4gZXM7KRI/21swpXDY=
+
 lodash.mapvalues@^4.6.0:
   version "4.6.0"
   resolved "https://registry.yarnpkg.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c"
@@ -5266,10 +5459,10 @@ lodash.memoize@^4.1.2:
   resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
   integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=
 
-lodash.mergewith@^4.6.0:
-  version "4.6.1"
-  resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz#639057e726c3afbdb3e7d42741caa8d6e4335927"
-  integrity sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==
+lodash.mergewith@^4.6.1:
+  version "4.6.2"
+  resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz#617121f89ac55f59047c7aec1ccd6654c6590f55"
+  integrity sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==
 
 lodash.sortby@^4.7.0:
   version "4.7.0"
@@ -5291,7 +5484,7 @@ lodash.uniq@^4.5.0:
   resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
   integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
 
-lodash@^4.0.0, lodash@^4.13.1, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0, lodash@~4.17.10:
+lodash@^4.0.0, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0, lodash@~4.17.10:
   version "4.17.11"
   resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
   integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==
@@ -5303,16 +5496,21 @@ log-symbols@^2.2.0:
   dependencies:
     chalk "^2.0.1"
 
-loglevel@^1.4.1:
-  version "1.6.1"
-  resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa"
-  integrity sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=
+loglevel@^1.6.2:
+  version "1.6.3"
+  resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.3.tgz#77f2eb64be55a404c9fd04ad16d57c1d6d6b1280"
+  integrity sha512-LoEDv5pgpvWgPF4kNYuIp0qqSJVWak/dML0RY74xlzMZiT9w77teNAwKYKWBTYjlokMirg+o3jBwp+vlLrcfAA==
 
-lolex@^2.3.2, lolex@^2.7.5:
+lolex@^2.7.5:
   version "2.7.5"
   resolved "https://registry.yarnpkg.com/lolex/-/lolex-2.7.5.tgz#113001d56bfc7e02d56e36291cc5c413d1aa0733"
   integrity sha512-l9x0+1offnKKIzYVjyXU2SiwhXDLekRzKyhnbyldPHvC7BvLPVpdNUNR2KeMAiCN2D/kLNttZgQD5WjSxuBx3Q==
 
+lolex@^4.1.0:
+  version "4.1.0"
+  resolved "https://registry.yarnpkg.com/lolex/-/lolex-4.1.0.tgz#ecdd7b86539391d8237947a3419aa8ac975f0fe1"
+  integrity sha512-BYxIEXiVq5lGIXeVHnsFzqa1TxN5acnKnPCdlZSpzm8viNEOhiigupA4vTQ9HEFQ6nLTQ9wQOgBknJgzUYQ9Aw==
+
 longest@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
@@ -5338,7 +5536,7 @@ lower-case@^1.1.1:
   resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac"
   integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw=
 
-lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.2, lru-cache@^4.1.3:
+lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.2:
   version "4.1.5"
   resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
   integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
@@ -5346,6 +5544,13 @@ lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.2, lru-cache@^4.1.3:
     pseudomap "^1.0.2"
     yallist "^2.1.2"
 
+lru-cache@^5.1.1:
+  version "5.1.1"
+  resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
+  integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
+  dependencies:
+    yallist "^3.0.2"
+
 make-dir@^1.0.0:
   version "1.3.0"
   resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"
@@ -5353,6 +5558,14 @@ make-dir@^1.0.0:
   dependencies:
     pify "^3.0.0"
 
+make-dir@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
+  integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
+  dependencies:
+    pify "^4.0.1"
+    semver "^5.6.0"
+
 map-age-cleaner@^0.1.1:
   version "0.1.3"
   resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a"
@@ -5412,13 +5625,13 @@ mem@^1.1.0:
     mimic-fn "^1.0.0"
 
 mem@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/mem/-/mem-4.0.0.tgz#6437690d9471678f6cc83659c00cbafcd6b0cdaf"
-  integrity sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==
+  version "4.3.0"
+  resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178"
+  integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==
   dependencies:
     map-age-cleaner "^0.1.1"
-    mimic-fn "^1.0.0"
-    p-is-promise "^1.1.0"
+    mimic-fn "^2.0.0"
+    p-is-promise "^2.0.0"
 
 memory-fs@^0.4.0, memory-fs@^0.4.1, memory-fs@~0.4.1:
   version "0.4.1"
@@ -5466,7 +5679,7 @@ methods@~1.1.2:
   resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
   integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
 
-micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8, micromatch@^3.1.9:
+micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8:
   version "3.1.10"
   resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
   integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
@@ -5493,39 +5706,45 @@ miller-rabin@^4.0.0:
     bn.js "^4.0.0"
     brorand "^1.0.1"
 
-"mime-db@>= 1.36.0 < 2", mime-db@~1.37.0:
-  version "1.37.0"
-  resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8"
-  integrity sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==
+mime-db@1.40.0, "mime-db@>= 1.40.0 < 2":
+  version "1.40.0"
+  resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32"
+  integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==
 
-mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.18, mime-types@~2.1.19:
-  version "2.1.21"
-  resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96"
-  integrity sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==
+mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24:
+  version "2.1.24"
+  resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81"
+  integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==
   dependencies:
-    mime-db "~1.37.0"
+    mime-db "1.40.0"
 
-mime@1.4.1:
-  version "1.4.1"
-  resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6"
-  integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==
+mime@1.6.0:
+  version "1.6.0"
+  resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
+  integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
 
-mime@^2.0.3, mime@^2.3.1:
-  version "2.4.0"
-  resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.0.tgz#e051fd881358585f3279df333fe694da0bcffdd6"
-  integrity sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==
+mime@^2.0.3, mime@^2.4.2:
+  version "2.4.4"
+  resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5"
+  integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==
 
 mimic-fn@^1.0.0:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
   integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==
 
-mini-css-extract-plugin@^0.4.5:
-  version "0.4.5"
-  resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.5.tgz#c99e9e78d54f3fa775633aee5933aeaa4e80719a"
-  integrity sha512-dqBanNfktnp2hwL2YguV9Jh91PFX7gu7nRLs4TGsbAfAG6WOtlynFRYzwDwmmeSb5uIwHo9nx1ta0f7vAZVp2w==
+mimic-fn@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
+  integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
+
+mini-css-extract-plugin@^0.6.0:
+  version "0.6.0"
+  resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.6.0.tgz#a3f13372d6fcde912f3ee4cd039665704801e3b9"
+  integrity sha512-79q5P7YGI6rdnVyIAV4NXpBQJFWdkzJxCim3Kog4078fM0piAaFlwocqbejdWtLW1cEzCexPrh6EdyFsPgVdAw==
   dependencies:
     loader-utils "^1.1.0"
+    normalize-url "^2.0.1"
     schema-utils "^1.0.0"
     webpack-sources "^1.1.0"
 
@@ -5551,12 +5770,17 @@ minimist@0.0.8:
   resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
   integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
 
+minimist@^0.1.0:
+  version "0.1.0"
+  resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.1.0.tgz#99df657a52574c21c9057497df742790b2b4c0de"
+  integrity sha1-md9lelJXTCHJBXSX33QnkLK0wN4=
+
 minimist@^1.1.3, minimist@^1.2.0:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
   integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
 
-minipass@^2.2.1, minipass@^2.3.4:
+minipass@^2.2.1, minipass@^2.3.5:
   version "2.3.5"
   resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848"
   integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==
@@ -5564,7 +5788,7 @@ minipass@^2.2.1, minipass@^2.3.4:
     safe-buffer "^5.1.2"
     yallist "^3.0.0"
 
-minizlib@^1.1.1:
+minizlib@^1.2.1:
   version "1.2.1"
   resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614"
   integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==
@@ -5667,9 +5891,9 @@ mocha@^5.2.0:
     supports-color "5.4.0"
 
 moment@^2.22.2:
-  version "2.23.0"
-  resolved "https://registry.yarnpkg.com/moment/-/moment-2.23.0.tgz#759ea491ac97d54bac5ad776996e2a58cc1bc225"
-  integrity sha512-3IE39bHVqFbWWaPOMHZF98Q9c3LDKGTmypMiTM2QygGXXElkFWIH7GxfmlwmY2vwa+wmNsoYZmG2iusf1ZjJoA==
+  version "2.24.0"
+  resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b"
+  integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==
 
 move-concurrently@^1.0.1:
   version "1.0.1"
@@ -5693,11 +5917,16 @@ ms@2.0.0:
   resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
   integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
 
-ms@^2.1.1:
+ms@2.1.1:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
   integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
 
+ms@^2.1.1:
+  version "2.1.2"
+  resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
+  integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+
 multicast-dns-service-types@^1.1.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901"
@@ -5716,10 +5945,19 @@ mute-stream@0.0.7:
   resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
   integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=
 
-nan@^2.10.0, nan@^2.9.2:
-  version "2.12.1"
-  resolved "https://registry.yarnpkg.com/nan/-/nan-2.12.1.tgz#7b1aa193e9aa86057e3c7bbd0ac448e770925552"
-  integrity sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==
+mz@^2.4.0:
+  version "2.7.0"
+  resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32"
+  integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==
+  dependencies:
+    any-promise "^1.0.0"
+    object-assign "^4.0.1"
+    thenify-all "^1.0.0"
+
+nan@^2.12.1, nan@^2.13.2:
+  version "2.14.0"
+  resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c"
+  integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==
 
 nanomatch@^1.2.9:
   version "1.2.13"
@@ -5744,23 +5982,23 @@ natural-compare@^1.4.0:
   integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
 
 needle@^2.2.1:
-  version "2.2.4"
-  resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e"
-  integrity sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA==
+  version "2.4.0"
+  resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c"
+  integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==
   dependencies:
-    debug "^2.1.2"
+    debug "^3.2.6"
     iconv-lite "^0.4.4"
     sax "^1.2.4"
 
-negotiator@0.6.1:
-  version "0.6.1"
-  resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9"
-  integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=
+negotiator@0.6.2:
+  version "0.6.2"
+  resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
+  integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
 
-neo-async@^2.5.0:
-  version "2.6.0"
-  resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.0.tgz#b9d15e4d71c6762908654b5183ed38b753340835"
-  integrity sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==
+neo-async@^2.5.0, neo-async@^2.6.0:
+  version "2.6.1"
+  resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c"
+  integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==
 
 nice-try@^1.0.4:
   version "1.0.5"
@@ -5768,15 +6006,15 @@ nice-try@^1.0.4:
   integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
 
 nise@^1.4.5:
-  version "1.4.8"
-  resolved "https://registry.yarnpkg.com/nise/-/nise-1.4.8.tgz#ce91c31e86cf9b2c4cac49d7fcd7f56779bfd6b0"
-  integrity sha512-kGASVhuL4tlAV0tvA34yJYZIVihrUt/5bDwpp4tTluigxUr2bBlJeDXmivb6NuEdFkqvdv/Ybb9dm16PSKUhtw==
+  version "1.5.0"
+  resolved "https://registry.yarnpkg.com/nise/-/nise-1.5.0.tgz#d03ea0e6c1b75c638015aa3585eddc132949a50d"
+  integrity sha512-Z3sfYEkLFzFmL8KY6xnSJLRxwQwYBjOXi/24lb62ZnZiGA0JUzGGTI6TBIgfCSMIDl9Jlu8SRmHNACLTemDHww==
   dependencies:
     "@sinonjs/formatio" "^3.1.0"
+    "@sinonjs/text-encoding" "^0.7.1"
     just-extend "^4.0.2"
-    lolex "^2.3.2"
+    lolex "^4.1.0"
     path-to-regexp "^1.7.0"
-    text-encoding "^0.6.4"
 
 no-case@^2.2.0:
   version "2.3.2"
@@ -5818,9 +6056,9 @@ node-ipc@^9.1.1:
     js-queue "2.0.0"
 
 node-libs-browser@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz#5f94263d404f6e44767d726901fff05478d600df"
-  integrity sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==
+  version "2.2.1"
+  resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425"
+  integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==
   dependencies:
     assert "^1.1.1"
     browserify-zlib "^0.2.0"
@@ -5829,10 +6067,10 @@ node-libs-browser@^2.0.0:
     constants-browserify "^1.0.0"
     crypto-browserify "^3.11.0"
     domain-browser "^1.1.1"
-    events "^1.0.0"
+    events "^3.0.0"
     https-browserify "^1.0.0"
     os-browserify "^0.3.0"
-    path-browserify "0.0.0"
+    path-browserify "0.0.1"
     process "^0.11.10"
     punycode "^1.2.4"
     querystring-es3 "^0.2.0"
@@ -5843,13 +6081,13 @@ node-libs-browser@^2.0.0:
     timers-browserify "^2.0.4"
     tty-browserify "0.0.0"
     url "^0.11.0"
-    util "^0.10.3"
-    vm-browserify "0.0.4"
+    util "^0.11.0"
+    vm-browserify "^1.0.1"
 
-node-pre-gyp@^0.10.0:
-  version "0.10.3"
-  resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc"
-  integrity sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A==
+node-pre-gyp@^0.12.0:
+  version "0.12.0"
+  resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149"
+  integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A==
   dependencies:
     detect-libc "^1.0.2"
     mkdirp "^0.5.1"
@@ -5862,17 +6100,17 @@ node-pre-gyp@^0.10.0:
     semver "^5.3.0"
     tar "^4"
 
-node-releases@^1.1.1:
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.2.tgz#93c17fba5eec8650ad908de5433fa8763baebe4d"
-  integrity sha512-j1gEV/zX821yxdWp/1vBMN0pSUjuH9oGUdLCb4PfUko6ZW7KdRs3Z+QGGwDUhYtSpQvdVVyLd2V0YvLsmdg5jQ==
+node-releases@^1.1.23:
+  version "1.1.23"
+  resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.23.tgz#de7409f72de044a2fa59c097f436ba89c39997f0"
+  integrity sha512-uq1iL79YjfYC0WXoHbC/z28q/9pOl8kSHaXdWmAAc8No+bDwqkZbzIJz55g/MUsPgSGm9LZ7QSUbzTcH5tz47w==
   dependencies:
     semver "^5.3.0"
 
 node-sass@^4.9.3:
-  version "4.11.0"
-  resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.11.0.tgz#183faec398e9cbe93ba43362e2768ca988a6369a"
-  integrity sha512-bHUdHTphgQJZaF1LASx0kAviPH7sGlcyNhWade4eVIpFp6tsn7SV8xNMTbsQFpEV9VXpnwTTnNYlfsZXgGgmkA==
+  version "4.12.0"
+  resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.12.0.tgz#0914f531932380114a30cc5fa4fa63233a25f017"
+  integrity sha512-A1Iv4oN+Iel6EPv77/HddXErL2a+gZ4uBeZUy+a8O35CFYTXhgA8MgLCWBtwpGZdCvTvQ9d+bQxX/QC36GDPpQ==
   dependencies:
     async-foreach "^0.1.3"
     chalk "^1.1.1"
@@ -5881,12 +6119,10 @@ node-sass@^4.9.3:
     get-stdin "^4.0.1"
     glob "^7.0.3"
     in-publish "^2.0.0"
-    lodash.assign "^4.2.0"
-    lodash.clonedeep "^4.3.2"
-    lodash.mergewith "^4.6.0"
+    lodash "^4.17.11"
     meow "^3.7.0"
     mkdirp "^0.5.1"
-    nan "^2.10.0"
+    nan "^2.13.2"
     node-gyp "^3.8.0"
     npmlog "^4.0.0"
     request "^2.88.0"
@@ -5914,13 +6150,13 @@ nopt@^4.0.1:
     abbrev "1"
     osenv "^0.1.4"
 
-normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
-  version "2.4.0"
-  resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f"
-  integrity sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==
+normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0:
+  version "2.5.0"
+  resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
+  integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
   dependencies:
     hosted-git-info "^2.1.4"
-    is-builtin-module "^1.0.0"
+    resolve "^1.10.0"
     semver "2 || 3 || 4 || 5"
     validate-npm-package-license "^3.0.1"
 
@@ -5936,25 +6172,39 @@ normalize-path@^2.0.1, normalize-path@^2.1.1:
   dependencies:
     remove-trailing-separator "^1.0.1"
 
+normalize-path@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
+  integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
+
 normalize-range@^0.1.2:
   version "0.1.2"
   resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
   integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=
 
+normalize-url@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-2.0.1.tgz#835a9da1551fa26f70e92329069a23aa6574d7e6"
+  integrity sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==
+  dependencies:
+    prepend-http "^2.0.0"
+    query-string "^5.0.1"
+    sort-keys "^2.0.0"
+
 normalize-url@^3.0.0:
   version "3.3.0"
   resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559"
   integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==
 
 npm-bundled@^1.0.1:
-  version "1.0.5"
-  resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979"
-  integrity sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g==
+  version "1.0.6"
+  resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd"
+  integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==
 
 npm-packlist@^1.1.6:
-  version "1.1.12"
-  resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.12.tgz#22bde2ebc12e72ca482abd67afc51eb49377243a"
-  integrity sha512-WJKFOVMeAlsU/pjXuqVdzU0WfgtIBCupkEVwn+1Y0ERAbUfWw8R4GjgVbaKnUjRoD2FoQbHOCbOyT5Mbs9Lw4g==
+  version "1.4.1"
+  resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.1.tgz#19064cdf988da80ea3cee45533879d90192bbfbc"
+  integrity sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw==
   dependencies:
     ignore-walk "^3.0.1"
     npm-bundled "^1.0.1"
@@ -5994,16 +6244,16 @@ number-is-nan@^1.0.0:
   integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
 
 nwsapi@^2.0.9:
-  version "2.0.9"
-  resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.0.9.tgz#77ac0cdfdcad52b6a1151a84e73254edc33ed016"
-  integrity sha512-nlWFSCTYQcHk/6A9FFnfhKc14c3aFhfdNBXgo8Qgi9QTBu/qg3Ww+Uiz9wMzXd1T8GFxPc2QIHB6Qtf2XFryFQ==
+  version "2.1.4"
+  resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.1.4.tgz#e006a878db23636f8e8a67d33ca0e4edf61a842f"
+  integrity sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==
 
 oauth-sign@~0.9.0:
   version "0.9.0"
   resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
   integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
 
-object-assign@^4.0.1, object-assign@^4.1.0:
+object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
   version "4.1.1"
   resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
   integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
@@ -6023,9 +6273,9 @@ object-hash@^1.1.4:
   integrity sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==
 
 object-keys@^1.0.11, object-keys@^1.0.12:
-  version "1.0.12"
-  resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2"
-  integrity sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
+  integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
 
 object-visit@^1.0.0:
   version "1.0.1"
@@ -6059,17 +6309,17 @@ object.pick@^1.3.0:
   dependencies:
     isobject "^3.0.1"
 
-object.values@^1.0.4:
-  version "1.0.4"
-  resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.0.4.tgz#e524da09b4f66ff05df457546ec72ac99f13069a"
-  integrity sha1-5STaCbT2b/Bd9FdUbscqyZ8TBpo=
+object.values@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9"
+  integrity sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==
   dependencies:
-    define-properties "^1.1.2"
-    es-abstract "^1.6.1"
-    function-bind "^1.1.0"
-    has "^1.0.1"
+    define-properties "^1.1.3"
+    es-abstract "^1.12.0"
+    function-bind "^1.1.1"
+    has "^1.0.3"
 
-obuf@^1.0.0, obuf@^1.1.1:
+obuf@^1.0.0, obuf@^1.1.2:
   version "1.1.2"
   resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
   integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==
@@ -6081,10 +6331,10 @@ on-finished@~2.3.0:
   dependencies:
     ee-first "1.1.1"
 
-on-headers@~1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7"
-  integrity sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=
+on-headers@~1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f"
+  integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==
 
 once@^1.3.0, once@^1.3.1, once@^1.4.0:
   version "1.4.0"
@@ -6100,15 +6350,22 @@ onetime@^2.0.0:
   dependencies:
     mimic-fn "^1.0.0"
 
+open@^6.3.0:
+  version "6.3.0"
+  resolved "https://registry.yarnpkg.com/open/-/open-6.3.0.tgz#60d0b845ee38fae0631f5d739a21bd40e3d2a527"
+  integrity sha512-6AHdrJxPvAXIowO/aIaeHZ8CeMdDf7qCyRNq8NwJpinmCdXhz+NZR7ie1Too94lpciCDsG+qHGO9Mt0svA4OqA==
+  dependencies:
+    is-wsl "^1.1.0"
+
 opener@^1.5.1:
   version "1.5.1"
   resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed"
   integrity sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==
 
-opn@^5.1.0, opn@^5.3.0:
-  version "5.4.0"
-  resolved "https://registry.yarnpkg.com/opn/-/opn-5.4.0.tgz#cb545e7aab78562beb11aa3bfabc7042e1761035"
-  integrity sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw==
+opn@^5.5.0:
+  version "5.5.0"
+  resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc"
+  integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==
   dependencies:
     is-wsl "^1.1.0"
 
@@ -6124,28 +6381,16 @@ optionator@^0.8.1, optionator@^0.8.2:
     type-check "~0.3.2"
     wordwrap "~1.0.0"
 
-ora@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/ora/-/ora-2.1.0.tgz#6caf2830eb924941861ec53a173799e008b51e5b"
-  integrity sha512-hNNlAd3gfv/iPmsNxYoAPLvxg7HuPozww7fFonMZvL84tP6Ox5igfk5j/+a9rtJJwqMgKK+JgWsAQik5o0HTLA==
-  dependencies:
-    chalk "^2.3.1"
-    cli-cursor "^2.1.0"
-    cli-spinners "^1.1.0"
-    log-symbols "^2.2.0"
-    strip-ansi "^4.0.0"
-    wcwidth "^1.0.1"
-
-ora@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/ora/-/ora-3.0.0.tgz#8179e3525b9aafd99242d63cc206fd64732741d0"
-  integrity sha512-LBS97LFe2RV6GJmXBi6OKcETKyklHNMV0xw7BtsVn2MlsgsydyZetSCbCANr+PFLmDyv4KV88nn0eCKza665Mg==
+ora@^3.4.0:
+  version "3.4.0"
+  resolved "https://registry.yarnpkg.com/ora/-/ora-3.4.0.tgz#bf0752491059a3ef3ed4c85097531de9fdbcd318"
+  integrity sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==
   dependencies:
-    chalk "^2.3.1"
+    chalk "^2.4.2"
     cli-cursor "^2.1.0"
-    cli-spinners "^1.1.0"
+    cli-spinners "^2.0.0"
     log-symbols "^2.2.0"
-    strip-ansi "^4.0.0"
+    strip-ansi "^5.2.0"
     wcwidth "^1.0.1"
 
 original@^1.0.0:
@@ -6181,12 +6426,12 @@ os-locale@^2.0.0:
     lcid "^1.0.0"
     mem "^1.1.0"
 
-os-locale@^3.0.0:
-  version "3.0.1"
-  resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.0.1.tgz#3b014fbf01d87f60a1e5348d80fe870dc82c4620"
-  integrity sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==
+os-locale@^3.0.0, os-locale@^3.1.0:
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a"
+  integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==
   dependencies:
-    execa "^0.10.0"
+    execa "^1.0.0"
     lcid "^2.0.0"
     mem "^4.0.0"
 
@@ -6222,10 +6467,10 @@ p-finally@^1.0.0:
   resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
   integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
 
-p-is-promise@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e"
-  integrity sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=
+p-is-promise@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e"
+  integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==
 
 p-limit@^1.0.0, p-limit@^1.1.0:
   version "1.3.0"
@@ -6235,9 +6480,9 @@ p-limit@^1.0.0, p-limit@^1.1.0:
     p-try "^1.0.0"
 
 p-limit@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.0.0.tgz#e624ed54ee8c460a778b3c9f3670496ff8a57aec"
-  integrity sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2"
+  integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==
   dependencies:
     p-try "^2.0.0"
 
@@ -6255,10 +6500,17 @@ p-locate@^3.0.0:
   dependencies:
     p-limit "^2.0.0"
 
-p-map@^1.1.1:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b"
-  integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==
+p-map@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175"
+  integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==
+
+p-retry@^3.0.1:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328"
+  integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==
+  dependencies:
+    retry "^0.12.0"
 
 p-try@^1.0.0:
   version "1.0.0"
@@ -6266,14 +6518,14 @@ p-try@^1.0.0:
   integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=
 
 p-try@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1"
-  integrity sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
+  integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
 
 pako@~1.0.5:
-  version "1.0.7"
-  resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.7.tgz#2473439021b57f1516c82f58be7275ad8ef1bb27"
-  integrity sha512-3HNK5tW4x8o5mO8RuHZp3Ydw9icZXx0RANAOMzlMzx7LVXhMJ4mo3MOBpzyd7r/+RUu8BmndP47LXT+vzjtWcQ==
+  version "1.0.10"
+  resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732"
+  integrity sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==
 
 parallel-transform@^1.1.0:
   version "1.1.0"
@@ -6292,15 +6544,16 @@ param-case@2.1.x:
     no-case "^2.2.0"
 
 parse-asn1@^5.0.0:
-  version "5.1.1"
-  resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.1.tgz#f6bf293818332bd0dab54efb16087724745e6ca8"
-  integrity sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==
+  version "5.1.4"
+  resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.4.tgz#37f6628f823fbdeb2273b4d540434a22f3ef1fcc"
+  integrity sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==
   dependencies:
     asn1.js "^4.0.0"
     browserify-aes "^1.0.0"
     create-hash "^1.1.0"
     evp_bytestokey "^1.0.0"
     pbkdf2 "^3.0.3"
+    safe-buffer "^5.1.1"
 
 parse-json@^2.2.0:
   version "2.2.0"
@@ -6329,20 +6582,25 @@ parse5@^3.0.1:
   dependencies:
     "@types/node" "*"
 
-parseurl@~1.3.2:
-  version "1.3.2"
-  resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"
-  integrity sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=
+parse5@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608"
+  integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==
+
+parseurl@~1.3.2, parseurl@~1.3.3:
+  version "1.3.3"
+  resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
+  integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
 
 pascalcase@^0.1.1:
   version "0.1.1"
   resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
   integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
 
-path-browserify@0.0.0:
-  version "0.0.0"
-  resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a"
-  integrity sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=
+path-browserify@0.0.1:
+  version "0.0.1"
+  resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a"
+  integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==
 
 path-dirname@^1.0.0:
   version "1.0.2"
@@ -6366,7 +6624,7 @@ path-is-absolute@^1.0.0:
   resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
   integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
 
-path-is-inside@^1.0.1, path-is-inside@^1.0.2:
+path-is-inside@^1.0.2:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
   integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=
@@ -6440,6 +6698,11 @@ pify@^3.0.0:
   resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
   integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
 
+pify@^4.0.1:
+  version "4.0.1"
+  resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
+  integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
+
 pinkie-promise@^2.0.0:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
@@ -6473,21 +6736,29 @@ pkg-dir@^3.0.0:
   dependencies:
     find-up "^3.0.0"
 
+pkg-up@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f"
+  integrity sha1-yBmscoBZpGHKscOImivjxJoATX8=
+  dependencies:
+    find-up "^2.1.0"
+
 pluralize@^7.0.0:
   version "7.0.0"
   resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777"
   integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==
 
-plyr@^3.4.5:
-  version "3.4.7"
-  resolved "https://registry.yarnpkg.com/plyr/-/plyr-3.4.7.tgz#7d92470fb27f8019422c6d4edfd3b172d902ef06"
-  integrity sha512-RxxT2WdC4/sEZQT7CBZqKx5ImVw96aWjT6kB6DM82jy9GcWDiBBnv04m/AeeaXg9S5ambPdiHhB6Pzfm2q84Gw==
+plyr@^3.5.2:
+  version "3.5.4"
+  resolved "https://registry.yarnpkg.com/plyr/-/plyr-3.5.4.tgz#21ee9e2f06c3a88568eb432689c70de0b6d43dfb"
+  integrity sha512-ECS2uzeDyPfM0+1X3oTNdRDmLN+dxoo2GcJYeWsfnyH4CHLoRA/w1Fvp4sMhM+k2QBRxFH/bu46nogduS1DPhQ==
   dependencies:
-    core-js "^2.5.7"
-    custom-event-polyfill "^1.0.6"
-    loadjs "^3.5.4"
+    core-js "^3.0.1"
+    custom-event-polyfill "^1.0.7"
+    loadjs "^3.6.1"
+    rangetouch "^2.0.0"
     raven-js "^3.27.0"
-    url-polyfill "^1.1.0"
+    url-polyfill "^1.1.5"
 
 pn@^1.1.0:
   version "1.1.0"
@@ -6499,7 +6770,7 @@ pofile@^1.0.10:
   resolved "https://registry.yarnpkg.com/pofile/-/pofile-1.0.11.tgz#35aff58c17491d127a07336d5522ebc9df57c954"
   integrity sha512-Vy9eH1dRD9wHjYt/QqXcTz+RnX/zg53xK+KljFSX30PvdDMb2z+c6uDUeblUGqqJgz3QFsdlA0IJvHziPmWtQg==
 
-portfinder@^1.0.19, portfinder@^1.0.9:
+portfinder@^1.0.20:
   version "1.0.20"
   resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.20.tgz#bea68632e54b2e13ab7b0c4775e9b41bf270e44a"
   integrity sha512-Yxe4mTyDzTd59PZJY4ojZR8F+E5e97iq2ZOHPz3HDgSvYC5siNad2tLooQ5y5QHyQhc3xVqvyk/eNA3wuoa7Sw==
@@ -6513,7 +6784,7 @@ posix-character-classes@^0.1.0:
   resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
   integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
 
-postcss-calc@^7.0.0:
+postcss-calc@^7.0.1:
   version "7.0.1"
   resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.1.tgz#36d77bab023b0ecbb9789d84dcb23c4941145436"
   integrity sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ==
@@ -6523,10 +6794,10 @@ postcss-calc@^7.0.0:
     postcss-selector-parser "^5.0.0-rc.4"
     postcss-value-parser "^3.3.1"
 
-postcss-colormin@^4.0.2:
-  version "4.0.2"
-  resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.2.tgz#93cd1fa11280008696887db1a528048b18e7ed99"
-  integrity sha512-1QJc2coIehnVFsz0otges8kQLsryi4lo19WD+U5xCWvXd0uw/Z+KKYnbiNDCnO9GP+PvErPHCG0jNvWTngk9Rw==
+postcss-colormin@^4.0.3:
+  version "4.0.3"
+  resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381"
+  integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==
   dependencies:
     browserslist "^4.0.0"
     color "^3.0.0"
@@ -6542,10 +6813,10 @@ postcss-convert-values@^4.0.1:
     postcss "^7.0.0"
     postcss-value-parser "^3.0.0"
 
-postcss-discard-comments@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.1.tgz#30697735b0c476852a7a11050eb84387a67ef55d"
-  integrity sha512-Ay+rZu1Sz6g8IdzRjUgG2NafSNpp2MSMOQUb+9kkzzzP+kh07fP0yNbhtFejURnyVXSX3FYy2nVNW1QTnNjgBQ==
+postcss-discard-comments@^4.0.2:
+  version "4.0.2"
+  resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033"
+  integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==
   dependencies:
     postcss "^7.0.0"
 
@@ -6571,11 +6842,11 @@ postcss-discard-overridden@^4.0.1:
     postcss "^7.0.0"
 
 postcss-load-config@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.0.0.tgz#f1312ddbf5912cd747177083c5ef7a19d62ee484"
-  integrity sha512-V5JBLzw406BB8UIfsAWSK2KSwIJ5yoEIVFb4gVkXci0QdKgA24jLmHZ/ghe/GgX0lJ0/D1uUK1ejhzEY94MChQ==
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.0.tgz#c84d692b7bb7b41ddced94ee62e8ab31b417b003"
+  integrity sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==
   dependencies:
-    cosmiconfig "^4.0.0"
+    cosmiconfig "^5.0.0"
     import-cwd "^2.0.0"
 
 postcss-loader@^3.0.0:
@@ -6588,20 +6859,20 @@ postcss-loader@^3.0.0:
     postcss-load-config "^2.0.0"
     schema-utils "^1.0.0"
 
-postcss-merge-longhand@^4.0.9:
-  version "4.0.9"
-  resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.9.tgz#c2428b994833ffb2a072f290ca642e75ceabcd6f"
-  integrity sha512-UVMXrXF5K/kIwUbK/crPFCytpWbNX2Q3dZSc8+nQUgfOHrCT4+MHncpdxVphUlQeZxlLXUJbDyXc5NBhTnS2tA==
+postcss-merge-longhand@^4.0.11:
+  version "4.0.11"
+  resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24"
+  integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==
   dependencies:
     css-color-names "0.0.4"
     postcss "^7.0.0"
     postcss-value-parser "^3.0.0"
     stylehacks "^4.0.0"
 
-postcss-merge-rules@^4.0.2:
-  version "4.0.2"
-  resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.2.tgz#2be44401bf19856f27f32b8b12c0df5af1b88e74"
-  integrity sha512-UiuXwCCJtQy9tAIxsnurfF0mrNHKc4NnNx6NxqmzNNjXpQwLSukUxELHTRF0Rg1pAmcoKLih8PwvZbiordchag==
+postcss-merge-rules@^4.0.3:
+  version "4.0.3"
+  resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650"
+  integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==
   dependencies:
     browserslist "^4.0.0"
     caniuse-api "^3.0.0"
@@ -6618,20 +6889,20 @@ postcss-minify-font-values@^4.0.2:
     postcss "^7.0.0"
     postcss-value-parser "^3.0.0"
 
-postcss-minify-gradients@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.1.tgz#6da95c6e92a809f956bb76bf0c04494953e1a7dd"
-  integrity sha512-pySEW3E6Ly5mHm18rekbWiAjVi/Wj8KKt2vwSfVFAWdW6wOIekgqxKxLU7vJfb107o3FDNPkaYFCxGAJBFyogA==
+postcss-minify-gradients@^4.0.2:
+  version "4.0.2"
+  resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471"
+  integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==
   dependencies:
     cssnano-util-get-arguments "^4.0.0"
     is-color-stop "^1.0.0"
     postcss "^7.0.0"
     postcss-value-parser "^3.0.0"
 
-postcss-minify-params@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.1.tgz#5b2e2d0264dd645ef5d68f8fec0d4c38c1cf93d2"
-  integrity sha512-h4W0FEMEzBLxpxIVelRtMheskOKKp52ND6rJv+nBS33G1twu2tCyurYj/YtgU76+UDCvWeNs0hs8HFAWE2OUFg==
+postcss-minify-params@^4.0.2:
+  version "4.0.2"
+  resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874"
+  integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==
   dependencies:
     alphanum-sort "^1.0.0"
     browserslist "^4.0.0"
@@ -6640,10 +6911,10 @@ postcss-minify-params@^4.0.1:
     postcss-value-parser "^3.0.0"
     uniqs "^2.0.0"
 
-postcss-minify-selectors@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.1.tgz#a891c197977cc37abf60b3ea06b84248b1c1e9cd"
-  integrity sha512-8+plQkomve3G+CodLCgbhAKrb5lekAnLYuL1d7Nz+/7RANpBEVdgBkPNwljfSKvZ9xkkZTZITd04KP+zeJTJqg==
+postcss-minify-selectors@^4.0.2:
+  version "4.0.2"
+  resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8"
+  integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==
   dependencies:
     alphanum-sort "^1.0.0"
     has "^1.0.0"
@@ -6688,48 +6959,48 @@ postcss-normalize-charset@^4.0.1:
   dependencies:
     postcss "^7.0.0"
 
-postcss-normalize-display-values@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.1.tgz#d9a83d47c716e8a980f22f632c8b0458cfb48a4c"
-  integrity sha512-R5mC4vaDdvsrku96yXP7zak+O3Mm9Y8IslUobk7IMP+u/g+lXvcN4jngmHY5zeJnrQvE13dfAg5ViU05ZFDwdg==
+postcss-normalize-display-values@^4.0.2:
+  version "4.0.2"
+  resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a"
+  integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==
   dependencies:
     cssnano-util-get-match "^4.0.0"
     postcss "^7.0.0"
     postcss-value-parser "^3.0.0"
 
-postcss-normalize-positions@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.1.tgz#ee2d4b67818c961964c6be09d179894b94fd6ba1"
-  integrity sha512-GNoOaLRBM0gvH+ZRb2vKCIujzz4aclli64MBwDuYGU2EY53LwiP7MxOZGE46UGtotrSnmarPPZ69l2S/uxdaWA==
+postcss-normalize-positions@^4.0.2:
+  version "4.0.2"
+  resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f"
+  integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==
   dependencies:
     cssnano-util-get-arguments "^4.0.0"
     has "^1.0.0"
     postcss "^7.0.0"
     postcss-value-parser "^3.0.0"
 
-postcss-normalize-repeat-style@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.1.tgz#5293f234b94d7669a9f805495d35b82a581c50e5"
-  integrity sha512-fFHPGIjBUyUiswY2rd9rsFcC0t3oRta4wxE1h3lpwfQZwFeFjXFSiDtdJ7APCmHQOnUZnqYBADNRPKPwFAONgA==
+postcss-normalize-repeat-style@^4.0.2:
+  version "4.0.2"
+  resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c"
+  integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==
   dependencies:
     cssnano-util-get-arguments "^4.0.0"
     cssnano-util-get-match "^4.0.0"
     postcss "^7.0.0"
     postcss-value-parser "^3.0.0"
 
-postcss-normalize-string@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.1.tgz#23c5030c2cc24175f66c914fa5199e2e3c10fef3"
-  integrity sha512-IJoexFTkAvAq5UZVxWXAGE0yLoNN/012v7TQh5nDo6imZJl2Fwgbhy3J2qnIoaDBrtUP0H7JrXlX1jjn2YcvCQ==
+postcss-normalize-string@^4.0.2:
+  version "4.0.2"
+  resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c"
+  integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==
   dependencies:
     has "^1.0.0"
     postcss "^7.0.0"
     postcss-value-parser "^3.0.0"
 
-postcss-normalize-timing-functions@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.1.tgz#8be83e0b9cb3ff2d1abddee032a49108f05f95d7"
-  integrity sha512-1nOtk7ze36+63ONWD8RCaRDYsnzorrj+Q6fxkQV+mlY5+471Qx9kspqv0O/qQNMeApg8KNrRf496zHwJ3tBZ7w==
+postcss-normalize-timing-functions@^4.0.2:
+  version "4.0.2"
+  resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9"
+  integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==
   dependencies:
     cssnano-util-get-match "^4.0.0"
     postcss "^7.0.0"
@@ -6754,37 +7025,37 @@ postcss-normalize-url@^4.0.1:
     postcss "^7.0.0"
     postcss-value-parser "^3.0.0"
 
-postcss-normalize-whitespace@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.1.tgz#d14cb639b61238418ac8bc8d3b7bdd65fc86575e"
-  integrity sha512-U8MBODMB2L+nStzOk6VvWWjZgi5kQNShCyjRhMT3s+W9Jw93yIjOnrEkKYD3Ul7ChWbEcjDWmXq0qOL9MIAnAw==
+postcss-normalize-whitespace@^4.0.2:
+  version "4.0.2"
+  resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82"
+  integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==
   dependencies:
     postcss "^7.0.0"
     postcss-value-parser "^3.0.0"
 
-postcss-ordered-values@^4.1.1:
-  version "4.1.1"
-  resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.1.tgz#2e3b432ef3e489b18333aeca1f1295eb89be9fc2"
-  integrity sha512-PeJiLgJWPzkVF8JuKSBcylaU+hDJ/TX3zqAMIjlghgn1JBi6QwQaDZoDIlqWRcCAI8SxKrt3FCPSRmOgKRB97Q==
+postcss-ordered-values@^4.1.2:
+  version "4.1.2"
+  resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee"
+  integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==
   dependencies:
     cssnano-util-get-arguments "^4.0.0"
     postcss "^7.0.0"
     postcss-value-parser "^3.0.0"
 
-postcss-reduce-initial@^4.0.2:
-  version "4.0.2"
-  resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.2.tgz#bac8e325d67510ee01fa460676dc8ea9e3b40f15"
-  integrity sha512-epUiC39NonKUKG+P3eAOKKZtm5OtAtQJL7Ye0CBN1f+UQTHzqotudp+hki7zxXm7tT0ZAKDMBj1uihpPjP25ug==
+postcss-reduce-initial@^4.0.3:
+  version "4.0.3"
+  resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df"
+  integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==
   dependencies:
     browserslist "^4.0.0"
     caniuse-api "^3.0.0"
     has "^1.0.0"
     postcss "^7.0.0"
 
-postcss-reduce-transforms@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.1.tgz#8600d5553bdd3ad640f43bff81eb52f8760d4561"
-  integrity sha512-sZVr3QlGs0pjh6JAIe6DzWvBaqYw05V1t3d9Tp+VnFRT5j+rsqoWsysh/iSD7YNsULjq9IAylCznIwVd5oU/zA==
+postcss-reduce-transforms@^4.0.2:
+  version "4.0.2"
+  resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29"
+  integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==
   dependencies:
     cssnano-util-get-match "^4.0.0"
     has "^1.0.0"
@@ -6800,19 +7071,28 @@ postcss-selector-parser@^3.0.0, postcss-selector-parser@^3.1.1:
     indexes-of "^1.0.1"
     uniq "^1.0.1"
 
-postcss-selector-parser@^5.0.0-rc.4:
-  version "5.0.0-rc.4"
-  resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0-rc.4.tgz#ca5e77238bf152966378c13e91ad6d611568ea87"
-  integrity sha512-0XvfYuShrKlTk1ooUrVzMCFQRcypsdEIsGqh5IxC5rdtBi4/M/tDAJeSONwC2MTqEFsmPZYAV7Dd4X8rgAfV0A==
+postcss-selector-parser@^5.0.0, postcss-selector-parser@^5.0.0-rc.4:
+  version "5.0.0"
+  resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c"
+  integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==
   dependencies:
     cssesc "^2.0.0"
     indexes-of "^1.0.1"
     uniq "^1.0.1"
 
-postcss-svgo@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.1.tgz#5628cdb38f015de6b588ce6d0bf0724b492b581d"
-  integrity sha512-YD5uIk5NDRySy0hcI+ZJHwqemv2WiqqzDgtvgMzO8EGSkK5aONyX8HMVFRFJSdO8wUWTuisUFn/d7yRRbBr5Qw==
+postcss-selector-parser@^6.0.0:
+  version "6.0.2"
+  resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c"
+  integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==
+  dependencies:
+    cssesc "^3.0.0"
+    indexes-of "^1.0.1"
+    uniq "^1.0.1"
+
+postcss-svgo@^4.0.2:
+  version "4.0.2"
+  resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258"
+  integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==
   dependencies:
     is-svg "^3.0.0"
     postcss "^7.0.0"
@@ -6828,7 +7108,7 @@ postcss-unique-selectors@^4.0.1:
     postcss "^7.0.0"
     uniqs "^2.0.0"
 
-postcss-value-parser@^3.0.0, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0, postcss-value-parser@^3.3.1:
+postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.0, postcss-value-parser@^3.3.1:
   version "3.3.1"
   resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281"
   integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==
@@ -6842,29 +7122,34 @@ postcss@^6.0.1, postcss@^6.0.20, postcss@^6.0.23:
     source-map "^0.6.1"
     supports-color "^5.4.0"
 
-postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.5:
-  version "7.0.7"
-  resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.7.tgz#2754d073f77acb4ef08f1235c36c5721a7201614"
-  integrity sha512-HThWSJEPkupqew2fnuQMEI2YcTj/8gMV3n80cMdJsKxfIh5tHf7nM5JigNX6LxVMqo6zkgQNAI88hyFvBk41Pg==
+postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.5:
+  version "7.0.17"
+  resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.17.tgz#4da1bdff5322d4a0acaab4d87f3e782436bad31f"
+  integrity sha512-546ZowA+KZ3OasvQZHsbuEpysvwTZNGJv9EfyCQdsIDltPSWHAeTQ5fQy/Npi2ZDtLI3zs7Ps/p6wThErhm9fQ==
   dependencies:
-    chalk "^2.4.1"
+    chalk "^2.4.2"
     source-map "^0.6.1"
-    supports-color "^5.5.0"
+    supports-color "^6.1.0"
 
 prelude-ls@~1.1.2:
   version "1.1.2"
   resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
   integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
 
-prettier@1.13.7:
-  version "1.13.7"
-  resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.13.7.tgz#850f3b8af784a49a6ea2d2eaa7ed1428a34b7281"
-  integrity sha512-KIU72UmYPGk4MujZGYMFwinB7lOf2LsDNGSOC8ufevsrPLISrZbNJlWstRi3m0AMuszbH+EFSQ/r6w56RSPK6w==
+prepend-http@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897"
+  integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=
+
+prettier@1.16.3:
+  version "1.16.3"
+  resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.16.3.tgz#8c62168453badef702f34b45b6ee899574a6a65d"
+  integrity sha512-kn/GU6SMRYPxUakNXhpP0EedT/KmaPzr0H5lIsDogrykbaxOpOfAFfk5XA7DZrJyMAv1wlMV3CPcZruGXVVUZw==
 
 prettier@^1.13.0:
-  version "1.15.3"
-  resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.15.3.tgz#1feaac5bdd181237b54dbe65d874e02a1472786a"
-  integrity sha512-gAU9AGAPMaKb3NNSUUuhhFAS7SCO4ALTN4nRIn6PJ075Qd28Yn2Ig2ahEJWdJwJmlEBTUfC7mMUSFy8MwsOCfg==
+  version "1.18.2"
+  resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.18.2.tgz#6823e7c5900017b4bd3acf46fe9ac4b4d7bda9ea"
+  integrity sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw==
 
 pretty-error@^2.0.2:
   version "2.1.1"
@@ -6906,13 +7191,13 @@ promise@^7.0.1:
   dependencies:
     asap "~2.0.3"
 
-proxy-addr@~2.0.4:
-  version "2.0.4"
-  resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.4.tgz#ecfc733bf22ff8c6f407fa275327b9ab67e48b93"
-  integrity sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==
+proxy-addr@~2.0.5:
+  version "2.0.5"
+  resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34"
+  integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==
   dependencies:
     forwarded "~0.1.2"
-    ipaddr.js "1.8.0"
+    ipaddr.js "1.9.0"
 
 prr@~1.0.1:
   version "1.0.1"
@@ -6925,9 +7210,9 @@ pseudomap@^1.0.2:
   integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
 
 psl@^1.1.24, psl@^1.1.28:
-  version "1.1.31"
-  resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.31.tgz#e9aa86d0101b5b105cbe93ac6b784cd547276184"
-  integrity sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==
+  version "1.1.32"
+  resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.32.tgz#3f132717cf2f9c169724b2b6caf373cf694198db"
+  integrity sha512-MHACAkHpihU/REGGPLj4sEfc/XKW2bheigvHO1dUqjaKigMp1C8+WLQYRGgeKFMsw5PMfegZcaN8IDXK/cD0+g==
 
 public-encrypt@^4.0.0:
   version "4.0.3"
@@ -7076,26 +7361,58 @@ punycode@1.3.2:
   resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
   integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
 
-punycode@2.x.x, punycode@^2.1.0, punycode@^2.1.1:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
-  integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
-
 punycode@^1.2.4, punycode@^1.4.1:
   version "1.4.1"
   resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
   integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
 
+punycode@^2.1.0, punycode@^2.1.1:
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
+  integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
+
+purgecss-webpack-plugin@^1.6.0:
+  version "1.6.0"
+  resolved "https://registry.yarnpkg.com/purgecss-webpack-plugin/-/purgecss-webpack-plugin-1.6.0.tgz#7b5d6d189f5574c1365592e1445d252162404e4a"
+  integrity sha512-rVrTWYsOTShUvD5gl0q/krkwTlBUILlyoqRk2XoujNm2dETt276yvK4vP9oyXVPSQyaMCjjP5YPMCq9PNgIlJQ==
+  dependencies:
+    purgecss "^1.4.0"
+    webpack-sources "^1.4.3"
+
+purgecss@^1.4.0:
+  version "1.4.0"
+  resolved "https://registry.yarnpkg.com/purgecss/-/purgecss-1.4.0.tgz#79905624ec1c6c8e1f03044bca92dd8a598ba429"
+  integrity sha512-or7/16i7O6DH+NpXqY8NCcWCc940O6PxOgjWAcMTElzgccKOJua1/n6JVtM8UYqoMMWoCyKk+CbLpo4+4mY3BQ==
+  dependencies:
+    glob "^7.1.3"
+    postcss "^7.0.14"
+    postcss-selector-parser "^6.0.0"
+    yargs "^14.0.0"
+
 q@^1.1.2:
   version "1.5.1"
   resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
   integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=
 
-qs@6.5.2, qs@~6.5.2:
+qs@6.7.0, qs@^6.7.0:
+  version "6.7.0"
+  resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc"
+  integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==
+
+qs@~6.5.2:
   version "6.5.2"
   resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
   integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
 
+query-string@^5.0.1:
+  version "5.1.1"
+  resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb"
+  integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==
+  dependencies:
+    decode-uri-component "^0.2.0"
+    object-assign "^4.1.0"
+    strict-uri-encode "^1.0.0"
+
 querystring-es3@^0.2.0:
   version "0.2.1"
   resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
@@ -7106,15 +7423,15 @@ querystring@0.2.0:
   resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
   integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
 
-querystringify@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.0.tgz#7ded8dfbf7879dcc60d0a644ac6754b283ad17ef"
-  integrity sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg==
+querystringify@^2.1.1:
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e"
+  integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==
 
 randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5:
-  version "2.0.6"
-  resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80"
-  integrity sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
+  integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
   dependencies:
     safe-buffer "^5.1.0"
 
@@ -7126,24 +7443,29 @@ randomfill@^1.0.3:
     randombytes "^2.0.5"
     safe-buffer "^5.1.0"
 
-range-parser@^1.0.3, range-parser@~1.2.0:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e"
-  integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=
+range-parser@^1.2.1, range-parser@~1.2.1:
+  version "1.2.1"
+  resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
+  integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
+
+rangetouch@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/rangetouch/-/rangetouch-2.0.0.tgz#5459cdb38b929326c5484ab47aac9632fbe3a896"
+  integrity sha512-y66wTFbwh7KafYligRsmIYYR1kZY8U9tGHH9PgbVhBUFmGzPMsOSjslXPedgR5D3M9W1QKVbAf1AtaVAt7JJTw==
 
 raven-js@^3.27.0:
-  version "3.27.0"
-  resolved "https://registry.yarnpkg.com/raven-js/-/raven-js-3.27.0.tgz#9f47c03e17933ce756e189f3669d49c441c1ba6e"
-  integrity sha512-vChdOL+yzecfnGA+B5EhEZkJ3kY3KlMzxEhShKh6Vdtooyl0yZfYNFQfYzgMf2v4pyQa+OTZ5esTxxgOOZDHqw==
+  version "3.27.2"
+  resolved "https://registry.yarnpkg.com/raven-js/-/raven-js-3.27.2.tgz#6c33df952026cd73820aa999122b7b7737a66775"
+  integrity sha512-mFWQcXnhRFEQe5HeFroPaEghlnqy7F5E2J3Fsab189ondqUzcjwSVi7el7F36cr6PvQYXoZ1P2F5CSF2/azeMQ==
 
-raw-body@2.3.3:
-  version "2.3.3"
-  resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3"
-  integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==
+raw-body@2.4.0:
+  version "2.4.0"
+  resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332"
+  integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==
   dependencies:
-    bytes "3.0.0"
-    http-errors "1.6.3"
-    iconv-lite "0.4.23"
+    bytes "3.1.0"
+    http-errors "1.7.2"
+    iconv-lite "0.4.24"
     unpipe "1.0.0"
 
 rc@^1.2.7:
@@ -7173,16 +7495,17 @@ read-pkg@^1.0.0:
     normalize-package-data "^2.3.2"
     path-type "^1.0.0"
 
-read-pkg@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-4.0.1.tgz#963625378f3e1c4d48c85872b5a6ec7d5d093237"
-  integrity sha1-ljYlN48+HE1IyFhytabsfV0JMjc=
+read-pkg@^5.0.0:
+  version "5.1.1"
+  resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.1.1.tgz#5cf234dde7a405c90c88a519ab73c467e9cb83f5"
+  integrity sha512-dFcTLQi6BZ+aFUaICg7er+/usEoqFdQxiEBsEMNGoipenihtxxtdrQuBXvyANCEI8VuUIVYFgeHGx9sLLvim4w==
   dependencies:
-    normalize-package-data "^2.3.2"
+    "@types/normalize-package-data" "^2.4.0"
+    normalize-package-data "^2.5.0"
     parse-json "^4.0.0"
-    pify "^3.0.0"
+    type-fest "^0.4.1"
 
-"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6:
+"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6:
   version "2.3.6"
   resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
   integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==
@@ -7195,26 +7518,16 @@ read-pkg@^4.0.1:
     string_decoder "~1.1.1"
     util-deprecate "~1.0.1"
 
-readable-stream@1.0:
-  version "1.0.34"
-  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c"
-  integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=
-  dependencies:
-    core-util-is "~1.0.0"
-    inherits "~2.0.1"
-    isarray "0.0.1"
-    string_decoder "~0.10.x"
-
-readable-stream@^3.0.6:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.1.0.tgz#19c2e9c1ce43507c53f6eefbcf1ee3d4aaa786f5"
-  integrity sha512-vpydAvIJvPODZNagCPuHG87O9JNPtvFEtjHHRVwNVsVVRBqemvPJkc2SYbxJsiZXawJdtZNmkmnsPuE3IgsG0A==
+readable-stream@^3.0.6, readable-stream@^3.1.1:
+  version "3.4.0"
+  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc"
+  integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==
   dependencies:
     inherits "^2.0.3"
     string_decoder "^1.1.1"
     util-deprecate "^1.0.1"
 
-readdirp@^2.0.0:
+readdirp@^2.2.1:
   version "2.2.1"
   resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525"
   integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==
@@ -7236,10 +7549,10 @@ redent@^1.0.0:
     indent-string "^2.1.0"
     strip-indent "^1.0.1"
 
-regenerate-unicode-properties@^7.0.0:
-  version "7.0.0"
-  resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz#107405afcc4a190ec5ed450ecaa00ed0cafa7a4c"
-  integrity sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw==
+regenerate-unicode-properties@^8.0.2:
+  version "8.1.0"
+  resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e"
+  integrity sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==
   dependencies:
     regenerate "^1.4.0"
 
@@ -7253,15 +7566,15 @@ regenerator-runtime@^0.11.0:
   resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
   integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==
 
-regenerator-runtime@^0.12.0:
-  version "0.12.1"
-  resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de"
-  integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==
+regenerator-runtime@^0.13.2:
+  version "0.13.2"
+  resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz#32e59c9a6fb9b1a4aff09b4930ca2d4477343447"
+  integrity sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==
 
-regenerator-transform@^0.13.3:
-  version "0.13.3"
-  resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.3.tgz#264bd9ff38a8ce24b06e0636496b2c856b57bcbb"
-  integrity sha512-5ipTrZFSq5vU2YoGoww4uaRVAK4wyYC4TSICibbfEPOruUu8FFP7ErV0BjmbIOEpn3O/k9na9UEdYR/3m7N6uA==
+regenerator-transform@^0.14.0:
+  version "0.14.0"
+  resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.0.tgz#2ca9aaf7a2c239dd32e4761218425b8c7a86ecaf"
+  integrity sha512-rtOelq4Cawlbmq9xuMR5gdFmv7ku/sFoB7sRiywx7aq53bc52b4j6zvH7Te1Vt/X2YveDKnCGUbioieU7FEL3w==
   dependencies:
     private "^0.1.6"
 
@@ -7273,6 +7586,11 @@ regex-not@^1.0.0, regex-not@^1.0.2:
     extend-shallow "^3.0.2"
     safe-regex "^1.1.0"
 
+regexp-tree@^0.1.6:
+  version "0.1.10"
+  resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.10.tgz#d837816a039c7af8a8d64d7a7c3cf6a1d93450bc"
+  integrity sha512-K1qVSbcedffwuIslMwpe6vGlj+ZXRnGkvjAtFHfDZZZuEdA/h0dxljAPu9vhUo6Rrx2U2AwJ+nSQ6hK+lrP5MQ==
+
 regexpp@^1.0.1:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-1.1.0.tgz#0e3516dd0b7904f413d2d4193dce4618c3a689ab"
@@ -7287,17 +7605,17 @@ regexpu-core@^1.0.0:
     regjsgen "^0.2.0"
     regjsparser "^0.1.4"
 
-regexpu-core@^4.1.3, regexpu-core@^4.2.0:
-  version "4.4.0"
-  resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.4.0.tgz#8d43e0d1266883969720345e70c275ee0aec0d32"
-  integrity sha512-eDDWElbwwI3K0Lo6CqbQbA6FwgtCz4kYTarrri1okfkRLZAqstU+B3voZBCjg8Fl6iq0gXrJG6MvRgLthfvgOA==
+regexpu-core@^4.5.4:
+  version "4.5.4"
+  resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.5.4.tgz#080d9d02289aa87fe1667a4f5136bc98a6aebaae"
+  integrity sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==
   dependencies:
     regenerate "^1.4.0"
-    regenerate-unicode-properties "^7.0.0"
+    regenerate-unicode-properties "^8.0.2"
     regjsgen "^0.5.0"
     regjsparser "^0.6.0"
     unicode-match-property-ecmascript "^1.0.4"
-    unicode-match-property-value-ecmascript "^1.0.2"
+    unicode-match-property-value-ecmascript "^1.1.0"
 
 regjsgen@^0.2.0:
   version "0.2.0"
@@ -7334,13 +7652,13 @@ remove-trailing-separator@^1.0.1:
   integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8=
 
 renderkid@^2.0.1:
-  version "2.0.2"
-  resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.2.tgz#12d310f255360c07ad8fde253f6c9e9de372d2aa"
-  integrity sha512-FsygIxevi1jSiPY9h7vZmBFUbAOcbYm9UwyiLNdVsLRs/5We9Ob5NMPbGYUTWiLq5L+ezlVdE0A8bbME5CWTpg==
+  version "2.0.3"
+  resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.3.tgz#380179c2ff5ae1365c522bf2fcfcff01c5b74149"
+  integrity sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==
   dependencies:
     css-select "^1.1.0"
-    dom-converter "~0.2"
-    htmlparser2 "~3.3.0"
+    dom-converter "^0.2"
+    htmlparser2 "^3.3.0"
     strip-ansi "^3.0.0"
     utila "^0.4.0"
 
@@ -7361,21 +7679,21 @@ repeating@^2.0.0:
   dependencies:
     is-finite "^1.0.0"
 
-request-promise-core@1.1.1:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.1.tgz#3eee00b2c5aa83239cfb04c5700da36f81cd08b6"
-  integrity sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=
+request-promise-core@1.1.2:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.2.tgz#339f6aababcafdb31c799ff158700336301d3346"
+  integrity sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==
   dependencies:
-    lodash "^4.13.1"
+    lodash "^4.17.11"
 
-request-promise-native@^1.0.5:
-  version "1.0.5"
-  resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.5.tgz#5281770f68e0c9719e5163fd3fab482215f4fda5"
-  integrity sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=
+request-promise-native@^1.0.5, request-promise-native@^1.0.7:
+  version "1.0.7"
+  resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.7.tgz#a49868a624bdea5069f1251d0a836e0d89aa2c59"
+  integrity sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==
   dependencies:
-    request-promise-core "1.1.1"
-    stealthy-require "^1.1.0"
-    tough-cookie ">=2.3.3"
+    request-promise-core "1.1.2"
+    stealthy-require "^1.1.1"
+    tough-cookie "^2.3.3"
 
 request@^2.87.0, request@^2.88.0:
   version "2.88.0"
@@ -7408,16 +7726,16 @@ require-directory@^2.1.1:
   resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
   integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
 
-require-from-string@^2.0.1:
-  version "2.0.2"
-  resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
-  integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==
-
 require-main-filename@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
   integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=
 
+require-main-filename@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
+  integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
+
 require-uncached@^1.0.3:
   version "1.0.3"
   resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3"
@@ -7431,6 +7749,11 @@ requires-port@^1.0.0:
   resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
   integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=
 
+reselect@^3.0.1:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/reselect/-/reselect-3.0.1.tgz#efdaa98ea7451324d092b2b2163a6a1d7a9a2147"
+  integrity sha1-79qpjqdFEyTQkrKyFjpqHXqaIUc=
+
 resolve-cwd@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a"
@@ -7453,10 +7776,10 @@ resolve-url@^0.2.1:
   resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
   integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
 
-resolve@^1.1.6, resolve@^1.3.2, resolve@^1.8.1:
-  version "1.9.0"
-  resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.9.0.tgz#a14c6fdfa8f92a7df1d996cb7105fa744658ea06"
-  integrity sha512-TZNye00tI67lwYvzxCxHGjwTNlUV70io54/Ed4j6PscB8xVfuBJpRenI/o6dVk0cY0PYTY27AgCoGGxRnYuItQ==
+resolve@^1.1.6, resolve@^1.10.0, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.8.1:
+  version "1.11.0"
+  resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.0.tgz#4014870ba296176b86343d50b60f3b50609ce232"
+  integrity sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==
   dependencies:
     path-parse "^1.0.6"
 
@@ -7473,6 +7796,11 @@ ret@~0.1.10:
   resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
   integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
 
+retry@^0.12.0:
+  version "0.12.0"
+  resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b"
+  integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=
+
 rgb-regex@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1"
@@ -7490,12 +7818,12 @@ right-align@^0.1.1:
   dependencies:
     align-text "^0.1.1"
 
-rimraf@2, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@~2.6.2:
-  version "2.6.2"
-  resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"
-  integrity sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==
+rimraf@2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3, rimraf@~2.6.2:
+  version "2.6.3"
+  resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
+  integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
   dependencies:
-    glob "^7.0.5"
+    glob "^7.1.3"
 
 ripemd160@^2.0.0, ripemd160@^2.0.1:
   version "2.0.2"
@@ -7531,7 +7859,7 @@ rx-lite@*, rx-lite@^4.0.8:
   resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444"
   integrity sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=
 
-safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
+safe-buffer@5.1.2, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
   version "5.1.2"
   resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
   integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
@@ -7548,6 +7876,22 @@ safe-regex@^1.1.0:
   resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
   integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
 
+sanitize-html@^1.20.1:
+  version "1.20.1"
+  resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-1.20.1.tgz#f6effdf55dd398807171215a62bfc21811bacf85"
+  integrity sha512-txnH8TQjaQvg2Q0HY06G6CDJLVYCpbnxrdO0WN8gjCKaU5J0KbyGYhZxx5QJg3WLZ1lB7XU9kDkfrCXUozqptA==
+  dependencies:
+    chalk "^2.4.1"
+    htmlparser2 "^3.10.0"
+    lodash.clonedeep "^4.5.0"
+    lodash.escaperegexp "^4.1.2"
+    lodash.isplainobject "^4.0.6"
+    lodash.isstring "^4.0.1"
+    lodash.mergewith "^4.6.1"
+    postcss "^7.0.5"
+    srcset "^1.0.0"
+    xtend "^4.0.1"
+
 sass-graph@^2.2.4:
   version "2.2.4"
   resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49"
@@ -7575,14 +7919,14 @@ sax@^1.2.4, sax@~1.2.4:
   resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
   integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
 
-saxes@^3.1.4:
-  version "3.1.4"
-  resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.4.tgz#4ad5c53eb085ac0570ea1071a07aaf22ad29cebd"
-  integrity sha512-GVZmLJnkS4Vl8Pe9o4nc5ALZ615VOVxCmea8Cs0l+8GZw3RQ5XGOSUomIUfuZuk4Todo44v4y+HY1EATkDDiZg==
+saxes@^3.1.5:
+  version "3.1.10"
+  resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.10.tgz#6028a4d6d65f0b5f5b5d250c0500be6a7950fe13"
+  integrity sha512-G/mVZCCGhJqgS+I7wT5gBHyTNXLe2SQcu2qmhwl1OKcSHyJEXKQY2CLT+qWIxV+m6uiGMLfSOJGLQQHhklIeEQ==
   dependencies:
     xmlchars "^1.3.1"
 
-schema-utils@^0.4.2, schema-utils@^0.4.4:
+schema-utils@^0.4.4:
   version "0.4.7"
   resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187"
   integrity sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==
@@ -7612,34 +7956,32 @@ select-hose@^2.0.0:
   resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
   integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=
 
-selfsigned@^1.9.1:
+selfsigned@^1.10.4:
   version "1.10.4"
   resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.4.tgz#cdd7eccfca4ed7635d47a08bf2d5d3074092e2cd"
   integrity sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw==
   dependencies:
     node-forge "0.7.5"
 
-semantic-ui-css@^2.4.1:
-  version "2.4.1"
-  resolved "https://registry.yarnpkg.com/semantic-ui-css/-/semantic-ui-css-2.4.1.tgz#f5aea39fafb787cbd905ec724272a3f9cba9004a"
-  integrity sha512-Pkp0p9oWOxlH0kODx7qFpIRYpK1T4WJOO4lNnpNPOoWKCrYsfHqYSKgk5fHfQtnWnsAKy7nLJMW02bgDWWFZFg==
-  dependencies:
-    jquery x.*
-
 "semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0:
-  version "5.6.0"
-  resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004"
-  integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==
+  version "5.7.0"
+  resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b"
+  integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==
+
+semver@^6.0.0, semver@^6.1.1:
+  version "6.1.1"
+  resolved "https://registry.yarnpkg.com/semver/-/semver-6.1.1.tgz#53f53da9b30b2103cd4f15eab3a18ecbcb210c9b"
+  integrity sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ==
 
 semver@~5.3.0:
   version "5.3.0"
   resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
   integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8=
 
-send@0.16.2:
-  version "0.16.2"
-  resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1"
-  integrity sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==
+send@0.17.1:
+  version "0.17.1"
+  resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8"
+  integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==
   dependencies:
     debug "2.6.9"
     depd "~1.1.2"
@@ -7648,19 +7990,19 @@ send@0.16.2:
     escape-html "~1.0.3"
     etag "~1.8.1"
     fresh "0.5.2"
-    http-errors "~1.6.2"
-    mime "1.4.1"
-    ms "2.0.0"
+    http-errors "~1.7.2"
+    mime "1.6.0"
+    ms "2.1.1"
     on-finished "~2.3.0"
-    range-parser "~1.2.0"
-    statuses "~1.4.0"
+    range-parser "~1.2.1"
+    statuses "~1.5.0"
 
-serialize-javascript@^1.4.0:
-  version "1.5.0"
-  resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.5.0.tgz#1aa336162c88a890ddad5384baebc93a655161fe"
-  integrity sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ==
+serialize-javascript@^1.4.0, serialize-javascript@^1.7.0:
+  version "1.7.0"
+  resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.7.0.tgz#d6e0dfb2a3832a8c94468e6eb1db97e55a192a65"
+  integrity sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA==
 
-serve-index@^1.7.2:
+serve-index@^1.9.1:
   version "1.9.1"
   resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239"
   integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=
@@ -7673,15 +8015,15 @@ serve-index@^1.7.2:
     mime-types "~2.1.17"
     parseurl "~1.3.2"
 
-serve-static@1.13.2:
-  version "1.13.2"
-  resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1"
-  integrity sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==
+serve-static@1.14.1:
+  version "1.14.1"
+  resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9"
+  integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==
   dependencies:
     encodeurl "~1.0.2"
     escape-html "~1.0.3"
-    parseurl "~1.3.2"
-    send "0.16.2"
+    parseurl "~1.3.3"
+    send "0.17.1"
 
 set-blocking@^2.0.0, set-blocking@~2.0.0:
   version "2.0.0"
@@ -7718,6 +8060,11 @@ setprototypeof@1.1.0:
   resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
   integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==
 
+setprototypeof@1.1.1:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683"
+  integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==
+
 sha.js@^2.4.0, sha.js@^2.4.8:
   version "2.4.11"
   resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
@@ -7863,10 +8210,17 @@ sockjs@0.3.19:
     faye-websocket "^0.10.0"
     uuid "^3.0.1"
 
-sortablejs@^1.7.0:
-  version "1.7.0"
-  resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.7.0.tgz#80a2b2370abd568e1cec8c271131ef30a904fa28"
-  integrity sha1-gKKyNwq9Vo4c7IwnETHvMKkE+ig=
+sort-keys@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128"
+  integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=
+  dependencies:
+    is-plain-obj "^1.0.0"
+
+sortablejs@^1.9.0:
+  version "1.9.0"
+  resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.9.0.tgz#2d1e74ae6bac2cb4ad0622908f340848969eb88d"
+  integrity sha512-Ot6bYJ6PoqPmpsqQYXjn1+RKrY2NWQvQt/o4jfd/UYwVWndyO5EPO8YHbnm5HIykf8ENsm4JUrdAvolPT86yYA==
 
 source-list-map@^2.0.0:
   version "2.0.1"
@@ -7884,10 +8238,10 @@ source-map-resolve@^0.5.0:
     source-map-url "^0.4.0"
     urix "^0.1.0"
 
-source-map-support@^0.5.0, source-map-support@~0.5.6:
-  version "0.5.9"
-  resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f"
-  integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==
+source-map-support@^0.5.0, source-map-support@~0.5.10:
+  version "0.5.12"
+  resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599"
+  integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==
   dependencies:
     buffer-from "^1.0.0"
     source-map "^0.6.0"
@@ -7936,34 +8290,32 @@ spdx-expression-parse@^3.0.0:
     spdx-license-ids "^3.0.0"
 
 spdx-license-ids@^3.0.0:
-  version "3.0.2"
-  resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.2.tgz#a59efc09784c2a5bada13cfeaf5c75dd214044d2"
-  integrity sha512-qky9CVt0lVIECkEsYbNILVnPvycuEBkXoMFLRWsREkomQLevYhtRKC+R91a5TOAQ3bCMjikRwhyaRqj1VYatYg==
+  version "3.0.4"
+  resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz#75ecd1a88de8c184ef015eafb51b5b48bfd11bb1"
+  integrity sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==
 
-spdy-transport@^2.0.18:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.1.1.tgz#c54815d73858aadd06ce63001e7d25fa6441623b"
-  integrity sha512-q7D8c148escoB3Z7ySCASadkegMmUZW8Wb/Q1u0/XBgDKMO880rLQDj8Twiew/tYi7ghemKUi/whSYOwE17f5Q==
+spdy-transport@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31"
+  integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==
   dependencies:
-    debug "^2.6.8"
-    detect-node "^2.0.3"
+    debug "^4.1.0"
+    detect-node "^2.0.4"
     hpack.js "^2.1.6"
-    obuf "^1.1.1"
-    readable-stream "^2.2.9"
-    safe-buffer "^5.0.1"
-    wbuf "^1.7.2"
+    obuf "^1.1.2"
+    readable-stream "^3.0.6"
+    wbuf "^1.7.3"
 
-spdy@^3.4.1:
-  version "3.4.7"
-  resolved "https://registry.yarnpkg.com/spdy/-/spdy-3.4.7.tgz#42ff41ece5cc0f99a3a6c28aabb73f5c3b03acbc"
-  integrity sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=
+spdy@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.0.tgz#81f222b5a743a329aa12cea6a390e60e9b613c52"
+  integrity sha512-ot0oEGT/PGUpzf/6uk4AWLqkq+irlqHXkrdbk51oWONh3bxQmBuljxPNl66zlRRcIJStWq0QkLUCPOPjgjvU0Q==
   dependencies:
-    debug "^2.6.8"
-    handle-thing "^1.2.5"
+    debug "^4.1.0"
+    handle-thing "^2.0.0"
     http-deceiver "^1.2.7"
-    safe-buffer "^5.0.1"
     select-hose "^2.0.0"
-    spdy-transport "^2.0.18"
+    spdy-transport "^3.0.0"
 
 split-string@^3.0.1, split-string@^3.0.2:
   version "3.1.0"
@@ -7977,10 +8329,18 @@ sprintf-js@~1.0.2:
   resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
   integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
 
+srcset@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/srcset/-/srcset-1.0.0.tgz#a5669de12b42f3b1d5e83ed03c71046fc48f41ef"
+  integrity sha1-pWad4StC87HV6D7QPHEEb8SPQe8=
+  dependencies:
+    array-uniq "^1.0.2"
+    number-is-nan "^1.0.0"
+
 sshpk@^1.7.0:
-  version "1.15.2"
-  resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.15.2.tgz#c946d6bd9b1a39d0e8635763f5242d6ed6dcb629"
-  integrity sha512-Ra/OXQtuh0/enyl4ETZAfTaeksa6BXks5ZcjpSUNrjBr0DvrJKX+1fsKDPpT9TBXgHAFsa4510aNVgI8g/+SzA==
+  version "1.16.1"
+  resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877"
+  integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==
   dependencies:
     asn1 "~0.2.3"
     assert-plus "^1.0.0"
@@ -7999,14 +8359,14 @@ ssri@^5.2.4:
   dependencies:
     safe-buffer "^5.1.1"
 
-ssri@^6.0.0, ssri@^6.0.1:
+ssri@^6.0.1:
   version "6.0.1"
   resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8"
   integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==
   dependencies:
     figgy-pudding "^3.5.1"
 
-stable@~0.1.6:
+stable@^0.1.8:
   version "0.1.8"
   resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
   integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
@@ -8024,16 +8384,11 @@ static-extend@^0.1.1:
     define-property "^0.2.5"
     object-copy "^0.1.0"
 
-"statuses@>= 1.4.0 < 2":
+"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0:
   version "1.5.0"
   resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
   integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
 
-statuses@~1.4.0:
-  version "1.4.0"
-  resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087"
-  integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==
-
 stdout-stream@^1.4.0:
   version "1.4.1"
   resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.1.tgz#5ac174cdd5cd726104aa0c0b2bd83815d8d535de"
@@ -8041,15 +8396,15 @@ stdout-stream@^1.4.0:
   dependencies:
     readable-stream "^2.0.1"
 
-stealthy-require@^1.1.0:
+stealthy-require@^1.1.1:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b"
   integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=
 
 stream-browserify@^2.0.1:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db"
-  integrity sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b"
+  integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==
   dependencies:
     inherits "~2.0.1"
     readable-stream "^2.0.2"
@@ -8078,6 +8433,11 @@ stream-shift@^1.0.0:
   resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952"
   integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=
 
+strict-uri-encode@^1.0.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
+  integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=
+
 string-width@^1.0.1, string-width@^1.0.2:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
@@ -8095,6 +8455,15 @@ string-width@^1.0.1, string-width@^1.0.2:
     is-fullwidth-code-point "^2.0.0"
     strip-ansi "^4.0.0"
 
+string-width@^3.0.0, string-width@^3.1.0:
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
+  integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
+  dependencies:
+    emoji-regex "^7.0.1"
+    is-fullwidth-code-point "^2.0.0"
+    strip-ansi "^5.1.0"
+
 string.prototype.padend@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz#f3aaef7c1719f170c5eab1c32bf780d96e21f2f0"
@@ -8120,11 +8489,6 @@ string_decoder@^1.0.0, string_decoder@^1.1.1:
   dependencies:
     safe-buffer "~5.1.0"
 
-string_decoder@~0.10.x:
-  version "0.10.31"
-  resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
-  integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=
-
 string_decoder@~1.1.1:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
@@ -8146,6 +8510,13 @@ strip-ansi@^4.0.0:
   dependencies:
     ansi-regex "^3.0.0"
 
+strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
+  version "5.2.0"
+  resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
+  integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
+  dependencies:
+    ansi-regex "^4.1.0"
+
 strip-bom@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
@@ -8176,9 +8547,9 @@ strip-json-comments@~2.0.1:
   integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
 
 stylehacks@^4.0.0:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.1.tgz#3186595d047ab0df813d213e51c8b94e0b9010f2"
-  integrity sha512-TK5zEPeD9NyC1uPIdjikzsgWxdQQN/ry1X3d1iOz1UkYDCmcr928gWD1KHgyC27F50UnE0xCTrBOO1l6KR8M4w==
+  version "4.0.3"
+  resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5"
+  integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==
   dependencies:
     browserslist "^4.0.0"
     postcss "^7.0.0"
@@ -8196,37 +8567,49 @@ supports-color@^2.0.0:
   resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
   integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
 
-supports-color@^5.1.0, supports-color@^5.3.0, supports-color@^5.4.0, supports-color@^5.5.0:
+supports-color@^5.3.0, supports-color@^5.4.0, supports-color@^5.5.0:
   version "5.5.0"
   resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
   integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
   dependencies:
     has-flag "^3.0.0"
 
+supports-color@^6.1.0:
+  version "6.1.0"
+  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3"
+  integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==
+  dependencies:
+    has-flag "^3.0.0"
+
+svg-tags@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764"
+  integrity sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=
+
 svgo@^1.0.0:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.1.1.tgz#12384b03335bcecd85cfa5f4e3375fed671cb985"
-  integrity sha512-GBkJbnTuFpM4jFbiERHDWhZc/S/kpHToqmZag3aEBjPYK44JAN2QBjvrGIxLOoCyMZjuFQIfTO2eJd8uwLY/9g==
+  version "1.2.2"
+  resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.2.2.tgz#0253d34eccf2aed4ad4f283e11ee75198f9d7316"
+  integrity sha512-rAfulcwp2D9jjdGu+0CuqlrAUin6bBWrpoqXWwKDZZZJfXcUXQSxLJOFJCQCSA0x0pP2U0TxSlJu2ROq5Bq6qA==
   dependencies:
-    coa "~2.0.1"
-    colors "~1.1.2"
+    chalk "^2.4.1"
+    coa "^2.0.2"
     css-select "^2.0.0"
-    css-select-base-adapter "~0.1.0"
+    css-select-base-adapter "^0.1.1"
     css-tree "1.0.0-alpha.28"
     css-url-regex "^1.1.0"
-    csso "^3.5.0"
-    js-yaml "^3.12.0"
+    csso "^3.5.1"
+    js-yaml "^3.13.1"
     mkdirp "~0.5.1"
-    object.values "^1.0.4"
+    object.values "^1.1.0"
     sax "~1.2.4"
-    stable "~0.1.6"
+    stable "^0.1.8"
     unquote "~1.1.1"
     util.promisify "~1.0.0"
 
 symbol-tree@^3.2.2:
-  version "3.2.2"
-  resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6"
-  integrity sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=
+  version "3.2.4"
+  resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
+  integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
 
 table@4.0.2:
   version "4.0.2"
@@ -8241,73 +8624,84 @@ table@4.0.2:
     string-width "^2.1.1"
 
 tapable@^1.0.0, tapable@^1.1.0:
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.1.tgz#4d297923c5a72a42360de2ab52dadfaaec00018e"
-  integrity sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA==
+  version "1.1.3"
+  resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
+  integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
 
 tar@^2.0.0:
-  version "2.2.1"
-  resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
-  integrity sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=
+  version "2.2.2"
+  resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.2.tgz#0ca8848562c7299b8b446ff6a4d60cdbb23edc40"
+  integrity sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==
   dependencies:
     block-stream "*"
-    fstream "^1.0.2"
+    fstream "^1.0.12"
     inherits "2"
 
 tar@^4:
-  version "4.4.8"
-  resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d"
-  integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==
+  version "4.4.10"
+  resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.10.tgz#946b2810b9a5e0b26140cf78bea6b0b0d689eba1"
+  integrity sha512-g2SVs5QIxvo6OLp0GudTqEf05maawKUxXru104iaayWA09551tFCTI8f1Asb4lPfkBr91k07iL4c11XO3/b0tA==
   dependencies:
     chownr "^1.1.1"
     fs-minipass "^1.2.5"
-    minipass "^2.3.4"
-    minizlib "^1.1.1"
+    minipass "^2.3.5"
+    minizlib "^1.2.1"
     mkdirp "^0.5.0"
     safe-buffer "^5.1.2"
-    yallist "^3.0.2"
+    yallist "^3.0.3"
 
-terser-webpack-plugin@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.1.0.tgz#cf7c25a1eee25bf121f4a587bb9e004e3f80e528"
-  integrity sha512-61lV0DSxMAZ8AyZG7/A4a3UPlrbOBo8NIQ4tJzLPAdGOQ+yoNC7l5ijEow27lBAL2humer01KLS6bGIMYQxKoA==
+terser-webpack-plugin@^1.1.0, terser-webpack-plugin@^1.2.3:
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.3.0.tgz#69aa22426299f4b5b3775cbed8cb2c5d419aa1d4"
+  integrity sha512-W2YWmxPjjkUcOWa4pBEv4OP4er1aeQJlSo2UhtCFQCuRXEHjOFscO8VyWHj9JLlA0RzQb8Y2/Ta78XZvT54uGg==
   dependencies:
-    cacache "^11.0.2"
+    cacache "^11.3.2"
     find-cache-dir "^2.0.0"
+    is-wsl "^1.1.0"
+    loader-utils "^1.2.3"
     schema-utils "^1.0.0"
-    serialize-javascript "^1.4.0"
+    serialize-javascript "^1.7.0"
     source-map "^0.6.1"
-    terser "^3.8.1"
-    webpack-sources "^1.1.0"
-    worker-farm "^1.5.2"
+    terser "^4.0.0"
+    webpack-sources "^1.3.0"
+    worker-farm "^1.7.0"
 
-terser@^3.8.1:
-  version "3.13.1"
-  resolved "https://registry.yarnpkg.com/terser/-/terser-3.13.1.tgz#a02e8827fb9705fe7b609c31093d010b28cea8eb"
-  integrity sha512-ogyZye4DFqOtMzT92Y3Nxxw8OvXmL39HOALro4fc+EUYFFF9G/kk0znkvwMz6PPYgBtdKAodh3FPR70eugdaQA==
+terser@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/terser/-/terser-4.0.0.tgz#ef356f6f359a963e2cc675517f21c1c382877374"
+  integrity sha512-dOapGTU0hETFl1tCo4t56FN+2jffoKyER9qBGoUFyZ6y7WLoKT0bF+lAYi6B6YsILcGF3q1C2FBh8QcKSCgkgA==
   dependencies:
-    commander "~2.17.1"
+    commander "^2.19.0"
     source-map "~0.6.1"
-    source-map-support "~0.5.6"
-
-text-encoding@^0.6.4:
-  version "0.6.4"
-  resolved "https://registry.yarnpkg.com/text-encoding/-/text-encoding-0.6.4.tgz#e399a982257a276dae428bb92845cb71bdc26d19"
-  integrity sha1-45mpgiV6J22uQou5KEXLcb3CbRk=
+    source-map-support "~0.5.10"
 
 text-table@~0.2.0:
   version "0.2.0"
   resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
   integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
 
-thread-loader@^1.2.0:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/thread-loader/-/thread-loader-1.2.0.tgz#35dedb23cf294afbbce6c45c1339b950ed17e7a4"
-  integrity sha512-acJ0rvUk53+ly9cqYWNOpPqOgCkNpmHLPDGduNm4hDQWF7EDKEJXAopG9iEWsPPcml09wePkq3NF+ZUqnO6tbg==
+thenify-all@^1.0.0:
+  version "1.6.0"
+  resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726"
+  integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=
   dependencies:
-    async "^2.3.0"
-    loader-runner "^2.3.0"
+    thenify ">= 3.1.0 < 4"
+
+"thenify@>= 3.1.0 < 4":
+  version "3.3.0"
+  resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.0.tgz#e69e38a1babe969b0108207978b9f62b88604839"
+  integrity sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=
+  dependencies:
+    any-promise "^1.0.0"
+
+thread-loader@^2.1.2:
+  version "2.1.2"
+  resolved "https://registry.yarnpkg.com/thread-loader/-/thread-loader-2.1.2.tgz#f585dd38e852c7f9cded5d092992108148f5eb30"
+  integrity sha512-7xpuc9Ifg6WU+QYw/8uUqNdRwMD+N5gjwHKMqETrs96Qn+7BHwECpt2Brzr4HFlf4IAkZsayNhmGdbkBsTJ//w==
+  dependencies:
+    loader-runner "^2.3.1"
     loader-utils "^1.1.0"
+    neo-async "^2.6.0"
 
 through2@^2.0.0:
   version "2.0.5"
@@ -8386,24 +8780,22 @@ to-regex@^3.0.1, to-regex@^3.0.2:
     regex-not "^1.0.2"
     safe-regex "^1.1.0"
 
+toidentifier@1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
+  integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
+
 token-stream@0.0.1:
   version "0.0.1"
   resolved "https://registry.yarnpkg.com/token-stream/-/token-stream-0.0.1.tgz#ceeefc717a76c4316f126d0b9dbaa55d7e7df01a"
   integrity sha1-zu78cXp2xDFvEm0LnbqlXX598Bo=
 
-topo@3.x.x:
-  version "3.0.3"
-  resolved "https://registry.yarnpkg.com/topo/-/topo-3.0.3.tgz#d5a67fb2e69307ebeeb08402ec2a2a6f5f7ad95c"
-  integrity sha512-IgpPtvD4kjrJ7CRA3ov2FhWQADwv+Tdqbsf1ZnPUSAtCJ9e1Z44MmoSGDXGk4IppoZA7jd/QRkNddlLJWlUZsQ==
-  dependencies:
-    hoek "6.x.x"
-
 toposort@^1.0.0:
   version "1.0.7"
   resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029"
   integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk=
 
-tough-cookie@>=2.3.3, tough-cookie@^2.5.0:
+tough-cookie@^2.3.3, tough-cookie@^2.5.0:
   version "2.5.0"
   resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
   integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
@@ -8449,9 +8841,9 @@ tryer@^1.0.0:
   integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==
 
 tslib@^1.9.0:
-  version "1.9.3"
-  resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"
-  integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==
+  version "1.10.0"
+  resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a"
+  integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==
 
 tty-browserify@0.0.0:
   version "0.0.0"
@@ -8482,13 +8874,18 @@ type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.5, type-detect@^4.0.8:
   resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
   integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
 
-type-is@~1.6.16:
-  version "1.6.16"
-  resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194"
-  integrity sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==
+type-fest@^0.4.1:
+  version "0.4.1"
+  resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.4.1.tgz#8bdf77743385d8a4f13ba95f610f5ccd68c728f8"
+  integrity sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==
+
+type-is@~1.6.17, type-is@~1.6.18:
+  version "1.6.18"
+  resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
+  integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
   dependencies:
     media-typer "0.3.0"
-    mime-types "~2.1.18"
+    mime-types "~2.1.24"
 
 typedarray@^0.0.6:
   version "0.0.6"
@@ -8496,11 +8893,11 @@ typedarray@^0.0.6:
   integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
 
 uglify-js@3.4.x:
-  version "3.4.9"
-  resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.9.tgz#af02f180c1207d76432e473ed24a28f4a782bae3"
-  integrity sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==
+  version "3.4.10"
+  resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f"
+  integrity sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==
   dependencies:
-    commander "~2.17.1"
+    commander "~2.19.0"
     source-map "~0.6.1"
 
 uglify-js@^2.6.1:
@@ -8531,15 +8928,15 @@ unicode-match-property-ecmascript@^1.0.4:
     unicode-canonical-property-names-ecmascript "^1.0.4"
     unicode-property-aliases-ecmascript "^1.0.4"
 
-unicode-match-property-value-ecmascript@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz#9f1dc76926d6ccf452310564fd834ace059663d4"
-  integrity sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ==
+unicode-match-property-value-ecmascript@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz#5b4b426e08d13a80365e0d657ac7a6c1ec46a277"
+  integrity sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==
 
 unicode-property-aliases-ecmascript@^1.0.4:
-  version "1.0.4"
-  resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz#5a533f31b4317ea76f17d807fa0d116546111dd0"
-  integrity sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg==
+  version "1.0.5"
+  resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57"
+  integrity sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==
 
 union-value@^1.0.0:
   version "1.0.0"
@@ -8561,7 +8958,7 @@ uniqs@^2.0.0:
   resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02"
   integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI=
 
-unique-filename@^1.1.0:
+unique-filename@^1.1.0, unique-filename@^1.1.1:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230"
   integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==
@@ -8569,9 +8966,9 @@ unique-filename@^1.1.0:
     unique-slug "^2.0.0"
 
 unique-slug@^2.0.0:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.1.tgz#5e9edc6d1ce8fb264db18a507ef9bd8544451ca6"
-  integrity sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c"
+  integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==
   dependencies:
     imurmurhash "^0.1.4"
 
@@ -8598,10 +8995,10 @@ unset-value@^1.0.0:
     has-value "^0.3.1"
     isobject "^3.0.0"
 
-upath@^1.0.5:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd"
-  integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==
+upath@^1.1.1:
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068"
+  integrity sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==
 
 upper-case@^1.1.1:
   version "1.1.3"
@@ -8630,17 +9027,17 @@ url-loader@^1.1.2:
     schema-utils "^1.0.0"
 
 url-parse@^1.4.3:
-  version "1.4.4"
-  resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.4.tgz#cac1556e95faa0303691fec5cf9d5a1bc34648f8"
-  integrity sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg==
+  version "1.4.7"
+  resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278"
+  integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==
   dependencies:
-    querystringify "^2.0.0"
+    querystringify "^2.1.1"
     requires-port "^1.0.0"
 
-url-polyfill@^1.1.0:
-  version "1.1.3"
-  resolved "https://registry.yarnpkg.com/url-polyfill/-/url-polyfill-1.1.3.tgz#ce0bdf2e923aa6f66bc198ab776323dfc5a91e62"
-  integrity sha512-xIAXc0DyXJCd767sSeRu4eqisyYhR0z0sohWArCn+WPwIatD39xGrc09l+tluIUi6jGkpGa8Gz8TKwkKYxMQvQ==
+url-polyfill@^1.1.5:
+  version "1.1.5"
+  resolved "https://registry.yarnpkg.com/url-polyfill/-/url-polyfill-1.1.5.tgz#bec79b72b5407dba6d8cced2e32e4ab273aa9fb1"
+  integrity sha512-9XjIJ6nwrU+nGd8t90Ze0Zs7t8A+SU0gqsqPttj6j3zAVe5q0HFcuv37nDBdVSPpi4aTHTfbUF/i+ZVD+o2EbA==
 
 url@^0.11.0:
   version "0.11.0"
@@ -8660,7 +9057,7 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1:
   resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
   integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
 
-util.promisify@1.0.0, util.promisify@^1.0.0, util.promisify@~1.0.0:
+util.promisify@1.0.0, util.promisify@~1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030"
   integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==
@@ -8675,10 +9072,10 @@ util@0.10.3:
   dependencies:
     inherits "2.0.1"
 
-util@^0.10.3:
-  version "0.10.4"
-  resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901"
-  integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==
+util@^0.11.0:
+  version "0.11.1"
+  resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61"
+  integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==
   dependencies:
     inherits "2.0.3"
 
@@ -8711,9 +9108,9 @@ vary@~1.1.2:
   integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
 
 vendors@^1.0.0:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.2.tgz#7fcb5eef9f5623b156bcea89ec37d63676f21801"
-  integrity sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ==
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.3.tgz#a6467781abd366217c050f8202e7e50cc9eef8c0"
+  integrity sha512-fOi47nsJP5Wqefa43kyWSg80qF+Q3XA6MUkgi7Hp1HQaKDQW4cQrK2D0P7mmbFtsV1N89am55Yru/nyEwRubcw==
 
 verror@1.10.0:
   version "1.10.0"
@@ -8724,12 +9121,10 @@ verror@1.10.0:
     core-util-is "1.0.2"
     extsprintf "^1.2.0"
 
-vm-browserify@0.0.4:
-  version "0.0.4"
-  resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73"
-  integrity sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=
-  dependencies:
-    indexof "0.0.1"
+vm-browserify@^1.0.1:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.0.tgz#bd76d6a23323e2ca8ffa12028dc04559c75f9019"
+  integrity sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw==
 
 void-elements@^2.0.1:
   version "2.0.1"
@@ -8749,26 +9144,26 @@ vue-eslint-parser@^2.0.3:
     lodash "^4.17.4"
 
 vue-gettext@^2.1.0:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/vue-gettext/-/vue-gettext-2.1.1.tgz#8431b57c27d0becff131de6a643ac4ea8ffcb52c"
-  integrity sha512-vbKhl7VGlVtTElNIdvpC4GKTRH1CwZmzhELcP6jS/UaFcF+yZvS5bIIAiPCQzMEU5dpAI0hIgJAxAKOMIg7UXw==
+  version "2.1.5"
+  resolved "https://registry.yarnpkg.com/vue-gettext/-/vue-gettext-2.1.5.tgz#6bede1091c25ca657c591532a154b7e5680abd84"
+  integrity sha512-QAfPupLNthQLDVSIoLKOSiDeBqXja3qfT48Civhuxwjdee0fdi0MHTgsvnseMsHDfMJq6GBxIMBMhoRp6NJdjg==
 
 vue-hot-reload-api@^2.3.0:
-  version "2.3.1"
-  resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.1.tgz#b2d3d95402a811602380783ea4f566eb875569a2"
-  integrity sha512-AA86yKZ5uOKz87/q1UpngEXhbRkaYg1b7HMMVRobNV1IVKqZe8oLIzo6iMocVwZXnYitlGwf2k4ZRLOZlS8oPQ==
+  version "2.3.3"
+  resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.3.tgz#2756f46cb3258054c5f4723de8ae7e87302a1ccf"
+  integrity sha512-KmvZVtmM26BQOMK1rwUZsrqxEGeKiYSZGA7SNWE6uExx8UX/cj9hq2MRV/wWC3Cq6AoeDGk57rL9YMFRel/q+g==
 
 vue-lazyload@^1.2.6:
   version "1.2.6"
   resolved "https://registry.yarnpkg.com/vue-lazyload/-/vue-lazyload-1.2.6.tgz#baa04c172d52a812608eb12c7a6bfb14f5c91079"
   integrity sha512-6a61+pzwcfowhLRQiPdmRuJ40n/4fL/sEynu8KQZoCf5RVA0NH0X68vplLY0+lUM8mKNScYomaepV+hdjgnZhg==
 
-vue-loader@^15.4.2:
-  version "15.4.2"
-  resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.4.2.tgz#812bb26e447dd3b84c485eb634190d914ce125e2"
-  integrity sha512-nVV27GNIA9MeoD8yQ3dkUzwlAaAsWeYSWZHsu/K04KCD339lW0Jv2sJWsjj3721SP7sl2lYdPmjcHgkWQSp5bg==
+vue-loader@^15.7.0:
+  version "15.7.0"
+  resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.7.0.tgz#27275aa5a3ef4958c5379c006dd1436ad04b25b3"
+  integrity sha512-x+NZ4RIthQOxcFclEcs8sXGEWqnZHodL2J9Vq+hUz+TDZzBaDIh1j3d9M2IUlTjtrHTZy4uMuRdTi8BGws7jLA==
   dependencies:
-    "@vue/component-compiler-utils" "^2.0.0"
+    "@vue/component-compiler-utils" "^2.5.1"
     hash-sum "^1.0.2"
     loader-utils "^1.1.0"
     vue-hot-reload-api "^2.3.0"
@@ -8784,16 +9179,16 @@ vue-masonry@^0.11.5:
     vue "^2.0.0"
 
 vue-plyr@^5.0.4:
-  version "5.0.4"
-  resolved "https://registry.yarnpkg.com/vue-plyr/-/vue-plyr-5.0.4.tgz#13083b71a876d01200a3c93ebfd11585b671afda"
-  integrity sha512-zOLD7SZiYR/8DPYkZZR9zGTV+04GAc+fhnBymAWSRryncAG4889cYxXJSbIvlsNVGpdGRIOSIZ4p6pIupfmZ5w==
+  version "5.1.3"
+  resolved "https://registry.yarnpkg.com/vue-plyr/-/vue-plyr-5.1.3.tgz#38da58f71b952c3dbfa8c7fccc5b2471a118c654"
+  integrity sha512-Nx9uyn7OUfJ4FlcWs4u2N1YHuAdVhmlc/CEbT8IvwFOU9WP/8nxwOxMoAycMWrHK23a4MdYjrADEKC2QHWsw4A==
   dependencies:
-    plyr "^3.4.5"
+    plyr "^3.5.2"
 
 vue-router@^3.0.1:
-  version "3.0.2"
-  resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.0.2.tgz#dedc67afe6c4e2bc25682c8b1c2a8c0d7c7e56be"
-  integrity sha512-opKtsxjp9eOcFWdp6xLQPLmRGgfM932Tl56U9chYTnoWqKxQ8M20N7AkdEbM5beUh6wICoFGYugAX9vQjyJLFg==
+  version "3.0.6"
+  resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.0.6.tgz#2e4f0f9cbb0b96d0205ab2690cfe588935136ac3"
+  integrity sha512-Ox0ciFLswtSGRTHYhGvx2L44sVbTPNS+uD2kRISuo8B39Y79rOo0Kw0hzupTmiVtftQYCZl87mwldhh2L9Aquw==
 
 vue-style-loader@^4.1.0:
   version "4.1.2"
@@ -8804,34 +9199,34 @@ vue-style-loader@^4.1.0:
     loader-utils "^1.0.2"
 
 vue-template-compiler@^2.5.16, vue-template-compiler@^2.5.17:
-  version "2.5.21"
-  resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.5.21.tgz#a57ceb903177e8f643560a8d639a0f8db647054a"
-  integrity sha512-Vmk5Cv7UcmI99B9nXJEkaK262IQNnHp5rJYo+EwYpe2epTAXqcVyExhV6pk8jTkxQK2vRc8v8KmZBAwdmUZvvw==
+  version "2.6.10"
+  resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.10.tgz#323b4f3495f04faa3503337a82f5d6507799c9cc"
+  integrity sha512-jVZkw4/I/HT5ZMvRnhv78okGusqe0+qH2A0Em0Cp8aq78+NK9TII263CDVz2QXZsIT+yyV/gZc/j/vlwa+Epyg==
   dependencies:
     de-indent "^1.0.2"
     he "^1.1.0"
 
-vue-template-es2015-compiler@^1.6.0:
-  version "1.6.0"
-  resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.6.0.tgz#dc42697133302ce3017524356a6c61b7b69b4a18"
-  integrity sha512-x3LV3wdmmERhVCYy3quqA57NJW7F3i6faas++pJQWtknWT+n7k30F4TVdHvCLn48peTJFRvCpxs3UuFPqgeELg==
+vue-template-es2015-compiler@^1.6.0, vue-template-es2015-compiler@^1.9.0:
+  version "1.9.1"
+  resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825"
+  integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==
 
 vue-upload-component@^2.8.11:
-  version "2.8.16"
-  resolved "https://registry.yarnpkg.com/vue-upload-component/-/vue-upload-component-2.8.16.tgz#cf8c9c7d6b342a5e0485d6955cebd22f31806ed2"
-  integrity sha512-aDFKA1lpZojNFzSeC9iGah5qupj1ZhUCDjYFk4FyMNrUXhICSBicc+zzXGB1gQtoqjbmPjrWLZ/r2ejJ+iCcsA==
+  version "2.8.20"
+  resolved "https://registry.yarnpkg.com/vue-upload-component/-/vue-upload-component-2.8.20.tgz#60824d3f20f3216dca90d8c86a5c980851b04ea0"
+  integrity sha512-zrnJvULu4rnZe36Ib2/AZrI/h/mmNbUJZ+acZD652PyumzbvjCOQeYHe00sGifTdYjzzS66CwhTT+ubZ2D0Aow==
 
 vue@^2.0.0, vue@^2.5.17:
-  version "2.5.21"
-  resolved "https://registry.yarnpkg.com/vue/-/vue-2.5.21.tgz#3d33dcd03bb813912ce894a8303ab553699c4a85"
-  integrity sha512-Aejvyyfhn0zjVeLvXd70h4hrE4zZDx1wfZqia6ekkobLmUZ+vNFQer53B4fu0EjWBSiqApxPejzkO1Znt3joxQ==
+  version "2.6.10"
+  resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.10.tgz#a72b1a42a4d82a721ea438d1b6bf55e66195c637"
+  integrity sha512-ImThpeNU9HbdZL3utgMCq0oiMzAkt1mcgy3/E6zWC/G6AaQoeuFdsl9nDhTDU3X1R6FK7nsIUuRACVcjI+A2GQ==
 
 vuedraggable@^2.16.0:
-  version "2.17.0"
-  resolved "https://registry.yarnpkg.com/vuedraggable/-/vuedraggable-2.17.0.tgz#489c16c9bcb9eb06f441944d3c52e5f2bb7060f9"
-  integrity sha512-TAC5tJTSbHSINQCSB59qHnuzT0Ad+E3IgvSWuA1e9UaebD8DxKaY1tCdvL3XvuLoaM3wc1dhpP/NbjpdxYsrng==
+  version "2.21.0"
+  resolved "https://registry.yarnpkg.com/vuedraggable/-/vuedraggable-2.21.0.tgz#30c485ed737a9a6a73ea8f21cc8e1ed59aaddc92"
+  integrity sha512-UDp0epjaZikuInoJA9rlEIJaSTQThabq0R9x7TqBdl0qGVFKKzo6glP6ubfzWBmV4iRIfbSOs2DV06s3B5h5tA==
   dependencies:
-    sortablejs "^1.7.0"
+    sortablejs "^1.9.0"
 
 vuex-persistedstate@^2.5.4:
   version "2.5.4"
@@ -8847,9 +9242,9 @@ vuex-router-sync@^5.0.0:
   integrity sha512-Mry2sO4kiAG64714X1CFpTA/shUH1DmkZ26DFDtwoM/yyx6OtMrc+MxrU+7vvbNLO9LSpgwkiJ8W+rlmRtsM+w==
 
 vuex@^3.0.1:
-  version "3.0.1"
-  resolved "https://registry.yarnpkg.com/vuex/-/vuex-3.0.1.tgz#e761352ebe0af537d4bb755a9b9dc4be3df7efd2"
-  integrity sha512-wLoqz0B7DSZtgbWL1ShIBBCjv22GV5U+vcBFox658g6V0s4wZV9P4YjCNyoHSyIBpj1f29JBoNQIqD82cR4O3w==
+  version "3.1.1"
+  resolved "https://registry.yarnpkg.com/vuex/-/vuex-3.1.1.tgz#0c264bfe30cdbccf96ab9db3177d211828a5910e"
+  integrity sha512-ER5moSbLZuNSMBFnEBVGhQ1uCBNJslH9W/Dw2W7GZN23UQA69uapP5GTT9Vm8Trc0PzBSVt6LzF3hGjmv41xcg==
 
 w3c-hr-time@^1.0.1:
   version "1.0.1"
@@ -8859,9 +9254,9 @@ w3c-hr-time@^1.0.1:
     browser-process-hrtime "^0.1.2"
 
 w3c-xmlserializer@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.0.1.tgz#054cdcd359dc5d1f3ec9be4e272c756af4b21d39"
-  integrity sha512-XZGI1OH/OLQr/NaJhhPmzhngwcAnZDLytsvXnRmlYeRkmbb0I7sqFFA22erq4WQR0sUu17ZSQOAV9mFwCqKRNg==
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794"
+  integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==
   dependencies:
     domexception "^1.0.1"
     webidl-conversions "^4.0.2"
@@ -8876,7 +9271,7 @@ watchpack@^1.5.0:
     graceful-fs "^4.1.2"
     neo-async "^2.5.0"
 
-wbuf@^1.1.0, wbuf@^1.7.2:
+wbuf@^1.1.0, wbuf@^1.7.3:
   version "1.7.3"
   resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df"
   integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==
@@ -8895,12 +9290,13 @@ webidl-conversions@^4.0.2:
   resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"
   integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==
 
-webpack-bundle-analyzer@^3.0.3:
-  version "3.0.3"
-  resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.0.3.tgz#dbc7fff8f52058b6714a20fddf309d0790e3e0a0"
-  integrity sha512-naLWiRfmtH4UJgtUktRTLw6FdoZJ2RvCR9ePbwM9aRMsS/KjFerkPZG9epEvXRAw5d5oPdrs9+3p+afNjxW8Xw==
+webpack-bundle-analyzer@^3.3.0:
+  version "3.3.2"
+  resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.3.2.tgz#3da733a900f515914e729fcebcd4c40dde71fc6f"
+  integrity sha512-7qvJLPKB4rRWZGjVp5U1KEjwutbDHSKboAl0IfafnrdXMrgC0tOtZbQD6Rw0u4cmpgRN4O02Fc0t8eAT+FgGzA==
   dependencies:
-    acorn "^5.7.3"
+    acorn "^6.0.7"
+    acorn-walk "^6.1.1"
     bfj "^6.1.1"
     chalk "^2.4.1"
     commander "^2.18.0"
@@ -8930,49 +9326,52 @@ webpack-chain@^4.11.0:
     deepmerge "^1.5.2"
     javascript-stringify "^1.6.0"
 
-webpack-dev-middleware@3.4.0:
-  version "3.4.0"
-  resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.4.0.tgz#1132fecc9026fd90f0ecedac5cbff75d1fb45890"
-  integrity sha512-Q9Iyc0X9dP9bAsYskAVJ/hmIZZQwf/3Sy4xCAZgL5cUkjZmUZLt4l5HpbST/Pdgjn3u6pE7u5OdGd1apgzRujA==
+webpack-dev-middleware@^3.7.0:
+  version "3.7.0"
+  resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.0.tgz#ef751d25f4e9a5c8a35da600c5fda3582b5c6cff"
+  integrity sha512-qvDesR1QZRIAZHOE3iQ4CXLZZSQ1lAUsSpnQmlB1PBfoN/xdRjmge3Dok0W4IdaVLJOGJy3sGI4sZHwjRU0PCA==
   dependencies:
-    memory-fs "~0.4.1"
-    mime "^2.3.1"
-    range-parser "^1.0.3"
+    memory-fs "^0.4.1"
+    mime "^2.4.2"
+    range-parser "^1.2.1"
     webpack-log "^2.0.0"
 
-webpack-dev-server@^3.1.10:
-  version "3.1.10"
-  resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.1.10.tgz#507411bee727ee8d2fdffdc621b66a64ab3dea2b"
-  integrity sha512-RqOAVjfqZJtQcB0LmrzJ5y4Jp78lv9CK0MZ1YJDTaTmedMZ9PU9FLMQNrMCfVu8hHzaVLVOJKBlGEHMN10z+ww==
+webpack-dev-server@^3.4.1:
+  version "3.7.1"
+  resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.7.1.tgz#ce10ca0ad6cf28b03e2ce9808684a8616039155d"
+  integrity sha512-GSBjjDMQ+uJI/Rcw/NfXDq5QpfE4HviafCy2SdbJ8Q22MwsnyoHd5TbWRfxgkbklsMx+ZNgWIKK+cB28ynjiDQ==
   dependencies:
     ansi-html "0.0.7"
     bonjour "^3.5.0"
-    chokidar "^2.0.0"
-    compression "^1.5.2"
-    connect-history-api-fallback "^1.3.0"
-    debug "^3.1.0"
-    del "^3.0.0"
-    express "^4.16.2"
-    html-entities "^1.2.0"
-    http-proxy-middleware "~0.18.0"
+    chokidar "^2.1.6"
+    compression "^1.7.4"
+    connect-history-api-fallback "^1.6.0"
+    debug "^4.1.1"
+    del "^4.1.1"
+    express "^4.17.1"
+    html-entities "^1.2.1"
+    http-proxy-middleware "^0.19.1"
     import-local "^2.0.0"
-    internal-ip "^3.0.1"
+    internal-ip "^4.3.0"
     ip "^1.1.5"
-    killable "^1.0.0"
-    loglevel "^1.4.1"
-    opn "^5.1.0"
-    portfinder "^1.0.9"
+    killable "^1.0.1"
+    loglevel "^1.6.2"
+    opn "^5.5.0"
+    p-retry "^3.0.1"
+    portfinder "^1.0.20"
     schema-utils "^1.0.0"
-    selfsigned "^1.9.1"
-    serve-index "^1.7.2"
+    selfsigned "^1.10.4"
+    semver "^6.1.1"
+    serve-index "^1.9.1"
     sockjs "0.3.19"
     sockjs-client "1.3.0"
-    spdy "^3.4.1"
-    strip-ansi "^3.0.0"
-    supports-color "^5.1.0"
-    webpack-dev-middleware "3.4.0"
+    spdy "^4.0.0"
+    strip-ansi "^3.0.1"
+    supports-color "^6.1.0"
+    url "^0.11.0"
+    webpack-dev-middleware "^3.7.0"
     webpack-log "^2.0.0"
-    yargs "12.0.2"
+    yargs "12.0.5"
 
 webpack-log@^2.0.0:
   version "2.0.0"
@@ -8982,10 +9381,10 @@ webpack-log@^2.0.0:
     ansi-colors "^3.0.0"
     uuid "^3.3.2"
 
-webpack-merge@^4.1.4:
-  version "4.1.5"
-  resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.1.5.tgz#2be31e846c20767d1bef56bdca64c328a681190a"
-  integrity sha512-sVcM+MMJv6DO0C0GLLltx8mUlGMKXE0zBsuMqZ9jz2X9gsekALw6Rs0cAfTWc97VuWS6NpVUa78959zANnMMLQ==
+webpack-merge@^4.2.1:
+  version "4.2.1"
+  resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.1.tgz#5e923cf802ea2ace4fd5af1d3247368a633489b4"
+  integrity sha512-4p8WQyS98bUJcCvFMbdGZyZmsKuWjWVnVHnAS3FFg0HDaRVrPbkivx2RYCre8UiemD67RsiFFLfn4JhLAin8Vw==
   dependencies:
     lodash "^4.17.5"
 
@@ -8997,10 +9396,18 @@ webpack-sources@^1.1.0, webpack-sources@^1.3.0:
     source-list-map "^2.0.0"
     source-map "~0.6.1"
 
-webpack@^4.26.1:
-  version "4.28.0"
-  resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.28.0.tgz#6bdc26c17fe4c7e28c29fa002e6d37ac92caae9e"
-  integrity sha512-gPNTMGR5ZlBucXmEQ34TRxRqXnGYq9P3t8LeP9rvhkNnr+Cn+HvZMxGuJ4Hl7zdmoRUZP+GosniqJiadXW/RqQ==
+webpack-sources@^1.4.3:
+  version "1.4.3"
+  resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933"
+  integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==
+  dependencies:
+    source-list-map "^2.0.0"
+    source-map "~0.6.1"
+
+"webpack@>=4 < 4.29":
+  version "4.28.4"
+  resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.28.4.tgz#1ddae6c89887d7efb752adf0c3cd32b9b07eacd0"
+  integrity sha512-NxjD61WsK/a3JIdwWjtIpimmvE6UrRi3yG54/74Hk9rwNj5FPkA4DJCf1z4ByDWLkvZhTZE+P3C/eh6UD5lDcw==
   dependencies:
     "@webassemblyjs/ast" "1.7.11"
     "@webassemblyjs/helper-module-context" "1.7.11"
@@ -9028,11 +9435,12 @@ webpack@^4.26.1:
     webpack-sources "^1.3.0"
 
 websocket-driver@>=0.5.1:
-  version "0.7.0"
-  resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.0.tgz#0caf9d2d755d93aee049d4bdd0d3fe2cca2a24eb"
-  integrity sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=
+  version "0.7.3"
+  resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.3.tgz#a2d4e0d4f4f116f1e6297eba58b05d430100e9f9"
+  integrity sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==
   dependencies:
-    http-parser-js ">=0.4.0"
+    http-parser-js ">=0.4.0 <0.4.11"
+    safe-buffer ">=5.1.0"
     websocket-extensions ">=0.1.1"
 
 websocket-extensions@>=0.1.1:
@@ -9108,10 +9516,10 @@ wordwrap@~1.0.0:
   resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
   integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=
 
-worker-farm@^1.5.2:
-  version "1.6.0"
-  resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.6.0.tgz#aecc405976fab5a95526180846f0dba288f3a4a0"
-  integrity sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==
+worker-farm@^1.7.0:
+  version "1.7.0"
+  resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8"
+  integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==
   dependencies:
     errno "~0.1.7"
 
@@ -9123,6 +9531,15 @@ wrap-ansi@^2.0.0:
     string-width "^1.0.1"
     strip-ansi "^3.0.1"
 
+wrap-ansi@^5.1.0:
+  version "5.1.0"
+  resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09"
+  integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==
+  dependencies:
+    ansi-styles "^3.2.0"
+    string-width "^3.0.0"
+    strip-ansi "^5.0.0"
+
 wrappy@1:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
@@ -9136,9 +9553,9 @@ write@^0.2.1:
     mkdirp "^0.5.1"
 
 ws@^6.0.0, ws@^6.1.2:
-  version "6.1.2"
-  resolved "https://registry.yarnpkg.com/ws/-/ws-6.1.2.tgz#3cc7462e98792f0ac679424148903ded3b9c3ad8"
-  integrity sha512-rfUqzvz0WxmSXtJpPMX2EeASXabOrSMk1ruMOV3JBTBjo4ac2lDjGGsbQSyxj8Odhw5fBib8ZKEjDNvgouNKYw==
+  version "6.2.1"
+  resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb"
+  integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==
   dependencies:
     async-limiter "~1.0.0"
 
@@ -9152,16 +9569,16 @@ xmlchars@^1.3.1:
   resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-1.3.1.tgz#1dda035f833dbb4f86a0c28eaa6ca769214793cf"
   integrity sha512-tGkGJkN8XqCod7OT+EvGYK5Z4SfDQGD30zAa58OcnAa0RRWgzUEK72tkXhsX1FZd+rgnhRxFtmO+ihkp8LHSkw==
 
-xregexp@4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.0.0.tgz#e698189de49dd2a18cc5687b05e17c8e43943020"
-  integrity sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==
-
 xtend@^4.0.0, xtend@~4.0.1:
   version "4.0.1"
   resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
   integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68=
 
+xtend@^4.0.1:
+  version "4.0.2"
+  resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
+  integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
+
 y18n@^3.2.1:
   version "3.2.1"
   resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
@@ -9177,17 +9594,26 @@ yallist@^2.1.2:
   resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
   integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
 
-yallist@^3.0.0, yallist@^3.0.2:
+yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3:
   version "3.0.3"
   resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9"
   integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==
 
-yargs-parser@^10.1.0:
-  version "10.1.0"
-  resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8"
-  integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==
+yargs-parser@^11.1.1:
+  version "11.1.1"
+  resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4"
+  integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==
   dependencies:
-    camelcase "^4.1.0"
+    camelcase "^5.0.0"
+    decamelize "^1.2.0"
+
+yargs-parser@^13.1.0, yargs-parser@^13.1.1:
+  version "13.1.1"
+  resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0"
+  integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==
+  dependencies:
+    camelcase "^5.0.0"
+    decamelize "^1.2.0"
 
 yargs-parser@^5.0.0:
   version "5.0.0"
@@ -9210,13 +9636,13 @@ yargs-parser@^9.0.2:
   dependencies:
     camelcase "^4.1.0"
 
-yargs@12.0.2:
-  version "12.0.2"
-  resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.2.tgz#fe58234369392af33ecbef53819171eff0f5aadc"
-  integrity sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==
+yargs@12.0.5:
+  version "12.0.5"
+  resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13"
+  integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==
   dependencies:
     cliui "^4.0.0"
-    decamelize "^2.0.0"
+    decamelize "^1.2.0"
     find-up "^3.0.0"
     get-caller-file "^1.0.1"
     os-locale "^3.0.0"
@@ -9226,7 +9652,7 @@ yargs@12.0.2:
     string-width "^2.0.0"
     which-module "^2.0.0"
     y18n "^3.2.1 || ^4.0.0"
-    yargs-parser "^10.1.0"
+    yargs-parser "^11.1.1"
 
 yargs@^10.0.3:
   version "10.1.2"
@@ -9264,6 +9690,40 @@ yargs@^11.0.0:
     y18n "^3.2.1"
     yargs-parser "^9.0.2"
 
+yargs@^13.0.0:
+  version "13.2.4"
+  resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83"
+  integrity sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==
+  dependencies:
+    cliui "^5.0.0"
+    find-up "^3.0.0"
+    get-caller-file "^2.0.1"
+    os-locale "^3.1.0"
+    require-directory "^2.1.1"
+    require-main-filename "^2.0.0"
+    set-blocking "^2.0.0"
+    string-width "^3.0.0"
+    which-module "^2.0.0"
+    y18n "^4.0.0"
+    yargs-parser "^13.1.0"
+
+yargs@^14.0.0:
+  version "14.0.0"
+  resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.0.0.tgz#ba4cacc802b3c0b3e36a9e791723763d57a85066"
+  integrity sha512-ssa5JuRjMeZEUjg7bEL99AwpitxU/zWGAGpdj0di41pOEmJti8NR6kyUIJBkR78DTYNPZOU08luUo0GTHuB+ow==
+  dependencies:
+    cliui "^5.0.0"
+    decamelize "^1.2.0"
+    find-up "^3.0.0"
+    get-caller-file "^2.0.1"
+    require-directory "^2.1.1"
+    require-main-filename "^2.0.0"
+    set-blocking "^2.0.0"
+    string-width "^3.0.0"
+    which-module "^2.0.0"
+    y18n "^4.0.0"
+    yargs-parser "^13.1.1"
+
 yargs@^7.0.0:
   version "7.1.0"
   resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8"
@@ -9283,6 +9743,13 @@ yargs@^7.0.0:
     y18n "^3.2.1"
     yargs-parser "^5.0.0"
 
+yargs@~1.2.6:
+  version "1.2.6"
+  resolved "https://registry.yarnpkg.com/yargs/-/yargs-1.2.6.tgz#9c7b4a82fd5d595b2bf17ab6dcc43135432fe34b"
+  integrity sha1-nHtKgv1dWVsr8Xq23MQxNUMv40s=
+  dependencies:
+    minimist "^0.1.0"
+
 yargs@~3.10.0:
   version "3.10.0"
   resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"
diff --git a/scripts/is-docker-latest.py b/scripts/is-docker-latest.py
new file mode 100755
index 0000000000000000000000000000000000000000..2e3854989104e80fb1069b165f4f6c7f270bb6c9
--- /dev/null
+++ b/scripts/is-docker-latest.py
@@ -0,0 +1,40 @@
+#!/usr/bin/env python3
+import argparse
+import json
+import sys
+from distutils.version import StrictVersion
+
+
+def main(current, releases_json):
+    try:
+        version = StrictVersion(current)
+    except ValueError:
+        print("Version number '{}' isn't valid".format(current))
+        sys.exit(1)
+
+    releases = json.loads(releases_json)
+    latest_release = releases["releases"][0]["id"]
+
+    if version != latest_release:
+        print(
+            "Version number '{}' doesn't match latest release {}".format(
+                current, latest_release
+            )
+        )
+        sys.exit(1)
+    print("Version number '{}' is latest release!".format(current))
+
+
+if __name__ == "__main__":
+    parser = argparse.ArgumentParser(
+        description="""
+        Exit with code 0 if the given version matches the latest one
+        fron the list of releases found in releases_json. Primary use
+        is to check whether the current version can be safely pushed
+        as the latest one on the docker Hub.
+    """
+    )
+    parser.add_argument("current", help="Current version")
+    parser.add_argument("releases_json", type=argparse.FileType("r"))
+    args = parser.parse_args()
+    main(args.current, args.releases_json.read())