about summary refs log tree commit diff
diff options
context:
space:
mode:
authorStarfall <root@starfall.blue>2020-02-13 17:55:53 -0600
committerStarfall <root@starfall.blue>2020-02-13 17:55:53 -0600
commit5902299384d15249fe4b84b8761d4a49f3c7f6fd (patch)
tree66f1db08a2f6f9ae2254ba7a81b71835039d671e
parent6d24d3bcb84abd04f31da95f97f6d60ef0afdc00 (diff)
parent0cbd6d696b8937066cde297ad2eae4b558353b7c (diff)
Merge branch 'glitch'
-rw-r--r--.env.production.sample5
-rw-r--r--CHANGELOG.md16
-rw-r--r--Gemfile2
-rw-r--r--Gemfile.lock4
-rw-r--r--app/controllers/api/web/embeds_controller.rb16
-rw-r--r--app/controllers/concerns/signature_verification.rb2
-rw-r--r--app/controllers/tags_controller.rb10
-rw-r--r--app/helpers/accounts_helper.rb2
-rw-r--r--app/javascript/flavours/glitch/components/status_action_bar.js2
-rw-r--r--app/javascript/flavours/glitch/features/status/components/action_bar.js2
-rw-r--r--app/javascript/flavours/glitch/features/video/index.js2
-rw-r--r--app/javascript/flavours/glitch/packs/public.js2
-rw-r--r--app/javascript/flavours/glitch/styles/components/announcements.scss7
-rw-r--r--app/javascript/mastodon/components/status_action_bar.js2
-rw-r--r--app/javascript/mastodon/features/status/components/action_bar.js6
-rw-r--r--app/javascript/mastodon/features/video/index.js2
-rw-r--r--app/javascript/mastodon/locales/ar.json11
-rw-r--r--app/javascript/mastodon/locales/ast.json153
-rw-r--r--app/javascript/mastodon/locales/bg.json3
-rw-r--r--app/javascript/mastodon/locales/bn.json3
-rw-r--r--app/javascript/mastodon/locales/br.json3
-rw-r--r--app/javascript/mastodon/locales/ca.json7
-rw-r--r--app/javascript/mastodon/locales/co.json3
-rw-r--r--app/javascript/mastodon/locales/cs.json5
-rw-r--r--app/javascript/mastodon/locales/cy.json5
-rw-r--r--app/javascript/mastodon/locales/da.json3
-rw-r--r--app/javascript/mastodon/locales/de.json5
-rw-r--r--app/javascript/mastodon/locales/el.json3
-rw-r--r--app/javascript/mastodon/locales/eo.json7
-rw-r--r--app/javascript/mastodon/locales/es-AR.json3
-rw-r--r--app/javascript/mastodon/locales/es.json3
-rw-r--r--app/javascript/mastodon/locales/et.json5
-rw-r--r--app/javascript/mastodon/locales/eu.json3
-rw-r--r--app/javascript/mastodon/locales/fa.json101
-rw-r--r--app/javascript/mastodon/locales/fi.json9
-rw-r--r--app/javascript/mastodon/locales/fr.json3
-rw-r--r--app/javascript/mastodon/locales/ga.json3
-rw-r--r--app/javascript/mastodon/locales/gl.json27
-rw-r--r--app/javascript/mastodon/locales/he.json3
-rw-r--r--app/javascript/mastodon/locales/hi.json3
-rw-r--r--app/javascript/mastodon/locales/hr.json3
-rw-r--r--app/javascript/mastodon/locales/hu.json3
-rw-r--r--app/javascript/mastodon/locales/hy.json3
-rw-r--r--app/javascript/mastodon/locales/id.json5
-rw-r--r--app/javascript/mastodon/locales/io.json3
-rw-r--r--app/javascript/mastodon/locales/is.json5
-rw-r--r--app/javascript/mastodon/locales/it.json5
-rw-r--r--app/javascript/mastodon/locales/ja.json3
-rw-r--r--app/javascript/mastodon/locales/ka.json3
-rw-r--r--app/javascript/mastodon/locales/kab.json101
-rw-r--r--app/javascript/mastodon/locales/kk.json3
-rw-r--r--app/javascript/mastodon/locales/kn.json3
-rw-r--r--app/javascript/mastodon/locales/ko.json5
-rw-r--r--app/javascript/mastodon/locales/lt.json3
-rw-r--r--app/javascript/mastodon/locales/lv.json3
-rw-r--r--app/javascript/mastodon/locales/mk.json3
-rw-r--r--app/javascript/mastodon/locales/ml.json3
-rw-r--r--app/javascript/mastodon/locales/mr.json3
-rw-r--r--app/javascript/mastodon/locales/ms.json3
-rw-r--r--app/javascript/mastodon/locales/nl.json15
-rw-r--r--app/javascript/mastodon/locales/nn.json3
-rw-r--r--app/javascript/mastodon/locales/no.json3
-rw-r--r--app/javascript/mastodon/locales/oc.json19
-rw-r--r--app/javascript/mastodon/locales/pl.json15
-rw-r--r--app/javascript/mastodon/locales/pt-BR.json5
-rw-r--r--app/javascript/mastodon/locales/pt-PT.json5
-rw-r--r--app/javascript/mastodon/locales/ro.json3
-rw-r--r--app/javascript/mastodon/locales/ru.json7
-rw-r--r--app/javascript/mastodon/locales/sk.json3
-rw-r--r--app/javascript/mastodon/locales/sl.json3
-rw-r--r--app/javascript/mastodon/locales/sq.json3
-rw-r--r--app/javascript/mastodon/locales/sr-Latn.json3
-rw-r--r--app/javascript/mastodon/locales/sr.json3
-rw-r--r--app/javascript/mastodon/locales/sv.json3
-rw-r--r--app/javascript/mastodon/locales/ta.json123
-rw-r--r--app/javascript/mastodon/locales/te.json3
-rw-r--r--app/javascript/mastodon/locales/th.json3
-rw-r--r--app/javascript/mastodon/locales/tr.json7
-rw-r--r--app/javascript/mastodon/locales/uk.json3
-rw-r--r--app/javascript/mastodon/locales/ur.json3
-rw-r--r--app/javascript/mastodon/locales/vi.json3
-rw-r--r--app/javascript/mastodon/locales/zh-CN.json15
-rw-r--r--app/javascript/mastodon/locales/zh-HK.json3
-rw-r--r--app/javascript/mastodon/locales/zh-TW.json3
-rw-r--r--app/javascript/packs/public.js2
-rw-r--r--app/javascript/styles/mastodon/components.scss7
-rw-r--r--app/lib/formatter.rb2
-rw-r--r--app/lib/sanitize_config.rb39
-rw-r--r--app/models/concerns/remotable.rb2
-rw-r--r--app/serializers/rest/announcement_serializer.rb4
-rw-r--r--app/serializers/rest/status_serializer.rb2
-rw-r--r--app/views/accounts/_og.html.haml2
-rw-r--r--app/views/accounts/show.html.haml2
-rw-r--r--app/views/statuses/show.html.haml2
-rw-r--r--config/initializers/0_duplicate_migrations.rb12
-rw-r--r--config/initializers/content_security_policy.rb2
-rw-r--r--config/locales/activerecord.fa.yml2
-rw-r--r--config/locales/ar.yml31
-rw-r--r--config/locales/ast.yml74
-rw-r--r--config/locales/ca.yml11
-rw-r--r--config/locales/co.yml11
-rw-r--r--config/locales/cs.yml28
-rw-r--r--config/locales/cy.yml31
-rw-r--r--config/locales/de.yml10
-rw-r--r--config/locales/devise.ar.yml1
-rw-r--r--config/locales/devise.fa.yml58
-rw-r--r--config/locales/devise.gl.yml12
-rw-r--r--config/locales/devise.kab.yml34
-rw-r--r--config/locales/devise.pl.yml12
-rw-r--r--config/locales/devise.ta.yml88
-rw-r--r--config/locales/doorkeeper.ast.yml7
-rw-r--r--config/locales/doorkeeper.cy.yml1
-rw-r--r--config/locales/doorkeeper.fa.yml6
-rw-r--r--config/locales/doorkeeper.kab.yml38
-rw-r--r--config/locales/doorkeeper.nl.yml1
-rw-r--r--config/locales/doorkeeper.nn.yml1
-rw-r--r--config/locales/doorkeeper.no.yml1
-rw-r--r--config/locales/doorkeeper.oc.yml1
-rw-r--r--config/locales/doorkeeper.pl.yml3
-rw-r--r--config/locales/doorkeeper.ru.yml2
-rw-r--r--config/locales/doorkeeper.th.yml2
-rw-r--r--config/locales/doorkeeper.zh-CN.yml1
-rw-r--r--config/locales/el.yml11
-rw-r--r--config/locales/en.yml2
-rw-r--r--config/locales/eo.yml27
-rw-r--r--config/locales/es-AR.yml11
-rw-r--r--config/locales/es.yml10
-rw-r--r--config/locales/et.yml27
-rw-r--r--config/locales/eu.yml13
-rw-r--r--config/locales/fa.yml299
-rw-r--r--config/locales/fr.yml11
-rw-r--r--config/locales/gl.yml79
-rw-r--r--config/locales/hu.yml11
-rw-r--r--config/locales/id.yml29
-rw-r--r--config/locales/is.yml31
-rw-r--r--config/locales/it.yml31
-rw-r--r--config/locales/ja.yml12
-rw-r--r--config/locales/kab.yml271
-rw-r--r--config/locales/kk.yml8
-rw-r--r--config/locales/ko.yml20
-rw-r--r--config/locales/nl.yml42
-rw-r--r--config/locales/nn.yml36
-rw-r--r--config/locales/no.yml67
-rw-r--r--config/locales/oc.yml64
-rw-r--r--config/locales/pl.yml29
-rw-r--r--config/locales/pt-BR.yml27
-rw-r--r--config/locales/pt-PT.yml27
-rw-r--r--config/locales/ru.yml14
-rw-r--r--config/locales/simple_form.ar.yml11
-rw-r--r--config/locales/simple_form.ast.yml3
-rw-r--r--config/locales/simple_form.cs.yml8
-rw-r--r--config/locales/simple_form.cy.yml12
-rw-r--r--config/locales/simple_form.eo.yml6
-rw-r--r--config/locales/simple_form.et.yml12
-rw-r--r--config/locales/simple_form.eu.yml6
-rw-r--r--config/locales/simple_form.fa.yml16
-rw-r--r--config/locales/simple_form.fi.yml5
-rw-r--r--config/locales/simple_form.id.yml6
-rw-r--r--config/locales/simple_form.is.yml12
-rw-r--r--config/locales/simple_form.it.yml12
-rw-r--r--config/locales/simple_form.ja.yml8
-rw-r--r--config/locales/simple_form.kab.yml24
-rw-r--r--config/locales/simple_form.ko.yml6
-rw-r--r--config/locales/simple_form.nl.yml12
-rw-r--r--config/locales/simple_form.oc.yml12
-rw-r--r--config/locales/simple_form.pl.yml27
-rw-r--r--config/locales/simple_form.pt-BR.yml12
-rw-r--r--config/locales/simple_form.pt-PT.yml12
-rw-r--r--config/locales/simple_form.ta.yml11
-rw-r--r--config/locales/simple_form.th.yml12
-rw-r--r--config/locales/simple_form.zh-CN.yml12
-rw-r--r--config/locales/sk.yml14
-rw-r--r--config/locales/ta.yml31
-rw-r--r--config/locales/th.yml13
-rw-r--r--config/locales/tr.yml10
-rw-r--r--config/locales/uk.yml11
-rw-r--r--config/locales/zh-CN.yml36
-rw-r--r--lib/mastodon/version.rb2
-rw-r--r--spec/controllers/concerns/signature_verification_spec.rb27
-rw-r--r--spec/controllers/health_check_controller_spec.rb13
-rw-r--r--spec/lib/sanitize_config_spec.rb16
181 files changed, 2307 insertions, 755 deletions
diff --git a/.env.production.sample b/.env.production.sample
index f573a37de..a752298e8 100644
--- a/.env.production.sample
+++ b/.env.production.sample
@@ -89,6 +89,11 @@ SMTP_FROM_ADDRESS=notifications@example.com
 # Access-Control-Allow-Origin: https://example.com/
 # CDN_HOST=https://assets.example.com
 
+# Optional list of hosts that are allowed to serve media for your instance
+# This is useful if you include external media in your custom CSS or about page,
+# or if your data storage provider makes use of redirects to other domains.
+# EXTRA_DATA_HOSTS=https://data.example1.com|https://data.example2.com
+
 # S3 (optional)
 # The attachment host must allow cross origin request from WEB_DOMAIN or
 # LOCAL_DOMAIN if WEB_DOMAIN is not set. For example, the server may have the
diff --git a/CHANGELOG.md b/CHANGELOG.md
index fa5b2bfed..84e08341e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,7 +3,7 @@ Changelog
 
 All notable changes to this project will be documented in this file.
 
-## Unreleased
+## [3.1.0] - 2020-02-09
 ### Added
 
 - Add bookmarks ([ThibG](https://github.com/tootsuite/mastodon/pull/7107), [Gargron](https://github.com/tootsuite/mastodon/pull/12494), [Gomasy](https://github.com/tootsuite/mastodon/pull/12381))
@@ -38,8 +38,9 @@ All notable changes to this project will be documented in this file.
 - Add support for KaiOS arrow navigation to public pages ([nolanlawson](https://github.com/tootsuite/mastodon/pull/12251))
 - Add `discoverable` to accounts in REST API ([trwnh](https://github.com/tootsuite/mastodon/pull/12508))
 - Add admin setting to disable default follows ([ArisuOngaku](https://github.com/tootsuite/mastodon/pull/12566))
-- Add support for LDAP and PAM in the OAuth password grant strategy ([ntl-purism](https://github.com/tootsuite/mastodon/pull/12390))
+- Add support for LDAP and PAM in the OAuth password grant strategy ([ntl-purism](https://github.com/tootsuite/mastodon/pull/12390), [Gargron](https://github.com/tootsuite/mastodon/pull/12743))
 - Allow support for `Accept`/`Reject` activities with a non-embedded object ([puckipedia](https://github.com/tootsuite/mastodon/pull/12199))
+- Add "Show thread" button to public profiles ([Sasha-Sorokin](https://github.com/tootsuite/mastodon/pull/13000))
 
 ### Changed
 
@@ -65,6 +66,7 @@ All notable changes to this project will be documented in this file.
 - Change to fallback to to `Create` audience when `object` has no defined audience ([ThibG](https://github.com/tootsuite/mastodon/pull/12249))
 - Change Twemoji library to 12.1.3 in web UI ([koyuawsmbrtn](https://github.com/tootsuite/mastodon/pull/12342))
 - Change blocked users to be hidden from following/followers lists ([ThibG](https://github.com/tootsuite/mastodon/pull/12733))
+- Change signature verification to ignore signatures with invalid host ([Gargron](https://github.com/tootsuite/mastodon/pull/13033))
 
 ### Removed
 
@@ -92,14 +94,13 @@ All notable changes to this project will be documented in this file.
 - Fix old migrations failing because of strong migrations update ([ThibG](https://github.com/tootsuite/mastodon/pull/12787), [ThibG](https://github.com/tootsuite/mastodon/pull/12692))
 - Fix reuse of detailed status components in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/12792))
 - Fix base64-encoded file uploads not being possible in REST API ([Gargron](https://github.com/tootsuite/mastodon/pull/12748), [Gargron](https://github.com/tootsuite/mastodon/pull/12857))
-- Fix resource_owner_from_credentials in Doorkeeper initializer ([Gargron](https://github.com/tootsuite/mastodon/pull/12743))
 - Fix error due to missing authentication call in filters controller ([Gargron](https://github.com/tootsuite/mastodon/pull/12746))
 - Fix uncaught unknown format error in host meta controller ([Gargron](https://github.com/tootsuite/mastodon/pull/12747))
 - Fix URL search not returning private toots user has access to ([ThibG](https://github.com/tootsuite/mastodon/pull/12742), [ThibG](https://github.com/tootsuite/mastodon/pull/12336))
 - Fix cache digesting log noise on status embeds ([Gargron](https://github.com/tootsuite/mastodon/pull/12750))
 - Fix slowness due to layout thrashing when reloading a large set of statuses in web UI ([panarom](https://github.com/tootsuite/mastodon/pull/12661), [panarom](https://github.com/tootsuite/mastodon/pull/12744), [Gargron](https://github.com/tootsuite/mastodon/pull/12712))
 - Fix error when fetching followers/following from REST API when user has network hidden ([Gargron](https://github.com/tootsuite/mastodon/pull/12716))
-- Fix IDN mentions not being processed, IDN domains not being rendered ([Gargron](https://github.com/tootsuite/mastodon/pull/12715))
+- Fix IDN mentions not being processed, IDN domains not being rendered ([Gargron](https://github.com/tootsuite/mastodon/pull/12715), [Gargron](https://github.com/tootsuite/mastodon/pull/13035), [Gargron](https://github.com/tootsuite/mastodon/pull/13030))
 - Fix error when searching for empty phrase ([Gargron](https://github.com/tootsuite/mastodon/pull/12711))
 - Fix backups stopping due to read timeouts ([chr-1x](https://github.com/tootsuite/mastodon/pull/12281))
 - Fix batch actions on non-pending tags in admin UI ([ThibG](https://github.com/tootsuite/mastodon/pull/12537))
@@ -152,6 +153,13 @@ All notable changes to this project will be documented in this file.
 - Fix voting issue with remote polls that contain trailing spaces ([ThibG](https://github.com/tootsuite/mastodon/pull/12515))
 - Fix dynamic elements not working in pgHero due to CSP rules ([ykzts](https://github.com/tootsuite/mastodon/pull/12489))
 - Fix overly verbose backtraces when delivering ActivityPub payloads ([zunda](https://github.com/tootsuite/mastodon/pull/12798))
+- Fix rendering `<a>` without `href` when scheme unsupported ([Gargron](https://github.com/tootsuite/mastodon/pull/13040))
+- Fix unfiltered params error when generating ActivityPub tag pagination ([Gargron](https://github.com/tootsuite/mastodon/pull/13049))
+- Fix malformed HTML causing uncaught error ([Gargron](https://github.com/tootsuite/mastodon/pull/13042))
+- Fix native share button not being displayed for unlisted toots ([ThibG](https://github.com/tootsuite/mastodon/pull/13045))
+- Fix remote convertible media attachments (e.g. GIFs) not being saved ([Gargron](https://github.com/tootsuite/mastodon/pull/13032))
+- Fix account query not using faster index ([abcang](https://github.com/tootsuite/mastodon/pull/13016))
+- Fix error when sending moderation notification ([renatolond](https://github.com/tootsuite/mastodon/pull/13014))
 
 ### Security
 
diff --git a/Gemfile b/Gemfile
index fd0cd81d2..8a36db08d 100644
--- a/Gemfile
+++ b/Gemfile
@@ -61,7 +61,7 @@ gem 'htmlentities', '~> 4.3'
 gem 'http', '~> 4.3'
 gem 'http_accept_language', '~> 2.1'
 gem 'http_parser.rb', '~> 0.6', git: 'https://github.com/tmm1/http_parser.rb', ref: '54b17ba8c7d8d20a16dfc65d1775241833219cf2', submodules: true
-gem 'httplog', '~> 1.4'
+gem 'httplog', '~> 1.4.2'
 gem 'idn-ruby', require: 'idn'
 gem 'kaminari', '~> 1.1'
 gem 'link_header', '~> 0.0'
diff --git a/Gemfile.lock b/Gemfile.lock
index 8e211aab4..e33748197 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -284,7 +284,7 @@ GEM
     http-parser (1.2.1)
       ffi-compiler (>= 1.0, < 2.0)
     http_accept_language (2.1.1)
-    httplog (1.4.0)
+    httplog (1.4.2)
       rack (>= 1.0)
       rainbow (>= 2.0.0)
     i18n (1.8.2)
@@ -713,7 +713,7 @@ DEPENDENCIES
   http (~> 4.3)
   http_accept_language (~> 2.1)
   http_parser.rb (~> 0.6)!
-  httplog (~> 1.4)
+  httplog (~> 1.4.2)
   i18n-tasks (~> 0.9)
   idn-ruby
   iso-639
diff --git a/app/controllers/api/web/embeds_controller.rb b/app/controllers/api/web/embeds_controller.rb
index 6231733b7..4aa31695c 100644
--- a/app/controllers/api/web/embeds_controller.rb
+++ b/app/controllers/api/web/embeds_controller.rb
@@ -7,15 +7,21 @@ class Api::Web::EmbedsController < Api::Web::BaseController
 
   def create
     status = StatusFinder.new(params[:url]).status
+
+    return not_found if status.hidden?
+
     render json: status, serializer: OEmbedSerializer, width: 400
   rescue ActiveRecord::RecordNotFound
     oembed = FetchOEmbedService.new.call(params[:url])
-    oembed[:html] = Formatter.instance.sanitize(oembed[:html], Sanitize::Config::MASTODON_OEMBED) if oembed[:html].present?
 
-    if oembed
-      render json: oembed
-    else
-      render json: {}, status: :not_found
+    return not_found if oembed.nil?
+
+    begin
+      oembed[:html] = Formatter.instance.sanitize(oembed[:html], Sanitize::Config::MASTODON_OEMBED)
+    rescue ArgumentError
+      return not_found
     end
+
+    render json: oembed
   end
 end
diff --git a/app/controllers/concerns/signature_verification.rb b/app/controllers/concerns/signature_verification.rb
index ce353f1de..10efbf2e0 100644
--- a/app/controllers/concerns/signature_verification.rb
+++ b/app/controllers/concerns/signature_verification.rb
@@ -160,6 +160,8 @@ module SignatureVerification
       account ||= stoplight_wrap_request { ActivityPub::FetchRemoteKeyService.new.call(key_id, id: false) }
       account
     end
+  rescue Mastodon::HostValidationError
+    nil
   end
 
   def stoplight_wrap_request(&block)
diff --git a/app/controllers/tags_controller.rb b/app/controllers/tags_controller.rb
index ef61c980f..c59446efc 100644
--- a/app/controllers/tags_controller.rb
+++ b/app/controllers/tags_controller.rb
@@ -25,7 +25,7 @@ class TagsController < ApplicationController
       format.rss do
         expires_in 0, public: true
 
-        @statuses = HashtagQueryService.new.call(@tag, params.slice(:any, :all, :none)).limit(PAGE_SIZE)
+        @statuses = HashtagQueryService.new.call(@tag, filter_params).limit(PAGE_SIZE)
         @statuses = cache_collection(@statuses, Status)
 
         render xml: RSS::TagSerializer.render(@tag, @statuses)
@@ -34,7 +34,7 @@ class TagsController < ApplicationController
       format.json do
         expires_in 3.minutes, public: public_fetch_mode?
 
-        @statuses = HashtagQueryService.new.call(@tag, params.slice(:any, :all, :none), current_account, params[:local]).paginate_by_max_id(PAGE_SIZE, params[:max_id])
+        @statuses = HashtagQueryService.new.call(@tag, filter_params, current_account, params[:local]).paginate_by_max_id(PAGE_SIZE, params[:max_id])
         @statuses = cache_collection(@statuses, Status)
 
         render json: collection_presenter, serializer: ActivityPub::CollectionSerializer, adapter: ActivityPub::Adapter, content_type: 'application/activity+json'
@@ -58,10 +58,14 @@ class TagsController < ApplicationController
 
   def collection_presenter
     ActivityPub::CollectionPresenter.new(
-      id: tag_url(@tag, params.slice(:any, :all, :none)),
+      id: tag_url(@tag, filter_params),
       type: :ordered,
       size: @tag.statuses.count,
       items: @statuses.map { |s| ActivityPub::TagManager.instance.uri_for(s) }
     )
   end
+
+  def filter_params
+    params.slice(:any, :all, :none).permit(:any, :all, :none)
+  end
 end
diff --git a/app/helpers/accounts_helper.rb b/app/helpers/accounts_helper.rb
index c9e95d8d8..e977db2c6 100644
--- a/app/helpers/accounts_helper.rb
+++ b/app/helpers/accounts_helper.rb
@@ -11,7 +11,7 @@ module AccountsHelper
 
   def acct(account)
     if account.local?
-      "@#{account.acct}@#{Rails.configuration.x.local_domain}"
+      "@#{account.acct}@#{site_hostname}"
     else
       "@#{account.pretty_acct}"
     end
diff --git a/app/javascript/flavours/glitch/components/status_action_bar.js b/app/javascript/flavours/glitch/components/status_action_bar.js
index 60b370622..0a481c816 100644
--- a/app/javascript/flavours/glitch/components/status_action_bar.js
+++ b/app/javascript/flavours/glitch/components/status_action_bar.js
@@ -265,7 +265,7 @@ class StatusActionBar extends ImmutablePureComponent {
       replyTitle = intl.formatMessage(messages.replyAll);
     }
 
-    const shareButton = ('share' in navigator) && status.get('visibility') === 'public' && (
+    const shareButton = ('share' in navigator) && publicStatus && (
       <IconButton className='status__action-bar-button' title={intl.formatMessage(messages.share)} icon='share-alt' onClick={this.handleShareClick} />
     );
 
diff --git a/app/javascript/flavours/glitch/features/status/components/action_bar.js b/app/javascript/flavours/glitch/features/status/components/action_bar.js
index d71a3ae08..080362dd0 100644
--- a/app/javascript/flavours/glitch/features/status/components/action_bar.js
+++ b/app/javascript/flavours/glitch/features/status/components/action_bar.js
@@ -188,7 +188,7 @@ class ActionBar extends React.PureComponent {
       }
     }
 
-    const shareButton = ('share' in navigator) && status.get('visibility') === 'public' && (
+    const shareButton = ('share' in navigator) && publicStatus && (
       <div className='detailed-status__button'><IconButton title={intl.formatMessage(messages.share)} icon='share-alt' onClick={this.handleShare} /></div>
     );
 
diff --git a/app/javascript/flavours/glitch/features/video/index.js b/app/javascript/flavours/glitch/features/video/index.js
index 049baaee7..1b5fbce9f 100644
--- a/app/javascript/flavours/glitch/features/video/index.js
+++ b/app/javascript/flavours/glitch/features/video/index.js
@@ -512,7 +512,7 @@ class Video extends React.PureComponent {
             </div>
 
             <div className='video-player__buttons right'>
-              {(!onCloseVideo && !editable) && <button type='button' aria-label={intl.formatMessage(messages.hide)} onClick={this.toggleReveal}><Icon id='eye-slash' fixedWidth /></button>}
+              {(!onCloseVideo && !editable && !fullscreen) && <button type='button' aria-label={intl.formatMessage(messages.hide)} onClick={this.toggleReveal}><Icon id='eye-slash' fixedWidth /></button>}
               {(!fullscreen && onOpenVideo) && <button type='button' aria-label={intl.formatMessage(messages.expand)} onClick={this.handleOpenVideo}><Icon id='expand' fixedWidth /></button>}
               {onCloseVideo && <button type='button' aria-label={intl.formatMessage(messages.close)} onClick={this.handleCloseVideo}><Icon id='compress' fixedWidth /></button>}
               <button type='button' aria-label={intl.formatMessage(messages.download)}>
diff --git a/app/javascript/flavours/glitch/packs/public.js b/app/javascript/flavours/glitch/packs/public.js
index d1adfb17a..d8a97704f 100644
--- a/app/javascript/flavours/glitch/packs/public.js
+++ b/app/javascript/flavours/glitch/packs/public.js
@@ -62,7 +62,7 @@ function main() {
       content.textContent = timeAgoString({
         formatMessage: ({ id, defaultMessage }, values) => (new IntlMessageFormat(messages[id] || defaultMessage, locale)).format(values),
         formatDate: (date, options) => (new Intl.DateTimeFormat(locale, options)).format(date),
-      }, datetime, now, now.getFullYear());
+      }, datetime, now, now.getFullYear(), content.getAttribute('datetime').includes('T'));
     });
 
     const reactComponents = document.querySelectorAll('[data-component]');
diff --git a/app/javascript/flavours/glitch/styles/components/announcements.scss b/app/javascript/flavours/glitch/styles/components/announcements.scss
index ac4c199cd..eab6c728b 100644
--- a/app/javascript/flavours/glitch/styles/components/announcements.scss
+++ b/app/javascript/flavours/glitch/styles/components/announcements.scss
@@ -84,14 +84,13 @@
 
     &__unread {
       position: absolute;
-      top: 15px;
-      right: 15px;
-      display: inline-block;
+      top: 19px;
+      right: 19px;
+      display: block;
       background: $highlight-text-color;
       border-radius: 50%;
       width: 0.625rem;
       height: 0.625rem;
-      margin: 0 .15em;
     }
   }
 
diff --git a/app/javascript/mastodon/components/status_action_bar.js b/app/javascript/mastodon/components/status_action_bar.js
index 4b3c79d0d..e2c8d43c9 100644
--- a/app/javascript/mastodon/components/status_action_bar.js
+++ b/app/javascript/mastodon/components/status_action_bar.js
@@ -319,7 +319,7 @@ class StatusActionBar extends ImmutablePureComponent {
       replyTitle = intl.formatMessage(messages.replyAll);
     }
 
-    const shareButton = ('share' in navigator) && status.get('visibility') === 'public' && (
+    const shareButton = ('share' in navigator) && publicStatus && (
       <IconButton className='status__action-bar-button' title={intl.formatMessage(messages.share)} icon='share-alt' onClick={this.handleShareClick} />
     );
 
diff --git a/app/javascript/mastodon/features/status/components/action_bar.js b/app/javascript/mastodon/features/status/components/action_bar.js
index 657d2bb1c..959774da4 100644
--- a/app/javascript/mastodon/features/status/components/action_bar.js
+++ b/app/javascript/mastodon/features/status/components/action_bar.js
@@ -250,7 +250,7 @@ class ActionBar extends React.PureComponent {
       }
     }
 
-    const shareButton = ('share' in navigator) && status.get('visibility') === 'public' && (
+    const shareButton = ('share' in navigator) && publicStatus && (
       <div className='detailed-status__button'><IconButton title={intl.formatMessage(messages.share)} icon='share-alt' onClick={this.handleShare} /></div>
     );
 
@@ -265,12 +265,10 @@ class ActionBar extends React.PureComponent {
     if (status.get('visibility') === 'direct') reblogIcon = 'envelope';
     else if (status.get('visibility') === 'private') reblogIcon = 'lock';
 
-    let reblog_disabled = (status.get('visibility') === 'direct' || status.get('visibility') === 'private');
-
     return (
       <div className='detailed-status__action-bar'>
         <div className='detailed-status__button'><IconButton title={intl.formatMessage(messages.reply)} icon={status.get('in_reply_to_account_id') === status.getIn(['account', 'id']) ? 'reply' : replyIcon} onClick={this.handleReplyClick} /></div>
-        <div className='detailed-status__button'><IconButton disabled={reblog_disabled} active={status.get('reblogged')} title={reblog_disabled ? intl.formatMessage(messages.cannot_reblog) : intl.formatMessage(messages.reblog)} icon={reblogIcon} onClick={this.handleReblogClick} /></div>
+        <div className='detailed-status__button'><IconButton disabled={!publicStatus} active={status.get('reblogged')} title={!publicStatus ? intl.formatMessage(messages.cannot_reblog) : intl.formatMessage(messages.reblog)} icon={reblogIcon} onClick={this.handleReblogClick} /></div>
         <div className='detailed-status__button'><IconButton className='star-icon' animate active={status.get('favourited')} title={intl.formatMessage(messages.favourite)} icon='star' onClick={this.handleFavouriteClick} /></div>
         {shareButton}
         <div className='detailed-status__button'><IconButton className='bookmark-icon' active={status.get('bookmarked')} title={intl.formatMessage(messages.bookmark)} icon='bookmark' onClick={this.handleBookmarkClick} /></div>
diff --git a/app/javascript/mastodon/features/video/index.js b/app/javascript/mastodon/features/video/index.js
index 0e2a99416..8ac9c8db7 100644
--- a/app/javascript/mastodon/features/video/index.js
+++ b/app/javascript/mastodon/features/video/index.js
@@ -517,7 +517,7 @@ class Video extends React.PureComponent {
             </div>
 
             <div className='video-player__buttons right'>
-              {(!onCloseVideo && !editable) && <button type='button' aria-label={intl.formatMessage(messages.hide)} onClick={this.toggleReveal}><Icon id='eye-slash' fixedWidth /></button>}
+              {(!onCloseVideo && !editable && !fullscreen) && <button type='button' aria-label={intl.formatMessage(messages.hide)} onClick={this.toggleReveal}><Icon id='eye-slash' fixedWidth /></button>}
               {(!fullscreen && onOpenVideo) && <button type='button' aria-label={intl.formatMessage(messages.expand)} onClick={this.handleOpenVideo}><Icon id='expand' fixedWidth /></button>}
               {onCloseVideo && <button type='button' aria-label={intl.formatMessage(messages.close)} onClick={this.handleCloseVideo}><Icon id='compress' fixedWidth /></button>}
               <button type='button' aria-label={intl.formatMessage(messages.download)}><a className='video-player__download__icon' href={this.props.src} download><Icon id={'download'} fixedWidth /></a></button>
diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json
index 5ce5eb12e..c71212b85 100644
--- a/app/javascript/mastodon/locales/ar.json
+++ b/app/javascript/mastodon/locales/ar.json
@@ -1,9 +1,9 @@
 {
   "account.add_or_remove_from_list": "أضفه أو أزله من القائمة",
   "account.badges.bot": "روبوت",
-  "account.badges.group": "Group",
+  "account.badges.group": "فريق",
   "account.block": "حظر @{name}",
-  "account.block_domain": "إخفاء كل شيئ قادم من اسم النطاق {domain}",
+  "account.block_domain": "إخفاء كل شيء قادم من اسم النطاق {domain}",
   "account.blocked": "محظور",
   "account.cancel_follow_request": "إلغاء طلب المتابَعة",
   "account.direct": "رسالة خاصة إلى @{name}",
@@ -43,7 +43,7 @@
   "alert.rate_limited.title": "المعدل محدود",
   "alert.unexpected.message": "لقد طرأ هناك خطأ غير متوقّع.",
   "alert.unexpected.title": "المعذرة!",
-  "announcement.announcement": "Announcement",
+  "announcement.announcement": "إعلان",
   "autosuggest_hashtag.per_week": "{count} في الأسبوع",
   "boost_modal.combo": "يمكنك/ي ضغط {combo} لتخطّي هذه في المرّة القادمة",
   "bundle_column_error.body": "لقد وقع هناك خطأ أثناء عملية تحميل هذا العنصر.",
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "الأساسية",
   "home.column_settings.show_reblogs": "اعرض الترقيات",
   "home.column_settings.show_replies": "اعرض الردود",
+  "home.hide_announcements": "إخفاء الإعلانات",
+  "home.show_announcements": "إظهار الإعلانات",
   "intervals.full.days": "{number, plural, one {# يوم} other {# أيام}}",
   "intervals.full.hours": "{number, plural, one {# ساعة} other {# ساعات}}",
   "intervals.full.minutes": "{number, plural, one {# دقيقة} other {# دقائق}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "الآن",
   "relative_time.minutes": "{number}د",
   "relative_time.seconds": "{number}ثا",
+  "relative_time.today": "اليوم",
   "reply_indicator.cancel": "إلغاء",
   "report.forward": "التحويل إلى {target}",
   "report.forward_hint": "هذا الحساب ينتمي إلى خادوم آخَر. هل تودّ إرسال نسخة مجهولة مِن التقرير إلى هنالك أيضًا؟",
@@ -420,7 +423,7 @@
   "upload_form.video_description": "وصف للمعاقين بصريا أو لِذي قِصر السمع",
   "upload_modal.analyzing_picture": "جارٍ فحص الصورة…",
   "upload_modal.apply": "طبّق",
-  "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
+  "upload_modal.description_placeholder": "نصٌّ حكيمٌ لهُ سِرٌّ قاطِعٌ وَذُو شَأنٍ عَظيمٍ مكتوبٌ على ثوبٍ أخضرَ ومُغلفٌ بجلدٍ أزرق",
   "upload_modal.detect_text": "اكتشف النص مِن الصورة",
   "upload_modal.edit_media": "تعديل الوسائط",
   "upload_modal.hint": "اضغط أو اسحب الدائرة على خانة المعاينة لاختيار نقطة التركيز التي ستُعرَض دائمًا على كل المصغرات.",
diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json
index e570fc3b7..8006a1306 100644
--- a/app/javascript/mastodon/locales/ast.json
+++ b/app/javascript/mastodon/locales/ast.json
@@ -1,22 +1,22 @@
 {
   "account.add_or_remove_from_list": "Add or Remove from lists",
   "account.badges.bot": "Robó",
-  "account.badges.group": "Group",
+  "account.badges.group": "Grupu",
   "account.block": "Bloquiar a @{name}",
   "account.block_domain": "Anubrir tolo de {domain}",
   "account.blocked": "Blocked",
-  "account.cancel_follow_request": "Cancel follow request",
+  "account.cancel_follow_request": "Encaboxar la solicitú de siguimientu",
   "account.direct": "Unviar un mensaxe direutu a @{name}",
   "account.domain_blocked": "Dominiu anubríu",
   "account.edit_profile": "Editar el perfil",
   "account.endorse": "Destacar nel perfil",
-  "account.follow": "Follow",
+  "account.follow": "Siguir",
   "account.followers": "Siguidores",
   "account.followers.empty": "Naide sigue a esti usuariu entá.",
-  "account.follows": "Sigue a",
+  "account.follows": "Follows",
   "account.follows.empty": "Esti usuariu entá nun sigue a naide.",
   "account.follows_you": "Síguete",
-  "account.hide_reblogs": "Hide boosts from @{name}",
+  "account.hide_reblogs": "Anubrir les comparticiones de @{name}",
   "account.last_status": "Last active",
   "account.link_verified_on": "Ownership of this link was checked on {date}",
   "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
@@ -32,18 +32,18 @@
   "account.report": "Report @{name}",
   "account.requested": "Esperando pola aprobación. Calca pa encaboxar la solicitú de siguimientu",
   "account.share": "Share @{name}'s profile",
-  "account.show_reblogs": "Show boosts from @{name}",
+  "account.show_reblogs": "Amosar les comparticiones de @{name}",
   "account.unblock": "Desbloquiar a @{name}",
   "account.unblock_domain": "Amosar {domain}",
-  "account.unendorse": "Don't feature on profile",
-  "account.unfollow": "Unfollow",
+  "account.unendorse": "Nun destacar nel perfil",
+  "account.unfollow": "Dexar de siguir",
   "account.unmute": "Unmute @{name}",
   "account.unmute_notifications": "Unmute notifications from @{name}",
   "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
   "alert.rate_limited.title": "Rate limited",
   "alert.unexpected.message": "Asocedió un fallu inesperáu.",
   "alert.unexpected.title": "¡Meca!",
-  "announcement.announcement": "Announcement",
+  "announcement.announcement": "Anunciu",
   "autosuggest_hashtag.per_week": "{count} per selmana",
   "boost_modal.combo": "Pues primir {combo} pa saltar esto la próxima vegada",
   "bundle_column_error.body": "Asocedió daqué malo mentanto se cargaba esti componente.",
@@ -71,7 +71,7 @@
   "column_header.moveLeft_settings": "Mover la columna a la esquierda",
   "column_header.moveRight_settings": "Mover la columna a la drecha",
   "column_header.pin": "Fixar",
-  "column_header.show_settings": "Show settings",
+  "column_header.show_settings": "Amosar axustes",
   "column_header.unpin": "Desfixar",
   "column_subheading.settings": "Axustes",
   "community.column_settings.media_only": "Namái multimedia",
@@ -84,10 +84,10 @@
   "compose_form.poll.add_option": "Amestar una escoyeta",
   "compose_form.poll.duration": "Poll duration",
   "compose_form.poll.option_placeholder": "Escoyeta {number}",
-  "compose_form.poll.remove_option": "Remove this choice",
+  "compose_form.poll.remove_option": "Desaniciar esta escoyeta",
   "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.publish": "Toot",
+  "compose_form.publish": "Barritar",
   "compose_form.publish_loud": "{publish}!",
   "compose_form.sensitive.hide": "Mark media as sensitive",
   "compose_form.sensitive.marked": "Media is marked as sensitive",
@@ -96,30 +96,30 @@
   "compose_form.spoiler.unmarked": "El testu nun va anubrise",
   "compose_form.spoiler_placeholder": "Escribi equí l'alvertencia",
   "confirmation_modal.cancel": "Encaboxar",
-  "confirmations.block.block_and_report": "Block & Report",
-  "confirmations.block.confirm": "Block",
+  "confirmations.block.block_and_report": "Bloquiar ya informar",
+  "confirmations.block.confirm": "Bloquiar",
   "confirmations.block.message": "¿De xuru que quies bloquiar a {name}?",
-  "confirmations.delete.confirm": "Delete",
+  "confirmations.delete.confirm": "Desaniciar",
   "confirmations.delete.message": "¿De xuru que quies desaniciar esti estáu?",
   "confirmations.delete_list.confirm": "Desaniciar",
   "confirmations.delete_list.message": "¿De xuru que quies desaniciar dafechu esta llista?",
   "confirmations.domain_block.confirm": "Anubrir tol dominiu",
-  "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.",
-  "confirmations.logout.confirm": "Log out",
-  "confirmations.logout.message": "Are you sure you want to log out?",
-  "confirmations.mute.confirm": "Mute",
-  "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
+  "confirmations.domain_block.message": "¿De xuru xurísimu que quies bloquiar el dominiu {domain} enteru? Na mayoría de casos bloquiar o silenciar dalguna cuenta ye abondo y preferible. Nun vas ver el conteníu d'esi dominiu en nenguna llinia temporal pública o nos avisos, y van desanciase los tos siguidores d'esi dominiu.",
+  "confirmations.logout.confirm": "Zarrar sesión",
+  "confirmations.logout.message": "¿De xuru que quies zarrar la sesión?",
+  "confirmations.mute.confirm": "Silenciar",
+  "confirmations.mute.explanation": "Esto va anubrir los espublizamientos y les sos menciones pero entá va permiti-yos ver los tos espublizamientos y siguite.",
   "confirmations.mute.message": "¿De xuru que quies silenciar a {name}?",
   "confirmations.redraft.confirm": "Desaniciar y reeditar",
   "confirmations.redraft.message": "¿De xuru que quies desaniciar esti estáu y reeditalu? Van perdese los favoritos y comparticiones, y les rempuestes al toot orixinal van quedar güérfanes.",
-  "confirmations.reply.confirm": "Reply",
-  "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?",
-  "confirmations.unfollow.confirm": "Unfollow",
+  "confirmations.reply.confirm": "Responder",
+  "confirmations.reply.message": "Responder agora va sobrescribir el mensaxe que tas componiendo anguaño. ¿De xuru que quies siguir?",
+  "confirmations.unfollow.confirm": "Dexar de siguir",
   "confirmations.unfollow.message": "¿De xuru que quies dexar de siguir a {name}?",
   "conversation.delete": "Delete conversation",
   "conversation.mark_as_read": "Mark as read",
   "conversation.open": "View conversation",
-  "conversation.with": "With {names}",
+  "conversation.with": "Con {names}",
   "directory.federated": "Dende'l fediversu",
   "directory.local": "Dende {domain} namái",
   "directory.new_arrivals": "Cuentes nueves",
@@ -142,21 +142,21 @@
   "emoji_button.travel": "Viaxes y llugares",
   "empty_column.account_timeline": "¡Equí nun hai barritos!",
   "empty_column.account_unavailable": "Profile unavailable",
-  "empty_column.blocks": "Entá nun bloquiesti a dengún usuariu.",
-  "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.",
+  "empty_column.blocks": "Entá nun bloquiesti a nunengún usuariu.",
+  "empty_column.bookmarked_statuses": "Entá nun tienes nengún barritu en Marcadores. Cuando amiestes unu, va amosase equí.",
   "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
-  "empty_column.direct": "Entá nun tienes dengún mensaxe direutu. Cuando unvies o recibas dalgún, va apaecer equí.",
+  "empty_column.direct": "Entá nun tienes nunengún mensaxe direutu. Cuando unvies o recibas dalgún, va apaecer equí.",
   "empty_column.domain_blocks": "Entá nun hai dominios anubríos.",
-  "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
+  "empty_column.favourited_statuses": "Entá nun tienes nengún barritu en Favoritos. Cuando amiestes unu, va amosase equí.",
   "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.",
-  "empty_column.follow_requests": "Entá nun tienes denguna solicitú de siguimientu. Cuando recibas una, va amosase equí.",
+  "empty_column.follow_requests": "Entá nun tienes nenguna solicitú de siguimientu. Cuando recibas una, va amosase equí.",
   "empty_column.hashtag": "Entá nun hai nada nesta etiqueta.",
   "empty_column.home": "¡Tienes la llinia temporal balera! Visita {public} o usa la gueta pa entamar y conocer a otros usuarios.",
   "empty_column.home.public_timeline": "la llinia temporal pública",
   "empty_column.list": "Entá nun hai nada nesta llista. Cuando los miembros d'esta llista espublicen estaos nuevos, van apaecer equí.",
-  "empty_column.lists": "Entá nun tienes denguna llista. Cuando crees una, va amosase equí.",
-  "empty_column.mutes": "Entá nun silenciesti a dengún usuariu.",
-  "empty_column.notifications": "Entá nun tienes dengún avisu. Interactúa con otros p'aniciar la conversación.",
+  "empty_column.lists": "Entá nun tienes nunenguna llista. Cuando crees una, va amosase equí.",
+  "empty_column.mutes": "Entá nun silenciesti a nunengún usuariu.",
+  "empty_column.notifications": "Entá nun tienes nunengún avisu. Interactúa con otros p'aniciar la conversación.",
   "empty_column.public": "¡Equí nun hai nada! Escribi daqué público o sigui a usuarios d'otros sirvidores pa rellenar esto",
   "error.unexpected_crash.explanation": "Pola mor d'un fallu nel códigu o un problema de compatibilidá del restolador, esta páxina nun pudo amosase correutamente.",
   "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
@@ -175,19 +175,21 @@
   "hashtag.column_header.tag_mode.all": "y {additional}",
   "hashtag.column_header.tag_mode.any": "o {additional}",
   "hashtag.column_header.tag_mode.none": "ensin {additional}",
-  "hashtag.column_settings.select.no_options_message": "No suggestions found",
+  "hashtag.column_settings.select.no_options_message": "Nun s'alcontraron suxerencies",
   "hashtag.column_settings.select.placeholder": "Enter hashtags…",
-  "hashtag.column_settings.tag_mode.all": "All of these",
-  "hashtag.column_settings.tag_mode.any": "Any of these",
-  "hashtag.column_settings.tag_mode.none": "None of these",
+  "hashtag.column_settings.tag_mode.all": "Toes estes",
+  "hashtag.column_settings.tag_mode.any": "Cualesquiera d'estes",
+  "hashtag.column_settings.tag_mode.none": "Nenguna d'estes",
   "hashtag.column_settings.tag_toggle": "Incluyir les etiquetes adicionales d'esta columna",
   "home.column_settings.basic": "Basic",
   "home.column_settings.show_reblogs": "Amosar toots compartíos",
   "home.column_settings.show_replies": "Amosar rempuestes",
+  "home.hide_announcements": "Hide announcements",
+  "home.show_announcements": "Show announcements",
   "intervals.full.days": "{number, plural, one {# día} other {# díes}}",
   "intervals.full.hours": "{number, plural, one {# hora} other {# hores}}",
   "intervals.full.minutes": "{number, plural, one {# minutu} other {# minutos}}",
-  "introduction.federation.action": "Next",
+  "introduction.federation.action": "Siguiente",
   "introduction.federation.federated.headline": "Federated",
   "introduction.federation.federated.text": "Los espublizamientos públicos de los demás sirvidores del fediversu van apaecer na llinia temporal federada.",
   "introduction.federation.home.headline": "Home",
@@ -196,12 +198,12 @@
   "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
   "introduction.interactions.action": "¡Finar el tutorial!",
   "introduction.interactions.favourite.headline": "Favourite",
-  "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
+  "introduction.interactions.favourite.text": "Pues guardar un barritu pa dempués y facer que l'autor sepa que te prestó marcándolu como favoritu.",
   "introduction.interactions.reblog.headline": "Boost",
   "introduction.interactions.reblog.text": "You can share other people's toots with your followers by boosting them.",
   "introduction.interactions.reply.headline": "Reply",
   "introduction.interactions.reply.text": "You can reply to other people's and your own toots, which will chain them together in a conversation.",
-  "introduction.welcome.action": "Let's go!",
+  "introduction.welcome.action": "¡Vamos!",
   "introduction.welcome.headline": "Primeros pasos",
   "introduction.welcome.text": "¡Afáyate nel fediversu! Nun momentu vas ser a tresmitir mensaxes y falar colos collacios d'una montonera de sirvidores. Pero esti sirvidor, {domain}, ye especial: agospia'l to perfil, asina qu'alcuérdate de cómo se llama.",
   "keyboard_shortcuts.back": "pa dir p'atrás",
@@ -212,7 +214,7 @@
   "keyboard_shortcuts.description": "Descripción",
   "keyboard_shortcuts.direct": "p'abrir la columna de los mensaxes direutos",
   "keyboard_shortcuts.down": "pa baxar na llista",
-  "keyboard_shortcuts.enter": "to open status",
+  "keyboard_shortcuts.enter": "p'abrir estaos",
   "keyboard_shortcuts.favourite": "p'amestar a Favoritos",
   "keyboard_shortcuts.favourites": "p'abrir la llista de favoritos",
   "keyboard_shortcuts.federated": "p'abrir la llinia temporal federada",
@@ -252,13 +254,13 @@
   "lists.subheading": "Les tos llistes",
   "load_pending": "{count, plural, one {# elementu nuevu} other {# elementos nuevos}}",
   "loading_indicator.label": "Cargando…",
-  "media_gallery.toggle_visible": "Toggle visibility",
+  "media_gallery.toggle_visible": "Alternar la visibilidá",
   "missing_indicator.label": "Nun s'alcontró",
   "missing_indicator.sublabel": "Esti recursu nun pudo alcontrase",
-  "mute_modal.hide_notifications": "Hide notifications from this user?",
+  "mute_modal.hide_notifications": "¿Anubrir los avisos d'esti usuariu?",
   "navigation_bar.apps": "Aplicaciones pa móviles",
   "navigation_bar.blocks": "Usuarios bloquiaos",
-  "navigation_bar.bookmarks": "Bookmarks",
+  "navigation_bar.bookmarks": "Marcadores",
   "navigation_bar.community_timeline": "Llinia temporal llocal",
   "navigation_bar.compose": "Compose new toot",
   "navigation_bar.direct": "Mensaxes direutos",
@@ -281,41 +283,41 @@
   "navigation_bar.security": "Seguranza",
   "notification.favourite": "{name} favourited your status",
   "notification.follow": "{name} siguióte",
-  "notification.follow_request": "{name} has requested to follow you",
+  "notification.follow_request": "{name} solicitó siguite",
   "notification.mention": "{name} mentóte",
   "notification.own_poll": "Your poll has ended",
-  "notification.poll": "A poll you have voted in has ended",
+  "notification.poll": "Finó una encuesta na que votesti",
   "notification.reblog": "{name} compartió'l to estáu",
   "notifications.clear": "Llimpiar avisos",
   "notifications.clear_confirmation": "¿De xuru que quies llimpiar dafechu tolos avisos?",
   "notifications.column_settings.alert": "Avisos d'escritoriu",
   "notifications.column_settings.favourite": "Favoritos:",
-  "notifications.column_settings.filter_bar.advanced": "Display all categories",
-  "notifications.column_settings.filter_bar.category": "Quick filter bar",
+  "notifications.column_settings.filter_bar.advanced": "Amosar toles estayes",
+  "notifications.column_settings.filter_bar.category": "Barra de peñera rápida",
   "notifications.column_settings.filter_bar.show": "Amosar",
   "notifications.column_settings.follow": "Siguidores nuevos:",
   "notifications.column_settings.follow_request": "Solicitúes de siguimientu nueves:",
   "notifications.column_settings.mention": "Menciones:",
-  "notifications.column_settings.poll": "Poll results:",
+  "notifications.column_settings.poll": "Resultaos d'encuestes:",
   "notifications.column_settings.push": "Push notifications",
   "notifications.column_settings.reblog": "Barritos compartíos:",
   "notifications.column_settings.show": "Amosar en columna",
   "notifications.column_settings.sound": "Reproducir un soníu",
-  "notifications.filter.all": "All",
+  "notifications.filter.all": "Too",
   "notifications.filter.boosts": "Boosts",
   "notifications.filter.favourites": "Favourites",
   "notifications.filter.follows": "Follows",
   "notifications.filter.mentions": "Menciones",
   "notifications.filter.polls": "Poll results",
   "notifications.group": "{count} avisos",
-  "poll.closed": "Closed",
+  "poll.closed": "Acabó",
   "poll.refresh": "Refresh",
-  "poll.total_people": "{count, plural, one {# person} other {# people}}",
-  "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
+  "poll.total_people": "{count, plural, one {# persona} other {# persones}}",
+  "poll.total_votes": "{count, plural, one {# votu} other {# votos}}",
   "poll.vote": "Vote",
   "poll.voted": "You voted for this answer",
-  "poll_button.add_poll": "Add a poll",
-  "poll_button.remove_poll": "Remove poll",
+  "poll_button.add_poll": "Amestar una encuesta",
+  "poll_button.remove_poll": "Desaniciar la encuesta",
   "privacy.change": "Adjust status privacy",
   "privacy.direct.long": "Post to mentioned users only",
   "privacy.direct.short": "Direct",
@@ -333,14 +335,15 @@
   "relative_time.just_now": "agora",
   "relative_time.minutes": "{number}m",
   "relative_time.seconds": "{number}s",
+  "relative_time.today": "güei",
   "reply_indicator.cancel": "Encaboxar",
   "report.forward": "Forward to {target}",
   "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
   "report.hint": "L'informe va unviase a los llendadores del to sirvidor. Embaxo, pues desplicar por qué informes d'esta cuenta:",
   "report.placeholder": "Comentarios adicionales",
-  "report.submit": "Submit",
+  "report.submit": "Unviar",
   "report.target": "Report {target}",
-  "search.placeholder": "Search",
+  "search.placeholder": "Guetar",
   "search_popout.search_format": "Formatu de gueta avanzada",
   "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
   "search_popout.tips.hashtag": "etiqueta",
@@ -355,11 +358,11 @@
   "status.admin_account": "Open moderation interface for @{name}",
   "status.admin_status": "Open this status in the moderation interface",
   "status.block": "Bloquiar a @{name}",
-  "status.bookmark": "Bookmark",
+  "status.bookmark": "Amestar a Marcadores",
   "status.cancel_reblog_private": "Dexar de compartir",
   "status.cannot_reblog": "Esti artículu nun pue compartise",
-  "status.copy": "Copy link to status",
-  "status.delete": "Delete",
+  "status.copy": "Copiar l'enllaz al estáu",
+  "status.delete": "Desaniciar",
   "status.detailed_status": "Detailed conversation view",
   "status.direct": "Unviar un mensaxe direutu a @{name}",
   "status.embed": "Empotrar",
@@ -380,50 +383,50 @@
   "status.reblogged_by": "{name} compartió",
   "status.reblogs.empty": "Naide nun compartió esti barritu entá. Cuando daquién lo faiga, va amosase equí.",
   "status.redraft": "Desaniciar y reeditar",
-  "status.remove_bookmark": "Remove bookmark",
+  "status.remove_bookmark": "Desaniciar de Marcadores",
   "status.reply": "Responder",
   "status.replyAll": "Reply to thread",
   "status.report": "Report @{name}",
   "status.sensitive_warning": "Conteníu sensible",
   "status.share": "Share",
   "status.show_less": "Amosar menos",
-  "status.show_less_all": "Show less for all",
+  "status.show_less_all": "Amosar menos en too",
   "status.show_more": "Amosar más",
-  "status.show_more_all": "Show more for all",
+  "status.show_more_all": "Amosar más en too",
   "status.show_thread": "Amosar el filu",
-  "status.uncached_media_warning": "Not available",
+  "status.uncached_media_warning": "Non disponible",
   "status.unmute_conversation": "Unmute conversation",
   "status.unpin": "Desfixar del perfil",
   "suggestions.dismiss": "Dismiss suggestion",
-  "suggestions.header": "You might be interested in…",
-  "tabs_bar.federated_timeline": "Federated",
+  "suggestions.header": "Quiciabes t'interese…",
+  "tabs_bar.federated_timeline": "Fediversu",
   "tabs_bar.home": "Aniciu",
   "tabs_bar.local_timeline": "Llocal",
   "tabs_bar.notifications": "Avisos",
   "tabs_bar.search": "Search",
-  "time_remaining.days": "{number, plural, one {# día} other {# díes}} que queden",
-  "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
-  "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
+  "time_remaining.days": "{number, plural, one {Queda # día} other {Queden # díes}}",
+  "time_remaining.hours": "{number, plural, one {# hora restante} other {# hores restantes}}",
+  "time_remaining.minutes": "{number, plural, one {# minutu restante} other {# minutos restantes}}",
   "time_remaining.moments": "Moments remaining",
-  "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
+  "time_remaining.seconds": "{number, plural, one {# segundu restante} other {# segundos restantes}}",
   "trends.count_by_accounts": "{count} {rawCount, plural, one {persona} other {persones}} falando",
   "trends.trending_now": "Trending now",
   "ui.beforeunload": "El borrador va perdese si coles de Mastodon.",
-  "upload_area.title": "Drag & drop to upload",
+  "upload_area.title": "Arrastra y suelta pa xubir",
   "upload_button.label": "Add media ({formats})",
   "upload_error.limit": "File upload limit exceeded.",
-  "upload_error.poll": "File upload not allowed with polls.",
-  "upload_form.audio_description": "Describe for people with hearing loss",
+  "upload_error.poll": "La xuba de ficheros nun ta permitida con encuestes.",
+  "upload_form.audio_description": "Descripción pa persones con perda auditiva",
   "upload_form.description": "Descripción pa discapacitaos visuales",
   "upload_form.edit": "Editar",
   "upload_form.undo": "Desaniciar",
-  "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
+  "upload_form.video_description": "Descripción pa persones con perda auditiva o discapacidá visual",
   "upload_modal.analyzing_picture": "Analizando la semeya…",
   "upload_modal.apply": "Aplicar",
   "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
-  "upload_modal.detect_text": "Detect text from picture",
+  "upload_modal.detect_text": "Deteutar el testu de la semeya",
   "upload_modal.edit_media": "Edición",
-  "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
+  "upload_modal.hint": "Calca o arrastra'l círculu de la previsualización pa escoyer el puntu d'enfoque que va amosase siempres en toles miniatures.",
   "upload_modal.preview_label": "Previsualización ({ratio})",
   "upload_progress.label": "Xubiendo…",
   "video.close": "Zarrar el videu",
diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json
index 6a6f9a309..5429f358f 100644
--- a/app/javascript/mastodon/locales/bg.json
+++ b/app/javascript/mastodon/locales/bg.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Basic",
   "home.column_settings.show_reblogs": "Show boosts",
   "home.column_settings.show_replies": "Show replies",
+  "home.hide_announcements": "Hide announcements",
+  "home.show_announcements": "Show announcements",
   "intervals.full.days": "{number, plural, one {# day} other {# days}}",
   "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "now",
   "relative_time.minutes": "{number}m",
   "relative_time.seconds": "{number}s",
+  "relative_time.today": "today",
   "reply_indicator.cancel": "Отказ",
   "report.forward": "Forward to {target}",
   "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json
index 283812fdf..9b6449064 100644
--- a/app/javascript/mastodon/locales/bn.json
+++ b/app/javascript/mastodon/locales/bn.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "সাধারণ",
   "home.column_settings.show_reblogs": "সমর্থনগুলো দেখান",
   "home.column_settings.show_replies": "মতামত দেখান",
+  "home.hide_announcements": "Hide announcements",
+  "home.show_announcements": "Show announcements",
   "intervals.full.days": "{number, plural, one {# day} other {# days}}",
   "intervals.full.hours": "{number, plural, one {# ঘটা} other {# ঘটা}}",
   "intervals.full.minutes": "{number, plural, one {# মিনিট} other {# মিনিট}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "এখন",
   "relative_time.minutes": "{number}মিঃ",
   "relative_time.seconds": "{number} সেকেন্ড",
+  "relative_time.today": "today",
   "reply_indicator.cancel": "বাতিল করতে",
   "report.forward": "এটা আরো পাঠান {target} তে",
   "report.forward_hint": "এই নিবন্ধনটি অন্য একটি সার্ভারে। অপ্রকাশিতনামাভাবে রিপোর্টের কপি সেখানেও কি পাঠাতে চান ?",
diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json
index b6bf0eb8a..96092457f 100644
--- a/app/javascript/mastodon/locales/br.json
+++ b/app/javascript/mastodon/locales/br.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Basic",
   "home.column_settings.show_reblogs": "Show boosts",
   "home.column_settings.show_replies": "Show replies",
+  "home.hide_announcements": "Hide announcements",
+  "home.show_announcements": "Show announcements",
   "intervals.full.days": "{number, plural, one {# day} other {# days}}",
   "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "now",
   "relative_time.minutes": "{number}m",
   "relative_time.seconds": "{number}s",
+  "relative_time.today": "today",
   "reply_indicator.cancel": "Cancel",
   "report.forward": "Forward to {target}",
   "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json
index 65ec5750b..f55420793 100644
--- a/app/javascript/mastodon/locales/ca.json
+++ b/app/javascript/mastodon/locales/ca.json
@@ -158,8 +158,8 @@
   "empty_column.mutes": "Encara no has silenciat cap usuari.",
   "empty_column.notifications": "Encara no tens notificacions. Interactua amb altres per iniciar la conversa.",
   "empty_column.public": "No hi ha res aquí! Escriu públicament alguna cosa o manualment segueix usuaris d'altres servidors per omplir-ho",
-  "error.unexpected_crash.explanation": "A causa d'un bug en el nostre codi o un problema de compatibilitat del navegador, aquesta pàgina no podria ser mostrada correctament.",
-  "error.unexpected_crash.next_steps": "Prova recarregant la pàgina. Si això no ajuda encara pots ser capaç d'utilitzar Mastodont a través d'un navegador diferent o app nativa.",
+  "error.unexpected_crash.explanation": "A causa d'un bug en el nostre codi o un problema de compatibilitat del navegador, aquesta pàgina podria no ser mostrada correctament.",
+  "error.unexpected_crash.next_steps": "Prova recarregant la pàgina. Si això no ajuda, encara podries ser capaç d'utilitzar Mastodon a través d'un navegador diferent o amb una app nativa.",
   "errors.unexpected_crash.copy_stacktrace": "Còpia stacktrace al porta-retalls",
   "errors.unexpected_crash.report_issue": "Informa d'un problema",
   "follow_request.authorize": "Autoritzar",
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Bàsic",
   "home.column_settings.show_reblogs": "Mostra els impulsos",
   "home.column_settings.show_replies": "Mostra les respostes",
+  "home.hide_announcements": "Amaga els anuncis",
+  "home.show_announcements": "Mostra els anuncis",
   "intervals.full.days": "{number, plural, one {# dia} other {# dies}}",
   "intervals.full.hours": "{number, plural, one {# hora} other {# hores}}",
   "intervals.full.minutes": "{number, plural, one {# minut} other {# minuts}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "ara",
   "relative_time.minutes": "fa {number} minuts",
   "relative_time.seconds": "fa {number} segons",
+  "relative_time.today": "avui",
   "reply_indicator.cancel": "Cancel·lar",
   "report.forward": "Reenvia a {target}",
   "report.forward_hint": "Aquest compte és d'un altre servidor. Enviar-hi també una copia anònima del informe?",
diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json
index 8f3c99f8a..7efc9c75e 100644
--- a/app/javascript/mastodon/locales/co.json
+++ b/app/javascript/mastodon/locales/co.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Bàsichi",
   "home.column_settings.show_reblogs": "Vede e spartere",
   "home.column_settings.show_replies": "Vede e risposte",
+  "home.hide_announcements": "Piattà annunzii",
+  "home.show_announcements": "Vede annunzii",
   "intervals.full.days": "{number, plural, one {# ghjornu} other {# ghjorni}}",
   "intervals.full.hours": "{number, plural, one {# ora} other {# ore}}",
   "intervals.full.minutes": "{number, plural, one {# minuta} other {# minute}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "avà",
   "relative_time.minutes": "{number}m",
   "relative_time.seconds": "{number}s",
+  "relative_time.today": "oghji",
   "reply_indicator.cancel": "Annullà",
   "report.forward": "Trasferisce à {target}",
   "report.forward_hint": "U contu hè nant'à un'altru servore. Vulete ancu mandà una copia anonima di u signalamentu quallà?",
diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json
index f180b7f94..7b427c3f0 100644
--- a/app/javascript/mastodon/locales/cs.json
+++ b/app/javascript/mastodon/locales/cs.json
@@ -43,7 +43,7 @@
   "alert.rate_limited.title": "Rychlost omezena",
   "alert.unexpected.message": "Objevila se neočekávaná chyba.",
   "alert.unexpected.title": "Jejda!",
-  "announcement.announcement": "Announcement",
+  "announcement.announcement": "Oznámení",
   "autosuggest_hashtag.per_week": "{count} za týden",
   "boost_modal.combo": "Příště můžete pro přeskočení stisknout {combo}",
   "bundle_column_error.body": "Při načítání této komponenty se něco pokazilo.",
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Základní",
   "home.column_settings.show_reblogs": "Zobrazit boosty",
   "home.column_settings.show_replies": "Zobrazit odpovědi",
+  "home.hide_announcements": "Hide announcements",
+  "home.show_announcements": "Show announcements",
   "intervals.full.days": "{number, plural, one {# den} few {# dny} many {# dní} other {# dní}}",
   "intervals.full.hours": "{number, plural, one {# hodina} few {# hodiny} many {# hodin} other {# hodin}}",
   "intervals.full.minutes": "{number, plural, one {# minuta} few {# minuty} many {# minut} other {# minut}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "teď",
   "relative_time.minutes": "{number} m",
   "relative_time.seconds": "{number} s",
+  "relative_time.today": "today",
   "reply_indicator.cancel": "Zrušit",
   "report.forward": "Přeposlat na {target}",
   "report.forward_hint": "Tento účet je z jiného serveru. Chcete na něj také poslat anonymizovanou kopii?",
diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json
index ee58c7168..0d535cbc2 100644
--- a/app/javascript/mastodon/locales/cy.json
+++ b/app/javascript/mastodon/locales/cy.json
@@ -43,7 +43,7 @@
   "alert.rate_limited.title": "Cyfradd gyfyngedig",
   "alert.unexpected.message": "Digwyddodd gwall annisgwyl.",
   "alert.unexpected.title": "Wps!",
-  "announcement.announcement": "Announcement",
+  "announcement.announcement": "Cyhoeddiad",
   "autosuggest_hashtag.per_week": "{count} yr wythnos",
   "boost_modal.combo": "Mae modd gwasgu {combo} er mwyn sgipio hyn tro nesa",
   "bundle_column_error.body": "Aeth rhywbeth o'i le tra'n llwytho'r elfen hon.",
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Syml",
   "home.column_settings.show_reblogs": "Dangos bŵstiau",
   "home.column_settings.show_replies": "Dangos ymatebion",
+  "home.hide_announcements": "Cuddio cyhoeddiadau",
+  "home.show_announcements": "Dangos cyhoeddiadau",
   "intervals.full.days": "{number, plural, one {# ddydd} other {# o ddyddiau}}",
   "intervals.full.hours": "{number, plural, one {# awr} other {# o oriau}}",
   "intervals.full.minutes": "{number, plural, one {# funud} other {# o funudau}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "nawr",
   "relative_time.minutes": "{number}munud",
   "relative_time.seconds": "{number}eiliad",
+  "relative_time.today": "heddiw",
   "reply_indicator.cancel": "Canslo",
   "report.forward": "Ymlaen i {target}",
   "report.forward_hint": "Mae'r cyfrif o weinydd arall. Anfon copi anhysbys o'r adroddiad yno hefyd?",
diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json
index a699aaf54..42125a5fc 100644
--- a/app/javascript/mastodon/locales/da.json
+++ b/app/javascript/mastodon/locales/da.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Grundlæggende",
   "home.column_settings.show_reblogs": "Vis fremhævelser",
   "home.column_settings.show_replies": "Vis svar",
+  "home.hide_announcements": "Hide announcements",
+  "home.show_announcements": "Show announcements",
   "intervals.full.days": "{number, plural, one {# dag} other {# dage}}",
   "intervals.full.hours": "{number, plural, one {# time} other {# timer}}",
   "intervals.full.minutes": "{number, plural, one {# minut} other {# minutter}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "nu",
   "relative_time.minutes": "{number}m",
   "relative_time.seconds": "{number}s",
+  "relative_time.today": "today",
   "reply_indicator.cancel": "Annuller",
   "report.forward": "Videresend til {target}",
   "report.forward_hint": "Kontoen er fra en anden server. Vil du også sende en anonym kopi af anmeldelsen dertil?",
diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json
index aae5ad1c1..cd4ba01a5 100644
--- a/app/javascript/mastodon/locales/de.json
+++ b/app/javascript/mastodon/locales/de.json
@@ -143,7 +143,7 @@
   "empty_column.account_timeline": "Keine Beiträge!",
   "empty_column.account_unavailable": "Konto nicht verfügbar",
   "empty_column.blocks": "Du hast keine Profile blockiert.",
-  "empty_column.bookmarked_statuses": "Du hast bis jetzt keine Beiträge als Lesezeichen gespeichert. Wenn du einen Beitrag als Lesezeichen speicherst wird er hier erscheinen.",
+  "empty_column.bookmarked_statuses": "Du hast bis jetzt keine Beiträge als Toots gespeichert. Wenn du einen Beitrag als Toot speicherst, wird er hier erscheinen.",
   "empty_column.community": "Die lokale Zeitleiste ist leer. Schreibe einen öffentlichen Beitrag, um den Ball ins Rollen zu bringen!",
   "empty_column.direct": "Du hast noch keine Direktnachrichten erhalten. Wenn du eine sendest oder empfängst, wird sie hier zu sehen sein.",
   "empty_column.domain_blocks": "Es ist noch keine versteckten Domains.",
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Einfach",
   "home.column_settings.show_reblogs": "Geteilte Beiträge anzeigen",
   "home.column_settings.show_replies": "Antworten anzeigen",
+  "home.hide_announcements": "Verstecke Ankündigungen",
+  "home.show_announcements": "Zeige Ankündigungen",
   "intervals.full.days": "{number, plural, one {# Tag} other {# Tage}}",
   "intervals.full.hours": "{number, plural, one {# Stunde} other {# Stunden}}",
   "intervals.full.minutes": "{number, plural, one {# Minute} other {# Minuten}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "jetzt",
   "relative_time.minutes": "{number}m",
   "relative_time.seconds": "{number}s",
+  "relative_time.today": "heute",
   "reply_indicator.cancel": "Abbrechen",
   "report.forward": "An {target} weiterleiten",
   "report.forward_hint": "Dieses Konto ist von einem anderen Server. Soll eine anonymisierte Kopie des Berichts auch dorthin geschickt werden?",
diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json
index abb6f0d33..5b0067acb 100644
--- a/app/javascript/mastodon/locales/el.json
+++ b/app/javascript/mastodon/locales/el.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Βασικές ρυθμίσεις",
   "home.column_settings.show_reblogs": "Εμφάνιση προωθήσεων",
   "home.column_settings.show_replies": "Εμφάνιση απαντήσεων",
+  "home.hide_announcements": "Απόκρυψη ανακοινώσεων",
+  "home.show_announcements": "Εμφάνιση ανακοινώσεων",
   "intervals.full.days": "{number, plural, one {# μέρα} other {# μέρες}}",
   "intervals.full.hours": "{number, plural, one {# ώρα} other {# ώρες}}",
   "intervals.full.minutes": "{number, plural, one {# λεπτό} other {# λεπτά}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "τώρα",
   "relative_time.minutes": "{number}λ",
   "relative_time.seconds": "{number}δ",
+  "relative_time.today": "σήμερα",
   "reply_indicator.cancel": "Άκυρο",
   "report.forward": "Προώθηση προς {target}",
   "report.forward_hint": "Ο λογαριασμός είναι από διαφορετικό διακομιστή. Να σταλεί ανώνυμο αντίγραφο της καταγγελίας κι εκεί;",
diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json
index e84e59b2e..a315c9226 100644
--- a/app/javascript/mastodon/locales/eo.json
+++ b/app/javascript/mastodon/locales/eo.json
@@ -43,7 +43,7 @@
   "alert.rate_limited.title": "Mesaĝkvante limigita",
   "alert.unexpected.message": "Neatendita eraro okazis.",
   "alert.unexpected.title": "Ups!",
-  "announcement.announcement": "Announcement",
+  "announcement.announcement": "Anonco",
   "autosuggest_hashtag.per_week": "{count} semajne",
   "boost_modal.combo": "Vi povas premi {combo} por preterpasi sekvafoje",
   "bundle_column_error.body": "Io misfunkciis en la ŝargado de ĉi tiu elemento.",
@@ -108,7 +108,7 @@
   "confirmations.logout.confirm": "Elsaluti",
   "confirmations.logout.message": "Ĉu vi certas ke vi volas elsaluti?",
   "confirmations.mute.confirm": "Silentigi",
-  "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
+  "confirmations.mute.explanation": "Ĉi-tio kaŝos mesaĝojn el ili kaj mesaĝojn kiuj mencias ilin, sed ili ankoraŭ rajtos vidi viajn mesaĝojn kaj sekvi vin.",
   "confirmations.mute.message": "Ĉu vi certas, ke vi volas silentigi {name}?",
   "confirmations.redraft.confirm": "Forigi kaj reskribi",
   "confirmations.redraft.message": "Ĉu vi certas ke vi volas forigi tiun mesaĝon kaj reskribi ĝin? Ĉiuj diskonigoj kaj stelumoj estos perditaj, kaj respondoj al la originala mesaĝo estos senparentaj.",
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Bazaj agordoj",
   "home.column_settings.show_reblogs": "Montri diskonigojn",
   "home.column_settings.show_replies": "Montri respondojn",
+  "home.hide_announcements": "Kaŝi anoncojn",
+  "home.show_announcements": "Montri anoncojn",
   "intervals.full.days": "{number, plural, one {# tago} other {# tagoj}}",
   "intervals.full.hours": "{number, plural, one {# horo} other {# horoj}}",
   "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutoj}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "nun",
   "relative_time.minutes": "{number}m",
   "relative_time.seconds": "{number}s",
+  "relative_time.today": "hodiaŭ",
   "reply_indicator.cancel": "Nuligi",
   "report.forward": "Plusendi al {target}",
   "report.forward_hint": "La konto estas en alia servilo. Ĉu sendi sennomigitan kopion de la signalo ankaŭ tien?",
diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json
index f83e5a251..8e1f84ab8 100644
--- a/app/javascript/mastodon/locales/es-AR.json
+++ b/app/javascript/mastodon/locales/es-AR.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Básico",
   "home.column_settings.show_reblogs": "Mostrar retoots",
   "home.column_settings.show_replies": "Mostrar respuestas",
+  "home.hide_announcements": "Ocultar anuncios",
+  "home.show_announcements": "Mostrar anuncios",
   "intervals.full.days": "{number, plural, one {# día} other {# días}}",
   "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}",
   "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "recién",
   "relative_time.minutes": "{number}m",
   "relative_time.seconds": "{number}s",
+  "relative_time.today": "hoy",
   "reply_indicator.cancel": "Cancelar",
   "report.forward": "Reenviar a {target}",
   "report.forward_hint": "La cuenta es de otro servidor. ¿Querés enviar una copia anonimizada del informe también ahí?",
diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json
index 93484b412..87873b864 100644
--- a/app/javascript/mastodon/locales/es.json
+++ b/app/javascript/mastodon/locales/es.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Básico",
   "home.column_settings.show_reblogs": "Mostrar retoots",
   "home.column_settings.show_replies": "Mostrar respuestas",
+  "home.hide_announcements": "Ocultar anuncios",
+  "home.show_announcements": "Mostrar anuncios",
   "intervals.full.days": "{number, plural, one {# día} other {# días}}",
   "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}",
   "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "ahora",
   "relative_time.minutes": "{number}m",
   "relative_time.seconds": "{number}s",
+  "relative_time.today": "hoy",
   "reply_indicator.cancel": "Cancelar",
   "report.forward": "Reenviar a {target}",
   "report.forward_hint": "Esta cuenta es de otro servidor. ¿Enviar una copia anonimizada del informe allí también?",
diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json
index 9a13b4ee0..7498962f2 100644
--- a/app/javascript/mastodon/locales/et.json
+++ b/app/javascript/mastodon/locales/et.json
@@ -43,7 +43,7 @@
   "alert.rate_limited.title": "Piiratud",
   "alert.unexpected.message": "Tekkis ootamatu viga.",
   "alert.unexpected.title": "Oih!",
-  "announcement.announcement": "Announcement",
+  "announcement.announcement": "Teadaanne",
   "autosuggest_hashtag.per_week": "{count} nädalas",
   "boost_modal.combo": "Võite vajutada {combo}, et see järgmine kord vahele jätta",
   "bundle_column_error.body": "Midagi läks valesti selle komponendi laadimisel.",
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Peamine",
   "home.column_settings.show_reblogs": "Näita upitusi",
   "home.column_settings.show_replies": "Näita vastuseid",
+  "home.hide_announcements": "Peida teadaanded",
+  "home.show_announcements": "Kuva teadaandeid",
   "intervals.full.days": "{number, plural, one {# päev} other {# päevad}}",
   "intervals.full.hours": "{number, plural, one {# tund} other {# tundi}}",
   "intervals.full.minutes": "{number, plural, one {# minut} other {# minutit}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "nüüd",
   "relative_time.minutes": "{number}m",
   "relative_time.seconds": "{number}s",
+  "relative_time.today": "täna",
   "reply_indicator.cancel": "Tühista",
   "report.forward": "Edasta kasutajale {target}",
   "report.forward_hint": "See kasutaja on teisest serverist. Kas saadan anonümiseeritud koopia sellest teatest sinna ka?",
diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json
index c89cb151f..5dc4e60c2 100644
--- a/app/javascript/mastodon/locales/eu.json
+++ b/app/javascript/mastodon/locales/eu.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Oinarrizkoa",
   "home.column_settings.show_reblogs": "Erakutsi bultzadak",
   "home.column_settings.show_replies": "Erakutsi erantzunak",
+  "home.hide_announcements": "Ezkutatu iragarpenak",
+  "home.show_announcements": "Erakutsi iragarpenak",
   "intervals.full.days": "{number, plural, one {egun #} other {# egun}}",
   "intervals.full.hours": "{number, plural, one {ordu #} other {# ordu}}",
   "intervals.full.minutes": "{number, plural, one {minutu #} other {# minutu}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "orain",
   "relative_time.minutes": "{number}m",
   "relative_time.seconds": "{number}s",
+  "relative_time.today": "gaur",
   "reply_indicator.cancel": "Utzi",
   "report.forward": "Birbidali hona: {target}",
   "report.forward_hint": "Kontu hau beste zerbitzari batekoa da. Bidali txostenaren kopia anonimo hara ere?",
diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json
index 3bb2f0ee8..0fc39b16d 100644
--- a/app/javascript/mastodon/locales/fa.json
+++ b/app/javascript/mastodon/locales/fa.json
@@ -23,8 +23,8 @@
   "account.media": "رسانه",
   "account.mention": "نام‌بردن از @{name}",
   "account.moved_to": "{name} منتقل شده به:",
-  "account.mute": "خموشی @{name}",
-  "account.mute_notifications": "خموشی اعلان‌ها از @{name}",
+  "account.mute": "خموشاندن @{name}",
+  "account.mute_notifications": "خموشاندن اعلان‌ها از @{name}",
   "account.muted": "خموش",
   "account.never_active": "هرگز",
   "account.posts": "نوشته‌ها",
@@ -43,7 +43,7 @@
   "alert.rate_limited.title": "محدودیت تعداد",
   "alert.unexpected.message": "خطایی غیرمنتظره رخ داد.",
   "alert.unexpected.title": "ای وای!",
-  "announcement.announcement": "Announcement",
+  "announcement.announcement": "اعلامیه",
   "autosuggest_hashtag.per_week": "{count} در هفته",
   "boost_modal.combo": "دکمهٔ {combo} را بزنید تا دیگر این را نبینید",
   "bundle_column_error.body": "هنگام بازکردن این بخش خطایی رخ داد.",
@@ -104,12 +104,12 @@
   "confirmations.delete_list.confirm": "پاک کن",
   "confirmations.delete_list.message": "مطمئنید می‌خواهید این فهرست را برای همیشه پاک کنید؟",
   "confirmations.domain_block.confirm": "نهفتن تمام دامنه",
-  "confirmations.domain_block.message": "آیا جدی جدی می‌خواهید تمام دامنهٔ {domain} را مسدود کنید؟ در بیشتر موارد مسدودسازی یا خموشیدن چند حساب خاص کافی است و توصیه می‌شود. پس از این کار شما هیچ نوشته‌ای را از این دامنه در فهرست نوشته‌های عمومی یا اعلان‌هایتان نخواهید دید. پیگیرانتان از این دامنه هم حذف خواهند شد.",
+  "confirmations.domain_block.message": "آیا جدی جدی می‌خواهید تمام دامنهٔ {domain} را مسدود کنید؟ در بیشتر موارد مسدودسازی یا خموشاندن چند حساب خاص کافی است و توصیه می‌شود. پس از این کار شما هیچ نوشته‌ای را از این دامنه در فهرست نوشته‌های عمومی یا اعلان‌هایتان نخواهید دید. پیگیرانتان از این دامنه هم حذف خواهند شد.",
   "confirmations.logout.confirm": "خروج",
   "confirmations.logout.message": "مطمئنید می‌خواهید خارج شوید؟",
-  "confirmations.mute.confirm": "خموشی",
+  "confirmations.mute.confirm": "خموشاندن",
   "confirmations.mute.explanation": "این کار فرسته‌های آن‌ها و فرسته‌هایی را که از آن‌ها نام برده پنهان می‌کند، ولی آن‌ها همچنان اجازه دارند فرسته‌های شما را ببینند و شما را پی بگیرند.",
-  "confirmations.mute.message": "مطمئنید می‌خواهید {name} را بخموشید؟",
+  "confirmations.mute.message": "مطمئنید می‌خواهید {name} را بخموشانید؟",
   "confirmations.redraft.confirm": "پاک‌کردن و بازنویسی",
   "confirmations.redraft.message": "مطمئنید که می‌خواهید این بوق را پاک کنید و از نو بنویسید؟ با این کار بازبوق‌ها و پسندهای آن از دست می‌رود و پاسخ‌ها به آن بی‌مرجع می‌شود.",
   "confirmations.reply.confirm": "پاسخ",
@@ -159,7 +159,7 @@
   "empty_column.notifications": "هنوز هیچ اعلانی ندارید. به دیگران واکنش نشان دهید تا گفتگو آغاز شود.",
   "empty_column.public": "این‌جا هنوز چیزی نیست! خودتان چیزی بنویسید یا کاربران کارسازهای دیگر را پی بگیرید تا این‌جا پر شود",
   "error.unexpected_crash.explanation": "به خاطر اشکالی در کدهای ما یا ناسازگاری با مرورگر شما، این صفحه به درستی نمایش نیافت.",
-  "error.unexpected_crash.next_steps": "لطفاً صفحه را دوباره باز کنید. اگر کمکی نکرد، شاید همچنان بتوانید با ماستدون از راه یک مرورگر دیگر یا با یکی از اپ‌های آن کار کنید.",
+  "error.unexpected_crash.next_steps": "لطفاً صفحه را دوباره باز کنید. اگر کمکی نکرد، شاید همچنان بتوانید با ماستودون از راه یک مرورگر دیگر یا با یکی از اپ‌های آن کار کنید.",
   "errors.unexpected_crash.copy_stacktrace": "رونوشت از جزئیات اشکال",
   "errors.unexpected_crash.report_issue": "گزارش مشکل",
   "follow_request.authorize": "اجازه دهید",
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "پایه‌ای",
   "home.column_settings.show_reblogs": "نمایش بازبوق‌ها",
   "home.column_settings.show_replies": "نمایش پاسخ‌ها",
+  "home.hide_announcements": "نهفتن اعلامیه‌ها",
+  "home.show_announcements": "نمایش اعلامیه‌ها",
   "intervals.full.days": "{number, plural, one {# روز} other {# روز}}",
   "intervals.full.hours": "{number, plural, one {# ساعت} other {# ساعت}}",
   "intervals.full.minutes": "{number, plural, one {# دقیقه} other {# دقیقه}}",
@@ -273,7 +275,7 @@
   "navigation_bar.keyboard_shortcuts": "میان‌برها",
   "navigation_bar.lists": "فهرست‌ها",
   "navigation_bar.logout": "خروج",
-  "navigation_bar.mutes": "کاربران خموشیده",
+  "navigation_bar.mutes": "کاربران خموشانده",
   "navigation_bar.personal": "شخصی",
   "navigation_bar.pins": "بوق‌های ثابت",
   "navigation_bar.preferences": "ترجیحات",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "الان",
   "relative_time.minutes": "{number} دقیقه",
   "relative_time.seconds": "{number} ثانیه",
+  "relative_time.today": "امروز",
   "reply_indicator.cancel": "لغو",
   "report.forward": "فرستادن به {target}",
   "report.forward_hint": "این حساب در کارساز دیگری ثبت شده. آیا می‌خواهید رونوشتی ناشناس از این گزارش به آن‌جا هم فرستاده شود؟",
@@ -342,44 +345,44 @@
   "report.target": "در حال گزارش {target}",
   "search.placeholder": "جستجو",
   "search_popout.search_format": "راهنمای جستجوی پیشرفته",
-  "search_popout.tips.full_text": "جست‌وجوی متنی ساده وضعیت‌هایی که که نوشته، برگزیده، تقویت‌کرده یا در آن‌ها اشاره‌شده‌اید را به اضافهٔ نام‌های کاربری، نام‌های نمایشی و برچسب‌های مطابق برمی‌گرداند.",
+  "search_popout.tips.full_text": "جستجوی متنی ساده می‌تواند بوق‌هایی که شما نوشته‌اید، پسندیده‌اید، بازبوقیده‌اید، یا در آن‌ها از شما نام برده شده است را پیدا کند. همچنین نام‌های کاربری، نام نمایش‌یافته، و هشتگ‌ها را هم شامل می‌شود.",
   "search_popout.tips.hashtag": "برچسب",
-  "search_popout.tips.status": "وضعیت",
-  "search_popout.tips.text": "جست‌وجوی متنی ساده، نام‌های نمایشی، نام‌های کاربری، و برچسب‌ها را برمی‌گرداند",
+  "search_popout.tips.status": "بوق",
+  "search_popout.tips.text": "جستجوی متنی ساده برای نام‌ها، نام‌های کاربری، و برچسب‌ها",
   "search_popout.tips.user": "کاربر",
   "search_results.accounts": "افراد",
   "search_results.hashtags": "برچسب‌ها",
   "search_results.statuses": "بوق‌ها",
-  "search_results.statuses_fts_disabled": "جست‌وجوی بوق‌ها بر اساس محتوایشان روی این کارساز ماستودون به کار نیفتاده است.",
+  "search_results.statuses_fts_disabled": "جستجوی محتوای بوق‌ها در این کارساز ماستودون فعال نشده است.",
   "search_results.total": "{count, number} {count, plural, one {نتیجه} other {نتیجه}}",
   "status.admin_account": "گشودن واسط مدیریت برای @{name}",
-  "status.admin_status": "گشودن این وضعیت در واسط مدیریت",
-  "status.block": "انسداد @{name}",
+  "status.admin_status": "گشودن این بوق در واسط مدیریت",
+  "status.block": "مسدودسازی @{name}",
   "status.bookmark": "نشانک",
-  "status.cancel_reblog_private": "ناتقویت",
-  "status.cannot_reblog": "این نوشته نمی‌تواند تقویت شود",
-  "status.copy": "رونوشت از پیوند به وضعیت",
-  "status.delete": "حذف",
-  "status.detailed_status": "نمای گفت‌وگوی باجزییات",
-  "status.direct": "پیام خصوصی به @{name}",
+  "status.cancel_reblog_private": "حذف بازبوق",
+  "status.cannot_reblog": "این نوشته را نمی‌شود بازبوقید",
+  "status.copy": "رونوشت‌برداری از نشانی بوق",
+  "status.delete": "پاک‌کردن",
+  "status.detailed_status": "نمایش کامل گفتگو",
+  "status.direct": "پیغام مستقیم به @{name}",
   "status.embed": "جاگذاری",
-  "status.favourite": "برگزیدن",
+  "status.favourite": "پسندیدن",
   "status.filtered": "پالوده",
-  "status.load_more": "بار کردن بیشتر",
+  "status.load_more": "بیشتر نشان بده",
   "status.media_hidden": "رسانهٔ نهفته",
-  "status.mention": "اشاره به @{name}",
+  "status.mention": "نام‌بردن از @{name}",
   "status.more": "بیشتر",
-  "status.mute": "خموشی @{name}",
-  "status.mute_conversation": "خموشی گفت‌وگو",
-  "status.open": "گسترش این وضعیت",
-  "status.pin": "سنجاق به نمایه",
-  "status.pinned": "بوق سنجاق‌شده",
+  "status.mute": "خموشاندن @{name}",
+  "status.mute_conversation": "خموشاندن گفتگو",
+  "status.open": "گشودن این بوق",
+  "status.pin": "ثابت کردن در نمایه",
+  "status.pinned": "بوق ثابت",
   "status.read_more": "بیشتر بخوانید",
-  "status.reblog": "تقویت",
-  "status.reblog_private": "تقویت برای مخاطبان نخستین",
-  "status.reblogged_by": "‫{name}‬ تقویت کرد",
-  "status.reblogs.empty": "هنوز کسی این بوق را تقویت نکرده است. وقتی کسی چنین کاری کند، این‌جا دیده خواهد شد.",
-  "status.redraft": "حذف و بازنویسی",
+  "status.reblog": "بازبوقیدن",
+  "status.reblog_private": "بازبوق به مخاطبان اولیه",
+  "status.reblogged_by": "‫{name}‬ بازبوقید",
+  "status.reblogs.empty": "هنوز هیچ کسی این بوق را بازنبوقیده است. وقتی کسی چنین کاری کند، این‌جا نمایش خواهد یافت.",
+  "status.redraft": "پاک‌کردن و بازنویسی",
   "status.remove_bookmark": "برداشتن نشانک",
   "status.reply": "پاسخ",
   "status.replyAll": "پاسخ به رشته",
@@ -387,53 +390,53 @@
   "status.sensitive_warning": "محتوای حساس",
   "status.share": "هم‌رسانی",
   "status.show_less": "نمایش کمتر",
-  "status.show_less_all": "نمایش کمتر برای همه",
+  "status.show_less_all": "نمایش کمتر همه",
   "status.show_more": "نمایش بیشتر",
-  "status.show_more_all": "نمایش بیشتر برای همه",
+  "status.show_more_all": "نمایش بیشتر همه",
   "status.show_thread": "نمایش رشته",
   "status.uncached_media_warning": "ناموجود",
-  "status.unmute_conversation": "رفع خموشی گفت‌وگو",
-  "status.unpin": "برداشتن سنجاق از نمایه",
+  "status.unmute_conversation": "رفع خموشی گفتگو",
+  "status.unpin": "برداشتن نوشتهٔ ثابت نمایه",
   "suggestions.dismiss": "نادیده گرفتن پیشنهاد",
   "suggestions.header": "شاید این هم برایتان جالب باشد…",
   "tabs_bar.federated_timeline": "همگانی",
   "tabs_bar.home": "خانه",
   "tabs_bar.local_timeline": "محلّی",
-  "tabs_bar.notifications": "آگاهی‌ها",
-  "tabs_bar.search": "جست‌وجو",
+  "tabs_bar.notifications": "اعلان‌ها",
+  "tabs_bar.search": "جستجو",
   "time_remaining.days": "{number, plural, one {# روز} other {# روز}} باقی مانده",
   "time_remaining.hours": "{number, plural, one {# ساعت} other {# ساعت}} باقی مانده",
   "time_remaining.minutes": "{number, plural, one {# دقیقه} other {# دقیقه}} باقی مانده",
-  "time_remaining.moments": "لحظاتی باقی‌مانده",
+  "time_remaining.moments": "زمان باقی‌مانده",
   "time_remaining.seconds": "{number, plural, one {# ثانیه} other {# ثانیه}} باقی مانده",
   "trends.count_by_accounts": "{count} {rawCount, plural, one {نفر نوشته است} other {نفر نوشته‌اند}}",
   "trends.trending_now": "پرطرفدار",
-  "ui.beforeunload": "در صورت خروج از از ماستودون، پیش‌نویستان از دست خواهد رفت.",
+  "ui.beforeunload": "اگر از ماستودون خارج شوید پیش‌نویس شما از دست خواهد رفت.",
   "upload_area.title": "برای بارگذاری به این‌جا بکشید",
   "upload_button.label": "افزودن رسانه ({formats})",
-  "upload_error.limit": "تجاوز از کران بارگذاری پرونده.",
+  "upload_error.limit": "از حد مجاز باگذاری پرونده فراتر رفتید.",
   "upload_error.poll": "بارگذاری پرونده در نظرسنجی‌ها مجاز نیست.",
-  "upload_form.audio_description": "توصیف برای افراد فاقد شنوایی",
-  "upload_form.description": "توضیح برای کم‌بینایان",
+  "upload_form.audio_description": "برای ناشنوایان توصیفش کنید",
+  "upload_form.description": "برای کم‌بینایان توصیفش کنید",
   "upload_form.edit": "ویرایش",
   "upload_form.undo": "حذف",
-  "upload_form.video_description": "توصیف برای افراد با اختلال دید یا فاقد شنوایی",
+  "upload_form.video_description": "برای کم‌بینایان یا ناشنوایان توصیفش کنید",
   "upload_modal.analyzing_picture": "در حال پردازش تصویر…",
   "upload_modal.apply": "اعمال",
   "upload_modal.description_placeholder": "الا یا ایّها الساقی، ادر کأساً و ناولها",
   "upload_modal.detect_text": "تشخیص متن درون عکس",
   "upload_modal.edit_media": "ویرایش رسانه",
-  "upload_modal.hint": "دایره را روی پیش‌نمایش کشیده یا کلیک کنید تا نقطهٔ کانونی‌ای که همواره باید در تمام بندانگشتی‌ها داخل نما باشد را برگزینید.",
+  "upload_modal.hint": "حتی اگر تصویر بریده یا کوچک شود، نقطهٔ کانونی آن همیشه دیده خواهد شد. نقطهٔ کانونی را با کلیک یا جابه‌جا کردن آن تنظیم کنید.",
   "upload_modal.preview_label": "پیش‌نمایش ({ratio})",
   "upload_progress.label": "در حال بارگذاری…",
   "video.close": "بستن ویدیو",
   "video.download": "بارگیری پرونده",
   "video.exit_fullscreen": "خروج از حالت تمام‌صفحه",
-  "video.expand": "گسترش ویدیو",
+  "video.expand": "بزرگ‌کردن ویدیو",
   "video.fullscreen": "تمام‌صفحه",
   "video.hide": "نهفتن ویدیو",
-  "video.mute": "خموشی صدا",
+  "video.mute": "قطع صدا",
   "video.pause": "مکث",
   "video.play": "پخش",
-  "video.unmute": "رفع خموشی صدا"
+  "video.unmute": "پخش صدا"
 }
diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json
index 8a069f2a3..b46083477 100644
--- a/app/javascript/mastodon/locales/fi.json
+++ b/app/javascript/mastodon/locales/fi.json
@@ -64,7 +64,7 @@
   "column.lists": "Listat",
   "column.mutes": "Mykistetyt käyttäjät",
   "column.notifications": "Ilmoitukset",
-  "column.pins": "Kiinnitetty tuuttaus",
+  "column.pins": "Kiinnitetyt tuuttaukset",
   "column.public": "Yleinen aikajana",
   "column_back_button.label": "Takaisin",
   "column_header.hide_settings": "Piilota asetukset",
@@ -165,7 +165,7 @@
   "follow_request.authorize": "Valtuuta",
   "follow_request.reject": "Hylkää",
   "getting_started.developers": "Kehittäjille",
-  "getting_started.directory": "Profiili hakemisto",
+  "getting_started.directory": "Profiilihakemisto",
   "getting_started.documentation": "Documentaatio",
   "getting_started.heading": "Aloitus",
   "getting_started.invite": "Kutsu ihmisiä",
@@ -184,6 +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",
   "intervals.full.days": "Päivä päiviä",
   "intervals.full.hours": "Tunti tunteja",
   "intervals.full.minutes": "Minuuti minuuteja",
@@ -269,7 +271,7 @@
   "navigation_bar.filters": "Mykistetyt sanat",
   "navigation_bar.follow_requests": "Seuraamispyynnöt",
   "navigation_bar.follows_and_followers": "Seurattavat ja seuraajat",
-  "navigation_bar.info": "Tietoa tästä instanssista",
+  "navigation_bar.info": "Tietoa tästä palvelimesta",
   "navigation_bar.keyboard_shortcuts": "Näppäinkomennot",
   "navigation_bar.lists": "Listat",
   "navigation_bar.logout": "Kirjaudu ulos",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "nyt",
   "relative_time.minutes": "{number} m",
   "relative_time.seconds": "{number} s",
+  "relative_time.today": "today",
   "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?",
diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json
index 7cd5ec0e3..f61c15d57 100644
--- a/app/javascript/mastodon/locales/fr.json
+++ b/app/javascript/mastodon/locales/fr.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Base",
   "home.column_settings.show_reblogs": "Afficher les partages",
   "home.column_settings.show_replies": "Afficher les réponses",
+  "home.hide_announcements": "Masquer les annonces",
+  "home.show_announcements": "Afficher les annonces",
   "intervals.full.days": "{number, plural, one {# jour} other {# jours}}",
   "intervals.full.hours": "{number, plural, one {# heure} other {# heures}}",
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "à l’instant",
   "relative_time.minutes": "{number} min",
   "relative_time.seconds": "{number} s",
+  "relative_time.today": "aujourd’hui",
   "reply_indicator.cancel": "Annuler",
   "report.forward": "Transférer à {target}",
   "report.forward_hint": "Le compte provient d’un autre serveur. Envoyer également une copie anonyme du rapport ?",
diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json
index 508456736..0e9c9d6d1 100644
--- a/app/javascript/mastodon/locales/ga.json
+++ b/app/javascript/mastodon/locales/ga.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Basic",
   "home.column_settings.show_reblogs": "Show boosts",
   "home.column_settings.show_replies": "Show replies",
+  "home.hide_announcements": "Hide announcements",
+  "home.show_announcements": "Show announcements",
   "intervals.full.days": "{number, plural, one {# day} other {# days}}",
   "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "now",
   "relative_time.minutes": "{number}m",
   "relative_time.seconds": "{number}s",
+  "relative_time.today": "today",
   "reply_indicator.cancel": "Cancel",
   "report.forward": "Forward to {target}",
   "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json
index 81ba22987..76657cdde 100644
--- a/app/javascript/mastodon/locales/gl.json
+++ b/app/javascript/mastodon/locales/gl.json
@@ -72,7 +72,7 @@
   "column_header.moveRight_settings": "Mover columna cara a dereita",
   "column_header.pin": "Fixar",
   "column_header.show_settings": "Amosar axustes",
-  "column_header.unpin": "Desafixar",
+  "column_header.unpin": "Desapegar",
   "column_subheading.settings": "Axustes",
   "community.column_settings.media_only": "Só multimedia",
   "compose_form.direct_message_warning": "Este toot só será enviado ás usuarias mencionadas.",
@@ -118,7 +118,7 @@
   "confirmations.unfollow.message": "Desexas deixar de seguir a {name}?",
   "conversation.delete": "Eliminar conversa",
   "conversation.mark_as_read": "Marcar como lido",
-  "conversation.open": "Ollar conversa",
+  "conversation.open": "Ver conversa",
   "conversation.with": "Con {names}",
   "directory.federated": "Do fediverso coñecido",
   "directory.local": "Só de {domain}",
@@ -129,7 +129,7 @@
   "emoji_button.activity": "Actividade",
   "emoji_button.custom": "Personalizado",
   "emoji_button.flags": "Bandeiras",
-  "emoji_button.food": "Comida e bebida",
+  "emoji_button.food": "Comida e Bebida",
   "emoji_button.label": "Inserir emoticona",
   "emoji_button.nature": "Natureza",
   "emoji_button.not_found": "Non hai emoticonas!! (╯°□°)╯︵ ┻━┻",
@@ -139,11 +139,11 @@
   "emoji_button.search": "Procurar...",
   "emoji_button.search_results": "Resultados da procura",
   "emoji_button.symbols": "Símbolos",
-  "emoji_button.travel": "Viaxes e lugares",
+  "emoji_button.travel": "Viaxes e Lugares",
   "empty_column.account_timeline": "Non hai toots aquí!",
-  "empty_column.account_unavailable": "Perfil non dispoñíbel",
+  "empty_column.account_unavailable": "Perfil non dispoñible",
   "empty_column.blocks": "Aínda non bloqueaches a ningún usuaria.",
-  "empty_column.bookmarked_statuses": "Aínda non marcaches ningún toot. Cando o fagas, amosaranse aquí.",
+  "empty_column.bookmarked_statuses": "Aínda non marcaches ningún toot. Cando o fagas, aparecerán aquí.",
   "empty_column.community": "A cronoloxía local está baleira. Escribe algo de xeito público para espallalo!",
   "empty_column.direct": "Aínda non tes mensaxes directas. Cando envíes ou recibas unha, amosarase aquí.",
   "empty_column.domain_blocks": "Aínda non hai dominios agochados.",
@@ -165,7 +165,7 @@
   "follow_request.authorize": "Autorizar",
   "follow_request.reject": "Rexeitar",
   "getting_started.developers": "Desenvolvedores",
-  "getting_started.directory": "Directorio do perfil",
+  "getting_started.directory": "Directorio local",
   "getting_started.documentation": "Documentación",
   "getting_started.heading": "Primeiros pasos",
   "getting_started.invite": "Convidar persoas",
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Básico",
   "home.column_settings.show_reblogs": "Amosar compartidos",
   "home.column_settings.show_replies": "Amosar respostas",
+  "home.hide_announcements": "Agochar anuncios",
+  "home.show_announcements": "Amosar anuncios",
   "intervals.full.days": "{number, plural,one {# día} other {# días}}",
   "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}",
   "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}",
@@ -221,13 +223,13 @@
   "keyboard_shortcuts.hotkey": "Tecla de atallo",
   "keyboard_shortcuts.legend": "para amosar esta lenda",
   "keyboard_shortcuts.local": "para abrir a cronoloxía local",
-  "keyboard_shortcuts.mention": "para mencionar ó autor",
+  "keyboard_shortcuts.mention": "para mencionar a autora",
   "keyboard_shortcuts.muted": "abrir lista de usuarias acaladas",
   "keyboard_shortcuts.my_profile": "para abrir o teu perfil",
   "keyboard_shortcuts.notifications": "para abrir a columna das notificacións",
   "keyboard_shortcuts.open_media": "para abrir o contido multimedia",
   "keyboard_shortcuts.pinned": "para abrir a listaxe dos toots fixados",
-  "keyboard_shortcuts.profile": "para abrir o perfil do autor",
+  "keyboard_shortcuts.profile": "para abrir o perfil da autora",
   "keyboard_shortcuts.reply": "para responder",
   "keyboard_shortcuts.requests": "para abrir a listaxe das peticións de seguimento",
   "keyboard_shortcuts.search": "para destacar a procura",
@@ -311,7 +313,7 @@
   "poll.closed": "Pechado",
   "poll.refresh": "Actualizar",
   "poll.total_people": "{count, plural,one {# persoa}other {# persoas}}",
-  "poll.total_votes": "{count, plural, one {# voto} outros {# votos}}",
+  "poll.total_votes": "{count, plural, one {# voto} other {# votos}}",
   "poll.vote": "Votar",
   "poll.voted": "Votaches por esta opción",
   "poll_button.add_poll": "Engadir unha enquisa",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "agora",
   "relative_time.minutes": "{number}m",
   "relative_time.seconds": "{number}s",
+  "relative_time.today": "hoxe",
   "reply_indicator.cancel": "Desbotar",
   "report.forward": "Reenviar a {target}",
   "report.forward_hint": "A conta é doutro servidor. Enviar unha copia anónima da denuncia aló tamén?",
@@ -354,14 +357,14 @@
   "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}",
   "status.admin_account": "Abrir interface de moderación para @{name}",
   "status.admin_status": "Abrir este estado na interface de moderación",
-  "status.block": "Bloquear @{name}",
+  "status.block": "Bloquear a @{name}",
   "status.bookmark": "Marcar",
   "status.cancel_reblog_private": "Desfacer compartido",
   "status.cannot_reblog": "Esta publicación non pode ser promovida",
   "status.copy": "Copiar ligazón ó estado",
   "status.delete": "Eliminar",
   "status.detailed_status": "Vista detallada da conversa",
-  "status.direct": "Mensaxe directa @{name}",
+  "status.direct": "Mensaxe directa a @{name}",
   "status.embed": "Embeber nunha web",
   "status.favourite": "Favorito",
   "status.filtered": "Filtrado",
diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json
index 07217364a..7e394c112 100644
--- a/app/javascript/mastodon/locales/he.json
+++ b/app/javascript/mastodon/locales/he.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "למתחילים",
   "home.column_settings.show_reblogs": "הצגת הדהודים",
   "home.column_settings.show_replies": "הצגת תגובות",
+  "home.hide_announcements": "Hide announcements",
+  "home.show_announcements": "Show announcements",
   "intervals.full.days": "{number, plural, one {# day} other {# days}}",
   "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "כרגע",
   "relative_time.minutes": "{number}m",
   "relative_time.seconds": "{number}s",
+  "relative_time.today": "today",
   "reply_indicator.cancel": "ביטול",
   "report.forward": "Forward to {target}",
   "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json
index ff7ea9e6a..d4659bc2e 100644
--- a/app/javascript/mastodon/locales/hi.json
+++ b/app/javascript/mastodon/locales/hi.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "बुनियादी",
   "home.column_settings.show_reblogs": "बूस्ट दिखाए",
   "home.column_settings.show_replies": "जवाबों को दिखाए",
+  "home.hide_announcements": "Hide announcements",
+  "home.show_announcements": "Show announcements",
   "intervals.full.days": "{number, plural, one {# day} other {# days}}",
   "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "अभी",
   "relative_time.minutes": "{number}m",
   "relative_time.seconds": "{number}s",
+  "relative_time.today": "today",
   "reply_indicator.cancel": "रद्द करें",
   "report.forward": "Forward to {target}",
   "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json
index 31327e3d3..ab6883eff 100644
--- a/app/javascript/mastodon/locales/hr.json
+++ b/app/javascript/mastodon/locales/hr.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Osnovno",
   "home.column_settings.show_reblogs": "Pokaži boostove",
   "home.column_settings.show_replies": "Pokaži odgovore",
+  "home.hide_announcements": "Hide announcements",
+  "home.show_announcements": "Show announcements",
   "intervals.full.days": "{number, plural, one {# day} other {# days}}",
   "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "now",
   "relative_time.minutes": "{number}m",
   "relative_time.seconds": "{number}s",
+  "relative_time.today": "today",
   "reply_indicator.cancel": "Otkaži",
   "report.forward": "Forward to {target}",
   "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json
index e8dc573fa..b25369326 100644
--- a/app/javascript/mastodon/locales/hu.json
+++ b/app/javascript/mastodon/locales/hu.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Alapvető",
   "home.column_settings.show_reblogs": "Megtolások mutatása",
   "home.column_settings.show_replies": "Válaszok mutatása",
+  "home.hide_announcements": "Közlemények elrejtése",
+  "home.show_announcements": "Közlemények mutatása",
   "intervals.full.days": "{number, plural, one {# nap} other {# nap}}",
   "intervals.full.hours": "{number, plural, one {# óra} other {# óra}}",
   "intervals.full.minutes": "{number, plural, one {# perc} other {# perc}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "most",
   "relative_time.minutes": "{number}p",
   "relative_time.seconds": "{number}mp",
+  "relative_time.today": "ma",
   "reply_indicator.cancel": "Mégsem",
   "report.forward": "Továbbítás: {target}",
   "report.forward_hint": "Ez a fiók egy másik kiszolgálóról van. Oda is elküldöd a jelentés egy anonimizált másolatát?",
diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json
index 1ad3cb0fd..6a0e825b0 100644
--- a/app/javascript/mastodon/locales/hy.json
+++ b/app/javascript/mastodon/locales/hy.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Հիմնական",
   "home.column_settings.show_reblogs": "Ցուցադրել տարածածները",
   "home.column_settings.show_replies": "Ցուցադրել պատասխանները",
+  "home.hide_announcements": "Hide announcements",
+  "home.show_announcements": "Show announcements",
   "intervals.full.days": "{number, plural, one {# day} other {# days}}",
   "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "նոր",
   "relative_time.minutes": "{number}ր",
   "relative_time.seconds": "{number}վ",
+  "relative_time.today": "today",
   "reply_indicator.cancel": "Չեղարկել",
   "report.forward": "Փոխանցել {target}֊ին",
   "report.forward_hint": "Այս հաշիւ այլ հանգոյցից է։ Ուղարկե՞մ այնտեղ էլ այս բողոքի անոնիմ պատճէնը։",
diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json
index b1605ac60..98d0af510 100644
--- a/app/javascript/mastodon/locales/id.json
+++ b/app/javascript/mastodon/locales/id.json
@@ -43,7 +43,7 @@
   "alert.rate_limited.title": "Batasan tingkat",
   "alert.unexpected.message": "Terjadi kesalahan yang tidak terduga.",
   "alert.unexpected.title": "Oops!",
-  "announcement.announcement": "Announcement",
+  "announcement.announcement": "Pengumuman",
   "autosuggest_hashtag.per_week": "{count} per minggu",
   "boost_modal.combo": "Anda dapat menekan {combo} untuk melewati ini",
   "bundle_column_error.body": "Kesalahan terjadi saat memuat komponen ini.",
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Dasar",
   "home.column_settings.show_reblogs": "Tampilkan boost",
   "home.column_settings.show_replies": "Tampilkan balasan",
+  "home.hide_announcements": "Sembunyikan pengumuman",
+  "home.show_announcements": "Tampilkan pengumuman",
   "intervals.full.days": "{number, plural, other {# hari}}",
   "intervals.full.hours": "{number, plural, other {# jam}}",
   "intervals.full.minutes": "{number, plural, other {# menit}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "sekarang",
   "relative_time.minutes": "{number}b",
   "relative_time.seconds": "{number}d",
+  "relative_time.today": "hari ini",
   "reply_indicator.cancel": "Batal",
   "report.forward": "Teruskan ke {target}",
   "report.forward_hint": "Akun dari server lain. Kirim salinan laporan scr anonim ke sana?",
diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json
index 36bf1a588..f53c77172 100644
--- a/app/javascript/mastodon/locales/io.json
+++ b/app/javascript/mastodon/locales/io.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Simpla",
   "home.column_settings.show_reblogs": "Montrar repeti",
   "home.column_settings.show_replies": "Montrar respondi",
+  "home.hide_announcements": "Hide announcements",
+  "home.show_announcements": "Show announcements",
   "intervals.full.days": "{number, plural, one {# day} other {# days}}",
   "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "now",
   "relative_time.minutes": "{number}m",
   "relative_time.seconds": "{number}s",
+  "relative_time.today": "today",
   "reply_indicator.cancel": "Nihiligar",
   "report.forward": "Forward to {target}",
   "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json
index 53b2a150a..4c6599b39 100644
--- a/app/javascript/mastodon/locales/is.json
+++ b/app/javascript/mastodon/locales/is.json
@@ -43,7 +43,7 @@
   "alert.rate_limited.title": "Með takmörkum",
   "alert.unexpected.message": "Upp kom óvænt villa.",
   "alert.unexpected.title": "Úbbs!",
-  "announcement.announcement": "Announcement",
+  "announcement.announcement": "Auglýsing",
   "autosuggest_hashtag.per_week": "{count} á viku",
   "boost_modal.combo": "Þú getur ýtt á {combo} til að sleppa þessu næst",
   "bundle_column_error.body": "Eitthvað fór úrskeiðis við að hlaða inn þessari einingu.",
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Einfalt",
   "home.column_settings.show_reblogs": "Sýna endurbirtingar",
   "home.column_settings.show_replies": "Birta svör",
+  "home.hide_announcements": "Fela auglýsingar",
+  "home.show_announcements": "Birta auglýsingar",
   "intervals.full.days": "{number, plural, one {# dagur} other {# dagar}}",
   "intervals.full.hours": "{number, plural, one {# klukkustund} other {# klukkustundir}}",
   "intervals.full.minutes": "{number, plural, one {# mínúta} other {# mínútur}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "núna",
   "relative_time.minutes": "{number}mín",
   "relative_time.seconds": "{number}sek",
+  "relative_time.today": "í dag",
   "reply_indicator.cancel": "Hætta við",
   "report.forward": "Áframsenda til {target}",
   "report.forward_hint": "Notandaaðgangurinn er af öðrum vefþjóni. Á einnig að senda nafnlaust afrit af kærunni þangað?",
diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json
index 1b31f90f6..94f81116c 100644
--- a/app/javascript/mastodon/locales/it.json
+++ b/app/javascript/mastodon/locales/it.json
@@ -43,7 +43,7 @@
   "alert.rate_limited.title": "Numero massimo di richieste superato",
   "alert.unexpected.message": "Si è verificato un errore inatteso.",
   "alert.unexpected.title": "Oops!",
-  "announcement.announcement": "Announcement",
+  "announcement.announcement": "Annuncio",
   "autosuggest_hashtag.per_week": "{count} per settimana",
   "boost_modal.combo": "Puoi premere {combo} per saltare questo passaggio la prossima volta",
   "bundle_column_error.body": "E' avvenuto un errore durante il caricamento di questo componente.",
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Semplice",
   "home.column_settings.show_reblogs": "Mostra post condivisi",
   "home.column_settings.show_replies": "Mostra risposte",
+  "home.hide_announcements": "Nascondi annunci",
+  "home.show_announcements": "Mostra annunci",
   "intervals.full.days": "{number, plural, one {# giorno} other {# giorni}}",
   "intervals.full.hours": "{number, plural, one {# ora} other {# ore}}",
   "intervals.full.minutes": "{number, plural, one {# minuto} other {# minuti}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "ora",
   "relative_time.minutes": "{number}m",
   "relative_time.seconds": "{number}s",
+  "relative_time.today": "oggi",
   "reply_indicator.cancel": "Annulla",
   "report.forward": "Inoltra a {target}",
   "report.forward_hint": "Questo account appartiene a un altro server. Mandare anche là una copia anonima del rapporto?",
diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json
index 67cee9276..b1a9ad9ce 100644
--- a/app/javascript/mastodon/locales/ja.json
+++ b/app/javascript/mastodon/locales/ja.json
@@ -188,6 +188,8 @@
   "home.column_settings.basic": "基本設定",
   "home.column_settings.show_reblogs": "ブースト表示",
   "home.column_settings.show_replies": "返信表示",
+  "home.hide_announcements": "お知らせを隠す",
+  "home.show_announcements": "お知らせを表示",
   "intervals.full.days": "{number}日",
   "intervals.full.hours": "{number}時間",
   "intervals.full.minutes": "{number}分",
@@ -338,6 +340,7 @@
   "relative_time.just_now": "今",
   "relative_time.minutes": "{number}分前",
   "relative_time.seconds": "{number}秒前",
+  "relative_time.today": "今日",
   "reply_indicator.cancel": "キャンセル",
   "report.forward": "{target} に転送する",
   "report.forward_hint": "このアカウントは別のサーバーに所属しています。通報内容を匿名で転送しますか?",
diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json
index 1222702a4..4e5c8595e 100644
--- a/app/javascript/mastodon/locales/ka.json
+++ b/app/javascript/mastodon/locales/ka.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "ძირითადი",
   "home.column_settings.show_reblogs": "ბუსტების ჩვენება",
   "home.column_settings.show_replies": "პასუხების ჩვენება",
+  "home.hide_announcements": "Hide announcements",
+  "home.show_announcements": "Show announcements",
   "intervals.full.days": "{number, plural, one {# day} other {# days}}",
   "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "ახლა",
   "relative_time.minutes": "{number}წთ",
   "relative_time.seconds": "{number}წმ",
+  "relative_time.today": "today",
   "reply_indicator.cancel": "უარყოფა",
   "report.forward": "ფორვარდი {target}-ს",
   "report.forward_hint": "ანგარიში სხვა სერვერიდანაა. გავაგზავნოთ რეპორტის ანონიმური ასლიც?",
diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json
index ec77fa9e4..e78b4cc4f 100644
--- a/app/javascript/mastodon/locales/kab.json
+++ b/app/javascript/mastodon/locales/kab.json
@@ -13,7 +13,7 @@
   "account.follow": "Ḍfeṛ",
   "account.followers": "Imeḍfaṛen",
   "account.followers.empty": "Ar tura, ulac yiwen i yeṭṭafaṛen amseqdac-agi.",
-  "account.follows": "Aḍfaṛen",
+  "account.follows": "Ig ṭafaṛ",
   "account.follows.empty": "Ar tura, amseqdac-agi ur yeṭṭafaṛ yiwen.",
   "account.follows_you": "Yeṭṭafaṛ-ik",
   "account.hide_reblogs": "Ffer ayen i ibeṭṭu @{name}",
@@ -27,8 +27,8 @@
   "account.mute_notifications": "Susem ilγa sγur @{name}",
   "account.muted": "Yettwasgugem",
   "account.never_active": "Werǧin",
-  "account.posts": "Tiberraḥin",
-  "account.posts_with_replies": "Tibarraḥin d tririyin",
+  "account.posts": "Tijewwaqin",
+  "account.posts_with_replies": "Tijewwaqin akked tririyin",
   "account.report": "Sewɛed @{name}",
   "account.requested": "Di laɛḍil ad yettwaqbel. Ssit iwakken ad yefsex usuter n weḍfar",
   "account.share": "Bḍu amaγnu n @{name}",
@@ -41,9 +41,9 @@
   "account.unmute_notifications": "Serreḥ ilγa sγur @{name}",
   "alert.rate_limited.message": "Ma ulac aγilif ɛreḍ tikelt-nniḍen mbeɛd {retry_time, time, medium}.",
   "alert.rate_limited.title": "Aktum s talast",
-  "alert.unexpected.message": "Tella-d tuccḍa i ɣef ur nedmi ara.",
+  "alert.unexpected.message": "Tella-d tuccḍa i γef ur nedmi ara.",
   "alert.unexpected.title": "Ayhuh!",
-  "announcement.announcement": "Announcement",
+  "announcement.announcement": "Ulγu",
   "autosuggest_hashtag.per_week": "{count} i yimalas",
   "boost_modal.combo": "Tzemreḍ ad tetekkiḍ γef {combo} akken ad tessurfeḍ aya tikelt-nniḍen",
   "bundle_column_error.body": "Tella-d kra n tuccḍa mi d-yettali ugbur-agi.",
@@ -64,7 +64,7 @@
   "column.lists": "Tibdarin",
   "column.mutes": "Imiḍanen yettwasgugmen",
   "column.notifications": "Tilγa",
-  "column.pins": "Tiberraḥin yettwasenṭḍen",
+  "column.pins": "Tijewwaqin yettwasenṭḍen",
   "column.public": "Tasuddemt tamatut",
   "column_back_button.label": "Tuγalin",
   "column_header.hide_settings": "Ffer iγewwaṛen",
@@ -75,7 +75,7 @@
   "column_header.unpin": "Kkes asenteḍ",
   "column_subheading.settings": "Iγewwaṛen",
   "community.column_settings.media_only": "Allal n teywalt kan",
-  "compose_form.direct_message_warning": "Taberraḥt-a ad d-tettwasken kan i yimseqdacen i d-yettwabedren.",
+  "compose_form.direct_message_warning": "Tajewwaqt-a ad d-tettwasken kan i yimseqdacen i d-yettwabedren.",
   "compose_form.direct_message_warning_learn_more": "Issin ugar",
   "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.",
   "compose_form.lock_disclaimer": "Amiḍan-ik ur yelli ara {locked}. Menwala yezmer ad k-yeḍfeṛ akken ad iẓer acu tbeṭṭuḍ akked yimeḍfaṛen-ik.",
@@ -87,7 +87,7 @@
   "compose_form.poll.remove_option": "Sfeḍ afran-agi",
   "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.publish": "Taberraḥt",
+  "compose_form.publish": "Jewweq",
   "compose_form.publish_loud": "{publish}!",
   "compose_form.sensitive.hide": "Creḍ allal n teywalt d anafri",
   "compose_form.sensitive.marked": "Allal n teywalt yettwacreḍ d anafri",
@@ -109,20 +109,20 @@
   "confirmations.logout.message": "D tidet tebγiḍ ad teffγeḍ?",
   "confirmations.mute.confirm": "Sgugem",
   "confirmations.mute.explanation": "Aya ad yeffer iznan-is d wid i deg d-yettwabder neγ d-tettwabder, maca xas akka yezmer neγ tezmer awali n yiznan-inek d uḍfaṛ-ik.",
-  "confirmations.mute.message": "Tetḥeqqeḍ belli tebγiḍ asɛuggen n {name}?",
+  "confirmations.mute.message": "Tetḥeqqeḍ belli tebγiḍ ad ttegugmeḍ {name}?",
   "confirmations.redraft.confirm": "Sfeḍ & Ɛiwed tira",
-  "confirmations.redraft.message": "Tetḥeqqeḍ belli tebγiḍ asfaḍ n waddad-agi iwakken ad s-tɛiwdeḍ tira? Ismenyifen d beḍḍuwat ad ṛuḥen, ma d tiririyin-is ad uγalent d tigujilin.",
+  "confirmations.redraft.message": "Tetḥeqqeḍ belli tebγiḍ tuksa n waddad-agi iwakken ad s-tɛiwdeḍ tira? Ismenyifen d beḍḍuwat ad ṛuḥen, ma d tiririyin-is ad uγalent d tigujilin.",
   "confirmations.reply.confirm": "Err",
   "confirmations.reply.message": "Tiririt akka tura ad k-degger izen-agi i tettaruḍ. Tebγiḍ ad tkemmleḍ?",
   "confirmations.unfollow.confirm": "Ur ḍḍafaṛ ara",
-  "confirmations.unfollow.message": "Tetḥeqqeḍ belli tebγiḍ ur teḍḍafaṛeḍ ara {name}?",
+  "confirmations.unfollow.message": "Tetḥeqqeḍ belli tebγiḍ ur teṭafaṛeḍ ara {name}?",
   "conversation.delete": "Sfeḍ adiwenni",
   "conversation.mark_as_read": "Creḍ yettwaγṛa",
   "conversation.open": "Sken adiwenni",
   "conversation.with": "Akked {names}",
-  "directory.federated": "Seg fedivers yettwasnen",
+  "directory.federated": "Deg fedivers yettwasnen",
   "directory.local": "Seg {domain} kan",
-  "directory.new_arrivals": "Inebgawen imaynuten",
+  "directory.new_arrivals": "Imaynuten id yewḍen",
   "directory.recently_active": "Yermed xas melmi kan",
   "embed.instructions": "Ẓẓu addad-agi deg usmel-inek s wenγal n tangalt yellan sdaw-agi.",
   "embed.preview": "Akka ara d-iban:",
@@ -140,15 +140,15 @@
   "emoji_button.search_results": "Igmaḍ u unadi",
   "emoji_button.symbols": "Izamulen",
   "emoji_button.travel": "Imeḍqan d Yinigen",
-  "empty_column.account_timeline": "Ulac tiberraḥin dagi!",
+  "empty_column.account_timeline": "Ulac tijewwaqin dagi!",
   "empty_column.account_unavailable": "Ur nufi ara amaγnu-a",
   "empty_column.blocks": "Ur tesḥebseḍ ula yiwen n umseqdac ar tura.",
-  "empty_column.bookmarked_statuses": "Ulac tiberraḥin i terniḍ γer yismenyifen-ik ar tura. Ticki terniḍ yiwet, ad d-tettwasken da.",
+  "empty_column.bookmarked_statuses": "Ulac tijewwaqin i terniḍ γer yismenyifen-ik ar tura. Ticki terniḍ yiwet, ad d-tettwasken da.",
   "empty_column.community": "Tasuddemt tazayezt tadigant n yisallen d tilemt. Aru ihi kra akken ad tt-teččareḍ!",
   "empty_column.direct": "Ulac γur-k ula yiwen n yizen usrid. Ad d-yettwasken da, ticki tuzneḍ neγ teṭṭfeḍ-d yiwen.",
   "empty_column.domain_blocks": "Ulac kra n taγult yettwaffren ar tura.",
-  "empty_column.favourited_statuses": "Ulac ula yiwet n tberraḥt deg yismenyifen-ik ar tura. Ticki Tella-d yiwet, ad d-ban da.",
-  "empty_column.favourites": "Ula yiwen ur yerri taberraḥt-agi deg yismenyifen-is. Melmi i d-yella waya, ad d-yettwasken da.",
+  "empty_column.favourited_statuses": "Ulac ula yiwet n tjewwaqt deg yismenyifen-ik ar tura. Ticki Tella-d yiwet, ad d-ban da.",
+  "empty_column.favourites": "Ula yiwen ur yerri tajewwaqt-agi deg yismenyifen-is. Melmi i d-yella waya, ad d-yettwasken da.",
   "empty_column.follow_requests": "Ulac γur-k ula yiwen n usuter n teḍfeṛt. Ticki teṭṭfeḍ-d yiwen ad d-yettwasken da.",
   "empty_column.hashtag": "Ar tura ulac kra n ugbur yesɛan assaγ γer uhacṭag-agi.",
   "empty_column.home": "Tasuddemt tagejdant n yisallen d tilemt! Ẓer {public} neγ nadi ad tafeḍ imseqdacen-nniḍen ad ten-ḍefṛeḍ.",
@@ -159,17 +159,17 @@
   "empty_column.notifications": "Ulac γur-k tilγa. Sedmer akked yemdanen-nniḍen akken ad tebduḍ adiwenni.",
   "empty_column.public": "Ulac kra da! Aru kra, neγ ḍfeṛ imdanen i yellan deg yiqeddacen-nniḍen akken ad d-teččar tsuddemt tazayezt",
   "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
-  "error.unexpected_crash.next_steps": "Smiren asebter-a, ma ur yekkis ara wugur, ẓer d akken tzemreḍ ad tesqedceḍ Masṭudun deg yiminig-nniḍen neγ deg usnas anaṣli.",
+  "error.unexpected_crash.next_steps": "Smiren asebter-a, ma ur yekkis ara wugur, ẓer d akken tzemreḍ ad tesqedceḍ Maṣṭudun deg yiminig-nniḍen neγ deg usnas anaṣli.",
   "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
   "errors.unexpected_crash.report_issue": "Mmel ugur",
   "follow_request.authorize": "Ssireg",
   "follow_request.reject": "Agi",
   "getting_started.developers": "Ineflayen",
-  "getting_started.directory": "Imaγnuten",
+  "getting_started.directory": "Akaram n imaγnuten",
   "getting_started.documentation": "Amnir",
   "getting_started.heading": "Bdu",
   "getting_started.invite": "Snebgi-d imdanen",
-  "getting_started.open_source_notice": "Mastudun d aseγzan s uγbalu yeldin. Tzemreḍ ad tɛiwneḍ neγ ad temmleḍ uguren deg GitHub {github}.",
+  "getting_started.open_source_notice": "Maṣṭudun d aseγzan s uγbalu yeldin. Tzemreḍ ad tɛiwneḍ neγ ad temmleḍ uguren deg GitHub {github}.",
   "getting_started.security": "Iγewwaṛen n umiḍan",
   "getting_started.terms": "Tiwetlin n useqdec",
   "hashtag.column_header.tag_mode.all": "d {additional}",
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Igejdanen",
   "home.column_settings.show_reblogs": "Sken-d beṭṭu",
   "home.column_settings.show_replies": "Sken-d tiririyin",
+  "home.hide_announcements": "Ffer ulγuyen",
+  "home.show_announcements": "Sken-d ulγuyen",
   "intervals.full.days": "{number, plural, one {# n wass} other {# n wussan}}",
   "intervals.full.hours": "{number, plural, one {# n usarag} other {# n yesragen}}",
   "intervals.full.minutes": "{number, plural, one {# n tesdat} other {# n tesdatin}}",
@@ -196,14 +198,14 @@
   "introduction.federation.local.text": "Iznan izuyaz n yemdanen i yellan deg yiwen uqeddac akked kečč ad d-banen deg tsuddemt tazayezt tadigant.",
   "introduction.interactions.action": "Fakk tameskant!",
   "introduction.interactions.favourite.headline": "Ismenyifen",
-  "introduction.interactions.favourite.text": "Tzemreḍ ad teǧǧeḍ kra n tberraḥt i ticki, daγen ad tiniḍ i bab-is d akken taɛǧeb-ik, s tmerna-ines γer yismenyifen-ik.",
+  "introduction.interactions.favourite.text": "Tzemreḍ ad teǧǧeḍ kra n tjewwaqt i ticki, daγen ad tiniḍ i bab-is d akken taɛǧeb-ik, s tmerna-ines γer yismenyifen-ik.",
   "introduction.interactions.reblog.headline": "Bḍu tikelt-nniḍen",
-  "introduction.interactions.reblog.text": "Tzemreḍ ad tebḍuḍ akked yimeḍfaṛen-ik tiberraḥin n yemdanen-nniḍen s beṭṭu-nsent tikelt-nniḍen.",
+  "introduction.interactions.reblog.text": "Tzemreḍ ad tebḍuḍ tijewwaqin n medden akk d yimeḍfaṛen-ik s beṭṭu-nsent tikelt-nniḍen.",
   "introduction.interactions.reply.headline": "Err",
-  "introduction.interactions.reply.text": "Tzemreḍ ad terreḍ γef tberraḥin-ik d tid n medden-nniḍen, d acu ara tent-id-iɛeqden ta deffir ta deg udiwenni.",
+  "introduction.interactions.reply.text": "Tzemreḍ ad terreḍ γef tjewwakin-ik d tid n medden-nniḍen, d acu ara tent-id-iɛeqden ta deffir ta deg yiwen udiwenni.",
   "introduction.welcome.action": "Bdu!",
   "introduction.welcome.headline": "Isurifen imenza",
-  "introduction.welcome.text": "Anṣuf γer fediverse! Deg kra n yimiren, ad tizmireḍ ad tzzuzreḍ iznan neɣ ad tmeslayeḍ i yemddukkal deg waṭas n yiqeddacen. Maca aqeddac-agi, {domain}, mačči am wiyaḍ - deg-s i yella umaγnu-ik, ihi cfu γef yisem-is.",
+  "introduction.welcome.text": "Anṣuf γer fediverse! Deg kra n yimiren, ad tizmireḍ ad tzzuzreḍ iznan neγ ad tmeslayeḍ i yemddukkal deg waṭas n yiqeddacen. Maca aqeddac-agi, {domain}, mačči am wiyaḍ - deg-s i yella umaγnu-ik, ihi cfu γef yisem-is.",
   "keyboard_shortcuts.back": "uγal ar deffir",
   "keyboard_shortcuts.blocked": "akken ad teldiḍ tabdert n yimseqdacen yettwasḥebsen",
   "keyboard_shortcuts.boost": "i beṭṭu tikelt-nniḍen",
@@ -226,7 +228,7 @@
   "keyboard_shortcuts.my_profile": "akken ad d-teldiḍ amaγnu-ik",
   "keyboard_shortcuts.notifications": "akken ad d-teldiḍ ajgu n tilγa",
   "keyboard_shortcuts.open_media": "to open media",
-  "keyboard_shortcuts.pinned": "i tildin n tebdert n tberraḥin yettwasentḍen",
+  "keyboard_shortcuts.pinned": "i tildin n tebdert n tjewwaqin yettwasentḍen",
   "keyboard_shortcuts.profile": "akken ad d-teldiḍ amaγnu n umeskar",
   "keyboard_shortcuts.reply": "i tririt",
   "keyboard_shortcuts.requests": "akken ad d-teldiḍ tabdert n yisuturen n teḍfeṛt",
@@ -234,7 +236,7 @@
   "keyboard_shortcuts.start": "akken ad d-teldiḍ ajgu n \"bdu\"",
   "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
   "keyboard_shortcuts.toggle_sensitivity": "i teskent/tuffra n yimidyaten",
-  "keyboard_shortcuts.toot": "i beddu n tberraḥt tamaynut",
+  "keyboard_shortcuts.toot": "i wakken attebdud tajewwaqt tamaynut",
   "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
   "keyboard_shortcuts.up": "i tulin γer ufella n tebdert",
   "lightbox.close": "Mdel",
@@ -251,7 +253,7 @@
   "lists.search": "Nadi gar yemdanen i teṭṭafaṛeḍ",
   "lists.subheading": "Tibdarin-ik·im",
   "load_pending": "{count, plural, one {# n uferdis amaynut} other {# n yiferdisen imaynuten}}",
-  "loading_indicator.label": "Asali...",
+  "loading_indicator.label": "Yessalay-ed…",
   "media_gallery.toggle_visible": "Sken / Ffer",
   "missing_indicator.label": "Ulac-it",
   "missing_indicator.sublabel": "Ur nufi ara aγbalu-a",
@@ -260,7 +262,7 @@
   "navigation_bar.blocks": "Imseqdacen yettusḥebsen",
   "navigation_bar.bookmarks": "Ticraḍ",
   "navigation_bar.community_timeline": "Tasuddemt tadigant",
-  "navigation_bar.compose": "Aru taberraḥt tamaynut",
+  "navigation_bar.compose": "Aru tajewwiqt tamaynut",
   "navigation_bar.direct": "Iznan usridden",
   "navigation_bar.discover": "Ẓer",
   "navigation_bar.domain_blocks": "Tiγula yeffren",
@@ -275,7 +277,7 @@
   "navigation_bar.logout": "Ffeγ",
   "navigation_bar.mutes": "Iseqdacen yettwasusmen",
   "navigation_bar.personal": "Udmawan",
-  "navigation_bar.pins": "Tiberraḥin yettwasentḍen",
+  "navigation_bar.pins": "Tijewwiqin yettwasentḍen",
   "navigation_bar.preferences": "Imenyafen",
   "navigation_bar.public_timeline": "Tasuddemt tazayezt tamatut",
   "navigation_bar.security": "Taγellist",
@@ -285,7 +287,7 @@
   "notification.mention": "{name} yebder-ik-id",
   "notification.own_poll": "Your poll has ended",
   "notification.poll": "A poll you have voted in has ended",
-  "notification.reblog": "{name} yebḍa taberraḥ-ik i tikelt-nniḍen",
+  "notification.reblog": "{name} yebḍa tajewwiqt-ik i tikelt-nniḍen",
   "notifications.clear": "Sfeḍ tilγa",
   "notifications.clear_confirmation": "Tebγiḍ s tidet ad tekkseḍ akk tilγa-ik i lebda?",
   "notifications.column_settings.alert": "Tilγa n tnarit",
@@ -326,15 +328,16 @@
   "privacy.unlisted.long": "Ur beṭṭu ara deg tsuddemt tazayezt",
   "privacy.unlisted.short": "War tabdert",
   "refresh": "Smiren",
-  "regeneration_indicator.label": "Asali…",
+  "regeneration_indicator.label": "Yessalay-ed…",
   "regeneration_indicator.sublabel": "Tasuddemt tagejdant ara d-tettwaheggay!",
   "relative_time.days": "{number}u",
-  "relative_time.hours": "{number}h",
+  "relative_time.hours": "{number}a",
   "relative_time.just_now": "tura",
   "relative_time.minutes": "{number}t",
-  "relative_time.seconds": "{number}s",
+  "relative_time.seconds": "{number}t",
+  "relative_time.today": "assa",
   "reply_indicator.cancel": "Sefsex",
-  "report.forward": "Forward to {target}",
+  "report.forward": "Bren-it γeṛ {target}",
   "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
   "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:",
   "report.placeholder": "Iwenniten-nniḍen",
@@ -344,13 +347,13 @@
   "search_popout.search_format": "Anadi yenneflin",
   "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
   "search_popout.tips.hashtag": "ahacṭag",
-  "search_popout.tips.status": "status",
+  "search_popout.tips.status": "addad",
   "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
   "search_popout.tips.user": "amseqdac",
   "search_results.accounts": "Medden",
   "search_results.hashtags": "Ihacṭagen",
   "search_results.statuses": "Tibeṛṛaniyin",
-  "search_results.statuses_fts_disabled": "Anadi n tberraḥin s ugbur-nsent ur yermid ara deg uqeddac-agi n Mastudun.",
+  "search_results.statuses_fts_disabled": "Anadi γef tjewwiqin s ugbur-nsent ur yermid ara deg uqeddac-agi n Maṣṭudun.",
   "search_results.total": "{count, number} {count, plural, one {n ugemmuḍ} other {n yigemmuḍen}}",
   "status.admin_account": "Open moderation interface for @{name}",
   "status.admin_status": "Open this status in the moderation interface",
@@ -366,23 +369,23 @@
   "status.favourite": "Rnu γer yismenyifen",
   "status.filtered": "Yettwasizdeg",
   "status.load_more": "Sali ugar",
-  "status.media_hidden": "Media hidden",
+  "status.media_hidden": "Taγwalt tettwaffer",
   "status.mention": "Bder-d @{name}",
   "status.more": "Ugar",
   "status.mute": "Sussem @{name}",
-  "status.mute_conversation": "Mute conversation",
+  "status.mute_conversation": "Sgugem adiwenni",
   "status.open": "Semγeṛ tasuffeγt-agi",
   "status.pin": "Senteḍ-itt deg umaγnu",
-  "status.pinned": "Tiberraḥin yettwasentḍen",
+  "status.pinned": "Tijewwiqin yettwasentḍen",
   "status.read_more": "Issin ugar",
   "status.reblog": "Bḍu",
   "status.reblog_private": "Boost to original audience",
   "status.reblogged_by": "{name} boosted",
-  "status.reblogs.empty": "Ula yiwen ur yebḍi taberraḥt-agi ar tura. Ticki yebḍa-tt yiwen, ad d-iban da.",
-  "status.redraft": "Sfeḍ tɛiwdeḍ tira",
+  "status.reblogs.empty": "Ula yiwen ur yebḍi tajewwiqt-agi ar tura. Ticki yebḍa-tt yiwen, ad d-iban da.",
+  "status.redraft": "Kkes tɛiwdeḍ tira",
   "status.remove_bookmark": "Kkes tacreḍt",
   "status.reply": "Err",
-  "status.replyAll": "Reply to thread",
+  "status.replyAll": "Err i lxiḍ",
   "status.report": "Cetki γef @{name}",
   "status.sensitive_warning": "Agbur amḥulfu",
   "status.share": "Bḍu",
@@ -390,7 +393,7 @@
   "status.show_less_all": "Semẓi akk tisuffγin",
   "status.show_more": "Sken-ed ugar",
   "status.show_more_all": "Ẓerr ugar lebda",
-  "status.show_thread": "Show thread",
+  "status.show_thread": "Sken-ed lxiḍ",
   "status.uncached_media_warning": "Ulac-it",
   "status.unmute_conversation": "Kkes asgugem n udiwenni",
   "status.unpin": "Kkes asenteḍ seg umaγnu",
@@ -408,9 +411,9 @@
   "time_remaining.seconds": "Mazal {number, plural, one {# n tasint} other {# n tsinin}}",
   "trends.count_by_accounts": "{count} {rawCount, plural, one {n umdan} other {n yemdanen}} i yettmeslayen",
   "trends.trending_now": "Trending now",
-  "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
-  "upload_area.title": "Drag & drop to upload",
-  "upload_button.label": "Add media ({formats})",
+  "ui.beforeunload": "Arewway-ik·im ad iruḥ ma yella tefeγ-ed deg Maṣṭudun.",
+  "upload_area.title": "Zuḥeb rnu sers i tasalyt",
+  "upload_button.label": "Rnu Taγwalt ({formats})",
   "upload_error.limit": "File upload limit exceeded.",
   "upload_error.poll": "File upload not allowed with polls.",
   "upload_form.audio_description": "Glem-d i yemdanen i yesɛan ugur deg tmesliwt",
@@ -421,10 +424,10 @@
   "upload_modal.analyzing_picture": "Tasleḍt n tugna tetteddu…",
   "upload_modal.apply": "Snes",
   "upload_modal.description_placeholder": "Aberraγ arurad ineggez nnig n uqjun amuṭṭis",
-  "upload_modal.detect_text": "Detect text from picture",
-  "upload_modal.edit_media": "Edit media",
+  "upload_modal.detect_text": "Sefru-d aḍris seg tugna",
+  "upload_modal.edit_media": "Ẓreg taγwalt",
   "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
-  "upload_modal.preview_label": "Preview ({ratio})",
+  "upload_modal.preview_label": "Taskant ({ratio})",
   "upload_progress.label": "Asali iteddu...",
   "video.close": "Mdel tabidyutt",
   "video.download": "Sidered afaylu",
diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json
index b307a3161..34c702d19 100644
--- a/app/javascript/mastodon/locales/kk.json
+++ b/app/javascript/mastodon/locales/kk.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Негізгі",
   "home.column_settings.show_reblogs": "Бөлісулерді көрсету",
   "home.column_settings.show_replies": "Жауаптарды көрсету",
+  "home.hide_announcements": "Анонстарды жасыр",
+  "home.show_announcements": "Анонстарды көрсет",
   "intervals.full.days": "{number, plural, one {# күн} other {# күн}}",
   "intervals.full.hours": "{number, plural, one {# сағат} other {# сағат}}",
   "intervals.full.minutes": "{number, plural, one {# минут} other {# минут}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "жаңа",
   "relative_time.minutes": "{number}мин",
   "relative_time.seconds": "{number}с",
+  "relative_time.today": "бүгін",
   "reply_indicator.cancel": "Қайтып алу",
   "report.forward": "Жіберу {target}",
   "report.forward_hint": "Бұл аккаунт басқа серверден. Аноним шағым жібересіз бе?",
diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json
index 278f6b14c..5385de456 100644
--- a/app/javascript/mastodon/locales/kn.json
+++ b/app/javascript/mastodon/locales/kn.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Basic",
   "home.column_settings.show_reblogs": "Show boosts",
   "home.column_settings.show_replies": "Show replies",
+  "home.hide_announcements": "Hide announcements",
+  "home.show_announcements": "Show announcements",
   "intervals.full.days": "{number, plural, one {# day} other {# days}}",
   "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "now",
   "relative_time.minutes": "{number}m",
   "relative_time.seconds": "{number}s",
+  "relative_time.today": "today",
   "reply_indicator.cancel": "Cancel",
   "report.forward": "Forward to {target}",
   "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json
index 5a3b409c0..6d6bf2ea2 100644
--- a/app/javascript/mastodon/locales/ko.json
+++ b/app/javascript/mastodon/locales/ko.json
@@ -165,7 +165,7 @@
   "follow_request.authorize": "허가",
   "follow_request.reject": "거부",
   "getting_started.developers": "개발자",
-  "getting_started.directory": "프로필 디렉토리",
+  "getting_started.directory": "프로필 책자",
   "getting_started.documentation": "문서",
   "getting_started.heading": "시작",
   "getting_started.invite": "초대",
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "기본 설정",
   "home.column_settings.show_reblogs": "부스트 표시",
   "home.column_settings.show_replies": "답글 표시",
+  "home.hide_announcements": "공지사항 숨기기",
+  "home.show_announcements": "공지사항 보기",
   "intervals.full.days": "{number} 일",
   "intervals.full.hours": "{number} 시간",
   "intervals.full.minutes": "{number} 분",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "방금",
   "relative_time.minutes": "{number}분 전",
   "relative_time.seconds": "{number}초 전",
+  "relative_time.today": "오늘",
   "reply_indicator.cancel": "취소",
   "report.forward": "{target}에 포워드 됨",
   "report.forward_hint": "이 계정은 다른 서버에 있습니다. 익명화 된 사본을 해당 서버에도 전송할까요?",
diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json
index 278f6b14c..5385de456 100644
--- a/app/javascript/mastodon/locales/lt.json
+++ b/app/javascript/mastodon/locales/lt.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Basic",
   "home.column_settings.show_reblogs": "Show boosts",
   "home.column_settings.show_replies": "Show replies",
+  "home.hide_announcements": "Hide announcements",
+  "home.show_announcements": "Show announcements",
   "intervals.full.days": "{number, plural, one {# day} other {# days}}",
   "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "now",
   "relative_time.minutes": "{number}m",
   "relative_time.seconds": "{number}s",
+  "relative_time.today": "today",
   "reply_indicator.cancel": "Cancel",
   "report.forward": "Forward to {target}",
   "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json
index b2f8fedbf..1b5b7cf5e 100644
--- a/app/javascript/mastodon/locales/lv.json
+++ b/app/javascript/mastodon/locales/lv.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Basic",
   "home.column_settings.show_reblogs": "Show boosts",
   "home.column_settings.show_replies": "Show replies",
+  "home.hide_announcements": "Hide announcements",
+  "home.show_announcements": "Show announcements",
   "intervals.full.days": "{number, plural, one {# day} other {# days}}",
   "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "now",
   "relative_time.minutes": "{number}m",
   "relative_time.seconds": "{number}s",
+  "relative_time.today": "today",
   "reply_indicator.cancel": "Cancel",
   "report.forward": "Forward to {target}",
   "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json
index 90c8d2418..4a1f736cf 100644
--- a/app/javascript/mastodon/locales/mk.json
+++ b/app/javascript/mastodon/locales/mk.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Основно",
   "home.column_settings.show_reblogs": "Прикажи бустирања",
   "home.column_settings.show_replies": "Прикажи одговори",
+  "home.hide_announcements": "Hide announcements",
+  "home.show_announcements": "Show announcements",
   "intervals.full.days": "{number, plural, one {# ден} other {# дена}}",
   "intervals.full.hours": "{number, plural, one {# час} other {# часа}}",
   "intervals.full.minutes": "{number, plural, one {# минута} other {# минути}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "сега",
   "relative_time.minutes": "{number}м",
   "relative_time.seconds": "{number}с",
+  "relative_time.today": "today",
   "reply_indicator.cancel": "Откажи",
   "report.forward": "Проследи до {target}",
   "report.forward_hint": "Оваа сметка е од друг сервер. Испрати анонимна копија од пријавата и таму?",
diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json
index 6a042e8c4..58bb9b723 100644
--- a/app/javascript/mastodon/locales/ml.json
+++ b/app/javascript/mastodon/locales/ml.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "അടിസ്ഥാനം",
   "home.column_settings.show_reblogs": "ബൂസ്റ്റുകൾ കാണിക്കുക",
   "home.column_settings.show_replies": "മറുപടികൾ കാണിക്കുക",
+  "home.hide_announcements": "Hide announcements",
+  "home.show_announcements": "Show announcements",
   "intervals.full.days": "{number, plural, one {# day} other {# days}}",
   "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "now",
   "relative_time.minutes": "{number}m",
   "relative_time.seconds": "{number}s",
+  "relative_time.today": "today",
   "reply_indicator.cancel": "Cancel",
   "report.forward": "Forward to {target}",
   "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json
index f265042f2..8c0fed9b0 100644
--- a/app/javascript/mastodon/locales/mr.json
+++ b/app/javascript/mastodon/locales/mr.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Basic",
   "home.column_settings.show_reblogs": "Show boosts",
   "home.column_settings.show_replies": "Show replies",
+  "home.hide_announcements": "Hide announcements",
+  "home.show_announcements": "Show announcements",
   "intervals.full.days": "{number, plural, one {# day} other {# days}}",
   "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "now",
   "relative_time.minutes": "{number}m",
   "relative_time.seconds": "{number}s",
+  "relative_time.today": "today",
   "reply_indicator.cancel": "Cancel",
   "report.forward": "Forward to {target}",
   "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json
index 3bd6e145e..0d23e0d2c 100644
--- a/app/javascript/mastodon/locales/ms.json
+++ b/app/javascript/mastodon/locales/ms.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Basic",
   "home.column_settings.show_reblogs": "Show boosts",
   "home.column_settings.show_replies": "Show replies",
+  "home.hide_announcements": "Hide announcements",
+  "home.show_announcements": "Show announcements",
   "intervals.full.days": "{number, plural, one {# day} other {# days}}",
   "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "now",
   "relative_time.minutes": "{number}m",
   "relative_time.seconds": "{number}s",
+  "relative_time.today": "today",
   "reply_indicator.cancel": "Cancel",
   "report.forward": "Forward to {target}",
   "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json
index d570f3612..5048a3a49 100644
--- a/app/javascript/mastodon/locales/nl.json
+++ b/app/javascript/mastodon/locales/nl.json
@@ -1,7 +1,7 @@
 {
   "account.add_or_remove_from_list": "Toevoegen of verwijderen vanuit lijsten",
   "account.badges.bot": "Bot",
-  "account.badges.group": "Group",
+  "account.badges.group": "Groep",
   "account.block": "Blokkeer @{name}",
   "account.block_domain": "Verberg alles van {domain}",
   "account.blocked": "Geblokkeerd",
@@ -43,7 +43,7 @@
   "alert.rate_limited.title": "Beperkt te gebruiken",
   "alert.unexpected.message": "Er deed zich een onverwachte fout voor",
   "alert.unexpected.title": "Oeps!",
-  "announcement.announcement": "Announcement",
+  "announcement.announcement": "Mededeling",
   "autosuggest_hashtag.per_week": "{count} per week",
   "boost_modal.combo": "Je kunt {combo} klikken om dit de volgende keer over te slaan",
   "bundle_column_error.body": "Tijdens het laden van dit onderdeel is er iets fout gegaan.",
@@ -75,7 +75,7 @@
   "column_header.unpin": "Losmaken",
   "column_subheading.settings": "Instellingen",
   "community.column_settings.media_only": "Alleen media",
-  "compose_form.direct_message_warning": "Deze toot wordt alleen naar vermelde gebruikers verstuurd. Echter, de beheerders en moderatoren van jouw en de ontvangende Mastodonserver(s) kunnen dit bericht mogelijk wel bekijken.",
+  "compose_form.direct_message_warning": "Deze toot wordt alleen naar vermelde gebruikers verstuurd. Echter, de beheerders en moderatoren van jouw en de ontvangende server(s) kunnen dit bericht mogelijk wel bekijken.",
   "compose_form.direct_message_warning_learn_more": "Meer leren",
   "compose_form.hashtag_warning": "Deze toot valt niet onder een hashtag te bekijken, omdat deze niet op openbare tijdlijnen wordt getoond. Alleen openbare toots kunnen via hashtags gevonden worden.",
   "compose_form.lock_disclaimer": "Jouw account is niet {locked}. Iedereen kan jou volgen en kan de toots zien die je alleen aan jouw volgers hebt gericht.",
@@ -85,8 +85,8 @@
   "compose_form.poll.duration": "Duur van de poll",
   "compose_form.poll.option_placeholder": "Keuze {number}",
   "compose_form.poll.remove_option": "Deze keuze verwijderen",
-  "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": "Poll wijzigen om meerdere keuzes toe te staan",
+  "compose_form.poll.switch_to_single": "Poll wijzigen om een enkele keuze toe te staan",
   "compose_form.publish": "Toot",
   "compose_form.publish_loud": "{publish}!",
   "compose_form.sensitive.hide": "Media als gevoelig markeren",
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Algemeen",
   "home.column_settings.show_reblogs": "Boosts tonen",
   "home.column_settings.show_replies": "Reacties tonen",
+  "home.hide_announcements": "Mededelingen verbergen",
+  "home.show_announcements": "Mededelingen tonen",
   "intervals.full.days": "{number, plural, one {# dag} other {# dagen}}",
   "intervals.full.hours": "{number, plural, one {# uur} other {# uur}}",
   "intervals.full.minutes": "{number, plural, one {# minuut} other {# minuten}}",
@@ -333,10 +335,11 @@
   "relative_time.just_now": "nu",
   "relative_time.minutes": "{number}m",
   "relative_time.seconds": "{number}s",
+  "relative_time.today": "vandaag",
   "reply_indicator.cancel": "Annuleren",
   "report.forward": "Doorsturen naar {target}",
   "report.forward_hint": "Het account bevindt zich op een andere server. Stuur daar eveneens een geanonimiseerde kopie van de rapportage naartoe?",
-  "report.hint": "De rapportage wordt naar de moderatoren van jouw server gestuurd. Je kunt hieronder een uitleg geven waarom je dit account rapporteert:",
+  "report.hint": "De rapportage wordt naar de moderator(en) van jouw server gestuurd. Je kunt hieronder een uitleg geven waarom je dit account rapporteert:",
   "report.placeholder": "Extra opmerkingen",
   "report.submit": "Verzenden",
   "report.target": "Rapporteer {target}",
diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json
index c04b30e04..9dd48767d 100644
--- a/app/javascript/mastodon/locales/nn.json
+++ b/app/javascript/mastodon/locales/nn.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Enkelt",
   "home.column_settings.show_reblogs": "Vis framhevingar",
   "home.column_settings.show_replies": "Vis svar",
+  "home.hide_announcements": "Skjul kunngjøring",
+  "home.show_announcements": "Vis kunngjøring",
   "intervals.full.days": "{number, plural, one {# dag} other {# dagar}}",
   "intervals.full.hours": "{number, plural, one {# time} other {# timar}}",
   "intervals.full.minutes": "{number, plural, one {# minutt} other {# minutt}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "nå",
   "relative_time.minutes": "{number}min",
   "relative_time.seconds": "{number}sek",
+  "relative_time.today": "i dag",
   "reply_indicator.cancel": "Avbryt",
   "report.forward": "Vidaresend til {target}",
   "report.forward_hint": "Kontoen er frå ein annan tenar. Vil du senda ein anonymisert kopi av rapporten dit òg?",
diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json
index 215cdb150..38cff4c91 100644
--- a/app/javascript/mastodon/locales/no.json
+++ b/app/javascript/mastodon/locales/no.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Enkelt",
   "home.column_settings.show_reblogs": "Vis fremhevinger",
   "home.column_settings.show_replies": "Vis svar",
+  "home.hide_announcements": "Skjul kunngjøring",
+  "home.show_announcements": "Vis kunngjøring",
   "intervals.full.days": "{number, plural,one {# dag} other {# dager}}",
   "intervals.full.hours": "{number, plural, one {# time} other {# timer}}",
   "intervals.full.minutes": "{number, plural, one {# minutt} other {# minutter}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "nå",
   "relative_time.minutes": "{number}m",
   "relative_time.seconds": "{number}s",
+  "relative_time.today": "i dag",
   "reply_indicator.cancel": "Avbryt",
   "report.forward": "Videresend til {target}",
   "report.forward_hint": "Denne kontoen er fra en annen tjener. Vil du sende en anonymisert kopi av rapporten dit også?",
diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json
index b7701c17e..1be047755 100644
--- a/app/javascript/mastodon/locales/oc.json
+++ b/app/javascript/mastodon/locales/oc.json
@@ -1,7 +1,7 @@
 {
   "account.add_or_remove_from_list": "Ajustar o tirar de las listas",
   "account.badges.bot": "Robòt",
-  "account.badges.group": "Group",
+  "account.badges.group": "Grop",
   "account.block": "Blocar @{name}",
   "account.block_domain": "Tot amagar del domeni {domain}",
   "account.blocked": "Blocat",
@@ -43,7 +43,7 @@
   "alert.rate_limited.title": "Taus limitat",
   "alert.unexpected.message": "Una error s’es producha.",
   "alert.unexpected.title": "Ops !",
-  "announcement.announcement": "Announcement",
+  "announcement.announcement": "Anóncia",
   "autosuggest_hashtag.per_week": "{count} per setmana",
   "boost_modal.combo": "Podètz botar {combo} per passar aquò lo còp que ven",
   "bundle_column_error.body": "Quicòm a fach mèuca pendent lo cargament d’aqueste compausant.",
@@ -85,8 +85,8 @@
   "compose_form.poll.duration": "Durada del sondatge",
   "compose_form.poll.option_placeholder": "Opcion {number}",
   "compose_form.poll.remove_option": "Levar aquesta opcion",
-  "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": "Cambiar lo sondatge per permetre de causidas multiplas",
+  "compose_form.poll.switch_to_single": "Cambiar lo sondatge per permetre una sola causida",
   "compose_form.publish": "Tut",
   "compose_form.publish_loud": "{publish} !",
   "compose_form.sensitive.hide": "Marcar coma sensible",
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Basic",
   "home.column_settings.show_reblogs": "Mostrar los partatges",
   "home.column_settings.show_replies": "Mostrar las responsas",
+  "home.hide_announcements": "Rescondre las anóncias",
+  "home.show_announcements": "Mostrar las anóncias",
   "intervals.full.days": "{number, plural, one {# jorn} other {# jorns}}",
   "intervals.full.hours": "{number, plural, one {# ora} other {# oras}}",
   "intervals.full.minutes": "{number, plural, one {# minuta} other {# minutas}}",
@@ -281,7 +283,7 @@
   "navigation_bar.security": "Seguretat",
   "notification.favourite": "{name} a ajustat a sos favorits",
   "notification.follow": "{name} vos sèc",
-  "notification.follow_request": "{name} has requested to follow you",
+  "notification.follow_request": "{name} a demandat a vos sègre",
   "notification.mention": "{name} vos a mencionat",
   "notification.own_poll": "Vòstre sondatge es acabat",
   "notification.poll": "Avètz participat a un sondatge que ven de s’acabar",
@@ -294,7 +296,7 @@
   "notifications.column_settings.filter_bar.category": "Barra de recèrca rapida",
   "notifications.column_settings.filter_bar.show": "Mostrar",
   "notifications.column_settings.follow": "Nòus seguidors :",
-  "notifications.column_settings.follow_request": "New follow requests:",
+  "notifications.column_settings.follow_request": "Novèla demanda d’abonament :",
   "notifications.column_settings.mention": "Mencions :",
   "notifications.column_settings.poll": "Resultats del sondatge :",
   "notifications.column_settings.push": "Notificacions",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "ara",
   "relative_time.minutes": "fa {number} min",
   "relative_time.seconds": "fa {number}s",
+  "relative_time.today": "uèi",
   "reply_indicator.cancel": "Anullar",
   "report.forward": "Far sègre a {target}",
   "report.forward_hint": "Lo compte ven d’un autre servidor. Volètz mandar una còpia anonima del rapòrt enlai tanben ?",
@@ -413,11 +416,11 @@
   "upload_button.label": "Ajustar un mèdia (JPEG, PNG, GIF, WebM, MP4, MOV)",
   "upload_error.limit": "Talha maximum pels mandadís subrepassada.",
   "upload_error.poll": "Lo mandadís de fichièr es pas autorizat pels sondatges.",
-  "upload_form.audio_description": "Describe for people with hearing loss",
+  "upload_form.audio_description": "Descriure per las personas amb pèrdas auditivas",
   "upload_form.description": "Descripcion pels mal vesents",
   "upload_form.edit": "Modificar",
   "upload_form.undo": "Suprimir",
-  "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
+  "upload_form.video_description": "Descriure per las personas amb pèrdas auditivas o mal vesent",
   "upload_modal.analyzing_picture": "Analisi de l’imatge…",
   "upload_modal.apply": "Aplicar",
   "upload_modal.description_placeholder": "Lo dròlle bilingüe manja un yaourt de ròcs exagonals e kiwis verds farà un an mai",
diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json
index 3874f1596..9d9eaa769 100644
--- a/app/javascript/mastodon/locales/pl.json
+++ b/app/javascript/mastodon/locales/pl.json
@@ -1,7 +1,7 @@
 {
   "account.add_or_remove_from_list": "Dodaj lub usuń z list",
   "account.badges.bot": "Bot",
-  "account.badges.group": "Group",
+  "account.badges.group": "Grupa",
   "account.block": "Blokuj @{name}",
   "account.block_domain": "Blokuj wszystko z {domain}",
   "account.blocked": "Zablokowany(-a)",
@@ -43,7 +43,7 @@
   "alert.rate_limited.title": "Ograniczony czasowo",
   "alert.unexpected.message": "Wystąpił nieoczekiwany błąd.",
   "alert.unexpected.title": "O nie!",
-  "announcement.announcement": "Announcement",
+  "announcement.announcement": "Ogłoszenie",
   "autosuggest_hashtag.per_week": "{count} co tydzień",
   "boost_modal.combo": "Naciśnij {combo}, aby pominąć to następnym razem",
   "bundle_column_error.body": "Coś poszło nie tak podczas ładowania tego składnika.",
@@ -89,8 +89,8 @@
   "compose_form.poll.duration": "Czas trwania głosowania",
   "compose_form.poll.option_placeholder": "Opcja {number}",
   "compose_form.poll.remove_option": "Usuń tę opcję",
-  "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": "Pozwól na wybranie wielu opcji",
+  "compose_form.poll.switch_to_single": "Pozwól na wybranie tylko jednej opcji",
   "compose_form.publish": "Wyślij",
   "compose_form.publish_loud": "{publish}!",
   "compose_form.sensitive.hide": "Oznacz multimedia jako wrażliwe",
@@ -188,6 +188,8 @@
   "home.column_settings.basic": "Podstawowe",
   "home.column_settings.show_reblogs": "Pokazuj podbicia",
   "home.column_settings.show_replies": "Pokazuj odpowiedzi",
+  "home.hide_announcements": "Ukryj ogłoszenia",
+  "home.show_announcements": "Pokaż ogłoszenia",
   "intervals.full.days": "{number, plural, one {# dzień} few {# dni} many {# dni} other {# dni}}",
   "intervals.full.hours": "{number, plural, one {# godzina} few {# godziny} many {# godzin} other {# godzin}}",
   "intervals.full.minutes": "{number, plural, one {# minuta} few {# minuty} many {# minut} other {# minut}}",
@@ -338,6 +340,7 @@
   "relative_time.just_now": "teraz",
   "relative_time.minutes": "{number} min.",
   "relative_time.seconds": "{number} s.",
+  "relative_time.today": "dzisiaj",
   "reply_indicator.cancel": "Anuluj",
   "report.forward": "Przekaż na {target}",
   "report.forward_hint": "To konto znajduje się na innej instancji. Czy chcesz wysłać anonimową kopię zgłoszenia rnież na nią?",
@@ -418,11 +421,11 @@
   "upload_button.label": "Dodaj zawartość multimedialną (JPEG, PNG, GIF, WebM, MP4, MOV)",
   "upload_error.limit": "Przekroczono limit plików do wysłania.",
   "upload_error.poll": "Dołączanie plików nie dozwolone z głosowaniami.",
-  "upload_form.audio_description": "Describe for people with hearing loss",
+  "upload_form.audio_description": "Opisz dla osób niesłyszących i niedosłyszących",
   "upload_form.description": "Wprowadź opis dla niewidomych i niedowidzących",
   "upload_form.edit": "Edytuj",
   "upload_form.undo": "Usuń",
-  "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
+  "upload_form.video_description": "Opisz dla osób niesłyszących, niedosłyszących, niewidomych i niedowidzących",
   "upload_modal.analyzing_picture": "Analizowanie obrazu…",
   "upload_modal.apply": "Zastosuj",
   "upload_modal.description_placeholder": "Pchnąć w tę łódź jeża lub ośm skrzyń fig",
diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json
index f78c327fb..024bbb9df 100644
--- a/app/javascript/mastodon/locales/pt-BR.json
+++ b/app/javascript/mastodon/locales/pt-BR.json
@@ -43,7 +43,7 @@
   "alert.rate_limited.title": "Tentativas limitadas",
   "alert.unexpected.message": "Ocorreu um erro inesperado.",
   "alert.unexpected.title": "Eita!",
-  "announcement.announcement": "Announcement",
+  "announcement.announcement": "Anúncio",
   "autosuggest_hashtag.per_week": "{count} por semana",
   "boost_modal.combo": "Pressione {combo} para ignorar este diálogo na próxima vez",
   "bundle_column_error.body": "Ocorreu um problema ao carregar este componente.",
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Básico",
   "home.column_settings.show_reblogs": "Mostrar boosts",
   "home.column_settings.show_replies": "Mostrar respostas",
+  "home.hide_announcements": "Ocultar anúncios",
+  "home.show_announcements": "Exibir anúncios",
   "intervals.full.days": "{number, plural, one {# dia} other {# dias}}",
   "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}",
   "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "agora",
   "relative_time.minutes": "{number}m",
   "relative_time.seconds": "{number}s",
+  "relative_time.today": "hoje",
   "reply_indicator.cancel": "Cancelar",
   "report.forward": "Enviar cópia para {target}",
   "report.forward_hint": "A conta está em outra instância. Enviar uma cópia anônima da denúncia para lá?",
diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json
index b2fb2a012..34acbfc9a 100644
--- a/app/javascript/mastodon/locales/pt-PT.json
+++ b/app/javascript/mastodon/locales/pt-PT.json
@@ -43,7 +43,7 @@
   "alert.rate_limited.title": "Limite de tentativas",
   "alert.unexpected.message": "Ocorreu um erro inesperado.",
   "alert.unexpected.title": "Bolas!",
-  "announcement.announcement": "Announcement",
+  "announcement.announcement": "Anúncio",
   "autosuggest_hashtag.per_week": "{count} por semana",
   "boost_modal.combo": "Pode clicar {combo} para não voltar a ver",
   "bundle_column_error.body": "Algo de errado aconteceu enquanto este componente era carregado.",
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Básico",
   "home.column_settings.show_reblogs": "Mostrar boosts",
   "home.column_settings.show_replies": "Mostrar respostas",
+  "home.hide_announcements": "Ocultar anúncios",
+  "home.show_announcements": "Exibir anúncios",
   "intervals.full.days": "{number, plural, one {# dia} other {# dias}}",
   "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}",
   "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "agora",
   "relative_time.minutes": "{number}m",
   "relative_time.seconds": "{number}s",
+  "relative_time.today": "hoje",
   "reply_indicator.cancel": "Cancelar",
   "report.forward": "Reenviar para {target}",
   "report.forward_hint": "A conta é de outro servidor. Enviar uma cópia anónima do relatório para lá também?",
diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json
index 4d01ad3a5..e32c308f6 100644
--- a/app/javascript/mastodon/locales/ro.json
+++ b/app/javascript/mastodon/locales/ro.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "De bază",
   "home.column_settings.show_reblogs": "Arată redistribuirile",
   "home.column_settings.show_replies": "Arată răspunsurile",
+  "home.hide_announcements": "Hide announcements",
+  "home.show_announcements": "Show announcements",
   "intervals.full.days": "{number, plural, one {# day} other {# days}}",
   "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "acum",
   "relative_time.minutes": "{number}m",
   "relative_time.seconds": "{number}s",
+  "relative_time.today": "today",
   "reply_indicator.cancel": "Anulează",
   "report.forward": "Redirecționează catre {target}",
   "report.forward_hint": "Acest cont este de pe un alt server. Trimitem o copie anonimă a raportului și acolo?",
diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json
index 6e63a418c..f805215c1 100644
--- a/app/javascript/mastodon/locales/ru.json
+++ b/app/javascript/mastodon/locales/ru.json
@@ -74,7 +74,7 @@
   "column_header.show_settings": "Показать настройки",
   "column_header.unpin": "Открепить",
   "column_subheading.settings": "Настройки",
-  "community.column_settings.media_only": "Только с медиа",
+  "community.column_settings.media_only": "Только с медиафайлами",
   "compose_form.direct_message_warning": "Адресованные посты отправляются и видны только упомянутым в них пользователям.",
   "compose_form.direct_message_warning_learn_more": "Узнать подробнее",
   "compose_form.hashtag_warning": "Так как этот пост не публичный, он не отобразится в поиске по хэштегам.",
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Основные",
   "home.column_settings.show_reblogs": "Показывать продвижения",
   "home.column_settings.show_replies": "Показывать ответы",
+  "home.hide_announcements": "Скрыть объявления",
+  "home.show_announcements": "Показать объявления",
   "intervals.full.days": "{number, plural, one {# день} few {# дня} other {# дней}}",
   "intervals.full.hours": "{number, plural, one {# час} few {# часа} other {# часов}}",
   "intervals.full.minutes": "{number, plural, one {# минута} few {# минуты} other {# минут}}",
@@ -301,7 +303,7 @@
   "notifications.column_settings.reblog": "Ваш пост продвинули:",
   "notifications.column_settings.show": "Отображать в списке",
   "notifications.column_settings.sound": "Проигрывать звук",
-  "notifications.filter.all": "Всё",
+  "notifications.filter.all": "Все",
   "notifications.filter.boosts": "Продвижения",
   "notifications.filter.favourites": "Отметки «избранного»",
   "notifications.filter.follows": "Подписки",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "только что",
   "relative_time.minutes": "{number} мин",
   "relative_time.seconds": "{number} с",
+  "relative_time.today": "сегодня",
   "reply_indicator.cancel": "Отмена",
   "report.forward": "Переслать в {target}",
   "report.forward_hint": "Эта учётная запись расположена на другом узле. Отправить туда анонимную копию вашей жалобы?",
diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json
index 976dc572e..ad4407e9d 100644
--- a/app/javascript/mastodon/locales/sk.json
+++ b/app/javascript/mastodon/locales/sk.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Základné",
   "home.column_settings.show_reblogs": "Ukáž vyzdvihnuté",
   "home.column_settings.show_replies": "Ukáž odpovede",
+  "home.hide_announcements": "Skry oboznámenia",
+  "home.show_announcements": "Ukáž oboznámenia",
   "intervals.full.days": "{number, plural, one {# deň} few {# dní} many {# dní} other {# dní}}",
   "intervals.full.hours": "{number, plural, one {# hodina} few {# hodín} many {# hodín} other {# hodín}}",
   "intervals.full.minutes": "{number, plural, one {# minúta} few {# minút} many {# minút} other {# minút}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "teraz",
   "relative_time.minutes": "{number}min",
   "relative_time.seconds": "{number}sek",
+  "relative_time.today": "dnes",
   "reply_indicator.cancel": "Zrušiť",
   "report.forward": "Posuň ku {target}",
   "report.forward_hint": "Tento účet je z iného serveru. Chceš poslať anonymnú kópiu hlásenia aj tam?",
diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json
index bcf3b8d1a..dedd4e007 100644
--- a/app/javascript/mastodon/locales/sl.json
+++ b/app/javascript/mastodon/locales/sl.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Osnovno",
   "home.column_settings.show_reblogs": "Pokaži spodbude",
   "home.column_settings.show_replies": "Pokaži odgovore",
+  "home.hide_announcements": "Hide announcements",
+  "home.show_announcements": "Show announcements",
   "intervals.full.days": "{number, plural, one {# dan} two {# dni} few {# dni} other {# dni}}",
   "intervals.full.hours": "{number, plural, one {# ura} two {# uri} few {# ure} other {# ur}}",
   "intervals.full.minutes": "{number, plural, one {# minuta} two {# minuti} few {# minute} other {# minut}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "zdaj",
   "relative_time.minutes": "{number}m",
   "relative_time.seconds": "{number}s",
+  "relative_time.today": "today",
   "reply_indicator.cancel": "Prekliči",
   "report.forward": "Posreduj do {target}",
   "report.forward_hint": "Račun je iz drugega strežnika. Pošljem anonimno kopijo poročila tudi na drugi strežnik?",
diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json
index 617c3aee3..2d1f1c64d 100644
--- a/app/javascript/mastodon/locales/sq.json
+++ b/app/javascript/mastodon/locales/sq.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Bazë",
   "home.column_settings.show_reblogs": "Shfaq përforcime",
   "home.column_settings.show_replies": "Shfaq përgjigje",
+  "home.hide_announcements": "Hide announcements",
+  "home.show_announcements": "Show announcements",
   "intervals.full.days": "{number, plural, one {# day} other {# days}}",
   "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "tani",
   "relative_time.minutes": "{number}m",
   "relative_time.seconds": "{number}s",
+  "relative_time.today": "today",
   "reply_indicator.cancel": "Anuloje",
   "report.forward": "Përcillja {target}",
   "report.forward_hint": "Llogaria është nga një shërbyes tjetër. Të dërgohet edhe një kopje e anonimizuar e raportimit?",
diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json
index 09b30ff5f..ddeca47a6 100644
--- a/app/javascript/mastodon/locales/sr-Latn.json
+++ b/app/javascript/mastodon/locales/sr-Latn.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Osnovno",
   "home.column_settings.show_reblogs": "Prikaži i podržavanja",
   "home.column_settings.show_replies": "Prikaži odgovore",
+  "home.hide_announcements": "Hide announcements",
+  "home.show_announcements": "Show announcements",
   "intervals.full.days": "{number, plural, one {# day} other {# days}}",
   "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "sada",
   "relative_time.minutes": "{number}m",
   "relative_time.seconds": "{number}s",
+  "relative_time.today": "today",
   "reply_indicator.cancel": "Poništi",
   "report.forward": "Forward to {target}",
   "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json
index 5b04f9826..fbe48bf2e 100644
--- a/app/javascript/mastodon/locales/sr.json
+++ b/app/javascript/mastodon/locales/sr.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Основно",
   "home.column_settings.show_reblogs": "Прикажи и подржавања",
   "home.column_settings.show_replies": "Прикажи одговоре",
+  "home.hide_announcements": "Hide announcements",
+  "home.show_announcements": "Show announcements",
   "intervals.full.days": "{number, plural, one {# day} other {# days}}",
   "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "сада",
   "relative_time.minutes": "{number}m",
   "relative_time.seconds": "{number}s",
+  "relative_time.today": "today",
   "reply_indicator.cancel": "Поништи",
   "report.forward": "Проследити {target}",
   "report.forward_hint": "Налог је са другог сервера. Послати анонимну копију пријаве и тамо?",
diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json
index 4e778a481..29b8b023e 100644
--- a/app/javascript/mastodon/locales/sv.json
+++ b/app/javascript/mastodon/locales/sv.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Grundläggande",
   "home.column_settings.show_reblogs": "Visa knuffar",
   "home.column_settings.show_replies": "Visa svar",
+  "home.hide_announcements": "Hide announcements",
+  "home.show_announcements": "Show announcements",
   "intervals.full.days": "{number, plural, one {# dag} other {# dagar}}",
   "intervals.full.hours": "{number, plural, one {# timme} other {# timmar}}",
   "intervals.full.minutes": "{number, plural, one {# minut} other {# minuter}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "nu",
   "relative_time.minutes": "{number}min",
   "relative_time.seconds": "{number}sek",
+  "relative_time.today": "today",
   "reply_indicator.cancel": "Ångra",
   "report.forward": "Vidarebefordra till {target}",
   "report.forward_hint": "Kontot är från en annan server. Skicka även en anonymiserad kopia av anmälan dit?",
diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json
index 8d1a8f14d..003dfaf3b 100644
--- a/app/javascript/mastodon/locales/ta.json
+++ b/app/javascript/mastodon/locales/ta.json
@@ -40,20 +40,20 @@
   "account.unmute": "@{name} இன் மீது மௌனத் தடையை நீக்குக",
   "account.unmute_notifications": "@{name} இலிருந்து அறிவிப்புகளின் மீது மௌனத் தடையை நீக்குக",
   "alert.rate_limited.message": "{retry_time, time, medium} க்கு பிறகு மீண்டும் முயற்சிக்கவும்.",
-  "alert.rate_limited.title": "விகிதம் வரையறுக்கப்பட்டுள்ளது",
+  "alert.rate_limited.title": "பயன்பாடு கட்டுப்படுத்தப்பட்டுள்ளது",
   "alert.unexpected.message": "எதிர்பாராத பிழை ஏற்பட்டுவிட்டது.",
   "alert.unexpected.title": "அச்சச்சோ!",
-  "announcement.announcement": "Announcement",
+  "announcement.announcement": "அறிவிப்பு",
   "autosuggest_hashtag.per_week": "ஒவ்வொரு வாரம் {count}",
   "boost_modal.combo": "நீங்கள் இதை அடுத்தமுறை தவிர்க்க {combo} வை அழுத்தவும்",
   "bundle_column_error.body": "இக்கூற்றை ஏற்றம் செய்யும்பொழுது ஏதோ தவறு ஏற்பட்டுள்ளது.",
-  "bundle_column_error.retry": "மீண்டும் முயல்க",
+  "bundle_column_error.retry": "மீண்டும் முயற்சிக்கவும்",
   "bundle_column_error.title": "பிணையப் பிழை",
   "bundle_modal_error.close": "மூடுக",
   "bundle_modal_error.message": "இக்கூற்றை ஏற்றம் செய்யும்பொழுது ஏதோ தவறு ஏற்பட்டுள்ளது.",
   "bundle_modal_error.retry": "மீண்டும் முயற்சி செய்",
   "column.blocks": "தடுக்கப்பட்ட பயனர்கள்",
-  "column.bookmarks": "Bookmarks",
+  "column.bookmarks": "அடையாளக்குறிகள்",
   "column.community": "சுய நிகழ்வு காலவரிசை",
   "column.direct": "நேர் சேதிகள்",
   "column.directory": "சுயவிவரங்களை உலாவு",
@@ -64,71 +64,71 @@
   "column.lists": "பட்டியல்கள்",
   "column.mutes": "மௌனத் தடை செய்யப்பட்ட பயனர்கள்",
   "column.notifications": "அறிவிப்புகள்",
-  "column.pins": "Pinned toot",
-  "column.public": "கூட்டாட்சி காலக்கெடு",
-  "column_back_button.label": "முந்தைய பக்கம்",
+  "column.pins": "பொருத்தப்பட்ட டூட்டுகள்",
+  "column.public": "ஆலமரத்தில் நிகழ்பவை",
+  "column_back_button.label": "திரும்பு",
   "column_header.hide_settings": "அமைப்புகளை மறை",
-  "column_header.moveLeft_settings": "நெடுவரிசையை இடதுபுறமாக நகர்த்தவும்",
-  "column_header.moveRight_settings": "நெடுவரிசை வலது புறமாக நகர்த்து",
-  "column_header.pin": "குண்டூசி",
+  "column_header.moveLeft_settings": "நெடுவரிசையை இடதுபுறமாக நகர்த்து",
+  "column_header.moveRight_settings": "நெடுவரிசையை வலதுபுறமாக நகர்த்து",
+  "column_header.pin": "பொருத்து",
   "column_header.show_settings": "அமைப்புகளைக் காட்டு",
-  "column_header.unpin": "பொருத்தப்படாத",
+  "column_header.unpin": "கழட்டு",
   "column_subheading.settings": "அமைப்புகள்",
   "community.column_settings.media_only": "படங்கள் மட்டுமே",
-  "compose_form.direct_message_warning": "This toot will only be sent to all the mentioned users.",
-  "compose_form.direct_message_warning_learn_more": "மேலும் அறிக",
-  "compose_form.hashtag_warning": "இந்த toot பட்டியலிடப்படாதது போல எந்த ஹேஸ்டேக்கின் கீழ் பட்டியலிடப்படாது. ஹேஸ்டேக் மூலம் பொது டோட்டல்கள் மட்டுமே தேட முடியும்.",
-  "compose_form.lock_disclaimer": "உங்கள் கணக்கு அல்ல {locked}. உங்களுடைய பின்தொடர்பவர் மட்டும் இடுகைகளை யாராவது காணலாம்.",
-  "compose_form.lock_disclaimer.lock": "தாழிடு",
-  "compose_form.placeholder": "What is on your mind?",
-  "compose_form.poll.add_option": "ஒரு விருப்பத்தைச் சேர்க்கவும்",
-  "compose_form.poll.duration": "வாக்கெடுப்பு காலம்",
-  "compose_form.poll.option_placeholder": "தேர்ந்தெடுப்ப {number}",
-  "compose_form.poll.remove_option": "இந்த விருப்பத்தை அகற்றவும்",
-  "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.publish": "டூட் செய்க",
+  "compose_form.direct_message_warning": "இந்த டூட் இதில் குறிப்பிடப்பட்டுள்ள பயனர்களுக்கு மட்டுமே அனுப்பப்படும்.",
+  "compose_form.direct_message_warning_learn_more": "மேலும் அறிய",
+  "compose_form.hashtag_warning": "இது ஒரு பட்டியலிடப்படாத டூட் என்பதால் எந்த ஹேஷ்டேகின் கீழும் வராது. ஹேஷ்டேகின் மூலம் பொதுவில் உள்ள டூட்டுகளை மட்டுமே தேட முடியும்.",
+  "compose_form.lock_disclaimer": "உங்கள் கணக்கு {locked} செய்யப்படவில்லை. உங்கள் பதிவுகளை யார் வேண்டுமானாலும் பின்தொடர்ந்து காணலாம்.",
+  "compose_form.lock_disclaimer.lock": "பூட்டப்பட்டது",
+  "compose_form.placeholder": "உங்கள் மனதில் என்ன இருக்கிறது?",
+  "compose_form.poll.add_option": "தேர்வை சேர்",
+  "compose_form.poll.duration": "கருத்துக்கணிப்பின் கால அளவு",
+  "compose_form.poll.option_placeholder": "தேர்வு எண் {number}",
+  "compose_form.poll.remove_option": "இந்தத் தேர்வை அகற்று",
+  "compose_form.poll.switch_to_multiple": "பல தேர்வுகளை அனுமதிக்குமாறு மாற்று",
+  "compose_form.poll.switch_to_single": "ஒரே ஒரு தேர்வை மட்டும் அனுமதிக்குமாறு மாற்று",
+  "compose_form.publish": "டூட்",
   "compose_form.publish_loud": "{publish}!",
-  "compose_form.sensitive.hide": "அனைவருக்கும் ஏற்ற ஊடகம் இல்லை எனக் குறியிடுக",
-  "compose_form.sensitive.marked": "ஊடகம் உணர்திறன் என குறிக்கப்பட்டுள்ளது",
-  "compose_form.sensitive.unmarked": "ஊடகம் உணர்திறன் என குறிக்கப்படவில்லை",
-  "compose_form.spoiler.marked": "எச்சரிக்கை பின்னால் உரை மறைக்கப்பட்டுள்ளது",
-  "compose_form.spoiler.unmarked": "உரை மறைக்கப்படவில்லை",
-  "compose_form.spoiler_placeholder": "இங்கே உங்கள் எச்சரிக்கையை எழுதுங்கள்",
-  "confirmation_modal.cancel": "எதிராணை",
+  "compose_form.sensitive.hide": "அனைவருக்கும் ஏற்றப் படம் இல்லை எனக் குறியிடு",
+  "compose_form.sensitive.marked": "இப்படம் அனைவருக்கும் ஏற்றதல்ல எனக் குறியிடப்பட்டுள்ளது",
+  "compose_form.sensitive.unmarked": "இப்படம் அனைவருக்கும் ஏற்றதல்ல எனக் குறியிடப்படவில்லை",
+  "compose_form.spoiler.marked": "எச்சரிக்கையின் பின்னால் பதிவு மறைக்கப்பட்டுள்ளது",
+  "compose_form.spoiler.unmarked": "பதிவு மறைக்கப்படவில்லை",
+  "compose_form.spoiler_placeholder": "உங்கள் எச்சரிக்கையை இங்கு எழுதவும்",
+  "confirmation_modal.cancel": "ரத்து",
   "confirmations.block.block_and_report": "தடுத்துப் புகாரளி",
   "confirmations.block.confirm": "தடு",
-  "confirmations.block.message": "நீங்கள் நிச்சயமாக தடைசெய்ய விரும்புகிறீர்களா {name}?",
-  "confirmations.delete.confirm": "அழி",
-  "confirmations.delete.message": "இந்த நிலையை நிச்சயமாக நீக்க விரும்புகிறீர்களா?",
-  "confirmations.delete_list.confirm": "அழி",
-  "confirmations.delete_list.message": "இந்த பட்டியலில் நிரந்தரமாக நீக்க விரும்புகிறீர்களா?",
-  "confirmations.domain_block.confirm": "முழு டொமைனை மறை",
-  "confirmations.domain_block.message": "நீங்கள் உண்மையில், நிச்சயமாக நீங்கள் முழு தடுக்க வேண்டும் நிச்சயமாக {domain}? பெரும்பாலான சந்தர்ப்பங்களில் ஒரு சில இலக்குகள் அல்லது மியூட்கள் போதுமானவை மற்றும் சிறந்தவை. எந்த பொது நேரத்திலும் அல்லது உங்கள் அறிவிப்புகளிலும் அந்தக் களத்திலிருந்து உள்ளடக்கத்தை நீங்கள் பார்க்க மாட்டீர்கள். அந்த களத்தில் இருந்து உங்கள் ஆதரவாளர்கள் அகற்றப்படுவார்கள்.",
+  "confirmations.block.message": "{name}-ஐ நிச்சயமாகத் தடுக்க விரும்புகிறீர்களா?",
+  "confirmations.delete.confirm": "நீக்கு",
+  "confirmations.delete.message": "இப்பதிவை நிச்சயமாக நீக்க விரும்புகிறீர்களா?",
+  "confirmations.delete_list.confirm": "நீக்கு",
+  "confirmations.delete_list.message": "இப்பட்டியலை நிரந்தரமாக நீக்க நிச்சயம் விரும்புகிறீர்களா?",
+  "confirmations.domain_block.confirm": "முழு களத்தையும் மறை",
+  "confirmations.domain_block.message": "நீங்கள் முழு {domain} களத்தையும் நிச்சயமாக, நிச்சயமாகத் தடுக்க விரும்புகிறீர்களா? பெரும்பாலும் சில குறிப்பிட்ட பயனர்களைத் தடுப்பதே போதுமானது. முழு களத்தையும் தடுத்தால், அதிலிருந்து வரும் எந்தப் பதிவையும் உங்களால் காண முடியாது, மேலும் அப்பதிவுகள் குறித்த அறிவிப்புகளும் உங்களுக்கு வராது. அந்தக் களத்தில் இருக்கும் பின்தொடர்பவர்கள் உங்கள் பக்கத்திலிருந்து நீக்கப்படுவார்கள்.",
   "confirmations.logout.confirm": "வெளியேறு",
-  "confirmations.logout.message": "கண்டிப்பாக வெளியேறத்தான் வேண்டுமா?",
-  "confirmations.mute.confirm": "ஊமையான",
-  "confirmations.mute.explanation": "இது அவர்களின் பதிவுகளையும், அவர்களைக் குறிப்பிடும் பதிவுகளையும் மறைத்துவிடும். ஆனால் அவர்கள் உங்கள் பதிவுகளைப் பார்க்கவும், உங்களைப் பின் தொடரவும் அனுமதிக்கப்படுவார்கள்.",
-  "confirmations.mute.message": "நிச்சயமாக நீங்கள் முடக்க விரும்புகிறீர்களா {name}?",
-  "confirmations.redraft.confirm": "நீக்கு & redraft",
-  "confirmations.redraft.message": "நிச்சயமாக இந்த நிலையை நீக்கி, அதை மறுபடியும் உருவாக்க வேண்டுமா? பிடித்தவை மற்றும் ஊக்கங்கள் இழக்கப்படும், மற்றும் அசல் இடுகையில் பதில்கள் அனாதையான இருக்கும்.",
-  "confirmations.reply.confirm": "பதில்",
-  "confirmations.reply.message": "இப்போது பதில், தற்போது நீங்கள் உருவாக்கும் செய்தி மேலெழுதப்படும். நீங்கள் தொடர விரும்புகிறீர்களா?",
-  "confirmations.unfollow.confirm": "பின்தொடராட்",
-  "confirmations.unfollow.message": "நிச்சயமாக நீங்கள் பின்தொடர விரும்புகிறீர்களா {name}?",
-  "conversation.delete": "உரையாடலை அழிக்கவும்",
+  "confirmations.logout.message": "நிச்சயமாக நீங்கள் வெளியேற விரும்புகிறீர்களா?",
+  "confirmations.mute.confirm": "அமைதியாக்கு",
+  "confirmations.mute.explanation": "இந்தத் தேர்வு அவர்களின் பதிவுகளையும், அவர்களைக் குறிப்பிடும் பதிவுகளையும் மறைத்துவிடும். ஆனால், அவர்களால் உங்களைப் பின்தொடர்ந்து உங்கள் பதிவுகளைக் காண முடியும்.",
+  "confirmations.mute.message": "{name}-ஐ நிச்சயமாக நீங்கள் அமைதியாக்க விரும்புகிறீர்களா?",
+  "confirmations.redraft.confirm": "பதிவை நீக்கி மறுவரைவு செய்",
+  "confirmations.redraft.message": "நிச்சயமாக நீங்கள் இந்தப் பதிவை நீக்கி மறுவரைவு செய்ய விரும்புகிறீர்களா? விருப்பங்களும் பகிர்வுகளும் அழிந்துபோகும், மேலும் மூலப் பதிவிற்கு வந்த மறுமொழிகள் தனித்துவிடப்படும்.",
+  "confirmations.reply.confirm": "மறுமொழி",
+  "confirmations.reply.message": "ஏற்கனவே ஒரு பதிவு எழுதப்பட்டுக்கொண்டிருக்கிறது. இப்பொழுது பதில் எழுத முனைந்தால் அது அழிக்கப்படும். பரவாயில்லையா?",
+  "confirmations.unfollow.confirm": "விலகு",
+  "confirmations.unfollow.message": "{name}-ஐப் பின்தொடர்வதை நிச்சயமாக நீங்கள் நிறுத்த விரும்புகிறீர்களா?",
+  "conversation.delete": "உரையாடலை அழி",
   "conversation.mark_as_read": "படிக்கபட்டதாகக் குறி",
-  "conversation.open": "உரையாடலைக் காண்க",
+  "conversation.open": "உரையாடலைக் காட்டு",
   "conversation.with": "{names} உடன்",
-  "directory.federated": "தெரிந்த ஃபெடிவெர்சிலிருந்து",
-  "directory.local": "{domain} இல் இருந்து மட்டும்",
+  "directory.federated": "ஆலமரத்தின் அறியப்பட்டப் பகுதியிலிருந்து",
+  "directory.local": "{domain} களத்திலிருந்து மட்டும்",
   "directory.new_arrivals": "புதிய வரவு",
-  "directory.recently_active": "தற்பொழுது இயாக்கதிலிருப்பவர்கள்",
-  "embed.instructions": "கீழே உள்ள குறியீட்டை நகலெடுப்பதன் மூலம் உங்கள் இணையதளத்தில் இந்த நிலையை உட்பொதிக்கவும்.",
-  "embed.preview": "இது போன்ற தோற்றத்தை இங்கு காணலாம்:",
-  "emoji_button.activity": "நடவடிக்கை",
-  "emoji_button.custom": "வழக்கம்",
-  "emoji_button.flags": "கொடி",
+  "directory.recently_active": "சற்றுமுன் செயல்பாட்டில் இருந்தவர்கள்",
+  "embed.instructions": "இந்தப் பதிவை உங்கள் வலைதளத்தில் பொதிக்கக் கீழே உள்ள வரிகளை காப்பி செய்யவும்.",
+  "embed.preview": "பார்க்க இப்படி இருக்கும்:",
+  "emoji_button.activity": "செயல்பாடு",
+  "emoji_button.custom": "தனிப்பயன்",
+  "emoji_button.flags": "கொடிகள்",
   "emoji_button.food": "உணவு மற்றும் பானம்",
   "emoji_button.label": "குறுப்படங்களை உள்ளிடு",
   "emoji_button.nature": "இயற்கை",
@@ -143,7 +143,7 @@
   "empty_column.account_timeline": "இல்லை toots இங்கே!",
   "empty_column.account_unavailable": "சுயவிவரம் கிடைக்கவில்லை",
   "empty_column.blocks": "இதுவரை எந்த பயனர்களும் தடுக்கவில்லை.",
-  "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": "உங்களிடம் அடையாளக்குறியிட்ட டூட்டுகள் எவையும் இல்லை. அடையாளக்குறியிட்ட பிறகு அவை இங்கே காட்டப்படும்.",
   "empty_column.community": "உள்ளூர் காலக்கெடு காலியாக உள்ளது. பந்தை உருட்டிக்கொள்வதற்கு பகிரங்கமாக ஒன்றை எழுதுங்கள்!",
   "empty_column.direct": "உங்களிடம் நேரடியான செய்திகள் எதுவும் இல்லை. நீங்கள் ஒன்றை அனுப்பி அல்லது பெறும் போது, அது இங்கே காண்பிக்கும்.",
   "empty_column.domain_blocks": "இன்னும் மறைந்த களங்கள் இல்லை.",
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "அடிப்படையான",
   "home.column_settings.show_reblogs": "காட்டு boosts",
   "home.column_settings.show_replies": "பதில்களைக் காண்பி",
+  "home.hide_announcements": "அறிவிப்புகளை மறை",
+  "home.show_announcements": "அறிவிப்புகளைக் காட்டு",
   "intervals.full.days": "{number, plural, one {# day} மற்ற {# days}}",
   "intervals.full.hours": "{number, plural, one {# hour} மற்ற {# hours}}",
   "intervals.full.minutes": "{number, plural, one {# minute} மற்ற {# minutes}}",
@@ -258,7 +260,7 @@
   "mute_modal.hide_notifications": "இந்த பயனரின் அறிவிப்புகளை மறைக்கவா?",
   "navigation_bar.apps": "மொபைல் பயன்பாடுகள்",
   "navigation_bar.blocks": "தடுக்கப்பட்ட பயனர்கள்",
-  "navigation_bar.bookmarks": "Bookmarks",
+  "navigation_bar.bookmarks": "அடையாளக்குறிகள்",
   "navigation_bar.community_timeline": "உள்ளூர் காலக்கெடு",
   "navigation_bar.compose": "புதியவற்றை எழுதுக toot",
   "navigation_bar.direct": "நேரடி செய்திகள்",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "இப்பொழுது",
   "relative_time.minutes": "{number}நி",
   "relative_time.seconds": "{number}வி",
+  "relative_time.today": "இன்று",
   "reply_indicator.cancel": "எதிராணை",
   "report.forward": "முன்னோக்கி {target}",
   "report.forward_hint": "கணக்கு மற்றொரு சேவையகத்திலிருந்து வருகிறது. அறிக்கையின் அநாமதேய பிரதி ஒன்றை அனுப்பவும்.?",
diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json
index 8b47fec52..904f62684 100644
--- a/app/javascript/mastodon/locales/te.json
+++ b/app/javascript/mastodon/locales/te.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "ప్రాథమిక",
   "home.column_settings.show_reblogs": "బూస్ట్ లను చూపించు",
   "home.column_settings.show_replies": "ప్రత్యుత్తరాలను చూపించు",
+  "home.hide_announcements": "Hide announcements",
+  "home.show_announcements": "Show announcements",
   "intervals.full.days": "{number, plural, one {# day} other {# days}}",
   "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "ఇప్పుడు",
   "relative_time.minutes": "{number}m",
   "relative_time.seconds": "{number}s",
+  "relative_time.today": "today",
   "reply_indicator.cancel": "రద్దు చెయ్యి",
   "report.forward": "{target}కి ఫార్వార్డ్ చేయండి",
   "report.forward_hint": "ఖాతా మరొక సర్వర్లో ఉంది. నివేదిక యొక్క ఒక అనామకంగా ఉన్న కాపీని అక్కడికి కూడా పంపించమంటారా?",
diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json
index 2d009b851..71de4beaf 100644
--- a/app/javascript/mastodon/locales/th.json
+++ b/app/javascript/mastodon/locales/th.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "พื้นฐาน",
   "home.column_settings.show_reblogs": "แสดงการดัน",
   "home.column_settings.show_replies": "แสดงการตอบกลับ",
+  "home.hide_announcements": "ซ่อนประกาศ",
+  "home.show_announcements": "แสดงประกาศ",
   "intervals.full.days": "{number, plural, other {# วัน}}",
   "intervals.full.hours": "{number, plural, other {# ชั่วโมง}}",
   "intervals.full.minutes": "{number, plural, other {# นาที}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "ตอนนี้",
   "relative_time.minutes": "{number} นาที",
   "relative_time.seconds": "{number} วินาที",
+  "relative_time.today": "วันนี้",
   "reply_indicator.cancel": "ยกเลิก",
   "report.forward": "ส่งต่อไปยัง {target}",
   "report.forward_hint": "บัญชีมาจากเซิร์ฟเวอร์อื่น ส่งสำเนาของรายงานที่ไม่ระบุตัวตนไปที่นั่นด้วย?",
diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json
index 11f9ff2ef..54cc0379c 100644
--- a/app/javascript/mastodon/locales/tr.json
+++ b/app/javascript/mastodon/locales/tr.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Temel",
   "home.column_settings.show_reblogs": "Boost edilenleri göster",
   "home.column_settings.show_replies": "Cevapları göster",
+  "home.hide_announcements": "Duyuruları gizle",
+  "home.show_announcements": "Duyuruları göster",
   "intervals.full.days": "{number, plural, one {# gün} other {# gün}}",
   "intervals.full.hours": "{number, plural, one {# saat} other {# saat}}",
   "intervals.full.minutes": "{number, plural, one {# dakika} other {# dakika}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "şimdi",
   "relative_time.minutes": "{number}dk",
   "relative_time.seconds": "{number}sn",
+  "relative_time.today": "bugün",
   "reply_indicator.cancel": "İptal",
   "report.forward": "Şu kişiye ilet : {target}",
   "report.forward_hint": "Bu hesap başka bir sunucudan. Anonimleştirilmiş bir rapor oraya da gönderilsin mi?",
@@ -382,7 +385,7 @@
   "status.redraft": "Sil & tekrar taslakla",
   "status.remove_bookmark": "Yer imini kaldır",
   "status.reply": "Cevapla",
-  "status.replyAll": "Konuşmayı cevapla",
+  "status.replyAll": "Mesaj dizisini cevapla",
   "status.report": "@{name}'i raporla",
   "status.sensitive_warning": "Hassas içerik",
   "status.share": "Paylaş",
@@ -390,7 +393,7 @@
   "status.show_less_all": "Hepsi için daha az göster",
   "status.show_more": "Daha fazla göster",
   "status.show_more_all": "Hepsi için daha fazla göster",
-  "status.show_thread": "Başlığı göster",
+  "status.show_thread": "Mesaj dizisini göster",
   "status.uncached_media_warning": "Mevcut değil",
   "status.unmute_conversation": "Sohbeti aç",
   "status.unpin": "Profilden sabitlemeyi kaldır",
diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json
index 061fc50cb..b11532d18 100644
--- a/app/javascript/mastodon/locales/uk.json
+++ b/app/javascript/mastodon/locales/uk.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Основні",
   "home.column_settings.show_reblogs": "Показувати передмухи",
   "home.column_settings.show_replies": "Показувати відповіді",
+  "home.hide_announcements": "Приховати оголошення",
+  "home.show_announcements": "Показати оголошення",
   "intervals.full.days": "{number, plural, one {# день} few {# дні} other {# днів}}",
   "intervals.full.hours": "{number, plural, one {# година} few {# години} other {# годин}}",
   "intervals.full.minutes": "{number, plural, one {# хвилина} few {# хвилини} other {# хвилин}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "щойно",
   "relative_time.minutes": "{number}х",
   "relative_time.seconds": "{number}с",
+  "relative_time.today": "сьогодні",
   "reply_indicator.cancel": "Відмінити",
   "report.forward": "Надіслати до {target}",
   "report.forward_hint": "Це аккаунт з іншого серверу. Відправити анонімізовану копію скарги і туди?",
diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json
index 01477906c..664eebfbf 100644
--- a/app/javascript/mastodon/locales/ur.json
+++ b/app/javascript/mastodon/locales/ur.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "بنیادی",
   "home.column_settings.show_reblogs": "افزائشات دکھائیں",
   "home.column_settings.show_replies": "جوابات دکھائیں",
+  "home.hide_announcements": "Hide announcements",
+  "home.show_announcements": "Show announcements",
   "intervals.full.days": "{number, plural, one {# روز} other {# روز}}",
   "intervals.full.hours": "{number, plural, one {# ساعت} other {# ساعت}}",
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "now",
   "relative_time.minutes": "{number}m",
   "relative_time.seconds": "{number}s",
+  "relative_time.today": "today",
   "reply_indicator.cancel": "Cancel",
   "report.forward": "Forward to {target}",
   "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json
index 07dff79fa..067a422e6 100644
--- a/app/javascript/mastodon/locales/vi.json
+++ b/app/javascript/mastodon/locales/vi.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "Cơ bản",
   "home.column_settings.show_reblogs": "Hiện tút được loan tin",
   "home.column_settings.show_replies": "Hiện trả lời",
+  "home.hide_announcements": "Hide announcements",
+  "home.show_announcements": "Show announcements",
   "intervals.full.days": "{number} days",
   "intervals.full.hours": "{number} hours",
   "intervals.full.minutes": "{number} minutes",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "vừa xong",
   "relative_time.minutes": "{number} phút",
   "relative_time.seconds": "{number} giây",
+  "relative_time.today": "today",
   "reply_indicator.cancel": "Hủy bỏ",
   "report.forward": "Chuyển đến {target}",
   "report.forward_hint": "Tài khoản này từ miền khác. Gửi thêm một báo cáo ẩn danh tới miền của tài khoản này?",
diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json
index 62a86e75b..41ecfe1f2 100644
--- a/app/javascript/mastodon/locales/zh-CN.json
+++ b/app/javascript/mastodon/locales/zh-CN.json
@@ -1,7 +1,7 @@
 {
   "account.add_or_remove_from_list": "从列表中添加或删除",
   "account.badges.bot": "机器人",
-  "account.badges.group": "Group",
+  "account.badges.group": "群组",
   "account.block": "屏蔽 @{name}",
   "account.block_domain": "隐藏来自 {domain} 的内容",
   "account.blocked": "已屏蔽",
@@ -43,7 +43,7 @@
   "alert.rate_limited.title": "频率受限",
   "alert.unexpected.message": "发生了意外错误。",
   "alert.unexpected.title": "哎呀!",
-  "announcement.announcement": "Announcement",
+  "announcement.announcement": "公告",
   "autosuggest_hashtag.per_week": "每星期 {count} 条",
   "boost_modal.combo": "下次按住 {combo} 即可跳过此提示",
   "bundle_column_error.body": "载入这个组件时发生了错误。",
@@ -85,8 +85,8 @@
   "compose_form.poll.duration": "投票持续时间",
   "compose_form.poll.option_placeholder": "选项 {number}",
   "compose_form.poll.remove_option": "移除这个选项",
-  "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": "将投票改为多选",
+  "compose_form.poll.switch_to_single": "将投票改为单选",
   "compose_form.publish": "嘟嘟",
   "compose_form.publish_loud": "{publish}!",
   "compose_form.sensitive.hide": "标记媒体为敏感内容",
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "基本设置",
   "home.column_settings.show_reblogs": "显示转嘟",
   "home.column_settings.show_replies": "显示回复",
+  "home.hide_announcements": "隐藏公告",
+  "home.show_announcements": "显示公告",
   "intervals.full.days": "{number} 天",
   "intervals.full.hours": "{number} 小时",
   "intervals.full.minutes": "{number} 分钟",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "刚刚",
   "relative_time.minutes": "{number}分",
   "relative_time.seconds": "{number}秒",
+  "relative_time.today": "今天",
   "reply_indicator.cancel": "取消",
   "report.forward": "转发举报至 {target}",
   "report.forward_hint": "这名用户来自另一个服务器。是否要向那个服务器发送一条匿名的举报?",
@@ -391,7 +394,7 @@
   "status.show_more": "显示内容",
   "status.show_more_all": "显示所有内容",
   "status.show_thread": "显示全部对话",
-  "status.uncached_media_warning": "不可用",
+  "status.uncached_media_warning": "暂不可用",
   "status.unmute_conversation": "不再隐藏此对话",
   "status.unpin": "在个人资料页面取消置顶",
   "suggestions.dismiss": "关闭建议",
@@ -410,7 +413,7 @@
   "trends.trending_now": "现在流行",
   "ui.beforeunload": "如果你现在离开 Mastodon,你的草稿内容将会丢失。",
   "upload_area.title": "将文件拖放到此处开始上传",
-  "upload_button.label": "上传媒体文件 (JPEG, PNG, GIF, WebM, MP4, MOV)",
+  "upload_button.label": "上传媒体文件 ({formats})",
   "upload_error.limit": "文件大小超过限制。",
   "upload_error.poll": "投票中不允许上传文件。",
   "upload_form.audio_description": "为听障人士添加文字描述",
diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json
index 4dcf70e6b..12f154a2c 100644
--- a/app/javascript/mastodon/locales/zh-HK.json
+++ b/app/javascript/mastodon/locales/zh-HK.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "基本",
   "home.column_settings.show_reblogs": "顯示被轉推的文章",
   "home.column_settings.show_replies": "顯示回應文章",
+  "home.hide_announcements": "Hide announcements",
+  "home.show_announcements": "Show announcements",
   "intervals.full.days": "{number, plural, one {# 天} other {# 天}}",
   "intervals.full.hours": "{number, plural, one {# 小時} other {# 小時}}",
   "intervals.full.minutes": "{number, plural, one {# 分鐘} other {# 分鐘}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "剛剛",
   "relative_time.minutes": "{number}分鐘",
   "relative_time.seconds": "{number}秒",
+  "relative_time.today": "today",
   "reply_indicator.cancel": "取消",
   "report.forward": "轉寄到 {target}",
   "report.forward_hint": "這個帳戶屬於其他服務站。要向該服務站發送匿名的舉報訊息嗎?",
diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json
index ab680223e..56c4de066 100644
--- a/app/javascript/mastodon/locales/zh-TW.json
+++ b/app/javascript/mastodon/locales/zh-TW.json
@@ -184,6 +184,8 @@
   "home.column_settings.basic": "基本",
   "home.column_settings.show_reblogs": "顯示轉嘟",
   "home.column_settings.show_replies": "顯示回覆",
+  "home.hide_announcements": "Hide announcements",
+  "home.show_announcements": "Show announcements",
   "intervals.full.days": "{number, plural, one {# 天} other {# 天}}",
   "intervals.full.hours": "{number, plural, one {# 小時} other {# 小時}}",
   "intervals.full.minutes": "{number, plural, one {# 分鐘} other {# 分鐘}}",
@@ -333,6 +335,7 @@
   "relative_time.just_now": "剛剛",
   "relative_time.minutes": "{number} 分",
   "relative_time.seconds": "{number} 秒",
+  "relative_time.today": "today",
   "reply_indicator.cancel": "取消",
   "report.forward": "轉寄到 {target}",
   "report.forward_hint": "這個帳戶屬於其他站點。要像該站點發送匿名的檢舉訊息嗎?",
diff --git a/app/javascript/packs/public.js b/app/javascript/packs/public.js
index 640f0af0a..13cb5d548 100644
--- a/app/javascript/packs/public.js
+++ b/app/javascript/packs/public.js
@@ -65,7 +65,7 @@ function main() {
       content.textContent = timeAgoString({
         formatMessage: ({ id, defaultMessage }, values) => (new IntlMessageFormat(messages[id] || defaultMessage, locale)).format(values),
         formatDate: (date, options) => (new Intl.DateTimeFormat(locale, options)).format(date),
-      }, datetime, now, now.getFullYear());
+      }, datetime, now, now.getFullYear(), content.getAttribute('datetime').includes('T'));
     });
 
     const reactComponents = document.querySelectorAll('[data-component]');
diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss
index 54372022a..aa885e241 100644
--- a/app/javascript/styles/mastodon/components.scss
+++ b/app/javascript/styles/mastodon/components.scss
@@ -6697,14 +6697,13 @@ noscript {
 
     &__unread {
       position: absolute;
-      top: 15px;
-      right: 15px;
-      display: inline-block;
+      top: 19px;
+      right: 19px;
+      display: block;
       background: $highlight-text-color;
       border-radius: 50%;
       width: 0.625rem;
       height: 0.625rem;
-      margin: 0 .15em;
     }
   }
 
diff --git a/app/lib/formatter.rb b/app/lib/formatter.rb
index f1a751f84..fcc99d009 100644
--- a/app/lib/formatter.rb
+++ b/app/lib/formatter.rb
@@ -77,6 +77,8 @@ class Formatter
 
   def reformat(html)
     sanitize(html, Sanitize::Config::MASTODON_STRICT)
+  rescue ArgumentError
+    ''
   end
 
   def plaintext(status)
diff --git a/app/lib/sanitize_config.rb b/app/lib/sanitize_config.rb
index 2b5d554b5..e3fc94ba6 100644
--- a/app/lib/sanitize_config.rb
+++ b/app/lib/sanitize_config.rb
@@ -2,7 +2,23 @@
 
 class Sanitize
   module Config
-    HTTP_PROTOCOLS ||= ['http', 'https', 'dat', 'dweb', 'ipfs', 'ipns', 'ssb', 'gopher', 'xmpp', 'magnet', :relative].freeze
+    HTTP_PROTOCOLS = %w(
+      http
+      https
+    ).freeze
+
+    LINK_PROTOCOLS = %w(
+      http
+      https
+      dat
+      dweb
+      ipfs
+      ipns
+      ssb
+      gopher
+      xmpp
+      magnet
+    ).freeze
 
     CLASS_WHITELIST_TRANSFORMER = lambda do |env|
       node = env[:node]
@@ -38,6 +54,22 @@ class Sanitize
       end
     end
 
+    UNSUPPORTED_HREF_TRANSFORMER = lambda do |env|
+      return unless env[:node_name] == 'a'
+
+      current_node = env[:node]
+
+      scheme = begin
+        if current_node['href'] =~ Sanitize::REGEX_PROTOCOL
+          Regexp.last_match(1).downcase
+        else
+          :relative
+        end
+      end
+
+      current_node.replace(current_node.text) unless LINK_PROTOCOLS.include?(scheme)
+    end
+
     MASTODON_STRICT ||= freeze_config(
       elements: %w(p br span a abbr del pre blockquote code b strong u sub sup i em h1 h2 h3 h4 h5 ul ol li),
 
@@ -56,13 +88,14 @@ class Sanitize
       },
 
       protocols: {
-        'a'          => { 'href' => HTTP_PROTOCOLS },
-        'blockquote' => { 'cite' => HTTP_PROTOCOLS },
+        'a'          => { 'href' => LINK_PROTOCOLS },
+        'blockquote' => { 'cite' => LINK_PROTOCOLS },
       },
 
       transformers: [
         CLASS_WHITELIST_TRANSFORMER,
         IMG_TAG_TRANSFORMER,
+        UNSUPPORTED_HREF_TRANSFORMER,
       ]
     )
 
diff --git a/app/models/concerns/remotable.rb b/app/models/concerns/remotable.rb
index b7a476c87..c728a460e 100644
--- a/app/models/concerns/remotable.rb
+++ b/app/models/concerns/remotable.rb
@@ -36,8 +36,8 @@ module Remotable
 
             basename = SecureRandom.hex(8)
 
-            send("#{attachment_name}=", StringIO.new(response.body_with_limit(limit)))
             send("#{attachment_name}_file_name=", basename + extname)
+            send("#{attachment_name}=", StringIO.new(response.body_with_limit(limit)))
 
             self[attribute_name] = url if has_attribute?(attribute_name)
           end
diff --git a/app/serializers/rest/announcement_serializer.rb b/app/serializers/rest/announcement_serializer.rb
index ae72f9ace..f27feb669 100644
--- a/app/serializers/rest/announcement_serializer.rb
+++ b/app/serializers/rest/announcement_serializer.rb
@@ -41,5 +41,9 @@ class REST::AnnouncementSerializer < ActiveModel::Serializer
     def url
       ActivityPub::TagManager.instance.url_for(object)
     end
+
+    def acct
+      object.pretty_acct
+    end
   end
 end
diff --git a/app/serializers/rest/status_serializer.rb b/app/serializers/rest/status_serializer.rb
index 023913028..58e7bd4e4 100644
--- a/app/serializers/rest/status_serializer.rb
+++ b/app/serializers/rest/status_serializer.rb
@@ -147,7 +147,7 @@ class REST::StatusSerializer < ActiveModel::Serializer
     end
 
     def acct
-      object.account_acct
+      object.account.pretty_acct
     end
   end
 
diff --git a/app/views/accounts/_og.html.haml b/app/views/accounts/_og.html.haml
index de948ec6a..839576372 100644
--- a/app/views/accounts/_og.html.haml
+++ b/app/views/accounts/_og.html.haml
@@ -10,4 +10,4 @@
 = opengraph 'og:image:width', '120'
 = opengraph 'og:image:height', '120'
 = opengraph 'twitter:card', 'summary'
-= opengraph 'profile:username', account.local_username_and_domain
+= opengraph 'profile:username', acct(account)[1..-1]
diff --git a/app/views/accounts/show.html.haml b/app/views/accounts/show.html.haml
index c312fe2bd..c9688ea88 100644
--- a/app/views/accounts/show.html.haml
+++ b/app/views/accounts/show.html.haml
@@ -1,5 +1,5 @@
 - content_for :page_title do
-  = "#{display_name(@account)} (@#{@account.local_username_and_domain})"
+  = "#{display_name(@account)} (#{acct(@account)})"
 
 - content_for :header_tags do
   - if @account.user&.setting_noindex
diff --git a/app/views/statuses/show.html.haml b/app/views/statuses/show.html.haml
index 0f22d106b..873df7fbd 100644
--- a/app/views/statuses/show.html.haml
+++ b/app/views/statuses/show.html.haml
@@ -10,7 +10,7 @@
 
   = opengraph 'og:site_name', site_title
   = opengraph 'og:type', 'article'
-  = opengraph 'og:title', "#{display_name(@account)} (@#{@account.local_username_and_domain})"
+  = opengraph 'og:title', "#{display_name(@account)} (#{acct(@account)})"
   = opengraph 'og:url', short_account_status_url(@account, @status)
 
   = render 'og_description', activity: @status
diff --git a/config/initializers/0_duplicate_migrations.rb b/config/initializers/0_duplicate_migrations.rb
index 4ab806587..194aff70c 100644
--- a/config/initializers/0_duplicate_migrations.rb
+++ b/config/initializers/0_duplicate_migrations.rb
@@ -37,4 +37,16 @@ module ActiveRecord
       super(direction, migrations, target_version)
     end
   end
+
+  class MigrationContext
+    def needs_migration?
+      # A set of duplicated migrations is considered migrated if at least one of
+      # them is migrated.
+      migrated = get_all_versions
+      migrations.group_by(&:name).each do |name, duplicates|
+        return true unless duplicates.any? { |m| migrated.include?(m.version.to_i) }
+      end
+      return false
+    end
+  end
 end
diff --git a/config/initializers/content_security_policy.rb b/config/initializers/content_security_policy.rb
index c07af3ea8..221afab93 100644
--- a/config/initializers/content_security_policy.rb
+++ b/config/initializers/content_security_policy.rb
@@ -23,6 +23,8 @@ if Rails.env.production?
     data_hosts << "https://#{url.host}"
   end
 
+  data_hosts.concat(ENV['EXTRA_DATA_HOSTS'].split('|')) if ENV['EXTRA_DATA_HOSTS']
+
   data_hosts.uniq!
 
   Rails.application.config.content_security_policy do |p|
diff --git a/config/locales/activerecord.fa.yml b/config/locales/activerecord.fa.yml
index d3b01a158..7fdfa38d1 100644
--- a/config/locales/activerecord.fa.yml
+++ b/config/locales/activerecord.fa.yml
@@ -14,4 +14,4 @@ fa:
         status:
           attributes:
             reblog:
-              taken: نوشته‌ها وجود دارند
+              taken: تا از وضعیت‌ها هنوز وجود دارند
diff --git a/config/locales/ar.yml b/config/locales/ar.yml
index 7309ad3db..f5a6f067d 100644
--- a/config/locales/ar.yml
+++ b/config/locales/ar.yml
@@ -11,6 +11,7 @@ ar:
     apps: تطبيقات الأجهزة المحمولة
     apps_platforms: استخدم ماستدون على iOS وأندرويد وأنظمة أخرى
     browse_directory: تصفح دليل الصفحات التعريفية وصفّي بحسب الإهتمام
+    browse_local_posts: تصفح تيارًا مباشرًا مِن منشورات للعامة على هذا الخادم
     browse_public_posts: تصفح تيارًا مباشرًا مِن منشورات عامة على ماستدون
     contact: للتواصل معنا
     contact_missing: لم يتم تعيينه
@@ -206,11 +207,13 @@ ar:
         change_email_user: غيّر %{name} عنوان البريد الإلكتروني للمستخدم %{target}
         confirm_user: "%{name} قد قام بتأكيد عنوان البريد الإلكتروني لـ %{target}"
         create_account_warning: قام %{name} بإرسال تحذير إلى %{target}
+        create_announcement: قام %{name} بإنشاء إعلان جديد %{target}
         create_custom_emoji: "%{name} قام برفع إيموجي جديد %{target}"
         create_domain_allow: قام %{name} بإضافة النطاق %{target} إلى القائمة البيضاء
         create_domain_block: "%{name} قام بحجب نطاق %{target}"
         create_email_domain_block: "%{name} قد قام بحظر نطاق البريد الإلكتروني %{target}"
         demote_user: "%{name} قد قام بإنزال الرتبة الوظيفية لـ %{target}"
+        destroy_announcement: قام %{name} بحذف الإعلان %{target}
         destroy_custom_emoji: قام %{name} بحذف الإيموجي %{target}
         destroy_domain_allow: قام %{name} بإزالة النطاق %{target} مِن القائمة البيضاء
         destroy_domain_block: "%{name} قام بإلغاء الحجب عن النطاق %{target}"
@@ -232,10 +235,26 @@ ar:
         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: "(منشور محذوف)"
       title: سِجلّ التفتيش و المعاينة
+    announcements:
+      destroyed_msg: تم حذف الإعلان بنجاح!
+      edit:
+        title: تعديل الإعلان
+      empty: لم يتم العثور على أية إعلانات.
+      live: على المباشر
+      new:
+        create: إنشاء إعلان
+        title: إعلان جديد
+      published_msg: تم نشر الإعلان بنجاح!
+      scheduled_for: بُرمِج على %{time}
+      scheduled_msg: تمت جدولة نشر الإعلان!
+      title: الإعلانات
+      unpublished_msg: تم إلغاء نشر الإعلان بنجاح!
+      updated_msg: تم تحديث الإعلان بنجاح!
     custom_emojis:
       assign_category: اسند فئة
       by_domain: النطاق
@@ -381,6 +400,8 @@ ar:
       title: الدعوات
     pending_accounts:
       title: الحسابات المعلقة (%{count})
+    relationships:
+      title: علاقات %{acct}
     relays:
       add_new: إضافة مُرحّل جديد
       delete: حذف
@@ -635,6 +656,9 @@ ar:
     hint_html: "<strong>توصية:</strong> لن نطلب منك ثانية كلمتك السرية في غضون الساعة اللاحقة."
     invalid_password: الكلمة السرية خاطئة
     prompt: أكِّد الكلمة السرية للمواصلة
+  date:
+    formats:
+      default: "%d %b %Y"
   datetime:
     distance_in_words:
       about_x_hours: "%{count}سا"
@@ -706,6 +730,7 @@ ar:
     add_new: أضف واحدًا جديدا
   filters:
     contexts:
+      account: الملفات التعريفية
       home: الخيط الزمني الرئيسي
       notifications: الإخطارات
       public: الخيوط الزمنية العامة
@@ -730,6 +755,7 @@ ar:
     all: الكل
     changes_saved_msg: تم حفظ التعديلات بنجاح!
     copy: نسخ
+    delete: احذف
     order_by: ترتيب بحسب
     save_changes: حفظ التغييرات
     validation_errors:
@@ -896,11 +922,15 @@ ar:
     other: إعدادات أخرى
     posting_defaults: التفضيلات الافتراضية لنشر التبويقات
     public_timelines: الخيوط الزمنية العامة
+  reactions:
+    errors:
+      unrecognized_emoji: لم يتم التعرف على أنه إيموجي
   relationships:
     activity: نشاط الحساب
     dormant: في سبات
     followers: المتابِعون
     following: يُتابِع
+    invited: مَدعُوّ
     last_active: آخر نشاط
     most_recent: الأحدث
     moved: هاجر
@@ -1045,6 +1075,7 @@ ar:
         zero: بدون صوت %{count}
       vote: صوّت
     show_more: أظهر المزيد
+    show_thread: اعرض خيط المحادثة
     sign_in_to_participate: قم بتسجيل الدخول للمشاركة في هذه المحادثة
     title: '%{name}: "%{quote}"'
     visibilities:
diff --git a/config/locales/ast.yml b/config/locales/ast.yml
index d64f6b005..d7e0faf41 100644
--- a/config/locales/ast.yml
+++ b/config/locales/ast.yml
@@ -6,18 +6,23 @@ ast:
     about_this: Tocante a
     administered_by: 'Alministráu por:'
     api: API
-    browse_directory: Restola nun direutoriu de perfiles y peñera polos intereses
+    apps: Aplicaciones pa móviles
+    apps_platforms: Usa Mastodon dende Android, iOS y otres plataformes
     contact: Contautu
     contact_missing: Nun s'afitó
     contact_unavailable: N/D
-    discover_users: Descubri usuarios
+    discover_users: Usuarios nuevos
     documentation: Documentación
     federation_hint_html: Con una cuenta en %{instance} vas ser a siguir a persones de cualesquier sirvidor de Mastodon y más.
+    get_apps: En preseos móviles
     hosted_on: Mastodon ta agospiáu en %{domain}
     learn_more: Deprender más
     privacy_policy: Política de privacidá
     server_stats: 'Estadístiques del sirvidor:'
     source_code: Códigu fonte
+    status_count_after:
+      one: estáu
+      other: estaos
     status_count_before: Que crearon
     tagline: Sigui a persones y conoz a más
     terms: Términos del serviciu
@@ -30,11 +35,11 @@ ast:
     user_count_before: Ye'l llar de
     what_is_mastodon: "¿Qué ye Mastodon?"
   accounts:
+    featured_tags_hint: Pues destacar etiquetes específiques que van amosase equí.
     followers:
       one: Siguidor
       other: Siguidores
     joined: Xunióse en %{date}
-    last_active: última actividá
     moved_html: "%{name} mudóse a %{new_profile_link}:"
     network_hidden: Esta información nun ta disponible
     never_active: Enxamás
@@ -63,25 +68,31 @@ ast:
         local: Llocal
         title: Allugamientu
       protocol: Protocolu
+      reject: Refugar
       reject_all: Refugar too
       resend_confirmation:
         already_confirmed: Esti usuariu yá ta confirmáu
+        send: Reunviar les instrucciones
       role: Permisos
       roles:
         admin: Alministrador
         moderator: Llendador
         user: Usuariu
       statuses: Estaos
+      time_in_queue: Esperando na cola %{time}
       title: Cuentes
       username: Nome d'usuariu
       web: Web
     action_logs:
       actions:
         create_account_warning: "%{name} unvió una alvertencia a %{target}"
+        create_announcement: "%{name} creó un anunciu %{target}"
         create_domain_block: "%{name} bloquió'l dominiu %{target}"
+        destroy_announcement: "%{name} desanició l'anunciu %{target}"
         disable_custom_emoji: "%{name} desactivó'l fustaxe %{target}"
         disable_user: "%{name} desactivó l'aniciu de sesión del usuariu %{target}"
         enable_custom_emoji: "%{name} activó'l fustaxe %{target}"
+        enable_user: "%{name} activó l'aniciu de sesión del usuariu %{target}"
         promote_user: "%{name} ascendió al usuariu %{target}"
         remove_avatar_user: "%{name} desanició l'avatar de %{target}"
         reopen_report: "%{name} reabrió l'informe de %{target}"
@@ -89,6 +100,14 @@ ast:
         resolve_report: "%{name} resolvió l'informe de %{target}"
         silence_account: "%{name} silenció la cuenta de %{target}"
         suspend_account: "%{name} suspendió la cuenta de %{target}"
+        update_announcement: "%{name} anovó l'anunciu %{target}"
+        update_custom_emoji: "%{name} anovo'l fustaxe %{target}"
+    announcements:
+      destroyed_msg: "¡L'anunciu desanicióse con ésitu!"
+      new:
+        title: Anunciu nuevu
+      published_msg: "¡L'anunciu espublizóse con ésitu!"
+      title: Anuncios
     custom_emojis:
       by_domain: Dominiu
       copy_failed_msg: Nun pudo facese una copia llocal d'esi fustaxe
@@ -117,12 +136,19 @@ ast:
         available: Disponible
         expired: Caducó
       title: Invitaciones
+    pending_accounts:
+      title: Cuentes pendientes (%{count})
     relays:
       save_and_enable: Guardar y activar
       status: Estáu
     reports:
+      account:
+        reports:
+          one: "%{count} informe"
+          other: "%{count} informes"
       are_you_sure: "¿De xuru?"
       status: Estáu
+      title: Informes
     settings:
       registrations:
         min_invite_role:
@@ -143,17 +169,21 @@ ast:
     new_pending_account:
       body: Los detalles de la cuenta nueva tán embaxo. Pues aprobar o refugar esta aplicación.
     new_report:
+      body: "%{reporter} informó de %{target}"
       body_remote: Daquién dende %{domain} informó de %{target}
     new_trending_tag:
       body: 'Güei la etiqueta #%{name} ye tendencia pero nun se revisó anteriormente. Nun va amosase públicamente a nun ser que lo permitas o guardes el formulariu como ta pa nun saber más d''ello.'
   appearance:
     advanced_web_interface: Interfaz web avanzada
+    advanced_web_interface_hint: 'Si quies asegúrate de que s''use tol anchor de la pantalla, la interfaz web avanzada permítete configurar munches columnes estremaes pa ver tanta información al empar como quieras: Aniciu, avisos, llinia temporal federada, cualesquier cantidá de llistes y etiquetes...'
+    animations_and_accessibility: Animaciones y accesibilidá
     confirmation_dialogs: Diálogos de confirmación
     discovery: Descubrición
     localization:
       body: Mastodon tradúcenlu voluntarios,
       guide_link: https://crowdin.com/project/mastodon
       guide_link_text: tol mundu pue collaborar.
+    sensitive_content: Conteníu sensible
     toot_layout: Distribución de los barritos
   applications:
     invalid_url: La URL apurrida nun ye válida
@@ -166,6 +196,7 @@ ast:
     delete_account_html: Si deseyes desaniciar la to cuenta, pues <a href="%{path}">siguir equí</a>. Va pidísete la confirmación.
     description:
       suffix: "¡Con una cuenta, vas ser a siguir a persones, espublizar anovamientos ya intercambiar mensaxes con usuarios de cualesquier sirvidor de Mastodon y más!"
+    didnt_get_confirmation: "¿Nun recibiesti les instrucciones de confirmación?"
     forgot_password: "¿Escaeciesti la contraseña?"
     login: Aniciar sesión
     migrate_account: Mudase a otra cuenta
@@ -189,15 +220,20 @@ ast:
       half_a_minute: Púramente agora
       less_than_x_seconds: Púramente agora
   deletes:
+    challenge_not_passed: La información qu'introduxesti nun yera correuta
     confirm_password: Introduz la contraseña pa verificar la to identidá
     warning:
       email_contact_html: Si entá nun aportó, pues unviar un corréu a<a href="mailto:%{email}">%{email}</a> pa más ayuda
       more_details_html: Pa más detalles, mira la <a href="%{terms_path}">política de privacidá</a>.
+  directories:
+    directory: Direutoriu de perfiles
+    explanation: y descubri a usuarios según los sos intereses
+    explore_mastodon: Esplora %{title}
   errors:
     '400': The request you submitted was invalid or malformed.
     '403': Nun tienes permisu pa ver esta páxina.
     '404': La páxina que tabes guetando nun ta equí.
-    '406': This page is not available in the requested format.
+    '406': Esta páxina nun ta disponible nel formatu solicitáu.
     '410': La páxina que tabes guetando yá nun esiste.
     '422':
       content: Falló la verificación de seguranza. ¿Tas bloquiando les cookies?
@@ -208,7 +244,9 @@ ast:
   exports:
     archive_takeout:
       date: Data
+      download: Baxar l'archivu
       hint_html: Pues solicitar un archivu colos tos <strong>barritos y ficheros xubíos</strong>. Los datos esportaos van tar nel formatu ActivityPub, llexible pa cualesquier software que seya compatible. Pues solicitar un archivu cada 7 díes.
+      in_progress: Compilando l'archivu...
       request: Solicitar l'archivu
       size: Tamañu
     blocks: Xente que bloquiesti
@@ -234,15 +272,22 @@ ast:
   generic:
     all: Too
     changes_saved_msg: "¡Los cambeos guardáronse con ésitu!"
+    order_by: Clasificación
     save_changes: Guardar cambeos
   identity_proofs:
     authorize: Sí, autorizar
     i_am_html: Soi %{username} de %{service}.
     identity: Identidá
   imports:
+    modes:
+      merge: Mecíu
+      merge_long: Caltién los rexistros esistentes y amesta otros nuevos
+      overwrite: Sobrescritura
+      overwrite_long: Troca los rexistros actuales por otros nuevos
     preface: Pues importar los datos qu'esportares dende otra instancia, como por exemplu la llista de persones que bloquiares o tuvieres siguiendo.
     types:
       blocking: Llista de xente bloquiao
+      domain_blocking: Llista de dominios bloquiaos
       following: Llista de siguidores
       muting: Llista de xente silenciao
     upload: Xubir
@@ -262,6 +307,7 @@ ast:
     max_uses:
       one: 1 usu
       other: "%{count} usos"
+    max_uses_prompt: Nun hai llende
     prompt: Xenera y comparti enllaces con otros pa da-yos accesu a esti sirividor
     table:
       expires_at: Data de caducidá
@@ -276,12 +322,15 @@ ast:
       too_many: Nun puen axuntase más de 4 ficheros
   migrations:
     acct: nome_usuariu@dominiu de la cuenta nueva
+    incoming_migrations: Mudase dende otra cuenta
     warning:
       followers: Esta aición va mover tolos siguidores de la cuenta actual a la nueva
   notification_mailer:
     digest:
       body: Equí hai un resume de los mensaxes que nun viesti dende la última visita'l %{since}
       mention: "%{name} mentóte en:"
+    favourite:
+      title: Favoritu nuevu
     follow:
       body: "¡Agora %{name} ta siguiéndote!"
       title: Siguidor nuevu
@@ -309,19 +358,27 @@ ast:
   preferences:
     public_timelines: Llinies temporales públiques
   relationships:
+    activity: Actividá
     followers: Siguidores
     most_recent: Lo más recién
     relationship: Rellación
     remove_selected_follows: Dexar de siguir a los usuarios esbillaos
+    status: Estáu
   remote_follow:
     acct: Introduz el nome_usuariu@dominiu dende'l que lo quies facer
     no_account_html: "¿Nun tienes una cuenta? Pues <a href='%{sign_up_path}' target='_blank'>rexistrate equí</a>"
     proceed: Siguir
     prompt: 'Vas siguir a:'
+    reason_html: "<strong>¿Por qué esti pasu ye precisu?</strong> <code>%{instance}</code> seique nun seya'l sirvidor onde tas rexistráu, polo que precisamos redirixite primero al de to."
   remote_interaction:
+    favourite:
+      proceed: Siguir
+      prompt: 'Quies marcar esti barritu como favoritu:'
     reblog:
+      proceed: Siguir
       prompt: 'Quies compartir esti barritu:'
     reply:
+      proceed: Siguir
       prompt: 'Quies responder a esti barritu:'
   sessions:
     browser: Restolador
@@ -358,9 +415,12 @@ ast:
       windows: Windows
       windows_mobile: Windows Mobile
       windows_phone: Windows Phone
+    revoke: Revocar
+    revoke_success: La sesión revocóse con esitu
     title: Sesiones
   settings:
     account: Cuenta
+    account_settings: Axustes de la cuenta
     appearance: Aspeutu
     authorized_apps: Aplicaciones autorizaes
     back: Volver a Mastodon
@@ -374,6 +434,8 @@ ast:
     preferences: Preferencies
     profile: Perfil
     two_factor_authentication: Autenticación en dos pasos
+  spam_check:
+    spam_detected: Esto ye un informe automatizáu. Deteutóse spam.
   statuses:
     attached:
       image:
@@ -401,7 +463,7 @@ ast:
     visibilities:
       private: Namái siguidores
       private_long: Namái s'amuesen a los siguidores
-      public_long: Tol mundu los puen ver
+      public_long: Tol mundu puen velos
       unlisted: Nun llistar
       unlisted_long: Tol mundu puen velos pero nun se llisten nes llinies temporales públiques
   stream_entries:
@@ -411,7 +473,9 @@ ast:
   tags:
     does_not_match_previous_name: nun concasa col nome anterior
   themes:
+    contrast: Contraste altu
     default: Mastodon
+    mastodon-light: Claridá
   two_factor_authentication:
     code_hint: Introduz el códigu xeneráu pola aplicación autenticadora pa confirmar
     disable: Desactivar
diff --git a/config/locales/ca.yml b/config/locales/ca.yml
index 6cc50d6c6..1c30b6b7a 100644
--- a/config/locales/ca.yml
+++ b/config/locales/ca.yml
@@ -232,6 +232,7 @@ ca:
       deleted_status: "(tut esborrat)"
       title: Registre d'auditoria
     announcements:
+      destroyed_msg: L’anunci s’ha esborrat amb èxit!
       edit:
         title: Edita l'anunci
       empty: No s'ha trobat cap anunci.
@@ -239,9 +240,12 @@ ca:
       new:
         create: Crea un anunci
         title: Nou anunci
-      published: Publicat
-      time_range: Interval de temps
+      published_msg: L’anunci s’ha publicat amb èxit!
+      scheduled_for: Programat per a %{time}
+      scheduled_msg: Anunci programat per a ser publicat!
       title: Anuncis
+      unpublished_msg: L’anunci s’ha despublicat amb èxit!
+      updated_msg: L'anunci s'ha actualitzat correctament!
     custom_emojis:
       assign_category: Assigna una categoria
       by_domain: Domini
@@ -776,7 +780,6 @@ ca:
     changes_saved_msg: Els canvis s'han desat correctament!
     copy: Copia
     delete: Esborra
-    edit: Edita
     no_batch_actions_available: Cap accions de lot disponibles en aquesta pàgina
     order_by: Ordena per
     save_changes: Desa els canvis
@@ -950,6 +953,7 @@ ca:
     public_timelines: Línies de temps públiques
   reactions:
     errors:
+      limit_reached: Límit de diferents reaccions assolit
       unrecognized_emoji: no és un emoji reconegut
   relationships:
     activity: Activitat del compte
@@ -1083,6 +1087,7 @@ ca:
         other: "%{count} vots"
       vote: Vota
     show_more: Mostra'n més
+    show_thread: Mostra el fil
     sign_in_to_participate: Inicia la sessió per participar a la conversa
     title: '%{name}: "%{quote}"'
     visibilities:
diff --git a/config/locales/co.yml b/config/locales/co.yml
index c75fa3f21..24f7f45fc 100644
--- a/config/locales/co.yml
+++ b/config/locales/co.yml
@@ -232,6 +232,7 @@ co:
       deleted_status: "(statutu sguassatu)"
       title: Ghjurnale d’audit
     announcements:
+      destroyed_msg: Annunziu sguassatu!
       edit:
         title: Mudificà annunzii
       empty: Manc'un annunziu trovu.
@@ -239,9 +240,12 @@ co:
       new:
         create: Creà un'annunziu
         title: Novu annunziu
-      published: Pubblicatu
-      time_range: Intervallu di tempu
+      published_msg: Annunziu pubblicatu!
+      scheduled_for: Prugrammatu per %{time}
+      scheduled_msg: Annunziu prugrammatu per pubblicazione!
       title: Annunzii
+      unpublished_msg: Annunziu piattatu!
+      updated_msg: Annunziu mudificatu!
     custom_emojis:
       assign_category: Aghjunghje categuria
       by_domain: Duminiu
@@ -776,7 +780,6 @@ co:
     changes_saved_msg: Cambiamenti salvati!
     copy: Cupià
     delete: Sguassà
-    edit: Mudificà
     no_batch_actions_available: Alcun'azzione di gruppu nant'à sta pagina
     order_by: Urdinà da
     save_changes: Salvà e mudificazione
@@ -950,6 +953,7 @@ co:
     public_timelines: Linee pubbliche
   reactions:
     errors:
+      limit_reached: Limita di reazzione sfarente tocca
       unrecognized_emoji: ùn hè micca un'emoji ricunisciuta
   relationships:
     activity: Attività di u contu
@@ -1083,6 +1087,7 @@ co:
         other: "%{count} voti"
       vote: Vutà
     show_more: Vede di più
+    show_thread: Vede u filu
     sign_in_to_participate: Cunnettatevi per participà à a cunversazione
     title: '%{name}: "%{quote}"'
     visibilities:
diff --git a/config/locales/cs.yml b/config/locales/cs.yml
index 547468e50..bab669e7e 100644
--- a/config/locales/cs.yml
+++ b/config/locales/cs.yml
@@ -206,11 +206,13 @@ cs:
         change_email_user: Uživatel %{name} změnil e-mailovou adresu uživatele %{target}
         confirm_user: Uživatel %{name} potvrdil e-mailovou adresu uživatele %{target}
         create_account_warning: Uživatel %{name} poslal varování uživateli %{target}
+        create_announcement: Uživatel %{name} vytvořil nové oznámení %{target}
         create_custom_emoji: Uživatel %{name} nahrál nové emoji %{target}
         create_domain_allow: Uživatel %{name} přidal doménu %{target} na bílou listinu
         create_domain_block: Uživatel %{name} zablokoval doménu %{target}
         create_email_domain_block: Uživatel %{name} přidal e-mailovou doménu %{target} na černou listinu
         demote_user: Uživatel %{name} degradoval uživatele %{target}
+        destroy_announcement: Uživatel %{name} odstranil oznámení %{target}
         destroy_custom_emoji: Uživatel %{name} zničil emoji %{target}
         destroy_domain_allow: Uživatel %{name} odebral doménu %{target} z bílé listiny
         destroy_domain_block: Uživatel %{name} odblokoval doménu %{target}
@@ -232,10 +234,25 @@ cs:
         unassigned_report: Uživatel %{name} odebral hlášení %{target}
         unsilence_account: Uživatel %{name} zrušil ztišení uživatele %{target}
         unsuspend_account: Uživatel %{name} zrušil pozastavení účtu uživatele %{target}
+        update_announcement: Uživatel %{name} aktualizoval oznámení %{target}
         update_custom_emoji: Uživatel %{name} aktualizoval emoji %{target}
         update_status: Uživatel %{name} aktualizoval toot uživatele %{target}
       deleted_status: "(smazaný toot)"
       title: Auditovací protokol
+    announcements:
+      destroyed_msg: Oznámení bylo úspěšně odstraněno
+      edit:
+        title: Upravit oznámení
+      empty: Nebyla nalezena žádná oznámení.
+      new:
+        create: Vytvořit oznámení
+        title: Nové oznámení
+      published_msg: Oznámení bylo úspěšně zveřejněno
+      scheduled_for: Naplánováno na %{time}
+      scheduled_msg: Zveřejnění oznámení bylo naplánováno
+      title: Oznámení
+      unpublished_msg: Zveřejněné oznámení bylo skryto
+      updated_msg: Oznámení bylo úspěšně aktualizováno
     custom_emojis:
       assign_category: Přiřadit kategorii
       by_domain: Doména
@@ -384,6 +401,8 @@ cs:
       title: Pozvánky
     pending_accounts:
       title: Čekající účty (%{count})
+    relationships:
+      title: Vztahy uživatele %{acct}
     relays:
       add_new: Přidat nový most
       delete: Smazat
@@ -671,6 +690,9 @@ cs:
     hint_html: "<strong>Tip:</strong> Po dobu jedné hodiny vás o heslo nebudeme znovu žádat."
     invalid_password: Neplatné heslo
     prompt: Pokračujte potvrzením hesla
+  date:
+    formats:
+      default: "%-d. %b %Y"
   datetime:
     distance_in_words:
       about_x_hours: "%{count} hod"
@@ -747,6 +769,7 @@ cs:
     hint_html: "<strong>Co jsou zvýrazněné hashtagy?</strong> Zobrazují se prominentně na vašem veřejném profilu a dovolují lidem prohlížet si vaše veřejné příspěvky konkrétně pod těmi hashtagy. Je to skvělý nástroj pro sledování kreativních děl nebo dlouhodobých projektů."
   filters:
     contexts:
+      account: Profily
       home: Domovská časová osa
       notifications: Oznámení
       public: Veřejné časové osy
@@ -771,6 +794,7 @@ cs:
     all: Všechny
     changes_saved_msg: Změny byly úspěšně uloženy!
     copy: Kopírovat
+    delete: Smazat
     no_batch_actions_available: Pro tuto stránku nejsou dostupné žádné souhrnné akce
     order_by: Seřadit podle
     save_changes: Uložit změny
@@ -950,6 +974,10 @@ cs:
     other: Ostatní
     posting_defaults: Výchozí možnosti psaní
     public_timelines: Veřejné časové osy
+  reactions:
+    errors:
+      limit_reached: Dosažen limit různých reakcí
+      unrecognized_emoji: není známý smajlík
   relationships:
     activity: Aktivita účtu
     dormant: Nečinné
diff --git a/config/locales/cy.yml b/config/locales/cy.yml
index ee8807d20..afca0212a 100644
--- a/config/locales/cy.yml
+++ b/config/locales/cy.yml
@@ -214,11 +214,13 @@ cy:
         change_email_user: Newidodd %{name} gyfeiriad e-bost y defnyddiwr %{target}
         confirm_user: Cadarnhaodd %{name} gyfeiriad e-bost y defnyddiwr %{target}
         create_account_warning: Anfonwyd rhybudd i %{target} gan %{name}
+        create_announcement: Wnaeth %{name} creu cyhoeddiad newydd %{target}
         create_custom_emoji: Uwchlwythodd %{name} emoji newydd %{target}
         create_domain_allow: Gwynrestrodd %{name} y parth %{target}
         create_domain_block: Blociodd %{name} y parth %{target}
         create_email_domain_block: Cosbrestrwyd parth e-bost %{target} gan %{name}
         demote_user: Diraddiodd %{name} y defnyddiwr %{target}
+        destroy_announcement: Wnaeth %{name} dileu cyhoeddiad newydd %{target}
         destroy_custom_emoji: Dinistriodd %{name} emoji %{target}
         destroy_domain_allow: Tynnodd %{name} parth %{target} o'r gwynrestr
         destroy_domain_block: Dadflociodd %{name} y parth %{target}
@@ -240,10 +242,26 @@ cy:
         unassigned_report: Dadbenododd %{name} adroddiad %{target}
         unsilence_account: Terfynodd %{name} dawelu cyfrif %{target}
         unsuspend_account: Terfynodd %{name} yr ataliad ar gyfrif %{target}
+        update_announcement: Wnaeth %{name} diweddaru cyhoeddiad newydd %{target}
         update_custom_emoji: Diweddarodd %{name} emoji %{target}
         update_status: Diweddarodd %{name} statws gan %{target}
       deleted_status: "(statws wedi ei ddileu)"
       title: Log archwilio
+    announcements:
+      destroyed_msg: Cyhoeddiad wedi'i ddileu yn llwyddianus!
+      edit:
+        title: Golygu cyhoeddiad
+      empty: Dim gyhoeddiad ar gael.
+      live: Byw
+      new:
+        create: Creu cyhoeddiad
+        title: Cyhoeddiad newydd
+      published_msg: Cyhoeddiad wedi'i gyhoeddi'n llwyddianus!
+      scheduled_for: Wedi'i amserlenni ar gyfer %{time}
+      scheduled_msg: Cyhoeddiad wedi'i amserlenni ar gyfer cyhoeddiad!
+      title: Cyhoeddiadau
+      unpublished_msg: Cyhoeddiad wedi'i angyhoeddi'n llwyddianus!
+      updated_msg: Cyhoeddiad wedi'i ddiweddaru yn llwyddianus!
     custom_emojis:
       assign_category: Neilltuo categori
       by_domain: Parth
@@ -396,6 +414,8 @@ cy:
       title: Gwahoddiadau
     pending_accounts:
       title: Cyfrifau yn aros (%{count})
+    relationships:
+      title: Perthnasau %{acct}
     relays:
       add_new: Ychwanegau relái newydd
       delete: Dileu
@@ -687,6 +707,9 @@ cy:
     hint_html: "<strong>Awgrym:</strong> Ni fyddwn yn gofyn i chi am eich cyfrinair eto am yr awr nesaf."
     invalid_password: Cyfrinair annilys
     prompt: Cadarnhewch gyfrinair i barhau
+  date:
+    formats:
+      default: "%b %d, %Y"
   datetime:
     distance_in_words:
       about_x_hours: "%{count}awr"
@@ -763,6 +786,7 @@ cy:
     hint_html: "<strong>Beth yw hashnodau nodedig?</strong> Mae'r rhain yn cael ei arddangos yn amlwg ar eich proffil cyhoeddus ac yn gadael i bobl pori eich pyst cyhoeddus o dan y hashnodau rhain yn benodol. Rydynt yn declyn grêt ar gyfer tracio gweithiau creadigol neu brosiectau hir-dymor."
   filters:
     contexts:
+      account: Proffilau
       home: Ffrwd gartref
       notifications: Hysbysiadau
       public: Ffrwd gyhoeddus
@@ -787,6 +811,7 @@ cy:
     all: Popeth
     changes_saved_msg: Llwyddwyd i gadw y newidiadau!
     copy: Copïo
+    delete: Dileu
     no_batch_actions_available: Dim gweithredau llwyth ar gael ar y dudalen hon
     order_by: Trefnu wrth
     save_changes: Cadw newidiadau
@@ -974,11 +999,16 @@ cy:
     other: Arall
     posting_defaults: Rhagosodiadau postio
     public_timelines: Ffrydau gyhoeddus
+  reactions:
+    errors:
+      limit_reached: Cyfwng o ymatebion wahanol wedi'i cyrraedd
+      unrecognized_emoji: ddim yn emoji adnabyddwy
   relationships:
     activity: Gweithgareddau cyfrif
     dormant: Segur
     followers: Dilynwyr
     following: Yn dilyn
+    invited: Wedi gwahodd
     last_active: Gweithred ddiwethaf
     most_recent: Yn diweddaraf
     moved: Wedi symud
@@ -1127,6 +1157,7 @@ cy:
         zero: "%{count} pleidlais"
       vote: Pleidleisio
     show_more: Dangos mwy
+    show_thread: Dangos edefyn
     sign_in_to_participate: Mengofnodwch i gymryd rhan yn y sgwrs
     title: '%{name}: "%{quote}"'
     visibilities:
diff --git a/config/locales/de.yml b/config/locales/de.yml
index 0fef69dff..50f994473 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -232,6 +232,7 @@ de:
       deleted_status: "(gelöschter Beitrag)"
       title: Überprüfungsprotokoll
     announcements:
+      destroyed_msg: Ankündigung erfolgreich gelöscht!
       edit:
         title: Ankündigung bearbeiten
       empty: Keine Ankündigungen gefunden.
@@ -239,9 +240,12 @@ de:
       new:
         create: Ankündigung erstellen
         title: Neue Ankündigung
-      published: Veröffentlicht
-      time_range: Zeitraum
+      published_msg: Ankündigung erfolgreich erstellt!
+      scheduled_for: Geplant für %{time}
+      scheduled_msg: Ankündigung ist zur Veröffentlichung vorgemerkt!
       title: Ankündigungen
+      unpublished_msg: Ankündigung ist jetzt nicht mehr sichtbar!
+      updated_msg: Ankündigung erfolgreich geändert!
     custom_emojis:
       assign_category: Kategorie zuweisen
       by_domain: Domain
@@ -776,7 +780,6 @@ de:
     changes_saved_msg: Änderungen gespeichert!
     copy: Kopieren
     delete: Löschen
-    edit: Bearbeiten
     no_batch_actions_available: Keine Massenaktionen auf dieser Seite verfügbar
     order_by: Sortieren nach
     save_changes: Änderungen speichern
@@ -1084,6 +1087,7 @@ de:
         other: "%{count} Stimmen"
       vote: Abstimmen
     show_more: Mehr anzeigen
+    show_thread: Zeige Konversation
     sign_in_to_participate: Melde dich an, um an der Konversation teilzuhaben
     title: '%{name}: "%{quote}"'
     visibilities:
diff --git a/config/locales/devise.ar.yml b/config/locales/devise.ar.yml
index ca0b657e8..2033e082d 100644
--- a/config/locales/devise.ar.yml
+++ b/config/locales/devise.ar.yml
@@ -70,6 +70,7 @@ ar:
       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/devise.fa.yml b/config/locales/devise.fa.yml
index 0954c8484..be29fa7b8 100644
--- a/config/locales/devise.fa.yml
+++ b/config/locales/devise.fa.yml
@@ -3,15 +3,15 @@ fa:
   devise:
     confirmations:
       confirmed: نشانی ایمیل شما با موفقیت تأیید شد.
-      send_instructions: تا دقایقی دیگر ایمیلی خواهید گرفت که به شما می‌گوید چگونه باید نشانی ایمیل خود را تأیید کنید.
-      send_paranoid_instructions: اگر ایمیل شما در پایگاه دادهٔ ما موجود باشد، تا دقایقی دیگر ایمیلی خواهید گرفت که به شما می‌گوید چگونه باید نشانی ایمیل خود را تأیید کنید.
+      send_instructions: تا دقایقی دیگر ایمیلی خواهید گرفت که به شما می‌گوید چگونه باید نشانی ایمیل خود را تأیید کنید. اگر این ایمیل نیامد، لطفاً پوشهٔ هرزنامه‌هایتان را بررسی کنید.
+      send_paranoid_instructions: اگر ایمیل شما در پایگاه دادهٔ ما موجود باشد، تا دقایقی دیگر ایمیلی خواهید گرفت که به شما می‌گوید چگونه باید نشانی ایمیل خود را تأیید کنید. اگر این ایمیل نیامد، لطفاً پوشهٔ هرزنامه‌هایتان را بررسی کنید.
     failure:
-      already_authenticated: شما الان هم وارد سیستم هستید.
+      already_authenticated: همین الآن هم وارد شده‌اید.
       inactive: حساب شما هنوز فعال نشده است.
-      invalid: خطای %{authentication_keys} یا رمز نامعتبر.
+      invalid: "%{authentication_keys} یا رمز نامعتبر."
       last_attempt: پیش از آن که حساب شما قفل شود، یک فرصت دیگر دارید.
       locked: حساب شما قفل شده است.
-      not_found_in_database: خطای %{authentication_keys} یا رمز نامعتبر.
+      not_found_in_database: "%{authentication_keys} یا رمز نامعتبر."
       pending: حساب شما همچنان در دست بررسی است.
       timeout: مهلت این ورود شما به سر رسید. برای ادامه، دوباره وارد شوید.
       unauthenticated: برای ادامه باید وارد شوید یا ثبت نام کنید.
@@ -22,18 +22,18 @@ fa:
         action_with_app: تأیید و بازگشت به %{app}
         explanation: شما با این نشانی ایمیل حسابی در %{host} باز کرده‌اید. با یک کلیک می‌توانید این حساب را فعال کنید. اگر شما چنین کاری نکردید، لطفاً این ایمیل را نادیده بگیرید.
         explanation_when_pending: شما با این نشانی ایمیل برای %{host} درخواست دعوت‌نامه داده‌اید. اگر ایمیل خود را تأیید کنید، ما درخواست شما را بررسی خواهیم کرد. تا وقتی بررسی تمام نشده، شما نمی‌توانید به حساب خود وارد شوید. اگر درخواست شما رد شود، ما اطلاعاتی را که از شما داریم پاک خواهیم کرد پس نیازی به کاری از سمت شما نخواهد بود. اگر شما چنین درخواستی نداده‌اید، لطفاً این ایمیل را نادیده بگیرید.
-        extra_html: لطفاً همچنین <a href="%{terms_path}">قانون‌های این سرور</a> و <a href="%{policy_path}">شرایط کاربری</a> آن را ببینید.
-        subject: 'ماستدون: راهنمایی برای تأیید %{instance}'
+        extra_html: لطفاً همچنین <a href="%{terms_path}">قوانین کارساز</a> و <a href="%{policy_path}">شرایط خدمتمان</a> را بررسی کنید.
+        subject: 'ماستودون: دستورالعمل تأیید برای %{instance}'
         title: تأیید نشانی ایمیل
       email_changed:
         explanation: 'نشانی ایمیل حساب شما تغییر می‌کند به:'
         extra: اگر شما ایمیل خود را عوض نکردید، شاید کسی به حساب شما دسترسی پیدا کرده است. در این صورت لطفاً هر چه زودتر رمز حسابتان را عوض کنید. اگر رمزتان دیگر کار نمی‌کند، لطفاً با مدیر سرور تماس بگیرید.
-        subject: 'ماستدون: نشانی ایمیل عوض شد'
+        subject: 'ماستودون: نشانی ایمیل عوض شد'
         title: نشانی ایمیل تازه
       password_change:
         explanation: رمز حساب شما تغییر کرد.
         extra: اگر شما رمز حسابتان را تغییر ندادید، شاید کسی به حساب شما دسترسی پیدا کرده است. در این صورت لطفاً هر چه زودتر رمز حسابتان را عوض کنید. اگر رمزتان دیگر کار نمی‌کند، لطفاً با مدیر سرور تماس بگیرید.
-        subject: 'ماستدون: رمزتان عوض شد'
+        subject: 'ماستودون: رمزتان عوض شد'
         title: رمزتان عوض شد
       reconfirmation_instructions:
         explanation: نشانی تازه را تأیید کنید تا ایمیل‌تان عوض شود.
@@ -44,47 +44,47 @@ fa:
         action: تغییر رمز
         explanation: شما رمز تازه‌ای برای حسابتان درخواست کردید.
         extra: اگر شما چنین درخواستی نکردید، لطفاً این ایمیل را نادیده بگیرید. تا زمانی که شما پیوند بالا را باز نکنید و رمز تازه‌ای نسازید، رمز شما عوض نخواهد شد.
-        subject: 'ماستدون: راهنمایی برای بازنشانی رمز'
+        subject: 'ماستودون: راهنمایی برای بازنشانی رمز'
         title: بازنشانی رمز
       two_factor_disabled:
         explanation: ورود دومرحله‌ای برای حساب شما غیرفعال شده است. از الان می‌توانید تنها با نشانی ایمیل و رمز وارد حساب خود شوید.
-        subject: 'ماستدون: ورود دومرحله‌ای فعال نیست'
+        subject: 'ماستودون: تأیید هویت دو مرحله‌ای از کار افتاد'
         title: ورود دومرحله‌ای غیرفعال
       two_factor_enabled:
         explanation: ورود دومرحله‌ای برای حساب شما فعال شده است. برای ورود به کدی نیاز خواهید داشت که نرم‌افزار TOTP از پیش تنظیم شده برایتان می‌سازد.
-        subject: 'ماستدون: ورود دومرحله‌ای فعال است'
+        subject: 'ماستودون: تأیید هویت دومرحله‌ای به کار افتاد'
         title: ورود دومرحله‌ای فعال
       two_factor_recovery_codes_changed:
-        explanation: کدهای بازیابی قبلی نامعتبر شده‌اند و کدهای تازه‌ای ساخته شده‌اند.
-        subject: 'ماستدون: کدهای بازیابی برای ورود دومرحله‌ای دوباره ساخته شدند'
-        title: کدهای ورود دومرحله‌ای تغییر کرد
+        explanation: کدهای بازیابی پیشین نامعتبر شده و کدهای جدیدی ساخته شدند.
+        subject: 'ماستودون: کدهای بازیابی برای تأیید هویت دو مرحله‌ای دوباره ساخته شدند'
+        title: کدهای بازیابی تأیید هویت دو مرحله‌ای عوض شده‌اند
       unlock_instructions:
-        subject: 'ماستدون: راهنمایی برای بازکردن قفل'
+        subject: 'ماستودون: دستورالعمل‌های قفل‌گشایی'
     omniauth_callbacks:
-      failure: تصدیق اعتبار شما از راه %{kind} انجام نشد زیرا "%{reason}".
-      success: تصدیق اعتبار شما از %{kind} با موفقیت انجام شد.
+      failure: تآیید هویتتان از %{kind} نتوانست انجام شود چرا که «%{reason}».
+      success: تأیید هویت از حساب %{kind} با موفقیت انجام شد.
     passwords:
       no_token: این صفحه را تنها از راه یک ایمیل بازنشانی رمز می‌شود دید. اگر از چنین ایمیلی می‌آیید، لطفاً مطمئن شوید که نشانی موجود در ایمیل را کامل به کار برده‌اید.
-      send_instructions: اگر ایمیل شما در پایگاه دادهٔ ما موجود باشد، تا دقایقی دیگر یک ایمیل بازیابی رمز دریافت خواهید کرد.
-      send_paranoid_instructions: اگر ایمیل شما در پایگاه دادهٔ ما موجود باشد، تا دقایقی دیگر یک ایمیل بازیابی رمز دریافت خواهید کرد.
+      send_instructions: اگر ایمیل شما در پایگاه دادهٔ ما موجود باشد، تا دقایقی دیگر یک ایمیل بازیابی رمز دریافت خواهید کرد. اگر این ایمیل نیامد، لطفاً پوشهٔ هرزنامه‌هایتان را بررسی کنید.
+      send_paranoid_instructions: اگر ایمیل شما در پایگاه دادهٔ ما موجود باشد، تا دقایقی دیگر یک ایمیل بازیابی رمز دریافت خواهید کرد. اگر این ایمیل نیامد، لطفاً پوشهٔ هرزنامه‌هایتان را بررسی کنید.
       updated: رمز شما با موفقیت تغییر کرد. شما الان وارد سیستم هستید.
       updated_not_active: رمز شما با موفقیت تغییر کرد.
     registrations:
       destroyed: بدرود! حساب شما با موفقیت لغو شد. امیدواریم دوباره شما را ببینیم.
       signed_up: خوش آمدید! شما با موفقیت ثبت نام کردید.
-      signed_up_but_inactive: خوش آمدید! شما با موفقیت ثبت نام کردید. ولی هنوز وارد سیستم نیستید زیرا حساب شما هنوز فعال نیست.
-      signed_up_but_locked: خوش آمدید! شما با موفقیت ثبت نام کردید. ولی هنوز وارد سیستم نیستید زیرا حساب شما قفل شده است.
+      signed_up_but_inactive: خوش آمدید! با موفقیت ثبت نام کردید. ولی هنوز وارد نشده‌اید؛ چرا که حسابتان هنوز فعال نشده است.
+      signed_up_but_locked: خوش آمدید! با موفقیت ثبت نام کردید. ولی هنوز وارد نشده‌اید؛ چرا که حسابتان قفل است.
       signed_up_but_pending: پیغامی که دارای یک پیوند برای تأیید است به نشانی ایمیل شما فرستاده شده. پس از این‌که پیوند را باز کردید، ما درخواست شما را بررسی خواهیم کرد. اگر درخواست شما پذیرفته شود، به شما خواهیم گفت.
-      signed_up_but_unconfirmed: یک پیغام برای تأیید به نشانی ایمیل شما فرستاده شده. لطفاً پیوند موجود در ایمیل را دنبال کنید تا حسابتان فعال شود.
-      update_needs_confirmation: شما با موفقیت حسابتان را به‌روز کردید، ولی لازم است که ما نشانی ایمیل تازهٔ شما را تأیید کنیم. لطفاً ایمیل خود را ببینید و پیوند موجود در ایمیل را دنبال کنید تا تا نشانی ایمیل تازهٔ شما تأیید شود.
-      updated: حساب شما با موفقبت به‌روز شد.
+      signed_up_but_unconfirmed: پیامی با یک پیوند تأیید به نشانی ایمیل شما فرستاده شده. لطفاً پیوند موجود در ایمیل را دنبال کنید تا حسابتان فعال شود. اگر این ایمیل نیامد، لطفاً پوشهٔ هرزنامه‌هایتان را بررسی کنید.
+      update_needs_confirmation: شما با موفقیت حسابتان را به‌روز کردید، ولی لازم است که ما نشانی ایمیل تازهٔ شما را تأیید کنیم. لطفاً ایمیل خود را ببینید و پیوند موجود در ایمیل را دنبال کنید تا تا نشانی ایمیل تازهٔ شما تأیید شود. اگر این ایمیل نیامد، لطفاً پوشهٔ هرزنامه‌هایتان را بررسی کنید.
+      updated: حسابتان با موفقبت به‌روز شد.
     sessions:
       already_signed_out: با موفقیت خارج شدید.
       signed_in: با موفقیت وارد شدید.
       signed_out: با موفقیت خارج شدید.
     unlocks:
-      send_instructions: تا دقایقی دیگر ایمیلی خواهید گرفت که به شما می‌گوید چگونه باید قفل حساب خود را باز کنید.
-      send_paranoid_instructions: اگر حساب شما موجود باشد، تا دقایقی دیگر ایمیلی خواهید گرفت که به شما می‌گوید چگونه باید قفل آن را باز کنید.
+      send_instructions: تا دقایقی دیگر ایمیلی خواهید گرفت که به شما می‌گوید چگونه باید قفل حساب خود را باز کنید. اگر این ایمیل نیامد، لطفاً پوشهٔ هرزنامه‌هایتان را بررسی کنید.
+      send_paranoid_instructions: اگر حساب شما موجود باشد، تا دقایقی دیگر ایمیلی خواهید گرفت که به شما می‌گوید چگونه باید قفل آن را باز کنید. اگر این ایمیل نیامد، لطفاً پوشهٔ هرزنامه‌هایتان را بررسی کنید.
       unlocked: قفل حساب شما با موفقیت باز شد. لطفاً برای ادامه وارد سیستم شوید.
   errors:
     messages:
@@ -94,5 +94,5 @@ fa:
       not_found: پیدا نشد
       not_locked: قفل نبود
       not_saved:
-        one: 'خطایی نگذاشت که این %{resource} ذخیره شود:'
-        other: 'به خاطر %{count} خطا، این %{resource} ذخیره نشد:'
+        one: 'خطایی مانع از ذخیرهٔ %{resource} شد:'
+        other: "%{count} خطا مانع از ذخیرهٔ %{resource} شدند:"
diff --git a/config/locales/devise.gl.yml b/config/locales/devise.gl.yml
index 71439573b..f2eb2b77b 100644
--- a/config/locales/devise.gl.yml
+++ b/config/locales/devise.gl.yml
@@ -6,10 +6,10 @@ gl:
       send_instructions: Vas recibir un email coas instrucións para confirmar o teu enderezo de email dentro dalgúns minutos. Por favor, comproba o cartafol de spam se non recibiches o correo.
       send_paranoid_instructions: Se o teu enderezo de email xa existira na nosa base de datos, vas recibir un correo coas instrucións de confirmación dentro dalgúns minutos. Por favor, comproba o cartafol de spam se non recibiches o correo.
     failure:
-      already_authenticated: Xa estás rexistrado.
+      already_authenticated: Xa estás conectada.
       inactive: A túa conta aínda non está activada.
       invalid: "%{authentication_keys} ou contrasinal non validos."
-      last_attempt: Tes máis dun intento antes de que a túa conta fique bloqueada.
+      last_attempt: Tes un intento máis antes de que a túa conta fique bloqueada.
       locked: A túa conta está bloqueada.
       not_found_in_database: "%{authentication_keys} ou contrasinal non válidos."
       pending: A túa conta aínda está baixo revisión.
@@ -21,20 +21,20 @@ gl:
         action: Verificar o enderezo de email
         action_with_app: Confirmar e voltar a %{app}
         explanation: Creaches unha conta en %{host} con este enderezo de email. Estás a un clic de activala. Se non foches ti o que fixeches este rexisto, por favor ignora esta mensaxe.
-        explanation_when_pending: Solicitaches un convite para %{host} com este enderezo de email. Logo de que confirmes o teu enderezo de email, imos revisar a túa inscrición. Podes iniciar sesión para mudar os teus datos ou eliminar a túa conta, mais non poderás aceder á meirande parte das funcións até que a túa conta sexa aprobada. Se a túa inscrición for rexeitada, os teus datos serán eliminados, polo que non será necesaria calquera acción adicional da túa parte. Se non solicitaches este convite, por favor, ignora este correo.
+        explanation_when_pending: Solicitaches un convite para %{host} con este enderezo de email. Logo de que confirmes o teu enderezo de email, imos revisar a túa inscrición. Podes iniciar sesión para mudar os teus datos ou eliminar a túa conta, mais non poderás aceder á meirande parte das funcións até que a túa conta sexa aprobada. Se a túa inscrición for rexeitada, os teus datos serán eliminados, polo que non será necesaria calquera acción adicional da túa parte. Se non solicitaches este convite, por favor, ignora este correo.
         extra_html: Por favor, le <a href="%{terms_path}">as regras do servidor</a> e os <a href="%{policy_path}">nosos termos do servizo</a>.
         subject: 'Mastodon: Instrucións de confirmación para %{instance}'
         title: Verificar o enderezo de email
       email_changed:
         explanation: 'O email asociado á túa conta será mudado a:'
-        extra: Se non mudaches o teu email é posíbel que alguén teña conseguido acceder á túa conta. Por favor muda o teu contrasinal de xeito imediato ou entra en contacto cun administrador do servidor se ficaste sen acceso á túa conta.
+        extra: Se non mudaches o teu email é posíbel que alguén teña conseguido acceder á túa conta. Por favor muda o teu contrasinal de xeito imediato ou entra en contacto cun administrador do servidor se non podes acceder a túa conta.
         subject: 'Mastodon: Email mudado'
         title: Novo enderezo de email
       password_change:
         explanation: O contrasinal da túa conta foi mudado.
-        extra: Se non mudaches o teu contrasinal, é posíbel que alguén teña conseguido acceder á túa conta. Por favor muda o teu contrasinal de xeito imediato ou entra en contato cun administrador do servidor se ficaste sen acesso á túa conta.
+        extra: Se non mudaches o teu contrasinal, é posíbel que alguén teña conseguido acceder á túa conta. Por favor muda o teu contrasinal de xeito imediato ou entra en contato cun administrador do servidor se non podes acceder a túa conta.
         subject: 'Mastodon: Contrasinal mudado'
-        title: Contrainal mudado
+        title: Contrasinal mudado
       reconfirmation_instructions:
         explanation: Confirma o teu novo enderezo para mudar o email.
         extra: Se esta mudanza non foi comezada por ti, por favor ignora este email. O enderezo de email para a túa conta do Mastodon non mudará mentres non accedas á ligazón de enriba.
diff --git a/config/locales/devise.kab.yml b/config/locales/devise.kab.yml
index ccfd78ca9..650ade1e4 100644
--- a/config/locales/devise.kab.yml
+++ b/config/locales/devise.kab.yml
@@ -8,42 +8,42 @@ kab:
     failure:
       already_authenticated: Aqla-k teqqneḍ yakan.
       inactive: Amiḍan-inek mazal ur yermed ara.
-      invalid: Tella tuccḍa deg %{authentication_keys} neɣ deg wawal uffir.
-      last_attempt: Ɣur-k yiwen n uɛraḍ-nniḍen kan qbel ad yettucekkel umiḍan-ik.
+      invalid: Tella tuccḍa deg %{authentication_keys} neγ deg wawal uffir.
+      last_attempt: Γur-k yiwen n uɛraḍ-nniḍen kan send ad yettucekkel umiḍan-ik.
       locked: Amiḍan-ik yewḥel.
-      not_found_in_database: Tella tuccḍa deg %{authentication_keys} neɣ deg wawal uffir.
-      pending: Amiḍan-inek mazal-it deg ɛiwed n tmuɣli.
-      timeout: Tiɣimit n tuqqna tezri. Ma ulac aɣilif ɛiwed tuqqna akken ad tkemmleḍ.
-      unauthenticated: Ilaq ad teqqneḍ neɣ ad tjerrḍeḍ akken ad tkemmelḍ.
+      not_found_in_database: Tella tuccḍa deg %{authentication_keys} neγ deg wawal uffir.
+      pending: Amiḍan-inek mazal-it deg ɛiwed n tmuγli.
+      timeout: Tiγimit n tuqqna tezri. Ma ulac aγilif ɛiwed tuqqna akken ad tkemmleḍ.
+      unauthenticated: Ilaq ad teqqneḍ neγ ad tjerrḍeḍ akken ad tkemmelḍ.
       unconfirmed: Ilaq ad wekdeḍ tansa-inek imayl akken ad tkemmelḍ.
     mailer:
       confirmation_instructions:
         action: Senqed tansa-inek imayl
-        action_with_app: Wekked sakkin uɣal ɣer %{app}
+        action_with_app: Wekked sakkin uγal γer %{app}
         explanation: Aqla-k terniḍ amiḍan deg %{host} s tansa imayl-agi. Mazal-ak yiwen utekki akken ad t-tremdeḍ. Ma mačči d kečč i yessutren ay-agi, ttxil-k ssinef izen-a.
-        explanation_when_pending: Tsutreḍ-d ajerred deg %{host} s tansa-agi imayl. Ad nɣeṛ asuter-ik ticki tsentmeḍ tansa-ik imayl. Send asentem, ur tezmireḍ ara ad teqqneḍ ɣer umiḍan-ik. Ma yella nugi asuter-ik, isefka-ik ad ttwakksen seg uqeddac, ihi ulac tigawt-nniḍen ara k-d-yettuqeblen. Ma mačči d kečč i yellan deffir n usuter-agi, ttxil-k ssinef izen-agi.
-        extra_html: Ttxil-k ẓer daɣen <a href="%{terms_path}">ilugan n uqeddac</a> akked <a href="%{policy_path}">twetlin n useqdec</a>.
-        subject: 'Mastudun: Asentem n ujerred deg uqeddac %{instance}'
+        explanation_when_pending: Tsutreḍ-d ajerred deg %{host} s tansa-agi imayl. Ad nγeṛ asuter-ik ticki tsentmeḍ tansa-ik imayl. Send asentem, ur tezmireḍ ara ad teqqneḍ γer umiḍan-ik. Ma yella nugi asuter-ik, isefka-ik ad ttwakksen seg uqeddac, ihi ulac tigawt-nniḍen ara k-d-yettuqeblen. Ma mačči d kečč i yellan deffir n usuter-agi, ttxil-k ssinef izen-agi.
+        extra_html: Ttxil-k ẓer daγen <a href="%{terms_path}">ilugan n uqeddac</a> akked <a href="%{policy_path}">twetlin n useqdec</a>.
+        subject: 'Maṣṭudun: Asentem n ujerred deg uqeddac %{instance}'
         title: Senqed tansa-inek imayl
       email_changed:
-        extra: Ma mačči d kečč i ibeddlen tansa imayl, ihi yezmer d alebɛaḍ i ikecmen ɣer umiḍan-ik. Ttxil-k beddel awal-ik uffir tura neɣ siwel i unedbal n uqeddac ma tḥesleḍ berra n umiḍan-ik.
-        subject: 'Masṭudun: Imayl-ik yettubeddel'
+        extra: Ma mačči d kečč i ibeddlen tansa imayl, ihi yezmer d alebɛaḍ i ikecmen γer umiḍan-ik. Ttxil-k beddel awal-ik uffir tura neγ siwel i unedbal n uqeddac ma tḥesleḍ berra n umiḍan-ik.
+        subject: 'Maṣṭudun: Imayl-ik yettubeddel'
         title: Tansa imayl tamaynut
       password_change:
         explanation: Awal uffir n umiḍan-ik yettubeddel.
-        extra: Ma mačči d kečč i ibeddlen awal uffir, ihi yezmer d alebɛaḍ i ikecmen ɣer umiḍan-ik. Ttxil-k beddel awal-ik uffir tura neɣ siwel i unedbal n uqeddac ma tḥesleḍ berra n umiḍan-ik.
-        subject: 'Masṭudun: Yettubeddel wawal-ik uffir'
+        extra: Ma mačči d kečč i ibeddlen awal uffir, ihi yezmer d alebɛaḍ i ikecmen γer umiḍan-ik. Ttxil-k beddel awal-ik uffir tura neγ siwel i unedbal n uqeddac ma tḥesleḍ berra n umiḍan-ik.
+        subject: 'Maṣṭudun: Yettubeddel wawal-ik uffir'
         title: Awal uffir yettubeddel
       reconfirmation_instructions:
         explanation: Sentem tansa imayl tamaynut akken ad tbeddleḍ imayl-inek.
-        subject: 'Mastudun: Sentem tansa imayl n %{instance}'
+        subject: 'Maṣṭudun: Sentem tansa imayl n %{instance}'
         title: Senqed tansa-inek imayl
       reset_password_instructions:
         action: Beddel awal uffir
         explanation: Tessutreḍ awal uffir amaynut i umiḍan-ik.
         title: Aɛiwed n wawal uffir
     passwords:
-      send_paranoid_instructions: Ma nufa tansa-inek imayl tella deg uzadur-nneɣ n yisefka, ad n-teṭṭfeḍ izen deg kra n tesdatin, deg-s assaɣ i uɛawed n wawal uffir. Ma ur k-in-yewwiḍ ara yizen, ttxil-k ẓer deg ukaram spam.
+      send_paranoid_instructions: Ma nufa tansa-inek imayl tella deg uzadur-nneγ n yisefka, ad n-teṭṭfeḍ izen deg kra n tesdatin, deg-s assaγ i uɛawed n wawal uffir. Ma ur k-in-yewwiḍ ara yizen, ttxil-k ẓer deg ukaram spam.
       updated: Awal-ik uffir yettwabeddel mebla ugur. Aqla-k tura tjerrḍeḍ.
       updated_not_active: Awal-ik uffir yettwabeddel mebla ugur.
     registrations:
@@ -51,7 +51,7 @@ kab:
       signed_up: Anṣuf! Aqla-k tkecmeḍ.
     sessions:
       signed_in: Aqla-k teqqneḍ.
-      signed_out: Aqla-k teffɣeḍ.
+      signed_out: Aqla-k teffγeḍ.
   errors:
     messages:
       not_found: ulac-it
diff --git a/config/locales/devise.pl.yml b/config/locales/devise.pl.yml
index a0af51c32..6336a5794 100644
--- a/config/locales/devise.pl.yml
+++ b/config/locales/devise.pl.yml
@@ -46,6 +46,18 @@ pl:
         extra: Jeżeli to nie Ty, zignoruj tą wiadomość. Twoje hasło nie ulegnie zmianie, jeżeli nie wykorzystasz powyższego odnośnika i nie utworzysz nowego hasła.
         subject: 'Mastodon: Instrukcje ustawienia nowego hasła'
         title: Przywracanie hasła
+      two_factor_disabled:
+        explanation: Uwierzytelnianie dwuskładnikowe dla Twojego konta zostało wyłączone. Możesz się teraz logować korzystając z samego adresu e-mail i hasła.
+        subject: Mastodon – wyłączono uwierzytelnianie dwustopniowe
+        title: Wyłączono 2FA
+      two_factor_enabled:
+        explanation: Uwierzytelnianie dwuskładnikowe dla Twojego konta zostało włączone. Logując się, będziesz potrzebować tokenu z połączonej aplikacji TOTP.
+        subject: Mastodon – włączono uwierzytelnianie dwustopniowe
+        title: Włączono 2FA
+      two_factor_recovery_codes_changed:
+        explanation: Poprzednie kody zapasowe zostały unieważnione, a nowe zostały wygenerowane.
+        subject: Mastodon – wygenerowano nowe kody ratunkowe 2FA
+        title: Zmieniono kody odzyskiwania 2FA
       unlock_instructions:
         subject: 'Mastodon: Instrukcje odblokowania konta'
     omniauth_callbacks:
diff --git a/config/locales/devise.ta.yml b/config/locales/devise.ta.yml
index e653f0581..d4b4eeefc 100644
--- a/config/locales/devise.ta.yml
+++ b/config/locales/devise.ta.yml
@@ -2,49 +2,97 @@
 ta:
   devise:
     confirmations:
-      confirmed: தங்கள் மின்னஞ்சல் முகவரி வெற்றிகரமாக உறுதி செய்யப்பட்டது.
-      send_instructions: இன்னும் சற்று நேரத்தில் உங்கள் இணைய முகவரியை உறுதி செய்வது எப்படி என்று விளக்கும் இணைய செய்தி ஒன்று வந்தடையும். வரவில்லை எனில், தயவு செய்து உங்கள் ஸ்பாம் பெட்டியைப் பார்க்கவும்.
-      send_paranoid_instructions: உங்கள் இணைய முகவரி எங்கள் தகவல்ப் பெட்டகத்தில் இருந்தால், இன்னும் சற்று நேரத்தில் உங்கள் இணைய முகவரியை உறுதி செய்வது எப்படி என்று விளக்கும் இணைய செய்தி ஒன்று வந்தடையும். வரவில்லை எனில், தயவு செய்து உங்கள் ஸ்பாம் பெட்டியைப் பார்க்கவும்.
+      confirmed: தங்கள் மின்னஞ்சல் முகவரி வெற்றிகரமாக உறுதிபடுத்தப்பட்டது.
+      send_instructions: உங்கள் மின்னஞ்சல் முகவரியை எவ்வாறு உறுதிபடுத்துவது என்பதை விளக்கும் மின்னஞ்சல் இன்னும் சில நிமிடங்களில் உங்களை வந்தடையும். மின்னஞ்சலை நீங்கள் பெறவில்லை எனில், தயைகூர்ந்து ஸ்பேம் பெட்டியில் பார்க்கவும்.
+      send_paranoid_instructions: எங்களின் தரவுத்தளத்தில் உங்கள் மின்னஞ்சல் முகவரி இருப்பின், அதை எவ்வாறு உறுதிபடுத்துவது என்பதை விளக்கும் மின்னஞ்சல் இன்னும் சில நிமிடங்களில் உங்களை வந்தடையும். மின்னஞ்சலை நீங்கள் பெறவில்லை எனில், தயைகூர்ந்து ஸ்பேம் பெட்டியில் பார்க்கவும்.
     failure:
-      already_authenticated: நீங்கள் ஏற்கனவே நுழைந்து விட்டீர்கள்.
-      inactive: உங்கள் கணக்கும் இன்னும் செயல்முறைக்கு வரவில்லை.
+      already_authenticated: நீங்கள் ஏற்கனவே உள்நுழைந்து விட்டீர்கள்.
+      inactive: உங்கள் கணக்கு இன்னும் செயல்படுத்தப்படவில்லை.
       invalid: தவறான %{authentication_keys} அல்லது கடவுச்சொல்.
-      last_attempt: உங்கள் கணக்கு பூட்டப்படும் முன் உங்களுக்கு ஓரே ஒரு வாய்ப்பு உள்ளது.
-      locked: உங்கள் கணக்கு பூட்டப்பட்டது.
+      last_attempt: இன்னொரு முறை தவறான கடவுச்சொல்லை வழங்கினால் உங்கள் கணக்கு பூட்டப்படும்.
+      locked: உங்கள் கணக்கு பூட்டப்பட்டுள்ளது.
       not_found_in_database: தவறான %{authentication_keys} அல்லது கடவுச்சொல்.
-      pending: உங்கள் கணக்கு இன்னும் பரிசீலிக்கப்படுகிறது.
-      timeout: உங்கள் அமர்வு காலாவதியாகிவிட்டது. தயவு செய்து மீண்டும் உள்நுழையவும்.
-      unauthenticated: மேலும் செல்வதற்கு முன் நீங்கள் உள்நுழையவோ அல்லது கணக்கை உருவாக்கவோ வேண்டும்.
-      unconfirmed: முன்னேறுவதற்கு முன்னர் நீங்கள் உங்கள் இணைய முகவரியை உறுதி செய்ய வேண்டும்.
+      pending: உங்கள் கணக்கு இன்னும் பரிசீலனையில் இருக்கிறது.
+      timeout: உங்கள் அமர்வு காலாவதியாகிவிட்டது. தயவுசெய்து மீண்டும் உள்நுழையவும்.
+      unauthenticated: மேலும் தொடர்வதற்கு நீங்கள் உள்நுழையவோ அல்லது கணக்கை உருவாக்கவோ வேண்டும்.
+      unconfirmed: மேலும் தொடர்வதற்கு நீங்கள் உங்களின் மின்னஞ்சல் முகவரியை உறுதிபடுத்தவேண்டும்.
     mailer:
       confirmation_instructions:
-        action: மின்னஞ்சல் முகவரியை உறுதிபடுத்தவும்
-        action_with_app: உறுதிசெய்துவிட்டு %{app}-க்குத் திரும்பவும்
-        explanation: இந்த இணைய முகவரி கொண்டு %{host}-இல் நீங்கள் ஒரு கணக்கை உருவாக்கியுள்ளீர்கள். அதை செயல்படுத்துவதில் இருந்து ஒரு சொடக்கு தூரத்தில் உள்ளீர்கள். நீங்கள் அதை செய்யவில்லை என்றால், இந்த செய்தியை கண்டுகொள்ள வேண்டாம்.
-        title: மின்னஞ்சல் முகவரியை உறுதிபடுத்தவும்
+        action: மின்னஞ்சல் முகவரியை உறுதிசெய்யவும்
+        action_with_app: உறுதிசெய்த பின் %{app}-க்குத் திரும்பவும்
+        explanation: "%{host} -இல் இந்த மின்னஞ்சல் முகவரியைக் கொண்டு ஒரு கணக்கை உருவாக்கியுள்ளீர்கள். அதை செயல்படுத்துவதில் இருந்து ஒரு சொடுக்கு தூரத்தில் உள்ளீர்கள். இந்த மின்னஞ்சல் உங்களுக்கானதில்லை எனில், தயைகூர்ந்து இதைப் பொருட்படுத்தாமல் விடவும்."
+        explanation_when_pending: நீங்கள் %{host} -இடம் அழைப்பு வேண்டி இந்த மின்னஞ்சலின் மூலம் விண்ணப்பித்துள்ளீர்கள். உங்கள் மின்னஞ்சலை நீங்கள் உறுதி செய்தவுடன், நாங்கள் உங்களின் விண்ணப்பத்தைப் பரிசீலிப்போம். உங்களுடைய விவரங்களைத் திருத்தவோ, கணக்கை அழிக்கவோ நீங்கள் உள்நுழையலாம். ஆனால் உங்கள் கணக்கு ஒப்புதல் பெறப்படும்வரை உங்களால் அதன் பெரும்பாலான வசதிகளைப் பயன்படுத்த முடியாது. உங்களின் விண்ணப்பம் நிராகரிக்கப்பட்டால், உங்களுடைய விவரங்கள் அழிக்கப்படும். எனவே அந்நிலையில் நீங்கள் எதுவும் செய்ய வேண்டியதில்லை. இம்மின்னஞ்சல் உங்களுக்கானதில்லை என்றால், தயைகூர்ந்து இதைப் பொருட்படுத்தாமல் விடவும்.
+        extra_html: மேலும் தயைகூர்ந்து <a href="%{terms_path}">இந்த சேவையகத்தின் விதிகளையும்</a> <a href="%{policy_path}">எங்களின் சேவை விதிமுறைகளையும்</a>பார்வையிடவும்.
+        subject: 'மாஸ்டடான்: %{instance} -ஐ உறுதிசெய்வதற்கான வழிமுறைகள்'
+        title: மின்னஞ்சல் முகவரியை உறுதிசெய்யவும்
       email_changed:
+        explanation: 'உங்கள் கணக்கிற்கான மின்னஞ்சல் முகவரி இதுவாக மாற்றப்படுகிறது:'
+        extra: உங்கள் மின்னஞ்சலை மாற்றியது நீங்கள் இல்லை எனில், அநேகமாக உங்கள் கணக்கில் எவரோ நுழைந்திருக்கிறார். தயவுசெய்து உடனே உங்கள் கடவுச்சொல்லை மாற்றிவிடவும், அல்லது உங்களால் உள்நுழைய முடியவில்லை எனில் உடனே சேவையக நிர்வாகியைத் தொடர்பு கொள்ளவும்.
         subject: 'மாஸ்டோடான்: மின்னஞ்சல் மாற்றப்பட்டது'
         title: புதிய மின்னஞ்சல் முகவரி
       password_change:
         explanation: உங்கள் கணக்கிற்கான கடவுச்சொல் மாற்றப்பட்டது.
+        extra: உங்கள் கடவுச்சொல்லை மாற்றியது நீங்கள் இல்லை எனில், அநேகமாக உங்களின் கணக்கில் எவரோ நுழைந்திருக்கிறார். தயவுசெய்து உடனே உங்கள் கடவுச்சொல்லை மாற்றிவிடவும், அல்லது உங்களால் உள்நுழைய முடியவில்லை எனில் உடனே சேவையக நிர்வாகியைத் தொடர்பு கொள்ளவும்.
         subject: 'மாஸ்டோடான்: கடவுச்சொல் மாற்றப்பட்டது'
         title: கடவுச்சொல் மாற்றப்பட்டது
       reconfirmation_instructions:
-        explanation: உங்கள் மின்னஞ்சல் முகவரியை மாற்ற மீண்டும் ஒரு முறை உறுதி செய்யவும்.
+        explanation: உங்கள் மின்னஞ்சல் முகவரியை மாற்ற அதை உறுதிசெய்யவும்.
+        extra: இந்தத் திருத்தத்தை நீங்கள் கோரவில்லை எனில், தயைகூர்ந்து இந்த மின்னஞ்சலைப் பொருட்படுத்தாமல் விடவும். மேலே உள்ள சுட்டியை நீங்கள் பயன்படுத்தாதவரை, உங்கள் மாஸ்டடான் கணக்கிற்கான மின்னஞ்சல் மாற்றப்படாது.
         subject: 'மாஸ்டோடான்: %{instance}-கான மின்னஞ்சலை உறுதிசெய்யவும்'
-        title: மின்னஞ்சல் முகவரியை உறுதிபடுத்தவும்
+        title: மின்னஞ்சல் முகவரியை உறுதிசெய்யவும்
       reset_password_instructions:
-        action: கடவுச்சொல்லை மாற்றவும்
+        action: கடவுச்சொல்லை மாற்று
         explanation: உங்கள் கணக்கிற்குப் புதிய கடவுச்சொல்லைக் கோரியிருக்கிறீர்கள்.
+        extra: இந்தத் திருத்தத்தை நீங்கள் கோரவில்லை எனில், தயைகூர்ந்து இந்த மின்னஞ்சலைப் பொருட்படுத்தாமல் விடவும். உங்கள் கடவுச்சொல் மாற்றப்படவில்லை. புதிய கடவுச்சொல்லை உருவாக்க மேலே உள்ள சுட்டியைப் பயன்படுத்தவும்.
         subject: 'மாஸ்டோடான்: கடவுச்சொல்லை மீட்டமைப்பதற்கான வழிமுறைகள்'
         title: கடவுச்சொல் மீட்டமைப்பு
       two_factor_disabled:
+        explanation: உங்களுடைய கணக்கிற்கான இரண்டு கட்டப் பாதுகாப்பு முடக்கப்பட்டுள்ளது. உங்கள் மின்னஞ்சல் முகவரி மற்றும் கடவுச்சொல் மூலமாக மட்டுமே தற்பொழுது உள்நுழைய முடியும்.
+        subject: 'மாஸ்டடான்: இரண்டு கட்டப் பாதுகாப்பு முடக்கப்பட்டுள்ளது'
         title: 2FA உபயோகத்தில் இல்லை
+      two_factor_enabled:
+        explanation: உங்களுடைய கணக்கிற்கான இரண்டு கட்டப் பாதுகாப்பு செயல்படுத்தப்பட்டுள்ளது. இணைக்கப்படும் TOTP செயலியில் ஒரு குறியீடு தோன்றும். உங்கள் கணக்கிற்குள் நுழைய அந்தக் குறியீடு தேவைப்படும்.
+        subject: 'மாஸ்டடான்: இரண்டு கட்டப் பாதுகாப்பு செயல்படுத்தப்பட்டுள்ளது'
+        title: 2FA செயல்படுத்தப்பட்டுள்ளது
+      two_factor_recovery_codes_changed:
+        explanation: இதற்கு முன்பு உருவாக்கப்பட்ட மீட்டெடுப்புக் குறியீடுகள் செல்லாதவை ஆகிவிட்டன. புதிய குறியீடுகள் உருவாக்கப்பட்டுள்ளன.
+        subject: 'மாஸ்டடான்: இரண்டு கட்ட மீட்டெடுப்பிற்கான குறியீடுகள் மீண்டும் உருவாக்கப்பட்டுள்ளன'
+        title: 2FA மீட்டெடுப்பிற்கான குறியீடுகள் மாற்றப்பட்டுள்ளன
+      unlock_instructions:
+        subject: 'மாஸ்டடான்: மீண்டும் திறப்பதற்கான வழிமுறைகள்'
+    omniauth_callbacks:
+      failure: '"%{reason}" காரணமாக %{kind} -லிருந்து உங்களை உறுதிசெய்ய இயலவில்லை.'
+      success: "%{kind} கணக்கிலிருந்து வெற்றிகரமாக உறுதிசெய்யப்பட்டது."
+    passwords:
+      no_token: கடவுச்சொல்லை மீட்டெடுக்க அனுப்பப்பட்ட மின்னஞ்சலின் வழியாக மட்டுமே இந்தப் பக்கத்தைத் திறக்க முடியும். அதன் வழியாகத்தான் வந்தீர்கள் எனில், அதில் கொடுக்கப்பட்டுள்ள முழு இணைய முகவரியைப் பயன்படுத்தினீர்களா என்பதைத் தயைகூர்ந்து சரிபார்க்கவும்.
+      send_instructions: எங்களின் தரவுத்தளத்தில் உங்கள் மின்னஞ்சல் முகவரி இருப்பின், இன்னும் சில நிமிடங்களில் அந்த முகவரிக்கு உங்களின் கடவுச்சொல்லை மீட்டெடுக்கும் சுட்டி அனுப்பப்படும். அந்த மின்னஞ்சலை நீங்கள் பெறவில்லை எனில், தயைகூர்ந்து ஸ்பேம் பெட்டியில் பார்க்கவும்.
+      send_paranoid_instructions: எங்களின் தரவுத்தளத்தில் உங்கள் மின்னஞ்சல் முகவரி இருப்பின், இன்னும் சில நிமிடங்களில் அந்த முகவரிக்கு உங்களின் கடவுச்சொல்லை மீட்டெடுக்கும் சுட்டி அனுப்பப்படும். அந்த மின்னஞ்சலை நீங்கள் பெறவில்லை எனில், தயைகூர்ந்து ஸ்பேம் பெட்டியில் பார்க்கவும்.
+      updated: உங்கள் கடவுச்சொல் வெற்றிகரமாக மாற்றப்பட்டது. நீங்கள் தற்பொழுது உள்நுழைந்துள்ளீர்கள்.
+      updated_not_active: உங்கள் கடவுச்சொல் வெற்றிகரமாக மாற்றப்பட்டது.
     registrations:
       destroyed: நன்றி! தங்கள் கணக்கு வெற்றிகரமாக ரத்து செய்யப்பட்டது. தங்கள் வருகையை மீண்டும் எதிர்நோக்கியிருக்கிறோம்.
       signed_up: வருக! நீங்கள் வெற்றிகரமாகப் பதிவுசெய்துவிட்டீர்கள்.
+      signed_up_but_inactive: நீங்கள் வெற்றிகரமாகப் பதிவுசெய்துவிட்டீர்கள். ஆனால், உங்கள் கணக்கு இன்னும் செயல்படுத்தப்படாததால், உங்களை உள்நுழைக்க இயலவில்லை.
+      signed_up_but_locked: நீங்கள் வெற்றிகரமாகப் பதிவுசெய்துவிட்டீர்கள். ஆனால், உங்கள் கணக்கு பூட்டப்பட்டுள்ளதால், உங்களை உள்நுழைக்க இயலவில்லை.
+      signed_up_but_pending: உங்கள் மின்னஞ்சல் முகவரிக்கு ஒரு உறுதிபடுத்தும் சுட்டி அனுப்பப்பட்டுள்ளது. அந்த சுட்டியை நீங்கள் கிளிக் செய்தவுடன் உங்களின் விண்ணப்பத்தை நாங்கள் பரிசீலிப்போம். விண்ணப்பம் அங்கீகரிக்கப்பட்டால் உங்களுக்குத் தெரிவிக்கப்படும்.
+      signed_up_but_unconfirmed: உங்கள் மின்னஞ்சல் முகவரிக்கு ஒரு உறுதிபடுத்தும் சுட்டி அனுப்பப்பட்டுள்ளது. உங்கள் கணக்கை செயல்படுத்த அந்த சுட்டியை தயவுசெய்து கிளிக் செய்யவும். மின்னஞ்சலை நீங்கள் பெறவில்லை எனில், தயைகூர்ந்து ஸ்பேம் பெட்டியில் பார்க்கவும்.
+      update_needs_confirmation: உங்கள் கணக்கு வெற்றிகரமாகத் திருத்தப்பட்டது. ஆனால், உங்கள் புதிய மின்னஞ்சல் முகவரியை நாங்கள் உறுதிசெய்ய வேண்டும். உங்கள் மின்னஞ்சல் முகவரிக்கு அனுப்பப்பட்டுள்ள உறுதிபடுத்தும் சுட்டியை தயவுசெய்து கிளிக் செய்யவும். மின்னஞ்சலை நீங்கள் பெறவில்லை எனில், தயைகூர்ந்து ஸ்பேம் பெட்டியில் பார்க்கவும்.
+      updated: உங்கள் கணக்கு வெற்றிகரமாகத் திருத்தப்பட்டது.
+    sessions:
+      already_signed_out: வெற்றிகரமாக வெளியேறிவிட்டீர்கள்.
+      signed_in: வெற்றிகரமாக உள்நுழைந்துவிட்டீர்கள்.
+      signed_out: வெற்றிகரமாக வெளியேறிவிட்டீர்கள்.
     unlocks:
-      send_instructions: இன்னும் சற்று நேரத்தில் மின்னஞ்சல் முகவரியை உறுதி செய்வதற்கான விளக்கம், உங்கள் மின்னஞ்சலை வந்தடையும். வரவில்லை எனில், தயவு செய்து உங்கள் Spam பெட்டியைப் பார்க்கவும்.
+      send_instructions: உங்கள் கணக்கை எவ்வாறு திறப்பது என்பதை விளக்கும் மின்னஞ்சல் இன்னும் சில நிமிடங்களில் உங்களை வந்தடையும். மின்னஞ்சலை நீங்கள் பெறவில்லை எனில், தயைகூர்ந்து ஸ்பேம் பெட்டியில் பார்க்கவும்.
+      send_paranoid_instructions: உங்களுடைய கணக்கு இருப்பின், அதை எவ்வாறு திறப்பது என்பதை விளக்கும் மின்னஞ்சல் இன்னும் சில நிமிடங்களில் உங்களை வந்தடையும். மின்னஞ்சலை நீங்கள் பெறவில்லை எனில், தயைகூர்ந்து ஸ்பேம் பெட்டியில் பார்க்கவும்.
+      unlocked: உங்கள் கணக்கு வெற்றிகரமாகத் திறக்கப்பட்டது. மேலும் தொடர தயவுசெய்து உள்நுழையவும்.
   errors:
     messages:
-      not_found: காணப்படவில்லை
+      already_confirmed: ஏற்கனவே உறுதிப்படுத்தப்பட்டது, தயவுசெய்து உள்நுழைய முயற்சிக்கவும்
+      confirmation_period_expired: "%{period} -ற்குள் உறுதிபடுத்தப்படவேண்டும். தயவுசெய்து புதிய ஒன்றைக் கோரவும்"
+      expired: காலாவதியாகிவிட்டது, தயவுசெய்து புதிய ஒன்றைக் கோரவும்
+      not_found: கிடைக்கவில்லை
+      not_locked: பூட்டப்படவில்லை
+      not_saved:
+        one: 'ஒரு பிழையின் காரணமாக %{resource} சேமிக்கப்படவில்லை:'
+        other: "%{count} பிழைகளின் காரணமாக %{resource} சேமிக்கப்படவில்லை:"
diff --git a/config/locales/doorkeeper.ast.yml b/config/locales/doorkeeper.ast.yml
index 5c54b5353..b9ab81618 100644
--- a/config/locales/doorkeeper.ast.yml
+++ b/config/locales/doorkeeper.ast.yml
@@ -4,6 +4,7 @@ ast:
     attributes:
       doorkeeper/application:
         name: Nome de l'aplicación
+        redirect_uri: URI de redireición
         scopes: Ámbitos
         website: Sitiu web de l'aplicación
     errors:
@@ -26,6 +27,7 @@ ast:
         error: "¡Meca! Comprueba los fallos posibles del formulariu"
       help:
         native_redirect_uri: Usa %{native_redirect_uri} pa pruebes llocales
+        redirect_uri: Usa una llinia per URI
       index:
         empty: Nun tienes aplicaciones.
         name: Nome
@@ -75,7 +77,7 @@ ast:
     scopes:
       admin:read: lleer tolos datos del sirvidor
       admin:read:accounts: lleer la información sensible de toles cuentes
-      admin:read:reports: lleer la información sensible de tolos informe y cuentes informaes
+      admin:read:reports: lleer la información sensible de tolos informes y cuentes informaes
       admin:write: modificar tolos datos del sirvidor
       read: lleer tolos datos de la to cuenta
       read:accounts: ver información de cuentes
@@ -92,10 +94,13 @@ ast:
       write: modificar los datos de la to cuenta
       write:accounts: modificar el to perfil
       write:blocks: bloquiar cuentes y dominios
+      write:bookmarks: amestar estaos a Marcadores
+      write:favourites: marcar estaos como favoritos
       write:filters: crear peñeres
       write:follows: siguir a xente
       write:lists: crear llistes
       write:media: xubir ficheros multimedia
       write:mutes: silenciar xente y conversaciones
       write:notifications: llimpiar los tos avisos
+      write:reports: informar d'otres persones
       write:statuses: espublizar estaos
diff --git a/config/locales/doorkeeper.cy.yml b/config/locales/doorkeeper.cy.yml
index 08e4baaff..fcc59b98d 100644
--- a/config/locales/doorkeeper.cy.yml
+++ b/config/locales/doorkeeper.cy.yml
@@ -38,6 +38,7 @@ cy:
         application: Rhaglen
         callback_url: URL galw-nôl
         delete: Dileu
+        empty: Nid oes gennych unrhyw ceisiadau.
         name: Enw
         new: Rhaglen newydd
         scopes: Rhinweddau
diff --git a/config/locales/doorkeeper.fa.yml b/config/locales/doorkeeper.fa.yml
index c9ca1895e..534d7c5da 100644
--- a/config/locales/doorkeeper.fa.yml
+++ b/config/locales/doorkeeper.fa.yml
@@ -78,7 +78,7 @@ fa:
         title: برنامه‌های مجاز
     errors:
       messages:
-        access_denied: دارندهٔ منبع یا سرور اجازه دهنده درخواست را نپذیرفت.
+        access_denied: صاحب منبع یا کارساز تأیید هویت، درخواست را رد کردند.
         credential_flow_not_configured: جریان اعتبارنامهٔ گذرواژهٔ مالک منبع به دلیل پیکربندی نشده بودن Doorkeeper.configure.resource_owner_from_credentials شکست خورد.
         invalid_client: تأیید هویت کارخواه به دلیل کارخواه ناشناخته، عدم وجود تأیید هویت کاره یا روش تأیید هویت پشتیبانی‌نشده شکست خورد.
         invalid_grant: اعطای دسترسی فراهم ‌شده نامعتبر، منقضی یا نامطابق با نشانی بازگشت استفاده‌شده در درخواست تأیید هویت بوده و یا برای کارخواهی دیگر صادر شده است.
@@ -91,8 +91,8 @@ fa:
           revoked: کد دسترسی فسخ شده است
           unknown: کد دسترسی معتبر نیست
         resource_owner_authenticator_not_configured: یافتن مالک منبع به دلیل پیکربندی‌نشده بودن Doorkeeper.configure.resource_owner_authenticator شکست خورد.
-        server_error: خطای پیش‌بینی‌نشده‌ای برای سرور اجازه‌دهنده رخ داد که جلوی اجرای این درخواست را گرفت.
-        temporarily_unavailable: سرور اجازه‌دهنده به دلیل بار زیاد یا تعمیرات سرور هم‌اینک نمی‌تواند درخواست شما را بررسی کند.
+        server_error: کارساز تأیید هویت به شرایطی پیش‌بینی نشده که مانع اجرای درخواست شد برخورد.
+        temporarily_unavailable: کارساز تأیید هویت به دلیل سربار موقت یا نگه‌داری کارساز، هم‌اکنون قادر به پذیرش درخواست نیست.
         unauthorized_client: کارخواه مجاز نیست این درخواست را با استفاده از این روش انجام دهد.
         unsupported_grant_type: گونهٔ اعطای تأیید هویت توسّط کارساز تأیید هویتپشتیبانی نمی‌شود.
         unsupported_response_type: کارساز تأیید هویت این گونه از پاسخ را پشتیبانی نمی‌کند.
diff --git a/config/locales/doorkeeper.kab.yml b/config/locales/doorkeeper.kab.yml
index 376c86d81..b384b76b1 100644
--- a/config/locales/doorkeeper.kab.yml
+++ b/config/locales/doorkeeper.kab.yml
@@ -12,7 +12,7 @@ kab:
           attributes:
             redirect_uri:
               fragment_present: ur yezmir ad yegber afrur.
-              invalid_uri: ilaq ad tili d tansa URL tameɣtut.
+              invalid_uri: ilaq ad tili d tansa URL tameγtut.
               relative_uri: ilaq ad yili d URI amagdaz.
               secured_uri: ilaq URI ad yili HTTPS/SSL.
   doorkeeper:
@@ -36,6 +36,7 @@ kab:
         application: Asnas
         callback_url: URL n tririt n wawal
         delete: Kkes
+        empty: Ulac γur-ek·em isnasen.
         name: Isem
         new: Asnas amaynut
         show: Ẓer
@@ -55,19 +56,23 @@ kab:
         title: Tella-d tuccḍa
       new:
         able_to: Asnas-agi yezmer
-        prompt: Eǧǧ i %{client_name} ad yekcem ɣer umiḍan-ik
+        prompt: Eǧǧ i %{client_name} ad yekcem γer umiḍan-ik
+        title: Tlaq tsiregt
       show:
-        title: Nɣel tangalt n wurag sakkin senteḍ-itt deg usnas.
+        title: Nγel tangalt n wurag sakkin senteḍ-itt deg usnas.
     authorized_applications:
+      buttons:
+        revoke: Ḥwi
       confirmations:
         revoke: Tetḥeqqeḍ?
       index:
         application: Asnas
         created_at: Yettussireg
         date_format: "%d-%m-%Y %H:%M:%S"
+        title: Isnasen-ik·im yettusirgen
     errors:
       messages:
-        invalid_redirect_uri: URI n uwelleh mačči d ameɣtu.
+        invalid_redirect_uri: URI n uwelleh mačči d ameγtu.
     flash:
       applications:
         create:
@@ -76,16 +81,21 @@ kab:
           notice: Asnan yettwakkes.
         update:
           notice: Asnan yettwalqem.
+      authorized_applications:
+        destroy:
+          notice: Yettwaḥwi wesnas.
     layouts:
       admin:
         nav:
           applications: Isnasen
+      application:
+        title: Tlaq tsiregt n OAuth
     scopes:
-      admin:read: ɣeṛ akk isefka ɣef uqeddac
-      admin:write: ẓreg akk isefka ɣef uqeddac
-      follow: beddel assaɣen n umiḍan
-      push: ṭṭef-d tilɣa-ik yettwademren
-      read: ɣeṛ akk isefka n umiḍan-ik
+      admin:read: γeṛ akk isefka γef uqeddac
+      admin:write: ẓreg akk isefka γef uqeddac
+      follow: beddel assaγen n umiḍan
+      push: ṭṭef-d tilγa-ik yettwademren
+      read: γeṛ akk isefka n umiḍan-ik
       read:accounts: ẓer isallen n yimiḍanen
       read:blocks: ẓer imiḍanen i tesḥebseḍ
       read:bookmarks: ẓer ticraḍ-ik
@@ -94,11 +104,13 @@ kab:
       read:follows: ẓer imeḍfaṛen-ik
       read:lists: ẓer tibdarin-ik
       read:mutes: ẓer wid i tesgugmeḍ
-      read:notifications: ẓer tilɣa-ik
-      read:statuses: ẓer meṛṛa tisuffaɣ
+      read:notifications: ẓer tilγa-ik
+      read:statuses: ẓer meṛṛa tisuffaγ
       write: beddel meṛṛa isefka n umiḍan-ik
-      write:accounts: ẓreg amaɣnu-ik
-      write:blocks: seḥbes imiḍanen d tɣula
+      write:accounts: ẓreg amaγnu-ik
+      write:blocks: seḥbes imiḍanen d tγula
+      write:bookmarks: ad yernu tisuffγin γer ticraḍ
       write:filters: rnu-d imsizedgen
       write:follows: ḍfeṛ imdanen
       write:lists: rnu-d tibdarin
+      write:media: ad yessali ifayluyen n teγwalt
diff --git a/config/locales/doorkeeper.nl.yml b/config/locales/doorkeeper.nl.yml
index 3b1d10d1f..10e075a66 100644
--- a/config/locales/doorkeeper.nl.yml
+++ b/config/locales/doorkeeper.nl.yml
@@ -38,6 +38,7 @@ nl:
         application: Toepassing
         callback_url: Callback-URL
         delete: Verwijderen
+        empty: Je hebt geen toepassingen geconfigureerd.
         name: Naam
         new: Nieuwe toepassing
         scopes: Toestemmingen
diff --git a/config/locales/doorkeeper.nn.yml b/config/locales/doorkeeper.nn.yml
index b31e69b3b..f670d5a8b 100644
--- a/config/locales/doorkeeper.nn.yml
+++ b/config/locales/doorkeeper.nn.yml
@@ -38,6 +38,7 @@ nn:
         application: Applikasjon
         callback_url: Callback-URL
         delete: Slett
+        empty: Du har ingen søknader.
         name: Namn
         new: Ny applikasjon
         scopes: Omfang
diff --git a/config/locales/doorkeeper.no.yml b/config/locales/doorkeeper.no.yml
index a1970f3ea..3512aeca2 100644
--- a/config/locales/doorkeeper.no.yml
+++ b/config/locales/doorkeeper.no.yml
@@ -38,6 +38,7 @@
         application: Applikasjon
         callback_url: Callback-URL
         delete: Fjern
+        empty: Du har ingen søknader.
         name: Navn
         new: Ny applikasjon
         scopes: Omfang
diff --git a/config/locales/doorkeeper.oc.yml b/config/locales/doorkeeper.oc.yml
index 749a49a4c..f92b7cd22 100644
--- a/config/locales/doorkeeper.oc.yml
+++ b/config/locales/doorkeeper.oc.yml
@@ -38,6 +38,7 @@ oc:
         application: Aplicacion
         callback_url: URL de rapèl
         delete: Suprimir
+        empty: Avètz pas cap d’aplicacion.
         name: Nom
         new: Nòva aplicacion
         scopes: Encastres
diff --git a/config/locales/doorkeeper.pl.yml b/config/locales/doorkeeper.pl.yml
index 2068eeef4..7c6c4fb6d 100644
--- a/config/locales/doorkeeper.pl.yml
+++ b/config/locales/doorkeeper.pl.yml
@@ -38,6 +38,7 @@ pl:
         application: Aplikacja
         callback_url: URL wywołania zwrotnego (callback)
         delete: Usuń
+        empty: Nie masz aplikacji.
         name: Nazwa
         new: Nowa aplikacja
         scopes: Zakres
@@ -125,6 +126,7 @@ pl:
       read: możliwość odczytu wszystkich danych konta
       read:accounts: dostęp do informacji o koncie
       read:blocks: dostęp do listy blokowanych
+      read:bookmarks: dostęp do zakładek
       read:favourites: dostęp do listy ulubionych
       read:filters: dostęp do filtrów
       read:follows: dostęp do listy śledzonych
@@ -137,6 +139,7 @@ pl:
       write: możliwość modyfikowania wszystkich danych o koncie
       write:accounts: możliwość modyfikowania informacji o koncie
       write:blocks: możliwość blokowania domen i użytkowników
+      write:bookmarks: możliwość dodawania wpisów do zakładek
       write:favourites: możliwość dodawnia wpisów do ulubionych
       write:filters: możliwość tworzenia filtrów
       write:follows: możliwość śledzenia ludzi
diff --git a/config/locales/doorkeeper.ru.yml b/config/locales/doorkeeper.ru.yml
index 532e2c9ac..33e01c79b 100644
--- a/config/locales/doorkeeper.ru.yml
+++ b/config/locales/doorkeeper.ru.yml
@@ -144,7 +144,7 @@ ru:
       write:filters: создавать фильтры
       write:follows: подписываться на людей
       write:lists: создавать списки
-      write:media: загружать файлы
+      write:media: загружать медиафайлы
       write:mutes: добавлять в игнорируемое людей и обсуждения
       write:notifications: очищать список уведомлений
       write:reports: отправлять жалобы на других
diff --git a/config/locales/doorkeeper.th.yml b/config/locales/doorkeeper.th.yml
index 597a65038..be009af4d 100644
--- a/config/locales/doorkeeper.th.yml
+++ b/config/locales/doorkeeper.th.yml
@@ -31,7 +31,7 @@ th:
       help:
         native_redirect_uri: ใช้ %{native_redirect_uri} สำหรับการทดสอบในเว็บ
         redirect_uri: ใช้หนึ่งบรรทัดต่อ URI
-        scopes: แยกขอบเขตด้วยช่องว่าง เว้นว่างเพื่อใช้ขอบเขตเริ่มต้น
+        scopes: แยกขอบเขตด้วยช่องว่าง เว้นว่างไว้เพื่อใช้ขอบเขตเริ่มต้น
       index:
         application: แอปพลิเคชัน
         callback_url: URL เรียกกลับ
diff --git a/config/locales/doorkeeper.zh-CN.yml b/config/locales/doorkeeper.zh-CN.yml
index f186a954a..cb0bc9f36 100644
--- a/config/locales/doorkeeper.zh-CN.yml
+++ b/config/locales/doorkeeper.zh-CN.yml
@@ -38,6 +38,7 @@ zh-CN:
         application: 应用
         callback_url: 回调 URL
         delete: 删除
+        empty: 您没有申请。
         name: 名称
         new: 创建新应用
         scopes: 权限范围
diff --git a/config/locales/el.yml b/config/locales/el.yml
index c5b622ef6..85c7bc648 100644
--- a/config/locales/el.yml
+++ b/config/locales/el.yml
@@ -232,6 +232,7 @@ el:
       deleted_status: "(διαγραμμένη δημοσίευση)"
       title: Αρχείο ελέγχου
     announcements:
+      destroyed_msg: Επιτυχής διαγραφή ανακοίνωσης!
       edit:
         title: Ενημέρωση ανακοίνωσης
       empty: Δεν βρέθηκε ανακοίνωση.
@@ -239,9 +240,12 @@ el:
       new:
         create: Δημιουργία ανακοίνωσης
         title: Νέα ανακοίνωση
-      published: Δημοσιευμένη
-      time_range: Χρονική διάρκεια
+      published_msg: Επιτυχής δημοσίευση ανακοίνωσης!
+      scheduled_for: Προγραμματισμένη για %{time}
+      scheduled_msg: Η ανακοίνωση προγραμματίστηκε για δημοσίευση!
       title: Ανακοινώσεις
+      unpublished_msg: Επιτυχής ακύρωση δημοσίευσης ανακοίνωσης!
+      updated_msg: Επιτυχής ενημέρωση ανακοίνωσης!
     custom_emojis:
       assign_category: Κατηγορία
       by_domain: Τομέας
@@ -776,7 +780,6 @@ el:
     changes_saved_msg: Οι αλλαγές αποθηκεύτηκαν!
     copy: Αντιγραφή
     delete: Διαγραφή
-    edit: Ενημέρωση
     no_batch_actions_available: Δεν υπάρχουν ομαδικές ενέργειες σε αυτή τη σελίδα
     order_by: Ταξινόμηση κατά
     save_changes: Αποθήκευση αλλαγών
@@ -950,6 +953,7 @@ el:
     public_timelines: Δημόσιες ροές
   reactions:
     errors:
+      limit_reached: Το όριο διαφορετικών αντιδράσεων ξεπεράστηκε
       unrecognized_emoji: δεν αναγνωρίζεται ως emoji
   relationships:
     activity: Δραστηριότητα λογαριασμού
@@ -1083,6 +1087,7 @@ el:
         other: "%{count} ψήφοι"
       vote: Ψήφισε
     show_more: Δείξε περισσότερα
+    show_thread: Εμφάνιση νήματος
     sign_in_to_participate: Συνδέσου για να συμμετάσχεις στη συζήτηση
     title: '%{name}: "%{quote}"'
     visibilities:
diff --git a/config/locales/en.yml b/config/locales/en.yml
index dcfe5f1cc..8e819b5b1 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -39,7 +39,7 @@ en:
     unavailable_content_description:
       domain: Server
       reason: Reason
-      rejecting_media: 'Media files from these servers will not be processed or stored, and and no thumbnails will be displayed, requiring manual click-through to the original file:'
+      rejecting_media: 'Media files from these servers will not be processed or stored, and no thumbnails will be displayed, requiring manual click-through to the original file:'
       silenced: 'Posts from these servers will be hidden in public timelines and conversations, and no notifications will be generated from their users'' interactions, unless you are following them:'
       suspended: 'No data from these servers will be processed, stored or exchanged, making any interaction or communication with users from these servers impossible:'
     unavailable_content_html: Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.
diff --git a/config/locales/eo.yml b/config/locales/eo.yml
index fb4d5c8be..b3cb2b523 100644
--- a/config/locales/eo.yml
+++ b/config/locales/eo.yml
@@ -192,11 +192,13 @@ eo:
         change_email_user: "%{name} ŝanĝis retadreson de uzanto %{target}"
         confirm_user: "%{name} konfirmis retadreson de uzanto %{target}"
         create_account_warning: "%{name} sendis averton al %{target}"
+        create_announcement: "%{name} kreis novan anoncon %{target}"
         create_custom_emoji: "%{name} alŝutis novan emoĝion %{target}"
         create_domain_allow: "%{name} aldonis domajnon %{target} al la blanka listo"
         create_domain_block: "%{name} blokis domajnon %{target}"
-        create_email_domain_block: "%{name} metis en nigran liston domajnon %{target}"
+        create_email_domain_block: "%{name} aldonis retadresan domajnon %{target} al la nigra listo"
         demote_user: "%{name} degradis uzanton %{target}"
+        destroy_announcement: "%{name} forigis anoncon %{target}"
         destroy_custom_emoji: "%{name} neniigis la emoĝion %{target}"
         destroy_domain_allow: "%{name} forigis domajnon %{target} el la blanka listo"
         destroy_domain_block: "%{name} malblokis domajnon %{target}"
@@ -218,10 +220,26 @@ eo:
         unassigned_report: "%{name} malasignis signalon %{target}"
         unsilence_account: "%{name} malkaŝis la konton de %{target}"
         unsuspend_account: "%{name} malhaltigis la konton de %{target}"
+        update_announcement: "%{name} ĝisdatigis anoncon %{target}"
         update_custom_emoji: "%{name} ĝisdatigis emoĝion %{target}"
         update_status: "%{name} ĝisdatigis mesaĝon de %{target}"
       deleted_status: "(forigita mesaĝo)"
       title: Kontrola protokolo
+    announcements:
+      destroyed_msg: Anonco sukcese forigita!
+      edit:
+        title: Redakti anoncon
+      empty: Neniu anonco trovita.
+      live: Publikigita
+      new:
+        create: Krei anoncon
+        title: Nova anonco
+      published_msg: Anonco sukcese publikigita!
+      scheduled_for: Planigita je %{time}
+      scheduled_msg: Anonco planigita por publikigo!
+      title: Anoncoj
+      unpublished_msg: Anonco sukcese malpublikigita!
+      updated_msg: Anonco sukcese ĝisdatigis!
     custom_emojis:
       assign_category: Atribui kategorion
       by_domain: Domajno
@@ -331,6 +349,7 @@ eo:
       delete: Forigi
       destroyed_msg: Retadreso sukcese forigita de la nigra listo
       domain: Domajno
+      empty: Neniu retadresa domajno nune estas en la nigra listo.
       new:
         create: Aldoni domajnon
         title: Nova blokado de retadresa domajno
@@ -363,6 +382,8 @@ eo:
       title: Invitoj
     pending_accounts:
       title: Pritraktataj kontoj (%{count})
+    relationships:
+      title: Rilatoj de %{acct}
     relays:
       add_new: Aldoni novan ripetilon
       delete: Forigi
@@ -517,6 +538,7 @@ eo:
     tags:
       accounts_today: Unikaj uzoj hodiaŭ
       accounts_week: Unikaj uzoj je ĉi tiu semajno
+      breakdown: Disigo de la hodiaŭa uzo per fonto
       context: Kunteksto
       directory: En la adresaro
       in_directory: "%{count} en adresaro"
@@ -701,6 +723,7 @@ eo:
     hint_html: "<strong>Kio estas la trajtaj kradvortoj?</strong> Ili bone videblas en via publika profilo kaj permesas al homoj trarigardi viajn publikajn mesaĝojn specife laŭ tiuj kradvortoj. Ili estas bonaj iloj por sekvi la evoluon de kreadaj laboroj aŭ longdaŭraj projektoj."
   filters:
     contexts:
+      account: Profiloj
       home: Hejma templinio
       notifications: Sciigoj
       public: Publika templinio
@@ -725,6 +748,7 @@ eo:
     all: Ĉio
     changes_saved_msg: Ŝanĝoj sukcese konservitaj!
     copy: Kopii
+    delete: Forigi
     order_by: Ordigi de
     save_changes: Konservi ŝanĝojn
     validation_errors:
@@ -1012,6 +1036,7 @@ eo:
         other: "%{count} voĉdonoj"
       vote: Voĉdoni
     show_more: Montri pli
+    show_thread: Montri la fadenon
     sign_in_to_participate: Ensaluti por partopreni en la konversacio
     title: "%{name}: “%{quote}”"
     visibilities:
diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml
index 30cbdbee5..6eec00cb6 100644
--- a/config/locales/es-AR.yml
+++ b/config/locales/es-AR.yml
@@ -232,6 +232,7 @@ es-AR:
       deleted_status: "(estado borrado)"
       title: Registro de auditoría
     announcements:
+      destroyed_msg: "¡Anuncio eliminado exitosamente!"
       edit:
         title: Editar anuncio
       empty: No se encontraron anuncios.
@@ -239,9 +240,12 @@ es-AR:
       new:
         create: Crear anuncio
         title: Nuevo anuncio
-      published: Publicados
-      time_range: Rango de tiempo
+      published_msg: "¡Anuncio publicado exitosamente!"
+      scheduled_for: Programado para %{time}
+      scheduled_msg: "¡Anuncio programado para su publicación!"
       title: Anuncios
+      unpublished_msg: "¡Anuncio dejado de publicar exitosamente!"
+      updated_msg: "¡Anuncio actualizado exitosamente!"
     custom_emojis:
       assign_category: Asignar categoría
       by_domain: Dominio
@@ -776,7 +780,6 @@ es-AR:
     changes_saved_msg: "¡Cambios guardados exitosamente!"
     copy: Copiar
     delete: Eliminar
-    edit: Editar
     no_batch_actions_available: No hay acciones por lotes disponibles en esta página
     order_by: Ordenar por
     save_changes: Guardar cambios
@@ -950,6 +953,7 @@ es-AR:
     public_timelines: Líneas temporales públicas
   reactions:
     errors:
+      limit_reached: Se alcanzó el límite de reacciones diferentes
       unrecognized_emoji: no es un emoji conocido
   relationships:
     activity: Actividad de la cuenta
@@ -1083,6 +1087,7 @@ es-AR:
         other: "%{count} votos"
       vote: Votar
     show_more: Mostrar más
+    show_thread: Mostrar hilo
     sign_in_to_participate: Iniciá sesión para participar en la conversación
     title: '%{name}: "%{quote}"'
     visibilities:
diff --git a/config/locales/es.yml b/config/locales/es.yml
index 2d582cd7c..a26143018 100644
--- a/config/locales/es.yml
+++ b/config/locales/es.yml
@@ -232,6 +232,7 @@ es:
       deleted_status: "(estado borrado)"
       title: Log de auditoría
     announcements:
+      destroyed_msg: "¡Anuncio eliminado con éxito!"
       edit:
         title: Editar anuncio
       empty: No se encontraron anuncios.
@@ -239,9 +240,12 @@ es:
       new:
         create: Crear anuncio
         title: Nuevo anuncio
-      published: Publicados
-      time_range: Intervalo de tiempo
+      published_msg: "¡Anuncio publicado con éxito!"
+      scheduled_for: Programado para %{time}
+      scheduled_msg: "¡Anuncio programado para su publicación!"
       title: Anuncios
+      unpublished_msg: "¡Anuncio despublicado con éxito!"
+      updated_msg: "¡Anuncio actualizado con éxito!"
     custom_emojis:
       assign_category: Asignar categoría
       by_domain: Dominio
@@ -776,7 +780,6 @@ es:
     changes_saved_msg: "¡Cambios guardados con éxito!"
     copy: Copiar
     delete: Eliminar
-    edit: Editar
     no_batch_actions_available: No hay acciones por lotes disponibles en esta página
     order_by: Ordenar por
     save_changes: Guardar cambios
@@ -1084,6 +1087,7 @@ es:
         other: "%{count} votos"
       vote: Vota
     show_more: Mostrar más
+    show_thread: Mostrar hilo
     sign_in_to_participate: Regístrate para participar en la conversación
     title: '%{name}: "%{quote}"'
     visibilities:
diff --git a/config/locales/et.yml b/config/locales/et.yml
index e0e861c33..716da9010 100644
--- a/config/locales/et.yml
+++ b/config/locales/et.yml
@@ -198,11 +198,13 @@ et:
         change_email_user: "%{name} muutis kasutaja %{target} e-postiaadressit"
         confirm_user: "%{name} kinnitas kasutaja %{target} e-postiaadressi"
         create_account_warning: "%{name} saatis kasutajale %{target} hoiatuse"
+        create_announcement: "%{name} lõi uue teadaande %{target}"
         create_custom_emoji: "%{name} laadis üles uue emotikooni %{target}"
         create_domain_allow: "%{name} lisas domeeni %{target} lubatute nimekirja"
         create_domain_block: "%{name} blokeeris domeeni %{target}"
         create_email_domain_block: "%{name} lisas e-posti domeeni %{target} musta nimekirja"
         demote_user: "%{name} alandas kasutaja %{target}"
+        destroy_announcement: "%{name} kustutas teadaande %{target}"
         destroy_custom_emoji: "%{name} kustutas emotikooni %{target}"
         destroy_domain_allow: "%{name} eemaldas domeeni %{target} lubatute nimekirjast"
         destroy_domain_block: "%{name} eemaldas blokeeringu domeenilt %{target}"
@@ -224,10 +226,26 @@ et:
         unassigned_report: "%{name} eemaldas määratluse teatelt %{target}"
         unsilence_account: "%{name} eemaldas vaigistuse %{target}-i kontolt"
         unsuspend_account: "%{name} eemaldas peatamise %{target}-i kontolt"
+        update_announcement: "%{name} uuendas teadaannet %{target}"
         update_custom_emoji: "%{name} uuendas emotikooni %{target}"
         update_status: "%{name} uuendas kasutaja %{target} staatust"
       deleted_status: "(kustutatud staatus)"
       title: Auditilogi
+    announcements:
+      destroyed_msg: Teadaande kustutamine õnnestus!
+      edit:
+        title: Redigeeri teadaannet
+      empty: Teadaandeid ei leitud.
+      live: Avaldatud
+      new:
+        create: Loo teadaanne
+        title: Uus teadaanne
+      published_msg: Teadaande avaldamine õnnestus!
+      scheduled_for: Kavandatud ajaks %{time}
+      scheduled_msg: Teadaanne kavandatud avaldamiseks!
+      title: Teadaanded
+      unpublished_msg: Teadaande eemaldamine avalikkusest õnnestus!
+      updated_msg: Teadaande uuendamine õnnestus!
     custom_emojis:
       assign_category: Määra kategooria
       by_domain: Domeen
@@ -660,6 +678,9 @@ et:
     hint_html: "<strong>Nõuanne:</strong> Me ei küsi Teilt uuesti salasõna järgmise tunni jooksul."
     invalid_password: Vigane salasõna
     prompt: Jätkamiseks kinnitage salasõna
+  date:
+    formats:
+      default: "%d. %b %Y"
   datetime:
     distance_in_words:
       about_x_hours: "%{count}t"
@@ -761,6 +782,7 @@ et:
     all: Kõik
     changes_saved_msg: Muudatuste salvestamine õnnestus!
     copy: Kopeeri
+    delete: Kustuta
     no_batch_actions_available: Komplekttegevused pole sellel lehel saadaval
     order_by: Järjesta
     save_changes: Salvesta muudatused
@@ -932,6 +954,10 @@ et:
     other: Muu
     posting_defaults: Postitamise vaikesätted
     public_timelines: Avalikud ajajooned
+  reactions:
+    errors:
+      limit_reached: Jõutud on erinevate reaktsioonide limiidini
+      unrecognized_emoji: ei ole tuntud emotikoon
   relationships:
     activity: Konto tegevus
     dormant: Seisev
@@ -1066,6 +1092,7 @@ et:
         other: "%{count} häält"
       vote: Hääleta
     show_more: Näita rohkem
+    show_thread: Kuva lõim
     sign_in_to_participate: Logi sisse, et liituda vestlusega
     title: '%{name}: "%{quote}"'
     visibilities:
diff --git a/config/locales/eu.yml b/config/locales/eu.yml
index e3cedee53..3ca68d321 100644
--- a/config/locales/eu.yml
+++ b/config/locales/eu.yml
@@ -232,6 +232,7 @@ eu:
       deleted_status: "(ezabatutako mezua)"
       title: Auditoria-egunkaria
     announcements:
+      destroyed_msg: Iragarpena ongi ezabatu da!
       edit:
         title: Editatu iragarpena
       empty: Ez da iragarpenik aurkitu.
@@ -239,9 +240,12 @@ eu:
       new:
         create: Sortu iragarpena
         title: Iragarpen berria
-      published: Argitaratua
-      time_range: Denbora-tartea
+      published_msg: Iragarpena ongi argitaratu da!
+      scheduled_for: "%{time}-rako programatuta"
+      scheduled_msg: Iragarpena argitaratzeko programatuta!
       title: Iragarpenak
+      unpublished_msg: Iragarpena ongi desargitaratu da!
+      updated_msg: Iragarpena ongi eguneratu da!
     custom_emojis:
       assign_category: Esleitu kategoria
       by_domain: Domeinua
@@ -776,7 +780,6 @@ eu:
     changes_saved_msg: Aldaketak ongi gorde dira!
     copy: Kopiatu
     delete: Ezabatu
-    edit: Editatu
     no_batch_actions_available: Ez dago ekintza masiborik orri honetan eskuragarri
     order_by: Ordenatze-irizpidea
     save_changes: Gorde aldaketak
@@ -914,7 +917,7 @@ eu:
       subject: "%{name}(e)k bultzada eman dio zure mezuari"
       title: Bultzada berria
   notifications:
-    email_events: Gertaerak helbide elektronikoko jakinarazpenentzat
+    email_events: E-mail jakinarazpenentzako gertaerak
     email_events_hint: 'Hautatu jaso nahi dituzun gertaeren jakinarazpenak:'
     other_settings: Bezte jakinarazpen konfigurazioak
   number:
@@ -950,6 +953,7 @@ eu:
     public_timelines: Denbora-lerro publikoak
   reactions:
     errors:
+      limit_reached: Erreakzio desberdinen muga gaindituta
       unrecognized_emoji: ez da emoji ezaguna
   relationships:
     activity: Kontuaren aktibitatea
@@ -1083,6 +1087,7 @@ eu:
         other: "%{count} boto"
       vote: Bozkatu
     show_more: Erakutsi gehiago
+    show_thread: Erakutsi haria
     sign_in_to_participate: Eman izena elkarrizketan parte hartzeko
     title: '%{name}: "%{quote}"'
     visibilities:
diff --git a/config/locales/fa.yml b/config/locales/fa.yml
index ecf3bc391..02bbd2938 100644
--- a/config/locales/fa.yml
+++ b/config/locales/fa.yml
@@ -1,31 +1,31 @@
 ---
 fa:
   about:
-    about_hashtag_html: این‌ها نوشته‌های عمومی هستند که برچسب (هشتگ) <strong>#%{hashtag}</strong> را دارند. اگر شما روی هر سروری حساب داشته باشید می‌توانید به این نوشته‌ها واکنش نشان دهید.
+    about_hashtag_html: این‌ها نوشته‌های عمومی هستند که برچسب (هشتگ) <strong>#%{hashtag}</strong> را دارند. اگر شما روی هر کارسازی حساب داشته باشید می‌توانید به این نوشته‌ها واکنش نشان دهید.
     about_mastodon_html: 'شبکهٔ اجتماعی آینده: بدون تبلیغات، بدون شنود از طرف شرکت‌ها، طراحی اخلاق‌مدار، و معماری غیرمتمرکز! با ماستودون صاحب داده‌های خودتان باشید!'
     about_this: درباره
     active_count_after: فعّال
-    active_footnote: کاربران فعال در ماه گذشته
-    administered_by: 'با مدیریت:'
+    active_footnote: کاربران فعّال ماهانه
+    administered_by: 'به مدیریت:'
     api: رابط برنامه‌نویسی کاربردی
-    apps: کاره‌های همراه
-    apps_platforms: ماستدون را در iOS، اندروید، و سایر سیستم‌ها داشته باشید
-    browse_directory: کاربران این سرور را بر اساس علاقه‌مندی‌هایشان پیدا کنید
-    browse_local_posts: فهرست لحظه‌ای نوشته‌های عمومی در ماستدون را ببینید
-    browse_public_posts: فهرست لحظه‌ای نوشته‌های عمومی در ماستدون را ببینید
+    apps: اپ‌های موبایل
+    apps_platforms: ماستودون را در iOS، اندروید، و سایر سیستم‌ها داشته باشید
+    browse_directory: کاربران را بر اساس علاقه‌مندی‌هایشان از فهرست گزیده بیابید
+    browse_local_posts: جریانی زنده از فرسته‌های عمومی این کارساز را ببینید
+    browse_public_posts: جریانی زنده از فرسته‌های عمومی روی ماستودون را ببینید
     contact: تماس
     contact_missing: تنظیم نشده
     contact_unavailable: موجود نیست
     discover_users: یافتن کاربران
     documentation: مستندات
     federation_hint_html: با حسابی روی %{instance} می‌توانید افراد روی هر کارساز ماستودون و بیش از آن را پی بگیرید.
-    get_apps: یک کاارهٔ همراه را بیازمایید
+    get_apps: یک اپ موبایل را بیازمایید
     hosted_on: ماستودون، میزبانی‌شده روی %{domain}
     instance_actor_flash: |
       این حساب یک بازیگر مجازی برای نمایندگی از این سرور است و متعلق به هیچ کاربری نیست.
       این حساب برای ارتباط میان‌سروری به کار می‌رود و نباید مسدود شود، مگر این که شما بخواهید کل سرور را مسدود کنید، که در آن صورت باید از راه مسدودسازی دامین پیش بروید.
     learn_more: بیشتر بدانید
-    privacy_policy: سیاست محرمانگی
+    privacy_policy: سیاست رازداری
     see_whats_happening: ببینید چه خبر است
     server_stats: 'آمار کارساز:'
     source_code: کدهای منبع
@@ -33,7 +33,7 @@ fa:
       one: چیز نوشته‌اند
       other: چیز نوشته‌اند
     status_count_before: که در کنار هم
-    tagline: پی‌گیری و یافتن دوستان جدید
+    tagline: با دوستان خود در ارتباط باشید و دوستان تازه پیدا کنید
     terms: شرایط خدمت
     unavailable_content: محتوای ناموجود
     unavailable_content_description:
@@ -41,27 +41,27 @@ fa:
       reason: دلیل
       rejecting_media: 'پرونده‌های رسانه از این کارسازها پردازش یا ذخیره نخواهند شد و هیچ بندانگشتی‌ای نمایش نخواهد یافت. نیازمند کلیک دستی برای رسیدن به پروندهٔ اصلی:'
       silenced: |-
-        هیچ کدام از نوشته‌ها از طرف این سرور این‌جا نمایش نخواهند یافت مگر در فهرست پیگیری‌ها شما، اگر نویسنده‌اش را پی بگیرید.
-        فرسته‌ها از این کارسازها در گفت‌وگوها و خط زمانی عمومی نهفته خواهند بود و تا وقتی پی‌گیرشان نشوید، هیچ آگاهی‌ای از برهم‌کنش‌های کاربرانشان تولید نخواهد شد:
-      suspended: 'هیچ داده‌ای از این کارسازها پردازش، ذخیره یا مبادله نخواهد شد که هرگونه برهم‌کنش یا ارتباط با کاربران این کارسازها را غیرممکن خواهد کرد:'
-    unavailable_content_html: ماستدون در حالت کلی اجازه می‌دهد که شما همهٔ مطالب و کاربران در سرورهای دیگر را نیز ببینید و با آن‌ها برهم‌کنش داشته باشید. فهرست زیر ولی استثناهای این ارتباط است که به طور خاص روی این سرور اعمال شده‌اند.
+        هیچ کدام از نوشته‌ها از طرف این کارساز این‌جا نمایش نخواهند یافت مگر در فهرست پیگیری‌ها شما، اگر نویسنده‌اش را پی بگیرید.
+        فرسته‌ها از این کارسازها در گفت‌وگوها و فهرست نوشته‌های عمومی نهفته خواهند بود و تا وقتی پیگیرشان نشوید، هیچ اعلانی از برهم‌کنش‌های کاربرانشان تولید نخواهد شد:
+      suspended: 'هیچ داده‌ای از این کارسازها پردازش، ذخیره یا مبادله نخواهد شد، که هرگونه برهم‌کنش یا ارتباط با کاربران این کارسازها را غیرممکن خواهد کرد:'
+    unavailable_content_html: ماستودون عموماً می‌گذارد محتوا را از از هر کارساز دیگری در دنیای شبکه‌های اجتماعی غیرمتمرکز دیده و با آنان برهم‌کنش داشته باشید. این‌ها استثناهایی هستند که روی این کارساز خاص وضع شده‌اند.
     user_count_after:
       one: کاربر
       other: کاربر
-    user_count_before: دارای
-    what_is_mastodon: ماستدون چیست؟
+    user_count_before: میزبان
+    what_is_mastodon: ماستودون چیست؟
   accounts:
     choices_html: 'انتخاب‌های %{name}:'
-    endorsements_hint: شما می‌توانید از محیط وب ماستدون، کسانی را که پی می‌گیرید به دیگران هم پیشنهاد دهید تا این‌جا نشان داده شوند.
-    featured_tags_hint: شما می‌توانید برچسب‌های دلخواه خود را پیشنهاد دهید که این‌جا نمایش خواهند یافت.
-    follow: پی بگیرید
+    endorsements_hint: شما می‌توانید از محیط وب ماستودون، کسانی را که پی می‌گیرید به دیگران هم پیشنهاد دهید تا این‌جا نشان داده شوند.
+    featured_tags_hint: می‌توانید برچسب‌های خاصی را مشخّص کنید تا این‌جا دیده شوند.
+    follow: پیگیری
     followers:
       one: پیگیر
       other: پیگیر
     following: پی می‌گیرد
     joined: کاربر از %{date}
     last_active: آخرین فعالیت
-    link_verified_on: مالکیت این نشانی در تاریخ %{date} بررسی شد
+    link_verified_on: مالکیت این پیوند در %{date} بررسی شد
     media: عکس و ویدیو
     moved_html: "%{name} حساب خود را به %{new_profile_link} منتقل کرده است:"
     network_hidden: این اطلاعات در دسترس نیست
@@ -70,92 +70,92 @@ fa:
     people_followed_by: کسانی که %{name} پی می‌گیرد
     people_who_follow: کسانی که %{name} را پی می‌گیرند
     pin_errors:
-      following: شما باید پیگیر کاربری باشید که می‌خواهید ثابت کنید
+      following: باید کاربری که می‌خواهید پیشنهاد دهید را دنبال کرده باشید
     posts:
       one: بوق
       other: بوق
-    posts_tab_heading: نوشته‌ها
-    posts_with_replies: نوشته‌ها و پاسخ‌ها
+    posts_tab_heading: بوق‌ها
+    posts_with_replies: بوق‌ها و پاسخ‌ها
     reserved_username: این نام کاربری در دسترس نیست
     roles:
       admin: مدیر
       bot: ربات
       group: گروه
-      moderator: ناظم
+      moderator: ناظر
     unavailable: نمایهٔ ناموجود
     unfollow: پایان پیگیری
   admin:
     account_actions:
-      action: انجام تغییر
-      title: انجام تغییر مدیریتی روی %{acct}
+      action: انجامِ کنش
+      title: انجام کنش مدیریتی روی %{acct}
     account_moderation_notes:
       create: افزودن یادداشت
       created_msg: یادداشت مدیر با موفقیت ساخته شد!
-      delete: پاک کردن
-      destroyed_msg: یادداشت مدیر با موفقیت پاک شد!
+      delete: حذف
+      destroyed_msg: یادداشت نظارتی با موفقیت نابود شد!
     accounts:
       approve: پذیرفتن
       approve_all: پذیرفتن همه
-      are_you_sure: آیا مطمئن هستید؟
+      are_you_sure: مطمئنید؟
       avatar: تصویر نمایه
       by_domain: دامین
       change_email:
-        changed_msg: رایانامهٔ حساب با موفقیت تغییر کرد!
-        current_email: رایانامهٔ کنونی
-        label: تغییر رایانامه
-        new_email: رایانامهٔ جدید
-        submit: تغییر رایانامه
-        title: تغییر رایانامه برای %{username}
+        changed_msg: نشانی ایمیل این حساب با موفقیت تغییر کرد!
+        current_email: ایمیل کنونی
+        label: تغییر نشانی ایمیل
+        new_email: ایمیل تازه
+        submit: تغییر ایمیل
+        title: تغییر ایمیل برای %{username}
       confirm: تأیید
       confirmed: تأیید شد
       confirming: تأیید
       deleted: حذف شده
       demote: تنزل‌دادن
       disable: از کار انداختن
-      disable_two_factor_authentication: از کار انداختن 2FA
+      disable_two_factor_authentication: از کار انداختن ورود دومرحله‌ای
       disabled: از کار افتاده
       display_name: نام نمایشی
       domain: دامنه
       edit: ویرایش
-      email: رایانامه
-      email_status: وضعیت رایانامه
+      email: ایمیل
+      email_status: وضعیت ایمیل
       enable: به کار انداختن
       enabled: به کار افتاده
       followers: پیگیران
       follows: پی می‌گیرد
-      header: سرآیند
+      header: تصویر زمینه
       inbox_url: نشانی صندوق ورودی
       invited_by: دعوت‌شده از طرف
       ip: IP
-      joined: پیوسته در
+      joined: عضو شده در
       location:
         all: همه
         local: محلّی
-        remote: دوردست
+        remote: کارسازهای دیگر
         title: مکان
       login_status: وضعیت ورود
-      media_attachments: ضمیمه‌های تصویری
+      media_attachments: پیوست‌های رسانه‌ای
       memorialize: تبدیل به یادمان
       moderation:
-        active: فعال
+        active: فعّال
         all: همه
-        pending: در انتظار
-        silenced: بی‌صدا شده
-        suspended: معلق شده
-        title: وضعیت
-      moderation_notes: یادداشت مدیر
-      most_recent_activity: آخرین فعالیت‌ها
-      most_recent_ip: آخرین IP ها
+        pending: منتظر
+        silenced: خموشانده
+        suspended: تعلیق شده
+        title: مدیریت
+      moderation_notes: یادداشت‌های مدیریتی
+      most_recent_activity: آخرین فعالیت
+      most_recent_ip: آخرین IP
       no_account_selected: هیچ حسابی تغییر نکرد زیرا حسابی انتخاب نشده بود
       no_limits_imposed: بدون محدودیت
-      not_subscribed: عضو نیست
+      not_subscribed: مشترک نیست
       pending: در انتظار بررسی
       perform_full_suspension: تعلیق
       promote: ترفیع‌دادن
       protocol: پروتکل
       public: عمومی
       push_subscription_expires: عضویت از راه PuSH منقضی شد
-      redownload: به‌روزرسانی نمایه
+      redownload: نوسازی نمایه
       reject: نپذیرفتن
       reject_all: نپذیرفتن هیچکدام
       remove_avatar: حذف تصویر نمایه
@@ -170,17 +170,17 @@ fa:
       role: اجازه‌ها
       roles:
         admin: مدیر
-        moderator: ناظم
+        moderator: ناظر
         staff: کارمند
         user: کاربر
       search: جستجو
-      search_same_ip: دیگر کاربران با همان IP
+      search_same_ip: دیگر کاربران با IP یکسان
       shared_inbox_url: نشانی صندوق ورودی مشترک
       show:
         created_reports: گزارش‌های ثبت کرده
         targeted_reports: گزارش‌های دیگران
-      silence: بی‌صدا
-      silenced: بی‌صداشده
+      silence: خموشاندن
+      silenced: خموشانده
       statuses: نوشته‌ها
       subscribe: اشتراک
       suspended: تعلیق‌شده
@@ -200,16 +200,18 @@ fa:
         change_email_user: "%{name} نشانی ایمیل کاربر %{target} را تغییر داد"
         confirm_user: "%{name} نشانی ایمیل کاربر %{target} را تأیید کرد"
         create_account_warning: "%{name} هشداری برای %{target} فرستاد"
+        create_announcement: "%{name} اعلامیه‌ای جدید ایجاد کرد %{target}"
         create_custom_emoji: "%{name} شکلک تازهٔ %{target} را بارگذاشت"
         create_domain_allow: "%{name} دامنهٔ %{target} را مجاز کرد"
         create_domain_block: "%{name} دامین %{target} را مسدود کرد"
         create_email_domain_block: "%{name} دامین ایمیل %{target} را مسدود کرد"
         demote_user: "%{name} مقام کاربر %{target} را تنزل داد"
-        destroy_custom_emoji: "%{name} شکلک %{target} را حذف کرد"
-        destroy_domain_allow: "%{name} دامنهٔ %{target} را فهرست مجاز برداشت"
-        destroy_domain_block: "%{name} دامین %{target} را باز کرد"
-        destroy_email_domain_block: "%{name} دامین ایمیل %{target} را باز کرد"
-        destroy_status: "%{name} نوشته‌ای از %{target} را پاک کرد"
+        destroy_announcement: "%{name} اعلامیهٔ %{target} را حذف کرد"
+        destroy_custom_emoji: "%{name} اموجی %{target} را نابود کرد"
+        destroy_domain_allow: "%{name} دامنهٔ %{target} را از فهرست مجاز برداشت"
+        destroy_domain_block: "%{name} انسداد دامنهٔ %{target} را رفع کرد"
+        destroy_email_domain_block: "%{name} دامنهٔ ایمیل %{target} را به فهرست مجاز افزود"
+        destroy_status: "%{name} نوشتهٔ %{target} را پاک کرد"
         disable_2fa_user: "%{name} اجبار ورود دومرحله‌ای را برای کاربر %{target} غیرفعال کرد"
         disable_custom_emoji: "%{name} شکلک %{target} را غیرفعال کرد"
         disable_user: "%{name} ورود را برای کاربر %{target} غیرفعال کرد"
@@ -226,25 +228,41 @@ fa:
         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: "(بوق پاک‌شده)"
+      deleted_status: "(نوشتهٔ پاک‌شده)"
       title: سیاههٔ بازرسی
+    announcements:
+      destroyed_msg: اعلامیه با موفقیت حذف شد!
+      edit:
+        title: ویرایش اعلامیه
+      empty: هیچ اعلامیه‌ای پیدا نشد.
+      live: فعال
+      new:
+        create: ساختن اعلامیه
+        title: اعلامیهٔ تازه
+      published_msg: اعلامیه با موفقیت منتشر شد!
+      scheduled_for: زمان‌بسته برای %{time}
+      scheduled_msg: اعلامیه برای نشر، زمان‌بندی شد!
+      title: اعلامیه‌ها
+      unpublished_msg: انتشار اعلامیه با موفقیت لغو شد!
+      updated_msg: اعلامیه با موفقیت به‌روز شد!
     custom_emojis:
       assign_category: تعیین دسته
-      by_domain: دامین
+      by_domain: دامنه
       copied_msg: نسخهٔ محلی شکلک با موفقیت ساخته شد
-      copy: نسخه‌برداری
+      copy: رونوشت
       copy_failed_msg: نشد که نسخهٔ محلی این شکلک ساخته شود
       create_new_category: ساختن دستهٔ تازه
-      created_msg: این شکلک با موفقیت ساخته شد!
-      delete: پاک کردن
-      destroyed_msg: این شکلک با موفقیت پاک شد!
-      disable: غیرفعال‌سازی
-      disabled: غیرفعال
-      disabled_msg: این شکلک با موفقیت غیرفعال شد
+      created_msg: شکلک با موفقیت ساخته شد!
+      delete: حذف
+      destroyed_msg: شکلک با موفقیت پاک شد!
+      disable: از کار انداختن
+      disabled: از کار افتاده
+      disabled_msg: شکلک با موفقیت از کار افتاد
       emoji: شکلک
-      enable: فعال‌سازی
+      enable: به کار انداختن
       enabled: فعال
       enabled_msg: این شکلک با موفقیت فعال شد
       image_hint: پروندهٔ PNG حداکثر 50KB
@@ -275,10 +293,10 @@ fa:
       feature_timeline_preview: پیش‌نمایش نوشته‌ها
       features: ویژگی‌ها
       hidden_service: ارتباط میان‌سروری با سرویس‌های نهفته
-      open_reports: گزارش‌های فعال
-      pending_tags: برچسب منتظر بازبینی
+      open_reports: گزارش‌های باز
+      pending_tags: برچسب‌های منتظر بازبینی
       pending_users: کاربران منتظر بازبینی
-      recent_users: کاربران تازه
+      recent_users: کاربران اخیر
       search: جستجوی متنی
       single_user_mode: حالت تک‌کاربره
       software: نرم‌افزار
@@ -291,35 +309,35 @@ fa:
       week_users_new: کاربران هفتهٔ اخیر
       whitelist_mode: حالت فهرست مجاز
     domain_allows:
-      add_new: دامین مجازشده
-      created_msg: این دامین با موفقیت مجاز شد
-      destroyed_msg: دامین از حالت مجاز خارج شد
-      undo: برداشتن از فهرست مجازها
+      add_new: مجاز کردن دامنه
+      created_msg: دامنه با موفقیت مجاز شد
+      destroyed_msg: دامنه از فهرست مجاز برداشته شد
+      undo: برداشتن از فهرست مجاز
     domain_blocks:
       add_new: افزودن مسدودسازی دامین تازه
-      created_msg: مسدودکردن دامین در حال انجام است
-      destroyed_msg: مسدودکردن دامین واگردانده شد
-      domain: دامین
-      edit: ویرایش مسدودسازی دامین
+      created_msg: مسدودسازی دامنه در حال پردازش است
+      destroyed_msg: مسدودکردن دامنه واگردانده شد
+      domain: دامنه
+      edit: ویرایش مسدودسازی دامنه
       existing_domain_block_html: شما پیش‌تر محدودیت‌های سخت‌تری روی %{name} اعمال کرده‌اید، و باید نخست <a href="%{unblock_url}">مسدودسازی را لغو کنید</a>.
       new:
         create: مسدودسازی
-        hint: مسدودسازی دامین جلوی فهرست‌شدن حساب‌ها در پایگاه داده را نمی‌گیرد، بلکه به طور خودکار روش‌های مدیریتی را روی فعالیت‌های فعلی و گذشتهٔ آن حساب‌ها اعمال می‌کند.
+        hint: مسدودسازی دامنه جلوی ایجاد ورودی‌های حساب در پایگاه داده را نمی‌گیرد، بلکه به طور خودکار روش‌های مدیریتی را روی فعالیت‌های فعلی و گذشتهٔ آن حساب‌ها اعمال می‌کند.
         severity:
-          desc_html: "<strong>بی‌صداکردن</strong> یک حساب نوشته‌های آن را برای همه (به جز پیگیرانش) ناپدید می‌کند. <strong>معلق‌کردن</strong> حساب همهٔ نوشته‌ها، تصویرها، و اطلاعات حساب را پاک می‌کند. اگر فقط می‌خواهید جلوی تصویرها و ویدیوها را بگیرید <strong>هیچ</strong> را برگزینید."
+          desc_html: "<strong>خموشاندن</strong> نوشته‌های حساب را برای هر فرد غیرپیگیر، نامرئی می‌کند.<strong>تعلیق</strong> همهٔ محتوا، رسانه‌ها، و داده‌های نمایهٔ حساب را پاک می‌کند. اگر فقط می‌خواهید جلوی رسانه‌ها را بگیرید <strong>هیچ</strong> را برگزینید."
           noop: هیچ
-          silence: بی‌صداکردن
-          suspend: معلق‌کردن
-        title: مسدودسازی دامین دیگر
+          silence: خموشاندن
+          suspend: تعلیق
+        title: مسدودسازی دامین تازه
       private_comment: یادداشت خصوصی
       private_comment_hint: یادداشتی دربارهٔ محدودیت روی این دامین برای سایر ناظمان.
       public_comment: یادداشت عمومی
       public_comment_hint: یادداشتی دربارهٔ محدودیت روی این دامین برای عموم، در صورتی که فهرست دامین‌های محدود شده منتشر شود.
-      reject_media: نپذیرفتن پرونده‌های تصویری
-      reject_media_hint: تصویرهای ذخیره‌شده در این‌جا را پاک می‌کند و جلوی دریافت تصویرها را در آینده می‌گیرد. بی‌تأثیر برای معلق‌شده‌ها
+      reject_media: نپذیرفتن پرونده‌های رسانه‌ای
+      reject_media_hint: پرونده‌های رسانه‌ای ذخیره‌شدهٔ محلّی را پاک کرده و از بارگیریشان در آینده خودداری می‌کند. بی‌تأثیر روی معلق‌ها
       reject_reports: نپذیرفتن گزارش‌ها
-      reject_reports_hint: گزارش‌هایی را که از این دامین می‌آید نادیده می‌گیرد. بی‌تأثیر برای معلق‌شده‌ها
-      rejecting_media: رسانه‌ها نادیده گرفته می‌شوند
+      reject_reports_hint: گزارش‌هایی را که از این دامنه می‌آید نادیده می‌گیرد. بی‌تأثیر برای معلق‌شده‌ها
+      rejecting_media: نپذیرفتن پرونده‌های رسانه‌ای
       rejecting_reports: گزارش‌ها نادیده گرفته می‌شوند
       severity:
         silence: بی‌صداشده
@@ -362,7 +380,7 @@ fa:
       total_blocked_by_us: مسدودشده از طرف ما
       total_followed_by_them: ما را پی می‌گیرند
       total_followed_by_us: ما پیگیرشان هستیم
-      total_reported: گزارش درباره‌شان
+      total_reported: گزارش‌ها درباره‌شان
       total_storage: عکس‌ها و ویدیوها
     invites:
       deactivate_all: غیرفعال‌کردن همه
@@ -374,20 +392,22 @@ fa:
       title: دعوت‌ها
     pending_accounts:
       title: حساب‌های منتظر (%{count})
+    relationships:
+      title: روابط %{acct}
     relays:
       add_new: افزودن رلهٔ تازه
       delete: حذف
       description_html: یک <strong>رلهٔ میان‌سروری</strong> (federation relay) یک سرور میانجی است که حجم زیادی از بوق‌های عمومی را بین سرورهای گوناگونی که عضوش می‌شوند جابه‌جا می‌کند. <strong>رله‌ها به سرورهای کوچک و متوسط کمک می‌کنند تا مطالب عمومی بیشتری را بیابند.</strong> اگر رله نباشد، این مطالب عمومی تنها وقتی پیدا می‌شوند که کاربران محلی خودشان پیگیر کاربران روی سرورهای دیگر شوند.
-      disable: غیرفعال‌کردن
-      disabled: غیرفعال
-      enable: فعال‌سازی
-      enable_hint: اگر فعال باشد، سرور شما عضو همهٔ بوق‌های عمومی‌ای را که از این رله می‌آید می‌گیرد، و بوق‌های عمومی این سرور را به آن می‌فرستند.
+      disable: از کار انداختن
+      disabled: از کار افتاده
+      enable: به کار انداختن
+      enable_hint: اگر فعال باشد، کارساز شما عضو همهٔ بوق‌های عمومی‌ای را که از این رله می‌آید می‌گیرد، و بوق‌های عمومی این کارساز را به آن می‌فرستند.
       enabled: فعال
       inbox_url: نشانی رله
       pending: در انتظار پذیرش رله
       save_and_enable: ذخیره و فعال‌سازی
-      setup: پیوستن به رله‌ها
-      signatures_not_enabled: وقتی حالت امن یا حالت فهرست سفید فعال باشد رله‌ها به درستی کار نخواهند کرد
+      setup: برپا سازی یک اتّصال رله
+      signatures_not_enabled: رله‌ها در حالت امن یا حالت فهرست مجاز، درست کار نخواهند کرد
       status: وضعیت
       title: رله‌ها
     report_notes:
@@ -402,12 +422,12 @@ fa:
           one: "%{count} گزارش"
           other: "%{count} گزارش"
       action_taken_by: انجام‌دهنده
-      are_you_sure: آیا مطمئن هستید؟
+      are_you_sure: مطمئنید؟
       assign_to_self: به عهدهٔ من بگذار
       assigned: مدیر عهده‌دار
       by_target_domain: دامنهٔ حساب گزارش‌شده
       comment:
-        none: خالی
+        none: هیچ
       created_at: گزارش‌شده
       mark_as_resolved: علامت‌گذاری به عنوان حل‌شده
       mark_as_unresolved: علامت‌گذاری به عنوان حل‌نشده
@@ -439,7 +459,7 @@ fa:
         email: ایمیل کاری
         username: نام کاربری
       custom_css:
-        desc_html: ظاهر ماستدون را با CSS-ای که در همهٔ صفحه‌ها جاسازی می‌شود تغییر دهید
+        desc_html: ظاهر ماستودون را با CSS-ای که در همهٔ صفحه‌ها جاسازی می‌شود تغییر دهید
         title: سبک CSS سفارشی
       default_noindex:
         desc_html: روی همهٔ کاربرانی که این تنظیم را خودشان تغییر نداده‌اند تأثیر می‌گذارد
@@ -551,7 +571,7 @@ fa:
       unique_uses_today: "%{count} امروز منتشر شده"
       unreviewed: بازبینی نشده
       updated_msg: تنظیمات برچسب‌ها با موفقیت به‌روز شد
-    title: مدیریت سرور
+    title: مدیریت
     warning_presets:
       add_new: افزودن تازه
       delete: زدودن
@@ -605,14 +625,14 @@ fa:
   auth:
     apply_for_account: درخواست دعوت‌نامه
     change_password: رمز
-    checkbox_agreement_html: من <a href="%{rules_path}" target="_blank">قانون‌های این سرور</a> و <a href="%{terms_path}" target="_blank">شرایط کاربری</a> را می‌پذیرم
+    checkbox_agreement_html: با <a href="%{rules_path}" target="_blank">قانون‌های این کارساز</a> و <a href="%{terms_path}" target="_blank">شرایط خدماتش</a> موافقم
     checkbox_agreement_without_rules_html: من با <a href="%{terms_path}" target="_blank">شرایط استفاده</a> موافقم
     delete_account: پاک‌کردن حساب
     delete_account_html: اگر می‌خواهید حساب خود را پاک کنید، از <a href="%{path}">این‌جا</a> پیش بروید. از شما درخواست تأیید خواهد شد.
     description:
-      prefix_invited_by_user: "@%{name} شما را به عضویت در این سرور ماستدون دعوت کرده است!"
-      prefix_sign_up: همین امروز عضو ماستدون شوید!
-      suffix: با داشتن حساب می‌توانید دیگران را پی بگیرید، نوشته‌های تازه منتشر کنید، و با کاربران دیگر از هر سرور ماستدون دیگری و حتی سرورهای دیگر در ارتباط باشید!
+      prefix_invited_by_user: "@%{name} شما را به عضویت در این کارساز ماستودون دعوت کرده است!"
+      prefix_sign_up: همین امروز عضو ماستودون شوید!
+      suffix: با داشتن حساب می‌توانید دیگران را پی بگیرید، نوشته‌های تازه منتشر کنید، و با کاربران دیگر از هر سرور ماستودون دیگری و حتی سرورهای دیگر در ارتباط باشید!
     didnt_get_confirmation: راهنمایی برای تأیید را دریافت نکردید؟
     forgot_password: رمزتان را گم کرده‌اید؟
     invalid_reset_password_token: کد بازنشانی رمز نامعتبر یا منقضی شده است. لطفاً کد دیگری درخواست کنید.
@@ -657,6 +677,9 @@ fa:
     hint_html: "<strong>نکته:</strong> ما در یک ساعت آینده رمزتان را از شما نخواهیم پرسید."
     invalid_password: رمز نامعتبر
     prompt: برای ادامه رمزتان را تأیید کنید
+  date:
+    formats:
+      default: "%d %b %Y"
   datetime:
     distance_in_words:
       about_x_hours: "%{count} ساعت"
@@ -679,7 +702,7 @@ fa:
     success_msg: حساب شما با موفقیت پاک شد
     warning:
       before: 'پیش از ادامه،‌ لطفاً نکته‌های زیر را به دقت بخوانید:'
-      caches: محتواهایی که سرورهای دیگر ذخیره کرده‌اند شاید همچنان باقی بمانند
+      caches: ممکن است محتواهایی که دیگر کارسازها ذخیره کرده‌اند، همچنان باقی بماند
       data_removal: نوشته‌ها و داده‌های شما برای همیشه پاک خواهند شد
       email_change_html: شما می‌توانید بدون پاک کردن حساب <a href="%{path}">نشانی ایمیل خود را تغییر دهید</a>
       email_contact_html: اگر ایمیل همچنان نرسیده، برای درخواست کمک به <a href="mailto:%{email}">%{email}</a> پیغام دهید
@@ -690,7 +713,7 @@ fa:
       username_unavailable: نام کاربری شما برای دیگران غیرقابل دسترس خواهد ماند
   directories:
     directory: فهرست گزیدهٔ کاربران
-    explanation: کاربران این سرور را بر اساس علاقه‌مندی‌هایشان پیدا کنید
+    explanation: کاربران را بر اساس علاقه‌مندی‌هایشان بیابید
     explore_mastodon: گشت و گذار در %{title}
   domain_validator:
     invalid_domain: نام دامین معتبر نیست
@@ -707,10 +730,10 @@ fa:
     '500':
       content: شرمنده، یک چیزی از سمت ما اشتباه شده.
       title: این صفحه درست نیست
-    '503': این صفحه به خاطر مشکل موقت سرور در دسترس نیست.
-    noscript_html: برای استفاده از نسخهٔ تحت وب ماستدون، لطفاً جاوااسکریپت را فعال کنید. یا به جایش می‌توانید <a href="%{apps_path}">یک اپ ماستدون</a> را به‌کار ببرید.
+    '503': این صفحه به خاطر یک مشکل موقت در کارساز در دسترس نیست.
+    noscript_html: برای استفاده از نسخهٔ تحت وب ماستودون، لطفاً جاوااسکریپت را فعال کنید. یا به جایش می‌توانید <a href="%{apps_path}">یک اپ ماستدون</a> را به‌کار ببرید.
   existing_username_validator:
-    not_found: کاربری در این سرور با این نام کاربری پیدا نشد
+    not_found: کاربری با این نام کاربری در این کارساز پیدا نشد
     not_found_multiple: "%{usernames} پیدا نشد"
   exports:
     archive_takeout:
@@ -733,6 +756,7 @@ fa:
     hint_html: "<strong>برچسب‌های برگزیده چیستند؟</strong> این برچسب‌ها (هشتگ‌ها) به طور واضحی روی نمایهٔ عمومی شما نمایش می‌یابند و دیگران می‌توانند نوشته‌های شما را تحت هر کدام از این برچسب‌ها مرور کنند. این یک روش بسیار خوب برای دسته‌بندی آثار خلاقانه یا پروژه‌های بلندمدت شماست."
   filters:
     contexts:
+      account: نمایه‌ها
       home: خانه
       notifications: اعلان‌ها
       public: فهرست عمومی
@@ -757,6 +781,7 @@ fa:
     all: همه
     changes_saved_msg: تغییرات با موفقیت ذخیره شدند!
     copy: رونوشت
+    delete: حذف
     no_batch_actions_available: هیچ کار گروهی‌ای در این صفحه موجود نیست
     order_by: مرتب‌سازی
     save_changes: ذخیرهٔ تغییرات
@@ -789,7 +814,7 @@ fa:
       merge_long: داده‌های فعلی را داشته باشید و داده‌های تازه‌ای بیفزایید
       overwrite: بازنویسی
       overwrite_long: داده‌های فعلی را پاک کنید و داده‌های تازه‌ای بیفزایید
-    preface: شما می‌توانید داده‌هایی از قبیل کاربرانی که پی می‌گرفتید یا مسدود می‌کردید را در حساب خود روی این سرور درون‌ریزی کنید. برای این کار پرونده‌هایی که از سرور دیگر برون‌سپاری کرده‌اید را به‌کار ببرید.
+    preface: می‌توانید داده‌هایی مانند فهرست افرادی که دنبال یا مسدود کرده‌اید را که از کارسازی دیگر برون‌ریخته‌اید درون‌ریزی کنید.
     success: داده‌های شما با موفقیت بارگذاری شد و به زودی پردازش می‌شود
     types:
       blocking: فهرست مسدودشده‌ها
@@ -815,7 +840,7 @@ fa:
       one: ۱ بار
       other: "%{count} بار"
     max_uses_prompt: نامحدود
-    prompt: با ساختن و اشتراک‌گذاری یک پیوند، اجازهٔ دسترسی به این سرور را به دیگران بدهید
+    prompt: با ساختن و اشتراک‌گذاری یک پیوند، اجازهٔ دسترسی به این کارساز را به دیگران بدهید
     table:
       expires_at: تاریخ انقضا
       uses: استفاده‌ها
@@ -894,9 +919,9 @@ fa:
       subject: "%{name} نوشتهٔ شما را بازبوقید"
       title: بازبوق تازه
   notifications:
-    email_events: رویدادها برای آگاهی‌های رایانامه‌ای
-    email_events_hint: 'گزینش رویدادهایی که می‌خواهید برایشان آگاهی بگیرید:'
-    other_settings: تنظیمات دیگر آگاهی‌ها
+    email_events: رویدادها برای اعلان‌های ایمیلی
+    email_events_hint: 'رویدادهایی که می‌خواهید برایشان اعلانی دریافت کنید را برگزینید:'
+    other_settings: سایر تنظیمات اعلان‌ها
   number:
     human:
       decimal_units:
@@ -928,18 +953,23 @@ fa:
     other: سایر تنظیمات
     posting_defaults: تنظیمات پیش‌فرض انتشار
     public_timelines: فهرست عمومی نوشته‌ها
+  reactions:
+    errors:
+      limit_reached: تجاوز از کران واکنش‌های مختلف
+      unrecognized_emoji: شکلک شناخته‌شده‌ای نیست
   relationships:
     activity: فعالیت حساب
     dormant: غیرفعال
     followers: پی‌گیران
-    following: پی‌گیری‌شدگان
+    following: پی می‌گیرد
+    invited: مدعو
     last_active: آخرین فعالیت
     most_recent: تازه‌ترین
     moved: منتقل‌شده
     mutual: دوطرفه
     primary: اصلی
     relationship: رابطه
-    remove_selected_domains: همهٔ پیگیران از طرف این سرور را بردار
+    remove_selected_domains: همهٔ پیگیران از این دامنه را بردار
     remove_selected_followers: پیگیران انتخاب‌شده را بردار
     remove_selected_follows: به پیگیری از کاربران انتخاب‌شده پایان بده
     status: وضعیت حساب
@@ -949,7 +979,7 @@ fa:
     no_account_html: هنوز عضو نیستید؟ <a href='%{sign_up_path}' target='_blank'>این‌جا می‌توانید حساب باز کنید</a>
     proceed: درخواست پیگیری
     prompt: 'شما قرار است این حساب را پیگیری کنید:'
-    reason_html: "<strong>چرا این مرحله لازم است؟</strong> ممکن است <code>%{instance}</code> سروری نباشد که شما روی آن حساب باز کرده‌اید، بنابراین ما باید پیش از هرچیز شما را به سرور خودتان منتقل کنیم."
+    reason_html: "<strong>چرا این گام ضروریست؟</strong> ممکن است <code>%{instance}</code> کارسازی نباشد که شما رویش حساب دارید؛ پس لازم است پیش از هرچیز، به کارساز خودتان هدایتتان کنیم."
   remote_interaction:
     favourite:
       proceed: به سمت پسندیدن این بوق
@@ -1011,7 +1041,7 @@ fa:
     aliases: نام‌های مستعار
     appearance: نما
     authorized_apps: برنامه‌های مجاز
-    back: بازگشت به ماستدون
+    back: بازگشت به ماستودون
     delete: پاک‌کردن حساب
     development: فرابری
     edit_profile: ویرایش نمایه
@@ -1059,6 +1089,7 @@ fa:
         other: "%{count} رأی"
       vote: رأی
     show_more: نمایش
+    show_thread: نمایش رشته
     sign_in_to_participate: برای شرکت در گفتگو وارد حساب خود شوید
     title: '%{name}: "%{quote}"'
     visibilities:
@@ -1158,9 +1189,9 @@ fa:
       <p>Originally adapted from the <a href="https://github.com/discourse/discourse">Discourse privacy policy</a>.</p>
     title: شرایط استفاده و سیاست رازداری %{instance}
   themes:
-    contrast: ماستدون (کنتراست بالا)
-    default: ماستدون (تیره)
-    mastodon-light: ماستدون (روشن)
+    contrast: ماستودون (سایه‌روشن بالا)
+    default: ماستودون (تیره)
+    mastodon-light: ماستودون (روشن)
   time:
     formats:
       default: "%d %b %Y, %H:%M"
@@ -1180,7 +1211,7 @@ fa:
     recovery_codes_regenerated: کدهای بازیابی با موفقیت ساخته شدند
     recovery_instructions_html: اگر تلفن خود را گم کردید، می‌توانید با یکی از کدهای بازیابی زیر کنترل حساب خود را به دست بگیرید. <strong>این کدها را در جای امنی نگه دارید.</strong> مثلاً آن‌ها را چاپ کنید و کنار سایر مدارک مهم خود قرار دهید.
     setup: راه اندازی
-    wrong_code: کدی که وارد کردید نامعتبر بود! آیا ساعت سرور و ساعت دستگاه شما درست تنظیم شده‌اند؟
+    wrong_code: کدی که وارد کردید نامعتبر بود! آیا ساعت کارساز و ساعت دستگاه شما درست تنظیم شده‌اند؟
   user_mailer:
     backup_ready:
       explanation: شما یک نسخهٔ پشتیبان کامل از حساب خود را درخواست کردید. این پشتیبان الان آمادهٔ بارگیری است!
@@ -1189,10 +1220,10 @@ fa:
     warning:
       explanation:
         disable: تا وقتی حساب شما متوقف باشد، داده‌های شما دست‌نخورده باقی می‌مانند، ولی تا وقتی که حسابتان باز نشده، نمی‌توانید هیچ کاری با آن بکنید.
-        silence: تا وقتی حساب شما محدود باشد، تنها کسانی که از قبل پیگیر شما بودند نوشته‌های شما در این سرور را می‌بینند و شما در فهرست‌های عمومی دیده نمی‌شوید. ولی دیگران همچنان می‌توانند به دلخواه خودشان پیگیر شما شوند.
-        suspend: حساب شما معلق شده است، و همهٔ نوشته‌ها و رسانه‌های تصویری شما به طور بازگشت‌ناپذیری پاک شده‌اند؛ چه از این سرور و چه از سرورهای دیگری که از آن‌ها پیگیر داشتید.
+        silence: تا وقتی حساب شما محدود باشد، تنها کسانی که از قبل پیگیر شما بودند نوشته‌های شما در این کارساز را می‌بینند و شاید شما در برخی از فهرست‌های عمومی دیده نشوید. ولی دیگران همچنان می‌توانند به دلخواه خودشان پیگیر شما شوند.
+        suspend: حسابتان معلق شده و تمام بوق‌ها و رسانه‌های بارگذاشته‌تان، از روی این کارساز و کارسازهایی که پیگیرانی رویشان داشتید، به طور بازگشت‌ناپذیری برداشته شده‌اند.
       get_in_touch: با پاسخ به این ایمیل می‌توانید با دست‌اندرکاران %{instance} در تماس باشید.
-      review_server_policies: مرور سیاست‌های این سرور
+      review_server_policies: مرور سیاست‌های کارساز
       statuses: 'به طور خاص برای:'
       subject:
         disable: حساب %{acct} شما متوقف شده است
@@ -1211,14 +1242,14 @@ fa:
       final_action: چیزی منتشر کنید
       final_step: 'چیزی بنویسید! حتی اگر الان کسی پیگیر شما نباشد، دیگران نوشته‌های عمومی شما را می‌بینند، مثلاً در فهرست نوشته‌های محلی و در برچسب (هشتگ)ها. شاید بخواهید با برچسب #معرفی خودتان را معرفی کنید.'
       full_handle: نام کاربری کامل شما
-      full_handle_hint: این چیزی است که باید به دوستان خود بگویید تا بتوانند به شما پیغام بفرستند یا از سرورهای دیگر پیگیر شما شوند.
+      full_handle_hint: این چیزی است که باید به دوستانتان بگویید تا بتوانند از کارسازی دیگر به شما پیام داده یا پی‌گیرتان شوند.
       review_preferences_action: تغییر ترجیحات
       review_preferences_step: با رفتن به صفحهٔ ترجیحات می‌توانید چیزهای گوناگونی را تنظیم کنید. مثلاً این که چه ایمیل‌های آگاه‌سازی‌ای به شما فرستاده شود، یا حریم خصوصی پیش‌فرض نوشته‌هایتان چه باشد. اگر بیماری سفر (حالت تهوع بر اثر دیدن اجسام متحرک) ندارید، می‌توانید پخش خودکار ویدیوها را فعال کنید.
-      subject: به ماستدون خوش آمدید
-      tip_federated_timeline: "«فهرست نوشته‌های همه‌جا» نمایی از کل شبکهٔ بزرگ ماستدون به شما می‌دهد. البته این فهرست فقط افردای را نشان می‌دهد که هم‌سروری‌های شما آن‌ها را پیگیری می‌کنند، و بنابراین ممکن است کامل نباشد."
-      tip_following: شما به طور پیش‌فرض مدیر(های) سرور خود را پی می‌گیرید. برای یافتن افراد جالب دیگر، فهرست «نوشته‌های محلی» و «نوشته‌های همه‌جا» را ببینید.
+      subject: به ماستودون خوش آمدید
+      tip_federated_timeline: "«فهرست نوشته‌های همه‌جا» نمایی کلی از شبکهٔ ماستودون است. ولی فقط شامل افرادیست که همسایگانتان پیگیرشان هستند؛ پس کامل نیست."
+      tip_following: به طور پیش‌گزیده مدیر(ان) کارسازتان را پی می‌گیرید. برای یافتن افراد جالب دیگر، فهرست «نوشته‌های محلی» و «نوشته‌های همه‌جا» را ببینید.
       tip_local_timeline: فهرست نوشته‌های محلی نمایی کلی از کاربران روی %{instance} را ارائه می‌دهد. این‌ها همسایه‌های شما هستند!
-      tip_mobile_webapp: اگر مرورگر موبایل شما امکان گذاشتن ماستدون روی صفحهٔ اصلی موبایل را به شما می‌دهد، این یعنی می‌توانید اعلان‌های خودکار ماستدون را دریافت کنید. با این کار ماستدون خیلی شبیه یک اپ معمولی موبایل می‌شود!
+      tip_mobile_webapp: اگر مرورگر موبایل شما امکان گذاشتن ماستودون روی صفحهٔ اصلی موبایل را به شما می‌دهد، این یعنی می‌توانید اعلان‌های خودکار ماستودون را دریافت کنید. با این کار ماستودون خیلی شبیه یک اپ معمولی موبایل می‌شود!
       tips: نکته‌ها
       title: خوش آمدید، کاربر %{name}!
   users:
@@ -1229,5 +1260,5 @@ fa:
     seamless_external_login: شما با یک سرویس خارج از مجموعه وارد شده‌اید، به همین دلیل تنظیمات ایمیل و رمز برای شما در دسترس نیست.
     signed_in_as: 'واردشده به نام:'
   verification:
-    explanation_html: 'شما می‌توانید <strong>خود را به عنوان مالک صفحه‌ای که در نمایه‌تان به آن پیوند داده‌اید تأیید کنید.</strong> برای این کار، صفحه‌ای که به آن پیوند داده‌اید، خودش باید پیوندی به نمایهٔ ماستدون شما داشته باشد. پیوند در آن صفحه <strong>باید</strong> عبارت <code>rel="me"‎</code> را به عنوان attribute در خود داشته باشد. محتوای متن پیوند اهمتی ندارد. یک نمونه از چنین پیوندی:'
+    explanation_html: 'شما می‌توانید <strong>خود را به عنوان مالک صفحه‌ای که در نمایه‌تان به آن پیوند داده‌اید تأیید کنید.</strong> برای این کار، صفحه‌ای که به آن پیوند داده‌اید، خودش باید پیوندی به نمایهٔ ماستودون شما داشته باشد. پیوند در آن صفحه <strong>باید</strong> عبارت <code>rel="me"‎</code> را به عنوان مشخّصهٔ (attribute) در خود داشته باشد. محتوای متن پیوند اهمتی ندارد. یک نمونه از چنین پیوندی:'
     verification: تأیید
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index 09a599494..bf79bc0ff 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -232,6 +232,7 @@ fr:
       deleted_status: "(statut supprimé)"
       title: Journal d’audit
     announcements:
+      destroyed_msg: Annonce supprimée avec succès !
       edit:
         title: Modifier l’annonce
       empty: Aucune annonce trouvée.
@@ -239,9 +240,12 @@ fr:
       new:
         create: Créer une annonce
         title: Nouvelle annonce
-      published: Publié
-      time_range: Intervalle de temps
+      published_msg: Annonce publiée avec succès !
+      scheduled_for: Planifiée pour %{time}
+      scheduled_msg: Annonce planifiée pour publication !
       title: Annonces
+      unpublished_msg: L’annonce a été dépubliée avec succès !
+      updated_msg: L’annonce a été mise à jour avec succès !
     custom_emojis:
       assign_category: Attribuer une catégorie
       by_domain: Domaine
@@ -776,7 +780,6 @@ fr:
     changes_saved_msg: Les modifications ont été enregistrées avec succès !
     copy: Copier
     delete: Supprimer
-    edit: Modifier
     no_batch_actions_available: Aucune action par lots disponible sur cette page
     order_by: Classer par
     save_changes: Enregistrer les modifications
@@ -950,6 +953,7 @@ fr:
     public_timelines: Fils publics
   reactions:
     errors:
+      limit_reached: Limite de réactions différentes atteinte
       unrecognized_emoji: n’est pas un émoji reconnu
   relationships:
     activity: Activité du compte
@@ -1083,6 +1087,7 @@ fr:
         other: "%{count} votes"
       vote: Voter
     show_more: Afficher plus
+    show_thread: Afficher le fil de discussion
     sign_in_to_participate: Inscrivez-vous pour prendre part à la conversation
     title: '%{name} : "%{quote}"'
     visibilities:
diff --git a/config/locales/gl.yml b/config/locales/gl.yml
index 9fa44456e..c3a33932d 100644
--- a/config/locales/gl.yml
+++ b/config/locales/gl.yml
@@ -35,7 +35,7 @@ gl:
     status_count_before: Que publicaron
     tagline: Segue ás túas amizades e coñece novas
     terms: Termos do servizo
-    unavailable_content: Contido non dispoñíbel
+    unavailable_content: Contido non dispoñible
     unavailable_content_description:
       domain: Servidor
       reason: Razón
@@ -146,7 +146,7 @@ gl:
       most_recent_ip: IP máis recente
       no_account_selected: Ningunha conta mudou porque ningunha foi seleccionada
       no_limits_imposed: Sen límites impostos
-      not_subscribed: Non subscrito
+      not_subscribed: Non subscrita
       pending: Revisión pendente
       perform_full_suspension: Suspender
       promote: Promocionar
@@ -177,21 +177,21 @@ gl:
       show:
         created_reports: Denuncias feitas
         targeted_reports: Denuncias feitas por outros
-      silence: Silenciar
-      silenced: Silenciado
+      silence: Acalar
+      silenced: Acalada
       statuses: Estados
       subscribe: Subscribirse
-      suspended: Suspendido
+      suspended: Suspendida
       time_in_queue: Agardando na cola %{time}
       title: Contas
       unconfirmed_email: Email non confirmado
-      undo_silenced: Desfacer silencio
+      undo_silenced: Desfacer acalar
       undo_suspension: Desfacer suspensión
       unsubscribe: Desbotar a subscrición
       username: Nome de usuaria
       warn: Aviso
       web: Web
-      whitelisted: Listaxe branca
+      whitelisted: Lista branca
     action_logs:
       actions:
         assigned_to_self_report: "%{name} atribuíu a denuncia %{target} a el mesmo"
@@ -232,6 +232,7 @@ gl:
       deleted_status: "(estado eliminado)"
       title: Rexistro de auditoría
     announcements:
+      destroyed_msg: Anuncio eliminado de xeito correcto!
       edit:
         title: Editar anuncio
       empty: Ningún anuncio atopado.
@@ -239,9 +240,12 @@ gl:
       new:
         create: Crear anuncio
         title: Novo anuncio
-      published: Publicado
-      time_range: Intre de tempo
+      published_msg: Anuncio publicado de xeito correcto!
+      scheduled_for: Programado para %{time}
+      scheduled_msg: Anuncio programado para a súa publicación!
       title: Anuncios
+      unpublished_msg: Anuncio desbotado de xeito correcto!
+      updated_msg: Anuncio actualizado de xeito correcto!
     custom_emojis:
       assign_category: Atribuír categoría
       by_domain: Dominio
@@ -508,13 +512,13 @@ gl:
         desc_html: Parágrafo de presentación na páxina principal. Describe o que fai especial a este servidor Mastodon e calquera outra ouca importante. Pode utilizar etiquetas HTML, en particular <code>&lt;a&gt;</code> e <code>&lt;em&gt;</code>.
         title: Descrición do servidor
       site_description_extended:
-        desc_html: Un bo lugar para o seu código de conducta, regras, guías e outras cousas que distingan ao seu servidor. Pode utilizar etiquetas HTML
+        desc_html: Un bo lugar para o teu código de conduta, regras, guías e outras cousas para diferenciar o teu servidor. Podes empregar etiquetas HTML
         title: Información extendida da personalización
       site_short_description:
-        desc_html: Mostrado na barra lateral e nas etiquetas meta. Describe o que é Mastodon e que fai especial a este servidor nun só parágrafo. Se está baldeiro, mostrará a descrición do servidor.
+        desc_html: Amosado na barra lateral e nas etiquetas meta. Describe o que é Mastodon e que fai especial a este servidor nun só parágrafo. Se está baleiro, amosará a descrición do servidor.
         title: Descrición curta do servidor
       site_terms:
-        desc_html: Pode escribir a súa propia política de intimidade, termos de servizo ou aclaracións legais. Pode utilizar etiquetas HTML
+        desc_html: Podes escribir a túa propia política de privacidade, termos de servizo ou aclaracións legais. Podes empregar etiquetas HTML
         title: Termos de servizo personalizados
       site_title: Nome do servidor
       spam_check_enabled:
@@ -528,11 +532,11 @@ gl:
         title: vista previa da liña temporal
       title: Axustes do sitio
       trendable_by_default:
-        desc_html: Afecta a etiquetas que non foron rexeitadas previamente
-        title: Permite as etiquetas ser tendencia sen revisión previa
+        desc_html: Afecta ós cancelos que non foron rexeitados de xeito previo
+        title: Permite ós cancelos ser tendencia sen revisión previa
       trends:
-        desc_html: Mostrar públicamente etiquetas previamente revisadas que actualmente son tendencia
-        title: Etiquetas Tendencia
+        desc_html: Amosar de xeito público cancelos revisados previamente que actualmente son tendencia
+        title: Cancelos en tendencia
     statuses:
       back_to_account: Voltar a páxina da conta
       batch:
@@ -557,14 +561,14 @@ gl:
       last_active: Úlimo activo
       most_popular: Máis popular
       most_recent: Máis recente
-      name: Etiqueta
+      name: Cancelo
       review: Estado de revisión
       reviewed: Revisado
-      title: Etiquetas
+      title: Cancelos
       trending_right_now: Agora como Tendencia
       unique_uses_today: "%{count} publicando hoxe"
       unreviewed: Sen revisar
-      updated_msg: Actualizaronse os axustes das etiquetas
+      updated_msg: Actualizaronse os axustes dos cancelos
     title: Administración
     warning_presets:
       add_new: Engadir novo
@@ -581,8 +585,8 @@ gl:
       body_remote: Alguén desde %{domain} informou sobre %{target}
       subject: Novo informe sobre %{instance} (#%{id})
     new_trending_tag:
-      body: 'A etiqueta #%{name} é tendencia hoxe, pero non foi previamente revisada. Non se mostrará publicamente a menos que ti o permitas, ou gardes o formulario para facer que non se che consulte de novo.'
-      subject: Unha nova etiqueta que revisar en %{instance} (#%{name})
+      body: 'O cancelo #%{name} é tendencia hoxe, pero non foi previamente revisada. Non se amosará de xeito público a menos que ti o permitas, ou gardes o formulario para facer que non se che consulte de novo.'
+      subject: Un novo cancelo que revisar en %{instance} (#%{name})
   aliases:
     add_new: Crear alcume
     created_msg: Creou un novo alcume correctamente. Pode iniciar o movemento desde a conta antiga.
@@ -591,7 +595,7 @@ gl:
     remove: Desligar alcume
   appearance:
     advanced_web_interface: Interface web avanzada
-    advanced_web_interface_hint: Se quere utilizar todo o ancho da súa pantalla, a interface web avanzada permítelle configurar diferentes columnas para ver tanta información como desexe. Inicio, notificacións, liña temporal federada, calquera número de listas e etiquetas.
+    advanced_web_interface_hint: Se queres empregar todo o ancho da túa pantalla, a interface web avanzada permíteche configurar diferentes columnas para ver tanta información como desexe. Inicio, notificacións, cronoloxía federada, calquera número de listaxes e cancelos.
     animations_and_accessibility: Animacións e accesibilidade
     confirmation_dialogs: Diálogos de confirmación
     discovery: Descubrir
@@ -642,8 +646,8 @@ gl:
     registration_closed: "%{instance} non está a aceptar novas usuarias"
     resend_confirmation: Voltar a enviar intruccións de confirmación
     reset_password: Restablecer contrasinal
-    security: Seguridade
-    set_new_password: Establecer novo contrasinal
+    security: Seguranza
+    set_new_password: Estabelecer novo contrasinal
     setup:
       email_below_hint_html: Se o enderezo inferior non é correcto, pode cambialo aquí e recibir un correo de confirmación.
       email_settings_hint_html: Enviouse un correo de confirmación a %{email}. Se o enderezo non é correcto pode cambialo nos axustes da conta.
@@ -664,7 +668,7 @@ gl:
     post_follow:
       close: Ou, pode pechar esta ventá.
       return: Mostrar o perfil da usuaria
-      web: Ir a web
+      web: Ir á web
     title: Seguir %{acct}
   challenge:
     confirm: Continuar
@@ -678,12 +682,12 @@ gl:
     distance_in_words:
       about_x_hours: "%{count}h"
       about_x_months: "%{count}mes"
-      about_x_years: "%{count}a"
-      almost_x_years: "%{count}a"
+      about_x_years: "%{count}ano"
+      almost_x_years: "%{count}ano"
       half_a_minute: Agora
       less_than_x_minutes: "%{count}m"
       less_than_x_seconds: Agora
-      over_x_years: "%{count}a"
+      over_x_years: "%{count}ano"
       x_days: "%{count}d"
       x_minutes: "%{count}m"
       x_months: "%{count}mes"
@@ -737,16 +741,16 @@ gl:
       in_progress: Xerando o seu ficheiro...
       request: Solicite o ficheiro
       size: Tamaño
-    blocks: A bloquear
+    blocks: Bloqueos
     csv: CSV
     domain_blocks: Bloqueos de dominio
-    lists: Listas
-    mutes: Acalou
-    storage: Almacenamento de medios
+    lists: Listaxes
+    mutes: Silenciados
+    storage: Almacenamento de multimedia
   featured_tags:
     add_new: Engadir novo
     errors:
-      limit: Xa acadou o número máximo de etiquetas
+      limit: Xa acadaches o número máximo de cancelos
     hint_html: "<strong>¿Qué son as etiquetas destacadas?</strong> Móstranse destacadas no seu perfil público e permítenlle a outras persoas ver os seus toots públicos nos que as utilizou. Son unha ferramenta moi útil para facer seguimento de traballos creativos e proxectos a longo prazo."
   filters:
     contexts:
@@ -776,7 +780,6 @@ gl:
     changes_saved_msg: Cambios gardados correctamente!!
     copy: Copiar
     delete: Eliminar
-    edit: Editar
     no_batch_actions_available: Non hai accións en pila dispoñibles nesta páxina
     order_by: Ordenar por
     save_changes: Gardar cambios
@@ -950,6 +953,7 @@ gl:
     public_timelines: Liñas temporais públicas
   reactions:
     errors:
+      limit_reached: Acadouse o límite das diferentes reaccións
       unrecognized_emoji: non é unha emoticona recoñecida
   relationships:
     activity: Actividade da conta
@@ -1040,7 +1044,7 @@ gl:
     development: Desenvolvemento
     edit_profile: Editar perfil
     export: Exportar datos
-    featured_tags: Etiquetas destacadas
+    featured_tags: Cancelos destacados
     identity_proofs: Probas de identidade
     import: Importar
     import_and_export: Importar e exportar
@@ -1064,8 +1068,8 @@ gl:
     boosted_from_html: Promovida desde %{acct_link}
     content_warning: 'Aviso sobre o contido: %{warning}'
     disallowed_hashtags:
-      one: 'contiña unha etiqueta non permitida: %{tags}'
-      other: 'contiña etiquetas non permitidas: %{tags}'
+      one: 'contiña un cancelo non permitido: %{tags}'
+      other: 'contiña uns cancelos non permitidos: %{tags}'
     language_detection: Detección automática do idioma
     open_in_web: Abrir na web
     over_character_limit: Excedeu o límite de caracteres %{max}
@@ -1083,6 +1087,7 @@ gl:
         other: "%{count} votos"
       vote: Votar
     show_more: Mostrar máis
+    show_thread: Amosar fío
     sign_in_to_participate: Conéctese para participar na conversa
     title: '%{name}: "%{quote}"'
     visibilities:
diff --git a/config/locales/hu.yml b/config/locales/hu.yml
index d83192ad5..2d7f3a137 100644
--- a/config/locales/hu.yml
+++ b/config/locales/hu.yml
@@ -234,6 +234,7 @@ hu:
       deleted_status: "(törölt tülk)"
       title: Audit napló
     announcements:
+      destroyed_msg: A közlemény sikeresen törölve!
       edit:
         title: Közlemény szerkesztése
       empty: Nincs közlemény.
@@ -241,9 +242,12 @@ hu:
       new:
         create: Közlemény létrehozása
         title: Új közlemény
-      published: Közzétéve
-      time_range: Időintervallum
+      published_msg: A közlemény sikeresen publikálva!
+      scheduled_for: Ekkorra ütemezve %{time}
+      scheduled_msg: A közlemény közzétételre beütemezve!
       title: Közlemények
+      unpublished_msg: A közlemény közzététele sikeresen visszavonva!
+      updated_msg: A közlemény sikeresen frissítve!
     custom_emojis:
       assign_category: Kategóriák
       by_domain: Domain
@@ -778,7 +782,6 @@ hu:
     changes_saved_msg: A változásokat elmentettük!
     copy: Másolás
     delete: Törlés
-    edit: Szerkesztés
     no_batch_actions_available: Ezen az oldalon nem elérhetőek kötegelt műveletek
     order_by: Rendezés
     save_changes: Változások mentése
@@ -952,6 +955,7 @@ hu:
     public_timelines: Nyilvános idővonalak
   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
   relationships:
     activity: Fiók aktivitás
@@ -1085,6 +1089,7 @@ hu:
         other: "%{count} szavazat"
       vote: Szavazás
     show_more: Mutass többet
+    show_thread: Szál mutatása
     sign_in_to_participate: Jelentkezz be, hogy részt vehess a beszélgetésben
     title: '%{name}: "%{quote}"'
     visibilities:
diff --git a/config/locales/id.yml b/config/locales/id.yml
index 8cdb2f1fc..ca222946c 100644
--- a/config/locales/id.yml
+++ b/config/locales/id.yml
@@ -194,11 +194,13 @@ id:
         change_email_user: "%{name} mengubah alamat surel pengguna %{target}"
         confirm_user: "%{name} mengonfirmasi alamat surel pengguna %{target}"
         create_account_warning: "%{name} mengirim peringatan untuk %{target}"
+        create_announcement: "%{name} membuat pengumuman baru %{target}"
         create_custom_emoji: "%{name} mengunggah emoji baru %{target}"
         create_domain_allow: "%{name} memasukkan ke daftar putih domain %{target}"
         create_domain_block: "%{name} memblokir domain %{target}"
         create_email_domain_block: "%{name} memasukkan ke daftar hitam domain surel %{target}"
         demote_user: "%{name} menurunkan pengguna %{target}"
+        destroy_announcement: "%{name} menghapus pengumuman %{target}"
         destroy_custom_emoji: "%{name} menghapus emoji %{target}"
         destroy_domain_allow: "%{name} menghapus domain %{target} dari daftar putih"
         destroy_domain_block: "%{name} membuka blokir domain %{target}"
@@ -220,10 +222,26 @@ id:
         unassigned_report: "%{name} tidak menugaskan laporan %{target}"
         unsilence_account: "%{name} menghapus bungkaman akun %{target}"
         unsuspend_account: "%{name} menghapus penangguhan akun %{target}"
+        update_announcement: "%{name} memperbarui pengumuman %{target}"
         update_custom_emoji: "%{name} memperbarui emoji %{target}"
         update_status: "%{name} memperbarui status %{target}"
       deleted_status: "(status dihapus)"
       title: Log audit
+    announcements:
+      destroyed_msg: Pengumuman berhasil dihapus!
+      edit:
+        title: Edit pengumuman
+      empty: Pengumuman tidak ditemukan.
+      live: Siaran langsung
+      new:
+        create: Buat pengumuman
+        title: Pengumuman baru
+      published_msg: Pengumuman berhasil diterbitkan!
+      scheduled_for: Dijadwalkan untuk %{time}
+      scheduled_msg: Pengumuman dijadwalkan untuk publikasi!
+      title: Pengumuman
+      unpublished_msg: Pengumuman berhasil ditarik!
+      updated_msg: Pengumuman berhasil diperbarui!
     custom_emojis:
       assign_category: Beri kategori
       by_domain: Domain
@@ -366,6 +384,8 @@ id:
       title: Undang
     pending_accounts:
       title: Akun tertunda (%{count})
+    relationships:
+      title: Hubungan %{acct}
     relays:
       add_new: Tambah relai baru
       delete: Hapus
@@ -494,6 +514,7 @@ id:
         title: Ketentuan layanan kustom
       site_title: Judul Situs
       spam_check_enabled:
+        desc_html: Mastodon dapat melaporkan secara otomatis akun yang mengirimkan pesan berulang tanpa diminta. Ini mungkin ada kesalahan.
         title: Automasi anti-spam
       thumbnail:
         desc_html: Dipakai sebagai pratinjau via OpenGraph dan API. Direkomendasikan 1200x630px
@@ -646,6 +667,9 @@ id:
     hint_html: "<strong>Tip:</strong> Kami tidak akan meminta kata sandi Anda lagi untuk beberapa jam ke depan."
     invalid_password: Kata sandi tidak valid
     prompt: Konfirmasi kata sandi untuk melanjutkan
+  date:
+    formats:
+      default: "%d %b %Y"
   datetime:
     distance_in_words:
       about_x_hours: "%{count}j"
@@ -719,8 +743,10 @@ id:
     add_new: Tambah baru
     errors:
       limit: Anda sudah menampilkan tagar unggulan dengan jumlah maksimum
+    hint_html: "<strong>Apa itu tagar yang diunggulkan?</strong> Mereka ditampilkan secara mencolok di profil publik Anda dan mengizinkan orang-orang untuk menjelajahi kiriman publik khususnya yang ada di bawah tagar tersebut. Mereka adalah alat yang bagus untuk melacak pekerjaan kreatif atau proyek jangka panjang."
   filters:
     contexts:
+      account: Profil
       home: Beranda
       notifications: Notifikasi
       public: Linimasa publik
@@ -744,6 +770,8 @@ id:
     all: Semua
     changes_saved_msg: Perubahan berhasil disimpan!
     copy: Salin
+    delete: Hapus
+    no_batch_actions_available: Tindakan batch tidak tersedia di halaman ini
     order_by: Urut berdasarkan
     save_changes: Simpan perubahan
     validation_errors:
@@ -1027,6 +1055,7 @@ id:
         other: "%{count} memilih"
       vote: Memilih
     show_more: Tampilkan selengkapnya
+    show_thread: Tampilkan utas
     sign_in_to_participate: Masuk untuk mengikuti percakapan
     title: '%{name}: "%{quote}"'
     visibilities:
diff --git a/config/locales/is.yml b/config/locales/is.yml
index 70d6e4e75..d6cf23966 100644
--- a/config/locales/is.yml
+++ b/config/locales/is.yml
@@ -198,11 +198,13 @@ is:
         change_email_user: "%{name} breytti tölvupóstfangi fyrir notandann %{target}"
         confirm_user: "%{name} staðfesti tölvupóstfang fyrir notandann %{target}"
         create_account_warning: "%{name} sendi aðvörun til %{target}"
+        create_announcement: "%{name} útbjó auglýsingu %{target}"
         create_custom_emoji: "%{name} sendi inn nýtt tjáningartákn %{target}"
         create_domain_allow: "%{name} setti lén %{target} á lista yfir leyft"
         create_domain_block: "%{name} útilokaði lénið %{target}"
         create_email_domain_block: "%{name} setti póstlén %{target} á lista yfir bannað"
         demote_user: "%{name} lækkaði notandann %{target} í tign"
+        destroy_announcement: "%{name} eyddi auglýsingu %{target}"
         destroy_custom_emoji: "%{name} henti út tjáningartákninu %{target}"
         destroy_domain_allow: "%{name} fjarlægði lén %{target} af lista yfir leyft"
         destroy_domain_block: "%{name} aflétti útilokun af léninu %{target}"
@@ -224,10 +226,26 @@ is:
         unassigned_report: "%{name} fjarlægði úthlutun af skýrslu %{target}"
         unsilence_account: "%{name} hætti að hylja notandaaðganginn %{target}"
         unsuspend_account: "%{name} tók notandaaðganginn %{target} úr bið"
+        update_announcement: "%{name} uppfærði auglýsingu %{target}"
         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)"
       title: Atvikaskrá
+    announcements:
+      destroyed_msg: Það tókst að eyða auglýsingunni!
+      edit:
+        title: Breyta auglýsingu
+      empty: Engar auglýsingar fundust.
+      live: Í beinni
+      new:
+        create: Búa til auglýsingu
+        title: Ný auglýsing
+      published_msg: Það tókst að birta auglýsinguna!
+      scheduled_for: Áætlað %{time}
+      scheduled_msg: Auglýsing var sett á áætlun!
+      title: Auglýsingar
+      unpublished_msg: Það tókst að taka auglýsinguna úr birtingu!
+      updated_msg: Það tókst að uppfæra auglýsinguna!
     custom_emojis:
       assign_category: Úthluta flokki
       by_domain: Lén
@@ -372,6 +390,8 @@ is:
       title: Boðsgestir
     pending_accounts:
       title: Notendaaðgangar í bið (%{count})
+    relationships:
+      title: Vensl %{acct}
     relays:
       add_new: Bæta við nýjum endurvarpa
       delete: Eyða
@@ -655,6 +675,9 @@ is:
     hint_html: "<strong>Ábending:</strong> Við munum ekki spyrja þig um lykilorðið aftur næstu klukkustundina."
     invalid_password: Ógilt lykilorð
     prompt: Staðfestu lykilorðið til að halda áfram
+  date:
+    formats:
+      default: "%d. %b, %Y"
   datetime:
     distance_in_words:
       about_x_hours: "%{count}kl."
@@ -731,6 +754,7 @@ is:
     hint_html: "<strong>Hvað eru myllumerki með aukið vægi?</strong> Þau eru birt áberandi á opinbera notandasniðinu þínu og gera fólki kleift að fletta í gegnum opinberu færslurnar þínar sérstaklega undir þessum myllumerkjum. Þau eru frábær aðferð við að halda utan um skapandi vinnu eða langtíma verkefni."
   filters:
     contexts:
+      account: Notandasnið
       home: Heimatímalína
       notifications: Tilkynningar
       public: Opinberar tímalínur
@@ -755,6 +779,7 @@ is:
     all: Allt
     changes_saved_msg: Það tókst að vista breytingarnar!
     copy: Afrita
+    delete: Eyða
     no_batch_actions_available: Engar magnvinnsluaðgerðir tiltækar á þessari síðu
     order_by: Raða eftir
     save_changes: Vista breytingar
@@ -926,11 +951,16 @@ is:
     other: Annað
     posting_defaults: Sjálfgefin gildi við gerð færslna
     public_timelines: Opinberar tímalínur
+  reactions:
+    errors:
+      limit_reached: Hámarki mismunandi viðbragða náð
+      unrecognized_emoji: er ekki þekkt tjáningartákn
   relationships:
     activity: Virkni aðgangs
     dormant: Sofandi
     followers: Fylgjendur
     following: Fylgist með
+    invited: Boðið
     last_active: Síðasta virkni
     most_recent: Nýjast
     moved: Fært
@@ -1057,6 +1087,7 @@ is:
         other: "%{count} atkvæði"
       vote: Greiða atkvæði
     show_more: Sýna meira
+    show_thread: Birta þráð
     sign_in_to_participate: Skráðu þig inn til að taka þátt í samtalinu
     title: "%{name}: „%{quote}‟"
     visibilities:
diff --git a/config/locales/it.yml b/config/locales/it.yml
index a7e811e22..2ccdc076c 100644
--- a/config/locales/it.yml
+++ b/config/locales/it.yml
@@ -198,11 +198,13 @@ it:
         change_email_user: "%{name} ha cambiato l'indirizzo email per l'utente %{target}"
         confirm_user: "%{name} ha confermato l'indirizzo email per l'utente %{target}"
         create_account_warning: "%{name} ha mandato un avvertimento a %{target}"
+        create_announcement: "%{name} ha creato un nuovo annuncio %{target}"
         create_custom_emoji: "%{name} ha caricato un nuovo emoji %{target}"
         create_domain_allow: "%{name} ha messo il dominio %{target} nella whitelist"
         create_domain_block: "%{name} ha bloccato il dominio %{target}"
         create_email_domain_block: "%{name} ha messo il dominio email %{target} nella blacklist"
         demote_user: "%{name} ha degradato l'utente %{target}"
+        destroy_announcement: "%{name} ha eliminato l'annuncio %{target}"
         destroy_custom_emoji: "%{name} ha distrutto l'emoji %{target}"
         destroy_domain_allow: "%{name} ha tolto il dominio %{target} dalla whitelist"
         destroy_domain_block: "%{name} ha sbloccato il dominio %{target}"
@@ -224,10 +226,26 @@ it:
         unassigned_report: "%{name} report non assegnato %{target}"
         unsilence_account: "%{name} ha de-silenziato l'account di %{target}"
         unsuspend_account: "%{name} ha annullato la sospensione dell'account di %{target}"
+        update_announcement: "%{name} ha aggiornato l'annuncio %{target}"
         update_custom_emoji: "%{name} ha aggiornato l'emoji %{target}"
         update_status: "%{name} stato aggiornato da %{target}"
       deleted_status: "(stato cancellato)"
       title: Registro di controllo
+    announcements:
+      destroyed_msg: Annuncio eliminato!
+      edit:
+        title: Modifica annuncio
+      empty: Nessun annuncio trovato.
+      live: Attivo
+      new:
+        create: Crea annuncio
+        title: Nuovo annuncio
+      published_msg: Annuncio pubblicato!
+      scheduled_for: Programmato per %{time}
+      scheduled_msg: Annuncio programmato per la pubblicazione!
+      title: Annunci
+      unpublished_msg: Annuncio tolto dalla pubblicazione!
+      updated_msg: Annuncio aggiornato!
     custom_emojis:
       assign_category: Assegna categoria
       by_domain: Dominio
@@ -372,6 +390,8 @@ it:
       title: Inviti
     pending_accounts:
       title: Account in attesa (%{count})
+    relationships:
+      title: Relazioni di %{acct}
     relays:
       add_new: Aggiungi ripetitore
       delete: Cancella
@@ -656,6 +676,9 @@ it:
     hint_html: "<strong>Suggerimento:</strong> Non ti chiederemo di nuovo la tua password per la prossima ora."
     invalid_password: Password non valida
     prompt: Conferma la tua password per continuare
+  date:
+    formats:
+      default: "%d %b %Y"
   datetime:
     distance_in_words:
       about_x_hours: "%{count} ore"
@@ -732,6 +755,7 @@ it:
     hint_html: "<strong>Cosa sono gli hashtag in evidenza?</strong> Sono visualizzati in evidenza sul tuo profilo pubblico e permettono alle persone di visualizzare i tuoi post pubblici marcati con questi hashtag. Sono un grande strumento per tenere traccia di opere creative o progetti a lungo termine."
   filters:
     contexts:
+      account: Profili
       home: Timeline home
       notifications: Notifiche
       public: Timeline pubbliche
@@ -756,6 +780,7 @@ it:
     all: Tutto
     changes_saved_msg: Modifiche effettuate con successo!
     copy: Copia
+    delete: Cancella
     no_batch_actions_available: Nessuna azione batch disponibile su questa pagina
     order_by: Ordina per
     save_changes: Salva modifiche
@@ -927,11 +952,16 @@ it:
     other: Altro
     posting_defaults: Predefinite di pubblicazione
     public_timelines: Timeline pubbliche
+  reactions:
+    errors:
+      limit_reached: Raggiunto il limite di reazioni diverse
+      unrecognized_emoji: non è un emoji riconosciuto
   relationships:
     activity: Attività dell'account
     dormant: Dormiente
     followers: Seguaci
     following: Seguiti
+    invited: Invitato
     last_active: Ultima volta attivo
     most_recent: Più recente
     moved: Trasferito
@@ -1058,6 +1088,7 @@ it:
         other: "%{count} voti"
       vote: Vota
     show_more: Mostra di più
+    show_thread: Mostra thread
     sign_in_to_participate: Accedi per partecipare alla conversazione
     title: '%{name}: "%{quote}"'
     visibilities:
diff --git a/config/locales/ja.yml b/config/locales/ja.yml
index 1add33a4a..00e76a8da 100644
--- a/config/locales/ja.yml
+++ b/config/locales/ja.yml
@@ -228,6 +228,7 @@ ja:
       deleted_status: "(削除済)"
       title: 操作履歴
     announcements:
+      destroyed_msg: お知らせが削除されました
       edit:
         title: お知らせを編集
       empty: お知らせはありません
@@ -235,9 +236,12 @@ ja:
       new:
         create: お知らせを作成
         title: お知らせを追加
-      published: 公開日時
-      time_range: 期間
+      published_msg: お知らせを掲載しました
+      scheduled_for: "%{time} に予約"
+      scheduled_msg: お知らせの掲載を予約しました
       title: お知らせ
+      unpublished_msg: お知らせを非掲載にしました
+      updated_msg: お知らせを更新しました
     custom_emojis:
       assign_category: カテゴリーを割り当て
       by_domain: ドメイン
@@ -768,7 +772,6 @@ ja:
     changes_saved_msg: 正常に変更されました!
     copy: コピー
     delete: 削除
-    edit: 編集
     no_batch_actions_available: このページに一括操作はありません
     order_by: 並び順
     save_changes: 変更を保存
@@ -940,7 +943,7 @@ ja:
   reactions:
     errors:
       limit_reached: リアクションの種類が上限に達しました
-      unrecognized_emoji: 認識できない絵文字
+      unrecognized_emoji: は絵文字として認識されていません
   relationships:
     activity: 活動
     dormant: 非アクティブ
@@ -1069,6 +1072,7 @@ ja:
         other: "%{count}票"
       vote: 投票
     show_more: もっと見る
+    show_thread: スレッドを表示
     sign_in_to_participate: ログインして会話に参加
     title: '%{name}: "%{quote}"'
     visibilities:
diff --git a/config/locales/kab.yml b/config/locales/kab.yml
index 5cedbd364..03f4d8c13 100644
--- a/config/locales/kab.yml
+++ b/config/locales/kab.yml
@@ -1,70 +1,71 @@
 ---
 kab:
   about:
-    about_hashtag_html: Tigi d tiberraḥin tizuyaz, γur-sent <strong>#%{hashtag}</strong>. Tzemreḍ ad tesdemreḍ akked yid-sent ma tesɛiḍ amiḍan deg kra n umḍiq deg fediverse.
-    about_mastodon_html: 'Azeṭṭa ametti n uzekka: Ulac deg-s asussen, ulac taɛessast n tsuddiwin fell-ak, yebna ɣef leqder d ttrebga, daɣen d akeslemmas! Akked Mastudun, isefka-inek ad qimen inek!'
-    about_this: Ɣef
-    active_count_after: yekker
+    about_hashtag_html: Tigi d tijewwiqin tizuyaz, γur-sent <strong>#%{hashtag}</strong>. Tzemreḍ ad tesdemreḍ akked yid-sent ma tesɛiḍ amiḍan deg kra n umḍiq deg fedivers.
+    about_mastodon_html: 'Azeṭṭa ametti n uzekka: Ulac deg-s asussen, ulac taɛessast n tsuddiwin fell-ak, yebna γef leqder d ttrebga, daγen d akeslemmas! Akked Maṣṭudun, isefka-inek ad qimen inek!'
+    about_this: Γef
+    active_count_after: d urmid
     active_footnote: Imseqdacen yekkren s wayyur (MAU)
-    administered_by: 'Yettwadbel sɣur:'
+    administered_by: 'Yettwadbel sγur:'
     api: API
     apps: Isnasen izirazen
-    apps_platforms: Seqdec Masṭudun deg iOS, Android d tɣeṛɣṛin-nniḍen
-    browse_directory: Qelleb deg tebdert n yimaɣnuten teǧǧeḍ-d gar-asen widak tebɣiḍ
+    apps_platforms: Seqdec Maṣṭudun deg iOS, Android d tγeṛγṛin-nniḍen
+    browse_directory: Qelleb deg ukaram n imaγnuten teǧǧeḍ-d gar-asen widak tebγiḍ
     contact: Anermis
     contact_unavailable: Wlac
     discover_users: Af-d imseqdacen
     documentation: Amnir
-    federation_hint_html: S umiḍan deg %{instance} tzemreḍ ad tḍefṛeḍ imdanen deg yal aqeddac Masṭudun d wugar n waya.
+    federation_hint_html: S umiḍan deg %{instance} tzemreḍ ad tḍefṛeḍ imdanen deg yal aqeddac Maṣṭudun d wugar n waya.
     get_apps: Ɛreḍ asnas aziraz
-    hosted_on: Masṭudun yersen deg %{domain}
+    hosted_on: Maṣṭudun yersen deg %{domain}
     learn_more: Issin ugar
     privacy_policy: Tasertit tabaḍnit
     see_whats_happening: Ẓer d acu i iḍerrun
     server_stats: 'Tidaddanin n uqeddac:'
-    source_code: Tangalt n uɣbalu
+    source_code: Tangalt Taγbalut
     status_count_after:
-      one: n tsuffeɣt
-      other: n tsuffɣin
-    status_count_before: I d-yessuffɣen
+      one: n tsuffeγt
+      other: n tsuffγin
+    status_count_before: I d-yessuffγen
     tagline: Ḍfeṛ imddukkal-ik tissineḍ-d wiyaḍ
     terms: Tiwetlin n useqdec
     unavailable_content: Ulac agbur
     unavailable_content_description:
       domain: Aqeddac
       reason: Taγzent
-      silenced: 'Tisuffɣin ara d-yekken seg yiqeddacen-agi ad ttwaffrent deg tsuddmin tizuyaz d yidiwenniten, daɣen ur ttilin ara telɣa ɣef usedmer n yimseqdacen-nsen, skud ur ten-teḍfiṛeḍ ara:'
-    unavailable_content_html: Mastudun s umata yeḍmen-ak ad teẓreḍ agbur, ad tesdemreḍ akked yimseqdacen-nniḍen seg yal aqeddac deg fedivers. Ha-tent-an ɣur-k tsuraf i yellan deg uqeddac-agi.
+      silenced: 'Tisuffγin ara d-yekken seg yiqeddacen-agi ad ttwaffrent deg tsuddmin tizuyaz d yidiwenniten, daγen ur ttilin ara telγa γef usedmer n yimseqdacen-nsen, skud ur ten-teḍfiṛeḍ ara:'
+    unavailable_content_html: Maṣṭudun s umata yeḍmen-ak ad teẓreḍ agbur, ad tesdemreḍ akked yimseqdacen-nniḍen seg yal aqeddac deg fedivers. Ha-tent-an γur-k tsuraf i yellan deg uqeddac-agi.
     user_count_after:
       one: amseqdac
       other: imseqdacen
     user_count_before: Amagger n
-    what_is_mastodon: D acu-t Masṭudun?
+    what_is_mastodon: D acu-t Maṣṭudun?
   accounts:
     follow: Ḍfeṛ
     followers:
       one: Ameḍfaṛ
       other: Imeḍfaṛen
     following: Yeṭafaṛ
-    joined: Yettwarna-d deg %{date}
+    joined: Ikcemed deg %{date}
     last_active: armud aneggaru
-    moved_html: "%{name} ibeddel amiḍan ɣer %{new_profile_link}:"
+    media: Taγwalt
+    moved_html: 'ibeddel %{name} amiḍan γer %{new_profile_link}:'
     network_hidden: Ulac isalli-agi
     never_active: Werǧin
     nothing_here: Ulac kra da!
     people_followed_by: Imdanen i yeṭṭafaṛ %{name}
     people_who_follow: Imdanen yeṭṭafaṛen %{name}
     posts:
-      one: Taberraḥt
-      other: Tiberraḥin
+      one: Tajewwiqt
+      other: Tijewwiqin
     posts_tab_heading: Tiberraḥin
-    posts_with_replies: Tibarraḥin d tririyin
+    posts_with_replies: Tijewwaqin akked tririyin
     reserved_username: Isem-agi n umseqdac yettwaṭṭef yakan
     roles:
       admin: Anedbal
       bot: Aṛubut
       group: Agraw
-    unavailable: Ur nufi ara amaɣnu-a
+    unavailable: Ur nufi ara amaγnu-a
     unfollow: Ur ṭṭafaṛ ara
   admin:
     account_moderation_notes:
@@ -74,7 +75,8 @@ kab:
       approve: Qbel
       approve_all: Qbel kullec
       are_you_sure: Tetḥeqqeḍ?
-      by_domain: Taɣult
+      avatar: Tugna n wummuγ
+      by_domain: Taγult
       change_email:
         changed_msg: Imayl n umiḍan yettwabeddel mebla ugur!
         current_email: Imayl n tura
@@ -88,8 +90,9 @@ kab:
       deleted: Yettwakkes
       disable: Gdel
       disable_two_factor_authentication: Gdel 2FA
+      disabled: Yensa
       display_name: Isem ara d-yettwaskanen
-      domain: Taɣult
+      domain: Taγult
       edit: Ẓreg
       email: Imayl
       email_status: Addad n imayl
@@ -100,7 +103,7 @@ kab:
       header: Ixef
       inbox_url: URL n yinekcam
       ip: Tansa IP
-      joined: Yettwarna-d
+      joined: Ikcemed deg
       location:
         all: Akk
         local: Adigan
@@ -118,15 +121,17 @@ kab:
       no_limits_imposed: War tilisa
       protocol: Aneggaf
       public: Azayez
-      redownload: Smiren amaɣnu
+      redownload: Smiren amaγnu
       reject: Ggami
       reject_all: Ggami-ten akk
+      remove_avatar: Kkes tugna n wummuγ
       resend_confirmation:
         already_confirmed: Amseqdac-agi yettwasentem yakan
         send: Azen tikelt-nniḍen imayl n usentem
         success: Imayl n usentem yettwazen mebla ugur!
       reset: Wennez
       reset_password: Beddel awal uffir
+      role: Tisirag
       roles:
         admin: Anedbal
         staff: Tarbaɛt
@@ -135,10 +140,13 @@ kab:
       search_same_ip: Imseqdacen-nniḍen s tansa IP am tinn-ik
       silence: Sgugem
       silenced: Yettwasgugem
-      statuses: Tisuffɣin
+      statuses: Tisuffγin
+      subscribe: Jerred
       time_in_queue: Deg tebdert n uraju %{time}
       title: Imiḍan
       unconfirmed_email: Imayl ur yettwasentem ara
+      undo_silenced: Kkes asgugem
+      unsubscribe: Ur ṭafar ara
       username: Isem n useqdac
       web: Web
       whitelisted: Deg tebdert tamellalt
@@ -146,16 +154,16 @@ kab:
       actions:
         change_email_user: "%{name} ibeddel imayl n umseqdac %{target}"
         confirm_user: "%{name} isentem tansa imayl n umseqdac %{target}"
-        create_account_warning: "%{name} yuzen alɣu i %{target}"
+        create_account_warning: "%{name} yuzen alγu i %{target}"
         create_custom_emoji: "%{name} yessuli-d imujiten imaynuten %{target}"
-        create_domain_allow: "%{name} yerna taɣult %{target} ɣer tebdart tamellalt"
-        create_domain_block: "%{name} yesseḥbes taɣult %{target}"
-        create_email_domain_block: "%{name} yerna taɣult n imayl %{target} ɣer tebdart taberkant"
+        create_domain_allow: "%{name} yerna taγult %{target} γer tebdart tamellalt"
+        create_domain_block: "%{name} yesseḥbes taγult %{target}"
+        create_email_domain_block: "%{name} yerna taγult n imayl %{target} γer tebdart taberkant"
         destroy_custom_emoji: "%{name} ihudd imuji %{target}"
-        destroy_domain_allow: "%{name} yekkes taɣult %{target} seg tebdart tamellalt"
-        destroy_domain_block: "%{name} yekkes aseḥbes n taɣult %{target}"
-        destroy_email_domain_block: "%{name} yerna taɣult n imayl %{target} ɣer tebdart tamellalt"
-        destroy_status: "%{name} yekkes tasuffeɣt n %{target}"
+        destroy_domain_allow: "%{name} yekkes taγult %{target} seg tebdart tamellalt"
+        destroy_domain_block: "%{name} yekkes aseḥbes n taγult %{target}"
+        destroy_email_domain_block: "%{name} yerna taγult n imayl %{target} γer tebdart tamellalt"
+        destroy_status: "%{name} yekkes tasuffeγt n %{target}"
         disable_custom_emoji: "%{name} yessens imuji %{target}"
         disable_user: "%{name} yessens tuqqna i umseqdac %{target}"
         enable_custom_emoji: "%{name} yermed imuji %{target}"
@@ -164,8 +172,16 @@ kab:
         silence_account: "%{name} yesgugem amiḍan n %{target}"
         unsilence_account: "%{name} yekkes asgugem n umiḍan n %{target}"
         update_custom_emoji: "%{name} yelqem imuji %{target}"
-        update_status: "%{name} yelqem tasuffeɣt n %{target}"
-      deleted_status: "(tasuffeɣt tettwakkes)"
+        update_status: "%{name} yelqem tasuffeγt n %{target}"
+      deleted_status: "(tasuffeγt tettwakkes)"
+    announcements:
+      edit:
+        title: Ẓreg ulγu
+      empty: Ulac kra n ulγuyen.
+      new:
+        create: Rnu-d ulγu
+        title: Ulγu amaynut
+      title: Ulγuyen
     custom_emojis:
       assign_category: Efk taggayt
       by_domain: Taγult
@@ -185,19 +201,28 @@ kab:
       list: Tabdart
       new:
         title: Timerna n imuji udmawan amaynut
+      overwrite: Semselsi
       title: Imujiten udmawanen
+      unlist: Kkes si tabdert
+      unlisted: Yettwakkes si tabdert
+      update_failed_msg: Ur izmir ara ad-issali umuji-a
       upload: Sali
     dashboard:
-      feature_profile_directory: Imaɣnuten
+      config: Tawila
+      feature_profile_directory: Akaram n imaγnuten
+      feature_registrations: Ajerred
       features: Timahaltin
+      open_reports: ad yeldi ineqqisen
+      recent_users: Iseqdacen n memli kan
       software: Aseγẓan
       title: Tafelwit
+      total_users: igellan akk d iseqdacen
       week_users_active: yermed deg yimalas-agi
       week_users_new: imseqdacen deg yimalas-agi
     domain_allows:
-      add_new: Timerna n taɣult ɣer tebdart tamellalt
-      created_msg: Taɣult-a tettwarna ɣer tebdart tamellalt mebla ugur
-      destroyed_msg: Taɣult-a tettwakkes seg tebdart tamellalt
+      add_new: Timerna n taγult γer tebdart tamellalt
+      created_msg: Taγult-a tettwarna γer tebdart tamellalt mebla ugur
+      destroyed_msg: Taγult-a tettwakkes seg tebdart tamellalt
       undo: Kkes seg tebdart tamellalt
     domain_blocks:
       domain: Taγult
@@ -205,15 +230,19 @@ kab:
         severity:
           noop: Ula yiwen
           silence: Sgugem
+      private_comment: Awennit uslig
+      public_comment: Awennit azayez
       severity:
         silence: yettwasgugem
+      show:
+        undo: Sefsex
     email_domain_blocks:
       add_new: Rnu amaynut
       delete: Kkes
       domain: Taγult
       new:
         create: Rnu taγult
-        title: Timerna n taɣult tamaynut n imayl ɣer tebdart taberkant
+        title: Timerna n taγult tamaynut n imayl γer tebdart taberkant
       title: Tabdart taberkant n imayl
     instances:
       by_domain: Taγult
@@ -223,7 +252,10 @@ kab:
         other: "%{count} n yimiḍanen i yettwassnen"
       moderation:
         all: Akk
-      total_blocked_by_us: Ttwasḥebsen sɣur-neɣ
+      private_comment: Awennit uslig
+      public_comment: Awennit azayez
+      title: Tamatut
+      total_blocked_by_us: Ttwasḥebsen sγur-neγ
       total_followed_by_them: Ṭtafaṛen-t
       total_followed_by_us: Neṭṭafaṛ-it
     invites:
@@ -237,7 +269,14 @@ kab:
       delete: Kkes
       disable: Gdel
       enable: Rmed
+      enabled: Yermed
+      save_and_enable: Sekles rnu rmed-it
+      status: Addad
     reports:
+      account:
+        reports:
+          one: "%{count} uneqqis"
+          other: "%{count} n ineqqisen"
       are_you_sure: Tetḥaq-eḍ?
       comment:
         none: Ula yiwen
@@ -246,61 +285,118 @@ kab:
       notes:
         create: Rnu tamawt
         delete: Kkes
+      report: 'Aneqqis #%{id}'
       resolved: Fran
+      status: Addad
+      title: Ineqqisen
       unresolved: Ur yefra ara
+      updated_at: Yettwaleqqem
     settings:
       custom_css:
-        desc_html: Beddel aɣan s CSS ara d-yettwasalayen deg yal asebter
+        desc_html: Beddel aγan s CSS ara d-yettwasalayen deg yal asebter
         title: CSS udmawan
       domain_blocks:
-        all: Ɣef medden akk
-        disabled: Ɣef yiwen ala
-        users: Ɣef yimseqdacen idiganen i yeqqnen
+        all: I medden akk
+        disabled: Γef ula yiwen
+        users: Γef yimseqdacen idiganen i yeqqnen
+      profile_directory:
+        title: Rmed akaram n imaγnuten
+      registrations:
+        min_invite_role:
+          disabled: Ula yiwen·t
+      registrations_mode:
+        modes:
+          none: Yiwen·t ur yzmir ad izeddi
+          open: Zemren akk ad jerden
       site_description:
         title: Aglam n uqeddac
       site_title: Isem n uqeddac
       title: Iγewwaṛen n usmel
     statuses:
+      back_to_account: Tuγalin γer usebter n umiḍan
       batch:
         delete: Kkes
+      deleted: Yettwakkes
+      media:
+        title: Taγwalt
+      no_media: Mebla taγwalt
+      with_media: S taγwalt
+    tags:
+      directory: Deg ukaram
+      in_directory: "%{count} deg ukaram"
+      last_active: Armud aneggaru
+      most_popular: Ittwasnen aṭas
+      most_recent: Melmi kan
     warning_presets:
       add_new: Rnu amaynut
       delete: Kkes
+      edit: Ẓreg
+  admin_mailer:
+    new_report:
+      subject: Aneqqis amaynut i %{instance} (#%{id})
   appearance:
+    discovery: Asnirem
+    localization:
+      guide_link: https://crowdin.com/project/mastodon
+      guide_link_text: Yal yiwen·t y·tezmer a ttekki.
     sensitive_content: Agbur amḥulfu
   application_mailer:
     salutation: "%{name},"
+    view_profile: Sken-d amaγnu
   auth:
     change_password: Awal uffir
     delete_account: Kkes amiḍan
     description:
-      prefix_sign_up: Zeddi di Masṭudun assa!
+      prefix_sign_up: Zeddi di Maṣṭudun assa!
     forgot_password: Tettud awal-ik uffir?
     login: Qqen
     logout: Ffeγ
+    migrate_account: Gujj γer umiḍan nniḍen
+    or_log_in_with: Neγ eqqen s
+    providers:
+      cas: CAS
+      saml: SAML
+    register: Jerred
+    reset_password: Wennez awal uffir
     security: Taγellist
+    set_new_password: Egr-ed awal uffir amaynut
+    status:
+      account_status: Addad n umiḍan
+      functional: Amiḍan-inek·m yettwaheyya.
     trouble_logging_in: Γur-k uguren n tuqqna?
   authorize_follow:
+    already_following: Teṭafareḍ ya kan amiḍan-a
     follow: Ḍfeṛ
+    following: 'Igerrez! Aqlik teṭafareḍ tura:'
     post_follow:
+      return: Sken-ed amγnu n useqdac
       web: Ddu γer Web
     title: Ḍfeṛ %{acct}
   challenge:
     confirm: Kemmel
     invalid_password: Yir awal uffir
+    prompt: Sentem awal uffir send ad tkemleḍ
+  date:
+    formats:
+      default: "%d %b %Y"
   datetime:
     distance_in_words:
+      about_x_hours: "%{count}a"
       about_x_months: "%{count}ug"
       about_x_years: "%{count}i"
       almost_x_years: "%{count}i"
       half_a_minute: Tura kan
+      less_than_x_minutes: "%{count}t"
       less_than_x_seconds: Tura kan
       over_x_years: "%{count}i"
+      x_days: "%{count}wu"
       x_minutes: "%{count}t"
       x_months: "%{count}ug"
+      x_seconds: "%{count}t"
   deletes:
     proceed: Kkes amiḍan
   directories:
+    directory: Akaram n imaγnuten
     explore_mastodon: Snirem %{title}
   errors:
     '400': The request you submitted was invalid or malformed.
@@ -312,29 +408,52 @@ kab:
     '429': Throttled
     '500': 
     '503': The page could not be served due to a temporary server failure.
+  existing_username_validator:
+    not_found_multiple: ur yezmir ara ad yaf %{usernames}
   exports:
     archive_takeout:
       date: Azemz
       size: Teγzi
     csv: CSV
     lists: Tibdarin
+    mutes: Wid tesgugmeḍ
   featured_tags:
     add_new: Rnu amaynut
   filters:
     contexts:
+      account: Imuγna
       notifications: Tilγa
+      thread: Idiwenniyen
+    edit:
+      title: Ẓreg amzizdig
     index:
       delete: Kkes
+      empty: Ur tesɛid ara imzizdigen.
+      title: Imzizdigen
+    new:
+      title: Rnu yiwen umzizdig amaynut
   footer:
     developers: Ineflayen
     more: Ugar…
   generic:
     all: Akk
     copy: Nγel
+    delete: Kkes
+    order_by: Sizwer s
     save_changes: Sekles ibeddilen
   identity_proofs:
+    active: Yermed
     authorize: Ih, ssireg
     i_am_html: Nekki d %{username} deg %{service}.
+    identity: Tamagit
+    inactive: D arurmid
+    publicize_checkbox: 'Tjewqeḍ aya:'
+  imports:
+    modes:
+      overwrite: Semselsi
+    types:
+      following: Tabdart n wid teṭafareḍ
+    upload: Sali
   invites:
     expires_in:
       '1800': 30 n tisdatin
@@ -344,17 +463,39 @@ kab:
       '604800': 1 umalas
       '86400': 1 wass
     expires_in_prompt: Werǧin
+    title: Ɛreḍ-d kra n yimdanen
   migrations:
     acct: Ibeddel γer
+    incoming_migrations: Tusiḍ-ed seg umiḍan nniḍen
   notification_mailer:
+    digest:
+      action: Wali akk tilγa
+      mention: 'Yuder-ik-id %{name} deg:'
     follow:
+      body: "%{name} yeṭafaṛ-ik-id tura!"
+      subject: "%{name} yeṭafaṛ-ik-id tura"
       title: Ameḍfaṛ amaynut
+    mention:
+      action: Err
+  notifications:
+    other_settings: Iγewwaṛen nniḍen n tilγa
+  pagination:
+    newer: Amaynut
+    next: Wayed
+    older: Aqbuṛ
+    prev: Win iɛeddan
+    truncate: d
   preferences:
     other: Wiyaḍ
   relationships:
     followers: Imeḍfaṛen
     following: Yeṭafaṛ
+    moved: Igujj
+    status: Addad n umiḍan
+  remote_follow:
+    no_account_html: Ur tesɛid ara amiḍan? Tzmreḍ <a href='%{sign_up_path}' target='_blank'>ad jerdeḍ da</a>
   sessions:
+    activity: Armud aneggaru
     browser: Iminig
     browsers:
       alipay: Alipay
@@ -363,8 +504,14 @@ kab:
       edge: Microsoft Edge
       electron: Electron
       firefox: Firefox
+      generic: Iminig arusin
+      ie: Internet Explorer
+      micro_messenger: MicroMessenger
+      nokia: Nokia S40 Ovi Browser
       opera: Opera
       otter: Otter
+      phantom_js: PhantomJS
+      qq: QQ Browser
       safari: Safari
       uc_browser: UCBrowser
       weibo: Weibo
@@ -382,12 +529,19 @@ kab:
       mac: Mac
       windows: Windows
       windows_mobile: Windows Mobile
+      windows_phone: Tiliγri Windows Phone
+    revoke: Ḥwi
   settings:
     account: Amiḍan
     account_settings: Iγewwaṛen n umiḍan
     appearance: Udem
-    back: Uγal γer Masṭudun
+    authorized_apps: Isnasen yettussirgen
+    back: Uγal γer Maṣṭudun
     development: Taneflit
+    edit_profile: Ẓreg amaγnu
+    export: Taktert n yisefka
+    import: Kter
+    import_and_export: Taktert d usifeḍ
     notifications: Tilγa
     preferences: Imenyafen
     profile: Ameγnu
@@ -401,16 +555,26 @@ kab:
         one: "%{count} n tbidyutt"
         other: "%{count} n tbidyutin"
     open_in_web: Ldi deg Web
+    poll:
+      total_people:
+        one: "%{count} n wemdan"
+        other: "%{count} n yemdanen"
     show_more: Sken-ed ugar
+    sign_in_to_participate: Qqen i waken ad tzeddiḍ deg udiwenni
     title: '%{name}: "%{quote}"'
     visibilities:
       private: Imeḍfaṛen kan
+      private_long: Sken i ymeḍfaṛen kan
+      public_long: Yal yiwen·t yezmer at iwali
   stream_entries:
+    pinned: Tijewwiqt yettwasentḍen
     sensitive_content: Agbur amḥulfu
+  terms:
+    title: Tiwtilin n useqdec akked tsertit tabaḍnit n %{instance}
   themes:
-    contrast: Masṭudun (agnil awriran)
-    default: Masṭudun (Aberkan)
-    mastodon-light: Masṭudun (Aceɛlal)
+    contrast: Maṣṭudun (agnil awriran)
+    default: Maṣṭudun (Aberkan)
+    mastodon-light: Maṣṭudun (Aceɛlal)
   time:
     formats:
       default: "%b %d, %Y, %H:%M"
@@ -425,7 +589,8 @@ kab:
     welcome:
       full_handle: Tansa umiḍan-ik takemmalit
       review_preferences_action: Beddel imenyafen
-      subject: Ansuf γer Masṭudun
+      subject: Ansuf γer Maṣṭudun
+      tips: Tixbaluyin
       title: Ansuf yessek·em, %{name}!
   users:
     signed_in_as: 'Teqqneḍ amzun d:'
diff --git a/config/locales/kk.yml b/config/locales/kk.yml
index 16ddab9c3..416a5fc7d 100644
--- a/config/locales/kk.yml
+++ b/config/locales/kk.yml
@@ -228,6 +228,13 @@ kk:
         update_status: "%{name} жазбасын жаңартты %{target}"
       deleted_status: "(өшірілген жазба)"
       title: Аудит логы
+    announcements:
+      destroyed_msg: Анонс сәтті өшірілді!
+      published_msg: Анонс сәтті жарияланды!
+      scheduled_for: Жоспарланған уақыты %{time}
+      scheduled_msg: Анонс жариялану жоспарына алынды!
+      unpublished_msg: Анонс жарияланбады!
+      updated_msg: Анонс сәтті жаңартылды!
     custom_emojis:
       assign_category: Санатты тағайындаңыз
       by_domain: Домен
@@ -1052,6 +1059,7 @@ kk:
         other: "%{count} дауыс"
       vote: Дауыс беру
     show_more: Тағы әкел
+    show_thread: Тақырыпты көрсет
     sign_in_to_participate: Сұхбатқа қатысу үшін кіріңіз
     title: '%{name}: "%{quote}"'
     visibilities:
diff --git a/config/locales/ko.yml b/config/locales/ko.yml
index 76f4ad4da..e70fbef21 100644
--- a/config/locales/ko.yml
+++ b/config/locales/ko.yml
@@ -10,7 +10,7 @@ ko:
     api: API
     apps: 모바일 앱
     apps_platforms: 마스토돈을 iOS, 안드로이드, 다른 플랫폼들에서도 사용하세요
-    browse_directory: 프로필 디렉토리를 둘러보고 관심사 찾기
+    browse_directory: 프로필 책자를 둘러보고 관심사 찾기
     browse_local_posts: 이 서버의 공개글 실시간 스트림을 둘러보기
     browse_public_posts: 마스토돈의 공개 라이브 스트림을 둘러보기
     contact: 연락처
@@ -228,6 +228,7 @@ ko:
       deleted_status: "(삭제됨)"
       title: 감사 기록
     announcements:
+      destroyed_msg: 공지가 성공적으로 삭제되었습니다!
       edit:
         title: 공지사항 수정
       empty: 공지를 찾을 수 없습니다.
@@ -235,9 +236,12 @@ ko:
       new:
         create: 공지사항 생성
         title: 새 공지사항
-      published: 발행됨
-      time_range: 시간 범위
+      published_msg: 공지가 성공적으로 발행되었습니다!
+      scheduled_for: "%{time}에 예약됨"
+      scheduled_msg: 공지의 발행이 예약되었습니다!
       title: 공지사항
+      unpublished_msg: 공지가 성공적으로 발행 취소되었습니다!
+      updated_msg: 공지가 성공적으로 업데이트되었습니다!
     custom_emojis:
       assign_category: 분류 지정
       by_domain: 도메인
@@ -276,7 +280,7 @@ ko:
       config: 설정
       feature_deletions: 계정 삭제
       feature_invites: 초대 링크
-      feature_profile_directory: 프로필 디렉토리
+      feature_profile_directory: 프로필 책자
       feature_registrations: 가입
       feature_relay: 연합 릴레이
       feature_spam_check: 안티 스팸
@@ -475,7 +479,7 @@ ko:
         title: 민감한 미디어를 오픈그래프 미리보기에 보여주기
       profile_directory:
         desc_html: 유저들이 발견 될 수 있도록 허용
-        title: 프로필 디렉토리 활성화
+        title: 프로필 책자 활성화
       registrations:
         closed_message:
           desc_html: 신규 등록을 받지 않을 때 프론트 페이지에 표시됩니다. HTML 태그를 사용할 수 있습니다
@@ -546,7 +550,7 @@ ko:
       accounts_week: 금주의 순 사용자
       breakdown: 소스별 오늘의 사용량 분석
       context: 문맥
-      directory: 디렉토리에 있음
+      directory: 책자에 있음
       in_directory: 디렉토리에 %{count}개 있음
       last_active: 최근 활동
       most_popular: 최고 인기
@@ -700,7 +704,7 @@ ko:
       username_available: 당신의 계정명은 다시 사용할 수 있게 됩니다
       username_unavailable: 당신의 계정명은 앞으로 사용할 수 없습니다
   directories:
-    directory: 프로필 디렉토리
+    directory: 프로필 책자
     explanation: 관심사에 대한 유저들을 발견합니다
     explore_mastodon: "%{title} 탐사하기"
   domain_validator:
@@ -770,7 +774,6 @@ ko:
     changes_saved_msg: 정상적으로 변경되었습니다!
     copy: 복사
     delete: 삭제
-    edit: 수정
     no_batch_actions_available: 이 페이지에서 수행할 수 있는 일괄작업이 없습니다
     order_by: 순서
     save_changes: 변경 사항을 저장
@@ -1069,6 +1072,7 @@ ko:
         other: "%{count}명 투표함"
       vote: 투표
     show_more: 더 보기
+    show_thread: 글타래 보기
     sign_in_to_participate: 로그인 하여 이 대화에 참여하기
     title: '%{name}: "%{quote}"'
     visibilities:
diff --git a/config/locales/nl.yml b/config/locales/nl.yml
index 092a46d57..976072368 100644
--- a/config/locales/nl.yml
+++ b/config/locales/nl.yml
@@ -39,7 +39,7 @@ nl:
     unavailable_content_description:
       domain: Server
       reason: 'Reden:'
-      rejecting_media: Mediabestanden van deze server worden niet verwerkt en er worden geen thumbnails getoond. Je moet handmatig naar deze server doorklikken om de mediabestanden te kunnen bekijken.
+      rejecting_media: 'Mediabestanden van deze server worden niet verwerkt en er worden geen thumbnails getoond. Je moet handmatig naar deze server doorklikken om de mediabestanden te kunnen bekijken:'
       silenced: Toots van deze server worden nergens weergegeven, behalve op jouw eigen starttijdlijn wanneer je het account volgt.
       suspended: Je bent niet in staat om iemand van deze server te volgen, en er worden geen gegevens van deze server verwerkt of opgeslagen, en met deze server uitgewisseld.
     unavailable_content_html: Met Mastodon kun je in het algemeen berichten bekijken van en communiceren met gebruikers van elke andere server in de fediverse. Dit zijn de uitzonderingen die door deze server zijn gemaakt en expliciet alleen hier gelden.
@@ -198,11 +198,13 @@ nl:
         change_email_user: "%{name} veranderde het e-mailadres van gebruiker %{target}"
         confirm_user: E-mailadres van gebruiker %{target} is door %{name} bevestigd
         create_account_warning: "%{name} verzond een waarschuwing naar %{target}"
+        create_announcement: "%{name} heeft de nieuwe mededeling %{target} aangemaakt"
         create_custom_emoji: Nieuwe emoji %{target} is door %{name} geüpload
         create_domain_allow: "%{name} heeft het domein %{target} aan de witte lijst toegevoegd"
         create_domain_block: Domein %{target} is door %{name} geblokkeerd
         create_email_domain_block: E-maildomein %{target} is door %{name} op de zwarte lijst geplaatst
         demote_user: Gebruiker %{target} is door %{name} gedegradeerd
+        destroy_announcement: "%{name} heeft de mededeling %{target} verwijderd"
         destroy_custom_emoji: "%{name} verwijderde emoji %{target}"
         destroy_domain_allow: "%{name} heeft het domein %{target} van de witte lijst verwijderd"
         destroy_domain_block: Domein %{target} is door %{name} gedeblokkeerd
@@ -224,10 +226,26 @@ nl:
         unassigned_report: "%{name} heeft het toewijzen van rapportage %{target} ongedaan gemaakt"
         unsilence_account: Negeren van account %{target} is door %{name} opgeheven
         unsuspend_account: Opschorten van account %{target} is door %{name} opgeheven
+        update_announcement: "%{name} heeft de mededeling %{target} bijgewerkt"
         update_custom_emoji: Emoji %{target} is door %{name} bijgewerkt
         update_status: De toots van %{target} zijn door %{name} bijgewerkt
       deleted_status: "(verwijderde toot}"
       title: Auditlog
+    announcements:
+      destroyed_msg: Verwijderen van mededeling geslaagd!
+      edit:
+        title: Mededeling bewerken
+      empty: Geen mededelingen gevonden.
+      live: Live
+      new:
+        create: Mededeling aanmaken
+        title: Nieuwe mededeling
+      published_msg: Publiceren van mededeling geslaagd!
+      scheduled_for: Ingepland voor %{time}
+      scheduled_msg: Mededeling staat ingepland voor publicatie!
+      title: Mededelingen
+      unpublished_msg: Ongedaan maken van gepubliceerde mededeling geslaagd!
+      updated_msg: Bijwerken van mededeling geslaagd!
     custom_emojis:
       assign_category: Categorie toewijzen
       by_domain: Domein
@@ -339,6 +357,7 @@ nl:
       delete: Verwijderen
       destroyed_msg: Deblokkeren e-maildomein geslaagd
       domain: Domein
+      empty: Momenteel staan er geen e-maildomeinen op de zwarte lijst.
       new:
         create: Blokkeren
         title: Nieuw e-maildomein blokkeren
@@ -371,6 +390,8 @@ nl:
       title: Uitnodigingen
     pending_accounts:
       title: Accounts in afwachting (%{count})
+    relationships:
+      title: Relaties van %{acct}
     relays:
       add_new: Nieuwe relayserver toevoegen
       delete: Verwijderen
@@ -578,6 +599,10 @@ nl:
     animations_and_accessibility: Animaties en toegankelijkheid
     confirmation_dialogs: Bevestigingen
     discovery: Ontdekken
+    localization:
+      body: Mastodon wordt door vrijwilligers vertaald.
+      guide_link: https://crowdin.com/project/mastodon/nl
+      guide_link_text: Iedereen kan bijdragen.
     sensitive_content: Gevoelige inhoud
     toot_layout: Lay-out van toots
   application_mailer:
@@ -650,6 +675,9 @@ nl:
     hint_html: "<strong>Tip:</strong> We vragen jou het komende uur niet meer naar jouw wachtwoord."
     invalid_password: Ongeldig wachtwoord
     prompt: Bevestig wachtwoord om door te gaan
+  date:
+    formats:
+      default: "%d %b %Y"
   datetime:
     distance_in_words:
       about_x_hours: "%{count}u"
@@ -726,6 +754,7 @@ nl:
     hint_html: "<strong>Wat zijn uitgelichte hashtags?</strong> Deze worden prominent op jouw openbare profiel getoond en stelt mensen in staat om jouw openbare toots per hashtag te bekijken. Het zijn een goed hulpmiddel om creatieve werkzaamheden of langetermijnprojecten bij te houden."
   filters:
     contexts:
+      account: Profielen
       home: Starttijdlijn
       notifications: Meldingen
       public: Openbare tijdlijnen
@@ -737,6 +766,7 @@ nl:
       invalid_irreversible: Onomkeerbaar filteren werkt alleen met de starttijdlijn en meldingen
     index:
       delete: Verwijderen
+      empty: Je hebt geen filters aangemaakt.
       title: Filters
     new:
       title: Nieuw filter toevoegen
@@ -749,6 +779,7 @@ nl:
     all: Alles
     changes_saved_msg: Wijzigingen succesvol opgeslagen!
     copy: Kopiëren
+    delete: Verwijderen
     no_batch_actions_available: Geen batchacties op deze pagina beschikbaar
     order_by: Sorteer op
     save_changes: Wijzigingen opslaan
@@ -912,6 +943,7 @@ nl:
       duration_too_long: ligt te ver in de toekomst
       duration_too_short: is te kort van duur
       expired: De poll is al beëindigd
+      invalid_choice: De gekozen poll-optie bestaat niet
       over_character_limit: kan stuk voor stuk niet langer zijn dan %{max} tekens
       too_few_options: moet meer dan één item bevatten
       too_many_options: kan niet meer dan %{max} items bevatten
@@ -919,11 +951,16 @@ nl:
     other: Overig
     posting_defaults: Standaardinstellingen voor posten
     public_timelines: Openbare tijdlijnen
+  reactions:
+    errors:
+      limit_reached: Limiet van verschillende emoji-reacties bereikt
+      unrecognized_emoji: is geen bestaande emoji-reactie
   relationships:
     activity: Accountactiviteit
     dormant: Sluimerend
     followers: Volgers
     following: Volgend
+    invited: Uitgenodigd
     last_active: Laatst actief
     most_recent: Recentelijk gevolgd
     moved: Verhuisd
@@ -988,7 +1025,7 @@ nl:
       firefox_os: Firefox OS
       ios: iOS
       linux: Linux
-      mac: Mac
+      mac: macOS
       other: Onbekend platform
       windows: Windows
       windows_mobile: Windows Mobile
@@ -1050,6 +1087,7 @@ nl:
         other: "%{count} stemmen"
       vote: Stemmen
     show_more: Meer tonen
+    show_thread: Gesprek tonen
     sign_in_to_participate: Meld je aan om aan dit gesprek mee te doen
     title: '%{name}: "%{quote}"'
     visibilities:
diff --git a/config/locales/nn.yml b/config/locales/nn.yml
index 875545c76..fd61f2156 100644
--- a/config/locales/nn.yml
+++ b/config/locales/nn.yml
@@ -232,6 +232,7 @@ nn:
       deleted_status: "(sletta status)"
       title: Revisionslogg
     announcements:
+      destroyed_msg: Kunngjøringen er slettet!
       edit:
         title: Rediger kunngjøring
       empty: Ingen kunngjøringer funnet.
@@ -239,9 +240,12 @@ nn:
       new:
         create: Lag kunngjøring
         title: Ny kunngjøring
-      published: Publisert
-      time_range: Tidsramme
+      published_msg: Kunngjøring publisert!
+      scheduled_for: Planlagt for %{time}
+      scheduled_msg: Kunngjøring planlagt for publisering!
       title: Kunngjøringer
+      unpublished_msg: Kunngjøring upublisert!
+      updated_msg: Kunngjøringen er oppdatert!
     custom_emojis:
       assign_category: Vel kategori
       by_domain: Domene
@@ -475,6 +479,7 @@ nn:
         title: Publiser liste over oppdaga tenarar
       preview_sensitive_media:
         desc_html: Lenkeforhåndsvisninger på andre nettsteder vil vise et miniatyrbilde selv dersom mediet er merket som sensitivt
+        title: Vis sensitive medier i OpenGraph-forhåndsvisninger
       profile_directory:
         desc_html: Gjer at brukarar kan oppdagast
         title: Skru på profilmappen
@@ -490,8 +495,10 @@ nn:
           title: Tillat innbydingar frå
       registrations_mode:
         modes:
+          approved: Godkjenning kreves for påmelding
           none: Ingen kan melda seg inn
           open: Kven som helst kan melda seg inn
+        title: Registreringsmodus
       show_staff_badge:
         desc_html: Vis personalmerke på ei brukarside
         title: Vis personalmerke
@@ -563,6 +570,9 @@ nn:
       edit_preset: Endr åtvaringsoppsett
       title: Handsam åtvaringsoppsett
   admin_mailer:
+    new_pending_account:
+      body: Detaljer om den nye kontoen er nedenfor. Du kan godkjenne eller avvise denne søknaden.
+      subject: Ny konto opp til vurdering på %{instance} (%{username})
     new_report:
       body: "%{reporter} har rapportert %{target}"
       body_remote: Nokon frå %{domain} har meldt %{target}
@@ -582,6 +592,10 @@ nn:
     animations_and_accessibility: Animasjoner og tilgjengelighet
     confirmation_dialogs: Bekreftelsesdialoger
     discovery: Oppdaging
+    localization:
+      body: Mastodon er oversatt av frivillige.
+      guide_link: https://crowdin.com/project/mastodon
+      guide_link_text: Alle kan bidra.
     sensitive_content: Sensitivt innhold
     toot_layout: Tutoppsett
   application_mailer:
@@ -636,6 +650,7 @@ nn:
       confirming: Ventar på stadfesting av e-post.
       functional: Kontoen din er oppe og går.
       pending: Søknaden din ventar på gjennomgang frå personalet vårt. Dette kan taka litt tid. Du får ein e-post om søknaden din vert godkjend.
+      redirecting_to: Kontoen din er inaktiv fordi den for øyeblikket omdirigerer til %{acct}.
     trouble_logging_in: Får du ikkje logga inn?
   authorize_follow:
     already_following: Du fylgjer allereie denne kontoen
@@ -653,6 +668,9 @@ nn:
     hint_html: "<strong>Tips:</strong> Vi skal ikkje spørja deg om passordet ditt igjen i laupet av den neste timen."
     invalid_password: Ugyldig passord
     prompt: Stadfest passord for å halda fram
+  date:
+    formats:
+      default: "%b %d, %Y"
   datetime:
     distance_in_words:
       about_x_hours: "%{count}t"
@@ -703,7 +721,7 @@ nn:
     '500':
       content: Orsak. Vi har gjort noko feil.
       title: Denne sida er ikkje rett
-    '503': The page could not be served due to a temporary server failure.
+    '503': Siden kunne ikke vises på grunn av en midlertidig serverfeil.
     noscript_html: For å bruke Mastodon webapplikasjon må du aktivere JavaScript. Alternativt kan du forsøke en av de mange <a href="%{apps_path}">integrerte appene</a> for Mastodon til din plattform.
   existing_username_validator:
     not_found: fann ingen lokalbrukar med det namnet
@@ -729,6 +747,7 @@ nn:
     hint_html: "<strong>Hva er utvalgte emneknagger?</strong> De vises frem tydelig på din offentlige profil, og lar folk bla i dine offentlige innlegg som spesifikt har de emneknaggene. De er et bra verktøy for å holde styr på kreative verk eller langtidsprosjekter."
   filters:
     contexts:
+      account: Profiler
       home: Heimeside
       notifications: Varsel
       public: Offentlege tidsliner
@@ -737,6 +756,7 @@ nn:
       title: Endr filter
     index:
       delete: Slett
+      empty: Du har ingen filtre.
       title: Filter
     new:
       title: Legg til nytt filter
@@ -749,6 +769,7 @@ nn:
     all: Alle
     changes_saved_msg: Alle endringane vart lagra!
     copy: Kopier
+    delete: Slett
     order_by: Sorter etter
     save_changes: Lagr endringar
     validation_errors:
@@ -757,6 +778,7 @@ nn:
   identity_proofs:
     active: Aktiv
     authorize: Ja, stadfest
+    authorize_connection_prompt: Vil du autorisere denne kryptografiske forbindelsen?
     errors:
       keybase:
         verification_failed: Keybase kjenner ikke igjen denne sjetongen som en signatur for Keybase-brukeren %{kb_username}. Vennligst prøv igjen gjennom Keybase.
@@ -891,6 +913,7 @@ nn:
       duration_too_long: er for langt fram i tid
       duration_too_short: er for snart
       expired: Denne rundspørjinga er allereie ferdig
+      invalid_choice: Det valgte stemmealternativet eksisterer ikke
       over_character_limit: kan ikkje vera lengre enn %{max} teikn kvar
       too_few_options: må ha meir enn eitt element
       too_many_options: kan ikkje ha meir enn %{max} element
@@ -898,11 +921,15 @@ nn:
     other: Anna
     posting_defaults: Innleggsstandarder
     public_timelines: Offentlege tidsliner
+  reactions:
+    errors:
+      limit_reached: Grensen for forskjellige reaksjoner nådd
   relationships:
     activity: Kontoaktivitet
     dormant: I dvale
     followers: Følgere
     following: Følginger
+    invited: Invitert
     last_active: Sist aktiv
     most_recent: Sist
     moved: Flytta
@@ -1147,6 +1174,7 @@ nn:
     wrong_code: Den angitte koden var ugyldig! Stemmer instansens tid overalt med enhetens tid?
   user_mailer:
     backup_ready:
+      explanation: Du ba om en fullstendig sikkerhetskopi av Mastodon-kontoen din. Den er nå klar for nedlasting!
       subject: Arkivet ditt er klart til å lastes ned
     warning:
       explanation:
@@ -1154,6 +1182,7 @@ nn:
         silence: Mens kontoen din er begrenset, vil bare folk som allerede følger deg se dine tuter på denne tjeneren, og du kan bli ekskludert fra diverse offentlige oppføringer. Men andre kan fortsatt følge deg manuelt.
         suspend: Kontoen din har blitt suspendert, og alle dine tuter og opplastede media har blitt ugjenkallelig fjernet fra denne tjeneren, og fra tjenere der du hadde følgere.
       get_in_touch: Du kan svare på denne E-posten for å komme i kontakt med styret i %{instance}.
+      review_server_policies: Gjennomgå serverretningslinjer
       statuses: 'Spesifikt for å:'
       subject:
         disable: Kontoen din, %{acct}, har blitt fryst
@@ -1186,6 +1215,7 @@ nn:
     follow_limit_reached: Du kan ikkje fylgja fleire enn %{limit} folk
     invalid_email: E-mailadressa er ugyldig
     invalid_otp_token: Ugyldig tostegskode
+    otp_lost_help_html: Hvis du mistet tilgangen til begge deler, kan du komme i kontakt med %{email}
     signed_in_as: 'Logga inn som:'
   verification:
     explanation_html: 'Du kan <strong>bekrefte at du selv er eieren av lenkene i din profilmetadata</strong>. For å gjøre det, må det tillenkede nettstedet inneholde en lenke som fører tilbake til Mastodon-profilen din. Lenken tilbake <strong>må</strong> ha en <code>rel="me"</code>-attributt. Tekstinnholdet til lenken er irrelevant. Her er et eksempel:'
diff --git a/config/locales/no.yml b/config/locales/no.yml
index fed806d56..256ed99a3 100644
--- a/config/locales/no.yml
+++ b/config/locales/no.yml
@@ -3,7 +3,7 @@
   about:
     about_hashtag_html: Dette er offentlige toots merket med <strong>#%{hashtag}</strong>. Du kan interagere med dem om du har en konto et sted i fediverset.
     about_mastodon_html: Mastodon er et sosialt nettverk laget med <em>fri programvare</em>. Et <em>desentralisert</em> alternativ til kommersielle plattformer. Slik kan det unngå risikoene ved å ha et enkelt selskap som monopoliserer din kommunikasjon. Velg en tjener du stoler på &mdash; uansett hvilken du velger så kan du kommunisere med alle andre. Alle kan kjøre sin egen Mastodon og delta sømløst i det sosiale nettverket.
-    about_this: Om denne instansen
+    about_this: Om
     active_count_after: aktive
     active_footnote: Månedlige aktive brukere (MAU)
     administered_by: 'Administrert av:'
@@ -58,7 +58,7 @@
       other: Følgere
     following: Følger
     joined: Ble med den %{date}
-    last_active: senest aktiv
+    last_active: sist aktiv
     link_verified_on: Eierskap av denne lenken ble sjekket %{date}
     media: Media
     moved_html: "%{name} har flyttet til %{new_profile_link}:"
@@ -232,6 +232,7 @@
       deleted_status: "(statusen er slettet)"
       title: Revisionslogg
     announcements:
+      destroyed_msg: Kunngjøringen er slettet!
       edit:
         title: Rediger kunngjøring
       empty: Ingen kunngjøringer funnet.
@@ -239,9 +240,12 @@
       new:
         create: Lag kunngjøring
         title: Ny kunngjøring
-      published: Publisert
-      time_range: Tidsramme
+      published_msg: Kunngjøring publisert!
+      scheduled_for: Planlagt for %{time}
+      scheduled_msg: Kunngjøring planlagt for publisering!
       title: Kunngjøringer
+      unpublished_msg: Kunngjøring upublisert!
+      updated_msg: Kunngjøringen er oppdatert!
     custom_emojis:
       assign_category: Tilegn kategori
       by_domain: Domene
@@ -455,10 +459,13 @@
       custom_css:
         desc_html: Modifiser utseendet med CSS lastet på hver side
         title: Egendefinert CSS
+      default_noindex:
+        desc_html: Påvirker alle brukerne som ikke har justert denne innstillingen selv
       domain_blocks:
         all: Til alle
         disabled: Til ingen
         title: Vis domeneblokkeringer
+        users: Til lokale brukere som er logget inn
       domain_blocks_rationale:
         title: Vis grunnlaget
       hero:
@@ -472,7 +479,9 @@
         title: Publiser liste over oppdagede instanser
       preview_sensitive_media:
         desc_html: Lenkeforhåndsvisninger på andre nettsteder vil vise et miniatyrbilde selv dersom mediet er merket som sensitivt
+        title: Vis sensitive medier i OpenGraph-forhåndsvisninger
       profile_directory:
+        desc_html: Tillat brukere å bli oppdagelige
         title: Skru på profilmappen
       registrations:
         closed_message:
@@ -484,6 +493,12 @@
         min_invite_role:
           disabled: Ingen
           title: Tillat invitasjoner fra
+      registrations_mode:
+        modes:
+          approved: Godkjenning kreves for påmelding
+          none: Ingen kan melde seg inn
+          open: Hvem som helst kan melde seg inn
+        title: Registreringsmodus
       show_staff_badge:
         desc_html: Vis personalemerke på brukersiden
         title: Vis personalemerke
@@ -523,9 +538,11 @@
       media:
         title: Media
       no_media: Ingen media
+      no_status_selected: Ingen statuser ble endret da ingen ble valgt
       title: Kontostatuser
       with_media: Med media
     tags:
+      accounts_today: Ulike brukere i dag
       accounts_week: Unike brukstilfeller denne uken
       context: Sammenheng
       directory: I mappen
@@ -546,8 +563,12 @@
       delete: Slett
       edit: Rediger
   admin_mailer:
+    new_pending_account:
+      body: Detaljer om den nye kontoen er nedenfor. Du kan godkjenne eller avvise denne søknaden.
+      subject: Ny konto opp til vurdering på %{instance} (%{username})
     new_report:
       body: "%{reporter} har rapportert %{target}"
+      body_remote: Noen fra %{domain} har rapportert %{target}
       subject: Ny rapport for %{instance} (#%{id})
     new_trending_tag:
       body: 'Emneknaggen #%{name} trender i dag, men den har ikke blitt gjennomgått tidligere. Den vil ikke bli vist offentlig med mindre du tillater at den blir det, eller du kan bare lagre skjemaet slik det er for å aldri høre om det igjen.'
@@ -561,6 +582,10 @@
     animations_and_accessibility: Animasjoner og tilgjengelighet
     confirmation_dialogs: Bekreftelsesdialoger
     discovery: Oppdagelse
+    localization:
+      body: Mastodon er oversatt av frivillige.
+      guide_link: https://crowdin.com/project/mastodon
+      guide_link_text: Alle kan bidra.
     sensitive_content: Sensitivt innhold
     toot_layout: Tut-utseende
   application_mailer:
@@ -586,6 +611,7 @@
     delete_account: Slett konto
     delete_account_html: Hvis du ønsker å slette kontoen din, kan du <a href="%{path}">gå hit</a>. Du vil bli spurt om bekreftelse.
     description:
+      prefix_invited_by_user: "@%{name} inviterer deg til å bli med på denne serveren til Mastodon!"
       prefix_sign_up: Meld deg opp på Mastodon i dag!
       suffix: Med en konto, vil kunne følge folk, legge ut oppdateringer, og utveksle meldinger med brukere fra enhver Mastodon-tjener, og mer til!
     didnt_get_confirmation: Mottok du ikke instruksjoner om bekreftelse?
@@ -600,6 +626,7 @@
       cas: CAS
       saml: SAML
     register: Bli med
+    registration_closed: "%{instance} godtar ikke nye medlemmer"
     resend_confirmation: Send bekreftelsesinstruksjoner på nytt
     reset_password: Nullstill passord
     security: Sikkerhet
@@ -610,10 +637,13 @@
       title: Innstillinger
     status:
       account_status: Kontostatus
+      confirming: Venter på at e-postbekreftelsen er fullført.
       functional: Kontoen din er fullt operativt.
       pending: Søknaden din avventer gjennomgang av styret vårt. Dette kan ta litt tid. Du vil motta en E-post dersom søknaden din blir godkjent.
+      redirecting_to: Kontoen din er inaktiv fordi den for øyeblikket omdirigerer til %{acct}.
     trouble_logging_in: Har du problemer med å logge på?
   authorize_follow:
+    already_following: Du følger allerede denne kontoen
     error: Uheldigvis skjedde det en feil da vi prøvde å få tak i en bruker fra en annen instans
     follow: Følg
     follow_request: 'Du har sendt en følgeforespørsel til:'
@@ -625,8 +655,12 @@
     title: Følg %{acct}
   challenge:
     confirm: Fortsett
+    hint_html: "<strong>Tips:</strong> Vi ber deg ikke om passordet ditt igjen i løpet av neste time."
     invalid_password: Ugyldig passord
     prompt: Bekreft passordet for å fortsette
+  date:
+    formats:
+      default: "%b %d, %Y"
   datetime:
     distance_in_words:
       about_x_hours: "%{count} timer"
@@ -642,6 +676,7 @@
       x_months: "%{count} mnd"
       x_seconds: "%{count} sek"
   deletes:
+    challenge_not_passed: Informasjonen du oppga var ikke korrekt
     confirm_password: Skriv inn ditt passord for å verifisere din identitet
     confirm_username: Skriv inn brukernavnet ditt for å bekrefte prosedyren
     proceed: Slett konto
@@ -664,10 +699,10 @@
   domain_validator:
     invalid_domain: er ikke et gyldig domenenavn
   errors:
-    '400': The request you submitted was invalid or malformed.
+    '400': Forespørselen du sendte inn var ugyldig eller feil.
     '403': Du har ikke tillatelse til å vise denne siden.
     '404': Siden du leter etter finnes ikke.
-    '406': This page is not available in the requested format.
+    '406': Denne siden er ikke tilgjengelig i ønsket format.
     '410': Siden du leter etter finnes ikke lenger.
     '422':
       content: Sikkerhetsverifisering feilet. Blokkerer du informasjonskapsler?
@@ -676,15 +711,17 @@
     '500':
       content: Beklager men noe gikk galt ved vår ende.
       title: Denne siden er ikke korrekt
-    '503': The page could not be served due to a temporary server failure.
+    '503': Siden kunne ikke vises på grunn av en midlertidig serverfeil.
     noscript_html: For å bruke Mastodon webapplikasjon må du aktivere JavaScript. Alternativt kan du forsøke en av de mange <a href="%{apps_path}">integrerte appene</a> for Mastodon til din plattform.
   existing_username_validator:
+    not_found: kunne ikke finne en lokal bruker med det brukernavnet
     not_found_multiple: klarte ikke å finne %{usernames}
   exports:
     archive_takeout:
       date: Dato
       download: Last ned arkivet ditt
       hint_html: Du kan be om et arkiv med dine <strong>tuter og opplastede media</strong>. Den eksporterte dataen vil være i ActivityPub-formatet, som kan leses av programmer som støtter det. Du kan be om et arkiv opptil hver 7. dag.
+      in_progress: Samler arkivet ditt...
       request: Be om ditt arkiv
       size: Størrelse
     blocks: Du blokkerer
@@ -698,6 +735,7 @@
     hint_html: "<strong>Hva er utvalgte emneknagger?</strong> De vises frem tydelig på din offentlige profil, og lar folk bla i dine offentlige innlegg som spesifikt har de emneknaggene. De er et bra verktøy for å holde styr på kreative verk eller langtidsprosjekter."
   filters:
     contexts:
+      account: Profiler
       home: Hjemmetidslinje
       notifications: Varslinger
       public: Offentlige tidslinjer
@@ -706,6 +744,7 @@
       title: Rediger filter
     index:
       delete: Slett
+      empty: Du har ingen filtre.
       title: Filtre
     new:
       title: Legg til nytt filter
@@ -718,6 +757,7 @@
     all: Alle
     changes_saved_msg: Vellykket lagring av endringer!
     copy: Kopier
+    delete: Slett
     order_by: Sorter etter
     save_changes: Lagre endringer
     validation_errors:
@@ -726,6 +766,7 @@
   identity_proofs:
     active: Aktive
     authorize: Ja, autoriser
+    authorize_connection_prompt: Vil du autorisere denne kryptografiske forbindelsen?
     errors:
       keybase:
         verification_failed: Keybase kjenner ikke igjen denne sjetongen som en signatur for Keybase-brukeren %{kb_username}. Vennligst prøv igjen gjennom Keybase.
@@ -785,6 +826,7 @@
     cancel: Avbryt omdirigeringen
     cancel_explanation: Å avbryte omdirigeringen vil reaktivere din nåværende konto, men vil ikke bringe tilbake følgere som har blitt flyttet til den kontoen.
     errors:
+      already_moved: er den samme kontoen du allerede har flyttet til
       move_to_self: kan ikke være den nåværende kontoen
       not_found: ble ikke funnet
     incoming_migrations: Flytte fra en annen konto
@@ -857,17 +899,23 @@
       duration_too_long: er for langt frem i tid
       duration_too_short: er for snart
       expired: Denne avstemningen er allerede ferdig
+      invalid_choice: Det valgte stemmealternativet eksisterer ikke
+      over_character_limit: kan ikke være lengre enn %{max} tegn hver
       too_few_options: må ha mer enn én gjenstand
       too_many_options: kan ikke ha mer enn %{max} gjenstander
   preferences:
     other: Annet
     posting_defaults: Innleggsstandarder
     public_timelines: Offentlige tidslinjer
+  reactions:
+    errors:
+      limit_reached: Grensen for forskjellige reaksjoner nådd
   relationships:
     activity: Kontoaktivitet
     dormant: Dormende
     followers: Følgere
     following: Følginger
+    invited: Invitert
     last_active: Senest aktiv
     most_recent: Nyligst
     moved: Flyttet
@@ -984,6 +1032,7 @@
         other: "%{count} stemmer"
       vote: Stem
     show_more: Vis mer
+    sign_in_to_participate: Logg på for å delta i samtalen
     title: "%{name}: «%{quote}»"
     visibilities:
       private: Privat
@@ -1107,6 +1156,7 @@
     wrong_code: Den angitte koden var ugyldig! Stemmer instansens tid overalt med enhetens tid?
   user_mailer:
     backup_ready:
+      explanation: Du ba om en fullstendig sikkerhetskopi av Mastodon-kontoen din. Den er nå klar for nedlasting!
       subject: Arkivet ditt er klart til å lastes ned
     warning:
       explanation:
@@ -1114,6 +1164,7 @@
         silence: Mens kontoen din er begrenset, vil bare folk som allerede følger deg se dine tuter på denne tjeneren, og du kan bli ekskludert fra diverse offentlige oppføringer. Men andre kan fortsatt følge deg manuelt.
         suspend: Kontoen din har blitt suspendert, og alle dine tuter og opplastede media har blitt ugjenkallelig fjernet fra denne tjeneren, og fra tjenere der du hadde følgere.
       get_in_touch: Du kan svare på denne E-posten for å komme i kontakt med styret i %{instance}.
+      review_server_policies: Gjennomgå serverretningslinjer
       statuses: 'Spesifikt for å:'
       subject:
         disable: Kontoen din, %{acct}, har blitt fryst
@@ -1143,8 +1194,10 @@
       tips: Tips
       title: Velkommen ombord, %{name}!
   users:
+    follow_limit_reached: Du kan ikke følge mer enn %{limit} personer
     invalid_email: E-postaddressen er ugyldig
     invalid_otp_token: Ugyldig to-faktorkode
+    otp_lost_help_html: Hvis du mistet tilgangen til begge deler, kan du komme i kontakt med %{email}
     signed_in_as: 'Innlogget som:'
   verification:
     explanation_html: 'Du kan <strong>bekrefte at du selv er eieren av lenkene i din profilmetadata</strong>. For å gjøre det, må det tillenkede nettstedet inneholde en lenke som fører tilbake til Mastodon-profilen din. Lenken tilbake <strong>må</strong> ha en <code>rel="me"</code>-attributt. Tekstinnholdet til lenken er irrelevant. Her er et eksempel:'
diff --git a/config/locales/oc.yml b/config/locales/oc.yml
index ea0729f74..4a60227ab 100644
--- a/config/locales/oc.yml
+++ b/config/locales/oc.yml
@@ -36,6 +36,7 @@ oc:
     unavailable_content_description:
       domain: Servidor
       reason: 'Motiu :'
+      rejecting_media: 'Los fichièrs mèdias d’aquestes servidors estant seràn pas tractats o gardats e pas cap de miniatura serà pas mostrada, demanda de clicar sul fichièr original :'
     user_count_after:
       one: utilizaire
       other: utilizaires
@@ -43,6 +44,7 @@ oc:
     what_is_mastodon: Qu’es Mastodon ?
   accounts:
     choices_html: 'Recomandacions de %{name} :'
+    featured_tags_hint: Podètz indicar d’etiquetas que mostrarem aquí.
     follow: Sègre
     followers:
       one: Seguidor
@@ -69,6 +71,7 @@ oc:
     roles:
       admin: Admin
       bot: Robòt
+      group: Grop
       moderator: Moderador
     unavailable: Perfil indisponible
     unfollow: Quitar de sègre
@@ -188,11 +191,13 @@ oc:
         change_email_user: "%{name} cambièt l’adreça de corrièl de %{target}"
         confirm_user: "%{name} confirmèt l’adreça a %{target}"
         create_account_warning: "%{name} mandèt un avertiment a %{target}"
+        create_announcement: "%{name} creèt una nòva anóncia %{target}"
         create_custom_emoji: "%{name} mandèt un nòu emoji %{target}"
         create_domain_allow: "%{name} botèt a la lista blanca lo domeni %{target}"
         create_domain_block: "%{name} bloquèt lo domeni %{target}"
         create_email_domain_block: "%{name} botèt a la lista nègra lo domeni de corrièl %{target}"
         demote_user: "%{name} retragradèt l‘utilizaire %{target}"
+        destroy_announcement: "%{name} suprimiguèt una anóncia %{target}"
         destroy_custom_emoji: "%{name} destruguèt l’emoji %{target}"
         destroy_domain_allow: "%{name} levèt lo domeni %{target} de la lista blanca"
         destroy_domain_block: "%{name} desbloquèt lo domeni %{target}"
@@ -214,10 +219,26 @@ oc:
         unassigned_report: "%{name} daissèt de tractar lo rapòrt %{target}"
         unsilence_account: "%{name} levèt lo silenci del compte a %{target}"
         unsuspend_account: "%{name} restabliguèt lo compte a %{target}"
+        update_announcement: "%{name} actualizèt una anóncia %{target}"
         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)"
       title: Audit dels jornals
+    announcements:
+      destroyed_msg: Anóncia corrèctament tirada !
+      edit:
+        title: Modificar l’anóncia
+      empty: Cap d’anóncia pas trobada.
+      live: Dirèct
+      new:
+        create: Crear una anóncia
+        title: Anóncia novèla
+      published_msg: Anóncia corrèctament publicada !
+      scheduled_for: Programada per %{time}
+      scheduled_msg: Anóncia programada per publicacion !
+      title: Anóncias
+      unpublished_msg: Anóncia corrèctament tirada !
+      updated_msg: Anóncia corrèctament actualizada !
     custom_emojis:
       assign_category: Atribuir una categoria
       by_domain: Domeni
@@ -229,6 +250,7 @@ oc:
       delete: Suprimir
       destroyed_msg: Emoji ben suprimit !
       disable: Desactivar
+      disabled: Desactivat
       disabled_msg: Aqueste emoji es ben desactivat
       emoji: Emoji
       enable: Activar
@@ -327,6 +349,7 @@ oc:
       delete: Suprimir
       destroyed_msg: Blocatge del domeni de corrièl ben levat
       domain: Domeni
+      empty: Cap de domeni de corrièl es pas en lista negra actualament.
       new:
         create: Crear un blocatge
         title: Nòu blocatge de domeni de corrièl
@@ -359,6 +382,8 @@ oc:
       title: Convits
     pending_accounts:
       title: Comptes en espèra (%{count})
+    relationships:
+      title: Relacions de %{acct}
     relays:
       add_new: Ajustar un nòu relai
       delete: Suprimir
@@ -383,10 +408,14 @@ oc:
         notes:
           one: "%{count} nòta"
           other: "%{count} nòtas"
+        reports:
+          one: "%{count} senhalament"
+          other: "%{count} senhalaments"
       action_taken_by: Mesura menada per
       are_you_sure: Es segur ?
       assign_to_self: Me l’assignar
       assigned: Moderador assignat
+      by_target_domain: Domeni del compte senhalat
       comment:
         none: Pas cap
       created_at: Creacion
@@ -431,6 +460,8 @@ oc:
         users: Als utilizaires locals connectats
       domain_blocks_rationale:
         title: Mostrar lo rasonament
+      enable_bootstrap_timeline_accounts:
+        title: Activar lo seguiment per defaut pels nòuvenguts
       hero:
         desc_html: Mostrat en primièra pagina. Almens 600x100px recomandat. S’es pas configurat l’imatge del servidor serà mostrat
         title: Imatge de l’eròi
@@ -538,13 +569,23 @@ oc:
       body: "%{reporter} a senhalat %{target}"
       body_remote: Qualqu’un de %{domain} senhalèt %{target}
       subject: Novèl senhalament per %{instance} (#%{id})
+    new_trending_tag:
+      subject: Nòva etiqueta per repassar sus %{instance} (#%{name})
+  aliases:
+    add_new: Crear un alias
+    remove: Desligar l’alias
   appearance:
     advanced_web_interface: Interfàcia web avançada
     advanced_web_interface_hint: 'Se volètz utilizar la nautor complèta de l’ecran, l’interfàcia web avançada vos permet de configurar diferentas colomnas per mostrar tan d’informacions que volètz : Acuèlh, notificacions, flux d’actualitat, e d’autras listas e etiquetas.'
     animations_and_accessibility: Animacion e accessibilitat
     confirmation_dialogs: Fenèstras de confirmacion
     discovery: Descobèrta
+    localization:
+      body: Mastodon es traduch per de benevòls.
+      guide_link: https://crowdin.com/project/mastodon
+      guide_link_text: Tot lo monde pòt contribuïr.
     sensitive_content: Contengut sensible
+    toot_layout: Disposicion del tut
   application_mailer:
     notification_preferences: Cambiar las preferéncias de corrièl
     salutation: "%{name},"
@@ -609,6 +650,9 @@ oc:
     hint_html: "<strong>Asutúcia :</strong> vos demandarem pas vòstre senhal de nòu d’aquí unas oras."
     invalid_password: Senhal invalid
     prompt: Confirmatz lo senhal per dire de contunhar
+  date:
+    formats:
+      default: "%d %B de %Y"
   datetime:
     distance_in_words:
       about_x_hours: "%{count} h"
@@ -630,7 +674,9 @@ oc:
     proceed: Suprimir lo compte
     success_msg: Compte ben suprimit
     warning:
+      before: 'Abans de contunhar, volgatz legir aquestas nòtas amb atencion :'
       caches: Lo contengut en cache suls autres servidors pòt demorar
+      data_removal: Vòstras publicacions e las autras donadas seràn suprimidas per totjorn
       email_change_html: Podètz <a href="%{path}">cambiar vòstra adreça electronia</a>sens suprimir vòstre compte
       irreversible: Poiretz pas restaurar o reactivar vòstre compte
       more_details_html: Per mai d’informacion, vejatz la <a href="%{terms_path}">politica de confidencialitat</a>.
@@ -680,6 +726,7 @@ oc:
       limit: Avètz ja utilizat lo maximum d’etiquetas
   filters:
     contexts:
+      account: Perfils
       home: Flux d’acuèlh
       notifications: Notificacions
       public: Flux public
@@ -691,6 +738,7 @@ oc:
       invalid_irreversible: Lo filtratge irreversible fonciona pas qu’amb lo flux d’actualitat o en contèxte de notificacion
     index:
       delete: Suprimir
+      empty: Avètz pas cap de filtre.
       title: Filtres
     new:
       title: Ajustar un nòu filtre
@@ -703,6 +751,7 @@ oc:
     all: Tot
     changes_saved_msg: Cambiaments ben realizats !
     copy: Copiar
+    delete: Suprimir
     no_batch_actions_available: Cap d’accion de massa pas disponibla sus aquesta pagina
     order_by: Triar per
     save_changes: Salvar los cambiaments
@@ -780,6 +829,8 @@ oc:
     errors:
       move_to_self: pòt pas èsser lo compte actual
       not_found: impossible de trobar
+      on_cooldown: Sètz en temps de recargament
+    followers_count: Seguidors al moment de mudar
     incoming_migrations: Mudar d’un compte diferent
     moved_msg: Vòstre compte manda ara a %{acct} e vòstres seguidors son desplaçats.
     not_redirecting: Vòstre compte manda pas enlòc pel moment.
@@ -789,6 +840,7 @@ oc:
     set_redirect: Definir redireccion
     warning:
       before: 'Abans de contunhar, volgatz legir aquestas nòtas amb atencion :'
+      only_redirect_html: Autrament, podètz <a href="%{path}">solament definir una redireccion sus vòstre perfil</a>.
       other_data: Cap d’autra donada serà desplaçada automaticament
   moderation:
     title: Moderacion
@@ -853,6 +905,7 @@ oc:
       duration_too_long: es tròp alonhat dins lo futur
       duration_too_short: es tròp d’ora
       expired: Lo sondatge es ja acabat
+      invalid_choice: L’opcion causida existís pas
       over_character_limit: pòt pas èsser superior a %{max} caractèrs cadun
       too_few_options: deu contenir mai d’una opcion
       too_many_options: pòt pas contenir mai de %{max} opcions
@@ -860,9 +913,16 @@ oc:
     other: Autre
     posting_defaults: Valors per defaut de las publicacions
     public_timelines: Fluxes d’actualitats publics
+  reactions:
+    errors:
+      limit_reached: La limita de las reaccions diferentas es estada atenguda
+      unrecognized_emoji: es pas un emoji reconegut
   relationships:
     activity: Activitat del compte
     dormant: Inactiu
+    followers: Seguidors
+    following: Aboanements
+    invited: Convidat
     last_active: Darrièra activitat
     most_recent: Mai recenta
     moved: Mudat
@@ -981,11 +1041,15 @@ oc:
       private: Se pòt pas penjar los tuts pas publics
       reblog: Se pòt pas penjar un tut partejat
     poll:
+      total_people:
+        one: "%{count} persona"
+        other: "%{count} personas"
       total_votes:
         one: "%{count} vòte"
         other: "%{count} vòtes"
       vote: Votar
     show_more: Ne veire mai
+    show_thread: Mostrar lo fil
     sign_in_to_participate: Inscrivètz-vos per participar a la conversacion
     title: '%{name} : "%{quote}"'
     visibilities:
diff --git a/config/locales/pl.yml b/config/locales/pl.yml
index 774319a5a..6f04720c5 100644
--- a/config/locales/pl.yml
+++ b/config/locales/pl.yml
@@ -11,6 +11,7 @@ pl:
     apps: Aplikacje
     apps_platforms: Korzystaj z Mastodona z poziomu iOS-a, Androida i innych
     browse_directory: Przeglądaj katalog profilów i filtruj z uwzględnieniem zainteresowań
+    browse_local_posts: Przeglądaj strumień publicznych wpisów z tego serwera
     browse_public_posts: Przeglądaj strumień publicznych wpisów na Mastodonie na żywo
     contact: Kontakt
     contact_missing: Nie ustawiono
@@ -85,6 +86,7 @@ pl:
     roles:
       admin: Administrator
       bot: Bot
+      group: Grupa
       moderator: Moderator
     unavailable: Profil niedostępny
     unfollow: Przestań śledzić
@@ -204,11 +206,15 @@ pl:
         change_email_user: "%{name} zmienił(a) adres e-mail użytkownika %{target}"
         confirm_user: "%{name} potwierdził(a) adres e-mail użytkownika %{target}"
         create_account_warning: "%{name} wysłał(a) ostrzeżenie do %{target}"
+        create_announcement: "%{name} utworzył(a) nowe ogłoszenie %{target}"
         create_custom_emoji: "%{name} dodał(a) nowe emoji %{target}"
+        create_domain_allow: "%{name} dodał(a) na białą listę domenę %{target}"
         create_domain_block: "%{name} zablokował(a) domenę %{target}"
         create_email_domain_block: "%{name} dodał(a) domenę e-mail %{target} na czarną listę"
         demote_user: "%{name} zdegradował(a) użytkownika %{target}"
+        destroy_announcement: "%{name} usunął(-ęła) ogłoszenie %{target}"
         destroy_custom_emoji: "%{name} usunął(-ęła) emoji %{target}"
+        destroy_domain_allow: "%{name} usunął(-ęła) domenę %{target} z białej listy"
         destroy_domain_block: "%{name} odblokował(a) domenę %{target}"
         destroy_email_domain_block: "%{name} usunął(-ęła) domenę e-mail %{target} z czarnej listy"
         destroy_status: "%{name} usunął(-ęła) wpis użytkownika %{target}"
@@ -228,10 +234,26 @@ pl:
         unassigned_report: "%{name} cofnął(-ęła) przypisanie zgłoszenia %{target}"
         unsilence_account: "%{name} cofnął(-ęła) wyciszenie konta %{target}"
         unsuspend_account: "%{name} cofnął(-ęła) zawieszenie konta %{target}"
+        update_announcement: "%{name} zaktualizował(-a) ogłoszenie %{target}"
         update_custom_emoji: "%{name} zaktualizował(a) emoji %{target}"
         update_status: "%{name} zaktualizował(a) wpis użytkownika %{target}"
       deleted_status: "(usunięty wpis)"
       title: Dziennik działań administracyjnych
+    announcements:
+      destroyed_msg: Pomyślnie usunięto ogłoszenie!
+      edit:
+        title: Edytuj ogłoszenie
+      empty: Nie znaleziono ogłoszeń.
+      live: Na żywo
+      new:
+        create: Utwórz ogłoszenie
+        title: Nowe ogłoszenie
+      published_msg: Pomyślnie opublikowano ogłoszenie!
+      scheduled_for: Zaplanowano na %{time}
+      scheduled_msg: Zaplanowano publikację ogłoszenia!
+      title: Ogłoszenia
+      unpublished_msg: Pomyślnie wycofano publikację ogłoszenia!
+      updated_msg: Pomyślnie zaktualizowano ogłoszenie!
     custom_emojis:
       assign_category: Ustaw kategorię
       by_domain: Domeny
@@ -243,9 +265,11 @@ pl:
       delete: Usuń
       destroyed_msg: Pomyślnie usunięto emoji!
       disable: Wyłącz
+      disabled: Wyłączone
       disabled_msg: Pomyślnie wyłączono emoji
       emoji: Emotikona
       enable: Włącz
+      enabled: Włączone
       enabled_msg: Pomyślnie przywrócono emoji
       image_hint: Plik PNG ważący do 50KB
       list: Dodaj do listy
@@ -314,6 +338,7 @@ pl:
       private_comment: Prywatny komentarz
       private_comment_hint: Komentarz na temat ograniczeń dla tej domeny do wewnętrznej informacji dla moderatorów.
       public_comment: Publiczny komentarz
+      public_comment_hint: Komentarz dotyczący tego ograniczenia domeny widoczny publicznie, jeżeli wyświetlanie listy ograniczonych domen jest włączone.
       reject_media: Odrzucaj pliki multimedialne
       reject_media_hint: Usuwa przechowywane lokalnie pliki multimedialne i nie pozwala na ich pobieranie. Nieprzydatne przy zawieszeniu
       reject_reports: Odrzucaj zgłoszenia
@@ -342,6 +367,7 @@ pl:
       delete: Usuń
       destroyed_msg: Pomyślnie usunięto blokadę domeny e-mail
       domain: Domena
+      empty: Żadna domena e-mail nie znajduje się obecnie na czarnej liście.
       new:
         create: Utwórz blokadę
         title: Nowa blokada domeny e-mail
@@ -376,6 +402,8 @@ pl:
       title: Zaproszenia
     pending_accounts:
       title: Oczekujące konta (%{count})
+    relationships:
+      title: Relacje %{acct}
     relays:
       add_new: Dodaj nowy
       delete: Usuń
@@ -400,6 +428,7 @@ pl:
       are_you_sure: Czy na pewno?
       assign_to_self: Przypisz do siebie
       assigned: Przypisany moderator
+      by_target_domain: Domena zgłaszanego konta
       comment:
         none: Brak
       created_at: Zgłoszono
diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml
index fb741b0d0..abea40130 100644
--- a/config/locales/pt-BR.yml
+++ b/config/locales/pt-BR.yml
@@ -198,11 +198,13 @@ pt-BR:
         change_email_user: "%{name} alterou o endereço de e-mail do usuário %{target}"
         confirm_user: "%{name} confirmou o endereço de e-mail do usuário %{target}"
         create_account_warning: "%{name} enviou um aviso para %{target}"
+        create_announcement: "%{name} criou um novo anúncio %{target}"
         create_custom_emoji: "%{name} enviou o novo emoji %{target}"
         create_domain_allow: "%{name} permitiu %{target}"
         create_domain_block: "%{name} bloqueou o domínio %{target}"
         create_email_domain_block: "%{name} bloqueou o domínio de e-mail %{target}"
         demote_user: "%{name} rebaixou o usuário %{target}"
+        destroy_announcement: "%{name} excluiu o anúncio %{target}"
         destroy_custom_emoji: "%{name} excluiu emoji %{target}"
         destroy_domain_allow: "%{name} bloqueou %{target}"
         destroy_domain_block: "%{name} desbloqueou o domínio %{target}"
@@ -224,10 +226,26 @@ pt-BR:
         unassigned_report: "%{name} largou a denúncia %{target}"
         unsilence_account: "%{name} desativou o silêncio de %{target}"
         unsuspend_account: "%{name} desbaniu %{target}"
+        update_announcement: "%{name} atualizou o anúncio %{target}"
         update_custom_emoji: "%{name} atualizou o emoji %{target}"
         update_status: "%{name} atualizou o status de %{target}"
       deleted_status: "(status excluído)"
       title: Auditar histórico
+    announcements:
+      destroyed_msg: Anúncio excluído com sucesso!
+      edit:
+        title: Editar anúncio
+      empty: Nenhum anúncio encontrado.
+      live: Em exibição
+      new:
+        create: Criar anúncio
+        title: Novo anúncio
+      published_msg: Anúncio publicado com sucesso!
+      scheduled_for: Agendado para %{time}
+      scheduled_msg: Anúncio agendado para publicação!
+      title: Anúncios
+      unpublished_msg: Anúncio retirado de exibição com sucesso!
+      updated_msg: Anúncio atualizado com sucesso!
     custom_emojis:
       assign_category: Atribuir categoria
       by_domain: Domínio
@@ -657,6 +675,9 @@ pt-BR:
     hint_html: "<strong>Dica:</strong> Não pediremos novamente sua senha pela próxima hora."
     invalid_password: Senha inválida
     prompt: Confirme sua senha para continuar
+  date:
+    formats:
+      default: "%d %b %Y"
   datetime:
     distance_in_words:
       about_x_hours: "%{count}h"
@@ -758,6 +779,7 @@ pt-BR:
     all: Tudo
     changes_saved_msg: Alterações foram salvas com sucesso!
     copy: Copiar
+    delete: Eliminar
     no_batch_actions_available: Nenhuma ação em lote disponível nesta página
     order_by: Ordenar por
     save_changes: Salvar alterações
@@ -929,6 +951,10 @@ pt-BR:
     other: Outro
     posting_defaults: Padrões de publicação
     public_timelines: Linhas públicas
+  reactions:
+    errors:
+      limit_reached: Limite de reações diferentes atingido
+      unrecognized_emoji: não é um emoji reconhecido
   relationships:
     activity: Atividade da conta
     dormant: Inativo
@@ -1061,6 +1087,7 @@ pt-BR:
         other: "%{count} votos"
       vote: Votar
     show_more: Mostrar mais
+    show_thread: Mostrar conversa
     sign_in_to_participate: Entre para participar dessa conversa
     title: '%{name}: "%{quote}"'
     visibilities:
diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml
index deee43287..477c9d3a3 100644
--- a/config/locales/pt-PT.yml
+++ b/config/locales/pt-PT.yml
@@ -198,11 +198,13 @@ pt-PT:
         change_email_user: "%{name} alterou o endereço de e-mail do utilizador %{target}"
         confirm_user: "%{name} confirmou o endereço de e-mail do utilizador %{target}"
         create_account_warning: "%{name} enviou um aviso para %{target}"
+        create_announcement: "%{name} criou um novo anúncio %{target}"
         create_custom_emoji: "%{name} enviado emoji novo %{target}"
         create_domain_allow: "%{name} colocou o domínio %{target} na lista branca"
         create_domain_block: "%{name} bloqueou o domínio %{target}"
         create_email_domain_block: "%{name} adicionou na lista negra o domínio de correio electrónico %{target}"
         demote_user: "%{name} rebaixou o utilizador %{target}"
+        destroy_announcement: "%{name} excluiu o anúncio %{target}"
         destroy_custom_emoji: "%{name} destruiu o emoji %{target}"
         destroy_domain_allow: "%{name} removeu o domínio %{target} da lista branca"
         destroy_domain_block: "%{name} desbloqueou o domínio %{target}"
@@ -224,10 +226,26 @@ pt-PT:
         unassigned_report: "%{name} não atribuiu o relatório %{target}"
         unsilence_account: "%{name} desativou o silêncio de %{target}"
         unsuspend_account: "%{name} desativou a suspensão de  %{target}"
+        update_announcement: "%{name} atualizou o anúncio %{target}"
         update_custom_emoji: "%{name} atualizou o emoji %{target}"
         update_status: "%{name} atualizou o estado de %{target}"
       deleted_status: "(apagou a publicação)"
       title: Registo de auditoria
+    announcements:
+      destroyed_msg: Anúncio excluído com sucesso!
+      edit:
+        title: Editar anúncio
+      empty: Nenhum anúncio encontrado.
+      live: Em exibição
+      new:
+        create: Criar anúncio
+        title: Novo anúncio
+      published_msg: Anúncio publicado com sucesso!
+      scheduled_for: Agendado para %{time}
+      scheduled_msg: Anúncio agendado para publicação!
+      title: Anúncios
+      unpublished_msg: Anúncio retirado de exibição com sucesso!
+      updated_msg: Anúncio atualizado com sucesso!
     custom_emojis:
       assign_category: Atribuir categoria
       by_domain: Domínio
@@ -657,6 +675,9 @@ pt-PT:
     hint_html: "<strong>Dica:</strong> Não vamos pedir novamente a sua senha durante a próxima hora."
     invalid_password: Senha inválida
     prompt: Confirme a sua senha para continuar
+  date:
+    formats:
+      default: "%d %b %Y"
   datetime:
     distance_in_words:
       about_x_hours: "%{count}h"
@@ -758,6 +779,7 @@ pt-PT:
     all: Tudo
     changes_saved_msg: Alterações guardadas!
     copy: Copiar
+    delete: Eliminar
     no_batch_actions_available: Nenhuma ação em lote disponível nesta página
     order_by: Ordenar por
     save_changes: Guardar alterações
@@ -929,6 +951,10 @@ pt-PT:
     other: Outro
     posting_defaults: Padrões de publicação
     public_timelines: Cronologias públicas
+  reactions:
+    errors:
+      limit_reached: Limite de reações diferentes atingido
+      unrecognized_emoji: não é um emoji reconhecido
   relationships:
     activity: Atividade da conta
     dormant: Inativo
@@ -1061,6 +1087,7 @@ pt-PT:
         other: "%{count} votos"
       vote: Votar
     show_more: Mostrar mais
+    show_thread: Mostrar conversa
     sign_in_to_participate: Inicie a sessão para participar na conversa
     title: '%{name}: "%{quote}"'
     visibilities:
diff --git a/config/locales/ru.yml b/config/locales/ru.yml
index 47bd8e92e..6196ac3eb 100644
--- a/config/locales/ru.yml
+++ b/config/locales/ru.yml
@@ -66,7 +66,7 @@ ru:
     joined: 'Дата регистрации: %{date}'
     last_active: последняя активность
     link_verified_on: Владение этой ссылкой было проверено %{date}
-    media: Медиа
+    media: Медиафайлы
     moved_html: "%{name} переехал(а) на %{new_profile_link}:"
     network_hidden: Эта информация недоступна
     never_active: Никогда
@@ -206,7 +206,7 @@ ru:
         change_email_user: "%{name} сменил(а) e-mail пользователя %{target}"
         confirm_user: "%{name} подтвердил(а) e-mail адрес пользователя %{target}"
         create_account_warning: "%{name} выдал(а) предупреждение %{target}"
-        create_announcement: "%{name} содал новое объявление %{target}"
+        create_announcement: "%{name} создал(а) новое объявление %{target}"
         create_custom_emoji: "%{name} загрузил(а) новый эмодзи %{target}"
         create_domain_allow: "%{name} внес(ла) домен %{target} в белый список"
         create_domain_block: "%{name} заблокировал(а) домен %{target}"
@@ -240,6 +240,7 @@ ru:
       deleted_status: "(удалённый пост)"
       title: Журнал событий
     announcements:
+      destroyed_msg: Объявление удалено.
       edit:
         title: Редактировать объявление
       empty: Объявления не найдены.
@@ -247,9 +248,12 @@ ru:
       new:
         create: Создать объявление
         title: Новое объявление
-      published: Опубликованные
-      time_range: Временной диапазон
+      published_msg: Объявление опубликовано.
+      scheduled_for: Запланировано на %{time}
+      scheduled_msg: Объявление добавлено в очередь публикации.
       title: Объявления
+      unpublished_msg: Объявление скрыто.
+      updated_msg: Объявление обновлено.
     custom_emojis:
       assign_category: Задать категорию
       by_domain: Домен
@@ -797,7 +801,6 @@ ru:
     changes_saved_msg: Изменения успешно сохранены!
     copy: Копировать
     delete: Удалить
-    edit: Изменить
     no_batch_actions_available: На этой странице нет запланированных действий
     order_by: Сортировка
     save_changes: Сохранить изменения
@@ -1123,6 +1126,7 @@ ru:
         other: "%{count} голосов"
       vote: Голосовать
     show_more: Развернуть
+    show_thread: Открыть обсуждение
     sign_in_to_participate: Войдите, чтобы принять участие в дискуссии
     title: '%{name}: "%{quote}"'
     visibilities:
diff --git a/config/locales/simple_form.ar.yml b/config/locales/simple_form.ar.yml
index f7a38a92c..52933da12 100644
--- a/config/locales/simple_form.ar.yml
+++ b/config/locales/simple_form.ar.yml
@@ -12,6 +12,11 @@ ar:
         send_email_notification: سوف يتلقى المستخدم رسالة تُفسِّر ما حدث على حسابه
         type_html: اختر ما تود إجراؤه على <strong>%{acct}</strong>
         warning_preset_id: اختياري. يمكنك إضافة نص مخصص إلى نهاية النموذج
+      announcement:
+        ends_at: اختياري. سيتم إلغاء نشر الإعلان تلقائيا على هذه الساعة
+        scheduled_at: اتركه فارغا لنشر الإعلان في الحين
+        starts_at: اختياري. في حالة ما كان إعلانك ذو صلة بنطاق زمني مخصّص
+        text: يمكنك استخدام نسق التبويق. يجب الأخذ في الحسبان المساحة التي سيُغطّيها الإعلان على شاشة المستخدم
       defaults:
         autofollow: سوف يتابعك تلقائيًا الأشخاص الذين يقومون بالتسجيل من خلال الدعوة
         avatar: ملف PNG أو GIF أو JPG. حجمه على أقصى تصدير %{size}. سيتم تصغيره إلى %{dimensions}px
@@ -41,6 +46,7 @@ ar:
         setting_show_application: يتم عرض اسم التطبيق الذي تستخدمه عند التبويق في العرض المفصّل لتبوبيقاتك
         setting_use_pending_items: إخفاء تحديثات الخط وراء نقرة بدلًا مِن التمرير التلقائي للتدفق
         username: اسم المستخدم الخاص بك سوف يكون فريدا مِن نوعه على %{domain}
+        whole_word: إذا كانت الكلمة أو العبارة مكونة من أرقام وحروف فقط سوف يتم تطبيقها فقط عند مطابقة الكلمة ككل
       featured_tag:
         name: 'رُبَّما تريد·ين استخدام واحد مِن بين هذه:'
       form_challenge:
@@ -75,6 +81,11 @@ ar:
           silence: كتم
           suspend: تعليق و حذف كافة بيانات الحساب
         warning_preset_id: استخدم نموذج تنبيه
+      announcement:
+        ends_at: نهاية الفعالية
+        scheduled_at: جَدوِل المنشور
+        starts_at: بداية الفعالية
+        text: إعلان
       defaults:
         autofollow: إرسال دعوة لمتابعة حسابك
         avatar: الصورة الرمزية
diff --git a/config/locales/simple_form.ast.yml b/config/locales/simple_form.ast.yml
index 1206aa465..39cfa32c4 100644
--- a/config/locales/simple_form.ast.yml
+++ b/config/locales/simple_form.ast.yml
@@ -32,6 +32,8 @@ ast:
         type: Aición
         types:
           none: Nun facer nada
+      announcement:
+        text: Anunciu
       defaults:
         avatar: Avatar
         bot: Esta cuenta ye d'un robó
@@ -61,6 +63,7 @@ ast:
         setting_default_language: Llingua de los espublizamientos
         setting_default_privacy: Privacidá de los espublizamientos
         setting_delete_modal: Amosar el diálogu de confirmación enantes de desaniciar un barritu
+        setting_noindex: Nun apaecer nos índices de los motores de gueta
         setting_show_application: Dicir les aplicaciones que s'usen pa barritar
         setting_system_font_ui: Usar la fonte predeterminada del sistema
         setting_theme: Estilu del sitiu
diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml
index 532950a31..62d5823fc 100644
--- a/config/locales/simple_form.cs.yml
+++ b/config/locales/simple_form.cs.yml
@@ -14,6 +14,12 @@ cs:
         text_html: Volitelné. Můžete používat syntaxi tootů. Pro ušetření času si můžete <a href="%{path}">přidat předlohy pro varování</a>
         type_html: Vyberte, co chcete s účtem <strong>%{acct}</strong> udělat
         warning_preset_id: Volitelné. Na konec předlohy můžete stále vložit vlastní text
+      announcement:
+        all_day: Po vybrání budou zobrazeny jenom dny z časového období
+        ends_at: Volitelné. Zveřejněné oznámení bude v uvedený čas skryto.
+        scheduled_at: Pro okamžité zveřejnění ponechte prázdné
+        starts_at: Volitelné. Jen pokud je oznámení vázáno na konkrétní časové období
+        text: Můžete použít stejnou syntax jako pro tooty. Myslete ale na to, že oznámení zabere uživatelům na obrazovce nějaký prostor.
       defaults:
         autofollow: Lidé, kteří se zaregistrují na základě pozvánky, vás budou automaticky sledovat
         avatar: PNG, GIF či JPG. Maximálně %{size}. Bude zmenšen na %{dimensions} px
@@ -85,8 +91,10 @@ cs:
         warning_preset_id: Použít předlohu pro varování
       announcement:
         all_day: Celodenní událost
+        ends_at: Konec události
         scheduled_at: Naplánovat zveřejnění
         starts_at: Začátek události
+        text: Oznámení
       defaults:
         autofollow: Pozvat ke sledování vašeho účtu
         avatar: Avatar
diff --git a/config/locales/simple_form.cy.yml b/config/locales/simple_form.cy.yml
index 6a3e74d59..19aca7334 100644
--- a/config/locales/simple_form.cy.yml
+++ b/config/locales/simple_form.cy.yml
@@ -14,6 +14,12 @@ cy:
         text_html: Yn ddewisol. Gallwch defnyddio cystrawen tŵt. Gallwch <a href="%{path}">ychwanegu rhagosodiadau rhybydd</a> i arbed amser
         type_html: Dewis beth i wneud gyda <strong>%{acct}</strong>
         warning_preset_id: Yn ddewisol. Gallwch dal ychwanegu testun addasiol I ddiwedd y rhagosodiad
+      announcement:
+        all_day: Pam ddewisir, caiff ddim ond dyddiau o'r amrediad amser ei ymddangos
+        ends_at: Dewisiol. Caiff y cyhoeddiad ei angyhoeddi yn awtomatig at yr amser hon
+        scheduled_at: Gadael yn wag i gyhoeddi'r cyhoeddiad ar unwaith
+        starts_at: Dewisiol. Os mae eich cyhoeddiad yn gyfyniedig i amrediad amser penodol
+        text: Gallwch defnyddio cystrawen tŵt. Byddwch yn ymwybodol o'r lle cymerir y cyhoeddiad ar sgrin y defnyddwr
       defaults:
         autofollow: Bydd pobl sy'n cofrestru drwy'r gwahoddiad yn eich dilyn yn awtomatig
         avatar: PNG, GIF neu JPG. %{size} ar y mwyaf. Caiff ei israddio i %{dimensions}px
@@ -83,6 +89,12 @@ cy:
           silence: Tawelwch
           suspend: Dileu data cyfrif
         warning_preset_id: Defnyddiwch ragnod rhag rhybudd
+      announcement:
+        all_day: Digwiddiad trwy'r dydd
+        ends_at: Diwedd digwyddiad
+        scheduled_at: Amserlenni cyhoeddiad
+        starts_at: Dechreuad digwyddiad
+        text: Cyhoeddiad
       defaults:
         autofollow: Gwahodd i ddilyn eich cyfrif
         avatar: Afatar
diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml
index 994cb1b84..ee7ec769a 100644
--- a/config/locales/simple_form.eo.yml
+++ b/config/locales/simple_form.eo.yml
@@ -70,6 +70,12 @@ eo:
           silence: Silentigi
           suspend: Haltigi kaj nemalfereble forigi kontajn datumojn
         warning_preset_id: Uzi antaŭagorditan averton
+      announcement:
+        all_day: Ĉiutaga evento
+        ends_at: Fino de evento
+        scheduled_at: Plani publikigo
+        starts_at: Komenco de evento
+        text: Anonco
       defaults:
         autofollow: Inviti al sekvi vian konton
         avatar: Profilbildo
diff --git a/config/locales/simple_form.et.yml b/config/locales/simple_form.et.yml
index 0b8c2c22b..59be44c8c 100644
--- a/config/locales/simple_form.et.yml
+++ b/config/locales/simple_form.et.yml
@@ -14,6 +14,12 @@ et:
         text_html: Valikuline. Te saate kasutada tuututuse süntaksi. Te saate <a href="%{path}">lisada hoiatuste eelseadistusi</a> aega säästmiseks
         type_html: Vali, mida teha kasutajaga <strong>%{acct}</strong>
         warning_preset_id: Valikuline. Te saate ikka lisada mis tahes teksti eelseadistuse lõppu
+      announcement:
+        all_day: Kui valitud, ainult kuupäevad antud ajavahemikus on kuvatud
+        ends_at: Valikuline. Teadaanne eemaldatakse automaatselt sellel ajal
+        scheduled_at: Jäta tühjaks, et avaldada teadaande koheselt
+        starts_at: Valikuline. Juhul, kui teie teadaanne on limiteeritud kindlale ajavahemikule
+        text: Te saate kasutada tuututuse süntaksi. Palun pidage silmas seda, kui palju ruumi teadaanne võtab kasutaja ekraanil
       defaults:
         autofollow: Inimesed, kes loovad konto selle kutse läbi, automaatselt jälgivad Teid
         avatar: PNG, GIF või JPG. Kõige rohkem %{size}. Vähendatakse %{dimensions} pikslini
@@ -83,6 +89,12 @@ et:
           silence: Vaigista
           suspend: Peata ja taastamatult kustuta konto andmed
         warning_preset_id: Kasuta hoiatuse eelseadistust
+      announcement:
+        all_day: Kogu päeva sündmus
+        ends_at: Sündmuse lõpp
+        scheduled_at: Ajasta avalikustamine
+        starts_at: Sündmuse algus
+        text: Teadaanne
       defaults:
         autofollow: Kutsu oma kontot jälgima
         avatar: Profiilipilt
diff --git a/config/locales/simple_form.eu.yml b/config/locales/simple_form.eu.yml
index b6253a197..9e45fb032 100644
--- a/config/locales/simple_form.eu.yml
+++ b/config/locales/simple_form.eu.yml
@@ -90,10 +90,10 @@ eu:
           suspend: Kanporatu eta behin betiko ezabatu kontuko datuak
         warning_preset_id: Erabili aurre-ezarritako abisu bat
       announcement:
-        all_day: Egun osoko gertaera
-        ends_at: Gertaeraren amaiera
+        all_day: Egun osoko ekitaldia
+        ends_at: Ekitaldiaren amaiera
         scheduled_at: Programatu argitaratzea
-        starts_at: Gertaeraren hasiera
+        starts_at: Ekitaldiaren hasiera
         text: Iragarpena
       defaults:
         autofollow: Gonbidatu zure kontua jarraitzera
diff --git a/config/locales/simple_form.fa.yml b/config/locales/simple_form.fa.yml
index 2cfbad182..0001efaf5 100644
--- a/config/locales/simple_form.fa.yml
+++ b/config/locales/simple_form.fa.yml
@@ -14,6 +14,12 @@ fa:
         text_html: اختیاری. می‌توانید مثل بوق‌های معمولی بنویسید. می‌توانید برای صرفه‌جویی در زمان <a href="%{path}">هشدارهای ازپیش‌آماده بیفزایید</a>
         type_html: با حساب <strong>%{acct}</strong> می‌خواهید چه کار کنید؟‌
         warning_preset_id: اختیاری. همچنان می‌توانید در پایان متن آماده چیزی بیفزایید
+      announcement:
+        all_day: هنگام گزینش، تنها تاریخ‌های بازهٔ زمانی نمایش داده خواهند شد
+        ends_at: اختیاری. اعلامیه در این به صورت خودکار نامنتشر خواهد شد
+        scheduled_at: برای انتشار فوری اعلامیه، خالی بگذارید
+        starts_at: اختیاری. در صورتی که اعلامیه‌تان محدود به بازهٔ زمانی خاصی است
+        text: می‌توانید مانند یک بوق‌ معمولی بنویسید. یادتان باشد که اعلامیهٔ شما فضای صفحهٔ کاربران را اشغال خواهد کرد
       defaults:
         autofollow: کسانی که از راه دعوت‌نامه عضو می‌شوند به طور خودکار پیگیر شما خواهند شد
         avatar: یکی از قالب‌های PNG یا  GIF یا JPG. بیشترین اندازه %{size}. تصویر به اندازهٔ %{dimensions} پیکسل تبدیل خواهد شد
@@ -22,7 +28,7 @@ fa:
         current_password: به دلایل امنیتی لطفاً رمز این حساب را وارد کنید
         current_username: برای تأیید، لطفاً نام کاربری حساب فعلی را وارد کنید
         digest: تنها وقتی فرستاده می‌شود که مدتی طولانی فعالیتی نداشته باشید و در این مدت برای شما پیغام خصوصی‌ای نوشته شده باشد
-        discoverable: فهرست گزیدهٔ کاربران این سرور راه دیگری است که با آن حساب شما می‌تواند مخاطبان بیشتری پیدا کند
+        discoverable: فهرست گزیدهٔ کاربران، راهی دیگر برای رسیدن به مخاطبان گسترده‌تری برای حسابتان است
         email: به شما ایمیل تأییدی فرستاده خواهد شد
         fields: شما می‌توانید تا چهار مورد را در یک جدول در نمایهٔ خود نمایش دهید
         header: یکی از قالب‌های PNG یا  GIF یا JPG. بیشترین اندازه %{size}. تصویر به اندازهٔ %{dimensions} پیکسل تبدیل خواهد شد
@@ -52,7 +58,7 @@ fa:
       form_challenge:
         current_password: شما در حال ورود به یک منطقهٔ‌ حفاظت‌شده هستید
       imports:
-        data: پروندهٔ CSV که از سرور ماستدون دیگری برون‌سپاری شده
+        data: پروندهٔ CSV برون‌ریخته از دیگر کارساز ماستودون
       invite_request:
         text: این برای بررسی درخواست شما به ما کمک خواهد کرد
       sessions:
@@ -83,6 +89,12 @@ fa:
           silence: بی‌صدا کردن
           suspend: تعلیق و پاک‌کردن کامل همهٔ اطلاعات حساب
         warning_preset_id: یک هشدار از پیش‌آماده را به کار ببرید
+      announcement:
+        all_day: رویداد تمام‌روز
+        ends_at: پایان رویداد
+        scheduled_at: زمان‌بندی انتشار
+        starts_at: آغاز رویداد
+        text: اعلامیه
       defaults:
         autofollow: دعوت از دیگران برای عضو شدن و پیگیری حساب شما
         avatar: تصویر نمایه
diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml
index 3cc3e7344..5bfcae592 100644
--- a/config/locales/simple_form.fi.yml
+++ b/config/locales/simple_form.fi.yml
@@ -6,8 +6,9 @@ fi:
         send_email_notification: Käyttäjä saa selityksen mitä tapahtui hänen tililleen
       defaults:
         avatar: PNG, GIF tai JPG. Enintään %{size}. Skaalataan kokoon %{dimensions} px
-        bot: Tämä tili suorittaa enimmäkseen automaattisia toimintoja, eikä sitä ehkä valvota
+        bot: Tämä tili suorittaa enimmäkseen automaattisia toimintoja eikä sitä ehkä valvota
         digest: Lähetetään vain pitkän poissaolon jälkeen ja vain, jos olet saanut suoria viestejä poissaolosi aikana
+        discoverable: Profiilihakemisto on toinen tapa, jolla tilisi voi tavoittaa laajemman yleisön
         email: Sinulle lähetetään vahvistussähköposti
         fields: Sinulla voi olla korkeintaan 4 asiaa profiilissasi taulukossa
         header: PNG, GIF tai JPG. Enintään %{size}. Skaalataan kokoon %{dimensions} px
@@ -28,10 +29,12 @@ fi:
           value: Sisältö
       defaults:
         avatar: Profiilikuva
+        bot: Tämä on botti
         confirm_new_password: Vahvista uusi salasana
         confirm_password: Vahvista salasana
         current_password: Nykyinen salasana
         data: Tiedot
+        discoverable: Listaa tämä tili hakemistoon
         display_name: Nimimerkki
         email: Sähköpostiosoite
         expires_in: Vanhenee
diff --git a/config/locales/simple_form.id.yml b/config/locales/simple_form.id.yml
index 263b749eb..ada83fc86 100644
--- a/config/locales/simple_form.id.yml
+++ b/config/locales/simple_form.id.yml
@@ -89,6 +89,12 @@ id:
           silence: Diamkan
           suspend: Tangguhkan dan hapus data akun scr permanen
         warning_preset_id: Gunakan preset peringatan
+      announcement:
+        all_day: Event sepanjang hari
+        ends_at: Akhir event
+        scheduled_at: Jadwal publikasi
+        starts_at: Awal mulai event
+        text: Pengumuman
       defaults:
         autofollow: Undang untuk mengikuti Anda
         avatar: Avatar
diff --git a/config/locales/simple_form.is.yml b/config/locales/simple_form.is.yml
index b7aabd5d1..65041f19c 100644
--- a/config/locales/simple_form.is.yml
+++ b/config/locales/simple_form.is.yml
@@ -14,6 +14,12 @@ is:
         text_html: Valfrjálst. Þú getur notað sömu skilgreiningar og fyrir tíst. Þú getur <a href="%{path}">bætt inn forstilltum aðvörunum</a> til að spara tíma
         type_html: Veldu hvað eigi að gera við <strong>%{acct}</strong>
         warning_preset_id: Valkvætt. Þú getur ennþá bætt sérsniðnum texta við enda forstillinga
+      announcement:
+        all_day: Þegar merkt er við þetta, munu einungis birtast dagsetningar tímarammans
+        ends_at: Valfrjálst. Auglýsing verðut tekin úr birtingu á þessum tíma
+        scheduled_at: Skildu þetta eftir autt til að birta auglýsinguna samstundis
+        starts_at: Valfrjálst. Notað ef auglýsing er bundin við tiltekinn tímaramma
+        text: Þú getur notað sömu skilgreiningar og fyrir tíst. Hafðu í huga það pláss sem auglýsingin mun taka á skjá notandans
       defaults:
         autofollow: Fólk sem skráir sig í gegnum boðið mun sjálfkrafa fylgjast með þér
         avatar: PNG, GIF eða JPG. Mest %{size}. Verður smækkað í %{dimensions}px
@@ -83,6 +89,12 @@ is:
           silence: Hylja
           suspend: Setja í bið og eyða endanlega gögnum notandaaðgangsins
         warning_preset_id: Nota forstillta aðvörun
+      announcement:
+        all_day: Heilsdags atburður
+        ends_at: Lok atburðar
+        scheduled_at: Áætla birtingu
+        starts_at: Upphaf atburðar
+        text: Auglýsing
       defaults:
         autofollow: Bjóða að fylgjast með aðgangnum þínum
         avatar: Auðkennismynd
diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml
index 3a0e1d265..35c4f80cf 100644
--- a/config/locales/simple_form.it.yml
+++ b/config/locales/simple_form.it.yml
@@ -14,6 +14,12 @@ it:
         text_html: Opzionale. Puoi usare la sintassi dei toot. Puoi <a href="%{path}">aggiungere avvisi preimpostati</a> per risparmiare tempo
         type_html: Decidi cosa fare con <strong>%{acct}</strong>
         warning_preset_id: Opzionale. Puoi aggiungere un testo personalizzato alla fine di quello preimpostato
+      announcement:
+        all_day: Se selezionato, verranno visualizzate solo le date dell'intervallo di tempo
+        ends_at: Opzionale. L'annuncio verrà automaticamente ritirato in questo momento
+        scheduled_at: Lascia vuoto per pubblicare immediatamente l'annuncio
+        starts_at: Opzionale. Quando l'annuncio è legato a un intervallo di tempo specifico
+        text: Puoi usare la sintassi dei toot. Tieni presente lo spazio che l'annuncio occuperà nello schermo dell'utente
       defaults:
         autofollow: Le persone che si iscrivono attraverso l'invito ti seguiranno automaticamente
         avatar: PNG, GIF o JPG. Al massimo %{size}. Verranno scalate a %{dimensions}px
@@ -83,6 +89,12 @@ it:
           silence: Silenzia
           suspend: Sospendi e cancella i dati dell'account in modo irreversibile
         warning_preset_id: Usa un avviso preimpostato
+      announcement:
+        all_day: Tutto il giorno
+        ends_at: Fine dell'evento
+        scheduled_at: Programma la pubblicazione
+        starts_at: Inizio dell'evento
+        text: Annuncio
       defaults:
         autofollow: Invita a seguire il tuo account
         avatar: Immagine di profilo
diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml
index 6da1173ef..9938e08b3 100644
--- a/config/locales/simple_form.ja.yml
+++ b/config/locales/simple_form.ja.yml
@@ -15,7 +15,7 @@ ja:
         type_html: "<strong>%{acct}</strong>さんに対し、何を行うか選択してください"
         warning_preset_id: オプションです。プリセット警告文の末尾に任意の文字列を追加することができます
       announcement:
-        all_day: 選択すると、おしらせ対象の開始および終了日時は日付のみ表示されます
+        all_day: 有効化すると、対象期間の箇所に日付だけが表示されます
         ends_at: オプションです。指定すると、お知らせの掲載はその日時で自動的に終了します
         scheduled_at: お知らせを今すぐ掲載する場合は空欄にしてください
         starts_at: オプションです。お知らせしたい事柄の期間が決まっている場合に使用します
@@ -91,9 +91,9 @@ ja:
         warning_preset_id: プリセット警告文を使用
       announcement:
         all_day: 終日
-        ends_at: お知らせ対象の終了日時
-        scheduled_at: 掲載する日時
-        starts_at: おしらせ対象の開始日時
+        ends_at: 予定終了日時
+        scheduled_at: 掲載予約日時
+        starts_at: 予定開始日時
         text: お知らせ
       defaults:
         autofollow: 招待から参加後、あなたをフォロー
diff --git a/config/locales/simple_form.kab.yml b/config/locales/simple_form.kab.yml
index 0a6417e36..db4369e92 100644
--- a/config/locales/simple_form.kab.yml
+++ b/config/locales/simple_form.kab.yml
@@ -5,27 +5,29 @@ kab:
       account_alias:
         acct: Specify the username@domain of the account you want to move from
       account_migration:
-        acct: Sekcem isem n umseqdac@taɣult n umiḍan wuɣur tebɣiḍ ad tuɣaleḍ
+        acct: Sekcem isem n umseqdac@taγult n umiḍan anida itebγiḍ ad gujjeḍ
       admin_account_action:
-        send_email_notification: Amseqdac ad t-id-yewweḍ usefhem ɣef wayen yeḍran akked umiḍan-is
+        send_email_notification: Amseqdac ad t-id-yewweḍ usefhem γef wayen yeḍran akked umiḍan-is
         type_html: Fren d acu ara txedmeḍ s <strong>%{acct}</strong>
       defaults:
         autofollow: Imdanen ara ijerrden s usnebgi-inek, ad k-ḍefṛen s wudem awurman
-        discoverable: Tabdert n yimaɣnuten d udem-nniḍen i umiḍan-ik akken ad yettwassen ugar
+        discoverable: Tabdert n yimaγnuten d udem-nniḍen i umiḍan-ik akken ad yettwassen ugar
         email: Ad n-teṭṭfeḍ imayl i usentem
-        irreversible: Tibarraḥin i tessazedgeḍ ad ttwakksent i lebda, ula ma tekkseḍ imsizdeg-nni ar zdat
-        locale: Tutlayt n ugrudem, imaylen d tilɣa
+        irreversible: Tijewwaqin i tessazedgeḍ ad ttwakksent i lebda, ula ma tekkseḍ imsizdeg-nni ar zdat
+        locale: Tutlayt n ugrudem, imaylen d tilγa
         password: Seqdec ma drus 8 n yisekkilen
-        setting_hide_network: Wid i teṭṭafaṛeḍ d wid i k-yeṭṭafaṛen ur d-ttwaseknen ara deg umaɣnu-inek
+        setting_hide_network: Wid i teṭṭafaṛeḍ d wid i k-yeṭṭafaṛen ur d-ttwaseknen ara deg umaγnu-inek
         username: Isem-ik n umseqdac ad yili d ayiwen, ulac am netta deg %{domain}
       featured_tag:
-        name: 'Ahat ad tebɣuḍ ad tesqedceḍ yiwen gar-asen:'
+        name: 'Ahat ad tebγuḍ ad tesqedceḍ yiwen gar-asen:'
       imports:
-        data: Afaylu CSV yekka-d seg uqeddac-nniḍen Mastudun
+        data: Afaylu CSV id yusan seg uqeddac-nniḍen n Maṣṭudun
     labels:
       account:
         fields:
           value: Agbur
+      account_migration:
+        acct: Tansa n umiḍan amaynut
       admin_account_action:
         types:
           silence: Sgugem
@@ -36,16 +38,20 @@ kab:
         confirm_password: Sentem awal uffir
         current_password: Awal uffir n tura
         data: Isefka
+        discoverable: Rnu amiḍan-a γer ukaram
         display_name: Isem ara d-yettwaskanen
         email: Tansa imayl
         header: Ixef
         locale: Tutlayt n ugrudem
         new_password: Awal uffir amaynut
         password: Awal uffir
+        setting_default_language: Tutlayt n tira
+        setting_default_privacy: Tabaḍnit n tira
         setting_display_media_default: Akk-a kan
         setting_display_media_hide_all: Ffer kullec
         setting_display_media_show_all: Sken kullec
         setting_hide_network: Ffer azetta-k·m
+        setting_theme: Asental n wesmel
         username: Isem n useqdac
         username_or_email: Isem n useqdac neγ imal
         whole_word: Awal akk
@@ -54,7 +60,7 @@ kab:
       invite:
         comment: Awennit
       invite_request:
-        text: Acimi tebɣiḍ ad ternuḍ iman-ik?
+        text: Acimi tebγiḍ ad ternuḍ iman-ik?
     'no': Ala
     required:
       mark: "*"
diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml
index 5f2cccf4a..028aa59d9 100644
--- a/config/locales/simple_form.ko.yml
+++ b/config/locales/simple_form.ko.yml
@@ -28,7 +28,7 @@ ko:
         current_password: 보안을 위해 현재 계정의 암호를 입력해주세요
         current_username: 확인을 위해, 현재 계정의 사용자명을 입력해주세요
         digest: 오랫동안 활동하지 않았을 때 받은 멘션들에 대한 요약 받기
-        discoverable: 프로필 디렉토리는 내 계정이 더 많은 관심을 갖게 할 수 있는 다른 방법입니다
+        discoverable: 프로필 책자는 내 계정이 더 많은 관심을 갖게 할 수 있는 다른 방법입니다
         email: 당신은 확인 메일을 받게 됩니다
         fields: 당신의 프로파일에 최대 4개까지 표 형식으로 나타낼 수 있습니다
         header: PNG, GIF 혹은 JPG. 최대 %{size}. %{dimensions}px로 축소 됨
@@ -105,7 +105,7 @@ ko:
         context: 필터 컨텍스트
         current_password: 현재 암호 입력
         data: 데이터
-        discoverable: 이 계정을 디렉토리에서 찾을 수 있도록 합니다
+        discoverable: 이 계정을 책자에서 찾을 수 있도록 합니다
         display_name: 표시되는 이름
         email: 이메일 주소
         expires_in: 만료시각
@@ -171,7 +171,7 @@ ko:
         report: 새 신고 등록시 이메일로 알리기
         trending_tag: 리뷰 되지 않은 해시태그가 유행할 때 이메일 보내기
       tag:
-        listable: 이 해시태그가 프로필 디렉토리에 보여지도록 허용
+        listable: 이 해시태그가 프로필 책자에 보여지도록 허용
         name: 해시태그
         trendable: 이 해시태그가 유행에 보여지도록 허용
         usable: 이 해시태그를 툿에 사용 가능하도록 허용
diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml
index 2fe515f55..ec6ba52eb 100644
--- a/config/locales/simple_form.nl.yml
+++ b/config/locales/simple_form.nl.yml
@@ -14,6 +14,12 @@ nl:
         text_html: Optioneel. Je kunt voor toots specifieke tekst gebruiken. Om tijd te besparen kun je <a href="%{path}">voorinstellingen van waarschuwingen toevoegen</a>
         type_html: Kies wat er met <strong>%{acct}</strong> moet gebeuren
         warning_preset_id: Optioneel. Je kunt nog steeds handmatig tekst toevoegen aan het eind van de voorinstelling
+      announcement:
+        all_day: Wanneer dit is aangevinkt worden alleen de datums binnen het tijdvak getoond
+        ends_at: Optioneel. De publicatie van de mededeling wordt op dit tijdstip automatisch beëindigd
+        scheduled_at: Laat leeg om de mededeling meteen te publiceren
+        starts_at: Optioneel. In het geval dat jouw mededeling aan een bepaald tijdvak is gebonden
+        text: Je kunt voor toots specifieke tekst gebruiken. Let op de ruimte die de mededeling op het scherm van de gebruiker inneemt
       defaults:
         autofollow: Mensen die zich via de uitnodiging hebben geregistreerd, volgen jou automatisch
         avatar: PNG, GIF of JPG. Maximaal %{size}. Wordt teruggeschaald naar %{dimensions}px
@@ -83,6 +89,12 @@ nl:
           silence: Negeren
           suspend: Opschorten en onomkeerbaar accountgegevens verwijderen
         warning_preset_id: Gebruik een voorinstelling van een waarschuwing
+      announcement:
+        all_day: Gedurende de hele dag
+        ends_at: Eindigt
+        scheduled_at: Mededeling inplannen
+        starts_at: Begint
+        text: Mededeling
       defaults:
         autofollow: Uitnodigen om jouw account te volgen
         avatar: Avatar
diff --git a/config/locales/simple_form.oc.yml b/config/locales/simple_form.oc.yml
index e692d2d64..b7495c56d 100644
--- a/config/locales/simple_form.oc.yml
+++ b/config/locales/simple_form.oc.yml
@@ -14,6 +14,12 @@ oc:
         text_html: Opcional. Podètz utilizar la sintaxi dels tuts. Podètz <a href="%{path}">ajustar un avertiment personalizat</a> per estalviar de temps
         type_html: Causir de qué far amb <strong>%{acct}</strong>
         warning_preset_id: Opcional. Podètz ajustar un tèxt personalizat a a fin de çò predefinit
+      announcement:
+        all_day: Se son marcadas, solament las datas de l’interval de temps seràn mostrada
+        ends_at: Opcional. L’anóncia serà automaticament tirada a aqueste moment
+        scheduled_at: Daissar void per publicar l’anóncia immediatament
+        starts_at: Opcional. Se per cas vòstra anóncia es ligada a un interval de temps especific
+        text: Podètz utilizar la sintaxi dels tuts. Gardatz al cap qu’aquesta anóncia ocuparà la fenèstra de l’utilizaire
       defaults:
         autofollow: Lo monde que se marcan gràcia a l’invitacion vos segràn automaticament
         avatar: PNG, GIF o JPG. Maximum %{size}. Serà retalhat en %{dimensions}px
@@ -83,6 +89,12 @@ oc:
           silence: Metre en silence
           suspend: Suspendre e escafar per de bon las donadas del compte
         warning_preset_id: Utilizar un avertiment predefinit
+      announcement:
+        all_day: Eveniment tota la jornada
+        ends_at: Fin de l’eveniment
+        scheduled_at: Publicacions programadas
+        starts_at: Debuta de l’eveniment
+        text: Anóncia
       defaults:
         autofollow: Convidar a sègre vòstre compte
         avatar: Avatar
diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml
index d3d726440..c985badb4 100644
--- a/config/locales/simple_form.pl.yml
+++ b/config/locales/simple_form.pl.yml
@@ -39,12 +39,16 @@ pl:
         whole_word: Jeśli słowo lub fraza składa się jedynie z liter lub cyfr, filtr będzie zastosowany tylko do pełnych wystąpień
       featured_tag:
         name: 'Sugerujemy użycie jednego z następujących:'
+      form_challenge:
+        current_password: Wchodzisz w strefę bezpieczną
       imports:
         data: Plik CSV wyeksportowany z innego serwera Mastodona
       invite_request:
         text: To pomoże nam w recenzji Twojej aplikacji
       sessions:
         otp: 'Wprowadź kod weryfikacji dwuetapowej z telefonu lub wykorzystaj jeden z kodów zapasowych:'
+      tag:
+        name: Możesz zmieniać tylko wielkość liter, np. aby były bardziej widoczne
       user:
         chosen_languages: Jeżeli zaznaczone, tylko wpisy w wybranych językach będą wyświetlane na publicznych osiach czasu
     labels:
@@ -52,9 +56,14 @@ pl:
         fields:
           name: Nazwa
           value: Zawartość
+      account_alias:
+        acct: Nazwa starego konta
+      account_migration:
+        acct: Nazwa nowego konta
       account_warning_preset:
         text: Tekst szablonu
       admin_account_action:
+        include_statuses: Uwzględniaj zgłoszone wpisy w wiadomości e-mail
         send_email_notification: Powiadom użytkownika mailem
         text: Niestandardowe ostrzeżenie
         type: Działanie
@@ -64,6 +73,12 @@ pl:
           silence: Wycisz
           suspend: Zawieś i nieodwracalnie usuń dane konta
         warning_preset_id: Użyj szablonu ostrzeżenia
+      announcement:
+        all_day: Wydarzenie całodniowe
+        ends_at: Koniec wydarzenia
+        scheduled_at: Zaplanuj publikację
+        starts_at: Początek wydarzenia
+        text: Ogłoszenie
       defaults:
         autofollow: Zapraszaj do śledzenia swojego konta
         avatar: Awatar
@@ -94,6 +109,7 @@ pl:
         setting_aggregate_reblogs: Grupuj podbicia na osiach czasu
         setting_auto_play_gif: Automatycznie odtwarzaj animowane GIFy
         setting_boost_modal: Pytaj o potwierdzenie przed podbiciem
+        setting_crop_images: Przycinaj obrazki w nierozwiniętych wpisach do 16x9
         setting_default_language: Język wpisów
         setting_default_privacy: Widoczność wpisów
         setting_default_sensitive: Zawsze oznaczaj zawartość multimedialną jako wrażliwą
@@ -110,8 +126,11 @@ pl:
         setting_show_application: Informuj o aplikacji z której wysłano wpisy
         setting_skin: Motyw
         setting_system_font_ui: Używaj domyślnej czcionki systemu
+        setting_theme: Motyw strony
+        setting_trends: Pokazuj dzisiejsze „Na czasie”
         setting_unfollow_modal: Pytaj o potwierdzenie przed cofnięciem śledzenia
         setting_use_blurhash: Pokazuj kolorowe gradienty dla ukrytej zawartości multimedialnej
+        setting_use_pending_items: Tryb spowolniony
         severity: Priorytet
         type: Importowane dane
         username: Nazwa użytkownika
@@ -123,6 +142,8 @@ pl:
         must_be_follower: Nie wyświetlaj powiadomień od osób, które Cię nie śledzą
         must_be_following: Nie wyświetlaj powiadomień od osób, których nie śledzisz
         must_be_following_dm: Nie wyświetlaj wiadomości bezpośrednich od osób, których nie śledzisz
+      invite:
+        comment: Komentarz
       invite_request:
         text: Czemu chcesz dołączyć?
       notification_emails:
@@ -134,6 +155,12 @@ pl:
         pending_account: Wyślij e-mail kiedy nowe konto potrzebuje recenzji
         reblog: Powiadamiaj mnie e-mailem, gdy ktoś podbije mój wpis
         report: Powiadamiaj mnie e-mailem, gdy zostanie utworzone nowe zgłoszenie
+        trending_tag: Nieprzejrzany hashtag jest na czasie
+      tag:
+        listable: Pozwól, aby ten hashtag pojawiał się w wynikach wyszukiwania i katalogu profilów
+        name: Hashtag
+        trendable: Pozwól na wyświetlanie tego hashtagu w „Na czasie”
+        usable: Pozwól na umieszczanie tego hashtagu we wpisach
     'no': Nie
     recommended: Polecane
     required:
diff --git a/config/locales/simple_form.pt-BR.yml b/config/locales/simple_form.pt-BR.yml
index 9e557383c..503b48d83 100644
--- a/config/locales/simple_form.pt-BR.yml
+++ b/config/locales/simple_form.pt-BR.yml
@@ -14,6 +14,12 @@ pt-BR:
         text_html: Opcional. Você pode usar a sintaxe do toot e também pode <a href="%{path}">adicionar avisos pré-definidos</a> para poupar tempo
         type_html: Decida o que fazer com <strong>%{acct}</strong>
         warning_preset_id: Opcional. Você ainda pode adicionar texto personalizado no final do aviso pré-definido
+      announcement:
+        all_day: Quando marcado, apenas as datas do período serão exibidas
+        ends_at: Opcional. O anúncio será automaticamente não publicado no momento
+        scheduled_at: Deixe em branco para publicar o anúncio imediatamente
+        starts_at: Opcional. Caso seu anúncio esteja vinculado a um período específico
+        text: Você pode usar a sintaxe toot. Esteja ciente do espaço que o anúncio ocupará na tela do usuário
       defaults:
         autofollow: Pessoas que criarem conta através de seu convite te seguirão automaticamente
         avatar: PNG, GIF or JPG. Arquivos de até %{size}. Serão redimensionados para %{dimensions}px
@@ -83,6 +89,12 @@ pt-BR:
           silence: Silenciar
           suspend: Banir e excluir irreversivelmente dados da conta
         warning_preset_id: Usar um aviso pré-definido
+      announcement:
+        all_day: Evento o dia inteiro
+        ends_at: Fim do evento
+        scheduled_at: Agendar publicação
+        starts_at: Início do evento
+        text: Anúncio
       defaults:
         autofollow: Convite para seguir a sua conta
         avatar: Imagem de perfil
diff --git a/config/locales/simple_form.pt-PT.yml b/config/locales/simple_form.pt-PT.yml
index 4a4437e76..f346005f7 100644
--- a/config/locales/simple_form.pt-PT.yml
+++ b/config/locales/simple_form.pt-PT.yml
@@ -14,6 +14,12 @@ pt-PT:
         text_html: Opcional. Tu podes usar sintaxe de escrita. Tu podes <a href="%{path}"> adicionar predefinições de aviso</a> para poupar tempo
         type_html: Escolhe o que fazer com <strong>%{acct}</strong>
         warning_preset_id: Opcional. Tu ainda podes adicionar texto personalizado no fim do predefinido
+      announcement:
+        all_day: Quando marcado, apenas as datas do intervalo de tempo serão exibidas
+        ends_at: Opcional. O anúncio será automaticamente retirado de exibição neste momento
+        scheduled_at: Deixe em branco para publicar o anúncio imediatamente
+        starts_at: Opcional. Caso o seu anúncio seja vinculado a um intervalo de tempo específico
+        text: Pode utilizar a sintaxe dos toot. Por favor, tenha em consideração o espaço que o anúncio ocupará no ecrã do utilizador
       defaults:
         autofollow: As pessoas que aderem através do convite seguir-te-ão automaticamente
         avatar: PNG, GIF or JPG. Arquivos até %{size}. Vão ser reduzidos para %{dimensions}px
@@ -83,6 +89,12 @@ pt-PT:
           silence: Silenciar
           suspend: Suspender e apagar irreversivelmente os dados da conta
         warning_preset_id: Usar um aviso pré-definido
+      announcement:
+        all_day: Evento de dia inteiro
+        ends_at: Fim do evento
+        scheduled_at: Agendar publicação
+        starts_at: Início do evento
+        text: Anúncio
       defaults:
         autofollow: Convidar para seguir a tua conta
         avatar: Imagem de Perfil
diff --git a/config/locales/simple_form.ta.yml b/config/locales/simple_form.ta.yml
index edf731690..bac29f158 100644
--- a/config/locales/simple_form.ta.yml
+++ b/config/locales/simple_form.ta.yml
@@ -8,6 +8,11 @@ ta:
         acct: நீங்கள் இங்கே நகர்த்த விரும்பும் கணக்கின் பயனர் பெயர் username@domain
       admin_account_action:
         send_email_notification: தங்கள் கணக்கிற்கு என்ன நேர்ந்தது என்ற விவரம் பயனரால் பெறப்படும்
+      announcement:
+        all_day: இதனைத் தேர்வு செய்தால், கால வரையறையில் நாட்கள் மட்டுமே தெரியும்
+        ends_at: கட்டாயமில்லை. அறிவிப்பு இந்த நேரத்தில் தானாகவே நீக்கப்பட
+        scheduled_at: அறிவிப்பை உடனே வெளியிட இவ்விடத்தை வெறுமையாக விடவும்
+        starts_at: கட்டாயமில்லை. உங்கள் அறிவிப்பு ஒரு குறிப்பிட்ட நேரத்தில் வெளியாக வேண்டுமெனில் மட்டும்
       defaults:
         autofollow: அழைப்பின் வாயிலாக புதிய கணக்கை துவங்குவோர் தாமாகவே உங்களை பின்தொடர்வர்
         avatar: PNG, GIF or JPG. அதிகபட்சம் %{size}, %{dimensions}px க்கு குறைக்கப்படும்
@@ -27,6 +32,12 @@ ta:
           disable: உள்நுழைவை முடக்கு
           none: எதுவும் செய்யாதே
           silence: சைலன்ஸ்
+      announcement:
+        all_day: முழு நாள் நிகழ்வு
+        ends_at: நிகழ்வின் முடிவு
+        scheduled_at: வெளியிடும் நேரத்தைத் திட்டமிடு
+        starts_at: நிகழ்வின் துவக்கம்
+        text: அறிவிப்பு
       defaults:
         avatar: அவதார்
         bot: இது ஒரு போட்(bot) கணக்கு
diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml
index 074a3ad41..33a255e8d 100644
--- a/config/locales/simple_form.th.yml
+++ b/config/locales/simple_form.th.yml
@@ -14,6 +14,12 @@ th:
         text_html: ตัวเลือกเพิ่มเติม คุณสามารถใช้ไวยากรณ์โพสต์ คุณสามารถ <a href="%{path}">เพิ่มคำเตือนที่ตั้งไว้ล่วงหน้า</a> เพื่อประหยัดเวลา
         type_html: เลือกสิ่งที่จะทำกับ <strong>%{acct}</strong>
         warning_preset_id: ตัวเลือกเพิ่มเติม คุณยังสามารถเพิ่มข้อความที่กำหนดเองที่จุดสิ้นสุดของค่าที่ตั้งไว้ล่วงหน้า
+      announcement:
+        all_day: เมื่อกาเครื่องหมาย จะแสดงเฉพาะวันที่ของช่วงเวลาเท่านั้น
+        ends_at: ตัวเลือกเพิ่มเติม จะเลิกเผยแพร่ประกาศที่เวลานี้โดยอัตโนมัติ
+        scheduled_at: เว้นว่างไว้เพื่อเผยแพร่ประกาศทันที
+        starts_at: ตัวเลือกเพิ่มเติม ในกรณีที่ประกาศของคุณผูกไว้กับช่วงเวลาที่เจาะจง
+        text: คุณสามารถใช้ไวยากรณ์โพสต์ โปรดระวังพื้นที่ที่ประกาศจะใช้ในหน้าจอของผู้ใช้
       defaults:
         autofollow: ผู้คนที่ลงทะเบียนผ่านคำเชิญจะติดตามคุณโดยอัตโนมัติ
         avatar: PNG, GIF หรือ JPG สูงสุด %{size} จะถูกย่อขนาดเป็น %{dimensions}px
@@ -60,7 +66,7 @@ th:
       tag:
         name: คุณสามารถเปลี่ยนได้เฉพาะตัวพิมพ์ใหญ่เล็กของตัวอักษรเท่านั้น ตัวอย่างเช่น เพื่อทำให้ตัวอักษรอ่านได้ง่ายขึ้น
       user:
-        chosen_languages: เมื่อกาเครื่องหมาย จะแสดงเฉพาะโพสต์ในภาษาที่เลือกในเส้นเวลาสาธารณะ
+        chosen_languages: เมื่อกาเครื่องหมาย จะแสดงเฉพาะโพสต์ในภาษาที่เลือกในเส้นเวลาสาธารณะเท่านั้น
     labels:
       account:
         fields:
@@ -84,6 +90,10 @@ th:
           suspend: ระงับและลบข้อมูลบัญชีอย่างถาวร
         warning_preset_id: ใช้คำเตือนที่ตั้งไว้ล่วงหน้า
       announcement:
+        all_day: เหตุการณ์ตลอดทั้งวัน
+        ends_at: การสิ้นสุดเหตุการณ์
+        scheduled_at: จัดกำหนดการเผยแพร่
+        starts_at: การเริ่มต้นเหตุการณ์
         text: ประกาศ
       defaults:
         autofollow: เชิญให้ติดตามบัญชีของคุณ
diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml
index 62bc6b2f7..1a7b7de99 100644
--- a/config/locales/simple_form.zh-CN.yml
+++ b/config/locales/simple_form.zh-CN.yml
@@ -14,6 +14,12 @@ zh-CN:
         text_html: 可选。你可以使用嘟文格式。你可以<a href="%{path}">预置警告</a>以节省时间
         type_html: 用<strong>%{acct}</strong>选择做什么
         warning_preset_id: 可选。你可以在预置文本末尾添加自定义文本
+      announcement:
+        all_day: 如果选中,只有该时间段内的日期会显示。
+        ends_at: 可选。公告会在该时间点自动取消发布
+        scheduled_at: 留空的话,公告会立即发布。
+        starts_at: 可选。你可以让你的公告只在特定时间段显示。
+        text: 你可以使用嘟文格式。但是请注意不要让公告占据太多用户屏幕上的空间。
       defaults:
         autofollow: 通过邀请链接注册的用户将会自动关注你
         avatar: 文件大小限制 %{size},只支持 PNG、GIF 或 JPG 格式。图片分辨率将会压缩至 %{dimensions}px
@@ -83,6 +89,12 @@ zh-CN:
           silence: 静音
           suspend: 停用并永久删除账号数据
         warning_preset_id: 使用预置警告
+      announcement:
+        all_day: 全天事件
+        ends_at: 事件结束
+        scheduled_at: 定时发布
+        starts_at: 事件开始
+        text: 公告
       defaults:
         autofollow: 让被邀请人关注你的帐户
         avatar: 头像
diff --git a/config/locales/sk.yml b/config/locales/sk.yml
index cd3ef0390..dbee6bb12 100644
--- a/config/locales/sk.yml
+++ b/config/locales/sk.yml
@@ -235,12 +235,15 @@ sk:
       deleted_status: "(zmazaný príspevok)"
       title: Kontrólny záznam
     announcements:
+      destroyed_msg: Oboznámenie úspešne vymazané!
+      edit:
+        title: Uprav oboznámenie
+      empty: Žiadne oboznámenia nenájdené.
       live: Naživo
       new:
         create: Vytvor oznam
         title: Nové oznámenie
-      published: Zverejnený
-      time_range: Časový rozsah
+      published_msg: Oboznámenie úspešne zverejnené!
       title: Oboznámenia
     custom_emojis:
       assign_category: Priraď kategóriu
@@ -354,6 +357,7 @@ sk:
       delete: Vymaž
       destroyed_msg: Emailová doména bola úspešne vymazaná zo zoznamu zakázaných
       domain: Doména
+      empty: Žiadné emailové domény niesú v súčasnosti na čiernej listine.
       new:
         create: Pridaj doménu
         title: Nový email na zablokovanie
@@ -388,6 +392,8 @@ sk:
       title: Pozvánky
     pending_accounts:
       title: Čakajúcich účtov (%{count})
+    relationships:
+      title: Vzťahy užívateľa %{acct}
     relays:
       add_new: Pridaj nový federovací mostík
       delete: Vymaž
@@ -464,6 +470,8 @@ sk:
         users: Prihláseným, miestnym užívateľom
       domain_blocks_rationale:
         title: Ukáž zdôvodnenie
+      enable_bootstrap_timeline_accounts:
+        title: Novým užívateľom povoľ východiskové následovania
       hero:
         desc_html: Zobrazuje sa na hlavnej stránke. Doporučené je rozlišenie aspoň 600x100px. Pokiaľ nič nieje dodané, bude nastavený základný orázok serveru.
         title: Obrázok hrdinu
@@ -591,6 +599,7 @@ sk:
     confirmation_dialogs: Potvrdzovacie dialógy
     discovery: Nájdenie
     localization:
+      body: Mastodon je prekladaný dobrovoľníkmi.
       guide_link_text: Prispievať môže každý.
     sensitive_content: Chúlostivý obsah
     toot_layout: Rozloženie príspevkov
@@ -935,6 +944,7 @@ sk:
     dormant: Spiace
     followers: Následovatelia
     following: Následovaní
+    invited: Pozvaný/á
     last_active: Naposledy aktívny
     most_recent: Najnovšie
     moved: Presunuli sa
diff --git a/config/locales/ta.yml b/config/locales/ta.yml
index 71bf225d8..c3da99c48 100644
--- a/config/locales/ta.yml
+++ b/config/locales/ta.yml
@@ -162,6 +162,26 @@ ta:
       username: பயனர் பெயர்
       warn: எச்சரி
       whitelisted: அனுமதிப்பட்டியல்
+    action_logs:
+      actions:
+        create_announcement: "%{name} %{target} என்றொரு புதிய அறிவிப்பை உருவாக்கியிருக்கிறார்"
+        destroy_announcement: "%{name} %{target} அறிவிப்பை நீக்கிவிட்டார்"
+        update_announcement: "%{name} %{target} அறிவிப்பைப் புதுப்பித்துள்ளார்"
+    announcements:
+      destroyed_msg: அறிவிப்பு வெற்றிகரமாக நீக்கப்பட்டது!
+      edit:
+        title: அறிவிப்பைத் திருத்து
+      empty: அறிவிப்புகள் ஏதும் இல்லை.
+      live: நேரலை
+      new:
+        create: அறிவிப்பை உருவாக்கு
+        title: புதிய அறிவிப்பு
+      published_msg: அறிவிப்பு வெற்றிகரமாகப் பதியப்பட்டது!
+      scheduled_for: "%{time} மணிக்குப் பதியப்படும்"
+      scheduled_msg: அறிவிப்பு, குறித்த நேரத்தில் பதியப்படும்!
+      title: அறிவிப்புகள்
+      unpublished_msg: அறிவிப்பு வெற்றிகரமாகத் திரும்பப் பெறப்பட்டது!
+      updated_msg: அறிவிப்பு வெற்றிகரமாகத் திருத்தப்பட்டது!
     custom_emojis:
       uncategorized: வகைப்படுத்தப்படாதவை
       unlist: பட்டியலில் இருந்து அகற்றுக
@@ -205,6 +225,9 @@ ta:
     localization:
       body: மாஸ்டோடான் தன்னார்வலர்களால் மொழிபெயர்க்கப்படுகிறது.
       guide_link_text: அனைவரும் பங்களிக்கலாம்.
+  date:
+    formats:
+      default: "%b %d, %Y"
   errors:
     '400': The request you submitted was invalid or malformed.
     '403': You don't have permission to view this page.
@@ -218,6 +241,8 @@ ta:
   filters:
     index:
       empty: தடுப்புகள் ஏதும் இல்லை.
+  generic:
+    delete: நீக்கு
   invites:
     expires_in:
       '1800': 30 minutes
@@ -233,3 +258,9 @@ ta:
   polls:
     errors:
       invalid_choice: நீங்கள் தேர்வு செய்த விருப்பம் கிடைக்கவில்லை
+  reactions:
+    errors:
+      limit_reached: எதிர்வினைகளுக்கான உச்சவரம்பு எட்டப்பட்டது
+      unrecognized_emoji: அங்கீகரிக்கப்பட்ட ஈமோஜி அல்ல
+  statuses:
+    show_thread: தொடரைக் காட்டு
diff --git a/config/locales/th.yml b/config/locales/th.yml
index 39664aec9..7d6ec0b13 100644
--- a/config/locales/th.yml
+++ b/config/locales/th.yml
@@ -209,6 +209,7 @@ th:
       deleted_status: "(สถานะที่ลบแล้ว)"
       title: รายการบันทึกการตรวจสอบ
     announcements:
+      destroyed_msg: ลบประกาศสำเร็จ!
       edit:
         title: แก้ไขประกาศ
       empty: ไม่พบประกาศ
@@ -216,9 +217,12 @@ th:
       new:
         create: สร้างประกาศ
         title: ประกาศใหม่
-      published: เผยแพร่เมื่อ
-      time_range: ช่วงเวลา
+      published_msg: เผยแพร่ประกาศสำเร็จ!
+      scheduled_for: จัดกำหนดไว้สำหรับ %{time}
+      scheduled_msg: จัดกำหนดการเผยแพร่ประกาศแล้ว!
       title: ประกาศ
+      unpublished_msg: เลิกเผยแพร่ประกาศสำเร็จ!
+      updated_msg: อัปเดตประกาศสำเร็จ!
     custom_emojis:
       assign_category: กำหนดหมวดหมู่
       by_domain: โดเมน
@@ -644,7 +648,6 @@ th:
     changes_saved_msg: บันทึกการเปลี่ยนแปลงสำเร็จ!
     copy: คัดลอก
     delete: ลบ
-    edit: แก้ไข
     order_by: เรียงลำดับตาม
     save_changes: บันทึกการเปลี่ยนแปลง
   html_validator:
@@ -653,6 +656,7 @@ th:
     active: ใช้งานอยู่
     authorize: ใช่ อนุญาต
     inactive: ไม่ได้ใช้งาน
+    publicize_checkbox: 'และโพสต์สิ่งนี้:'
     status: สถานะการตรวจสอบ
   imports:
     modes:
@@ -779,6 +783,8 @@ th:
     reply:
       proceed: ดำเนินการต่อเพื่อตอบกลับ
       prompt: 'คุณต้องการตอบกลับโพสต์นี้:'
+  scheduled_statuses:
+    too_soon: วันที่ตามกำหนดการต้องอยู่ในอนาคต
   sessions:
     activity: กิจกรรมล่าสุด
     browser: เบราว์เซอร์
@@ -861,6 +867,7 @@ th:
         other: "%{count} การลงคะแนน"
       vote: ลงคะแนน
     show_more: แสดงเพิ่มเติม
+    show_thread: แสดงกระทู้
     sign_in_to_participate: ลงชื่อเข้าเพื่อเข้าร่วมการสนทนา
     title: '%{name}: "%{quote}"'
     visibilities:
diff --git a/config/locales/tr.yml b/config/locales/tr.yml
index 773117369..cde7f1c83 100644
--- a/config/locales/tr.yml
+++ b/config/locales/tr.yml
@@ -232,6 +232,7 @@ tr:
       deleted_status: "(silinmiş durum)"
       title: Denetim günlüğü
     announcements:
+      destroyed_msg: Duyuru başarıyla silindi!
       edit:
         title: Duyuruyu düzenle
       empty: Duyuru bulunamadı.
@@ -239,9 +240,12 @@ tr:
       new:
         create: Duyuru oluştur
         title: Yeni duyuru
-      published: Yayınlanan
-      time_range: Zaman aralığı
+      published_msg: Duyuru başarıyla yayınlandı!
+      scheduled_for: "%{time} için zamanlandı"
+      scheduled_msg: Duyuru yayınlanmak üzere planlandı!
       title: Duyurular
+      unpublished_msg: Duyuru başarıyla yayından kaldırıldı!
+      updated_msg: Duyuru başarıyla güncellendi!
     custom_emojis:
       assign_category: Kategori ata
       by_domain: Alan adı
@@ -776,7 +780,6 @@ tr:
     changes_saved_msg: Değişiklikler başarıyla kaydedildi!
     copy: Kopyala
     delete: Sil
-    edit: Düzenle
     no_batch_actions_available: Bu sayfada toplu işlem yok
     order_by: Sıralama ölçütü
     save_changes: Değişiklikleri kaydet
@@ -1084,6 +1087,7 @@ tr:
         other: "%{count} oy"
       vote: Oy
     show_more: Daha fazla
+    show_thread: Mesaj dizisini göster
     sign_in_to_participate: Sohbete katılmak için oturum açın
     title: '%{name}: "%{quote}"'
     visibilities:
diff --git a/config/locales/uk.yml b/config/locales/uk.yml
index 34bf41a15..967a02717 100644
--- a/config/locales/uk.yml
+++ b/config/locales/uk.yml
@@ -240,6 +240,7 @@ uk:
       deleted_status: "(видалений статус)"
       title: Журнал подій
     announcements:
+      destroyed_msg: Оголошення успішно видалено!
       edit:
         title: Редагувати оголошення
       empty: Оголошення не знайдені.
@@ -247,9 +248,12 @@ uk:
       new:
         create: Створити оголошення
         title: Нове оголошення
-      published: Опубліковане
-      time_range: Діапазон часу
+      published_msg: Оголошення успішно опубліковано!
+      scheduled_for: Заплановано на %{time}
+      scheduled_msg: Оголошення додано в чергу публікації!
       title: Оголошення
+      unpublished_msg: Оголошення успішно приховано!
+      updated_msg: Оголошення успішно оновлено!
     custom_emojis:
       assign_category: Призначити категорію
       by_domain: Домен
@@ -794,7 +798,6 @@ uk:
     changes_saved_msg: Зміни успішно збережені!
     copy: Копіювати
     delete: Видалити
-    edit: Змінити
     no_batch_actions_available: На цій сторінці немає запланованих дій
     order_by: Сортувати за
     save_changes: Зберегти зміни
@@ -976,6 +979,7 @@ uk:
     public_timelines: Глобальні стрічки
   reactions:
     errors:
+      limit_reached: Досягнуто обмеження різних реакцій
       unrecognized_emoji: не є розпізнаним емоджі
   relationships:
     activity: Діяльність облікового запису
@@ -1119,6 +1123,7 @@ uk:
         other: "%{count} голоси"
       vote: Проголосувати
     show_more: Детальніше
+    show_thread: Відкрити обговорення
     sign_in_to_participate: Увійдіть, щоб брати участь у бесіді
     title: '%{name}: "%{quote}"'
     visibilities:
diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml
index 21b0ecf78..d6618dbbe 100644
--- a/config/locales/zh-CN.yml
+++ b/config/locales/zh-CN.yml
@@ -194,11 +194,13 @@ zh-CN:
         change_email_user: "%{name} 更改了用户 %{target} 的电子邮件地址"
         confirm_user: "%{name} 确认了用户 %{target} 的电子邮件地址"
         create_account_warning: "%{name} 向 %{target} 发送了警告"
+        create_announcement: "%{name} 创建了新公告 %{target}"
         create_custom_emoji: "%{name} 添加了新的自定义表情 %{target}"
         create_domain_allow: "%{name} 添加了对域名 %{target} 的白名单。"
         create_domain_block: "%{name} 屏蔽了域名 %{target}"
         create_email_domain_block: "%{name} 屏蔽了电子邮件域名 %{target}"
         demote_user: "%{name} 对用户 %{target} 进行了降任操作"
+        destroy_announcement: "%{name} 删除了公告 %{target}"
         destroy_custom_emoji: "%{name} 销毁了自定义表情 %{target}"
         destroy_domain_allow: "%{name} 从白名单中移除了域名 %{target}"
         destroy_domain_block: "%{name} 解除了对域名 %{target} 的屏蔽"
@@ -220,10 +222,26 @@ zh-CN:
         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: "(嘟文已删除)"
       title: 运营日志
+    announcements:
+      destroyed_msg: 公告已删除!
+      edit:
+        title: 编辑公告
+      empty: 尚未发布任何公告。
+      live: 当前
+      new:
+        create: 创建公告
+        title: 新公告
+      published_msg: 公告已发布!
+      scheduled_for: 定时在 %{time}
+      scheduled_msg: 定时公告已创建!
+      title: 公告
+      unpublished_msg: 公告已取消发布!
+      updated_msg: 公告已成功更新!
     custom_emojis:
       assign_category: 指定分类
       by_domain: 域名
@@ -334,6 +352,7 @@ zh-CN:
       delete: 删除
       destroyed_msg: 电子邮件域名屏蔽删除成功
       domain: 域名
+      empty: 当前没有邮件域名黑名单。
       new:
         create: 添加域名
         title: 添加电子邮件域名屏蔽
@@ -365,6 +384,8 @@ zh-CN:
       title: 邀请用户
     pending_accounts:
       title: 待处理的帐户 (%{count})
+    relationships:
+      title: "%{acct} 的关系"
     relays:
       add_new: 订阅新的中继
       delete: 删除
@@ -571,7 +592,7 @@ zh-CN:
     confirmation_dialogs: 确认对话框
     discovery: 发现
     localization:
-      body: Mastdown 由志愿者翻译。
+      body: Mastodon 由志愿者翻译。
       guide_link: https://crowdin.com/project/mastodon
       guide_link_text: 每个人都可以参与翻译。
     sensitive_content: 敏感内容
@@ -646,6 +667,9 @@ zh-CN:
     hint_html: "<strong>注意:</strong>接下来一小时内我们不会再次要求您输入密码。"
     invalid_password: 无效密码
     prompt: 确认密码以继续
+  date:
+    formats:
+      default: "%Y年%m月%d日"
   datetime:
     distance_in_words:
       about_x_hours: "%{count}时"
@@ -722,6 +746,7 @@ zh-CN:
     hint_html: "<strong>什么是精选话题标签?</strong> 它们被显示在您的公开个人资料中的突出位置,人们可以在这些标签下浏览您的公共嘟文。 它们是跟踪创作或长期项目的进度的重要工具。"
   filters:
     contexts:
+      account: 个人资料
       home: 主页时间轴
       notifications: 通知
       public: 公共时间轴
@@ -733,6 +758,7 @@ zh-CN:
       invalid_irreversible: 此功能只适用于主页时间轴或通知
     index:
       delete: 删除
+      empty: 您没有过滤器。
       title: 过滤器
     new:
       title: 添加新的过滤器
@@ -745,6 +771,7 @@ zh-CN:
     all: 全部
     changes_saved_msg: 更改保存成功!
     copy: 复制
+    delete: 删除
     no_batch_actions_available: 本页面无可用批量操作
     order_by: 排序方式
     save_changes: 保存更改
@@ -904,6 +931,7 @@ zh-CN:
       duration_too_long: 持续时间过长
       duration_too_short: 持续时间过短
       expired: 投票已经结束
+      invalid_choice: 被选中的投票选项不存在
       over_character_limit: 每条不能超过 %{max} 个字符
       too_few_options: 至少需要两个选项
       too_many_options: 不能超过 %{max} 项
@@ -911,11 +939,16 @@ zh-CN:
     other: 其他
     posting_defaults: 发布默认值
     public_timelines: 公共时间轴
+  reactions:
+    errors:
+      limit_reached: 互动种类的限制
+      unrecognized_emoji: 不是一个可识别的表情
   relationships:
     activity: 帐号活动
     dormant: 休眠
     followers: 关注者
     following: 正在关注
+    invited: 已邀请
     last_active: 最近活动
     most_recent: 最近的
     moved: 已迁移
@@ -1037,6 +1070,7 @@ zh-CN:
         other: "%{count} 票"
       vote: 投票
     show_more: 显示更多
+    show_thread: 显示全部对话
     sign_in_to_participate: 登录以加入对话
     title: "%{name}:“%{quote}”"
     visibilities:
diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb
index 4a56470d0..c3e288eee 100644
--- a/lib/mastodon/version.rb
+++ b/lib/mastodon/version.rb
@@ -17,7 +17,7 @@ module Mastodon
     end
 
     def flags
-      'rc2'
+      ''
     end
 
     def suffix
diff --git a/spec/controllers/concerns/signature_verification_spec.rb b/spec/controllers/concerns/signature_verification_spec.rb
index 1fa19f54d..05fb1445b 100644
--- a/spec/controllers/concerns/signature_verification_spec.rb
+++ b/spec/controllers/concerns/signature_verification_spec.rb
@@ -97,6 +97,33 @@ describe ApplicationController, type: :controller do
       end
     end
 
+    context 'with inaccessible key' do
+      before do
+        get :success
+
+        author = Fabricate(:account, domain: 'localhost:5000', uri: 'http://localhost:5000/actor')
+        fake_request = Request.new(:get, request.url)
+        fake_request.on_behalf_of(author)
+        author.destroy
+
+        request.headers.merge!(fake_request.headers)
+
+        stub_request(:get, 'http://localhost:5000/actor#main-key').to_raise(Mastodon::HostValidationError)
+      end
+
+      describe '#signed_request?' do
+        it 'returns true' do
+          expect(controller.signed_request?).to be true
+        end
+      end
+
+      describe '#signed_request_account' do
+        it 'returns nil' do
+          expect(controller.signed_request_account).to be_nil
+        end
+      end
+    end
+
     context 'with body' do
       before do
         post :success, body: 'Hello world'
diff --git a/spec/controllers/health_check_controller_spec.rb b/spec/controllers/health_check_controller_spec.rb
new file mode 100644
index 000000000..c00600c9b
--- /dev/null
+++ b/spec/controllers/health_check_controller_spec.rb
@@ -0,0 +1,13 @@
+require 'rails_helper'
+
+describe HealthCheck::HealthCheckController do
+  render_views
+
+  describe 'GET #show' do
+    subject(:response) { get :index, params: { format: :json } }
+
+    it 'returns the right response' do
+      expect(response).to have_http_status 200
+    end
+  end
+end
diff --git a/spec/lib/sanitize_config_spec.rb b/spec/lib/sanitize_config_spec.rb
index c5143bcef..50558a0d8 100644
--- a/spec/lib/sanitize_config_spec.rb
+++ b/spec/lib/sanitize_config_spec.rb
@@ -14,5 +14,21 @@ describe Sanitize::Config do
     it 'keeps ul' do
       expect(Sanitize.fragment('<p>Check out:</p><ul><li>Foo</li><li>Bar</li></ul>', subject)).to eq '<p>Check out:</p><ul><li>Foo</li><li>Bar</li></ul>'
     end
+
+    it 'removes a without href' do
+      expect(Sanitize.fragment('<a>Test</a>', subject)).to eq 'Test'
+    end
+
+    it 'removes a without href and only keeps text content' do
+      expect(Sanitize.fragment('<a><span class="invisible">foo&amp;</span><span>Test</span></a>', subject)).to eq 'foo&amp;Test'
+    end
+
+    it 'removes a with unsupported scheme in href' do
+      expect(Sanitize.fragment('<a href="foo://bar">Test</a>', subject)).to eq 'Test'
+    end
+
+    it 'keeps a with href' do
+      expect(Sanitize.fragment('<a href="http://example.com">Test</a>', subject)).to eq '<a href="http://example.com" rel="nofollow noopener tag noreferrer" target="_blank">Test</a>'
+    end
   end
 end