about summary refs log tree commit diff
path: root/config
diff options
context:
space:
mode:
Diffstat (limited to 'config')
-rw-r--r--config/initializers/content_security_policy.rb15
-rw-r--r--config/initializers/paperclip.rb4
-rw-r--r--config/locales/cs.yml17
-rw-r--r--config/locales/devise.fr.yml22
-rw-r--r--config/locales/doorkeeper.da.yml2
-rw-r--r--config/locales/doorkeeper.fr.yml12
-rw-r--r--config/locales/en.yml13
-rw-r--r--config/locales/fr.yml293
-rw-r--r--config/locales/ja.yml23
-rw-r--r--config/locales/ka.yml6
-rw-r--r--config/locales/ko.yml2
-rw-r--r--config/locales/pl.yml17
-rw-r--r--config/locales/simple_form.fr.yml26
-rw-r--r--config/locales/simple_form.pl.yml4
-rw-r--r--config/routes.rb1
-rw-r--r--config/webpack/production.js4
16 files changed, 317 insertions, 144 deletions
diff --git a/config/initializers/content_security_policy.rb b/config/initializers/content_security_policy.rb
index 6a649b772..6d7666c48 100644
--- a/config/initializers/content_security_policy.rb
+++ b/config/initializers/content_security_policy.rb
@@ -4,6 +4,16 @@
 
 if Rails.env.production?
   assets_host = Rails.configuration.action_controller.asset_host || "https://#{ENV['WEB_DOMAIN'] || ENV['LOCAL_DOMAIN']}"
+  data_hosts = [assets_host]
+
+  if ENV['S3_ENABLED'] == 'true'
+    attachments_host = ENV['S3_ALIAS_HOST'] || ENV['S3_CLOUDFRONT_HOST'] || ENV['S3_HOSTNAME'] || "s3-#{ENV['S3_REGION'] || 'us-east-1'}.amazonaws.com"
+  elsif ENV['SWIFT_ENABLED'] == 'true'
+    attachments_host = ENV['SWIFT_OBJECT_URL']
+  else
+    attachments_host = nil
+  end
+  data_hosts << attachments_host unless attachments_host.nil?
 
   Rails.application.config.content_security_policy do |p|
     p.base_uri        :none
@@ -13,9 +23,10 @@ if Rails.env.production?
     p.font_src        :self, assets_host
     p.img_src         :self, :https, :data, :blob
     p.style_src       :self, :unsafe_inline, assets_host
-    p.media_src       :self, :data, assets_host
+    p.media_src       :self, :data, *data_hosts
     p.frame_src       :self, :https
-    p.connect_src     :self, assets_host, Rails.configuration.x.streaming_api_base_url
+    p.worker_src      :self, assets_host
+    p.connect_src     :self, :blob, Rails.configuration.x.streaming_api_base_url, *data_hosts
   end
 end
 
diff --git a/config/initializers/paperclip.rb b/config/initializers/paperclip.rb
index 59ab9b9a1..df0205879 100644
--- a/config/initializers/paperclip.rb
+++ b/config/initializers/paperclip.rb
@@ -47,10 +47,10 @@ if ENV['S3_ENABLED'] == 'true'
     Paperclip::Attachment.default_options[:url] = ':s3_path_url'
   end
 
-  if ENV.has_key?('S3_CLOUDFRONT_HOST')
+  if ENV.has_key?('S3_ALIAS_HOST') || ENV.has_key?('S3_CLOUDFRONT_HOST')
     Paperclip::Attachment.default_options.merge!(
       url: ':s3_alias_url',
-      s3_host_alias: ENV['S3_CLOUDFRONT_HOST']
+      s3_host_alias: ENV['S3_ALIAS_HOST'] || ENV['S3_CLOUDFRONT_HOST']
     )
   end
 elsif ENV['SWIFT_ENABLED'] == 'true'
diff --git a/config/locales/cs.yml b/config/locales/cs.yml
index 9ae9c259c..9768177c3 100644
--- a/config/locales/cs.yml
+++ b/config/locales/cs.yml
@@ -30,10 +30,14 @@ cs:
     other_instances: Seznam instancí
     privacy_policy: Zásady soukromí
     source_code: Zdrojový kód
-    status_count_after: příspěvků
+    status_count_after:
+      one: příspěvek
+      other: příspěvků
     status_count_before: Kteří napsali
     terms: Podmínky používání
-    user_count_after: uživatelů
+    user_count_after:
+      one: uživatele
+      other: uživatelů
     user_count_before: Domov
     what_is_mastodon: Co je Mastodon?
   accounts:
@@ -346,6 +350,9 @@ cs:
       contact_information:
         email: Pracovní e-mail
         username: Uživatelské jméno kontaktu
+      custom_css:
+        desc_html: Pozměnit vzhled pomocí šablony CSS načtené na každé stránce
+        title: Vlastní CSS
       hero:
         desc_html: Zobrazuje se na hlavní stránce. Doporučuje se rozlišení alespoň 600x100px. Pokud toto není nastavené, bude zobrazena miniatura instance
         title: Hlavní obrázek
@@ -414,6 +421,12 @@ cs:
       last_delivery: Poslední doručení
       title: WebSub
       topic: Téma
+    suspensions:
+      bad_acct_msg: Hodnota pro potvrzení neodpovídá. Suspendujete správný účet?
+      hint_html: 'Pro potvrzení suspenzace účtu prosím zadejte do pole níže %{value}:'
+      proceed: Pokračovat
+      title: Suspendovat účet %{acct}
+      warning_html: 'Suspenzace tohoto účtu <strong>nenávratně</strong> smaže z tohoto účtu data, včetně:'
     title: Administrace
   admin_mailer:
     new_report:
diff --git a/config/locales/devise.fr.yml b/config/locales/devise.fr.yml
index 7e10f83b4..e9c98a63f 100644
--- a/config/locales/devise.fr.yml
+++ b/config/locales/devise.fr.yml
@@ -17,30 +17,30 @@ fr:
       unconfirmed: Vous devez valider votre compte pour continuer.
     mailer:
       confirmation_instructions:
-        action: Vérifier l'adresse courriel
-        explanation: Vous avez créé un compte sur %{host} avec cette adresse courriel. Vous êtes à un clic de l'activer. Si ce n'était pas vous, veuillez ignorer ce courriel.
-        extra_html: S'il vous plaît, consultez également <a href="%{terms_path}"> 1les règles de l'instance</a> 2 et <a href="%{policy_path}">3nos termes de service</a> 4.
+        action: Vérifier l’adresse courriel
+        explanation: Vous avez créé un compte sur %{host} avec cette adresse courriel. Vous êtes à un clic de l’activer. Si ce n’était pas vous, veuillez ignorer ce courriel.
+        extra_html: Merci de consultez également <a href="%{terms_path}">les règles de l’instance</a> et <a href="%{policy_path}">nos conditions d’utilisation</a>.
         subject: Merci de confirmer votre inscription sur %{instance}
-        title: Vérifier l'adresse courriel
+        title: Vérifier l’adresse courriel
       email_changed:
-        explanation: 'L''adresse courriel de votre compte est en cours de modification pour devenir :'
-        extra: Si vous n'avez pas changé votre adresse courriel, il est probable que quelqu'un ait eu accès à votre compte. Veuillez changer votre mot de passe immédiatement ou contacter l'administrateur de l'instance si vous êtes bloqué hors de votre compte.
+        explanation: 'L’adresse courriel de votre compte est en cours de modification pour devenir :'
+        extra: Si vous n’avez pas changé votre adresse courriel, il est probable que quelqu’un ait eu accès à votre compte. Veuillez changer votre mot de passe immédiatement ou contacter l’administrateur·rice de l’instance si vous êtes bloqué·e hors de votre compte.
         subject: 'Mastodon : Courriel modifié'
         title: Nouvelle adresse courriel
       password_change:
         explanation: Le mot de passe de votre compte a été changé.
-        extra: Si vous n'avez pas changé votre mot de passe, il est probable que quelqu'un ait eu accès à votre compte. Veuillez changer votre mot de passe immédiatement ou contacter l'administrateur de l'instance si vous êtes bloqué hors de votre compte.
+        extra: Si vous n’avez pas changé votre mot de passe, il est probable que quelqu’un ait eu accès à votre compte. Veuillez changer votre mot de passe immédiatement ou contacter l’administrateur·rice de l’instance si vous êtes bloqué·e hors de votre compte.
         subject: Votre mot de passe a été modifié avec succès
         title: Mot de passe modifié
       reconfirmation_instructions:
         explanation: Confirmez la nouvelle adresse pour changer votre courriel.
-        extra: Si ce changement n' a pas été initié par vous, veuillez ignorer ce courriel. L'adresse courriel du compte Mastodon ne changera pas tant que vous n'aurez pas cliqué sur le lien ci-dessus.
-        subject: 'Mastodon : Confirmez l''email pour %{instance}'
-        title: Vérifier l'adresse courriel
+        extra: Si ce changement n’a pas été initié par vous, veuillez ignorer ce courriel. L’adresse courriel du compte Mastodon ne changera pas tant que vous n’aurez pas cliqué sur le lien ci-dessus.
+        subject: 'Mastodon : Confirmez l’adresse pour %{instance}'
+        title: Vérifier l’adresse courriel
       reset_password_instructions:
         action: Modifier le mot de passe
         explanation: Vous avez demandé un nouveau mot de passe pour votre compte.
-        extra: Si vous ne l'avez pas demandé, veuillez ignorer ce courriel. Votre mot de passe ne changera pas tant que vous n'aurez pas cliqué sur le lien ci-dessus et que vous n'en aurez pas créé un nouveau.
+        extra: Si vous ne l’avez pas demandé, veuillez ignorer ce courriel. Votre mot de passe ne changera pas tant que vous n’aurez pas cliqué sur le lien ci-dessus et que vous n’en aurez pas créé un nouveau.
         subject: Instructions pour changer votre mot de passe
         title: Réinitialisation du mot de passe
       unlock_instructions:
diff --git a/config/locales/doorkeeper.da.yml b/config/locales/doorkeeper.da.yml
index dd45a5078..df964e4b1 100644
--- a/config/locales/doorkeeper.da.yml
+++ b/config/locales/doorkeeper.da.yml
@@ -91,7 +91,9 @@ da:
           unknown: Adgangs-beviset er ugyldigt
         resource_owner_authenticator_not_configured: Ressource ejeren kunne ikke blive fundet grundet Doorkeeper.configure.resource_owner_authenticator ikke er konfigureret.
         server_error: Autoriserings serveren blev mødt med en uventet betingelse der forhindrede den i at færdiggøre anmodningen.
+        temporarily_unavailable: Autoriserings serveren er på nuværende tidspunkt ikke i stand til at håndtere anmodningen grundet midlertidig overlast eller serveren er ved at blive opdateret.
         unauthorized_client: Klienten er ikke godkendt til at udføre denne anmodning ved at bruge denne metode.
+        unsupported_grant_type: Autoriserings typen understøttes ikke af autoriserings serveren.
         unsupported_response_type: Godkendelses serveren understøtter ikke denne type respons.
     flash:
       applications:
diff --git a/config/locales/doorkeeper.fr.yml b/config/locales/doorkeeper.fr.yml
index e8668ba82..eae691659 100644
--- a/config/locales/doorkeeper.fr.yml
+++ b/config/locales/doorkeeper.fr.yml
@@ -7,7 +7,7 @@ fr:
         redirect_uri: L’URL de redirection
         scope: Portée
         scopes: Étendues
-        website: Site web de l'application
+        website: Site web de l’application
     errors:
       models:
         doorkeeper/application:
@@ -64,7 +64,7 @@ fr:
         prompt: Autoriser %{client_name} à utiliser votre compte ?
         title: Autorisation requise
       show:
-        title: Copiez ce code d'autorisation et collez-le dans l'application.
+        title: Copiez ce code d’autorisation et collez-le dans l’application.
     authorized_applications:
       buttons:
         revoke: Annuler
@@ -119,12 +119,12 @@ fr:
       push: recevoir vos notifications
       read: lire toutes les données de votre compte
       read:accounts: voir les informations du compte
-      read:blocks: voir vos bloqués
+      read:blocks: voir vos bloquages
       read:favourites: voir vos favoris
       read:filters: voir vos filtres
       read:follows: voir vos suivis
       read:lists: voir vos listes
-      read:mutes: voir vos silenciés
+      read:mutes: voir vos masquages
       read:notifications: voir vos notifications
       read:reports: voir vos rapports
       read:search: rechercher en votre nom
@@ -137,7 +137,7 @@ fr:
       write:follows: suivre les gens
       write:lists: créer des listes
       write:media: téléverser des fichiers-média
-      write:mutes: silencier des gens et des conversations
+      write:mutes: masquer des gens et des conversations
       write:notifications: nettoyer vos notifications
-      write:reports: rapporter d'autres personnes
+      write:reports: rapporter d’autres personnes
       write:statuses: publier des statuts
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 7e062781c..38a6df8f7 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -43,7 +43,9 @@ en:
   accounts:
     choices_html: "%{name}'s choices:"
     follow: Follow
-    followers: Followers
+    followers:
+      one: Follower
+      other: Followers
     following: Following
     joined: Joined %{date}
     media: Media
@@ -54,7 +56,10 @@ en:
     people_who_follow: People who follow %{name}
     pin_errors:
       following: You must be already following the person you want to endorse
-    posts: Toots
+    posts:
+      one: Toot
+      other: Toots
+    posts_tab_heading: Toots
     posts_with_replies: Toots and replies
     reserved_username: The username is reserved
     roles:
@@ -298,6 +303,7 @@ en:
       description_html: A <strong>federation relay</strong> is an intermediary server that exchanges large volumes of public toots between servers that subscribe and publish to it. <strong>It can help small and medium servers discover content from the fediverse</strong>, which would otherwise require local users manually following other people on remote servers.
       enable_hint: Once enabled, your server will subscribe to all public toots from this relay, and will begin sending this server's public toots to it.
       inbox_url: Relay URL
+      pending: Waiting for relay's approval
       setup: Setup a relay connection
       status: Status
       title: Relays
@@ -350,6 +356,9 @@ en:
       contact_information:
         email: Business e-mail
         username: Contact username
+      custom_css:
+        desc_html: Modify the look with CSS loaded on every page
+        title: Custom CSS
       hero:
         desc_html: Displayed on the frontpage. At least 600x100px recommended. When not set, falls back to instance thumbnail
         title: Hero image
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index b563405bd..cf8ceb247 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -4,7 +4,7 @@ fr:
     about_hashtag_html: Figurent ci-dessous les pouets tagués avec <strong>#%{hashtag}</strong>. Vous pouvez interagir avec eux si vous avez un compte n’importe où dans le Fediverse.
     about_mastodon_html: Mastodon est un réseau social utilisant des formats ouverts et des logiciels libres. Comme le courriel, il est décentralisé.
     about_this: À propos
-    administered_by: 'Administré par :'
+    administered_by: 'Administrée par :'
     api: API
     apps: Applications mobiles
     closed_registrations: Les inscriptions sont actuellement fermées sur cette instance. Cependant, vous pouvez trouver une autre instance sur laquelle vous créer un compte et à partir de laquelle vous pourrez accéder au même réseau.
@@ -20,7 +20,7 @@ fr:
       humane_approach_title: Une approche plus humaine
       not_a_product_body: Mastodon n’est pas un réseau commercial. Ici, pas de publicités, pas de prospection de données et pas d’environnements fermés. Il n’y existe aucune autorité centrale.
       not_a_product_title: Vous êtes une personne, pas un produit
-      real_conversation_body: Avec 500 caractères à votre disposition, une grande granularité en termes de diffusion et la possibilité de masquer vos messages derrières des avertissements, vous êtes libre de vous exprimer de la manière qui vous plaît.
+      real_conversation_body: Avec 500 caractères à votre disposition, une grande granularité en termes de diffusion et la possibilité de masquer vos messages derrière des avertissements, vous êtes libre de vous exprimer de la manière qui vous plaît.
       real_conversation_title: Construit pour de vraies conversations
       within_reach_body: Grâce à l’existence d’un environnement API accueillant pour les développeur·se·s, de multiples applications pour iOS, Android et d’autres plateformes vous permettent de rester en contact avec vos ami·e·s où que vous soyez.
       within_reach_title: Toujours à portée de main
@@ -37,16 +37,19 @@ fr:
     user_count_before: Abrite
     what_is_mastodon: Qu’est-ce que Mastodon ?
   accounts:
-    choices_html: 'Sélection de %{name} :'
+    choices_html: "%{name} recommande :"
     follow: Suivre
     followers: Abonné⋅e⋅s
     following: Abonnements
+    joined: Inscrit·e en %{date}
     media: Médias
-    moved_html: "%{name} a changé de compte pour %{new_profile_link} :"
+    moved_html: "%{name} a changé de compte pour %{new_profile_link} :"
     network_hidden: Cette information n’est pas disponible
     nothing_here: Rien à voir ici !
     people_followed_by: Personnes suivies par %{name}
     people_who_follow: Personnes qui suivent %{name}
+    pin_errors:
+      following: Vous devez être déjà abonné·e à la personne que vous désirez recommander
     posts: Statuts
     posts_with_replies: Statuts & réponses
     reserved_username: Ce nom d’utilisateur⋅ice est réservé
@@ -66,7 +69,7 @@ fr:
       avatar: Avatar
       by_domain: Domaine
       change_email:
-        changed_msg: Courriel du compte modifié avec succès !
+        changed_msg: Courriel du compte modifié avec succès !
         current_email: Courriel actuel
         label: Modifier le courriel
         new_email: Nouveau courriel
@@ -121,11 +124,11 @@ fr:
       public: Publique
       push_subscription_expires: Expiration de l’abonnement PuSH
       redownload: Rafraîchir les avatars
-      remove_avatar: Supprimer l'avatar
+      remove_avatar: Supprimer l’avatar
       resend_confirmation:
-        already_confirmed: Cet utilisateur est déjà confirmé
+        already_confirmed: Cet·te utilisateur·ice est déjà confirmé·e
         send: Renvoyer un courriel de confirmation
-        success: Email de confirmation envoyé avec succès !
+        success: Courriel de confirmation envoyé avec succès !
       reset: Réinitialiser
       reset_password: Réinitialiser le mot de passe
       resubscribe: Se réabonner
@@ -154,35 +157,36 @@ fr:
       web: Web
     action_logs:
       actions:
-        assigned_to_self_report: "%{name} s'est assigné le signalement de %{target} à eux-même"
-        change_email_user: "%{name} a modifié l'adresse de courriel de l'utilisateur %{target}"
-        confirm_user: "%{name} adresse courriel confirmée de l'utilisateur %{target}"
-        create_custom_emoji: "%{name} a importé de nouveaux emoji %{target}"
+        assigned_to_self_report: "%{name} s’est assigné·e le signalement de %{target}"
+        change_email_user: "%{name} a modifié l’adresse de courriel de l’utilisateur·rice %{target}"
+        confirm_user: "%{name} adresse courriel confirmée de l’utilisateur·ice %{target}"
+        create_custom_emoji: "%{name} a importé de nouveaux émojis %{target}"
         create_domain_block: "%{name} a bloqué le domaine %{target}"
         create_email_domain_block: "%{name} a mis le domaine du courriel %{target} sur liste noire"
-        demote_user: "%{name} a rétrogradé l'utilisateur %{target}"
+        demote_user: "%{name} a rétrogradé l’utilisateur·ice %{target}"
         destroy_domain_block: "%{name} a débloqué le domaine %{target}"
         destroy_email_domain_block: "%{name} a mis le domaine du courriel %{target} sur liste blanche"
         destroy_status: "%{name} a enlevé le statut de %{target}"
-        disable_2fa_user: "%{name} a désactivé l'authentification à deux facteurs pour l'utilisateur %{target}"
-        disable_custom_emoji: "%{name} a désactivé l'emoji %{target}"
-        disable_user: "%{name} a désactivé le login pour l'utilisateur %{target}"
-        enable_custom_emoji: "%{name} a activé l'emoji %{target}"
-        enable_user: "%{name} a activé le login pour l'utilisateur %{target}"
+        disable_2fa_user: "%{name} a désactivé l’authentification à deux facteurs pour l’utilisateur·ice %{target}"
+        disable_custom_emoji: "%{name} a désactivé l’émoji %{target}"
+        disable_user: "%{name} a désactivé le login pour l’utilisateur·ice %{target}"
+        enable_custom_emoji: "%{name} a activé l’émoji %{target}"
+        enable_user: "%{name} a activé le login pour l’utilisateur·ice %{target}"
         memorialize_account: "%{name} a transformé le compte de %{target} en une page de mémorial"
-        promote_user: "%{name} a promu l'utilisateur %{target}"
-        remove_avatar_user: "%{name} a supprimé l'avatar de %{target}'s"
-        reopen_report: "%{name} a ré-ouvert le signalement %{target}"
+        promote_user: "%{name} a promu l’utilisateur·ice %{target}"
+        remove_avatar_user: "%{name} a supprimé l’avatar de %{target}"
+        reopen_report: "%{name} a rouvert le signalement %{target}"
         reset_password_user: "%{name} a réinitialisé le mot de passe de %{target}"
         resolve_report: "%{name} a résolu la dénonciation de %{target}"
         silence_account: "%{name} a mis le compte %{target} en mode silence"
         suspend_account: "%{name} a suspendu le compte %{target}"
-        unassigned_report: "%{name} a dés-assigné le signalement %{target}"
+        unassigned_report: "%{name} a désassigné le signalement %{target}"
         unsilence_account: "%{name} a mis fin au mode silence de %{target}"
         unsuspend_account: "%{name} a réactivé le compte de %{target}"
-        update_custom_emoji: "%{name} a mis à jour l'emoji %{target}"
+        update_custom_emoji: "%{name} a mis à jour l’émoji %{target}"
         update_status: "%{name} a mis à jour le statut de %{target}"
-      title: Journal d'audit
+      deleted_status: "(statut supprimé)"
+      title: Journal d’audit
     custom_emojis:
       by_domain: Domaine
       copied_msg: Copie locale de l’émoji créée avec succès !
@@ -203,29 +207,32 @@ fr:
       overwrite: Réécrire
       shortcode: Raccourci
       shortcode_hint: Au moins deux caractères, seulement des caractères alphanumériques ou des tirets bas
-      title: Émoji personnalisés
+      title: Émojis personnalisés
       unlisted: Délisté
-      update_failed_msg: N'a pas pu mettre à jour cet emoji
-      updated_msg: Emoji mis à jour avec succès !
+      update_failed_msg: N’a pas pu mettre à jour cet émoji
+      updated_msg: Émoji mis à jour avec succès !
       upload: Téléverser
     dashboard:
+      backlog: tâches en attente
       config: Configuration
-      feature_invites: Liens d'invitation
+      feature_deletions: Suppressions de comptes
+      feature_invites: Liens d’invitation
       feature_registrations: Inscriptions
       feature_relay: Relais de fédération
       features: Fonctionnalités
       hidden_service: Fédération avec des services cachés
-      recent_users: Utilisateurs récents
-      search: Recherche texte-plein
-      single_user_mode: Mode utilisateur unique
+      open_reports: signalements non résolus
+      recent_users: Utilisateur·rice·s récent·e·s
+      search: Recherche plein texte
+      single_user_mode: Mode utilisateur·ice unique
       software: Logiciel
-      space: Utilisation d'espace
+      space: Espace utilisé
       title: Tableau de bord
-      total_users: utilisateurs au total
+      total_users: utilisateur·rice·s au total
       trends: Tendances
       week_interactions: interactions cette semaine
-      week_users_active: actif cette semaine
-      week_users_new: utilisateurs cette semaine
+      week_users_active: actif·ve·s cette semaine
+      week_users_new: utilisateur·rice·s cette semaine
     domain_blocks:
       add_new: Ajouter
       created_msg: Le blocage de domaine est désormais activé
@@ -284,20 +291,22 @@ fr:
       title: Invitations
     relays:
       add_new: Ajouter un nouveau relais
+      description_html: Un <strong>relai de fédération</strong> est un serveur intermédiaire qui échange de grandes quantités de pouets entre les serveurs qui publient dessus et ceux qui y sont abonnés. <strong>Il peut aider les petites et moyennes instances à découvrir du contenu sur le fediverse</strong>, ce qui normalement nécessiterait que les membres locaux suivent des gens inscrits sur des serveurs distants.
+      enable_hint: Une fois activé, votre serveur souscrira à tous les pouets publics présents sur ce relais et y enverra ses propres pouets publics.
       inbox_url: URL de relais
       setup: Paramétrer une connexion de relais
       status: Statut
       title: Relais
     report_notes:
-      created_msg: Note de signalement créée avec succès !
-      destroyed_msg: Note de signalement effacée avec succès !
+      created_msg: Note de signalement créée avec succès !
+      destroyed_msg: Note de signalement effacée avec succès !
     reports:
       account:
         note: note
         report: signaler
       action_taken_by: Intervention de
       are_you_sure: Êtes vous certain⋅e ?
-      assign_to_self: Me l'assigner
+      assign_to_self: Me l’assigner
       assigned: Modérateur assigné
       comment:
         none: Aucun
@@ -317,7 +326,7 @@ fr:
       reported_account: Compte signalé
       reported_by: Signalé par
       resolved: Résolus
-      resolved_msg: Signalement résolu avec succès !
+      resolved_msg: Signalement résolu avec succès !
       silence_account: Masquer le compte
       status: Statut
       suspend_account: Suspendre le compte
@@ -329,20 +338,23 @@ fr:
       view: Voir
     settings:
       activity_api_enabled:
-        desc_html: Nombre de statuts affichés localement, d'utilisateurs actifs et de nouveaux enregistrements dans les registres hebdomadaires
-        title: Publier des statistiques agrégées sur l'activité des utilisateurs
+        desc_html: Nombre de statuts affichés localement, d’utilisateur·ice·s actif·ve·s et de nouveaux enregistrements dans les registres hebdomadaires
+        title: Publier des statistiques agrégées sur l’activité des utilisateur·ice·s
       bootstrap_timeline_accounts:
-        desc_html: Séparez les noms d’utilisateur·ice par des virgules. Ne fonctionne qu’avec des comptes locaux et non-verrouillés. Si laissé vide, tous les administrateur⋅ice⋅s locaux sont sélectionné⋅e⋅s.
+        desc_html: Séparez les noms d’utilisateur·ice par des virgules. Ne fonctionne qu’avec des comptes locaux et non verrouillés. Si laissé vide, tous les administrateur⋅ice⋅s locaux sont sélectionné⋅e⋅s.
         title: Abonnements par défaut pour les nouveaux·elles utilisateur·ice·s
       contact_information:
         email: Entrez une adresse courriel publique
         username: Entrez un nom d’utilisateur⋅ice
       hero:
-        desc_html: Affichée sur la page d'accueil. Au moins 600x100px recommandé. Lorsqu'elle n'est pas définie, se rabat sur la vignette de l'instance
-        title: Image d'en-tête
+        desc_html: Affichée sur la page d’accueil. Au moins 600x100px recommandé. Lorsqu’elle n’est pas définie, se rabat sur la vignette de l’instance
+        title: Image d’en-tête
       peers_api_enabled:
         desc_html: Noms des domaines que cette instance a découvert dans le fediverse
         title: Publier la liste des instances découvertes
+      preview_sensitive_media:
+        desc_html: Les liens de prévisualisation sur les autres sites web afficheront une vignette même si le média est sensible
+        title: Afficher les médias sensibles dans les prévisualisations OpenGraph
       registrations:
         closed_message:
           desc_html: Affiché sur la page d’accueil lorsque les inscriptions sont fermées<br>Vous pouvez utiliser des balises HTML
@@ -357,19 +369,20 @@ fr:
           desc_html: Autoriser tout le monde à créer un compte
           title: Ouvrir les inscriptions
       show_known_fediverse_at_about_page:
-        desc_html: Lorsque l'option est activée, les pouets provenant de toutes les instances connues sont affichés dans la prévisualisation. Si non, seuls les pouets locaux sont affichés.
+        desc_html: Lorsque l’option est activée, les pouets provenant de toutes les instances connues sont affichés dans la prévisualisation. Sinon, seuls les pouets locaux sont affichés.
         title: Afficher le fediverse connu dans la prévisualisation du fil
       show_staff_badge:
-        desc_html: Montrer un badge de responsable sur une page utilisateur
+        desc_html: Montrer un badge de responsable sur une page utilisateur·ice
         title: Montrer un badge de responsable
       site_description:
-        desc_html: Paragraphe introductif sur la page d'accueil. Décrivez ce qui rend spécifique ce serveur Mastodon et toute autre chose importante. Vous pouvez utiliser des balises HTML, en particulier <code>&lt;a&gt;</code> et <code>&lt;em&gt;</code>.
+        desc_html: Paragraphe introductif sur la page d’accueil. Décrivez ce qui rend spécifique ce serveur Mastodon et toute autre chose importante. Vous pouvez utiliser des balises HTML, en particulier <code>&lt;a&gt;</code> et <code>&lt;em&gt;</code>.
         title: Description du site
       site_description_extended:
         desc_html: Affichée sur la page d’informations complémentaires du site<br>Vous pouvez utiliser des balises HTML
         title: Description étendue du site
       site_short_description:
-        title: Description courte de l'instance
+        desc_html: Affichée dans la barre latérale et dans les méta-tags. Décrivez ce qui rend spécifique ce serveur Mastodon en un seul paragraphe. Si laissée vide, la description de l’instance sera affiché par défaut.
+        title: Description courte de l’instance
       site_terms:
         desc_html: Affichée sur la page des conditions d’utilisation du site<br>Vous pouvez utiliser des balises HTML
         title: Politique de confidentialité
@@ -391,6 +404,7 @@ fr:
       media:
         title: Médias
       no_media: Aucun média
+      no_status_selected: Aucun statut n’a été modifié car aucun n’a été sélectionné
       title: État du compte
       with_media: avec médias
     subscriptions:
@@ -404,13 +418,13 @@ fr:
   admin_mailer:
     new_report:
       body: "%{reporter} a signalé %{target}"
-      body_remote: Quelqu'un de %{domain} a signalé %{target}
+      body_remote: Quelqu’un de %{domain} a signalé %{target}
       subject: Nouveau signalement sur %{instance} (#%{id})
   application_mailer:
     notification_preferences: Modifier les préférences de courriel
     salutation: "%{name},"
     settings: 'Changer les préférences courriel : %{link}'
-    view: 'Voir :'
+    view: 'Voir :'
     view_profile: Voir le profil
     view_status: Afficher le statut
   applications:
@@ -440,7 +454,7 @@ fr:
       cas: CAS
       saml: SAML
     register: S’inscrire
-    register_elsewhere: S'inscrire sur un autre serveur
+    register_elsewhere: S’inscrire sur un autre serveur
     resend_confirmation: Envoyer à nouveau les consignes de confirmation
     reset_password: Réinitialiser le mot de passe
     security: Sécurité
@@ -449,8 +463,8 @@ fr:
     already_following: Vous suivez déjà ce compte
     error: Malheureusement, il y a eu une erreur en cherchant les détails du compte distant
     follow: Suivre
-    follow_request: 'Vous avez demandé à suivre :'
-    following: 'Youpi ! Vous suivez  :'
+    follow_request: 'Vous avez demandé à suivre :'
+    following: 'Youpi ! Vous suivez  :'
     post_follow:
       close: Ou bien, vous pouvez fermer cette fenêtre.
       return: Afficher le profil de l’utilisateur⋅ice
@@ -476,7 +490,7 @@ fr:
     description_html: Cela va supprimer votre compte et le désactiver de manière <strong>permanente et irréversible</strong>. Votre nom d’utilisateur⋅ice restera réservé afin d’éviter la confusion.
     proceed: Supprimer compte
     success_msg: Votre compte a été supprimé avec succès
-    warning_html: Seule la suppression du contenu depuis cette instance est garantie. Le contenu qui a été partagé est susceptible de laisser des traces. Les serveurs hors-lignes ainsi que ceux n’étant plus abonnés à vos publications ne mettront pas leur base de données à jour.
+    warning_html: Seule la suppression du contenu depuis cette instance est garantie. Le contenu qui a été partagé est susceptible de laisser des traces. Les serveurs hors-ligne ainsi que ceux n’étant plus abonnés à vos publications ne mettront pas leur base de données à jour.
     warning_title: Disponibilité du contenu disséminé
   errors:
     '403': Vous n’avez pas accès à cette page.
@@ -489,13 +503,13 @@ fr:
     '500':
       content: Nous sommes désolé·e·s, mais quelque chose s’est mal passé de notre côté.
       title: Cette page n’est pas correcte
-    noscript_html: Pour utiliser Mastodon, veuillez activer JavaScript. Sinon, essayez l'une des <a href="https://github.com/tootsuite/documentation/blob/master/Using-Mastodon/Apps.md">applications natives</a> pour Mastodon pour votre plate-forme.
+    noscript_html: Pour utiliser Mastodon, veuillez activer JavaScript. Sinon, essayez l’une des <a href="https://github.com/tootsuite/documentation/blob/master/Using-Mastodon/Apps.md">applications natives</a> pour Mastodon pour votre plate-forme.
   exports:
     archive_takeout:
       date: Date
       download: Télécharger votre archive
       hint_html: Vous pouvez demander une archive de vos  <strong>pouets et médias téléversés</strong>. Les données exportées seront au format ActivityPub, lisible par tout logiciel compatible. Vous pouvez demander une archive tous les 7 jours.
-      in_progress: Élaboration de votre archive....
+      in_progress: Création de votre archive…
       request: Demandez vos archives
       size: Taille
     blocks: Vous bloquez
@@ -505,12 +519,15 @@ fr:
     storage: Médias stockés
   filters:
     contexts:
-      home: Ligne de temps personnelle
+      home: Accueil
       notifications: Notifications
-      public: Lignes de temps public
+      public: Fils publics
       thread: Conversations
     edit:
-      title: Filtre d'édition
+      title: Éditer le filtre
+    errors:
+      invalid_context: Contexte invalide ou insuffisant
+      invalid_irreversible: Le filtrage irréversible ne fonctionne que pour l’accueil et les notifications
     index:
       delete: Effacer
       title: Filtres
@@ -559,7 +576,7 @@ fr:
       '86400': 1 jour
     expires_in_prompt: Jamais
     generate: Générer
-    invited_by: 'Vous avez été invité par :'
+    invited_by: 'Vous avez été invité·e par :'
     max_uses:
       one: 1 usage
       other: "%{count} usages"
@@ -577,26 +594,26 @@ fr:
       images_and_video: Impossible de joindre une vidéo à un statut contenant déjà des images
       too_many: Impossible de joindre plus de 4 fichiers
   migrations:
-    acct: utilisateur@domaine du nouveau compte
-    currently_redirecting: 'Votre profile va être redirigé vers :'
+    acct: profil@domaine du nouveau compte
+    currently_redirecting: 'Votre profile va être redirigé vers :'
     proceed: Enregistrer
-    updated_msg: Les paramètres de votre migration de compte ont été mis à jour avec succès !
+    updated_msg: Les paramètres de votre migration de compte ont été mis à jour avec succès !
   moderation:
     title: Modération
   notification_mailer:
     digest:
       action: Voir toutes les notifications
-      body: 'Voici ce que vous avez raté sur ${instance} depuis votre dernière visite le %{since} :'
-      mention: "%{name} vous a mentionné⋅e dans :"
+      body: 'Voici ce que vous avez raté sur ${instance} depuis votre dernière visite le %{since} :'
+      mention: "%{name} vous a mentionné⋅e dans :"
       new_followers_summary:
         one: Vous avez un⋅e nouvel⋅le abonné⋅e ! Youpi !
         other: Vous avez %{count} nouveaux⋅elles abonné⋅e·s ! Incroyable !
       subject:
         one: "Une nouvelle notification depuis votre dernière visite \U0001F418"
         other: "%{count} nouvelles notifications depuis votre dernière visite \U0001F418"
-      title: Pendant votre absence...
+      title: Pendant votre absence…
     favourite:
-      body: "%{name} a ajouté votre post à ses favoris :"
+      body: "%{name} a ajouté votre post à ses favoris :"
       subject: "%{name} a ajouté votre post à ses favoris"
       title: Nouveau favori
     follow:
@@ -604,17 +621,17 @@ fr:
       subject: "%{name} vous suit"
       title: Nouvel·le abonné·e
     follow_request:
-      action: Gérer les demandes d'abonnement
+      action: Gérer les demandes d’abonnement
       body: "%{name} a demandé à vous suivre"
       subject: 'Abonné⋅es en attente : %{name}'
-      title: Nouvelle demande d'abonnement
+      title: Nouvelle demande d’abonnement
     mention:
       action: Répondre
-      body: "%{name} vous a mentionné⋅e dans :"
+      body: "%{name} vous a mentionné⋅e dans :"
       subject: "%{name} vous a mentionné·e"
       title: Nouvelle mention
     reblog:
-      body: "%{name} a partagé votre statut :"
+      body: "%{name} a partagé votre statut :"
       subject: "%{name} a partagé votre statut"
       title: Nouveau partage
   number:
@@ -640,10 +657,14 @@ fr:
     publishing: Publication
     web: Web
   remote_follow:
-    acct: Entrez votre pseudo@instance depuis lequel vous voulez suivre cet·te utilisateur⋅ice
+    acct: Entrez l’adresse profil@instance depuis laquelle vous voulez vous abonner
     missing_resource: L’URL de redirection n’a pas pu être trouvée
-    proceed: Continuez pour suivre
-    prompt: 'Vous allez suivre :'
+    no_account_html: Vous n’avez pas de compte ? Vous pouvez <a href='%{sign_up_path}' target='_blank'>vous inscrire ici</a>
+    proceed: Confirmer l’abonnement
+    prompt: 'Vous allez suivre :'
+  remote_interaction:
+    proceed: Confirmer l’interaction
+    prompt: 'Vous désirez interagir avec ce pouet :'
   remote_unfollow:
     error: Erreur
     title: Titre
@@ -706,7 +727,7 @@ fr:
     your_apps: Vos applications
   statuses:
     attached:
-      description: 'Attaché : %{attached}'
+      description: 'Attaché : %{attached}'
       image:
         one: "%{count} image"
         other: "%{count} images"
@@ -714,10 +735,10 @@ fr:
         one: "%{count} vidéo"
         other: "%{count} vidéos"
     boosted_from_html: Repartagé depuis %{acct_link}
-    content_warning: 'Attention au contenu : %{warning}'
+    content_warning: 'Avertissement sur le contenu : %{warning}'
     disallowed_hashtags:
-      one: 'contient un hashtag désactivé : %{tags}'
-      other: 'contient les hashtag désactivés : %{tags}'
+      one: 'contient un hashtag désactivé : %{tags}'
+      other: 'contient les hashtags désactivés : %{tags}'
     language_detection: Détecter automatiquement la langue
     open_in_web: Ouvrir sur le web
     over_character_limit: limite de caractères dépassée de %{max} caractères
@@ -727,6 +748,7 @@ fr:
       private: Les statuts non-publics ne peuvent pas être épinglés
       reblog: Un partage ne peut pas être épinglé
     show_more: Afficher plus
+    sign_in_to_participate: Inscrivez-vous pour prendre part à la conversation
     title: '%{name} : "%{quote}"'
     visibilities:
       private: Abonné⋅e⋅s uniquement
@@ -740,7 +762,88 @@ fr:
     reblogged: a partagé
     sensitive_content: Contenu sensible
   terms:
-    title: "%{instance} Conditions d’utilisations et politique de confidentialité"
+    body_html: |
+      <h2>Politique de confidentialité</h2>
+      <h3 id="collect">Quelles informations collectons-nous ?</h3>
+
+      <ul>
+        <li><em>Informations de base sur votre compte</em> : Si vous vous inscrivez sur ce serveur, il vous sera demandé de rentrer un identifiant, une adresse électronique et un mot de passe. Vous pourrez également ajouter des informations additionnelles sur votre profil, telles qu’un nom public et une biographie, ainsi que téléverser une image de profil et une image d’en-tête. Vos identifiant, nom public, biographie, image de profil et image d’en-tête seront toujours affichés publiquement.</li>
+      <li><em>Posts, liste d’abonnements et autres informations publiques</em> : La liste de vos abonnements ainsi que la liste de vos abonné·e·s sont publiques. Quand vous postez un message, la date et l’heure d’envoi ainsi que le nom de l’application utilisée pour sa transmission sont enregistré·e·s. Des médias, tels que des images ou des vidéos, peuvent être joints aux messages. Les posts publics et non listés sont affichés publiquement. Quand vous mettez en avant un post sur votre profil, ce post est également affiché publiquement. Vos messages sont délivrés à vos abonné·e·s, ce qui, dans certains cas, signifie qu’ils sont délivrés à des serveurs tiers et que ces derniers en stockent une copie. Quand vous supprimer un post, il est probable que vos abonné·e·s en soient informé·e·s. Partager un message ou le marquer comme favori est toujours une action publique.</li>
+        <li><em>Posts directs et abonné·e·s uniquement</em> : Tous les posts sont stockés et traités par le serveur. Les messages abonné·e·s uniquement ne sont transmis qu’à vos abonné·e·s et aux personnes mentionnées dans le corps du message, tandis que les messages directs ne sont transmis qu’aux personnes mentionnées. Dans certains cas, cela signifie qu’ils sont délivrés à des serveurs tiers et que ces derniers en stockent une copie. Nous faisons un effort de bonne fois pour en limiter l’accès uniquement aux personnes autorisées, mais ce n’est pas nécessairement le cas des autres serveurs. Il est donc très important que vous vérifiiez les serveurs auxquels appartiennent vos abonné·e·s. Il vous est possible d’activer une option dans les paramètres afin d’approuver et de rejeter manuellement les nouveaux·lles abonné·e·s. <em>Gardez s’il-vous-plaît en mémoire que les opérateur·rice·s du serveur ainsi que celles et ceux de n’importe quel serveur récepteur peuvent voir ces messages</em> et qu’il est possible pour les destinataires de faire des captures d’écran, de copier et plus généralement de repartager ces messages. <em>Ne partager aucune information sensible à l’aide de Mastodon.</em></li>
+        <li><em>IP et autres métadonnées</em> : Quand vous vous connectez, nous enregistrons votre adresse IP ainsi que le nom de votre navigateur web. Toutes les sessions enregistrées peuvent être consultées dans les paramètres, afin que vous puissiez les surveiller et éventuellement les révoquer. La dernière adresse IP utilisée est conservée pour une durée de 12 mois. Nous sommes également susceptibles de conserver les journaux du serveur, ce qui inclut l’adresse IP de chaque requête reçue.</li>
+      </ul>
+
+      <hr class="spacer" />
+
+      <h3 id="use">Que faisons-nous des informations que nous collectons ?</h3>
+
+      <p>Toutes les informations que nous collectons sur vous peuvent être utilisées d’une des manières suivantes :</p>
+
+      <ul>
+        <li>Pour vous fournir les fonctionnalités de base de Mastodon. Vous ne pouvez interagir avec le contenu des autres et poster votre propre contenu que lorsque vous êtes connecté·e. Par exemple, vous pouvez vous abonner à plusieurs autres comptes pour voir l’ensemble de leurs posts dans votre fil d’accueil personnalisé.</li>
+        <li>Pour aider à la modération de la communauté, par exemple, comparer votre adresse IP à d’autres afin de déterminer si un bannissement a été contourné ou si une autre violation aux règles a été commise.</li>
+        <li>L’adresse électronique que vous nous avez fournie peut être utilisée pour vous envoyez des informations, des notifications lorsque d’autres personnes interagissent avec votre contenu ou vous envoient des messages, pour répondre à des demandes de votre part ainsi que pour tout autres requêtes ou questions.</li>
+      </ul>
+
+      <hr class="spacer" />
+
+      <h3 id="protect">Comment protégeons-nous vos informations ?</h3>
+
+      <p>Nous mettons en œuvre une variété de mesures de sécurité afin de garantir la sécurité de vos informations personnelles quand vous les saisissez, les soumettez et les consultez. Entre autres choses, votre session de navigation ainsi que le trafic entre votre application et l’API sont sécurisés à l’aide de TLS tandis que votre mot de passe est haché en utilisant un puissant algorithme à sens unique. Vous pouvez également activer l’authentification à deux facteurs pour sécuriser encore plus l’accès à votre compte.</p>
+
+      <hr class="spacer" />
+
+      <h3 id="data-retention">Quelle est notre politique de conservation des données ?</h3>
+
+      <p>Nous ferons un effort de bonne foi :</p>
+
+      <ul>
+        <li>Pour ne pas conserver plus de 90 jours les journaux systèmes contenant les adresses IP de toutes les requêtes reçues par ce serveur.</li>
+        <li>Pour ne pas conserver plus de 12 mois les adresses IP associées aux utilisateur·ice·s enregistré·e·s.</li>
+      </ul>
+
+      <p>Vous pouvez demander une archive de votre contenu, incluant vos posts, vos médias joints, votre image de profil et votre image d’en-tête.</p>
+
+      <p>Vous pouvez, à n’importe quel moment, supprimer votre compte de manière définitive.</p>
+
+      <hr class="spacer"/>
+
+      <h3 id="cookies">Utilisons-nous des témoins de connexion ?</h3>
+
+      <p>Oui. Les témoins de connexion sont de petits fichiers qu’un site ou un service transféres sur le disque dur de votre ordinateur via votre navigateur web (si vous l’avez autorisé). Ces témoins permettent au site de reconnaître votre navigateur et de, dans le cas où vous possédez un compte, de vous associer avec ce dernier.</p>
+
+      <p>Nous utilisons les témoins de connexion comme un moyen de comprendre et de nous souvenir de vos préférences pour vos prochaines visites.</p>
+
+      <hr class="spacer" />
+
+      <h3 id="disclose">Divulguons-nous des informations à des tierces parties ?</h3>
+
+      <p>Nous ne vendons, n’échangeons ou ne transférons d’une quelque manière que soit des informations permettant de vous identifier personnellement. Cela n’inclut pas les tierces parties de confiance qui nous aident à opérer ce site, à conduire nos activités commerciales ou à vous servir, tant qu’elles acceptent de garder ces informations confidentielles. Nous sommes également susceptibles de partager vos informations quand nous pensons que c’est nécessaire pour nous conformer à la loi, pour appliquer les politiques de notre site ainsi que pour défendre nos droits, notre propriété, notre sécurité et celles et ceux d’autres personnes.</p>
+
+      <p>Votre contenu public peut être téléchargé par d’autres serveurs du réseau. Dans le cas où vos abonné·e·s et vos destinataires résideraient sur des serveurs différents du vôtre, vos posts publics et abonné·e·s uniquement peuvent être délivrés vers les serveurs de vos abonné·e·s tandis que vos messages directs sont délivrés aux serveurs de vos destinataires.</p>
+
+      <p>Quand vous autorisez une application à utiliser votre compte, en fonction de l’étendue des permissions que vous approuvez, il est possible qu’elle puisse accéder aux informations publiques de votre profil, votre liste d’abonnements, votre liste d’abonné·e·s, vos listes, tout vos posts et vos favoris. Les applications ne peuvent en aucun cas accéder à votre adresse électronique et à votre mot de passe.</p>
+
+      <hr class="spacer" />
+
+      <h3 id="children">Utilisation de ce site par les enfants</h3>
+
+      <p>Si ce serveur est situé dans dans l’UE ou l’EEE : Notre site, produits et services sont tous destinés à des personnes âgées de 16 ans ou plus. Si vous avez moins de 16 ans, en application du RGPD (<a href="https://fr.wikipedia.org/wiki/R%C3%A8glement_g%C3%A9n%C3%A9ral_sur_la_protection_des_donn%C3%A9es">Règlement Général sur la Protection des Données</a>), merci de ne pas utiliser ce site.</p>
+
+      <p>Si ce serveur est situé dans aux États-Unis d’Amérique : Notre site, produits et services sont tous destinés à des personnes âgées de 13 ans ou plus. Si vous avez moins de 13 ans, en application du COPPA (<a href="https://fr.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act">Children's Online Privacy Protection Act</a>), merci de ne pas utiliser ce site.</p>
+
+      <p>Les exigences légales peuvent être différentes si ce serveur se trouve dans une autre juridiction.</p>
+
+      <hr class="spacer" />
+
+      <h3 id="changes">Modifications de notre politique de confidentialité</h3>
+
+      <p>Dans le cas où nous déciderions de changer notre politique de confidentialité, nous posterons les modifications sur cette page.</p>
+
+      <p>Ce document est publié sous lincence CC-BY-SA. Il a été mis à jours pour la dernière fois le 7 mars 2018.</p>
+
+      <p>Originellement adapté de la <a href="https://github.com/discourse/discourse">politique de confidentialité de Discourse</a>.</p>
+    title: "%{instance} Conditions d’utilisation et politique de confidentialité"
   themes:
     contrast: Contraste élevé
     default: Mastodon
@@ -758,8 +861,8 @@ fr:
     enabled_success: Identification à deux facteurs activée avec succès
     generate_recovery_codes: Générer les codes de récupération
     instructions_html: "<strong>Scannez ce QR code grâce à Google Authenticator, Authy ou une application similaire sur votre téléphone</strong>. Désormais, cette application génèrera des jetons que vous devrez saisir à chaque connexion."
-    lost_recovery_codes: Les codes de récupération vous permettent de retrouver les accès à votre comptre si vous perdez votre téléphone. Si vous perdez vos codes de récupération, vous pouvez les générer à nouveau ici. Vos anciens codes de récupération seront invalidés.
-    manual_instructions: 'Si vous ne pouvez pas scanner ce QR code et devez l’entrer manuellement, voici le secret en clair :'
+    lost_recovery_codes: Les codes de récupération vous permettent de retrouver les accès à votre compte si vous perdez votre téléphone. Si vous perdez vos codes de récupération, vous pouvez les générer à nouveau ici. Vos anciens codes de récupération seront invalidés.
+    manual_instructions: 'Si vous ne pouvez pas scanner ce QR code et devez l’entrer manuellement, voici le secret en clair :'
     recovery_codes: Codes de récupération
     recovery_codes_regenerated: Codes de récupération régénérés avec succès
     recovery_instructions_html: Si vous perdez l’accès à votre téléphone, vous pouvez utiliser un des codes de récupération ci-dessous pour retrouver l’accès à votre compte. <strong>Conservez les codes de récupération en sécurité</strong>. Par exemple, en les imprimant et en les stockant avec vos autres documents importants.
@@ -767,30 +870,30 @@ fr:
     wrong_code: Les codes entrés sont incorrects ! L’heure du serveur et celle de votre appareil sont-elles correctes ?
   user_mailer:
     backup_ready:
-      explanation: Vous avez demandé une sauvegarde complète de votre compte Mastodon. Elle est maintenant prête à être téléchargée !
+      explanation: Vous avez demandé une sauvegarde complète de votre compte Mastodon. Elle est maintenant prête à être téléchargée !
       subject: Votre archive est prête à être téléchargée
-      title: Retrait de l'archive
+      title: Récupération de l’archive
     welcome:
       edit_profile_action: Configuration du profil
-      edit_profile_step: Vous pouvez personnaliser votre profil en téléchargeant un avatar, une image d'en-tête, en changeant votre pseudo et plus encore. Si vous souhaitez examiner les nouveaux abonnés avant qu'ils ne soient autorisés à vous suivre, vous pouvez verrouiller votre compte.
+      edit_profile_step: Vous pouvez personnaliser votre profil en téléchargeant un avatar, une image d’en-tête, en changeant votre pseudo et plus encore. Si vous souhaitez examiner les nouveaux·lles abonné·e·s avant qu’il·elle·s ne soient autorisé·e·s à vous suivre, vous pouvez verrouiller votre compte.
       explanation: Voici quelques conseils pour vous aider à démarrer
       final_action: Commencer à publier
-      final_step: 'Commencez à poster ! Même sans abonné·es, vos messages publics peuvent être vus par d''autres, par exemple sur la chronologie locale et dans les hashtags. Vous pouvez vous présenter sur le hashtag #introductions.'
-      full_handle: Votre pleine maîtrise
-      full_handle_hint: C'est ce que vous diriez à vos amis pour qu'ils puissent vous envoyer un message ou vous suivre à partir d'une autre instance.
+      final_step: 'Commencez à poster ! Même sans abonné·e·s, vos messages publics peuvent être vus par d’autres, par exemple sur le fil public local et dans les hashtags. Vous pouvez vous présenter sur le hashtag #introductions.'
+      full_handle: Votre identifiant complet
+      full_handle_hint: C’est ce que vous diriez à vos ami·e·s pour qu’il·elle·s puissent vous envoyer un message ou vous suivre à partir d’une autre instance.
       review_preferences_action: Modifier les préférences
-      review_preferences_step: Assurez-vous de définir vos préférences, telles que les courriels que vous aimeriez recevoir ou le niveau de confidentialité auquel vous aimeriez que vos messages soient soumis par défaut. Si vous n'avez pas le mal des transports, vous pouvez choisir d'activer la lecture automatique GIF.
+      review_preferences_step: Assurez-vous de définir vos préférences, telles que les courriels que vous aimeriez recevoir ou le niveau de confidentialité auquel vous aimeriez que vos messages soient soumis par défaut. Si vous n’avez pas le mal des transports, vous pouvez choisir d’activer la lecture automatique des GIF.
       subject: Bienvenue sur Mastodon
-      tip_bridge_html: Si vous venez de Twitter, vous pouvez retrouver vos amis sur Mastodon en utilisant le <a href="%{bridge_url}">bridge app</a>. Cela ne fonctionne que s'ils ont aussi utilisé cette application !
-      tip_federated_timeline: La chronologie fédérée est une vue en direct du réseau Mastodon. Mais elle n'inclut que les personnes auxquelles vos voisin·es sont abonné·es, donc elle n'est pas complète.
-      tip_following: Vous suivez les administrateurs et administratrices de votre serveur par défaut. Pour trouver d'autres personnes intéressantes, consultez les chronologies locales et fédérées.
-      tip_local_timeline: La chronologie locale est une vue des personnes sur %{instance}. Ce sont vos voisines et voisins immédiats !
-      tip_mobile_webapp: Si votre navigateur mobile vous propose d'ajouter Mastodon à votre écran d'accueil, vous pouvez recevoir des notifications. Il agit comme une application native de bien des façons !
+      tip_bridge_html: Si vous venez de Twitter, vous pouvez retrouver vos ami·e·s sur Mastodon en utilisant l’<a href="%{bridge_url}">application de mise en relation</a>. Cela ne fonctionne que s’il·elle·s ont aussi utilisé cette application !
+      tip_federated_timeline: La fil public global est une vue en direct du réseau Mastodon. Mais elle n’inclut que les personnes auxquelles vos voisin·es sont abonné·e·s, donc elle n’est pas complète.
+      tip_following: Vous suivez les administrateur·rice·s de votre serveur par défaut. Pour trouver d’autres personnes intéressantes, consultez les fils publics local et global.
+      tip_local_timeline: Le fil public local est une vue des personnes sur %{instance}. Ce sont vos voisines et voisins immédiats !
+      tip_mobile_webapp: Si votre navigateur mobile vous propose d’ajouter Mastodon à votre écran d’accueil, vous pouvez recevoir des notifications. Il agit comme une application native de bien des façons !
       tips: Astuces
-      title: Bienvenue à bord, %{name} !
+      title: Bienvenue à bord, %{name} !
   users:
     invalid_email: L’adresse courriel est invalide
     invalid_otp_token: Le code d’authentification à deux facteurs est invalide
     otp_lost_help_html: Si vous perdez accès aux deux, vous pouvez contacter %{email}
     seamless_external_login: Vous êtes connecté via un service externe, donc les paramètres concernant le mot de passe et le courriel ne sont pas disponibles.
-    signed_in_as: 'Connecté·e en tant que :'
+    signed_in_as: 'Connecté·e en tant que :'
diff --git a/config/locales/ja.yml b/config/locales/ja.yml
index 47177b809..abf6722b1 100644
--- a/config/locales/ja.yml
+++ b/config/locales/ja.yml
@@ -30,10 +30,14 @@ ja:
     other_instances: 他のインスタンス
     privacy_policy: プライバシーポリシー
     source_code: ソースコード
-    status_count_after: トゥート
+    status_count_after:
+      one: トゥート
+      other: トゥート
     status_count_before: トゥート数
     terms: 利用規約
-    user_count_after: 人
+    user_count_after:
+      one: 人
+      other: 人
     user_count_before: ユーザー数
     what_is_mastodon: Mastodon とは?
   accounts:
@@ -49,7 +53,7 @@ ja:
     people_followed_by: "%{name} さんがフォロー中のアカウント"
     people_who_follow: "%{name} さんをフォロー中のアカウント"
     pin_errors:
-      following: 推薦したい人はあなたが既にフォローしている必要があります
+      following: おすすめしたい人はあなたが既にフォローしている必要があります
     posts: トゥート
     posts_with_replies: トゥートと返信
     reserved_username: このユーザー名は予約されています
@@ -185,7 +189,7 @@ ja:
         unsuspend_account: "%{name} さんが %{target} さんの停止を解除しました"
         update_custom_emoji: "%{name} さんがカスタム絵文字 %{target} を更新しました"
         update_status: "%{name} さんが %{target} さんの投稿を更新しました"
-      deleted_status: "(削除されました)"
+      deleted_status: "(削除済)"
       title: 操作履歴
     custom_emojis:
       by_domain: ドメイン
@@ -346,6 +350,8 @@ ja:
       contact_information:
         email: ビジネスメールアドレス
         username: 連絡先のユーザー名
+      custom_css:
+        title: カスタムCSS
       hero:
         desc_html: フロントページに表示されます。サイズは600x100px以上推奨です。未設定の場合、インスタンスのサムネイルが使用されます
         title: ヒーローイメージ
@@ -414,6 +420,12 @@ ja:
       last_delivery: 最終配送
       title: WebSub
       topic: トピック
+    suspensions:
+      bad_acct_msg: 値が一致しませんでした。停止しようとしているアカウントに間違いはありませんか?
+      hint_html: 'アカウントの停止を確認するには、以下のフィールドに %{value} と入力してください:'
+      proceed: 完全に活動停止させる
+      title: "%{acct} を停止"
+      warning_html: 'このアカウントを停止すると、このアカウントから次のようなデータが<strong>不可逆的に</strong>削除されます:'
     title: 管理
   admin_mailer:
     new_report:
@@ -645,7 +657,6 @@ ja:
           quadrillion: Q
           thousand: K
           trillion: T
-          unit: ''
   pagination:
     newer: 新しいトゥート
     next: 次
@@ -868,7 +879,7 @@ ja:
     recovery_codes_regenerated: リカバリーコードが再生成されました
     recovery_instructions_html: 携帯電話を紛失した場合、以下の内どれかのリカバリーコードを使用してアカウントへアクセスすることができます。<strong>リカバリーコードは大切に保全してください。</strong>たとえば印刷してほかの重要な書類と一緒に保管することができます。
     setup: 初期設定
-    wrong_code: コードが間違っています。サーバー上の時間とデバイス上の時間が一致していることを確認してください。
+    wrong_code: コードが間違っています。サーバー上の時間とデバイス上の時間が一致していますか?
   user_mailer:
     backup_ready:
       explanation: Mastodonアカウントのアーカイブを受け付けました。今すぐダウンロードできます!
diff --git a/config/locales/ka.yml b/config/locales/ka.yml
index 86d982665..c1105b017 100644
--- a/config/locales/ka.yml
+++ b/config/locales/ka.yml
@@ -6,6 +6,7 @@ ka:
     about_this: შესახებ
     administered_by: 'ადმინისტრატორი:'
     api: აპი
+    apps: მობილური აპლიკაციები
     closed_registrations: რეგისტრაციები ამჟამად ინსტანციაზე დახურულია. თუმცა! ანგარიშის შესაქმნელად შეგიძლიათ იპოვოთ სხვა ინსტანცია და იმავე ქსელზე იქონიოთ წვდომა იქიდან.
     contact: კონტაქტი
     contact_missing: არაა დაყენებული
@@ -281,6 +282,7 @@ ka:
       search: ძებნა
       title: ცნობილი ინსტანციები
     invites:
+      deactivate_all: ყველას დეაქტივაცია
       filter:
         all: ყველა
         available: ხელმისაწვდომი
@@ -660,6 +662,9 @@ ka:
     no_account_html: არ გაქვთ ანგარიში? შეგიძლიათ <a href='%{sign_up_path}' target='_blank'>დარეგისტრირდეთ აქ</a>
     proceed: გააგრძელეთ გასაყოლად
     prompt: 'თქვენ გაჰყვებით:'
+  remote_interaction:
+    proceed: გააგრძელეთ ურთიერთქმედება
+    prompt: 'თქვენ გსურთ ურთიერთქმედება ამ ტუტთან:'
   remote_unfollow:
     error: შეცდომა
     title: სათაური
@@ -743,6 +748,7 @@ ka:
       private: არა-საჯარო ტუტი ვერ აიპინება
       reblog: ბუსტი ვერ აიპინება
     show_more: მეტის ჩვენება
+    sign_in_to_participate: საუბარში მონაწილეობისთვის გაიარეთ ავტორიზაცია
     title: '%{name}: "%{quote}"'
     visibilities:
       private: მხოლოდ-მიმდევრები
diff --git a/config/locales/ko.yml b/config/locales/ko.yml
index b5da99049..1ae825443 100644
--- a/config/locales/ko.yml
+++ b/config/locales/ko.yml
@@ -640,7 +640,7 @@ ko:
     publishing: 퍼블리싱
     web: 웹
   remote_follow:
-    acct: 아이디@도메인을 입력해 주십시오
+    acct: 당신이 사용하는 아이디@도메인을 입력해 주십시오
     missing_resource: 리디렉션 대상을 찾을 수 없습니다
     no_account_html: 계정이 없나요? <a href='%{sign_up_path}' target='_blank'>여기에서 가입 할 수 있습니다</a>
     proceed: 팔로우 하기
diff --git a/config/locales/pl.yml b/config/locales/pl.yml
index f58f32668..c7c74b239 100644
--- a/config/locales/pl.yml
+++ b/config/locales/pl.yml
@@ -30,10 +30,16 @@ pl:
     other_instances: Lista instancji
     privacy_policy: Polityka prywatności
     source_code: Kod źródłowy
-    status_count_after: wpisów
+    status_count_after:
+      few: wpisów
+      many: wpisów
+      one: wpisu
     status_count_before: Są autorami
     terms: Zasady użytkowania
-    user_count_after: użytkowników
+    user_count_after:
+      few: użytkowników
+      many: użytkowników
+      one: użytkownik
     user_count_before: Z serwera korzysta
     what_is_mastodon: Czym jest Mastodon?
   accounts:
@@ -404,6 +410,7 @@ pl:
       media:
         title: Media
       no_media: Bez zawartości multimedialnej
+      no_status_selected: Żaden wpis nie został zmieniony, bo żaden nie został wybrany
       title: Wpisy konta
       with_media: Z zawartością multimedialną
     subscriptions:
@@ -413,6 +420,12 @@ pl:
       last_delivery: Ostatnio doręczono
       title: WebSub
       topic: Temat
+    suspensions:
+      bad_acct_msg: Zawartość potwierdzenia nie zgadza się. Czy próbujesz zawiesić właściwe konto?
+      hint_html: 'Aby potwierdzić zawieszenie konta, wprowadź %{value} w poniższe pole:'
+      proceed: Przejdź
+      title: Zawieś %{acct}
+      warning_html: 'Zawieszenie konta będzie skutkowało <strong>nieodwracalnym</strong> usunięciem danych z tego konta, wliczając:'
     title: Administracja
   admin_mailer:
     new_report:
diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml
index a023faf92..c13cfa50d 100644
--- a/config/locales/simple_form.fr.yml
+++ b/config/locales/simple_form.fr.yml
@@ -3,34 +3,34 @@ fr:
   simple_form:
     hints:
       defaults:
-        autofollow: Les personnes qui s'inscrivent grâce à l'invitation vous suivront automatiquement
+        autofollow: Les personnes qui s’inscrivent grâce à l’invitation vous suivront automatiquement
         avatar: Au format PNG, GIF ou JPG. 2 Mo maximum. Sera réduit à %{dimensions}px
         bot: Ce compte exécute principalement des actions automatisées et pourrait ne pas être surveillé
-        context: Un ou plusieurs contextes où le filtre devrait s'appliquer
+        context: Un ou plusieurs contextes où le filtre devrait s’appliquer
         digest: Uniquement envoyé après une longue période d’inactivité et uniquement si vous avez reçu des messages personnels pendant votre absence
         display_name:
           one: <span class="name-counter">1</span> caractère restant
           other: <span class="name-counter">%{count}</span> caractères restants
-        fields: Vous pouvez avoir jusqu'à 4 éléments affichés en tant que tableau sur votre profil
+        fields: Vous pouvez avoir jusqu’à 4 éléments affichés en tant que tableau sur votre profil
         header: Au format PNG, GIF ou JPG. 2 Mo maximum. Sera réduit à %{dimensions}px
-        inbox_url: Copiez l'URL depuis la page d'accueil du relais que vous souhaitez utiliser
+        inbox_url: Copiez l’URL depuis la page d’accueil du relais que vous souhaitez utiliser
         irreversible: Les pouets filtrés disparaîtront irrémédiablement, même si le filtre est supprimé plus tard
-        locale: La langue de l'interface-utilisateur, des courriels, et des notifications
+        locale: La langue de l’interface, des courriels et des notifications
         locked: Vous devrez approuver chaque abonné⋅e et vos statuts ne s’afficheront qu’à vos abonné⋅es
         note:
           one: <span class="note-counter">1</span> caractère restant
           other: <span class="note-counter">%{count}</span> caractères restants
-        phrase: Sera trouvé sans que la case ou l'avertissement de contenu du pouet soit pris en compte
-        scopes: À quelles APIs l'application sera autorisée à accéder. Si vous sélectionnez un périmètre de haut-niveau, vous n'avez pas besoin de sélectionner les individuels.
-        setting_default_language: La langue de vos pouets peut être détectée automatiquement, mais ça n'est pas toujours pertinent
+        phrase: Sera trouvé sans que la case ou l’avertissement de contenu du pouet soit pris en compte
+        scopes: À quelles APIs l’application sera autorisée à accéder. Si vous sélectionnez un périmètre de haut-niveau, vous n’avez pas besoin de sélectionner les individuels.
+        setting_default_language: La langue de vos pouets peut être détectée automatiquement, mais ça n’est pas toujours pertinent
         setting_hide_network: Ceux que vous suivez et ceux qui vous suivent ne seront pas affichés sur votre profil
         setting_noindex: Affecte votre profil public ainsi que vos statuts
         setting_theme: Affecte l’apparence de Mastodon quand vous êtes connecté·e depuis n’importe quel appareil.
-        whole_word: Lorsque le mot-clef ou la phrase-clef est uniquement alphanumérique, ça sera uniquement appliqué s'il correspond au mot entier
+        whole_word: Lorsque le mot-clef ou la phrase-clef est uniquement alphanumérique, ça sera uniquement appliqué s’il correspond au mot entier
       imports:
         data: Un fichier CSV généré par une autre instance de Mastodon
       sessions:
-        otp: 'Entrez le code d’authentification à deux facteurs généré par votre téléphone ou utilisez un de vos codes de récupération :'
+        otp: 'Entrez le code d’authentification à deux facteurs généré par l''application de votre téléphone ou utilisez un de vos codes de récupération :'
       user:
         chosen_languages: Lorsque coché, seuls les pouets dans les langues sélectionnées seront affichés sur les fils publics
     labels:
@@ -55,9 +55,9 @@ fr:
         header: Image d’en-tête
         inbox_url: URL de la boîte de relais
         irreversible: Supprimer plutôt que de cacher
-        locale: Langue de l'interface
+        locale: Langue de l’interface
         locked: Verrouiller le compte
-        max_uses: Nombre maximum d'utilisations
+        max_uses: Nombre maximum d’utilisations
         new_password: Nouveau mot de passe
         note: Présentation
         otp_attempt: Code d’identification à deux facteurs
@@ -79,7 +79,7 @@ fr:
         severity: Sévérité
         type: Type d’import
         username: Identifiant
-        username_or_email: Nom d'utilisateur ou courriel
+        username_or_email: Nom d’utilisateur·ice ou courriel
         whole_word: Mot entier
       interactions:
         must_be_follower: Masquer les notifications des personnes qui ne vous suivent pas
diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml
index 9008d2338..32ea32d68 100644
--- a/config/locales/simple_form.pl.yml
+++ b/config/locales/simple_form.pl.yml
@@ -15,6 +15,7 @@ pl:
           other: Pozostało <span class="name-counter">%{count}</span> znaków
         fields: Możesz ustawić maksymalnie 4 niestandardowe pola wyświetlane jako tabela na Twoim profilu
         header: PNG, GIF lub JPG. Maksymalnie %{size}. Zostanie zmniejszony do %{dimensions}px
+        inbox_url: Skopiuj adres ze strony głównej przekaźnika, którego chcesz użyć
         irreversible: Filtrowane wpisy znikną bezpowrotnie, nawet gdy filtr zostanie usunięty
         locale: Język interfejsu, wiadomości e-mail i powiadomieniach push
         locked: Musisz akceptować prośby o śledzenie
@@ -24,10 +25,12 @@ pl:
           one: Pozostał <span class="name-counter">1</span> znak
           other: Pozostało <span class="name-counter">%{count}</span> znaków
         phrase: Zostanie wykryte nawet, gdy znajduje się za ostrzeżeniem o zawartości
+        scopes: Wybór API, do których aplikacja będzie miała dostęp. Jeżeli wybierzesz nadrzędny zakres, nie musisz wybierać jego elementów.
         setting_default_language: Język Twoich wpisów może być wykrywany automatycznie, ale nie zawsze jest to dokładne
         setting_hide_network: Informacje o tym, kto Cię śledzi i kogo śledzisz nie będą widoczne
         setting_noindex: Wpływa na widoczność strony profilu i Twoich wpisów
         setting_skin: Zmienia wygląd używanej odmiany Mastodona
+        whole_word: Jeśli słowo lub fraza składa się jedynie z liter lub cyfr, filtr będzie zastosowany tylko do pełnych wystąpień
       imports:
         data: Plik CSV wyeksportowany z innej instancji Mastodona
       sessions:
@@ -54,6 +57,7 @@ pl:
         expires_in: Wygaśnie po
         fields: Metadane profilu
         header: Nagłówek
+        inbox_url: Adres skrzynki przekaźnika
         irreversible: Usuwaj zamiast ukrywać
         locale: Język interfejsu
         locked: Ustaw konto jako prywatne
diff --git a/config/routes.rb b/config/routes.rb
index 37bb4967b..7c8f04c8d 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -23,6 +23,7 @@ Rails.application.routes.draw do
   get '.well-known/webfinger', to: 'well_known/webfinger#show', as: :webfinger
   get 'manifest', to: 'manifests#show', defaults: { format: 'json' }
   get 'intent', to: 'intents#show'
+  get 'custom.css', to: 'custom_css#show', as: :custom_css
 
   devise_scope :user do
     get '/invite/:invite_code', to: 'auth/registrations#new', as: :public_invite
diff --git a/config/webpack/production.js b/config/webpack/production.js
index 4966807a1..27a78108b 100644
--- a/config/webpack/production.js
+++ b/config/webpack/production.js
@@ -23,8 +23,8 @@ try {
 let attachmentHost;
 
 if (process.env.S3_ENABLED === 'true') {
-  if (process.env.S3_CLOUDFRONT_HOST) {
-    attachmentHost = process.env.S3_CLOUDFRONT_HOST;
+  if (process.env.S3_ALIAS_HOST || process.env.S3_CLOUDFRONT_HOST) {
+    attachmentHost = process.env.S3_ALIAS_HOST || process.env.S3_CLOUDFRONT_HOST;
   } else {
     attachmentHost = process.env.S3_HOSTNAME || `s3-${process.env.S3_REGION || 'us-east-1'}.amazonaws.com`;
   }