about summary refs log tree commit diff
diff options
context:
space:
mode:
authorThibaut Girka <thib@sitedethib.com>2020-04-05 18:32:06 +0200
committerThibaut Girka <thib@sitedethib.com>2020-04-05 18:32:06 +0200
commit9101254d0a70bc6f899c093f33300cffceb7c8ac (patch)
treec8e9e95a36ffb2346e3168d00364e4b614bee92a
parent6e426267a762f3cd1efa2c5fb120a13543567775 (diff)
parent85f0e0a606905ecda1322a0f7b65d8b4ff91dd69 (diff)
Merge branch 'master' into glitch-soc/merge-upstream
Conflicts:
- `app/javascript/packs/public.js`:
  Upstream modified code that we split between multiple files due
  to glitch-soc's theming system.
  Ported those changes.
-rw-r--r--.ruby-version2
-rw-r--r--CHANGELOG.md73
-rw-r--r--Dockerfile4
-rw-r--r--Gemfile2
-rw-r--r--Gemfile.lock80
-rw-r--r--app/controllers/api/v1/reports_controller.rb2
-rw-r--r--app/javascript/core/public.js14
-rw-r--r--app/javascript/flavours/glitch/packs/public.js22
-rw-r--r--app/javascript/mastodon/locales/eu.json18
-rw-r--r--app/javascript/mastodon/locales/fi.json40
-rw-r--r--app/javascript/mastodon/locales/fr.json4
-rw-r--r--app/javascript/mastodon/locales/gl.json10
-rw-r--r--app/javascript/mastodon/locales/hu.json2
-rw-r--r--app/javascript/mastodon/locales/pt-PT.json16
-rw-r--r--app/javascript/mastodon/locales/sk.json12
-rw-r--r--app/javascript/mastodon/locales/th.json14
-rw-r--r--app/javascript/packs/public.js22
-rw-r--r--app/lib/entity_cache.rb4
-rw-r--r--app/lib/rate_limiter.rb6
-rw-r--r--app/models/announcement.rb9
-rw-r--r--app/models/report.rb3
-rw-r--r--app/models/status.rb2
-rw-r--r--app/workers/publish_scheduled_announcement_worker.rb15
-rw-r--r--config/locales/activerecord.zh-HK.yml4
-rw-r--r--config/locales/ar.yml32
-rw-r--r--config/locales/ca.yml41
-rw-r--r--config/locales/co.yml41
-rw-r--r--config/locales/de.yml41
-rw-r--r--config/locales/devise.zh-HK.yml16
-rw-r--r--config/locales/doorkeeper.th.yml2
-rw-r--r--config/locales/el.yml17
-rw-r--r--config/locales/es-AR.yml41
-rw-r--r--config/locales/es.yml41
-rw-r--r--config/locales/eu.yml12
-rw-r--r--config/locales/fa.yml50
-rw-r--r--config/locales/fi.yml19
-rw-r--r--config/locales/fr.yml41
-rw-r--r--config/locales/gl.yml41
-rw-r--r--config/locales/hu.yml79
-rw-r--r--config/locales/id.yml9
-rw-r--r--config/locales/is.yml43
-rw-r--r--config/locales/it.yml41
-rw-r--r--config/locales/ja.yml41
-rw-r--r--config/locales/ko.yml41
-rw-r--r--config/locales/nn.yml4
-rw-r--r--config/locales/oc.yml30
-rw-r--r--config/locales/pl.yml122
-rw-r--r--config/locales/pt-BR.yml41
-rw-r--r--config/locales/pt-PT.yml43
-rw-r--r--config/locales/ru.yml42
-rw-r--r--config/locales/simple_form.eu.yml18
-rw-r--r--config/locales/simple_form.fa.yml6
-rw-r--r--config/locales/simple_form.id.yml5
-rw-r--r--config/locales/simple_form.it.yml2
-rw-r--r--config/locales/simple_form.pl.yml1
-rw-r--r--config/locales/simple_form.sk.yml2
-rw-r--r--config/locales/simple_form.ta.yml9
-rw-r--r--config/locales/simple_form.th.yml2
-rw-r--r--config/locales/sk.yml12
-rw-r--r--config/locales/sv.yml2
-rw-r--r--config/locales/ta.yml13
-rw-r--r--config/locales/th.yml61
-rw-r--r--config/locales/zh-CN.yml8
-rw-r--r--config/locales/zh-HK.yml2
-rw-r--r--config/locales/zh-TW.yml2
-rw-r--r--db/migrate/20200312162302_add_status_ids_to_announcements.rb6
-rw-r--r--db/schema.rb1
-rw-r--r--lib/mastodon/version.rb2
-rw-r--r--package.json5
-rw-r--r--yarn.lock32
70 files changed, 1316 insertions, 226 deletions
diff --git a/.ruby-version b/.ruby-version
index 57cf282eb..338a5b5d8 100644
--- a/.ruby-version
+++ b/.ruby-version
@@ -1 +1 @@
-2.6.5
+2.6.6
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 33663c2ad..ad353e2ad 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,79 @@ Changelog
 
 All notable changes to this project will be documented in this file.
 
+## [v3.1.3] - 2020-04-05
+### Added
+
+- Add ability to filter audit log in admin UI ([Gargron](https://github.com/tootsuite/mastodon/pull/13381))
+- Add titles to warning presets in admin UI ([Gargron](https://github.com/tootsuite/mastodon/pull/13252))
+- Add option to include resolved DNS records when blacklisting e-mail domains in admin UI ([Gargron](https://github.com/tootsuite/mastodon/pull/13254))
+- Add ability to delete files uploaded for settings in admin UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13192))
+- Add sorting by username, creation and last activity in admin UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13076))
+- Add explanation as to why unlocked accounts may have follow requests in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13385))
+- Add link to bookmarks to dropdown in web UI ([mayaeh](https://github.com/tootsuite/mastodon/pull/13273))
+- Add support for links to statuses in announcements to be opened in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13212), [ThibG](https://github.com/tootsuite/mastodon/pull/13250))
+- Add tooltips to audio/video player buttons in web UI ([ariasuni](https://github.com/tootsuite/mastodon/pull/13203))
+- Add submit button to the top of preferences pages ([guigeekz](https://github.com/tootsuite/mastodon/pull/13068))
+- Add specific rate limits for posting, following and reporting ([Gargron](https://github.com/tootsuite/mastodon/pull/13172), [Gargron](https://github.com/tootsuite/mastodon/pull/13390))
+  - 300 posts every 3 hours
+  - 400 follows or follow requests every 24 hours
+  - 400 reports every 24 hours
+- Add federation support for the "hide network" preference ([ThibG](https://github.com/tootsuite/mastodon/pull/11673))
+- Add `--skip-media-remove` option to `tootctl statuses remove` ([tateisu](https://github.com/tootsuite/mastodon/pull/13080))
+
+### Changed
+
+- **Change design of polls in web UI** ([Sasha-Sorokin](https://github.com/tootsuite/mastodon/pull/13257), [ThibG](https://github.com/tootsuite/mastodon/pull/13313))
+- Change status click areas in web UI to be bigger ([ariasuni](https://github.com/tootsuite/mastodon/pull/13327))
+- **Change `tootctl media remove-orphans` to work for all classes** ([Gargron](https://github.com/tootsuite/mastodon/pull/13316))
+- **Change local media attachments to perform heavy processing asynchronously** ([Gargron](https://github.com/tootsuite/mastodon/pull/13210))
+- Change video uploads to always be converted to H264/MP4 ([Gargron](https://github.com/tootsuite/mastodon/pull/13220), [ThibG](https://github.com/tootsuite/mastodon/pull/13239), [ThibG](https://github.com/tootsuite/mastodon/pull/13242))
+- Change video uploads to enforce certain limits ([Gargron](https://github.com/tootsuite/mastodon/pull/13218))
+  - Dimensions smaller than 1920x1200px
+  - Frame rate at most 60fps
+- Change the tooltip "Toggle visibility" to "Hide media" in web UI ([ariasuni](https://github.com/tootsuite/mastodon/pull/13199))
+- Change description of privacy levels to be more intuitive in web UI ([ariasuni](https://github.com/tootsuite/mastodon/pull/13197))
+- Change GIF label to be displayed even when autoplay is enabled in web UI ([koyuawsmbrtn](https://github.com/tootsuite/mastodon/pull/13209))
+- Change the string "Hide everything from …" to "Block domain …" in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13178), [mayaeh](https://github.com/tootsuite/mastodon/pull/13221))
+- Change wording of media display preferences to be more intuitive ([ariasuni](https://github.com/tootsuite/mastodon/pull/13198))
+
+### Deprecated
+
+- `POST /api/v1/media` → `POST /api/v2/media` ([Gargron](https://github.com/tootsuite/mastodon/pull/13210))
+
+### Fixed
+
+- Fix `tootctl media remove-orphans` ignoring `PAPERCLIP_ROOT_PATH` ([Gargron](https://github.com/tootsuite/mastodon/pull/13375))
+- Fix returning results when searching for URL with non-zero offset ([Gargron](https://github.com/tootsuite/mastodon/pull/13377))
+- Fix pinning a column in web UI sometimes redirecting out of web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/13376))
+- Fix background jobs not using locks like they are supposed to ([Gargron](https://github.com/tootsuite/mastodon/pull/13361))
+- Fix content warning being unnecessarily cleared when hiding content warning input in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13348))
+- Fix "Show more" not switching to "Show less" on public pages ([ThibG](https://github.com/tootsuite/mastodon/pull/13174))
+- Fix import overwrite option not being selectable ([noellabo](https://github.com/tootsuite/mastodon/pull/13347))
+- Fix wrong color for ellipsis in boost confirmation dialog in web UI ([ariasuni](https://github.com/tootsuite/mastodon/pull/13355))
+- Fix unnecessary unfollowing when importing follows with overwrite option ([noellabo](https://github.com/tootsuite/mastodon/pull/13350))
+- Fix 404 and 410 API errors being silently discarded in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13279))
+- Fix OCR not working on Safari because of unsupported worker-src CSP ([ThibG](https://github.com/tootsuite/mastodon/pull/13323))
+- Fix media not being marked sensitive when a content warning is set with no text ([ThibG](https://github.com/tootsuite/mastodon/pull/13277))
+- Fix crash after deleting announcements in web UI ([codesections](https://github.com/tootsuite/mastodon/pull/13283), [ThibG](https://github.com/tootsuite/mastodon/pull/13312))
+- Fix bookmarks not being searchable ([Kjwon15](https://github.com/tootsuite/mastodon/pull/13271), [noellabo](https://github.com/tootsuite/mastodon/pull/13293))
+- Fix reported accounts not being whitelisted from further spam checks when resolving a spam check report ([ThibG](https://github.com/tootsuite/mastodon/pull/13289))
+- Fix web UI crash in single-column mode on prehistoric browsers ([ThibG](https://github.com/tootsuite/mastodon/pull/13267))
+- Fix some timeouts when searching for URLs ([ThibG](https://github.com/tootsuite/mastodon/pull/13253))
+- Fix detailed view of direct messages displaying a 0 boost count in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13244))
+- Fix regression in “Edit media” modal in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13243))
+- Fix public posts from silenced accounts not being changed to unlisted visibility ([ThibG](https://github.com/tootsuite/mastodon/pull/13096))
+- Fix error when searching for URLs that contain the mention syntax ([ThibG](https://github.com/tootsuite/mastodon/pull/13151))
+- Fix text area above/right of emoji picker being accidentally clickable in web UI ([ariasuni](https://github.com/tootsuite/mastodon/pull/13148))
+- Fix too large announcements not being scrollable in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13211))
+- Fix `tootctl media remove-orphans` crashing when encountering invalid media ([ThibG](https://github.com/tootsuite/mastodon/pull/13170))
+- Fix installation failing when Redis password contains special characters ([ThibG](https://github.com/tootsuite/mastodon/pull/13156))
+- Fix announcements with fully-qualified mentions to local users crashing web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/13164))
+
+### Security
+
+- Fix re-sending of e-mail confirmation not being rate limited ([Gargron](https://github.com/tootsuite/mastodon/pull/13360))
+
 ## [v3.1.2] - 2020-02-27
 ### Added
 
diff --git a/Dockerfile b/Dockerfile
index 77a402a32..0537d8fac 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -38,8 +38,8 @@ RUN apt update && \
 	make -j$(nproc) > /dev/null && \
 	make install_bin install_include install_lib
 
-# Install ruby
-ENV RUBY_VER="2.6.5"
+# Install Ruby
+ENV RUBY_VER="2.6.6"
 ENV CPPFLAGS="-I/opt/jemalloc/include"
 ENV LDFLAGS="-L/opt/jemalloc/lib/"
 RUN apt update && \
diff --git a/Gemfile b/Gemfile
index f110812a6..d77be40c0 100644
--- a/Gemfile
+++ b/Gemfile
@@ -6,7 +6,7 @@ ruby '>= 2.5.0', '< 3.0.0'
 gem 'pkg-config', '~> 1.4'
 
 gem 'puma', '~> 4.3'
-gem 'rails', '~> 5.2.4'
+gem 'rails', '~> 5.2.4.2'
 gem 'sprockets', '~> 3.7.2'
 gem 'thor', '~> 0.20'
 gem 'rack', '~> 2.2.2'
diff --git a/Gemfile.lock b/Gemfile.lock
index 86dccfcc4..d1f6a6214 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -31,25 +31,25 @@ GIT
 GEM
   remote: https://rubygems.org/
   specs:
-    actioncable (5.2.4.1)
-      actionpack (= 5.2.4.1)
+    actioncable (5.2.4.2)
+      actionpack (= 5.2.4.2)
       nio4r (~> 2.0)
       websocket-driver (>= 0.6.1)
-    actionmailer (5.2.4.1)
-      actionpack (= 5.2.4.1)
-      actionview (= 5.2.4.1)
-      activejob (= 5.2.4.1)
+    actionmailer (5.2.4.2)
+      actionpack (= 5.2.4.2)
+      actionview (= 5.2.4.2)
+      activejob (= 5.2.4.2)
       mail (~> 2.5, >= 2.5.4)
       rails-dom-testing (~> 2.0)
-    actionpack (5.2.4.1)
-      actionview (= 5.2.4.1)
-      activesupport (= 5.2.4.1)
+    actionpack (5.2.4.2)
+      actionview (= 5.2.4.2)
+      activesupport (= 5.2.4.2)
       rack (~> 2.0, >= 2.0.8)
       rack-test (>= 0.6.3)
       rails-dom-testing (~> 2.0)
       rails-html-sanitizer (~> 1.0, >= 1.0.2)
-    actionview (5.2.4.1)
-      activesupport (= 5.2.4.1)
+    actionview (5.2.4.2)
+      activesupport (= 5.2.4.2)
       builder (~> 3.1)
       erubi (~> 1.4)
       rails-dom-testing (~> 2.0)
@@ -60,20 +60,20 @@ GEM
       case_transform (>= 0.2)
       jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
     active_record_query_trace (1.7)
-    activejob (5.2.4.1)
-      activesupport (= 5.2.4.1)
+    activejob (5.2.4.2)
+      activesupport (= 5.2.4.2)
       globalid (>= 0.3.6)
-    activemodel (5.2.4.1)
-      activesupport (= 5.2.4.1)
-    activerecord (5.2.4.1)
-      activemodel (= 5.2.4.1)
-      activesupport (= 5.2.4.1)
+    activemodel (5.2.4.2)
+      activesupport (= 5.2.4.2)
+    activerecord (5.2.4.2)
+      activemodel (= 5.2.4.2)
+      activesupport (= 5.2.4.2)
       arel (>= 9.0)
-    activestorage (5.2.4.1)
-      actionpack (= 5.2.4.1)
-      activerecord (= 5.2.4.1)
+    activestorage (5.2.4.2)
+      actionpack (= 5.2.4.2)
+      activerecord (= 5.2.4.2)
       marcel (~> 0.3.1)
-    activesupport (5.2.4.1)
+    activesupport (5.2.4.2)
       concurrent-ruby (~> 1.0, >= 1.0.2)
       i18n (>= 0.7, < 2)
       minitest (~> 5.1)
@@ -361,7 +361,7 @@ GEM
     mime-types (3.3.1)
       mime-types-data (~> 3.2015)
     mime-types-data (3.2019.1009)
-    mimemagic (0.3.3)
+    mimemagic (0.3.4)
     mini_mime (1.0.2)
     mini_portile2 (2.4.0)
     minitest (5.14.0)
@@ -374,7 +374,7 @@ GEM
       net-ssh (>= 2.6.5, < 6.0.0)
     net-ssh (5.2.0)
     nio4r (2.5.2)
-    nokogiri (1.10.8)
+    nokogiri (1.10.9)
       mini_portile2 (~> 2.4.0)
     nokogumbo (2.0.1)
       nokogiri (~> 1.8, >= 1.8.4)
@@ -451,18 +451,18 @@ GEM
       rack
     rack-test (1.1.0)
       rack (>= 1.0, < 3)
-    rails (5.2.4.1)
-      actioncable (= 5.2.4.1)
-      actionmailer (= 5.2.4.1)
-      actionpack (= 5.2.4.1)
-      actionview (= 5.2.4.1)
-      activejob (= 5.2.4.1)
-      activemodel (= 5.2.4.1)
-      activerecord (= 5.2.4.1)
-      activestorage (= 5.2.4.1)
-      activesupport (= 5.2.4.1)
+    rails (5.2.4.2)
+      actioncable (= 5.2.4.2)
+      actionmailer (= 5.2.4.2)
+      actionpack (= 5.2.4.2)
+      actionview (= 5.2.4.2)
+      activejob (= 5.2.4.2)
+      activemodel (= 5.2.4.2)
+      activerecord (= 5.2.4.2)
+      activestorage (= 5.2.4.2)
+      activesupport (= 5.2.4.2)
       bundler (>= 1.3.0)
-      railties (= 5.2.4.1)
+      railties (= 5.2.4.2)
       sprockets-rails (>= 2.0.0)
     rails-controller-testing (1.0.4)
       actionpack (>= 5.0.1.x)
@@ -478,9 +478,9 @@ GEM
       railties (>= 5.0, < 6)
     rails-settings-cached (0.6.6)
       rails (>= 4.2.0)
-    railties (5.2.4.1)
-      actionpack (= 5.2.4.1)
-      activesupport (= 5.2.4.1)
+    railties (5.2.4.2)
+      actionpack (= 5.2.4.2)
+      activesupport (= 5.2.4.2)
       method_source
       rake (>= 0.8.7)
       thor (>= 0.19.0, < 2.0)
@@ -631,7 +631,7 @@ GEM
     tty-screen (0.7.1)
     twitter-text (1.14.7)
       unf (~> 0.1.0)
-    tzinfo (1.2.6)
+    tzinfo (1.2.7)
       thread_safe (~> 0.1)
     tzinfo-data (1.2019.3)
       tzinfo (>= 1.0.0)
@@ -753,7 +753,7 @@ DEPENDENCIES
   rack (~> 2.2.2)
   rack-attack (~> 6.2)
   rack-cors (~> 1.1)
-  rails (~> 5.2.4)
+  rails (~> 5.2.4.2)
   rails-controller-testing (~> 1.0)
   rails-i18n (~> 5.1)
   rails-settings-cached (~> 0.6)
diff --git a/app/controllers/api/v1/reports_controller.rb b/app/controllers/api/v1/reports_controller.rb
index 66c40f6f4..e10083d45 100644
--- a/app/controllers/api/v1/reports_controller.rb
+++ b/app/controllers/api/v1/reports_controller.rb
@@ -4,6 +4,8 @@ class Api::V1::ReportsController < Api::BaseController
   before_action -> { doorkeeper_authorize! :write, :'write:reports' }, only: [:create]
   before_action :require_user!
 
+  override_rate_limit_headers :create, family: :reports
+
   def create
     @report = ReportService.new.call(
       current_account,
diff --git a/app/javascript/core/public.js b/app/javascript/core/public.js
index 344c05181..39f198fe7 100644
--- a/app/javascript/core/public.js
+++ b/app/javascript/core/public.js
@@ -14,20 +14,6 @@ delegate(document, '.webapp-btn', 'click', ({ target, button }) => {
   return false;
 });
 
-delegate(document, '.status__content__spoiler-link', 'click', function() {
-  const contentEl = this.parentNode.parentNode.querySelector('.e-content');
-
-  if (contentEl.style.display === 'block') {
-    contentEl.style.display = 'none';
-    this.parentNode.style.marginBottom = 0;
-  } else {
-    contentEl.style.display = 'block';
-    this.parentNode.style.marginBottom = null;
-  }
-
-  return false;
-});
-
 delegate(document, '.modal-button', 'click', e => {
   e.preventDefault();
 
diff --git a/app/javascript/flavours/glitch/packs/public.js b/app/javascript/flavours/glitch/packs/public.js
index 066479fa6..e5a567205 100644
--- a/app/javascript/flavours/glitch/packs/public.js
+++ b/app/javascript/flavours/glitch/packs/public.js
@@ -97,6 +97,28 @@ function main() {
 
     delegate(document, '.custom-emoji', 'mouseover', getEmojiAnimationHandler('data-original'));
     delegate(document, '.custom-emoji', 'mouseout', getEmojiAnimationHandler('data-static'));
+
+    delegate(document, '.status__content__spoiler-link', 'click', function() {
+      const contentEl = this.parentNode.parentNode.querySelector('.e-content');
+
+      if (contentEl.style.display === 'block') {
+        contentEl.style.display = 'none';
+        this.parentNode.style.marginBottom = 0;
+        this.textContent = (new IntlMessageFormat(messages['status.show_more'] || 'Show more', locale)).format();
+      } else {
+        contentEl.style.display = 'block';
+        this.parentNode.style.marginBottom = null;
+        this.textContent = (new IntlMessageFormat(messages['status.show_less'] || 'Show less', locale)).format();
+      }
+
+      return false;
+    });
+
+    [].forEach.call(document.querySelectorAll('.status__content__spoiler-link'), (spoilerLink) => {
+      const contentEl = spoilerLink.parentNode.parentNode.querySelector('.e-content');
+      const message = (contentEl.style.display === 'block') ? (messages['status.show_less'] || 'Show less') : (messages['status.show_more'] || 'Show more');
+      spoilerLink.textContent = (new IntlMessageFormat(message, locale)).format();
+    });
   });
 
   delegate(document, '.sidebar__toggle__icon', 'click', () => {
diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json
index 5dc4e60c2..3a44dceb5 100644
--- a/app/javascript/mastodon/locales/eu.json
+++ b/app/javascript/mastodon/locales/eu.json
@@ -27,8 +27,8 @@
   "account.mute_notifications": "Mututu @{name}(r)en jakinarazpenak",
   "account.muted": "Mutututa",
   "account.never_active": "Inoiz ez",
-  "account.posts": "Tootak",
-  "account.posts_with_replies": "Toot-ak eta erantzunak",
+  "account.posts": "Toot",
+  "account.posts_with_replies": "Tootak eta erantzunak",
   "account.report": "Salatu @{name}",
   "account.requested": "Onarpenaren zain. Klikatu jarraitzeko eskaera ezeztatzeko",
   "account.share": "@{name}(e)ren profila elkarbanatu",
@@ -64,7 +64,7 @@
   "column.lists": "Zerrendak",
   "column.mutes": "Mutututako erabiltzaileak",
   "column.notifications": "Jakinarazpenak",
-  "column.pins": "Finkatutako toot-ak",
+  "column.pins": "Finkatutako tootak",
   "column.public": "Federatutako denbora-lerroa",
   "column_back_button.label": "Atzera",
   "column_header.hide_settings": "Ezkutatu ezarpenak",
@@ -140,7 +140,7 @@
   "emoji_button.search_results": "Bilaketaren emaitzak",
   "emoji_button.symbols": "Sinboloak",
   "emoji_button.travel": "Bidaiak eta tokiak",
-  "empty_column.account_timeline": "Ez dago toot-ik hemen!",
+  "empty_column.account_timeline": "Ez dago tootik hemen!",
   "empty_column.account_unavailable": "Profila ez dago eskuragarri",
   "empty_column.blocks": "Ez duzu erabiltzailerik blokeatu oraindik.",
   "empty_column.bookmarked_statuses": "Oraindik ez dituzu toot laster-markatutarik. Bat laster-markatzerakoan, hemen agertuko da.",
@@ -228,7 +228,7 @@
   "keyboard_shortcuts.my_profile": "zure profila irekitzeko",
   "keyboard_shortcuts.notifications": "jakinarazpenen zutabea irekitzeko",
   "keyboard_shortcuts.open_media": "media zabaltzeko",
-  "keyboard_shortcuts.pinned": "finkatutako toot-en zerrenda irekitzeko",
+  "keyboard_shortcuts.pinned": "finkatutako tooten zerrenda irekitzeko",
   "keyboard_shortcuts.profile": "egilearen profila irekitzeko",
   "keyboard_shortcuts.reply": "erantzutea",
   "keyboard_shortcuts.requests": "jarraitzeko eskarien zerrenda irekitzeko",
@@ -277,7 +277,7 @@
   "navigation_bar.logout": "Amaitu saioa",
   "navigation_bar.mutes": "Mutututako erabiltzaileak",
   "navigation_bar.personal": "Pertsonala",
-  "navigation_bar.pins": "Finkatutako toot-ak",
+  "navigation_bar.pins": "Finkatutako tootak",
   "navigation_bar.preferences": "Hobespenak",
   "navigation_bar.public_timeline": "Federatutako denbora-lerroa",
   "navigation_bar.security": "Segurtasuna",
@@ -352,8 +352,8 @@
   "search_popout.tips.user": "erabiltzailea",
   "search_results.accounts": "Jendea",
   "search_results.hashtags": "Traolak",
-  "search_results.statuses": "Toot-ak",
-  "search_results.statuses_fts_disabled": "Mastodon zerbitzari honek ez du Toot-en edukiaren bilaketa gaitu.",
+  "search_results.statuses": "Tootak",
+  "search_results.statuses_fts_disabled": "Mastodon zerbitzari honek ez du tooten edukiaren bilaketa gaitu.",
   "search_results.total": "{count, number} {count, plural, one {emaitza} other {emaitza}}",
   "status.admin_account": "Ireki @{name} erabiltzailearen moderazio interfazea",
   "status.admin_status": "Ireki mezu hau moderazio interfazean",
@@ -376,7 +376,7 @@
   "status.mute_conversation": "Mututu elkarrizketa",
   "status.open": "Hedatu mezu hau",
   "status.pin": "Finkatu profilean",
-  "status.pinned": "Finkatutako toot-a",
+  "status.pinned": "Finkatutako toota",
   "status.read_more": "Irakurri gehiago",
   "status.reblog": "Bultzada",
   "status.reblog_private": "Bultzada jatorrizko hartzaileei",
diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json
index b46083477..32bc8de49 100644
--- a/app/javascript/mastodon/locales/fi.json
+++ b/app/javascript/mastodon/locales/fi.json
@@ -1,7 +1,7 @@
 {
   "account.add_or_remove_from_list": "Lisää tai poista listoilta",
   "account.badges.bot": "Botti",
-  "account.badges.group": "Group",
+  "account.badges.group": "Ryhmä",
   "account.block": "Estä @{name}",
   "account.block_domain": "Piilota kaikki sisältö verkkotunnuksesta {domain}",
   "account.blocked": "Estetty",
@@ -34,7 +34,7 @@
   "account.share": "Jaa käyttäjän @{name} profiili",
   "account.show_reblogs": "Näytä buustaukset käyttäjältä @{name}",
   "account.unblock": "Salli @{name}",
-  "account.unblock_domain": "Näytä {domain}",
+  "account.unblock_domain": "Salli {domain}",
   "account.unendorse": "Poista suosittelu profiilistasi",
   "account.unfollow": "Lakkaa seuraamasta",
   "account.unmute": "Poista käyttäjän @{name} mykistys",
@@ -43,7 +43,7 @@
   "alert.rate_limited.title": "Määrää rajoitettu",
   "alert.unexpected.message": "Tapahtui odottamaton virhe.",
   "alert.unexpected.title": "Hups!",
-  "announcement.announcement": "Announcement",
+  "announcement.announcement": "Ilmoitus",
   "autosuggest_hashtag.per_week": "{count} viikossa",
   "boost_modal.combo": "Ensi kerralla voit ohittaa tämän painamalla {combo}",
   "bundle_column_error.body": "Jokin meni vikaan komponenttia ladattaessa.",
@@ -85,8 +85,8 @@
   "compose_form.poll.duration": "Äänestyksen kesto",
   "compose_form.poll.option_placeholder": "Valinta numero",
   "compose_form.poll.remove_option": "Poista tämä valinta",
-  "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices",
-  "compose_form.poll.switch_to_single": "Change poll to allow for a single choice",
+  "compose_form.poll.switch_to_multiple": "Muuta kysely monivalinnaksi",
+  "compose_form.poll.switch_to_single": "Muuta kysely sallimaan vain yksi valinta",
   "compose_form.publish": "Tuuttaa",
   "compose_form.publish_loud": "Julkista!",
   "compose_form.sensitive.hide": "Valitse tämä arkaluontoisena",
@@ -143,7 +143,7 @@
   "empty_column.account_timeline": "Ei ole 'toots' täällä!",
   "empty_column.account_unavailable": "Profiilia ei löydy",
   "empty_column.blocks": "Et ole vielä estänyt yhtään käyttäjää.",
-  "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.",
+  "empty_column.bookmarked_statuses": "Et ole vielä lisännyt tuuttauksia kirjanmerkkeihisi. Kun teet niin, tuuttaus näkyy tässä.",
   "empty_column.community": "Paikallinen aikajana on tyhjä. Homma lähtee käyntiin, kun kirjoitat jotain julkista!",
   "empty_column.direct": "Sinulla ei ole vielä yhtään viestiä yksittäiselle käyttäjälle. Kun lähetät tai vastaanotat sellaisen, se näkyy täällä.",
   "empty_column.domain_blocks": "Yhtään verkko-osoitetta ei ole vielä piilotettu.",
@@ -160,7 +160,7 @@
   "empty_column.public": "Täällä ei ole mitään! Saat sisältöä, kun kirjoitat jotain julkisesti tai käyt seuraamassa muiden instanssien käyttäjiä",
   "error.unexpected_crash.explanation": "Sivua ei voi näyttää oikein, johtuen bugista tai ongelmasta selaimen yhteensopivuudessa.",
   "error.unexpected_crash.next_steps": "Kokeile päivittää sivu. Jos tämä ei auta, saatat yhä pystyä käyttämään Mastodonia toisen selaimen tai sovelluksen kautta.",
-  "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
+  "errors.unexpected_crash.copy_stacktrace": "Kopioi stacktrace leikepöydälle",
   "errors.unexpected_crash.report_issue": "Ilmoita ongelmasta",
   "follow_request.authorize": "Valtuuta",
   "follow_request.reject": "Hylkää",
@@ -184,8 +184,8 @@
   "home.column_settings.basic": "Perusasetukset",
   "home.column_settings.show_reblogs": "Näytä buustaukset",
   "home.column_settings.show_replies": "Näytä vastaukset",
-  "home.hide_announcements": "Hide announcements",
-  "home.show_announcements": "Show announcements",
+  "home.hide_announcements": "Piilota ilmoitukset",
+  "home.show_announcements": "Näytä ilmoitukset",
   "intervals.full.days": "Päivä päiviä",
   "intervals.full.hours": "Tunti tunteja",
   "intervals.full.minutes": "Minuuti minuuteja",
@@ -215,7 +215,7 @@
   "keyboard_shortcuts.direct": "avaa pikaviestisarake",
   "keyboard_shortcuts.down": "siirry listassa alaspäin",
   "keyboard_shortcuts.enter": "avaa tilapäivitys",
-  "keyboard_shortcuts.favourite": "tykkää",
+  "keyboard_shortcuts.favourite": "lisää suosikkeihin",
   "keyboard_shortcuts.favourites": "avaa lista suosikeista",
   "keyboard_shortcuts.federated": "avaa yleinen aikajana",
   "keyboard_shortcuts.heading": "Näppäinkomennot",
@@ -227,7 +227,7 @@
   "keyboard_shortcuts.muted": "avaa lista mykistetyistä käyttäjistä",
   "keyboard_shortcuts.my_profile": "avaa profiilisi",
   "keyboard_shortcuts.notifications": "avaa ilmoitukset-sarake",
-  "keyboard_shortcuts.open_media": "to open media",
+  "keyboard_shortcuts.open_media": "median avaus",
   "keyboard_shortcuts.pinned": "avaa lista kiinnitetyistä tuuttauksista",
   "keyboard_shortcuts.profile": "avaa kirjoittajan profiili",
   "keyboard_shortcuts.reply": "vastaa",
@@ -260,7 +260,7 @@
   "mute_modal.hide_notifications": "Piilota tältä käyttäjältä tulevat ilmoitukset?",
   "navigation_bar.apps": "Mobiilisovellukset",
   "navigation_bar.blocks": "Estetyt käyttäjät",
-  "navigation_bar.bookmarks": "Bookmarks",
+  "navigation_bar.bookmarks": "Kirjanmerkit",
   "navigation_bar.community_timeline": "Paikallinen aikajana",
   "navigation_bar.compose": "Kirjoita uusi tuuttaus",
   "navigation_bar.direct": "Viestit",
@@ -283,9 +283,9 @@
   "navigation_bar.security": "Tunnukset",
   "notification.favourite": "{name} tykkäsi tilastasi",
   "notification.follow": "{name} seurasi sinua",
-  "notification.follow_request": "{name} has requested to follow you",
+  "notification.follow_request": "{name} haluaa seurata sinua",
   "notification.mention": "{name} mainitsi sinut",
-  "notification.own_poll": "Your poll has ended",
+  "notification.own_poll": "Kyselysi on päättynyt",
   "notification.poll": "Kysely, johon osallistuit, on päättynyt",
   "notification.reblog": "{name} buustasi tilaasi",
   "notifications.clear": "Tyhjennä ilmoitukset",
@@ -296,7 +296,7 @@
   "notifications.column_settings.filter_bar.category": "Pikasuodatuspalkki",
   "notifications.column_settings.filter_bar.show": "Näytä",
   "notifications.column_settings.follow": "Uudet seuraajat:",
-  "notifications.column_settings.follow_request": "New follow requests:",
+  "notifications.column_settings.follow_request": "Uudet seuraamispyynnöt:",
   "notifications.column_settings.mention": "Maininnat:",
   "notifications.column_settings.poll": "Kyselyn tulokset:",
   "notifications.column_settings.push": "Push-ilmoitukset",
@@ -335,7 +335,7 @@
   "relative_time.just_now": "nyt",
   "relative_time.minutes": "{number} m",
   "relative_time.seconds": "{number} s",
-  "relative_time.today": "today",
+  "relative_time.today": "tänään",
   "reply_indicator.cancel": "Peruuta",
   "report.forward": "Välitä kohteeseen {target}",
   "report.forward_hint": "Tämä tili on toisella palvelimella. Haluatko lähettää nimettömän raportin myös sinne?",
@@ -358,7 +358,7 @@
   "status.admin_account": "Avaa moderaattorinäkymä tilistä @{name}",
   "status.admin_status": "Avaa tilapäivitys moderaattorinäkymässä",
   "status.block": "Estä @{name}",
-  "status.bookmark": "Bookmark",
+  "status.bookmark": "Tallenna kirjanmerkki",
   "status.cancel_reblog_private": "Peru buustaus",
   "status.cannot_reblog": "Tätä julkaisua ei voi buustata",
   "status.copy": "Kopioi linkki tilapäivitykseen",
@@ -383,7 +383,7 @@
   "status.reblogged_by": "{name} buustasi",
   "status.reblogs.empty": "Kukaan ei ole vielä buustannut tätä tuuttausta. Kun joku tekee niin, näkyy kyseinen henkilö tässä.",
   "status.redraft": "Poista & palauta muokattavaksi",
-  "status.remove_bookmark": "Remove bookmark",
+  "status.remove_bookmark": "Poista kirjanmerkki",
   "status.reply": "Vastaa",
   "status.replyAll": "Vastaa ketjuun",
   "status.report": "Raportoi @{name}",
@@ -416,11 +416,11 @@
   "upload_button.label": "Lisää mediaa",
   "upload_error.limit": "Tiedostolatauksien raja ylitetty.",
   "upload_error.poll": "Tiedon lataaminen ei ole sallittua kyselyissä.",
-  "upload_form.audio_description": "Describe for people with hearing loss",
+  "upload_form.audio_description": "Kuvaile kuulovammaisille",
   "upload_form.description": "Anna kuvaus näkörajoitteisia varten",
   "upload_form.edit": "Muokkaa",
   "upload_form.undo": "Peru",
-  "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
+  "upload_form.video_description": "Kuvaile kuulo- tai näkövammaisille",
   "upload_modal.analyzing_picture": "Analysoidaan kuvaa…",
   "upload_modal.apply": "Käytä",
   "upload_modal.description_placeholder": "Eräänä jäätävänä ja pimeänä yönä gorilla ratkaisi sudokun kahdessa minuutissa",
diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json
index c2f01b0af..cf07cd3db 100644
--- a/app/javascript/mastodon/locales/fr.json
+++ b/app/javascript/mastodon/locales/fr.json
@@ -3,11 +3,11 @@
   "account.badges.bot": "Robot",
   "account.badges.group": "Groupe",
   "account.block": "Bloquer @{name}",
-  "account.block_domain": "Tout masquer venant de {domain}",
+  "account.block_domain": "Bloquer le domaine {domain}",
   "account.blocked": "Bloqué·e",
   "account.cancel_follow_request": "Annuler la demande de suivi",
   "account.direct": "Envoyer un message direct à @{name}",
-  "account.domain_blocked": "Domaine caché",
+  "account.domain_blocked": "Domaine bloqué",
   "account.edit_profile": "Modifier le profil",
   "account.endorse": "Recommander sur le profil",
   "account.follow": "Suivre",
diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json
index c11309ea9..f26b39c21 100644
--- a/app/javascript/mastodon/locales/gl.json
+++ b/app/javascript/mastodon/locales/gl.json
@@ -128,7 +128,7 @@
   "embed.preview": "Así será mostrado:",
   "emoji_button.activity": "Actividade",
   "emoji_button.custom": "Personalizado",
-  "emoji_button.flags": "Bandeiras",
+  "emoji_button.flags": "Marcas",
   "emoji_button.food": "Comida e Bebida",
   "emoji_button.label": "Inserir emoticona",
   "emoji_button.nature": "Natureza",
@@ -270,7 +270,7 @@
   "navigation_bar.favourites": "Favoritos",
   "navigation_bar.filters": "Palabras silenciadas",
   "navigation_bar.follow_requests": "Peticións de seguimento",
-  "navigation_bar.follows_and_followers": "Seguindo e seguidores",
+  "navigation_bar.follows_and_followers": "Seguindo e seguidoras",
   "navigation_bar.info": "Sobre este servidor",
   "navigation_bar.keyboard_shortcuts": "Atallos do teclado",
   "navigation_bar.lists": "Listaxes",
@@ -321,7 +321,7 @@
   "privacy.change": "Axustar privacidade",
   "privacy.direct.long": "Só para as usuarias mencionadas",
   "privacy.direct.short": "Directo",
-  "privacy.private.long": "Só para os seguidores",
+  "privacy.private.long": "Só para os seguidoras",
   "privacy.private.short": "Só para seguidoras",
   "privacy.public.long": "Publicar nas cronoloxías públicas",
   "privacy.public.short": "Público",
@@ -365,7 +365,7 @@
   "status.delete": "Eliminar",
   "status.detailed_status": "Vista detallada da conversa",
   "status.direct": "Mensaxe directa a @{name}",
-  "status.embed": "Embeber nunha web",
+  "status.embed": "Incrustar",
   "status.favourite": "Favorito",
   "status.filtered": "Filtrado",
   "status.load_more": "Cargar máis",
@@ -411,7 +411,7 @@
   "time_remaining.seconds": "{number, plural, one {# segundo} other {# segundos}} restantes",
   "trends.count_by_accounts": "{count} {rawCount, plural, one {persoa} other {persoas}} falando",
   "trends.trending_now": "Tendencias actuais",
-  "ui.beforeunload": "O borrador perderase se saes do Mastodon.",
+  "ui.beforeunload": "O borrador perderase se saes de Mastodon.",
   "upload_area.title": "Arrastra e solta para subir",
   "upload_button.label": "Engadir multimedia ({formats})",
   "upload_error.limit": "Límite máximo do ficheiro a subir excedido.",
diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json
index b25369326..d2d851436 100644
--- a/app/javascript/mastodon/locales/hu.json
+++ b/app/javascript/mastodon/locales/hu.json
@@ -130,7 +130,7 @@
   "emoji_button.custom": "Egyéni",
   "emoji_button.flags": "Zászlók",
   "emoji_button.food": "Étel és Ital",
-  "emoji_button.label": "Emoji beszúrása",
+  "emoji_button.label": "Emodzsi beszúrása",
   "emoji_button.nature": "Természet",
   "emoji_button.not_found": "Nincsenek emodzsik!! (╯°□°)╯︵ ┻━┻",
   "emoji_button.objects": "Tárgyak",
diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json
index 03bc363ae..b8902d65e 100644
--- a/app/javascript/mastodon/locales/pt-PT.json
+++ b/app/javascript/mastodon/locales/pt-PT.json
@@ -17,9 +17,9 @@
   "account.follows.empty": "Este utilizador ainda não segue alguém.",
   "account.follows_you": "É teu seguidor",
   "account.hide_reblogs": "Esconder partilhas de @{name}",
-  "account.last_status": "Última actividade",
+  "account.last_status": "Última atividade",
   "account.link_verified_on": "A posse deste link foi verificada em {date}",
-  "account.locked_info": "O estatuto de privacidade desta conta é fechado. O dono revê manualmente que a pode seguir.",
+  "account.locked_info": "O estatuto de privacidade desta conta é fechado. O dono revê manualmente quem a pode seguir.",
   "account.media": "Média",
   "account.mention": "Mencionar @{name}",
   "account.moved_to": "{name} mudou a sua conta para:",
@@ -124,7 +124,7 @@
   "directory.local": "Apenas de {domain}",
   "directory.new_arrivals": "Recém chegados",
   "directory.recently_active": "Com actividade recente",
-  "embed.instructions": "Publica esta publicação no teu site copiando o código abaixo.",
+  "embed.instructions": "Incorpora esta publicação no teu site copiando o código abaixo.",
   "embed.preview": "Podes ver aqui como irá ficar:",
   "emoji_button.activity": "Actividade",
   "emoji_button.custom": "Personalizar",
@@ -214,7 +214,7 @@
   "keyboard_shortcuts.description": "Descrição",
   "keyboard_shortcuts.direct": "para abrir a coluna das mensagens directas",
   "keyboard_shortcuts.down": "para mover para baixo na lista",
-  "keyboard_shortcuts.enter": "para expandir um estado",
+  "keyboard_shortcuts.enter": "para expandir uma publicação",
   "keyboard_shortcuts.favourite": "para adicionar aos favoritos",
   "keyboard_shortcuts.favourites": "para abrir a lista dos favoritos",
   "keyboard_shortcuts.federated": "para abrir a cronologia federada",
@@ -281,13 +281,13 @@
   "navigation_bar.preferences": "Preferências",
   "navigation_bar.public_timeline": "Cronologia federada",
   "navigation_bar.security": "Segurança",
-  "notification.favourite": "{name} adicionou o teu estado aos favoritos",
+  "notification.favourite": "{name} adicionou a tua publicação aos favoritos",
   "notification.follow": "{name} começou a seguir-te",
   "notification.follow_request": "{name} pediu para segui-lo",
   "notification.mention": "{name} mencionou-te",
   "notification.own_poll": "A sua votação terminou",
   "notification.poll": "Uma votação em participaste chegou ao fim",
-  "notification.reblog": "{name} fez boost ao teu o teu estado",
+  "notification.reblog": "{name} partilhou a tua publicação",
   "notifications.clear": "Limpar notificações",
   "notifications.clear_confirmation": "Queres mesmo limpar todas as notificações?",
   "notifications.column_settings.alert": "Notificações no computador",
@@ -318,7 +318,7 @@
   "poll.voted": "Você votou nesta resposta",
   "poll_button.add_poll": "Adicionar votação",
   "poll_button.remove_poll": "Remover votação",
-  "privacy.change": "Ajustar a privacidade da mensagem",
+  "privacy.change": "Ajustar a privacidade da publicação",
   "privacy.direct.long": "Apenas para utilizadores mencionados",
   "privacy.direct.short": "Directo",
   "privacy.private.long": "Apenas para os seguidores",
@@ -347,7 +347,7 @@
   "search_popout.search_format": "Formato avançado de pesquisa",
   "search_popout.tips.full_text": "Texto simples devolve publicações que tu escreveste, marcaste como favorita, partilhaste ou em que foste mencionado, tal como nomes de utilizador correspondentes, alcunhas e hashtags.",
   "search_popout.tips.hashtag": "hashtag",
-  "search_popout.tips.status": "estado",
+  "search_popout.tips.status": "publicação",
   "search_popout.tips.text": "O texto simples retorna a correspondência de nomes, utilizadores e hashtags",
   "search_popout.tips.user": "utilizador",
   "search_results.accounts": "Pessoas",
diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json
index ad4407e9d..819496911 100644
--- a/app/javascript/mastodon/locales/sk.json
+++ b/app/javascript/mastodon/locales/sk.json
@@ -10,12 +10,12 @@
   "account.domain_blocked": "Doména ukrytá",
   "account.edit_profile": "Uprav profil",
   "account.endorse": "Zobrazuj na profile",
-  "account.follow": "Následuj",
+  "account.follow": "Nasleduj",
   "account.followers": "Sledujúci",
-  "account.followers.empty": "Tohto užívateľa ešte nikto nenásleduje.",
-  "account.follows": "Následuje",
-  "account.follows.empty": "Tento užívateľ ešte nikoho nenásleduje.",
-  "account.follows_you": "Následuje ťa",
+  "account.followers.empty": "Tohto používateľa ešte nikto nenásleduje.",
+  "account.follows": "Nasleduje",
+  "account.follows.empty": "Tento používateľ ešte nikoho nenasleduje.",
+  "account.follows_you": "Nasleduje ťa",
   "account.hide_reblogs": "Skry vyzdvihnutia od @{name}",
   "account.last_status": "Naposledy aktívny",
   "account.link_verified_on": "Vlastníctvo tohto odkazu bolo skontrolované {date}",
@@ -193,7 +193,7 @@
   "introduction.federation.federated.headline": "Federovaná",
   "introduction.federation.federated.text": "Verejné príspevky z ostatných serverov vo fediverse budú zobrazené vo federovanej časovej osi.",
   "introduction.federation.home.headline": "Domovská",
-  "introduction.federation.home.text": "Príspevky od ľudí ktorých následuješ sa zobrazia na tvojej domovskej nástenke. Môžeš následovať hocikoho na ktoromkoľvek serveri!",
+  "introduction.federation.home.text": "Príspevky od ľudí ktorých nasleduješ sa zobrazia na tvojej domovskej nástenke. Môžeš nasledovať hocikoho na ktoromkoľvek serveri!",
   "introduction.federation.local.headline": "Miestna",
   "introduction.federation.local.text": "Verejné príspevky od ľudí v rámci toho istého serveru na akom si aj ty, budú zobrazované na miestnej časovej osi.",
   "introduction.interactions.action": "Ukonči návod!",
diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json
index f66be365f..479d0ab31 100644
--- a/app/javascript/mastodon/locales/th.json
+++ b/app/javascript/mastodon/locales/th.json
@@ -54,7 +54,7 @@
   "bundle_modal_error.retry": "ลองอีกครั้ง",
   "column.blocks": "ผู้ใช้ที่ปิดกั้นอยู่",
   "column.bookmarks": "ที่คั่นหน้า",
-  "column.community": "เส้นเวลาในเว็บ",
+  "column.community": "เส้นเวลาในเซิร์ฟเวอร์",
   "column.direct": "ข้อความโดยตรง",
   "column.directory": "เรียกดูโปรไฟล์",
   "column.domain_blocks": "โดเมนที่ปิดกั้นอยู่",
@@ -144,7 +144,7 @@
   "empty_column.account_unavailable": "ไม่มีโปรไฟล์",
   "empty_column.blocks": "คุณยังไม่ได้ปิดกั้นผู้ใช้ใด ๆ",
   "empty_column.bookmarked_statuses": "คุณยังไม่มีโพสต์ที่เพิ่มที่คั่นหน้าไว้ใด ๆ เมื่อคุณเพิ่มที่คั่นหน้าโพสต์ โพสต์จะปรากฏที่นี่",
-  "empty_column.community": "เส้นเวลาในเว็บว่างเปล่า เขียนบางอย่างเป็นสาธารณะเพื่อเริ่มต้น!",
+  "empty_column.community": "เส้นเวลาในเซิร์ฟเวอร์ว่างเปล่า เขียนบางอย่างเป็นสาธารณะเพื่อเริ่มต้น!",
   "empty_column.direct": "คุณยังไม่มีข้อความโดยตรงใด ๆ เมื่อคุณส่งหรือรับข้อความ ข้อความจะปรากฏที่นี่",
   "empty_column.domain_blocks": "ยังไม่มีโดเมนที่ปิดกั้นอยู่",
   "empty_column.favourited_statuses": "คุณยังไม่มีโพสต์ที่ชื่นชอบใด ๆ เมื่อคุณชื่นชอบโพสต์ โพสต์จะปรากฏที่นี่",
@@ -194,8 +194,8 @@
   "introduction.federation.federated.text": "โพสต์สาธารณะจากเซิร์ฟเวอร์อื่น ๆ ของเฟดิเวิร์สจะปรากฏในเส้นเวลาที่ติดต่อกับภายนอก",
   "introduction.federation.home.headline": "หน้าแรก",
   "introduction.federation.home.text": "โพสต์จากผู้คนที่คุณติดตามจะปรากฏในฟีดหน้าแรกของคุณ คุณสามารถติดตามใครก็ตามในเซิร์ฟเวอร์ใดก็ตาม!",
-  "introduction.federation.local.headline": "ในเว็บ",
-  "introduction.federation.local.text": "โพสต์สาธารณะจากผู้คนในเซิร์ฟเวอร์เดียวกันกับคุณจะปรากฏในเส้นเวลาในเว็บ",
+  "introduction.federation.local.headline": "ในเซิร์ฟเวอร์",
+  "introduction.federation.local.text": "โพสต์สาธารณะจากผู้คนในเซิร์ฟเวอร์เดียวกันกับคุณจะปรากฏในเส้นเวลาในเซิร์ฟเวอร์",
   "introduction.interactions.action": "เสร็จสิ้นบทช่วยสอน!",
   "introduction.interactions.favourite.headline": "ชื่นชอบ",
   "introduction.interactions.favourite.text": "คุณสามารถบันทึกโพสต์ไว้ในภายหลังและแจ้งให้ผู้สร้างทราบว่าคุณชอบโพสต์โดยการชื่นชอบโพสต์",
@@ -222,7 +222,7 @@
   "keyboard_shortcuts.home": "เพื่อเปิดเส้นเวลาหน้าแรก",
   "keyboard_shortcuts.hotkey": "ปุ่มลัด",
   "keyboard_shortcuts.legend": "เพื่อแสดงคำอธิบายนี้",
-  "keyboard_shortcuts.local": "เพื่อเปิดเส้นเวลาในเว็บ",
+  "keyboard_shortcuts.local": "เพื่อเปิดเส้นเวลาในเซิร์ฟเวอร์",
   "keyboard_shortcuts.mention": "เพื่อกล่าวถึงผู้สร้าง",
   "keyboard_shortcuts.muted": "เพื่อเปิดรายการผู้ใช้ที่ปิดเสียงอยู่",
   "keyboard_shortcuts.my_profile": "เพื่อเปิดโปรไฟล์ของคุณ",
@@ -261,7 +261,7 @@
   "navigation_bar.apps": "แอปมือถือ",
   "navigation_bar.blocks": "ผู้ใช้ที่ปิดกั้นอยู่",
   "navigation_bar.bookmarks": "ที่คั่นหน้า",
-  "navigation_bar.community_timeline": "เส้นเวลาในเว็บ",
+  "navigation_bar.community_timeline": "เส้นเวลาในเซิร์ฟเวอร์",
   "navigation_bar.compose": "เขียนโพสต์ใหม่",
   "navigation_bar.direct": "ข้อความโดยตรง",
   "navigation_bar.discover": "ค้นพบ",
@@ -401,7 +401,7 @@
   "suggestions.header": "คุณอาจสนใจ…",
   "tabs_bar.federated_timeline": "ที่ติดต่อกับภายนอก",
   "tabs_bar.home": "หน้าแรก",
-  "tabs_bar.local_timeline": "ในเว็บ",
+  "tabs_bar.local_timeline": "ในเซิร์ฟเวอร์",
   "tabs_bar.notifications": "การแจ้งเตือน",
   "tabs_bar.search": "ค้นหา",
   "time_remaining.days": "เหลืออีก {number, plural, other {# วัน}}",
diff --git a/app/javascript/packs/public.js b/app/javascript/packs/public.js
index dc85164d0..5b699e767 100644
--- a/app/javascript/packs/public.js
+++ b/app/javascript/packs/public.js
@@ -101,6 +101,28 @@ function main() {
 
     delegate(document, '.custom-emoji', 'mouseover', getEmojiAnimationHandler('data-original'));
     delegate(document, '.custom-emoji', 'mouseout', getEmojiAnimationHandler('data-static'));
+
+    delegate(document, '.status__content__spoiler-link', 'click', function() {
+      const contentEl = this.parentNode.parentNode.querySelector('.e-content');
+
+      if (contentEl.style.display === 'block') {
+        contentEl.style.display = 'none';
+        this.parentNode.style.marginBottom = 0;
+        this.textContent = (new IntlMessageFormat(messages['status.show_more'] || 'Show more', locale)).format();
+      } else {
+        contentEl.style.display = 'block';
+        this.parentNode.style.marginBottom = null;
+        this.textContent = (new IntlMessageFormat(messages['status.show_less'] || 'Show less', locale)).format();
+      }
+
+      return false;
+    });
+
+    [].forEach.call(document.querySelectorAll('.status__content__spoiler-link'), (spoilerLink) => {
+      const contentEl = spoilerLink.parentNode.parentNode.querySelector('.e-content');
+      const message = (contentEl.style.display === 'block') ? (messages['status.show_less'] || 'Show less') : (messages['status.show_more'] || 'Show more');
+      spoilerLink.textContent = (new IntlMessageFormat(message, locale)).format();
+    });
   });
 
   delegate(document, '.sidebar__toggle__icon', 'click', () => {
diff --git a/app/lib/entity_cache.rb b/app/lib/entity_cache.rb
index 35a3773d2..afdbd70f2 100644
--- a/app/lib/entity_cache.rb
+++ b/app/lib/entity_cache.rb
@@ -7,6 +7,10 @@ class EntityCache
 
   MAX_EXPIRATION = 7.days.freeze
 
+  def status(url)
+    Rails.cache.fetch(to_key(:status, url), expires_in: MAX_EXPIRATION) { FetchRemoteStatusService.new.call(url) }
+  end
+
   def mention(username, domain)
     Rails.cache.fetch(to_key(:mention, username, domain), expires_in: MAX_EXPIRATION) { Account.select(:id, :username, :domain, :url).find_remote(username, domain) }
   end
diff --git a/app/lib/rate_limiter.rb b/app/lib/rate_limiter.rb
index 68dae9add..0e2c9a894 100644
--- a/app/lib/rate_limiter.rb
+++ b/app/lib/rate_limiter.rb
@@ -14,9 +14,9 @@ class RateLimiter
       period: 3.hours.freeze,
     }.freeze,
 
-    media: {
-      limit: 30,
-      period: 30.minutes.freeze,
+    reports: {
+      limit: 400,
+      period: 24.hours.freeze,
     }.freeze,
   }.freeze
 
diff --git a/app/models/announcement.rb b/app/models/announcement.rb
index f8ac4e09d..a4e427b49 100644
--- a/app/models/announcement.rb
+++ b/app/models/announcement.rb
@@ -14,6 +14,7 @@
 #  created_at   :datetime         not null
 #  updated_at   :datetime         not null
 #  published_at :datetime
+#  status_ids   :bigint           is an Array
 #
 
 class Announcement < ApplicationRecord
@@ -49,7 +50,13 @@ class Announcement < ApplicationRecord
   end
 
   def statuses
-    @statuses ||= Status.from_text(text)
+    @statuses ||= begin
+      if status_ids.nil?
+        []
+      else
+        Status.where(id: status_ids, visibility: [:public, :unlisted])
+      end
+    end
   end
 
   def tags
diff --git a/app/models/report.rb b/app/models/report.rb
index 356c23d68..f31bcfd2e 100644
--- a/app/models/report.rb
+++ b/app/models/report.rb
@@ -18,6 +18,9 @@
 
 class Report < ApplicationRecord
   include Paginable
+  include RateLimitable
+
+  rate_limit by: :account, family: :reports
 
   belongs_to :account
   belongs_to :target_account, class_name: 'Account'
diff --git a/app/models/status.rb b/app/models/status.rb
index a78717d0c..31e77770d 100644
--- a/app/models/status.rb
+++ b/app/models/status.rb
@@ -429,7 +429,7 @@ class Status < ApplicationRecord
           if TagManager.instance.local_url?(url)
             ActivityPub::TagManager.instance.uri_to_resource(url, Status)
           else
-            Status.find_by(uri: url) || Status.find_by(url: url)
+            EntityCache.instance.status(url)
           end
         end
         status&.distributable? ? status : nil
diff --git a/app/workers/publish_scheduled_announcement_worker.rb b/app/workers/publish_scheduled_announcement_worker.rb
index efca39d3d..1392efed0 100644
--- a/app/workers/publish_scheduled_announcement_worker.rb
+++ b/app/workers/publish_scheduled_announcement_worker.rb
@@ -5,15 +5,24 @@ class PublishScheduledAnnouncementWorker
   include Redisable
 
   def perform(announcement_id)
-    announcement = Announcement.find(announcement_id)
+    @announcement = Announcement.find(announcement_id)
 
-    announcement.publish! unless announcement.published?
+    refresh_status_ids!
 
-    payload = InlineRenderer.render(announcement, nil, :announcement)
+    @announcement.publish! unless @announcement.published?
+
+    payload = InlineRenderer.render(@announcement, nil, :announcement)
     payload = Oj.dump(event: :announcement, payload: payload)
 
     FeedManager.instance.with_active_accounts do |account|
       redis.publish("timeline:#{account.id}", payload) if redis.exists("subscribed:timeline:#{account.id}")
     end
   end
+
+  private
+
+  def refresh_status_ids!
+    @announcement.status_ids = Status.from_text(@announcement.text).map(&:id)
+    @announcement.save
+  end
 end
diff --git a/config/locales/activerecord.zh-HK.yml b/config/locales/activerecord.zh-HK.yml
index 2ebf9586c..c968e55aa 100644
--- a/config/locales/activerecord.zh-HK.yml
+++ b/config/locales/activerecord.zh-HK.yml
@@ -1,6 +1,10 @@
 ---
 zh-HK:
   activerecord:
+    attributes:
+      poll:
+        expires_at: 截止時間
+        options: 選擇
     errors:
       models:
         account:
diff --git a/config/locales/ar.yml b/config/locales/ar.yml
index 42cebe1c0..c73115e2a 100644
--- a/config/locales/ar.yml
+++ b/config/locales/ar.yml
@@ -204,6 +204,34 @@ ar:
       web: الويب
       whitelisted: في القائمة البيضاء
     action_logs:
+      action_types:
+        assigned_to_self_report: أسند التقرير
+        change_email_user: تغيير عنوان البريد الإلكتروني الخاص بالمستخدم
+        confirm_user: تأكيد المستخدم
+        create_account_warning: إنشاء تحذير
+        create_announcement: إنشاء إعلان
+        create_custom_emoji: إنشاء إيموجي مخصص
+        destroy_announcement: احذف الإعلان
+        destroy_custom_emoji: احذف الإيموجي المخصص
+        disable_2fa_user: تعطيل 2FA
+        disable_custom_emoji: تعطيل الإيموجي المخصص
+        disable_user: تعطيل المستخدم
+        enable_custom_emoji: تفعيل الإيموجي المخصص
+        enable_user: تفعيل المستخدم
+        memorialize_account: جعل الحساب تذكاريا
+        promote_user: ترقية المستخدم
+        remove_avatar_user: احذف الصورة الرمزية
+        reopen_report: إعادة فتح التقرير
+        reset_password_user: إعادة تعيين كلمة المرور
+        resolve_report: حل الشكوى
+        silence_account: كتم الحساب
+        suspend_account: تعليق الحساب
+        unassigned_report: إلغاء إسناد الشكوى
+        unsilence_account: إلغاء كتم الحساب
+        unsuspend_account: إلغاء تعليق الحساب
+        update_announcement: تحديث الإعلان
+        update_custom_emoji: تحديث الإيموجي المخصص
+        update_status: تحديث الحالة
       actions:
         assigned_to_self_report: قام %{name} بتعيين التقرير %{target} لأنفسهم
         change_email_user: غيّر %{name} عنوان البريد الإلكتروني للمستخدم %{target}
@@ -241,6 +269,9 @@ ar:
         update_custom_emoji: "%{name} قام بتحديث الإيموجي %{target}"
         update_status: لقد قام %{name} بتحديث منشور %{target}
       deleted_status: "(منشور محذوف)"
+      empty: لم يتم العثور على سجلات.
+      filter_by_action: تصفية بحسب الإجراء
+      filter_by_user: تصفية حسب المستخدم
       title: سِجلّ التفتيش و المعاينة
     announcements:
       destroyed_msg: تم حذف الإعلان بنجاح!
@@ -366,6 +397,7 @@ ar:
       destroyed_msg: تم حذف نطاق البريد الإلكتروني من اللائحة السوداء بنجاح
       domain: النطاق
       empty: ليس هناك أية نطاقات للبريد الإلكتروني مُدرَجة في القائمة السوداء.
+      from_html: مِن %{domain}
       new:
         create: إضافة نطاق
         title: إضافة نطاق بريد جديد إلى اللائحة السوداء
diff --git a/config/locales/ca.yml b/config/locales/ca.yml
index e007aa934..f056bb943 100644
--- a/config/locales/ca.yml
+++ b/config/locales/ca.yml
@@ -195,6 +195,42 @@ ca:
       web: Web
       whitelisted: Llista blanca
     action_logs:
+      action_types:
+        assigned_to_self_report: Assigna l'informe
+        change_email_user: Canvia l'adreça electrònica per l'usuari
+        confirm_user: Confirma l'usuari
+        create_account_warning: Crea un avís
+        create_announcement: Crea un anunci
+        create_custom_emoji: Crea un emoji personalitzat
+        create_domain_allow: Crea un domini permès
+        create_domain_block: Crea un bloqueig de domini
+        create_email_domain_block: Crea un bloqueig de domini d'adreça de correu
+        demote_user: Degrada l'usuari
+        destroy_announcement: Esborra l'anunci
+        destroy_custom_emoji: Esborra l'emoji personalitzat
+        destroy_domain_allow: Esborra el domini permès
+        destroy_domain_block: Esborra el bloqueig de domini
+        destroy_email_domain_block: Esborra el bloqueig de domini de l'adreça de correu
+        destroy_status: Esborra el tut
+        disable_2fa_user: Desactiva 2FA
+        disable_custom_emoji: Desactiva l'emoji personalitzat
+        disable_user: Deshabilita l'usuari
+        enable_custom_emoji: Activa l'emoji personalitzat
+        enable_user: Activa l'usuari
+        memorialize_account: Memoritza el compte
+        promote_user: Promou l'usuari
+        remove_avatar_user: Eliminar avatar
+        reopen_report: Reobre l'informe
+        reset_password_user: Restableix la contrasenya
+        resolve_report: Resolt l'informe
+        silence_account: Silencia el compte
+        suspend_account: Suspèn el compte
+        unassigned_report: Des-assigna l'informe
+        unsilence_account: Desfés el silenci del compte
+        unsuspend_account: Desfés la suspensió del compte
+        update_announcement: Actualitza l'anunci
+        update_custom_emoji: Actualitza l'emoji personalitzat
+        update_status: Actualitza l'estat
       actions:
         assigned_to_self_report: "%{name} han assignat l'informe %{target} a ells mateixos"
         change_email_user: "%{name} ha canviat l'adreça de correu electrònic del usuari %{target}"
@@ -232,6 +268,9 @@ ca:
         update_custom_emoji: "%{name} ha actualitzat l'emoji %{target}"
         update_status: "%{name} estat actualitzat per %{target}"
       deleted_status: "(tut esborrat)"
+      empty: No s’han trobat registres.
+      filter_by_action: Filtra per acció
+      filter_by_user: Filtra per usuari
       title: Registre d'auditoria
     announcements:
       destroyed_msg: L’anunci s’ha esborrat amb èxit!
@@ -1077,6 +1116,8 @@ ca:
     disallowed_hashtags:
       one: 'conté una etiqueta no permesa: %{tags}'
       other: 'conté les etiquetes no permeses: %{tags}'
+    errors:
+      in_reply_not_found: El tut al qual intentes respondre sembla que no existeix.
     language_detection: Detecta automàticament el llenguatge
     open_in_web: Obre en la web
     over_character_limit: Límit de caràcters de %{max} superat
diff --git a/config/locales/co.yml b/config/locales/co.yml
index 63c2df1da..2d50cefd7 100644
--- a/config/locales/co.yml
+++ b/config/locales/co.yml
@@ -195,6 +195,42 @@ co:
       web: Web
       whitelisted: In a lista bianca
     action_logs:
+      action_types:
+        assigned_to_self_report: Assignà signalamentu
+        change_email_user: Mudificà l'E-mail di l'Utilizatore
+        confirm_user: Cunfirmà Utilizatore
+        create_account_warning: Creà avertimentu
+        create_announcement: Creà Annunziu
+        create_custom_emoji: Creà Emoji Persunalizata
+        create_domain_allow: Creà Auturizazione di Duminiu
+        create_domain_block: Creà Blucchime di Duminiu
+        create_email_domain_block: Creà Blucchime di Duminiu E-mail
+        demote_user: Ritrugadà Utilizatore
+        destroy_announcement: Toglie Annunziu
+        destroy_custom_emoji: Toglie Emoji Persunalizata
+        destroy_domain_allow: Toglie Auturizazione di Duminiu
+        destroy_domain_block: Toglie Blucchime di Duminiu
+        destroy_email_domain_block: Toglie blucchime di duminiu e-mail
+        destroy_status: Toglie u statutu
+        disable_2fa_user: Disattivà l’identificazione à 2 fattori
+        disable_custom_emoji: Disattivà Emoji Persunalizata
+        disable_user: Disattivà Utilizatore
+        enable_custom_emoji: Attivà Emoji Persunalizata
+        enable_user: Attivà utilizatore
+        memorialize_account: Trasfurmà contu in mimuriale
+        promote_user: Prumove Utilizatore
+        remove_avatar_user: Toglie Avatar
+        reopen_report: Riapre Signalamentu
+        reset_password_user: Riinizializà Chjave d'Accessu
+        resolve_report: Chjode Signalamentu
+        silence_account: Silenzà Contu
+        suspend_account: Suspende Contu
+        unassigned_report: Disassignà signalamentu
+        unsilence_account: Ùn Silenzà Più u Contu
+        unsuspend_account: Ùn Suspende Più u Contu
+        update_announcement: Cambià Annunziu
+        update_custom_emoji: Cambià Emoji Persunalizata
+        update_status: Cambià Statutu
       actions:
         assigned_to_self_report: "%{name} s’hè assignatu u signalamentu %{target}"
         change_email_user: "%{name} hà cambiatu l’indirizzu e-mail di %{target}"
@@ -232,6 +268,9 @@ co:
         update_custom_emoji: "%{name} hà messu à ghjornu l’emoji %{target}"
         update_status: "%{name} hà cambiatu u statutu di %{target}"
       deleted_status: "(statutu sguassatu)"
+      empty: Nunda trovu.
+      filter_by_action: Filtrà da azzione
+      filter_by_user: Filtrà da utilizatore
       title: Ghjurnale d’audit
     announcements:
       destroyed_msg: Annunziu sguassatu!
@@ -1077,6 +1116,8 @@ co:
     disallowed_hashtags:
       one: 'cuntene l’hashtag disattivatu: %{tags}'
       other: 'cuntene l’hashtag disattivati: %{tags}'
+    errors:
+      in_reply_not_found: U statutu à quellu avete pruvatu di risponde ùn sembra micca esiste.
     language_detection: Truvà a lingua autumaticamente
     open_in_web: Apre nant’à u web
     over_character_limit: Site sopr’à a limita di %{max} caratteri
diff --git a/config/locales/de.yml b/config/locales/de.yml
index bd6852356..d99b36d14 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -195,6 +195,42 @@ de:
       web: Web
       whitelisted: Auf der Whitelist
     action_logs:
+      action_types:
+        assigned_to_self_report: Bericht zuweisen
+        change_email_user: E-Mail des Benutzers ändern
+        confirm_user: Benutzer bestätigen
+        create_account_warning: Warnung erstellen
+        create_announcement: Ankündigung erstellen
+        create_custom_emoji: Eigene Emoji erstellen
+        create_domain_allow: Domain erlauben
+        create_domain_block: Domain blockieren
+        create_email_domain_block: E-Mail-Domain-Block erstellen
+        demote_user: Benutzer degradieren
+        destroy_announcement: Ankündigung löschen
+        destroy_custom_emoji: Eigene Emoji löschen
+        destroy_domain_allow: Erlaube das Löschen von Domains
+        destroy_domain_block: Domain-Blockade löschen
+        destroy_email_domain_block: E-Mail-Domain-Blockade löschen
+        destroy_status: Beitrag löschen
+        disable_2fa_user: 2FA deaktivieren
+        disable_custom_emoji: Benutzerdefiniertes Emoji deaktivieren
+        disable_user: Benutzer deaktivieren
+        enable_custom_emoji: Benutzerdefiniertes Emoji aktivieren
+        enable_user: Benutzer aktivieren
+        memorialize_account: Konto in ein Konto von einer verstorbenen Person umwandeln
+        promote_user: Benutzer befördern
+        remove_avatar_user: Profilbild entfernen
+        reopen_report: Meldung wieder eröffnen
+        reset_password_user: Passwort zurücksetzen
+        resolve_report: Bericht lösen
+        silence_account: Konto stummschalten
+        suspend_account: Konto sperren
+        unassigned_report: Berichtszuweisung entfernen
+        unsilence_account: Konto nicht mehr stummschalten
+        unsuspend_account: Konto nicht mehr sperren
+        update_announcement: Ankündigung aktualisieren
+        update_custom_emoji: Benutzerdefiniertes Emoji aktualisieren
+        update_status: Beitrag aktualisieren
       actions:
         assigned_to_self_report: "%{name} hat sich die Meldung %{target} selbst zugewiesen"
         change_email_user: "%{name} hat die E-Mail-Adresse des Nutzers %{target} geändert"
@@ -232,6 +268,9 @@ de:
         update_custom_emoji: "%{name} hat das %{target} Emoji geändert"
         update_status: "%{name} hat einen Beitrag von %{target} aktualisiert"
       deleted_status: "(gelöschter Beitrag)"
+      empty: Keine Protokolle gefunden.
+      filter_by_action: Nach Aktion filtern
+      filter_by_user: Nach Benutzer filtern
       title: Überprüfungsprotokoll
     announcements:
       destroyed_msg: Ankündigung erfolgreich gelöscht!
@@ -1077,6 +1116,8 @@ de:
     disallowed_hashtags:
       one: 'enthält einen verbotenen Hashtag: %{tags}'
       other: 'enthält verbotene Hashtags: %{tags}'
+    errors:
+      in_reply_not_found: Der Beitrag, auf den du antworten möchtest, scheint nicht zu existieren.
     language_detection: Sprache automatisch erkennen
     open_in_web: Im Web öffnen
     over_character_limit: Zeichenlimit von %{max} überschritten
diff --git a/config/locales/devise.zh-HK.yml b/config/locales/devise.zh-HK.yml
index ceae8b238..e1bb9f959 100644
--- a/config/locales/devise.zh-HK.yml
+++ b/config/locales/devise.zh-HK.yml
@@ -12,13 +12,16 @@ zh-HK:
       last_attempt: 若你再一次嘗試失敗,我們將鎖定你的帳號,以策安全。
       locked: 你的帳號已被鎖定。
       not_found_in_database: 不正確的 %{authentication_keys} 或密碼。
+      pending: 您的帳戶仍在審核中。
       timeout: 你的登入階段已經過期,請重新登入以繼續使用。
       unauthenticated: 你必須先登入或登記,以繼續使用。
       unconfirmed: 你必須先確認電郵地址,繼續使用。
     mailer:
       confirmation_instructions:
         action: 驗證電子郵件地址
+        action_with_app: 確認並返回 %{app}
         explanation: 你在 %{host} 上使用這個電子郵件地址建立了一個帳戶。只需點擊下面的連結,即可啟用帳戶。如果你並沒有建立過帳戶,請忽略此郵件。
+        explanation_when_pending: 您使用此電子信箱位址申請了 %{host} 的邀請。當您確認電子信箱後我們將審核您的申請,而直到核准前您都無法登入。當您的申請遭拒絕,您的資料將被移除而不必做後續動作。如果這不是您,請忽略此信件。
         extra_html: 請記得閱讀本服務站的<a href="%{terms_path}">相關規定</a>和<a href="%{policy_path}">使用條款</a>。
         subject: 'Mastodon: 確認電郵地址 %{instance}'
         title: 驗證電子郵件地址
@@ -43,6 +46,18 @@ zh-HK:
         extra: 如果你沒有請求本次變更,請忽略此郵件。你的密碼只有在你點擊上面的連結並輸入新密碼後才會更改。
         subject: 'Mastodon: 重設密碼'
         title: 重設密碼
+      two_factor_disabled:
+        explanation: 您帳戶的兩步驟驗證已停用。現在只能使用電子信箱位址及密碼登入。
+        subject: Mastodon:已停用兩步驟驗證
+        title: 已停用 2FA
+      two_factor_enabled:
+        explanation: 已對您的帳戶啟用兩步驟驗證。登入時將需要配對之 TOTP 應用程式所產生的 Token。
+        subject: Mastodon:已啟用兩步驟驗證
+        title: 已啟用 2FA
+      two_factor_recovery_codes_changed:
+        explanation: 上一次的復原碼已經失效,且已產生新的。
+        subject: Mastodon:兩步驟驗證復原碼已經重新產生
+        title: 2FA 復原碼已變更
       unlock_instructions:
         subject: 'Mastodon: 解除用戶鎖定'
     omniauth_callbacks:
@@ -59,6 +74,7 @@ zh-HK:
       signed_up: 歡迎你!你的登記已經成功。
       signed_up_but_inactive: 你的登記已經成功,可是由於你的用戶還被被啟用,暫時還不能讓你登入。
       signed_up_but_locked: 你的登記已經成功,可是由於你的用戶已被鎖定,我們無法讓你登入。
+      signed_up_but_pending: 包含確認連結的訊息已寄到您的電子信箱。按下此連結後我們將審核您的申請。核准後將通知您。
       signed_up_but_unconfirmed: 一條確認連結已經電郵到你的郵址。請使用讓連結啟用你的用戶。
       update_needs_confirmation: 你的用戶已經更新,但我們需要確認你的電郵地址。請打開你的郵箱,使用確認電郵的連結來確認的地郵址。
       updated: 你的用戶已經成功更新。
diff --git a/config/locales/doorkeeper.th.yml b/config/locales/doorkeeper.th.yml
index be009af4d..8ca87578b 100644
--- a/config/locales/doorkeeper.th.yml
+++ b/config/locales/doorkeeper.th.yml
@@ -29,7 +29,7 @@ th:
       edit:
         title: แก้ไขแอปพลิเคชัน
       help:
-        native_redirect_uri: ใช้ %{native_redirect_uri} สำหรับการทดสอบในเว็บ
+        native_redirect_uri: ใช้ %{native_redirect_uri} สำหรับการทดสอบในเซิร์ฟเวอร์
         redirect_uri: ใช้หนึ่งบรรทัดต่อ URI
         scopes: แยกขอบเขตด้วยช่องว่าง เว้นว่างไว้เพื่อใช้ขอบเขตเริ่มต้น
       index:
diff --git a/config/locales/el.yml b/config/locales/el.yml
index 7922242d4..e2fe9056b 100644
--- a/config/locales/el.yml
+++ b/config/locales/el.yml
@@ -195,6 +195,18 @@ el:
       web: Διαδίκτυο
       whitelisted: Εγκεκριμένοι
     action_logs:
+      action_types:
+        change_email_user: Αλλαγή email για χρήστη
+        destroy_status: Διαγραφή Κατάστασης
+        disable_2fa_user: Απενεργοποίηση 2FA
+        disable_custom_emoji: Απενεργοποίηση Προσαρμοσμένων Emoji
+        disable_user: Απενεργοποίηση Χρήστη
+        enable_custom_emoji: Ενεργοποίηση Προσαρμοσμένων Emoji
+        enable_user: Ενεργοποίηση Χρήστη
+        promote_user: Προαγωγή Χρήστη
+        remove_avatar_user: Αφαίρεση Avatar
+        silence_account: Σίγαση Λογαριασμού
+        update_status: Ενημέρωση Κατάστασης
       actions:
         assigned_to_self_report: Ο/Η %{name} ανάθεσε την καταγγελία %{target} στον εαυτό του/της
         change_email_user: Ο/Η %{name} άλλαξε τη διεύθυνση email του χρήστη %{target}
@@ -232,6 +244,9 @@ el:
         update_custom_emoji: Ο/Η %{name} ενημέρωσε το emoji %{target}
         update_status: Ο/Η %{name} ενημέρωσε την κατάσταση του/της %{target}
       deleted_status: "(διαγραμμένη δημοσίευση)"
+      empty: Δεν βρέθηκαν αρχεία καταγραφής.
+      filter_by_action: Φιλτράρισμα ανά ενέργεια
+      filter_by_user: Φιλτράρισμα ανά χρήστη
       title: Αρχείο ελέγχου
     announcements:
       destroyed_msg: Επιτυχής διαγραφή ανακοίνωσης!
@@ -1077,6 +1092,8 @@ el:
     disallowed_hashtags:
       one: 'περιέχει μη επιτρεπτή ετικέτα: %{tags}'
       other: περιέχει μη επιτρεπτές ετικέτες %{tags}
+    errors:
+      in_reply_not_found: Η κατάσταση στην οποία προσπαθείτε να απαντήσετε δεν υπάρχει.
     language_detection: Αυτόματη αναγνώριση γλώσσας
     open_in_web: Δες στο διαδίκτυο
     over_character_limit: υπέρβαση μέγιστου ορίου %{max} χαρακτήρων
diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml
index 41d4c9164..b71ea5f39 100644
--- a/config/locales/es-AR.yml
+++ b/config/locales/es-AR.yml
@@ -195,6 +195,42 @@ es-AR:
       web: Web
       whitelisted: Aprobadas
     action_logs:
+      action_types:
+        assigned_to_self_report: Asignar denuncia
+        change_email_user: Cambiar correo electrónico del usuario
+        confirm_user: Confirmar usuario
+        create_account_warning: Crear advertencia
+        create_announcement: Crear anuncio
+        create_custom_emoji: Crear emoji personalizado
+        create_domain_allow: Crear permiso de dominio
+        create_domain_block: Crear bloqueo de dominio
+        create_email_domain_block: Crear bloqueo de dominio de correo electrónico
+        demote_user: Descender usuario
+        destroy_announcement: Eliminar anuncio
+        destroy_custom_emoji: Eliminar emoji personalizado
+        destroy_domain_allow: Eliminar permiso de dominio
+        destroy_domain_block: Eliminar bloquedo de dominio
+        destroy_email_domain_block: Eliminar bloquedo de dominio de correo electrónico
+        destroy_status: Eliminar estado
+        disable_2fa_user: Deshabilitar 2FA
+        disable_custom_emoji: Deshabilitar emoji personalizado
+        disable_user: Deshabilitar usuario
+        enable_custom_emoji: Habilitar emoji personalizado
+        enable_user: Habilitar usuario
+        memorialize_account: Volver cuenta conmemorativa
+        promote_user: Promover usuario
+        remove_avatar_user: Quitar avatar
+        reopen_report: Reabrir denuncia
+        reset_password_user: Cambiar contraseña
+        resolve_report: Resolver denuncia
+        silence_account: Silenciar cuenta
+        suspend_account: Suspender cuenta
+        unassigned_report: Desasignar denuncia
+        unsilence_account: Dejar de silenciar cuenta
+        unsuspend_account: Dejar de suspender cuenta
+        update_announcement: Actualizar anuncio
+        update_custom_emoji: Actualizar emoji personalizado
+        update_status: Actualizar estado
       actions:
         assigned_to_self_report: "%{name} se asignó la denuncia %{target} a sí"
         change_email_user: "%{name} cambió la dirección de correo electrónico del usuario %{target}"
@@ -232,6 +268,9 @@ es-AR:
         update_custom_emoji: "%{name} actualizó el emoji %{target}"
         update_status: "%{name} actualizó el estado de %{target}"
       deleted_status: "(estado borrado)"
+      empty: No se encontraron registros.
+      filter_by_action: Filtrar por acción
+      filter_by_user: Filtrar por usuario
       title: Registro de auditoría
     announcements:
       destroyed_msg: "¡Anuncio eliminado exitosamente!"
@@ -1077,6 +1116,8 @@ es-AR:
     disallowed_hashtags:
       one: 'contenía una etiqueta no permitida: %{tags}'
       other: 'contenía las etiquetas no permitidas: %{tags}'
+    errors:
+      in_reply_not_found: El estado al que intentás responder no existe.
     language_detection: Detectar idioma automáticamente
     open_in_web: Abrir en web
     over_character_limit: se excedió el límite de %{max} caracteres
diff --git a/config/locales/es.yml b/config/locales/es.yml
index 52abe30f6..fac96aadf 100644
--- a/config/locales/es.yml
+++ b/config/locales/es.yml
@@ -195,6 +195,42 @@ es:
       web: Web
       whitelisted: Añadido a la lista blanca
     action_logs:
+      action_types:
+        assigned_to_self_report: Asignar Reporte
+        change_email_user: Cambiar Correo Electrónico del Usuario
+        confirm_user: Confirmar Usuario
+        create_account_warning: Crear Advertencia
+        create_announcement: Crear Anuncio
+        create_custom_emoji: Crear Emoji Personalizado
+        create_domain_allow: Crear Permiso de Dominio
+        create_domain_block: Crear Bloqueo de Dominio
+        create_email_domain_block: Crear Bloqueo de Dominio de Correo Electrónico
+        demote_user: Degradar Usuario
+        destroy_announcement: Eliminar Anuncio
+        destroy_custom_emoji: Eliminar Emoji Personalizado
+        destroy_domain_allow: Eliminar Permiso de Dominio
+        destroy_domain_block: Eliminar Bloqueo de Dominio
+        destroy_email_domain_block: Eliminar Bloqueo de Dominio de Correo Electrónico
+        destroy_status: Eliminar Estado
+        disable_2fa_user: Deshabilitar 2FA
+        disable_custom_emoji: Deshabilitar Emoji Personalizado
+        disable_user: Deshabilitar Usuario
+        enable_custom_emoji: Habilitar Emoji Personalizado
+        enable_user: Habilitar Usuario
+        memorialize_account: Transformar en Cuenta Conmemorativa
+        promote_user: Promover Usuario
+        remove_avatar_user: Eliminar Avatar
+        reopen_report: Reabrir Reporte
+        reset_password_user: Restablecer Contraseña
+        resolve_report: Resolver Reporte
+        silence_account: Silenciar Cuenta
+        suspend_account: Suspender Cuenta
+        unassigned_report: Desasignar Reporte
+        unsilence_account: Dejar de Silenciar Cuenta
+        unsuspend_account: Dejar de Suspender Cuenta
+        update_announcement: Actualizar Anuncio
+        update_custom_emoji: Actualizar Emoji Personalizado
+        update_status: Actualizar Estado
       actions:
         assigned_to_self_report: "%{name} se ha asignado la denuncia %{target} a sí mismo"
         change_email_user: "%{name} ha cambiado la dirección de correo del usuario %{target}"
@@ -232,6 +268,9 @@ es:
         update_custom_emoji: "%{name} actualizó el emoji %{target}"
         update_status: "%{name} actualizó el estado de %{target}"
       deleted_status: "(estado borrado)"
+      empty: No se encontraron registros.
+      filter_by_action: Filtrar por acción
+      filter_by_user: Filtrar por usuario
       title: Log de auditoría
     announcements:
       destroyed_msg: "¡Anuncio eliminado con éxito!"
@@ -1077,6 +1116,8 @@ es:
     disallowed_hashtags:
       one: 'contenía un hashtag no permitido: %{tags}'
       other: 'contenía los hashtags no permitidos: %{tags}'
+    errors:
+      in_reply_not_found: El estado al que intentas responder no existe.
     language_detection: Detección automática de idioma
     open_in_web: Abrir en web
     over_character_limit: Límite de caracteres de %{max} superado
diff --git a/config/locales/eu.yml b/config/locales/eu.yml
index 0ee427d4a..4c81c1617 100644
--- a/config/locales/eu.yml
+++ b/config/locales/eu.yml
@@ -72,8 +72,8 @@ eu:
     posts:
       one: Toot
       other: Toot
-    posts_tab_heading: Toot-ak
-    posts_with_replies: Toot-ak eta erantzunak
+    posts_tab_heading: Tootak
+    posts_with_replies: Tootak eta erantzunak
     reserved_username: Erabiltzaile-izena erreserbatuta dago
     roles:
       admin: Administratzailea
@@ -506,7 +506,7 @@ eu:
           open: Edonork eman dezake izena
         title: Erregistratzeko modua
       show_known_fediverse_at_about_page:
-        desc_html: Txandakatzean, fedibertso ezagun osoko toot-ak bistaratuko ditu aurrebistan. Bestela, toot lokalak besterik ez ditu erakutsiko.
+        desc_html: Txandakatzean, fedibertso ezagun osoko tootak bistaratuko ditu aurrebistan. Bestela, toot lokalak besterik ez ditu erakutsiko
         title: Erakutsi fedibertsu ezagun osoko denbora-lerroa aurrebistan
       show_staff_badge:
         desc_html: Erakutsi langile banda erabiltzailearen orrian
@@ -1083,7 +1083,7 @@ eu:
     pin_errors:
       limit: Gehienez finkatu daitekeen toot kopurua finkatu duzu jada
       ownership: Ezin duzu beste norbaiten toot bat finkatu
-      private: Ezin dira publikoak ez diren toot-ak finkatu
+      private: Ezin dira publikoak ez diren tootak finkatu
       reblog: Bultzada bat ezin da finkatu
     poll:
       total_people:
@@ -1105,7 +1105,7 @@ eu:
       unlisted: Zerrendatu gabea
       unlisted_long: Edonork ikusi dezake, baina ez da denbora-lerro publikoetan agertzen
   stream_entries:
-    pinned: Finkatutako toot-a
+    pinned: Finkatutako toota
     reblogged: "(r)en bultzada"
     sensitive_content: 'Kontuz: Eduki hunkigarria'
   tags:
@@ -1225,7 +1225,7 @@ eu:
     warning:
       explanation:
         disable: Zure kontua izoztuta dagoen bitartean, zure kontua bere horretan dirau, baina ezin duzu ekintzarik burutu desblokeatzen den arte.
-        silence: Zure kontua murriztua dagoen bitartean, jada zu jarraitzen zaituztenak besterik ez dituzte zure Toot-ak ikusiko zerbitzari honetan, eta agian zerrenda publikoetatik kenduko zaizu. Hala ere besteek oraindik zu jarraitu zaitzakete.
+        silence: Zure kontua murriztua dagoen bitartean, jada zu jarraitzen zaituztenak besterik ez dituzte zure tootak ikusiko zerbitzari honetan, eta agian zerrenda publikoetatik kenduko zaizu. Hala ere besteek oraindik zu jarraitu zaitzakete.
         suspend: Zure kontua kanporatua izan da, zure toot guztiak eta multimedia fitxategiak behin betiko ezabatu dira zerbitzari honetatik, eta zure jarraitzaileen zerbitzarietatik.
       get_in_touch: "%{instance} instantziako jendearekin harremanetan jartzeko e-mail honi erantzun ahal diozu."
       review_server_policies: Berrikusi zerbitzariko politikak
diff --git a/config/locales/fa.yml b/config/locales/fa.yml
index a90518737..868dd8bcf 100644
--- a/config/locales/fa.yml
+++ b/config/locales/fa.yml
@@ -197,6 +197,41 @@ fa:
       web: وب
       whitelisted: فهرست مجاز
     action_logs:
+      action_types:
+        assigned_to_self_report: واگذاری گزارش
+        change_email_user: تغییر رایانامه برای کاربر
+        confirm_user: تأیید کاربر
+        create_account_warning: ایجاد هشدار
+        create_announcement: ایجاد اعلامیه
+        create_custom_emoji: ایجاد اموجی سفارشی
+        create_domain_allow: ایجاد اجازهٔ دامنه
+        create_domain_block: ایجاد انسداد دامنه
+        create_email_domain_block: ایجاد انسداد دامنهٔ رایانامه
+        demote_user: تنزل کاربر
+        destroy_announcement: حذف اعلامیه
+        destroy_custom_emoji: حذف اموجی سفارشی
+        destroy_domain_allow: حذف اجازهٔ دامنه
+        destroy_domain_block: حذف انسداد دامنه
+        destroy_email_domain_block: حذف انسداد دامنهٔ رایانامه
+        destroy_status: حذف وضعیت
+        disable_2fa_user: از کار انداختن ورود دومرحله‌ای
+        disable_custom_emoji: از کار انداختن اموجی سفارشی
+        disable_user: از کار انداختن کاربر
+        enable_custom_emoji: به کار انداختن اموجی سفارشی
+        enable_user: به کار انداختن کاربر
+        promote_user: ترفیع کاربر
+        remove_avatar_user: برداشتن تصویر نمایه
+        reopen_report: بازگشایی گزارش
+        reset_password_user: بازنشانی گذرواژه
+        resolve_report: رفع گزارش
+        silence_account: خموشی حساب
+        suspend_account: تعلیق حساب
+        unassigned_report: رفع واگذاری گزارش
+        unsilence_account: رفع خموشی حساب
+        unsuspend_account: رفع تعلیق حساب
+        update_announcement: به‌روز رسانی اعلامیه
+        update_custom_emoji: به‌روز رسانی اموجی سفارشی
+        update_status: به‌روز رسانی وضعیت
       actions:
         assigned_to_self_report: "%{name} رسیدگی به گزارش %{target} را به عهده گرفت"
         change_email_user: "%{name} نشانی ایمیل کاربر %{target} را تغییر داد"
@@ -234,6 +269,9 @@ fa:
         update_custom_emoji: "%{name} شکلک %{target} را به‌روز کرد"
         update_status: "%{name} نوشتهٔ %{target} را به‌روز کرد"
       deleted_status: "(نوشتهٔ پاک‌شده)"
+      empty: هیچ گزارشی پیدا نشد.
+      filter_by_action: پالایش بر اساس کنش
+      filter_by_user: پالایش بر اساس کاربر
       title: سیاههٔ بازرسی
     announcements:
       destroyed_msg: اعلامیه با موفقیت حذف شد!
@@ -768,16 +806,16 @@ fa:
       public: فهرست عمومی
       thread: گفتگوها
     edit:
-      title: ویرایش فیلتر
+      title: ویرایش پالایه
     errors:
       invalid_context: زمینه‌ای موجود نیست یا نامعتبر است
-      invalid_irreversible: فیلترهای برگشت‌ناپذیر تنها در زمینهٔ پیگیری‌ها یا اعلان‌ها کار می‌کنند
+      invalid_irreversible: پالایش برگشت‌ناپذیر تنها در زمینهٔ خانه یا آگاهی‌ها کار می‌کنند
     index:
       delete: پاک‌کردن
-      empty: شما هیچ فیلتری ندارید.
-      title: فیلترها
+      empty: هیچ پالایه‌ای ندارید.
+      title: پالایه‌ها
     new:
-      title: افزودن فیلتر تازه
+      title: افزودن پالایهٔ جدید
   footer:
     developers: برنامه‌نویسان
     more: بیشتر…
@@ -1079,6 +1117,8 @@ fa:
     disallowed_hashtags:
       one: 'دارای هشتگ غیرمجاز: %{tags}'
       other: 'دارای هشتگ‌های غیرمجاز: %{tags}'
+    errors:
+      in_reply_not_found: به نظر نمی‌رسد وضعیتی که می‌خواهید به آن پاسخ دهید، وجود داشته باشد.
     language_detection: زبان نوشته خودبه‌خود شناخته شود
     open_in_web: بازکردن در وب
     over_character_limit: از حد مجاز %{max} حرف فراتر رفتید
diff --git a/config/locales/fi.yml b/config/locales/fi.yml
index 063e3bb91..c5703e596 100644
--- a/config/locales/fi.yml
+++ b/config/locales/fi.yml
@@ -17,11 +17,13 @@ fi:
     hosted_on: Mastodon palvelimella %{domain}
     learn_more: Lisätietoja
     privacy_policy: Tietosuojaseloste
+    server_stats: 'Palvelimen tilastot:'
     source_code: Lähdekoodi
     status_count_after:
       one: tila
       other: tilanne
     status_count_before: He ovat luoneet
+    tagline: Seuraa ja löydä uusia kavereita
     terms: Käyttöehdot
     unavailable_content_description:
       domain: Palvelin
@@ -59,6 +61,7 @@ fi:
     roles:
       admin: Ylläpitäjä
       bot: Botti
+      group: Ryhmä
       moderator: Moderaattori
     unavailable: Profiili ei saatavilla
     unfollow: Lopeta seuraaminen
@@ -190,19 +193,27 @@ fi:
         update_custom_emoji: "%{name} päivitti emojin %{target}"
         update_status: "%{name} päivitti käyttäjän %{target} tilan"
       title: Auditointiloki
+    announcements:
+      title: Ilmoitukset
     custom_emojis:
+      assign_category: Aseta kategoria
       by_domain: Verkkotunnus
       copied_msg: Emojin paikallisen kopion luonti onnistui
       copy: Kopioi
       copy_failed_msg: Emojista ei voitu tehdä paikallista kopiota
+      create_new_category: Luo uusi kategoria
       created_msg: Emojin luonti onnistui!
       delete: Poista
       destroyed_msg: Emojon poisto onnistui!
       disable: Poista käytöstä
+      disabled: Ei käytössä
       disabled_msg: Emojin poisto käytöstä onnistui
+      emoji: Emoji
       enable: Ota käyttöön
+      enabled: Käytössä
       enabled_msg: Emojin käyttöönotto onnistui
       image_hint: PNG enintään 50 kt
+      list: Listaa
       listed: Listassa
       new:
         title: Lisää uusi mukautettu emoji
@@ -210,12 +221,20 @@ fi:
       shortcode: Lyhennekoodi
       shortcode_hint: Vähintään kaksi merkkiä, vain kirjaimia, numeroita ja alaviivoja
       title: Mukautetut emojit
+      uncategorized: Luokittelemattomat
+      unlist: Poista listalta
       unlisted: Ei listassa
       update_failed_msg: Emojin päivitys epäonnistui
       updated_msg: Emojin päivitys onnistui!
       upload: Lähetä
     dashboard:
       authorized_fetch_mode: Suojattu tila
+      config: Asetukset
+      feature_deletions: Tilien poistot
+      feature_invites: Kutsulinkit
+      feature_profile_directory: Profiilihakemisto
+      feature_registrations: Rekisteröitymiset
+      title: Hallintapaneeli
     domain_blocks:
       add_new: Lisää uusi
       created_msg: Verkkotunnuksen estoa käsitellään
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index 7ba6796ae..1b259d7c9 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -195,6 +195,42 @@ fr:
       web: Web
       whitelisted: Sur liste blanche
     action_logs:
+      action_types:
+        assigned_to_self_report: Affecter le signalement
+        change_email_user: Modifier le courriel pour
+        confirm_user: Confirmer l’utilisateur
+        create_account_warning: Créer une alerte
+        create_announcement: Créer une annonce
+        create_custom_emoji: Créer des émojis personnalisés
+        create_domain_allow: Créer un domaine autorisé
+        create_domain_block: Créer un blocage de domaine
+        create_email_domain_block: Créer un blocage de domaine de courriel
+        demote_user: Rétrograder l’utilisateur·ice
+        destroy_announcement: Supprimer l’annonce
+        destroy_custom_emoji: Supprimer des émojis personnalisés
+        destroy_domain_allow: Supprimer le domaine autorisé
+        destroy_domain_block: Supprimer le blocage de domaine
+        destroy_email_domain_block: Supprimer le blocage de domaine de courriel
+        destroy_status: Supprimer le statut
+        disable_2fa_user: Désactiver l’A2F
+        disable_custom_emoji: Désactiver les émojis personnalisés
+        disable_user: Désactiver l’utilisateur·ice
+        enable_custom_emoji: Activer les émojis personnalisées
+        enable_user: Activer l’utilisateur
+        memorialize_account: Mémorialiser le compte
+        promote_user: Promouvoir l’utilisateur
+        remove_avatar_user: Supprimer l’avatar
+        reopen_report: Rouvrir le signalement
+        reset_password_user: Réinitialiser le mot de passe
+        resolve_report: Résoudre le signalement
+        silence_account: Rendre le compte silencieux
+        suspend_account: Suspendre le compte
+        unassigned_report: Ne plus assigner le signalement
+        unsilence_account: Désactiver le silence du compte
+        unsuspend_account: Annuler la suspension du compte
+        update_announcement: Modifier l’annonce
+        update_custom_emoji: Mettre à jour les émojis personnalisés
+        update_status: Mettre à jour le statut
       actions:
         assigned_to_self_report: "%{name} s’est assigné·e le signalement de %{target}"
         change_email_user: "%{name} a modifié l’adresse de courriel de l’utilisateur·rice %{target}"
@@ -232,6 +268,9 @@ fr:
         update_custom_emoji: "%{name} a mis à jour l’émoji %{target}"
         update_status: "%{name} a mis à jour le statut de %{target}"
       deleted_status: "(statut supprimé)"
+      empty: Aucun journal trouvé.
+      filter_by_action: Filtrer par action
+      filter_by_user: Filtrer par utilisateur·ice
       title: Journal d’audit
     announcements:
       destroyed_msg: Annonce supprimée avec succès !
@@ -1077,6 +1116,8 @@ fr:
     disallowed_hashtags:
       one: 'contient un hashtag désactivé : %{tags}'
       other: 'contient les hashtags désactivés : %{tags}'
+    errors:
+      in_reply_not_found: Le statut auquel vous essayez de répondre ne semble pas exister.
     language_detection: Détecter automatiquement la langue
     open_in_web: Ouvrir sur le web
     over_character_limit: limite de %{max} caractères dépassée
diff --git a/config/locales/gl.yml b/config/locales/gl.yml
index 0701d5b35..35d8ac2d6 100644
--- a/config/locales/gl.yml
+++ b/config/locales/gl.yml
@@ -195,6 +195,42 @@ gl:
       web: Web
       whitelisted: Lista branca
     action_logs:
+      action_types:
+        assigned_to_self_report: Asignar denuncia
+        change_email_user: Editar email do usuario
+        confirm_user: Confirmar usuario
+        create_account_warning: Crear aviso
+        create_announcement: Crear anuncio
+        create_custom_emoji: Crear emoticonas personalizadas
+        create_domain_allow: Crear permiso de dominio
+        create_domain_block: Crear bloqueo de dominio
+        create_email_domain_block: Crear bloqueo de dominio de correo electrónico
+        demote_user: Degradar usuario
+        destroy_announcement: Eliminar anuncio
+        destroy_custom_emoji: Eliminar emoticona personalizada
+        destroy_domain_allow: Eliminar permiso de dominio
+        destroy_domain_block: Eliminar bloqueo de dominio
+        destroy_email_domain_block: Eliminar bloqueo de dominio de correo electrónico
+        destroy_status: Eliminar estado
+        disable_2fa_user: Desactivar autenticación de dous factores
+        disable_custom_emoji: Deshabilitar emoticona personalizada
+        disable_user: Deshabilitar usuario
+        enable_custom_emoji: Habilitar emoticona personalizada
+        enable_user: Activar usuario
+        memorialize_account: Transformar en conta conmemorativa
+        promote_user: Promover usuario
+        remove_avatar_user: Eliminar avatar
+        reopen_report: Reabrir denuncia
+        reset_password_user: Restabelecer contrasinal
+        resolve_report: Resolver denuncia
+        silence_account: Silenciar conta
+        suspend_account: Suspender conta
+        unassigned_report: Desasignar denuncia
+        unsilence_account: Deixar de silenciar conta
+        unsuspend_account: Retirar suspensión de conta
+        update_announcement: Actualizar anuncio
+        update_custom_emoji: Actualizar emoticona personalizada
+        update_status: Actualizar estado
       actions:
         assigned_to_self_report: "%{name} atribuíu a denuncia %{target} a el mesmo"
         change_email_user: "%{name} cambiou o enderezo de correo-e da usuaria %{target}"
@@ -232,6 +268,9 @@ gl:
         update_custom_emoji: "%{name} actualizou a emoticona %{target}"
         update_status: "%{name} actualizou o estado de %{target}"
       deleted_status: "(estado eliminado)"
+      empty: Non se atoparon rexistros.
+      filter_by_action: Filtrar por acción
+      filter_by_user: Filtrar por usuario
       title: Rexistro de auditoría
     announcements:
       destroyed_msg: Anuncio eliminado de xeito correcto!
@@ -1077,6 +1116,8 @@ gl:
     disallowed_hashtags:
       one: 'contiña un cancelo non permitido: %{tags}'
       other: 'contiña uns cancelos non permitidos: %{tags}'
+    errors:
+      in_reply_not_found: O estado ó cal tentas respostar semella que non existe.
     language_detection: Detección automática do idioma
     open_in_web: Abrir na web
     over_character_limit: Excedeu o límite de caracteres %{max}
diff --git a/config/locales/hu.yml b/config/locales/hu.yml
index 2b8e07981..30331b2cb 100644
--- a/config/locales/hu.yml
+++ b/config/locales/hu.yml
@@ -11,9 +11,7 @@ hu:
     apps: Mobil appok
     apps_platforms: Használd a Mastodont iOS-ről, Androidról vagy más platformról
     browse_directory: Böngészd a profilokat és szűrj érdeklődési körre
-    browse_local_posts: 'Nézz bele a szerver publikus, élő adatfolyamába
-
-'
+    browse_local_posts: Nézz bele a szerver publikus, élő adatfolyamába
     browse_public_posts: Nézz bele a Mastodon élő adatfolyamába
     contact: Kapcsolat
     contact_missing: Nincs megadva
@@ -197,27 +195,63 @@ hu:
       web: Web
       whitelisted: Engedélyező-listán
     action_logs:
+      action_types:
+        assigned_to_self_report: Jelentés hozzárendelése
+        change_email_user: Felhasználó e-mail címének módosítása
+        confirm_user: Felhasználó megerősítése
+        create_account_warning: Figyelmeztetés létrehozása
+        create_announcement: Közlemény létrehozása
+        create_custom_emoji: Egyéni emodzsi létrehozása
+        create_domain_allow: Domain engedélyezés létrehozása
+        create_domain_block: Domain blokkolás létrehozása
+        create_email_domain_block: E-mail domain blokkolás létrehozása
+        demote_user: Felhasználó lefokozása
+        destroy_announcement: Közlemény törlése
+        destroy_custom_emoji: Egyéni emodzsi törlése
+        destroy_domain_allow: Domain engedélyezés törlése
+        destroy_domain_block: Domain blokkolás törlése
+        destroy_email_domain_block: E-mail domain blokkolás törlése
+        destroy_status: Állapot törlése
+        disable_2fa_user: Kétlépcsős hitelesítés letiltása
+        disable_custom_emoji: Egyéni emodzsi letiltása
+        disable_user: Felhasználói letiltása
+        enable_custom_emoji: Egyéni emodzsi engedélyezése
+        enable_user: Felhasználó engedélyezése
+        memorialize_account: Fiók emlékké nyilvánítása
+        promote_user: Felhasználó előléptetése
+        remove_avatar_user: Profilkép eltávolítása
+        reopen_report: Jelentés újranyitása
+        reset_password_user: Jelszó visszaállítása
+        resolve_report: Jelentés megoldása
+        silence_account: Fiók némítása
+        suspend_account: Fiók felfüggesztése
+        unassigned_report: Jelentés hozzárendelésének megszüntetése
+        unsilence_account: Fiók némításának feloldása
+        unsuspend_account: Fiók felfüggesztésének feloldása
+        update_announcement: Közlemény frissítése
+        update_custom_emoji: Egyéni emodzsi frissítése
+        update_status: Állapot frissítése
       actions:
         assigned_to_self_report: "%{name} a %{target} bejelentést magához rendelte"
         change_email_user: "%{name} megváltoztatta %{target} felhasználó e-mail címét"
         confirm_user: "%{name} megerősítette e-mail címét: %{target}"
         create_account_warning: "%{name} figyelmeztetést küldött %{target} felhasználónak"
         create_announcement: "%{name} új közleményt hozott létre %{target}"
-        create_custom_emoji: "%{name} új emojit töltött fel: %{target}"
+        create_custom_emoji: "%{name} új emodzsit töltött fel: %{target}"
         create_domain_allow: "%{name} engedélyező listára vette %{target} domaint"
         create_domain_block: "%{name} letiltotta az alábbi domaint: %{target}"
         create_email_domain_block: "%{name} feketelistára tette az alábbi e-mail domaint: %{target}"
         demote_user: "%{name} lefokozta az alábbi felhasználót: %{target}"
         destroy_announcement: "%{name} törölte a közleményt %{target}"
-        destroy_custom_emoji: "%{name} törölte az emojit: %{target}"
+        destroy_custom_emoji: "%{name} törölte az emodzsit: %{target}"
         destroy_domain_allow: "%{name} leszedte %{target} domaint az engedélyező listáról"
         destroy_domain_block: "%{name} engedélyezte az alábbi domaint: %{target}"
         destroy_email_domain_block: "%{name} fehérlistára tette az alábbi e-mail domaint: %{target}"
         destroy_status: "%{name} eltávolította az alábbi felhasználó tülkjét: %{target}"
         disable_2fa_user: "%{name} kikapcsolta a kétlépcsős azonosítást %{target} felhasználó fiókján"
-        disable_custom_emoji: "%{name} letiltotta az alábbi emojit: %{target}"
+        disable_custom_emoji: "%{name} letiltotta az alábbi emodzsit: %{target}"
         disable_user: "%{name} letiltotta az alábbi felhasználó bejelentkezését: %{target}"
-        enable_custom_emoji: "%{name} engedélyezte az alábbi emojit: %{target}"
+        enable_custom_emoji: "%{name} engedélyezte az alábbi emodzsit: %{target}"
         enable_user: "%{name} engedélyezte az alábbi felhasználó bejelentkezését: %{target}"
         memorialize_account: "%{name} emléket állított az alábbi felhasználónak: %{target}"
         promote_user: "%{name} előléptette az alábbi felhasználót: %{target}"
@@ -231,9 +265,12 @@ hu:
         unsilence_account: "%{name} feloldotta a némítást %{target} felhasználói fiókján"
         unsuspend_account: "%{name} feloldotta %{target} felhasználói fiókjának felfüggesztését"
         update_announcement: "%{name} frissítette a közleményt %{target}"
-        update_custom_emoji: "%{name} frissítette az alábbi emojit: %{target}"
+        update_custom_emoji: "%{name} frissítette az alábbi emodzsit: %{target}"
         update_status: "%{name} frissítette %{target} felhasználó tülkjét"
       deleted_status: "(törölt tülk)"
+      empty: Nem található napló.
+      filter_by_action: Szűrés művelet alapján
+      filter_by_user: Szűrés felhasználó alapján
       title: Audit napló
     announcements:
       destroyed_msg: A közlemény sikeresen törölve!
@@ -253,34 +290,34 @@ hu:
     custom_emojis:
       assign_category: Kategóriák
       by_domain: Domain
-      copied_msg: Sikeresen létrehoztuk az emoji helyi másolatát
+      copied_msg: Sikeresen létrehoztuk az emodzsi helyi másolatát
       copy: Másolás
-      copy_failed_msg: Emoji helyi másolatának létrehozása sikertelen
+      copy_failed_msg: Emodzsi helyi másolatának létrehozása sikertelen
       create_new_category: Új kategória létrehozása
-      created_msg: Emoji létrehozva!
+      created_msg: Emodzsi létrehozva!
       delete: Törlés
-      destroyed_msg: Emoji törlése sikeres!
+      destroyed_msg: Emodzsi törlése sikeres!
       disable: Letiltás
       disabled: Letiltva
-      disabled_msg: Emoji letiltva
-      emoji: Emoji
+      disabled_msg: Emodzsi letiltva
+      emoji: Emodzsi
       enable: Engedélyezés
       enabled: Engedélyezve
-      enabled_msg: Emoji engedélyezve
+      enabled_msg: Emodzsji engedélyezve
       image_hint: PNG (maximális méret 50KB)
       list: Listázás
       listed: Listázva
       new:
-        title: Új egyedi emoji hozzáadása
+        title: Új egyedi emodzsi hozzáadása
       overwrite: Felülírás
       shortcode: Rövidítés
       shortcode_hint: Legalább két karakter, csak betűk, számok és alsóvonás
-      title: Egyedi emojik
+      title: Egyedi emodzsik
       uncategorized: Nem kategorizált
       unlist: Elrejtés a listáról
       unlisted: Nincs listázva
-      update_failed_msg: Nem sikerült frissíteni az emojit
-      updated_msg: Emoji sikeresen frissítve!
+      update_failed_msg: Nem sikerült frissíteni az emodzsit
+      updated_msg: Emodzsi sikeresen frissítve!
       upload: Feltöltés
     dashboard:
       authorized_fetch_mode: Áttöltő üzemmód engedélyezve
@@ -963,7 +1000,7 @@ hu:
   reactions:
     errors:
       limit_reached: A különböző reakciók száma elérte a határértéket
-      unrecognized_emoji: nem ismert emoji
+      unrecognized_emoji: nem ismert emodzsi
   relationships:
     activity: Fiók aktivitás
     dormant: Elhagyott
@@ -1079,6 +1116,8 @@ hu:
     disallowed_hashtags:
       one: 'tiltott hashtaget tartalmaz: %{tags}'
       other: 'tiltott hashtageket tartalmaz: %{tags}'
+    errors:
+      in_reply_not_found: Már nem létezik az a tülk, melyre válaszolni szeretnél.
     language_detection: Nyelv automatikus felismerése
     open_in_web: Megnyitás a weben
     over_character_limit: Túllépted a maximális %{max} karakteres keretet
diff --git a/config/locales/id.yml b/config/locales/id.yml
index 9932981e1..27bfccc22 100644
--- a/config/locales/id.yml
+++ b/config/locales/id.yml
@@ -88,6 +88,7 @@ id:
       delete: Hapus
       destroyed_msg: Catatan moderasi berhasil dihapus!
     accounts:
+      add_email_domain_block: Masukkan domain surel ke daftar hitam
       approve: Terima
       approve_all: Terima semua
       are_you_sure: Anda yakin?
@@ -168,6 +169,7 @@ id:
         staff: Staf
         user: Pengguna
       search: Cari
+      search_same_email_domain: Pengguna lain dengan domain surel yang sama
       search_same_ip: Pengguna lain dengan IP yang sama
       shared_inbox_url: URL kotak masuk bersama
       show:
@@ -353,6 +355,7 @@ id:
       destroyed_msg: Berhasil menghapus domain surel dari daftar hitam
       domain: Domain
       empty: Tidak ada domain surel yang masuk daftar hitam.
+      from_html: dari %{domain}
       new:
         create: Tambah domain
         title: Entri daftar hitam surel baru
@@ -529,6 +532,9 @@ id:
       trends:
         desc_html: Tampilkan secara publik tagar tertinjau yang kini sedang tren
         title: Tagar sedang tren
+    site_uploads:
+      delete: Hapus berkas yang diunggah
+      destroyed_msg: Situs yang diunggah berhasil dihapus!
     statuses:
       back_to_account: Kembali ke halaman akun
       batch:
@@ -839,6 +845,7 @@ id:
   media_attachments:
     validations:
       images_and_video: Tidak bisa melampirkan video pada status yang telah memiliki gambar
+      not_ready: Tidak dapat melampirkan berkas yang belum selesai diproses. Coba lagi nanti!
       too_many: Tidak dapat melampirkan lebih dari 4 file
   migrations:
     acct: Pindah ke
@@ -1055,6 +1062,8 @@ id:
     content_warning: 'Peringatan konten: %{warning}'
     disallowed_hashtags:
       other: 'berisi tagar yang tidak diizinkan: %{tags}'
+    errors:
+      in_reply_not_found: Status yang ingin Anda balas sudah tidak ada.
     language_detection: Deteksi bahasa secara otomatis
     open_in_web: Buka di web
     over_character_limit: melebihi %{max} karakter
diff --git a/config/locales/is.yml b/config/locales/is.yml
index ae04bfc36..7e681e736 100644
--- a/config/locales/is.yml
+++ b/config/locales/is.yml
@@ -134,7 +134,7 @@ is:
         title: Staðsetning
       login_status: Staða innskráningar
       media_attachments: Myndaviðhengi
-      memorialize: Breya í minningargrein
+      memorialize: Breyta í minningargrein
       moderation:
         active: Virkur
         all: Allt
@@ -195,6 +195,42 @@ is:
       web: Vefur
       whitelisted: Á lista yfir leyft
     action_logs:
+      action_types:
+        assigned_to_self_report: Úthluta kæru
+        change_email_user: Skipta um tölvupóstfang notanda
+        confirm_user: Staðfesta notanda
+        create_account_warning: Útbúa aðvörun
+        create_announcement: Búa til tilkynningu
+        create_custom_emoji: Búa til sérsniðið tjáningartákn
+        create_domain_allow: Búa til lén leyft
+        create_domain_block: Búa til lén bannað
+        create_email_domain_block: Búa til tölvupóstfang bannað
+        demote_user: Lækka notanda í tign
+        destroy_announcement: Eyða tilkynningu
+        destroy_custom_emoji: Eyða sérsniðnu tjáningartákni
+        destroy_domain_allow: Eyða léni leyft
+        destroy_domain_block: Eyða léni bannað
+        destroy_email_domain_block: Eyða tölvupóstfangi bannað
+        destroy_status: Eyða stöðufærslu
+        disable_2fa_user: Gera tveggja-þátta auðkenningu óvirka
+        disable_custom_emoji: Gera sérsniðið tjáningartákn óvirkt
+        disable_user: Gera notanda óvirkan
+        enable_custom_emoji: Virkja sérsniðið tjáningartákn
+        enable_user: Virkja notanda
+        memorialize_account: Gera aðgang að minningargrein
+        promote_user: Hækka notanda í tign
+        remove_avatar_user: Fjarlægja auðkennismynd
+        reopen_report: Enduropna kæru
+        reset_password_user: Endurstilla lykilorð
+        resolve_report: Leysa kæru
+        silence_account: Hylja notandaaðgang
+        suspend_account: Setja notandaaðgang í bið
+        unassigned_report: Aftengja úthlutun kæru
+        unsilence_account: Hætta að hylja notandaaðgang
+        unsuspend_account: Taka notandaaðgang úr bið
+        update_announcement: Uppfæra tilkynningu
+        update_custom_emoji: Uppfæra sérsniðið tjáningartákn
+        update_status: Uppfæra stöðufærslu
       actions:
         assigned_to_self_report: "%{name} úthlutaði skýrslu %{target} til sín"
         change_email_user: "%{name} breytti tölvupóstfangi fyrir notandann %{target}"
@@ -232,6 +268,9 @@ is:
         update_custom_emoji: "%{name} uppfærði tjáningartákn %{target}"
         update_status: "%{name} uppfærði stöðufærslu frá %{target}"
       deleted_status: "(eydd stöðufærsla)"
+      empty: Engar atvikaskrár fundust.
+      filter_by_action: Sía eftir aðgerð
+      filter_by_user: Sía eftir notanda
       title: Atvikaskrá
     announcements:
       destroyed_msg: Það tókst að eyða auglýsingunni!
@@ -1077,6 +1116,8 @@ is:
     disallowed_hashtags:
       one: 'innihélt óleyfilegt myllumerki: %{tags}'
       other: 'innihélt óleyfilegu myllumerkin: %{tags}'
+    errors:
+      in_reply_not_found: Stöðufærslan sem þú ert að reyna að svara að er líklega ekki til.
     language_detection: Greina tungumál sjálfvirkt
     open_in_web: Opna í vafra
     over_character_limit: hámarksfjölda stafa (%{max}) náð
diff --git a/config/locales/it.yml b/config/locales/it.yml
index f7dbb633c..2cc6d50d2 100644
--- a/config/locales/it.yml
+++ b/config/locales/it.yml
@@ -195,6 +195,42 @@ it:
       web: Web
       whitelisted: Nella whitelist
     action_logs:
+      action_types:
+        assigned_to_self_report: Assegna report
+        change_email_user: Cambia l'e-mail per l'utente
+        confirm_user: Conferma utente
+        create_account_warning: Crea avviso
+        create_announcement: Crea un annuncio
+        create_custom_emoji: Crea emoji personalizzata
+        create_domain_allow: Crea permesso di dominio
+        create_domain_block: Crea blocco di dominio
+        create_email_domain_block: Crea blocco dominio e-mail
+        demote_user: Degrada l'utente
+        destroy_announcement: Cancella annuncio
+        destroy_custom_emoji: Cancella emoji personalizzata
+        destroy_domain_allow: Cancella permesso di dominio
+        destroy_domain_block: Cancella blocco di dominio
+        destroy_email_domain_block: Cancella blocco dominio e-mail
+        destroy_status: Cancella stato
+        disable_2fa_user: Disabilita l'autenticazione a due fattori
+        disable_custom_emoji: Disabilita emoji personalizzata
+        disable_user: Disabilita utente
+        enable_custom_emoji: Abilita emoji personalizzata
+        enable_user: Abilita utente
+        memorialize_account: Trasforma in account commemorativo
+        promote_user: Promuovi utente
+        remove_avatar_user: Elimina avatar
+        reopen_report: Riapri report
+        reset_password_user: Reimposta password
+        resolve_report: Risolvi report
+        silence_account: Silenzia account
+        suspend_account: Sospendi account
+        unassigned_report: Disassegna report
+        unsilence_account: De-silenzia account
+        unsuspend_account: Annulla la sospensione dell'account
+        update_announcement: Aggiorna annuncio
+        update_custom_emoji: Aggiorna emoji personalizzata
+        update_status: Aggiorna stato
       actions:
         assigned_to_self_report: "%{name} ha assegnato il rapporto %{target} a se stesso"
         change_email_user: "%{name} ha cambiato l'indirizzo email per l'utente %{target}"
@@ -232,6 +268,9 @@ it:
         update_custom_emoji: "%{name} ha aggiornato l'emoji %{target}"
         update_status: "%{name} stato aggiornato da %{target}"
       deleted_status: "(stato cancellato)"
+      empty: Nessun log trovato.
+      filter_by_action: Filtra per azione
+      filter_by_user: Filtra per utente
       title: Registro di controllo
     announcements:
       destroyed_msg: Annuncio eliminato!
@@ -1078,6 +1117,8 @@ it:
     disallowed_hashtags:
       one: 'contiene un hashtag non permesso: %{tags}'
       other: 'contiene gli hashtags non permessi: %{tags}'
+    errors:
+      in_reply_not_found: Lo stato a cui stai tentando di rispondere non sembra esistere.
     language_detection: Individua lingua automaticamente
     open_in_web: Apri sul Web
     over_character_limit: Limite caratteri superato di %{max}
diff --git a/config/locales/ja.yml b/config/locales/ja.yml
index f8aa1695d..a58d9f0d7 100644
--- a/config/locales/ja.yml
+++ b/config/locales/ja.yml
@@ -191,6 +191,42 @@ ja:
       web: Web
       whitelisted: ホワイトリストに登録済み
     action_logs:
+      action_types:
+        assigned_to_self_report: 通報の担当者に設定
+        change_email_user: ユーザーのメールアドレスを変更
+        confirm_user: ユーザーの確認
+        create_account_warning: 警告を作成
+        create_announcement: お知らせを作成
+        create_custom_emoji: カスタム絵文字を作成
+        create_domain_allow: ドメインホワイトリストに追加
+        create_domain_block: ドメインブロックを作成
+        create_email_domain_block: メールドメインブロックを作成
+        demote_user: ユーザーを降格
+        destroy_announcement: お知らせを削除
+        destroy_custom_emoji: カスタム絵文字を削除
+        destroy_domain_allow: ドメインホワイトリストから削除
+        destroy_domain_block: ドメインブロックを削除
+        destroy_email_domain_block: メールドメインブロックを削除
+        destroy_status: トゥートを削除
+        disable_2fa_user: 二段階認証を無効にする
+        disable_custom_emoji: カスタム絵文字を無効化
+        disable_user: ユーザーを無効化
+        enable_custom_emoji: カスタム絵文字を有効化
+        enable_user: ユーザーを有効化
+        memorialize_account: 追悼アカウント
+        promote_user: ユーザーを昇格
+        remove_avatar_user: アイコンを削除
+        reopen_report: 通報を再度開く
+        reset_password_user: パスワードをリセット
+        resolve_report: 通報を解決済みにする
+        silence_account: アカウントをサイレンス
+        suspend_account: アカウントをサスペンド
+        unassigned_report: 通報の担当を解除
+        unsilence_account: アカウントのサイレンスを解除
+        unsuspend_account: アカウントのサスペンドを解除
+        update_announcement: お知らせを更新
+        update_custom_emoji: カスタム絵文字を更新
+        update_status: ステータスを更新
       actions:
         assigned_to_self_report: "%{name} さんが通報 %{target} を自身の担当に割り当てました"
         change_email_user: "%{name} さんが %{target} さんのメールアドレスを変更しました"
@@ -228,6 +264,9 @@ ja:
         update_custom_emoji: "%{name} さんがカスタム絵文字 %{target} を更新しました"
         update_status: "%{name} さんが %{target} さんの投稿を更新しました"
       deleted_status: "(削除済)"
+      empty: ログが見つかりませんでした
+      filter_by_action: アクションでフィルター
+      filter_by_user: ユーザーでフィルター
       title: 操作履歴
     announcements:
       destroyed_msg: お知らせが削除されました
@@ -1064,6 +1103,8 @@ ja:
     content_warning: '閲覧注意: %{warning}'
     disallowed_hashtags:
       other: '許可されていないハッシュタグが含まれています: %{tags}'
+    errors:
+      in_reply_not_found: あなたが返信しようとしているトゥートは存在しないようです。
     language_detection: 自動検出
     open_in_web: Webで開く
     over_character_limit: 上限は %{max}文字までです
diff --git a/config/locales/ko.yml b/config/locales/ko.yml
index 232e44c52..2ac3fb39d 100644
--- a/config/locales/ko.yml
+++ b/config/locales/ko.yml
@@ -191,6 +191,42 @@ ko:
       web: 웹
       whitelisted: 허용 목록
     action_logs:
+      action_types:
+        assigned_to_self_report: 신고 맡기
+        change_email_user: 사용자의 이메일 변경
+        confirm_user: 사용자 확인
+        create_account_warning: 경고 생성
+        create_announcement: 공지사항 생성
+        create_custom_emoji: 커스텀 에모지 생성
+        create_domain_allow: 도메인 허용 생성
+        create_domain_block: 도메인 차단 추가
+        create_email_domain_block: 이메일 도메인 차단 생성
+        demote_user: 사용자 강등
+        destroy_announcement: 공지사항 삭제
+        destroy_custom_emoji: 커스텀 에모지 삭제
+        destroy_domain_allow: 도메인 허용 삭제
+        destroy_domain_block: 도메인 차단 삭제
+        destroy_email_domain_block: 이메일 도메인 차단 삭제
+        destroy_status: 게시물 삭제
+        disable_2fa_user: 2단계 인증 비활성화
+        disable_custom_emoji: 커스텀 에모지 비활성화
+        disable_user: 사용자 비활성화
+        enable_custom_emoji: 커스텀 에모지 활성화
+        enable_user: 사용자 활성화
+        memorialize_account: 계정을 장기 저장
+        promote_user: 사용자 승급
+        remove_avatar_user: 아바타 지우기
+        reopen_report: 신고 다시 열기
+        reset_password_user: 암호 재설정
+        resolve_report: 신고 처리
+        silence_account: 계정 침묵
+        suspend_account: 계정 정지
+        unassigned_report: 신고 맡기 취소
+        unsilence_account: 계정 침묵 취소
+        unsuspend_account: 계정 정지 취소
+        update_announcement: 공지사항 업데이트
+        update_custom_emoji: 커스텀 에모지 업데이트
+        update_status: 게시물 게시
       actions:
         assigned_to_self_report: "%{name}이 리포트 %{target}을 자신에게 할당했습니다"
         change_email_user: "%{name}이 %{target}의 이메일 주소를 변경했습니다"
@@ -228,6 +264,9 @@ ko:
         update_custom_emoji: "%{name}이 에모지 %{target}를 업데이트 했습니다"
         update_status: "%{name}이 %{target}의 상태를 업데이트 했습니다"
       deleted_status: "(삭제됨)"
+      empty: 로그를 찾을 수 없습니다
+      filter_by_action: 행동으로 거르기
+      filter_by_user: 유저로 거르기
       title: 감사 기록
     announcements:
       destroyed_msg: 공지가 성공적으로 삭제되었습니다!
@@ -1064,6 +1103,8 @@ ko:
     content_warning: '열람 주의: %{warning}'
     disallowed_hashtags:
       other: '허용되지 않은 해시태그를 포함하고 있습니다: %{tags}'
+    errors:
+      in_reply_not_found: 답장하려는 게시물이 존재하지 않습니다.
     language_detection: 자동으로 언어 감지
     open_in_web: Web으로 열기
     over_character_limit: 최대 %{max}자까지 입력할 수 있습니다
diff --git a/config/locales/nn.yml b/config/locales/nn.yml
index 07b6397c6..f83646a7b 100644
--- a/config/locales/nn.yml
+++ b/config/locales/nn.yml
@@ -21,9 +21,7 @@ nn:
     federation_hint_html: Med ein konto på %{instance} kan du fylgja folk på kva som helst slags Mastod-tenar og meir.
     get_apps: Prøv ein mobilapp
     hosted_on: "%{domain} er vert for Mastodon"
-    instance_actor_flash: 'Denne brukeren er en virtuell aktør brukt til å representere selve serveren og ingen individuell bruker. Det brukes til foreningsformål og bør ikke blokkeres med mindre du vil blokkere hele instansen, hvor domeneblokkering bør brukes i stedet.
-
-'
+    instance_actor_flash: "Denne brukeren er en virtuell aktør brukt til å representere selve serveren og ingen individuell bruker. Det brukes til foreningsformål og bør ikke blokkeres med mindre du vil blokkere hele instansen, hvor domeneblokkering bør brukes i stedet. \n"
     learn_more: Lær meir
     privacy_policy: Personvernsreglar
     see_whats_happening: Sjå kva som skjer
diff --git a/config/locales/oc.yml b/config/locales/oc.yml
index d3f3a1007..0be4f6458 100644
--- a/config/locales/oc.yml
+++ b/config/locales/oc.yml
@@ -186,6 +186,33 @@ oc:
       web: Web
       whitelisted: Mes en lista blanca
     action_logs:
+      action_types:
+        assigned_to_self_report: Assignar lo rapòrt
+        change_email_user: Cambiar l’adreça de l’utilizaire
+        confirm_user: Confirmar l’utilizaire
+        create_account_warning: Crear un avertiment
+        create_announcement: Crear una anóncia
+        create_custom_emoji: Crear un emoji personalizat
+        demote_user: Retrogradar l’utilizaire
+        destroy_announcement: Suprimir l’anóncia
+        destroy_custom_emoji: Suprimir l’emoji personalizat
+        destroy_domain_block: Suprimir lo blocatge de domeni
+        destroy_status: Suprimir l’estatut
+        disable_2fa_user: Desactivar 2FA
+        disable_custom_emoji: Desactivar l’emoji personalizat
+        disable_user: Desactivar l’utilizaire
+        enable_custom_emoji: Activar l’emoji personalizat
+        enable_user: Activar l’utilizaire
+        promote_user: Promòure l’utilizaire
+        remove_avatar_user: Suprimir l’avatar
+        reopen_report: Tornar dobrir lo rapòrt
+        reset_password_user: Reïnicializar lo senhal
+        resolve_report: Resòlver lo rapòrt
+        suspend_account: Suspendre lo compte
+        unassigned_report: Desafectar lo rapòrt
+        update_announcement: Actualizar l’anóncia
+        update_custom_emoji: Actualizar l’emoji personalizat
+        update_status: Actualizar l’estatut
       actions:
         assigned_to_self_report: "%{name} s’assignèt lo rapòrt %{target}"
         change_email_user: "%{name} cambièt l’adreça de corrièl de %{target}"
@@ -223,6 +250,9 @@ oc:
         update_custom_emoji: "%{name} metèt a jorn l’emoji %{target}"
         update_status: "%{name} metèt a jorn l’estatut a %{target}"
       deleted_status: "(estatut suprimit)"
+      empty: Cap de jornal pas trobat.
+      filter_by_action: Filtrar per accion
+      filter_by_user: Filtrar per utilizaire
       title: Audit dels jornals
     announcements:
       destroyed_msg: Anóncia corrèctament tirada !
diff --git a/config/locales/pl.yml b/config/locales/pl.yml
index 76974fe53..14cfb55ab 100644
--- a/config/locales/pl.yml
+++ b/config/locales/pl.yml
@@ -203,6 +203,42 @@ pl:
       web: Sieć
       whitelisted: Na białej liście
     action_logs:
+      action_types:
+        assigned_to_self_report: Przypisz zgłoszenie
+        change_email_user: Zmień adres e-mail użytkownika
+        confirm_user: Potwierdź użytkownika
+        create_account_warning: Utwórz ostrzeżenie
+        create_announcement: Utwórz ogłoszenie
+        create_custom_emoji: Utwórz niestandardowe emoji
+        create_domain_allow: Utwórz zezwolenie dla domeny
+        create_domain_block: Utwórz blokadę domeny
+        create_email_domain_block: Utwórz blokadę domeny e-mail
+        demote_user: Zdegraduj użytkownika
+        destroy_announcement: Usuń ogłoszenie
+        destroy_custom_emoji: Usuń niestandardowe emoji
+        destroy_domain_allow: Usuń zezwolenie dla domeny
+        destroy_domain_block: Usuń blokadę domeny
+        destroy_email_domain_block: Usuń blokadę domeny e-mail
+        destroy_status: Usuń wpis
+        disable_2fa_user: Wyłącz 2FA
+        disable_custom_emoji: Wyłącz niestandardowe emoji
+        disable_user: Wyłącz użytkownika
+        enable_custom_emoji: Włącz niestandardowe emoji
+        enable_user: Włącz użytkownika
+        memorialize_account: Upamiętnij konto
+        promote_user: Podnieś uprawnienia
+        remove_avatar_user: Usuń awatar
+        reopen_report: Otwórz zgłoszenie ponownie
+        reset_password_user: Resetuj hasło
+        resolve_report: Rozwiąż zgłoszenie
+        silence_account: Wycisz konto
+        suspend_account: Zawieś konto
+        unassigned_report: Cofnij przypisanie zgłoszenia
+        unsilence_account: Cofnij wyciszenie konta
+        unsuspend_account: Cofnij zawieszenie konta
+        update_announcement: Aktualizuj ogłoszenie
+        update_custom_emoji: Aktualizuj niestandardowe emoji
+        update_status: Aktualizuj wpis
       actions:
         assigned_to_self_report: "%{name} przypisał(a) sobie zgłoszenie %{target}"
         change_email_user: "%{name} zmienił(a) adres e-mail użytkownika %{target}"
@@ -240,6 +276,9 @@ pl:
         update_custom_emoji: "%{name} zaktualizował(a) emoji %{target}"
         update_status: "%{name} zaktualizował(a) wpis użytkownika %{target}"
       deleted_status: "(usunięty wpis)"
+      empty: Nie znaleziono aktywności w dzienniku.
+      filter_by_action: Filtruj według działania
+      filter_by_user: Filtruj według użytkownika
       title: Dziennik działań administracyjnych
     announcements:
       destroyed_msg: Pomyślnie usunięto ogłoszenie!
@@ -427,6 +466,17 @@ pl:
       created_msg: Pomyslnie utworzono notatkę moderacyjną.
       destroyed_msg: Pomyślnie usunięto notatkę moderacyjną.
     reports:
+      account:
+        notes:
+          few: "%{count} notatki"
+          many: "%{count} notatek"
+          one: "%{count} notatka"
+          other: "%{count} notatki"
+        reports:
+          few: "%{count} zgłoszenia"
+          many: "%{count} zgłoszeń"
+          one: "%{count} zgłoszenie"
+          other: "%{count} zgłoszenia"
       action_taken_by: Działanie podjęte przez
       are_you_sure: Czy na pewno?
       assign_to_self: Przypisz do siebie
@@ -594,19 +644,27 @@ pl:
       body: Użytkownik %{reporter} zgłosił(a) %{target}
       body_remote: Użytkownik instancji %{domain} zgłosił(a) %{target}
       subject: Nowe zgłoszenie na %{instance} (#%{id})
+    new_trending_tag:
+      body: 'Hashtag #%{name} jest dziś popularny, ale nie został wcześniej zatwierdzony. Nie będzie wyświetlany publicznie zanim na to pozwolisz, możesz też zapisać, że nie chcesz o nim już słyszeć.'
+      subject: Nowy hashtag do zatwierdzenia na %{instance} (#%{name})
   aliases:
     add_new: Utwórz alias
+    created_msg: Pomyślnie utworzono nowy alias. Możesz teraz rozpocząć przenoszenie ze starego konta.
+    deleted_msg: Pomyślnie usunięto alias. Przenoszenie z tamtego konta na to nie będzie dłużej możliwe.
+    hint_html: Jeżeli chcesz przenieść się z innego konta na to, możesz utworzyć alias, który jest wymagany zanim zaczniesz przenoszenie obserwacji z poprzedniego konta na to. To działanie <strong>nie wyrządzi szkód i jest odwracalne</strong>. <strong>Migracja konta jest inicjowana ze starego konta</strong>.
     remove: Odłącz alias
   appearance:
     advanced_web_interface: Zaawansowany interfejs użytkownika
     advanced_web_interface_hint: Jeśli chcesz użyć pełną szerokość swojego ekranu, zaawansowany interfejs użytkownika pozwala Ci skonfigurować wiele różnych kolumn, by zobaczyć jak najwięcej informacji kiedy tylko chcesz. Strona główna, Powiadomienia, Globalna oś czasu, dowolna ilość list i hasztagów.
     animations_and_accessibility: Animacje i dostępność
     confirmation_dialogs: Dialogi potwierdzenia
+    discovery: Odkrywanie
     localization:
       body: Mastodon jest tłumaczony przez wolontariuszy.
       guide_link: https://pl.crowdin.com/project/mastodon
       guide_link_text: Każdy może wnieść swój wkład.
     sensitive_content: Wrażliwa zawartość
+    toot_layout: Wygląd wpisów
   application_mailer:
     notification_preferences: Zmień ustawienia e-maili
     salutation: "%{name},"
@@ -626,10 +684,13 @@ pl:
     apply_for_account: Poproś o zaproszenie
     change_password: Hasło
     checkbox_agreement_html: Zgadzam się z <a href="%{rules_path}" target="_blank">regułami serwera</a> i <a href="%{terms_path}" target="_blank">zasadami korzystania z usługi</a>
+    checkbox_agreement_without_rules_html: Akceptuję <a href="%{terms_path}" target="_blank">warunki korzystania z usługi</a>
     delete_account: Usunięcie konta
     delete_account_html: Jeżeli chcesz usunąć konto, <a href="%{path}">przejdź tutaj</a>. Otrzymasz prośbę o potwierdzenie.
     description:
+      prefix_invited_by_user: "@%{name} zaprasza Cię do dołączenia na ten serwer Mastodona!"
       prefix_sign_up: Zarejestruj się na Mastodon już dziś!
+      suffix: Mając konto, możesz śledzić ludzi, publikować wpisy i wymieniać się wiadomościami z użytkownikami innych serwerów Mastodona i nie tylko!
     didnt_get_confirmation: Nie otrzymałeś(-aś) instrukcji weryfikacji?
     forgot_password: Nie pamiętasz hasła?
     invalid_reset_password_token: Token do resetowania hasła jest nieprawidłowy lub utracił ważność. Spróbuj uzyskać nowy.
@@ -648,12 +709,19 @@ pl:
     security: Bezpieczeństwo
     set_new_password: Ustaw nowe hasło
     setup:
+      email_below_hint_html: Jeżeli poniższy adres e-mail jest nieprawidłowy, możesz zmienić go tutaj i otrzymać nowy e-mail potwierdzający.
+      email_settings_hint_html: E-mail potwierdzający został wysłany na %{email}. Jeżeli adres e-mail nie jest prawidłowy, możesz zmienić go w ustawieniach konta.
       title: Konfiguracja
     status:
       account_status: Stan konta
+      confirming: Oczekiwanie na potwierdzenie adresu e-mail.
+      functional: Twoje konto całkowicie funkcjonuje.
+      pending: Twoje zgłoszenie czeka na zatwierdzenie przez nas. Może to trochę potrwać. Jeżeli zgłoszenie zostanie przyjęte, otrzymasz wiadomość e-mail.
+      redirecting_to: Twoje konto jest nieaktywne, ponieważ obecnie przekierowuje je na %{acct}.
     trouble_logging_in: Masz problem z zalogowaniem się?
   authorize_follow:
     already_following: Już śledzisz to konto
+    already_requested: Już wysłałeś(-aś) prośbę o możliwość śledzenia tego konta
     error: Niestety, podczas sprawdzania zdalnego konta wystąpił błąd
     follow: Śledź
     follow_request: 'Wysłano prośbę o pozwolenie na śledzenie:'
@@ -665,8 +733,12 @@ pl:
     title: Śledź %{acct}
   challenge:
     confirm: Kontynuuj
+    hint_html: "<strong>Informacja:</strong> Nie będziemy prosić Cię o ponowne podanie hasła przez następną godzinę."
     invalid_password: Nieprawidłowe hasło
     prompt: Potwierdź hasło, aby kontynuować
+  date:
+    formats:
+      default: "%d. %b %Y"
   datetime:
     distance_in_words:
       about_x_hours: "%{count}g"
@@ -682,18 +754,33 @@ pl:
       x_months: "%{count} miesięcy"
       x_seconds: "%{count}s"
   deletes:
+    challenge_not_passed: Wprowadzone informacje za nieprawidłowe
     confirm_password: Wprowadź aktualne hasło, aby potwierdzić tożsamość
+    confirm_username: Wprowadź swoją nazwę użytkownika aby potwierdzić procedurę
     proceed: Usuń konto
     success_msg: Twoje konto zostało pomyślnie usunięte
+    warning:
+      before: 'Zanim kontynuujesz, przeczytać uważnie te uwagi:'
+      caches: Zawartość obecna w pamięci podręcznej innych serwerów może tam pozostać
+      data_removal: Twoje wpisy i inne dane zostaną bezpowrotnie usunięte
+      email_change_html: Możesz <a href="%{path}">zmienić swój adres e-mail</a> bez usunięcia konta
+      email_contact_html: Jeżeli wciąż nie dotarł, możesz wysłać wiadomość e-mail na <a href="mailto:%{email}">%{email}</a> aby uzyskać pomoc
+      email_reconfirmation_html: Jeżeli nie otrzymujesz potwierdzającego e-maila, możesz <a href="%{path}">poprosić o kolejny</a>
+      irreversible: Nie będziesz móc przywrócić lub reaktywować swojego konta
+      more_details_html: Aby uzyskać więcej szczegółów, przeczytaj naszą <a href="%{terms_path}">politykę prywatności</a>.
+      username_available: Twoja nazwa użytkownika będzie z powrotem dostępna
+      username_unavailable: Twoja nazwa użytkownika pozostanie niedostępna
   directories:
     directory: Katalog profilów
     explanation: Poznaj profile na podstawie zainteresowań
     explore_mastodon: Odkrywaj %{title}
+  domain_validator:
+    invalid_domain: nie jest prawidłową nazwą domeny
   errors:
-    '400': The request you submitted was invalid or malformed.
+    '400': Wysłane zgłoszenie jest nieprawidłowe lub uszkodzone.
     '403': Nie masz uprawnień, aby wyświetlić tę stronę.
     '404': Strona, którą próbujesz odwiedzić, nie istnieje.
-    '406': This page is not available in the requested format.
+    '406': Ta strona nie jest dostępna w zażądanym formacie.
     '410': Strona, którą próbujesz odwiedzić, przestała istnieć.
     '422':
       content: Sprawdzanie bezpieczeństwa nie powiodło się. Czy blokujesz pliki cookie?
@@ -702,7 +789,7 @@ pl:
     '500':
       content: Przepraszamy, coś poszło nie tak, po naszej stronie.
       title: Ta strona jest nieprawidłowa
-    '503': The page could not be served due to a temporary server failure.
+    '503': Strona nie może zostać wyświetlona z powodu tymczasowego niepowodzenia serwera.
     noscript_html: Aby korzystać z aplikacji Mastodon, włącz JavaScript. Możesz też skorzystać z jednej z <a href="%{apps_path}">natywnych aplikacji</a> obsługującej Twoje urządzenie.
   existing_username_validator:
     not_found: nie znaleziono lokalnego użytkownika o tej nazwie
@@ -725,6 +812,7 @@ pl:
     add_new: Dodaj nowy
     errors:
       limit: Już przekroczyłeś(-aś) maksymalną liczbę wyróżnionych hashtagów
+    hint_html: "<strong>Czym są wyróżnione hashtagi?</strong> Są one na stałe wyświetlane na Twoim profilu i pozwalają innym na przeglądanie Twoich wpisów używających tych hashtagów. Są doskonałym narzędziem do śledzenia kreatywnej twórczości czy długoterminowych projektów."
   filters:
     contexts:
       account: Profile
@@ -827,20 +915,38 @@ pl:
   media_attachments:
     validations:
       images_and_video: Nie możesz załączyć pliku wideo do wpisu, który zawiera już zdjęcia
+      not_ready: Nie można załączyć plików których przetwarzanie nie zostało ukończone. Spróbuj ponownie za chwilę!
       too_many: Nie możesz załączyć więcej niż 4 plików
   migrations:
     acct: nazwa@domena nowego konta
     cancel: Anuluj przekierowanie
+    cancel_explanation: Anulowanie przekierowania aktywuje Twoje obecne konto ponownie, ale nie przeniesie z powrotem śledzących, których przeniesiono na tamto konto.
     cancelled_msg: Pomyślnie anulowano przekierowanie.
     errors:
+      already_moved: jest tym samym kontem, na które już się przeniosłeś(-aś)
+      missing_also_known_as: nie odwołuje się do tego konta
       move_to_self: nie może być bieżącym kontem
       not_found: nie mogło zostać odnalezione
+      on_cooldown: Nie możesz teraz przenieść konta
+    followers_count: Śledzący w chwili przenoszenia
+    incoming_migrations: Przenoszenie z innego konta
+    incoming_migrations_html: Aby przenieść się z innego konta na to, musisz najpierw <a href="%{path}">utworzyć alias konta</a>.
+    moved_msg: Twoje konto przekierowuje teraz na %{acct}, a śledzący są przenoszeni.
+    not_redirecting: Twoje konto nie przekierowuje obecnie na żadne inne konto.
+    on_cooldown: Ostatnio przeniosłeś(-aś) swoje konto. Ta funkcja będzie dostępna ponownie za %{count} dni.
     past_migrations: Poprzednie migracje
     proceed_with_move: Przenieś obserwujących
     redirecting_to: Twoje konto przekierowuje na %{acct}.
     set_redirect: Ustaw przekierowanie
     warning:
+      backreference_required: Nowe konto musi wcześniej zostać skonfigurowane tak, aby odwoływało się do tego
+      before: 'Zanim kontynuujesz, przeczytaj uważnie te uwagi:'
+      cooldown: Po przeniesieniu się, istnieje okres przez który nie możesz ponownie się przenieść
+      disabled_account: Twoje obecne konto nie będzie później całkowicie użyteczne. Możesz jednak uzyskać dostęp do eksportu danych i ponownie aktywować je.
+      followers: To działanie przeniesie wszystkich Twoich śledzących z obecnego konta na nowe
+      only_redirect_html: Możesz też <a href="%{path}">po prostu skonfigurować przekierowanie na swój profil</a>.
       other_data: Żadne inne dane nie zostaną automatycznie przeniesione
+      redirect: Twoje obecne konto zostanie uaktualnione o informację o przeniesieniu i wyłączone z wyszukiwania
   moderation:
     title: Moderacja
   notification_mailer:
@@ -882,6 +988,8 @@ pl:
       subject: Twój wpis został podbity przez %{name}
       title: Nowe podbicie
   notifications:
+    email_events: 'Powiadamiaj e-mailem o:'
+    email_events_hint: 'Wybierz wydarzenia, o których chcesz otrzymywać powiadomienia:'
     other_settings: Inne ustawienia powiadomień
   number:
     human:
@@ -1040,6 +1148,8 @@ pl:
       many: 'zawiera niedozwolone hashtagi: %{tags}'
       one: 'zawiera niedozwolony hashtag: %{tags}'
       other: 'zawiera niedozwolone hashtagi: %{tags}'
+    errors:
+      in_reply_not_found: Post, na który próbujesz odpowiedzieć, nie istnieje.
     language_detection: Automatycznie wykrywaj język
     open_in_web: Otwórz w przeglądarce
     over_character_limit: limit %{max} znaków przekroczony
@@ -1049,6 +1159,11 @@ pl:
       private: Nie możesz przypiąć niepublicznego wpisu
       reblog: Nie możesz przypiąć podbicia wpisu
     poll:
+      total_people:
+        few: "%{count} osoby"
+        many: "%{count} osób"
+        one: "%{count} osoba"
+        other: "%{count} osoby"
       total_votes:
         few: "%{count} głosy"
         many: "%{count} głosy"
@@ -1189,6 +1304,7 @@ pl:
         disable: Kiedy Twoje konto jest wyłączone, Twoje dane pozostają na serwerze, ale nie możesz wykonywać żadnych działań, zanim zostanie odblokowane.
         silence: Kiedy Twoje konto jest ograniczone, tylko osoby które je śledzą będą widzieć Twoje wpisy. Może ono też przestać być widoczne na publicznych listach. Inni wciąż mogą zacząć Cię śledzić.
         suspend: Twoje konto zostało zawieszone i wszystkie Twoje wpisy wraz z zawartością multimedialną zostały nieodwracalnie usunięte z tego serwera i serwerów, których użytkownicy śledzili Cię.
+      get_in_touch: Możesz odpowiedzieć na ten e-mail aby pozostać w kontakcie z prowadzącymi %{instance}.
       review_server_policies: Przejrzyj zasady serwera
       statuses: 'Szczególnie dla:'
       subject:
diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml
index 1dcdf1651..45f2b22d1 100644
--- a/config/locales/pt-BR.yml
+++ b/config/locales/pt-BR.yml
@@ -195,6 +195,42 @@ pt-BR:
       web: Web
       whitelisted: Permitido
     action_logs:
+      action_types:
+        assigned_to_self_report: Adicionar relatório
+        change_email_user: Editar e-mail do usuário
+        confirm_user: Confirmar Usuário
+        create_account_warning: Criar Aviso
+        create_announcement: Criar Anúncio
+        create_custom_emoji: Criar Emoji Personalizado
+        create_domain_allow: Adicionar domínio permitido
+        create_domain_block: Adicionar domínio bloqueado
+        create_email_domain_block: Adicionar domínio de e-mail bloqueado
+        demote_user: Despromover Utilizador
+        destroy_announcement: Excluir anúncio
+        destroy_custom_emoji: Excluir emoji personalizado
+        destroy_domain_allow: Excluir domínio permitido
+        destroy_domain_block: Excluir domínio bloqueado
+        destroy_email_domain_block: Excluir domínio de e-mail bloqueado
+        destroy_status: Excluir Status
+        disable_2fa_user: Desativar autenticação de dois fatores
+        disable_custom_emoji: Desativar Emoji Personalizado
+        disable_user: Desativar usuário
+        enable_custom_emoji: Ativar Emoji Personalizado
+        enable_user: Ativar usuário
+        memorialize_account: Memorizar Conta
+        promote_user: Promover usuário
+        remove_avatar_user: Remover Avatar
+        reopen_report: Reabrir Relatório
+        reset_password_user: Redefinir a senha
+        resolve_report: Resolver Relatório
+        silence_account: Silenciar conta
+        suspend_account: Suspender Conta
+        unassigned_report: Remover relatório
+        unsilence_account: Deixar de Silenciar Conta
+        unsuspend_account: Retirar Suspensão à Conta
+        update_announcement: Editar anúncio
+        update_custom_emoji: Editar Emoji Personalizado
+        update_status: Editar Status
       actions:
         assigned_to_self_report: "%{name} pegou a denúncia %{target}"
         change_email_user: "%{name} alterou o endereço de e-mail do usuário %{target}"
@@ -232,6 +268,9 @@ pt-BR:
         update_custom_emoji: "%{name} atualizou o emoji %{target}"
         update_status: "%{name} atualizou o status de %{target}"
       deleted_status: "(status excluído)"
+      empty: Nenhum registro encontrado.
+      filter_by_action: Filtrar por ação
+      filter_by_user: Filtrar por usuário
       title: Auditar histórico
     announcements:
       destroyed_msg: Anúncio excluído com sucesso!
@@ -1077,6 +1116,8 @@ pt-BR:
     disallowed_hashtags:
       one: 'continha hashtag não permitida: %{tags}'
       other: 'continha hashtags não permitidas: %{tags}'
+    errors:
+      in_reply_not_found: O toot que você quer responder parece não existir.
     language_detection: Detectar idioma automaticamente
     open_in_web: Abrir no navegador
     over_character_limit: limite de caracteres de %{max} excedido
diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml
index 845a3704a..7bff3bf5c 100644
--- a/config/locales/pt-PT.yml
+++ b/config/locales/pt-PT.yml
@@ -195,6 +195,42 @@ pt-PT:
       web: Web
       whitelisted: Está na lista branca
     action_logs:
+      action_types:
+        assigned_to_self_report: Atribuir Relatório
+        change_email_user: Alterar E-mail do Utilizador
+        confirm_user: Confirmar Utilizador
+        create_account_warning: Criar Aviso
+        create_announcement: Criar Anúncio
+        create_custom_emoji: Criar Emoji Personalizado
+        create_domain_allow: Criar Permissão de Domínio
+        create_domain_block: Criar Bloqueio de Domínio
+        create_email_domain_block: Criar Bloqueio de Domínio de E-mail
+        demote_user: Despromover Utilizador
+        destroy_announcement: Remover Anúncio
+        destroy_custom_emoji: Remover Emoji Personalizado
+        destroy_domain_allow: Remover Permissão de Domínio
+        destroy_domain_block: Remover Bloqueio de Domínio
+        destroy_email_domain_block: Remover Bloqueio de Domínio de E-mail
+        destroy_status: Remover Estado
+        disable_2fa_user: Desativar 2FA
+        disable_custom_emoji: Desativar Emoji Personalizado
+        disable_user: Desativar Utilizador
+        enable_custom_emoji: Ativar Emoji Personalizado
+        enable_user: Ativar Utilizador
+        memorialize_account: Memorizar Conta
+        promote_user: Promover Utilizador
+        remove_avatar_user: Remover Imagem de Perfil
+        reopen_report: Reabrir Relatório
+        reset_password_user: Repor Password
+        resolve_report: Resolver Relatório
+        silence_account: Silenciar Conta
+        suspend_account: Suspender Conta
+        unassigned_report: Desatribuir Relatório
+        unsilence_account: Deixar de Silenciar Conta
+        unsuspend_account: Retirar Suspensão à Conta
+        update_announcement: Atualizar Anúncio
+        update_custom_emoji: Atualizar Emoji Personalizado
+        update_status: Atualizar Estado
       actions:
         assigned_to_self_report: "%{name} atribuiu o relatório %{target} a si próprios"
         change_email_user: "%{name} alterou o endereço de e-mail do utilizador %{target}"
@@ -232,6 +268,9 @@ pt-PT:
         update_custom_emoji: "%{name} atualizou o emoji %{target}"
         update_status: "%{name} atualizou o estado de %{target}"
       deleted_status: "(apagou a publicação)"
+      empty: Não foram encontrados registos.
+      filter_by_action: Filtrar por ação
+      filter_by_user: Filtrar por utilizador
       title: Registo de auditoria
     announcements:
       destroyed_msg: Anúncio excluído com sucesso!
@@ -347,7 +386,7 @@ pt-PT:
           one: Uma conta na base de dados afectada
           other: "%{count} contas na base de dados afectadas"
         retroactive:
-          silence: Não silenciar todas as contas existentes nesse domínio
+          silence: Não silenciar contas afetadas existentes deste domínio
           suspend: Não suspender todas as contas existentes nesse domínio
         title: Remover o bloqueio de domínio de %{domain}
         undo: Anular
@@ -1077,6 +1116,8 @@ pt-PT:
     disallowed_hashtags:
       one: 'continha uma hashtag proibida: %{tags}'
       other: 'continha as hashtags proibidas: %{tags}'
+    errors:
+      in_reply_not_found: A publicação a que está a tentar responder parece não existir.
     language_detection: Detectar automaticamente a língua
     open_in_web: Abrir no browser
     over_character_limit: limite de caracter excedeu %{max}
diff --git a/config/locales/ru.yml b/config/locales/ru.yml
index 6389d8190..30f237780 100644
--- a/config/locales/ru.yml
+++ b/config/locales/ru.yml
@@ -203,6 +203,39 @@ ru:
       web: Веб
       whitelisted: В белом списке
     action_logs:
+      action_types:
+        assigned_to_self_report: Присвоение жалоб
+        change_email_user: Изменение e-mail пользователей
+        confirm_user: Подтверждение пользователей
+        create_account_warning: Выдача предупреждения
+        create_announcement: Создание объявлений
+        create_custom_emoji: Добавление эмодзи
+        create_domain_block: Блокировка доменов
+        create_email_domain_block: Блокировка e-mail доменов
+        demote_user: Разжалование пользователей
+        destroy_announcement: Удаление объявлений
+        destroy_custom_emoji: Удаление эмодзи
+        destroy_domain_block: Разблокировка доменов
+        destroy_email_domain_block: Разблокировка e-mail доменов
+        destroy_status: Удаление постов
+        disable_2fa_user: Отключение 2FA
+        disable_custom_emoji: Отключение эмодзи
+        disable_user: Заморозка пользователей
+        enable_custom_emoji: Включение эмодзи
+        enable_user: Разморозка пользователей
+        promote_user: Повышение пользователей
+        remove_avatar_user: Удаление аватаров
+        reopen_report: Возобновление жалоб
+        reset_password_user: Сброс пароля пользователей
+        resolve_report: Отметка жалоб «решёнными»
+        silence_account: Скрытие пользователей
+        suspend_account: Блокировка пользователей
+        unassigned_report: Снятие жалоб
+        unsilence_account: Отмена скрытия пользователей
+        unsuspend_account: Разблокировка пользователей
+        update_announcement: Обновление объявлений
+        update_custom_emoji: Обновление эмодзи
+        update_status: Изменение постов
       actions:
         assigned_to_self_report: "%{name} назначил(а) себя для решения жалобы %{target}"
         change_email_user: "%{name} сменил(а) e-mail пользователя %{target}"
@@ -240,6 +273,9 @@ ru:
         update_custom_emoji: "%{name} обновил(а) эмодзи %{target}"
         update_status: "%{name} изменил(а) пост пользователя %{target}"
       deleted_status: "(удалённый пост)"
+      empty: Журнал пуст.
+      filter_by_action: Фильтр по действию
+      filter_by_user: Фильтр по пользователю
       title: Журнал событий
     announcements:
       destroyed_msg: Объявление удалено.
@@ -683,7 +719,7 @@ ru:
       confirming: Ожидание подтверждения e-mail.
       functional: Ваша учётная запись в полном порядке.
       pending: Ваша заявка ожидает одобрения администраторами, это может занять немного времени. Вы получите письмо, как только заявку одобрят.
-      redirecting_to: Ваша учётная запись признана неактивным, потому что она перенаправляется на %{acct}.
+      redirecting_to: Ваша учётная запись деактивированна, потому что вы настроили перенаправление на %{acct}.
     trouble_logging_in: Не удаётся войти?
   authorize_follow:
     already_following: Вы уже подписаны на эту учётную запись
@@ -691,7 +727,7 @@ ru:
     error: К сожалению, при поиске удалённой учётной записи возникла ошибка
     follow: Подписаться
     follow_request: 'Вы отправили запрос на подписку:'
-    following: 'Ура! Теперь Вы подписаны на:'
+    following: 'Готово! Вы подписались на:'
     post_follow:
       close: Или просто закройте это окно.
       return: Вернуться к профилю пользователя
@@ -1112,6 +1148,8 @@ ru:
       many: 'содержались запрещённые хэштеги: %{tags}'
       one: 'содержался запрещённый хэштег: %{tags}'
       other: 'содержались запрещённые хэштеги: %{tags}'
+    errors:
+      in_reply_not_found: Пост, на который вы пытаетесь ответить, не существует или удалён.
     language_detection: Определять язык автоматически
     open_in_web: Открыть в веб-версии
     over_character_limit: превышен лимит символов (%{max})
diff --git a/config/locales/simple_form.eu.yml b/config/locales/simple_form.eu.yml
index 35f8a45d0..c0f36df77 100644
--- a/config/locales/simple_form.eu.yml
+++ b/config/locales/simple_form.eu.yml
@@ -10,7 +10,7 @@ eu:
         text: Toot sintaxia erabili dezakezu, URLak, traolak eta aipamenak
         title: Aukerakoa. Hartzaileak ez du ikusiko
       admin_account_action:
-        include_statuses: Erabiltzaileak moderazio ekintza edo abisu bat eragin duten toot-ak ikusi ahal izango ditu
+        include_statuses: Erabiltzaileak moderazio ekintza edo abisu bat eragin duten tootak ikusi ahal izango ditu
         send_email_notification: Erabiltzaileak bere kontuarekin gertatutakoaren azalpen bat jasoko du
         text_html: Aukerakoa. Toot sintaxia erabili dezakezu. <a href="%{path}">Abisu aurre-ezarpenak</a> gehitu ditzakezu denbora aurrezteko
         type_html: Erabaki zer egin <strong>%{acct}</strong> kontuarekin
@@ -20,7 +20,7 @@ eu:
         ends_at: Aukerakoa. Iragapena une honetan automatikoki desargitaratuko da
         scheduled_at: Laga hutsik iragarpena berehala argitaratzeko
         starts_at: Aukerakoa. Zure iragarpena denbora-tarte batera lotuta dagoenerako
-        text: Toot-etako sintaxia erabili dezakezu. Kontuan izan iragarpenak erabiltzailearen pantailan hartuko duen neurria
+        text: Tootetako sintaxia erabili dezakezu. Kontuan izan iragarpenak erabiltzailearen pantailan hartuko duen neurria
       defaults:
         autofollow: Gonbidapena erabiliz izena ematen dutenek automatikoki jarraituko dizute
         avatar: PNG, GIF edo JPG. Gehienez %{size}. %{dimensions}px neurrira eskalatuko da
@@ -34,19 +34,19 @@ eu:
         fields: 4 elementu bistaratu ditzakezu taula batean zure profilean
         header: PNG, GIF edo JPG. Gehienez %{size}. %{dimensions}px eskalara txikituko da
         inbox_url: Kopiatu erabili nahi duzun errelearen hasiera orriaren URLa
-        irreversible: Iragazitako Toot-ak betirako galduko dira, geroago iragazkia kentzen baduzu ere
+        irreversible: Iragazitako tootak betirako galduko dira, geroago iragazkia kentzen baduzu ere
         locale: Erabiltzaile-interfazea, e-mail mezuen eta jakinarazpenen hizkuntza
         locked: Jarraitzaileak eskuz onartu behar dituzu
         password: Erabili 8 karaktere gutxienez
         phrase: Bat egingo du Maiuskula/minuskula kontuan hartu gabe eta edukiaren abisua kontuan hartu gabe
         scopes: Zeintzuk API atzitu ditzakeen aplikazioak. Goi mailako arloa aukeratzen baduzu, ez dituzu azpikoak aukeratu behar.
-        setting_aggregate_reblogs: Ez erakutsi bultzada berriak berriki bultzada jaso duten toot-entzat (berriki jasotako bultzadei eragiten die bakarrik)
+        setting_aggregate_reblogs: Ez erakutsi bultzada berriak berriki bultzada jaso duten tootentzat (berriki jasotako bultzadei eragiten die bakarrik)
         setting_default_sensitive: Multimedia hunkigarria lehenetsita ezkutatzen da, eta sakatuz ikusi daiteke
         setting_display_media_default: Ezkutatu hunkigarri gisa markatutako multimedia
         setting_display_media_hide_all: Ezkutatu multimedia guztia beti
         setting_display_media_show_all: Erakutsi beti hunkigarri gisa markatutako multimedia
         setting_hide_network: Nor jarraitzen duzun eta nork jarraitzen zaituen ez da bistaratuko zure profilean
-        setting_noindex: Zure profil publiko eta Toot-en orrietan eragina du
+        setting_noindex: Zure profil publiko eta tooten orrietan eragina du
         setting_show_application: Tootak bidaltzeko erabiltzen duzun aplikazioa zure tooten ikuspegi xehetsuan bistaratuko da
         setting_use_blurhash: Gradienteak ezkutatutakoaren koloreetan oinarritzen dira, baina xehetasunak ezkutatzen dituzte
         setting_use_pending_items: Ezkutatu denbora-lerroko eguneraketak klik baten atzean jarioa automatikoki korritu ordez
@@ -70,7 +70,7 @@ eu:
       tag:
         name: Letrak maiuskula/minuskulara aldatu ditzakezu besterik ez, adibidez irakurterrazago egiteko
       user:
-        chosen_languages: Ezer markatzekotan, hautatutako hizkuntzetan dauden toot-ak besterik ez dira erakutsiko
+        chosen_languages: Ezer markatzekotan, hautatutako hizkuntzetan dauden tootak besterik ez dira erakutsiko
     labels:
       account:
         fields:
@@ -84,7 +84,7 @@ eu:
         text: Aurrez ezarritako testua
         title: Izenburua
       admin_account_action:
-        include_statuses: Txertatu salatutako toot-ak e-mailean
+        include_statuses: Txertatu salatutako tootak e-mailean
         send_email_notification: Jakinarazi erabiltzaileari e-mail bidez
         text: Abisu pertsonalizatua
         type: Ekintza
@@ -130,7 +130,7 @@ eu:
         setting_aggregate_reblogs: Taldekatu bultzadak denbora-lerroetan
         setting_auto_play_gif: Erreproduzitu GIF animatuak automatikoki
         setting_boost_modal: Erakutsi baieztapen elkarrizketa-koadroa bultzada eman aurretik
-        setting_crop_images: Moztu irudiak hedatu gabeko toot-etan 16x9 proportzioan
+        setting_crop_images: Moztu irudiak hedatu gabeko tootetan 16x9 proportzioan
         setting_default_language: Argitalpenen hizkuntza
         setting_default_privacy: Mezuen pribatutasuna
         setting_default_sensitive: Beti markatu edukiak hunkigarri gisa
@@ -181,7 +181,7 @@ eu:
         listable: Baimendu traola hau bilaketetan agertzea eta profilen direktorioan
         name: Traola
         trendable: Baimendu traola hau joeretan agertzea
-        usable: Baimendu toot-ek traola hau erabiltzea
+        usable: Baimendu tootek traola hau erabiltzea
     'no': Ez
     recommended: Aholkatua
     required:
diff --git a/config/locales/simple_form.fa.yml b/config/locales/simple_form.fa.yml
index 1389f09a7..dea53ddbb 100644
--- a/config/locales/simple_form.fa.yml
+++ b/config/locales/simple_form.fa.yml
@@ -25,7 +25,7 @@ fa:
         autofollow: کسانی که از راه دعوت‌نامه عضو می‌شوند به طور خودکار پیگیر شما خواهند شد
         avatar: یکی از قالب‌های PNG یا  GIF یا JPG. بیشترین اندازه %{size}. تصویر به اندازهٔ %{dimensions} پیکسل تبدیل خواهد شد
         bot: این حساب بیشتر به طور خودکار فعالیت می‌کند و نظارت پیوسته‌ای روی آن وجود ندارد
-        context: یک یا چند زمینه که فیلتر باید در آن‌ها اعمال شود
+        context: یک یا چند زمینه که پالایه باید در آن‌ها اعمال شود
         current_password: به دلایل امنیتی لطفاً رمز این حساب را وارد کنید
         current_username: برای تأیید، لطفاً نام کاربری حساب فعلی را وارد کنید
         digest: تنها وقتی فرستاده می‌شود که مدتی طولانی فعالیتی نداشته باشید و در این مدت برای شما پیغام خصوصی‌ای نوشته شده باشد
@@ -34,7 +34,7 @@ fa:
         fields: شما می‌توانید تا چهار مورد را در یک جدول در نمایهٔ خود نمایش دهید
         header: یکی از قالب‌های PNG یا  GIF یا JPG. بیشترین اندازه %{size}. تصویر به اندازهٔ %{dimensions} پیکسل تبدیل خواهد شد
         inbox_url: نشانی صفحهٔ اصلی رله‌ای را که می‌خواهید به کار ببرید کپی کنید
-        irreversible: بوق‌های فیلترشده به طور برگشت‌ناپذیری ناپدید می‌شوند، حتی اگر فیلتر را بعداً بردارید
+        irreversible: بوق‌های پالوده به طور برگشت‌ناپذیری ناپدید می‌شوند، حتا اگر بعدها پالایه برداشته شود
         locale: زبان محیط کاربری، ایمیل‌ها، و اعلان‌ها
         locked: باید پیگیران تازه را خودتان تأیید کنید
         password: دست‌کم باید ۸ نویسه داشته باشد
@@ -107,7 +107,7 @@ fa:
         chosen_languages: جدا کردن زبان‌ها
         confirm_new_password: تأیید رمز تازه
         confirm_password: تأیید رمز
-        context: زمینه‌های فیلترکردن
+        context: زمینه‌های پالایش
         current_password: رمز فعلی
         data: داده‌ها
         discoverable: این حساب را در فهرست گزیدهٔ کاربران نشان بده
diff --git a/config/locales/simple_form.id.yml b/config/locales/simple_form.id.yml
index b37098153..1717d0722 100644
--- a/config/locales/simple_form.id.yml
+++ b/config/locales/simple_form.id.yml
@@ -54,6 +54,9 @@ id:
         whole_word: Ketika kata kunci/frasa hanya alfanumerik, maka itu hanya akan diterapkan jika cocok dengan semua kata
       domain_allow:
         domain: Domain ini dapat mengambil data dari server ini dan data yang diterima akan diproses dan disimpan
+      email_domain_block:
+        domain: Ini bisa nama domain yang muncul di alamat surel, data MX yang sedang diselesaikan oleh domain, atau IP server yang dipecahkan oleh data MX. Mereka akan dicek saat pendaftaran pengguna dan pendaftaran akan ditolak.
+        with_dns_records: Usaha untuk menyelesaikan data DNS domain yang diberikan akan dilakukan dan hasilnya akan masuk daftar hitam
       featured_tag:
         name: 'Anda mungkin ingin pakai salah satu dari ini:'
       form_challenge:
@@ -152,6 +155,8 @@ id:
         username: Nama pengguna
         username_or_email: Nama pengguna atau Surel
         whole_word: Seluruh kata
+      email_domain_block:
+        with_dns_records: Termasuk data MX dan IP domain
       featured_tag:
         name: Tagar
       interactions:
diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml
index 79cbe470d..61128bb38 100644
--- a/config/locales/simple_form.it.yml
+++ b/config/locales/simple_form.it.yml
@@ -163,6 +163,8 @@ it:
         must_be_follower: Blocca notifiche da chi non ti segue
         must_be_following: Blocca notifiche dalle persone che non segui
         must_be_following_dm: Blocca i messaggi diretti dalle persone che non segui
+      invite:
+        comment: Commento
       invite_request:
         text: Perché vuoi iscriverti?
       notification_emails:
diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml
index 2f762ca28..10e9f3d2b 100644
--- a/config/locales/simple_form.pl.yml
+++ b/config/locales/simple_form.pl.yml
@@ -56,6 +56,7 @@ pl:
       domain_allow:
         domain: Ta domena będzie mogła pobierać dane z serwera, a dane przychodzące z niej będą przetwarzane i przechowywane
       email_domain_block:
+        domain: Może to być nazwa domeny pojawiająca się w adresu e-mail, rekord MX na który rozwiązuje domena lub IP serwera na który rozwiązuje rekord MX. Będą one wykrywane i odrzucane przy rejestracji.
         with_dns_records: Zostanie wykonana próba rozwiązania rekordów DNS podanej domeny, a wyniki również zostaną dodane na czarną listę
       featured_tag:
         name: 'Sugerujemy użycie jednego z następujących:'
diff --git a/config/locales/simple_form.sk.yml b/config/locales/simple_form.sk.yml
index b8d3dd7a9..9e03d7254 100644
--- a/config/locales/simple_form.sk.yml
+++ b/config/locales/simple_form.sk.yml
@@ -147,7 +147,7 @@ sk:
       featured_tag:
         name: Haštag
       interactions:
-        must_be_follower: Blokuj oboznámenia od užívateľov, ktorí ma nenásledujú
+        must_be_follower: Blokuj oboznámenia od užívateľov, ktorí ma nenasledujú
         must_be_following: Blokuj oboznámenia od ľudí, ktorých nesledujem
         must_be_following_dm: Blokuj priame správy od ľudí, ktorých nesleduješ
       invite:
diff --git a/config/locales/simple_form.ta.yml b/config/locales/simple_form.ta.yml
index bac29f158..74c641901 100644
--- a/config/locales/simple_form.ta.yml
+++ b/config/locales/simple_form.ta.yml
@@ -6,6 +6,8 @@ ta:
         acct: நீங்கள் இங்கே நகர்த்த விரும்பும் கணக்கின் பயனர் பெயர்
       account_migration:
         acct: நீங்கள் இங்கே நகர்த்த விரும்பும் கணக்கின் பயனர் பெயர் username@domain
+      account_warning_preset:
+        title: விருப்பத் தேர்வு. பெறுநரால் பார்க்கமுடியாது
       admin_account_action:
         send_email_notification: தங்கள் கணக்கிற்கு என்ன நேர்ந்தது என்ற விவரம் பயனரால் பெறப்படும்
       announcement:
@@ -23,10 +25,15 @@ ta:
         password: குறைந்தது 8 எழுத்துக்களைப் பயன்படுத்தவும்
         setting_display_media_hide_all: எப்போதும் எல்லா ஊடகங்களையும் மறைக்கவும்
         setting_display_media_show_all: உணர்ச்சி வயப்படு (Sensitive) குறிக்கப்பட்ட மீடியாவை எப்போதும் காட்டுங்கள்
+      email_domain_block:
+        domain: இது மின்னஞ்சலில் காணப்படும் களத்தின் பெயராக இருக்கலாம், அல்லது அக்களம் சார்ந்திருக்கும் MX record-ஆக இருக்கலாம், அல்லது அந்த MX record சார்ந்திருக்கும் சர்வரின் IP முகவரியாக இருக்கலாம். பயனர் கணக்கைத் துவங்கும்போது அவை கண்காணிக்கப்பட்டு, கணக்குத் துவக்கம் நிராகரிக்கப்படும்.
+        with_dns_records: இக்களத்தின் DNS record-களை சரிசெய்யும் முயற்சி மேற்கொள்ளப்படும், மற்றும் அதன் முடிவுகள் தடுப்புப்பட்டியலில் சேர்க்கப்படும்
     labels:
       account:
         fields:
           name: லேபிள்
+      account_warning_preset:
+        title: தலைப்பு
       admin_account_action:
         types:
           disable: உள்நுழைவை முடக்கு
@@ -59,6 +66,8 @@ ta:
         setting_use_pending_items: மெதுவான பயன்முறை
         username: பயனர்பெயர்
         username_or_email: பயனர் பெயர் அல்லது மின்னஞ்சல்
+      email_domain_block:
+        with_dns_records: களத்தின் IP மற்றும் MX records-ஐ உள்ளடக்கு
     required:
       text: தேவை
     'yes': ஆம்
diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml
index c93843481..22a2647a3 100644
--- a/config/locales/simple_form.th.yml
+++ b/config/locales/simple_form.th.yml
@@ -88,7 +88,7 @@ th:
         types:
           disable: ปิดใช้งานการเข้าสู่ระบบ
           none: ไม่ทำสิ่งใด
-          silence: เงียบ
+          silence: ทำให้เงียบ
           suspend: ระงับและลบข้อมูลบัญชีอย่างถาวร
         warning_preset_id: ใช้คำเตือนที่ตั้งไว้ล่วงหน้า
       announcement:
diff --git a/config/locales/sk.yml b/config/locales/sk.yml
index 867375e2b..3a327c1d0 100644
--- a/config/locales/sk.yml
+++ b/config/locales/sk.yml
@@ -35,7 +35,7 @@ sk:
       one: príspevok
       other: príspevky
     status_count_before: Ktorí napísali
-    tagline: Následuj kamarátov, a objavuj nových
+    tagline: Nasleduj kamarátov, a objavuj nových
     terms: Podmienky užitia
     unavailable_content: Nedostupný obsah
     unavailable_content_description:
@@ -546,6 +546,7 @@ sk:
         title: Populárne haštagy
     site_uploads:
       delete: Vymaž nahratý súbor
+      destroyed_msg: Nahratie bolo zo stránky úspešne vymazané!
     statuses:
       back_to_account: Späť na účet
       batch:
@@ -664,9 +665,9 @@ sk:
   authorize_follow:
     already_following: Tento účet už následuješ
     error: Naneštastie nastala chyba pri hľadaní vzdialeného účtu
-    follow: Následuj
+    follow: Nasleduj
     follow_request: 'Poslal/a si žiadosť následovať užívateľa:'
-    following: 'Podarilo sa! Teraz už následuješ užívateľa:'
+    following: 'Podarilo sa! Teraz nasleduješ užívateľa:'
     post_follow:
       close: Alebo môžeš iba zatvoriť toto okno.
       return: Ukáž užívateľov profil
@@ -908,7 +909,7 @@ sk:
       title: Nové obľúbené
     follow:
       body: "%{name} ťa teraz následuje!"
-      subject: "%{name} ťa teraz následuje"
+      subject: "%{name} ťa teraz nasleduje"
       title: Nový sledovateľ
     follow_request:
       action: Spravuj žiadosti o sledovanie
@@ -950,6 +951,7 @@ sk:
     public_timelines: Verejné časové osi
   reactions:
     errors:
+      limit_reached: Maximálny počet rôznorodých reakcií bol dosiahnutý
       unrecognized_emoji: je neznámy smajlík
   relationships:
     activity: Aktivita účtu
@@ -1058,6 +1060,8 @@ sk:
       many: 'obsah nepovolených haštagov: %{tags}'
       one: 'obsahoval nepovolený haštag: %{tags}'
       other: 'obsahoval nepovolené haštagy: %{tags}'
+    errors:
+      in_reply_not_found: Príspevok, na ktorý sa snažíš odpovedať, už pravdepodobne neexistuje.
     language_detection: Zisti automaticky
     open_in_web: Otvor v okne na webe
     over_character_limit: limit %{max} znakov bol presiahnutý
diff --git a/config/locales/sv.yml b/config/locales/sv.yml
index a65f99b65..3f06878f8 100644
--- a/config/locales/sv.yml
+++ b/config/locales/sv.yml
@@ -755,6 +755,8 @@ sv:
     disallowed_hashtags:
       one: 'innehöll en otillåten hashtag: %{tags}'
       other: 'innehöll de otillåtna hashtagarna: %{tags}'
+    errors:
+      in_reply_not_found: Statusen du försöker svara på existerar inte.
     language_detection: Lista ut språk automatiskt
     open_in_web: Öppna på webben
     over_character_limit: teckengräns på %{max} har överskridits
diff --git a/config/locales/ta.yml b/config/locales/ta.yml
index ccdebd041..b4fc2ffac 100644
--- a/config/locales/ta.yml
+++ b/config/locales/ta.yml
@@ -78,6 +78,7 @@ ta:
       delete: அகற்று
       destroyed_msg: நடுநிலை குறிப்பு வெற்றிகரமாக அகற்றப்பட்டது!
     accounts:
+      add_email_domain_block: இம்மின்னஞ்சல் களத்தைத் தடுப்புப்பட்டியலில் சேர்
       approve: அங்கீகரி
       approve_all: அனைத்தும் அங்கீகரி
       are_you_sure: நிச்சயமா?
@@ -149,6 +150,7 @@ ta:
         staff: பணியாளர்
         user: பயனர்
       search: தேடு
+      search_same_email_domain: இம்மின்னஞ்சல் களத்தில் உள்ள மற்ற பயனர்கள்
       shared_inbox_url: குழு மின்னஞ்சல் முகவரி
       show:
         created_reports: உறுவாக்கிய அறிக்கைகள்
@@ -200,6 +202,7 @@ ta:
           suspend: தற்காலீகமாக நீக்குக
     email_domain_blocks:
       empty: மின்னஞ்சற் களங்கள் எதுவும் தடுக்கப்படவில்லை.
+      from_html: "%{domain} -இலிருந்து"
     invites:
       filter:
         all: அனைத்தும்
@@ -221,10 +224,15 @@ ta:
           other: "%{count} புகார்கள்"
       comment:
         none: எதுவுமில்லை
+    site_uploads:
+      delete: பதிவேற்றப்பட்டப் படம் அழிக்கப்பட்டது
+      destroyed_msg: பதிவேற்றப்பட்ட வலைதளம் வெற்றிக்கரமாக அழிக்கப்பட்டது!
   appearance:
     localization:
       body: மாஸ்டோடான் தன்னார்வலர்களால் மொழிபெயர்க்கப்படுகிறது.
       guide_link_text: அனைவரும் பங்களிக்கலாம்.
+  authorize_follow:
+    already_requested: இக்கணக்கைப் பின்தொடரும் கோரிக்கையை நீங்கள் ஏற்கனவே அனுப்பிவிட்டீர்கள்
   date:
     formats:
       default: "%b %d, %Y"
@@ -251,6 +259,9 @@ ta:
       '43200': 12 hours
       '604800': 1 week
       '86400': 1 day
+  media_attachments:
+    validations:
+      not_ready: பதிவேற்றம் முடிவடையாத கோப்புகளை இணைக்க முடியாது. சிறிது நேரம் கழித்து மீண்டும் முயற்சி செய்யவும்!
   notifications:
     email_events: மின்னஞ்சல் அறிவிப்புகளுக்கான நிகழ்வுகள்
     email_events_hint: 'எந்த நிகழ்வுகளுக்கு அறிவிப்புகளைப் பெற வேண்டும் என்று தேர்வு செய்க:'
@@ -263,4 +274,6 @@ ta:
       limit_reached: எதிர்வினைகளுக்கான உச்சவரம்பு எட்டப்பட்டது
       unrecognized_emoji: அங்கீகரிக்கப்பட்ட ஈமோஜி அல்ல
   statuses:
+    errors:
+      in_reply_not_found: நீங்கள் மறுமொழி அளிக்க முயலும் பதிவு இருப்பதுபோல் தெரியவில்லை.
     show_thread: தொடரைக் காட்டு
diff --git a/config/locales/th.yml b/config/locales/th.yml
index ce2e27578..10f25549b 100644
--- a/config/locales/th.yml
+++ b/config/locales/th.yml
@@ -113,12 +113,12 @@ th:
       joined: เข้าร่วมเมื่อ
       location:
         all: ทั้งหมด
-        local: ในเว็บ
+        local: ในเซิร์ฟเวอร์
         remote: ระยะไกล
         title: ตำแหน่งที่ตั้ง
       login_status: สถานะการเข้าสู่ระบบ
       media_attachments: ไฟล์แนบสื่อ
-      memorialize: เปลี่ยนเป็นระลึกถึง
+      memorialize: เปลี่ยนเป็นอนุสรณ์
       moderation:
         active: ใช้งานอยู่
         all: ทั้งหมด
@@ -159,7 +159,7 @@ th:
       show:
         created_reports: รายงานที่สร้าง
         targeted_reports: รายงานโดยผู้อื่น
-      silence: เงียบ
+      silence: ทำให้เงียบ
       silenced: เงียบอยู่
       statuses: สถานะ
       subscribe: บอกรับ
@@ -167,7 +167,7 @@ th:
       time_in_queue: กำลังรออยู่ในคิว %{time}
       title: บัญชี
       unconfirmed_email: อีเมลที่ยังไม่ได้ยืนยัน
-      undo_silenced: เลิกทำการเงียบ
+      undo_silenced: เลิกทำการทำให้เงียบ
       undo_suspension: เลิกทำการระงับ
       unsubscribe: เลิกบอกรับ
       username: ชื่อผู้ใช้
@@ -175,6 +175,42 @@ th:
       web: เว็บ
       whitelisted: ขึ้นบัญชีขาวแล้ว
     action_logs:
+      action_types:
+        assigned_to_self_report: มอบหมายรายงาน
+        change_email_user: เปลี่ยนอีเมลสำหรับผู้ใช้
+        confirm_user: ยืนยันผู้ใช้
+        create_account_warning: สร้างคำเตือน
+        create_announcement: สร้างประกาศ
+        create_custom_emoji: สร้างอีโมจิที่กำหนดเอง
+        create_domain_allow: สร้างการอนุญาตโดเมน
+        create_domain_block: สร้างการปิดกั้นโดเมน
+        create_email_domain_block: สร้างการปิดกั้นโดเมนอีเมล
+        demote_user: ลดขั้นผู้ใช้
+        destroy_announcement: ลบประกาศ
+        destroy_custom_emoji: ลบอีโมจิที่กำหนดเอง
+        destroy_domain_allow: ลบการอนุญาตโดเมน
+        destroy_domain_block: ลบการปิดกั้นโดเมน
+        destroy_email_domain_block: ลบการปิดกั้นโดเมนอีเมล
+        destroy_status: ลบสถานะ
+        disable_2fa_user: ปิดใช้งาน 2FA
+        disable_custom_emoji: ปิดใช้งานอีโมจิที่กำหนดเอง
+        disable_user: ปิดใช้งานผู้ใช้
+        enable_custom_emoji: เปิดใช้งานอีโมจิที่กำหนดเอง
+        enable_user: เปิดใช้งานผู้ใช้
+        memorialize_account: ทำให้บัญชีเป็นอนุสรณ์
+        promote_user: เลื่อนขั้นผู้ใช้
+        remove_avatar_user: เอาภาพประจำตัวออก
+        reopen_report: เปิดรายงานใหม่
+        reset_password_user: ตั้งรหัสผ่านใหม่
+        resolve_report: แก้ปัญหารายงาน
+        silence_account: ทำให้บัญชีเงียบ
+        suspend_account: ระงับบัญชี
+        unassigned_report: เลิกมอบหมายรายงาน
+        unsilence_account: เลิกทำให้บัญชีเงียบ
+        unsuspend_account: เลิกระงับบัญชี
+        update_announcement: อัปเดตประกาศ
+        update_custom_emoji: อัปเดตอีโมจิที่กำหนดเอง
+        update_status: อัปเดตสถานะ
       actions:
         change_email_user: "%{name} ได้เปลี่ยนที่อยู่อีเมลของผู้ใช้ %{target}"
         confirm_user: "%{name} ได้ยืนยันที่อยู่อีเมลของผู้ใช้ %{target}"
@@ -196,17 +232,23 @@ th:
         disable_user: "%{name} ได้ปิดใช้งานการเข้าสู่ระบบสำหรับผู้ใช้ %{target}"
         enable_custom_emoji: "%{name} ได้เปิดใช้งานอีโมจิ %{target}"
         enable_user: "%{name} ได้เปิดใช้งานการเข้าสู่ระบบสำหรับผู้ใช้ %{target}"
+        memorialize_account: "%{name} ได้เปลี่ยนบัญชีของ %{target} เป็นหน้าอนุสรณ์"
         promote_user: "%{name} ได้เลื่อนขั้นผู้ใช้ %{target}"
         remove_avatar_user: "%{name} ได้เอาภาพประจำตัวของ %{target} ออก"
         reopen_report: "%{name} ได้เปิดรายงาน %{target} ใหม่"
         resolve_report: "%{name} ได้แก้ปัญหารายงาน %{target}"
+        silence_account: "%{name} ได้ทำให้บัญชีของ %{target} เงียบ"
         suspend_account: "%{name} ได้ระงับบัญชีของ %{target}"
         unassigned_report: "%{name} ได้เลิกมอบหมายรายงาน %{target}"
+        unsilence_account: "%{name} ได้เลิกทำให้บัญชีของ %{target} เงียบ"
         unsuspend_account: "%{name} ได้เลิกระงับบัญชีของ %{target}"
         update_announcement: "%{name} ได้อัปเดตประกาศ %{target}"
         update_custom_emoji: "%{name} ได้อัปเดตอีโมจิ %{target}"
         update_status: "%{name} ได้อัปเดตสถานะโดย %{target}"
       deleted_status: "(สถานะที่ลบแล้ว)"
+      empty: ไม่พบรายการบันทึก
+      filter_by_action: กรองตามการกระทำ
+      filter_by_user: กรองตามผู้ใช้
       title: รายการบันทึกการตรวจสอบ
     announcements:
       destroyed_msg: ลบประกาศสำเร็จ!
@@ -259,6 +301,7 @@ th:
       feature_invites: ลิงก์เชิญ
       feature_profile_directory: ไดเรกทอรีโปรไฟล์
       feature_registrations: การลงทะเบียน
+      feature_relay: รีเลย์การติดต่อกับภายนอก
       feature_spam_check: การป้องกันสแปม
       feature_timeline_preview: ตัวอย่างเส้นเวลา
       features: คุณลักษณะ
@@ -292,15 +335,15 @@ th:
         create: สร้างการปิดกั้น
         hint: การปิดกั้นโดเมนจะไม่ป้องกันการสร้างรายการบัญชีในฐานข้อมูล แต่จะใช้วิธีการควบคุมเฉพาะกับบัญชีเหล่านั้นย้อนหลังและโดยอัตโนมัติ
         severity:
-          desc_html: "<strong>เงียบ</strong> จะทำให้โพสต์ของบัญชีไม่ปรากฏแก่ใครก็ตามที่ไม่ได้กำลังติดตามบัญชี <strong>ระงับ</strong> จะเอาเนื้อหา, สื่อ และข้อมูลโปรไฟล์ทั้งหมดของบัญชีออก ใช้ <strong>ไม่มี</strong> หากคุณเพียงแค่ต้องการปฏิเสธไฟล์สื่อ"
+          desc_html: "<strong>ทำให้เงียบ</strong> จะทำให้โพสต์ของบัญชีไม่ปรากฏแก่ใครก็ตามที่ไม่ได้กำลังติดตามบัญชี <strong>ระงับ</strong> จะเอาเนื้อหา, สื่อ และข้อมูลโปรไฟล์ทั้งหมดของบัญชีออก ใช้ <strong>ไม่มี</strong> หากคุณเพียงแค่ต้องการปฏิเสธไฟล์สื่อ"
           noop: ไม่มี
-          silence: เงียบ
+          silence: ทำให้เงียบ
           suspend: ระงับ
         title: การปิดกั้นโดเมนใหม่
       private_comment: ความคิดเห็นส่วนตัว
       public_comment: ความคิดเห็นสาธารณะ
       reject_media: ปฏิเสธไฟล์สื่อ
-      reject_media_hint: เอาไฟล์สื่อที่จัดเก็บไว้ในเว็บออกและปฏิเสธที่จะดาวน์โหลดไฟล์ใด ๆ ในอนาคต ไม่เกี่ยวข้องกับการระงับ
+      reject_media_hint: เอาไฟล์สื่อที่จัดเก็บไว้ในเซิร์ฟเวอร์ออกและปฏิเสธที่จะดาวน์โหลดไฟล์ใด ๆ ในอนาคต ไม่เกี่ยวข้องกับการระงับ
       reject_reports: ปฏิเสธรายงาน
       severity:
         silence: เงียบอยู่
@@ -309,7 +352,7 @@ th:
         affected_accounts:
           other: มีผลต่อ %{count} บัญชีในฐานข้อมูล
         retroactive:
-          silence: เลิกเงียบบัญชีที่มีอยู่ทั้งหมดจากโดเมนนี้
+          silence: เลิกทำให้บัญชีที่มีอยู่ทั้งหมดจากโดเมนนี้เงียบ
           suspend: เลิกระงับบัญชีที่มีอยู่ทั้งหมดจากโดเมนนี้
         title: เลิกทำการปิดกั้นโดเมนสำหรับ %{domain}
         undo: เลิกทำ
@@ -409,7 +452,7 @@ th:
         all: ให้กับทุกคน
         disabled: ให้กับไม่มีใคร
         title: แสดงการปิดกั้นโดเมน
-        users: ให้กับผู้ใช้ในเว็บที่เข้าสู่ระบบ
+        users: ให้กับผู้ใช้ในเซิร์ฟเวอร์ที่เข้าสู่ระบบ
       domain_blocks_rationale:
         title: แสดงคำชี้แจงเหตุผล
       enable_bootstrap_timeline_accounts:
diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml
index e16aa5599..33f25eaa6 100644
--- a/config/locales/zh-CN.yml
+++ b/config/locales/zh-CN.yml
@@ -41,7 +41,7 @@ zh-CN:
       rejecting_media: 来自这些服务器的媒体文件将不会被处理或存储,缩略图也不会显示,需要手动点击打开原始文件。
       silenced: 来自这些服务器上的帖子将不会出现在公共时间线和会话中;此外,除非你关注了这些服务器上的用户,否则他们的互动不会产生通知。
       suspended: 这些服务器的数据将不会被处理、存储或者交换,本站也将无法和来自这些服务器的用户互动或者交流。
-    unavailable_content_html: 通常来说,在Mastodon上,你可以浏览联邦宇宙中任何一台服务器上的内容,并且和上面的用户互动。但是这台服务器上会有一些挟制。
+    unavailable_content_html: 通常来说,在Mastodon上,你可以浏览联邦宇宙中任何一台服务器上的内容,并且和上面的用户互动。但是某些站点上不排除会有例外。
     user_count_after:
       other: 位用户
     user_count_before: 这里共注册有
@@ -498,8 +498,8 @@ zh-CN:
           open: 开放注册
         title: 注册模式
       show_known_fediverse_at_about_page:
-        desc_html: 启用此选项将会在预览中显示来自已知实例的嘟文,否则只会显示本站时间轴的内容.
-        title: 在时间轴预览中显示已知实例
+        desc_html: 如果开启,就会在时间轴预览显示其他站点嘟文,否则就只会只显示本站嘟文。
+        title: 在时间轴预览中显示其他站点嘟文
       show_staff_badge:
         desc_html: 在个人资料页上显示管理人员标志
         title: 显示管理人员标志
@@ -1062,6 +1062,8 @@ zh-CN:
     content_warning: 内容警告:%{warning}
     disallowed_hashtags:
       other: 包含了这些禁止的话题标签:%{tags}
+    errors:
+      in_reply_not_found: 你回复的嘟文似乎不存在
     language_detection: 自动检测语言
     open_in_web: 在站内打开
     over_character_limit: 超过了 %{max} 字的限制
diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml
index 0139385c4..92233dcc6 100644
--- a/config/locales/zh-HK.yml
+++ b/config/locales/zh-HK.yml
@@ -758,6 +758,8 @@ zh-HK:
     content_warning: 內容警告: %{warning}
     disallowed_hashtags:
       other: 包含不允許的標籤: %{tags}
+    errors:
+      in_reply_not_found: 您嘗試回覆的嘟文看起來不存在。
     language_detection: 自動偵測語言
     open_in_web: 開啟網頁
     over_character_limit: 超過了 %{max} 字的限制
diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml
index cb05ab994..3f82428de 100644
--- a/config/locales/zh-TW.yml
+++ b/config/locales/zh-TW.yml
@@ -740,6 +740,8 @@ zh-TW:
       description: 附件: %{attached}
     boosted_from_html: 轉嘟自 %{acct_link}
     content_warning: 內容警告: %{warning}
+    errors:
+      in_reply_not_found: 您嘗試回覆的嘟文看起來不存在。
     language_detection: 自動偵測語言
     open_in_web: 以網頁開啟
     over_character_limit: 超過了 %{max} 字的限制
diff --git a/db/migrate/20200312162302_add_status_ids_to_announcements.rb b/db/migrate/20200312162302_add_status_ids_to_announcements.rb
new file mode 100644
index 000000000..42aa6513d
--- /dev/null
+++ b/db/migrate/20200312162302_add_status_ids_to_announcements.rb
@@ -0,0 +1,6 @@
+class AddStatusIdsToAnnouncements < ActiveRecord::Migration[5.2]
+  def change
+    add_column :announcements, :status_ids, :bigint, array: true
+  end
+end
+
diff --git a/db/schema.rb b/db/schema.rb
index 392cc739c..c294d762b 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -231,6 +231,7 @@ ActiveRecord::Schema.define(version: 2020_03_12_185443) do
     t.datetime "created_at", null: false
     t.datetime "updated_at", null: false
     t.datetime "published_at"
+    t.bigint "status_ids", array: true
   end
 
   create_table "backups", force: :cascade do |t|
diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb
index 49fe73043..ba78a3c30 100644
--- a/lib/mastodon/version.rb
+++ b/lib/mastodon/version.rb
@@ -13,7 +13,7 @@ module Mastodon
     end
 
     def patch
-      2
+      3
     end
 
     def flags
diff --git a/package.json b/package.json
index 0edb4a2fa..82f918456 100644
--- a/package.json
+++ b/package.json
@@ -70,6 +70,7 @@
     "@babel/runtime": "^7.8.4",
     "@clusterws/cws": "^0.17.3",
     "@gamestdio/websocket": "^0.3.2",
+    "@rails/ujs": "^6.0.2",
     "array-includes": "^3.1.1",
     "arrow-key-navigation": "^1.1.0",
     "atrament": "0.2.4",
@@ -126,7 +127,6 @@
     "promise.prototype.finally": "^3.1.2",
     "prop-types": "^15.5.10",
     "punycode": "^2.1.0",
-    "@rails/ujs": "^6.0.2",
     "react": "^16.13.1",
     "react-dom": "^16.13.0",
     "react-hotkeys": "^1.1.4",
@@ -189,5 +189,8 @@
     "sass-lint": "^1.13.1",
     "webpack-dev-server": "^3.10.3",
     "yargs": "^15.3.1"
+  },
+  "resolutions": {
+    "kind-of": "^6.0.3"
   }
 }
diff --git a/yarn.lock b/yarn.lock
index 55c70ba75..98ce194be 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -5767,11 +5767,6 @@ is-boolean-object@^1.0.1:
   resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.1.tgz#10edc0900dd127697a92f6f9807c7617d68ac48e"
   integrity sha512-TqZuVwa/sppcrhUCAYkGBk7w0yxfQQnxq28fjkO53tnK9FQXmdwz2JS5+GjsWQ6RByES1K40nI+yDic5c9/aAQ==
 
-is-buffer@^1.1.5:
-  version "1.1.6"
-  resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
-  integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
-
 is-buffer@^2.0.2:
   version "2.0.3"
   resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.3.tgz#4ecf3fcf749cbd1e472689e109ac66261a25e725"
@@ -6742,29 +6737,10 @@ killable@^1.0.1:
   resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892"
   integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==
 
-kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
-  version "3.2.2"
-  resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
-  integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=
-  dependencies:
-    is-buffer "^1.1.5"
-
-kind-of@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
-  integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc=
-  dependencies:
-    is-buffer "^1.1.5"
-
-kind-of@^5.0.0:
-  version "5.1.0"
-  resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
-  integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
-
-kind-of@^6.0.0, kind-of@^6.0.2:
-  version "6.0.2"
-  resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
-  integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==
+kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0, kind-of@^4.0.0, kind-of@^5.0.0, kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3:
+  version "6.0.3"
+  resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
+  integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
 
 kleur@^3.0.2:
   version "3.0.2"