about summary refs log tree commit diff
diff options
context:
space:
mode:
authorThibG <thib@sitedethib.com>2019-01-16 16:28:38 +0100
committerGitHub <noreply@github.com>2019-01-16 16:28:38 +0100
commit530d29148ca0c5bf29f6fa516b1ef4f91d95894b (patch)
treee074e7b778e973b12e754d939cc5e2805eb012d6
parent077639c27409f897e87522dd18a51801b6cbc40d (diff)
parent5684cd090caec27729d78c204911348a0cf62cbf (diff)
Merge pull request #887 from ThibG/glitch-soc/merge-upstream
Merge upstream changes
-rw-r--r--Gemfile6
-rw-r--r--Gemfile.lock50
-rw-r--r--app/javascript/flavours/glitch/components/hashtag.js6
-rw-r--r--app/javascript/flavours/glitch/features/ui/index.js1
-rw-r--r--app/javascript/flavours/glitch/styles/about.scss7
-rw-r--r--app/javascript/mastodon/components/hashtag.js6
-rw-r--r--app/javascript/mastodon/features/ui/index.js1
-rw-r--r--app/javascript/mastodon/locales/ar.json8
-rw-r--r--app/javascript/mastodon/locales/ca.json4
-rw-r--r--app/javascript/mastodon/locales/co.json4
-rw-r--r--app/javascript/mastodon/locales/cs.json4
-rw-r--r--app/javascript/mastodon/locales/cy.json42
-rw-r--r--app/javascript/mastodon/locales/de.json12
-rw-r--r--app/javascript/mastodon/locales/fr.json4
-rw-r--r--app/javascript/mastodon/locales/gl.json6
-rw-r--r--app/javascript/mastodon/locales/ja.json8
-rw-r--r--app/javascript/mastodon/locales/ko.json4
-rw-r--r--app/javascript/mastodon/locales/nl.json16
-rw-r--r--app/javascript/mastodon/locales/oc.json4
-rw-r--r--app/javascript/mastodon/locales/pl.json28
-rw-r--r--app/javascript/mastodon/locales/pt-BR.json4
-rw-r--r--app/javascript/mastodon/locales/sk.json18
-rw-r--r--app/javascript/styles/mastodon/about.scss7
-rw-r--r--app/services/fetch_oembed_service.rb2
-rw-r--r--config/initializers/devise.rb2
-rw-r--r--config/initializers/session_store.rb2
-rw-r--r--config/locales/ar.yml12
-rw-r--r--config/locales/ca.yml53
-rw-r--r--config/locales/co.yml63
-rw-r--r--config/locales/cs.yml62
-rw-r--r--config/locales/cy.yml70
-rw-r--r--config/locales/de.yml53
-rw-r--r--config/locales/devise.pl.yml6
-rw-r--r--config/locales/el.yml41
-rw-r--r--config/locales/fr.yml43
-rw-r--r--config/locales/gl.yml67
-rw-r--r--config/locales/id.yml61
-rw-r--r--config/locales/ja.yml40
-rw-r--r--config/locales/ko.yml51
-rw-r--r--config/locales/nl.yml63
-rw-r--r--config/locales/oc.yml51
-rw-r--r--config/locales/pl.yml30
-rw-r--r--config/locales/pt-BR.yml51
-rw-r--r--config/locales/simple_form.de.yml4
-rw-r--r--config/locales/simple_form.fr.yml2
-rw-r--r--config/locales/simple_form.nl.yml10
-rw-r--r--config/locales/simple_form.pl.yml9
-rw-r--r--config/locales/simple_form.sk.yml8
-rw-r--r--config/locales/sk.yml102
-rw-r--r--config/locales/te.yml2
-rw-r--r--lib/mastodon/domains_cli.rb118
-rw-r--r--spec/fixtures/requests/oembed_json_empty.html7
-rw-r--r--spec/rails_helper.rb1
-rw-r--r--spec/services/fetch_oembed_service_spec.rb18
54 files changed, 1070 insertions, 284 deletions
diff --git a/Gemfile b/Gemfile
index 3912180a1..5b523f338 100644
--- a/Gemfile
+++ b/Gemfile
@@ -13,7 +13,7 @@ gem 'hamlit-rails', '~> 0.2'
 gem 'pg', '~> 1.1'
 gem 'makara', '~> 0.4'
 gem 'pghero', '~> 2.2'
-gem 'dotenv-rails', '~> 2.5'
+gem 'dotenv-rails', '~> 2.6'
 
 gem 'aws-sdk-s3', '~> 1.30', require: false
 gem 'fog-core', '<= 2.1.0'
@@ -76,7 +76,7 @@ gem 'rqrcode', '~> 0.10'
 gem 'sanitize', '~> 5.0'
 gem 'sidekiq', '~> 5.2'
 gem 'sidekiq-scheduler', '~> 3.0'
-gem 'sidekiq-unique-jobs', '~> 5.0'
+gem 'sidekiq-unique-jobs', '~> 6.0'
 gem 'sidekiq-bulk', '~>0.2.0'
 gem 'simple-navigation', '~> 4.0'
 gem 'simple_form', '~> 4.1'
@@ -146,3 +146,5 @@ group :production do
   gem 'lograge', '~> 0.10'
   gem 'redis-rails', '~> 5.0'
 end
+
+gem 'concurrent-ruby', require: false
diff --git a/Gemfile.lock b/Gemfile.lock
index 38bbd2c1c..a94e4f145 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -76,8 +76,8 @@ GEM
     av (0.9.0)
       cocaine (~> 0.5.3)
     aws-eventstream (1.0.1)
-    aws-partitions (1.122.0)
-    aws-sdk-core (3.43.0)
+    aws-partitions (1.131.0)
+    aws-sdk-core (3.45.0)
       aws-eventstream (~> 1.0)
       aws-partitions (~> 1.0)
       aws-sigv4 (~> 1.0)
@@ -85,7 +85,7 @@ GEM
     aws-sdk-kms (1.13.0)
       aws-sdk-core (~> 3, >= 3.39.0)
       aws-sigv4 (~> 1.0)
-    aws-sdk-s3 (1.30.0)
+    aws-sdk-s3 (1.30.1)
       aws-sdk-core (~> 3, >= 3.39.0)
       aws-sdk-kms (~> 1)
       aws-sigv4 (~> 1.0)
@@ -148,7 +148,7 @@ GEM
     cocaine (0.5.8)
       climate_control (>= 0.0.3, < 1.0)
     coderay (1.1.2)
-    concurrent-ruby (1.0.5)
+    concurrent-ruby (1.1.4)
     connection_pool (2.2.2)
     crack (0.4.3)
       safe_yaml (~> 1.0.0)
@@ -185,9 +185,9 @@ GEM
       unf (>= 0.0.5, < 1.0.0)
     doorkeeper (5.0.2)
       railties (>= 4.2)
-    dotenv (2.5.0)
-    dotenv-rails (2.5.0)
-      dotenv (= 2.5.0)
+    dotenv (2.6.0)
+    dotenv-rails (2.6.0)
+      dotenv (= 2.6.0)
       railties (>= 3.2, < 6.0)
     elasticsearch (6.0.2)
       elasticsearch-api (= 6.0.2)
@@ -200,7 +200,7 @@ GEM
       multi_json
     encryptor (3.0.0)
     equatable (0.5.0)
-    erubi (1.7.1)
+    erubi (1.8.0)
     et-orbi (1.1.6)
       tzinfo
     excon (0.62.0)
@@ -231,7 +231,7 @@ GEM
     fuubar (2.3.2)
       rspec-core (~> 3.0)
       ruby-progressbar (~> 1.4)
-    get_process_mem (0.2.2)
+    get_process_mem (0.2.3)
     globalid (0.4.1)
       activesupport (>= 4.2.0)
     goldfinger (2.1.0)
@@ -271,7 +271,7 @@ GEM
     httplog (1.2.0)
       rack (>= 1.0)
       rainbow (>= 2.0.0)
-    i18n (1.1.1)
+    i18n (1.5.2)
       concurrent-ruby (~> 1.0)
     i18n-tasks (0.9.28)
       activesupport (>= 4.0.2)
@@ -356,15 +356,15 @@ GEM
       net-ssh (>= 2.6.5)
     net-ssh (5.0.2)
     nio4r (2.3.1)
-    nokogiri (1.10.0)
+    nokogiri (1.10.1)
       mini_portile2 (~> 2.4.0)
     nokogumbo (2.0.0)
       nokogiri (~> 1.8, >= 1.8.4)
-    nsa (0.2.4)
+    nsa (0.2.7)
       activesupport (>= 4.2, < 6)
-      concurrent-ruby (~> 1.0.0)
-      sidekiq (>= 3.5.0)
-      statsd-ruby (~> 1.2.0)
+      concurrent-ruby (~> 1.0, >= 1.0.2)
+      sidekiq (>= 3.5)
+      statsd-ruby (~> 1.4, >= 1.4.0)
     oj (3.7.6)
     omniauth (1.9.0)
       hashie (>= 3.4.6, < 3.7.0)
@@ -399,7 +399,7 @@ GEM
     pastel (0.7.2)
       equatable (~> 0.5.0)
       tty-color (~> 0.4.0)
-    pg (1.1.3)
+    pg (1.1.4)
     pghero (2.2.0)
       activerecord
     pkg-config (1.3.2)
@@ -469,7 +469,7 @@ GEM
       rake (>= 0.8.7)
       thor (>= 0.19.0, < 2.0)
     rainbow (3.0.0)
-    rake (12.3.1)
+    rake (12.3.2)
     rb-fsevent (0.10.3)
     rb-inotify (0.9.10)
       ffi (>= 0.5.0, < 2)
@@ -565,8 +565,9 @@ GEM
       rufus-scheduler (~> 3.2)
       sidekiq (>= 3)
       tilt (>= 1.4.0)
-    sidekiq-unique-jobs (5.0.10)
-      sidekiq (>= 4.0, <= 6.0)
+    sidekiq-unique-jobs (6.0.8)
+      concurrent-ruby (~> 1.0, >= 1.0.5)
+      sidekiq (>= 4.0, < 6.0)
       thor (~> 0)
     simple-navigation (4.0.5)
       activesupport (>= 2.3.2)
@@ -589,7 +590,7 @@ GEM
       net-scp (>= 1.1.2)
       net-ssh (>= 2.8.0)
     stackprof (0.2.12)
-    statsd-ruby (1.2.1)
+    statsd-ruby (1.4.0)
     stoplight (2.1.3)
     streamio-ffmpeg (3.0.2)
       multi_json (~> 1.8)
@@ -675,12 +676,13 @@ DEPENDENCIES
   chewy (~> 5.0)
   cld3 (~> 3.2.3)
   climate_control (~> 0.2)
+  concurrent-ruby
   derailed_benchmarks
   devise (~> 4.5)
   devise-two-factor (~> 3.0)
   devise_pam_authenticatable2 (~> 9.2)
   doorkeeper (~> 5.0)
-  dotenv-rails (~> 2.5)
+  dotenv-rails (~> 2.6)
   fabrication (~> 2.20)
   faker (~> 1.9)
   fast_blank (~> 1.0)
@@ -753,7 +755,7 @@ DEPENDENCIES
   sidekiq (~> 5.2)
   sidekiq-bulk (~> 0.2.0)
   sidekiq-scheduler (~> 3.0)
-  sidekiq-unique-jobs (~> 5.0)
+  sidekiq-unique-jobs (~> 6.0)
   simple-navigation (~> 4.0)
   simple_form (~> 4.1)
   simplecov (~> 0.16)
@@ -772,7 +774,7 @@ DEPENDENCIES
   webpush
 
 RUBY VERSION
-   ruby 2.5.3p105
+   ruby 2.6.0p0
 
 BUNDLED WITH
-   1.16.6
+   1.17.3
diff --git a/app/javascript/flavours/glitch/components/hashtag.js b/app/javascript/flavours/glitch/components/hashtag.js
index 88689cc6c..d75edd994 100644
--- a/app/javascript/flavours/glitch/components/hashtag.js
+++ b/app/javascript/flavours/glitch/components/hashtag.js
@@ -1,16 +1,16 @@
 import React from 'react';
 import { Sparklines, SparklinesCurve } from 'react-sparklines';
-import { Link } from 'react-router-dom';
 import { FormattedMessage } from 'react-intl';
 import ImmutablePropTypes from 'react-immutable-proptypes';
+import Permalink from './permalink';
 import { shortNumberFormat } from 'flavours/glitch/util/numbers';
 
 const Hashtag = ({ hashtag }) => (
   <div className='trends__item'>
     <div className='trends__item__name'>
-      <Link to={`/timelines/tag/${hashtag.get('name')}`}>
+      <Permalink href={hashtag.get('url')} to={`/timelines/tag/${hashtag.get('name')}`}>
         #<span>{hashtag.get('name')}</span>
-      </Link>
+      </Permalink>
 
       <FormattedMessage id='trends.count_by_accounts' defaultMessage='{count} {rawCount, plural, one {person} other {people}} talking' values={{ rawCount: hashtag.getIn(['history', 0, 'accounts']), count: <strong>{shortNumberFormat(hashtag.getIn(['history', 0, 'accounts']))}</strong> }} />
     </div>
diff --git a/app/javascript/flavours/glitch/features/ui/index.js b/app/javascript/flavours/glitch/features/ui/index.js
index f043f767e..7928dfe6c 100644
--- a/app/javascript/flavours/glitch/features/ui/index.js
+++ b/app/javascript/flavours/glitch/features/ui/index.js
@@ -182,6 +182,7 @@ export default class UI extends React.Component {
     e.preventDefault();
 
     this.setState({ draggingOver: false });
+    this.dragTargets = [];
 
     if (e.dataTransfer && e.dataTransfer.files.length === 1) {
       this.props.dispatch(uploadCompose(e.dataTransfer.files));
diff --git a/app/javascript/flavours/glitch/styles/about.scss b/app/javascript/flavours/glitch/styles/about.scss
index da50581fb..c8d144e5b 100644
--- a/app/javascript/flavours/glitch/styles/about.scss
+++ b/app/javascript/flavours/glitch/styles/about.scss
@@ -1044,10 +1044,6 @@ $small-breakpoint: 960px;
 
     .scrollable {
       height: 400px;
-
-      @media screen and (max-width: $column-breakpoint) {
-        height: 90vh;
-      }
     }
 
     p {
@@ -1274,8 +1270,7 @@ $small-breakpoint: 960px;
       }
 
       #mastodon-timeline {
-        display: block;
-        width: 100vw;
+        display: flex;
         height: 100vh;
         border-radius: 0;
       }
diff --git a/app/javascript/mastodon/components/hashtag.js b/app/javascript/mastodon/components/hashtag.js
index a407df31e..f091d7893 100644
--- a/app/javascript/mastodon/components/hashtag.js
+++ b/app/javascript/mastodon/components/hashtag.js
@@ -1,16 +1,16 @@
 import React from 'react';
 import { Sparklines, SparklinesCurve } from 'react-sparklines';
-import { Link } from 'react-router-dom';
 import { FormattedMessage } from 'react-intl';
 import ImmutablePropTypes from 'react-immutable-proptypes';
+import Permalink from './permalink';
 import { shortNumberFormat } from '../utils/numbers';
 
 const Hashtag = ({ hashtag }) => (
   <div className='trends__item'>
     <div className='trends__item__name'>
-      <Link to={`/timelines/tag/${hashtag.get('name')}`}>
+      <Permalink href={hashtag.get('url')} to={`/timelines/tag/${hashtag.get('name')}`}>
         #<span>{hashtag.get('name')}</span>
-      </Link>
+      </Permalink>
 
       <FormattedMessage id='trends.count_by_accounts' defaultMessage='{count} {rawCount, plural, one {person} other {people}} talking' values={{ rawCount: hashtag.getIn(['history', 0, 'accounts']), count: <strong>{shortNumberFormat(hashtag.getIn(['history', 0, 'accounts']))}</strong> }} />
     </div>
diff --git a/app/javascript/mastodon/features/ui/index.js b/app/javascript/mastodon/features/ui/index.js
index cb88e538a..a59c0a257 100644
--- a/app/javascript/mastodon/features/ui/index.js
+++ b/app/javascript/mastodon/features/ui/index.js
@@ -259,6 +259,7 @@ class UI extends React.PureComponent {
     e.preventDefault();
 
     this.setState({ draggingOver: false });
+    this.dragTargets = [];
 
     if (e.dataTransfer && e.dataTransfer.files.length === 1) {
       this.props.dispatch(uploadCompose(e.dataTransfer.files));
diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json
index f558a6ddc..45b074a52 100644
--- a/app/javascript/mastodon/locales/ar.json
+++ b/app/javascript/mastodon/locales/ar.json
@@ -132,8 +132,8 @@
   "follow_request.authorize": "ترخيص",
   "follow_request.reject": "رفض",
   "getting_started.developers": "المُطوِّرون",
-  "getting_started.directory": "Profile directory",
-  "getting_started.documentation": "Documentation",
+  "getting_started.directory": "دليل المستخدِمين والمستخدِمات",
+  "getting_started.documentation": "الدليل",
   "getting_started.heading": "إستعدّ للبدء",
   "getting_started.invite": "دعوة أشخاص",
   "getting_started.open_source_notice": "ماستدون برنامج مفتوح المصدر. يمكنك المساهمة، أو الإبلاغ عن تقارير الأخطاء، على جيت هب {github}.",
@@ -156,7 +156,7 @@
   "introduction.federation.home.text": "سوف تُعرَض منشورات الأشخاص الذين تُتابِعهم على الخيط الرئيسي. بإمكانك متابعة أي حساب أيا كان الخادم الذي هو عليه!",
   "introduction.federation.local.headline": "Local",
   "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
-  "introduction.interactions.action": "Finish tutorial!",
+  "introduction.interactions.action": "إنهاء العرض التوضيحي!",
   "introduction.interactions.favourite.headline": "الإضافة إلى المفضلة",
   "introduction.interactions.favourite.text": "يمكِنك إضافة أي تبويق إلى المفضلة و إعلام صاحبه أنك أعجِبت بذاك التبويق.",
   "introduction.interactions.reblog.headline": "الترقية",
@@ -293,7 +293,7 @@
   "search_results.total": "{count, number} {count, plural, one {result} و {results}}",
   "standalone.public_title": "نظرة على ...",
   "status.admin_account": "Open moderation interface for @{name}",
-  "status.admin_status": "Open this status in the moderation interface",
+  "status.admin_status": "افتح هذا المنشور على واجهة الإشراف",
   "status.block": "Block @{name}",
   "status.cancel_reblog_private": "إلغاء الترقية",
   "status.cannot_reblog": "تعذرت ترقية هذا المنشور",
diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json
index 6b911711e..302ff2573 100644
--- a/app/javascript/mastodon/locales/ca.json
+++ b/app/javascript/mastodon/locales/ca.json
@@ -292,8 +292,8 @@
   "search_results.statuses": "Toots",
   "search_results.total": "{count, number} {count, plural, un {result} altres {results}}",
   "standalone.public_title": "Una mirada a l'interior ...",
-  "status.admin_account": "Open moderation interface for @{name}",
-  "status.admin_status": "Open this status in the moderation interface",
+  "status.admin_account": "Obre l'interfície de moderació per a @{name}",
+  "status.admin_status": "Obre aquest estat a la interfície de moderació",
   "status.block": "Block @{name}",
   "status.cancel_reblog_private": "Desfer l'impuls",
   "status.cannot_reblog": "Aquesta publicació no pot ser retootejada",
diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json
index 0277a513b..496f13e7d 100644
--- a/app/javascript/mastodon/locales/co.json
+++ b/app/javascript/mastodon/locales/co.json
@@ -292,8 +292,8 @@
   "search_results.statuses": "Statuti",
   "search_results.total": "{count, number} {count, plural, one {risultatu} other {risultati}}",
   "standalone.public_title": "Una vista à l'internu...",
-  "status.admin_account": "Open moderation interface for @{name}",
-  "status.admin_status": "Open this status in the moderation interface",
+  "status.admin_account": "Apre l'interfaccia di muderazione per @{name}",
+  "status.admin_status": "Apre stu statutu in l'interfaccia di muderazione",
   "status.block": "Bluccà @{name}",
   "status.cancel_reblog_private": "Ùn sparte più",
   "status.cannot_reblog": "Stu statutu ùn pò micca esse spartutu",
diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json
index 31c21cce5..7e8d7b8d3 100644
--- a/app/javascript/mastodon/locales/cs.json
+++ b/app/javascript/mastodon/locales/cs.json
@@ -292,8 +292,8 @@
   "search_results.statuses": "Tooty",
   "search_results.total": "{count, number} {count, plural, one {výsledek} few {výsledky} many {výsledku} other {výsledků}}",
   "standalone.public_title": "Nahlédněte dovnitř...",
-  "status.admin_account": "Open moderation interface for @{name}",
-  "status.admin_status": "Open this status in the moderation interface",
+  "status.admin_account": "Otevřít moderační rozhraní pro uživatele @{name}",
+  "status.admin_status": "Otevřít tento příspěvek v moderačním rozhraní",
   "status.block": "Zablokovat uživatele @{name}",
   "status.cancel_reblog_private": "Zrušit boost",
   "status.cannot_reblog": "Tento příspěvek nemůže být boostnutý",
diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json
index a25497f78..471b70439 100644
--- a/app/javascript/mastodon/locales/cy.json
+++ b/app/javascript/mastodon/locales/cy.json
@@ -139,29 +139,29 @@
   "getting_started.open_source_notice": "Mae Mastodon yn feddalwedd côd agored. Mae modd cyfrannu neu adrodd materion ar GitHUb ar {github}.",
   "getting_started.security": "Diogelwch",
   "getting_started.terms": "Telerau Gwasanaeth",
-  "hashtag.column_header.tag_mode.all": "and {additional}",
-  "hashtag.column_header.tag_mode.any": "or {additional}",
-  "hashtag.column_header.tag_mode.none": "without {additional}",
-  "hashtag.column_settings.tag_mode.all": "All of these",
-  "hashtag.column_settings.tag_mode.any": "Any of these",
-  "hashtag.column_settings.tag_mode.none": "None of these",
+  "hashtag.column_header.tag_mode.all": "a {additional}",
+  "hashtag.column_header.tag_mode.any": "neu {additional}",
+  "hashtag.column_header.tag_mode.none": "heb {additional}",
+  "hashtag.column_settings.tag_mode.all": "Pob un o'r rhain",
+  "hashtag.column_settings.tag_mode.any": "Unrhyw un o'r rhain",
+  "hashtag.column_settings.tag_mode.none": "Dim o'r rhain",
   "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
   "home.column_settings.basic": "Syml",
   "home.column_settings.show_reblogs": "Dangos bŵstiau",
   "home.column_settings.show_replies": "Dangos ymatebion",
-  "introduction.federation.action": "Next",
-  "introduction.federation.federated.headline": "Federated",
+  "introduction.federation.action": "Nesaf",
+  "introduction.federation.federated.headline": "Ffederasiwn",
   "introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.",
   "introduction.federation.home.headline": "Home",
   "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
   "introduction.federation.local.headline": "Local",
   "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
   "introduction.interactions.action": "Finish tutorial!",
-  "introduction.interactions.favourite.headline": "Favourite",
+  "introduction.interactions.favourite.headline": "Ffefryn",
   "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
-  "introduction.interactions.reblog.headline": "Boost",
+  "introduction.interactions.reblog.headline": "Hwb",
   "introduction.interactions.reblog.text": "You can share other people's toots with your followers by boosting them.",
-  "introduction.interactions.reply.headline": "Reply",
+  "introduction.interactions.reply.headline": "Ateb",
   "introduction.interactions.reply.text": "You can reply to other people's and your own toots, which will chain them together in a conversation.",
   "introduction.welcome.action": "Let's go!",
   "introduction.welcome.headline": "First steps",
@@ -244,17 +244,17 @@
   "notifications.column_settings.favourite": "Ffefrynnau:",
   "notifications.column_settings.filter_bar.advanced": "Display all categories",
   "notifications.column_settings.filter_bar.category": "Quick filter bar",
-  "notifications.column_settings.filter_bar.show": "Show",
+  "notifications.column_settings.filter_bar.show": "Dangos",
   "notifications.column_settings.follow": "Dilynwyr newydd:",
   "notifications.column_settings.mention": "Crybwylliadau:",
   "notifications.column_settings.push": "Hysbysiadau push",
-  "notifications.column_settings.reblog": "Boosts:",
+  "notifications.column_settings.reblog": "Hybiadau:",
   "notifications.column_settings.show": "Dangos yn y golofn",
   "notifications.column_settings.sound": "Chwarae sain",
-  "notifications.filter.all": "All",
-  "notifications.filter.boosts": "Boosts",
-  "notifications.filter.favourites": "Favourites",
-  "notifications.filter.follows": "Follows",
+  "notifications.filter.all": "Pob",
+  "notifications.filter.boosts": "Hybiadau",
+  "notifications.filter.favourites": "Ffefrynnau",
+  "notifications.filter.follows": "Yn dilyn",
   "notifications.filter.mentions": "Mentions",
   "notifications.group": "{count} o hysbysiadau",
   "privacy.change": "Addasu preifatrwdd y statws",
@@ -302,7 +302,7 @@
   "status.direct": "Neges breifat @{name}",
   "status.embed": "Plannu",
   "status.favourite": "Hoffi",
-  "status.filtered": "Filtered",
+  "status.filtered": "Wedi'i hidlo",
   "status.load_more": "Llwythwch mwy",
   "status.media_hidden": "Cyfryngau wedi'u cuddio",
   "status.mention": "Crybwyll @{name}",
@@ -328,12 +328,12 @@
   "status.show_less_all": "Dangos llai i bawb",
   "status.show_more": "Dangos mwy",
   "status.show_more_all": "Dangos mwy i bawb",
-  "status.show_thread": "Show thread",
+  "status.show_thread": "Dangos edefyn",
   "status.unmute_conversation": "Dad-dawelu sgwrs",
   "status.unpin": "Dadbinio o'r proffil",
   "suggestions.dismiss": "Dismiss suggestion",
   "suggestions.header": "You might be interested in…",
-  "tabs_bar.federated_timeline": "Wedi'i ffedereiddio",
+  "tabs_bar.federated_timeline": "Ffederasiwn",
   "tabs_bar.home": "Hafan",
   "tabs_bar.local_timeline": "Lleol",
   "tabs_bar.notifications": "Hysbysiadau",
@@ -343,7 +343,7 @@
   "upload_area.title": "Llusgwch & gollwing i uwchlwytho",
   "upload_button.label": "Ychwanegwch gyfryngau (JPEG, PNG, GIF, WebM, MP4, MOV)",
   "upload_form.description": "Disgrifio i'r rheini a nam ar ei golwg",
-  "upload_form.focus": "Cropio",
+  "upload_form.focus": "Newid rhagolwg",
   "upload_form.undo": "Dileu",
   "upload_progress.label": "Uwchlwytho...",
   "video.close": "Cau fideo",
diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json
index 7d5f0348a..69a139c57 100644
--- a/app/javascript/mastodon/locales/de.json
+++ b/app/javascript/mastodon/locales/de.json
@@ -160,7 +160,7 @@
   "introduction.interactions.favourite.headline": "Favorisieren",
   "introduction.interactions.favourite.text": "Du kannst einen Beitrag für später speichern und dem Autor wissen lassen, dass du ihn magst, indem du ihn favorisierst.",
   "introduction.interactions.reblog.headline": "Teilen",
-  "introduction.interactions.reblog.text": "Du kannst Beiträge von anderen Leuten an deine Follower teilen (oder auch \"boosten\").",
+  "introduction.interactions.reblog.text": "Du kannst Beiträge von anderen Leuten an deine Follower teilen.",
   "introduction.interactions.reply.headline": "Antworten",
   "introduction.interactions.reply.text": "Du kannst auf die Beiträge von anderen Leuten antworten und die Beiträge werden dann in eine Konversation zusammengebunden.",
   "introduction.welcome.action": "Lasst uns loslegen!",
@@ -168,7 +168,7 @@
   "introduction.welcome.text": "Willkommen im Fediverse! In wenigen Momenten wirst du in der Lage sein Nachrichten zu versenden und mit deinen Freunden über Server hinweg in Kontakt zu treten. Aber dieser Server, {domain}, ist sehr speziell — er hostet dein Profil, also merke dir den Namen.",
   "keyboard_shortcuts.back": "zurück navigieren",
   "keyboard_shortcuts.blocked": "Liste blockierter Profile öffnen",
-  "keyboard_shortcuts.boost": "boosten",
+  "keyboard_shortcuts.boost": "teilen",
   "keyboard_shortcuts.column": "einen Status in einer der Spalten fokussieren",
   "keyboard_shortcuts.compose": "fokussiere das Eingabefeld",
   "keyboard_shortcuts.description": "Beschreibung",
@@ -252,9 +252,9 @@
   "notifications.column_settings.show": "In der Spalte anzeigen",
   "notifications.column_settings.sound": "Ton abspielen",
   "notifications.filter.all": "Alle",
-  "notifications.filter.boosts": "Boosts",
+  "notifications.filter.boosts": "Erneut geteilte Beiträge",
   "notifications.filter.favourites": "Favoriten",
-  "notifications.filter.follows": "Follows",
+  "notifications.filter.follows": "Folgende",
   "notifications.filter.mentions": "Erwähnungen",
   "notifications.group": "{count} Benachrichtigungen",
   "privacy.change": "Sichtbarkeit des Beitrags anpassen",
@@ -292,8 +292,8 @@
   "search_results.statuses": "Beiträge",
   "search_results.total": "{count, number} {count, plural, one {Ergebnis} other {Ergebnisse}}",
   "standalone.public_title": "Ein kleiner Einblick …",
-  "status.admin_account": "Open moderation interface for @{name}",
-  "status.admin_status": "Open this status in the moderation interface",
+  "status.admin_account": "Öffne Moderationsoberfläche für @{name}",
+  "status.admin_status": "Öffne diesen Status in der Moderationsoberfläche",
   "status.block": "Blockiere @{name}",
   "status.cancel_reblog_private": "Nicht mehr teilen",
   "status.cannot_reblog": "Dieser Beitrag kann nicht geteilt werden",
diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json
index 35e41d7bb..762896887 100644
--- a/app/javascript/mastodon/locales/fr.json
+++ b/app/javascript/mastodon/locales/fr.json
@@ -292,8 +292,8 @@
   "search_results.statuses": "Pouets",
   "search_results.total": "{count, number} {count, plural, one {résultat} other {résultats}}",
   "standalone.public_title": "Un aperçu …",
-  "status.admin_account": "Open moderation interface for @{name}",
-  "status.admin_status": "Open this status in the moderation interface",
+  "status.admin_account": "Ouvrir l'interface de modération pour @{name}",
+  "status.admin_status": "Ouvrir ce statut dans l'interface de modération",
   "status.block": "Block @{name}",
   "status.cancel_reblog_private": "Dé-booster",
   "status.cannot_reblog": "Cette publication ne peut être boostée",
diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json
index 23bbed74d..c1ece163d 100644
--- a/app/javascript/mastodon/locales/gl.json
+++ b/app/javascript/mastodon/locales/gl.json
@@ -132,7 +132,7 @@
   "follow_request.authorize": "Autorizar",
   "follow_request.reject": "Rexeitar",
   "getting_started.developers": "Desenvolvedoras",
-  "getting_started.directory": "Profile directory",
+  "getting_started.directory": "Directorio do perfil",
   "getting_started.documentation": "Documentation",
   "getting_started.heading": "Comezando",
   "getting_started.invite": "Convide a xente",
@@ -292,8 +292,8 @@
   "search_results.statuses": "Toots",
   "search_results.total": "{count, number} {count,plural,one {result} outros {results}}",
   "standalone.public_title": "Ollada dentro...",
-  "status.admin_account": "Open moderation interface for @{name}",
-  "status.admin_status": "Open this status in the moderation interface",
+  "status.admin_account": "Abrir interface de moderación para @{name}",
+  "status.admin_status": "Abrir este estado na interface de moderación",
   "status.block": "Block @{name}",
   "status.cancel_reblog_private": "Non promover",
   "status.cannot_reblog": "Esta mensaxe non pode ser promovida",
diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json
index 7ddd95f60..6f7d5cf7e 100644
--- a/app/javascript/mastodon/locales/ja.json
+++ b/app/javascript/mastodon/locales/ja.json
@@ -136,7 +136,7 @@
   "follow_request.authorize": "許可",
   "follow_request.reject": "拒否",
   "getting_started.developers": "開発",
-  "getting_started.directory": "Profile directory",
+  "getting_started.directory": "ディレクトリ",
   "getting_started.documentation": "ドキュメント",
   "getting_started.heading": "スタート",
   "getting_started.invite": "招待",
@@ -262,7 +262,7 @@
   "notifications.filter.follows": "フォロー",
   "notifications.filter.mentions": "返信",
   "notifications.group": "{count} 件の通知",
-  "privacy.change": "投稿のプライバシーを変更",
+  "privacy.change": "公開範囲を変更",
   "privacy.direct.long": "メンションしたユーザーだけに公開",
   "privacy.direct.short": "ダイレクト",
   "privacy.private.long": "フォロワーだけに公開",
@@ -297,8 +297,8 @@
   "search_results.statuses": "トゥート",
   "search_results.total": "{count, number}件の結果",
   "standalone.public_title": "今こんな話をしています...",
-  "status.admin_account": "Open moderation interface for @{name}",
-  "status.admin_status": "Open this status in the moderation interface",
+  "status.admin_account": "@{name} のモデレーション画面を開く",
+  "status.admin_status": "この投稿をモデレーション画面で開く",
   "status.block": "@{name}さんをブロック",
   "status.cancel_reblog_private": "ブースト解除",
   "status.cannot_reblog": "この投稿はブーストできません",
diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json
index 0d707afb1..ceb474a3e 100644
--- a/app/javascript/mastodon/locales/ko.json
+++ b/app/javascript/mastodon/locales/ko.json
@@ -292,8 +292,8 @@
   "search_results.statuses": "툿",
   "search_results.total": "{count, number}건의 결과",
   "standalone.public_title": "지금 이런 이야기를 하고 있습니다…",
-  "status.admin_account": "Open moderation interface for @{name}",
-  "status.admin_status": "Open this status in the moderation interface",
+  "status.admin_account": "@{name}에 대한 모더레이션 인터페이스 열기",
+  "status.admin_status": "모더레이션 인터페이스에서 이 게시물 열기",
   "status.block": "@{name} 차단",
   "status.cancel_reblog_private": "부스트 취소",
   "status.cannot_reblog": "이 포스트는 부스트 할 수 없습니다",
diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json
index e5f7b0bdf..871142195 100644
--- a/app/javascript/mastodon/locales/nl.json
+++ b/app/javascript/mastodon/locales/nl.json
@@ -118,8 +118,8 @@
   "empty_column.community": "De lokale tijdlijn is nog leeg. Toot iets in het openbaar om de bal aan het rollen te krijgen!",
   "empty_column.direct": "Je hebt nog geen directe berichten. Wanneer je er een verzend of ontvangt, zijn deze hier te zien.",
   "empty_column.domain_blocks": "Er zijn nog geen genegeerde domeinen.",
-  "empty_column.favourited_statuses": "Jij hebt nog geen favoriete toots. Wanneer je er een als favoriet markeert, valt deze hier te zien.",
-  "empty_column.favourites": "Niemand heeft nog deze toot als favoriet gemarkeerd. Wanneer iemand dit doet, valt dat hier te zien.",
+  "empty_column.favourited_statuses": "Jij hebt nog geen favoriete toots. Wanneer je er een aan jouw favorieten toevoegt, valt deze hier te zien.",
+  "empty_column.favourites": "Niemand heeft deze toot nog aan hun favorieten toegevoegd. Wanneer iemand dit doet, valt dat hier te zien.",
   "empty_column.follow_requests": "Jij hebt nog enkel volgverzoek ontvangen. Wanneer je er eentje ontvangt, valt dat hier te zien.",
   "empty_column.hashtag": "Er is nog niks te vinden onder deze hashtag.",
   "empty_column.home": "Jij volgt nog niemand. Bezoek {public} of gebruik het zoekvenster om andere mensen te ontmoeten.",
@@ -158,7 +158,7 @@
   "introduction.federation.local.text": "Openbare toots van mensen die ook op jouw server zitten verschijnen op de lokale tijdlijn.",
   "introduction.interactions.action": "Introductie beëindigen!",
   "introduction.interactions.favourite.headline": "Favorieten",
-  "introduction.interactions.favourite.text": "Je kunt door een toot als favoriet te markeren, deze voor later bewaren en de auteur laten weten dat je het leuk vond.",
+  "introduction.interactions.favourite.text": "Je kunt door een toot aan jouw favorieten toe te voegen, deze voor later bewaren en de auteur laten weten dat je de toot leuk vind.",
   "introduction.interactions.reblog.headline": "Boost",
   "introduction.interactions.reblog.text": "Je kunt toots van andere mensen met jouw volgers delen door deze te boosten.",
   "introduction.interactions.reply.headline": "Reageren",
@@ -175,7 +175,7 @@
   "keyboard_shortcuts.direct": "om jouw directe berichten te tonen",
   "keyboard_shortcuts.down": "om naar beneden door de lijst te bewegen",
   "keyboard_shortcuts.enter": "om toot volledig te tonen",
-  "keyboard_shortcuts.favourite": "om als favoriet te markeren",
+  "keyboard_shortcuts.favourite": "om aan jouw favorieten toe te voegen",
   "keyboard_shortcuts.favourites": "om jouw lijst met favorieten te tonen",
   "keyboard_shortcuts.federated": "om de globale tijdlijn te tonen",
   "keyboard_shortcuts.heading": "Sneltoetsen",
@@ -234,7 +234,7 @@
   "navigation_bar.preferences": "Instellingen",
   "navigation_bar.public_timeline": "Globale tijdlijn",
   "navigation_bar.security": "Beveiliging",
-  "notification.favourite": "{name} markeerde jouw toot als favoriet",
+  "notification.favourite": "{name} voegde jouw toot als favoriet toe",
   "notification.follow": "{name} volgt jou nu",
   "notification.mention": "{name} vermeldde jou",
   "notification.reblog": "{name} boostte jouw toot",
@@ -292,8 +292,8 @@
   "search_results.statuses": "Toots",
   "search_results.total": "{count, number} {count, plural, one {resultaat} other {resultaten}}",
   "standalone.public_title": "Een kijkje binnenin...",
-  "status.admin_account": "Open moderation interface for @{name}",
-  "status.admin_status": "Open this status in the moderation interface",
+  "status.admin_account": "Moderatie-omgeving van @{name} openen",
+  "status.admin_status": "Deze toot in de moderatie-omgeving openen",
   "status.block": "Blokkeer @{name}",
   "status.cancel_reblog_private": "Niet langer boosten",
   "status.cannot_reblog": "Deze toot kan niet geboost worden",
@@ -331,7 +331,7 @@
   "status.show_thread": "Gesprek tonen",
   "status.unmute_conversation": "Gesprek niet langer negeren",
   "status.unpin": "Van profielpagina losmaken",
-  "suggestions.dismiss": "Suggestie verwerpen",
+  "suggestions.dismiss": "Voorstel verwerpen",
   "suggestions.header": "Je bent waarschijnlijk ook geïnteresseerd in…",
   "tabs_bar.federated_timeline": "Globaal",
   "tabs_bar.home": "Start",
diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json
index 87fbf54c3..c28e9f5b8 100644
--- a/app/javascript/mastodon/locales/oc.json
+++ b/app/javascript/mastodon/locales/oc.json
@@ -292,8 +292,8 @@
   "search_results.statuses": "Tuts",
   "search_results.total": "{count, number} {count, plural, one {resultat} other {resultats}}",
   "standalone.public_title": "Una ulhada dedins…",
-  "status.admin_account": "Open moderation interface for @{name}",
-  "status.admin_status": "Open this status in the moderation interface",
+  "status.admin_account": "Dobrir l’interfàcia de moderacion per @{name}",
+  "status.admin_status": "Dobrir aqueste estatut dins l’interfàcia de moderacion",
   "status.block": "Blocar @{name}",
   "status.cancel_reblog_private": "Quitar de partejar",
   "status.cannot_reblog": "Aqueste estatut pòt pas èsser partejat",
diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json
index 6a1b8a0c6..9f78c430f 100644
--- a/app/javascript/mastodon/locales/pl.json
+++ b/app/javascript/mastodon/locales/pl.json
@@ -1,5 +1,5 @@
 {
-  "account.add_or_remove_from_list": "Add or Remove from lists",
+  "account.add_or_remove_from_list": "Dodaj lub usuń z list",
   "account.badges.bot": "Bot",
   "account.block": "Blokuj @{name}",
   "account.block_domain": "Blokuj wszystko z {domain}",
@@ -117,7 +117,7 @@
   "emoji_button.search_results": "Wyniki wyszukiwania",
   "emoji_button.symbols": "Symbole",
   "emoji_button.travel": "Podróże i miejsca",
-  "empty_column.account_timeline": "No toots here!",
+  "empty_column.account_timeline": "Brak wpisów tutaj!",
   "empty_column.blocks": "Nie zablokowałeś(-aś) jeszcze żadnego użytkownika.",
   "empty_column.community": "Lokalna oś czasu jest pusta. Napisz coś publicznie, aby zagaić!",
   "empty_column.direct": "Nie masz żadnych wiadomości bezpośrednich. Kiedy dostaniesz lub wyślesz jakąś, pojawi się ona tutaj.",
@@ -136,19 +136,19 @@
   "follow_request.authorize": "Autoryzuj",
   "follow_request.reject": "Odrzuć",
   "getting_started.developers": "Dla programistów",
-  "getting_started.directory": "Profile directory",
+  "getting_started.directory": "Katalog profilów",
   "getting_started.documentation": "Dokumentacja",
   "getting_started.heading": "Rozpocznij",
   "getting_started.invite": "Zaproś znajomych",
   "getting_started.open_source_notice": "Mastodon jest oprogramowaniem o otwartym źródle. Możesz pomóc w rozwoju lub zgłaszać błędy na GitHubie tutaj: {github}.",
   "getting_started.security": "Bezpieczeństwo",
   "getting_started.terms": "Zasady użytkowania",
-  "hashtag.column_header.tag_mode.all": "and {additional}",
-  "hashtag.column_header.tag_mode.any": "or {additional}",
-  "hashtag.column_header.tag_mode.none": "without {additional}",
-  "hashtag.column_settings.tag_mode.all": "All of these",
-  "hashtag.column_settings.tag_mode.any": "Any of these",
-  "hashtag.column_settings.tag_mode.none": "None of these",
+  "hashtag.column_header.tag_mode.all": "i {additional}",
+  "hashtag.column_header.tag_mode.any": "lub {additional}",
+  "hashtag.column_header.tag_mode.none": "bez {additional}",
+  "hashtag.column_settings.tag_mode.all": "Wszystkie",
+  "hashtag.column_settings.tag_mode.any": "Dowolne",
+  "hashtag.column_settings.tag_mode.none": "Żadne",
   "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
   "home.column_settings.basic": "Podstawowe",
   "home.column_settings.show_reblogs": "Pokazuj podbicia",
@@ -297,8 +297,8 @@
   "search_results.statuses": "Wpisy",
   "search_results.total": "{count, number} {count, plural, one {wynik} few {wyniki} many {wyników} more {wyników}}",
   "standalone.public_title": "Spojrzenie w głąb…",
-  "status.admin_account": "Open moderation interface for @{name}",
-  "status.admin_status": "Open this status in the moderation interface",
+  "status.admin_account": "Otwórz interfejs moderacyjny dla @{name}",
+  "status.admin_status": "Otwórz ten wpis w interfejsie moderacyjnym",
   "status.block": "Zablokuj @{name}",
   "status.cancel_reblog_private": "Cofnij podbicie",
   "status.cannot_reblog": "Ten wpis nie może zostać podbity",
@@ -333,11 +333,11 @@
   "status.show_less_all": "Zwiń wszystkie",
   "status.show_more": "Rozwiń",
   "status.show_more_all": "Rozwiń wszystkie",
-  "status.show_thread": "Show thread",
+  "status.show_thread": "Pokaż wątek",
   "status.unmute_conversation": "Cofnij wyciszenie konwersacji",
   "status.unpin": "Odepnij z profilu",
-  "suggestions.dismiss": "Dismiss suggestion",
-  "suggestions.header": "You might be interested in…",
+  "suggestions.dismiss": "Odrzuć sugestię",
+  "suggestions.header": "Może Cię zainteresować…",
   "tabs_bar.federated_timeline": "Globalne",
   "tabs_bar.home": "Strona główna",
   "tabs_bar.local_timeline": "Lokalne",
diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json
index b0555bd0c..392e7f485 100644
--- a/app/javascript/mastodon/locales/pt-BR.json
+++ b/app/javascript/mastodon/locales/pt-BR.json
@@ -292,8 +292,8 @@
   "search_results.statuses": "Toots",
   "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}",
   "standalone.public_title": "Dê uma espiada...",
-  "status.admin_account": "Open moderation interface for @{name}",
-  "status.admin_status": "Open this status in the moderation interface",
+  "status.admin_account": "Abrir interface de moderação para @{name}",
+  "status.admin_status": "Abrir esse status na interface de moderação",
   "status.block": "Block @{name}",
   "status.cancel_reblog_private": "Desfazer compartilhamento",
   "status.cannot_reblog": "Esta postagem não pode ser compartilhada",
diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json
index d874ed0aa..91ecbbce7 100644
--- a/app/javascript/mastodon/locales/sk.json
+++ b/app/javascript/mastodon/locales/sk.json
@@ -24,8 +24,8 @@
   "account.mute": "Ignorovať @{name}",
   "account.mute_notifications": "Stĺmiť oboznámenia od @{name}",
   "account.muted": "Utíšený/á",
-  "account.posts": "Hlášky",
-  "account.posts_with_replies": "Hlášky s odpoveďami",
+  "account.posts": "Príspevky",
+  "account.posts_with_replies": "Príspevky aj s odpoveďami",
   "account.report": "Nahlás @{name}",
   "account.requested": "Čaká na schválenie. Kliknite pre zrušenie žiadosti",
   "account.share": "Zdieľať @{name} profil",
@@ -56,7 +56,7 @@
   "column.lists": "Zoznamy",
   "column.mutes": "Ignorovaní užívatelia",
   "column.notifications": "Oboznámenia",
-  "column.pins": "Pripnuté hlášky",
+  "column.pins": "Pripnuté príspevky",
   "column.public": "Federovaná časová os",
   "column_back_button.label": "Späť",
   "column_header.hide_settings": "Skryť nastavenia",
@@ -203,8 +203,8 @@
   "lists.account.add": "Pridať do zoznamu",
   "lists.account.remove": "Odobrať zo zoznamu",
   "lists.delete": "Vymazať list",
-  "lists.edit": "Upraviť zoznam",
-  "lists.new.create": "Pridať zoznam",
+  "lists.edit": "Uprav zoznam",
+  "lists.new.create": "Pridaj zoznam",
   "lists.new.title_placeholder": "Názov nového zoznamu",
   "lists.search": "Vyhľadávajte medzi užívateľmi ktorých sledujete",
   "lists.subheading": "Tvoje zoznamy",
@@ -220,7 +220,7 @@
   "navigation_bar.direct": "Súkromné správy",
   "navigation_bar.discover": "Objavuj",
   "navigation_bar.domain_blocks": "Skryté domény",
-  "navigation_bar.edit_profile": "Upraviť profil",
+  "navigation_bar.edit_profile": "Uprav profil",
   "navigation_bar.favourites": "Obľúbené",
   "navigation_bar.filters": "Utĺmené slová",
   "navigation_bar.follow_requests": "Žiadosti o sledovanie",
@@ -289,11 +289,11 @@
   "search_popout.tips.user": "používateľ",
   "search_results.accounts": "Ľudia",
   "search_results.hashtags": "Haštagy",
-  "search_results.statuses": "Hlášky",
+  "search_results.statuses": "Príspevky",
   "search_results.total": "{count, number} {count, plural, one {výsledok} many {výsledkov} other {výsledky}}",
   "standalone.public_title": "Náhľad dovnútra...",
-  "status.admin_account": "Open moderation interface for @{name}",
-  "status.admin_status": "Open this status in the moderation interface",
+  "status.admin_account": "Otvor moderovacie rozhranie užívateľa @{name}",
+  "status.admin_status": "Otvor tento príspevok v moderovacom rozhraní",
   "status.block": "Blokovať @{name}",
   "status.cancel_reblog_private": "Nezdieľaj",
   "status.cannot_reblog": "Tento príspevok nemôže byť re-tootnutý",
diff --git a/app/javascript/styles/mastodon/about.scss b/app/javascript/styles/mastodon/about.scss
index 4023b34d8..47ac9265b 100644
--- a/app/javascript/styles/mastodon/about.scss
+++ b/app/javascript/styles/mastodon/about.scss
@@ -1041,10 +1041,6 @@ $small-breakpoint: 960px;
 
     .scrollable {
       height: 400px;
-
-      @media screen and (max-width: $column-breakpoint) {
-        height: 90vh;
-      }
     }
 
     p {
@@ -1271,8 +1267,7 @@ $small-breakpoint: 960px;
       }
 
       #mastodon-timeline {
-        display: block;
-        width: 100vw;
+        display: flex;
         height: 100vh;
         border-radius: 0;
       }
diff --git a/app/services/fetch_oembed_service.rb b/app/services/fetch_oembed_service.rb
index 9ddf9b13b..10176cfb9 100644
--- a/app/services/fetch_oembed_service.rb
+++ b/app/services/fetch_oembed_service.rb
@@ -43,7 +43,7 @@ class FetchOEmbedService
       res.code != 200 ? nil : res.body_with_limit
     end
 
-    validate(parse_for_format(body)) unless body.nil?
+    validate(parse_for_format(body)) if body.present?
   rescue Oj::ParseError, Ox::ParseError
     nil
   end
diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb
index 3e4c9a79d..cd9bacf68 100644
--- a/config/initializers/devise.rb
+++ b/config/initializers/devise.rb
@@ -10,7 +10,6 @@ Warden::Manager.after_set_user except: :fetch do |user, warden|
     expires: 1.year.from_now,
     httponly: true,
     secure: (Rails.env.production? || ENV['LOCAL_HTTPS'] == 'true'),
-    same_site: :lax,
   }
 end
 
@@ -21,7 +20,6 @@ Warden::Manager.after_fetch do |user, warden|
       expires: 1.year.from_now,
       httponly: true,
       secure: (Rails.env.production? || ENV['LOCAL_HTTPS'] == 'true'),
-      same_site: :lax,
     }
   else
     warden.logout
diff --git a/config/initializers/session_store.rb b/config/initializers/session_store.rb
index c0757b6b5..3dc0edd6f 100644
--- a/config/initializers/session_store.rb
+++ b/config/initializers/session_store.rb
@@ -1,3 +1,3 @@
 # Be sure to restart your server when you modify this file.
 
-Rails.application.config.session_store :cookie_store, key: '_mastodon_session', secure: (Rails.env.production? || ENV['LOCAL_HTTPS'] == 'true'), same_site: :lax
+Rails.application.config.session_store :cookie_store, key: '_mastodon_session', secure: (Rails.env.production? || ENV['LOCAL_HTTPS'] == 'true')
diff --git a/config/locales/ar.yml b/config/locales/ar.yml
index 07bcfbf12..9d0d8d063 100644
--- a/config/locales/ar.yml
+++ b/config/locales/ar.yml
@@ -151,7 +151,7 @@ ar:
       protocol: البروتوكول
       public: عمومي
       push_subscription_expires: انتهاء الاشتراك ”PuSH“
-      redownload: تحديث الصورة الرمزية
+      redownload: تحديث الصفحة الشخصية
       remove_avatar: حذف الصورة الرمزية
       remove_header: حذف الرأسية
       resend_confirmation:
@@ -172,14 +172,14 @@ ar:
       shared_inbox_url: رابط الصندوق المُشترَك للبريد الوارد
       show:
         created_reports: البلاغات التي أنشأها هذا الحساب
-        targeted_reports: الشكاوي التي أُنشِأت ضد هذا الحساب
+        targeted_reports: الشكاوي التي أُنشِأت مِن طرف الآخَرين
       silence: كتم
       silenced: تم كتمه
       statuses: المنشورات
       subscribe: اشترك
       suspended: تم تعليقه
       title: الحسابات
-      unconfirmed_email: البريد الإلكتروني غير المؤكد
+      unconfirmed_email: البريد الإلكتروني غير مؤكد
       undo_silenced: رفع الصمت
       undo_suspension: إلغاء تعليق الحساب
       unsubscribe: إلغاء الاشتراك
@@ -266,7 +266,7 @@ ar:
       week_users_active: نشط هذا الأسبوع
       week_users_new: مستخدِمين هذا الأسبوع
     domain_blocks:
-      add_new: إضافة نطاق جديد
+      add_new: إضافة حجب جديد لنطاق
       created_msg: إنّ حجب النطاق حيز التشغيل
       destroyed_msg: تم إلغاء الحجب المفروض على النطاق
       domain: النطاق
@@ -295,7 +295,7 @@ ar:
           suspend: إلغاء التعليق المفروض على كافة حسابات هذا النطاق
         title: رفع حظر النطاق عن %{domain}
         undo: إلغاء
-      undo: إلغاء
+      undo: إلغاء حجب النطاق
     email_domain_blocks:
       add_new: إضافة
       created_msg: لقد دخل حظر نطاق البريد الإلكتروني حيّز الخدمة
@@ -309,7 +309,7 @@ ar:
     followers:
       back_to_account: العودة إلى الحساب
     instances:
-      title: مثيلات الخوادم المعروفة
+      title: الفديرالية
     invites:
       deactivate_all: تعطيلها كافة
       filter:
diff --git a/config/locales/ca.yml b/config/locales/ca.yml
index 6c258361c..f0c28590a 100644
--- a/config/locales/ca.yml
+++ b/config/locales/ca.yml
@@ -86,12 +86,13 @@ ca:
         changed_msg: El correu electrònic del compte s'ha canviat correctament!
         current_email: Correu electrònic actual
         label: Canviar l'adreça de correu
-        new_email: Nou correu
+        new_email: Nova adreça de correu
         submit: Canviar adreça de correu
         title: Canviar adreça de correu de %{username}
       confirm: Confirma
       confirmed: Confirmat
       confirming: Confirmant
+      deleted: Esborrats
       demote: Degrada
       disable: Inhabilita
       disable_two_factor_authentication: Desactiva 2FA
@@ -110,7 +111,9 @@ ca:
       follows: Segueix
       header: Capçalera
       inbox_url: URL de la safata d'entrada
+      invited_by: Convidat per
       ip: IP
+      joined: Unit
       location:
         all: Tot
         local: Local
@@ -137,7 +140,7 @@ ca:
       protocol: Protocol
       public: Públic
       push_subscription_expires: La subscripció PuSH expira
-      redownload: Actualitza l'avatar
+      redownload: Actualitza el perfil
       remove_avatar: Eliminar avatar
       remove_header: Treu la capçalera
       resend_confirmation:
@@ -157,8 +160,8 @@ ca:
       search: Cerca
       shared_inbox_url: URL de la safata d'entrada compartida
       show:
-        created_reports: Informes creats per aquest compte
-        targeted_reports: Informes realitzats sobre aquest compte
+        created_reports: Informes creats
+        targeted_reports: Informes realitzats per altres
       silence: Silenci
       silenced: Silenciat
       statuses: Estats
@@ -170,6 +173,7 @@ ca:
       undo_suspension: Desfés la suspensió
       unsubscribe: Cancel·la la subscripció
       username: Nom d'usuari
+      warn: Avís
       web: Web
     action_logs:
       actions:
@@ -253,7 +257,7 @@ ca:
       week_users_active: usuaris actius aquesta setmana
       week_users_new: nous usuaris aquest setmana
     domain_blocks:
-      add_new: Afegeix
+      add_new: Afegir nou bloqueig de domini
       created_msg: El bloqueig de domini ara s'està processant
       destroyed_msg: El bloqueig de domini s'ha desfet
       domain: Domini
@@ -270,6 +274,11 @@ ca:
       reject_media_hint: Elimina els fitxers multimèdia emmagatzemats localment i impedeix baixar-ne cap en el futur. Irrellevant en les suspensions
       reject_reports: Rebutja informes
       reject_reports_hint: Ignora tots els informes procedents d'aquest domini. No és rellevant per a les suspensions
+      rejecting_media: rebutjant els fitxers multimèdia
+      rejecting_reports: rebutjant els informes
+      severity:
+        silence: silenciat
+        suspend: suspès
       show:
         affected_accounts:
           one: Un compte afectat en la base de dades
@@ -279,7 +288,7 @@ ca:
           suspend: Desfés la suspensió de tots els comptes d'aquest domini
         title: Desfés el bloqueig de domini de %{domain}
         undo: Desfés
-      undo: Desfés
+      undo: Desfés el bloqueig del domini
     email_domain_blocks:
       add_new: Afegeix
       created_msg: S'ha creat el bloc de domini de correu electrònic
@@ -294,7 +303,20 @@ ca:
       back_to_account: Tornar al compte
       title: Seguidors de %{acct}
     instances:
-      title: Instàncies conegudes
+      delivery_available: El lliurament està disponible
+      known_accounts:
+        one: "%{count} compte conegut"
+        other: "%{count} comptes coneguts"
+      moderation:
+        all: Totes
+        limited: Limitades
+        title: Moderació
+      title: Federació
+      total_blocked_by_us: Bloquejades per nosaltres
+      total_followed_by_them: Seguides per ells
+      total_followed_by_us: Seguides per nosaltres
+      total_reported: Informes sobre elles
+      total_storage: Adjunts multimèdia
     invites:
       deactivate_all: Desactiva-ho tot
       filter:
@@ -559,7 +581,9 @@ ca:
       size: Tamany
     blocks: Persones que has blocat
     csv: CSV
+    domain_blocks: Bloquejos de dominis
     follows: Persones que segueixes
+    lists: Llistes
     mutes: Persones silenciades
     storage: Emmagatzematge
   filters:
@@ -708,10 +732,25 @@ ca:
     no_account_html: No tens cap compte? Pots <a href='%{sign_up_path}' target='_blank'>registrar-te aquí</a>
     proceed: Comença a seguir
     prompt: 'Seguiràs a:'
+    reason_html: "<strong>Per què és necessari aquest pas?</strong> <code>%{instance}</code> pot ser que no sigui el servidor on estàs registrat per tant primer hem de redirigir-te al teu servidor."
+  remote_interaction:
+    favourite:
+      proceed: Procedir a afavorir
+      prompt: 'Vols marcar com a favorit aquest toot:'
+    reblog:
+      proceed: Procedir a impulsar
+      prompt: 'Vols impulsar aquest toot:'
+    reply:
+      proceed: Procedir a respondre
+      prompt: 'Vols respondre a aquest toot:'
   remote_unfollow:
     error: Error
     title: Títol
     unfollowed: Sense seguir
+  scheduled_statuses:
+    over_daily_limit: Has superat el límit de %{limit} toots programats per a aquell dia
+    over_total_limit: Has superat el limit de %{limit} toots programats
+    too_soon: La data programada ha de ser futura
   sessions:
     activity: Última activitat
     browser: Navegador
diff --git a/config/locales/co.yml b/config/locales/co.yml
index c2de9e4c6..75f1745bc 100644
--- a/config/locales/co.yml
+++ b/config/locales/co.yml
@@ -84,14 +84,15 @@ co:
       by_domain: Duminiu
       change_email:
         changed_msg: Email di u contu cambiatu!
-        current_email: Email attuale
-        label: Mudificà l’Email
-        new_email: Novu Email
-        submit: Cambià Email
-        title: Mudificà l’Email di %{username}
+        current_email: E-mail attuale
+        label: Mudificà l’e-mail
+        new_email: Novu e-mail
+        submit: Cambià l'e-mail
+        title: Mudificà l’e-mail di %{username}
       confirm: Cunfirmà
       confirmed: Cunfirmata
       confirming: Cunfirmazione
+      deleted: Sguassatu
       demote: Ritrugradà
       disable: Disattivà
       disable_two_factor_authentication: Disattivà l’identificazione à 2 fattori
@@ -100,7 +101,7 @@ co:
       domain: Duminiu
       edit: Mudificà
       email: E-mail
-      email_status: Statu di l’e-mail
+      email_status: Statutu di l’e-mail
       enable: Attivà
       enabled: Attivatu
       feed_url: URL di u flussu
@@ -110,7 +111,9 @@ co:
       follows: Abbunamenti
       header: Intistatura
       inbox_url: URL di l’inbox
+      invited_by: Invitatu da
       ip: IP
+      joined: Ghjuntu
       location:
         all: Tutti
         local: Lucale
@@ -137,7 +140,7 @@ co:
       protocol: Prutucollu
       public: Pubblicu
       push_subscription_expires: Spirata di l’abbunamentu PuSH
-      redownload: Mette à ghjornu i ritratti
+      redownload: Mette à ghjornu u prufile
       remove_avatar: Toglie l’avatar
       remove_header: Toglie l'intistatura
       resend_confirmation:
@@ -157,8 +160,8 @@ co:
       search: Cercà
       shared_inbox_url: URL di l’inbox spartuta
       show:
-        created_reports: Signalamenti creati da stu contu
-        targeted_reports: Signalamenti creati contr’à stu contu
+        created_reports: Signalamenti fatti
+        targeted_reports: Signalatu da l'altri
       silence: Silenzà
       silenced: Silenzatu
       statuses: Statuti
@@ -170,6 +173,7 @@ co:
       undo_suspension: Ùn suspende più
       unsubscribe: Disabbunassi
       username: Cugnome
+      warn: Averte
       web: Web
     action_logs:
       actions:
@@ -253,7 +257,7 @@ co:
       week_users_active: attivi sta settimana
       week_users_new: utilizatori sta settimana
     domain_blocks:
-      add_new: Aghjustà
+      add_new: Aghjustà novu blucchime di duminiu
       created_msg: U blucchime di u duminiu hè attivu
       destroyed_msg: U blucchime di u duminiu ùn hè più attivu
       domain: Duminiu
@@ -270,6 +274,11 @@ co:
       reject_media_hint: Sguassa tutti i media caricati è ricusa caricamenti futuri. Inutile per una suspensione
       reject_reports: Righjittà i rapporti
       reject_reports_hint: Ignurà tutti i signalamenti chì venenu d'issu duminiu. Senz'oghjettu pè e suspensione
+      rejecting_media: righjettu di i fugliali media
+      rejecting_reports: righjettu di i signalamenti
+      severity:
+        silence: silenzatu
+        suspend: suspesu
       show:
         affected_accounts:
           one: Un contu tuccatu indè a database
@@ -279,7 +288,7 @@ co:
           suspend: Ùn suspende più i conti nant’à stu duminiu
         title: Ùn bluccà più u duminiu %{domain}
         undo: Annullà
-      undo: Annullà
+      undo: Annullà u blucchime di duminiu
     email_domain_blocks:
       add_new: Aghjustà
       created_msg: U blucchime di u duminiu d’e-mail hè attivu
@@ -294,7 +303,20 @@ co:
       back_to_account: Rivene à u Contu
       title: Abbunati à %{acct}
     instances:
-      title: Istanze cunnisciute
+      delivery_available: Rimessa dispunibule
+      known_accounts:
+        one: "%{count} contu cunnisciutu"
+        other: "%{count} conti cunnisciuti"
+      moderation:
+        all: Tuttu
+        limited: Limitatu
+        title: Muderazione
+      title: Federazione
+      total_blocked_by_us: Bluccati da noi
+      total_followed_by_them: Siguitati da elli
+      total_followed_by_us: Siguitati da noi
+      total_reported: Rapporti nant'à elli
+      total_storage: Media aghjunti
     invites:
       deactivate_all: Disattivà tuttu
       filter:
@@ -559,7 +581,9 @@ co:
       size: Pesu
     blocks: Bluccate
     csv: CSV
+    domain_blocks: Blucchime di duminiu
     follows: Seguitate
+    lists: Liste
     mutes: Piattate
     storage: I vostri media
   filters:
@@ -708,10 +732,25 @@ co:
     no_account_html: Ùn avete micca un contu? Pudete <a href='%{sign_up_path}' target='_blank'>arregistravi quì</a>
     proceed: Cuntinuà per siguità
     prompt: 'Avete da siguità:'
+    reason_html: "<strong>Perchè hè necessaria sta tappa?</strong> <code>%{instance}</code> ùn hè forse micca u servore induve site arregistratu·a, allora primu duvemu riindirizzavi à u vostru servore."
+  remote_interaction:
+    favourite:
+      proceed: Cuntinuà per favurisce
+      prompt: 'Vulete aghjustà stu statutu à i vostri favuriti:'
+    reblog:
+      proceed: Cuntinuà per sparte
+      prompt: 'Vulete sparte stu statutu:'
+    reply:
+      proceed: Cuntinuà per risponde
+      prompt: 'Vulete risponde à stu statutu:'
   remote_unfollow:
     error: Errore
     title: Titulu
     unfollowed: Disabbunatu
+  scheduled_statuses:
+    over_daily_limit: Avete trapassatu a limita di %{limit} statuti planificati per stu ghjornu
+    over_total_limit: Avete trapassatu a limita di %{limit} statuti planificati
+    too_soon: A data deve esse indè u futuru
   sessions:
     activity: Ultima attività
     browser: Navigatore
diff --git a/config/locales/cs.yml b/config/locales/cs.yml
index 8f3143fc6..e10335533 100644
--- a/config/locales/cs.yml
+++ b/config/locales/cs.yml
@@ -92,10 +92,11 @@ cs:
         label: Změnit e-mail
         new_email: Nový e-mail
         submit: Změnit e-mail
-        title: Změnit e-mail pro uživatele %{username}
+        title: Změnit e-mail uživateli %{username}
       confirm: Potvrdit
       confirmed: Potvrzeno
-      confirming: Potvrzující
+      confirming: Potvrzuji
+      deleted: Smazáno
       demote: Degradovat
       disable: Zablokovat
       disable_two_factor_authentication: Zakázat 2FA
@@ -114,7 +115,9 @@ cs:
       follows: Sledovaní
       header: Hlavička
       inbox_url: URL přijatých zpráv
+      invited_by: Pozván/a uživatelem
       ip: IP
+      joined: Připojil/a se
       location:
         all: Vše
         local: Místní
@@ -141,7 +144,7 @@ cs:
       protocol: Protokol
       public: Veřejný
       push_subscription_expires: Odebírání PuSH expiruje
-      redownload: Obnovit avatar
+      redownload: Obnovit profil
       remove_avatar: Odstranit avatar
       remove_header: Odstranit hlavičku
       resend_confirmation:
@@ -159,10 +162,10 @@ cs:
         user: Uživatel
       salmon_url: URL Salmon
       search: Hledat
-      shared_inbox_url: URL sdílené schránky
+      shared_inbox_url: URL sdílených přijatých zpráv
       show:
-        created_reports: Nahlášení vytvořená z tohoto účtu
-        targeted_reports: Nahlášení vytvořená o tomto účtu
+        created_reports: Vytvořená nahlášení
+        targeted_reports: Nahlášeni ostatními
       silence: Utišit
       silenced: Utišen/a
       statuses: Příspěvky
@@ -174,6 +177,7 @@ cs:
       undo_suspension: Zrušit pozastavení
       unsubscribe: Přestat odebírat
       username: Uživatelské jméno
+      warn: Varovat
       web: Web
     action_logs:
       actions:
@@ -257,7 +261,7 @@ cs:
       week_users_active: aktivních tento týden
       week_users_new: uživatelů tento týden
     domain_blocks:
-      add_new: Přidat nové
+      add_new: Přidat novou blokaci domény
       created_msg: Blokace domény se právě vyřizuje
       destroyed_msg: Blokace domény byla zrušena
       domain: Doména
@@ -272,8 +276,13 @@ cs:
         title: Nová doménová blokace
       reject_media: Odmítat mediální soubory
       reject_media_hint: Odstraní lokálně uložené soubory a odmítne jejich stažení v budoucnosti. Nepodstatné pro pozastavení
-      reject_reports: Odmítnout nahlášení
-      reject_reports_hint: Ignorovat všechna nahlášení pocházející z této domény. Nepodstatné pro suspenzace
+      reject_reports: Odmítat nahlášení
+      reject_reports_hint: Ignorovat všechna nahlášení pocházející z této domény. Nepodstatné pro pozastavení
+      rejecting_media: odmítají se mediální soubory
+      rejecting_reports: odmítají se nahlášení
+      severity:
+        silence: utišené
+        suspend: pozastavené
       show:
         affected_accounts:
           few: "%{count} účty v databázi byly ovlivněny"
@@ -284,7 +293,7 @@ cs:
           suspend: Zrušit pozastavení všech existujících účtů z této domény
         title: Zrušit blokaci domény %{domain}
         undo: Odvolat
-      undo: Odvolat
+      undo: Odvolat blokaci domény
     email_domain_blocks:
       add_new: Přidat nový
       created_msg: E-mailová doména úspěšně přidána na černou listinu
@@ -299,7 +308,21 @@ cs:
       back_to_account: Zpět na účet
       title: Sledovatelé uživatele %{acct}
     instances:
-      title: Známé instance
+      delivery_available: Doručení je k dispozici
+      known_accounts:
+        few: "%{count} známých účtů"
+        one: "%{count} známý účet"
+        other: "%{count} známých účtů"
+      moderation:
+        all: Vše
+        limited: Omezené
+        title: Moderace
+      title: Federace
+      total_blocked_by_us: Blokované námi
+      total_followed_by_them: Sledované jím
+      total_followed_by_us: Sledované námi
+      total_reported: Nahlášení o něm
+      total_storage: Mediální přílohy
     invites:
       deactivate_all: Deaktivovat vše
       filter:
@@ -565,7 +588,9 @@ cs:
       size: Velikost
     blocks: Blokujete
     csv: CSV
+    domain_blocks: Blokace domén
     follows: Sledujete
+    lists: Seznamy
     mutes: Ignorujete
     storage: Paměť médií
   filters:
@@ -718,10 +743,25 @@ cs:
     no_account_html: Ještě nemáte účet? Můžete se <a href='%{sign_up_path}' target='_blank'>registrovat zde</a>
     proceed: Pokračovat ke sledování
     prompt: 'Budete sledovat:'
+    reason_html: "<strong>Proč je tento krok nutný?</strong> <code>%{instance}</code> nemusí být serverem, na kterém jste registrován/a, proto vás musíme nejdříve přesměrovat na váš domovský server."
+  remote_interaction:
+    favourite:
+      proceed: Pokračovat k oblíbení
+      prompt: 'Chcete si oblíbit tento toot:'
+    reblog:
+      proceed: Pokračovat k boostnutí
+      prompt: 'Chcete boostnout tento toot:'
+    reply:
+      proceed: Pokračovat k odpovězení
+      prompt: 'Chcete odpovědět na tento toot:'
   remote_unfollow:
     error: Chyba
     title: Nadpis
     unfollowed: Už nesledujete
+  scheduled_statuses:
+    over_daily_limit: Překročil/a jste limit %{limit} plánovaných tootů pro tento den
+    over_total_limit: Překročil/a jste limit %{limit} plánovaných tootů
+    too_soon: Plánované datum musí být v budoucnosti
   sessions:
     activity: Nejnovější aktivita
     browser: Prohlížeč
diff --git a/config/locales/cy.yml b/config/locales/cy.yml
index 40cb1cac0..53b474c16 100644
--- a/config/locales/cy.yml
+++ b/config/locales/cy.yml
@@ -30,16 +30,34 @@ cy:
     other_instances: Rhestr achosion
     privacy_policy: Polisi preifatrwydd
     source_code: Cod ffynhonnell
-    status_count_after: statws
+    status_count_after:
+      few: statwsau
+      many: statwsau
+      one: statws
+      other: statwsau
+      two: statwsau
+      zero: statwsau
     status_count_before: Ysgriffennwyd gan
     terms: Telerau gwasanaeth
-    user_count_after: defnyddwyr
+    user_count_after:
+      few: defnyddwyr
+      many: defnyddwyr
+      one: defnyddiwr
+      other: defnyddwyr
+      two: defnyddwyr
+      zero: defnyddwyr
     user_count_before: Cartref i
     what_is_mastodon: Beth yw Mastodon?
   accounts:
     choices_html: 'Dewisiadau %{name}:'
     follow: Dilynwch
-    followers: Dilynwyr
+    followers:
+      few: Dilynwyr
+      many: Dilynwyr
+      one: Dilynwr
+      other: Dilynwyr
+      two: Dilynwyr
+      zero: Dilynwyr
     following: Yn dilyn
     joined: Ymunodd %{date}
     link_verified_on: Gwiriwyd perchnogaeth y ddolen yma ar %{date}
@@ -51,7 +69,13 @@ cy:
     people_who_follow: Pobl sy'n dilyn %{name}
     pin_errors:
       following: Rhaid i ti fod yn dilyn y person yr ydych am ei gymeradwyo yn barod
-    posts: Tŵtiau
+    posts:
+      few: Tŵtiau
+      many: Tŵtiau
+      one: Tŵt
+      other: Tŵtiau
+      two: Tŵtiau
+      zero: Tŵtiau
     posts_tab_heading: Tŵtiau
     posts_with_replies: Tŵtiau ac atebion
     reserved_username: Mae'r enw defnyddiwr ar gadw
@@ -61,6 +85,8 @@ cy:
       moderator: Safonwr
     unfollow: Dad-ddilyn
   admin:
+    account_actions:
+      action: Cyflawni gweithred
     account_moderation_notes:
       create: Gadael nodyn
       created_msg: Crewyd nodyn cymedroli yn llwyddiannus!
@@ -80,6 +106,7 @@ cy:
       confirm: Cadarnhau
       confirmed: Cadarnhawyd
       confirming: Cadarnhau
+      deleted: Wedi dileu
       demote: Diraddio
       disable: Diffodd
       disable_two_factor_authentication: Diffodd 2FA
@@ -95,8 +122,11 @@ cy:
       followers: Dilynwyr
       followers_url: URL Dilynwyr
       follows: Yn dilyn
+      header: Pennawd
       inbox_url: URL Mewnflwch
+      invited_by: Gwahoddwyd gan
       ip: IP
+      joined: Ymunodd
       location:
         all: Popeth
         local: Lleol
@@ -106,6 +136,7 @@ cy:
       media_attachments: Atodiadau
       memorialize: Troi yn gofeb
       moderation:
+        active: Yn weithredol
         all: Popeth
         silenced: Wedi ei dawelu
         suspended: Wedi ei atal
@@ -122,7 +153,7 @@ cy:
       protocol: Protocol
       public: Cyhoeddus
       push_subscription_expires: Tanysgrifiad PuSH yn dod i ben
-      redownload: Adnewyddu afatar
+      redownload: Adnewyddu proffil
       remove_avatar: Dileu afatar
       resend_confirmation:
         already_confirmed: Mae'r defnyddiwr hwn wedi ei gadarnhau yn barod
@@ -154,6 +185,7 @@ cy:
       undo_suspension: Dadwneud ataliad
       unsubscribe: Dad-danysgrifio
       username: Enw defnyddiwr
+      warn: Rhybuddio
       web: Gwe
     action_logs:
       actions:
@@ -271,7 +303,10 @@ cy:
         title: Cofnod newydd yng nghosbrestr e-byst
       title: Cosbrestr e-bost
     instances:
-      title: Achosion hysbys
+      moderation:
+        all: Pob
+        limited: Gyfyngedig
+      title: Ffederasiwn
     invites:
       deactivate_all: Diffodd pob un
       filter:
@@ -412,7 +447,14 @@ cy:
       last_delivery: Danfoniad diwethaf
       title: WebSub
       topic: Pwnc
+    tags:
+      accounts: Cyfrifon
+      hidden: Cudd
+      name: Hashnod
     title: Gweinyddiaeth
+    warning_presets:
+      delete: Dileu
+      edit: Golygu
   admin_mailer:
     new_report:
       body: Mae %{reporter} wedi cwyno am %{target}
@@ -497,7 +539,7 @@ cy:
     '422':
       content: Methwyd i ddilysu diogelwch. A ydych chi'n blocio cwcîs?
       title: Methwyd i ddilysu diogelwch
-    '429': Crogwyd
+    '429': Wedi'i arafu
     '500':
       content: Mae'n ddrwg gennym ni, ond fe aeth rhywbeth o'i le ar ein rhan ni.
       title: Nid yw'r dudalen hon yn gywir
@@ -714,7 +756,13 @@ cy:
     attached:
       description: 'Ynghlwm: %{attached}'
       image: "%{count} o luniau"
-      video: "%{count} fideo"
+      video:
+        few: "%{count} fideo"
+        many: "%{count} fideo"
+        one: "%{count} fideo"
+        other: "%{count} fideo"
+        two: "%{count} fideo"
+        zero: "%{count} fideo"
     boosted_from_html: Wedi ei fŵstio %{acct_link}
     content_warning: 'Rhybudd cynnwys: %{warning}'
     disallowed_hashtags: 'yn cynnwys yr hashnod gwaharddedig: %{tags}'
@@ -852,6 +900,12 @@ cy:
       explanation: Fe wnaethoch chi gais am gopi wrth gefn llawn o'ch cyfrif Mastodon. Mae nawr yn barod i'w lawrlwytho!
       subject: Mae eich archif yn barod i'w lawrlwytho
       title: Allfudo archif
+    warning:
+      title:
+        disable: Cyfrif wedi'i rewi
+        none: Rhybudd
+        silence: Cyfrif cyfyngedig
+        suspend: Cyfrif wedi'i rewi
     welcome:
       edit_profile_action: Sefydlu proffil
       edit_profile_step: Mae modd i chi addasu eich proffil drwy uwchlwytho afatar, pennawd, drwy newid eich enw arddangos a mwy. Os hoffech chi adolygu dilynwyr newydd cyn iddynt gael caniatad i'ch dilyn, mae modd i chi gloi eich cyfrif.
diff --git a/config/locales/de.yml b/config/locales/de.yml
index c90101805..0f537e3a8 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -92,6 +92,7 @@ de:
       confirm: Bestätigen
       confirmed: Bestätigt
       confirming: Bestätigung
+      deleted: Gelöscht
       demote: Degradieren
       disable: Ausschalten
       disable_two_factor_authentication: 2FA abschalten
@@ -110,7 +111,9 @@ de:
       follows: Folgt
       header: Header
       inbox_url: Posteingangs-URL
+      invited_by: Eingeladen von
       ip: IP-Adresse
+      joined: Beigetreten
       location:
         all: Alle
         local: Lokal
@@ -137,7 +140,7 @@ de:
       protocol: Protokoll
       public: Öffentlich
       push_subscription_expires: PuSH-Abonnement läuft aus
-      redownload: Avatar neu laden
+      redownload: Profil neu laden
       remove_avatar: Profilbild entfernen
       remove_header: Header entfernen
       resend_confirmation:
@@ -155,10 +158,10 @@ de:
         user: Nutzer
       salmon_url: Salmon-URL
       search: Suche
-      shared_inbox_url: Geteilter Posteingang URL
+      shared_inbox_url: Geteilte Posteingang-URL
       show:
-        created_reports: Meldungen durch dieses Konto
-        targeted_reports: Meldungen über dieses Konto
+        created_reports: Erstellte Beschwerdemeldungen
+        targeted_reports: Beschwerdemeldungen von anderen
       silence: Stummschalten
       silenced: Stummgeschaltet
       statuses: Beiträge
@@ -170,6 +173,7 @@ de:
       undo_suspension: Sperre zurücknehmen
       unsubscribe: Abbestellen
       username: Profilname
+      warn: Warnen
       web: Web
     action_logs:
       actions:
@@ -253,7 +257,7 @@ de:
       week_users_active: Aktiv diese Woche
       week_users_new: Benutzer:innen diese Woche
     domain_blocks:
-      add_new: Neu hinzufügen
+      add_new: Neue Domainblockade hinzufügen
       created_msg: Die Domain-Blockade wird nun durchgeführt
       destroyed_msg: Die Domain-Blockade wurde rückgängig gemacht
       domain: Domain
@@ -270,6 +274,11 @@ de:
       reject_media_hint: Entfernt lokal gespeicherte Mediendateien und verhindert deren künftiges Herunterladen. Für Sperren irrelevant
       reject_reports: Meldungen ablehnen
       reject_reports_hint: Ignoriere alle Meldungen von dieser Domain. Irrelevant für Sperrungen
+      rejecting_media: Mediendateien ablehnen
+      rejecting_reports: Beschwerdemeldungen ablehnen
+      severity:
+        silence: stummgeschaltet
+        suspend: gesperrt
       show:
         affected_accounts:
           one: Ein Konto in der Datenbank betroffen
@@ -279,7 +288,7 @@ de:
           suspend: Alle existierenden Konten dieser Domain entsperren
         title: Domain-Blockade für %{domain} zurücknehmen
         undo: Zurücknehmen
-      undo: Zurücknehmen
+      undo: Domainblockade zurücknehmen
     email_domain_blocks:
       add_new: Neue hinzufügen
       created_msg: E-Mail-Domain-Blockade erfolgreich erstellt
@@ -294,7 +303,20 @@ de:
       back_to_account: Zurück zum Account
       title: "%{acct}'s Follower"
     instances:
-      title: Bekannte Instanzen
+      delivery_available: Zustellung ist verfügbar
+      known_accounts:
+        one: "%{count} bekannter Account"
+        other: "%{count} bekannte Accounts"
+      moderation:
+        all: Alle
+        limited: Limitiert
+        title: Moderation
+      title: Föderation
+      total_blocked_by_us: Von uns gesperrt
+      total_followed_by_them: Gefolgt von denen
+      total_followed_by_us: Gefolgt von uns
+      total_reported: Beschwerdemeldungen über sie
+      total_storage: Medienanhänge
     invites:
       deactivate_all: Alle deaktivieren
       filter:
@@ -559,7 +581,9 @@ de:
       size: Größe
     blocks: Du hast blockiert
     csv: CSV
+    domain_blocks: Domainblockaden
     follows: Du folgst
+    lists: Listen
     mutes: Du hast stummgeschaltet
     storage: Medienspeicher
   filters:
@@ -708,10 +732,25 @@ de:
     no_account_html: Noch keinen Account? Du kannst dich <a href='%{sign_up_path}' target='_blank'>hier anmelden</a>
     proceed: Weiter
     prompt: 'Du wirst dieser Person folgen:'
+    reason_html: "<strong>Warum ist dieser Schritt erforderlich?</strong><code>%{instance}</code> ist möglicherweise nicht der Server auf dem du registriert bist, also müssen wir dich erst auf deinen Heimserver weiterleiten."
+  remote_interaction:
+    favourite:
+      proceed: Fortfahren zum Favorisieren
+      prompt: 'Du möchtest diesen Beitrag favorisieren:'
+    reblog:
+      proceed: Fortfahren zum Teilen
+      prompt: 'Du möchtest diesen Beitrag teilen:'
+    reply:
+      proceed: Fortfahren zum Antworten
+      prompt: 'Du möchtest auf diesen Beitrag antworten:'
   remote_unfollow:
     error: Fehler
     title: Titel
     unfollowed: Entfolgt
+  scheduled_statuses:
+    over_daily_limit: Du hast das Limit für geplante Beiträge, dass %{limit} beträgt, für heute erreicht
+    over_total_limit: Du hast das Limit für geplante Beiträge, dass %{limit} beträgt, erreicht
+    too_soon: Das geplante Datum muss in der Zukunft liegen
   sessions:
     activity: Letzte Aktivität
     browser: Browser
diff --git a/config/locales/devise.pl.yml b/config/locales/devise.pl.yml
index 7902274a3..57c21437b 100644
--- a/config/locales/devise.pl.yml
+++ b/config/locales/devise.pl.yml
@@ -78,4 +78,8 @@ pl:
       expired: wygasło, poproś o nowe
       not_found: nie znaleziono
       not_locked: było zablokowane
-      not_saved: 'Błędy (%{count}) uniemożliwiły zapisanie zasobu %{resource}:'
+      not_saved:
+        few: 'Błędy (%{count}) uniemożliwiły zapisanie tego %{resource}:'
+        many: 'Błędy (%{count}) uniemożliwiły zapisanie tego %{resource}:'
+        one: '1 błąd nie uniemożliwił zapisanie %{resource}:'
+        other: 'Błędy (%{count}) uniemożliwiły zapisanie tego %{resource}:'
diff --git a/config/locales/el.yml b/config/locales/el.yml
index 71acb47ea..809f53b1f 100644
--- a/config/locales/el.yml
+++ b/config/locales/el.yml
@@ -92,6 +92,7 @@ el:
       confirm: Επιβεβαίωση
       confirmed: Επιβεβαιώθηκε
       confirming: Προς επιβεβαίωση
+      deleted: Διαγραμμένοι
       demote: Υποβίβαση
       disable: Απενεργοποίηση
       disable_two_factor_authentication: Απενεργοποίηση 2FA
@@ -110,7 +111,9 @@ el:
       follows: Ακολουθεί
       header: Επικεφαλίδα
       inbox_url: URL εισερχομένων
+      invited_by: Προσκλήθηκε από
       ip: IP
+      joined: Γράφτηκε
       location:
         all: Όλες
         local: Τοπικά
@@ -170,6 +173,7 @@ el:
       undo_suspension: Αναίρεση παύσης
       unsubscribe: Κατάργηση εγγραφής
       username: Όνομα χρήστη
+      warn: Προειδοποίηση
       web: Διαδίκτυο
     action_logs:
       actions:
@@ -270,6 +274,11 @@ el:
       reject_media_hint: Αφαιρεί τα τοπικά αποθηκευμένα αρχεία πολυμέσων και αποτρέπει τη λήψη άλλων στο μέλλον. Δεν έχει σημασία για τις αναστολές
       reject_reports: Απόρριψη καταγγελιών
       reject_reports_hint: Αγνόηση όσων καταγγελιών προέρχονται από αυτό τον τομέα. Δεν σχετίζεται με τις παύσεις
+      rejecting_media: απορρίπτουν αρχεία πολυμέσων
+      rejecting_reports: απορρίπτουν καταγγελίες
+      severity:
+        silence: αποσιωπημένοι
+        suspend: ανεσταλμένοι
       show:
         affected_accounts:
           one: Επηρεάζεται ένας λογαριασμός στη βάση δεδομένων
@@ -294,7 +303,20 @@ el:
       back_to_account: Επιστροφή στον λογαριασμό
       title: Ακόλουθοι του/της %{acct}
     instances:
+      delivery_available: Διαθέσιμη παράδοση
+      known_accounts:
+        one: "%{count} γνωστός λογαριασμός"
+        other: "%{count} γνωστοί λογαριασμοί"
+      moderation:
+        all: Όλα
+        limited: Περιορισμένα
+        title: Διαμεσολάβηση
       title: Γνωστοί κόμβοι
+      total_blocked_by_us: Μπλοκάρονται από εμάς
+      total_followed_by_them: Ακολουθούνται από εκείνους
+      total_followed_by_us: Ακολουθούνται από εμάς
+      total_reported: Καταγγελίες προς εκείνους
+      total_storage: Συνημμένα πολυμέσα
     invites:
       deactivate_all: Απενεργοποίηση όλων
       filter:
@@ -377,7 +399,7 @@ el:
         desc_html: Οι προεπισκοπήσεις συνδέσμων σε τρίτους ιστότοπους θα είναι ορατές ακόμα κι όταν το πολυμέσο έχει σημειωθεί ως ευαίσθητο
         title: Εμφάνιση ευαίσθητων πολυμέσων στις προεπισκοπήσεις OpenGraph
       profile_directory:
-        desc_html: Να επιτρέπεται ο εντοπισμός των χρηστών
+        desc_html: Να επιτρέπεται η ανακάλυψη χρηστών
         title: Ενεργοποίηση του καταλόγου χρηστών
       registrations:
         closed_message:
@@ -559,7 +581,9 @@ el:
       size: Μέγεθος
     blocks: Μπλοκάρεις
     csv: CSV
+    domain_blocks: Μπλοκαρίσματα κόμβων
     follows: Ακολουθείς
+    lists: Λίστες
     mutes: Αποσιωπάς
     storage: Αποθήκευση πολυμέσων
   filters:
@@ -707,10 +731,25 @@ el:
     no_account_html: Δεν έχεις λογαριασμό; Μπορείς <a href='%{sign_up_path}' target='_blank'>να γραφτείς εδώ</a>
     proceed: Συνέχισε για να ακολουθήσεις
     prompt: 'Θα ακολουθήσεις:'
+    reason_html: "<strong>Γιατί χρειάζεται αυτό το βήμα;</strong> Το <code>%{instance}</code> πορεία να μην είναι ο κόμβος που είσαι γραμμένος, έτσι πρέπει να σε ανακατευθύνουμε στο δικό σου."
+  remote_interaction:
+    favourite:
+      proceed: Συνέχισε για σημείωση ως αγαπημένου
+      prompt: 'Θέλεις να σημειώσεις ως αγαπημένο αυτό το τουτ:'
+    reblog:
+      proceed: Συνέχισε για προώθηση
+      prompt: 'Θέλεις να προωθήσεις αυτό το τουτ:'
+    reply:
+      proceed: Συνέχισε για να απαντήσεις
+      prompt: 'Θέλεις να απαντήσεις σε αυτό το τουτ:'
   remote_unfollow:
     error: Σφάλμα
     title: Τίτλος
     unfollowed: Σταμάτησες να ακολουθείς
+  scheduled_statuses:
+    over_daily_limit: Έχεις υπερβεί το όριο των %{limit} προγραμματισμένων τουτ για εκείνη τη μέρα
+    over_total_limit: Έχεις υπερβεί το όριο των %{limit} προγραμματισμένων τουτ
+    too_soon: Η προγραμματισμένη ημερομηνία πρέπει να είναι στο μέλλον
   sessions:
     activity: Τελευταία δραστηριότητα
     browser: Φυλλομετρητής (Browser)
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index d0c7289c8..083ce7ad0 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -92,6 +92,7 @@ fr:
       confirm: Confirmer
       confirmed: Confirmé
       confirming: Confirmation
+      deleted: Effacé
       demote: Rétrograder
       disable: Désactiver
       disable_two_factor_authentication: Désactiver l’authentification à deux facteurs
@@ -110,6 +111,7 @@ fr:
       follows: Abonnements
       header: Entête
       inbox_url: URL d’entrée
+      invited_by: Invité par
       ip: Adresse IP
       location:
         all: Tous
@@ -137,7 +139,7 @@ fr:
       protocol: Protocole
       public: Publique
       push_subscription_expires: Expiration de l’abonnement PuSH
-      redownload: Rafraîchir les avatars
+      redownload: Rafraîchir le profil
       remove_avatar: Supprimer l’avatar
       remove_header: Supprimer l'entête
       resend_confirmation:
@@ -157,8 +159,8 @@ fr:
       search: Rechercher
       shared_inbox_url: URL de la boite de réception partagée
       show:
-        created_reports: Signalements créés par ce compte
-        targeted_reports: Signalements créés visant ce compte
+        created_reports: Signalements faits
+        targeted_reports: Signalés par d'autres
       silence: Masquer
       silenced: Silencié
       statuses: Statuts
@@ -253,7 +255,7 @@ fr:
       week_users_active: actif·ve·s cette semaine
       week_users_new: utilisateur·rice·s cette semaine
     domain_blocks:
-      add_new: Ajouter
+      add_new: Ajouter un nouveau bloqueur de domaine
       created_msg: Le blocage de domaine est désormais activé
       destroyed_msg: Le blocage de domaine a été désactivé
       domain: Domaine
@@ -270,6 +272,11 @@ fr:
       reject_media_hint: Supprime localement les fichiers média stockés et refuse d’en télécharger ultérieurement. Ne concerne pas les suspensions
       reject_reports: Rapports de rejet
       reject_reports_hint: Ignorez tous les rapports provenant de ce domaine. Sans objet pour les suspensions
+      rejecting_media: rejet des fichiers multimédia
+      rejecting_reports: rejet de rapports
+      severity:
+        silence: silencié
+        suspend: suspendu
       show:
         affected_accounts:
           one: Un compte affecté dans la base de données
@@ -279,7 +286,7 @@ fr:
           suspend: Annuler la suspension sur tous les comptes existants pour ce domaine
         title: Annuler le blocage de domaine pour %{domain}
         undo: Annuler
-      undo: Annuler
+      undo: Annuler le bloqueur de domaine
     email_domain_blocks:
       add_new: Ajouter
       created_msg: Le blocage de domaine de courriel est désormais activé
@@ -294,7 +301,19 @@ fr:
       back_to_account: Retour au compte
       title: Abonné⋅e⋅s de %{acct}
     instances:
-      title: Instances connues
+      known_accounts:
+        one: "%{count} compte connu"
+        other: "%{count} comptes connus"
+      moderation:
+        all: Tout
+        limited: Limité
+        title: Modération
+      title: Fédération
+      total_blocked_by_us: Bloqués par nous
+      total_followed_by_them: Suivi par eux
+      total_followed_by_us: Suivi par nous
+      total_reported: Signalements à leurs propos
+      total_storage: Attachements de média
     invites:
       deactivate_all: Tout désactiver
       filter:
@@ -559,7 +578,9 @@ fr:
       size: Taille
     blocks: Vous bloquez
     csv: CSV
+    domain_blocks: Bloqueurs de domaine
     follows: Vous suivez
+    lists: Listes
     mutes: Vous masquez
     storage: Médias stockés
   filters:
@@ -708,10 +729,20 @@ fr:
     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 :'
+    reason_html: "<strong>Pourquoi cette étape est-elle nécessaire?</strong> <code>%{instance}</code> pourrait ne pas être le serveur où vous vous êtes inscrit, et nous devons donc vous rediriger vers votre serveur de base en premier."
+  remote_interaction:
+    favourite:
+      prompt: 'Vous souhaitez mettre ce pouet en favori :'
+    reply:
+      prompt: 'Vous souhaitez répondre à ce pouet :'
   remote_unfollow:
     error: Erreur
     title: Titre
     unfollowed: Non-suivi
+  scheduled_statuses:
+    over_daily_limit: Vous avez dépassé la limite de %{limit} pouets planifiés pour ce jour
+    over_total_limit: Vous avez dépassé la limite de %{limit} pouets planifiés
+    too_soon: La date planifiée doit être dans le futur
   sessions:
     activity: Dernière activité
     browser: Navigateur
diff --git a/config/locales/gl.yml b/config/locales/gl.yml
index 91cf01d46..b8eeb4b4e 100644
--- a/config/locales/gl.yml
+++ b/config/locales/gl.yml
@@ -84,14 +84,15 @@ gl:
       by_domain: Dominio
       change_email:
         changed_msg: Cambiouse correctamente o correo-e da conta!
-        current_email: Correo-e actual
-        label: Cambiar correo-e
-        new_email: Novo correo-e
-        submit: Cambiar correo-e
-        title: Cambiar o correo-e de %{username}
+        current_email: Correo actual
+        label: Cambiar correo
+        new_email: Novo correo
+        submit: Cambiar correo
+        title: Cambiar o correo de %{username}
       confirm: Confirmar
       confirmed: Confirmado
       confirming: Confirmar
+      deleted: Eliminado
       demote: Degradar
       disable: Deshabilitar
       disable_two_factor_authentication: Deshabilitar 2FA
@@ -99,8 +100,8 @@ gl:
       display_name: Mostrar nome
       domain: Dominio
       edit: Editar
-      email: E-mail
-      email_status: Estado del correo electrónico
+      email: Email
+      email_status: Estado do correo
       enable: Habilitar
       enabled: Habilitado
       feed_url: URL fonte
@@ -110,7 +111,9 @@ gl:
       follows: Segue
       header: Cabeceira
       inbox_url: URL da Caixa de entrada
+      invited_by: Convidada por
       ip: IP
+      joined: Uniuse
       location:
         all: Todo
         local: Local
@@ -137,7 +140,7 @@ gl:
       protocol: Protocolo
       public: Público
       push_subscription_expires: A suscrición PuSH caduca
-      redownload: Actualizar avatar
+      redownload: Actualizar perfil
       remove_avatar: Eliminar avatar
       remove_header: Eliminar cabeceira
       resend_confirmation:
@@ -157,19 +160,20 @@ gl:
       search: Busca
       shared_inbox_url: URL da caixa de entrada compartida
       show:
-        created_reports: Informes creados por esta conta
-        targeted_reports: Informes feitos sobre esta conta
+        created_reports: Informes creados
+        targeted_reports: Informes feitos por outros
       silence: Acalar
       silenced: Acalada
       statuses: Estados
       subscribe: Subscribir
       suspended: Suspendida
       title: Contas
-      unconfirmed_email: Correo-e non confirmado
+      unconfirmed_email: Correo non confirmado
       undo_silenced: Desfacer acalar
       undo_suspension: Desfacer suspensión
       unsubscribe: Non subscribir
       username: Nome de usuaria
+      warn: Aviso
       web: Web
     action_logs:
       actions:
@@ -253,7 +257,7 @@ gl:
       week_users_active: activas estas semana
       week_users_new: usuarias esta semana
     domain_blocks:
-      add_new: Engadir novo
+      add_new: Engadir novo bloqueo de dominio
       created_msg: Estase a procesar o bloqueo do dominio
       destroyed_msg: Desfixose a acción de bloqueo de dominio
       domain: Dominio
@@ -270,6 +274,11 @@ gl:
       reject_media_hint: Eliminar ficheiros de medios almacenados localmente e rexeita descargalos no futuro. Irrelevante para as suspensións
       reject_reports: Rexeitar informes
       reject_reports_hint: Ignorar todos os informes procedentes de este dominio. Irrelevante para as suspensións
+      rejecting_media: rexeitando ficheiros de medios
+      rejecting_reports: rexeitando informes
+      severity:
+        silence: acalado
+        suspend: suspendido
       show:
         affected_accounts:
           one: Afectoulle a unha conta na base de datos
@@ -279,7 +288,7 @@ gl:
           suspend: Non suspender todas as contas existentes de este dominio
         title: Desfacer o bloqueo de dominio para %{domain}
         undo: Desfacer
-      undo: Desfacer
+      undo: Desfacer bloqueo de dominio
     email_domain_blocks:
       add_new: Engadir novo
       created_msg: Engadeuse correctamente o dominio de email a lista negra
@@ -294,7 +303,20 @@ gl:
       back_to_account: Voltar a Conta
       title: Seguidoras de %{acct}
     instances:
-      title: Instancias coñecidas
+      delivery_available: A entrega está dispoñible
+      known_accounts:
+        one: "%{count} conta coñecida"
+        other: "%{count} contas coñecidas"
+      moderation:
+        all: Todo
+        limited: Limitado
+        title: Moderación
+      title: Federación
+      total_blocked_by_us: Bloqueado por nós
+      total_followed_by_them: Seguidas por eles
+      total_followed_by_us: Seguidas por nós
+      total_reported: Informes sobre elas
+      total_storage: Anexos de medios
     invites:
       deactivate_all: Desactivar todo
       filter:
@@ -559,7 +581,9 @@ gl:
       size: Tamaño
     blocks: A bloquear
     csv: CSV
+    domain_blocks: Bloqueos de dominio
     follows: A seguir
+    lists: Listas
     mutes: Acalou
     storage: Almacenamento de medios
   filters:
@@ -708,10 +732,25 @@ gl:
     no_account_html: Non ten unha conta? Pode <a href='%{sign_up_path}' target='_blank'>rexistrarse aquí</a>
     proceed: Proceda para seguir
     prompt: 'Vostede vai seguir:'
+    reason_html: "<strong>Por que é necesario este paso?</strong><code>%{instance}</code> podería non ser o servidor onde se rexistrou, así que precisamo redirixila primeiro ao seu servidor de orixe."
+  remote_interaction:
+    favourite:
+      proceed: Darlle a favorito
+      prompt: 'Vostede quere favorecer este toot:'
+    reblog:
+      proceed: Darlle a promocionar
+      prompt: 'Vostede quere promocionar este toot:'
+    reply:
+      proceed: Respostar
+      prompt: 'Vostede quere respostar a este toot:'
   remote_unfollow:
     error: Fallo
     title: Título
     unfollowed: Deixou de seguir
+  scheduled_statuses:
+    over_daily_limit: Excedeu o límite de %{limit} toots programados para ese día
+    over_total_limit: Excedeu o límite de %{limit} toots programados
+    too_soon: A data de programación debe estar no futuro
   sessions:
     activity: Última actividade
     browser: Navegador
diff --git a/config/locales/id.yml b/config/locales/id.yml
index ae38b3f7d..fabf2746e 100644
--- a/config/locales/id.yml
+++ b/config/locales/id.yml
@@ -1,28 +1,75 @@
 ---
 id:
   about:
+    about_hashtag_html: Ini adalah toot public yang ditandai dengan <strong>#%{hashtag}</strong>. Anda bisa berinteraksi dengan mereka jika anda memiliki akun dimanapun di fediverse.
     about_mastodon_html: Mastodon adalah sebuah jejaring sosial <em>terbuka, open-source</em. Sebuah alternatif <em>desentralisasi</em> dari platform komersial, menjauhkan anda resiko dari sebuah perusahaan yang memonopoli komunikasi anda. Pilih server yang anda percayai &mdash; apapun yang anda pilih, anda tetap dapat berinteraksi dengan semua orang. Semua orang dapat menjalankan server Mastodon sendiri dan berpartisipasi dalam <em>jejaring sosial</em> dengan mudah.
     about_this: Tentang server ini
-    closed_registrations: Pendaftaran untuk server ini sedang ditutup.
+    api: API
+    apps: Aplikasi hp
+    closed_registrations: Pendaftaran untuk server ini sedang ditutup. Tetapi, anda bisa mencari server lain untuk membuat akun dan mendapatkan akses dari jaringan yang sama di sana.
     contact: Kontak
-    other_instances: Server lain
+    contact_missing: Belum diset
+    contact_unavailable: Tidak Tersedia
+    documentation: Dokumentasi
+    extended_description_html: |
+      <h3>Tempat yang baik untuk peraturan</h3>
+      <p>Deskripsi lainnya belum diset.</p>
+    features:
+      humane_approach_body: Belajar dari kegagalan jaringan lain, Mastodon berupaya untuk membuat pilihan desain yang etis untuk melawan penyalahgunaan media sosial.
+      humane_approach_title: Pendekatan yang lebih manusiawi
+      not_a_product_body: Mastodon bukanlah jaringan komersil. Tidak ada iklan, tidak ada pengumpulan data, tidak ada batasan vendor. Tidak ada otoritas terpusat.
+      not_a_product_title: Anda adalah orang, bukanlah sebuah produk
+      real_conversation_body: Dengan 500 karakter dan dukungan konten granular dan peringatan media, anda dapat mengekspresikan diri anda sendiri sesuai yang anda mau.
+      real_conversation_title: Dibangun untuk percakapan yang sebenarnya
+      within_reach_body: Berbagai aplikasi untuk iOS, Android, dan platform lainnya berkat ekosistem API yang ramah pada pengembang untuk tetap terhubung dengan teman-teman anda dimanapun.
+      within_reach_title: Selalu dalam jangkauan
+    generic_description: "%{domain} adalah satu server dalam jaringan"
+    hosted_on: Mastodon dihosting di %{domain}
+    learn_more: Pelajari selengkapnya
+    other_instances: Daftar Server
+    privacy_policy: Kebijakan Privasi
     source_code: Kode sumber
-    status_count_after: status
+    status_count_after:
+      one: status
+      other: status
     status_count_before: Yang telah menulis
-    user_count_after: pengguna
+    terms: Kebijakan layanan
+    user_count_after:
+      one: pengguna
+      other: pengguna
     user_count_before: Tempat bernaung bagi
+    what_is_mastodon: Apa itu Mastodon?
   accounts:
     follow: Ikuti
-    followers: Pengikut
-    following: Mengikut
+    followers:
+      one: Pengikut
+      other: Pengikut
+    following: Mengikuti
+    joined: Bergabung pada %{date}
+    last_active: terakhir aktif
+    link_verified_on: Kepemilikan tautan ini telah dicek pada %{date}
+    media: Media
+    moved_html: "%{name} telah pindah ke %{new_profile_link}:"
+    network_hidden: Informasi ini tidak tersedia
     nothing_here: Tidak ada apapun disini!
     people_followed_by: Orang yang diikuti %{name}
     people_who_follow: Orang-orang yang mengikuti %{name}
+    pin_errors:
+      following: Anda harus mengikuti orang yang ingin anda endorse
     posts:
       one: Toot
-      other: Toots
+      other: Toot
+    posts_tab_heading: Toot
+    posts_with_replies: Toot dan balasan
+    reserved_username: Nama pengguna telah dipesan
+    roles:
+      admin: Admin
+      bot: Bot
+      moderator: Moderator
     unfollow: Berhenti mengikuti
   admin:
+    account_actions:
+      action: Lakukan aksi
     accounts:
       are_you_sure: Anda yakin?
       confirm: Konfirmasi
diff --git a/config/locales/ja.yml b/config/locales/ja.yml
index 1ab2d5445..fce4895fc 100644
--- a/config/locales/ja.yml
+++ b/config/locales/ja.yml
@@ -92,6 +92,7 @@ ja:
       confirm: 確認
       confirmed: 確認済み
       confirming: 確認中
+      deleted: 削除済み
       demote: 降格
       disable: 無効化
       disable_two_factor_authentication: 二段階認証を無効にする
@@ -110,7 +111,9 @@ ja:
       follows: フォロー数
       header: ヘッダー
       inbox_url: Inbox URL
+      invited_by: 招待した人
       ip: IP
+      joined: 登録日
       location:
         all: すべて
         local: ローカル
@@ -155,7 +158,7 @@ ja:
         user: ユーザー
       salmon_url: Salmon URL
       search: 検索
-      shared_inbox_url: Shared Inbox URL
+      shared_inbox_url: Shared inbox URL
       show:
         created_reports: このアカウントで作られたレポート
         targeted_reports: このアカウントについてのレポート
@@ -170,6 +173,7 @@ ja:
       undo_suspension: 停止から戻す
       unsubscribe: 購読の解除
       username: ユーザー名
+      warn: 警告
       web: Web
     action_logs:
       actions:
@@ -253,7 +257,7 @@ ja:
       week_users_active: 今週活動した人数
       week_users_new: 今週登録した人数
     domain_blocks:
-      add_new: 新規追加
+      add_new: ドメインブロックを追加
       created_msg: ドメインブロック処理を完了しました
       destroyed_msg: ドメインブロックを外しました
       domain: ドメイン
@@ -270,6 +274,11 @@ ja:
       reject_media_hint: ローカルに保存されたメディアファイルを削除し、今後のダウンロードを拒否します。停止とは無関係です
       reject_reports: レポートを拒否
       reject_reports_hint: このドメインからのレポートをすべて無視します。停止とは無関係です
+      rejecting_media: メディアファイルを拒否中
+      rejecting_reports: レポートを拒否中
+      severity:
+        silence: サイレンス中
+        suspend: 停止中
       show:
         affected_accounts:
           one: データベース中の一つのアカウントに影響します
@@ -294,7 +303,20 @@ ja:
       back_to_account: 戻る
       title: "%{acct}さんのフォロワー"
     instances:
+      delivery_available: 配送可能
+      known_accounts:
+        one: 既知のアカウント数 %{count}
+        other: 既知のアカウント数 %{count}
+      moderation:
+        all: すべて
+        limited: 制限あり
+        title: モデレーション
       title: 既知のインスタンス
+      total_blocked_by_us: ブロック合計
+      total_followed_by_them: 被フォロー合計
+      total_followed_by_us: フォロー合計
+      total_reported: レポート合計
+      total_storage: 添付されたメディア
     invites:
       deactivate_all: すべて無効化
       filter:
@@ -365,7 +387,7 @@ ja:
         desc_html: 全ページに適用されるCSSの編集
         title: カスタムCSS
       hero:
-        desc_html: フロントページに表示されます。サイズは600x100px以上推奨です。未設定の場合、インスタンスのサムネイルが使用されます
+        desc_html: フロントページに表示されます。サイズは600x100px以上推奨です。未設定の場合、標準のサムネイルが使用されます
         title: ヒーローイメージ
       mascot:
         desc_html: 複数のページに表示されます。サイズは293x205px以上推奨です。未設定の場合、標準のマスコットが使用されます
@@ -559,7 +581,9 @@ ja:
       size: 容量
     blocks: ブロック
     csv: CSV
+    domain_blocks: 非表示にしたドメイン
     follows: フォロー
+    lists: リスト
     mutes: ミュート
     storage: メディア
   filters:
@@ -708,6 +732,16 @@ ja:
     no_account_html: アカウントをお持ちではないですか?<a href='%{sign_up_path}' target='_blank'>こちら</a>からサインアップできます
     proceed: フォローする
     prompt: 'フォローしようとしています:'
+  remote_interaction:
+    favourite:
+      proceed: お気に入り登録する
+      prompt: 'お気に入り登録しようとしています:'
+    reblog:
+      proceed: ブーストする
+      prompt: 'ブーストしようとしています:'
+    reply:
+      proceed: 返信する
+      prompt: '返信しようとしています:'
   remote_unfollow:
     error: エラー
     title: タイトル
diff --git a/config/locales/ko.yml b/config/locales/ko.yml
index a15066d19..274b3c2b8 100644
--- a/config/locales/ko.yml
+++ b/config/locales/ko.yml
@@ -92,6 +92,7 @@ ko:
       confirm: 확인
       confirmed: 확인됨
       confirming: 확인 중
+      deleted: 삭제됨
       demote: 모더레이터 강등
       disable: 비활성화
       disable_two_factor_authentication: 2단계 인증을 비활성화
@@ -99,10 +100,10 @@ ko:
       display_name: 이름
       domain: 도메인
       edit: 편집
-      email: E-mail
+      email: 이메일
       email_status: 이메일 상태
       enable: 활성화
-      enabled: 활성화된
+      enabled: 활성
       feed_url: 피드 URL
       followers: 팔로워 수
       followers_local: "(%{local} 로컬)"
@@ -110,7 +111,9 @@ ko:
       follows: 팔로잉 수
       header: 헤더
       inbox_url: 수신함 URL
+      invited_by: 초대자
       ip: IP
+      joined: 가입
       location:
         all: 전체
         local: 로컬
@@ -137,7 +140,7 @@ ko:
       protocol: 프로토콜
       public: 전체 공개
       push_subscription_expires: PuSH 구독 기간 만료
-      redownload: 아바타 업데이트
+      redownload: 프로필 업데이트
       remove_avatar: 아바타 지우기
       remove_header: 헤더 삭제
       resend_confirmation:
@@ -170,6 +173,7 @@ ko:
       undo_suspension: 정지 해제
       unsubscribe: 구독 해제
       username: 아이디
+      warn: 경고
       web: 웹
     action_logs:
       actions:
@@ -253,7 +257,7 @@ ko:
       week_users_active: 이번 주의 활성 사용자
       week_users_new: 이번 주의 신규 유저
     domain_blocks:
-      add_new: 추가하기
+      add_new: 도메인 차단 추가하기
       created_msg: 도메인 차단 처리를 완료했습니다
       destroyed_msg: 도메인 차단이 해제되었습니다
       domain: 도메인
@@ -272,6 +276,11 @@ ko:
       reject_media_hint: 로컬에 저장된 미디어 파일을 삭제하고, 이후로도 다운로드를 거부합니다. 정지와는 관계 없습니다
       reject_reports: 신고 거부
       reject_reports_hint: 이 도메인으로부터의 모든 신고를 무시합니다. 정지와는 무관합니다
+      rejecting_media: 미디어 거부
+      rejecting_reports: 신고 거부
+      severity:
+        silence: 침묵
+        suspend: 정지
       show:
         affected_accounts:
           one: 데이터베이스 중 1개의 계정에 영향을 끼칩니다
@@ -281,7 +290,7 @@ ko:
           suspend: 이 도메인에 존재하는 모든 계정의 계정 정지를 해제
         title: "%{domain}의 도메인 차단을 해제"
         undo: 실행 취소
-      undo: 실행 취소
+      undo: 도메인 차단 취소
     email_domain_blocks:
       add_new: 새로 추가
       created_msg: 이메일 도메인 차단 규칙을 생성했습니다
@@ -296,7 +305,20 @@ ko:
       back_to_account: 계정으로 돌아가기
       title: "%{acct}의 팔로워"
     instances:
-      title: 알려진 인스턴스들
+      delivery_available: 전송 가능
+      known_accounts:
+        one: 알려진 계정 %{count}개
+        other: 알려진 계정 %{count}개
+      moderation:
+        all: 모두
+        limited: 제한됨
+        title: 모더레이션
+      title: 연합
+      total_blocked_by_us: 우리에게 차단 됨
+      total_followed_by_them: 우리를 팔로우
+      total_followed_by_us: 우리가 한 팔로우
+      total_reported: 이들에 대한 신고
+      total_storage: 미디어 첨부
     invites:
       deactivate_all: 전부 비활성화
       filter:
@@ -561,7 +583,9 @@ ko:
       size: 크기
     blocks: 차단
     csv: CSV
+    domain_blocks: 도메인 차단
     follows: 팔로우
+    lists: 리스트
     mutes: 뮤트
     storage: 미디어
   filters:
@@ -710,10 +734,25 @@ ko:
     no_account_html: 계정이 없나요? <a href='%{sign_up_path}' target='_blank'>여기에서 가입 할 수 있습니다</a>
     proceed: 팔로우 하기
     prompt: '팔로우 하려 하고 있습니다:'
+    reason_html: "<strong>왜 이 과정이 필요하죠?</strong><code>%{instance}</code>는 당신이 가입한 서버가 아닐 것입니다, 당신의 홈 서버로 먼저 가야 합니다."
+  remote_interaction:
+    favourite:
+      proceed: 즐겨찾기 진행
+      prompt: '이 툿을 즐겨찾기 하려고 합니다:'
+    reblog:
+      proceed: 부스트 진행
+      prompt: '이 툿을 부스트 하려 합니다:'
+    reply:
+      proceed: 답장 진행
+      prompt: '이 툿에 답장을 하려 합니다:'
   remote_unfollow:
     error: 에러
     title: 타이틀
     unfollowed: 언팔로우됨
+  scheduled_statuses:
+    over_daily_limit: 그 날짜에 대한 %{limit}개의 예약 툿 제한을 초과합니다
+    over_total_limit: 예약 툿 제한 %{limit}을 초과합니다
+    too_soon: 예약 날짜는 미래여야 합니다
   sessions:
     activity: 마지막 활동
     browser: 브라우저
diff --git a/config/locales/nl.yml b/config/locales/nl.yml
index a40467b92..d2bb2801e 100644
--- a/config/locales/nl.yml
+++ b/config/locales/nl.yml
@@ -92,6 +92,7 @@ nl:
       confirm: Bevestigen
       confirmed: Bevestigd
       confirming: Bevestiging
+      deleted: Verwijderd
       demote: Degraderen
       disable: Uitschakelen
       disable_two_factor_authentication: 2FA uitschakelen
@@ -100,7 +101,7 @@ nl:
       domain: Domein
       edit: Bewerken
       email: E-mail
-      email_status: E-mail Status
+      email_status: E-mailstatus
       enable: Inschakelen
       enabled: Ingeschakeld
       feed_url: Feed-URL
@@ -110,7 +111,9 @@ nl:
       follows: Volgt
       header: Omslagfoto
       inbox_url: Inbox-URL
+      invited_by: Uitgenodigd door
       ip: IP
+      joined: Geregistreerd in
       location:
         all: Alles
         local: Lokaal
@@ -137,7 +140,7 @@ nl:
       protocol: Protocol
       public: Openbaar
       push_subscription_expires: PuSH-abonnement verloopt op
-      redownload: Avatar vernieuwen
+      redownload: Profiel vernieuwen
       remove_avatar: Avatar verwijderen
       remove_header: Omslagfoto verwijderen
       resend_confirmation:
@@ -157,8 +160,8 @@ nl:
       search: Zoeken
       shared_inbox_url: Gedeelde inbox-URL
       show:
-        created_reports: Door dit account aangemaakte rapportages
-        targeted_reports: Over dit account aangemaakte rapportages
+        created_reports: Aangemaakte rapportages
+        targeted_reports: Door anderen gerapporteerd
       silence: Negeren
       silenced: Genegeerd
       statuses: Toots
@@ -170,6 +173,7 @@ nl:
       undo_suspension: Niet langer opschorten
       unsubscribe: Opzeggen
       username: Gebruikersnaam
+      warn: Waarschuwen
       web: Webapp
     action_logs:
       actions:
@@ -253,7 +257,7 @@ nl:
       week_users_active: actieve gebruikers deze week
       week_users_new: nieuwe gebruikers deze week
     domain_blocks:
-      add_new: Nieuwe toevoegen
+      add_new: Nieuwe domeinblokkade toevoegen
       created_msg: Domeinblokkade wordt nu verwerkt
       destroyed_msg: Domeinblokkade is ongedaan gemaakt
       domain: Domein
@@ -266,10 +270,15 @@ nl:
           silence: Negeren
           suspend: Opschorten
         title: Nieuwe domeinblokkade
-      reject_media: Mediabestanden verwerpen
+      reject_media: Mediabestanden weigeren
       reject_media_hint: Verwijderd lokaal opgeslagen mediabestanden en weigert deze in de toekomst te downloaden. Irrelevant voor opgeschorte domeinen
       reject_reports: Rapportages weigeren
       reject_reports_hint: Alle rapportages die vanaf dit domein komen negeren. Irrelevant voor opgeschorte domeinen
+      rejecting_media: mediabestanden worden geweigerd
+      rejecting_reports: rapportages worden geweigerd
+      severity:
+        silence: genegeerd
+        suspend: opgeschort
       show:
         affected_accounts:
           one: Eén account in de database aangepast
@@ -279,7 +288,7 @@ nl:
           suspend: Alle opgeschorte accounts van dit domein niet langer opschorten
         title: Domeinblokkade voor %{domain} ongedaan maken
         undo: Ongedaan maken
-      undo: Ongedaan maken
+      undo: domeinblokkade ongedaan maken
     email_domain_blocks:
       add_new: Nieuwe toevoegen
       created_msg: Blokkeren e-maildomein geslaagd
@@ -294,7 +303,20 @@ nl:
       back_to_account: Terug naar account
       title: Volgers van %{acct}
     instances:
-      title: Bekende servers
+      delivery_available: Bezorging is mogelijk
+      known_accounts:
+        one: "%{count} bekend account"
+        other: "%{count} bekende accounts"
+      moderation:
+        all: Alles
+        limited: Beperkt
+        title: Moderatie
+      title: Andere domeinen
+      total_blocked_by_us: Door ons geblokkeerd
+      total_followed_by_them: Door hun gevolgd
+      total_followed_by_us: Door ons gevolgd
+      total_reported: Rapportages over hun
+      total_storage: Mediabijlagen
     invites:
       deactivate_all: Alles deactiveren
       filter:
@@ -559,7 +581,9 @@ nl:
       size: Omvang
     blocks: Jij blokkeert
     csv: CSV
+    domain_blocks: Domeinblokkades
     follows: Jij volgt
+    lists: Lijsten
     mutes: Jij negeert
     storage: Mediaopslag
   filters:
@@ -659,8 +683,8 @@ nl:
         other: "%{count} nieuwe meldingen sinds jouw laatste bezoek \U0001F418"
       title: Tijdens jouw afwezigheid...
     favourite:
-      body: 'Jouw toot werd door %{name} als favoriet gemarkeerd:'
-      subject: "%{name} markeerde jouw toot als favoriet"
+      body: 'Jouw toot werd door %{name} aan hun favorieten toegevoegd:'
+      subject: "%{name} voegde jouw toot als favoriet toe"
       title: Nieuwe favoriet
     follow:
       body: "%{name} volgt jou nu!"
@@ -708,10 +732,25 @@ nl:
     no_account_html: Heb je geen account? Je kunt er <a href='%{sign_up_path}' target='_blank'>hier een registreren</a>
     proceed: Ga verder om te volgen
     prompt: 'Jij gaat volgen:'
+    reason_html: "<strong> Waarom is deze extra stap nodig? </strong> <code>%{instance}</code> is wellicht niet de server waarop jij je geregistreerd hebt. We verwijzen je eerst door naar jouw eigen server."
+  remote_interaction:
+    favourite:
+      proceed: Doorgaan met toevoegen aan jouw favorieten
+      prompt: 'Je wilt de volgende toot aan jouw favorieten toevoegen:'
+    reblog:
+      proceed: Doorgaan met boosten
+      prompt: 'Je wilt de volgende toot boosten:'
+    reply:
+      proceed: Doorgaan met reageren
+      prompt: 'Je wilt op de volgende toot reageren:'
   remote_unfollow:
     error: Fout
     title: Titel
     unfollowed: Ontvolgd
+  scheduled_statuses:
+    over_daily_limit: Je hebt de limiet van %{limit} in te plannen toots voor die dag overschreden
+    over_total_limit: Je hebt de limiet van %{limit} in te plannen toots overschreden
+    too_soon: De datum voor de ingeplande toot moet in de toekomst liggen
   sessions:
     activity: Laatst actief
     browser: Webbrowser
@@ -913,6 +952,10 @@ nl:
       subject: Jouw archief staat klaar om te worden gedownload
       title: Archief ophalen
     warning:
+      explanation:
+        disable: Zolang jouw account is bevroren blijven jouw accountgegevens intact, maar kun je geen handelingen uitvoeren totdat het account is vrijgegeven.
+        silence: Zolang jouw account wordt beperkt, kunnen alleen mensen die jou al volgen jouw toots op deze server zien. Tevens ben je niet zichtbaar in meldingen, gesprekken en op openbare tijdlijnen. Anderen kunnen je echter wel handmatig volgen.
+        suspend: Jouw account is opgeschort. Jouw toots en geüploade media zijn onomkeerbaar van deze server verwijderd, en ook o.a. van de servers waar jij volgers had.
       review_server_policies: Serverbeleid bekijken
       subject:
         disable: Jouw account %{acct} is bevroren
diff --git a/config/locales/oc.yml b/config/locales/oc.yml
index 27eee4f50..c2a257969 100644
--- a/config/locales/oc.yml
+++ b/config/locales/oc.yml
@@ -87,11 +87,12 @@ oc:
         current_email: Adreça actuala
         label: Cambiar d’adreça
         new_email: Novèla adreça
-        submit: Cambiar
+        submit: Cambiar l’adreça
         title: Cambiar l’adreça a %{username}
       confirm: Confirmar
       confirmed: Confirmat
       confirming: Confirmacion
+      deleted: Suprimits
       demote: Retrogradar
       disable: Desactivar
       disable_two_factor_authentication: Desactivar 2FA
@@ -110,7 +111,9 @@ oc:
       follows: Abonaments
       header: Bandièra
       inbox_url: URL de recepcion
+      invited_by: Convidat per
       ip: IP
+      joined: Venguèt
       location:
         all: Totes
         local: Locals
@@ -137,7 +140,7 @@ oc:
       protocol: Protocòl
       public: Public
       push_subscription_expires: Fin de l’abonament PuSH
-      redownload: Actualizar los avatars
+      redownload: Actualizar lo perfil
       remove_avatar: Supriir l’avatar
       remove_header: Levar la bandièra
       resend_confirmation:
@@ -157,8 +160,8 @@ oc:
       search: Cercar
       shared_inbox_url: URL de recepcion partejada
       show:
-        created_reports: Rapòrts creat per aqueste compte
-        targeted_reports: Rapòrts faches tocant aqueste compte
+        created_reports: Senhalaments creats
+        targeted_reports: Senhalaments dels autres
       silence: Silenci
       silenced: Rescondut
       statuses: Estatuts
@@ -170,6 +173,7 @@ oc:
       undo_suspension: Levar la suspension
       unsubscribe: Se desabonar
       username: Nom d’utilizaire
+      warn: Avisar
       web: Web
     action_logs:
       actions:
@@ -253,7 +257,7 @@ oc:
       week_users_active: actius aquesta setmana
       week_users_new: utilizaires aquesta setmana
     domain_blocks:
-      add_new: Ajustar
+      add_new: Ajustar un novèl blocatge de domeni
       created_msg: Domeni blocat es a èsser tractat
       destroyed_msg: Lo blocatge del domeni es estat levat
       domain: Domeni
@@ -270,6 +274,11 @@ oc:
       reject_media_hint: Lèva los fichièrs gardats localament e regèta las demandas de telecargament dins lo futur. Servís pas a res per las suspensions
       reject_reports: Regetar los senhalaments
       reject_reports_hint: Ignorar totes los senhalaments que venon d’aqueste domeni. Pas pertiment per las suspensions
+      rejecting_media: regeta los fichièrs multimèdias
+      rejecting_reports: regeta los senhalements
+      severity:
+        silence: mes en silenci
+        suspend: suspendut
       show:
         affected_accounts:
           one: Un compte de la basa de donadas tocat
@@ -294,7 +303,20 @@ oc:
       back_to_account: Tornar al compte
       title: Seguidors de %{acct}
     instances:
-      title: Instàncias conegudas
+      delivery_available: Liurason disponibla
+      known_accounts:
+        one: "%{count} compte conegut"
+        other: "%{count} comptes coneguts"
+      moderation:
+        all: Totas
+        limited: Limitat
+        title: Moderacion
+      title: Federacion
+      total_blocked_by_us: Avèm blocat
+      total_followed_by_them: Sègon
+      total_followed_by_us: Seguèm
+      total_reported: Senhalament a prepaus d’eles
+      total_storage: Fichièrs junts
     invites:
       deactivate_all: O desactivar tot
       filter:
@@ -615,7 +637,9 @@ oc:
       size: Talha
     blocks: Personas que blocatz
     csv: CSV
+    domain_blocks: Blocatge de domenis
     follows: Personas que seguètz
+    lists: Listas
     mutes: Personas rescondudas
     storage: Mèdias gardats
   filters:
@@ -764,10 +788,25 @@ oc:
     no_account_html: Avètz pas cap de compte ? Podètz <a href='%{sign_up_path}' target='_blank'>vos marcar aquí</a>
     proceed: Clicatz per sègre
     prompt: 'Sètz per sègre :'
+    reason_html: "<strong>Perque aquesta etapa es necessària ?</strong><code>%{instance}</code> es benlèu pas lo servidor ont vos marquèretz, doncas nos cal vos redirigir cap a vòstre prim servidor per començar."
+  remote_interaction:
+    favourite:
+      proceed: Contunhar per metre en favorit
+      prompt: 'Volètz metre en favorit aqueste tut :'
+    reblog:
+      proceed: Contunhar per repartejar
+      prompt: 'Volètz repartejar aqueste tut :'
+    reply:
+      proceed: Contunhar per respondre
+      prompt: 'Volètz respondre a aqueste tut :'
   remote_unfollow:
     error: Error
     title: Títol
     unfollowed: Pas mai seguit
+  scheduled_statuses:
+    over_daily_limit: Avètz passat la limita de %{limit}  tuts programats per aquel jorn
+    over_total_limit: Avètz passat la limita de %{limit}  tuts programats
+    too_soon: La data planificada deu èsser dins lo futur
   sessions:
     activity: Darrièra activitat
     browser: Navigator
diff --git a/config/locales/pl.yml b/config/locales/pl.yml
index 223d68ac3..201667d46 100644
--- a/config/locales/pl.yml
+++ b/config/locales/pl.yml
@@ -117,6 +117,7 @@ pl:
       followers_local: "(%{local} lokalnych)"
       followers_url: Adres śledzących
       follows: Śledzeni
+      header: Nagłówek
       inbox_url: Adres skrzynki
       invited_by: Zaproszony(-a) przez
       ip: Adres IP
@@ -149,6 +150,7 @@ pl:
       push_subscription_expires: Subskrypcja PuSH wygasa
       redownload: Odśwież profil
       remove_avatar: Usun awatar
+      remove_header: Usuń nagłówek
       resend_confirmation:
         already_confirmed: To konto zostało już potwierdzone
         send: Wyślij ponownie e-mail z potwierdzeniem
@@ -280,8 +282,17 @@ pl:
       reject_media_hint: Usuwa przechowywane lokalnie pliki multimedialne i nie pozwala na ich pobieranie. Nieprzydatne przy zawieszeniu
       reject_reports: Odrzucaj zgłoszenia
       reject_reports_hint: Zgłoszenia z tej instancji będą ignorowane. Nieprzydatne przy zawieszeniu
+      rejecting_media: pliki multimedialne są odrzucane
+      rejecting_reports: zgłoszenia są odrzucane
+      severity:
+        silence: wyciszono
+        suspend: zawieszono
       show:
-        affected_accounts: Dotyczy %{count} kont w bazie danych
+        affected_accounts:
+          few: Dotknęło %{count} kont w bazie danych
+          many: Dotknęło %{count} kont w bazie danych
+          one: Dotknęło jedno konto w bazie danych
+          other: Dotknęło %{count} kont w bazie danych
         retroactive:
           silence: Odwołaj wyciszenie wszystkich kont w tej domenie
           suspend: Odwołaj zawieszenie wszystkich kont w tej domenie
@@ -302,7 +313,22 @@ pl:
       back_to_account: Wróć do konta
       title: Śledzący %{acct}
     instances:
+      delivery_available: Doręczanie jest dostępne
+      known_accounts:
+        few: "%{count} znane konta"
+        many: "%{count} znane konta"
+        one: "%{count} znane konto"
+        other: "%{count} znane konta"
+      moderation:
+        all: Wszystkie
+        limited: Ograniczone
+        title: Moderacja
       title: Znane instancje
+      total_blocked_by_us: Zablokowane przez nas
+      total_followed_by_them: Śledzeni przez nich
+      total_followed_by_us: Śledzeni przez nas
+      total_reported: Zgłoszenia dotyczące ich
+      total_storage: Załączniki multimedialne
     invites:
       deactivate_all: Unieważnij wszystkie
       filter:
@@ -569,7 +595,9 @@ pl:
       size: Rozmiar
     blocks: Zablokowani
     csv: CSV
+    domain_blocks: Blokady domen
     follows: Śledzeni
+    lists: Listy
     mutes: Wyciszeni
     storage: Urządzenie przechowujące dane
   filters:
diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml
index a9781bf1e..5d9c9bb0f 100644
--- a/config/locales/pt-BR.yml
+++ b/config/locales/pt-BR.yml
@@ -92,6 +92,7 @@ pt-BR:
       confirm: Confirmar
       confirmed: Confirmado
       confirming: Confirmando
+      deleted: Excluído
       demote: Rebaixar
       disable: Desativar
       disable_two_factor_authentication: Desativar 2FA
@@ -110,7 +111,9 @@ pt-BR:
       follows: Segue
       header: Cabeçalho
       inbox_url: URL da caixa de entrada
+      invited_by: Convidado por
       ip: IP
+      joined: Se cadastrou
       location:
         all: Todos
         local: Local
@@ -137,7 +140,7 @@ pt-BR:
       protocol: Protocolo
       public: Público
       push_subscription_expires: Inscrição PuSH expira
-      redownload: Atualizar avatar
+      redownload: Atualizar perfil
       remove_avatar: Remover avatar
       remove_header: Remover cabeçalho
       resend_confirmation:
@@ -170,6 +173,7 @@ pt-BR:
       undo_suspension: Retirar suspensão
       unsubscribe: Desinscrever-se
       username: Nome de usuário
+      warn: Notificar
       web: Web
     action_logs:
       actions:
@@ -253,7 +257,7 @@ pt-BR:
       week_users_active: ativos essa semana
       week_users_new: usuários essa semana
     domain_blocks:
-      add_new: Adicionar novo
+      add_new: Adicionar novo bloqueio de domínio
       created_msg: Bloqueio de domínio está sendo processado
       destroyed_msg: Bloqueio de domínio desfeito
       domain: Domínio
@@ -270,6 +274,11 @@ pt-BR:
       reject_media_hint: Remove arquivos de mídia armazenados localmente e recusa quaisquer outros no futuro. Irrelevante para suspensões
       reject_reports: Rejeitar denúncias
       reject_reports_hint: Ignorar todas as denúncias vindas deste domíno. Irrelevante para suspensões
+      rejecting_media: rejeitando arquivos de mídia
+      rejecting_reports: rejeitando denúncias
+      severity:
+        silence: silenciado
+        suspend: suspenso
       show:
         affected_accounts:
           one: Uma conta no banco de dados foi afetada
@@ -279,7 +288,7 @@ pt-BR:
           suspend: Retirar suspensão de todas as contas neste domínio
         title: Retirar bloqueio de domínio de %{domain}
         undo: Retirar
-      undo: Retirar
+      undo: Retirar bloqueio de domínio
     email_domain_blocks:
       add_new: Adicionar novo
       created_msg: Bloqueio de domínio de e-mail criado com sucesso
@@ -294,7 +303,20 @@ pt-BR:
       back_to_account: Voltar para a conta
       title: Pessoas que seguem %{acct}
     instances:
-      title: Instâncias conhecidas
+      delivery_available: Entrega está disponível
+      known_accounts:
+        one: "%{count} conta conhecida"
+        other: "%{count} contas conhecidas"
+      moderation:
+        all: Todas
+        limited: Limitado
+        title: Moderação
+      title: Federação
+      total_blocked_by_us: Bloqueado por nós
+      total_followed_by_them: Seguidos por eles
+      total_followed_by_us: Seguidos por nós
+      total_reported: Denúncias sobre eles
+      total_storage: Mídias anexadas
     invites:
       deactivate_all: Desativar todos
       filter:
@@ -535,8 +557,8 @@ pt-BR:
     explanation: Descobrir usuários baseado em seus interesses
     explore_mastodon: Explorar %{title}
     people:
-      one: "%{count} pessoas"
-      other: "%{count} pessoa"
+      one: "%{count} pessoa"
+      other: "%{count} pessoas"
   errors:
     '403': Você não tem permissão para ver esta página.
     '404': A página pela qual você está procurando não existe.
@@ -559,7 +581,9 @@ pt-BR:
       size: Tamanho
     blocks: Você bloqueou
     csv: CSV
+    domain_blocks: Bloqueios de domínio
     follows: Você segue
+    lists: Listas
     mutes: Você silenciou
     storage: Armazenamento de mídia
   filters:
@@ -708,10 +732,25 @@ pt-BR:
     no_account_html: Não tem uma conta? Você pode <a href='%{sign_up_path}' target='_blank'>cadastrar-se aqui</a>
     proceed: Prosseguir para seguir
     prompt: 'Você irá seguir:'
+    reason_html: "<strong>Por que esse passo é necessário?</strong> <code>%{instance}</code> pode não ser o servidor onde você se registrou, então precisamos redirecionar você para o seu servidor primeiro."
+  remote_interaction:
+    favourite:
+      proceed: Proceder para favoritar
+      prompt: 'Você quer favoritar este toot:'
+    reblog:
+      proceed: Proceder para compartilhar
+      prompt: 'Você quer compartilhar esse toot:'
+    reply:
+      proceed: Proceder para responder
+      prompt: 'Você quer responder à esse toot:'
   remote_unfollow:
     error: Erro
     title: Título
     unfollowed: Deixou de seguir
+  scheduled_statuses:
+    over_daily_limit: Você excedeu o limite de %{limit} toots planejados para esse dia
+    over_total_limit: Você excedeu o limite de %{limit} toots planejados
+    too_soon: A data planejada precisa ser no futuro
   sessions:
     activity: Última atividade
     browser: Navegador
diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml
index 6d0a9196f..d6e7942b3 100644
--- a/config/locales/simple_form.de.yml
+++ b/config/locales/simple_form.de.yml
@@ -26,7 +26,7 @@ de:
         password: Verwende mindestens 8 Zeichen
         phrase: Wird unabhängig vom umgebenen Text oder Inhaltswarnung eines Beitrags verglichen
         scopes: Welche Schnittstellen der Applikation erlaubt sind. Wenn du einen Top-Level-Scope auswählst, dann musst du nicht jeden einzelnen darunter auswählen.
-        setting_aggregate_reblogs: Zeige keine neuen Boosts für Beiträge, die nicht kürzlich geboostet wurden (dies betrifft nur neulich erhaltene Boosts)
+        setting_aggregate_reblogs: Zeige denselben Beitrag nicht nochmal an, wenn er erneut geteilt wurde (dies betrifft nur neulich erhaltene erneut geteilte Beiträge)
         setting_default_language: Die Sprache der Beiträge kann automatisch erkannt werden, aber dies ist nicht immer genau
         setting_display_media_default: Verstecke Medien, die als sensibel markiert sind
         setting_display_media_hide_all: Alle Medien immer verstecken
@@ -85,7 +85,7 @@ de:
         otp_attempt: Zwei-Faktor-Authentisierungs-Code
         password: Passwort
         phrase: Schlagwort oder Phrase
-        setting_aggregate_reblogs: Gruppenboosts in Zeitleisten
+        setting_aggregate_reblogs: Gruppiere erneut geteilte Beiträge in Zeitleisten
         setting_auto_play_gif: Animierte GIFs automatisch abspielen
         setting_boost_modal: Bestätigungsdialog anzeigen, bevor ein Beitrag geteilt wird
         setting_default_language: Beitragssprache
diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml
index 21f81ecc2..ee0d4e4fa 100644
--- a/config/locales/simple_form.fr.yml
+++ b/config/locales/simple_form.fr.yml
@@ -8,7 +8,7 @@ fr:
         send_email_notification: L'utilisateur recevra une explication de ce qu'il s'est passé avec son compte
         text_html: Optionnel. Vous pouvez utilisez la syntaxe des pouets. Vous pouvez <a href="%{path}">ajouter des présélections d'attention</a> pour économiser du temps
         type_html: Choisir que faire avec <strong>%{acct}</strong>
-        warning_preset_id: Optionnel. Vous pouvez toujours ajouter un texte personnalisé à la fin de le présélection
+        warning_preset_id: Optionnel. Vous pouvez toujours ajouter un texte personnalisé à la fin de la présélection
       defaults:
         autofollow: Les personnes qui s’inscrivent grâce à l’invitation vous suivront automatiquement
         avatar: Au format PNG, GIF ou JPG. %{size} maximum. Sera réduit à %{dimensions}px
diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml
index ce56f613a..fca5d2af9 100644
--- a/config/locales/simple_form.nl.yml
+++ b/config/locales/simple_form.nl.yml
@@ -2,6 +2,13 @@
 nl:
   simple_form:
     hints:
+      account_warning_preset:
+        text: Je kunt voor toots specifieke tekst gebruiken, zoals URL's, hashtags en vermeldingen
+      admin_account_action:
+        send_email_notification: De gebruiker ontvangt een uitleg over wat er met hun account is gebeurd
+        text_html: Optioneel. Je kunt voor toots specifieke tekst gebruiken. Om tijd te besparen kun je <a href="%{path}">voorinstellingen van waarschuwingen toevoegen</a>
+        type_html: Kies wat er met <strong>%{acct}</strong> moet gebeuren
+        warning_preset_id: Optioneel. Je kunt nog steeds handmatig tekst toevoegen aan het eind van de voorinstelling
       defaults:
         autofollow: Mensen die zich via de uitnodiging hebben geregistreerd, volgen jou automatisch
         avatar: PNG, GIF of JPG. Maximaal %{size}. Wordt teruggeschaald naar %{dimensions}px
@@ -50,6 +57,7 @@ nl:
           disable: Uitschakelen
           none: Niets doen
           silence: Negeren
+          suspend: Opschorten en onomkeerbaar accountgegevens verwijderen
         warning_preset_id: Gebruik een voorinstelling van een waarschuwing
       defaults:
         autofollow: Uitnodigen om jouw account te volgen
@@ -106,7 +114,7 @@ nl:
         must_be_following_dm: Directe berichten van mensen die jij niet volgt blokkeren
       notification_emails:
         digest: Periodiek e-mails met een samenvatting versturen
-        favourite: Een e-mail versturen wanneer iemand jouw toot als favoriet markeert
+        favourite: Een e-mail versturen wanneer iemand jouw toot aan hun favorieten heeft toegevoegd
         follow: Een e-mail versturen wanneer iemand jou volgt
         follow_request: Een e-mail versturen wanneer iemand jou wil volgen
         mention: Een e-mail versturen wanneer iemand jou vermeld
diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml
index 227d9144e..660841e06 100644
--- a/config/locales/simple_form.pl.yml
+++ b/config/locales/simple_form.pl.yml
@@ -16,6 +16,7 @@ pl:
         context: Jedno lub wiele miejsc, w których filtr zostanie zastosowany
         digest: Wysyłane tylko po długiej nieaktywności, jeżeli w tym czasie otrzymaleś jakąś wiadomość bezpośrednią
         discoverable_html: <a href="%{path}" target="_blank">Katalog</a> pozwala znaleźć konta na podstawie zainteresowań i aktywności. Profil musi śledzić przynajmniej %{min_followers} osób
+        email: Otrzymasz e-mail potwierdzający
         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ć
@@ -25,11 +26,15 @@ pl:
         password: Użyj co najmniej 8 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_aggregate_reblogs: Nie pokazuj nowych podbić dla wpisów, które zostały niedawno podbite (dotyczy tylko nowo otrzymanych podbić)
         setting_default_language: Język Twoich wpisów może być wykrywany automatycznie, ale nie zawsze jest to dokładne
+        setting_display_media_default: Ukrywaj zawartość oznaczoną jako wrażliwa
+        setting_display_media_hide_all: Zawsze ukrywaj zawartość multimedialną
         setting_display_media_show_all: Zawsze pokazuj zawartość multimedialną jako wrażliwą
         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
+        username: Twoja nazwa użytkownika będzie niepowtarzalna na %{domain}
         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
@@ -81,14 +86,18 @@ pl:
         password: Hasło
         phrase: Słowo kluczowe lub fraza
         scopes: Do których API aplikacja będzie miała dostęp. Jeżeli wybierzesz zakres wyższego poziomu, nie musisz zaznaczać bardziej szczegółowych.
+        setting_aggregate_reblogs: Grupuj podbicia na osiach czasu
         setting_auto_play_gif: Automatycznie odtwarzaj animowane GIFy
         setting_boost_modal: Pytaj o potwierdzenie przed podbiciem
         setting_default_language: Język wpisów
         setting_default_privacy: Widoczność wpisów
         setting_default_sensitive: Zawsze oznaczaj zawartość multimedialną jako wrażliwą
         setting_delete_modal: Pytaj o potwierdzenie przed usunięciem wpisu
+        setting_display_media: Wyświetlanie zawartości multimedialnej
+        setting_display_media_default: Domyślne
         setting_display_media_hide_all: Ukryj wszystko
         setting_display_media_show_all: Pokaż wszystko
+        setting_expand_spoilers: Zawsze rozwijaj wpisy oznaczone ostrzeżeniem o zawartości
         setting_favourite_modal: Pytaj o potwierdzenie przed dodaniem do ulubionych
         setting_hide_network: Ukryj swoją sieć
         setting_noindex: Nie indeksuj mojego profilu w wyszukiwarkach internetowych
diff --git a/config/locales/simple_form.sk.yml b/config/locales/simple_form.sk.yml
index 48363ea19..f2d26cf02 100644
--- a/config/locales/simple_form.sk.yml
+++ b/config/locales/simple_form.sk.yml
@@ -20,13 +20,13 @@ sk:
         fields: Až štyri položky môžeš mať na svojom profile zobrazené vo forme tabuľky
         header: PNG, GIF, alebo JPG. Maximálne %{size}. Bude zmenšený na %{dimensions}px
         inbox_url: Skopíruj adresu z hlavnej stránky mostíka, ktorý chceš používať
-        irreversible: Vytriedené hlášky zmiznú nenávratne, aj keď triedenie neskôr zrušíš
-        locale: Jazyk užívateľského rozhrania, emailových a nástenkových oboznámení
-        locked: Vyžaduje manuálne schvalovať sledujúcich
+        irreversible: Vytriedené príspevky zmiznú nenávratne, aj keď triedenie neskôr zrušíš
+        locale: Jazyk užívateľského rozhrania, emailových, a nástenkových oboznámení
+        locked: Vyžaduje, aby si manuálne schvaľoval/a následovateľov
         password: Zadaj aspoň osem znakov
         phrase: Zhoda sa nájde nezávisle od toho, či je text napísaný, veľkými, alebo malými písmenami, či už v tele, alebo v hlavičke
         scopes: Ktoré API budú povolené aplikácii pre prístup. Ak vyberieš vrcholný stupeň, nemusíš už potom vyberať po jednom.
-        setting_aggregate_reblogs: Neukazuj nové vyzdvihnutia pre hlášky, ktoré už boli len nedávno povýšené (týka sa iba nanovo získaných vyzdvihnutí)
+        setting_aggregate_reblogs: Neukazuj nové vyzdvihnutia pre príspevky, ktoré už boli len nedávno povýšené (týka sa iba nanovo získaných vyzdvihnutí)
         setting_default_language: Jazyk tvojích príspevkov môže byť zistený automaticky, ale nieje to vždy presné
         setting_display_media_default: Skryť médiá označené ako citlivé
         setting_display_media_hide_all: Vždy ukryť všetky médiá
diff --git a/config/locales/sk.yml b/config/locales/sk.yml
index d038d5a06..46c1ff76b 100644
--- a/config/locales/sk.yml
+++ b/config/locales/sk.yml
@@ -1,16 +1,16 @@
 ---
 sk:
   about:
-    about_hashtag_html: Toto sú verejné hlášky otagované <strong>#%{hashtag}</strong>. Ak máš účet niekde vo fediverse, môžeš ich využívať.
-    about_mastodon_html: Mastodon je sociálna sieť založená na otvorených webových protokoloch a na slobodnom, otvorenom softvéri. Je decentralizovaná podobne ako email.
+    about_hashtag_html: Toto sú verejné príspevky otagované pod <strong>#%{hashtag}</strong>. Ak máš účet hocikde v rámci fediversa, môžeš ich využívať.
+    about_mastodon_html: Mastodon je sociálna sieť založená na otvorených webových protokoloch a na slobodnom softvéri. Je decentralizovaná, podobne ako email.
     about_this: O tejto instancii
     administered_by: 'Správcom je:'
     api: API
-    apps: Mobilné aplikácie
-    closed_registrations: Registrácie sú na tomto serveri momentálne uzatvorené. Avšak, môžeš nájsť nejaký iný Mastodon server kde si založ účet a získaj tak prístup do presne tej istej siete, odtiaľ.
+    apps: Aplikácie
+    closed_registrations: Registrácie sú na tomto serveri momentálne uzatvorené. Avšak, môžeš nájsť nejaký iný Mastodon server kde si založ účet a získaj tak prístup do presne tej istej siete odtiaľ.
     contact: Kontakt
-    contact_missing: Nezadané
-    contact_unavailable: Neuvedené
+    contact_missing: Nezadaný
+    contact_unavailable: Neuvedený
     documentation: Dokumentácia
     extended_description_html: |
       <h3>Pravidlá</h3>
@@ -50,8 +50,8 @@ sk:
       one: Sledujúci
       other: Sledovatelia
     following: Sledovaní
-    joined: Pridal/a sa %{date}
-    last_active: poslednýkrát aktívny
+    joined: Pridal/a sa v %{date}
+    last_active: naposledy aktívny
     link_verified_on: Vlastníctvo tohto odkazu bolo skontrolované %{date}
     media: Médiá
     moved_html: "%{name} účet bol presunutý na %{new_profile_link}:"
@@ -89,13 +89,14 @@ sk:
       change_email:
         changed_msg: Email k tomuto účtu bol úspešne zmenený!
         current_email: Súčastný email
-        label: Zmeniť email
+        label: Zmeň email
         new_email: Nový email
-        submit: Zmeniť email
+        submit: Zmeň email
         title: Zmeň email pre %{username}
       confirm: Potvrdiť
       confirmed: Potvrdený
       confirming: Potvrdzujúci
+      deleted: Zmazané
       demote: Degradovať
       disable: Zablokovať
       disable_two_factor_authentication: Zakázať 2FA
@@ -103,7 +104,7 @@ sk:
       display_name: Zobraziť meno
       domain: Doména
       edit: Uprav
-      email: Emailová adresa
+      email: Email
       email_status: Stav emailu
       enable: Povoliť
       enabled: Povolený
@@ -114,7 +115,9 @@ sk:
       follows: Sledovania
       header: Hlavička
       inbox_url: URL prijatých správ
+      invited_by: Pozvaný/á užívateľom
       ip: IP
+      joined: Pridal/a sa
       location:
         all: Všetko
         local: Miestne
@@ -127,7 +130,7 @@ sk:
         active: Aktívny/a
         all: Všetko
         silenced: Umlčané
-        suspended: Suspendované
+        suspended: Vylúčený/á
         title: Moderácia
       moderation_notes: Moderátorské poznámky
       most_recent_activity: Posledná aktivita
@@ -141,7 +144,7 @@ sk:
       protocol: Protokol
       public: Verejná os
       push_subscription_expires: PuSH odoberanie expiruje
-      redownload: Obnoviť avatar
+      redownload: Obnov profil
       remove_avatar: Odstrániť avatár
       remove_header: Odstráň hlavičku
       resend_confirmation:
@@ -161,8 +164,8 @@ sk:
       search: Hľadať
       shared_inbox_url: URL zdieľanej schránky
       show:
-        created_reports: Reportované týmto používateľom
-        targeted_reports: Nahlásenia pre tento účet
+        created_reports: Vytvorené hlásenia
+        targeted_reports: Nahlásenia od ostatných
       silence: Stíšiť
       silenced: Utíšení
       statuses: Príspevky
@@ -174,6 +177,7 @@ sk:
       undo_suspension: Zrušiť suspendáciu
       unsubscribe: Prestaň odoberať
       username: Prezývka
+      warn: Varovať
       web: Web
     action_logs:
       actions:
@@ -257,7 +261,7 @@ sk:
       week_users_active: aktívni tento týždeň
       week_users_new: užívateľov počas tohto týždňa
     domain_blocks:
-      add_new: Pridať nový
+      add_new: Pridaj nové doménové blokovanie
       created_msg: Doména je v procese blokovania
       destroyed_msg: Blokovanie domény bolo zrušené
       domain: Doména
@@ -274,17 +278,22 @@ sk:
       reject_media_hint: Zmaže lokálne uložené súbory médií a odmietne ich sťahovanie v budúcnosti. Irelevantné pre suspendáciu
       reject_reports: Zamietni hlásenia
       reject_reports_hint: Ignoruj všetky hlásenia prichádzajúce z tejto domény. Nevplýva na blokovania
+      rejecting_media: odmietanie médiálnych súborov
+      rejecting_reports: odmietané hlásenia
+      severity:
+        silence: utíšené
+        suspend: vylúčený
       show:
         affected_accounts:
           few: "%{count} účty v databáze ovplyvnených"
-          one: Jeden účet v databáze ovplyvnený
-          other: "%{count} účtov v databáze ovplyvnených"
+          one: Jeden účet v databáze bol ovplyvnený
+          other: "%{count} účtov v databáze bolo ovplyvnených"
         retroactive:
-          silence: Zrušiť stíšenie všetkých existujúcich účtov z tejto domény
-          suspend: Zrušiť suspendáciu všetkých existujúcich účtov z tejto domény
-        title: Zrušiť blokovanie domény pre %{domain}
+          silence: Zruš stíšenie všetkých existujúcich účtov z tejto domény
+          suspend: Zruš suspendáciu všetkých existujúcich účtov z tejto domény
+        title: Zruš blokovanie domény %{domain}
         undo: Vrátiť späť
-      undo: Späť
+      undo: Odvolaj blokovanie domény
     email_domain_blocks:
       add_new: Pridaj nový
       created_msg: Emailová doména bola úspešne pridaná do zoznamu zakázaných
@@ -299,7 +308,21 @@ sk:
       back_to_account: Späť na účet
       title: Následovatielia užívateľa %{acct}
     instances:
-      title: Známe instancie
+      delivery_available: Je v dosahu doručovania
+      known_accounts:
+        few: "%{count} známe účty"
+        one: "%{count} známy účet"
+        other: "%{count} známe účty"
+      moderation:
+        all: Všetky
+        limited: Obmedzené
+        title: Moderácia
+      title: Federácia
+      total_blocked_by_us: Nami blokované
+      total_followed_by_them: Nimi sledované
+      total_followed_by_us: Nami sledované
+      total_reported: Nahlásenia o nich
+      total_storage: Mediálne prílohy
     invites:
       deactivate_all: Pozastaviť všetky
       filter:
@@ -398,13 +421,13 @@ sk:
           desc_html: Povoliť každému aby si mohli vytvoriť účet
           title: Verejná registrácia
       show_known_fediverse_at_about_page:
-        desc_html: Pokiaľ je zapnuté, bude v ukážke osi možné nahliadnúť príspevky z celého známeho fediversa. Inak budú ukázané iba hlášky z miestnej osi.
-        title: Ukázať celé známe fediversum na náhľade osi
+        desc_html: Pokiaľ je zapnuté, bude v ukážke osi možné nahliadnúť príspevky z celého známeho fediversa. Inak budú ukázané iba príspevky z miestnej osi.
+        title: Ukáž celé známe fediverse na náhľade osi
       show_staff_badge:
-        desc_html: Zobraz moderátorsku značku na užívateľovej stránke
-        title: Zobraziť značku moderátora
+        desc_html: Zobraz moderátorsky odznak na užívateľovom profile
+        title: Zobraz značku moderátora
       site_description:
-        desc_html: Oboznamujúci paragraf na hlavnej stránke a pri meta tagoch. Môžete použiť HTML kód, presnejšie  <code>&lt; a&gt;</code> a <code>&lt; em&gt; </code>.
+        desc_html: Oboznamujúci paragraf na hlavnej stránke a pri meta tagoch. Opíš, čo robí tento Mastodon server špecifickým, a ďalej hocičo iné, čo považuješ za dôležité. Môžeš použiť HTML kód, hlavne <code>&lt; a &gt;</code>, ale tiež <code>&lt;&gt;</code>.
         title: Popis instancie
       site_description_extended:
         desc_html: Toto je vhodné miesto pre vaše pravidlá, oboznámenia a iné veci, ktorými je vaša instancia špecifická. Je možné tu používať HTML kód
@@ -565,7 +588,9 @@ sk:
       size: Veľkosť
     blocks: Blokujete
     csv: CSV
+    domain_blocks: Blokované domény
     follows: Následujete
+    lists: Zoznamy
     mutes: Stíšil/a si
     storage: Úložisko médií
   filters:
@@ -718,10 +743,25 @@ sk:
     no_account_html: Nemáš ešte účet? Môžeš sa <a href='%{sign_up_path}' target='_blank'>zaregistrovať tu</a>
     proceed: Začni následovať
     prompt: 'Budeš sledovať:'
+    reason_html: "<strong>Načo je tento krok potrebný?</strong> <code>%{instance}</code> nemusí byť práve tým serverom na ktorom si zaregistrovaný/á, takže je ťa najprv potrebné presmerovať na tvoj domáci server."
+  remote_interaction:
+    favourite:
+      proceed: Pokračuj k obľúbeniu
+      prompt: 'Chceš si obľúbiť tento príspevok:'
+    reblog:
+      proceed: Pokračuj k vyzdvihnutiu
+      prompt: 'Chceš vyzdvihnúť tento príspevok:'
+    reply:
+      proceed: Pokračuj odpovedaním
+      prompt: 'Chceš odpovedať na tento príspevok:'
   remote_unfollow:
     error: Chyba
     title: Názov
     unfollowed: Už nesleduješ
+  scheduled_statuses:
+    over_daily_limit: Prekročil/a si denný limit %{limit} predplánovaných príspevkov
+    over_total_limit: Prekročil/a si limit %{limit} predplánovaných príspevkov
+    too_soon: Dátum musí byť stanovený do budúcnosti
   sessions:
     activity: Najnovšia aktivita
     browser: Prehliadač
@@ -827,7 +867,7 @@ sk:
       <li><em>Základné informácie o účte</em>: Ak sa na tomto serveri zaregistruješ, budeš môcť byť požiadaný/á zadať prezývku, emailovú adresu a heslo. Budeš tiež môcť zadať aj ďalšie profilové údaje, ako napríklad meno a životopis, a nahrať profilovú fotku aj obrázok v záhlaví. Tvoja prezývka, meno, životopis, profilová fotka a obrázok v záhlaví sú vždy zobrazené verejne.</li><li><em>Príspevky, sledovania a iné verejné informácie</em>:
       Zoznam ľudí, ktorých sleduješ je zobrazený verejne, a to isté platí aj pre zoznam tvojích následovateľov. Keď pošleš správu, ukladá sa jej dátum a čas, ale aj z akej aplikácie bola poslaná. Správy môžu obsahovať mediálne prílohy, ako obrázky a videá. Verejné, a nezaradené príspevky sú verejne prístupné. Keď si pripneš príspevok na svoj profil, toto je tiež verejne dostupnou informáciou. Tvoje príspevky sú takisto doručené tvojím sledovateľom, a to aj v rámci iných serverov, kde je potom uložená kópia tvojho príspevku. Ak vymažeš príspevok, táto akcia bude takisto doručená tvojím sledovateľom. Vyzdvihnutie, alebo obľúbenie iného príspevku je vždy verejne viditeľné.</li>
 
-      <li><em>Priame príspevky, a príspevky iba pre sledovateľov</em>: Všetky príspevky sú uložené a spracované na serveri. Príspevky iba pre sledovateľov sú doručené tvojím sledovateľom a užívateľom ktorí sú v nich spomenutí, pričom priame príspevky sú doručené iba tím užívateľom ktorí sú v nich spomenutí. V niektorých prípadoch to môže znamenať, že tieto príspevkz sú doručené aj vrámci iných serverov, a kópie príspevkov sú tam uložené.
+      <li><em>Priame príspevky, a príspevky iba pre sledovateľov</em>: Všetky príspevky sú uložené a spracované na serveri. Príspevky iba pre sledovateľov sú doručené tvojím sledovateľom a užívateľom ktorí sú v nich spomenutí, pričom priame príspevky sú doručené iba tím užívateľom ktorí sú v nich spomenutí. V niektorých prípadoch to môže znamenať, že tieto príspevkz sú doručené aj v rámci iných serverov, a kópie príspevkov sú na nich uložené.
       V dobrej viere robíme všetko preto, aby bol prístup k tímto príspevkom vymedzený iba pre oprávnených používateľov, ale môže sa stať, že iné servery v tomto ohľade zlyhajú. Preto je dôležité prezrieť si a zhodnotiť, na aké servery patria tvoji následovatelia. V nastaveniach si môžeš zapnúť voľbu ručne povoľovať a odmietať nových následovateľov.
       <em>Prosím maj na pamäti, že správcovia tvojho, aj vzdialeného obdŕžiavajúceho servera majú možnosť vidieť dané príspevky a správy, ale aj že obdŕžitelia týchto správ si ich môzu odfotiť, skopírovať, alebo ich inak zdieľať. <em>Nezdieľaj žiadne nebezpečné, alebo ohrozujúce správy pomocou Mastodonu!</em></li>
 
@@ -869,8 +909,8 @@ sk:
     warning:
       explanation:
         disable: Pokiaľ je tvoj účet zamrazený, tvoje dáta zostávajú nedoknuté, ale nemôžeš v rámci neho nič robiť, až kým nebude odomknutý.
-        silence: Kým je tvoj účet obmedzený, tvoje hlášky na tomto serveri uvidia iba tí ľudia, ktorí ťa už následujú, a môžeš byť vylúčený/á z rôznych verejných záznamov. Ostatní ťa však stále budú môcť následovať manuálne.
-        suspend: Tvoj účet bol vylúčený, a všetky tvoje hlášky a nahraté médiálné súbory boli nenávratne zmazané z tohto serveru, a zo serverov na ktorých si mal následovateľov.
+        silence: Kým je účet obmedzený, tvoje príspevky na tomto serveri uvidia iba tí ľudia, ktorí ťa už následujú, a môžeš byť vylúčený/á z rôznych verejných záznamov. Ostatní ťa však stále budú môcť následovať manuálne.
+        suspend: Tvoj účet bol vylúčený, a všetky tvoje príspevky a nahraté médiálné súbory boli nenávratne zmazané z tohto serveru, a zo serverov na ktorých si mal následovateľov.
       review_server_policies: Prehodnoť pravidlá servera
       subject:
         disable: Tvoj účet %{acct} bol zamrazený
diff --git a/config/locales/te.yml b/config/locales/te.yml
index 39be5b687..06db95676 100644
--- a/config/locales/te.yml
+++ b/config/locales/te.yml
@@ -19,7 +19,7 @@ te:
       humane_approach_body: వేరే సామాజిక మాధ్యమాల వైఫల్యాల నుండి నేర్చుకుని, నైతిక రూపకల్పనలతో సామాజిక మాధ్యమాల దుర్వినియోగంపై  మాస్టొడాన్ పోరాటం చేసే లక్ష్యంతో పనిచేస్తుంది.
       humane_approach_title: మరింత మానవత్వంతో కూడిన విధానం
       not_a_product_body: మాస్టొడాన్ వ్యాపార సంబంధిత మాధ్యమం కాదు. ఎటువంటి ప్రకటనలు, డేటా మైనింగ్, కంచెలు లేనిది. ఏ కేంద్ర అధికరమూ లేదు.
-      not_a_product_title: మీరొక వ్యక్తి, వస్తువు కాదు.
+      not_a_product_title: మీరొక వ్యక్తి, వస్తువు కాదు
       real_conversation_body: With 500 characters at your disposal and support for granular content and media warnings, you can express yourself the way you want to.
       real_conversation_title: నిజమైన సంభాషణలకోసం నిర్మించబడింది
       within_reach_body: ఆండ్రాయిడ్, iOS మరియు ఇతర ప్లాట్ఫాంలకు వివిధరకాల యాప్స్ వున్నాయి. డెవలపర్ సహిత API వ్యవస్థే ఇందుకు మూలకారణం. ఇవి మీ స్ణేహితులతో అన్నివేళలా అందుబాటులో వుండడానికి సహాయపడతాయి.
diff --git a/lib/mastodon/domains_cli.rb b/lib/mastodon/domains_cli.rb
index 16e298584..be68ae84b 100644
--- a/lib/mastodon/domains_cli.rb
+++ b/lib/mastodon/domains_cli.rb
@@ -1,5 +1,6 @@
 # frozen_string_literal: true
 
+require 'concurrent'
 require_relative '../../config/boot'
 require_relative '../../config/environment'
 require_relative 'cli_helper'
@@ -32,5 +33,122 @@ module Mastodon
       say
       say("Removed #{removed} accounts#{dry_run}", :green)
     end
+
+    option :concurrency, type: :numeric, default: 50, aliases: [:c]
+    option :silent, type: :boolean, default: false, aliases: [:s]
+    option :format, type: :string, default: 'summary', aliases: [:f]
+    desc 'crawl [START]', 'Crawl all known peers, optionally beginning at START'
+    long_desc <<-LONG_DESC
+      Crawl the fediverse by using the Mastodon REST API endpoints that expose
+      all known peers, and collect statistics from those peers, as long as those
+      peers support those API endpoints. When no START is given, the command uses
+      this server's own database of known peers to seed the crawl.
+
+      The --concurrency (-c) option controls the number of threads performing HTTP
+      requests at the same time. More threads means the crawl may complete faster.
+
+      The --silent (-s) option controls progress output.
+
+      The --format (-f) option controls how the data is displayed at the end. By
+      default (`summary`), a summary of the statistics is returned. The other options
+      are `domains`, which returns a newline-delimited list of all discovered peers,
+      and `json`, which dumps all the aggregated data raw.
+    LONG_DESC
+    def crawl(start = nil)
+      stats     = Concurrent::Hash.new
+      processed = Concurrent::AtomicFixnum.new(0)
+      failed    = Concurrent::AtomicFixnum.new(0)
+      start_at  = Time.now.to_f
+      seed      = start ? [start] : Account.remote.domains
+
+      pool = Concurrent::ThreadPoolExecutor.new(min_threads: 0, max_threads: options[:concurrency], idletime: 10, auto_terminate: true, max_queue: 0)
+
+      work_unit = ->(domain) do
+        next if stats.key?(domain)
+        stats[domain] = nil
+        processed.increment
+
+        begin
+          Request.new(:get, "https://#{domain}/api/v1/instance").perform do |res|
+            next unless res.code == 200
+            stats[domain] = Oj.load(res.to_s)
+          end
+
+          Request.new(:get, "https://#{domain}/api/v1/instance/peers").perform do |res|
+            next unless res.code == 200
+
+            Oj.load(res.to_s).reject { |peer| stats.key?(peer) }.each do |peer|
+              pool.post(peer, &work_unit)
+            end
+          end
+
+          Request.new(:get, "https://#{domain}/api/v1/instance/activity").perform do |res|
+            next unless res.code == 200
+            stats[domain]['activity'] = Oj.load(res.to_s)
+          end
+
+          say('.', :green, false) unless options[:silent]
+        rescue StandardError
+          failed.increment
+          say('.', :red, false) unless options[:silent]
+        end
+      end
+
+      seed.each do |domain|
+        pool.post(domain, &work_unit)
+      end
+
+      sleep 20
+      sleep 20 until pool.queue_length.zero?
+
+      pool.shutdown
+      pool.wait_for_termination(20)
+    ensure
+      pool.shutdown
+
+      say unless options[:silent]
+
+      case options[:format]
+      when 'summary'
+        stats_to_summary(stats, processed, failed, start_at)
+      when 'domains'
+        stats_to_domains(stats)
+      when 'json'
+        stats_to_json(stats)
+      end
+    end
+
+    private
+
+    def stats_to_summary(stats, processed, failed, start_at)
+      stats.compact!
+
+      total_domains = stats.size
+      total_users   = stats.reduce(0) { |sum, (_key, val)| val.is_a?(Hash) && val['stats'].is_a?(Hash) ? sum + val['stats']['user_count'].to_i : sum }
+      total_active  = stats.reduce(0) { |sum, (_key, val)| val.is_a?(Hash) && val['activity'].is_a?(Array) && val['activity'].size > 2 && val['activity'][1].is_a?(Hash) ? sum + val['activity'][1]['logins'].to_i : sum }
+      total_joined  = stats.reduce(0) { |sum, (_key, val)| val.is_a?(Hash) && val['activity'].is_a?(Array) && val['activity'].size > 2 && val['activity'][1].is_a?(Hash) ? sum + val['activity'][1]['registrations'].to_i : sum }
+
+      say("Visited #{processed.value} domains, #{failed.value} failed (#{(Time.now.to_f - start_at).round}s elapsed)", :green)
+      say("Total servers: #{total_domains}", :green)
+      say("Total registered: #{total_users}", :green)
+      say("Total active last week: #{total_active}", :green)
+      say("Total joined last week: #{total_joined}", :green)
+    end
+
+    def stats_to_domains(stats)
+      say(stats.keys.join("\n"))
+    end
+
+    def stats_to_json(stats)
+      totals.each_key do |domain|
+        if totals[domain].is_a?(Hash)
+          totals[domain]['activity'] = stats[domain]
+        else
+          totals.delete(domain)
+        end
+      end
+
+      say(Oj.dump(totals))
+    end
   end
 end
diff --git a/spec/fixtures/requests/oembed_json_empty.html b/spec/fixtures/requests/oembed_json_empty.html
new file mode 100644
index 000000000..4b02413aa
--- /dev/null
+++ b/spec/fixtures/requests/oembed_json_empty.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <link href='https://host.test/empty_provider.json' rel='alternate' type='application/json+oembed'>
+  </head>
+  <body></body>
+</html>
diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb
index 1ded751ab..3a5e7491e 100644
--- a/spec/rails_helper.rb
+++ b/spec/rails_helper.rb
@@ -29,7 +29,6 @@ Devise::Test::ControllerHelpers.module_eval do
       value: resource.activate_session(warden.request),
       expires: 1.year.from_now,
       httponly: true,
-      same_site: :lax,
     }
   end
 end
diff --git a/spec/services/fetch_oembed_service_spec.rb b/spec/services/fetch_oembed_service_spec.rb
index 706eb3f2a..5789fb53b 100644
--- a/spec/services/fetch_oembed_service_spec.rb
+++ b/spec/services/fetch_oembed_service_spec.rb
@@ -8,6 +8,7 @@ describe FetchOEmbedService, type: :service do
   before do
     stub_request(:get, "https://host.test/provider.json").to_return(status: 404)
     stub_request(:get, "https://host.test/provider.xml").to_return(status: 404)
+    stub_request(:get, "https://host.test/empty_provider.json").to_return(status: 200)
   end
 
   describe 'discover_provider' do
@@ -93,6 +94,23 @@ describe FetchOEmbedService, type: :service do
           expect(subject.call('https://host.test/oembed.html')).to be_nil
         end
       end
+
+      context 'Empty JSON provider is discoverable' do
+        before do
+          stub_request(:get, 'https://host.test/oembed.html').to_return(
+            status: 200,
+            headers: { 'Content-Type': 'text/html' },
+            body: request_fixture('oembed_json_empty.html')
+          )
+        end
+
+        it 'returns new OEmbed::Provider for JSON provider' do
+          subject.call('https://host.test/oembed.html')
+          expect(subject.endpoint_url).to eq 'https://host.test/empty_provider.json'
+          expect(subject.format).to eq :json
+        end
+      end
+
     end
 
     context 'when status code is not 200' do