about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md9
-rw-r--r--Gemfile.lock2
-rw-r--r--app/controllers/api/v1/accounts_controller.rb2
-rw-r--r--app/javascript/mastodon/locales/ar.json6
-rw-r--r--app/javascript/mastodon/locales/co.json4
-rw-r--r--app/javascript/mastodon/locales/cs.json4
-rw-r--r--app/javascript/mastodon/locales/de.json4
-rw-r--r--app/javascript/mastodon/locales/es-AR.json4
-rw-r--r--app/javascript/mastodon/locales/fa.json4
-rw-r--r--app/javascript/mastodon/locales/fr.json14
-rw-r--r--app/javascript/mastodon/locales/ja.json16
-rw-r--r--app/javascript/mastodon/locales/nl.json12
-rw-r--r--app/javascript/mastodon/locales/sk.json8
-rw-r--r--app/javascript/mastodon/locales/tr.json4
-rw-r--r--app/services/app_sign_up_service.rb7
-rw-r--r--app/views/invites/_form.html.haml3
-rw-r--r--app/views/invites/_invite.html.haml3
-rw-r--r--app/views/invites/index.html.haml1
-rw-r--r--app/workers/move_worker.rb2
-rw-r--r--config/locales/ar.yml8
-rw-r--r--config/locales/devise.es-AR.yml98
-rw-r--r--config/locales/en.yml2
-rw-r--r--config/locales/id.yml83
-rw-r--r--config/locales/ja.yml38
-rw-r--r--config/locales/nl.yml1
-rw-r--r--config/locales/simple_form.ar.yml5
-rw-r--r--config/locales/simple_form.fr.yml4
-rw-r--r--config/locales/simple_form.id.yml88
-rw-r--r--config/locales/tr.yml53
-rw-r--r--lib/mastodon/version.rb2
-rw-r--r--spec/services/app_sign_up_service_spec.rb9
31 files changed, 419 insertions, 81 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1f13ad450..6b0d23a22 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,8 +3,7 @@ Changelog
 
 All notable changes to this project will be documented in this file.
 
-## Unreleased
-
+## [3.0.0] - 2019-10-03
 ### Added
 
 - Add "not available" label to unloaded media attachments in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/11715), [Gargron](https://github.com/tootsuite/mastodon/pull/11745))
@@ -33,7 +32,6 @@ All notable changes to this project will be documented in this file.
 - **Add account migration UI** ([Gargron](https://github.com/tootsuite/mastodon/pull/11846), [noellabo](https://github.com/tootsuite/mastodon/pull/11905), [noellabo](https://github.com/tootsuite/mastodon/pull/11907), [noellabo](https://github.com/tootsuite/mastodon/pull/11906), [noellabo](https://github.com/tootsuite/mastodon/pull/11902))
 - **Add table of contents to about page** ([Gargron](https://github.com/tootsuite/mastodon/pull/11885), [ykzts](https://github.com/tootsuite/mastodon/pull/11941), [ykzts](https://github.com/tootsuite/mastodon/pull/11895), [Kjwon15](https://github.com/tootsuite/mastodon/pull/11916))
 - **Add password challenge to 2FA settings, e-mail notifications** ([Gargron](https://github.com/tootsuite/mastodon/pull/11878))
-- Add optional invite comments ([ThibG](https://github.com/tootsuite/mastodon/pull/10465))
 - **Add optional public list of domain blocks with comments** ([ThibG](https://github.com/tootsuite/mastodon/pull/11298), [ThibG](https://github.com/tootsuite/mastodon/pull/11515), [Gargron](https://github.com/tootsuite/mastodon/pull/11908))
 - Add an RSS feed for featured hashtags ([noellabo](https://github.com/tootsuite/mastodon/pull/10502))
 - Add explanations to featured hashtags UI and profile ([Gargron](https://github.com/tootsuite/mastodon/pull/11586))
@@ -54,6 +52,7 @@ All notable changes to this project will be documented in this file.
 - **Add REST API for managing featured hashtags** ([noellabo](https://github.com/tootsuite/mastodon/pull/11778))
 - **Add REST API for managing timeline read markers** ([Gargron](https://github.com/tootsuite/mastodon/pull/11762))
 - Add `exclude_unreviewed` param to `GET /api/v2/search` REST API ([Gargron](https://github.com/tootsuite/mastodon/pull/11977))
+- Add `reason` param to `POST /api/v1/accounts` REST API ([Gargron](https://github.com/tootsuite/mastodon/pull/12064))
 - **Add ActivityPub secure mode** ([Gargron](https://github.com/tootsuite/mastodon/pull/11269), [ThibG](https://github.com/tootsuite/mastodon/pull/11332), [ThibG](https://github.com/tootsuite/mastodon/pull/11295))
 - Add HTTP signatures to all outgoing ActivityPub GET requests ([Gargron](https://github.com/tootsuite/mastodon/pull/11284), [ThibG](https://github.com/tootsuite/mastodon/pull/11300))
 - Add support for ActivityPub Audio activities ([ThibG](https://github.com/tootsuite/mastodon/pull/11189))
@@ -192,8 +191,8 @@ All notable changes to this project will be documented in this file.
 - Fix n+1 query when approving multiple follow requests ([abcang](https://github.com/tootsuite/mastodon/pull/12004))
 - Fix records not being indexed into ElasticSearch sometimes ([Gargron](https://github.com/tootsuite/mastodon/pull/12024))
 - Fix needlessly indexing unsearchable statuses into ElasticSearch ([Gargron](https://github.com/tootsuite/mastodon/pull/12041))
-- Fix new user bootstrapping crashing when to-be-followed accouns are invalid ([ThibG](https://github.com/tootsuite/mastodon/pull/12037))
-- Fix featured hashtag URL being interpreted as media or with_replies ([Gargron](https://github.com/tootsuite/mastodon/pull/12048))
+- Fix new user bootstrapping crashing when to-be-followed accounts are invalid ([ThibG](https://github.com/tootsuite/mastodon/pull/12037))
+- Fix featured hashtag URL being interpreted as media or replies tab ([Gargron](https://github.com/tootsuite/mastodon/pull/12048))
 - Fix account counters being overwritten by parallel writes ([Gargron](https://github.com/tootsuite/mastodon/pull/12045))
 
 ### Security
diff --git a/Gemfile.lock b/Gemfile.lock
index ecc81db92..9d506d106 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -805,7 +805,7 @@ DEPENDENCIES
   webpush
 
 RUBY VERSION
-   ruby 2.6.5p105
+   ruby 2.6.5p114
 
 BUNDLED WITH
    1.17.3
diff --git a/app/controllers/api/v1/accounts_controller.rb b/app/controllers/api/v1/accounts_controller.rb
index c12e1c12e..d68d2715f 100644
--- a/app/controllers/api/v1/accounts_controller.rb
+++ b/app/controllers/api/v1/accounts_controller.rb
@@ -78,7 +78,7 @@ class Api::V1::AccountsController < Api::BaseController
   end
 
   def account_params
-    params.permit(:username, :email, :password, :agreement, :locale)
+    params.permit(:username, :email, :password, :agreement, :locale, :reason)
   end
 
   def check_enabled_registrations
diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json
index 7202548b6..1a558e3b8 100644
--- a/app/javascript/mastodon/locales/ar.json
+++ b/app/javascript/mastodon/locales/ar.json
@@ -38,7 +38,7 @@
   "account.unfollow": "إلغاء المتابعة",
   "account.unmute": "إلغاء الكتم عن @{name}",
   "account.unmute_notifications": "إلغاء كتم إخطارات @{name}",
-  "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
+  "alert.rate_limited.message": "يرجى إعادة المحاولة بعد {retry_time, time, medium}.",
   "alert.rate_limited.title": "Rate limited",
   "alert.unexpected.message": "لقد طرأ هناك خطأ غير متوقّع.",
   "alert.unexpected.title": "المعذرة!",
@@ -116,7 +116,7 @@
   "conversation.open": "اعرض المحادثة",
   "conversation.with": "بـ {names}",
   "directory.federated": "From known fediverse",
-  "directory.local": "From {domain} only",
+  "directory.local": "مِن {domain} فقط",
   "directory.new_arrivals": "الوافدون الجُدد",
   "directory.recently_active": "نشط مؤخرا",
   "embed.instructions": "يمكنكم إدماج هذا المنشور على موقعكم الإلكتروني عن طريق نسخ الشفرة أدناه.",
@@ -316,7 +316,7 @@
   "privacy.public.short": "للعامة",
   "privacy.unlisted.long": "لا تقم بإدراجه على الخيوط العامة",
   "privacy.unlisted.short": "غير مدرج",
-  "refresh": "Refresh",
+  "refresh": "أنعِش",
   "regeneration_indicator.label": "جارٍ التحميل…",
   "regeneration_indicator.sublabel": "جارٍ تجهيز تغذية صفحتك الرئيسية!",
   "relative_time.days": "{number}ي",
diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json
index dd088b711..3b059459c 100644
--- a/app/javascript/mastodon/locales/co.json
+++ b/app/javascript/mastodon/locales/co.json
@@ -178,7 +178,7 @@
   "home.column_settings.basic": "Bàsichi",
   "home.column_settings.show_reblogs": "Vede e spartere",
   "home.column_settings.show_replies": "Vede e risposte",
-  "home.column_settings.update_live": "Update in real-time",
+  "home.column_settings.update_live": "Attualizà in tempu reale",
   "intervals.full.days": "{number, plural, one {# ghjornu} other {# ghjorni}}",
   "intervals.full.hours": "{number, plural, one {# ora} other {# ore}}",
   "intervals.full.minutes": "{number, plural, one {# minuta} other {# minute}}",
@@ -272,7 +272,7 @@
   "navigation_bar.preferences": "Preferenze",
   "navigation_bar.public_timeline": "Linea pubblica glubale",
   "navigation_bar.security": "Sicurità",
-  "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
+  "notification.and_n_others": "è {count, plural, one {# altru} other {# altri}}",
   "notification.favourite": "{name} hà aghjuntu u vostru statutu à i so favuriti",
   "notification.follow": "{name} v'hà seguitatu",
   "notification.mention": "{name} v'hà mintuvatu",
diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json
index e66725b6c..c783fbe77 100644
--- a/app/javascript/mastodon/locales/cs.json
+++ b/app/javascript/mastodon/locales/cs.json
@@ -178,7 +178,7 @@
   "home.column_settings.basic": "Základní",
   "home.column_settings.show_reblogs": "Zobrazit boosty",
   "home.column_settings.show_replies": "Zobrazit odpovědi",
-  "home.column_settings.update_live": "Update in real-time",
+  "home.column_settings.update_live": "Aktualizovat v reálném čase",
   "intervals.full.days": "{number, plural, one {# den} few {# dny} many {# dne} other {# dní}}",
   "intervals.full.hours": "{number, plural, one {# hodina} few {# hodiny} many {# hodiny} other {# hodin}}",
   "intervals.full.minutes": "{number, plural, one {# minuta} few {# minuty} many {# minuty} other {# minut}}",
@@ -272,7 +272,7 @@
   "navigation_bar.preferences": "Předvolby",
   "navigation_bar.public_timeline": "Federovaná časová osa",
   "navigation_bar.security": "Zabezpečení",
-  "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
+  "notification.and_n_others": "a {count, plural, one {# další} few {# další} many {# dalších} other {# dalších}}",
   "notification.favourite": "{name} si oblíbil/a váš toot",
   "notification.follow": "{name} vás začal/a sledovat",
   "notification.mention": "{name} vás zmínil/a",
diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json
index 0475d5b74..193fcebd4 100644
--- a/app/javascript/mastodon/locales/de.json
+++ b/app/javascript/mastodon/locales/de.json
@@ -178,7 +178,7 @@
   "home.column_settings.basic": "Einfach",
   "home.column_settings.show_reblogs": "Geteilte Beiträge anzeigen",
   "home.column_settings.show_replies": "Antworten anzeigen",
-  "home.column_settings.update_live": "Update in real-time",
+  "home.column_settings.update_live": "In Echtzeit aktualisieren",
   "intervals.full.days": "{number, plural, one {# Tag} other {# Tage}}",
   "intervals.full.hours": "{number, plural, one {# Stunde} other {# Stunden}}",
   "intervals.full.minutes": "{number, plural, one {# Minute} other {# Minuten}}",
@@ -272,7 +272,7 @@
   "navigation_bar.preferences": "Einstellungen",
   "navigation_bar.public_timeline": "Föderierte Zeitleiste",
   "navigation_bar.security": "Sicherheit",
-  "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
+  "notification.and_n_others": "und {count, plural, one {# andere Person} other {# andere Personen}}",
   "notification.favourite": "{name} hat deinen Beitrag favorisiert",
   "notification.follow": "{name} folgt dir",
   "notification.mention": "{name} hat dich erwähnt",
diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json
index bb289e471..825a67178 100644
--- a/app/javascript/mastodon/locales/es-AR.json
+++ b/app/javascript/mastodon/locales/es-AR.json
@@ -178,7 +178,7 @@
   "home.column_settings.basic": "Básico",
   "home.column_settings.show_reblogs": "Mostrar retoots",
   "home.column_settings.show_replies": "Mostrar respuestas",
-  "home.column_settings.update_live": "Update in real-time",
+  "home.column_settings.update_live": "Actualizar en tiempo real",
   "intervals.full.days": "{number, plural, one {# día} other {# días}}",
   "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}",
   "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}",
@@ -272,7 +272,7 @@
   "navigation_bar.preferences": "Configuración",
   "navigation_bar.public_timeline": "Línea temporal federada",
   "navigation_bar.security": "Seguridad",
-  "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
+  "notification.and_n_others": "y {count, plural, one {otro} other {otros #}}",
   "notification.favourite": "{name} marcó tu estado como favorito",
   "notification.follow": "{name} te empezó a seguir",
   "notification.mention": "{name} te mencionó",
diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json
index fb596b258..97b7dc00d 100644
--- a/app/javascript/mastodon/locales/fa.json
+++ b/app/javascript/mastodon/locales/fa.json
@@ -178,7 +178,7 @@
   "home.column_settings.basic": "اصلی",
   "home.column_settings.show_reblogs": "نمایش بازبوق‌ها",
   "home.column_settings.show_replies": "نمایش پاسخ‌ها",
-  "home.column_settings.update_live": "Update in real-time",
+  "home.column_settings.update_live": "به‌روزرسانی لحظه‌ای",
   "intervals.full.days": "{number, plural, one {# روز} other {# روز}}",
   "intervals.full.hours": "{number, plural, one {# ساعت} other {# ساعت}}",
   "intervals.full.minutes": "{number, plural, one {# دقیقه} other {# دقیقه}}",
@@ -272,7 +272,7 @@
   "navigation_bar.preferences": "ترجیحات",
   "navigation_bar.public_timeline": "نوشته‌های همه‌جا",
   "navigation_bar.security": "امنیت",
-  "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
+  "notification.and_n_others": "و {count, plural, one {# اعلان دیگر} other {# اعلان دیگر}}",
   "notification.favourite": "‫{name}‬ نوشتهٔ شما را پسندید",
   "notification.follow": "‫{name}‬ پیگیر شما شد",
   "notification.mention": "‫{name}‬ از شما نام برد",
diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json
index ea333b4dc..daa4cc529 100644
--- a/app/javascript/mastodon/locales/fr.json
+++ b/app/javascript/mastodon/locales/fr.json
@@ -152,10 +152,10 @@
   "empty_column.mutes": "Vous n’avez pas encore mis d'utilisateur·rice·s en silence.",
   "empty_column.notifications": "Vous n’avez pas encore de notification. Interagissez avec d’autres personnes pour débuter la conversation.",
   "empty_column.public": "Il n’y a rien ici ! Écrivez quelque chose publiquement, ou bien suivez manuellement des personnes d’autres instances pour le remplir",
-  "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
-  "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
-  "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
-  "errors.unexpected_crash.report_issue": "Report issue",
+  "error.unexpected_crash.explanation": "En raison d’un bug dans notre code ou d’un problème de compatibilité avec le navigateur, cette page n’a pas pu être affichée correctement.",
+  "error.unexpected_crash.next_steps": "Essayez de rafraîchir la page. Si cela n’aide pas, vous pouvez toujours utiliser Mastodon via un autre navigateur ou une application native.",
+  "errors.unexpected_crash.copy_stacktrace": "Copier la trace de pile dans le presse-papier",
+  "errors.unexpected_crash.report_issue": "Signaler un bogue",
   "follow_request.authorize": "Accepter",
   "follow_request.reject": "Rejeter",
   "getting_started.developers": "Développeur·euse·s",
@@ -178,7 +178,7 @@
   "home.column_settings.basic": "Base",
   "home.column_settings.show_reblogs": "Afficher les partages",
   "home.column_settings.show_replies": "Afficher les réponses",
-  "home.column_settings.update_live": "Update in real-time",
+  "home.column_settings.update_live": "Mise à jour en temps réel",
   "intervals.full.days": "{number, plural, one {# jour} other {# jours}}",
   "intervals.full.hours": "{number, plural, one {# heure} other {# heures}}",
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
@@ -272,7 +272,7 @@
   "navigation_bar.preferences": "Préférences",
   "navigation_bar.public_timeline": "Fil public global",
   "navigation_bar.security": "Sécurité",
-  "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
+  "notification.and_n_others": "et {count, plural, one {# autre} other {# autres}}",
   "notification.favourite": "{name} a ajouté à ses favoris :",
   "notification.follow": "{name} vous suit",
   "notification.mention": "{name} vous a mentionné :",
@@ -316,7 +316,7 @@
   "privacy.public.short": "Public",
   "privacy.unlisted.long": "Ne pas afficher dans les fils publics",
   "privacy.unlisted.short": "Non listé",
-  "refresh": "Refresh",
+  "refresh": "Actualiser",
   "regeneration_indicator.label": "Chargement…",
   "regeneration_indicator.sublabel": "Le flux de votre page principale est en cours de préparation !",
   "relative_time.days": "{number} j",
diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json
index 074c79103..19038aaef 100644
--- a/app/javascript/mastodon/locales/ja.json
+++ b/app/javascript/mastodon/locales/ja.json
@@ -38,7 +38,7 @@
   "account.unfollow": "フォロー解除",
   "account.unmute": "@{name}さんのミュートを解除",
   "account.unmute_notifications": "@{name}さんからの通知を受け取るようにする",
-  "alert.rate_limited.message": "{retry_time, time, medium} 以降に再試行してください。",
+  "alert.rate_limited.message": "{retry_time, time, medium} 以降に再度実行してください。",
   "alert.rate_limited.title": "制限に達しました",
   "alert.unexpected.message": "不明なエラーが発生しました。",
   "alert.unexpected.title": "エラー!",
@@ -115,7 +115,7 @@
   "confirmations.reply.message": "今返信すると現在作成中のメッセージが上書きされます。本当に実行しますか?",
   "confirmations.unfollow.confirm": "フォロー解除",
   "confirmations.unfollow.message": "本当に{name}さんのフォローを解除しますか?",
-  "conversation.delete": "このやりとりを削除",
+  "conversation.delete": "この会話を削除",
   "conversation.mark_as_read": "既読にする",
   "conversation.open": "会話を表示",
   "conversation.with": "{names}",
@@ -157,7 +157,7 @@
   "empty_column.notifications": "まだ通知がありません。他の人とふれ合って会話を始めましょう。",
   "empty_column.public": "ここにはまだ何もありません! 公開で何かを投稿したり、他のサーバーのユーザーをフォローしたりしていっぱいにしましょう",
   "error.unexpected_crash.explanation": "不具合かブラウザの互換性問題のため、このページを正しく表示できませんでした。",
-  "error.unexpected_crash.next_steps": "ページの再読み込みをお試しください。それでも解決しない場合、別のアプリかブラウザを使えば使用できる場合もあります。",
+  "error.unexpected_crash.next_steps": "ページの再読み込みをお試しください。それでも解決しない場合、別のブラウザかアプリを使えば使用できることがあります。",
   "errors.unexpected_crash.copy_stacktrace": "スタックトレースをクリップボードにコピー",
   "errors.unexpected_crash.report_issue": "問題を報告",
   "follow_request.authorize": "許可",
@@ -182,7 +182,7 @@
   "home.column_settings.basic": "基本設定",
   "home.column_settings.show_reblogs": "ブースト表示",
   "home.column_settings.show_replies": "返信表示",
-  "home.column_settings.update_live": "Update in real-time",
+  "home.column_settings.update_live": "リアルタイム更新",
   "intervals.full.days": "{number}日",
   "intervals.full.hours": "{number}時間",
   "intervals.full.minutes": "{number}分",
@@ -346,7 +346,7 @@
   "search_results.accounts": "人々",
   "search_results.hashtags": "ハッシュタグ",
   "search_results.statuses": "トゥート",
-  "search_results.statuses_fts_disabled": "このサーバーではトゥート本文での検索は利用できません。",
+  "search_results.statuses_fts_disabled": "このサーバーではトゥート本文の検索は利用できません。",
   "search_results.total": "{count, number}件の結果",
   "status.admin_account": "@{name} のモデレーション画面を開く",
   "status.admin_status": "このトゥートをモデレーション画面で開く",
@@ -401,7 +401,7 @@
   "time_remaining.moments": "まもなく終了",
   "time_remaining.seconds": "残り{number}秒",
   "trends.count_by_accounts": "{count}人がトゥート",
-  "trends.trending_now": "トレンド",
+  "trends.trending_now": "トレンドタグ",
   "ui.beforeunload": "Mastodonから離れると送信前の投稿は失われます。",
   "upload_area.title": "ドラッグ&ドロップでアップロード",
   "upload_button.label": "メディアを追加 ({formats})",
@@ -412,10 +412,10 @@
   "upload_form.undo": "削除",
   "upload_modal.analyzing_picture": "画像を解析中…",
   "upload_modal.apply": "適用",
-  "upload_modal.description_placeholder": "素早い茶色の狐はのろまな犬を飛び越える",
+  "upload_modal.description_placeholder": "あのイーハトーヴォのすきとおった風",
   "upload_modal.detect_text": "画像からテキストを検出",
   "upload_modal.edit_media": "メディアを編集",
-  "upload_modal.hint": "画像をクリックするか円をドラッグすると全てのサムネイルの中心点を決めることができます",
+  "upload_modal.hint": "サムネイルの焦点にしたい場所をクリックするか円形の枠をその場所にドラッグしてください。",
   "upload_modal.preview_label": "プレビュー ({ratio})",
   "upload_progress.label": "アップロード中...",
   "video.close": "動画を閉じる",
diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json
index 51c0d7af1..f9e8457a0 100644
--- a/app/javascript/mastodon/locales/nl.json
+++ b/app/javascript/mastodon/locales/nl.json
@@ -154,8 +154,8 @@
   "empty_column.public": "Er is hier helemaal niks! Toot iets in het openbaar of volg mensen van andere servers om het te vullen",
   "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
   "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
-  "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
-  "errors.unexpected_crash.report_issue": "Report issue",
+  "errors.unexpected_crash.copy_stacktrace": "Stacktrace naar klembord kopiëren",
+  "errors.unexpected_crash.report_issue": "Technisch probleem melden",
   "follow_request.authorize": "Goedkeuren",
   "follow_request.reject": "Afkeuren",
   "getting_started.developers": "Ontwikkelaars",
@@ -178,7 +178,7 @@
   "home.column_settings.basic": "Algemeen",
   "home.column_settings.show_reblogs": "Boosts tonen",
   "home.column_settings.show_replies": "Reacties tonen",
-  "home.column_settings.update_live": "Update in real-time",
+  "home.column_settings.update_live": "In realtime bijwerken",
   "intervals.full.days": "{number, plural, one {# dag} other {# dagen}}",
   "intervals.full.hours": "{number, plural, one {# uur} other {# uur}}",
   "intervals.full.minutes": "{number, plural, one {# minuut} other {# minuten}}",
@@ -272,7 +272,7 @@
   "navigation_bar.preferences": "Instellingen",
   "navigation_bar.public_timeline": "Globale tijdlijn",
   "navigation_bar.security": "Beveiliging",
-  "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
+  "notification.and_n_others": "en {count, plural, one {# meer} other {# meer}}",
   "notification.favourite": "{name} voegde jouw toot als favoriet toe",
   "notification.follow": "{name} volgt jou nu",
   "notification.mention": "{name} vermeldde jou",
@@ -301,7 +301,7 @@
   "notifications.group": "{count} meldingen",
   "poll.closed": "Gesloten",
   "poll.refresh": "Vernieuwen",
-  "poll.total_people": "{count, plural, one {# person} other {# people}}",
+  "poll.total_people": "{count, plural, one {# persoon} other {# mensen}}",
   "poll.total_votes": "{count, plural, one {# stem} other {# stemmen}}",
   "poll.vote": "Stemmen",
   "poll.voted": "Je hebt hier op gestemd",
@@ -316,7 +316,7 @@
   "privacy.public.short": "Openbaar",
   "privacy.unlisted.long": "Niet op openbare tijdlijnen tonen",
   "privacy.unlisted.short": "Minder openbaar",
-  "refresh": "Refresh",
+  "refresh": "Vernieuwen",
   "regeneration_indicator.label": "Aan het laden…",
   "regeneration_indicator.sublabel": "Jouw tijdlijn wordt aangemaakt!",
   "relative_time.days": "{number}d",
diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json
index 3efb2901d..946ccfa26 100644
--- a/app/javascript/mastodon/locales/sk.json
+++ b/app/javascript/mastodon/locales/sk.json
@@ -155,7 +155,7 @@
   "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
   "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
   "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
-  "errors.unexpected_crash.report_issue": "Report issue",
+  "errors.unexpected_crash.report_issue": "Nahlás problém",
   "follow_request.authorize": "Povoľ prístup",
   "follow_request.reject": "Odmietni",
   "getting_started.developers": "Vývojári",
@@ -178,7 +178,7 @@
   "home.column_settings.basic": "Základné",
   "home.column_settings.show_reblogs": "Zobraziť povýšené",
   "home.column_settings.show_replies": "Ukázať odpovede",
-  "home.column_settings.update_live": "Update in real-time",
+  "home.column_settings.update_live": "Aktualizuj v reálnom čase",
   "intervals.full.days": "{number, plural, one {# deň} few {# dní} many {# dní} other {# dní}}",
   "intervals.full.hours": "{number, plural, one {# hodina} few {# hodín} many {# hodín} other {# hodín}}",
   "intervals.full.minutes": "{number, plural, one {# minúta} few {# minút} many {# minút} other {# minút}}",
@@ -300,7 +300,7 @@
   "notifications.filter.polls": "Výsledky ankiet",
   "notifications.group": "{count} oboznámení",
   "poll.closed": "Uzatvorená",
-  "poll.refresh": "Obnov",
+  "poll.refresh": "Občerstvi",
   "poll.total_people": "{count, plural, one {# person} other {# people}}",
   "poll.total_votes": "{count, plural, one {# hlas} few {# hlasov} many {# hlasov} other {# hlasov}}",
   "poll.vote": "Hlasuj",
@@ -316,7 +316,7 @@
   "privacy.public.short": "Verejné",
   "privacy.unlisted.long": "Neposielaj do verejných časových osí",
   "privacy.unlisted.short": "Verejne, ale nezobraziť v osi",
-  "refresh": "Refresh",
+  "refresh": "Občerstvi",
   "regeneration_indicator.label": "Načítava sa…",
   "regeneration_indicator.sublabel": "Vaša domovská nástenka sa pripravuje!",
   "relative_time.days": "{number}dní",
diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json
index c4429d1eb..364b98c89 100644
--- a/app/javascript/mastodon/locales/tr.json
+++ b/app/javascript/mastodon/locales/tr.json
@@ -178,7 +178,7 @@
   "home.column_settings.basic": "Temel",
   "home.column_settings.show_reblogs": "Boost edilenleri göster",
   "home.column_settings.show_replies": "Cevapları göster",
-  "home.column_settings.update_live": "Update in real-time",
+  "home.column_settings.update_live": "Gerçek zamanlı güncelle",
   "intervals.full.days": "{number, plural, one {# gün} other {# gün}}",
   "intervals.full.hours": "{number, plural, one {# saat} other {# saat}}",
   "intervals.full.minutes": "{number, plural, one {# dakika} other {# dakika}}",
@@ -272,7 +272,7 @@
   "navigation_bar.preferences": "Tercihler",
   "navigation_bar.public_timeline": "Federe zaman tüneli",
   "navigation_bar.security": "Güvenlik",
-  "notification.and_n_others": "and {count, plural, one {# other} other {# others}}",
+  "notification.and_n_others": "ve {count, plural, one {# diğeri} other {# diğerleri}}",
   "notification.favourite": "{name} senin durumunu favorilere ekledi",
   "notification.follow": "{name} seni takip ediyor",
   "notification.mention": "{name} senden bahsetti",
diff --git a/app/services/app_sign_up_service.rb b/app/services/app_sign_up_service.rb
index 6dee9cd81..c9739c77d 100644
--- a/app/services/app_sign_up_service.rb
+++ b/app/services/app_sign_up_service.rb
@@ -4,9 +4,10 @@ class AppSignUpService < BaseService
   def call(app, params)
     return unless allowed_registrations?
 
-    user_params    = params.slice(:email, :password, :agreement, :locale)
-    account_params = params.slice(:username)
-    user           = User.create!(user_params.merge(created_by_application: app, password_confirmation: user_params[:password], account_attributes: account_params))
+    user_params           = params.slice(:email, :password, :agreement, :locale)
+    account_params        = params.slice(:username)
+    invite_request_params = { text: params[:reason] }
+    user                  = User.create!(user_params.merge(created_by_application: app, password_confirmation: user_params[:password], account_attributes: account_params, invite_request_attributes: invite_request_params))
 
     Doorkeeper::AccessToken.create!(application: app,
                                     resource_owner_id: user.id,
diff --git a/app/views/invites/_form.html.haml b/app/views/invites/_form.html.haml
index b19f70539..3a2a5ef0e 100644
--- a/app/views/invites/_form.html.haml
+++ b/app/views/invites/_form.html.haml
@@ -10,8 +10,5 @@
   .fields-group
     = f.input :autofollow, wrapper: :with_label
 
-  .fields-group
-    = f.input :comment, wrapper: :with_label, input_html: { maxlength: 420 }
-
   .actions
     = f.button :button, t('invites.generate'), type: :submit
diff --git a/app/views/invites/_invite.html.haml b/app/views/invites/_invite.html.haml
index 03050c868..62799ca5b 100644
--- a/app/views/invites/_invite.html.haml
+++ b/app/views/invites/_invite.html.haml
@@ -21,8 +21,5 @@
       = t('invites.expired')
 
   %td
-    = invite.comment
-
-  %td
     - if invite.valid_for_use? && policy(invite).destroy?
       = table_link_to 'times', t('invites.delete'), invite_path(invite), method: :delete
diff --git a/app/views/invites/index.html.haml b/app/views/invites/index.html.haml
index 62065d6ae..61420ab1e 100644
--- a/app/views/invites/index.html.haml
+++ b/app/views/invites/index.html.haml
@@ -15,7 +15,6 @@
         %th
         %th= t('invites.table.uses')
         %th= t('invites.table.expires_at')
-        %th= t('invites.table.comment')
         %th
     %tbody
       = render @invites
diff --git a/app/workers/move_worker.rb b/app/workers/move_worker.rb
index 22788716f..83f7090ee 100644
--- a/app/workers/move_worker.rb
+++ b/app/workers/move_worker.rb
@@ -22,7 +22,7 @@ class MoveWorker
     @source_account.passive_relationships
                    .where(account: Account.local)
                    .in_batches
-                   .update_all(target_account: @target_account)
+                   .update_all(target_account_id: @target_account.id)
   end
 
   def queue_follow_unfollows!
diff --git a/config/locales/ar.yml b/config/locales/ar.yml
index a725fa349..f1d9570ad 100644
--- a/config/locales/ar.yml
+++ b/config/locales/ar.yml
@@ -38,6 +38,7 @@ ar:
     terms: شروط الخدمة
     unavailable_content: محتوى غير متوفر
     unavailable_content_description:
+      domain: الخادم
       reason: 'السبب:'
     user_count_after:
       few: مستخدمين
@@ -245,11 +246,14 @@ ar:
       delete: حذف
       destroyed_msg: تمت عملية تدمير الإيموجي بنجاح!
       disable: تعطيل
+      disabled: مُعطَّل
       disabled_msg: تمت عملية تعطيل ذلك الإيموجي بنجاح
       emoji: إيموجي
       enable: تفعيل
+      enabled: مُشغَّل
       enabled_msg: تم تنشيط ذاك الإيموجي بنجاح
       image_hint: ملف PNG إلى غاية حجم 50 ك.ب
+      list: القائمة
       listed: مُدرَج
       new:
         title: إضافة إيموجي خاص جديد
@@ -263,6 +267,7 @@ ar:
       updated_msg: تم تحديث الإيموجي بنجاح!
       upload: رفع
     dashboard:
+      authorized_fetch_mode: الوضع الآمن
       backlog: الأعمال المتراكمة
       config: الإعداد
       feature_deletions: الحسابات المحذوفة
@@ -475,6 +480,8 @@ ar:
         desc_html: يمكنك كتابة سياسة الخصوصية الخاصة بك ، شروط الخدمة أو غيرها من القوانين. يمكنك استخدام علامات HTML
         title: شروط الخدمة المخصصة
       site_title: اسم مثيل الخادم
+      spam_check_enabled:
+        title: مكافحة البريد المزعج
       thumbnail:
         desc_html: يستخدم للعروض السابقة عبر Open Graph و API. 1200x630px موصى به
         title: الصورة الرمزية المصغرة لمثيل الخادوم
@@ -758,6 +765,7 @@ ar:
     past_migrations: التهجيرات السابقة
     proceed_with_move: انقل مشارِكيك
     redirecting_to: حسابك موجَّه إلى %{acct}.
+    set_redirect: تعين إعادة التوجيه
   moderation:
     title: الإشراف
   notification_mailer:
diff --git a/config/locales/devise.es-AR.yml b/config/locales/devise.es-AR.yml
new file mode 100644
index 000000000..bb229e8f5
--- /dev/null
+++ b/config/locales/devise.es-AR.yml
@@ -0,0 +1,98 @@
+---
+es-AR:
+  devise:
+    confirmations:
+      confirmed: Se confirmó exitosamente tu dirección de correo electrónico.
+      send_instructions: En unos minutos, vas a recibir un correo electrónico con instrucciones sobre cómo confirmar tu dirección de correo. Si pasa el tiempo y no recibiste ningún mensaje, por favor, revisá tu carpeta de correo basura / no deseado / spam.
+      send_paranoid_instructions: Si tu dirección de correo electrónico existe en nuestra base de datos, en unos minutos, vas a recibir un correo electrónico con instrucciones sobre cómo confirmar tu dirección de correo. Si pasa el tiempo y no recibiste ningún mensaje, por favor, revisá tu carpeta de correo basura / no deseado / spam.
+    failure:
+      already_authenticated: Ya iniciaste sesión.
+      inactive: Tu cuenta todavía no está activada.
+      invalid: "%{authentication_keys} o contraseña no válidas."
+      last_attempt: Tenés un intento más antes de que se bloquee tu cuenta.
+      locked: Se bloqueó tu cuenta.
+      not_found_in_database: "%{authentication_keys} o contraseña no válidas."
+      pending: Tu cuenta todavía está bajo revisión.
+      timeout: Venció tu sesión. Por favor, volvé a iniciar sesión para continuar.
+      unauthenticated: Necesitás iniciar sesión o registrarte antes de continuar.
+      unconfirmed: Tenés que confirmar tu dirección de correo electrónico antes de continuar.
+    mailer:
+      confirmation_instructions:
+        action: Verificar dirección de correo electrónico
+        action_with_app: Confirmar y volver a %{app}
+        explanation: Te creaste una cuenta en %{host} con esta dirección de correo electrónico. Estás a un clic de activarla. Si vos no te creaste ninguna cuenta acá, por favor, simplemente ignorá este mensaje.
+        explanation_when_pending: Pediste una invitación para %{host} con esta dirección de correo electrónico. Una vez que confirmés esta dirección de correo, revisaremos tu pedido. Podés iniciar sesión para cambiar tus detalles o eliminar tu cuenta, pero no vas a poder acceder a la mayoría de las funciones hasta que no se apruebe tu cuenta. Si tu pedido es rechazado, se eliminarán tus datos, por lo que no vas a necesitar hacer nada en especial. Si vos no pediste ninguna cuenta acá, por favor, simplemente ignorá este mensaje.
+        extra_html: Por favor, también leé <a href="%{terms_path}">las reglas del servidor</a> y <a href="%{policy_path}">nuestros términos del servicio</a>.
+        subject: 'Mastodon: instrucciones de confirmación para %{instance}'
+        title: Verificar dirección de correo electrónico
+      email_changed:
+        explanation: 'La dirección de correo electrónico de tu cuenta está siendo cambiada a:'
+        extra: Si no cambiaste tu correo electrónico, es probable que alguien más haya obtenido acceso a tu cuenta. Por favor, cambiá tu contraseña inmediatamente o contactá con el administrador del servidor si no podés ingresar a tu cuenta.
+        subject: 'Mastodon: correo electrónico cambiado'
+        title: Nueva dirección de correo electrónico
+      password_change:
+        explanation: Se cambió la contraseña de tu cuenta.
+        extra: Si no cambiaste tu contraseña, es probable que alguien más haya obtenido acceso a tu cuenta. Por favor, cambiá tu contraseña inmediatamente o contactá con el administrador del servidor si no podés ingresar a tu cuenta.
+        subject: 'Mastodon: contraseña cambiada'
+        title: Contraseña cambiada
+      reconfirmation_instructions:
+        explanation: Confirmá la nueva dirección para cambiar tu correo electrónico.
+        extra: Si no pediste este cambio, por favor, ignorá este mensaje. No se cambiará la dirección de correo electrónico de tu cuenta de Mastodon hasta que no accedas al enlace de arriba.
+        subject: 'Mastodon: confirmar correo electrónico para %{instance}'
+        title: Verifique dirección de correo electrónico
+      reset_password_instructions:
+        action: Cambiar contraseña
+        explanation: Pediste una nueva contraseña para tu cuenta.
+        extra: Si no pediste este cambio, por favor, ignorá este mensaje. No se cambiará la contraseña de tu cuenta de Mastodon hasta que no accedas al enlace de arriba y crees una nueva.
+        subject: 'Mastodon: instrucciones para cambiar la contraseña'
+        title: Cambiar contraseña
+      two_factor_disabled:
+        explanation: La autenticación de dos factores para tu cuenta está deshabilitada. Ahora el inicio de sesión sólo es posible usando la dirección de correo electrónico y la contraseña.
+        subject: 'Mastodon: autenticación de dos factores, deshabilitada'
+        title: 2FA deshabilitada
+      two_factor_enabled:
+        explanation: La autenticación de dos factores para tu cuenta está habilitada. Se requiere una clave generada por la aplicación TOTP asociada para iniciar sesión.
+        subject: 'Mastodon: autenticación de dos factores, habilitada'
+        title: 2FA habilitada
+      two_factor_recovery_codes_changed:
+        explanation: Los códigos anteriores de recuperación fueron invalidados y se generaron unos nuevos.
+        subject: 'Mastodon: códigos de recuperación de dos factores, regenerados'
+        title: Códigos de recuperación 2FA cambiados
+      unlock_instructions:
+        subject: 'Mastodon: instrucciones de desbloqueo'
+    omniauth_callbacks:
+      failure: 'No se te pudo autenticar desde %{kind} debido a esto: "%{reason}".'
+      success: Se autenticó exitosamente para la cuenta %{kind}.
+    passwords:
+      no_token: No podés acceder a esta página sin venir desde un correo electrónico destinado al cambio de contraseña. Si venís desde dicho mensaje, por favor, asegurate que usaste toda la dirección web ofrecida.
+      send_instructions: Si tu dirección de correo electrónico existe en nuestra base de datos, en unos minutos, vas a recibir un correo electrónico con un enlace para cambiar tu contraseña. Si pasa el tiempo y no recibiste ningún mensaje, por favor, revisá tu carpeta de correo basura / no deseado / spam.
+      send_paranoid_instructions: Si tu dirección de correo electrónico existe en nuestra base de datos, en unos minutos, vas a recibir un correo electrónico con un enlace para cambiar tu contraseña. Si pasa el tiempo y no recibiste ningún mensaje, por favor, revisá tu carpeta de correo basura / no deseado / spam.
+      updated: Se cambió existosamente tu contraseña. Ya iniciaste sesión.
+      updated_not_active: Se cambió exitosamente tu contraseña.
+    registrations:
+      destroyed: "¡Chauchas! Se canceló exitosamente tu cuenta. Esperamos verte pronto de nuevo."
+      signed_up: "¡Bienvenido! Te registraste exitosamente."
+      signed_up_but_inactive: Te registraste exitosamente. Sin embargo, no podés iniciar sesión porque tu cuenta todavía no está activada.
+      signed_up_but_locked: Te registraste exitosamente. Sin embargo, no podés iniciar sesión porque tu cuenta está bloqueada.
+      signed_up_but_pending: Se envió un correo electrónico a tu dirección de correo con un enlace de confirmación. Después que hagás clic en ese enlace, revisaremos tu pedido. Si sos aprobado, serás notificado.
+      signed_up_but_unconfirmed: Se envió un correo electrónico a tu dirección de correo con un enlace de confirmación. Por favor, seguí ese enlace para activar tu cuenta. Si pasa el tiempo y no recibiste ningún mensaje, por favor, revisá tu carpeta de correo basura / no deseado / spam.
+      update_needs_confirmation: Actualizaste tu cuenta exitosamente. Sin embargo, necesitamos verificar tu nueva dirección de correo electrónico. Por favor, revisá tu correo electrónico y seguí el enlace de confirmación. Si pasa el tiempo y no recibiste ningún mensaje, por favor, revisá tu carpeta de correo basura / no deseado / spam.
+      updated: Se actualizó exitosamente tu cuenta.
+    sessions:
+      already_signed_out: Cerraste sesión exitosamente.
+      signed_in: Iniciaste sesión exitosamente.
+      signed_out: Cerraste sesión exitosamente.
+    unlocks:
+      send_instructions: En unos minutos, vas a recibir un correo electrónico con instrucciones sobre cómo desbloquear tu cuenta. Si pasa el tiempo y no recibiste ningún mensaje, por favor, revisá tu carpeta de correo basura / no deseado / spam.
+      send_paranoid_instructions: Si tu cuenta existe en nuestra base de datos, en unos minutos vas a recibir un correo electrónico con instrucciones sobre cómo desbloquear tu cuenta. Si pasa el tiempo y no recibiste ningún mensaje, por favor, revisá tu carpeta de correo basura / no deseado / spam.
+      unlocked: Se desbloqueó tu cuenta exitosamente. Por favor, iniciá sesión para continuar.
+  errors:
+    messages:
+      already_confirmed: ya se confirmó; por favor, intentá iniciar sesión
+      confirmation_period_expired: necesita confirmarse dentro de %{period}; por favor, solicitá una nueva
+      expired: venció; por favor, solicitá una nueva
+      not_found: no se encontró
+      not_locked: no se bloqueó
+      not_saved:
+        one: '1 error prohibió que este %{resource} se guarde:'
+        other: "%{count} errores prohibieron que este %{resource} se guarde:"
diff --git a/config/locales/en.yml b/config/locales/en.yml
index ea8af15ca..2665d0b28 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -809,7 +809,7 @@ en:
       '604800': 1 week
       '86400': 1 day
     expires_in_prompt: Never
-    generate: Generate
+    generate: Generate invite link
     invited_by: 'You were invited by:'
     max_uses:
       one: 1 use
diff --git a/config/locales/id.yml b/config/locales/id.yml
index bd47d05f8..38cb4e95d 100644
--- a/config/locales/id.yml
+++ b/config/locales/id.yml
@@ -4,26 +4,52 @@ id:
     about_hashtag_html: Ini adalah toot public yang ditandai dengan <strong>#%{hashtag}</strong>. Anda bisa berinteraksi dengan mereka jika anda memiliki akun dimanapun di fediverse.
     about_mastodon_html: Mastodon adalah sebuah jejaring sosial <em>terbuka, open-source</em. Sebuah alternatif <em>desentralisasi</em> dari platform komersial, menjauhkan anda resiko dari sebuah perusahaan yang memonopoli komunikasi anda. Pilih server yang anda percayai &mdash; apapun yang anda pilih, anda tetap dapat berinteraksi dengan semua orang. Semua orang dapat menjalankan server Mastodon sendiri dan berpartisipasi dalam <em>jejaring sosial</em> dengan mudah.
     about_this: Tentang server ini
+    active_count_after: aktif
+    active_footnote: Pengguna Aktif Bulanan (PAB)
     administered_by: 'Dikelola oleh:'
+    api: API
     apps: Aplikasi hp
+    apps_platforms: Gunakan Mastodon dari iOS, Android, dan platform lain
+    browse_directory: Jelajahi direktori profil dan saring sesuai minat
+    browse_public_posts: Jelajahi siaran langsung pos publik di Mastodon
     contact: Kontak
     contact_missing: Belum diset
     contact_unavailable: Tidak Tersedia
+    discover_users: Temukan pengguna
     documentation: Dokumentasi
+    federation_hint_html: Dengan akun di %{instance} Anda dapat mengikuti orang di server Mastodon mana pun dan di luarnya.
     generic_description: "%{domain} adalah satu server dalam jaringan"
+    get_apps: Coba aplikasi mobile
     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
+    server_stats: 'Statistik server:'
     source_code: Kode sumber
     status_count_after:
       other: status
     status_count_before: Yang telah menulis
+    tagline: Ikuti teman dan temukan yang baru
     terms: Kebijakan layanan
+    unavailable_content: Konten tak tersedia
+    unavailable_content_description:
+      domain: Server
+      reason: Alasan
+      rejecting_media: 'Berkas media dari server ini tak akan diproses dan disimpan, dan tak akan ada gambar kecil yang ditampilkan, perlu klik manual utk menuju berkas asli:'
+      silenced: 'Pos dari server ini akan disembunyikan dari linimasa publik dan percakapan, dan takkan ada notifikasi yang dibuat dari interaksi pengguna mereka, kecuali Anda mengikuti mereka:'
+      suspended: 'Takkan ada data yang diproses, disimpan, dan ditukarkan dari server ini, sehingga interaksi atau komunikasi dengan pengguna dari server ini tak mungkin dilakukan:'
+    unavailable_content_html: Mastodon umumnya mengizinkan Anda untuk melihat konten dan berinteraksi dengan pengguna dari server lain di fediverse. Ini adalah pengecualian yang dibuat untuk beberapa server.
     user_count_after:
       other: pengguna
     user_count_before: Tempat bernaung bagi
     what_is_mastodon: Apa itu Mastodon?
   accounts:
+    choices_html: 'Pilihan %{name}:'
+    endorsements_hint: Anda dapat mempromosikan orang yang Anda ikuti lewat antar muka web, dan mereka akan muncul di sini.
+    featured_tags_hint: Anda dapat mengunggulkan tagar tertentu yang akan ditampilkan di sini.
     follow: Ikuti
     followers:
       other: Pengikut
@@ -31,8 +57,10 @@ id:
     joined: Bergabung pada %{date}
     last_active: terakhir aktif
     link_verified_on: Kepemilikan tautan ini telah dicek pada %{date}
+    media: Media
     moved_html: "%{name} telah pindah ke %{new_profile_link}:"
     network_hidden: Informasi ini tidak tersedia
+    never_active: Tak pernah
     nothing_here: Tidak ada apapun disini!
     people_followed_by: Orang yang diikuti %{name}
     people_who_follow: Orang-orang yang mengikuti %{name}
@@ -44,7 +72,10 @@ id:
     posts_with_replies: Toot dan balasan
     reserved_username: Nama pengguna telah dipesan
     roles:
+      admin: Admin
+      bot: Bot
       moderator: Moderator
+    unavailable: Profil tidak tersedia
     unfollow: Berhenti mengikuti
   admin:
     account_actions:
@@ -56,7 +87,11 @@ id:
       delete: Hapus
       destroyed_msg: Catatan moderasi berhasil dihapus!
     accounts:
+      approve: Terima
+      approve_all: Terima semua
       are_you_sure: Anda yakin?
+      avatar: Avatar
+      by_domain: Domian
       change_email:
         changed_msg: Email akun ini berhasil diubah!
         current_email: Email saat ini
@@ -68,10 +103,12 @@ id:
       confirmed: Dikonfirmasi
       confirming: Mengkonfirmasi
       deleted: Terhapus
+      demote: Turunkan
       disable: Nonaktifkan
       disable_two_factor_authentication: Nonaktifkan 2FA
       disabled: Dinonaktifkan
       display_name: Nama
+      domain: Domain
       edit: Ubah
       email: E-mail
       email_status: Status Email
@@ -81,12 +118,15 @@ id:
       followers: Pengikut
       followers_url: URL pengikut
       follows: Mengikut
+      header: Tajuk
       inbox_url: URL Kotak masuk
       invited_by: Diundang oleh
+      ip: IP
       joined: Bergabung
       location:
         all: Semua
         local: Lokal
+        remote: Remot
         title: Lokasi
       login_status: Status login
       media_attachments: Lampiran media
@@ -94,12 +134,14 @@ id:
       moderation:
         active: Aktif
         all: Semua
+        pending: Tertunda
         silenced: Didiamkan
         suspended: Disuspen
         title: Moderasi
       moderation_notes: Catatan moderasi
       most_recent_activity: Aktivitas terbaru
       most_recent_ip: IP terbaru
+      no_account_selected: Tak ada akun yang diubah sebab tak ada yang dipilih
       no_limits_imposed: Tidak ada batasan
       not_subscribed: Tidak berlangganan
       outbox_url: URL Kotak keluar
@@ -110,20 +152,26 @@ id:
       public: Publik
       push_subscription_expires: Langganan PuSH telah kadaluarsa
       redownload: Muat ulang profil
+      reject: Tolak
+      reject_all: Tolak semua
       remove_avatar: Hapus avatar
       remove_header: Hapus header
       resend_confirmation:
         already_confirmed: Pengguna ini sudah dikonfirmasi
         send: Kirim ulang email konfirmasi
         success: Email konfirmasi berhasil dikirim!
+      reset: Reset
       reset_password: Reset kata sandi
       resubscribe: Langganan ulang
       role: Hak akses
       roles:
+        admin: Administrator
+        moderator: Moderator
         staff: Staf
         user: Pengguna
       salmon_url: URL Salmon
       search: Cari
+      shared_inbox_url: URL kotak masuk bersama
       show:
         created_reports: Laporan yang dibuat oleh akun ini
         targeted_reports: Laporan yang dibuat tentang akun ini
@@ -132,6 +180,7 @@ id:
       statuses: Status
       subscribe: Langganan
       suspended: Disuspen
+      time_in_queue: Menunggu dalam antrean %{time}
       title: Akun
       unconfirmed_email: Email belum dikonfirmasi
       undo_silenced: Undo mendiamkan
@@ -139,6 +188,40 @@ id:
       unsubscribe: Berhenti langganan
       username: Nama pengguna
       warn: Beri Peringatan
+      web: Web
+      whitelisted: Masuk daftar putih
+    action_logs:
+      actions:
+        assigned_to_self_report: "%{name} menugaskan laporan %{target} kpd dirinya sendiri"
+    custom_emojis:
+      listed: Terdaftar
+      new:
+        title: Tambah emoji kustom baru
+      overwrite: Timpa
+      shortcode: Kode pendek
+      shortcode_hint: Sedikitnya 2 karakter, hanya karakter alfanumerik dan garis bawah
+      title: Emoji kustom
+      uncategorized: Tak terkategorikan
+      unlist: Tak terdaftar
+      unlisted: Tak terdaftar
+      update_failed_msg: Tak dapat memperbarui emoji
+      updated_msg: Emoji berhasil diperbarui!
+      upload: Unggah
+    dashboard:
+      authorized_fetch_mode: Mode aman
+      config: Konfigurasi
+      feature_deletions: Penghapusan akun
+      feature_invites: Tautan undangan
+      feature_profile_directory: Direktori profil
+      feature_registrations: Registrasi
+      feature_relay: Relai federasi
+      feature_spam_check: Anti-spam
+      feature_timeline_preview: Pratinjau linimasa
+      features: Fitur
+      hidden_service: Federasi dengan layanan tersembunyi
+      open_reports: buka laporan
+      pending_tags: tagar menunggu ditinjau
+      pending_users: pengguna menunggu ditinjau
     domain_blocks:
       add_new: Tambah
       created_msg: Pemblokiran domain sedang diproses
diff --git a/config/locales/ja.yml b/config/locales/ja.yml
index 675ae40f8..00e27d4ae 100644
--- a/config/locales/ja.yml
+++ b/config/locales/ja.yml
@@ -21,7 +21,7 @@ ja:
     generic_description: "%{domain} は、Mastodon サーバーの一つです"
     get_apps: モバイルアプリを試す
     hosted_on: Mastodon hosted on %{domain}
-    instance_actor_flash: 'このアカウントはサーバーそのものを示す仮想的なもので、個人のアカウントではありません。これはサーバーの連合のために使用されます。サーバー全体をブロックする以外の目的でブロックしないでください。サーバー全体をブロックする場合、ドメインブロックを使用してください。
+    instance_actor_flash: 'このアカウントはサーバーそのものを示す仮想的なもので、特定のユーザーを示すものではありません。これはサーバーの連合のために使用されます。サーバー全体をブロックするときは、このアカウントをブロックせずに、ドメインブロックを使用してください。
 
 '
     learn_more: もっと詳しく
@@ -37,10 +37,10 @@ ja:
     unavailable_content: 制限中のサーバー
     unavailable_content_description:
       domain: サーバー
-      reason: '制限理由:'
+      reason: 制限理由
       rejecting_media: 'これらのサーバーからのメディアファイルは処理されず、保存や変換もされません。サムネイルも表示されません。表示するにはクリックしてそのサーバーに直接アクセスする必要があります:'
       silenced: 'これらのサーバーからの投稿は公開タイムラインと会話から隠されます。また該当するユーザーからの通知は相手をフォローしている場合を除き表示されません:'
-      suspended: 'これらのサーバーからのデータは処理されず、保存や変換もされません。該当するユーザーとの交流も不可能です:'
+      suspended: 'これらのサーバーからのデータは処理されず、保存や変換もされません。該当するユーザーとの交流もできません:'
     unavailable_content_html: 通常 Mastodon では連合先のどんなサーバーのユーザーとでもやりとりできます。ただし次のサーバーには例外が設定されています。
     user_count_after:
       other: 人
@@ -287,8 +287,8 @@ ja:
       whitelist_mode: ホワイトリストモード
     domain_allows:
       add_new: ホワイトリストに追加
-      created_msg: ドメインのホワイトリストへの登録が正常に完了しました
-      destroyed_msg: ドメインがホワイトリストから削除されました
+      created_msg: ドメインのホワイトリストへの登録が完了しました
+      destroyed_msg: ドメインをホワイトリストから削除しました
       undo: ホワイトリストから削除
     domain_blocks:
       add_new: ドメインブロックを追加
@@ -309,7 +309,7 @@ ja:
       private_comment: コメント (非公開)
       private_comment_hint: このコメントは同じサーバーのモデレーターも閲覧できます。
       public_comment: コメント (公開)
-      public_comment_hint: ドメインブロックの公開を有効にしている場合、このコメントも一般に公開されます。
+      public_comment_hint: ドメインブロックの公開を有効にしている場合、このコメントも公開されます。
       reject_media: メディアファイルを拒否
       reject_media_hint: ローカルに保存されたメディアファイルを削除し、今後のダウンロードを拒否します。停止とは無関係です
       reject_reports: 通報を拒否
@@ -435,8 +435,8 @@ ja:
         desc_html: この設定を変更していない全ユーザーに影響します
         title: デフォルトで検索エンジンによるインデックスを拒否する
       domain_blocks:
-        all: 誰でも許可
-        disabled: 誰も許可しない
+        all: 誰にでも許可
+        disabled: 誰にも許可しない
         title: ドメインブロックを表示
         users: ログイン済みローカルユーザーのみ許可
       domain_blocks_rationale:
@@ -464,12 +464,12 @@ ja:
           desc_html: 誰でも自分のアカウントを削除できるようにします
           title: アカウント削除を受け付ける
         min_invite_role:
-          disabled: 誰も許可しない
+          disabled: 誰にも許可しない
           title: 招待の作成を許可
       registrations_mode:
         modes:
           approved: 登録には承認が必要
-          none: 誰も許可しない
+          none: 誰にも許可しない
           open: 誰でも登録可
         title: 新規登録
       show_known_fediverse_at_about_page:
@@ -492,7 +492,7 @@ ja:
         title: カスタム利用規約
       site_title: サーバーの名前
       spam_check_enabled:
-        desc_html: 求められていないメッセージを繰り返し送信するアカウントを自動でサイレンスにし通報することができます。誤検知を含む可能性もあります。
+        desc_html: 迷惑なメッセージを繰り返し送信するアカウントを自動でサイレンスにし通報することができます。誤検知を含む可能性があります。
         title: スパム対策を有効にする
       thumbnail:
         desc_html: OpenGraphとAPIによるプレビューに使用されます。サイズは1200×630px推奨です
@@ -535,7 +535,7 @@ ja:
       trending_right_now: 現在のトレンド
       unique_uses_today: 本日 %{count} 人がトゥートに使用
       unreviewed: 未審査
-      updated_msg: ハッシュタグ設定の更新に成功しました
+      updated_msg: ハッシュタグ設定が更新されました
     title: 管理
     warning_presets:
       add_new: 追加
@@ -557,9 +557,9 @@ ja:
   aliases:
     add_new: エイリアスを作成
     created_msg: エイリアスを作成しました。これで以前のアカウントから引っ越しを開始できます。
-    deleted_msg: エイリアスを解除しました。そのアカウントからは引っ越しできなくなります。
+    deleted_msg: エイリアスを削除しました。指定されていたアカウントからは引っ越しできなくなります。
     hint_html: 他のアカウントからこのアカウントにフォロワーを引き継いで引っ越したい場合、ここでエイリアスを作成しておく必要があります。エイリアス自体は<strong>無害で、取り消す</strong>ことができます。<strong>引っ越しは以前のアカウント側から開始する必要があります</strong>。
-    remove: エイリアスを解除
+    remove: エイリアスを削除
   appearance:
     advanced_web_interface: 上級者向け UI
     advanced_web_interface_hint: ディスプレイを幅いっぱいまで活用したい場合、上級者向け UI をおすすめします。ホーム、通知、連合タイムライン、更にはリストやハッシュタグなど、様々な異なるカラムから望む限りの情報を一度に受け取れるような設定が可能になります。
@@ -591,7 +591,7 @@ ja:
     delete_account_html: アカウントを削除したい場合、<a href="%{path}">こちら</a> から手続きが行えます。削除する前に、確認画面があります。
     description:
       prefix_invited_by_user: "@%{name} があなたをこの Mastodon サーバーに招待しました"
-      prefix_sign_up: 今すぐ Mastodon に登録しましょう!
+      prefix_sign_up: 今すぐ Mastodon を始めよう!
       suffix: アカウントがあれば、どんな Mastodon 互換サーバーのユーザーでもフォローしたりメッセージをやり取りできるようになります!
     didnt_get_confirmation: 確認メールを受信できませんか?
     forgot_password: パスワードをお忘れですか?
@@ -633,7 +633,7 @@ ja:
       web: Web を開く
     title: "%{acct} をフォロー"
   challenge:
-    confirm: 続行する
+    confirm: 続ける
     hint_html: 以後 1 時間はパスワードの再入力を求めません
     invalid_password: パスワードが間違っています
     prompt: 続行するにはパスワードを入力してください
@@ -822,7 +822,7 @@ ja:
     incoming_migrations_html: 別のアカウントからこのアカウントに引っ越すには、まず<a href="%{path}">アカウントエイリアスを作成</a>する必要があります。
     moved_msg: アカウントは %{acct} に引っ越し設定されており、フォロワーは引っ越し先に引き継がれています。
     not_redirecting: アカウントは現在引っ越し設定されていません。
-    on_cooldown: あなたは最近アカウントを引っ越ししています。この機能は %{count} 日後に再度利用できるようになります。
+    on_cooldown: あなたは最近アカウントを引っ越しました。この機能は %{count} 日後に再度利用できるようになります。
     past_migrations: 過去の引っ越し
     proceed_with_move: フォロワーを引き継ぐ
     redirecting_to: アカウントは %{acct} に引っ越し設定されています。
@@ -831,9 +831,9 @@ ja:
       backreference_required: まずは引っ越し先のアカウントでこのアカウントに対しエイリアスを作成する必要があります
       before: '続行する前に、次の点を再度確認してください:'
       cooldown: 引っ越し後はクールダウン期間があります。その間再度引っ越すことはできません
-      disabled_account: 引っ越すとデータのエクスポートと再有効化以外の大半の機能は利用できなくなります
+      disabled_account: 引っ越した後はデータのエクスポートと再有効化を除きほとんどの機能が利用できなくなります
       followers: すべてのフォロワーを現在のアカウントから新しいアカウントに引き継ぎます
-      only_redirect_html: あるいは、<a href="%{path}">引っ越し先の表示のみ</a>も可能です。
+      only_redirect_html: または、<a href="%{path}">フォロワーを残したまま引っ越す</a>こともできます。
       other_data: その他のデータは自動的に引き継がれません
       redirect: プロフィールに引っ越し済みの通知が表示され、検索結果から除外されます
   moderation:
diff --git a/config/locales/nl.yml b/config/locales/nl.yml
index dccd9aeb4..1a2b158ca 100644
--- a/config/locales/nl.yml
+++ b/config/locales/nl.yml
@@ -240,6 +240,7 @@ nl:
       delete: Verwijderen
       destroyed_msg: Verwijderen van emoji geslaagd!
       disable: Uitschakelen
+      disabled: Uitgeschakeld
       disabled_msg: Uitschakelen van deze emoji geslaagd
       emoji: Emoji
       enable: Inschakelen
diff --git a/config/locales/simple_form.ar.yml b/config/locales/simple_form.ar.yml
index 548d275ba..27c9e64dc 100644
--- a/config/locales/simple_form.ar.yml
+++ b/config/locales/simple_form.ar.yml
@@ -50,6 +50,8 @@ ar:
           value: المحتوى
       account_alias:
         acct: مُعرّف الحساب القديم
+      account_migration:
+        acct: مُعرّف الحساب الجديد
       account_warning_preset:
         text: نموذج نصي
       admin_account_action:
@@ -121,6 +123,8 @@ ar:
         must_be_follower: حظر الإخطارات القادمة من حسابات لا تتبعك
         must_be_following: حظر الإخطارات القادمة من الحسابات التي لا تتابعها
         must_be_following_dm: حظر الرسائل المباشرة القادمة من طرف أشخاص لا تتبعهم
+      invite:
+        comment: التعليق
       invite_request:
         text: لماذا ترغب في الانضمام؟
       notification_emails:
@@ -134,6 +138,7 @@ ar:
       tag:
         listable: اسمح لهذا الوسم بالظهور في البحث وفي دليل الصفحات التعريفية
         name: الوسم
+        trendable: السماح لهذه الكلمة المفتاحية بالظهور تحت المتداوَلة
         usable: اسمح للتبويقات باستخدام هذا الوسم
     'no': لا
     recommended: موصى بها
diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml
index c41292abf..6bfff0c15 100644
--- a/config/locales/simple_form.fr.yml
+++ b/config/locales/simple_form.fr.yml
@@ -67,9 +67,9 @@ fr:
           name: Étiquette
           value: Contenu
       account_alias:
-        acct: Gestion de l'ancien compte
+        acct: L’identifiant de l’ancien compte
       account_migration:
-        acct: Gestion du nouveau compte
+        acct: L’identifiant du nouveau compte
       account_warning_preset:
         text: Texte de présélection
       admin_account_action:
diff --git a/config/locales/simple_form.id.yml b/config/locales/simple_form.id.yml
index c35238252..54d10f21a 100644
--- a/config/locales/simple_form.id.yml
+++ b/config/locales/simple_form.id.yml
@@ -24,6 +24,7 @@ id:
         digest: Hanya kirim setelah lama tidak aktif dan hanya jika Anda menerima pesan personal atas absensi Anda
         discoverable: Direktori profil adalah cara lain agar akun Anda menyentuh audiens yang lebih luas
         email: Anda akan dikirimi surel konfirmasi
+        fields: Anda bisa memiliki hingga 4 item utk ditampilkan sebagai tabel di profil Anda
         header: PNG, GIF atau JPG. Maksimal %{size}. Ukuran dikecilkan menjadi %{dimensions}px
         inbox_url: Salin URL dari halaman depan relai yang ingin Anda pakai
         irreversible: Toot tersaring akan hilang permanen bahkan jika saringan dihapus kemudian
@@ -43,38 +44,125 @@ id:
         setting_use_blurhash: Gradien didasarkan pada warna visual yang tersembunyi tetapi mengaburkan setiap detail
         setting_use_pending_items: Sembunyikan pembaruan linimasa di balik klik alih-alih bergulir secara otomatis
         username: Nama pengguna Anda unik di %{domain}
+        whole_word: Ketika kata kunci/frasa hanya alfanumerik, maka itu hanya akan diterapkan jika cocok dengan semua kata
+      domain_allow:
+        domain: Domain ini dapat mengambil data dari server ini dan data yang diterima akan diproses dan disimpan
+      featured_tag:
+        name: 'Anda mungkin ingin pakai salah satu dari ini:'
+      form_challenge:
+        current_password: Anda memasuki area aman
       imports:
         data: File CSV yang diexpor dari server Mastodon lain
+      invite_request:
+        text: Ini akan membantu kami meninjau aplikasi Anda
       sessions:
         otp: Masukkan kode dua-faktor dari handphone atau gunakan kode pemulihan anda.
+      user:
+        chosen_languages: Ketika dicentang, hanya toot dalam bahasa yang dipilih yang akan ditampilkan di linimasa publik
     labels:
+      account:
+        fields:
+          name: Label
+          value: Konten
+      account_alias:
+        acct: Menangani akun lama
+      account_migration:
+        acct: Menangani akun baru
+      account_warning_preset:
+        text: Teks preset
+      admin_account_action:
+        include_statuses: Sertakan toot terlapor pada surel
+        send_email_notification: Beritahu pengguna per surel
+        text: Peringatan kustom
+        type: Aksi
+        types:
+          disable: Matikan
+          none: Biarkan
+          silence: Diamkan
+          suspend: Tangguhkan dan hapus data akun scr permanen
+        warning_preset_id: Gunakan preset peringatan
       defaults:
+        autofollow: Undang untuk mengikuti Anda
+        avatar: Avatar
+        bot: Ini akun bot
+        chosen_languages: Saring bahasa
         confirm_new_password: Konfirmasi kata sandi baru
         confirm_password: Konfirmasi kata sandi
+        context: Saring konteks
         current_password: Kata sandi sekarang
+        data: Data
+        discoverable: Daftarkan akun ini di direktori
         display_name: Nama yang ditampilkan
         email: Alamat e-mail
+        expires_in: Kedaluwarsa setelah
+        fields: Metadata profil
+        header: Tajuk
+        inbox_url: URL kotak relai
+        irreversible: Hapus alih-alih sembunyikan
         locale: Bahasa
         locked: Buat akun menjadi pribadi
+        max_uses: Jumlah maksimal penggunaan
         new_password: Password baru
+        note: Bio
         otp_attempt: Kode dua-faktor
         password: Kata sandi
+        phrase: Kata kunci atau frasa
+        setting_advanced_layout: Aktifkan antar muka web mahir
+        setting_aggregate_reblogs: Boost grup di linimasa
+        setting_auto_play_gif: Mainkan otomatis animasi GIF
         setting_boost_modal: Tampilkan dialog konfirmasi dialog sebelum boost
+        setting_default_language: Bahasa posting
         setting_default_privacy: Privasi postingan
+        setting_default_sensitive: Selalu tandai media sebagai sensitif
+        setting_delete_modal: Tampilkan dialog konfirmasi sebelum hapus toot
+        setting_display_media: Tampilan media
+        setting_display_media_default: Bawaan
+        setting_display_media_hide_all: Sembunyikan semua
+        setting_display_media_show_all: Tunjukkan semua
+        setting_expand_spoilers: Selalu bentangkan toot yang bertanda peringatan konten
+        setting_hide_network: Sembunyikan jaringan Anda
+        setting_noindex: Opt-out dari pengindeksan mesin pencari
+        setting_reduce_motion: Kurangi gerakan animasi
+        setting_show_application: Singkap aplikasi yang dipakai utk kirim toot
+        setting_system_font_ui: Gunakan fon bawaan sistem
+        setting_theme: Tema situs
+        setting_trends: Tampilkan tren hari ini
+        setting_unfollow_modal: Tampilkan konfirmasi dialog sebelum berhenti mengikuti seseorang
+        setting_use_blurhash: Tampilkan gradien penuh warna utk media tersembunyi
+        setting_use_pending_items: Mode pelan
         severity: Keparahan
         type: Tipe impor
         username: Nama pengguna
+        username_or_email: Nama pengguna atau Surel
+        whole_word: Seluruh kata
+      featured_tag:
+        name: Tagar
       interactions:
         must_be_follower: Blokir notifikasi dari non-pengikut
         must_be_following: Blokir notifikasi dari orang yang tidak anda ikuti
+        must_be_following_dm: Blokir pesan langsung dari orang yang tak Anda ikuti
+      invite:
+        comment: Komentar
+      invite_request:
+        text: Mengapa Anda ingin gabung?
       notification_emails:
         digest: Kirim email berisi rangkuman
         favourite: Kirim email saat seseorang menyukai status anda
         follow: Kirim email saat seseorang mengikuti anda
         follow_request: Kirim email saat seseorang meminta untuk mengikuti anda
         mention: Kirim email saat seseorang menyebut anda
+        pending_account: Kirim surel ketika akun baru perlu ditinjau
         reblog: Kirim email saat seseorang mem-boost status anda
+        report: Kirim surel ketika laporan baru dikirim
+        trending_tag: Kirim surel ketika tagar tak tertinjau jadi tren
+      tag:
+        listable: Izinkan tagar ini muncul di penelusuran dan di direktori profil
+        name: Tagar
+        trendable: Izinkan tagar ini muncul di bawah tren
+        usable: Izinkan toot memakai tagar ini
     'no': Tidak
+    recommended: Direkomendasikan
     required:
+      mark: "*"
       text: wajib
     'yes': Ya
diff --git a/config/locales/tr.yml b/config/locales/tr.yml
index 40e230efd..bdc72c767 100644
--- a/config/locales/tr.yml
+++ b/config/locales/tr.yml
@@ -39,6 +39,10 @@ tr:
     unavailable_content_description:
       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:'
+      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.
     user_count_after:
       one: kullanıcı
       other: kullanıcı
@@ -597,7 +601,14 @@ tr:
     follow: Takip et
     follow_request: 'Şuna takip isteği gönderdiniz:'
     following: 'Başarılı! Artık şunu takip ediyorsunuz:'
+    post_follow:
+      close: Ya da, sadece bu pencereyi kapatabilirsiniz.
+      return: Kullanıcının profilini göster
     title: "%{acct}'i takip et"
+  challenge:
+    confirm: Devam et
+    invalid_password: Geçersiz parola
+    prompt: Devam etmek parolayı doğrulayın
   datetime:
     distance_in_words:
       about_x_hours: "%{count}sa"
@@ -612,6 +623,17 @@ tr:
       x_minutes: "%{count}dk"
       x_months: "%{count}ay"
       x_seconds: "%{count}sn"
+  deletes:
+    challenge_not_passed: Girdiğiniz bilgi doğru değildi
+    confirm_password: Kimliğinizi doğrulamak için mevcut parolanızı girin
+    confirm_username: Prosedürü doğrulamak için kullanıcı adınızı girin
+    proceed: Hesabı sil
+    success_msg: Hesabınız başarıyla silindi
+    warning:
+      before: 'Devam etmeden önce, lütfen bu notları dikkatlice okuyun:'
+      caches: Diğer sunucular tarafından ön belleğe alınan içerik kalabilir
+      data_removal: Gönderileriniz ve diğer verileriniz kalıcı olarak silinecektir
+      email_change_html: Hesabınızı silmeden <a href="%{path}">e-posta adresinizi değiştirebilirsiniz</a>
   directories:
     directory: Profil dizini
     explanation: Kullanıcıları ilgi alanlarına göre keşfedin
@@ -693,6 +715,7 @@ tr:
     inactive: Pasif
     publicize_toot: 'İspatlandı! Ben %{service} üzerinde %{username}: %{url}'
     status: Doğrulama durumu
+    view_proof: Kanıt görüntüle
   imports:
     modes:
       merge: Birleştir
@@ -739,6 +762,24 @@ tr:
       too_many: 4'ten fazla dosya ekleyemezsiniz
   migrations:
     acct: Taşındı
+    cancel: Yönlendirmeyi iptal et
+    cancelled_msg: Yönlendirme başarıyla iptal edildi.
+    errors:
+      already_moved: zaten taşındığınızla aynı hesap
+      move_to_self: mevcut hesap olamaz
+      not_found: bulunamadı
+      on_cooldown: Soğuma aşamasındasınız
+    followers_count: Taşınma zamanındaki takipçiler
+    incoming_migrations: Farklı bir hesaptan taşınma
+    past_migrations: Geçmiş taşınmalar
+    proceed_with_move: Takipçileri taşı
+    redirecting_to: Hesabınız %{acct} hesabına yönlendirilmektedir.
+    set_redirect: Yönlendirme ayarla
+    warning:
+      before: 'Devam etmeden önce, lütfen bu notları dikkatlice okuyun:'
+      cooldown: Taşındıktan sonra, yeniden taşınma imkanınızın olmayacağı bir soğuma periyodu vardır
+      followers: Bu eylem tüm takipçileri şu anki hesaptan yeni hesaba taşıyacaktır
+      other_data: Başka bir veri otomatik olarak taşınmayacaktır
   moderation:
     title: Yönetim
   notification_mailer:
@@ -770,6 +811,7 @@ tr:
       action: Yanıt
       body: "%{name} sizden bahsetti:"
       subject: "%{name} sizden bahsetti"
+      title: Yeni bahsetme
     reblog:
       body: "%{name} durumunuzu boost etti:"
       subject: "%{name} durumunuzu boost etti"
@@ -799,6 +841,7 @@ tr:
       too_many_options: "%{max} öğeden fazla öğe içeremez"
   preferences:
     other: Diğer
+    posting_defaults: Gönderi varsayılanları
     public_timelines: Genel zaman çizelgeleri
   relationships:
     activity: Hesap etkinliği
@@ -819,6 +862,16 @@ tr:
     no_account_html: Hesabınız yok mu? <a href='%{sign_up_path}' target='_blank'>Buradan kaydolabilirsiniz</a>
     proceed: Takip onayı
     prompt: Bu kullanıcıyı takip etmek istediğinize emin misiniz?
+  remote_interaction:
+    favourite:
+      proceed: Favorilere eklemek için ilerle
+      prompt: 'Bu gönderiyi favorilerinize eklemek istiyorsunuz:'
+    reblog:
+      proceed: Yinelemek için ilerle
+      prompt: 'Bu gönderiyi yinelemek istiyorsunuz:'
+    reply:
+      proceed: Cevap vermek için ilerle
+      prompt: 'Bu gönderiye cevap vermek istiyorsunuz:'
   sessions:
     activity: Son aktivite
     browser: Tarayıcı
diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb
index dd9e1ef99..8010e526b 100644
--- a/lib/mastodon/version.rb
+++ b/lib/mastodon/version.rb
@@ -17,7 +17,7 @@ module Mastodon
     end
 
     def flags
-      'rc3'
+      ''
     end
 
     def suffix
diff --git a/spec/services/app_sign_up_service_spec.rb b/spec/services/app_sign_up_service_spec.rb
index 7948bb53b..e7c7f3ba1 100644
--- a/spec/services/app_sign_up_service_spec.rb
+++ b/spec/services/app_sign_up_service_spec.rb
@@ -38,6 +38,15 @@ RSpec.describe AppSignUpService, type: :service do
       user = User.find_by(id: access_token.resource_owner_id)
       expect(user).to_not be_nil
       expect(user.account).to_not be_nil
+      expect(user.invite_request).to be_nil
+    end
+
+    it 'creates an account with invite request text' do
+      access_token = subject.call(app, good_params.merge(reason: 'Foo bar'))
+      expect(access_token).to_not be_nil
+      user = User.find_by(id: access_token.resource_owner_id)
+      expect(user).to_not be_nil
+      expect(user.invite_request&.text).to eq 'Foo bar'
     end
   end
 end