about summary refs log tree commit diff
path: root/config
diff options
context:
space:
mode:
authorThibaut Girka <thib@sitedethib.com>2020-07-15 15:32:40 +0200
committerThibaut Girka <thib@sitedethib.com>2020-07-15 15:32:40 +0200
commit3f60b096b51b000905290d69ea05b874b60fa9e0 (patch)
tree0b8c7011810b4a97523c2c63816735e519f0682c /config
parent7a23347db5be3f262dbcafbecf768588dc648bda (diff)
parentd9cad44ca54374cafa0c97775083bb1bc0a5a3ce (diff)
Merge branch 'master' into glitch-soc/merge-upstream
Conflicts:
- `config/routes.rb`:
  Upstream disabled E2EE routes, which we did earlier, but slightly
  differently. Took upstream's version.
Diffstat (limited to 'config')
-rw-r--r--config/environments/production.rb1
-rw-r--r--config/locales/activerecord.ku.yml1
-rw-r--r--config/locales/activerecord.ml.yml5
-rw-r--r--config/locales/activerecord.ug.yml1
-rw-r--r--config/locales/ar.yml22
-rw-r--r--config/locales/bn.yml2
-rw-r--r--config/locales/co.yml3
-rw-r--r--config/locales/de.yml7
-rw-r--r--config/locales/devise.br.yml7
-rw-r--r--config/locales/devise.kab.yml35
-rw-r--r--config/locales/devise.ku.yml1
-rw-r--r--config/locales/devise.ug.yml1
-rw-r--r--config/locales/doorkeeper.ku.yml1
-rw-r--r--config/locales/doorkeeper.ml.yml9
-rw-r--r--config/locales/doorkeeper.ug.yml1
-rw-r--r--config/locales/doorkeeper.vi.yml2
-rw-r--r--config/locales/el.yml4
-rw-r--r--config/locales/en.yml4
-rw-r--r--config/locales/eo.yml5
-rw-r--r--config/locales/eu.yml2
-rw-r--r--config/locales/fa.yml6
-rw-r--r--config/locales/fr.yml32
-rw-r--r--config/locales/gl.yml2
-rw-r--r--config/locales/hu.yml2
-rw-r--r--config/locales/id.yml2
-rw-r--r--config/locales/ja.yml4
-rw-r--r--config/locales/kab.yml44
-rw-r--r--config/locales/ko.yml2
-rw-r--r--config/locales/ku.yml1
-rw-r--r--config/locales/nl.yml104
-rw-r--r--config/locales/no.yml2
-rw-r--r--config/locales/oc.yml2
-rw-r--r--config/locales/pt-BR.yml4
-rw-r--r--config/locales/simple_form.ar.yml5
-rw-r--r--config/locales/simple_form.hy.yml28
-rw-r--r--config/locales/simple_form.kab.yml4
-rw-r--r--config/locales/simple_form.ku.yml1
-rw-r--r--config/locales/simple_form.nl.yml8
-rw-r--r--config/locales/simple_form.tr.yml4
-rw-r--r--config/locales/simple_form.ug.yml1
-rw-r--r--config/locales/simple_form.uk.yml5
-rw-r--r--config/locales/simple_form.vi.yml26
-rw-r--r--config/locales/simple_form.zh-CN.yml4
-rw-r--r--config/locales/sv.yml2
-rw-r--r--config/locales/th.yml7
-rw-r--r--config/locales/tr.yml13
-rw-r--r--config/locales/ug.yml20
-rw-r--r--config/locales/uk.yml25
-rw-r--r--config/locales/vi.yml155
-rw-r--r--config/locales/zh-CN.yml50
-rw-r--r--config/routes.rb32
51 files changed, 531 insertions, 180 deletions
diff --git a/config/environments/production.rb b/config/environments/production.rb
index 00571a35a..c2e8210f8 100644
--- a/config/environments/production.rb
+++ b/config/environments/production.rb
@@ -99,6 +99,7 @@ Rails.application.configure do
     :openssl_verify_mode  => ENV['SMTP_OPENSSL_VERIFY_MODE'],
     :enable_starttls_auto => ENV['SMTP_ENABLE_STARTTLS_AUTO'] || true,
     :tls                  => ENV['SMTP_TLS'].presence,
+    :ssl                  => ENV['SMTP_SSL'].presence,
   }
 
   config.action_mailer.delivery_method = ENV.fetch('SMTP_DELIVERY_METHOD', 'smtp').to_sym
diff --git a/config/locales/activerecord.ku.yml b/config/locales/activerecord.ku.yml
new file mode 100644
index 000000000..cc251e86a
--- /dev/null
+++ b/config/locales/activerecord.ku.yml
@@ -0,0 +1 @@
+ckb-IR:
diff --git a/config/locales/activerecord.ml.yml b/config/locales/activerecord.ml.yml
index baecb9e82..fc30a81fc 100644
--- a/config/locales/activerecord.ml.yml
+++ b/config/locales/activerecord.ml.yml
@@ -4,9 +4,14 @@ ml:
     attributes:
       poll:
         expires_at: സമയപരിധി
+        options: ചോയ്‌സുകൾ
     errors:
       models:
         account:
           attributes:
             username:
               invalid: അക്ഷരങ്ങളും, അക്കങ്ങളും, പിന്നെ അടിവരയും മാത്രം
+        status:
+          attributes:
+            reblog:
+              taken: സ്റ്റാറ്റസ് ഇതിനകം നിലവിലുണ്ട്
diff --git a/config/locales/activerecord.ug.yml b/config/locales/activerecord.ug.yml
new file mode 100644
index 000000000..289acf241
--- /dev/null
+++ b/config/locales/activerecord.ug.yml
@@ -0,0 +1 @@
+ug:
diff --git a/config/locales/ar.yml b/config/locales/ar.yml
index c262f2d87..b82b030a3 100644
--- a/config/locales/ar.yml
+++ b/config/locales/ar.yml
@@ -41,7 +41,10 @@ ar:
       domain: الخادم
       reason: السبب
       rejecting_media: 'لن يتم معالجة أو تخزين ملفات الوسائط القادمة من هذه الخوادم، ولن يتم عرض أي صور مصغرة، مما يتطلب النقر اليدوي على الملف الأصلي:'
+      rejecting_media_title: وسائط مصفّاة
       silenced: 'سيتم إخفاء المنشورات القادمة من هذه الخوادم في الخيوط الزمنية والمحادثات العامة، ولن يتم إنشاء أي إخطارات من جراء تفاعلات مستخدميها، ما لم تُتَابعهم:'
+      silenced_title: الخوادم المكتومة
+      suspended: 'لن يتم معالجة أي بيانات قادمة من هذه الخوادم أو تخزينها أو تبادلها، مما سيجعل أي تفاعل أو اتصال مع المستخدمين والمستخدمات المنتمين إلى هذه الخوادم مستحيلة:'
     unavailable_content_html: يسمح لك ماستدون عموماً بعرض محتوى المستخدمين القادم من أي خادم آخر في الفديفرس والتفاعل معهم. وهذه هي الاستثناءات التي وضعت على هذا الخادوم بالذات.
     user_count_after:
       few: مستخدمين
@@ -639,6 +642,7 @@ ar:
       body_remote: أبلغ شخص ما من %{domain} عن %{target}
       subject: تقرير جديد ل%{instance} (#%{id})
     new_trending_tag:
+      body: 'الوسم #%{name} متداوَل اليوم، ولكن لم يتم مراجعته من قبل. لن يتم عرضه علنا إلا إذا سمحت بذلك، أو قم بحفظ هذه الإستمارة كما هي حتى تتجاهله مستقبَلًا.'
       subject: وسم جديد في انتظار المراجعة على %{instance} (#%{name})
   aliases:
     add_new: أنشئ كُنية
@@ -910,6 +914,7 @@ ar:
   media_attachments:
     validations:
       images_and_video: ليس بالإمكان إرفاق فيديو في منشور يحتوي مسبقا على صور
+      not_ready: لا يمكن إرفاق الملفات التي لم يتم معالجتها بعد. أعد المحاولة بعد لحظات!
       too_many: لا يمكن إرفاق أكثر من 4 ملفات
   migrations:
     acct: انتقل إلى
@@ -930,6 +935,7 @@ ar:
     on_cooldown: لقد قمت مؤخرا بترحيل حسابك. سيتاح هذا الإجراء مرة أخرى في غضون %{count} أيام.
     past_migrations: التهجيرات السابقة
     proceed_with_move: انقل مشارِكيك
+    redirected_msg: الآن، حسابك موجَّه إلى %{acct}.
     redirecting_to: حسابك موجَّه إلى %{acct}.
     set_redirect: تعين إعادة التوجيه
     warning:
@@ -1121,6 +1127,13 @@ ar:
     spam_detected: هذا إبلاغ تلقائي. تم اكتشاف منشورات عشوائية غير مرغوب فيها.
   statuses:
     attached:
+      audio:
+        few: "%{count} مقطعًا صوتيًا"
+        many: "%{count} مقاطع صوتية"
+        one: "%{count} مقطع صوتي واحد"
+        other: "%{count} مقاطع صوتية"
+        two: "%{count} مقطعان صوتيان"
+        zero: "%{count} مقطع صوتي"
       description: 'مُرفَق: %{attached}'
       image:
         few: "%{count} صور"
@@ -1219,6 +1232,12 @@ ar:
       explanation: لقد قمت بطلب نسخة كاملة لحسابك على ماستدون. إنها متوفرة الآن للتنزيل!
       subject: نسخة بيانات حسابك جاهزة للتنزيل
       title: المغادرة بأرشيف الحساب
+    sign_in_token:
+      details: 'وفيما يلي تفاصيل المحاولة:'
+      explanation: 'اكتشفنا محاولة لتسجيل الدخول إلى حسابك من عنوان IP غير معروف. إذا كان هذا أنت ، يرجى إدخال رمز الأمان أدناه في صفحة تحدي تسجيل الدخول:'
+      further_actions: 'إذا لم يكن ذلك صادر منك، يرجى تغيير كلمتك السرية وتنشيط المصادقة الثنائية في حسابك. يمكنك القيام بذلك هنا:'
+      subject: الرجاء تأكيد محاولة الولوج
+      title: محاولة الولوج
     warning:
       explanation:
         disable: عندما يتم تجميد حسابك، تظل بيانات حسابك سليمة، ولكن لا يمكنك تنفيذ أي إجراءات حتى يتم فتحه.
@@ -1258,11 +1277,14 @@ ar:
       title: أهلاً بك، %{name}!
   users:
     follow_limit_reached: لا يمكنك متابعة أكثر مِن %{limit} أشخاص
+    generic_access_help_html: صادفت مشكلة في الوصول إلى حسابك؟ اتصل بـ %{email} للحصول على المساعدة
     invalid_email: عنوان البريد الإلكتروني غير صالح
     invalid_otp_token: رمز المصادقة بخطوتين غير صالح
+    invalid_sign_in_token: رمز الآمان غير صحيح
     otp_lost_help_html: إن فقدتَهُما ، يمكنك الاتصال بـ %{email}
     seamless_external_login: لقد قمت بتسجيل الدخول عبر خدمة خارجية، إنّ إعدادات الكلمة السرية و البريد الإلكتروني غير متوفرة.
     signed_in_as: 'تم تسجيل دخولك بصفة:'
+    suspicious_sign_in_confirmation: يبدو أنك لم تقم بتسجيل الدخول عبر هذا الجهاز من قبل، ولم تقم بتسجيل الدخول لفترة منذ مدة، لذلك نقوم بإرسال رمز الأمان إلى عنوان بريدك الإلكتروني للتأكد من أنه أنت من قام بالطلب.
   verification:
     explanation_html: 'يمكنك <strong>التحقق من نفسك كمالك لروابط البيانات التعريفية على صفحتك الشخصية</strong>. لذلك، يجب أن يحتوي الموقع المقترِن على رابط إلى صفحتك التعريفية الشخصية على ماستدون. الرابط الخلفي <strong>يجب أن</strong> يحتوي على رمز <code>rel="me"</code>. محتوى النص في الرابط غير مهم. على سبيل المثال:'
     verification: التحقق
diff --git a/config/locales/bn.yml b/config/locales/bn.yml
index ad613f721..928d5426f 100644
--- a/config/locales/bn.yml
+++ b/config/locales/bn.yml
@@ -23,7 +23,7 @@ bn:
     hosted_on: এই মাস্টাডনটি আছে %{domain} এ
     instance_actor_flash: 'এই অ্যাকাউন্টটি ভার্চুয়াল এক্টর যা নিজে কোনও সার্ভারের প্রতিনিধিত্ব করতে ব্যবহৃত হয় এবং কোনও পৃথক ব্যবহারকারী নয়। এটি ফেডারেশনের উদ্দেশ্যে ব্যবহৃত হয় এবং আপনি যদি পুরো ইনস্ট্যান্স ব্লক করতে না চান তবে অবরুদ্ধ করা উচিত নয়, সেক্ষেত্রে আপনার ডোমেন ব্লক ব্যবহার করা উচিত।
 
-'
+      '
     learn_more: বিস্তারিত জানুন
     privacy_policy: গোপনীয়তা নীতি
     see_whats_happening: কী কী হচ্ছে দেখুন
diff --git a/config/locales/co.yml b/config/locales/co.yml
index 599b9ae7c..b1d68b2d5 100644
--- a/config/locales/co.yml
+++ b/config/locales/co.yml
@@ -1120,6 +1120,9 @@ co:
     spam_detected: Quessu ghjè un riportu automaticu. Un spam hè statu ditettatu.
   statuses:
     attached:
+      audio:
+        one: "%{count} audio"
+        other: "%{count} audio"
       description: 'Aghjuntu: %{attached}'
       image:
         one: "%{count} ritrattu"
diff --git a/config/locales/de.yml b/config/locales/de.yml
index 8d93edda1..021c4b2b2 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -940,6 +940,10 @@ de:
       redirect: Das Profil deines aktuellen Kontos wird mit einer Weiterleitungsnachricht versehen und von Suchanfragen ausgeschlossen
   moderation:
     title: Moderation
+  move_handler:
+    carry_blocks_over_text: Dieses Benutzerkonto ist von %{acct} umgezogen, welches du blockiert hast.
+    carry_mutes_over_text: Dieses Benutzerkonto ist von %{acct} umgezogen, welches du stummgeschaltet hast.
+    copy_account_note_text: 'Dieser Benutzer ist von %{acct} umgezogen, hier waren deine letzten Notizen zu diesem Benutzer:'
   notification_mailer:
     digest:
       action: Zeige alle Benachrichtigungen
@@ -1116,6 +1120,9 @@ de:
     spam_detected: Dies ist ein automatisierter Bericht. Es wurde Spam erkannt.
   statuses:
     attached:
+      audio:
+        one: "%{count} Audiodatei"
+        other: "%{count} Audiodateien"
       description: 'Angehängt: %{attached}'
       image:
         one: "%{count} Bild"
diff --git a/config/locales/devise.br.yml b/config/locales/devise.br.yml
index acfa884b4..95b9c1cbc 100644
--- a/config/locales/devise.br.yml
+++ b/config/locales/devise.br.yml
@@ -1,7 +1,10 @@
 ---
 br:
   devise:
+    confirmations:
+      confirmed: Kadarnaet eo bet ho chomlec'h postel gant berzh.
     failure:
+      already_authenticated: Kennasket oc'h dija.
       inactive: N'eo ket gweredekaet ho kont c'hoazh.
       invalid: "%{authentication_keys} pe ger-tremen diwiriek."
       last_attempt: Un esae a chom deoc'h a-raok ma vefe prennet ho kont.
@@ -36,6 +39,10 @@ br:
       updated_not_active: Kemmet eo bet ho ker-tremen ent reizh.
     registrations:
       signed_up: Donemat ! Kevreet oc'h.
+    sessions:
+      already_signed_out: Digennasket gant berzh.
+      signed_in: Kennasket gant berzh.
+      signed_out: Digennasket gant berzh.
   errors:
     messages:
       not_found: digavet
diff --git a/config/locales/devise.kab.yml b/config/locales/devise.kab.yml
index 0149c4512..79faaaa1b 100644
--- a/config/locales/devise.kab.yml
+++ b/config/locales/devise.kab.yml
@@ -37,27 +37,62 @@ kab:
         title: Awal uffir yettubeddel
       reconfirmation_instructions:
         explanation: Sentem tansa imayl tamaynut akken ad tbeddleḍ imayl-inek.
+        extra: Ma yella mačči d kečč·kem i yebdan aya, ttxil suref i yimayl-a. Tansa n imayl n Mastodon ur tettbeddil ara skud ur tkecmeḍ ara ɣer useɣwen-nni ufella.
         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.
+        extra: Ma yella ur tsutreḍ aya, suref i yimayl-a. Awal-ik·im uffir ir ittbeddil ara skud ur tekcimeḍ ara ɣer useɣwen-nni ufella sakin ad tsutreḍ amaynut.
+        subject: 'Mastodon: Iwellihen n uwennez n wawal uffir'
         title: Aɛiwed n wawal uffir
       two_factor_disabled:
+        explanation: Asesṭeb s snat n tarayin insa i umiḍan-ik·im. Tzemreḍ ad teqnneḍ tura s imayl d wawal uffir kan.
+        subject: 'Mastodon: Asesteb s snat n tarrayin yensa'
         title: Asesteb s snat n tarrayin insa
       two_factor_enabled:
+        explanation: Asesṭeb s snat n tarayin yermed i umiḍan-ik·im. anekcum isra tangalt akken ad yeddu.
+        subject: 'Mastodon: Asesteb s snat n tarrayin yermed'
         title: Asesteb s snat n tarrayin irmed
+      two_factor_recovery_codes_changed:
+        explanation: Tangalt n tuɣalin tettwaḥbes sakin nesnulfa-d yiwet d tamaynut.
+        subject: 'Mastodon: Tingalin n tuɣalin n snat n tarayin ttwarnanat i tikkelt-nniḍen'
+        title: Tangalt n tuɣalin 2FA tettwabeddel
+      unlock_instructions:
+        subject: 'Mastodon: iwelihhen n userreḥ'
+    omniauth_callbacks:
+      failure: Ur nezmir ara ad ak·akem-nsesṭeb seg %{kind} acku "%{reason}".
+      success: Asesṭeb idda akken iwata seg umiḍan %{kind}.
     passwords:
+      no_token: Ur tezmireḍ ara ad tkecmeḍ ɣer usebter-a war ma tusiḍ-d seg imayl n uwennez n wawal uffir. ma syin i d-tusiḍ, wali ma tesqedceḍ tansa URL i d ak·am-d-nuzen.
+      send_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:
       destroyed: Ar timlilit! Amiḍan-ik yettwakkes mebla ugur. Nessaram ad k-nwali tikelt-nniḍen.
       signed_up: Anṣuf! Aqla-k tkecmeḍ.
+      signed_up_but_inactive: Tjerdeḍ akken iwata. maca ur tezmireḍ ara ad teqneḍ akka tura acku amiḍan-ik·im mazal ur yermid ara.
+      signed_up_but_locked: Tjerdeḍ akken iwata. maca ur tezmireḍ ara ad teqneḍ akka tura acku amiḍan-ik·im ittwawḥel.
+      signed_up_but_pending: Aseɣwen n usentem ittwazen ɣer tensa-inen·inem n imayl. ticki tsenndeḍ ɣef useɣwen, ad nsenqed asnas-ik·im. ad ak·am-n-yaweḍ telɣut ma yella ittwaqbel.
+      signed_up_but_unconfirmed: Aseɣwen n usentem ittwazen ɣer tensa-inen·inem n imayl. Ttxil ḍfer aseɣwen i usentem n umiḍan-ik·im. Ttxil wali akaram n ispamen ma ur teṭṭifeḍ ara imayl-agi.
+      update_needs_confirmation: Tleqmeḍ akken iwata amiḍan-ik·im, maca nesra ad nsenqed tansa-ik·im imayl tamaynut. Ttxil-k·m senqed imayl-k·m sakin ḍfer aseɣwen i usentem n n tansa imayl tamaynut. Ttxil senqed akaram n spam ma yella ur tufiḍ ara imayl-nni.
+      updated: Amiḍan-ik·im yettwalqem akken iwata.
     sessions:
+      already_signed_out: Aqla-k teffγeḍ.
       signed_in: Aqla-k teqqneḍ.
       signed_out: Aqla-k teffγeḍ.
+    unlocks:
+      send_instructions: Deg kra n tesdatin, ad teṭṭfeḍ imayl deg-s iwellihen i yilaqen i userreḥ n umiḍan-ik·im. Ma yella ur tufiḍ ara izen-agi, ttxil-k·m ẓer deg ukaram spam.
+      send_paranoid_instructions: Ma yella umiḍan-ik·im yella, ad teṭṭfeḍ imayl deg tesdatin i d-iteddun, deg-s iwellihen i yilaqen i userreḥ n umiḍan-ik·im. Ma yella ur tufiḍ ara izen-agi, ttxil-k·m ẓer deg ukaram spam.
+      unlocked: Iserreḥ umiḍan-ik·im akken iwata. ttxil qqen akken ad tkemleḍ.
   errors:
     messages:
+      already_confirmed: ittwasentem yakan, ttxil εreḍ ad teqneḍ
+      confirmation_period_expired: isra asentem di %{period}, ttxil suter amaynut
+      expired: immut, ttxil suter amaynut
       not_found: ulac-it
       not_locked: ur yettucekkel ara
+      not_saved:
+        one: '1 n tuccḍa ur teǧǧa ara %{resource} ad ittwasekles:'
+        other: 'Tuccḍiwin n %{count} ur ǧǧant ara %{resource} ad ittwasekles:'
diff --git a/config/locales/devise.ku.yml b/config/locales/devise.ku.yml
new file mode 100644
index 000000000..cc251e86a
--- /dev/null
+++ b/config/locales/devise.ku.yml
@@ -0,0 +1 @@
+ckb-IR:
diff --git a/config/locales/devise.ug.yml b/config/locales/devise.ug.yml
new file mode 100644
index 000000000..289acf241
--- /dev/null
+++ b/config/locales/devise.ug.yml
@@ -0,0 +1 @@
+ug:
diff --git a/config/locales/doorkeeper.ku.yml b/config/locales/doorkeeper.ku.yml
new file mode 100644
index 000000000..cc251e86a
--- /dev/null
+++ b/config/locales/doorkeeper.ku.yml
@@ -0,0 +1 @@
+ckb-IR:
diff --git a/config/locales/doorkeeper.ml.yml b/config/locales/doorkeeper.ml.yml
index 80a749b04..5dfaa61ae 100644
--- a/config/locales/doorkeeper.ml.yml
+++ b/config/locales/doorkeeper.ml.yml
@@ -1,6 +1,10 @@
 ---
 ml:
   activerecord:
+    attributes:
+      doorkeeper/application:
+        name: അപ്ലിക്കേഷന്റെ പേര്
+        website: അപ്ലിക്കേഷന്റെ വെബ്സൈറ്റ്
     errors:
       models:
         doorkeeper/application:
@@ -19,7 +23,12 @@ ml:
         submit: സമർപ്പിക്കുക
       confirmations:
         destroy: നിങ്ങൾക്ക് ഉറപ്പാണോ?
+      edit:
+        title: അപ്ലിക്കേഷൻ എഡിറ്റുചെയ്യുക
+      form:
+        error: ക്ഷമിക്കണം! സാധ്യമായ പിശകുകൾക്കായി നിങ്ങളുടെ ഫോം പരിശോധിക്കുക
       index:
+        application: അപ്ലിക്കേഷന്‍
         delete: മായ്ക്കുക
         name: പേര്
     authorized_applications:
diff --git a/config/locales/doorkeeper.ug.yml b/config/locales/doorkeeper.ug.yml
new file mode 100644
index 000000000..289acf241
--- /dev/null
+++ b/config/locales/doorkeeper.ug.yml
@@ -0,0 +1 @@
+ug:
diff --git a/config/locales/doorkeeper.vi.yml b/config/locales/doorkeeper.vi.yml
index 7a6ae7817..12592c0f4 100644
--- a/config/locales/doorkeeper.vi.yml
+++ b/config/locales/doorkeeper.vi.yml
@@ -73,7 +73,7 @@ vi:
       index:
         application: Ứng dụng
         created_at: Đã cho phép
-        date_format: "% Y-% m-%d% H:% M:% S"
+        date_format: "%Y-%m-%d %H:%M:%S"
         scopes: Phạm vi
         title: Các ứng dụng mà bạn cho phép
     errors:
diff --git a/config/locales/el.yml b/config/locales/el.yml
index 5867dfee3..cf6622f10 100644
--- a/config/locales/el.yml
+++ b/config/locales/el.yml
@@ -940,6 +940,10 @@ el:
       redirect: Το προφίλ του τρέχοντος λογαριασμό σου θα ενημερωθεί με μια σημείωση ανακατεύθυνσης και θα εξαιρεθεί από τα αποτελέσματα αναζητήσεων
   moderation:
     title: Συντονισμός
+  move_handler:
+    carry_blocks_over_text: Ο/Η χρήστης μετακόμισε από το %{acct}, που είχες αποκλείσει.
+    carry_mutes_over_text: Ο/Η χρήστης μετακόμισε από το %{acct}, που είχες αποσιωπήσει.
+    copy_account_note_text: 'Ο/Η χρήστης μετακόμισε από το %{acct}, ορίστε οι προηγούμενες σημειώσεις σου:'
   notification_mailer:
     digest:
       action: Δες όλες τις ειδοποιήσεις
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 23bed812e..2cae0a3e3 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -21,7 +21,9 @@ en:
     federation_hint_html: With an account on %{instance} you'll be able to follow people on any Mastodon server and beyond.
     get_apps: Try a mobile app
     hosted_on: Mastodon hosted on %{domain}
-    instance_actor_flash: This account is a virtual actor used to represent the server itself and not any individual user. It is used for federation purposes and should not be blocked unless you want to block the whole instance, in which case you should use a domain block.
+    instance_actor_flash: |
+      This account is a virtual actor used to represent the server itself and not any individual user.
+      It is used for federation purposes and should not be blocked unless you want to block the whole instance, in which case you should use a domain block.
     learn_more: Learn more
     privacy_policy: Privacy policy
     see_whats_happening: See what's happening
diff --git a/config/locales/eo.yml b/config/locales/eo.yml
index 1a4ecd2df..5c11fa6fc 100644
--- a/config/locales/eo.yml
+++ b/config/locales/eo.yml
@@ -208,7 +208,12 @@ eo:
         enable_custom_emoji: Ebligi Propran Emoĝion
         enable_user: Ebligi uzanton
         promote_user: Promocii Uzanton
+        remove_avatar_user: Forigi profilbildon
         reopen_report: Remalfermi signalon
+        reset_password_user: Restarigi pasvorton
+        resolve_report: Solvitaj reporto
+        silence_account: Silentigi konton
+        suspend_account: Haltigi konton
       actions:
         assigned_to_self_report: "%{name} asignis signalon %{target} al si mem"
         change_email_user: "%{name} ŝanĝis retadreson de uzanto %{target}"
diff --git a/config/locales/eu.yml b/config/locales/eu.yml
index 1a654ec9b..3e92dcd36 100644
--- a/config/locales/eu.yml
+++ b/config/locales/eu.yml
@@ -23,7 +23,7 @@ eu:
     hosted_on: Mastodon %{domain} domeinuan ostatatua
     instance_actor_flash: 'Kontu hau zerbitzaria bera adierazten duen aktore birtual bat da, ez norbanako bat. Federaziorako erabiltzen da eta ez zenuke blokeatu behar instantzia osoa blokeatu nahi ez baduzu, kasu horretan domeinua blokeatzea egokia litzateke.
 
-'
+      '
     learn_more: Ikasi gehiago
     privacy_policy: Pribatutasun politika
     see_whats_happening: Ikusi zer gertatzen ari den
diff --git a/config/locales/fa.yml b/config/locales/fa.yml
index 3b63d8809..25e66f328 100644
--- a/config/locales/fa.yml
+++ b/config/locales/fa.yml
@@ -22,8 +22,8 @@ fa:
     get_apps: یک اپ موبایل را بیازمایید
     hosted_on: ماستودون، میزبانی‌شده روی %{domain}
     instance_actor_flash: |
-      این حساب یک بازیگر مجازی برای نمایندگی از این سرور است و متعلق به هیچ کاربری نیست.
-      این حساب برای ارتباط میان‌سروری به کار می‌رود و نباید مسدود شود، مگر این که شما بخواهید کل سرور را مسدود کنید، که در آن صورت باید از راه مسدودسازی دامین پیش بروید.
+      این حساب، بازیگری مجازی به نمایندگی خود کارساز بوده و کاربری واقعی نیست.
+      این حساب برای مقاصد خودگردانی به کار می‌رفته و نباید مسدود شود؛ مگر این که بخواهید کل نمونه را مسدود کنید که در آن صورت نیز باید از انسداد دامنه استفاده کنید.
     learn_more: بیشتر بدانید
     privacy_policy: سیاست رازداری
     see_whats_happening: ببینید چه خبر است
@@ -860,6 +860,8 @@ fa:
     inactive: غیرفعال
     publicize_checkbox: 'این را ببوقید:'
     publicize_toot: 'تأیید شد! من %{username} روی %{service} هستم: %{url}'
+    remove: برداشتن مدرک از حساب
+    removed: مدرک با موفّقیت از حساب برداشته شد
     status: وضعیت تأیید
     view_proof: دیدن مدرک
   imports:
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index 8186f0247..224fefd9e 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -41,8 +41,8 @@ fr:
       reason: Motif
       rejecting_media: 'Les fichiers média de ces serveurs ne seront pas traités ou stockés et aucune miniature ne sera affichée, nécessitant un clic vers le fichier d’origine :'
       rejecting_media_title: Média filtré
-      silenced: 'Les messages de ces serveurs seront cachés des flux publics et conversations, et les interactions de leurs utilisateur·ice·s ne donneront lieu à aucune notification, à moins que vous ne les suiviez :'
-      silenced_title: Serveurs en sourdine
+      silenced: 'Les messages de ces serveurs seront cachés des flux publics et conversations, et les interactions de leurs utilisateur·rice·s ne donneront lieu à aucune notification, à moins que vous ne les suiviez :'
+      silenced_title: Serveurs masqués
       suspended: 'Aucune donnée venant de ces serveurs ne sera traitée, stockée ou échangée, rendant toute interaction ou communication avec les utilisateur·rice·s de ces serveurs impossible :'
       suspended_title: Serveurs suspendus
     unavailable_content_html: Mastodon vous permet généralement de visualiser le contenu et d'interagir avec les utilisateur·rice·s de n'importe quel autre serveur dans le fédiverse. Voici les exceptions qui ont été faites sur ce serveur en particulier.
@@ -90,7 +90,7 @@ fr:
       action: Effectuer une action
       title: Effectuer une action de modération sur %{acct}
     account_moderation_notes:
-      create: Laisser un commentaire
+      create: Laisser une remarque
       created_msg: Note de modération créée avec succès !
       delete: Supprimer
       destroyed_msg: Note de modération supprimée avec succès !
@@ -183,14 +183,14 @@ fr:
         created_reports: Signalements faits
         targeted_reports: Signalés par d’autres
       silence: Masquer
-      silenced: Silencié
+      silenced: Masqué
       statuses: Statuts
       subscribe: S’abonner
       suspended: Suspendu
       time_in_queue: En file d’attente %{time}
       title: Comptes
       unconfirmed_email: Courriel non confirmé
-      undo_silenced: Démasquer
+      undo_silenced: Ne plus masquer
       undo_suspension: Annuler la suspension
       unsubscribe: Se désabonner
       username: Nom d’utilisateur·ice
@@ -226,10 +226,10 @@ fr:
         reopen_report: Rouvrir le signalement
         reset_password_user: Réinitialiser le mot de passe
         resolve_report: Résoudre le signalement
-        silence_account: Rendre le compte silencieux
+        silence_account: Masque le compte
         suspend_account: Suspendre le compte
         unassigned_report: Ne plus assigner le signalement
-        unsilence_account: Désactiver le silence du compte
+        unsilence_account: Ne plus masquer le compte
         unsuspend_account: Annuler la suspension du compte
         update_announcement: Modifier l’annonce
         update_custom_emoji: Mettre à jour les émojis personnalisés
@@ -262,10 +262,10 @@ fr:
         reopen_report: "%{name} a rouvert le signalement %{target}"
         reset_password_user: "%{name} a réinitialisé le mot de passe de %{target}"
         resolve_report: "%{name} a résolu le signalement %{target}"
-        silence_account: "%{name} a mis le compte %{target} en mode silence"
+        silence_account: "%{name} a masqué le compte de %{target}"
         suspend_account: "%{name} a suspendu le compte %{target}"
         unassigned_report: "%{name} a désassigné le signalement %{target}"
-        unsilence_account: "%{name} a mis fin au mode silence de %{target}"
+        unsilence_account: "%{name} ne masque plus le compte de %{target}"
         unsuspend_account: "%{name} a réactivé le compte de %{target}"
         update_announcement: "%{name} a actualisé l’annonce %{target}"
         update_custom_emoji: "%{name} a mis à jour l’émoji %{target}"
@@ -367,7 +367,7 @@ fr:
         create: Créer le blocage
         hint: Le blocage de domaine n’empêchera pas la création de comptes dans la base de données, mais il appliquera automatiquement et rétrospectivement des méthodes de modération spécifiques sur ces comptes.
         severity:
-          desc_html: "<strong>Masqué</strong> rendra les messages des comptes concernés invisibles à ceux qui ne les suivent pas. <strong>Suspendre</strong> supprimera tout le contenu des comptes concernés, les médias, et les données du profil. Utilisez <strong>Aucune</strong> si vous voulez simplement rejeter les fichiers multimédia."
+          desc_html: "<strong>Masquer</strong> rendra les messages des comptes concernés invisibles à ceux qui ne les suivent pas. <strong>Suspendre</strong> supprimera tout le contenu des comptes concernés, les médias, et les données du profil. Utilisez <strong>Aucune</strong> si vous voulez simplement rejeter les fichiers multimédia."
           noop: Aucune
           silence: Masqué
           suspend: Suspendre
@@ -383,14 +383,14 @@ fr:
       rejecting_media: rejet des fichiers multimédia
       rejecting_reports: rejet des signalements
       severity:
-        silence: silencié
+        silence: masqué
         suspend: suspendu
       show:
         affected_accounts:
           one: Un compte affecté dans la base de données
           other: "%{count} comptes affectés dans la base de données"
         retroactive:
-          silence: Annuler le masquage des comptes existants affectés pour ce domaine
+          silence: Ne plus masquer les comptes existants affectés de ce domaine
           suspend: Annuler la suspension des comptes existants affectés pour ce domaine
         title: Annuler le blocage du domaine %{domain}
         undo: Annuler
@@ -568,7 +568,7 @@ fr:
         title: Politique de confidentialité
       site_title: Nom du serveur
       spam_check_enabled:
-        desc_html: Mastodon peut signaler automatiquement des comptes qui envoient des messages répétés non sollicités. Il peut y avoir de faux positifs.
+        desc_html: Mastodon peut signaler automatiquement les comptes qui envoient des messages non sollicités de façon répétée. Il peut y avoir des faux positifs.
         title: Automatisation anti-spam
       thumbnail:
         desc_html: Utilisée pour les prévisualisations via OpenGraph et l’API. 1200x630px recommandé
@@ -753,7 +753,7 @@ fr:
     proceed: Supprimer le compte
     success_msg: Votre compte a été supprimé avec succès
     warning:
-      before: 'Avant de procéder, veuillez lire attentivement ces notes :'
+      before: 'Veuillez lire attentivement ces notes avant de continuer :'
       caches: Le contenu mis en cache par d'autres serveurs peut persister
       data_removal: Vos messages et autres données seront définitivement supprimés
       email_change_html: Vous pouvez <a href="%{path}">modifier votre adresse courriel</a> sans supprimer votre compte
@@ -941,7 +941,9 @@ fr:
   moderation:
     title: Modération
   move_handler:
-    copy_account_note_text: 'Cet utilisateur est parti de %{acct}, voici vos notes précédentes à son sujet :'
+    carry_blocks_over_text: Cet utilisateur que vous aviez bloqué est parti de %{acct}.
+    carry_mutes_over_text: Cet utilisateur que vous aviez masqué est parti de %{acct}.
+    copy_account_note_text: 'Cet·te utilisateur·rice est parti de %{acct}, voici vos notes précédentes à son sujet :'
   notification_mailer:
     digest:
       action: Voir toutes les notifications
diff --git a/config/locales/gl.yml b/config/locales/gl.yml
index d2ad1bc45..77c5ec911 100644
--- a/config/locales/gl.yml
+++ b/config/locales/gl.yml
@@ -23,7 +23,7 @@ gl:
     hosted_on: Mastodon aloxado en %{domain}
     instance_actor_flash: 'Esta conta é un actor virtual utilizado para representar ao servidor e non a unha usuaria individual. Utilízase para propósitos de federación e non debería estar bloqueada a menos que queiras bloquear a toda a instancia, en tal caso deberías utilizar o bloqueo do dominio.
 
-'
+      '
     learn_more: Saber máis
     privacy_policy: Política de privacidade
     see_whats_happening: Ver o que está a acontecer
diff --git a/config/locales/hu.yml b/config/locales/hu.yml
index 32c28c3e5..1f5d2a738 100644
--- a/config/locales/hu.yml
+++ b/config/locales/hu.yml
@@ -23,7 +23,7 @@ hu:
     hosted_on: "%{domain} Mastodon szerver"
     instance_actor_flash: 'Ez a fiók egy virtuális szereplő, mely magát a szervert reprezentálja, nem egy felhasználót. Ez a föderáció támogatására készült, ezért nem szabad blokkolni, hacsak egy teljes szervert nem akarsz kitiltani, amire persze a domain blokkolása jobb megoldás.
 
-'
+      '
     learn_more: Tudj meg többet
     privacy_policy: Adatvédelmi szabályzat
     see_whats_happening: Nézd, mi történik
diff --git a/config/locales/id.yml b/config/locales/id.yml
index d55abce59..1c648e28f 100644
--- a/config/locales/id.yml
+++ b/config/locales/id.yml
@@ -23,7 +23,7 @@ id:
     hosted_on: Mastodon dihosting di %{domain}
     instance_actor_flash: 'Akun ini adalah aktor virtual yang dipakai untuk merepresentasikan server, bukan pengguna individu. Ini dipakai untuk tujuan federasi dan jangan diblokir kecuali Anda ingin memblokir seluruh instansi, yang seharusnya Anda pakai blokir domain.
 
-'
+      '
     learn_more: Pelajari selengkapnya
     privacy_policy: Kebijakan Privasi
     see_whats_happening: Lihat apa yang sedang terjadi
diff --git a/config/locales/ja.yml b/config/locales/ja.yml
index e3b6bc234..bb99ab26c 100644
--- a/config/locales/ja.yml
+++ b/config/locales/ja.yml
@@ -23,7 +23,7 @@ ja:
     hosted_on: Mastodon hosted on %{domain}
     instance_actor_flash: 'このアカウントはサーバーそのものを示す仮想的なもので、特定のユーザーを示すものではありません。これはサーバーの連合のために使用されます。サーバー全体をブロックするときは、このアカウントをブロックせずに、ドメインブロックを使用してください。
 
-'
+      '
     learn_more: もっと詳しく
     privacy_policy: プライバシーポリシー
     see_whats_happening: やりとりを見てみる
@@ -931,6 +931,8 @@ ja:
   moderation:
     title: モデレーション
   move_handler:
+    carry_blocks_over_text: このユーザーは、あなたがブロックしていた %{acct} から引っ越しました。
+    carry_mutes_over_text: このユーザーは、あなたがミュートしていた %{acct} から引っ越しました。
     copy_account_note_text: このユーザーは %{acct} から引っ越しました。これは以前のメモです。
   notification_mailer:
     digest:
diff --git a/config/locales/kab.yml b/config/locales/kab.yml
index 833857b23..cb1b73c8a 100644
--- a/config/locales/kab.yml
+++ b/config/locales/kab.yml
@@ -12,6 +12,7 @@ kab:
     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_missing: Ur yettusbadu ara
     contact_unavailable: Wlac
     discover_users: Af-d imseqdacen
     documentation: Amnir
@@ -69,7 +70,7 @@ kab:
     unfollow: Ur ṭṭafaṛ ara
   admin:
     account_moderation_notes:
-      create: Eǧǧ awennit
+      create: Eǧǧ tazmilt
       delete: Kkes
     accounts:
       approve: Qbel
@@ -88,6 +89,7 @@ kab:
       confirmed: Yettwasentem
       confirming: Asentem
       deleted: Yettwakkes
+      demote: Sider s weswir
       disable: Gdel
       disable_two_factor_authentication: Gdel 2FA
       disabled: Yensa
@@ -116,10 +118,14 @@ kab:
         all: Akk
         pending: Yettraǧu
         silenced: Yettwasgugem
+        suspended: Yeḥbes
       most_recent_activity: Armud aneggaru
       most_recent_ip: Tansa IP taneggarut
       no_account_selected: Ula yiwen n umiḍan ur yettwabeddel acku ula yiwen ur yettwafren
       no_limits_imposed: War tilisa
+      pending: Ittraǧu acegger
+      perform_full_suspension: Ḥbes di leεḍil
+      promote: Ali s uswir
       protocol: Aneggaf
       public: Azayez
       redownload: Smiren amaɣnu
@@ -143,6 +149,7 @@ kab:
       silenced: Yettwasgugem
       statuses: Tisuffɣin
       subscribe: Jerred
+      suspended: Yeḥbes
       time_in_queue: Deg tebdert n uraju %{time}
       title: Imiḍanen
       unconfirmed_email: Imayl ur yettwasentem ara
@@ -153,7 +160,9 @@ kab:
       whitelisted: Deg tebdert tamellalt
     action_logs:
       action_types:
+        disable_2fa_user: Gdel 2FA
         remove_avatar_user: Kkes avaṭar
+        reset_password_user: Ales awennez n wawal n uffir
         silence_account: Sgugem amiḍan
       actions:
         change_email_user: "%{name} ibeddel imayl n umseqdac %{target}"
@@ -178,6 +187,8 @@ kab:
         update_custom_emoji: "%{name} yelqem imuji %{target}"
         update_status: "%{name} yelqem tasuffeɣt n %{target}"
       deleted_status: "(tasuffeɣt tettwakkes)"
+      empty: Ulac iɣmisen i yellan.
+      title: Aɣmis n usenqed
     announcements:
       edit:
         title: Ẓreg ulγu
@@ -207,7 +218,9 @@ kab:
       new:
         title: Timerna n imuji udmawan amaynut
       overwrite: Semselsi
+      shortcode: Tangalt tawezlant
       title: Imujiten udmawanen
+      uncategorized: War-taggayt
       unlist: Kkes seg wumuγ
       unlisted: Yettwakkes seg wumuγ
       update_failed_msg: Ur izmir ara ad-issali umuji-a
@@ -238,10 +251,12 @@ kab:
         severity:
           noop: Ula yiwen
           silence: Sgugem
+          suspend: Ḥbes di leεḍil
       private_comment: Awennit uslig
       public_comment: Awennit azayez
       severity:
         silence: yettwasgugem
+        suspend: yeḥbes
       show:
         undo: Sefsex
     email_domain_blocks:
@@ -297,7 +312,7 @@ kab:
       mark_as_resolved: Creḍ-it yefra
       mark_as_unresolved: Creḍ-it ur yefra ara
       notes:
-        create: Rnu tamawt
+        create: Rnu tazmilt
         delete: Kkes
       report: 'Aneqqis #%{id}'
       resolved: Fran
@@ -339,13 +354,16 @@ kab:
       title: Tisuffiγin n umiḍan
       with_media: S taγwalt
     tags:
+      context: Asatal
       directory: Deg ukaram
       in_directory: "%{count} deg ukaram"
       last_active: Armud aneggaru
       most_popular: Ittwasnen aṭas
       most_recent: Melmi kan
       name: Ahacṭag
+      reviewed: Yettwacegger
       title: Ihacṭagen
+    title: Tadbelt
     warning_presets:
       add_new: Rnu amaynut
       delete: Kkes
@@ -382,6 +400,8 @@ kab:
     reset_password: Wennez awal uffir
     security: Taγellist
     set_new_password: Egr-d awal uffir amaynut
+    setup:
+      title: Sbadu
     status:
       account_status: Addad n umiḍan
       functional: Amiḍan-inek·m yettwaheyya.
@@ -458,6 +478,7 @@ kab:
   footer:
     developers: Ineflayen
     more: Ugar…
+    resources: Iɣbula
   generic:
     all: Akk
     changes_saved_msg: Ttwaskelsen ibelliden-ik·im akken ilaq!
@@ -474,12 +495,15 @@ kab:
     publicize_checkbox: 'Tjewqeḍ aya:'
   imports:
     modes:
+      merge: Smezdi
       overwrite: Semselsi
     types:
       following: Tabdert n wid teṭṭafareḍ
       muting: Tabdert n wid tesgugmeḍ
     upload: Sali
   invites:
+    delete: Sexsi
+    expired: Yemmut
     expires_in:
       '1800': 30 n tisdatin
       '21600': 6 n isragen
@@ -488,6 +512,9 @@ kab:
       '604800': 1 umalas
       '86400': 1 wass
     expires_in_prompt: Werǧin
+    max_uses_prompt: Ulac talast
+    table:
+      expires_at: Ad ifat di
     title: Ɛreḍ-d kra n yimdanen
   migrations:
     acct: Ibeddel γer
@@ -509,6 +536,12 @@ kab:
       subject: Yuder-ik·ikem-id %{name}
   notifications:
     other_settings: Iγewwaṛen nniḍen n tilγa
+  number:
+    human:
+      decimal_units:
+        units:
+          million: A
+          trillion: Am
   pagination:
     newer: Amaynut
     next: Wayed
@@ -518,9 +551,14 @@ kab:
   preferences:
     other: Wiyaḍ
   relationships:
+    activity: Armud n umiḍan
     followers: Imeḍfaṛen
     following: Yeṭafaṛ
+    last_active: Armud aneggaru
+    most_recent: Melmi kan
     moved: Igujj
+    primary: Agejdan
+    relationship: Assaɣ
     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>
@@ -598,6 +636,7 @@ kab:
       total_people:
         one: "%{count} n wemdan"
         other: "%{count} n yemdanen"
+      vote: Dɣeṛ
     show_more: Ssken-d ugar
     show_thread: Ssken-d lxiḍ
     sign_in_to_participate: Qqen i waken ad tzeddiḍ deg udiwenni
@@ -605,6 +644,7 @@ kab:
     visibilities:
       private: Imeḍfaṛen kan
       private_long: Ssken i ymeḍfaṛen kan
+      public: Azayez
       public_long: Yal yiwen·t yezmer at iwali
       unlisted: War tabdert
   stream_entries:
diff --git a/config/locales/ko.yml b/config/locales/ko.yml
index bf2aaa5bd..1742e5d08 100644
--- a/config/locales/ko.yml
+++ b/config/locales/ko.yml
@@ -933,6 +933,8 @@ ko:
   moderation:
     title: 중재
   move_handler:
+    carry_blocks_over_text: 이 사용자는 당신이 차단한 %{acct}로부터 이주 했습니다.
+    carry_mutes_over_text: 이 사용자는 당신이 뮤트한 %{acct}로부터 이주 했습니다.
     copy_account_note_text: '이 사용자는 %{acct}로부터 이동하였습니다. 당신의 이전 노트는 이렇습니다:'
   notification_mailer:
     digest:
diff --git a/config/locales/ku.yml b/config/locales/ku.yml
new file mode 100644
index 000000000..2fbf0ffd7
--- /dev/null
+++ b/config/locales/ku.yml
@@ -0,0 +1 @@
+--- {}
diff --git a/config/locales/nl.yml b/config/locales/nl.yml
index 7ab26c4ba..600f9a6f5 100644
--- a/config/locales/nl.yml
+++ b/config/locales/nl.yml
@@ -21,9 +21,9 @@ nl:
     federation_hint_html: Met een account op %{instance} ben je in staat om mensen die zich op andere Mastodonservers (en op andere plekken) bevinden te volgen.
     get_apps: Mobiele apps
     hosted_on: Mastodon op %{domain}
-    instance_actor_flash: 'Dit account is een virtuel actor die wordt gebruikt om de server zelf te vertegenwoordigen en is geen individuele gebruiker. Het wordt voor federatiedoeleinden gebruikt en moet niet worden geblokkeerd, tenzij je de hele server wil blokkeren. In zo''n geval dien je echter een domeinblokkade te gebruiken.
+    instance_actor_flash: 'Dit account is een virtuel actor dat wordt gebruikt om de server zelf te vertegenwoordigen en is geen individuele gebruiker. Het wordt voor federatiedoeleinden gebruikt en moet niet worden geblokkeerd, tenzij je de hele server wilt blokkeren. In zo''n geval dien je echter een domeinblokkade te gebruiken.
 
-'
+      '
     learn_more: Meer leren
     privacy_policy: Privacybeleid
     see_whats_happening: Kijk wat er aan de hand is
@@ -35,13 +35,16 @@ nl:
     status_count_before: Zij schreven
     tagline: Vrienden volgen en nieuwe ontdekken
     terms: Gebruiksvoorwaarden
-    unavailable_content: Niet beschikbare inhoud
+    unavailable_content: Gemodereerde servers
     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_title: Mediabestanden geweigerd
       silenced: Toots van deze server worden nergens weergegeven, behalve op jouw eigen starttijdlijn wanneer je het account volgt.
+      silenced_title: Genegeerde servers
       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.
+      suspended_title: Opgeschorte servers
     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.
     user_count_after:
       one: gebruiker
@@ -92,6 +95,7 @@ nl:
       delete: Verwijderen
       destroyed_msg: Verwijderen van opmerking voor moderatoren geslaagd!
     accounts:
+      add_email_domain_block: E-maildomein blokkeren
       approve: Goedkeuren
       approve_all: Alles goedkeuren
       are_you_sure: Weet je het zeker?
@@ -172,6 +176,7 @@ nl:
         staff: Medewerkers
         user: Gebruiker
       search: Zoeken
+      search_same_email_domain: Andere gebruikers met hetzelfde e-maildomein
       search_same_ip: Andere gebruikers met hetzelfde IP-adres
       shared_inbox_url: Gedeelde inbox-URL
       show:
@@ -191,8 +196,44 @@ nl:
       username: Gebruikersnaam
       warn: Waarschuwen
       web: Webapp
-      whitelisted: Op de witte lijst
+      whitelisted: Goedgekeurd voor federatie
     action_logs:
+      action_types:
+        assigned_to_self_report: Rapportage toewijzen
+        change_email_user: E-mailadres van gebruiker wijzigen
+        confirm_user: Gebruiker bevestigen
+        create_account_warning: Waarschuwing aanmaken
+        create_announcement: Mededeling aanmaken
+        create_custom_emoji: Lokale emoji aanmaken
+        create_domain_allow: Domeingoedkeuring aanmaken
+        create_domain_block: Domeinblokkade aanmaken
+        create_email_domain_block: E-maildomeinblokkade aanmaken
+        demote_user: Gebruiker degraderen
+        destroy_announcement: Mededeling verwijderen
+        destroy_custom_emoji: Lokale emoji verwijderen
+        destroy_domain_allow: Domeingoedkeuring verwijderen
+        destroy_domain_block: Domeinblokkade verwijderen
+        destroy_email_domain_block: E-maildomeinblokkade verwijderen
+        destroy_status: Toot verwijderen
+        disable_2fa_user: Tweestapsverificatie uitschakelen
+        disable_custom_emoji: Lokale emojij uitschakelen
+        disable_user: Gebruiker uitschakelen
+        enable_custom_emoji: Lokale emoji inschakelen
+        enable_user: Gebruiker inschakelen
+        memorialize_account: Account in gedenkpagina veranderen
+        promote_user: Gebruiker promoveren
+        remove_avatar_user: Avatar verwijderen
+        reopen_report: Rapportage heropenen
+        reset_password_user: Wachtwoord opnieuw instellen
+        resolve_report: Rapportage oplossen
+        silence_account: Account negeren
+        suspend_account: Account opschorten
+        unassigned_report: Rapportage niet langer toewijzen
+        unsilence_account: Account niet langer negeren
+        unsuspend_account: Account niet langer opschorten
+        update_announcement: Mededeling bijwerken
+        update_custom_emoji: Lokale emoji bijwerken
+        update_status: Toot bijwerken
       actions:
         assigned_to_self_report: "%{name} heeft rapportage %{target} aan zichzelf toegewezen"
         change_email_user: "%{name} veranderde het e-mailadres van gebruiker %{target}"
@@ -200,15 +241,15 @@ nl:
         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_allow: "%{name} heeft federatie met het domein %{target} goedgekeurd"
         create_domain_block: Domein %{target} is door %{name} geblokkeerd
-        create_email_domain_block: E-maildomein %{target} is door %{name} op de zwarte lijst geplaatst
+        create_email_domain_block: "%{name} heeft het e-maildomein %{target} geblokkeerd"
         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_allow: "%{name} heeft federatie met het domein %{target} afgekeurd"
         destroy_domain_block: Domein %{target} is door %{name} gedeblokkeerd
-        destroy_email_domain_block: E-maildomein %{target} is door %{name} op de witte lijst geplaatst
+        destroy_email_domain_block: "%{name} heeft het e-maildomein %{target} gedeblokkeerd"
         destroy_status: Toot van %{target} is door %{name} verwijderd
         disable_2fa_user: Vereisten tweestapsverificatie van %{target} zijn door %{name} uitgeschakeld
         disable_custom_emoji: Emoji %{target} is door %{name} uitgeschakeld
@@ -230,6 +271,9 @@ nl:
         update_custom_emoji: Emoji %{target} is door %{name} bijgewerkt
         update_status: De toots van %{target} zijn door %{name} bijgewerkt
       deleted_status: "(verwijderde toot}"
+      empty: Geen logs gevonden.
+      filter_by_action: Op actie filteren
+      filter_by_user: Op gebruiker filteren
       title: Auditlog
     announcements:
       destroyed_msg: Verwijderen van mededeling geslaagd!
@@ -268,6 +312,7 @@ nl:
       listed: Weergegeven
       new:
         title: Lokale emoji toevoegen
+      not_permitted: Het hebt geen rechten om deze actie uit te voeren
       overwrite: Overschrijven
       shortcode: Verkorte code
       shortcode_hint: Tenminste 2 tekens (alleen alfanumeriek en underscores)
@@ -305,12 +350,12 @@ nl:
       week_interactions: interacties deze week
       week_users_active: actieve gebruikers deze week
       week_users_new: nieuwe gebruikers deze week
-      whitelist_mode: Modus voor de witte lijst
+      whitelist_mode: Beperkte federatiemodus
     domain_allows:
-      add_new: Domein voor de witte lijst
-      created_msg: Het domein is succesvol aan de witte lijst toegevoegd
-      destroyed_msg: Het domein is van de witte lijst verwijderd
-      undo: Van de witte lijst verwijderen
+      add_new: Federatie met domein goedkeuren
+      created_msg: Federatie met domein is succesvol goedgekeurd
+      destroyed_msg: Federatie met domein is afgekeurd
+      undo: Federatie met domein afkeuren
     domain_blocks:
       add_new: Nieuwe domeinblokkade toevoegen
       created_msg: Domeinblokkade wordt nu verwerkt
@@ -357,11 +402,12 @@ nl:
       delete: Verwijderen
       destroyed_msg: Deblokkeren e-maildomein geslaagd
       domain: Domein
-      empty: Momenteel staan er geen e-maildomeinen op de zwarte lijst.
+      empty: Momenteel worden er geen e-maildomeinen geblokkeerd.
+      from_html: van %{domain}
       new:
         create: Blokkeren
         title: Nieuw e-maildomein blokkeren
-      title: E-maildomeinen blokkeren
+      title: Geblokkeerde e-maildomeinen
     instances:
       by_domain: Domein
       delivery_available: Bezorging is mogelijk
@@ -374,7 +420,7 @@ nl:
         title: Moderatie
       private_comment: Privé-opmerking
       public_comment: Openbare opmerking
-      title: Andere domeinen
+      title: Federatie
       total_blocked_by_us: Door ons geblokkeerd
       total_followed_by_them: Door hun gevolgd
       total_followed_by_us: Door ons gevolgd
@@ -405,7 +451,7 @@ nl:
       pending: Aan het wachten op toestemming van de relayserver
       save_and_enable: Opslaan en inschakelen
       setup: Een verbinding met een relayserver maken
-      signatures_not_enabled: Federatierelays werken niet goed wanneer de veilige modus of de witte lijstmodus is ingeschakeld
+      signatures_not_enabled: Federatierelays werken niet goed wanneer de veilige modus of de beperkte federatiemodus is ingeschakeld
       status: Status
       title: Relayservers
     report_notes:
@@ -593,6 +639,7 @@ nl:
     add_new: Alias aanmaken
     created_msg: Succesvol een nieuwe alias aangemaakt. Je kunt nu met de verhuizing vanaf het oude account beginnen.
     deleted_msg: De alias is succesvol verwijderd. Verhuizen vanaf dat account naar dit account is niet meer mogelijk.
+    empty: Je hebt geen aliassen.
     hint_html: Wanneer je vanaf een ander account naar dit account wilt verhuizen, kun je hier een alias aanmaken. Dit is nodig voordat je verder kunt gaan met het verhuizen van volgers van het oude naar dit nieuwe account. Deze actie is op zich <strong>ongevaarlijk en omkeerbaar</strong>. <strong>De accountmigratie wordt gestart vanaf het oude account</strong>.
     remove: Alias ontkoppelen
   appearance:
@@ -678,6 +725,10 @@ 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
+  crypto:
+    errors:
+      invalid_key: is geen geldige Ed25519- of Curve25519-sleutel
+      invalid_signature: is geen geldige Ed25519-handtekening
   date:
     formats:
       default: "%d %b %Y"
@@ -800,13 +851,15 @@ nl:
       keybase:
         invalid_token: Keybasetokens zijn hashes van handtekeningen en moeten een lengte hebben van 66 hexadecimale tekens
         verification_failed: Keybase herkent deze token niet als een handtekening van Keybasegebruiker %{kb_username}. Probeer het opnieuw vanuit Keybase.
-      wrong_user: Er kan geen bewijs worden aangemaakt voor %{proving}   terwijl je bent ingelogd als %{current}. Log in als %{proving} en probeer het opnieuw.
+      wrong_user: Er kan geen bewijs worden aangemaakt voor %{proving} terwijl je bent ingelogd als %{current}. Log in als %{proving} en probeer het opnieuw.
     explanation_html: Hier kun je met behulp van cryptografie jouw andere identiteiten verbinden, zoals een Keybaseprofiel. Hiermee kunnen andere mensen jou versleutelde berichten sturen en inhoud die jij verstuurt vertrouwen.
     i_am_html: Ik ben %{username} op %{service}.
     identity: Identiteit
     inactive: Inactief
     publicize_checkbox: 'En toot dit:'
     publicize_toot: 'Het is bewezen! Ik ben %{username} op %{service}: %{url}'
+    remove: Bewijs uit account verwijderen
+    removed: Bewijs is succesvol uit account verwijderd
     status: Verificatiestatus
     view_proof: Bekijk bewijs
   imports:
@@ -852,6 +905,7 @@ nl:
   media_attachments:
     validations:
       images_and_video: Een video kan niet aan een toot met afbeeldingen worden gekoppeld
+      not_ready: Kan geen bestanden toevoegen die nog niet zijn verwerkt. Probeer het later opnieuw!
       too_many: Er kunnen niet meer dan 4 afbeeldingen toegevoegd worden
   migrations:
     acct: Verhuisd naar
@@ -860,7 +914,7 @@ nl:
     cancelled_msg: De doorverwijzing is succesvol geannuleerd.
     errors:
       already_moved: is hetzelfde account waarnaar je al naar toe bent verhuisd
-      missing_also_known_as: verwijst niet terug naar dit account
+      missing_also_known_as: is geen alias van dit account
       move_to_self: kan niet het huidige account zijn
       not_found: kon niet worden gevonden
       on_cooldown: Jouw laatste migratie is nog te kort geleden
@@ -872,6 +926,7 @@ nl:
     on_cooldown: Je hebt recentelijk jouw account verhuisd. Deze mogelijkheid is weer beschikbaar over %{count} dagen.
     past_migrations: Vorige migraties
     proceed_with_move: Volgers verhuizen
+    redirected_msg: Jouw account wordt nu doorverwezen naar %{acct}.
     redirecting_to: Jouw account wordt nu naar %{acct} doorverwezen.
     set_redirect: Doorverwijzing instellen
     warning:
@@ -885,6 +940,10 @@ nl:
       redirect: Jouw huidige accountprofiel wordt bijgewerkt met een doorverwijzingsmelding en wordt uitgesloten van zoekresultaten
   moderation:
     title: Moderatie
+  move_handler:
+    carry_blocks_over_text: Deze gebruiker is verhuisd vanaf %{acct}. Je hebt dat account geblokkeerd.
+    carry_mutes_over_text: Deze gebruiker is verhuisd vanaf %{acct}. Je hebt dat account genegeerd.
+    copy_account_note_text: 'Deze gebruiker is verhuisd vanaf %{acct}. Je hebt de volgende opmerkingen over dat account gemaakt:'
   notification_mailer:
     digest:
       action: Alle meldingen bekijken
@@ -1061,6 +1120,9 @@ nl:
     spam_detected: Dit is een automatisch gegenereerde rapportage. Er is spam gedetecteerd.
   statuses:
     attached:
+      audio:
+        one: "%{count} geluidsbestand"
+        other: "%{count} geluidsbestanden"
       description: 'Bijlagen: %{attached}'
       image:
         one: "%{count} afbeelding"
@@ -1073,6 +1135,8 @@ nl:
     disallowed_hashtags:
       one: 'bevatte een niet toegestane hashtag: %{tags}'
       other: 'bevatte niet toegestane hashtags: %{tags}'
+    errors:
+      in_reply_not_found: De toot waarop je probeert te reageren lijkt niet te bestaan.
     language_detection: Taal automatisch detecteren
     open_in_web: In de webapp openen
     over_character_limit: Limiet van %{max} tekens overschreden
@@ -1218,6 +1282,8 @@ nl:
       explanation: Je hebt een volledige back-up van jouw Mastodon-account opgevraagd. Het staat nu klaar om te worden gedownload!
       subject: Jouw archief staat klaar om te worden gedownload
       title: Archief ophalen
+    sign_in_token:
+      details: 'Hier zijn details van de poging:'
     warning:
       explanation:
         disable: Zolang jouw account is bevroren blijven jouw accountgegevens intact, maar kun je geen handelingen uitvoeren totdat het account is vrijgegeven.
diff --git a/config/locales/no.yml b/config/locales/no.yml
index ddd404848..13834b428 100644
--- a/config/locales/no.yml
+++ b/config/locales/no.yml
@@ -23,7 +23,7 @@
     hosted_on: Mastodon driftet på %{domain}
     instance_actor_flash: 'Denne brukeren er en virtuell aktør brukt til å representere selve serveren og ingen individuell bruker. Det brukes til foreningsformål og bør ikke blokkeres med mindre du vil blokkere hele instansen, hvor domeneblokkering bør brukes i stedet.
 
-'
+      '
     learn_more: Lær mer
     privacy_policy: Privatlivsretningslinjer
     see_whats_happening: Se hva som skjer
diff --git a/config/locales/oc.yml b/config/locales/oc.yml
index 0081cabb3..95d15ef85 100644
--- a/config/locales/oc.yml
+++ b/config/locales/oc.yml
@@ -39,6 +39,7 @@ oc:
       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 :'
       rejecting_media_title: Mèdias filtrats
       silenced_title: Servidors muts
+      suspended_title: Servidors suspenduts
     user_count_after:
       one: utilizaire
       other: utilizaires
@@ -1256,6 +1257,7 @@ oc:
     follow_limit_reached: Podètz pas sègre mai de %{limit} personas
     invalid_email: L’adreça de corrièl es invalida
     invalid_otp_token: Còdi d’autentificacion en dos temps invalid
+    invalid_sign_in_token: Còdi de seguretat invalid
     otp_lost_help_html: Se perdatz l’accès al dos, podètz benlèu contactar %{email}
     seamless_external_login: Sètz connectat via un servici extèrn, los paramètres de senhal e de corrièl son doncas pas disponibles.
     signed_in_as: 'Session a :'
diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml
index 1382fefa6..2e2a8d4eb 100644
--- a/config/locales/pt-BR.yml
+++ b/config/locales/pt-BR.yml
@@ -22,8 +22,8 @@ pt-BR:
     get_apps: Experimente um aplicativo
     hosted_on: Instância Mastodon em %{domain}
     instance_actor_flash: |
-      Esta conta é um ator virtual usado para representar a própria instância.
-      É usado para fins de federação e não deve ser bloqueado a menos que você queira bloquear toda a instância, nesse caso é melhor usar um bloqueador de domínios.
+      Esta conta é um ator virtual usado para representar o próprio servidor e não qualquer usuário individual.
+      É usado para propósitos de federação e não deve ser bloqueado a menos que queira bloquear toda a instância, o que no caso devia usar um bloqueio de domínio.
     learn_more: Saiba mais
     privacy_policy: Política de Privacidade
     see_whats_happening: Veja o que está acontecendo
diff --git a/config/locales/simple_form.ar.yml b/config/locales/simple_form.ar.yml
index 963e6f0b5..8d149d11f 100644
--- a/config/locales/simple_form.ar.yml
+++ b/config/locales/simple_form.ar.yml
@@ -15,6 +15,7 @@ ar:
         type_html: اختر ما تود إجراؤه على <strong>%{acct}</strong>
         warning_preset_id: اختياري. يمكنك إضافة نص مخصص إلى نهاية النموذج
       announcement:
+        all_day: إن أختير، سيتم عرض تواريخ النطاق الزمني فقط
         ends_at: اختياري. سيتم إلغاء نشر الإعلان تلقائيا على هذه الساعة
         scheduled_at: اتركه فارغا لنشر الإعلان في الحين
         starts_at: اختياري. في حالة ما كان إعلانك ذو صلة بنطاق زمني مخصّص
@@ -62,6 +63,8 @@ ar:
         text: هذا سوف يساعدنا في مراجعة تطبيقك
       sessions:
         otp: 'قم بإدخال رمز المصادقة بخطوتين الذي قام بتوليده تطبيق جهازك أو استخدم أحد رموز النفاذ الاحتياطية:'
+      tag:
+        name: يمكنك فقط تغيير غلاف الحروف ، على سبيل المثال ، لجعلها أكثر قابلية للقراءة
       user:
         chosen_languages: لن تظهر على الخيوط العمومية إلّا التبويقات المنشورة في اللغات المختارة
     labels:
@@ -88,6 +91,7 @@ ar:
           suspend: تعليق و حذف كافة بيانات الحساب
         warning_preset_id: استخدم نموذج تنبيه
       announcement:
+        all_day: حدث اليوم كله
         ends_at: نهاية الفعالية
         scheduled_at: جَدوِل المنشور
         starts_at: بداية الفعالية
@@ -143,6 +147,7 @@ ar:
         setting_use_blurhash: أظهر ألوانًا متدرّجة على الوسائط المَخفية
         setting_use_pending_items: الوضع البطيء
         severity: القوّة
+        sign_in_token_attempt: رمز الأمان
         type: صيغة الاستيراد
         username: اسم المستخدم
         username_or_email: اسم المستخدم أو كلمة السر
diff --git a/config/locales/simple_form.hy.yml b/config/locales/simple_form.hy.yml
index 90c89ced8..cd73ee679 100644
--- a/config/locales/simple_form.hy.yml
+++ b/config/locales/simple_form.hy.yml
@@ -12,3 +12,31 @@ hy:
       admin_account_action:
         include_statuses: օգտատէրը տեսնելու ա որ թթերն են առաջացրել մոդերացիայի գործողութիւն կամ զգուշացում։
         send_email_notification: օգտատէրը կը ստանայ բացատրութիւն այն մասին թէ ինչ է պատահել իրենց հաշուի հետ։
+    labels:
+      account:
+        fields:
+          name: Պիտակ
+          value: Պարունակություն
+      account_warning_preset:
+        title: Վերնագիր
+      admin_account_action:
+        type: Գործողություն
+        types:
+          none: Ոչինչ չանել
+          silence: Լուռ
+      defaults:
+        header: Վերնագիր
+        note: Բիո
+        password: Գաղտնաբառ
+        setting_theme: Կայքի թեման
+        severity: Սրություն
+        sign_in_token_attempt: Անվտանգության կոդ
+        username: Մուտքանուն
+      invite:
+        comment: Մեկնաբանություն
+    'no': Ոչ
+    recommended: Խորհուրդ է տրվում
+    required:
+      mark: "*"
+      text: պարտադիր
+    'yes': Այո
diff --git a/config/locales/simple_form.kab.yml b/config/locales/simple_form.kab.yml
index 06b4cfa69..d76af2c57 100644
--- a/config/locales/simple_form.kab.yml
+++ b/config/locales/simple_form.kab.yml
@@ -33,6 +33,8 @@ kab:
           value: Agbur
       account_migration:
         acct: Tansa n umiḍan amaynut
+      account_warning_preset:
+        title: Azwel
       admin_account_action:
         send_email_notification: Sileɣ aseqdac s imaylen
         type: Tigawt
@@ -42,6 +44,7 @@ kab:
           silence: Sgugem
       announcement:
         ends_at: Tagara n tedyant
+        text: Alɣu
       defaults:
         avatar: Avaṭar
         bot: Wagi d amiḍan aṛubut
@@ -58,6 +61,7 @@ kab:
         locked: Rgel amiḍan
         max_uses: Amḍan afellay n iseqdacen
         new_password: Awal uffir amaynut
+        note: Tameddurt
         otp_attempt: Tangalt n snat n tarayin
         password: Awal uffir
         setting_default_language: Tutlayt n tira
diff --git a/config/locales/simple_form.ku.yml b/config/locales/simple_form.ku.yml
new file mode 100644
index 000000000..cc251e86a
--- /dev/null
+++ b/config/locales/simple_form.ku.yml
@@ -0,0 +1 @@
+ckb-IR:
diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml
index c65608d95..3f4bd9b9e 100644
--- a/config/locales/simple_form.nl.yml
+++ b/config/locales/simple_form.nl.yml
@@ -8,6 +8,7 @@ nl:
         acct: Vul de gebruikersnaam@domein van het account in, waarnaartoe je wilt verhuizen
       account_warning_preset:
         text: Je kunt voor toots specifieke tekst gebruiken, zoals URL's, hashtags en vermeldingen
+        title: Optioneel. Niet zichtbaar voor de ontvanger
       admin_account_action:
         include_statuses: De gebruiker ziet welke toots verantwoordelijk zijn voor de moderatieactie of waarschuwing
         send_email_notification: De gebruiker ontvangt een uitleg over wat er met hun account is gebeurd
@@ -53,6 +54,9 @@ nl:
         whole_word: Wanneer het trefwoord of zinsdeel alfanumeriek is, wordt het alleen gefilterd wanneer het hele woord overeenkomt
       domain_allow:
         domain: Dit domein is in staat om gegevens van deze server op te halen, en binnenkomende gegevens worden verwerkt en opgeslagen
+      email_domain_block:
+        domain: Dit kan de domeinnaam zijn, onderdeel van het e-mailadres, het MX-record dat het desbetreffende domein afhandelt, of het IP-adres van de server dat het MX-record afhandelt. Deze worden gecontroleerd tijdens het registreren, waarna de registratie wordt afgewezen.
+        with_dns_records: Er wordt een poging gewaagd om de desbetreffende DNS-records op te zoeken, waarna de resultaten ook worden geblokkeerd
       featured_tag:
         name: 'Je wilt misschien een van deze gebruiken:'
       form_challenge:
@@ -78,6 +82,7 @@ nl:
         acct: Mastodonadres van het nieuwe account
       account_warning_preset:
         text: Tekst van voorinstelling
+        title: Titel
       admin_account_action:
         include_statuses: Gerapporteerde toots aan de e-mail toevoegen
         send_email_notification: Meld dit per e-mail aan de gebruiker
@@ -146,10 +151,13 @@ nl:
         setting_use_blurhash: Wazige kleurovergangen voor verborgen media tonen
         setting_use_pending_items: Langzame modus
         severity: Zwaarte
+        sign_in_token_attempt: Beveiligingscode
         type: Importtype
         username: Gebruikersnaam
         username_or_email: Gebruikersnaam of e-mailadres
         whole_word: Heel woord
+      email_domain_block:
+        with_dns_records: MX-records en IP-adressen van het domein toevoegen
       featured_tag:
         name: Hashtag
       interactions:
diff --git a/config/locales/simple_form.tr.yml b/config/locales/simple_form.tr.yml
index 60f7c9eac..ea913048d 100644
--- a/config/locales/simple_form.tr.yml
+++ b/config/locales/simple_form.tr.yml
@@ -8,6 +8,7 @@ tr:
         acct: Taşınmak istediğiniz hesabın kullanıcı-adı@alan-adını belirtin
       account_warning_preset:
         text: URL'ler, etiketler ve bahsetmeler gibi toot sözdizimleri kullanabilirsiniz
+        title: İsteğe bağlı. Alıcı tarafından görülemez
       admin_account_action:
         include_statuses: Kullanıcı hangi tootların denetleme eylemi ya da uyarısına neden olduğunu görecektir
         send_email_notification: Kullanıcı, hesabına ne olduğu hakkında bir bildirim alacak
@@ -147,10 +148,13 @@ tr:
         setting_use_blurhash: Gizli ortamlar için renkli gradyen göster
         setting_use_pending_items: Yavaş mod
         severity: Zorluk
+        sign_in_token_attempt: Güvenlik kodu
         type: Dosya türü
         username: Kullanıcı adınız
         username_or_email: Kullanıcı adı ya da email
         whole_word: Tüm dünya
+      email_domain_block:
+        with_dns_records: Alan adının MX kayıtlarını ve IP'lerini ekleyin
       featured_tag:
         name: Hashtag
       interactions:
diff --git a/config/locales/simple_form.ug.yml b/config/locales/simple_form.ug.yml
new file mode 100644
index 000000000..289acf241
--- /dev/null
+++ b/config/locales/simple_form.ug.yml
@@ -0,0 +1 @@
+ug:
diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml
index 10977aedc..a490efed5 100644
--- a/config/locales/simple_form.uk.yml
+++ b/config/locales/simple_form.uk.yml
@@ -54,6 +54,8 @@ uk:
         whole_word: Якщо пошукове слово або фраза містить тільки літери та цифри, воно має співпадати цілком
       domain_allow:
         domain: Цей домен зможе отримувати дані з цього серверу. Вхідні дані будуть оброблені та збережені
+      email_domain_block:
+        with_dns_records: Спроба визначення DNS-записів заданого домену буде здійснена, а результати також будуть занесені до чорного списку
       featured_tag:
         name: 'Можливо, ви захочете використовувати один з цих:'
       form_challenge:
@@ -148,10 +150,13 @@ uk:
         setting_use_blurhash: Відображати барвисті градієнти замість прихованих медіа
         setting_use_pending_items: Повільний режим
         severity: Серйозність
+        sign_in_token_attempt: Код безпеки
         type: Тип імпорту
         username: Ім'я користувача
         username_or_email: Ім'я користувача або електронна пошта
         whole_word: Ціле слово
+      email_domain_block:
+        with_dns_records: Включити MX записи та IP-адреси домену
       featured_tag:
         name: Хештеґ
       interactions:
diff --git a/config/locales/simple_form.vi.yml b/config/locales/simple_form.vi.yml
index a1fc0d9bb..5251ab114 100644
--- a/config/locales/simple_form.vi.yml
+++ b/config/locales/simple_form.vi.yml
@@ -22,30 +22,30 @@ vi:
         starts_at: Tùy chọn. Trong trường hợp thông báo của bạn đăng vào một khoảng thời gian cụ thể
         text: Bạn có thể sử dụng tút dạng cú pháp. Cố gắng ngắn gọn bởi vì thông báo sẽ xuất hiện trên màn hình điện thoại của người dùng
       defaults:
-        autofollow: Những người đăng ký thông qua lời mời sẽ tự động mến mộ bạn
+        autofollow: Những người đăng ký thông qua lời mời sẽ tự động theo dõi bạn
         avatar: PNG, GIF hoặc JPG. Kích cỡ tối đa %{size}. Sẽ bị nén xuống %{dimensions}px
-        bot: Tài khoản này chủ yếu tự động thực hiện các hành động và không cần thiết mến mộ
+        bot: Tài khoản này tự động thực hiện các hành động và không cần thiết theo dõi
         context: Một hoặc nhiều bối cảnh nơi bộ lọc nên áp dụng
         current_password: Vì mục đích bảo mật, vui lòng nhập mật khẩu của tài khoản hiện tại
         current_username: Để xác nhận, vui lòng nhập tên người dùng của tài khoản hiện tại
         digest: Chỉ được gửi sau một thời gian dài không hoạt động và chỉ khi bạn đã nhận được bất kỳ tin nhắn cá nhân nào khi bạn vắng mặt
-        discoverable: Danh sách thành viên là một cách hay để bạn tìm kiếm người bạn muốn mến mộ
+        discoverable: Danh sách thành viên là một cách hay để bạn tìm kiếm người bạn muốn theo dõi
         email: Bạn sẽ được gửi một email xác nhận
         fields: Bạn có thể tạo tối đa 4 mục được hiển thị dưới dạng bảng trên hồ sơ của bạn
         header: PNG, GIF hoặc JPG. Kích cỡ tối đa %{size}. Sẽ bị nén xuống %{dimensions}px
         inbox_url: Sao chép URL của relay mà bạn muốn sử dụng
         irreversible: Các tút đã lọc sẽ không thể phục hồi, kể cả khi bộ lọc có bị xóa
         locale: Ngôn ngữ của giao diện, email và thông báo đẩy
-        locked: Yêu cầu bạn chấp thuận thủ công người mến mộ
+        locked: Yêu cầu bạn chấp thuận thủ công người theo dõi
         password: Sử dụng ít nhất 8 ký tự
         phrase: Sẽ được hiện thị trong văn bản hoặc cảnh báo nội dung của một tút
         scopes: API nào ứng dụng sẽ được phép truy cập. Nếu bạn chọn phạm vi cấp cao nhất, bạn không cần chọn từng phạm vi.
         setting_aggregate_reblogs: Đừng hiện những chia sẻ mới cho những tút đã chia sẻ gần đây (chỉ ảnh hưởng đến các chia sẻ mới)
-        setting_default_sensitive: Ảnh & video nhạy cảm được ẩn theo mặc định và có thể được hiển thị bằng một cú nhấp chuột
+        setting_default_sensitive: Ảnh/video/âm thanh nhạy cảm được ẩn theo mặc định và chỉ hiển thị nếu nhấp chuột
         setting_display_media_default: Ẩn ảnh hoặc video được đánh dấu là nhạy cảm
         setting_display_media_hide_all: Luôn ẩn ảnh và video
         setting_display_media_show_all: Luôn hiện ảnh và video
-        setting_hide_network: Bạn mến mộ ai và ai mến mộ bạn sẽ không được hiển thị trên hồ sơ của bạn
+        setting_hide_network: Bạn theo dõi ai và ai theo dõi bạn sẽ không được hiển thị trên hồ sơ của bạn
         setting_noindex: Ảnh hưởng đến trang cá nhân và tút của bạn
         setting_show_application: Tên ứng dụng bạn sử dụng để đăng tút sẽ được hiển thị trong chi tiết bài đăng
         setting_use_blurhash: Hình ảnh mờ dựa trên màu sắc của hình ảnh nhạy cảm nhưng sẽ che hết chi tiết
@@ -101,7 +101,7 @@ vi:
         starts_at: Bắt đầu sự kiện
         text: Thông báo
       defaults:
-        autofollow: Mời mến mộ tài khoản của bạn
+        autofollow: Mời theo dõi tài khoản của bạn
         avatar: Ảnh đại diện
         bot: Đây là tài khoản bot
         chosen_languages: Chọn ngôn ngữ
@@ -147,7 +147,7 @@ vi:
         setting_system_font_ui: Sử dụng phông chữ mặc định của hệ thống
         setting_theme: Giao diện trang web
         setting_trends: Hiển thị xu hướng hôm nay
-        setting_unfollow_modal: Yêu cầu xác nhận trước khi hủy mến mộ ai đó
+        setting_unfollow_modal: Yêu cầu xác nhận trước khi hủy theo dõi ai đó
         setting_use_blurhash: Làm mờ trước ảnh/video nhạy cảm
         setting_use_pending_items: Không tự động cập nhật bảng tin
         severity: Mức độ nghiêm trọng
@@ -161,9 +161,9 @@ vi:
       featured_tag:
         name: Hashtag
       interactions:
-        must_be_follower: Chặn thông báo từ những người không mến mộ bạn
-        must_be_following: Chặn thông báo từ những người bạn không mến mộ
-        must_be_following_dm: Chặn tin nhắn từ những người bạn không mến mộ
+        must_be_follower: Chặn thông báo từ những người không theo dõi bạn
+        must_be_following: Chặn thông báo từ những người bạn không theo dõi
+        must_be_following_dm: Chặn tin nhắn từ những người bạn không theo dõi
       invite:
         comment: Bình luận
       invite_request:
@@ -171,8 +171,8 @@ vi:
       notification_emails:
         digest: Gửi email định kỳ
         favourite: Ai đó tâm đắc tút của bạn
-        follow: Ai đó mến mộ bạn
-        follow_request: Ai đó yêu cầu mến mộ bạn
+        follow: Ai đó theo dõi bạn
+        follow_request: Ai đó yêu cầu theo dõi bạn
         mention: Ai đó nhắc đến bạn
         pending_account: Có tài khoản mới cần phê duyệt
         reblog: Ai đó chia sẻ tút của bạn
diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml
index 3b581da6e..6bb1053a8 100644
--- a/config/locales/simple_form.zh-CN.yml
+++ b/config/locales/simple_form.zh-CN.yml
@@ -55,8 +55,8 @@ zh-CN:
       domain_allow:
         domain: 该站点将能够从该服务器上拉取数据,并且从那里发过来的数据也会被处理和存储。
       email_domain_block:
-        domain: 这里可以是邮箱地址中的域名部分、域名解析到的 MX 记录,或者 MX 记录解析到的域名。这些检查会在用户注册时进行,如果在黑名单中,那么注册会被拒绝。
-        with_dns_records: Mastodon 会尝试解析所给域名的 DNS 记录,然后把解析结果一并加入黑名单
+        domain: 这里可以是邮箱地址中的域名部分、域名解析到的 MX 记录,或者 MX 记录解析到的域名。这些检查会在用户注册时进行,如果邮箱域名被封禁,那么注册会被拒绝。
+        with_dns_records: Mastodon 会尝试解析所给域名的 DNS 记录,然后把解析结果一并封禁
       featured_tag:
         name: 你可能想要使用以下之一:
       form_challenge:
diff --git a/config/locales/sv.yml b/config/locales/sv.yml
index c2de32f97..43c4a2a7a 100644
--- a/config/locales/sv.yml
+++ b/config/locales/sv.yml
@@ -23,7 +23,7 @@ sv:
     hosted_on: Mastodon-värd på %{domain}
     instance_actor_flash: 'Detta konto är en virtuell agent som används för att representera servern själv och inte någon individuell användare. Det används av sammanslutningsskäl och ska inte blockeras såvitt du inte vill blockera hela instansen, och för detta fall ska domänblockering användas.
 
-'
+      '
     learn_more: Lär dig mer
     privacy_policy: Integritetspolicy
     see_whats_happening: Se vad som händer
diff --git a/config/locales/th.yml b/config/locales/th.yml
index cb6e93f78..f5bab5d30 100644
--- a/config/locales/th.yml
+++ b/config/locales/th.yml
@@ -31,7 +31,7 @@ th:
     status_count_before: ผู้สร้าง
     tagline: ติดตามเพื่อน ๆ และค้นพบเพื่อนใหม่ ๆ
     terms: เงื่อนไขการให้บริการ
-    unavailable_content: เนื้อหาไม่พร้อมใช้งาน
+    unavailable_content: เซิร์ฟเวอร์ที่มีการควบคุม
     unavailable_content_description:
       domain: เซิร์ฟเวอร์
       reason: เหตุผล
@@ -528,6 +528,7 @@ th:
         title: สื่อ
       no_media: ไม่มีสื่อ
       title: สถานะบัญชี
+      with_media: มีสื่อ
     tags:
       context: บริบท
       directory: ในไดเรกทอรี
@@ -781,6 +782,10 @@ th:
     set_redirect: ตั้งการเปลี่ยนเส้นทาง
   moderation:
     title: การควบคุม
+  move_handler:
+    carry_blocks_over_text: ผู้ใช้นี้ได้ย้ายจาก %{acct} ซึ่งคุณได้ปิดกั้น
+    carry_mutes_over_text: ผู้ใช้นี้ได้ย้ายจาก %{acct} ซึ่งคุณได้ซ่อน
+    copy_account_note_text: 'ผู้ใช้นี้ได้ย้ายจาก %{acct} นี่คือหมายเหตุก่อนหน้าของคุณเกี่ยวกับผู้ใช้:'
   notification_mailer:
     digest:
       action: ดูการแจ้งเตือนทั้งหมด
diff --git a/config/locales/tr.yml b/config/locales/tr.yml
index 41c39ba1f..650166781 100644
--- a/config/locales/tr.yml
+++ b/config/locales/tr.yml
@@ -40,6 +40,7 @@ tr:
       domain: Sunucu
       reason: Sebep
       rejecting_media: 'Bu sunuculardaki medya dosyaları işlenmeyecek ya da saklanmayacak, ve hiçbir küçük resim gösterilmeyecektir, dolayısıyla orjinal dosyaya manuel tıklama gerekecektir:'
+      rejecting_media_title: Filtrelenmiş medya
       silenced: 'Bu sunuculardan gelen gönderiler genel zaman çizelgelerinde ve konuşmalarda gizlenecek ve siz onları takip etmediğiniz sürece, kullanıcıların etkileşimlerinden hiçbir bildirim alınmayacaktır:'
       suspended: 'Bu sunuculardaki hiçbir veri işlenmeyecek, saklanmayacak veya değiş tokuş edilmeyecektir, dolayısıyla bu sunuculardaki kullanıcılarla herhangi bir etkileşim ya da iletişim imkansız olacaktır:'
     unavailable_content_html: Mastodon, genel olarak fediverse'teki herhangi bir sunucudan içerik görüntülemenize ve kullanıcılarıyla etkileşim kurmanıza izin verir. Bunlar, bu sunucuda yapılmış olan istisnalardır.
@@ -236,6 +237,9 @@ tr:
         update_custom_emoji: "%{name} %{target} emojiyi güncelledi"
         update_status: "%{name}, %{target} kullanıcısının durumunu güncelledi"
       deleted_status: "(silinmiş durum)"
+      empty: Kayıt bulunamadı.
+      filter_by_action: Eyleme göre filtre
+      filter_by_user: Kullanıcıya göre filtre
       title: Denetim günlüğü
     announcements:
       destroyed_msg: Duyuru başarıyla silindi!
@@ -364,6 +368,7 @@ tr:
       destroyed_msg: E-posta alan adı kara listeden başarıyla silindi
       domain: Alan adı
       empty: Şu anda hiçbir e-posta alan adı kara listeye alınmadı.
+      from_html: "%{domain} alan adından"
       new:
         create: Alan adı ekle
         title: Yeni e-posta kara liste girişi
@@ -543,6 +548,9 @@ tr:
       trends:
         desc_html: Şu anda trend olan ve daha önce incelenen etiketleri herkese açık olarak göster
         title: Trend etiketler
+    site_uploads:
+      delete: Yüklenen dosyayı sil
+      destroyed_msg: Site yüklemesi başarıyla silindi!
     statuses:
       back_to_account: Hesap sayfasına geri dön
       batch:
@@ -596,6 +604,7 @@ tr:
     add_new: Takma ad oluştur
     created_msg: Yeni takma ad başarıyla oluşturuldu. Artık eski hesaptan taşınmayı başlatabilirsiniz.
     deleted_msg: Yeni takma ad başarıyla kaldırıldı. O hesaptan bu hesaba taşınmak artık mümkün değil.
+    empty: Takma adınız yok.
     hint_html: Başka bir hesaptan bu hesaba taşınmak istiyorsanız, takipçileri eski hesaptan bu hesaba taşımadan önce gerekli olan takma adı burada oluşturabilirsiniz. Bu eylem kendi başına <strong>zararsızdır ve geri döndürülebilir</strong>. <strong>Hesap taşıma işlemi eski hesaptan başlatılır</strong>.
     remove: Takma adların bağlantısını kaldır
   appearance:
@@ -1063,6 +1072,9 @@ tr:
     spam_detected: Bu otomatik bir şikayettir. Spam tespit edildi.
   statuses:
     attached:
+      audio:
+        one: "%{count} ses"
+        other: "%{count} ses"
       description: 'Ekli: %{attached}'
       image:
         one: "%{count} görsel"
@@ -1259,6 +1271,7 @@ tr:
     follow_limit_reached: "%{limit} kişiden daha fazlasını takip edemezsiniz"
     invalid_email: E-posta adresiniz geçersiz
     invalid_otp_token: İki-faktörlü kodunuz geçersiz
+    invalid_sign_in_token: Geçersiz güvenlik kodu
     otp_lost_help_html: Her ikisine de erişiminizi kaybettiyseniz, %{email} ile irtibata geçebilirsiniz
     seamless_external_login: Harici bir servis aracılığıyla oturum açtınız, bu nedenle parola ve e-posta ayarları mevcut değildir.
     signed_in_as: 'Giriş yapan:'
diff --git a/config/locales/ug.yml b/config/locales/ug.yml
new file mode 100644
index 000000000..7b709a35e
--- /dev/null
+++ b/config/locales/ug.yml
@@ -0,0 +1,20 @@
+---
+ug:
+  errors:
+    '400': The request you submitted was invalid or malformed.
+    '403': You don't have permission to view this page.
+    '404': The page you are looking for isn't here.
+    '406': This page is not available in the requested format.
+    '410': The page you were looking for doesn't exist here anymore.
+    '422': 
+    '429': Too many requests
+    '500': 
+    '503': The page could not be served due to a temporary server failure.
+  invites:
+    expires_in:
+      '1800': 30 minutes
+      '21600': 6 hours
+      '3600': 1 hour
+      '43200': 12 hours
+      '604800': 1 week
+      '86400': 1 day
diff --git a/config/locales/uk.yml b/config/locales/uk.yml
index 6ff21b068..8adbaeb54 100644
--- a/config/locales/uk.yml
+++ b/config/locales/uk.yml
@@ -23,7 +23,7 @@ uk:
     hosted_on: Mastodon розміщено на %{domain}
     instance_actor_flash: 'Цей обліковий запис є віртуальною особою, яка використовується для представлення самого сервера, а не певного користувача. Він використовується для потреб федерації і не повинен бути заблокований, якщо тільки ви не хочете заблокувати весь сервер, у цьому випадку ви повинні скористатися блокуванням домену.
 
-'
+      '
     learn_more: Дізнатися більше
     privacy_policy: Політика приватності
     see_whats_happening: Погляньте, що відбувається
@@ -42,8 +42,11 @@ uk:
       domain: Сервер
       reason: Причина
       rejecting_media: 'Медіа файли з цих серверів не будуть оброблятися або зберігатись, а мініатюри відображатись. Щоб побачити оригінальний файл, треба буде натиснути на посилання:'
+      rejecting_media_title: Відфільтровані медіа
       silenced: 'Повідомлення з цих серверів будуть приховані в публічних стрічках та розмовах, також ви не отримуватимете сповіщень щодо взаємодій з їх користувачами, якщо ви їх не відстежуєте:'
+      silenced_title: Заглушені сервери
       suspended: 'Жодна інформація з цих серверів не буде оброблена, збережена чи передана, що робить спілкування з користувачами цих серверів неможливим:'
+      suspended_title: Призупинені сервери
     unavailable_content_html: Mastodon зазвичай дозволяє вам взаємодіяти з користувачами будь-яких серверів в Федіверсі та переглядати їх контент. Ось винятки, які було зроблено на цьому конкретному сервері.
     user_count_after:
       few: користувача
@@ -313,6 +316,7 @@ uk:
       listed: У списку
       new:
         title: Додати новий емодзі
+      not_permitted: Вам не дозволено виконувати цю дію
       overwrite: Переписати
       shortcode: Шорткод
       shortcode_hint: Мінімум два символи, тільки цифрові й латинські символи або підкреслення
@@ -595,6 +599,7 @@ uk:
         title: Популярні хештеги
     site_uploads:
       delete: Видалити завантажений файл
+      destroyed_msg: Завантаження сайту успішно видалено!
     statuses:
       back_to_account: Назад до сторінки облікового запису
       batch:
@@ -734,6 +739,10 @@ uk:
     hint_html: "<strong>Підказка:</strong> ми не будемо запитувати ваш пароль впродовж наступної години."
     invalid_password: Невірний пароль
     prompt: Підтвердіть пароль для продовження
+  crypto:
+    errors:
+      invalid_key: не є припустимим ключем Ed25519 або Curve25519
+      invalid_signature: не є дійсним підписом Ed25519
   date:
     formats:
       default: "%b %d, %Y"
@@ -935,6 +944,7 @@ uk:
     on_cooldown: Нещодавно ви вже перенесли ваш обліковий запис. Функція переносу стане доступною знову через %{count} днів.
     past_migrations: Попередні міграції
     proceed_with_move: Перемістити підписників
+    redirected_msg: Ваш обліковий запис зараз перенаправляється до %{acct}.
     redirecting_to: Ваш обліковий запис перенаправляється до %{acct}.
     set_redirect: Встановити перенаправлення
     warning:
@@ -948,6 +958,10 @@ uk:
       redirect: Профіль цього облікового запису буде оновлено з заміткою про перенаправлення, а також виключений з пошуку
   moderation:
     title: Модерація
+  move_handler:
+    carry_blocks_over_text: Цей користувач переїхав з %{acct}, який ви заблокували.
+    carry_mutes_over_text: Цей користувач переїхав з %{acct}, який ви заглушили.
+    copy_account_note_text: 'Цей користувач був переміщений з %{acct}, ось ваші попередні нотатки:'
   notification_mailer:
     digest:
       action: Показати усі сповіщення
@@ -1217,6 +1231,12 @@ uk:
       explanation: Ви робили запит повної резервної копії вашого облікового запису Mastodon. Вона вже готова для завантаження!
       subject: Ваш архів готовий до завантаження
       title: Винесення архіву
+    sign_in_token:
+      details: 'Детальніше про спробу входу:'
+      explanation: 'Ми виявили спробу входу до вашого облікового запису з невідомої IP-адреси. Якщо це ви, будь ласка, введіть наведений нижче код безпеки на сторінці входу:'
+      further_actions: 'Якщо це були не ви, будь ласка, змініть свій пароль та увімкніть двофакторну автентифікацію для вашого облікового запису. Ви можете зробити це тут:'
+      subject: Будь ласка, підтвердіть спробу входу
+      title: Спроба входу
     warning:
       explanation:
         disable: Поки ваш обліковий запис заморожений, його дані залишаються незмінними. Проте ви не зможете виконувати будь-які дії над обліковим записом, доки його не буде розблоковано.
@@ -1254,11 +1274,14 @@ uk:
       title: Ласкаво просимо, %{name}!
   users:
     follow_limit_reached: Не можна слідкувати більш ніж за %{limit} людей
+    generic_access_help_html: Не вдається отримати доступ до облікового запису? Ви можете зв'язатися з %{email} для допомоги
     invalid_email: Введена адреса e-mail неправильна
     invalid_otp_token: Введено неправильний код
+    invalid_sign_in_token: Хибний код безпеки
     otp_lost_help_html: Якщо ви втратили доступ до обох, ви можете отримати доступ з %{email}
     seamless_external_login: Ви увійшли за допомогою зовнішнього сервісу, тому налаштування паролю та електронної пошти недоступні.
     signed_in_as: 'Ви увійшли як:'
+    suspicious_sign_in_confirmation: Здається, ви не входили до цього облікового запису з цього пристрою, а також не входили взагалі деякий час, таким чином ми надсилаємо код безпеки на вашу адресу електронної пошти, щоб підтвердити, що це ви.
   verification:
     explanation_html: 'Володіння посиланнями у профілі <strong>можна підтвердити</strong>. Для цього на зазначеному сайті повинна міститися посилання на ваш профіль Mastodon, а у самому посиланні <strong>повинен</strong> бути атрибут <code>rel="me"</code>. Що всередині посилання - значення не має. Ось вам приклад посилання:'
     verification: Підтвердження
diff --git a/config/locales/vi.yml b/config/locales/vi.yml
index 853a1ee13..d952f05c9 100644
--- a/config/locales/vi.yml
+++ b/config/locales/vi.yml
@@ -3,27 +3,27 @@ vi:
   about:
     about_hashtag_html: Đây là các tút công khai được gắn thẻ <strong>#%{hashtag}</strong>. Chỉ cần bạn có tài khoản ở bất cứ đâu trong mạng liên kết là bạn có thể tương tác với chúng.
     about_mastodon_html: 'Mạng xã hội của tương lai: Không quảng cáo, không theo dõi người dùng và phi tập quyền! Làm chủ quyền riêng tư của bạn với Mastodon!'
-    about_this: Giới thiệu
+    about_this: Trong khoảng
     active_count_after: hoạt động
     active_footnote: Người dùng hoạt động hàng tháng
     administered_by: 'Quản trị viên:'
     api: API
-    apps: App điện thoại
-    apps_platforms: Sử dụng Mastodon trên iOS, Android và các nền tảng khác
-    browse_directory: Duyệt danh sách thành viên để tìm bạn bè
+    apps: Ứng dụng di động
+    apps_platforms: Lướt Mastodon trên iOS, Android và các nền tảng khác
+    browse_directory: Những ai đã tham gia máy chủ này?
     browse_local_posts: Xem thử những tút công khai gần đây
     browse_public_posts: Xem thử những tút công khai trên mạng Mastodon
-    contact: 'Liên lạc:'
+    contact: Liên lạc
     contact_missing: Chưa thiết lập
     contact_unavailable: N/A
     discover_users: Khám phá người dùng
     documentation: Tài liệu
-    federation_hint_html: Với tài khoản trên %{instance}, bạn sẽ có thể giao tiếp với mọi người trên bất kỳ máy chủ Mastodon nào và hơn thế nữa.
+    federation_hint_html: Đăng ký tài khoản %{instance}, bạn có thể giao tiếp với mọi người trên bất kỳ máy chủ Mastodon nào và hơn thế nữa.
     get_apps: Dùng thử ứng dụng di động
     hosted_on: "%{domain} vận hành nhờ Mastodon"
     instance_actor_flash: 'Tài khoản này là một tác nhân ảo được sử dụng để đại diện cho chính máy chủ chứ không phải bất kỳ người dùng cá nhân nào. Nó được sử dụng cho mục đích liên kết và không nên bị chặn trừ khi bạn muốn chặn toàn bộ máy chủ.
 
-'
+      '
     learn_more: Tìm hiểu thêm
     privacy_policy: Chính sách bảo mật
     see_whats_happening: Xem những gì đang xảy ra
@@ -39,37 +39,40 @@ vi:
       domain: Máy chủ
       reason: Lý do
       rejecting_media: 'Ảnh và video từ những máy chủ sau sẽ không được xử lý, lưu trữ và hiển thị hình thu nhỏ, bắt buộc nhấp thủ công vào tệp gốc để xem:'
-      silenced: 'Tút từ những máy chủ sau sẽ bị ẩn trên bảng tin, trong tin nhắn và không có thông báo nào được tạo từ các tương tác của người dùng của họ, trừ khi bạn có mến mộ người dùng của họ:'
+      rejecting_media_title: Ảnh và các thứ đã lọc
+      silenced: 'Tút từ những máy chủ sau sẽ bị ẩn trên bảng tin, trong tin nhắn và không có thông báo nào được tạo từ các tương tác của người dùng của họ, trừ khi bạn có theo dõi người dùng của họ:'
+      silenced_title: Những máy chủ đã bị tạm ẩn
       suspended: 'Những máy chủ sau sẽ không được xử lý, lưu trữ hoặc trao đổi nội dung. Mọi tương tác hoặc giao tiếp với người dùng từ các máy chủ này cũng bị cấm:'
+      suspended_title: Những máy chủ bị vô hiệu hóa
     unavailable_content_html: Mastodon cho phép bạn xem nội dung và tương tác với người dùng từ bất kỳ máy chủ nào khác trong mạng liên kết. Còn máy chủ này có những ngoại lệ riêng.
     user_count_after:
       other: người dùng
     user_count_before: Nhà của
     what_is_mastodon: Mastodon là gì?
   accounts:
-    choices_html: 'Những người %{name} đang mến mộ:'
-    endorsements_hint: Bạn có thể vinh danh những người bạn mến mộ và họ sẽ hiển thị ở giao diện web.
+    choices_html: 'Những người %{name} theo dõi:'
+    endorsements_hint: Bạn có thể vinh danh những người bạn theo dõi và họ sẽ hiển thị ở giao diện web.
     featured_tags_hint: Bạn có thể cho biết những hashtag thường dùng ở đây.
-    follow: Mến mộ
+    follow: Theo dõi
     followers:
-      other: Người mến mộ
-    following: Đang mến mộ
+      other: Người theo dõi
+    following: Đang theo dõi
     joined: Đã tham gia %{date}
     last_active: hoạt động gần đây
     link_verified_on: Liên kết này đã được xác thực quyền sở hữu vào %{date}
-    media: Ảnh & video
+    media: Đa phương tiện
     moved_html: "%{name} đã dời sang %{new_profile_link}:"
     network_hidden: Thông tin này không còn tồn tại
     never_active: Chưa có
     nothing_here: Chưa đăng tút nào cả!
-    people_followed_by: Những người mà %{name} mến mộ
-    people_who_follow: Những người mến mộ %{name}
+    people_followed_by: Những người %{name} theo dõi
+    people_who_follow: Những người theo dõi %{name}
     pin_errors:
-      following: Để vinh danh người nào đó, bạn cần mến mộ họ trước
+      following: Để vinh danh người nào đó, bạn phải theo dõi họ trước
     posts:
       other: Tút
     posts_tab_heading: Tút
-    posts_with_replies: Phản hồi
+    posts_with_replies: Trả lời
     reserved_username: Tên người dùng đã có rồi
     roles:
       admin: Quản trị viên
@@ -77,7 +80,7 @@ vi:
       group: Nhóm
       moderator: Kiểm duyệt viên
     unavailable: Tài khoản không còn nữa
-    unfollow: Bỏ mến mộ
+    unfollow: Ngưng theo dõi
   admin:
     account_actions:
       action: Thực hiện các hành động
@@ -116,8 +119,8 @@ vi:
       email_status: Trạng thái email
       enable: Phê duyệt
       enabled: Đã duyệt
-      followers: Người mến mộ
-      follows: Đang mến mộ
+      followers: Người theo dõi
+      follows: Đang theo dõi
       header: Ảnh bìa
       inbox_url: URL hộp thư đến
       invited_by: Được mời bởi
@@ -360,7 +363,7 @@ vi:
         create: Tạo chặn
         hint: Chặn máy chủ sẽ không ngăn việc hiển thị tút của máy chủ đó trong cơ sở dữ liệu, nhưng sẽ khiến tự động áp dụng các phương pháp kiểm duyệt cụ thể trên các tài khoản đó.
         severity:
-          desc_html: "<strong>Tạm ẩn</strong> sẽ làm cho bài đăng của tài khoản trở nên vô hình đối với bất kỳ ai không mến mộ họ. <strong>Vô hiệu hóa</strong> sẽ xóa tất cả nội dung, phương tiện và dữ liệu khác của tài khoản. Sử dụng <strong>Cấm upload</strong> nếu bạn chỉ muốn cấm tải lên ảnh và video."
+          desc_html: "<strong>Tạm ẩn</strong> sẽ làm cho bài đăng của tài khoản trở nên vô hình đối với bất kỳ ai không theo dõi họ. <strong>Vô hiệu hóa</strong> sẽ xóa tất cả nội dung, phương tiện và dữ liệu khác của tài khoản. Sử dụng <strong>Cấm upload</strong> nếu bạn chỉ muốn cấm tải lên ảnh và video."
           noop: Không hoạt động
           silence: Tạm ẩn
           suspend: Vô hiệu hóa
@@ -413,8 +416,8 @@ vi:
       public_comment: Bình luận công khai
       title: Mạng liên kết
       total_blocked_by_us: Bị chặn bởi chúng ta
-      total_followed_by_them: Được họ mến mộ
-      total_followed_by_us: Được chúng ta mến mộ
+      total_followed_by_them: Được họ theo dõi
+      total_followed_by_us: Được quản trị viên theo dõi
       total_reported: Báo cáo tổng hợp
       total_storage: Ảnh và video
     invites:
@@ -432,7 +435,7 @@ vi:
     relays:
       add_new: Thêm liên hợp mới
       delete: Loại bỏ
-      description_html: "<strong>Liên hợp</strong> nghĩa là cho phép bài đăng công khai của máy chủ này xuất hiện trên bảng tin của máy chủ khác và ngược lại. <strong>Nó giúp các máy chủ vừa và nhỏ tiếp cận nội dung từ các máy chủ lớn hơn</strong>. Nếu không chọn, người dùng ở máy chủ này vẫn có thể mến mộ người dùng khác trên các máy chủ khác."
+      description_html: "<strong>Liên hợp</strong> nghĩa là cho phép bài đăng công khai của máy chủ này xuất hiện trên bảng tin của máy chủ khác và ngược lại. <strong>Nó giúp các máy chủ vừa và nhỏ tiếp cận nội dung từ các máy chủ lớn hơn</strong>. Nếu không chọn, người dùng ở máy chủ này vẫn có thể theo dõi người dùng khác trên các máy chủ khác."
       disable: Tắt
       disabled: Đã tắt
       enable: Kích hoạt
@@ -487,7 +490,7 @@ vi:
         title: Công khai số liệu thống kê về hoạt động người dùng
       bootstrap_timeline_accounts:
         desc_html: Tách tên người dùng bằng dấu phẩy. Chỉ có hiệu lực với các tài khoản công khai thuộc máy chủ. Mặc định khi trống là tất cả quản trị viên.
-        title: Gợi ý mến mộ cho người dùng mới
+        title: Gợi ý theo dõi cho người dùng mới
       contact_information:
         email: Email liên hệ
         username: Tên tài khoản liên hệ
@@ -505,7 +508,7 @@ vi:
       domain_blocks_rationale:
         title: Hiển thị lý do
       enable_bootstrap_timeline_accounts:
-        title: Gợi ý mến mộ cho người dùng mới
+        title: Gợi ý theo dõi cho người dùng mới
       hero:
         desc_html: Hiển thị trên trang chủ. Kích cỡ tối thiểu 600x100px. Khi không được đặt, sử dụng hình thu nhỏ của máy chủ
         title: Hình ảnh giới thiệu
@@ -584,7 +587,7 @@ vi:
       deleted: Đã xóa
       failed_to_execute: Không thể thực thi
       media:
-        title: Ảnh & video
+        title: Đa phương tiện
       no_media: Không có ảnh hoặc video
       no_status_selected: Không có tút nào thay đổi vì không có tút nào được chọn
       title: Trạng thái tài khoản
@@ -661,14 +664,14 @@ vi:
   auth:
     apply_for_account: Đăng ký
     change_password: Mật khẩu
-    checkbox_agreement_html: Tôi đồng ý với các <a href="%{rules_path}" target="_blank">quy tắc</a> và <a href="%{terms_path}" target="_blank">điều khoản dịch vụ</a>.
+    checkbox_agreement_html: Tôi đồng ý với các <a href="%{rules_path}" target="_blank">quy tắc</a> và <a href="%{terms_path}" target="_blank">điều khoản dịch vụ</a>
     checkbox_agreement_without_rules_html: Tôi đồng ý với <a href="%{terms_path}" target="_blank">điều khoản dịch vụ</a>
     delete_account: Xóa tài khoản
     delete_account_html: Nếu bạn muốn xóa tài khoản của mình, hãy <a href="%{path}">yêu cầu tại đây</a>. Bạn sẽ được yêu cầu xác nhận.
     description:
       prefix_invited_by_user: "@%{name} mời bạn tham gia máy chủ Mastodon này!"
       prefix_sign_up: Tham gia Mastodon ngay hôm nay!
-      suffix: Với tài khoản, bạn sẽ có thể mến mộ mọi người, đăng tút và nhắn tin với người dùng từ bất kỳ máy chủ Mastodon khác!
+      suffix: Với tài khoản, bạn sẽ có thể theo dõi mọi người, đăng tút và nhắn tin với người dùng từ bất kỳ máy chủ Mastodon khác!
     didnt_get_confirmation: Gửi lại email xác thực?
     forgot_password: Quên mật khẩu
     invalid_reset_password_token: Mã đặt lại mật khẩu không hợp lệ hoặc hết hạn. Vui lòng yêu cầu một cái mới.
@@ -698,17 +701,17 @@ vi:
       redirecting_to: Tài khoản của bạn không hoạt động vì hiện đang chuyển hướng đến %{acct}.
     trouble_logging_in: Gặp sự cố khi đăng nhập?
   authorize_follow:
-    already_following: Bạn đã mến mộ người dùng này
-    already_requested: Bạn vừa gửi một yêu cầu mến mộ tới người dùng này
+    already_following: Bạn đang theo dõi người dùng này
+    already_requested: Bạn vừa gửi một yêu cầu theo dõi tới người dùng này
     error: Rất tiếc, đã xảy ra lỗi khi tìm kiếm tài khoản từ nơi khác
-    follow: Mến mộ
-    follow_request: Bạn đã gửi yêu cầu mến mộ tới
-    following: Chúc mừng! Bạn đã trở thành người mến mộ của
+    follow: Theo dõi
+    follow_request: Bạn đã gửi yêu cầu theo dõi tới
+    following: Chúc mừng! Bạn đã trở thành người theo dõi của
     post_follow:
       close: Bạn có muốn đóng cửa sổ này?
       return: Hiện trên trang cá nhân
       web: Truy cập web
-    title: Mến mộ %{acct}
+    title: Theo dõi %{acct}
   challenge:
     confirm: Tiếp tục
     hint_html: "<strong>Mẹo:</strong> Chúng tôi sẽ không hỏi lại mật khẩu của bạn sau này."
@@ -816,7 +819,7 @@ vi:
   footer:
     developers: Nhà phát triển
     more: Nhiều hơn
-    resources: Tham khảo
+    resources: Đọc
     trending_now: Xu hướng
   generic:
     all: Tất cả
@@ -861,7 +864,7 @@ vi:
     types:
       blocking: Danh sách chặn
       domain_blocking: Danh sách máy chủ đã chặn
-      following: Danh sách người mến mộ
+      following: Danh sách người theo dõi
       muting: Danh sách người dùng ẩn
     upload: Tải lên
   in_memoriam_html: Tưởng Niệm
@@ -897,7 +900,7 @@ vi:
   migrations:
     acct: Dời sang
     cancel: Hủy chuyển hướng
-    cancel_explanation: Hủy chuyển hướng sẽ kích hoạt lại tài khoản hiện tại của bạn, nhưng sẽ không chuyển được những người mến mộ ở tài khoản mới.
+    cancel_explanation: Hủy chuyển hướng sẽ kích hoạt lại tài khoản hiện tại của bạn, nhưng sẽ không chuyển được những người theo dõi ở tài khoản mới.
     cancelled_msg: Đã hủy chuyển hướng xong.
     errors:
       already_moved: là tài khoản bạn đã dời sang rồi
@@ -905,14 +908,14 @@ vi:
       move_to_self: không thể là tài khoản hiện tại
       not_found: không thể tìm thấy
       on_cooldown: Bạn đang trong thời gian chiêu hồi
-    followers_count: Số người mến mộ tại thời điểm dời sang
+    followers_count: Số người theo dõi tại thời điểm chuyển hướng
     incoming_migrations: Chuyển từ một tài khoản khác
     incoming_migrations_html: Để chuyển từ tài khoản khác sang tài khoản này, trước tiên bạn cần <a href="%{path}">tạo tham chiếu tài khoản</a>.
-    moved_msg: Tài khoản của bạn hiện đang chuyển hướng đến %{acct} và những người mến mộ bạn cũng đang được chuyển đi.
+    moved_msg: Tài khoản của bạn hiện đang chuyển hướng đến %{acct} và những người theo dõi bạn cũng sẽ được chuyển đi.
     not_redirecting: Tài khoản của bạn hiện không chuyển hướng đến bất kỳ tài khoản nào khác.
     on_cooldown: Gần đây bạn đã di chuyển tài khoản của bạn. Chức năng này sẽ trở nên khả dụng một lần nữa sau %{count} ngày.
     past_migrations: Những lần dời nhà cũ
-    proceed_with_move: Chuyển người mến mộ
+    proceed_with_move: Chuyển hướng người theo dõi
     redirected_msg: Tài khoản của bạn đã chuyển hướng đến %{acct}.
     redirecting_to: Tài khoản của bạn đang chuyển hướng đến %{acct}.
     set_redirect: Thiết lập chuyển hướng
@@ -921,13 +924,15 @@ vi:
       before: 'Trước khi tiếp tục, xin vui lòng đọc các lưu ý:'
       cooldown: Sau khi di chuyển, có thời gian chiêu hồi, trong đó bạn sẽ không thể di chuyển nữa
       disabled_account: Tài khoản hiện tại của bạn sẽ không thể sử dụng đầy đủ sau đó. Tuy nhiên, bạn sẽ có quyền truy cập để xuất dữ liệu cũng như kích hoạt lại.
-      followers: Hành động này sẽ chuyển tất cả người mến mộ từ tài khoản hiện tại sang tài khoản mới
+      followers: Hành động này sẽ chuyển tất cả người theo dõi từ tài khoản hiện tại sang tài khoản mới
       only_redirect_html: Ngoài ra, bạn có thể <a href="%{path}">đặt chuyển hướng trên trang cá nhân của bạn</a>.
       other_data: Dữ liệu khác sẽ không được di chuyển tự động
       redirect: Trang cá nhân hiện tại của bạn sẽ được cập nhật với thông báo chuyển hướng và bị loại khỏi các tìm kiếm
   moderation:
     title: Kiểm duyệt
   move_handler:
+    carry_blocks_over_text: Tài khoản này chuyển từ %{acct}, máy chủ mà bạn đã chặn trước đó.
+    carry_mutes_over_text: Tài khoản này chuyển từ %{acct}, máy chủ mà bạn đã ẩn trước đó.
     copy_account_note_text: 'Tài khoản này chuyển từ %{acct}, đây là ghi chú về họ trước đó:'
   notification_mailer:
     digest:
@@ -935,7 +940,7 @@ vi:
       body: Dưới đây là những tin nhắn bạn đã bỏ lỡ kể từ lần truy cập trước vào %{since}
       mention: "%{name} vừa nhắc đến bạn trong:"
       new_followers_summary:
-        other: Ngoài ra, bạn đã có %{count} người mến mộ mới trong khi đi chơi! Ngạc nhiên chưa!
+        other: Ngoài ra, bạn đã có %{count} người theo dõi mới trong khi đi chơi! Ngạc nhiên chưa!
       subject:
         other: "%{count} thông báo mới kể từ lần truy cập trước \U0001F418"
       title: Khi bạn offline...
@@ -944,14 +949,14 @@ vi:
       subject: "%{name} vừa tâm đắc tút của bạn"
       title: Lượt tâm đắc mới
     follow:
-      body: Bạn vừa mới được %{name} mến mộ
-      subject: "%{name} vừa mới mến mộ bạn"
-      title: Người mến mộ mới
+      body: Bạn vừa mới được %{name} theo dõi
+      subject: "%{name} vừa mới theo dõi bạn"
+      title: Người theo dõi mới
     follow_request:
-      action: Quản lý yêu cầu mến mộ
-      body: "%{name} vừa yêu cầu mến mộ bạn"
-      subject: 'Người mến mộ đang chờ đồng ý: %{name}'
-      title: Yêu cầu mến mộ mới
+      action: Quản lý yêu cầu theo dõi
+      body: "%{name} vừa yêu cầu theo dõi bạn"
+      subject: 'Người theo dõi đang chờ đồng ý: %{name}'
+      title: Yêu cầu theo dõi mới
     mention:
       action: Phản hồi
       body: 'Bạn vừa được nhắc đến bởi %{name} trong:'
@@ -968,7 +973,7 @@ vi:
   number:
     human:
       decimal_units:
-        format: "%n%A"
+        format: "%n%u"
         units:
           billion: B
           million: M
@@ -1003,8 +1008,8 @@ vi:
   relationships:
     activity: Hoạt động tài khoản
     dormant: Không có tương tác
-    followers: Người mến mộ bạn
-    following: Người bạn mến mộ
+    followers: Người này đang theo dõi bạn
+    following: Bạn đang theo dõi người này
     invited: Người bạn mời đăng ký
     last_active: Hoạt động lần cuối
     most_recent: Gần đây nhất
@@ -1012,27 +1017,27 @@ vi:
     mutual: Bằng Hữu
     primary: Sơ cấp
     relationship: Mối quan hệ
-    remove_selected_domains: Xóa hết người mến mộ từ các máy chủ đã chọn
-    remove_selected_followers: Xóa những người mến mộ đã chọn
-    remove_selected_follows: Hủy mến mộ người dùng đã chọn
+    remove_selected_domains: Xóa hết người theo dõi từ các máy chủ đã chọn
+    remove_selected_followers: Xóa những người theo dõi đã chọn
+    remove_selected_follows: Hủy theo dõi người dùng đã chọn
     status: Tình trạng tài khoản
   remote_follow:
-    acct: Nhập tên người dùng@máy chủ bạn muốn tương tác
+    acct: Nhập địa chỉ Mastodon của bạn (tên@máy chủ)
     missing_resource: Không thể tìm thấy URL chuyển hướng cần thiết cho tài khoản của bạn
-    no_account_html: Chưa có tài khoản? Bạn có thể <a href='%{sign_up_path}' target='_blank'>đăng ký tại đây</a>
+    no_account_html: Nếu chưa có tài khoản, bạn có thể <a href='%{sign_up_path}' target='_blank'>đăng ký tại đây</a>
     proceed: Tiến hành theo
-    prompt: 'Bạn sắp mến mộ:'
+    prompt: 'Bạn sắp theo dõi:'
     reason_html: "<strong>Tại sao bước này là cần thiết?</strong> <code>%{instance}</code> có thể không phải là máy chủ nơi bạn đã đăng ký, vì vậy chúng tôi cần chuyển hướng bạn đến máy chủ của bạn trước."
   remote_interaction:
     favourite:
-      proceed: Tiếp tục tâm đắc
-      prompt: 'Bạn tâm đắc tút này:'
+      proceed: Yêu thích tút này
+      prompt: Bạn có muốn tâm đắc tút này?
     reblog:
       proceed: Tiếp tục chia sẻ
-      prompt: 'Bạn chia sẻ tút này:'
+      prompt: Bạn có muốn chia sẻ tút này?
     reply:
-      proceed: Tiếp tục bình luận
-      prompt: 'Bạn bình luận tút này:'
+      proceed: Tiếp tục trả lời
+      prompt: Bạn có muốn trả lời tút này?
   scheduled_statuses:
     over_daily_limit: Bạn đã vượt quá giới hạn của các tút được lên lịch %{limit} cho ngày hôm đó
     over_total_limit: Bạn đã vượt quá giới hạn %{limit} của các tút được lên lịch
@@ -1097,7 +1102,7 @@ vi:
     notifications: Thông báo
     preferences: Chung
     profile: Trang cá nhân
-    relationships: Mến mộ
+    relationships: Lượt theo dõi
     two_factor_authentication: Xác thực hai bước
   spam_check:
     spam_detected: Đây là một báo cáo tự động. Đã phát hiện thư rác.
@@ -1115,7 +1120,7 @@ vi:
     disallowed_hashtags:
       other: 'chứa các hashtag bị cấm: %{tags}'
     errors:
-      in_reply_not_found: Bạn đang bình luận một tút không còn tồn tại.
+      in_reply_not_found: Bạn đang trả lời một tút không còn tồn tại.
     language_detection: Tự động phát hiện ngôn ngữ
     open_in_web: Mở trên web
     over_character_limit: vượt quá giới hạn %{max} ký tự
@@ -1136,7 +1141,7 @@ vi:
     title: '%{name}: "%{quote}"'
     visibilities:
       private: Đóng
-      private_long: Chỉ người đã mến mộ mới xem được tút
+      private_long: Chỉ người theo dõi mới xem được tút
       public: Công khai
       public_long: Ai cũng có thể thấy
       unlisted: Mở
@@ -1188,8 +1193,8 @@ vi:
     warning:
       explanation:
         disable: Nếu tài khoản của bạn bị đình chỉ, dữ liệu tài khoản của bạn vẫn còn nguyên, nhưng bạn không thể thực hiện bất kỳ hành động nào cho đến khi được mở khóa.
-        silence: Nếu tài khoản của bạn bị tạm ẩn, bạn có thể bị loại khỏi các bảng tin công khai, chỉ những người đã mến mộ bạn mới thấy tút của bạn. Tuy nhiên, những người khác vẫn có thể tiếp tục mến mộ bạn.
-        suspend: Tài khoản của bạn đã bị vô hiệu hóa. Tất cả tút và tập tin đã tải lên của bạn sẽ bị xóa khỏi máy chủ này lẫn các máy chủ nơi bạn có người mến mộ.
+        silence: Nếu tài khoản của bạn bị tạm ẩn, bạn có thể bị loại khỏi các bảng tin công khai, chỉ những người đã theo dõi bạn mới thấy tút của bạn. Tuy nhiên, những người khác vẫn có thể tiếp tục theo dõi bạn.
+        suspend: Tài khoản của bạn đã bị vô hiệu hóa. Tất cả tút và tập tin đã tải lên của bạn sẽ bị xóa khỏi máy chủ này lẫn các máy chủ nơi bạn có người theo dõi.
       get_in_touch: Bạn có thể trả lời e-mail này để liên hệ với đội ngũ của %{instance}.
       review_server_policies: Xem lại chính sách máy chủ
       statuses: 'Cụ thể, cho:'
@@ -1205,23 +1210,23 @@ vi:
         suspend: Toài khoản bị vô hiệu hóa
     welcome:
       edit_profile_action: Cài đặt trang cá nhân
-      edit_profile_step: Bạn có thể tùy chỉnh trang cá nhân của mình bằng cách tải lên ảnh đại diện, ảnh bìa, thay đổi tên hiển thị và hơn thế nữa. Nếu bạn muốn những người mến mộ mới phải được phê duyệt, hãy chuyển tài khoản sang trạng thái khóa.
+      edit_profile_step: Bạn có thể tùy chỉnh trang cá nhân của mình bằng cách tải lên ảnh đại diện, ảnh bìa, thay đổi tên hiển thị và hơn thế nữa. Nếu bạn muốn những người theo dõi mới phải được phê duyệt, hãy chuyển tài khoản sang trạng thái khóa.
       explanation: Dưới đây là một số mẹo để giúp bạn bắt đầu
       final_action: Viết tút mới
-      final_step: 'Viết tút mới! Ngay cả khi không có người mến mộ, người khác vẫn có thể xem tút công khai của bạn trên bảng tin máy chủ và trong hashtag. Hãy giới thiệu bản thân với hashtag #introduction.'
+      final_step: 'Viết tút mới! Ngay cả khi chưa có người theo dõi, người khác vẫn có thể xem tút công khai của bạn trên bảng tin máy chủ và trong hashtag. Hãy giới thiệu bản thân với hashtag #introduction.'
       full_handle: Tên đầy đủ của bạn
       full_handle_hint: Đây cũng là địa chỉ được dùng để tương tác với tất cả mọi người.
       review_preferences_action: Tùy chỉnh giao diện
       review_preferences_step: Tùy chỉnh mọi thứ! Chẳng hạn như chọn loại email nào bạn muốn nhận hoặc trạng thái tút mà bạn muốn sử dụng mặc định. Hãy tắt tự động phát GIF nếu bạn hay bị chóng mặt.
       subject: Chào mừng đến với Mastodon
-      tip_federated_timeline: Mạng liên kết là một dạng "liên hợp quốc" của Mastodon. Hiểu một cách đơn giản, nó là những người bạn đã mến mộ từ các máy chủ khác.
-      tip_following: Theo mặc định, bạn sẽ mến mộ (các) quản trị viên máy chủ của bạn. Để tìm những người thú vị hơn, hãy xem qua bảng tin và mạng liên kết.
+      tip_federated_timeline: Mạng liên kết là một dạng "liên hợp quốc" của Mastodon. Hiểu một cách đơn giản, nó là những người bạn đã theo dõi từ các máy chủ khác.
+      tip_following: Theo mặc định, bạn sẽ theo dõi (các) quản trị viên máy chủ của bạn. Để tìm những người thú vị hơn, hãy xem qua bảng tin và mạng liên kết.
       tip_local_timeline: Bảng tin là nơi hiện lên những tút công khai của thành viên %{instance}. Họ là những người hàng xóm trực tiếp của bạn!
       tip_mobile_webapp: Nếu trình duyệt trên điện thoại di động của bạn thêm Mastodon vào màn hình chính, bạn có thể nhận được thông báo đẩy. Nó hoạt động gần giống như một app điện thoại!
       tips: Mẹo
       title: Xin chào %{name}!
   users:
-    follow_limit_reached: Bạn chỉ có thể mến mộ tối đa %{limit} người
+    follow_limit_reached: Bạn chỉ có thể theo dõi tối đa %{limit} người
     generic_access_help_html: Gặp trục trặc với tài khoản? Liên hệ %{email} để được trợ giúp
     invalid_email: Địa chỉ email không hợp lệ
     invalid_otp_token: Mã xác thực hai bước không hợp lệ
diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml
index f93f51af3..090485ff8 100644
--- a/config/locales/zh-CN.yml
+++ b/config/locales/zh-CN.yml
@@ -23,7 +23,7 @@ zh-CN:
     hosted_on: 一个在 %{domain} 上运行的 Mastodon 实例
     instance_actor_flash: '这个账号是个虚拟帐号,不代表任何用户,只用来代表服务器本身。它用于和其它服务器互通,所以不应该被封禁,除非你想封禁整个实例。但是想封禁整个实例的时候,你应该用域名封禁。
 
-'
+      '
     learn_more: 了解详情
     privacy_policy: 隐私政策
     see_whats_happening: 看一看现在在发生什么
@@ -40,7 +40,7 @@ zh-CN:
       reason: 原因
       rejecting_media: 来自这些服务器的媒体文件将不会被处理或存储,缩略图也不会显示,需要手动点击打开原始文件。
       rejecting_media_title: 被过滤的媒体文件
-      silenced: 来自这些服务器上的帖子将不会出现在公共时间线和会话中;此外,除非你关注了这些服务器上的用户,否则他们的互动不会产生通知。
+      silenced: 来自这些服务器上的帖子将不会出现在公共时间线和会话中;此外,除非你关注了这些服务器上的用户,否则这些用户的互动不会产生通知。
       silenced_title: 已隐藏的服务器
       suspended: 这些服务器的数据将不会被处理、存储或者交换,本站也将无法和来自这些服务器的用户互动或者交流。
       suspended_title: 已封禁的服务器
@@ -91,7 +91,7 @@ zh-CN:
       delete: 删除
       destroyed_msg: 管理备忘删除成功!
     accounts:
-      add_email_domain_block: 把电子邮箱域名加入黑名单
+      add_email_domain_block: 封禁电子邮箱域名
       approve: 批准
       approve_all: 批准全部
       are_you_sure: 你确定吗?
@@ -192,7 +192,7 @@ zh-CN:
       username: 用户名
       warn: 警告
       web: 站内页面
-      whitelisted: 已加入白名单
+      whitelisted: 允许跨站交互
     action_logs:
       action_types:
         assigned_to_self_report: 指派举报
@@ -237,13 +237,13 @@ zh-CN:
         create_account_warning: "%{name} 向 %{target} 发送了警告"
         create_announcement: "%{name} 创建了新公告 %{target}"
         create_custom_emoji: "%{name} 添加了新的自定义表情 %{target}"
-        create_domain_allow: "%{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_allow: "%{name} 拒绝了和 %{target} 跨站交互"
         destroy_domain_block: "%{name} 解除了对域名 %{target} 的屏蔽"
         destroy_email_domain_block: "%{name} 解除了对电子邮件域名 %{target} 的屏蔽"
         destroy_status: "%{name} 删除了 %{target} 的嘟文"
@@ -340,18 +340,18 @@ zh-CN:
       single_user_mode: 单用户模式
       software: 软件
       space: 存储使用情况
-      title: 仪表盘
+      title: 信息面板
       total_users: 总用户数
       trends: 趋势
       week_interactions: 本周互动数
       week_users_active: 本周活跃用户数
       week_users_new: 本周新用户数
-      whitelist_mode: 白名单模式
+      whitelist_mode: 限联模式
     domain_allows:
-      add_new: 白名单域名
-      created_msg: 域名已被列入白名单
-      destroyed_msg: 域名已从白名单中移除
-      undo: 从白名单中移除
+      add_new: 允许和域名跨站交互
+      created_msg: 域名已被允许跨站交互
+      destroyed_msg: 域名已被禁止跨站交互
+      undo: 不允许和该域名跨站交互
     domain_blocks:
       add_new: 添加新屏蔽域名
       created_msg: 正在进行域名屏蔽
@@ -397,7 +397,7 @@ zh-CN:
       delete: 删除
       destroyed_msg: 电子邮件域名屏蔽删除成功
       domain: 域名
-      empty: 当前没有邮件域名黑名单。
+      empty: 当前没有邮件域名被封禁。
       from_html: 来自 %{domain}
       new:
         create: 添加域名
@@ -415,9 +415,9 @@ zh-CN:
       private_comment: 私密评论
       public_comment: 公开评论
       title: 已知实例
-      total_blocked_by_us: 被我方屏蔽的
+      total_blocked_by_us: 被我站屏蔽的
       total_followed_by_them: 被对方关注的
-      total_followed_by_us: 被我方关注的
+      total_followed_by_us: 被我站关注的
       total_reported: 关于对方的举报
       total_storage: 媒体文件
     invites:
@@ -445,7 +445,7 @@ zh-CN:
       pending: 等待中继站的确认
       save_and_enable: 保存并启用
       setup: 设置中继连接
-      signatures_not_enabled: 安全模式或白名单模式启用时,中继将不会正常工作
+      signatures_not_enabled: 安全模式或限联模式启用时,中继将不会正常工作
       status: 状态
       title: 中继站
     report_notes:
@@ -678,7 +678,7 @@ zh-CN:
     login: 登录
     logout: 登出
     migrate_account: 迁移到另一个帐户
-    migrate_account_html: 如果你希望引导他人关注另一个帐户,请<a href="%{path}">点击这里进行设置</a>。
+    migrate_account_html: 如果你希望引导别人关注另一个帐户,请<a href="%{path}">点击这里进行设置</a>。
     or_log_in_with: 或通过其他方式登录
     providers:
       cas: CAS
@@ -884,7 +884,7 @@ zh-CN:
     max_uses:
       other: "%{count} 次"
     max_uses_prompt: 无限制
-    prompt: 生成分享链接,邀请他人在本服务器注册
+    prompt: 生成分享链接,邀请别人在本服务器注册
     table:
       expires_at: 失效时间
       uses: 已使用次数
@@ -909,10 +909,10 @@ zh-CN:
       not_found: 找不到
       on_cooldown: 您正处于冷却状态
     followers_count: 迁移时的关注者
-    incoming_migrations: 从其他帐号迁移
+    incoming_migrations: 从其它帐号迁移
     incoming_migrations_html: 要把另一个帐号移动到本帐号,首先您需要 <a href="%{path}">创建一个帐号别名</a> 。
     moved_msg: 您的帐号现在会跳转到%{acct} ,同时关注者也会迁移过去 。
-    not_redirecting: 您的帐号当前未跳转到其他帐户。
+    not_redirecting: 您的帐号当前未跳转到其它帐户。
     on_cooldown: 您最近已经迁移过您的帐号。此功能将在%{count} 天后再次可用。
     past_migrations: 迁移记录
     proceed_with_move: 移动关注者
@@ -926,10 +926,14 @@ zh-CN:
       disabled_account: 此后,您的当前帐户将无法使用。但是,您仍然有权导出数据或者重新激活。
       followers: 这步操作将把所有关注者从当前账户移动到新账户
       only_redirect_html: 或者,你可以<a href="%{path}">只在你的帐号资料上设置一个跳转</a>。
-      other_data: 不会自动移动其他数据
+      other_data: 不会自动移动其它数据
       redirect: 在收到一个跳转通知后,您当前的帐号资料将会更新,并被排除在搜索范围外
   moderation:
     title: 运营
+  move_handler:
+    carry_blocks_over_text: 这个用户迁移自你屏蔽过的 %{acct}
+    carry_mutes_over_text: 这个用户迁移自你隐藏过的 %{acct}
+    copy_account_note_text: 这个用户迁移自 %{acct},你曾为其添加备注:
   notification_mailer:
     digest:
       action: 查看所有通知
@@ -1104,6 +1108,8 @@ zh-CN:
     spam_detected: 这是一个自动报告。已检测到垃圾信息。
   statuses:
     attached:
+      audio:
+        other: "%{count} 条音频"
       description: 附加媒体:%{attached}
       image:
         other: "%{count} 张图片"
@@ -1120,7 +1126,7 @@ zh-CN:
     over_character_limit: 超过了 %{max} 字的限制
     pin_errors:
       limit: 你所置顶的嘟文数量已经达到上限
-      ownership: 不能置顶他人的嘟文
+      ownership: 不能置顶别人的嘟文
       private: 不能置顶非公开的嘟文
       reblog: 不能置顶转嘟
     poll:
diff --git a/config/routes.rb b/config/routes.rb
index 626e4688c..ac6323e6e 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -343,22 +343,22 @@ Rails.application.routes.draw do
         end
       end
 
-#      namespace :crypto do
-#        resources :deliveries, only: :create
-#
-#        namespace :keys do
-#          resource :upload, only: [:create]
-#          resource :query,  only: [:create]
-#          resource :claim,  only: [:create]
-#          resource :count,  only: [:show]
-#        end
-#
-#        resources :encrypted_messages, only: [:index] do
-#          collection do
-#            post :clear
-#          end
-#        end
-#      end
+      # namespace :crypto do
+      #   resources :deliveries, only: :create
+
+      #   namespace :keys do
+      #     resource :upload, only: [:create]
+      #     resource :query,  only: [:create]
+      #     resource :claim,  only: [:create]
+      #     resource :count,  only: [:show]
+      #   end
+
+      #   resources :encrypted_messages, only: [:index] do
+      #     collection do
+      #       post :clear
+      #     end
+      #   end
+      # end
 
       resources :conversations, only: [:index, :destroy] do
         member do