about summary refs log tree commit diff
path: root/app/javascript
diff options
context:
space:
mode:
Diffstat (limited to 'app/javascript')
-rw-r--r--app/javascript/mastodon/locales/ar.json24
-rw-r--r--app/javascript/mastodon/locales/ast.json20
-rw-r--r--app/javascript/mastodon/locales/bg.json20
-rw-r--r--app/javascript/mastodon/locales/bn.json20
-rw-r--r--app/javascript/mastodon/locales/br.json20
-rw-r--r--app/javascript/mastodon/locales/ca.json20
-rw-r--r--app/javascript/mastodon/locales/co.json20
-rw-r--r--app/javascript/mastodon/locales/cs.json20
-rw-r--r--app/javascript/mastodon/locales/cy.json20
-rw-r--r--app/javascript/mastodon/locales/da.json20
-rw-r--r--app/javascript/mastodon/locales/de.json20
-rw-r--r--app/javascript/mastodon/locales/defaultMessages.json8
-rw-r--r--app/javascript/mastodon/locales/el.json20
-rw-r--r--app/javascript/mastodon/locales/en.json2
-rw-r--r--app/javascript/mastodon/locales/eo.json26
-rw-r--r--app/javascript/mastodon/locales/es-AR.json20
-rw-r--r--app/javascript/mastodon/locales/es.json20
-rw-r--r--app/javascript/mastodon/locales/et.json20
-rw-r--r--app/javascript/mastodon/locales/eu.json20
-rw-r--r--app/javascript/mastodon/locales/fa.json20
-rw-r--r--app/javascript/mastodon/locales/fi.json20
-rw-r--r--app/javascript/mastodon/locales/fr.json22
-rw-r--r--app/javascript/mastodon/locales/ga.json16
-rw-r--r--app/javascript/mastodon/locales/gl.json20
-rw-r--r--app/javascript/mastodon/locales/he.json54
-rw-r--r--app/javascript/mastodon/locales/hi.json20
-rw-r--r--app/javascript/mastodon/locales/hr.json20
-rw-r--r--app/javascript/mastodon/locales/hu.json20
-rw-r--r--app/javascript/mastodon/locales/hy.json20
-rw-r--r--app/javascript/mastodon/locales/id.json20
-rw-r--r--app/javascript/mastodon/locales/io.json20
-rw-r--r--app/javascript/mastodon/locales/is.json20
-rw-r--r--app/javascript/mastodon/locales/it.json20
-rw-r--r--app/javascript/mastodon/locales/ja.json20
-rw-r--r--app/javascript/mastodon/locales/ka.json20
-rw-r--r--app/javascript/mastodon/locales/kab.json48
-rw-r--r--app/javascript/mastodon/locales/kk.json20
-rw-r--r--app/javascript/mastodon/locales/kn.json20
-rw-r--r--app/javascript/mastodon/locales/ko.json20
-rw-r--r--app/javascript/mastodon/locales/ku.json461
-rw-r--r--app/javascript/mastodon/locales/lt.json20
-rw-r--r--app/javascript/mastodon/locales/lv.json20
-rw-r--r--app/javascript/mastodon/locales/mk.json20
-rw-r--r--app/javascript/mastodon/locales/ml.json20
-rw-r--r--app/javascript/mastodon/locales/mr.json20
-rw-r--r--app/javascript/mastodon/locales/ms.json20
-rw-r--r--app/javascript/mastodon/locales/nl.json54
-rw-r--r--app/javascript/mastodon/locales/nn.json20
-rw-r--r--app/javascript/mastodon/locales/no.json20
-rw-r--r--app/javascript/mastodon/locales/oc.json32
-rw-r--r--app/javascript/mastodon/locales/pl.json20
-rw-r--r--app/javascript/mastodon/locales/pt-BR.json20
-rw-r--r--app/javascript/mastodon/locales/pt-PT.json26
-rw-r--r--app/javascript/mastodon/locales/ro.json20
-rw-r--r--app/javascript/mastodon/locales/ru.json22
-rw-r--r--app/javascript/mastodon/locales/sc.json20
-rw-r--r--app/javascript/mastodon/locales/sk.json20
-rw-r--r--app/javascript/mastodon/locales/sl.json20
-rw-r--r--app/javascript/mastodon/locales/sq.json20
-rw-r--r--app/javascript/mastodon/locales/sr-Latn.json20
-rw-r--r--app/javascript/mastodon/locales/sr.json20
-rw-r--r--app/javascript/mastodon/locales/sv.json20
-rw-r--r--app/javascript/mastodon/locales/szl.json20
-rw-r--r--app/javascript/mastodon/locales/ta.json20
-rw-r--r--app/javascript/mastodon/locales/tai.json20
-rw-r--r--app/javascript/mastodon/locales/te.json20
-rw-r--r--app/javascript/mastodon/locales/th.json20
-rw-r--r--app/javascript/mastodon/locales/tr.json32
-rw-r--r--app/javascript/mastodon/locales/ug.json461
-rw-r--r--app/javascript/mastodon/locales/uk.json32
-rw-r--r--app/javascript/mastodon/locales/ur.json20
-rw-r--r--app/javascript/mastodon/locales/vi.json20
-rw-r--r--app/javascript/mastodon/locales/whitelist_ku.json2
-rw-r--r--app/javascript/mastodon/locales/whitelist_ug.json2
-rw-r--r--app/javascript/mastodon/locales/zh-CN.json20
-rw-r--r--app/javascript/mastodon/locales/zh-HK.json22
-rw-r--r--app/javascript/mastodon/locales/zh-TW.json20
77 files changed, 1863 insertions, 643 deletions
diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json
index 4decd3f74..47445a4db 100644
--- a/app/javascript/mastodon/locales/ar.json
+++ b/app/javascript/mastodon/locales/ar.json
@@ -1,13 +1,12 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "ملاحظة",
   "account.add_or_remove_from_list": "أضفه أو أزله من القائمة",
   "account.badges.bot": "روبوت",
   "account.badges.group": "فريق",
   "account.block": "حظر @{name}",
   "account.block_domain": "إخفاء كل شيء قادم من اسم النطاق {domain}",
   "account.blocked": "محظور",
-  "account.browse_more_on_origin_server": "Browse more on the original profile",
+  "account.browse_more_on_origin_server": "تصفح المزيد على الملف التعريفي الأصلي",
   "account.cancel_follow_request": "إلغاء طلب المتابَعة",
   "account.direct": "رسالة خاصة إلى @{name}",
   "account.domain_blocked": "النطاق مخفي",
@@ -16,7 +15,8 @@
   "account.follow": "تابِع",
   "account.followers": "مُتابِعون",
   "account.followers.empty": "لا أحد يتبع هذا الحساب بعد.",
-  "account.follows": "يتابع",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "هذا الحساب لا يتبع أحدًا بعد.",
   "account.follows_you": "يتابعك",
   "account.hide_reblogs": "إخفاء ترقيات @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "في انتظار الموافقة. اضْغَطْ/ي لإلغاء طلب المتابعة",
   "account.share": "شارك ملف تعريف @{name}",
   "account.show_reblogs": "اعرض ترقيات @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "إلغاء الحظر عن @{name}",
   "account.unblock_domain": "فك الخْفى عن {domain}",
   "account.unendorse": "أزل ترويجه مِن الملف التعريفي",
   "account.unfollow": "إلغاء المتابعة",
   "account.unmute": "إلغاء الكتم عن @{name}",
   "account.unmute_notifications": "إلغاء كتم إخطارات @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "انقر لإضافة ملاحظة",
   "alert.rate_limited.message": "يرجى إعادة المحاولة بعد {retry_time, time, medium}.",
   "alert.rate_limited.title": "المعدل محدود",
   "alert.unexpected.message": "لقد طرأ هناك خطأ غير متوقّع.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "ترخيص",
   "follow_request.reject": "رفض",
   "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+  "generic.saved": "Saved",
   "getting_started.developers": "المُطوِّرون",
   "getting_started.directory": "دليل الصفحات التعريفية",
   "getting_started.documentation": "الدليل",
@@ -422,11 +421,14 @@
   "time_remaining.seconds": "{number, plural, one {# ثانية} other {# ثوانٍ}} متبقية",
   "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
   "timeline_hint.resources.followers": "المتابِعون",
-  "timeline_hint.resources.follows": "Follows",
+  "timeline_hint.resources.follows": "المتابَعون",
   "timeline_hint.resources.statuses": "التبويقات القديمة",
-  "trends.count_by_accounts": "{count} {rawCount, plural, zero {} one {شخص واحد} two {شخصين} few {أشخاص} many {أشخاص} other {أشخاص}} تتحدّث",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "المتداولة الآن",
   "ui.beforeunload": "سوف تفقد مسودتك إن تركت ماستدون.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "اسحب ثم أفلت للرفع",
   "upload_button.label": "إضافة وسائط ({formats})",
   "upload_error.limit": "لقد تم بلوغ الحد الأقصى المسموح به لإرسال الملفات.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "وصف للأشخاص ذي قِصر السمع",
   "upload_form.description": "وصف للمعاقين بصريا",
   "upload_form.edit": "تعديل",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "حذف",
   "upload_form.video_description": "وصف للمعاقين بصريا أو لِذي قِصر السمع",
   "upload_modal.analyzing_picture": "جارٍ فحص الصورة…",
   "upload_modal.apply": "طبّق",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "نصٌّ حكيمٌ لهُ سِرٌّ قاطِعٌ وَذُو شَأنٍ عَظيمٍ مكتوبٌ على ثوبٍ أخضرَ ومُغلفٌ بجلدٍ أزرق",
   "upload_modal.detect_text": "اكتشف النص مِن الصورة",
   "upload_modal.edit_media": "تعديل الوسائط",
diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json
index 80d1d4aac..491faa057 100644
--- a/app/javascript/mastodon/locales/ast.json
+++ b/app/javascript/mastodon/locales/ast.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "Amestar o desaniciar de les llistes",
   "account.badges.bot": "Robó",
   "account.badges.group": "Grupu",
@@ -16,7 +15,8 @@
   "account.follow": "Siguir",
   "account.followers": "Siguidores",
   "account.followers.empty": "Naide sigue a esti usuariu entá.",
-  "account.follows": "Sigue",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "Esti usuariu entá nun sigue a naide.",
   "account.follows_you": "Síguete",
   "account.hide_reblogs": "Anubrir les comparticiones de @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Esperando pola aprobación. Calca pa encaboxar la solicitú de siguimientu",
   "account.share": "Share @{name}'s profile",
   "account.show_reblogs": "Amosar les comparticiones de @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Desbloquiar a @{name}",
   "account.unblock_domain": "Amosar {domain}",
   "account.unendorse": "Nun destacar nel perfil",
   "account.unfollow": "Dexar de siguir",
   "account.unmute": "Unmute @{name}",
   "account.unmute_notifications": "Unmute notifications from @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
   "alert.rate_limited.title": "Rate limited",
   "alert.unexpected.message": "Asocedió un fallu inesperáu.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Autorizar",
   "follow_request.reject": "Refugar",
   "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+  "generic.saved": "Saved",
   "getting_started.developers": "Desendolcadores",
   "getting_started.directory": "Direutoriu de perfiles",
   "getting_started.documentation": "Documentación",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {persona} other {persones}} falando",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Trending now",
   "ui.beforeunload": "El borrador va perdese si coles de Mastodon.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Arrastra y suelta pa xubir",
   "upload_button.label": "Add images, a video or an audio file",
   "upload_error.limit": "File upload limit exceeded.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Descripción pa persones con perda auditiva",
   "upload_form.description": "Descripción pa discapacitaos visuales",
   "upload_form.edit": "Editar",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Desaniciar",
   "upload_form.video_description": "Descripción pa persones con perda auditiva o discapacidá visual",
   "upload_modal.analyzing_picture": "Analizando la semeya…",
   "upload_modal.apply": "Aplicar",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
   "upload_modal.detect_text": "Deteutar el testu de la semeya",
   "upload_modal.edit_media": "Edición",
diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json
index 7fa980202..472c88afc 100644
--- a/app/javascript/mastodon/locales/bg.json
+++ b/app/javascript/mastodon/locales/bg.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "Добави или премахни от списъците",
   "account.badges.bot": "бот",
   "account.badges.group": "Group",
@@ -16,7 +15,8 @@
   "account.follow": "Последвай",
   "account.followers": "Последователи",
   "account.followers.empty": "Все още никой не следва този потребител.",
-  "account.follows": "Следвам",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "Този потребител все още не следва никого.",
   "account.follows_you": "Твой последовател",
   "account.hide_reblogs": "Hide boosts from @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "В очакване на одобрение",
   "account.share": "Share @{name}'s profile",
   "account.show_reblogs": "Show boosts from @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Не блокирай",
   "account.unblock_domain": "Unhide {domain}",
   "account.unendorse": "Don't feature on profile",
   "account.unfollow": "Не следвай",
   "account.unmute": "Unmute @{name}",
   "account.unmute_notifications": "Unmute notifications from @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
   "alert.rate_limited.title": "Rate limited",
   "alert.unexpected.message": "An unexpected error occurred.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Authorize",
   "follow_request.reject": "Reject",
   "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+  "generic.saved": "Saved",
   "getting_started.developers": "Developers",
   "getting_started.directory": "Profile directory",
   "getting_started.documentation": "Documentation",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Trending now",
   "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Drag & drop to upload",
   "upload_button.label": "Добави медия",
   "upload_error.limit": "File upload limit exceeded.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Describe for people with hearing loss",
   "upload_form.description": "Describe for the visually impaired",
   "upload_form.edit": "Edit",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Отмяна",
   "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
   "upload_modal.analyzing_picture": "Analyzing picture…",
   "upload_modal.apply": "Apply",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
   "upload_modal.detect_text": "Detect text from picture",
   "upload_modal.edit_media": "Edit media",
diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json
index c5f08a40e..b41cdf16d 100644
--- a/app/javascript/mastodon/locales/bn.json
+++ b/app/javascript/mastodon/locales/bn.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "তালিকাতে যুক্ত বা অপসারণ করুন",
   "account.badges.bot": "বট",
   "account.badges.group": "Group",
@@ -16,7 +15,8 @@
   "account.follow": "অনুসরণ করুন",
   "account.followers": "অনুসরণকারী",
   "account.followers.empty": "এই সদস্যকে এখনো কেউ অনুসরণ করে না।.",
-  "account.follows": "যাদেরকে অনুসরণ করেন",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "এই সদস্য কাওকে এখনো অনুসরণ করেন না.",
   "account.follows_you": "আপনাকে অনুসরণ করে",
   "account.hide_reblogs": "@{name}'র সমর্থনগুলি লুকিয়ে ফেলুন",
@@ -36,16 +36,14 @@
   "account.requested": "অনুমতির অপেক্ষা। অনুসরণ করার অনুরোধ বাতিল করতে এখানে ক্লিক করুন",
   "account.share": "@{name} র প্রোফাইল অন্যদের দেখান",
   "account.show_reblogs": "@{name} র সমর্থনগুলো দেখান",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "@{name} র কার্যকলাপ দেখুন",
   "account.unblock_domain": "{domain} কে আবার দেখুন",
   "account.unendorse": "আপনার নিজের পাতায় এটা দেখবেন না",
   "account.unfollow": "অনুসরণ না করতে",
   "account.unmute": "@{name} র কার্যকলাপ আবার দেখুন",
   "account.unmute_notifications": "@{name} র প্রজ্ঞাপন দেখুন",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "{retry_time, time, medium} -এর পরে আবার প্রচেষ্টা করুন।",
   "alert.rate_limited.title": "হার সীমিত",
   "alert.unexpected.message": "সমস্যা অপ্রত্যাশিত.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "অনুমতি দিন",
   "follow_request.reject": "প্রত্যাখ্যান করুন",
   "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+  "generic.saved": "Saved",
   "getting_started.developers": "তৈরিকারকদের জন্য",
   "getting_started.directory": "নিজস্ব-পাতাগুলির তালিকা",
   "getting_started.documentation": "নথিপত্র",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} কথা বলছে",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "বর্তমানে জনপ্রিয়",
   "ui.beforeunload": "যে পর্যন্ত এটা লেখা হয়েছে, মাস্টাডন থেকে চলে গেলে এটা মুছে যাবে।",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "টেনে এখানে ছেড়ে দিলে এখানে যুক্ত করা যাবে",
   "upload_button.label": "ছবি বা ভিডিও যুক্ত করতে (এসব ধরণের: JPEG, PNG, GIF, WebM, MP4, MOV)",
   "upload_error.limit": "যা যুক্ত করতে চাচ্ছেন সেটি বেশি বড়, এখানকার সর্বাধিকের মেমোরির উপরে চলে গেছে।",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Describe for people with hearing loss",
   "upload_form.description": "যারা দেখতে পায়না তাদের জন্য এটা বর্ণনা করতে",
   "upload_form.edit": "সম্পাদন",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "মুছে ফেলতে",
   "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
   "upload_modal.analyzing_picture": "চিত্র বিশ্লেষণ করা হচ্ছে…",
   "upload_modal.apply": "প্রয়োগ করুন",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
   "upload_modal.detect_text": "ছবি থেকে পাঠ্য সনাক্ত করুন",
   "upload_modal.edit_media": "মিডিয়া সম্পাদনা করুন",
diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json
index e6ad55fb9..7d041e3eb 100644
--- a/app/javascript/mastodon/locales/br.json
+++ b/app/javascript/mastodon/locales/br.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "Ouzhpenn pe dilemel eus al listennadoù",
   "account.badges.bot": "Robot",
   "account.badges.group": "Strollad",
@@ -16,7 +15,8 @@
   "account.follow": "Heuliañ",
   "account.followers": "Heulier·ezed·ien",
   "account.followers.empty": "Den na heul an implijer-mañ c'hoazh.",
-  "account.follows": "Koumanantoù",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "An implijer·ez-mañ na heul den ebet.",
   "account.follows_you": "Ho heul",
   "account.hide_reblogs": "Kuzh toudoù rannet gant @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "O c'hortoz an asant. Klikit evit nullañ ar goulenn heuliañ",
   "account.share": "Skignañ profil @{name}",
   "account.show_reblogs": "Diskouez skignadennoù @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Diverzañ @{name}",
   "account.unblock_domain": "Diverzañ an domani {domain}",
   "account.unendorse": "Paouez da lakaat war-wel war ar profil",
   "account.unfollow": "Diheuliañ",
   "account.unmute": "Diguzhat @{name}",
   "account.unmute_notifications": "Diguzhat kemennoù a @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "Klaskit en-dro a-benn {retry_time, time, medium}.",
   "alert.rate_limited.title": "Feur bevennet",
   "alert.unexpected.message": "Ur fazi dic'hortozet zo degouezhet.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Aotren",
   "follow_request.reject": "Nac'hañ",
   "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+  "generic.saved": "Saved",
   "getting_started.developers": "Diorroerien",
   "getting_started.directory": "Roll ar profiloù",
   "getting_started.documentation": "Teuliadur",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Luskad ar mare",
   "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Drag & drop to upload",
   "upload_button.label": "Ouzhpennañ ur media ({formats})",
   "upload_error.limit": "File upload limit exceeded.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Describe for people with hearing loss",
   "upload_form.description": "Describe for the visually impaired",
   "upload_form.edit": "Aozañ",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Dilemel",
   "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
   "upload_modal.analyzing_picture": "Analyzing picture…",
   "upload_modal.apply": "Apply",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
   "upload_modal.detect_text": "Detect text from picture",
   "upload_modal.edit_media": "Edit media",
diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json
index 3ad7158fc..3f8aba70d 100644
--- a/app/javascript/mastodon/locales/ca.json
+++ b/app/javascript/mastodon/locales/ca.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "La teva nota per a @{name}",
   "account.add_or_remove_from_list": "Afegir o Treure de les llistes",
   "account.badges.bot": "Bot",
   "account.badges.group": "Grup",
@@ -16,7 +15,8 @@
   "account.follow": "Segueix",
   "account.followers": "Seguidors",
   "account.followers.empty": "Encara ningú no segueix aquest usuari.",
-  "account.follows": "Seguiments",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "Aquest usuari encara no segueix a ningú.",
   "account.follows_you": "Et segueix",
   "account.hide_reblogs": "Amaga els impulsos de @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Esperant aprovació. Clic per a cancel·lar la petició de seguiment",
   "account.share": "Comparteix el perfil de @{name}",
   "account.show_reblogs": "Mostra els impulsos de @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Desbloqueja @{name}",
   "account.unblock_domain": "Mostra {domain}",
   "account.unendorse": "No recomanar en el perfil",
   "account.unfollow": "Deixa de seguir",
   "account.unmute": "Treure silenci de @{name}",
   "account.unmute_notifications": "Activar notificacions de @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Sense comentaris",
   "alert.rate_limited.message": "Si us plau torna-ho a provar després de {retry_time, time, medium}.",
   "alert.rate_limited.title": "Límit de freqüència",
   "alert.unexpected.message": "S'ha produït un error inesperat.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Autoritzar",
   "follow_request.reject": "Rebutjar",
   "follow_requests.unlocked_explanation": "Tot i que el teu compte no està bloquejat, el personal de {domain} ha pensat que és possible que vulguis revisar les sol·licituds de seguiment d’aquests comptes de forma manual.",
+  "generic.saved": "Guardat",
   "getting_started.developers": "Desenvolupadors",
   "getting_started.directory": "Directori de perfils",
   "getting_started.documentation": "Documentació",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Seguidors",
   "timeline_hint.resources.follows": "Seguiments",
   "timeline_hint.resources.statuses": "Tuts més antics",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {persona} other {persones}} parlant-hi",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Ara en tendència",
   "ui.beforeunload": "El teu esborrany es perdrà si surts de Mastodon.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Arrossega i deixa anar per a carregar",
   "upload_button.label": "Afegir multimèdia (JPEG, PNG, GIF, WebM, MP4, MOV)",
   "upload_error.limit": "S'ha superat el límit de càrrega d'arxius.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Descriviu per a les persones amb pèrdua auditiva",
   "upload_form.description": "Descriure els problemes visuals",
   "upload_form.edit": "Edita",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Esborra",
   "upload_form.video_description": "Descriu per a les persones amb pèrdua auditiva o deficiència visual",
   "upload_modal.analyzing_picture": "Analitzant imatge…",
   "upload_modal.apply": "Aplica",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "Uns salts ràpids de guineu marró sobre el gos gandul",
   "upload_modal.detect_text": "Detecta el text de l'imatge",
   "upload_modal.edit_media": "Editar multimèdia",
diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json
index 93c26a19c..48a7bd887 100644
--- a/app/javascript/mastodon/locales/co.json
+++ b/app/javascript/mastodon/locales/co.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "A vostra nota per @{name}",
   "account.add_or_remove_from_list": "Aghjunghje o toglie da e liste",
   "account.badges.bot": "Bot",
   "account.badges.group": "Gruppu",
@@ -16,7 +15,8 @@
   "account.follow": "Siguità",
   "account.followers": "Abbunati",
   "account.followers.empty": "Nisunu hè abbunatu à st'utilizatore.",
-  "account.follows": "Abbunamenti",
+  "account.followers_counter": "{count, plural, one {{counter} Abbunatu} other {{counter} Abbunati}}",
+  "account.following_counter": "{count, plural, one {{counter} Abbunamentu} other {{counter} Abbunamenti}}",
   "account.follows.empty": "St'utilizatore ùn seguita nisunu.",
   "account.follows_you": "Vi seguita",
   "account.hide_reblogs": "Piattà spartere da @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "In attesa d'apprubazione. Cliccate per annullà a dumanda",
   "account.share": "Sparte u prufile di @{name}",
   "account.show_reblogs": "Vede spartere da @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Statutu} other {{counter} Statuti}}",
   "account.unblock": "Sbluccà @{name}",
   "account.unblock_domain": "Ùn piattà più {domain}",
   "account.unendorse": "Ùn fà figurà nant'à u prufilu",
   "account.unfollow": "Ùn siguità più",
   "account.unmute": "Ùn piattà più @{name}",
   "account.unmute_notifications": "Ùn piattà più nutificazione da @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Senza cummentariu",
   "alert.rate_limited.message": "Pruvate ancu dop'à {retry_time, time, medium}.",
   "alert.rate_limited.title": "Ghjettu limitatu",
   "alert.unexpected.message": "Un prublemu inaspettatu hè accadutu.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Auturizà",
   "follow_request.reject": "Righjittà",
   "follow_requests.unlocked_explanation": "U vostru contu ùn hè micca privatu, ma a squadra d'amministrazione di {domain} pensa chì e dumande d'abbunamentu di questi conti anu bisognu d'esse verificate manualmente.",
+  "generic.saved": "Salvatu",
   "getting_started.developers": "Sviluppatori",
   "getting_started.directory": "Annuariu di i prufili",
   "getting_started.documentation": "Ducumentazione",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Abbunati",
   "timeline_hint.resources.follows": "Abbunamenti",
   "timeline_hint.resources.statuses": "Statuti più anziani",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} parlanu",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} persona chì parla} other {{counter} persone chì parlanu}}",
   "trends.trending_now": "Tindenze d'avà",
   "ui.beforeunload": "A bruttacopia sarà persa s'ellu hè chjosu Mastodon.",
+  "units.short.billion": "{count}G",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Drag & drop per caricà un fugliale",
   "upload_button.label": "Aghjunghje un media ({formats})",
   "upload_error.limit": "Limita di caricamentu di fugliali trapassata.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Discrizzione per i ciochi",
   "upload_form.description": "Discrive per i malvistosi",
   "upload_form.edit": "Mudificà",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Sguassà",
   "upload_form.video_description": "Discrizzione per i ciochi o cechi",
   "upload_modal.analyzing_picture": "Analisi di u ritrattu…",
   "upload_modal.apply": "Affettà",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "Chì tempi brevi ziu, quandu solfeghji",
   "upload_modal.detect_text": "Ditettà testu da u ritrattu",
   "upload_modal.edit_media": "Cambià media",
diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json
index 593311167..f991b7a25 100644
--- a/app/javascript/mastodon/locales/cs.json
+++ b/app/javascript/mastodon/locales/cs.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "Přidat nebo odstranit ze seznamů",
   "account.badges.bot": "Robot",
   "account.badges.group": "Skupina",
@@ -16,7 +15,8 @@
   "account.follow": "Sledovat",
   "account.followers": "Sledující",
   "account.followers.empty": "Tohoto uživatele ještě nikdo nesleduje.",
-  "account.follows": "Sledovaní",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "Tento uživatel ještě nikoho nesleduje.",
   "account.follows_you": "Sleduje vás",
   "account.hide_reblogs": "Skrýt boosty od uživatele @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Čeká na schválení. Kliknutím žádost o sledování zrušíte",
   "account.share": "Sdílet profil uživatele @{name}",
   "account.show_reblogs": "Zobrazit boosty od uživatele @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Odblokovat uživatele @{name}",
   "account.unblock_domain": "Odkrýt doménu {domain}",
   "account.unendorse": "Nezvýrazňovat na profilu",
   "account.unfollow": "Přestat sledovat",
   "account.unmute": "Odkrýt uživatele @{name}",
   "account.unmute_notifications": "Odkrýt oznámení od uživatele @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "Zkuste to prosím znovu za {retry_time, time, medium}.",
   "alert.rate_limited.title": "Rychlost omezena",
   "alert.unexpected.message": "Objevila se neočekávaná chyba.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Autorizovat",
   "follow_request.reject": "Odmítnout",
   "follow_requests.unlocked_explanation": "Přestože váš účet není uzamčen, {domain} si myslí, že budete chtít následující požadavky na sledování zkontrolovat ručně.",
+  "generic.saved": "Saved",
   "getting_started.developers": "Vývojáři",
   "getting_started.directory": "Adresář profilů",
   "getting_started.documentation": "Dokumentace",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Sledující",
   "timeline_hint.resources.follows": "Sleduje",
   "timeline_hint.resources.statuses": "Starší tooty",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {člověk} few {lidé} many {lidí} other {lidí}} hovoří",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Aktuální trendy",
   "ui.beforeunload": "Pokud Mastodon opustíte, váš koncept se ztratí.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Nahrajte přetažením",
   "upload_button.label": "Přidat média ({formats})",
   "upload_error.limit": "Byl překročen limit nahraných souborů.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Popis pro sluchově postižené",
   "upload_form.description": "Popis pro zrakově postižené",
   "upload_form.edit": "Upravit",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Smazat",
   "upload_form.video_description": "Popis pro sluchově či zrakově postižené",
   "upload_modal.analyzing_picture": "Analyzuji obrázek…",
   "upload_modal.apply": "Použít",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "Příliš žluťoučký kůň úpěl ďábelské ódy",
   "upload_modal.detect_text": "Detekovat text z obrázku",
   "upload_modal.edit_media": "Upravit média",
diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json
index 5a1085389..984237a32 100644
--- a/app/javascript/mastodon/locales/cy.json
+++ b/app/javascript/mastodon/locales/cy.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "Ychwanegu neu Dileu o'r rhestrau",
   "account.badges.bot": "Bot",
   "account.badges.group": "Grŵp",
@@ -16,7 +15,8 @@
   "account.follow": "Dilyn",
   "account.followers": "Dilynwyr",
   "account.followers.empty": "Nid oes neb yn dilyn y defnyddiwr hwn eto.",
-  "account.follows": "Yn dilyn",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "Nid yw'r defnyddiwr hwn yn dilyn unrhyw un eto.",
   "account.follows_you": "Yn eich dilyn chi",
   "account.hide_reblogs": "Cuddio bwstiau o @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Aros am gymeradwyaeth. Cliciwch er mwyn canslo cais dilyn",
   "account.share": "Rhannwch broffil @{name}",
   "account.show_reblogs": "Dangos bwstiau o @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Dadflocio @{name}",
   "account.unblock_domain": "Dadguddio {domain}",
   "account.unendorse": "Peidio a'i arddangos ar fy mhroffil",
   "account.unfollow": "Dad-ddilyn",
   "account.unmute": "Dad-dawelu @{name}",
   "account.unmute_notifications": "Dad-dawelu hysbysiadau o @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "Ceisiwch eto ar ôl {retry_time, time, medium}.",
   "alert.rate_limited.title": "Cyfradd gyfyngedig",
   "alert.unexpected.message": "Digwyddodd gwall annisgwyl.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Caniatau",
   "follow_request.reject": "Gwrthod",
   "follow_requests.unlocked_explanation": "Er nid yw eich cyfrif wedi'i gloi, oedd y staff {domain} yn meddwl efallai hoffech adolygu ceisiadau dilyn o'r cyfrifau rhain wrth law.",
+  "generic.saved": "Saved",
   "getting_started.developers": "Datblygwyr",
   "getting_started.directory": "Cyfeiriadur proffil",
   "getting_started.documentation": "Dogfennaeth",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} yn siarad",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Yn tueddu nawr",
   "ui.beforeunload": "Mi fyddwch yn colli eich drafft os gadewch Mastodon.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Llusgwch & gollwing i uwchlwytho",
   "upload_button.label": "Ychwanegwch gyfryngau (JPEG, PNG, GIF, WebM, MP4, MOV)",
   "upload_error.limit": "Wedi mynd heibio'r uchafswm terfyn uwchlwytho.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Disgrifio ar gyfer pobl sydd â cholled clyw",
   "upload_form.description": "Disgrifio i'r rheini a nam ar ei golwg",
   "upload_form.edit": "Golygu",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Dileu",
   "upload_form.video_description": "Disgrifio ar gyfer pobl sydd â cholled clyw neu amhariad golwg",
   "upload_modal.analyzing_picture": "Dadansoddi llun…",
   "upload_modal.apply": "Gweithredu",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "Mae ei phen bach llawn jocs, 'run peth a fy nghot golff, rhai dyddiau",
   "upload_modal.detect_text": "Canfod testun o'r llun",
   "upload_modal.edit_media": "Golygu cyfryngau",
diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json
index 9354308cc..e59f5283c 100644
--- a/app/javascript/mastodon/locales/da.json
+++ b/app/javascript/mastodon/locales/da.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "Tilføj eller fjern fra lister",
   "account.badges.bot": "Robot",
   "account.badges.group": "Gruppe",
@@ -16,7 +15,8 @@
   "account.follow": "Følg",
   "account.followers": "Følgere",
   "account.followers.empty": "Der er endnu ingen der følger denne bruger.",
-  "account.follows": "Følger",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "Denne bruger følger endnu ikke nogen.",
   "account.follows_you": "Følger dig",
   "account.hide_reblogs": "Skjul fremhævelserne fra @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Afventer godkendelse. Tryk for at annullere følgeanmodning",
   "account.share": "Del @{name}s profil",
   "account.show_reblogs": "Vis fremhævelserne fra @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Fjern blokeringen af @{name}",
   "account.unblock_domain": "Skjul ikke længere {domain}",
   "account.unendorse": "Fremhæv ikke på profil",
   "account.unfollow": "Følg ikke længere",
   "account.unmute": "Fjern dæmpningen af @{name}",
   "account.unmute_notifications": "Fjern dæmpningen af notifikationer fra @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "Prøv venligst igen efter {retry_time, time, medium}.",
   "alert.rate_limited.title": "Gradsbegrænset",
   "alert.unexpected.message": "Der opstod en uventet fejl.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Godkend",
   "follow_request.reject": "Afvis",
   "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+  "generic.saved": "Saved",
   "getting_started.developers": "Udviklere",
   "getting_started.directory": "Profilliste",
   "getting_started.documentation": "Dokumentation",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {personer}} snakker",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Hot lige nu",
   "ui.beforeunload": "Din kladde vil gå tabt hvis du forlader Mastodon.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Træk og slip for at uploade",
   "upload_button.label": "Tilføj medie (JPEG, PNG, GIF, WebM, MP4, MOV)",
   "upload_error.limit": "Uploadgrænse overskredet.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Describe for people with hearing loss",
   "upload_form.description": "Beskriv for svagtseende",
   "upload_form.edit": "Redigér",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Slet",
   "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
   "upload_modal.analyzing_picture": "Analyserer billede…",
   "upload_modal.apply": "Anvend",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "En hurtig brun ræv hopper over den dovne hund",
   "upload_modal.detect_text": "Find tekst i billede på automatisk vis",
   "upload_modal.edit_media": "Redigér medie",
diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json
index 57aa1769a..bf41eebe8 100644
--- a/app/javascript/mastodon/locales/de.json
+++ b/app/javascript/mastodon/locales/de.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Deine Notiz für @{name}",
   "account.add_or_remove_from_list": "Hinzufügen oder Entfernen von Listen",
   "account.badges.bot": "Bot",
   "account.badges.group": "Gruppe",
@@ -16,7 +15,8 @@
   "account.follow": "Folgen",
   "account.followers": "Folgende",
   "account.followers.empty": "Diesem Profil folgt noch niemand.",
-  "account.follows": "Folgt",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Follower}}",
+  "account.following_counter": "{count, plural, one {{counter} Folgender} other {{counter} Folgende}}",
   "account.follows.empty": "Dieses Profil folgt noch niemandem.",
   "account.follows_you": "Folgt dir",
   "account.hide_reblogs": "Geteilte Beiträge von @{name} verbergen",
@@ -36,16 +36,14 @@
   "account.requested": "Warte auf Erlaubnis. Klicke zum Abbrechen",
   "account.share": "Profil von @{name} teilen",
   "account.show_reblogs": "Von @{name} geteilte Beiträge anzeigen",
+  "account.statuses_counter": "{count, plural, one {{counter} Beitrag} other {{counter} Beiträge}}",
   "account.unblock": "@{name} entblocken",
   "account.unblock_domain": "Blockieren von {domain} beenden",
   "account.unendorse": "Nicht auf Profil hervorheben",
   "account.unfollow": "Entfolgen",
   "account.unmute": "@{name} nicht mehr stummschalten",
   "account.unmute_notifications": "Benachrichtigungen von @{name} einschalten",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Kein Kommentar angegeben",
   "alert.rate_limited.message": "Bitte versuche es nach {retry_time, time, medium}.",
   "alert.rate_limited.title": "Anfragelimit überschritten",
   "alert.unexpected.message": "Ein unerwarteter Fehler ist aufgetreten.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Erlauben",
   "follow_request.reject": "Ablehnen",
   "follow_requests.unlocked_explanation": "Auch wenn dein Konto nicht gesperrt ist, haben die Mitarbeiter von {domain} gedacht, dass es besser wäre den Follow manuell zu bestätigen.",
+  "generic.saved": "Gespeichert",
   "getting_started.developers": "Entwickler",
   "getting_started.directory": "Profilverzeichnis",
   "getting_started.documentation": "Dokumentation",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Follower",
   "timeline_hint.resources.follows": "Folgt",
   "timeline_hint.resources.statuses": "Ältere Toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, eine {Person} other {Personen}} reden darüber",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} Person redet darüber} other {{counter} Personen reden darüber}}",
   "trends.trending_now": "In den Trends",
   "ui.beforeunload": "Dein Entwurf geht verloren, wenn du Mastodon verlässt.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Zum Hochladen hereinziehen",
   "upload_button.label": "Mediendatei hinzufügen ({formats})",
   "upload_error.limit": "Dateiupload-Limit erreicht.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Beschreibe die Audiodatei für Menschen mit Hörschädigungen",
   "upload_form.description": "Für Menschen mit Sehbehinderung beschreiben",
   "upload_form.edit": "Bearbeiten",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Löschen",
   "upload_form.video_description": "Beschreibe das Video für Menschen mit einer Hör- oder Sehbehinderung",
   "upload_modal.analyzing_picture": "Analysiere Bild…",
   "upload_modal.apply": "Übernehmen",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "Die heiße Zypernsonne quälte Max und Victoria ja böse auf dem Weg bis zur Küste",
   "upload_modal.detect_text": "Text aus Bild erkennen",
   "upload_modal.edit_media": "Medien bearbeiten",
diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json
index f62e0b0df..179cfd6bc 100644
--- a/app/javascript/mastodon/locales/defaultMessages.json
+++ b/app/javascript/mastodon/locales/defaultMessages.json
@@ -2754,6 +2754,10 @@
         "id": "upload_modal.description_placeholder"
       },
       {
+        "defaultMessage": "Choose image",
+        "id": "upload_modal.choose_image"
+      },
+      {
         "defaultMessage": "Describe for people with hearing loss",
         "id": "upload_form.audio_description"
       },
@@ -2774,6 +2778,10 @@
         "id": "upload_modal.hint"
       },
       {
+        "defaultMessage": "Change thumbnail",
+        "id": "upload_form.thumbnail"
+      },
+      {
         "defaultMessage": "Analyzing picture…",
         "id": "upload_modal.analyzing_picture"
       },
diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json
index f6e3c07c4..a137adf41 100644
--- a/app/javascript/mastodon/locales/el.json
+++ b/app/javascript/mastodon/locales/el.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "Προσθήκη ή Αφαίρεση από λίστες",
   "account.badges.bot": "Μποτ",
   "account.badges.group": "Ομάδα",
@@ -16,7 +15,8 @@
   "account.follow": "Ακολούθησε",
   "account.followers": "Ακόλουθοι",
   "account.followers.empty": "Κανείς δεν ακολουθεί αυτό τον χρήστη ακόμα.",
-  "account.follows": "Ακολουθεί",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "Αυτός ο χρήστης δεν ακολουθεί κανέναν ακόμα.",
   "account.follows_you": "Σε ακολουθεί",
   "account.hide_reblogs": "Απόκρυψη προωθήσεων από @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Εκκρεμεί έγκριση. Κάνε κλικ για να ακυρώσεις το αίτημα παρακολούθησης",
   "account.share": "Μοίρασμα του προφίλ @{name}",
   "account.show_reblogs": "Εμφάνιση προωθήσεων από @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Ξεμπλόκαρε @{name}",
   "account.unblock_domain": "Αποκάλυψε το {domain}",
   "account.unendorse": "Άνευ προβολής στο προφίλ",
   "account.unfollow": "Διακοπή παρακολούθησης",
   "account.unmute": "Διακοπή αποσιώπησης @{name}",
   "account.unmute_notifications": "Διακοπή αποσιώπησης ειδοποιήσεων του/της @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "Παρακαλούμε δοκίμασε ξανά αφού περάσει η {retry_time, time, medium}.",
   "alert.rate_limited.title": "Περιορισμός συχνότητας",
   "alert.unexpected.message": "Προέκυψε απροσδόκητο σφάλμα.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Ενέκρινε",
   "follow_request.reject": "Απέρριψε",
   "follow_requests.unlocked_explanation": "Παρόλο που ο λογαριασμός σου δεν είναι κλειδωμένος, οι διαχειριστές του {domain} θεώρησαν πως ίσως να θέλεις να ελέγξεις χειροκίνητα αυτά τα αιτήματα ακολούθησης.",
+  "generic.saved": "Saved",
   "getting_started.developers": "Ανάπτυξη",
   "getting_started.directory": "Κατάλογος λογαριασμών",
   "getting_started.documentation": "Τεκμηρίωση",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Ακόλουθοι",
   "timeline_hint.resources.follows": "Ακολουθεί",
   "timeline_hint.resources.statuses": "Παλαιότερα τουτ",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {άτομο μιλάει} other {άτομα μιλάνε}}",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Δημοφιλή τώρα",
   "ui.beforeunload": "Το προσχέδιό σου θα χαθεί αν φύγεις από το Mastodon.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Drag & drop για να ανεβάσεις",
   "upload_button.label": "Πρόσθεσε πολυμέσα ({formats})",
   "upload_error.limit": "Υπέρβαση ορίου μεγέθους ανεβασμένων αρχείων.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Περιγραφή για άτομα με προβλήματα ακοής",
   "upload_form.description": "Περιέγραψε για όσους & όσες έχουν προβλήματα όρασης",
   "upload_form.edit": "Ενημέρωση",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Διαγραφή",
   "upload_form.video_description": "Περιγραφή για άτομα με προβλήματα ακοής ή όρασης",
   "upload_modal.analyzing_picture": "Ανάλυση εικόνας…",
   "upload_modal.apply": "Εφαρμογή",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "Λύκος μαύρος και ισχνός του πατέρα του καημός",
   "upload_modal.detect_text": "Αναγνώριση κειμένου από την εικόνα",
   "upload_modal.edit_media": "Επεξεργασία Πολυμέσων",
diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json
index 19356873a..529c23397 100644
--- a/app/javascript/mastodon/locales/en.json
+++ b/app/javascript/mastodon/locales/en.json
@@ -436,10 +436,12 @@
   "upload_form.audio_description": "Describe for people with hearing loss",
   "upload_form.description": "Describe for the visually impaired",
   "upload_form.edit": "Edit",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Delete",
   "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
   "upload_modal.analyzing_picture": "Analyzing picture…",
   "upload_modal.apply": "Apply",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
   "upload_modal.detect_text": "Detect text from picture",
   "upload_modal.edit_media": "Edit media",
diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json
index 9f902c522..886083392 100644
--- a/app/javascript/mastodon/locales/eo.json
+++ b/app/javascript/mastodon/locales/eo.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Noto",
   "account.add_or_remove_from_list": "Aldoni al aŭ forigi el listoj",
   "account.badges.bot": "Roboto",
   "account.badges.group": "Grupo",
@@ -16,7 +15,8 @@
   "account.follow": "Sekvi",
   "account.followers": "Sekvantoj",
   "account.followers.empty": "Ankoraŭ neniu sekvas tiun uzanton.",
-  "account.follows": "Sekvatoj",
+  "account.followers_counter": "{count, plural, one{{counter} Sekvanto} other {{counter} Sekvantoj}}",
+  "account.following_counter": "{count, plural, other{{counter} Sekvi}}",
   "account.follows.empty": "Tiu uzanto ankoraŭ ne sekvas iun.",
   "account.follows_you": "Sekvas vin",
   "account.hide_reblogs": "Kaŝi diskonigojn de @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Atendo de aprobo. Alklaku por nuligi peton de sekvado",
   "account.share": "Diskonigi la profilon de @{name}",
   "account.show_reblogs": "Montri diskonigojn de @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Tooto} other {{counter} Tootoj}}",
   "account.unblock": "Malbloki @{name}",
   "account.unblock_domain": "Malkaŝi {domain}",
   "account.unendorse": "Ne montri en profilo",
   "account.unfollow": "Ne plu sekvi",
   "account.unmute": "Malsilentigi @{name}",
   "account.unmute_notifications": "Malsilentigi sciigojn de @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "Bonvolu reprovi post {retry_time, time, medium}.",
   "alert.rate_limited.title": "Mesaĝkvante limigita",
   "alert.unexpected.message": "Neatendita eraro okazis.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Rajtigi",
   "follow_request.reject": "Rifuzi",
   "follow_requests.unlocked_explanation": "137/5000\nKvankam via konto ne estas ŝlosita, la dungitaro de {domain} opiniis, ke vi eble volus revizii petojn de sekvadon el ĉi tiuj kontoj permane.",
+  "generic.saved": "Konservita",
   "getting_started.developers": "Programistoj",
   "getting_started.directory": "Profilujo",
   "getting_started.documentation": "Dokumentado",
@@ -421,12 +420,15 @@
   "time_remaining.moments": "Momenteto restas",
   "time_remaining.seconds": "{number, plural, one {# sekundo} other {# sekundoj}} restas",
   "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
-  "timeline_hint.resources.followers": "Followers",
-  "timeline_hint.resources.follows": "Follows",
-  "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {persono} other {personoj}} parolas",
+  "timeline_hint.resources.followers": "Sekvantoj",
+  "timeline_hint.resources.follows": "Sekvatoj",
+  "timeline_hint.resources.statuses": "Pli malnovaj tootoj",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} persono} other {{counter} personoj}} parolante",
   "trends.trending_now": "Nunaj furoraĵoj",
   "ui.beforeunload": "Via malneto perdiĝos se vi eliras de Mastodon.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Altreni kaj lasi por alŝuti",
   "upload_button.label": "Aldoni aŭdovidaĵon (JPEG, PNG, GIF, WebM, MP4, MOV)",
   "upload_error.limit": "Limo de dosiera alŝutado transpasita.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Priskribi por homoj kiuj malfacile aŭdi",
   "upload_form.description": "Priskribi por misvidantaj homoj",
   "upload_form.edit": "Redakti",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Forigi",
   "upload_form.video_description": "Priskribi por homoj kiuj malfacile aŭdi aŭ vidi",
   "upload_modal.analyzing_picture": "Bilda analizado…",
   "upload_modal.apply": "Apliki",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "Laŭ Ludoviko Zamenhof bongustas freŝa ĉeĥa manĝaĵo kun spicoj",
   "upload_modal.detect_text": "Detekti tekston de la bildo",
   "upload_modal.edit_media": "Redakti aŭdovidaĵon",
diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json
index c94e15878..bdb39cd86 100644
--- a/app/javascript/mastodon/locales/es-AR.json
+++ b/app/javascript/mastodon/locales/es-AR.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Tu nota para @{name}",
   "account.add_or_remove_from_list": "Agregar o quitar de las listas",
   "account.badges.bot": "Bot",
   "account.badges.group": "Grupo",
@@ -16,7 +15,8 @@
   "account.follow": "Seguir",
   "account.followers": "Seguidores",
   "account.followers.empty": "Todavía nadie sigue a este usuario.",
-  "account.follows": "Sigue",
+  "account.followers_counter": "{count, plural, one {{counter} Seguidor} other {{counter} Seguidores}}",
+  "account.following_counter": "{count, plural, other {{counter} Siguiendo}}",
   "account.follows.empty": "Todavía este usuario no sigue a nadie.",
   "account.follows_you": "Te sigue",
   "account.hide_reblogs": "Ocultar retoots de @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Esperando aprobación. Hacé clic para cancelar la solicitud de seguimiento.",
   "account.share": "Compartir el perfil de @{name}",
   "account.show_reblogs": "Mostrar retoots de @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Desbloquear a @{name}",
   "account.unblock_domain": "Mostrar {domain}",
   "account.unendorse": "No destacar en el perfil",
   "account.unfollow": "Dejar de seguir",
   "account.unmute": "Dejar de silenciar a @{name}",
   "account.unmute_notifications": "Dejar de silenciar las notificaciones de @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "No se ofreció ningún comentario",
   "alert.rate_limited.message": "Por favor, reintentá después de las {retry_time, time, medium}.",
   "alert.rate_limited.title": "Tarifa limitada",
   "alert.unexpected.message": "Ocurrió un error.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Autorizar",
   "follow_request.reject": "Rechazar",
   "follow_requests.unlocked_explanation": "A pesar de que tu cuenta no está bloqueada, el equipo de {domain} pensó que podrías querer revisar manualmente las solicitudes de seguimiento de estas cuentas.",
+  "generic.saved": "Guardado",
   "getting_started.developers": "Desarrolladores",
   "getting_started.directory": "Directorio de perfiles",
   "getting_started.documentation": "Documentación",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Seguidores",
   "timeline_hint.resources.follows": "Siguiendo",
   "timeline_hint.resources.statuses": "Toots antiguos",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {persona} other {personas}} hablando",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} persona} other {{counter} personas}} hablando",
   "trends.trending_now": "Tendencia ahora",
   "ui.beforeunload": "Tu borrador se perderá si abandonás Mastodon.",
+  "units.short.billion": "{count}MM",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}mil",
   "upload_area.title": "Para subir, arrastrá y soltá",
   "upload_button.label": "Agregar medios ({formats})",
   "upload_error.limit": "Se excedió el límite de subida de archivos.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Describir para personas con problemas auditivos",
   "upload_form.description": "Agregar descripción para los usuarios con dificultades visuales",
   "upload_form.edit": "Editar",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Eliminar",
   "upload_form.video_description": "Describir para personas con problemas auditivos o visuales",
   "upload_modal.analyzing_picture": "Analizando imagen…",
   "upload_modal.apply": "Aplicar",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "El veloz murciélago hindú comía feliz cardillo y kiwi. La cigüeña tocaba el saxofón detrás del palenque de paja.",
   "upload_modal.detect_text": "Detectar texto de la imagen",
   "upload_modal.edit_media": "Editar medio",
diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json
index f46dd6092..6052ae972 100644
--- a/app/javascript/mastodon/locales/es.json
+++ b/app/javascript/mastodon/locales/es.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Nota",
   "account.add_or_remove_from_list": "Agregar o eliminar de listas",
   "account.badges.bot": "Bot",
   "account.badges.group": "Grupo",
@@ -16,7 +15,8 @@
   "account.follow": "Seguir",
   "account.followers": "Seguidores",
   "account.followers.empty": "Todavía nadie sigue a este usuario.",
-  "account.follows": "Sigue",
+  "account.followers_counter": "{count, plural, one {{counter} Seguidor} other {{counter} Seguidores}}",
+  "account.following_counter": "{count, plural, other {{counter} Siguiendo}}",
   "account.follows.empty": "Este usuario todavía no sigue a nadie.",
   "account.follows_you": "Te sigue",
   "account.hide_reblogs": "Ocultar retoots de @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Esperando aprobación",
   "account.share": "Compartir el perfil de @{name}",
   "account.show_reblogs": "Mostrar retoots de @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Desbloquear a @{name}",
   "account.unblock_domain": "Mostrar a {domain}",
   "account.unendorse": "No mostrar en el perfil",
   "account.unfollow": "Dejar de seguir",
   "account.unmute": "Dejar de silenciar a @{name}",
   "account.unmute_notifications": "Dejar de silenciar las notificaciones de @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Clic para añadir nota",
   "alert.rate_limited.message": "Por favor reintente después de {retry_time, time, medium}.",
   "alert.rate_limited.title": "Tarifa limitada",
   "alert.unexpected.message": "Hubo un error inesperado.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Autorizar",
   "follow_request.reject": "Rechazar",
   "follow_requests.unlocked_explanation": "A pesar de que tu cuenta no es privada, el personal de {domain} ha pensado que quizás deberías revisar manualmente las solicitudes de seguimiento de estas cuentas.",
+  "generic.saved": "Guardado",
   "getting_started.developers": "Desarrolladores",
   "getting_started.directory": "Directorio de perfil",
   "getting_started.documentation": "Documentación",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Seguidores",
   "timeline_hint.resources.follows": "Seguidos",
   "timeline_hint.resources.statuses": "Toots más antiguos",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {persona} other {personas}} hablando",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} persona} other {{counter} personas}} hablando",
   "trends.trending_now": "Tendencia ahora",
   "ui.beforeunload": "Tu borrador se perderá si sales de Mastodon.",
+  "units.short.billion": "{count}MM",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}mil",
   "upload_area.title": "Arrastra y suelta para subir",
   "upload_button.label": "Subir multimedia (JPEG, PNG, GIF, WebM, MP4, MOV)",
   "upload_error.limit": "Límite de subida de archivos excedido.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Describir para personas con problemas auditivos",
   "upload_form.description": "Describir para los usuarios con dificultad visual",
   "upload_form.edit": "Editar",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Borrar",
   "upload_form.video_description": "Describir para personas con problemas auditivos o visuales",
   "upload_modal.analyzing_picture": "Analizando imagen…",
   "upload_modal.apply": "Aplicar",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "Un rápido zorro marrón salta sobre el perro perezoso",
   "upload_modal.detect_text": "Detectar texto de la imagen",
   "upload_modal.edit_media": "Editar multimedia",
diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json
index 7328b2474..fc00a6270 100644
--- a/app/javascript/mastodon/locales/et.json
+++ b/app/javascript/mastodon/locales/et.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "Lisa või Eemalda nimekirjadest",
   "account.badges.bot": "Robot",
   "account.badges.group": "Grupp",
@@ -16,7 +15,8 @@
   "account.follow": "Jälgi",
   "account.followers": "Jälgijad",
   "account.followers.empty": "Keegi ei jälgi seda kasutajat veel.",
-  "account.follows": "Jälgib",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "See kasutaja ei jälgi veel kedagi.",
   "account.follows_you": "Jälgib Teid",
   "account.hide_reblogs": "Peida upitused kasutajalt @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Ootab kinnitust. Klõpsa jälgimise soovi tühistamiseks",
   "account.share": "Jaga @{name} profiili",
   "account.show_reblogs": "Näita kasutaja @{name} upitusi",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Eemalda blokeering @{name}",
   "account.unblock_domain": "Tee {domain} nähtavaks",
   "account.unendorse": "Ära kuva profiilil",
   "account.unfollow": "Ära jälgi",
   "account.unmute": "Ära vaigista @{name}",
   "account.unmute_notifications": "Ära vaigista teateid kasutajalt @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "Palun proovi uuesti pärast {retry_time, time, medium}.",
   "alert.rate_limited.title": "Piiratud",
   "alert.unexpected.message": "Tekkis ootamatu viga.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Autoriseeri",
   "follow_request.reject": "Hülga",
   "follow_requests.unlocked_explanation": "Kuigi Teie konto pole lukustatud, soovitab {domain} personal siiski manuaalselt üle vaadata jälgimistaotlused nendelt kontodelt.",
+  "generic.saved": "Saved",
   "getting_started.developers": "Arendajad",
   "getting_started.directory": "Profiili kataloog",
   "getting_started.documentation": "Dokumentatsioon",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {inimene} other {inimesed}} talking",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Praegu populaarne",
   "ui.beforeunload": "Teie mustand läheb kaotsi, kui lahkute Mastodonist.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Lohista & aseta üleslaadimiseks",
   "upload_button.label": "Lisa meedia (JPEG, PNG, GIF, WebM, MP4, MOV)",
   "upload_error.limit": "Faili üleslaadimise limiit ületatud.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Kirjelda kuulmispuudega inimeste jaoks",
   "upload_form.description": "Kirjelda vaegnägijatele",
   "upload_form.edit": "Redigeeri",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Kustuta",
   "upload_form.video_description": "Kirjelda kuulmis- või nägemispuudega inimeste jaoks",
   "upload_modal.analyzing_picture": "Analüüsime pilti…",
   "upload_modal.apply": "Rakenda",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "Kiire pruun rebane hüppab üle laisa koera",
   "upload_modal.detect_text": "Tuvasta teksti pildilt",
   "upload_modal.edit_media": "Muuda meediat",
diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json
index f122cb2a6..0a8043d4d 100644
--- a/app/javascript/mastodon/locales/eu.json
+++ b/app/javascript/mastodon/locales/eu.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "Gehitu edo kendu zerrendetatik",
   "account.badges.bot": "Bot-a",
   "account.badges.group": "Taldea",
@@ -16,7 +15,8 @@
   "account.follow": "Jarraitu",
   "account.followers": "Jarraitzaileak",
   "account.followers.empty": "Ez du inork erabiltzaile hau jarraitzen oraindik.",
-  "account.follows": "Jarraitzen",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "Erabiltzaile honek ez du inor jarraitzen oraindik.",
   "account.follows_you": "Jarraitzen dizu",
   "account.hide_reblogs": "Ezkutatu @{name}(r)en bultzadak",
@@ -36,16 +36,14 @@
   "account.requested": "Onarpenaren zain. Klikatu jarraitzeko eskaera ezeztatzeko",
   "account.share": "@{name}(e)ren profila elkarbanatu",
   "account.show_reblogs": "Erakutsi @{name}(r)en bultzadak",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Desblokeatu @{name}",
   "account.unblock_domain": "Berriz erakutsi {domain}",
   "account.unendorse": "Ez nabarmendu profilean",
   "account.unfollow": "Utzi jarraitzeari",
   "account.unmute": "Desmututu @{name}",
   "account.unmute_notifications": "Desmututu @{name}(r)en jakinarazpenak",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "Saiatu {retry_time, time, medium} barru.",
   "alert.rate_limited.title": "Abiadura mugatua",
   "alert.unexpected.message": "Ustekabeko errore bat gertatu da.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Baimendu",
   "follow_request.reject": "Ukatu",
   "follow_requests.unlocked_explanation": "Zure kontua blokeatuta ez badago ere, {domain} domeinuko arduradunek uste dute kontu hauetako jarraipen eskariak agian eskuz begiratu nahiko dituzula.",
+  "generic.saved": "Saved",
   "getting_started.developers": "Garatzaileak",
   "getting_started.directory": "Profil-direktorioa",
   "getting_started.documentation": "Dokumentazioa",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {pertsona} other {pertsona}} hitz egiten",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Joera orain",
   "ui.beforeunload": "Zure zirriborroa galduko da Mastodon uzten baduzu.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Arrastatu eta jaregin igotzeko",
   "upload_button.label": "Gehitu multimedia  (JPEG, PNG, GIF, WebM, MP4, MOV)",
   "upload_error.limit": "Fitxategi igoera muga gaindituta.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Deskribatu entzumen galera duten pertsonentzat",
   "upload_form.description": "Deskribatu ikusmen arazoak dituztenentzat",
   "upload_form.edit": "Editatu",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Ezabatu",
   "upload_form.video_description": "Deskribatu entzumen galera edo ikusmen urritasuna duten pertsonentzat",
   "upload_modal.analyzing_picture": "Irudia aztertzen…",
   "upload_modal.apply": "Aplikatu",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "Vaudeville itxurako filmean yogi ñaño bat jipoitzen dute Quebec-en whiski truk",
   "upload_modal.detect_text": "Antzeman testua iruditik",
   "upload_modal.edit_media": "Editatu media",
diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json
index 91236538e..470766a8b 100644
--- a/app/javascript/mastodon/locales/fa.json
+++ b/app/javascript/mastodon/locales/fa.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "یادداشت",
   "account.add_or_remove_from_list": "افزودن یا برداشتن از فهرست‌ها",
   "account.badges.bot": "ربات",
   "account.badges.group": "گروه",
@@ -16,7 +15,8 @@
   "account.follow": "پی بگیرید",
   "account.followers": "پی‌گیران",
   "account.followers.empty": "هنوز کسی پیگیر این کاربر نیست.",
-  "account.follows": "پی می‌گیرد",
+  "account.followers_counter": "{count, plural, one {{counter} پی‌گیر} other {{counter} پی‌گیر}}",
+  "account.following_counter": "{count, plural, other {{counter} پی می‌گیرد}}",
   "account.follows.empty": "این کاربر هنوز پیگیر کسی نیست.",
   "account.follows_you": "پیگیر شماست",
   "account.hide_reblogs": "نهفتن بازبوق‌های @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "منتظر پذیرش. برای لغو درخواست پی‌گیری کلیک کنید",
   "account.share": "هم‌رسانی نمایهٔ @{name}",
   "account.show_reblogs": "نمایش بازبوق‌های @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} بوق} other {{counter} بوق}}",
   "account.unblock": "رفع انسداد @{name}",
   "account.unblock_domain": "رفع نهفتن {domain}",
   "account.unendorse": "معرّفی نکردن در نمایه",
   "account.unfollow": "پایان پیگیری",
   "account.unmute": "رفع خموشی @{name}",
   "account.unmute_notifications": "رفع خموشی اعلان‌ها از @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "نظری فراهم نشده",
   "alert.rate_limited.message": "لطفاً پس از {retry_time, time, medium} دوباره بیازمایید.",
   "alert.rate_limited.title": "محدودیت تعداد",
   "alert.unexpected.message": "خطایی غیرمنتظره رخ داد.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "اجازه دهید",
   "follow_request.reject": "رد کنید",
   "follow_requests.unlocked_explanation": "با این که حسابتان قفل نیست، کارکنان {domain} فکر کردند که ممکن است بخواهید درخواست‌ها از این حساب‌ها را به صورت دستی بازبینی کنید.",
+  "generic.saved": "ذخیره شده",
   "getting_started.developers": "توسعه‌دهندگان",
   "getting_started.directory": "فهرست نمایه",
   "getting_started.documentation": "مستندات",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "پی‌گیر",
   "timeline_hint.resources.follows": "پی می‌گیرد",
   "timeline_hint.resources.statuses": "بوق‌های قدیمی‌تر",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {نفر نوشته است} other {نفر نوشته‌اند}}",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} نفر} other {{counter} نفر}} صحبت می‌کنند",
   "trends.trending_now": "پرطرفدار",
   "ui.beforeunload": "اگر از ماستودون خارج شوید پیش‌نویس شما از دست خواهد رفت.",
+  "units.short.billion": "{count}میلیارد",
+  "units.short.million": "{count}میلیون",
+  "units.short.thousand": "{count}هزار",
   "upload_area.title": "برای بارگذاری به این‌جا بکشید",
   "upload_button.label": "افزودن رسانه ({formats})",
   "upload_error.limit": "از حد مجاز باگذاری پرونده فراتر رفتید.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "برای ناشنوایان توصیفش کنید",
   "upload_form.description": "برای کم‌بینایان توصیفش کنید",
   "upload_form.edit": "ویرایش",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "حذف",
   "upload_form.video_description": "برای کم‌بینایان یا ناشنوایان توصیفش کنید",
   "upload_modal.analyzing_picture": "در حال پردازش تصویر…",
   "upload_modal.apply": "اعمال",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "الا یا ایّها الساقی، ادر کأساً و ناولها",
   "upload_modal.detect_text": "تشخیص متن درون عکس",
   "upload_modal.edit_media": "ویرایش رسانه",
diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json
index 1a3c2b3f8..364427e65 100644
--- a/app/javascript/mastodon/locales/fi.json
+++ b/app/javascript/mastodon/locales/fi.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "Lisää tai poista listoilta",
   "account.badges.bot": "Botti",
   "account.badges.group": "Ryhmä",
@@ -16,7 +15,8 @@
   "account.follow": "Seuraa",
   "account.followers": "Seuraajaa",
   "account.followers.empty": "Tällä käyttäjällä ei ole vielä seuraajia.",
-  "account.follows": "Seuraa",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "Tämä käyttäjä ei vielä seuraa ketään.",
   "account.follows_you": "Seuraa sinua",
   "account.hide_reblogs": "Piilota buustaukset käyttäjältä @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Odottaa hyväksyntää. Peruuta seuraamispyyntö klikkaamalla",
   "account.share": "Jaa käyttäjän @{name} profiili",
   "account.show_reblogs": "Näytä buustaukset käyttäjältä @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Salli @{name}",
   "account.unblock_domain": "Salli {domain}",
   "account.unendorse": "Poista suosittelu profiilistasi",
   "account.unfollow": "Lakkaa seuraamasta",
   "account.unmute": "Poista käyttäjän @{name} mykistys",
   "account.unmute_notifications": "Poista mykistys käyttäjän @{name} ilmoituksilta",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "Yritä uudestaan {retry_time, time, medium} jälkeen.",
   "alert.rate_limited.title": "Määrää rajoitettu",
   "alert.unexpected.message": "Tapahtui odottamaton virhe.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Valtuuta",
   "follow_request.reject": "Hylkää",
   "follow_requests.unlocked_explanation": "Vaikka tilisi ei ole lukittu, {domain} ylläpitäjien mielestä haluat tarkistaa näiden tilien seurauspyynnöt manuaalisesti.",
+  "generic.saved": "Saved",
   "getting_started.developers": "Kehittäjille",
   "getting_started.directory": "Profiilihakemisto",
   "getting_started.documentation": "Documentaatio",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {henkilö} other {henkilöä}} keskustelee",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Suosittua nyt",
   "ui.beforeunload": "Luonnos häviää, jos poistut Mastodonista.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Lataa raahaamalla ja pudottamalla tähän",
   "upload_button.label": "Lisää mediaa",
   "upload_error.limit": "Tiedostolatauksien raja ylitetty.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Kuvaile kuulovammaisille",
   "upload_form.description": "Anna kuvaus näkörajoitteisia varten",
   "upload_form.edit": "Muokkaa",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Peru",
   "upload_form.video_description": "Kuvaile kuulo- tai näkövammaisille",
   "upload_modal.analyzing_picture": "Analysoidaan kuvaa…",
   "upload_modal.apply": "Käytä",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "Eräänä jäätävänä ja pimeänä yönä gorilla ratkaisi sudokun kahdessa minuutissa",
   "upload_modal.detect_text": "Tunnista teksti kuvasta",
   "upload_modal.edit_media": "Muokkaa mediaa",
diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json
index be2cdd2de..c7f048fec 100644
--- a/app/javascript/mastodon/locales/fr.json
+++ b/app/javascript/mastodon/locales/fr.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "Ajouter ou retirer des listes",
   "account.badges.bot": "Robot",
   "account.badges.group": "Groupe",
@@ -16,7 +15,8 @@
   "account.follow": "Suivre",
   "account.followers": "Abonné·e·s",
   "account.followers.empty": "Personne ne suit cet·te utilisateur·rice pour l’instant.",
-  "account.follows": "Abonnements",
+  "account.followers_counter": "{count, plural, one {{counter} Abonné·e} other {{counter} Abonné·e·s}}",
+  "account.following_counter": "{count, plural, other {{counter} Abonnements}}",
   "account.follows.empty": "Cet·te utilisateur·rice ne suit personne pour l’instant.",
   "account.follows_you": "Vous suit",
   "account.hide_reblogs": "Masquer les partages de @{name}",
@@ -36,18 +36,16 @@
   "account.requested": "En attente d’approbation. Cliquez pour annuler la requête",
   "account.share": "Partager le profil de @{name}",
   "account.show_reblogs": "Afficher les partages de @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Pouet} other {{counter} Pouets}}",
   "account.unblock": "Débloquer @{name}",
   "account.unblock_domain": "Débloquer le domaine {domain}",
   "account.unendorse": "Ne plus recommander sur le profil",
   "account.unfollow": "Ne plus suivre",
   "account.unmute": "Ne plus masquer @{name}",
   "account.unmute_notifications": "Ne plus masquer les notifications de @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Cliquez pour ajouter une note",
   "alert.rate_limited.message": "Veuillez réessayer après {retry_time, time, medium}.",
-  "alert.rate_limited.title": "Taux limité",
+  "alert.rate_limited.title": "Débit limité",
   "alert.unexpected.message": "Une erreur inattendue s’est produite.",
   "alert.unexpected.title": "Oups !",
   "announcement.announcement": "Annonce",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Accepter",
   "follow_request.reject": "Rejeter",
   "follow_requests.unlocked_explanation": "Même si votre compte n’est pas verrouillé, l’équipe de {domain} a pensé que vous pourriez vouloir consulter manuellement les demandes de suivi de ces comptes.",
+  "generic.saved": "Sauvegardé",
   "getting_started.developers": "Développeur·euse·s",
   "getting_started.directory": "Annuaire des profils",
   "getting_started.documentation": "Documentation",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Les abonnés",
   "timeline_hint.resources.follows": "Les abonnements",
   "timeline_hint.resources.statuses": "Les anciens pouets",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {personne discute} other {personnes discutent}}",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} personne} other {{counter} personnes}} en parle·nt",
   "trends.trending_now": "Tendance en ce moment",
   "ui.beforeunload": "Votre brouillon sera perdu si vous quittez Mastodon.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Glissez et déposez pour envoyer",
   "upload_button.label": "Joindre un média ({formats})",
   "upload_error.limit": "Taille maximale d'envoi de fichier dépassée.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Décrire pour les personnes ayant des difficultés d’audition",
   "upload_form.description": "Décrire pour les malvoyant·e·s",
   "upload_form.edit": "Modifier",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Supprimer",
   "upload_form.video_description": "Décrire pour les personnes ayant des problèmes d’audition ou de vision",
   "upload_modal.analyzing_picture": "Analyse de l’image en cours…",
   "upload_modal.apply": "Appliquer",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "Buvez de ce whisky que le patron juge fameux",
   "upload_modal.detect_text": "Détecter le texte de l’image",
   "upload_modal.edit_media": "Modifier le média",
diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json
index e893095b4..5a27ed96c 100644
--- a/app/javascript/mastodon/locales/ga.json
+++ b/app/javascript/mastodon/locales/ga.json
@@ -1,6 +1,5 @@
 {
   "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
   "account.add_or_remove_from_list": "Add or Remove from lists",
   "account.badges.bot": "Bot",
   "account.badges.group": "Group",
@@ -16,7 +15,8 @@
   "account.follow": "Follow",
   "account.followers": "Followers",
   "account.followers.empty": "No one follows this user yet.",
-  "account.follows": "Follows",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "This user doesn't follow anyone yet.",
   "account.follows_you": "Follows you",
   "account.hide_reblogs": "Hide boosts from @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Awaiting approval",
   "account.share": "Share @{name}'s profile",
   "account.show_reblogs": "Show boosts from @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Unblock @{name}",
   "account.unblock_domain": "Unhide {domain}",
   "account.unendorse": "Don't feature on profile",
   "account.unfollow": "Unfollow",
   "account.unmute": "Unmute @{name}",
   "account.unmute_notifications": "Unmute notifications from @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
   "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
   "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
   "alert.rate_limited.title": "Rate limited",
   "alert.unexpected.message": "An unexpected error occurred.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Authorize",
   "follow_request.reject": "Reject",
   "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+  "generic.saved": "Saved",
   "getting_started.developers": "Developers",
   "getting_started.directory": "Profile directory",
   "getting_started.documentation": "Documentation",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Trending now",
   "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Drag & drop to upload",
   "upload_button.label": "Add media ({formats})",
   "upload_error.limit": "File upload limit exceeded.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Describe for people with hearing loss",
   "upload_form.description": "Describe for the visually impaired",
   "upload_form.edit": "Edit",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Delete",
   "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
   "upload_modal.analyzing_picture": "Analyzing picture…",
   "upload_modal.apply": "Apply",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
   "upload_modal.detect_text": "Detect text from picture",
   "upload_modal.edit_media": "Edit media",
diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json
index c29488b89..4b159a362 100644
--- a/app/javascript/mastodon/locales/gl.json
+++ b/app/javascript/mastodon/locales/gl.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "A túa nota para @{name}",
   "account.add_or_remove_from_list": "Engadir ou eliminar das listaxes",
   "account.badges.bot": "Bot",
   "account.badges.group": "Grupo",
@@ -16,7 +15,8 @@
   "account.follow": "Seguir",
   "account.followers": "Seguidoras",
   "account.followers.empty": "Aínda ninguén segue esta usuaria.",
-  "account.follows": "Seguindo",
+  "account.followers_counter": "{count, plural, one {{counter} Seguidora} other {{counter} Seguidoras}}",
+  "account.following_counter": "{count, plural, one {} other {{counter} Seguindo}}",
   "account.follows.empty": "Esta usuaria aínda non segue a ninguén.",
   "account.follows_you": "Séguete",
   "account.hide_reblogs": "Agochar repeticións de @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Agardando aprovación. Preme para desbotar a solicitude de seguimento",
   "account.share": "Compartir o perfil de @{name}",
   "account.show_reblogs": "Amosar compartidos de @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Desbloquear @{name}",
   "account.unblock_domain": "Amosar {domain}",
   "account.unendorse": "Non amosar no perfil",
   "account.unfollow": "Deixar de seguir",
   "account.unmute": "Deixar de silenciar a @{name}",
   "account.unmute_notifications": "Deixar de silenciar as notificacións de @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Sen comentarios",
   "alert.rate_limited.message": "Téntao novamente após {retry_time, time, medium}.",
   "alert.rate_limited.title": "Límite de intentos",
   "alert.unexpected.message": "Ocorreu un erro non agardado.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Autorizar",
   "follow_request.reject": "Rexeitar",
   "follow_requests.unlocked_explanation": "Malia que a túa conta non é privada, a administración de {domain} pensou que quizabes terías que revisar de xeito manual as solicitudes de seguiminto.",
+  "generic.saved": "Gardado",
   "getting_started.developers": "Desenvolvedoras",
   "getting_started.directory": "Directorio local",
   "getting_started.documentation": "Documentación",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Seguidoras",
   "timeline_hint.resources.follows": "Seguindo",
   "timeline_hint.resources.statuses": "Toots antigos",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {persoa} other {persoas}} falando",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} persoa} other {{counter} persoas}} comentando",
   "trends.trending_now": "Tendencias actuais",
   "ui.beforeunload": "O borrador perderase se saes de Mastodon.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Arrastra e solta para subir",
   "upload_button.label": "Engadir multimedia ({formats})",
   "upload_error.limit": "Límite máximo do ficheiro a subir excedido.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Describir para persoas con problemas auditivos",
   "upload_form.description": "Describir para persoas con problemas visuais",
   "upload_form.edit": "Editar",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Eliminar",
   "upload_form.video_description": "Describir para persoas con problemas visuais ou auditivos",
   "upload_modal.analyzing_picture": "Estase a analizar a imaxe…",
   "upload_modal.apply": "Aplicar",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "Un raposo veloz brinca sobre o can preguiceiro",
   "upload_modal.detect_text": "Detectar texto na imaxe",
   "upload_modal.edit_media": "Editar multimedia",
diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json
index 4a2754e64..81e713dc3 100644
--- a/app/javascript/mastodon/locales/he.json
+++ b/app/javascript/mastodon/locales/he.json
@@ -1,13 +1,12 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "ההודעה שלך ל@{name}",
   "account.add_or_remove_from_list": "הוסף או הסר מהרשימות",
   "account.badges.bot": "בוט",
-  "account.badges.group": "Group",
+  "account.badges.group": "קבוצה",
   "account.block": "חסימת @{name}",
   "account.block_domain": "להסתיר הכל מהקהילה {domain}",
   "account.blocked": "חסום",
-  "account.browse_more_on_origin_server": "Browse more on the original profile",
+  "account.browse_more_on_origin_server": "המשך לגלוש בפרופיל המקורי",
   "account.cancel_follow_request": "בטל בקשת מעקב",
   "account.direct": "Direct Message @{name}",
   "account.domain_blocked": "הדומיין חסוי",
@@ -16,59 +15,58 @@
   "account.follow": "מעקב",
   "account.followers": "עוקבים",
   "account.followers.empty": "אף אחד לא עוקב אחר המשתמש הזה עדיין.",
-  "account.follows": "נעקבים",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "משתמש זה לא עוקב אחר אף אחד עדיין.",
   "account.follows_you": "במעקב אחריך",
   "account.hide_reblogs": "להסתיר הידהודים מאת @{name}",
   "account.last_status": "פעילות אחרונה",
   "account.link_verified_on": "בעלות על הקישור הזה נבדקה לאחרונה ב{date}",
-  "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
+  "account.locked_info": "מצב הפרטיות של החשבון הנוכחי הוגדר כנעול. בעל החשבון קובע באופן פרטני מי יכול לעקוב אחריו.",
   "account.media": "מדיה",
   "account.mention": "אזכור של @{name}",
   "account.moved_to": "החשבון {name} הועבר אל:",
   "account.mute": "להשתיק את @{name}",
   "account.mute_notifications": "להסתיר התראות מאת @{name}",
-  "account.muted": "Muted",
-  "account.never_active": "Never",
+  "account.muted": "מושתק",
+  "account.never_active": "אף פעם",
   "account.posts": "הודעות",
   "account.posts_with_replies": "Toots with replies",
   "account.report": "לדווח על @{name}",
   "account.requested": "בהמתנה לאישור",
   "account.share": "לשתף את הפרופיל של @{name}",
   "account.show_reblogs": "להראות הדהודים מאת @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "הסרת חסימה מעל @{name}",
   "account.unblock_domain": "הסר חסימה מקהילת {domain}",
   "account.unendorse": "לא להציג בפרופיל",
   "account.unfollow": "הפסקת מעקב",
   "account.unmute": "הפסקת השתקת @{name}",
   "account.unmute_notifications": "להפסיק הסתרת הודעות מעם @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
-  "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
-  "alert.rate_limited.title": "Rate limited",
+  "account_note.placeholder": "ללא הערה",
+  "alert.rate_limited.message": "נא לנסות אחרי {retry_time, time, medium}.",
+  "alert.rate_limited.title": "מגבלות מיכסה",
   "alert.unexpected.message": "אירעה שגיאה בלתי צפויה.",
   "alert.unexpected.title": "אופס!",
-  "announcement.announcement": "Announcement",
-  "autosuggest_hashtag.per_week": "{count} per week",
+  "announcement.announcement": "הודעה",
+  "autosuggest_hashtag.per_week": "{count} לשבוע",
   "boost_modal.combo": "ניתן להקיש {combo} כדי לדלג בפעם הבאה",
   "bundle_column_error.body": "משהו השתבש בעת הצגת הרכיב הזה.",
   "bundle_column_error.retry": "לנסות שוב",
-  "bundle_column_error.title": "Network error",
+  "bundle_column_error.title": "שגיאת רשת",
   "bundle_modal_error.close": "לסגור",
   "bundle_modal_error.message": "משהו השתבש בעת טעינת הרכיב הזה.",
   "bundle_modal_error.retry": "לנסות שוב",
   "column.blocks": "חסימות",
-  "column.bookmarks": "Bookmarks",
+  "column.bookmarks": "סימניות",
   "column.community": "ציר זמן מקומי",
-  "column.direct": "Direct messages",
-  "column.directory": "Browse profiles",
+  "column.direct": "הודעות ישירות",
+  "column.directory": "גלוש פרופילים",
   "column.domain_blocks": "Hidden domains",
   "column.favourites": "חיבובים",
   "column.follow_requests": "בקשות מעקב",
   "column.home": "בבית",
-  "column.lists": "Lists",
+  "column.lists": "רשימות",
   "column.mutes": "השתקות",
   "column.notifications": "התראות",
   "column.pins": "Pinned toot",
@@ -81,11 +79,11 @@
   "column_header.show_settings": "הצגת העדפות",
   "column_header.unpin": "שחרור קיבוע",
   "column_subheading.settings": "אפשרויות",
-  "community.column_settings.local_only": "Local only",
+  "community.column_settings.local_only": "מקומי בלבד",
   "community.column_settings.media_only": "Media only",
-  "community.column_settings.remote_only": "Remote only",
+  "community.column_settings.remote_only": "מרחוק בלבד",
   "compose_form.direct_message_warning": "This toot will only be visible to all the mentioned users.",
-  "compose_form.direct_message_warning_learn_more": "Learn more",
+  "compose_form.direct_message_warning_learn_more": "מידע נוסף",
   "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.",
   "compose_form.lock_disclaimer": "חשבונך אינו {locked}. כל אחד יוכל לעקוב אחריך כדי לקרוא את הודעותיך המיועדות לעוקבים בלבד.",
   "compose_form.lock_disclaimer.lock": "נעול",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "קבלה",
   "follow_request.reject": "דחיה",
   "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+  "generic.saved": "Saved",
   "getting_started.developers": "Developers",
   "getting_started.directory": "Profile directory",
   "getting_started.documentation": "Documentation",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Trending now",
   "ui.beforeunload": "הטיוטא תאבד אם תעזבו את מסטודון.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "ניתן להעלות על ידי Drag & drop",
   "upload_button.label": "הוספת מדיה",
   "upload_error.limit": "File upload limit exceeded.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Describe for people with hearing loss",
   "upload_form.description": "תיאור לכבדי ראיה",
   "upload_form.edit": "Edit",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "ביטול",
   "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
   "upload_modal.analyzing_picture": "Analyzing picture…",
   "upload_modal.apply": "Apply",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
   "upload_modal.detect_text": "Detect text from picture",
   "upload_modal.edit_media": "Edit media",
diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json
index 0ca745020..4cc12830f 100644
--- a/app/javascript/mastodon/locales/hi.json
+++ b/app/javascript/mastodon/locales/hi.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "सूची में जोड़ें या हटाए",
   "account.badges.bot": "बॉट",
   "account.badges.group": "Group",
@@ -16,7 +15,8 @@
   "account.follow": "फॉलो करें",
   "account.followers": "फॉलोवर",
   "account.followers.empty": "कोई भी इस यूज़र् को फ़ॉलो नहीं करता है",
-  "account.follows": "फॉलो करें",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "यह यूज़र् अभी तक किसी को फॉलो नहीं करता है।",
   "account.follows_you": "आपको फॉलो करता है",
   "account.hide_reblogs": "@{name} के बूस्ट छुपाएं",
@@ -36,16 +36,14 @@
   "account.requested": "मंजूरी का इंतजार। फॉलो रिक्वेस्ट को रद्द करने के लिए क्लिक करें",
   "account.share": "@{name} की प्रोफाइल शेयर करे",
   "account.show_reblogs": "@{name} के बूस्ट दिखाए",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "@{name} को अनब्लॉक करें",
   "account.unblock_domain": "{domain} दिखाए",
   "account.unendorse": "प्रोफ़ाइल पर न दिखाए",
   "account.unfollow": "अनफॉलो करें",
   "account.unmute": "अनम्यूट @{name}",
   "account.unmute_notifications": "@{name} के नोटिफिकेशन अनम्यूट करे",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "कृप्या {retry_time, time, medium} के बाद दुबारा कोशिश करें",
   "alert.rate_limited.title": "सीमित दर",
   "alert.unexpected.message": "एक अप्रत्याशित त्रुटि हुई है!",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "अधिकार दें",
   "follow_request.reject": "अस्वीकार करें",
   "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+  "generic.saved": "Saved",
   "getting_started.developers": "डेवॅलपर्स",
   "getting_started.directory": "प्रोफ़ाइल निर्देशिका",
   "getting_started.documentation": "प्रलेखन",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Trending now",
   "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Drag & drop to upload",
   "upload_button.label": "Add images, a video or an audio file",
   "upload_error.limit": "File upload limit exceeded.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Describe for people with hearing loss",
   "upload_form.description": "Describe for the visually impaired",
   "upload_form.edit": "संशोधन करें",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "मिटाए",
   "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
   "upload_modal.analyzing_picture": "Analyzing picture…",
   "upload_modal.apply": "लागू करें",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
   "upload_modal.detect_text": "Detect text from picture",
   "upload_modal.edit_media": "मीडिया में संशोधन करें",
diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json
index 48f776982..a7e13b2eb 100644
--- a/app/javascript/mastodon/locales/hr.json
+++ b/app/javascript/mastodon/locales/hr.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "Add or Remove from lists",
   "account.badges.bot": "Bot",
   "account.badges.group": "Group",
@@ -16,7 +15,8 @@
   "account.follow": "Slijedi",
   "account.followers": "Sljedbenici",
   "account.followers.empty": "No one follows this user yet.",
-  "account.follows": "Slijedi",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "This user doesn't follow anyone yet.",
   "account.follows_you": "te slijedi",
   "account.hide_reblogs": "Hide boosts from @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Čeka pristanak",
   "account.share": "Share @{name}'s profile",
   "account.show_reblogs": "Show boosts from @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Deblokiraj @{name}",
   "account.unblock_domain": "Poništi sakrivanje {domain}",
   "account.unendorse": "Don't feature on profile",
   "account.unfollow": "Prestani slijediti",
   "account.unmute": "Poništi utišavanje @{name}",
   "account.unmute_notifications": "Unmute notifications from @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
   "alert.rate_limited.title": "Rate limited",
   "alert.unexpected.message": "An unexpected error occurred.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Autoriziraj",
   "follow_request.reject": "Odbij",
   "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+  "generic.saved": "Saved",
   "getting_started.developers": "Developers",
   "getting_started.directory": "Profile directory",
   "getting_started.documentation": "Documentation",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Trending now",
   "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Povuci i spusti kako bi uploadao",
   "upload_button.label": "Dodaj media",
   "upload_error.limit": "File upload limit exceeded.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Describe for people with hearing loss",
   "upload_form.description": "Describe for the visually impaired",
   "upload_form.edit": "Edit",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Poništi",
   "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
   "upload_modal.analyzing_picture": "Analyzing picture…",
   "upload_modal.apply": "Apply",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
   "upload_modal.detect_text": "Detect text from picture",
   "upload_modal.edit_media": "Edit media",
diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json
index 2ea401870..362972575 100644
--- a/app/javascript/mastodon/locales/hu.json
+++ b/app/javascript/mastodon/locales/hu.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Megjegyzés @{name} fiókhoz",
   "account.add_or_remove_from_list": "Hozzáadás vagy eltávolítás a listáról",
   "account.badges.bot": "Bot",
   "account.badges.group": "Csoport",
@@ -16,7 +15,8 @@
   "account.follow": "Követés",
   "account.followers": "Követő",
   "account.followers.empty": "Ezt a felhasználót még senki sem követi.",
-  "account.follows": "Követések",
+  "account.followers_counter": "{count, plural, one {{counter} Követő} other {{counter} Követő}}",
+  "account.following_counter": "{count, plural, one {} other {{counter} Követett}}",
   "account.follows.empty": "Ez a felhasználó még senkit sem követ.",
   "account.follows_you": "Követ téged",
   "account.hide_reblogs": "@{name} megtolásainak némítása",
@@ -36,16 +36,14 @@
   "account.requested": "Engedélyre vár. Kattints a követési kérés visszavonásához",
   "account.share": "@{name} profiljának megosztása",
   "account.show_reblogs": "@{name} megtolásainak mutatása",
+  "account.statuses_counter": "{count, plural, one {{counter} Tülk} other {{counter} Tülk}}",
   "account.unblock": "@{name} letiltásának feloldása",
   "account.unblock_domain": "{domain} elrejtésének feloldása",
   "account.unendorse": "Kiemelés törlése a profilodról",
   "account.unfollow": "Követés vége",
   "account.unmute": "@{name} némítás feloldása",
   "account.unmute_notifications": "@{name} némított értesítéseinek feloldása",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Nincs megjegyzés",
   "alert.rate_limited.message": "Próbáld újra {retry_time, time, medium} után.",
   "alert.rate_limited.title": "Forgalomkorlátozás",
   "alert.unexpected.message": "Váratlan hiba történt.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Engedélyezés",
   "follow_request.reject": "Elutasítás",
   "follow_requests.unlocked_explanation": "Bár a fiókod nincs zárolva, a(z) {domain} csapata úgy gondolta, hogy talán kézzel szeretnéd ellenőrizni a fiók követési kéréseit.",
+  "generic.saved": "Elmentve",
   "getting_started.developers": "Fejlesztőknek",
   "getting_started.directory": "Profilok",
   "getting_started.documentation": "Dokumentáció",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Követő",
   "timeline_hint.resources.follows": "Követett",
   "timeline_hint.resources.statuses": "Régi tülkök",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {résztvevő} other {résztvevő}} beszélget",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} személy} other {{counter} személy}} beszélget",
   "trends.trending_now": "Most felkapott",
   "ui.beforeunload": "A piszkozatod el fog veszni, ha elhagyod a Mastodont.",
+  "units.short.billion": "{count}Mrd",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Húzd ide a feltöltéshez",
   "upload_button.label": "Média hozzáadása ({formats})",
   "upload_error.limit": "Túllépted a fájlfeltöltési korlátot.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Írja le a hallássérültek számára",
   "upload_form.description": "Leírás látáskorlátozottak számára",
   "upload_form.edit": "Szerkesztés",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Törlés",
   "upload_form.video_description": "Írja le a hallás- vagy látássérültek számára",
   "upload_modal.analyzing_picture": "Kép elemzése…",
   "upload_modal.apply": "Alkalmaz",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "A gyors, barna róka átugrik a lusta kutya fölött",
   "upload_modal.detect_text": "Szöveg felismerése a képről",
   "upload_modal.edit_media": "Média szerkesztése",
diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json
index 4c1547a69..4e7055114 100644
--- a/app/javascript/mastodon/locales/hy.json
+++ b/app/javascript/mastodon/locales/hy.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "Աւելացնել կամ հեռացնել ցանկերից",
   "account.badges.bot": "Բոտ",
   "account.badges.group": "Խումբ",
@@ -16,7 +15,8 @@
   "account.follow": "Հետեւել",
   "account.followers": "Հետեւողներ",
   "account.followers.empty": "Այս օգտատիրոջը դեռ ոչ մէկ չի հետեւում։",
-  "account.follows": "Հետեւում է",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "Այս օգտատէրը դեռ ոչ մէկի չի հետեւում։",
   "account.follows_you": "Հետեւում է քեզ",
   "account.hide_reblogs": "Թաքցնել @{name}֊ի տարածածները",
@@ -36,16 +36,14 @@
   "account.requested": "Հաստատման կարիք ունի։ Սեղմիր՝ հետեւելու հայցը չեղարկելու համար։",
   "account.share": "Կիսուել @{name}֊ի էջով",
   "account.show_reblogs": "Ցուցադրել @{name}֊ի տարածածները",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Ապաարգելափակել @{name}֊ին",
   "account.unblock_domain": "Ցուցադրել {domain} թաքցուած տիրոյթի գրառումները",
   "account.unendorse": "Չցուցադրել անձնական էջում",
   "account.unfollow": "Ապահետեւել",
   "account.unmute": "Ապալռեցնել @{name}֊ին",
   "account.unmute_notifications": "Միացնել ծանուցումները @{name}֊ից",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "Փորձէք  որոշ ժամանակ անց՝ {retry_time, time, medium}։",
   "alert.rate_limited.title": "Գործողութիւնների յաճախութիւնը գերազանցում է թոյլատրելին",
   "alert.unexpected.message": "Անսպասելի սխալ տեղի ունեցաւ։",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Վավերացնել",
   "follow_request.reject": "Մերժել",
   "follow_requests.unlocked_explanation": "Այս հարցումը ուղարկված է հաշվից, որի համար {domain}-ի անձնակազմը միացրել է ձեռքով ստուգում։",
+  "generic.saved": "Saved",
   "getting_started.developers": "Մշակողներ",
   "getting_started.directory": "Օգտատէրերի շտեմարան",
   "getting_started.documentation": "Փաստաթղթեր",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {հոգի} other {հոգի}} խոսում է սրա մասին",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Այժմ արդիական",
   "ui.beforeunload": "Քո սեւագիրը կկորի, եթե լքես Մաստոդոնը։",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Քաշիր ու նետիր՝ վերբեռնելու համար",
   "upload_button.label": "Ավելացնել մեդիա",
   "upload_error.limit": "Ֆայլի վերբեռնման սահմանաչափը գերազանցված է։",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Նկարագրիր ձայնագրութեան բովանդակութիւնը լսողական խնդիրներով անձանց համար",
   "upload_form.description": "Նկարագիր՝ տեսողական խնդիրներ ունեցողների համար",
   "upload_form.edit": "Խմբագրել",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Հետարկել",
   "upload_form.video_description": "Նկարագրիր տեսանիւթը լսողական կամ տեսողական խնդիրներով անձանց համար",
   "upload_modal.analyzing_picture": "Լուսանկարի վերլուծում…",
   "upload_modal.apply": "Կիրառել",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "Բել դղյակի ձախ ժամն օֆ ազգությանը ցպահանջ չճշտած վնաս էր եւ փառք։",
   "upload_modal.detect_text": "Հայտնբերել տեքստը նկարից",
   "upload_modal.edit_media": "Խմբագրել մեդիան",
diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json
index f3080d4fc..5b0f345af 100644
--- a/app/javascript/mastodon/locales/id.json
+++ b/app/javascript/mastodon/locales/id.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "Tambah atau Hapus dari daftar",
   "account.badges.bot": "Bot",
   "account.badges.group": "Grup",
@@ -16,7 +15,8 @@
   "account.follow": "Ikuti",
   "account.followers": "Pengikut",
   "account.followers.empty": "Tidak ada satupun yang mengkuti pengguna ini saat ini.",
-  "account.follows": "Mengikuti",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "Pengguna ini belum mengikuti siapapun.",
   "account.follows_you": "Mengikuti anda",
   "account.hide_reblogs": "Sembunyikan boosts dari @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Menunggu persetujuan. Klik untuk membatalkan permintaan",
   "account.share": "Bagikan profil @{name}",
   "account.show_reblogs": "Tampilkan boost dari @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Hapus blokir @{name}",
   "account.unblock_domain": "Tampilkan {domain}",
   "account.unendorse": "Jangan tampilkan di profil",
   "account.unfollow": "Berhenti mengikuti",
   "account.unmute": "Berhenti membisukan @{name}",
   "account.unmute_notifications": "Munculkan notifikasi dari @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "Tolong ulangi setelah {retry_time, time, medium}.",
   "alert.rate_limited.title": "Batasan tingkat",
   "alert.unexpected.message": "Terjadi kesalahan yang tidak terduga.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Izinkan",
   "follow_request.reject": "Tolak",
   "follow_requests.unlocked_explanation": "Meskipun akun Anda tidak dikunci, staf {domain} menyarankan Anda untuk meninjau permintaan mengikuti dari akun-akun ini secara manual.",
+  "generic.saved": "Saved",
   "getting_started.developers": "Pengembang",
   "getting_started.directory": "Direktori profil",
   "getting_started.documentation": "Dokumentasi",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, other {orang}} berbicara",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Sedang tren sekarang",
   "ui.beforeunload": "Naskah anda akan hilang jika anda keluar dari Mastodon.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Seret & lepaskan untuk mengunggah",
   "upload_button.label": "Tambahkan media",
   "upload_error.limit": "Batas unggah berkas terlampaui.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Penjelasan untuk orang dengan gangguan pendengaran",
   "upload_form.description": "Deskripsikan untuk mereka yang tidak bisa melihat dengan jelas",
   "upload_form.edit": "Sunting",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Undo",
   "upload_form.video_description": "Penjelasan untuk orang dengan gangguan pendengaran atau penglihatan",
   "upload_modal.analyzing_picture": "Analisis gambar…",
   "upload_modal.apply": "Terapkan",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "Muharjo seorang xenofobia universal yang takut pada warga jazirah, contohnya Qatar",
   "upload_modal.detect_text": "Deteksi teks pada gambar",
   "upload_modal.edit_media": "Sunting media",
diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json
index 05c8ffd02..45e74b675 100644
--- a/app/javascript/mastodon/locales/io.json
+++ b/app/javascript/mastodon/locales/io.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "Add or Remove from lists",
   "account.badges.bot": "Bot",
   "account.badges.group": "Group",
@@ -16,7 +15,8 @@
   "account.follow": "Sequar",
   "account.followers": "Sequanti",
   "account.followers.empty": "No one follows this user yet.",
-  "account.follows": "Sequas",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "This user doesn't follow anyone yet.",
   "account.follows_you": "Sequas tu",
   "account.hide_reblogs": "Hide boosts from @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Vartante aprobo",
   "account.share": "Share @{name}'s profile",
   "account.show_reblogs": "Show boosts from @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Desblokusar @{name}",
   "account.unblock_domain": "Unhide {domain}",
   "account.unendorse": "Don't feature on profile",
   "account.unfollow": "Ne plus sequar",
   "account.unmute": "Ne plus celar @{name}",
   "account.unmute_notifications": "Unmute notifications from @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
   "alert.rate_limited.title": "Rate limited",
   "alert.unexpected.message": "An unexpected error occurred.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Yurizar",
   "follow_request.reject": "Refuzar",
   "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+  "generic.saved": "Saved",
   "getting_started.developers": "Developers",
   "getting_started.directory": "Profile directory",
   "getting_started.documentation": "Documentation",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Trending now",
   "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Tranar faligar por kargar",
   "upload_button.label": "Adjuntar kontenajo",
   "upload_error.limit": "File upload limit exceeded.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Describe for people with hearing loss",
   "upload_form.description": "Describe for the visually impaired",
   "upload_form.edit": "Edit",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Desfacar",
   "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
   "upload_modal.analyzing_picture": "Analyzing picture…",
   "upload_modal.apply": "Apply",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
   "upload_modal.detect_text": "Detect text from picture",
   "upload_modal.edit_media": "Edit media",
diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json
index 547b6c061..4a281cf80 100644
--- a/app/javascript/mastodon/locales/is.json
+++ b/app/javascript/mastodon/locales/is.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Minnispunkturinn þinn fyrir @{name}",
   "account.add_or_remove_from_list": "Bæta á eða fjarlægja af listum",
   "account.badges.bot": "Róbót",
   "account.badges.group": "Hópur",
@@ -16,7 +15,8 @@
   "account.follow": "Fylgjast með",
   "account.followers": "Fylgjendur",
   "account.followers.empty": "Ennþá fylgist enginn með þessum notanda.",
-  "account.follows": "Fylgist með",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "Þessi notandi fylgist ennþá ekki með neinum.",
   "account.follows_you": "Fylgir þér",
   "account.hide_reblogs": "Fela endurbirtingar fyrir @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Bíður eftir samþykki. Smelltu til að hætta við beiðni um að fylgjast með",
   "account.share": "Deila notandasniði fyrir @{name}",
   "account.show_reblogs": "Sýna endurbirtingar frá @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Aflétta útilokun af @{name}",
   "account.unblock_domain": "Hætta að fela {domain}",
   "account.unendorse": "Ekki birta á notandasniði",
   "account.unfollow": "Hætta að fylgja",
   "account.unmute": "Hætta að þagga niður í @{name}",
   "account.unmute_notifications": "Hætta að þagga tilkynningar frá @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Engin athugasemd gefin",
   "alert.rate_limited.message": "Prófaðu aftur eftir {retry_time, time, medium}.",
   "alert.rate_limited.title": "Með takmörkum",
   "alert.unexpected.message": "Upp kom óvænt villa.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Heimila",
   "follow_request.reject": "Hafna",
   "follow_requests.unlocked_explanation": "Jafnvel þótt aðgangurinn þinn sé ekki læstur, hafa umsjónarmenn {domain} ímyndað sér að þú gætir viljað yfirfara handvirkt fylgjendabeiðnir frá þessum notendum.",
+  "generic.saved": "Saved",
   "getting_started.developers": "Forritarar",
   "getting_started.directory": "Notandasniðamappa",
   "getting_started.documentation": "Hjálparskjöl",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Fylgjendur",
   "timeline_hint.resources.follows": "Fylgist með",
   "timeline_hint.resources.statuses": "Eldri tíst",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {aðili} other {aðilar}} að tala",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Í umræðunni núna",
   "ui.beforeunload": "Drögin tapast ef þú ferð út úr Mastodon.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Dragðu-og-slepptu hér til að senda inn",
   "upload_button.label": "Bæta við ({formats}) myndskrá",
   "upload_error.limit": "Fór yfir takmörk á innsendingum skráa.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Lýstu þessu fyrir heyrnarskerta",
   "upload_form.description": "Lýstu þessu fyrir sjónskerta",
   "upload_form.edit": "Breyta",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Eyða",
   "upload_form.video_description": "Lýstu þessu fyrir fólk sem heyrir illa eða er með skerta sjón",
   "upload_modal.analyzing_picture": "Greini mynd…",
   "upload_modal.apply": "Virkja",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "Öllum dýrunum í skóginum þætti bezt að vera vinir",
   "upload_modal.detect_text": "Skynja texta úr mynd",
   "upload_modal.edit_media": "Breyta myndskrá",
diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json
index 03597e06f..8f78b5d9f 100644
--- a/app/javascript/mastodon/locales/it.json
+++ b/app/javascript/mastodon/locales/it.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "La tua nota per @{name}",
   "account.add_or_remove_from_list": "Aggiungi o Rimuovi dagli elenchi",
   "account.badges.bot": "Bot",
   "account.badges.group": "Gruppo",
@@ -16,7 +15,8 @@
   "account.follow": "Segui",
   "account.followers": "Seguaci",
   "account.followers.empty": "Ancora nessuno segue questo utente.",
-  "account.follows": "Segue",
+  "account.followers_counter": "{count, plural, one {{counter} Seguace} other {{counter} Seguaci}}",
+  "account.following_counter": "{count, plural, other {{counter} Seguiti}}",
   "account.follows.empty": "Questo utente non segue ancora nessuno.",
   "account.follows_you": "Ti segue",
   "account.hide_reblogs": "Nascondi incrementi da @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "In attesa di approvazione. Clicca per annullare la richiesta di seguire",
   "account.share": "Condividi il profilo di @{name}",
   "account.show_reblogs": "Mostra incrementi da @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toot}}",
   "account.unblock": "Sblocca @{name}",
   "account.unblock_domain": "Sblocca il dominio {domain}",
   "account.unendorse": "Non mostrare sul profilo",
   "account.unfollow": "Smetti di seguire",
   "account.unmute": "Non silenziare @{name}",
   "account.unmute_notifications": "Non silenziare le notifiche da @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Nessun commento fornito",
   "alert.rate_limited.message": "Sei pregato di riprovare tra {retry_time, time, medium}.",
   "alert.rate_limited.title": "Intervallo limitato",
   "alert.unexpected.message": "Si è verificato un errore inatteso.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Autorizza",
   "follow_request.reject": "Rifiuta",
   "follow_requests.unlocked_explanation": "Anche se il tuo account non è bloccato, lo staff di {domain} ha pensato che potresti voler esaminare manualmente le richieste di seguirti di questi account.",
+  "generic.saved": "Salvato",
   "getting_started.developers": "Sviluppatori",
   "getting_started.directory": "Directory dei profili",
   "getting_started.documentation": "Documentazione",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Seguaci",
   "timeline_hint.resources.follows": "Segue",
   "timeline_hint.resources.statuses": "Toot meno recenti",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {persona ne sta} other {persone ne stanno}} parlando",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} persona} other {{counter} persone}} ne parla·no",
   "trends.trending_now": "Di tendenza ora",
   "ui.beforeunload": "La bozza andrà persa se esci da Mastodon.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Trascina per caricare",
   "upload_button.label": "Aggiungi file multimediale",
   "upload_error.limit": "Limite al caricamento di file superato.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Descrizione per persone con difetti uditivi",
   "upload_form.description": "Descrizione per utenti con disabilità visive",
   "upload_form.edit": "Modifica",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Cancella",
   "upload_form.video_description": "Descrizione per persone con difetti uditivi o visivi",
   "upload_modal.analyzing_picture": "Analisi immagine…",
   "upload_modal.apply": "Applica",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "Ma la volpe col suo balzo ha raggiunto il quieto Fido",
   "upload_modal.detect_text": "Rileva testo dall'immagine",
   "upload_modal.edit_media": "Modifica media",
diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json
index 8e21c2d24..f26652984 100644
--- a/app/javascript/mastodon/locales/ja.json
+++ b/app/javascript/mastodon/locales/ja.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "メモ",
   "account.add_or_remove_from_list": "リストから追加または外す",
   "account.badges.bot": "Bot",
   "account.badges.group": "Group",
@@ -16,7 +15,8 @@
   "account.follow": "フォロー",
   "account.followers": "フォロワー",
   "account.followers.empty": "まだ誰もフォローしていません。",
-  "account.follows": "フォロー",
+  "account.followers_counter": "{counter} フォロワー",
+  "account.following_counter": "{counter} フォロー",
   "account.follows.empty": "まだ誰もフォローしていません。",
   "account.follows_you": "フォローされています",
   "account.hide_reblogs": "@{name}さんからのブーストを非表示",
@@ -36,16 +36,14 @@
   "account.requested": "フォロー承認待ちです。クリックしてキャンセル",
   "account.share": "@{name}さんのプロフィールを共有する",
   "account.show_reblogs": "@{name}さんからのブーストを表示",
+  "account.statuses_counter": "{counter} トゥート",
   "account.unblock": "@{name}さんのブロックを解除",
   "account.unblock_domain": "{domain}のブロックを解除",
   "account.unendorse": "プロフィールから外す",
   "account.unfollow": "フォロー解除",
   "account.unmute": "@{name}さんのミュートを解除",
   "account.unmute_notifications": "@{name}さんからの通知を受け取るようにする",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "クリックしてメモを追加",
   "alert.rate_limited.message": "{retry_time, time, medium} 以降に再度実行してください。",
   "alert.rate_limited.title": "制限に達しました",
   "alert.unexpected.message": "不明なエラーが発生しました。",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "許可",
   "follow_request.reject": "拒否",
   "follow_requests.unlocked_explanation": "あなたのアカウントは承認制ではありませんが、{domain} のスタッフはこれらのアカウントからのフォローリクエストの確認が必要であると判断しました。",
+  "generic.saved": "保存しました",
   "getting_started.developers": "開発",
   "getting_started.directory": "ディレクトリ",
   "getting_started.documentation": "ドキュメント",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "フォロワー",
   "timeline_hint.resources.follows": "フォロー",
   "timeline_hint.resources.statuses": "以前のトゥート",
-  "trends.count_by_accounts": "{count}人がトゥート",
+  "trends.counter_by_accounts": "{counter} 人がトゥート",
   "trends.trending_now": "トレンドタグ",
   "ui.beforeunload": "Mastodonから離れると送信前の投稿は失われます。",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "ドラッグ&ドロップでアップロード",
   "upload_button.label": "メディアを追加 (複数の画像または1つの動画か音声ファイル)",
   "upload_error.limit": "アップロードできる上限を超えています。",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "聴取が難しいユーザーへの説明",
   "upload_form.description": "閲覧が難しいユーザーへの説明",
   "upload_form.edit": "編集",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "削除",
   "upload_form.video_description": "視聴が難しいユーザーへの説明",
   "upload_modal.analyzing_picture": "画像を解析中…",
   "upload_modal.apply": "適用",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "あのイーハトーヴォのすきとおった風",
   "upload_modal.detect_text": "画像からテキストを検出",
   "upload_modal.edit_media": "メディアを編集",
diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json
index 720dfe4c7..36f27e69d 100644
--- a/app/javascript/mastodon/locales/ka.json
+++ b/app/javascript/mastodon/locales/ka.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "Add or Remove from lists",
   "account.badges.bot": "ბოტი",
   "account.badges.group": "Group",
@@ -16,7 +15,8 @@
   "account.follow": "გაყოლა",
   "account.followers": "მიმდევრები",
   "account.followers.empty": "No one follows this user yet.",
-  "account.follows": "მიდევნებები",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "This user doesn't follow anyone yet.",
   "account.follows_you": "მოგყვებათ",
   "account.hide_reblogs": "დაიმალოს ბუსტები @{name}-სგან",
@@ -36,16 +36,14 @@
   "account.requested": "დამტკიცების მოლოდინში. დააწკაპუნეთ რომ უარყოთ დადევნების მოთხონვა",
   "account.share": "გააზიარე @{name}-ის პროფილი",
   "account.show_reblogs": "აჩვენე ბუსტები @{name}-სგან",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "განბლოკე @{name}",
   "account.unblock_domain": "გამოაჩინე {domain}",
   "account.unendorse": "არ გამოირჩეს პროფილზე",
   "account.unfollow": "ნუღარ მიჰყვები",
   "account.unmute": "ნუღარ აჩუმებ @{name}-ს",
   "account.unmute_notifications": "ნუღარ აჩუმებ შეტყობინებებს @{name}-სგან",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
   "alert.rate_limited.title": "Rate limited",
   "alert.unexpected.message": "წარმოიშვა მოულოდნელი შეცდომა.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "ავტორიზაცია",
   "follow_request.reject": "უარყოფა",
   "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+  "generic.saved": "Saved",
   "getting_started.developers": "დეველოპერები",
   "getting_started.directory": "Profile directory",
   "getting_started.documentation": "დოკუმენტაცია",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} საუბრობს",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Trending now",
   "ui.beforeunload": "თქვენი დრაფტი გაუქმდება თუ დატოვებთ მასტოდონს.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "გადმოწიეთ და ჩააგდეთ ასატვირთათ",
   "upload_button.label": "მედიის დამატება",
   "upload_error.limit": "File upload limit exceeded.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Describe for people with hearing loss",
   "upload_form.description": "აღწერილობა ვიზუალურად უფასურისთვის",
   "upload_form.edit": "Edit",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "გაუქმება",
   "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
   "upload_modal.analyzing_picture": "Analyzing picture…",
   "upload_modal.apply": "Apply",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
   "upload_modal.detect_text": "Detect text from picture",
   "upload_modal.edit_media": "Edit media",
diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json
index 1eccc74ee..64294ea13 100644
--- a/app/javascript/mastodon/locales/kab.json
+++ b/app/javascript/mastodon/locales/kab.json
@@ -1,22 +1,22 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Tazmilt",
   "account.add_or_remove_from_list": "Rnu neɣ kkes seg tebdarin",
   "account.badges.bot": "Aṛubut",
   "account.badges.group": "Agraw",
   "account.block": "Seḥbes @{name}",
   "account.block_domain": "Ffer kra i d-yekkan seg {domain}",
-  "account.blocked": "Yettuseḥbes",
-  "account.browse_more_on_origin_server": "Browse more on the original profile",
-  "account.cancel_follow_request": "Sefsex asuter n uḍfaṛ",
+  "account.blocked": "Yettusewḥel",
+  "account.browse_more_on_origin_server": "Inig ugar deg umaɣun agejdan",
+  "account.cancel_follow_request": "Sefsex asuter n uḍfar",
   "account.direct": "Izen usrid i @{name}",
   "account.domain_blocked": "Taɣult yeffren",
   "account.edit_profile": "Ẓreg amaɣnu",
   "account.endorse": "Welleh fell-as deg umaɣnu-inek",
-  "account.follow": "Ḍfeṛ",
-  "account.followers": "Imeḍfaṛen",
+  "account.follow": "Ḍfer",
+  "account.followers": "Imeḍfaren",
   "account.followers.empty": "Ar tura, ulac yiwen i yeṭṭafaṛen amseqdac-agi.",
-  "account.follows": "I yeṭṭafaṛ",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "Ar tura, amseqdac-agi ur yeṭṭafaṛ yiwen.",
   "account.follows_you": "Yeṭṭafaṛ-ik",
   "account.hide_reblogs": "Ffer ayen i ibeṭṭu @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Di laɛḍil ad yettwaqbel. Ssit i wakken ad yefsex usuter n uḍfar",
   "account.share": "Bḍu amaɣnu n @{name}",
   "account.show_reblogs": "Ssken-d inebḍa n @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Serreḥ i @{name}",
   "account.unblock_domain": "Ssken-d {domain}",
   "account.unendorse": "Ur ttwellih ara fell-as deg umaɣnu-inek",
   "account.unfollow": "Ur ṭṭafaṛ ara",
   "account.unmute": "Kkes asgugem ɣef @{name}",
   "account.unmute_notifications": "Serreḥ ilɣa sɣur @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Tekki aken ad ternuḍ tazmilt",
   "alert.rate_limited.message": "Ma ulac aɣilif ɛreḍ tikelt-nniḍen akka {retry_time, time, medium}.",
   "alert.rate_limited.title": "Aktum s talast",
   "alert.unexpected.message": "Yeḍra-d unezri ur netturaǧu ara.",
@@ -83,7 +81,7 @@
   "column_subheading.settings": "Iɣewwaṛen",
   "community.column_settings.local_only": "Adigan kan",
   "community.column_settings.media_only": "Allal n teywalt kan",
-  "community.column_settings.remote_only": "Remote only",
+  "community.column_settings.remote_only": "Ubεid kan",
   "compose_form.direct_message_warning": "Tajewwaqt-a ad d-tettwasken kan i yimseqdacen i d-yettwabedren.",
   "compose_form.direct_message_warning_learn_more": "Issin ugar",
   "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Ssireg",
   "follow_request.reject": "Agi",
   "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+  "generic.saved": "Yettwasekles",
   "getting_started.developers": "Ineflayen",
   "getting_started.directory": "Akaram n imaɣnuten",
   "getting_started.documentation": "Amnir",
@@ -243,9 +242,9 @@
   "keyboard_shortcuts.reply": "i tririt",
   "keyboard_shortcuts.requests": "akken ad d-teldiḍ tabdert n yisuturen n teḍfeṛt",
   "keyboard_shortcuts.search": "to focus search",
-  "keyboard_shortcuts.spoilers": "to show/hide CW field",
+  "keyboard_shortcuts.spoilers": "i uskan/tuffra n wurti CW",
   "keyboard_shortcuts.start": "akken ad d-teldiḍ ajgu n \"bdu\"",
-  "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
+  "keyboard_shortcuts.toggle_hidden": "i uskan/tuffra n uḍris deffir CW",
   "keyboard_shortcuts.toggle_sensitivity": "i teskent/tuffra n yimidyaten",
   "keyboard_shortcuts.toot": "i wakken attebdud tajewwaqt tamaynut",
   "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
@@ -311,11 +310,11 @@
   "notifications.column_settings.mention": "Abdar:",
   "notifications.column_settings.poll": "Igemmaḍ n usenqed:",
   "notifications.column_settings.push": "Tilɣa yettudemmren",
-  "notifications.column_settings.reblog": "Boosts:",
+  "notifications.column_settings.reblog": "Seǧhed:",
   "notifications.column_settings.show": "Ssken-d tilɣa deg ujgu",
   "notifications.column_settings.sound": "Rmed imesli",
   "notifications.filter.all": "Akk",
-  "notifications.filter.boosts": "Boosts",
+  "notifications.filter.boosts": "Seǧhed",
   "notifications.filter.favourites": "Ismenyifen",
   "notifications.filter.follows": "Yeṭafaṛ",
   "notifications.filter.mentions": "Abdar",
@@ -376,7 +375,7 @@
   "status.delete": "Kkes",
   "status.detailed_status": "Detailed conversation view",
   "status.direct": "Izen usrid i @{name}",
-  "status.embed": "Embed",
+  "status.embed": "Yuli",
   "status.favourite": "Rnu ɣer yismenyifen",
   "status.filtered": "Yettwasizdeg",
   "status.load_more": "Sali ugar",
@@ -423,21 +422,26 @@
   "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
   "timeline_hint.resources.followers": "Imeḍfaṛen",
   "timeline_hint.resources.follows": "T·Yeṭafaṛ",
-  "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {n umdan} other {n yemdanen}} i yettmeslayen",
+  "timeline_hint.resources.statuses": "Tijewwaqin tiqdimin",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Trending now",
   "ui.beforeunload": "Arewway-ik·im ad iruḥ ma yella tefeɣ-d deg Maṣṭudun.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Zuḥeb rnu sers i tasalyt",
   "upload_button.label": "Rnu taɣwalt ({formats})",
-  "upload_error.limit": "File upload limit exceeded.",
-  "upload_error.poll": "File upload not allowed with polls.",
+  "upload_error.limit": "Asali n ufaylu iεedda talast.",
+  "upload_error.poll": "Ur ittusireg ara usali n ufaylu s tefranin.",
   "upload_form.audio_description": "Glem-d i yemdanen i yesɛan ugur deg tmesliwt",
   "upload_form.description": "Glem-d i yemdaneni yesɛan ugur deg yiẓri",
   "upload_form.edit": "Ẓreg",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Kkes",
   "upload_form.video_description": "Glem-d i yemdanen i yesɛan ugur deg tmesliwt neɣ deg yiẓri",
   "upload_modal.analyzing_picture": "Tasleḍt n tugna tetteddu…",
   "upload_modal.apply": "Snes",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "Aberraɣ arurad ineggez nnig n uqjun amuṭṭis",
   "upload_modal.detect_text": "Sefru-d aḍris seg tugna",
   "upload_modal.edit_media": "Ẓreg taɣwalt",
diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json
index 06d42eac9..d7adf5836 100644
--- a/app/javascript/mastodon/locales/kk.json
+++ b/app/javascript/mastodon/locales/kk.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "Тізімге қосу немесе жою",
   "account.badges.bot": "Бот",
   "account.badges.group": "Group",
@@ -16,7 +15,8 @@
   "account.follow": "Жазылу",
   "account.followers": "Оқырмандар",
   "account.followers.empty": "Әлі ешкім жазылмаған.",
-  "account.follows": "Жазылғандары",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "Ешкімге жазылмапты.",
   "account.follows_you": "Сізге жазылыпты",
   "account.hide_reblogs": "@{name} атты қолданушының әрекеттерін жасыру",
@@ -36,16 +36,14 @@
   "account.requested": "Растауын күтіңіз. Жазылудан бас тарту үшін басыңыз",
   "account.share": "@{name} профилін бөлісу\"",
   "account.show_reblogs": "@{name} бөліскендерін көрсету",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Бұғаттан шығару @{name}",
   "account.unblock_domain": "Бұғаттан шығару {domain}",
   "account.unendorse": "Профильде рекомендемеу",
   "account.unfollow": "Оқымау",
   "account.unmute": "@{name} ескертпелерін қосу",
   "account.unmute_notifications": "@{name} ескертпелерін көрсету",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "Қайтадан көріңіз  {retry_time, time, medium} кейін.",
   "alert.rate_limited.title": "Бағалау шектеулі",
   "alert.unexpected.message": "Бір нәрсе дұрыс болмады.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Авторизация",
   "follow_request.reject": "Қабылдамау",
   "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+  "generic.saved": "Saved",
   "getting_started.developers": "Жасаушылар тобы",
   "getting_started.directory": "Профильдер каталогы",
   "getting_started.documentation": "Құжаттама",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} жазған екен",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Тренд тақырыптар",
   "ui.beforeunload": "Mastodon желісінен шықсаңыз, нобайыңыз сақталмайды.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Жүктеу үшін сүйреп әкеліңіз",
   "upload_button.label": "Медиа қосу (JPEG, PNG, GIF, WebM, MP4, MOV)",
   "upload_error.limit": "Файл жүктеу лимитінен асып кеттіңіз.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Есту қабілеті нашар адамдарға сипаттама беріңіз",
   "upload_form.description": "Көру қабілеті нашар адамдар үшін сипаттаңыз",
   "upload_form.edit": "Түзету",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Өшіру",
   "upload_form.video_description": "Есту немесе көру қабілеті нашар адамдарға сипаттама беріңіз",
   "upload_modal.analyzing_picture": "Суретті анализ жасау…",
   "upload_modal.apply": "Қолдану",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "Щучинск съезіндегі өрт пе? Вагон-үй, аэромобиль һәм ұшақ фюзеляжы цехінен ғой",
   "upload_modal.detect_text": "Суреттен мәтін анықтау",
   "upload_modal.edit_media": "Медиафайлды өңдеу",
diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json
index 67cf5a5c5..43738ba70 100644
--- a/app/javascript/mastodon/locales/kn.json
+++ b/app/javascript/mastodon/locales/kn.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "Add or Remove from lists",
   "account.badges.bot": "Bot",
   "account.badges.group": "Group",
@@ -16,7 +15,8 @@
   "account.follow": "Follow",
   "account.followers": "Followers",
   "account.followers.empty": "No one follows this user yet.",
-  "account.follows": "Follows",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "This user doesn't follow anyone yet.",
   "account.follows_you": "Follows you",
   "account.hide_reblogs": "Hide boosts from @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Awaiting approval",
   "account.share": "Share @{name}'s profile",
   "account.show_reblogs": "Show boosts from @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Unblock @{name}",
   "account.unblock_domain": "Unhide {domain}",
   "account.unendorse": "Don't feature on profile",
   "account.unfollow": "Unfollow",
   "account.unmute": "Unmute @{name}",
   "account.unmute_notifications": "Unmute notifications from @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
   "alert.rate_limited.title": "Rate limited",
   "alert.unexpected.message": "An unexpected error occurred.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Authorize",
   "follow_request.reject": "Reject",
   "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+  "generic.saved": "Saved",
   "getting_started.developers": "Developers",
   "getting_started.directory": "Profile directory",
   "getting_started.documentation": "Documentation",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Trending now",
   "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Drag & drop to upload",
   "upload_button.label": "Add images, a video or an audio file",
   "upload_error.limit": "File upload limit exceeded.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Describe for people with hearing loss",
   "upload_form.description": "Describe for the visually impaired",
   "upload_form.edit": "Edit",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Delete",
   "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
   "upload_modal.analyzing_picture": "Analyzing picture…",
   "upload_modal.apply": "Apply",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
   "upload_modal.detect_text": "Detect text from picture",
   "upload_modal.edit_media": "Edit media",
diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json
index 6949ea5b0..78209fb0e 100644
--- a/app/javascript/mastodon/locales/ko.json
+++ b/app/javascript/mastodon/locales/ko.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "@{name} 에 대한 노트",
   "account.add_or_remove_from_list": "리스트에 추가 혹은 삭제",
   "account.badges.bot": "봇",
   "account.badges.group": "그룹",
@@ -16,7 +15,8 @@
   "account.follow": "팔로우",
   "account.followers": "팔로워",
   "account.followers.empty": "아직 아무도 이 유저를 팔로우하고 있지 않습니다.",
-  "account.follows": "팔로우",
+  "account.followers_counter": "{counter} 팔로워",
+  "account.following_counter": "{counter} 팔로잉",
   "account.follows.empty": "이 유저는 아직 아무도 팔로우하고 있지 않습니다.",
   "account.follows_you": "날 팔로우합니다",
   "account.hide_reblogs": "@{name}의 부스트를 숨기기",
@@ -36,16 +36,14 @@
   "account.requested": "승인 대기 중. 클릭해서 취소하기",
   "account.share": "@{name}의 프로파일 공유",
   "account.show_reblogs": "@{name}의 부스트 보기",
+  "account.statuses_counter": "{counter} 툿",
   "account.unblock": "차단 해제",
   "account.unblock_domain": "{domain} 숨김 해제",
   "account.unendorse": "프로필에 나타내지 않기",
   "account.unfollow": "팔로우 해제",
   "account.unmute": "뮤트 해제",
   "account.unmute_notifications": "@{name}의 알림 뮤트 해제",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "작성된 댓글이 없음",
   "alert.rate_limited.message": "{retry_time, time, medium}에 다시 시도해 주세요.",
   "alert.rate_limited.title": "빈도 제한",
   "alert.unexpected.message": "예측하지 못한 에러가 발생했습니다.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "허가",
   "follow_request.reject": "거부",
   "follow_requests.unlocked_explanation": "당신의 계정이 잠기지 않았다고 할 지라도, {domain}의 스탭은 당신이 이 계정들로부터의 팔로우 요청을 수동으로 확인하길 원한다고 생각했습니다.",
+  "generic.saved": "저장됨",
   "getting_started.developers": "개발자",
   "getting_started.directory": "프로필 책자",
   "getting_started.documentation": "문서",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "팔로워",
   "timeline_hint.resources.follows": "팔로우",
   "timeline_hint.resources.statuses": "이전 툿",
-  "trends.count_by_accounts": "{count} 명의 사람들이 말하고 있습니다",
+  "trends.counter_by_accounts": "{counter} 명이 말하는 중",
   "trends.trending_now": "지금 유행중",
   "ui.beforeunload": "지금 나가면 저장되지 않은 항목을 잃게 됩니다.",
+  "units.short.billion": "{count}십억",
+  "units.short.million": "{count}백만",
+  "units.short.thousand": "{count}천",
   "upload_area.title": "드래그 & 드롭으로 업로드",
   "upload_button.label": "미디어 추가 (JPEG, PNG, GIF, WebM, MP4, MOV)",
   "upload_error.limit": "파일 업로드 제한에 도달했습니다.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "청각 장애인을 위한 설명",
   "upload_form.description": "시각장애인을 위한 설명",
   "upload_form.edit": "편집",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "삭제",
   "upload_form.video_description": "청각, 시각 장애인을 위한 설명",
   "upload_modal.analyzing_picture": "이미지 분석 중…",
   "upload_modal.apply": "적용",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "다람쥐 헌 쳇바퀴 타고파",
   "upload_modal.detect_text": "이미지에서 텍스트 추출",
   "upload_modal.edit_media": "미디어 편집",
diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json
new file mode 100644
index 000000000..36f55e800
--- /dev/null
+++ b/app/javascript/mastodon/locales/ku.json
@@ -0,0 +1,461 @@
+{
+  "account.account_note_header": "Note",
+  "account.add_or_remove_from_list": "Add or Remove from lists",
+  "account.badges.bot": "Bot",
+  "account.badges.group": "Group",
+  "account.block": "Block @{name}",
+  "account.block_domain": "Block domain {domain}",
+  "account.blocked": "Blocked",
+  "account.browse_more_on_origin_server": "Browse more on the original profile",
+  "account.cancel_follow_request": "Cancel follow request",
+  "account.direct": "Direct message @{name}",
+  "account.domain_blocked": "Domain blocked",
+  "account.edit_profile": "Edit profile",
+  "account.endorse": "Feature on profile",
+  "account.follow": "Follow",
+  "account.followers": "Followers",
+  "account.followers.empty": "No one follows this user yet.",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
+  "account.follows.empty": "This user doesn't follow anyone yet.",
+  "account.follows_you": "Follows you",
+  "account.hide_reblogs": "Hide boosts from @{name}",
+  "account.last_status": "Last active",
+  "account.link_verified_on": "Ownership of this link was checked on {date}",
+  "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
+  "account.media": "Media",
+  "account.mention": "Mention @{name}",
+  "account.moved_to": "{name} has moved to:",
+  "account.mute": "Mute @{name}",
+  "account.mute_notifications": "Mute notifications from @{name}",
+  "account.muted": "Muted",
+  "account.never_active": "Never",
+  "account.posts": "Toots",
+  "account.posts_with_replies": "Toots and replies",
+  "account.report": "Report @{name}",
+  "account.requested": "Awaiting approval",
+  "account.share": "Share @{name}'s profile",
+  "account.show_reblogs": "Show boosts from @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
+  "account.unblock": "Unblock @{name}",
+  "account.unblock_domain": "Unblock domain {domain}",
+  "account.unendorse": "Don't feature on profile",
+  "account.unfollow": "Unfollow",
+  "account.unmute": "Unmute @{name}",
+  "account.unmute_notifications": "Unmute notifications from @{name}",
+  "account_note.placeholder": "Click to add a note",
+  "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
+  "alert.rate_limited.title": "Rate limited",
+  "alert.unexpected.message": "An unexpected error occurred.",
+  "alert.unexpected.title": "Oops!",
+  "announcement.announcement": "Announcement",
+  "autosuggest_hashtag.per_week": "{count} per week",
+  "boost_modal.combo": "You can press {combo} to skip this next time",
+  "bundle_column_error.body": "Something went wrong while loading this component.",
+  "bundle_column_error.retry": "Try again",
+  "bundle_column_error.title": "Network error",
+  "bundle_modal_error.close": "Close",
+  "bundle_modal_error.message": "Something went wrong while loading this component.",
+  "bundle_modal_error.retry": "Try again",
+  "column.blocks": "Blocked users",
+  "column.bookmarks": "Bookmarks",
+  "column.community": "Local timeline",
+  "column.direct": "Direct messages",
+  "column.directory": "Browse profiles",
+  "column.domain_blocks": "Blocked domains",
+  "column.favourites": "Favourites",
+  "column.follow_requests": "Follow requests",
+  "column.home": "Home",
+  "column.lists": "Lists",
+  "column.mutes": "Muted users",
+  "column.notifications": "Notifications",
+  "column.pins": "Pinned toot",
+  "column.public": "Federated timeline",
+  "column_back_button.label": "Back",
+  "column_header.hide_settings": "Hide settings",
+  "column_header.moveLeft_settings": "Move column to the left",
+  "column_header.moveRight_settings": "Move column to the right",
+  "column_header.pin": "Pin",
+  "column_header.show_settings": "Show settings",
+  "column_header.unpin": "Unpin",
+  "column_subheading.settings": "Settings",
+  "community.column_settings.local_only": "Local only",
+  "community.column_settings.media_only": "Media only",
+  "community.column_settings.remote_only": "Remote only",
+  "compose_form.direct_message_warning": "This toot will only be sent to all the mentioned users.",
+  "compose_form.direct_message_warning_learn_more": "Learn more",
+  "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.",
+  "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
+  "compose_form.lock_disclaimer.lock": "locked",
+  "compose_form.placeholder": "What is on your mind?",
+  "compose_form.poll.add_option": "Add a choice",
+  "compose_form.poll.duration": "Poll duration",
+  "compose_form.poll.option_placeholder": "Choice {number}",
+  "compose_form.poll.remove_option": "Remove this choice",
+  "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices",
+  "compose_form.poll.switch_to_single": "Change poll to allow for a single choice",
+  "compose_form.publish": "Toot",
+  "compose_form.publish_loud": "{publish}!",
+  "compose_form.sensitive.hide": "Mark media as sensitive",
+  "compose_form.sensitive.marked": "Media is marked as sensitive",
+  "compose_form.sensitive.unmarked": "Media is not marked as sensitive",
+  "compose_form.spoiler.marked": "Text is hidden behind warning",
+  "compose_form.spoiler.unmarked": "Text is not hidden",
+  "compose_form.spoiler_placeholder": "Write your warning here",
+  "confirmation_modal.cancel": "Cancel",
+  "confirmations.block.block_and_report": "Block & Report",
+  "confirmations.block.confirm": "Block",
+  "confirmations.block.message": "Are you sure you want to block {name}?",
+  "confirmations.delete.confirm": "Delete",
+  "confirmations.delete.message": "Are you sure you want to delete this status?",
+  "confirmations.delete_list.confirm": "Delete",
+  "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
+  "confirmations.domain_block.confirm": "Hide entire domain",
+  "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.",
+  "confirmations.logout.confirm": "Log out",
+  "confirmations.logout.message": "Are you sure you want to log out?",
+  "confirmations.mute.confirm": "Mute",
+  "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
+  "confirmations.mute.message": "Are you sure you want to mute {name}?",
+  "confirmations.redraft.confirm": "Delete & redraft",
+  "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.",
+  "confirmations.reply.confirm": "Reply",
+  "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?",
+  "confirmations.unfollow.confirm": "Unfollow",
+  "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
+  "conversation.delete": "Delete conversation",
+  "conversation.mark_as_read": "Mark as read",
+  "conversation.open": "View conversation",
+  "conversation.with": "With {names}",
+  "directory.federated": "From known fediverse",
+  "directory.local": "From {domain} only",
+  "directory.new_arrivals": "New arrivals",
+  "directory.recently_active": "Recently active",
+  "embed.instructions": "Embed this status on your website by copying the code below.",
+  "embed.preview": "Here is what it will look like:",
+  "emoji_button.activity": "Activity",
+  "emoji_button.custom": "Custom",
+  "emoji_button.flags": "Flags",
+  "emoji_button.food": "Food & Drink",
+  "emoji_button.label": "Insert emoji",
+  "emoji_button.nature": "Nature",
+  "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
+  "emoji_button.objects": "Objects",
+  "emoji_button.people": "People",
+  "emoji_button.recent": "Frequently used",
+  "emoji_button.search": "Search...",
+  "emoji_button.search_results": "Search results",
+  "emoji_button.symbols": "Symbols",
+  "emoji_button.travel": "Travel & Places",
+  "empty_column.account_timeline": "No toots here!",
+  "empty_column.account_unavailable": "Profile unavailable",
+  "empty_column.blocks": "You haven't blocked any users yet.",
+  "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.",
+  "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
+  "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
+  "empty_column.domain_blocks": "There are no blocked domains yet.",
+  "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
+  "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.",
+  "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
+  "empty_column.hashtag": "There is nothing in this hashtag yet.",
+  "empty_column.home": "Your home timeline is empty! Visit {public} or use search to get started and meet other users.",
+  "empty_column.home.public_timeline": "the public timeline",
+  "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.",
+  "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
+  "empty_column.mutes": "You haven't muted any users yet.",
+  "empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.",
+  "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other servers to fill it up",
+  "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",
+  "follow_request.authorize": "Authorize",
+  "follow_request.reject": "Reject",
+  "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+  "generic.saved": "Saved",
+  "getting_started.developers": "Developers",
+  "getting_started.directory": "Profile directory",
+  "getting_started.documentation": "Documentation",
+  "getting_started.heading": "Getting started",
+  "getting_started.invite": "Invite people",
+  "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.",
+  "getting_started.security": "Security",
+  "getting_started.terms": "Terms of service",
+  "hashtag.column_header.tag_mode.all": "and {additional}",
+  "hashtag.column_header.tag_mode.any": "or {additional}",
+  "hashtag.column_header.tag_mode.none": "without {additional}",
+  "hashtag.column_settings.select.no_options_message": "No suggestions found",
+  "hashtag.column_settings.select.placeholder": "Enter hashtags…",
+  "hashtag.column_settings.tag_mode.all": "All of these",
+  "hashtag.column_settings.tag_mode.any": "Any of these",
+  "hashtag.column_settings.tag_mode.none": "None of these",
+  "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
+  "home.column_settings.basic": "Basic",
+  "home.column_settings.show_reblogs": "Show boosts",
+  "home.column_settings.show_replies": "Show replies",
+  "home.hide_announcements": "Hide announcements",
+  "home.show_announcements": "Show announcements",
+  "intervals.full.days": "{number, plural, one {# day} other {# days}}",
+  "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
+  "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
+  "introduction.federation.action": "Next",
+  "introduction.federation.federated.headline": "Federated",
+  "introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.",
+  "introduction.federation.home.headline": "Home",
+  "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
+  "introduction.federation.local.headline": "Local",
+  "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
+  "introduction.interactions.action": "Finish toot-orial!",
+  "introduction.interactions.favourite.headline": "Favourite",
+  "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
+  "introduction.interactions.reblog.headline": "Boost",
+  "introduction.interactions.reblog.text": "You can share other people's toots with your followers by boosting them.",
+  "introduction.interactions.reply.headline": "Reply",
+  "introduction.interactions.reply.text": "You can reply to other people's and your own toots, which will chain them together in a conversation.",
+  "introduction.welcome.action": "Let's go!",
+  "introduction.welcome.headline": "First steps",
+  "introduction.welcome.text": "Welcome to the fediverse! In a few moments, you'll be able to broadcast messages and talk to your friends across a wide variety of servers. But this server, {domain}, is special—it hosts your profile, so remember its name.",
+  "keyboard_shortcuts.back": "to navigate back",
+  "keyboard_shortcuts.blocked": "to open blocked users list",
+  "keyboard_shortcuts.boost": "to boost",
+  "keyboard_shortcuts.column": "to focus a status in one of the columns",
+  "keyboard_shortcuts.compose": "to focus the compose textarea",
+  "keyboard_shortcuts.description": "Description",
+  "keyboard_shortcuts.direct": "to open direct messages column",
+  "keyboard_shortcuts.down": "to move down in the list",
+  "keyboard_shortcuts.enter": "to open status",
+  "keyboard_shortcuts.favourite": "to favourite",
+  "keyboard_shortcuts.favourites": "to open favourites list",
+  "keyboard_shortcuts.federated": "to open federated timeline",
+  "keyboard_shortcuts.heading": "Keyboard Shortcuts",
+  "keyboard_shortcuts.home": "to open home timeline",
+  "keyboard_shortcuts.hotkey": "Hotkey",
+  "keyboard_shortcuts.legend": "to display this legend",
+  "keyboard_shortcuts.local": "to open local timeline",
+  "keyboard_shortcuts.mention": "to mention author",
+  "keyboard_shortcuts.muted": "to open muted users list",
+  "keyboard_shortcuts.my_profile": "to open your profile",
+  "keyboard_shortcuts.notifications": "to open notifications column",
+  "keyboard_shortcuts.open_media": "to open media",
+  "keyboard_shortcuts.pinned": "to open pinned toots list",
+  "keyboard_shortcuts.profile": "to open author's profile",
+  "keyboard_shortcuts.reply": "to reply",
+  "keyboard_shortcuts.requests": "to open follow requests list",
+  "keyboard_shortcuts.search": "to focus search",
+  "keyboard_shortcuts.spoilers": "to show/hide CW field",
+  "keyboard_shortcuts.start": "to open \"get started\" column",
+  "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
+  "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
+  "keyboard_shortcuts.toot": "to start a brand new toot",
+  "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
+  "keyboard_shortcuts.up": "to move up in the list",
+  "lightbox.close": "Close",
+  "lightbox.next": "Next",
+  "lightbox.previous": "Previous",
+  "lightbox.view_context": "View context",
+  "lists.account.add": "Add to list",
+  "lists.account.remove": "Remove from list",
+  "lists.delete": "Delete list",
+  "lists.edit": "Edit list",
+  "lists.edit.submit": "Change title",
+  "lists.new.create": "Add list",
+  "lists.new.title_placeholder": "New list title",
+  "lists.search": "Search among people you follow",
+  "lists.subheading": "Your lists",
+  "load_pending": "{count, plural, one {# new item} other {# new items}}",
+  "loading_indicator.label": "Loading...",
+  "media_gallery.toggle_visible": "Hide {number, plural, one {image} other {images}}",
+  "missing_indicator.label": "Not found",
+  "missing_indicator.sublabel": "This resource could not be found",
+  "mute_modal.hide_notifications": "Hide notifications from this user?",
+  "navigation_bar.apps": "Mobile apps",
+  "navigation_bar.blocks": "Blocked users",
+  "navigation_bar.bookmarks": "Bookmarks",
+  "navigation_bar.community_timeline": "Local timeline",
+  "navigation_bar.compose": "Compose new toot",
+  "navigation_bar.direct": "Direct messages",
+  "navigation_bar.discover": "Discover",
+  "navigation_bar.domain_blocks": "Hidden domains",
+  "navigation_bar.edit_profile": "Edit profile",
+  "navigation_bar.favourites": "Favourites",
+  "navigation_bar.filters": "Muted words",
+  "navigation_bar.follow_requests": "Follow requests",
+  "navigation_bar.follows_and_followers": "Follows and followers",
+  "navigation_bar.info": "About this server",
+  "navigation_bar.keyboard_shortcuts": "Hotkeys",
+  "navigation_bar.lists": "Lists",
+  "navigation_bar.logout": "Logout",
+  "navigation_bar.mutes": "Muted users",
+  "navigation_bar.personal": "Personal",
+  "navigation_bar.pins": "Pinned toots",
+  "navigation_bar.preferences": "Preferences",
+  "navigation_bar.public_timeline": "Federated timeline",
+  "navigation_bar.security": "Security",
+  "notification.favourite": "{name} favourited your status",
+  "notification.follow": "{name} followed you",
+  "notification.follow_request": "{name} has requested to follow you",
+  "notification.mention": "{name} mentioned you",
+  "notification.own_poll": "Your poll has ended",
+  "notification.poll": "A poll you have voted in has ended",
+  "notification.reblog": "{name} boosted your status",
+  "notifications.clear": "Clear notifications",
+  "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
+  "notifications.column_settings.alert": "Desktop notifications",
+  "notifications.column_settings.favourite": "Favourites:",
+  "notifications.column_settings.filter_bar.advanced": "Display all categories",
+  "notifications.column_settings.filter_bar.category": "Quick filter bar",
+  "notifications.column_settings.filter_bar.show": "Show",
+  "notifications.column_settings.follow": "New followers:",
+  "notifications.column_settings.follow_request": "New follow requests:",
+  "notifications.column_settings.mention": "Mentions:",
+  "notifications.column_settings.poll": "Poll results:",
+  "notifications.column_settings.push": "Push notifications",
+  "notifications.column_settings.reblog": "Boosts:",
+  "notifications.column_settings.show": "Show in column",
+  "notifications.column_settings.sound": "Play sound",
+  "notifications.filter.all": "All",
+  "notifications.filter.boosts": "Boosts",
+  "notifications.filter.favourites": "Favourites",
+  "notifications.filter.follows": "Follows",
+  "notifications.filter.mentions": "Mentions",
+  "notifications.filter.polls": "Poll results",
+  "notifications.group": "{count} notifications",
+  "poll.closed": "Closed",
+  "poll.refresh": "Refresh",
+  "poll.total_people": "{count, plural, one {# person} other {# people}}",
+  "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
+  "poll.vote": "Vote",
+  "poll.voted": "You voted for this answer",
+  "poll_button.add_poll": "Add a poll",
+  "poll_button.remove_poll": "Remove poll",
+  "privacy.change": "Adjust status privacy",
+  "privacy.direct.long": "Visible for mentioned users only",
+  "privacy.direct.short": "Direct",
+  "privacy.private.long": "Visible for followers only",
+  "privacy.private.short": "Followers-only",
+  "privacy.public.long": "Visible for all, shown in public timelines",
+  "privacy.public.short": "Public",
+  "privacy.unlisted.long": "Visible for all, but not in public timelines",
+  "privacy.unlisted.short": "Unlisted",
+  "refresh": "Refresh",
+  "regeneration_indicator.label": "Loading…",
+  "regeneration_indicator.sublabel": "Your home feed is being prepared!",
+  "relative_time.days": "{number}d",
+  "relative_time.hours": "{number}h",
+  "relative_time.just_now": "now",
+  "relative_time.minutes": "{number}m",
+  "relative_time.seconds": "{number}s",
+  "relative_time.today": "today",
+  "reply_indicator.cancel": "Cancel",
+  "report.forward": "Forward to {target}",
+  "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
+  "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:",
+  "report.placeholder": "Additional comments",
+  "report.submit": "Submit",
+  "report.target": "Report {target}",
+  "search.placeholder": "Search",
+  "search_popout.search_format": "Advanced search format",
+  "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
+  "search_popout.tips.hashtag": "hashtag",
+  "search_popout.tips.status": "status",
+  "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
+  "search_popout.tips.user": "user",
+  "search_results.accounts": "People",
+  "search_results.hashtags": "Hashtags",
+  "search_results.statuses": "Toots",
+  "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.",
+  "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
+  "status.admin_account": "Open moderation interface for @{name}",
+  "status.admin_status": "Open this status in the moderation interface",
+  "status.block": "Block @{name}",
+  "status.bookmark": "Bookmark",
+  "status.cancel_reblog_private": "Unboost",
+  "status.cannot_reblog": "This post cannot be boosted",
+  "status.copy": "Copy link to status",
+  "status.delete": "Delete",
+  "status.detailed_status": "Detailed conversation view",
+  "status.direct": "Direct message @{name}",
+  "status.embed": "Embed",
+  "status.favourite": "Favourite",
+  "status.filtered": "Filtered",
+  "status.load_more": "Load more",
+  "status.media_hidden": "Media hidden",
+  "status.mention": "Mention @{name}",
+  "status.more": "More",
+  "status.mute": "Mute @{name}",
+  "status.mute_conversation": "Mute conversation",
+  "status.open": "Expand this status",
+  "status.pin": "Pin on profile",
+  "status.pinned": "Pinned toot",
+  "status.read_more": "Read more",
+  "status.reblog": "Boost",
+  "status.reblog_private": "Boost to original audience",
+  "status.reblogged_by": "{name} boosted",
+  "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
+  "status.redraft": "Delete & re-draft",
+  "status.remove_bookmark": "Remove bookmark",
+  "status.reply": "Reply",
+  "status.replyAll": "Reply to thread",
+  "status.report": "Report @{name}",
+  "status.sensitive_warning": "Sensitive content",
+  "status.share": "Share",
+  "status.show_less": "Show less",
+  "status.show_less_all": "Show less for all",
+  "status.show_more": "Show more",
+  "status.show_more_all": "Show more for all",
+  "status.show_thread": "Show thread",
+  "status.uncached_media_warning": "Not available",
+  "status.unmute_conversation": "Unmute conversation",
+  "status.unpin": "Unpin from profile",
+  "suggestions.dismiss": "Dismiss suggestion",
+  "suggestions.header": "You might be interested in…",
+  "tabs_bar.federated_timeline": "Federated",
+  "tabs_bar.home": "Home",
+  "tabs_bar.local_timeline": "Local",
+  "tabs_bar.notifications": "Notifications",
+  "tabs_bar.search": "Search",
+  "time_remaining.days": "{number, plural, one {# day} other {# days}} left",
+  "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
+  "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
+  "time_remaining.moments": "Moments remaining",
+  "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
+  "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+  "timeline_hint.resources.followers": "Followers",
+  "timeline_hint.resources.follows": "Follows",
+  "timeline_hint.resources.statuses": "Older toots",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
+  "trends.trending_now": "Trending now",
+  "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
+  "upload_area.title": "Drag & drop to upload",
+  "upload_button.label": "Add images, a video or an audio file",
+  "upload_error.limit": "File upload limit exceeded.",
+  "upload_error.poll": "File upload not allowed with polls.",
+  "upload_form.audio_description": "Describe for people with hearing loss",
+  "upload_form.description": "Describe for the visually impaired",
+  "upload_form.edit": "Edit",
+  "upload_form.thumbnail": "Change thumbnail",
+  "upload_form.undo": "Delete",
+  "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
+  "upload_modal.analyzing_picture": "Analyzing picture…",
+  "upload_modal.apply": "Apply",
+  "upload_modal.choose_image": "Choose image",
+  "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
+  "upload_modal.detect_text": "Detect text from picture",
+  "upload_modal.edit_media": "Edit media",
+  "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
+  "upload_modal.preview_label": "Preview ({ratio})",
+  "upload_progress.label": "Uploading…",
+  "video.close": "Close video",
+  "video.download": "Download file",
+  "video.exit_fullscreen": "Exit full screen",
+  "video.expand": "Expand video",
+  "video.fullscreen": "Full screen",
+  "video.hide": "Hide video",
+  "video.mute": "Mute sound",
+  "video.pause": "Pause",
+  "video.play": "Play",
+  "video.unmute": "Unmute sound"
+}
diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json
index 67cf5a5c5..43738ba70 100644
--- a/app/javascript/mastodon/locales/lt.json
+++ b/app/javascript/mastodon/locales/lt.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "Add or Remove from lists",
   "account.badges.bot": "Bot",
   "account.badges.group": "Group",
@@ -16,7 +15,8 @@
   "account.follow": "Follow",
   "account.followers": "Followers",
   "account.followers.empty": "No one follows this user yet.",
-  "account.follows": "Follows",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "This user doesn't follow anyone yet.",
   "account.follows_you": "Follows you",
   "account.hide_reblogs": "Hide boosts from @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Awaiting approval",
   "account.share": "Share @{name}'s profile",
   "account.show_reblogs": "Show boosts from @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Unblock @{name}",
   "account.unblock_domain": "Unhide {domain}",
   "account.unendorse": "Don't feature on profile",
   "account.unfollow": "Unfollow",
   "account.unmute": "Unmute @{name}",
   "account.unmute_notifications": "Unmute notifications from @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
   "alert.rate_limited.title": "Rate limited",
   "alert.unexpected.message": "An unexpected error occurred.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Authorize",
   "follow_request.reject": "Reject",
   "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+  "generic.saved": "Saved",
   "getting_started.developers": "Developers",
   "getting_started.directory": "Profile directory",
   "getting_started.documentation": "Documentation",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Trending now",
   "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Drag & drop to upload",
   "upload_button.label": "Add images, a video or an audio file",
   "upload_error.limit": "File upload limit exceeded.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Describe for people with hearing loss",
   "upload_form.description": "Describe for the visually impaired",
   "upload_form.edit": "Edit",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Delete",
   "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
   "upload_modal.analyzing_picture": "Analyzing picture…",
   "upload_modal.apply": "Apply",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
   "upload_modal.detect_text": "Detect text from picture",
   "upload_modal.edit_media": "Edit media",
diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json
index 6a17a4a0c..dd8c4eecf 100644
--- a/app/javascript/mastodon/locales/lv.json
+++ b/app/javascript/mastodon/locales/lv.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "Pievienot vai noņemt no saraksta",
   "account.badges.bot": "Bots",
   "account.badges.group": "Group",
@@ -16,7 +15,8 @@
   "account.follow": "Sekot",
   "account.followers": "Sekotāji",
   "account.followers.empty": "Šim lietotājam nav sekotāju.",
-  "account.follows": "Seko",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "Šis lietotājs pagaidām nevienam neseko.",
   "account.follows_you": "Seko tev",
   "account.hide_reblogs": "Paslēpt paceltos ierakstus no lietotāja @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Gaidām apstiprinājumu. Nospied lai atceltu sekošanas pieparasījumu",
   "account.share": "Dalīties ar lietotāja @{name}'s profilu",
   "account.show_reblogs": "Parādīt lietotāja @{name} paceltos ierakstus",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Atbloķēt lietotāju @{name}",
   "account.unblock_domain": "Atbloķēt domēnu {domain}",
   "account.unendorse": "Neizcelt profilā",
   "account.unfollow": "Nesekot",
   "account.unmute": "Noņemt apklusinājumu no lietotāja @{name}",
   "account.unmute_notifications": "Rādīt paziņojumus no lietotāja @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
   "alert.rate_limited.title": "Rate limited",
   "alert.unexpected.message": "Negaidīta kļūda.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Autorizēt",
   "follow_request.reject": "Noraidīt",
   "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+  "generic.saved": "Saved",
   "getting_started.developers": "Developers",
   "getting_started.directory": "Profile directory",
   "getting_started.documentation": "Documentation",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Trending now",
   "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Drag & drop to upload",
   "upload_button.label": "Add images, a video or an audio file",
   "upload_error.limit": "File upload limit exceeded.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Describe for people with hearing loss",
   "upload_form.description": "Describe for the visually impaired",
   "upload_form.edit": "Edit",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Delete",
   "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
   "upload_modal.analyzing_picture": "Analyzing picture…",
   "upload_modal.apply": "Apply",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
   "upload_modal.detect_text": "Detect text from picture",
   "upload_modal.edit_media": "Edit media",
diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json
index 65d546795..7e9c0dc42 100644
--- a/app/javascript/mastodon/locales/mk.json
+++ b/app/javascript/mastodon/locales/mk.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "Додади или одстрани од листа",
   "account.badges.bot": "Бот",
   "account.badges.group": "Group",
@@ -16,7 +15,8 @@
   "account.follow": "Следи",
   "account.followers": "Следбеници",
   "account.followers.empty": "Никој не го следи овој корисник сеуште.",
-  "account.follows": "Следи",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "Корисникот не следи никој сеуште.",
   "account.follows_you": "Те следи тебе",
   "account.hide_reblogs": "Сокриј буст од @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Се чека одобрување. Кликни за да одкажиш барање за следење",
   "account.share": "Сподели @{name} профил",
   "account.show_reblogs": "Прикажи бустови од @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Одблокирај @{name}",
   "account.unblock_domain": "Прикажи {domain}",
   "account.unendorse": "Не прикажувај на профил",
   "account.unfollow": "Одследи",
   "account.unmute": "Зачути го @{name}",
   "account.unmute_notifications": "Исклучи известувања од @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "Обидете се повторно после {retry_time, time, medium}.",
   "alert.rate_limited.title": "Rate limited",
   "alert.unexpected.message": "Неочекувана грешка.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Одобри",
   "follow_request.reject": "Одбиј",
   "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+  "generic.saved": "Saved",
   "getting_started.developers": "Програмери",
   "getting_started.directory": "Профил директориум",
   "getting_started.documentation": "Документација",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Trending now",
   "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Drag & drop to upload",
   "upload_button.label": "Add images, a video or an audio file",
   "upload_error.limit": "File upload limit exceeded.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Describe for people with hearing loss",
   "upload_form.description": "Describe for the visually impaired",
   "upload_form.edit": "Edit",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Delete",
   "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
   "upload_modal.analyzing_picture": "Analyzing picture…",
   "upload_modal.apply": "Apply",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
   "upload_modal.detect_text": "Detect text from picture",
   "upload_modal.edit_media": "Edit media",
diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json
index 699dd91cb..e573b4784 100644
--- a/app/javascript/mastodon/locales/ml.json
+++ b/app/javascript/mastodon/locales/ml.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "പട്ടികയിൽ ചേർക്കുകയോ അല്ലെങ്കിൽ മാറ്റുകയോ ചെയ്യുക",
   "account.badges.bot": "റോബോട്ട്",
   "account.badges.group": "Group",
@@ -16,7 +15,8 @@
   "account.follow": "പിന്തുടരുക",
   "account.followers": "പിന്തുടരുന്നവർ",
   "account.followers.empty": "ഈ ഉപയോക്താവിനെ ആരും ഇതുവരെ പിന്തുടരുന്നില്ല.",
-  "account.follows": "പിന്തുടരുന്നു",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "ഈ ഉപയോക്താവ് ആരേയും ഇതുവരെ പിന്തുടരുന്നില്ല.",
   "account.follows_you": "നിങ്ങളെ പിന്തുടരുന്നു",
   "account.hide_reblogs": "@{name} ബൂസ്റ്റ് ചെയ്തവ മറയ്കുക",
@@ -36,16 +36,14 @@
   "account.requested": "അനുവാദത്തിനായി കാത്തിരിക്കുന്നു. പിന്തുടരാനുള്ള അപേക്ഷ റദ്ദാക്കുവാൻ ഞെക്കുക",
   "account.share": "@{name} ന്റെ പ്രൊഫൈൽ പങ്കുവെക്കുക",
   "account.show_reblogs": "@{name} ൽ നിന്നുള്ള ബൂസ്റ്റുകൾ കാണിക്കുക",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "ബ്ലോക്ക് മാറ്റുക @{name}",
   "account.unblock_domain": "{domain} വെളിപ്പെടുത്തുക",
   "account.unendorse": "പ്രൊഫൈലിൽ പ്രകടമാക്കാതിരിക്കുക",
   "account.unfollow": "പിന്തുടരുന്നത് നിര്‍ത്തുക",
   "account.unmute": "നിശ്ശബ്ദമാക്കുന്നത് നിർത്തുക @{name}",
   "account.unmute_notifications": "@{name} യിൽ നിന്നുള്ള അറിയിപ്പുകൾ പ്രസിദ്ധപ്പെടുത്തുക",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "{retry_time, time, medium} നു ശേഷം വീണ്ടും ശ്രമിക്കുക.",
   "alert.rate_limited.title": "തോത് പരിമിതപ്പെടുത്തിയിരിക്കുന്നു",
   "alert.unexpected.message": "അപ്രതീക്ഷിതമായി എന്തോ സംഭവിച്ചു.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "ചുമതലപ്പെടുത്തുക",
   "follow_request.reject": "നിരസിക്കുക",
   "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+  "generic.saved": "Saved",
   "getting_started.developers": "വികസിപ്പിക്കുന്നവർ",
   "getting_started.directory": "രൂപരേഖ നാമഗൃഹസൂചി",
   "getting_started.documentation": "രേഖാ സമാഹരണം",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Trending now",
   "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Drag & drop to upload",
   "upload_button.label": "Add images, a video or an audio file",
   "upload_error.limit": "File upload limit exceeded.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Describe for people with hearing loss",
   "upload_form.description": "Describe for the visually impaired",
   "upload_form.edit": "Edit",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Delete",
   "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
   "upload_modal.analyzing_picture": "Analyzing picture…",
   "upload_modal.apply": "Apply",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
   "upload_modal.detect_text": "Detect text from picture",
   "upload_modal.edit_media": "Edit media",
diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json
index 5aaa6b314..a56d2544a 100644
--- a/app/javascript/mastodon/locales/mr.json
+++ b/app/javascript/mastodon/locales/mr.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "यादीत घाला किंवा यादीतून काढून टाका",
   "account.badges.bot": "स्वयंचलित खाते",
   "account.badges.group": "Group",
@@ -16,7 +15,8 @@
   "account.follow": "अनुयायी व्हा",
   "account.followers": "अनुयायी",
   "account.followers.empty": "ह्या वापरकर्त्याचा आतापर्यंत कोणी अनुयायी नाही.",
-  "account.follows": "अनुयायी आहे",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "हा वापरकर्ता अजूनपर्यंत कोणाचा अनुयायी नाही.",
   "account.follows_you": "तुमचा अनुयायी आहे",
   "account.hide_reblogs": "@{name} पासून सर्व बूस्ट लपवा",
@@ -36,16 +36,14 @@
   "account.requested": "Awaiting approval",
   "account.share": "Share @{name}'s profile",
   "account.show_reblogs": "{name}चे सर्व बुस्ट्स दाखवा",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "@{name} ला ब्लॉक करा",
   "account.unblock_domain": "उघड करा {domain}",
   "account.unendorse": "Don't feature on profile",
   "account.unfollow": "अनुयायी असणे थांबवा",
   "account.unmute": "Unmute @{name}",
   "account.unmute_notifications": "Unmute notifications from @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
   "alert.rate_limited.title": "Rate limited",
   "alert.unexpected.message": "An unexpected error occurred.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Authorize",
   "follow_request.reject": "Reject",
   "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+  "generic.saved": "Saved",
   "getting_started.developers": "Developers",
   "getting_started.directory": "Profile directory",
   "getting_started.documentation": "Documentation",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Trending now",
   "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Drag & drop to upload",
   "upload_button.label": "Add images, a video or an audio file",
   "upload_error.limit": "File upload limit exceeded.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Describe for people with hearing loss",
   "upload_form.description": "Describe for the visually impaired",
   "upload_form.edit": "Edit",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Delete",
   "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
   "upload_modal.analyzing_picture": "Analyzing picture…",
   "upload_modal.apply": "Apply",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
   "upload_modal.detect_text": "Detect text from picture",
   "upload_modal.edit_media": "Edit media",
diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json
index fb49cd140..a19483014 100644
--- a/app/javascript/mastodon/locales/ms.json
+++ b/app/javascript/mastodon/locales/ms.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "Add or Remove from lists",
   "account.badges.bot": "Bot",
   "account.badges.group": "Group",
@@ -16,7 +15,8 @@
   "account.follow": "Follow",
   "account.followers": "Followers",
   "account.followers.empty": "No one follows this user yet.",
-  "account.follows": "Follows",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "This user doesn't follow anyone yet.",
   "account.follows_you": "Follows you",
   "account.hide_reblogs": "Hide boosts from @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Awaiting approval",
   "account.share": "Share @{name}'s profile",
   "account.show_reblogs": "Show boosts from @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Unblock @{name}",
   "account.unblock_domain": "Unhide {domain}",
   "account.unendorse": "Don't feature on profile",
   "account.unfollow": "Unfollow",
   "account.unmute": "Unmute @{name}",
   "account.unmute_notifications": "Unmute notifications from @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
   "alert.rate_limited.title": "Rate limited",
   "alert.unexpected.message": "An unexpected error occurred.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Authorize",
   "follow_request.reject": "Reject",
   "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+  "generic.saved": "Saved",
   "getting_started.developers": "Developers",
   "getting_started.directory": "Profile directory",
   "getting_started.documentation": "Documentation",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Trending now",
   "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Drag & drop to upload",
   "upload_button.label": "Add images, a video or an audio file",
   "upload_error.limit": "File upload limit exceeded.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Describe for people with hearing loss",
   "upload_form.description": "Describe for the visually impaired",
   "upload_form.edit": "Edit",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Delete",
   "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
   "upload_modal.analyzing_picture": "Analyzing picture…",
   "upload_modal.apply": "Apply",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
   "upload_modal.detect_text": "Detect text from picture",
   "upload_modal.edit_media": "Edit media",
diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json
index 465171222..ad10bb63c 100644
--- a/app/javascript/mastodon/locales/nl.json
+++ b/app/javascript/mastodon/locales/nl.json
@@ -1,22 +1,22 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Opmerking",
   "account.add_or_remove_from_list": "Toevoegen of verwijderen vanuit lijsten",
   "account.badges.bot": "Bot",
   "account.badges.group": "Groep",
   "account.block": "@{name} blokkeren",
   "account.block_domain": "Alles van {domain} verbergen",
   "account.blocked": "Geblokkeerd",
-  "account.browse_more_on_origin_server": "Blader door het originele profiel",
+  "account.browse_more_on_origin_server": "Meer op het originele profiel bekijken",
   "account.cancel_follow_request": "Volgverzoek annuleren",
   "account.direct": "@{name} een direct bericht sturen",
-  "account.domain_blocked": "Domein verborgen",
+  "account.domain_blocked": "Server verborgen",
   "account.edit_profile": "Profiel bewerken",
   "account.endorse": "Op profiel weergeven",
   "account.follow": "Volgen",
   "account.followers": "Volgers",
   "account.followers.empty": "Niemand volgt nog deze gebruiker.",
-  "account.follows": "Volgend",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "Deze gebruiker volgt nog niemand.",
   "account.follows_you": "Volgt jou",
   "account.hide_reblogs": "Verberg boosts van @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Wacht op goedkeuring. Klik om het volgverzoek te annuleren",
   "account.share": "Profiel van @{name} delen",
   "account.show_reblogs": "Toon boosts van @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "@{name} deblokkeren",
   "account.unblock_domain": "{domain} niet langer verbergen",
   "account.unendorse": "Niet op profiel weergeven",
   "account.unfollow": "Ontvolgen",
   "account.unmute": "@{name} niet langer negeren",
   "account.unmute_notifications": "@{name} meldingen niet langer negeren",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Klik om een opmerking toe te voegen",
   "alert.rate_limited.message": "Probeer het nog een keer na {retry_time, time, medium}.",
   "alert.rate_limited.title": "Beperkt te gebruiken",
   "alert.unexpected.message": "Er deed zich een onverwachte fout voor",
@@ -83,7 +81,7 @@
   "column_subheading.settings": "Instellingen",
   "community.column_settings.local_only": "Alleen lokaal",
   "community.column_settings.media_only": "Alleen media",
-  "community.column_settings.remote_only": "Alleen op afstand",
+  "community.column_settings.remote_only": "Alleen andere servers",
   "compose_form.direct_message_warning": "Deze toot wordt alleen naar vermelde gebruikers verstuurd. Echter, de beheerders en moderatoren van jouw en de ontvangende server(s) kunnen dit bericht mogelijk wel bekijken.",
   "compose_form.direct_message_warning_learn_more": "Meer leren",
   "compose_form.hashtag_warning": "Deze toot valt niet onder een hashtag te bekijken, omdat deze niet op openbare tijdlijnen wordt getoond. Alleen openbare toots kunnen via hashtags gevonden worden.",
@@ -120,7 +118,7 @@
   "confirmations.mute.explanation": "Dit verbergt toots van hen en toots waar hen in wordt vermeld, maar hen kan nog steeds jouw toots bekijken en jou volgen.",
   "confirmations.mute.message": "Weet je het zeker dat je {name} wilt negeren?",
   "confirmations.redraft.confirm": "Verwijderen en herschrijven",
-  "confirmations.redraft.message": "Weet je zeker dat je deze toot wilt verwijderen en herschrijven? Je verliest wel de boosts en favorieten, en reacties op de originele toot zitten niet meer aan de nieuwe toot vast.",
+  "confirmations.redraft.message": "Weet je zeker dat je deze toot wilt verwijderen en herschrijven? Je verliest wel de boosts en favorieten, en de reacties op de originele toot zitten niet meer aan de nieuwe toot vast.",
   "confirmations.reply.confirm": "Reageren",
   "confirmations.reply.message": "Door nu te reageren overschrijf je de toot die je op dit moment aan het schrijven bent. Weet je zeker dat je verder wil gaan?",
   "confirmations.unfollow.confirm": "Ontvolgen",
@@ -162,7 +160,7 @@
   "empty_column.hashtag": "Er is nog niks te vinden onder deze hashtag.",
   "empty_column.home": "Jij volgt nog niemand. Bezoek {public} of gebruik het zoekvenster om andere mensen te ontmoeten.",
   "empty_column.home.public_timeline": "de globale tijdlijn",
-  "empty_column.list": "Er is nog niks in deze lijst. Wanneer lijstleden nieuwe toots publiceren, zijn deze hier te zien.",
+  "empty_column.list": "Er is nog niks te zien in deze lijst. Wanneer lijstleden nieuwe toots publiceren, zijn deze hier te zien.",
   "empty_column.lists": "Jij hebt nog enkele lijst. Wanneer je er eentje hebt aangemaakt, valt deze hier te zien.",
   "empty_column.mutes": "Jij hebt nog geen gebruikers genegeerd.",
   "empty_column.notifications": "Je hebt nog geen meldingen. Begin met iemand een gesprek.",
@@ -173,7 +171,8 @@
   "errors.unexpected_crash.report_issue": "Technisch probleem melden",
   "follow_request.authorize": "Goedkeuren",
   "follow_request.reject": "Afkeuren",
-  "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+  "follow_requests.unlocked_explanation": "Ook al is jouw account niet besloten, de medewerkers van {domain} denken dat jij misschien de volgende volgverzoeken handmatig wil controleren.",
+  "generic.saved": "Opgeslagen",
   "getting_started.developers": "Ontwikkelaars",
   "getting_started.directory": "Gebruikersgids",
   "getting_started.documentation": "Documentatie",
@@ -224,7 +223,7 @@
   "keyboard_shortcuts.description": "Omschrijving",
   "keyboard_shortcuts.direct": "om jouw directe berichten te tonen",
   "keyboard_shortcuts.down": "om naar beneden door de lijst te bewegen",
-  "keyboard_shortcuts.enter": "om uitgebreide toot te tonen",
+  "keyboard_shortcuts.enter": "om de toot volledig te tonen",
   "keyboard_shortcuts.favourite": "om aan jouw favorieten toe te voegen",
   "keyboard_shortcuts.favourites": "om jouw lijst met favorieten te tonen",
   "keyboard_shortcuts.federated": "om de globale tijdlijn te tonen",
@@ -243,9 +242,9 @@
   "keyboard_shortcuts.reply": "om te reageren",
   "keyboard_shortcuts.requests": "om jouw volgverzoeken te tonen",
   "keyboard_shortcuts.search": "om het zoekvak te focussen",
-  "keyboard_shortcuts.spoilers": "to show/hide CW field",
+  "keyboard_shortcuts.spoilers": "om het waarschuwingstekstveld (CW) te tonen/verbergen",
   "keyboard_shortcuts.start": "om de \"Aan de slag\"-kolom te tonen",
-  "keyboard_shortcuts.toggle_hidden": "om tekst achter een waarschuwing (CW) te tonen/verbergen",
+  "keyboard_shortcuts.toggle_hidden": "om een waarschuwingstekst (CW) te tonen/verbergen",
   "keyboard_shortcuts.toggle_sensitivity": "om media te tonen/verbergen",
   "keyboard_shortcuts.toot": "om een nieuwe toot te starten",
   "keyboard_shortcuts.unfocus": "om het tekst- en zoekvak te ontfocussen",
@@ -329,7 +328,7 @@
   "poll.voted": "Je hebt hier op gestemd",
   "poll_button.add_poll": "Poll toevoegen",
   "poll_button.remove_poll": "Poll verwijderen",
-  "privacy.change": "Zichtbaarheid toot aanpassen",
+  "privacy.change": "Zichtbaarheid van toot aanpassen",
   "privacy.direct.long": "Alleen aan vermelde gebruikers tonen",
   "privacy.direct.short": "Direct",
   "privacy.private.long": "Alleen aan volgers tonen",
@@ -356,7 +355,7 @@
   "report.target": "Rapporteer {target}",
   "search.placeholder": "Zoeken",
   "search_popout.search_format": "Geavanceerd zoeken",
-  "search_popout.tips.full_text": "Gebruik gewone tekst om te zoeken in jouw toots, gebooste toots, favorieten en in toots waarin jij bent vermeldt, en tevens naar gebruikersnamen, weergavenamen en hashtags.",
+  "search_popout.tips.full_text": "Gebruik gewone tekst om te zoeken in jouw toots, gebooste toots, favorieten en in toots waarin je bent vermeldt, en tevens naar gebruikersnamen, weergavenamen en hashtags.",
   "search_popout.tips.hashtag": "hashtag",
   "search_popout.tips.status": "toot",
   "search_popout.tips.text": "Gebruik gewone tekst om te zoeken op weergavenamen, gebruikersnamen en hashtags",
@@ -385,7 +384,7 @@
   "status.more": "Meer",
   "status.mute": "@{name} negeren",
   "status.mute_conversation": "Negeer gesprek",
-  "status.open": "Uitgebreide toot tonen",
+  "status.open": "Volledige toot tonen",
   "status.pin": "Aan profielpagina vastmaken",
   "status.pinned": "Vastgemaakte toot",
   "status.read_more": "Meer lezen",
@@ -420,24 +419,29 @@
   "time_remaining.minutes": "{number, plural, one {# minuut} other {# minuten}} te gaan",
   "time_remaining.moments": "Nog enkele ogenblikken resterend",
   "time_remaining.seconds": "{number, plural, one {# seconde} other {# seconden}} te gaan",
-  "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
-  "timeline_hint.resources.followers": "Followers",
-  "timeline_hint.resources.follows": "Follows",
-  "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {persoon praat} other {mensen praten}} hierover",
+  "timeline_hint.remote_resource_not_displayed": "{resource} van andere servers worden niet getoond.",
+  "timeline_hint.resources.followers": "Volgers",
+  "timeline_hint.resources.follows": "Volgend",
+  "timeline_hint.resources.statuses": "Oudere toots",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Trends",
   "ui.beforeunload": "Je concept zal verloren gaan als je Mastodon verlaat.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Hiernaar toe slepen om te uploaden",
-  "upload_button.label": "Media toevoegen ({formats})",
+  "upload_button.label": "Afbeeldingen, een video- of een geluidsbestand toevoegen",
   "upload_error.limit": "Uploadlimiet van bestand overschreden.",
   "upload_error.poll": "Het uploaden van bestanden is in polls niet toegestaan.",
   "upload_form.audio_description": "Omschrijf dit voor mensen met een auditieve beperking",
   "upload_form.description": "Omschrijf dit voor mensen met een visuele beperking",
   "upload_form.edit": "Bewerken",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Verwijderen",
   "upload_form.video_description": "Omschrijf dit voor mensen met een auditieve of visuele beperking",
   "upload_modal.analyzing_picture": "Afbeelding analyseren…",
   "upload_modal.apply": "Toepassen",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
   "upload_modal.detect_text": "Tekst in een afbeelding detecteren",
   "upload_modal.edit_media": "Media bewerken",
diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json
index 26c337aab..ed151565d 100644
--- a/app/javascript/mastodon/locales/nn.json
+++ b/app/javascript/mastodon/locales/nn.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "Legg til eller tak vekk frå listene",
   "account.badges.bot": "Robot",
   "account.badges.group": "Gruppe",
@@ -16,7 +15,8 @@
   "account.follow": "Fylg",
   "account.followers": "Fylgjarar",
   "account.followers.empty": "Ingen fylgjer denne brukaren enno.",
-  "account.follows": "Fylgjer",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "Denne brukaren fylgjer ikkje nokon enno.",
   "account.follows_you": "Fylgjer deg",
   "account.hide_reblogs": "Gøym fremhevingar frå @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Ventar på samtykke. Klikk for å avbryta fylgjeførespurnaden",
   "account.share": "Del @{name} sin profil",
   "account.show_reblogs": "Vis framhevingar frå @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Slutt å blokera @{name}",
   "account.unblock_domain": "Vis {domain}",
   "account.unendorse": "Ikkje framhev på profil",
   "account.unfollow": "Slutt å fylgja",
   "account.unmute": "Av-demp @{name}",
   "account.unmute_notifications": "Vis varsel frå @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "Ver venleg å prøva igjen etter {retry_time, time, medium}.",
   "alert.rate_limited.title": "Begrensa rate",
   "alert.unexpected.message": "Eit uventa problem oppstod.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Autoriser",
   "follow_request.reject": "Avvis",
   "follow_requests.unlocked_explanation": "Selv om kontoen din ikke er låst, tror {domain} ansatte at du kanskje vil gjennomgå forespørsler fra disse kontoene manuelt.",
+  "generic.saved": "Saved",
   "getting_started.developers": "Utviklarar",
   "getting_started.directory": "Profilkatalog",
   "getting_started.documentation": "Dokumentasjon",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {folk}} snakkar",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Populært no",
   "ui.beforeunload": "Kladden din forsvinn om du forlèt Mastodon no.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Drag & slepp for å lasta opp",
   "upload_button.label": "Legg til medium ({formats})",
   "upload_error.limit": "Du har gått over opplastingsgrensa.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Grei ut for folk med nedsett høyrsel",
   "upload_form.description": "Skildr for synshemja",
   "upload_form.edit": "Rediger",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Slett",
   "upload_form.video_description": "Greit ut for folk med nedsett høyrsel eller syn",
   "upload_modal.analyzing_picture": "Analyserer bilete…",
   "upload_modal.apply": "Bruk",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "Ein rask brun rev hoppar over den late hunden",
   "upload_modal.detect_text": "Gjenkjenn tekst i biletet",
   "upload_modal.edit_media": "Rediger medium",
diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json
index 85715c7bf..7ddfea5bc 100644
--- a/app/javascript/mastodon/locales/no.json
+++ b/app/javascript/mastodon/locales/no.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "Legg til eller fjern fra lister",
   "account.badges.bot": "Bot",
   "account.badges.group": "Gruppe",
@@ -16,7 +15,8 @@
   "account.follow": "Følg",
   "account.followers": "Følgere",
   "account.followers.empty": "Ingen følger denne brukeren ennå.",
-  "account.follows": "Følger",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "Denne brukeren følger ikke noen enda.",
   "account.follows_you": "Følger deg",
   "account.hide_reblogs": "Skjul fremhevinger fra @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Venter på godkjennelse",
   "account.share": "Del @{name}s profil",
   "account.show_reblogs": "Vis boosts fra @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Avblokker @{name}",
   "account.unblock_domain": "Vis {domain}",
   "account.unendorse": "Ikke vis frem på profilen",
   "account.unfollow": "Avfølg",
   "account.unmute": "Avdemp @{name}",
   "account.unmute_notifications": "Vis varsler fra @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "Vennligst prøv igjen etter kl. {retry_time, time, medium}.",
   "alert.rate_limited.title": "Hastighetsbegrenset",
   "alert.unexpected.message": "En uventet feil oppstod.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Autorisér",
   "follow_request.reject": "Avvis",
   "follow_requests.unlocked_explanation": "Selv om kontoen din ikke er låst, tror {domain} ansatte at du kanskje vil gjennomgå forespørsler fra disse kontoene manuelt.",
+  "generic.saved": "Saved",
   "getting_started.developers": "Utviklere",
   "getting_started.directory": "Profilmappe",
   "getting_started.documentation": "Dokumentasjon",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {personer}} snakker om det",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Trender nå",
   "ui.beforeunload": "Din kladd vil bli forkastet om du forlater Mastodon.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Dra og slipp for å laste opp",
   "upload_button.label": "Legg til media",
   "upload_error.limit": "Filopplastingsgrensen er oversteget.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Beskriv det for folk med hørselstap",
   "upload_form.description": "Beskriv for synshemmede",
   "upload_form.edit": "Rediger",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Angre",
   "upload_form.video_description": "Beskriv det for folk med hørselstap eller synshemminger",
   "upload_modal.analyzing_picture": "Analyserer bildet …",
   "upload_modal.apply": "Bruk",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "Når du en gang kommer, neste sommer, skal vi atter drikke vin",
   "upload_modal.detect_text": "Oppdag tekst i bildet",
   "upload_modal.edit_media": "Rediger media",
diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json
index e0c9e99c6..dfee6f157 100644
--- a/app/javascript/mastodon/locales/oc.json
+++ b/app/javascript/mastodon/locales/oc.json
@@ -1,13 +1,12 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Nòta",
   "account.add_or_remove_from_list": "Ajustar o tirar de las listas",
   "account.badges.bot": "Robòt",
   "account.badges.group": "Grop",
   "account.block": "Blocar @{name}",
   "account.block_domain": "Tot amagar del domeni {domain}",
   "account.blocked": "Blocat",
-  "account.browse_more_on_origin_server": "Browse more on the original profile",
+  "account.browse_more_on_origin_server": "Navigar sul perfil original",
   "account.cancel_follow_request": "Anullar la demanda de seguiment",
   "account.direct": "Escriure un MP a @{name}",
   "account.domain_blocked": "Domeni amagat",
@@ -16,7 +15,8 @@
   "account.follow": "Sègre",
   "account.followers": "Seguidors",
   "account.followers.empty": "Degun sèc pas aqueste utilizaire pel moment.",
-  "account.follows": "Abonaments",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "Aqueste utilizaire sèc pas degun pel moment.",
   "account.follows_you": "Vos sèc",
   "account.hide_reblogs": "Rescondre los partatges de @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Invitacion mandada. Clicatz per anullar",
   "account.share": "Partejar lo perfil a @{name}",
   "account.show_reblogs": "Mostrar los partatges de @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Desblocar @{name}",
   "account.unblock_domain": "Desblocar {domain}",
   "account.unendorse": "Mostrar pas pel perfil",
   "account.unfollow": "Quitar de sègre",
   "account.unmute": "Quitar de rescondre @{name}",
   "account.unmute_notifications": "Mostrar las notificacions de @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Clicar per ajustar una nòta",
   "alert.rate_limited.message": "Mercés de tornar ensajar aprèp {retry_time, time, medium}.",
   "alert.rate_limited.title": "Taus limitat",
   "alert.unexpected.message": "Una error s’es producha.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Acceptar",
   "follow_request.reject": "Regetar",
   "follow_requests.unlocked_explanation": "Encara que vòstre compte siasque pas verrolhat, la còla de {domain} pensèt que volriatz benlèu repassar las demandas d’abonament d’aquestes comptes.",
+  "generic.saved": "Enregistrat",
   "getting_started.developers": "Desvelopaires",
   "getting_started.directory": "Annuari de perfils",
   "getting_started.documentation": "Documentacion",
@@ -243,7 +242,7 @@
   "keyboard_shortcuts.reply": "respondre",
   "keyboard_shortcuts.requests": "dorbir la lista de demanda d’abonament",
   "keyboard_shortcuts.search": "anar a la recèrca",
-  "keyboard_shortcuts.spoilers": "to show/hide CW field",
+  "keyboard_shortcuts.spoilers": "per mostrar/rescondre lo camp CW",
   "keyboard_shortcuts.start": "dobrir la colomna « Per començar »",
   "keyboard_shortcuts.toggle_hidden": "mostrar/amagar lo tèxte dels avertiments",
   "keyboard_shortcuts.toggle_sensitivity": "mostrar/rescondre los mèdias",
@@ -420,13 +419,16 @@
   "time_remaining.minutes": "demòra{number, plural, one { # minuta} other {n # minutas}}",
   "time_remaining.moments": "Moments restants",
   "time_remaining.seconds": "demòra{number, plural, one { # segonda} other {n # segondas}}",
-  "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
-  "timeline_hint.resources.followers": "Followers",
-  "timeline_hint.resources.follows": "Follows",
-  "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {person} ne charra other {people}} ne charran",
+  "timeline_hint.remote_resource_not_displayed": "{resource} suls autres servidors son pas afichats.",
+  "timeline_hint.resources.followers": "Seguidors",
+  "timeline_hint.resources.follows": "Abonaments",
+  "timeline_hint.resources.statuses": "Tuts mai ancians",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Tendéncia del moment",
   "ui.beforeunload": "Vòstre brolhon serà perdut se quitatz Mastodon.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Lisatz e depausatz per mandar",
   "upload_button.label": "Ajustar un mèdia (JPEG, PNG, GIF, WebM, MP4, MOV)",
   "upload_error.limit": "Talha maximum pels mandadís subrepassada.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Descriure per las personas amb pèrdas auditivas",
   "upload_form.description": "Descripcion pels mal vesents",
   "upload_form.edit": "Modificar",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Suprimir",
   "upload_form.video_description": "Descriure per las personas amb pèrdas auditivas o mal vesent",
   "upload_modal.analyzing_picture": "Analisi de l’imatge…",
   "upload_modal.apply": "Aplicar",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "Lo dròlle bilingüe manja un yaourt de ròcs exagonals e kiwis verds farà un an mai",
   "upload_modal.detect_text": "Detectar lo tèxt de l’imatge",
   "upload_modal.edit_media": "Modificar lo mèdia",
diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json
index 1d6810d8c..3755b762c 100644
--- a/app/javascript/mastodon/locales/pl.json
+++ b/app/javascript/mastodon/locales/pl.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "Dodaj lub usuń z list",
   "account.badges.bot": "Bot",
   "account.badges.group": "Grupa",
@@ -16,7 +15,8 @@
   "account.follow": "Śledź",
   "account.followers": "Śledzący",
   "account.followers.empty": "Nikt jeszcze nie śledzi tego użytkownika.",
-  "account.follows": "Śledzeni",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "Ten użytkownik nie śledzi jeszcze nikogo.",
   "account.follows_you": "Śledzi Cię",
   "account.hide_reblogs": "Ukryj podbicia od @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Oczekująca prośba, kliknij aby anulować",
   "account.share": "Udostępnij profil @{name}",
   "account.show_reblogs": "Pokazuj podbicia od @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Odblokuj @{name}",
   "account.unblock_domain": "Odblokuj domenę {domain}",
   "account.unendorse": "Przestań polecać",
   "account.unfollow": "Przestań śledzić",
   "account.unmute": "Cofnij wyciszenie @{name}",
   "account.unmute_notifications": "Cofnij wyciszenie powiadomień od @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "Spróbuj ponownie po {retry_time, time, medium}.",
   "alert.rate_limited.title": "Ograniczony czasowo",
   "alert.unexpected.message": "Wystąpił nieoczekiwany błąd.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Autoryzuj",
   "follow_request.reject": "Odrzuć",
   "follow_requests.unlocked_explanation": "Mimo że Twoje konto nie jest zablokowane, zespół {domain} uznał że możesz chcieć ręcznie przejrzeć prośby o możliwość śledzenia.",
+  "generic.saved": "Saved",
   "getting_started.developers": "Dla programistów",
   "getting_started.directory": "Katalog profilów",
   "getting_started.documentation": "Dokumentacja",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Śledzący",
   "timeline_hint.resources.follows": "Śledzeni",
   "timeline_hint.resources.statuses": "Starsze wpisy",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {osoba rozmawia} few {osoby rozmawiają} other {osób rozmawia}} o tym",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Popularne teraz",
   "ui.beforeunload": "Utracisz tworzony wpis, jeżeli opuścisz Mastodona.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Przeciągnij i upuść aby wysłać",
   "upload_button.label": "Dodaj zawartość multimedialną (JPEG, PNG, GIF, WebM, MP4, MOV)",
   "upload_error.limit": "Przekroczono limit plików do wysłania.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Opisz dla osób niesłyszących i niedosłyszących",
   "upload_form.description": "Wprowadź opis dla niewidomych i niedowidzących",
   "upload_form.edit": "Edytuj",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Usuń",
   "upload_form.video_description": "Opisz dla osób niesłyszących, niedosłyszących, niewidomych i niedowidzących",
   "upload_modal.analyzing_picture": "Analizowanie obrazu…",
   "upload_modal.apply": "Zastosuj",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "Pchnąć w tę łódź jeża lub ośm skrzyń fig",
   "upload_modal.detect_text": "Wykryj tekst ze obrazu",
   "upload_modal.edit_media": "Edytuj multimedia",
diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json
index b45ed4d06..f494eaaa9 100644
--- a/app/javascript/mastodon/locales/pt-BR.json
+++ b/app/javascript/mastodon/locales/pt-BR.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Nota",
   "account.add_or_remove_from_list": "Adicionar ou Remover de listas",
   "account.badges.bot": "Robô",
   "account.badges.group": "Grupo",
@@ -16,7 +15,8 @@
   "account.follow": "Seguir",
   "account.followers": "Seguidores",
   "account.followers.empty": "Nada aqui.",
-  "account.follows": "Seguindo",
+  "account.followers_counter": "{count, plural, one {{counter} Seguidor} other {{counter} Seguidores}}",
+  "account.following_counter": "{count, plural, other {{counter} Seguindo}}",
   "account.follows.empty": "Nada aqui.",
   "account.follows_you": "Segue você",
   "account.hide_reblogs": "Ocultar boosts de @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Aguardando aprovação. Clique para cancelar a solicitação",
   "account.share": "Compartilhar perfil de @{name}",
   "account.show_reblogs": "Mostrar boosts de @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Desbloquear @{name}",
   "account.unblock_domain": "Desbloquear domínio {domain}",
   "account.unendorse": "Não destacar no perfil",
   "account.unfollow": "Deixar de seguir",
   "account.unmute": "Tirar @{name} do mudo",
   "account.unmute_notifications": "Mostrar notificações de @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Clique para adicionar nota",
   "alert.rate_limited.message": "Por favor tente novamente após {retry_time, time, medium}.",
   "alert.rate_limited.title": "Frequência limitada",
   "alert.unexpected.message": "Ocorreu um erro inesperado.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Aprovar",
   "follow_request.reject": "Vetar",
   "follow_requests.unlocked_explanation": "Embora sua conta não esteja trancada, o staff de {domain} achou que você podia querer revisar pedidos para te seguir destas contas manualmente.",
+  "generic.saved": "Salvo",
   "getting_started.developers": "Desenvolvedores",
   "getting_started.directory": "Diretório de perfis",
   "getting_started.documentation": "Documentação",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Seguidores",
   "timeline_hint.resources.follows": "Seguindo",
   "timeline_hint.resources.statuses": "Toots mais antigos",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {pessoa} other {pessoas}} falando",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} pessoa} other {{counter} pessoas}} falando",
   "trends.trending_now": "Em alta no momento",
   "ui.beforeunload": "Seu rascunho vai ser perdido se você sair do Mastodon.",
+  "units.short.billion": "{count} bi",
+  "units.short.million": "{count} mi",
+  "units.short.thousand": "{count} mil",
   "upload_area.title": "Arraste & solte para fazer upload",
   "upload_button.label": "Adicionar mídia ({formats})",
   "upload_error.limit": "Limite de upload de arquivos excedido.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Descrever para pessoas com deficiência auditiva",
   "upload_form.description": "Descreva para deficientes visuais",
   "upload_form.edit": "Editar",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Excluir",
   "upload_form.video_description": "Descreva para pessoas com deficiência auditiva ou visual",
   "upload_modal.analyzing_picture": "Analisando imagem…",
   "upload_modal.apply": "Aplicar",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "Um pequeno jabuti xereta viu dez cegonhas felizes",
   "upload_modal.detect_text": "Detectar texto da imagem",
   "upload_modal.edit_media": "Editar mídia",
diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json
index 2697b0a0c..8b7c82945 100644
--- a/app/javascript/mastodon/locales/pt-PT.json
+++ b/app/javascript/mastodon/locales/pt-PT.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "A sua nota para @{name}",
   "account.add_or_remove_from_list": "Adicionar ou remover das listas",
   "account.badges.bot": "Robô",
   "account.badges.group": "Grupo",
@@ -16,9 +15,10 @@
   "account.follow": "Seguir",
   "account.followers": "Seguidores",
   "account.followers.empty": "Ainda ninguém segue este utilizador.",
-  "account.follows": "Segue",
+  "account.followers_counter": "{count, plural, one {{counter} Seguidor} other {{counter} Seguidores}}",
+  "account.following_counter": "{count, plural, other {A seguir {counter}}}",
   "account.follows.empty": "Este utilizador ainda não segue alguém.",
-  "account.follows_you": "É teu seguidor",
+  "account.follows_you": "Segue-te",
   "account.hide_reblogs": "Esconder partilhas de @{name}",
   "account.last_status": "Última atividade",
   "account.link_verified_on": "A posse deste link foi verificada em {date}",
@@ -36,16 +36,14 @@
   "account.requested": "A aguardar aprovação. Clique para cancelar o pedido de seguidor",
   "account.share": "Partilhar o perfil @{name}",
   "account.show_reblogs": "Mostrar partilhas de @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Desbloquear @{name}",
   "account.unblock_domain": "Mostrar {domain}",
   "account.unendorse": "Não mostrar no perfil",
   "account.unfollow": "Deixar de seguir",
   "account.unmute": "Não silenciar @{name}",
   "account.unmute_notifications": "Deixar de silenciar @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Nenhum comentário fornecido",
   "alert.rate_limited.message": "Volte a tentar depois das {retry_time, time, medium}.",
   "alert.rate_limited.title": "Limite de tentativas",
   "alert.unexpected.message": "Ocorreu um erro inesperado.",
@@ -62,7 +60,7 @@
   "column.blocks": "Utilizadores Bloqueados",
   "column.bookmarks": "Itens salvos",
   "column.community": "Cronologia local",
-  "column.direct": "Mensagens directas",
+  "column.direct": "Mensagens diretas",
   "column.directory": "Procurar perfis",
   "column.domain_blocks": "Domínios escondidos",
   "column.favourites": "Favoritos",
@@ -89,7 +87,7 @@
   "compose_form.hashtag_warning": "Este toot não será listado em nenhuma hashtag por ser não listado. Apenas toots públics podem ser pesquisados por hashtag.",
   "compose_form.lock_disclaimer": "A tua conta não está {locked}. Qualquer pessoa pode seguir-te e ver as publicações direcionadas apenas a seguidores.",
   "compose_form.lock_disclaimer.lock": "bloqueado",
-  "compose_form.placeholder": "Em que está a pensar?",
+  "compose_form.placeholder": "Em que estás a pensar?",
   "compose_form.poll.add_option": "Adicionar uma opção",
   "compose_form.poll.duration": "Duração da votação",
   "compose_form.poll.option_placeholder": "Opção {number}",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Autorizar",
   "follow_request.reject": "Rejeitar",
   "follow_requests.unlocked_explanation": "Apesar de a sua não estar bloqueada, a administração de {domain} pensa que poderá querer rever os pedidos dessas contas manualmente.",
+  "generic.saved": "Salvo",
   "getting_started.developers": "Responsáveis pelo desenvolvimento",
   "getting_started.directory": "Directório de perfil",
   "getting_started.documentation": "Documentação",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Seguidores",
   "timeline_hint.resources.follows": "Seguindo",
   "timeline_hint.resources.statuses": "Toots antigos",
-  "trends.count_by_accounts": "{count} {rawCount, plural, uma {person} outra {people}} a falar",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} pessoa} other {{counter} pessoas}} a conversar",
   "trends.trending_now": "Tendências atuais",
   "ui.beforeunload": "O teu rascunho será perdido se abandonares o Mastodon.",
+  "units.short.billion": "{count}MM",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}m",
   "upload_area.title": "Arraste e solte para enviar",
   "upload_button.label": "Adicionar media ({formats})",
   "upload_error.limit": "Limite máximo do ficheiro a carregar excedido.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Descreva para pessoas com diminuição da acuidade auditiva",
   "upload_form.description": "Descrição da imagem para pessoas com dificuldades visuais",
   "upload_form.edit": "Editar",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Apagar",
   "upload_form.video_description": "Descreva para pessoas com diminuição da acuidade auditiva ou visual",
   "upload_modal.analyzing_picture": "A analizar imagem…",
   "upload_modal.apply": "Aplicar",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "Grave e cabisbaixo, o filho justo zelava pela querida mãe doente",
   "upload_modal.detect_text": "Detectar texto na imagem",
   "upload_modal.edit_media": "Editar media",
diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json
index e470a7f90..c00eca297 100644
--- a/app/javascript/mastodon/locales/ro.json
+++ b/app/javascript/mastodon/locales/ro.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "Adaugă sau Elimină din liste",
   "account.badges.bot": "Robot",
   "account.badges.group": "Grup",
@@ -16,7 +15,8 @@
   "account.follow": "Urmărește",
   "account.followers": "Urmăritori",
   "account.followers.empty": "Acest utilizator nu are încă urmăritori.",
-  "account.follows": "Urmărește",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "Acest utilizator nu urmărește pe nimeni încă.",
   "account.follows_you": "Te urmărește",
   "account.hide_reblogs": "Ascunde impulsurile de la @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Se așteaptă aprobarea. Apasă pentru a anula cererea de urmărire",
   "account.share": "Distribuie profilul lui @{name}",
   "account.show_reblogs": "Arată impulsurile de la @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Deblochează pe @{name}",
   "account.unblock_domain": "Deblochează domeniul {domain}",
   "account.unendorse": "Nu promova pe profil",
   "account.unfollow": "Nu mai urmări",
   "account.unmute": "Nu mai ignora pe @{name}",
   "account.unmute_notifications": "Activează notificările de la @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "Vă rugăm să reîncercați după {retry_time, time, medium}.",
   "alert.rate_limited.title": "Rată limitată",
   "alert.unexpected.message": "A apărut o eroare neașteptată.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Autorizează",
   "follow_request.reject": "Respinge",
   "follow_requests.unlocked_explanation": "Chiar dacă contul dvs nu este blocat, personalul {domain} a crezut că ați putea dori să revizuiți cererile de la aceste conturi în mod manual.",
+  "generic.saved": "Saved",
   "getting_started.developers": "Dezvoltatori",
   "getting_started.directory": "Explorează",
   "getting_started.documentation": "Documentație",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Urmăritori",
   "timeline_hint.resources.follows": "Urmăriri",
   "timeline_hint.resources.statuses": "Postări mai vechi",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {persoană} other {persoane}} vorbește/ecs",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "În tendință acum",
   "ui.beforeunload": "Postarea se va pierde dacă părăsești pagina.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Trage și eliberează pentru a încărca",
   "upload_button.label": "Adaugă media (JPEG, PNG, GIF, WebM, MP4, MOV)",
   "upload_error.limit": "Limita de încărcare a fișierului a fost depășită.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Descrie pentru persoanele cu deficiență a auzului",
   "upload_form.description": "Adaugă o descriere pentru persoanele cu deficiențe de vedere",
   "upload_form.edit": "Editează",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Șterge",
   "upload_form.video_description": "Descrie pentru persoanele cu pierdere a auzului sau tulburări de vedere",
   "upload_modal.analyzing_picture": "Se analizează imaginea…",
   "upload_modal.apply": "Aplică",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
   "upload_modal.detect_text": "Detectare text din imagine",
   "upload_modal.edit_media": "Editați media",
diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json
index 4ef68d955..0c19a201f 100644
--- a/app/javascript/mastodon/locales/ru.json
+++ b/app/javascript/mastodon/locales/ru.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Ваша заметка для @{name}",
   "account.add_or_remove_from_list": "Управление списками",
   "account.badges.bot": "Бот",
   "account.badges.group": "Группа",
@@ -16,7 +15,8 @@
   "account.follow": "Подписаться",
   "account.followers": "Подписаны",
   "account.followers.empty": "На этого пользователя пока никто не подписан.",
-  "account.follows": "Подписки",
+  "account.followers_counter": "{count, plural, one {{counter} подписчик} many {{counter} подписчиков} other {{counter} подписчика}}",
+  "account.following_counter": "{count, plural, one {{counter} подписка} many {{counter} подписок} other {{counter} подписки}}",
   "account.follows.empty": "Этот пользователь пока ни на кого не подписался.",
   "account.follows_you": "Подписан(а) на вас",
   "account.hide_reblogs": "Скрыть продвижения от @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Ожидает подтверждения. Нажмите для отмены",
   "account.share": "Поделиться профилем @{name}",
   "account.show_reblogs": "Показывать продвижения от @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} пост} many {{counter} постов} other {{counter} поста}}",
   "account.unblock": "Разблокировать @{name}",
   "account.unblock_domain": "Разблокировать {domain}",
   "account.unendorse": "Не рекомендовать в профиле",
   "account.unfollow": "Отписаться",
   "account.unmute": "Не игнорировать @{name}",
   "account.unmute_notifications": "Показывать уведомления от @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Текст заметки",
   "alert.rate_limited.message": "Пожалуйста, повторите после {retry_time, time, medium}.",
   "alert.rate_limited.title": "Вы выполняете действие слишком часто",
   "alert.unexpected.message": "Произошла непредвиденная ошибка.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Авторизовать",
   "follow_request.reject": "Отказать",
   "follow_requests.unlocked_explanation": "Этот запрос отправлен с учётной записи, для которой администрация {domain} включила ручную проверку подписок.",
+  "generic.saved": "Сохранена",
   "getting_started.developers": "Разработчикам",
   "getting_started.directory": "Каталог профилей",
   "getting_started.documentation": "Документация",
@@ -423,10 +422,13 @@
   "timeline_hint.remote_resource_not_displayed": "Мы не отображаем {resource} с других серверов.",
   "timeline_hint.resources.followers": "подписчиков",
   "timeline_hint.resources.follows": "подписки",
-  "timeline_hint.resources.statuses": "Прошлые посты",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {человек говорит} few {человека говорят} other {человек говорят}} про это",
+  "timeline_hint.resources.statuses": "прошлые посты",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} человек} many {{counter} человек} other {{counter} человека}}",
   "trends.trending_now": "Самое актуальное",
   "ui.beforeunload": "Ваш черновик будет утерян, если вы покинете Mastodon.",
+  "units.short.billion": "{count} млрд",
+  "units.short.million": "{count} млн",
+  "units.short.thousand": "{count} тыс.",
   "upload_area.title": "Перетащите сюда, чтобы загрузить",
   "upload_button.label": "Прикрепить фото, видео или аудио",
   "upload_error.limit": "Достигнут лимит загруженных файлов.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Опишите аудиофайл для людей с нарушением слуха",
   "upload_form.description": "Добавьте описание для людей с нарушениями зрения:",
   "upload_form.edit": "Изменить",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Отменить",
   "upload_form.video_description": "Опишите видео для людей с нарушением слуха или зрения",
   "upload_modal.analyzing_picture": "Обработка изображения…",
   "upload_modal.apply": "Применить",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "На дворе трава, на траве дрова",
   "upload_modal.detect_text": "Найти текст на картинке",
   "upload_modal.edit_media": "Изменить файл",
diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json
index 79f593417..916576656 100644
--- a/app/javascript/mastodon/locales/sc.json
+++ b/app/javascript/mastodon/locales/sc.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "Agiunghe o boga dae is listas",
   "account.badges.bot": "Bot",
   "account.badges.group": "Grupu",
@@ -16,7 +15,8 @@
   "account.follow": "Sighi",
   "account.followers": "Sighiduras",
   "account.followers.empty": "Nemos sighit ancora custa persone.",
-  "account.follows": "Sighende",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "Custa persone non sighit ancora a nemos.",
   "account.follows_you": "Ti sighit",
   "account.hide_reblogs": "Cua is cumpartziduras de @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Incarca pro annullare sa rechesta de sighidura",
   "account.share": "Cumpartzi su profilu de @{name}",
   "account.show_reblogs": "Ammustra is cumpartziduras de @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Isbloca @{name}",
   "account.unblock_domain": "Isbloca su domìniu {domain}",
   "account.unendorse": "Non cussiges in su profilu",
   "account.unfollow": "Non sigas prus",
   "account.unmute": "Torra a ativare @{name}",
   "account.unmute_notifications": "Ativa notìficas pro @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "Torra·bi a proare a pustis de {retry_time, time, medium}.",
   "alert.rate_limited.title": "Màssimu de rechestas barigadu",
   "alert.unexpected.message": "B'at àpidu una faddina.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Autoriza",
   "follow_request.reject": "Refuda",
   "follow_requests.unlocked_explanation": "Fintzas si su contu tuo no est blocadu, su personale de {domain} at pensadu chi forsis bolias revisionare a manu is rechestas de custos contos.",
+  "generic.saved": "Saved",
   "getting_started.developers": "Iscuadra de isvilupu",
   "getting_started.directory": "Diretòriu de profilos",
   "getting_started.documentation": "Documentatzione",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {persone} other {persones}} nde sunt chistionende",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Est tendèntzia immoe",
   "ui.beforeunload": "S'abbotzu tuo at a èssere pèrdidu si essis dae Mastodon.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Traga pro carrigare",
   "upload_button.label": "Agiunghe mèdias ({formats})",
   "upload_error.limit": "Lìmite de càrriga de archìvios barigadu.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Descritzione pro persones cun pèrdida auditiva",
   "upload_form.description": "Descritzione pro persones cun problemas visuales",
   "upload_form.edit": "Modìfica",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Cantzella",
   "upload_form.video_description": "Descritzione pro persones cun pèrdida auditiva o problemas visuales",
   "upload_modal.analyzing_picture": "Analizende immàgine…",
   "upload_modal.apply": "Àplica",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "Su margiane castàngiu brincat lestru a subra de su cane mandrone",
   "upload_modal.detect_text": "Rileva testu de s'immàgine",
   "upload_modal.edit_media": "Modìfica su mèdia",
diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json
index 2b5060efe..569a8cd12 100644
--- a/app/javascript/mastodon/locales/sk.json
+++ b/app/javascript/mastodon/locales/sk.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "Pridaj do, alebo odober zo zoznamov",
   "account.badges.bot": "Bot",
   "account.badges.group": "Skupina",
@@ -16,7 +15,8 @@
   "account.follow": "Nasleduj",
   "account.followers": "Sledujúci",
   "account.followers.empty": "Tohto používateľa ešte nikto nenásleduje.",
-  "account.follows": "Nasleduje",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "Tento používateľ ešte nikoho nenasleduje.",
   "account.follows_you": "Nasleduje ťa",
   "account.hide_reblogs": "Skry vyzdvihnutia od @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Čaká na schválenie. Klikni pre zrušenie žiadosti",
   "account.share": "Zdieľaj @{name} profil",
   "account.show_reblogs": "Ukáž vyzdvihnutia od @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Odblokuj @{name}",
   "account.unblock_domain": "Prestaň skrývať {domain}",
   "account.unendorse": "Nezobrazuj na profile",
   "account.unfollow": "Prestaň následovať",
   "account.unmute": "Prestaň ignorovať @{name}",
   "account.unmute_notifications": "Zruš stĺmenie oboznámení od @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "Prosím, skús to znova za {retry_time, time, medium}.",
   "alert.rate_limited.title": "Tempo obmedzené",
   "alert.unexpected.message": "Vyskytla sa nečakaná chyba.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Povoľ prístup",
   "follow_request.reject": "Odmietni",
   "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+  "generic.saved": "Saved",
   "getting_started.developers": "Vývojári",
   "getting_started.directory": "Zoznam profilov",
   "getting_started.documentation": "Dokumentácia",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {človek spomína} other {ľudí spomína}}",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Teraz populárne",
   "ui.beforeunload": "Čo máš rozpísané sa stratí, ak opustíš Mastodon.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Pretiahni a pusť pre nahratie",
   "upload_button.label": "Pridaj médiálny súbor (JPEG, PNG, GIF, WebM, MP4, MOV)",
   "upload_error.limit": "Limit pre nahrávanie súborov bol prekročený.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Popíš, pre ľudí so stratou sluchu",
   "upload_form.description": "Opis pre slabo vidiacich",
   "upload_form.edit": "Uprav",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Vymaž",
   "upload_form.video_description": "Popíš, pre ľudí so stratou sluchu, alebo očným znevýhodnením",
   "upload_modal.analyzing_picture": "Analyzujem obrázok…",
   "upload_modal.apply": "Použi",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "Rýchla hnedá líška skáče ponad lenivého psa",
   "upload_modal.detect_text": "Rozpoznaj text z obrázka",
   "upload_modal.edit_media": "Uprav médiá",
diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json
index 3f334892b..d13bf5e36 100644
--- a/app/javascript/mastodon/locales/sl.json
+++ b/app/javascript/mastodon/locales/sl.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "Dodaj ali odstrani iz seznama",
   "account.badges.bot": "Robot",
   "account.badges.group": "Group",
@@ -16,7 +15,8 @@
   "account.follow": "Sledi",
   "account.followers": "Sledilci",
   "account.followers.empty": "Nihče ne sledi temu uporabniku.",
-  "account.follows": "Sledi",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "Ta uporabnik še ne sledi nikomur.",
   "account.follows_you": "Sledi tebi",
   "account.hide_reblogs": "Skrij spodbude od @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Čakanje na odobritev. Kliknite, da prekličete prošnjo za sledenje",
   "account.share": "Delite profil osebe @{name}",
   "account.show_reblogs": "Pokaži spodbude osebe @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Odblokiraj @{name}",
   "account.unblock_domain": "Razkrij {domain}",
   "account.unendorse": "Ne vključi v profil",
   "account.unfollow": "Prenehaj slediti",
   "account.unmute": "Odtišaj @{name}",
   "account.unmute_notifications": "Vklopi obvestila od @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
   "alert.rate_limited.title": "Rate limited",
   "alert.unexpected.message": "Zgodila se je nepričakovana napaka.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Overi",
   "follow_request.reject": "Zavrni",
   "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+  "generic.saved": "Saved",
   "getting_started.developers": "Razvijalci",
   "getting_started.directory": "Imenik profilov",
   "getting_started.documentation": "Dokumentacija",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {oseba} other {ljudi}} govori",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Trending now",
   "ui.beforeunload": "Vaš osnutek bo izgubljen, če zapustite Mastodona.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Za pošiljanje povlecite in spustite",
   "upload_button.label": "Dodaj medije ({formats})",
   "upload_error.limit": "Omejitev prenosa datoteke je presežena.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Describe for people with hearing loss",
   "upload_form.description": "Opišite za slabovidne",
   "upload_form.edit": "Edit",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Izbriši",
   "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
   "upload_modal.analyzing_picture": "Analyzing picture…",
   "upload_modal.apply": "Apply",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "Pri Jakcu bom vzel šest čudežnih fig",
   "upload_modal.detect_text": "Detect text from picture",
   "upload_modal.edit_media": "Edit media",
diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json
index 5c8181ce1..2af0d83f7 100644
--- a/app/javascript/mastodon/locales/sq.json
+++ b/app/javascript/mastodon/locales/sq.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Shënimi juaj për @{name}",
   "account.add_or_remove_from_list": "Shtoni ose Hiqni prej listash",
   "account.badges.bot": "Robot",
   "account.badges.group": "Grup",
@@ -16,7 +15,8 @@
   "account.follow": "Ndiqeni",
   "account.followers": "Ndjekës",
   "account.followers.empty": "Këtë përdorues ende s’e ndjek njeri.",
-  "account.follows": "Ndjekje",
+  "account.followers_counter": "{count, plural, one {{counter} Ndjekës} other {{counter} Ndjekës}}",
+  "account.following_counter": "{count, plural, one {} other {{counter} të Ndjekur}}",
   "account.follows.empty": "Ky përdorues ende s’ndjek njeri.",
   "account.follows_you": "Ju ndjek",
   "account.hide_reblogs": "Fshih përforcime nga @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Në pritje të miratimit. Që të anuloni kërkesën për ndjekje, klikojeni",
   "account.share": "Ndajeni profilin e @{name} me të tjerët",
   "account.show_reblogs": "Shfaq përforcime nga @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Mesazh} other {{counter} Mesazhe}}",
   "account.unblock": "Zhbllokoje @{name}",
   "account.unblock_domain": "Zhblloko përkatësinë {domain}",
   "account.unendorse": "Mos e përfshi në profil",
   "account.unfollow": "Resht së ndjekuri",
   "account.unmute": "Ktheji zërin @{name}",
   "account.unmute_notifications": "Hiqua ndalimin e shfaqjes njoftimeve nga @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "S’u dha koment",
   "alert.rate_limited.message": "Ju lutemi, riprovoni pas {retry_time, time, medium}.",
   "alert.rate_limited.title": "Shpejtësi e kufizuar",
   "alert.unexpected.message": "Ndodhi një gabim të papritur.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Autorizoje",
   "follow_request.reject": "Hidhe tej",
   "follow_requests.unlocked_explanation": "Edhe pse llogaria juaj s’është e kyçur, ekipi i {domain} mendoi se mund të donit të shqyrtonit dorazi kërkesa ndjekjeje prej këtyre llogarive.",
+  "generic.saved": "U ruajt",
   "getting_started.developers": "Zhvillues",
   "getting_started.directory": "Drejtori profilesh",
   "getting_started.documentation": "Dokumentim",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Ndjekës",
   "timeline_hint.resources.follows": "Ndjekje",
   "timeline_hint.resources.statuses": "Mesazhe të vjetër",
-  "trends.count_by_accounts": "E biseduar nga {count} {rawCount, plural, one {person} other {vetë}}",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} vetë}} duke folur",
   "trends.trending_now": "Prirjet e tashme",
   "ui.beforeunload": "Skica juaj do të humbë, nëse dilni nga Mastodon-i.",
+  "units.short.billion": "{count}Md",
+  "units.short.million": "{count}Ml",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Që të ngarkohet, merreni & vëreni",
   "upload_button.label": "Shtoni figura, një video ose një kartelë audio",
   "upload_error.limit": "U tejkalua kufi ngarkimi kartelash.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Përshkruajeni për persona me dëgjim të kufizuar",
   "upload_form.description": "Përshkruajeni për persona me probleme shikimi",
   "upload_form.edit": "Përpunoni",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Fshije",
   "upload_form.video_description": "Përshkruajeni për persona me dëgjim të kufizuar ose probleme shikimi",
   "upload_modal.analyzing_picture": "Po analizohet fotoja…",
   "upload_modal.apply": "Aplikoje",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "Deshe Korçën, Korçën të dhamë",
   "upload_modal.detect_text": "Pikase tekstin prej fotoje",
   "upload_modal.edit_media": "Përpunoni media",
diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json
index cb49a1cb9..7a17e9134 100644
--- a/app/javascript/mastodon/locales/sr-Latn.json
+++ b/app/javascript/mastodon/locales/sr-Latn.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "Add or Remove from lists",
   "account.badges.bot": "Bot",
   "account.badges.group": "Group",
@@ -16,7 +15,8 @@
   "account.follow": "Zaprati",
   "account.followers": "Pratioca",
   "account.followers.empty": "No one follows this user yet.",
-  "account.follows": "Prati",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "This user doesn't follow anyone yet.",
   "account.follows_you": "Prati Vas",
   "account.hide_reblogs": "Sakrij podrške koje daje korisnika @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Čekam odobrenje. Kliknite da poništite zahtev za praćenje",
   "account.share": "Podeli profil korisnika @{name}",
   "account.show_reblogs": "Prikaži podrške od korisnika @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Odblokiraj korisnika @{name}",
   "account.unblock_domain": "Odblokiraj domen {domain}",
   "account.unendorse": "Don't feature on profile",
   "account.unfollow": "Otprati",
   "account.unmute": "Ukloni ućutkavanje korisniku @{name}",
   "account.unmute_notifications": "Uključi nazad obaveštenja od korisnika @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
   "alert.rate_limited.title": "Rate limited",
   "alert.unexpected.message": "An unexpected error occurred.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Odobri",
   "follow_request.reject": "Odbij",
   "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+  "generic.saved": "Saved",
   "getting_started.developers": "Developers",
   "getting_started.directory": "Profile directory",
   "getting_started.documentation": "Documentation",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Trending now",
   "ui.beforeunload": "Ako napustite Mastodont, izgubićete napisani nacrt.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Prevucite ovde da otpremite",
   "upload_button.label": "Dodaj multimediju",
   "upload_error.limit": "File upload limit exceeded.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Describe for people with hearing loss",
   "upload_form.description": "Opiši za slabovide osobe",
   "upload_form.edit": "Edit",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Opozovi",
   "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
   "upload_modal.analyzing_picture": "Analyzing picture…",
   "upload_modal.apply": "Apply",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
   "upload_modal.detect_text": "Detect text from picture",
   "upload_modal.edit_media": "Edit media",
diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json
index b1104f653..bcaa45ed0 100644
--- a/app/javascript/mastodon/locales/sr.json
+++ b/app/javascript/mastodon/locales/sr.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "Додај или Одстрани са листа",
   "account.badges.bot": "Бот",
   "account.badges.group": "Група",
@@ -16,7 +15,8 @@
   "account.follow": "Запрати",
   "account.followers": "Пратиоци",
   "account.followers.empty": "Тренутно нико не прати овог корисника.",
-  "account.follows": "Прати",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "Корисник тренутно не прати никога.",
   "account.follows_you": "Прати Вас",
   "account.hide_reblogs": "Сакриј подршке које даје корисника @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Чекам одобрење. Кликните да поништите захтев за праћење",
   "account.share": "Подели профил корисника @{name}",
   "account.show_reblogs": "Прикажи подршке од корисника @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Одблокирај корисника @{name}",
   "account.unblock_domain": "Одблокирај домен {domain}",
   "account.unendorse": "Не истичи на профилу",
   "account.unfollow": "Отпрати",
   "account.unmute": "Уклони ућуткавање кориснику @{name}",
   "account.unmute_notifications": "Укључи назад обавештења од корисника @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "Молимо покушајте поново после {retry_time, time, medium}.",
   "alert.rate_limited.title": "Ограничена брзина",
   "alert.unexpected.message": "Појавила се неочекивана грешка.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Одобри",
   "follow_request.reject": "Одбиј",
   "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+  "generic.saved": "Saved",
   "getting_started.developers": "Програмери",
   "getting_started.directory": "Профил фасцикле",
   "getting_started.documentation": "Документација",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {човек} other {људи}} прича",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Trending now",
   "ui.beforeunload": "Ако напустите Мастодонт, изгубићете написани нацрт.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Превуците овде да отпремите",
   "upload_button.label": "Додај мултимедију (JPEG, PNG, GIF, WebM, MP4, MOV)",
   "upload_error.limit": "File upload limit exceeded.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Describe for people with hearing loss",
   "upload_form.description": "Опишите за особе са оштећеним видом",
   "upload_form.edit": "Edit",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Обриши",
   "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
   "upload_modal.analyzing_picture": "Analyzing picture…",
   "upload_modal.apply": "Apply",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
   "upload_modal.detect_text": "Detect text from picture",
   "upload_modal.edit_media": "Edit media",
diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json
index 3a221b641..a0d0807ab 100644
--- a/app/javascript/mastodon/locales/sv.json
+++ b/app/javascript/mastodon/locales/sv.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "Lägg till i eller ta bort från listor",
   "account.badges.bot": "Robot",
   "account.badges.group": "Grupp",
@@ -16,7 +15,8 @@
   "account.follow": "Följ",
   "account.followers": "Följare",
   "account.followers.empty": "Ingen följer denna användare än.",
-  "account.follows": "Följer",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "Denna användare följer inte någon än.",
   "account.follows_you": "Följer dig",
   "account.hide_reblogs": "Dölj knuffar från @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Inväntar godkännande. Klicka för att avbryta följarförfrågan",
   "account.share": "Dela @{name}s profil",
   "account.show_reblogs": "Visa knuffar från @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Avblockera @{name}",
   "account.unblock_domain": "Sluta dölja {domain}",
   "account.unendorse": "Visa inte på profil",
   "account.unfollow": "Sluta följ",
   "account.unmute": "Sluta tysta @{name}",
   "account.unmute_notifications": "Återaktivera aviseringar från @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "Vänligen försök igen efter {retry_time, time, medium}.",
   "alert.rate_limited.title": "Mängd begränsad",
   "alert.unexpected.message": "Ett oväntat fel uppstod.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Godkänn",
   "follow_request.reject": "Avvisa",
   "follow_requests.unlocked_explanation": "Även om ditt konto inte är låst tror {domain} personalen att du kanske vill granska dessa följares förfrågningar manuellt.",
+  "generic.saved": "Saved",
   "getting_started.developers": "Utvecklare",
   "getting_started.directory": "Profilkatalog",
   "getting_started.documentation": "Dokumentation",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, en {person} andra {people}} pratar",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Trendar nu",
   "ui.beforeunload": "Ditt utkast kommer att förloras om du lämnar Mastodon.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Dra & släpp för att ladda upp",
   "upload_button.label": "Lägg till media",
   "upload_error.limit": "Filöverföringsgränsen överskriden.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Describe for people with hearing loss",
   "upload_form.description": "Beskriv för synskadade",
   "upload_form.edit": "Redigera",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Ta bort",
   "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
   "upload_modal.analyzing_picture": "Analyserar bild…",
   "upload_modal.apply": "Verkställ",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "En snabb brun räv hoppar över den lata hunden",
   "upload_modal.detect_text": "Upptäck bildens text",
   "upload_modal.edit_media": "Redigera meida",
diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json
index 1476d0a54..36f55e800 100644
--- a/app/javascript/mastodon/locales/szl.json
+++ b/app/javascript/mastodon/locales/szl.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "Add or Remove from lists",
   "account.badges.bot": "Bot",
   "account.badges.group": "Group",
@@ -16,7 +15,8 @@
   "account.follow": "Follow",
   "account.followers": "Followers",
   "account.followers.empty": "No one follows this user yet.",
-  "account.follows": "Follows",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "This user doesn't follow anyone yet.",
   "account.follows_you": "Follows you",
   "account.hide_reblogs": "Hide boosts from @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Awaiting approval",
   "account.share": "Share @{name}'s profile",
   "account.show_reblogs": "Show boosts from @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Unblock @{name}",
   "account.unblock_domain": "Unblock domain {domain}",
   "account.unendorse": "Don't feature on profile",
   "account.unfollow": "Unfollow",
   "account.unmute": "Unmute @{name}",
   "account.unmute_notifications": "Unmute notifications from @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
   "alert.rate_limited.title": "Rate limited",
   "alert.unexpected.message": "An unexpected error occurred.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Authorize",
   "follow_request.reject": "Reject",
   "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+  "generic.saved": "Saved",
   "getting_started.developers": "Developers",
   "getting_started.directory": "Profile directory",
   "getting_started.documentation": "Documentation",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Trending now",
   "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Drag & drop to upload",
   "upload_button.label": "Add images, a video or an audio file",
   "upload_error.limit": "File upload limit exceeded.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Describe for people with hearing loss",
   "upload_form.description": "Describe for the visually impaired",
   "upload_form.edit": "Edit",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Delete",
   "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
   "upload_modal.analyzing_picture": "Analyzing picture…",
   "upload_modal.apply": "Apply",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
   "upload_modal.detect_text": "Detect text from picture",
   "upload_modal.edit_media": "Edit media",
diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json
index 8fdf10997..9caef0582 100644
--- a/app/javascript/mastodon/locales/ta.json
+++ b/app/javascript/mastodon/locales/ta.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "பட்டியல்களில் சேர்/நீக்கு",
   "account.badges.bot": "பாட்",
   "account.badges.group": "குழு",
@@ -16,7 +15,8 @@
   "account.follow": "பின்தொடர்",
   "account.followers": "பின்தொடர்பவர்கள்",
   "account.followers.empty": "இதுவரை யாரும் இந்த பயனரைப் பின்தொடரவில்லை.",
-  "account.follows": "பின்தொடர்",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "இந்த பயனர் இதுவரை யாரையும் பின்தொடரவில்லை.",
   "account.follows_you": "உங்களைப் பின்தொடர்கிறார்",
   "account.hide_reblogs": "இருந்து ஊக்கியாக மறை @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "ஒப்புதலுக்காகக் காத்திருக்கிறது. பின்தொடரும் கோரிக்கையை நீக்க அழுத்தவும்",
   "account.share": "@{name} உடைய விவரத்தை பகிர்",
   "account.show_reblogs": "காட்டு boosts இருந்து @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "@{name} மீது தடை நீக்குக",
   "account.unblock_domain": "{domain} ஐ காண்பி",
   "account.unendorse": "சுயவிவரத்தில் இடம்பெற வேண்டாம்",
   "account.unfollow": "பின்தொடர்வதை நிறுத்துக",
   "account.unmute": "@{name} இன் மீது மௌனத் தடையை நீக்குக",
   "account.unmute_notifications": "@{name} இலிருந்து அறிவிப்புகளின் மீது மௌனத் தடையை நீக்குக",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "{retry_time, time, medium} க்கு பிறகு மீண்டும் முயற்சிக்கவும்.",
   "alert.rate_limited.title": "பயன்பாடு கட்டுப்படுத்தப்பட்டுள்ளது",
   "alert.unexpected.message": "எதிர்பாராத பிழை ஏற்பட்டுவிட்டது.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "அதிகாரமளி",
   "follow_request.reject": "விலக்கு",
   "follow_requests.unlocked_explanation": "உங்கள் கணக்கு பூட்டப்படவில்லை என்றாலும், இந்தக் கணக்குகளிலிருந்து உங்களைப் பின்தொடர விரும்பும் கோரிக்கைகளை நீங்கள் பரீசீலிப்பது நலம் என்று {domain} ஊழியர் எண்ணுகிறார்.",
+  "generic.saved": "Saved",
   "getting_started.developers": "உருவாக்குநர்கள்",
   "getting_started.directory": "சுயவிவர அடைவு",
   "getting_started.documentation": "ஆவணங்கள்",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {person} மற்ற {people}} உரையாடு",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "இப்போது செல்திசையில் இருப்பவை",
   "ui.beforeunload": "நீங்கள் வெளியே சென்றால் உங்கள் வரைவு இழக்கப்படும் மஸ்தோடோன்.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "பதிவேற்ற & இழுக்கவும்",
   "upload_button.label": "மீடியாவைச் சேர்க்கவும் (JPEG, PNG, GIF, WebM, MP4, MOV)",
   "upload_error.limit": "கோப்பு பதிவேற்ற வரம்பு மீறப்பட்டது.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "செவித்திறன் குறைபாடு உள்ளவர்களுக்காக விளக்குக‌",
   "upload_form.description": "பார்வையற்ற விவரிக்கவும்",
   "upload_form.edit": "தொகு",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "நீக்கு",
   "upload_form.video_description": "செவித்திறன் மற்றும் பார்வைக் குறைபாடு உள்ளவர்களுக்காக விளக்குக‌",
   "upload_modal.analyzing_picture": "படம் ஆராயப்படுகிறது…",
   "upload_modal.apply": "உபயோகி",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "பொருள் விளக்கம்",
   "upload_modal.detect_text": "படத்தில் இருக்கும் எழுத்தை கண்டறி",
   "upload_modal.edit_media": "படத்தைத் தொகு",
diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json
index 1476d0a54..36f55e800 100644
--- a/app/javascript/mastodon/locales/tai.json
+++ b/app/javascript/mastodon/locales/tai.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "Add or Remove from lists",
   "account.badges.bot": "Bot",
   "account.badges.group": "Group",
@@ -16,7 +15,8 @@
   "account.follow": "Follow",
   "account.followers": "Followers",
   "account.followers.empty": "No one follows this user yet.",
-  "account.follows": "Follows",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "This user doesn't follow anyone yet.",
   "account.follows_you": "Follows you",
   "account.hide_reblogs": "Hide boosts from @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Awaiting approval",
   "account.share": "Share @{name}'s profile",
   "account.show_reblogs": "Show boosts from @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Unblock @{name}",
   "account.unblock_domain": "Unblock domain {domain}",
   "account.unendorse": "Don't feature on profile",
   "account.unfollow": "Unfollow",
   "account.unmute": "Unmute @{name}",
   "account.unmute_notifications": "Unmute notifications from @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
   "alert.rate_limited.title": "Rate limited",
   "alert.unexpected.message": "An unexpected error occurred.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Authorize",
   "follow_request.reject": "Reject",
   "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+  "generic.saved": "Saved",
   "getting_started.developers": "Developers",
   "getting_started.directory": "Profile directory",
   "getting_started.documentation": "Documentation",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Trending now",
   "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Drag & drop to upload",
   "upload_button.label": "Add images, a video or an audio file",
   "upload_error.limit": "File upload limit exceeded.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Describe for people with hearing loss",
   "upload_form.description": "Describe for the visually impaired",
   "upload_form.edit": "Edit",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Delete",
   "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
   "upload_modal.analyzing_picture": "Analyzing picture…",
   "upload_modal.apply": "Apply",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
   "upload_modal.detect_text": "Detect text from picture",
   "upload_modal.edit_media": "Edit media",
diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json
index 45e0dce32..a57efd7c6 100644
--- a/app/javascript/mastodon/locales/te.json
+++ b/app/javascript/mastodon/locales/te.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "జాబితాల నుండి చేర్చు లేదా తీసివేయి",
   "account.badges.bot": "బాట్",
   "account.badges.group": "Group",
@@ -16,7 +15,8 @@
   "account.follow": "అనుసరించు",
   "account.followers": "అనుచరులు",
   "account.followers.empty": "ఈ వినియోగదారుడిని ఇంకా ఎవరూ అనుసరించడంలేదు.",
-  "account.follows": "అనుసరిస్తున్నవి",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "ఈ వినియోగదారి ఇంకా ఎవరినీ అనుసరించడంలేదు.",
   "account.follows_you": "మిమ్మల్ని అనుసరిస్తున్నారు",
   "account.hide_reblogs": "@{name} నుంచి బూస్ట్ లను దాచిపెట్టు",
@@ -36,16 +36,14 @@
   "account.requested": "ఆమోదం కోసం వేచి ఉంది. అభ్యర్థనను రద్దు చేయడానికి క్లిక్ చేయండి",
   "account.share": "@{name} యొక్క ప్రొఫైల్ను పంచుకోండి",
   "account.show_reblogs": "@{name}నుంచి బూస్ట్ లను చూపించు",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "@{name}పై బ్లాక్ ను తొలగించు",
   "account.unblock_domain": "{domain}ను దాచవద్దు",
   "account.unendorse": "ప్రొఫైల్లో చూపించవద్దు",
   "account.unfollow": "అనుసరించవద్దు",
   "account.unmute": "@{name}పై మ్యూట్ ని తొలగించు",
   "account.unmute_notifications": "@{name} నుంచి ప్రకటనలపై మ్యూట్ ని తొలగించు",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
   "alert.rate_limited.title": "Rate limited",
   "alert.unexpected.message": "అనుకోని తప్పు జరిగినది.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "అనుమతించు",
   "follow_request.reject": "తిరస్కరించు",
   "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+  "generic.saved": "Saved",
   "getting_started.developers": "డెవలపర్లు",
   "getting_started.directory": "ప్రొఫైల్ డైరెక్టరీ",
   "getting_started.documentation": "డాక్యుమెంటేషన్",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} మాట్లాడుతున్నారు",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Trending now",
   "ui.beforeunload": "మీరు మాస్టొడొన్ను వదిలివేస్తే మీ డ్రాఫ్ట్లు పోతాయి.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "అప్లోడ్ చేయడానికి డ్రాగ్ & డ్రాప్ చేయండి",
   "upload_button.label": "మీడియాను జోడించండి (JPEG, PNG, GIF, WebM, MP4, MOV)",
   "upload_error.limit": "File upload limit exceeded.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Describe for people with hearing loss",
   "upload_form.description": "దృష్టి లోపమున్న వారి కోసం వివరించండి",
   "upload_form.edit": "Edit",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "తొలగించు",
   "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
   "upload_modal.analyzing_picture": "Analyzing picture…",
   "upload_modal.apply": "Apply",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
   "upload_modal.detect_text": "Detect text from picture",
   "upload_modal.edit_media": "Edit media",
diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json
index 4ecd1be72..5852ec5ca 100644
--- a/app/javascript/mastodon/locales/th.json
+++ b/app/javascript/mastodon/locales/th.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "หมายเหตุของคุณสำหรับ @{name}",
   "account.add_or_remove_from_list": "เพิ่มหรือเอาออกจากรายการ",
   "account.badges.bot": "บอต",
   "account.badges.group": "กลุ่ม",
@@ -16,7 +15,8 @@
   "account.follow": "ติดตาม",
   "account.followers": "ผู้ติดตาม",
   "account.followers.empty": "ยังไม่มีใครติดตามผู้ใช้นี้",
-  "account.follows": "การติดตาม",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "ผู้ใช้นี้ยังไม่ได้ติดตามใคร",
   "account.follows_you": "ติดตามคุณ",
   "account.hide_reblogs": "ซ่อนการดันจาก @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "กำลังรอการอนุมัติ คลิกเพื่อยกเลิกคำขอติดตาม",
   "account.share": "แบ่งปันโปรไฟล์ของ @{name}",
   "account.show_reblogs": "แสดงการดันจาก @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "เลิกปิดกั้น @{name}",
   "account.unblock_domain": "เลิกปิดกั้นโดเมน {domain}",
   "account.unendorse": "ไม่แสดงให้เห็นในโปรไฟล์",
   "account.unfollow": "เลิกติดตาม",
   "account.unmute": "เลิกซ่อน @{name}",
   "account.unmute_notifications": "เลิกซ่อนการแจ้งเตือนจาก @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "ไม่มีความคิดเห็นที่ระบุไว้",
   "alert.rate_limited.message": "โปรดลองใหม่หลังจาก {retry_time, time, medium}",
   "alert.rate_limited.title": "มีการจำกัดอัตรา",
   "alert.unexpected.message": "เกิดข้อผิดพลาดที่ไม่คาดคิด",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "อนุญาต",
   "follow_request.reject": "ปฏิเสธ",
   "follow_requests.unlocked_explanation": "แม้ว่าไม่มีการล็อคบัญชีของคุณ พนักงานของ {domain} คิดว่าคุณอาจต้องการตรวจทานคำขอติดตามจากบัญชีเหล่านี้ด้วยตนเอง",
+  "generic.saved": "บันทึกแล้ว",
   "getting_started.developers": "นักพัฒนา",
   "getting_started.directory": "ไดเรกทอรีโปรไฟล์",
   "getting_started.documentation": "เอกสารประกอบ",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "ผู้ติดตาม",
   "timeline_hint.resources.follows": "การติดตาม",
   "timeline_hint.resources.statuses": "โพสต์ที่เก่ากว่า",
-  "trends.count_by_accounts": "{count} {rawCount, plural, other {คน}}กำลังพูดคุย",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "กำลังนิยม",
   "ui.beforeunload": "แบบร่างของคุณจะหายไปหากคุณออกจาก Mastodon",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "ลากแล้วปล่อยเพื่ออัปโหลด",
   "upload_button.label": "เพิ่มไฟล์ภาพ วิดีโอ หรือเสียง",
   "upload_error.limit": "เกินขีดจำกัดการอัปโหลดไฟล์",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "อธิบายสำหรับผู้สูญเสียการได้ยิน",
   "upload_form.description": "อธิบายสำหรับผู้บกพร่องทางการมองเห็น",
   "upload_form.edit": "แก้ไข",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "ลบ",
   "upload_form.video_description": "อธิบายสำหรับผู้สูญเสียการได้ยินหรือบกพร่องทางการมองเห็น",
   "upload_modal.analyzing_picture": "กำลังวิเคราะห์รูปภาพ…",
   "upload_modal.apply": "นำไปใช้",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "สุนัขจิ้งจอกสีน้ำตาลที่ว่องไวกระโดดข้ามสุนัขขี้เกียจ",
   "upload_modal.detect_text": "ตรวจหาข้อความจากรูปภาพ",
   "upload_modal.edit_media": "แก้ไขสื่อ",
diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json
index f6495bd63..a5bbbfcd9 100644
--- a/app/javascript/mastodon/locales/tr.json
+++ b/app/javascript/mastodon/locales/tr.json
@@ -1,13 +1,12 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "@{name} için notunuz",
   "account.add_or_remove_from_list": "Listelere ekle veya kaldır",
   "account.badges.bot": "Bot",
   "account.badges.group": "Grup",
   "account.block": "@{name} adlı kişiyi engelle",
   "account.block_domain": "{domain} alanından her şeyi gizle",
   "account.blocked": "Engellenmiş",
-  "account.browse_more_on_origin_server": "Browse more on the original profile",
+  "account.browse_more_on_origin_server": "Orijinal profilde daha fazlasına göz atın",
   "account.cancel_follow_request": "Takip isteğini iptal et",
   "account.direct": "Mesaj gönder @{name}",
   "account.domain_blocked": "Alan adı gizlendi",
@@ -16,7 +15,8 @@
   "account.follow": "Takip et",
   "account.followers": "Takipçi",
   "account.followers.empty": "Henüz kimse bu kullanıcıyı takip etmiyor.",
-  "account.follows": "Takip ettikleri",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "Bu kullanıcı henüz kimseyi takip etmiyor.",
   "account.follows_you": "Seni takip ediyor",
   "account.hide_reblogs": "@{name} kişisinin yinelemelerini gizle",
@@ -36,16 +36,14 @@
   "account.requested": "Onay Bekleniyor. Takip isteğini iptal etmek için tıklayın",
   "account.share": "@{name} kullanıcısının profilini paylaş",
   "account.show_reblogs": "@{name} kullanıcısının yinelemelerini göster",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "@{name} adlı kişinin engelini kaldır",
   "account.unblock_domain": "{domain} göster",
   "account.unendorse": "Profilde özellik yok",
   "account.unfollow": "Takibi bırak",
   "account.unmute": "@{name} adlı kişinin sesini aç",
   "account.unmute_notifications": "@{name} adlı kişinin bildirimlerini aç",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Yorum yapılmamış",
   "alert.rate_limited.message": "Lütfen sonra tekrar deneyin {retry_time, time, medium}.",
   "alert.rate_limited.title": "Oran sınırlıdır",
   "alert.unexpected.message": "Beklenmedik bir hata oluştu.",
@@ -81,9 +79,9 @@
   "column_header.show_settings": "Ayarları göster",
   "column_header.unpin": "Sabitlemeyi kaldır",
   "column_subheading.settings": "Ayarlar",
-  "community.column_settings.local_only": "Local only",
+  "community.column_settings.local_only": "Sadece yerel",
   "community.column_settings.media_only": "Sadece medya",
-  "community.column_settings.remote_only": "Remote only",
+  "community.column_settings.remote_only": "Sadece uzak",
   "compose_form.direct_message_warning": "Bu toot sadece belirtilen kullanıcılara gönderilecektir.",
   "compose_form.direct_message_warning_learn_more": "Daha fazla bilgi edinin",
   "compose_form.hashtag_warning": "Bu toot liste dışı olduğu için hiç bir etikette yer almayacak. Sadece herkese açık tootlar etiketlerde bulunabilir.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Yetkilendir",
   "follow_request.reject": "Reddet",
   "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+  "generic.saved": "Saved",
   "getting_started.developers": "Geliştiriciler",
   "getting_started.directory": "Profil dizini",
   "getting_started.documentation": "Belgeler",
@@ -421,12 +420,15 @@
   "time_remaining.moments": "Sadece birkaç dakika kaldı",
   "time_remaining.seconds": "{number, plural, one {# saniye} other {# saniye}} kaldı",
   "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
-  "timeline_hint.resources.followers": "Followers",
-  "timeline_hint.resources.follows": "Follows",
-  "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {kişi} other {kişi}} konuşuyor",
+  "timeline_hint.resources.followers": "Takipçiler",
+  "timeline_hint.resources.follows": "Takip Edilenler",
+  "timeline_hint.resources.statuses": "Eski tootlar",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Şu an popüler",
   "ui.beforeunload": "Mastodon'dan ayrılırsanız taslağınız kaybolacak.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Karşıya yükleme için sürükle bırak yapınız",
   "upload_button.label": "Görsel ekle",
   "upload_error.limit": "Dosya yükleme sınırı aşıldı.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "İşitme kaybı olan kişiler için tarif edin",
   "upload_form.description": "Görme engelliler için açıklama",
   "upload_form.edit": "Düzenle",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Geri al",
   "upload_form.video_description": "İşitme kaybı veya görme engeli olan kişiler için tarif edin",
   "upload_modal.analyzing_picture": "Resmi analiz ediyor…",
   "upload_modal.apply": "Uygula",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "Pijamalı hasta yağız şoföre çabucak güvendi",
   "upload_modal.detect_text": "Resimdeki metni algıla",
   "upload_modal.edit_media": "Medyayı düzenle",
diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json
new file mode 100644
index 000000000..36f55e800
--- /dev/null
+++ b/app/javascript/mastodon/locales/ug.json
@@ -0,0 +1,461 @@
+{
+  "account.account_note_header": "Note",
+  "account.add_or_remove_from_list": "Add or Remove from lists",
+  "account.badges.bot": "Bot",
+  "account.badges.group": "Group",
+  "account.block": "Block @{name}",
+  "account.block_domain": "Block domain {domain}",
+  "account.blocked": "Blocked",
+  "account.browse_more_on_origin_server": "Browse more on the original profile",
+  "account.cancel_follow_request": "Cancel follow request",
+  "account.direct": "Direct message @{name}",
+  "account.domain_blocked": "Domain blocked",
+  "account.edit_profile": "Edit profile",
+  "account.endorse": "Feature on profile",
+  "account.follow": "Follow",
+  "account.followers": "Followers",
+  "account.followers.empty": "No one follows this user yet.",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
+  "account.follows.empty": "This user doesn't follow anyone yet.",
+  "account.follows_you": "Follows you",
+  "account.hide_reblogs": "Hide boosts from @{name}",
+  "account.last_status": "Last active",
+  "account.link_verified_on": "Ownership of this link was checked on {date}",
+  "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
+  "account.media": "Media",
+  "account.mention": "Mention @{name}",
+  "account.moved_to": "{name} has moved to:",
+  "account.mute": "Mute @{name}",
+  "account.mute_notifications": "Mute notifications from @{name}",
+  "account.muted": "Muted",
+  "account.never_active": "Never",
+  "account.posts": "Toots",
+  "account.posts_with_replies": "Toots and replies",
+  "account.report": "Report @{name}",
+  "account.requested": "Awaiting approval",
+  "account.share": "Share @{name}'s profile",
+  "account.show_reblogs": "Show boosts from @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
+  "account.unblock": "Unblock @{name}",
+  "account.unblock_domain": "Unblock domain {domain}",
+  "account.unendorse": "Don't feature on profile",
+  "account.unfollow": "Unfollow",
+  "account.unmute": "Unmute @{name}",
+  "account.unmute_notifications": "Unmute notifications from @{name}",
+  "account_note.placeholder": "Click to add a note",
+  "alert.rate_limited.message": "Please retry after {retry_time, time, medium}.",
+  "alert.rate_limited.title": "Rate limited",
+  "alert.unexpected.message": "An unexpected error occurred.",
+  "alert.unexpected.title": "Oops!",
+  "announcement.announcement": "Announcement",
+  "autosuggest_hashtag.per_week": "{count} per week",
+  "boost_modal.combo": "You can press {combo} to skip this next time",
+  "bundle_column_error.body": "Something went wrong while loading this component.",
+  "bundle_column_error.retry": "Try again",
+  "bundle_column_error.title": "Network error",
+  "bundle_modal_error.close": "Close",
+  "bundle_modal_error.message": "Something went wrong while loading this component.",
+  "bundle_modal_error.retry": "Try again",
+  "column.blocks": "Blocked users",
+  "column.bookmarks": "Bookmarks",
+  "column.community": "Local timeline",
+  "column.direct": "Direct messages",
+  "column.directory": "Browse profiles",
+  "column.domain_blocks": "Blocked domains",
+  "column.favourites": "Favourites",
+  "column.follow_requests": "Follow requests",
+  "column.home": "Home",
+  "column.lists": "Lists",
+  "column.mutes": "Muted users",
+  "column.notifications": "Notifications",
+  "column.pins": "Pinned toot",
+  "column.public": "Federated timeline",
+  "column_back_button.label": "Back",
+  "column_header.hide_settings": "Hide settings",
+  "column_header.moveLeft_settings": "Move column to the left",
+  "column_header.moveRight_settings": "Move column to the right",
+  "column_header.pin": "Pin",
+  "column_header.show_settings": "Show settings",
+  "column_header.unpin": "Unpin",
+  "column_subheading.settings": "Settings",
+  "community.column_settings.local_only": "Local only",
+  "community.column_settings.media_only": "Media only",
+  "community.column_settings.remote_only": "Remote only",
+  "compose_form.direct_message_warning": "This toot will only be sent to all the mentioned users.",
+  "compose_form.direct_message_warning_learn_more": "Learn more",
+  "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.",
+  "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
+  "compose_form.lock_disclaimer.lock": "locked",
+  "compose_form.placeholder": "What is on your mind?",
+  "compose_form.poll.add_option": "Add a choice",
+  "compose_form.poll.duration": "Poll duration",
+  "compose_form.poll.option_placeholder": "Choice {number}",
+  "compose_form.poll.remove_option": "Remove this choice",
+  "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices",
+  "compose_form.poll.switch_to_single": "Change poll to allow for a single choice",
+  "compose_form.publish": "Toot",
+  "compose_form.publish_loud": "{publish}!",
+  "compose_form.sensitive.hide": "Mark media as sensitive",
+  "compose_form.sensitive.marked": "Media is marked as sensitive",
+  "compose_form.sensitive.unmarked": "Media is not marked as sensitive",
+  "compose_form.spoiler.marked": "Text is hidden behind warning",
+  "compose_form.spoiler.unmarked": "Text is not hidden",
+  "compose_form.spoiler_placeholder": "Write your warning here",
+  "confirmation_modal.cancel": "Cancel",
+  "confirmations.block.block_and_report": "Block & Report",
+  "confirmations.block.confirm": "Block",
+  "confirmations.block.message": "Are you sure you want to block {name}?",
+  "confirmations.delete.confirm": "Delete",
+  "confirmations.delete.message": "Are you sure you want to delete this status?",
+  "confirmations.delete_list.confirm": "Delete",
+  "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
+  "confirmations.domain_block.confirm": "Hide entire domain",
+  "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.",
+  "confirmations.logout.confirm": "Log out",
+  "confirmations.logout.message": "Are you sure you want to log out?",
+  "confirmations.mute.confirm": "Mute",
+  "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
+  "confirmations.mute.message": "Are you sure you want to mute {name}?",
+  "confirmations.redraft.confirm": "Delete & redraft",
+  "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.",
+  "confirmations.reply.confirm": "Reply",
+  "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?",
+  "confirmations.unfollow.confirm": "Unfollow",
+  "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
+  "conversation.delete": "Delete conversation",
+  "conversation.mark_as_read": "Mark as read",
+  "conversation.open": "View conversation",
+  "conversation.with": "With {names}",
+  "directory.federated": "From known fediverse",
+  "directory.local": "From {domain} only",
+  "directory.new_arrivals": "New arrivals",
+  "directory.recently_active": "Recently active",
+  "embed.instructions": "Embed this status on your website by copying the code below.",
+  "embed.preview": "Here is what it will look like:",
+  "emoji_button.activity": "Activity",
+  "emoji_button.custom": "Custom",
+  "emoji_button.flags": "Flags",
+  "emoji_button.food": "Food & Drink",
+  "emoji_button.label": "Insert emoji",
+  "emoji_button.nature": "Nature",
+  "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
+  "emoji_button.objects": "Objects",
+  "emoji_button.people": "People",
+  "emoji_button.recent": "Frequently used",
+  "emoji_button.search": "Search...",
+  "emoji_button.search_results": "Search results",
+  "emoji_button.symbols": "Symbols",
+  "emoji_button.travel": "Travel & Places",
+  "empty_column.account_timeline": "No toots here!",
+  "empty_column.account_unavailable": "Profile unavailable",
+  "empty_column.blocks": "You haven't blocked any users yet.",
+  "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.",
+  "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
+  "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
+  "empty_column.domain_blocks": "There are no blocked domains yet.",
+  "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
+  "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.",
+  "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
+  "empty_column.hashtag": "There is nothing in this hashtag yet.",
+  "empty_column.home": "Your home timeline is empty! Visit {public} or use search to get started and meet other users.",
+  "empty_column.home.public_timeline": "the public timeline",
+  "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.",
+  "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
+  "empty_column.mutes": "You haven't muted any users yet.",
+  "empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.",
+  "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other servers to fill it up",
+  "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",
+  "follow_request.authorize": "Authorize",
+  "follow_request.reject": "Reject",
+  "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+  "generic.saved": "Saved",
+  "getting_started.developers": "Developers",
+  "getting_started.directory": "Profile directory",
+  "getting_started.documentation": "Documentation",
+  "getting_started.heading": "Getting started",
+  "getting_started.invite": "Invite people",
+  "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.",
+  "getting_started.security": "Security",
+  "getting_started.terms": "Terms of service",
+  "hashtag.column_header.tag_mode.all": "and {additional}",
+  "hashtag.column_header.tag_mode.any": "or {additional}",
+  "hashtag.column_header.tag_mode.none": "without {additional}",
+  "hashtag.column_settings.select.no_options_message": "No suggestions found",
+  "hashtag.column_settings.select.placeholder": "Enter hashtags…",
+  "hashtag.column_settings.tag_mode.all": "All of these",
+  "hashtag.column_settings.tag_mode.any": "Any of these",
+  "hashtag.column_settings.tag_mode.none": "None of these",
+  "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
+  "home.column_settings.basic": "Basic",
+  "home.column_settings.show_reblogs": "Show boosts",
+  "home.column_settings.show_replies": "Show replies",
+  "home.hide_announcements": "Hide announcements",
+  "home.show_announcements": "Show announcements",
+  "intervals.full.days": "{number, plural, one {# day} other {# days}}",
+  "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
+  "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
+  "introduction.federation.action": "Next",
+  "introduction.federation.federated.headline": "Federated",
+  "introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.",
+  "introduction.federation.home.headline": "Home",
+  "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
+  "introduction.federation.local.headline": "Local",
+  "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
+  "introduction.interactions.action": "Finish toot-orial!",
+  "introduction.interactions.favourite.headline": "Favourite",
+  "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
+  "introduction.interactions.reblog.headline": "Boost",
+  "introduction.interactions.reblog.text": "You can share other people's toots with your followers by boosting them.",
+  "introduction.interactions.reply.headline": "Reply",
+  "introduction.interactions.reply.text": "You can reply to other people's and your own toots, which will chain them together in a conversation.",
+  "introduction.welcome.action": "Let's go!",
+  "introduction.welcome.headline": "First steps",
+  "introduction.welcome.text": "Welcome to the fediverse! In a few moments, you'll be able to broadcast messages and talk to your friends across a wide variety of servers. But this server, {domain}, is special—it hosts your profile, so remember its name.",
+  "keyboard_shortcuts.back": "to navigate back",
+  "keyboard_shortcuts.blocked": "to open blocked users list",
+  "keyboard_shortcuts.boost": "to boost",
+  "keyboard_shortcuts.column": "to focus a status in one of the columns",
+  "keyboard_shortcuts.compose": "to focus the compose textarea",
+  "keyboard_shortcuts.description": "Description",
+  "keyboard_shortcuts.direct": "to open direct messages column",
+  "keyboard_shortcuts.down": "to move down in the list",
+  "keyboard_shortcuts.enter": "to open status",
+  "keyboard_shortcuts.favourite": "to favourite",
+  "keyboard_shortcuts.favourites": "to open favourites list",
+  "keyboard_shortcuts.federated": "to open federated timeline",
+  "keyboard_shortcuts.heading": "Keyboard Shortcuts",
+  "keyboard_shortcuts.home": "to open home timeline",
+  "keyboard_shortcuts.hotkey": "Hotkey",
+  "keyboard_shortcuts.legend": "to display this legend",
+  "keyboard_shortcuts.local": "to open local timeline",
+  "keyboard_shortcuts.mention": "to mention author",
+  "keyboard_shortcuts.muted": "to open muted users list",
+  "keyboard_shortcuts.my_profile": "to open your profile",
+  "keyboard_shortcuts.notifications": "to open notifications column",
+  "keyboard_shortcuts.open_media": "to open media",
+  "keyboard_shortcuts.pinned": "to open pinned toots list",
+  "keyboard_shortcuts.profile": "to open author's profile",
+  "keyboard_shortcuts.reply": "to reply",
+  "keyboard_shortcuts.requests": "to open follow requests list",
+  "keyboard_shortcuts.search": "to focus search",
+  "keyboard_shortcuts.spoilers": "to show/hide CW field",
+  "keyboard_shortcuts.start": "to open \"get started\" column",
+  "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
+  "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
+  "keyboard_shortcuts.toot": "to start a brand new toot",
+  "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
+  "keyboard_shortcuts.up": "to move up in the list",
+  "lightbox.close": "Close",
+  "lightbox.next": "Next",
+  "lightbox.previous": "Previous",
+  "lightbox.view_context": "View context",
+  "lists.account.add": "Add to list",
+  "lists.account.remove": "Remove from list",
+  "lists.delete": "Delete list",
+  "lists.edit": "Edit list",
+  "lists.edit.submit": "Change title",
+  "lists.new.create": "Add list",
+  "lists.new.title_placeholder": "New list title",
+  "lists.search": "Search among people you follow",
+  "lists.subheading": "Your lists",
+  "load_pending": "{count, plural, one {# new item} other {# new items}}",
+  "loading_indicator.label": "Loading...",
+  "media_gallery.toggle_visible": "Hide {number, plural, one {image} other {images}}",
+  "missing_indicator.label": "Not found",
+  "missing_indicator.sublabel": "This resource could not be found",
+  "mute_modal.hide_notifications": "Hide notifications from this user?",
+  "navigation_bar.apps": "Mobile apps",
+  "navigation_bar.blocks": "Blocked users",
+  "navigation_bar.bookmarks": "Bookmarks",
+  "navigation_bar.community_timeline": "Local timeline",
+  "navigation_bar.compose": "Compose new toot",
+  "navigation_bar.direct": "Direct messages",
+  "navigation_bar.discover": "Discover",
+  "navigation_bar.domain_blocks": "Hidden domains",
+  "navigation_bar.edit_profile": "Edit profile",
+  "navigation_bar.favourites": "Favourites",
+  "navigation_bar.filters": "Muted words",
+  "navigation_bar.follow_requests": "Follow requests",
+  "navigation_bar.follows_and_followers": "Follows and followers",
+  "navigation_bar.info": "About this server",
+  "navigation_bar.keyboard_shortcuts": "Hotkeys",
+  "navigation_bar.lists": "Lists",
+  "navigation_bar.logout": "Logout",
+  "navigation_bar.mutes": "Muted users",
+  "navigation_bar.personal": "Personal",
+  "navigation_bar.pins": "Pinned toots",
+  "navigation_bar.preferences": "Preferences",
+  "navigation_bar.public_timeline": "Federated timeline",
+  "navigation_bar.security": "Security",
+  "notification.favourite": "{name} favourited your status",
+  "notification.follow": "{name} followed you",
+  "notification.follow_request": "{name} has requested to follow you",
+  "notification.mention": "{name} mentioned you",
+  "notification.own_poll": "Your poll has ended",
+  "notification.poll": "A poll you have voted in has ended",
+  "notification.reblog": "{name} boosted your status",
+  "notifications.clear": "Clear notifications",
+  "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
+  "notifications.column_settings.alert": "Desktop notifications",
+  "notifications.column_settings.favourite": "Favourites:",
+  "notifications.column_settings.filter_bar.advanced": "Display all categories",
+  "notifications.column_settings.filter_bar.category": "Quick filter bar",
+  "notifications.column_settings.filter_bar.show": "Show",
+  "notifications.column_settings.follow": "New followers:",
+  "notifications.column_settings.follow_request": "New follow requests:",
+  "notifications.column_settings.mention": "Mentions:",
+  "notifications.column_settings.poll": "Poll results:",
+  "notifications.column_settings.push": "Push notifications",
+  "notifications.column_settings.reblog": "Boosts:",
+  "notifications.column_settings.show": "Show in column",
+  "notifications.column_settings.sound": "Play sound",
+  "notifications.filter.all": "All",
+  "notifications.filter.boosts": "Boosts",
+  "notifications.filter.favourites": "Favourites",
+  "notifications.filter.follows": "Follows",
+  "notifications.filter.mentions": "Mentions",
+  "notifications.filter.polls": "Poll results",
+  "notifications.group": "{count} notifications",
+  "poll.closed": "Closed",
+  "poll.refresh": "Refresh",
+  "poll.total_people": "{count, plural, one {# person} other {# people}}",
+  "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
+  "poll.vote": "Vote",
+  "poll.voted": "You voted for this answer",
+  "poll_button.add_poll": "Add a poll",
+  "poll_button.remove_poll": "Remove poll",
+  "privacy.change": "Adjust status privacy",
+  "privacy.direct.long": "Visible for mentioned users only",
+  "privacy.direct.short": "Direct",
+  "privacy.private.long": "Visible for followers only",
+  "privacy.private.short": "Followers-only",
+  "privacy.public.long": "Visible for all, shown in public timelines",
+  "privacy.public.short": "Public",
+  "privacy.unlisted.long": "Visible for all, but not in public timelines",
+  "privacy.unlisted.short": "Unlisted",
+  "refresh": "Refresh",
+  "regeneration_indicator.label": "Loading…",
+  "regeneration_indicator.sublabel": "Your home feed is being prepared!",
+  "relative_time.days": "{number}d",
+  "relative_time.hours": "{number}h",
+  "relative_time.just_now": "now",
+  "relative_time.minutes": "{number}m",
+  "relative_time.seconds": "{number}s",
+  "relative_time.today": "today",
+  "reply_indicator.cancel": "Cancel",
+  "report.forward": "Forward to {target}",
+  "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
+  "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:",
+  "report.placeholder": "Additional comments",
+  "report.submit": "Submit",
+  "report.target": "Report {target}",
+  "search.placeholder": "Search",
+  "search_popout.search_format": "Advanced search format",
+  "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
+  "search_popout.tips.hashtag": "hashtag",
+  "search_popout.tips.status": "status",
+  "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
+  "search_popout.tips.user": "user",
+  "search_results.accounts": "People",
+  "search_results.hashtags": "Hashtags",
+  "search_results.statuses": "Toots",
+  "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.",
+  "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
+  "status.admin_account": "Open moderation interface for @{name}",
+  "status.admin_status": "Open this status in the moderation interface",
+  "status.block": "Block @{name}",
+  "status.bookmark": "Bookmark",
+  "status.cancel_reblog_private": "Unboost",
+  "status.cannot_reblog": "This post cannot be boosted",
+  "status.copy": "Copy link to status",
+  "status.delete": "Delete",
+  "status.detailed_status": "Detailed conversation view",
+  "status.direct": "Direct message @{name}",
+  "status.embed": "Embed",
+  "status.favourite": "Favourite",
+  "status.filtered": "Filtered",
+  "status.load_more": "Load more",
+  "status.media_hidden": "Media hidden",
+  "status.mention": "Mention @{name}",
+  "status.more": "More",
+  "status.mute": "Mute @{name}",
+  "status.mute_conversation": "Mute conversation",
+  "status.open": "Expand this status",
+  "status.pin": "Pin on profile",
+  "status.pinned": "Pinned toot",
+  "status.read_more": "Read more",
+  "status.reblog": "Boost",
+  "status.reblog_private": "Boost to original audience",
+  "status.reblogged_by": "{name} boosted",
+  "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
+  "status.redraft": "Delete & re-draft",
+  "status.remove_bookmark": "Remove bookmark",
+  "status.reply": "Reply",
+  "status.replyAll": "Reply to thread",
+  "status.report": "Report @{name}",
+  "status.sensitive_warning": "Sensitive content",
+  "status.share": "Share",
+  "status.show_less": "Show less",
+  "status.show_less_all": "Show less for all",
+  "status.show_more": "Show more",
+  "status.show_more_all": "Show more for all",
+  "status.show_thread": "Show thread",
+  "status.uncached_media_warning": "Not available",
+  "status.unmute_conversation": "Unmute conversation",
+  "status.unpin": "Unpin from profile",
+  "suggestions.dismiss": "Dismiss suggestion",
+  "suggestions.header": "You might be interested in…",
+  "tabs_bar.federated_timeline": "Federated",
+  "tabs_bar.home": "Home",
+  "tabs_bar.local_timeline": "Local",
+  "tabs_bar.notifications": "Notifications",
+  "tabs_bar.search": "Search",
+  "time_remaining.days": "{number, plural, one {# day} other {# days}} left",
+  "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
+  "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
+  "time_remaining.moments": "Moments remaining",
+  "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
+  "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
+  "timeline_hint.resources.followers": "Followers",
+  "timeline_hint.resources.follows": "Follows",
+  "timeline_hint.resources.statuses": "Older toots",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
+  "trends.trending_now": "Trending now",
+  "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
+  "upload_area.title": "Drag & drop to upload",
+  "upload_button.label": "Add images, a video or an audio file",
+  "upload_error.limit": "File upload limit exceeded.",
+  "upload_error.poll": "File upload not allowed with polls.",
+  "upload_form.audio_description": "Describe for people with hearing loss",
+  "upload_form.description": "Describe for the visually impaired",
+  "upload_form.edit": "Edit",
+  "upload_form.thumbnail": "Change thumbnail",
+  "upload_form.undo": "Delete",
+  "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
+  "upload_modal.analyzing_picture": "Analyzing picture…",
+  "upload_modal.apply": "Apply",
+  "upload_modal.choose_image": "Choose image",
+  "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
+  "upload_modal.detect_text": "Detect text from picture",
+  "upload_modal.edit_media": "Edit media",
+  "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
+  "upload_modal.preview_label": "Preview ({ratio})",
+  "upload_progress.label": "Uploading…",
+  "video.close": "Close video",
+  "video.download": "Download file",
+  "video.exit_fullscreen": "Exit full screen",
+  "video.expand": "Expand video",
+  "video.fullscreen": "Full screen",
+  "video.hide": "Hide video",
+  "video.mute": "Mute sound",
+  "video.pause": "Pause",
+  "video.play": "Play",
+  "video.unmute": "Unmute sound"
+}
diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json
index 2115aeec5..18e151263 100644
--- a/app/javascript/mastodon/locales/uk.json
+++ b/app/javascript/mastodon/locales/uk.json
@@ -1,13 +1,12 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Ваша примітка для @{name}",
   "account.add_or_remove_from_list": "Додати або видалити зі списків",
   "account.badges.bot": "Бот",
   "account.badges.group": "Група",
   "account.block": "Заблокувати @{name}",
   "account.block_domain": "Заглушити {domain}",
   "account.blocked": "Заблоковані",
-  "account.browse_more_on_origin_server": "Browse more on the original profile",
+  "account.browse_more_on_origin_server": "Переглянути більше в оригіналі",
   "account.cancel_follow_request": "Скасувати запит на підписку",
   "account.direct": "Пряме повідомлення @{name}",
   "account.domain_blocked": "Домен приховано",
@@ -16,7 +15,8 @@
   "account.follow": "Підписатися",
   "account.followers": "Підписники",
   "account.followers.empty": "Ніхто ще не підписався на цього користувача.",
-  "account.follows": "Підписки",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "Цей користувач ще ні на кого не підписався.",
   "account.follows_you": "Підписаний(-а) на вас",
   "account.hide_reblogs": "Сховати передмухи від @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Очікує підтвердження. Натисніть щоб відмінити запит",
   "account.share": "Поділитися профілем @{name}",
   "account.show_reblogs": "Показати передмухи від @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Розблокувати @{name}",
   "account.unblock_domain": "Розблокувати {domain}",
   "account.unendorse": "Не публікувати у профілі",
   "account.unfollow": "Відписатися",
   "account.unmute": "Зняти глушення з @{name}",
   "account.unmute_notifications": "Показувати сповіщення від @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Коментарі відсутні",
   "alert.rate_limited.message": "Спробуйте ще раз через {retry_time, time, medium}.",
   "alert.rate_limited.title": "Швидкість обмежена",
   "alert.unexpected.message": "Трапилась неочікувана помилка.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Авторизувати",
   "follow_request.reject": "Відмовити",
   "follow_requests.unlocked_explanation": "Хоча ваш обліковий запис не заблоковано, працівники {domain} припускають, що, можливо, ви хотіли б переглянути ці запити на підписку.",
+  "generic.saved": "Saved",
   "getting_started.developers": "Розробникам",
   "getting_started.directory": "Каталог профілів",
   "getting_started.documentation": "Документація",
@@ -243,7 +242,7 @@
   "keyboard_shortcuts.reply": "відповісти",
   "keyboard_shortcuts.requests": "відкрити список бажаючих підписатися",
   "keyboard_shortcuts.search": "сфокусуватися на пошуку",
-  "keyboard_shortcuts.spoilers": "to show/hide CW field",
+  "keyboard_shortcuts.spoilers": "показати/приховати поле CW",
   "keyboard_shortcuts.start": "відкрити колонку \"Початок\"",
   "keyboard_shortcuts.toggle_hidden": "показати/приховати текст під попередженням",
   "keyboard_shortcuts.toggle_sensitivity": "показати/приховати медіа",
@@ -420,13 +419,16 @@
   "time_remaining.minutes": "{number, plural, one {# хвилина} few {# хвилини} other {# хвилин}}",
   "time_remaining.moments": "Залишилось секунд",
   "time_remaining.seconds": "{number, plural, one {# секунда} few {# секунди} other {# секунд}}",
-  "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
-  "timeline_hint.resources.followers": "Followers",
-  "timeline_hint.resources.follows": "Follows",
-  "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {людина} few {людини} many {людей} other {людей}} обговорюють це",
+  "timeline_hint.remote_resource_not_displayed": "{resource} з інших серверів не відображається.",
+  "timeline_hint.resources.followers": "Підписники",
+  "timeline_hint.resources.follows": "Підписки",
+  "timeline_hint.resources.statuses": "Старіші дмухи",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Актуальні",
   "ui.beforeunload": "Вашу чернетку буде втрачено, якщо ви покинете Mastodon.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Перетягніть сюди, щоб завантажити",
   "upload_button.label": "Додати медіа ({formats})",
   "upload_error.limit": "Ліміт завантаження файлів перевищено.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Опишіть для людей із вадами слуху",
   "upload_form.description": "Опишіть для людей з вадами зору",
   "upload_form.edit": "Змінити",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Видалити",
   "upload_form.video_description": "Опишіть для людей із вадами слуху або зору",
   "upload_modal.analyzing_picture": "Аналізуємо малюнок…",
   "upload_modal.apply": "Застосувати",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "Щурячий бугай із їжаком-харцизом в'ючись підписали ґешефт у єнах",
   "upload_modal.detect_text": "Виявити текст на малюнку",
   "upload_modal.edit_media": "Редагувати медіа",
diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json
index 79e2bfaf1..5924d1487 100644
--- a/app/javascript/mastodon/locales/ur.json
+++ b/app/javascript/mastodon/locales/ur.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "فہرست میں شامل یا برطرف کریں",
   "account.badges.bot": "روبوٹ",
   "account.badges.group": "Group",
@@ -16,7 +15,8 @@
   "account.follow": "پیروی کریں",
   "account.followers": "پیروکار",
   "account.followers.empty": "\"ہنوز اس صارف کی کوئی پیروی نہیں کرتا\".",
-  "account.follows": "پیروی کرتے ہیں",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "\"یہ صارف ہنوز کسی کی پیروی نہیں کرتا ہے\".",
   "account.follows_you": "آپ کا پیروکار ہے",
   "account.hide_reblogs": "@{name} سے فروغ چھپائیں",
@@ -36,16 +36,14 @@
   "account.requested": "منظوری کا منتظر۔ درخواستِ پیروی منسوخ کرنے کیلئے کلک کریں",
   "account.share": "@{name} کے مشخص کو بانٹیں",
   "account.show_reblogs": "@{name} کی افزائشات کو دکھائیں",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "@{name} کو بحال کریں",
   "account.unblock_domain": "{domain} کو نہ چھپائیں",
   "account.unendorse": "مشخص پر نمایاں نہ کریں",
   "account.unfollow": "پیروی ترک کریں",
   "account.unmute": "@{name} کو با آواز کریں",
   "account.unmute_notifications": "@{name} سے اطلاعات کو با آواز کریں",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "\"{retry_time, time, medium} کے بعد کوشش کریں\".",
   "alert.rate_limited.title": "Rate limited",
   "alert.unexpected.message": "ایک غیر متوقع سہو ہوا ہے.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "اجازت دیں",
   "follow_request.reject": "انکار کریں",
   "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+  "generic.saved": "Saved",
   "getting_started.developers": "Developers",
   "getting_started.directory": "فہرست مشخصات",
   "getting_started.documentation": "اسناد",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "Trending now",
   "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Drag & drop to upload",
   "upload_button.label": "Add images, a video or an audio file",
   "upload_error.limit": "File upload limit exceeded.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Describe for people with hearing loss",
   "upload_form.description": "Describe for the visually impaired",
   "upload_form.edit": "Edit",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Delete",
   "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
   "upload_modal.analyzing_picture": "Analyzing picture…",
   "upload_modal.apply": "Apply",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
   "upload_modal.detect_text": "Detect text from picture",
   "upload_modal.edit_media": "Edit media",
diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json
index 3bdd8c233..4f0768744 100644
--- a/app/javascript/mastodon/locales/vi.json
+++ b/app/javascript/mastodon/locales/vi.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Ghi chú của bạn cho @{name}",
   "account.add_or_remove_from_list": "Thêm hoặc Xóa khỏi danh sách",
   "account.badges.bot": "Bot",
   "account.badges.group": "Nhóm",
@@ -16,7 +15,8 @@
   "account.follow": "Theo dõi",
   "account.followers": "Người theo dõi",
   "account.followers.empty": "Chưa có người theo dõi.",
-  "account.follows": "Đang theo dõi",
+  "account.followers_counter": "{count, plural, one {{counter} Người mến mộ} other {{counter} Người mến mộ}}",
+  "account.following_counter": "{count, plural, other {{counter} Đang mến mộ}}",
   "account.follows.empty": "Người dùng này chưa theo dõi ai.",
   "account.follows_you": "Đang theo dõi bạn",
   "account.hide_reblogs": "Ẩn chia sẻ từ @{name}",
@@ -36,16 +36,14 @@
   "account.requested": "Đang chờ chấp thuận. Nhấp vào đây để hủy yêu cầu theo dõi",
   "account.share": "Chia sẻ hồ sơ @{name}",
   "account.show_reblogs": "Hiện chia sẻ từ @{name}",
+  "account.statuses_counter": "{count, plural, other {{counter} Tút}}",
   "account.unblock": "Bỏ chặn @{name}",
   "account.unblock_domain": "Bỏ chặn miền {domain}",
   "account.unendorse": "Không hiện trên trang cá nhân",
   "account.unfollow": "Ngừng theo dõi",
   "account.unmute": "Bỏ ẩn @{name}",
   "account.unmute_notifications": "Hiển lại thông báo từ @{name}",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Không nói gì thêm",
   "alert.rate_limited.message": "Vui lòng thử lại sau {retry_time, time, medium}.",
   "alert.rate_limited.title": "Vượt giới hạn",
   "alert.unexpected.message": "Đã xảy ra lỗi không mong muốn.",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "Cho phép",
   "follow_request.reject": "Từ chối",
   "follow_requests.unlocked_explanation": "Mặc dù tài khoản của bạn đang ở chế độ công khai, quản trị viên của {domain} vẫn tin rằng bạn sẽ muốn xem lại yêu cầu mến mộ từ những người khác.",
+  "generic.saved": "Đã lưu",
   "getting_started.developers": "Nhà phát triển",
   "getting_started.directory": "Danh sách người dùng",
   "getting_started.documentation": "Tài liệu",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Người theo dõi",
   "timeline_hint.resources.follows": "Đang theo dõi",
   "timeline_hint.resources.statuses": "Tút cũ hơn",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} đang thảo luận",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} người} other {{counter} người}} đang thảo luận về vấn đề này",
   "trends.trending_now": "Xu hướng",
   "ui.beforeunload": "Bản nháp của bạn sẽ bị mất nếu bạn thoát khỏi Mastodon.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "Kéo và thả để tải lên",
   "upload_button.label": "Thêm media (JPEG, PNG, GIF, WebM, MP4, MOV)",
   "upload_error.limit": "Tập tin tải lên vượt quá giới hạn cho phép.",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "Mô tả cho người thính giác kém",
   "upload_form.description": "Mô tả cho người khiếm thị",
   "upload_form.edit": "Biên tập",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Xóa bỏ",
   "upload_form.video_description": "Mô tả cho người có vấn đề về thính giác",
   "upload_modal.analyzing_picture": "Phân tích hình ảnh",
   "upload_modal.apply": "Áp dụng",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
   "upload_modal.detect_text": "Phát hiện văn bản trong hình ảnh",
   "upload_modal.edit_media": "Chỉnh sửa ảnh/video",
diff --git a/app/javascript/mastodon/locales/whitelist_ku.json b/app/javascript/mastodon/locales/whitelist_ku.json
new file mode 100644
index 000000000..0d4f101c7
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_ku.json
@@ -0,0 +1,2 @@
+[
+]
diff --git a/app/javascript/mastodon/locales/whitelist_ug.json b/app/javascript/mastodon/locales/whitelist_ug.json
new file mode 100644
index 000000000..0d4f101c7
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_ug.json
@@ -0,0 +1,2 @@
+[
+]
diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json
index 222d3aed8..58c55c045 100644
--- a/app/javascript/mastodon/locales/zh-CN.json
+++ b/app/javascript/mastodon/locales/zh-CN.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "你对 @{name} 的备注",
   "account.add_or_remove_from_list": "从列表中添加或删除",
   "account.badges.bot": "机器人",
   "account.badges.group": "群组",
@@ -16,7 +15,8 @@
   "account.follow": "关注",
   "account.followers": "关注者",
   "account.followers.empty": "目前无人关注此用户。",
-  "account.follows": "正在关注",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "此用户目前尚未关注任何人。",
   "account.follows_you": "关注了你",
   "account.hide_reblogs": "隐藏来自 @{name} 的转嘟",
@@ -36,16 +36,14 @@
   "account.requested": "正在等待对方同意。点击以取消发送关注请求",
   "account.share": "分享 @{name} 的个人资料",
   "account.show_reblogs": "显示来自 @{name} 的转嘟",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "解除屏蔽 @{name}",
   "account.unblock_domain": "不再隐藏来自 {domain} 的内容",
   "account.unendorse": "不在个人资料中推荐此用户",
   "account.unfollow": "取消关注",
   "account.unmute": "不再隐藏 @{name}",
   "account.unmute_notifications": "不再隐藏来自 @{name} 的通知",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "没有备注",
   "alert.rate_limited.message": "请在{retry_time, time, medium}后重试。",
   "alert.rate_limited.title": "频率受限",
   "alert.unexpected.message": "发生了意外错误。",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "同意",
   "follow_request.reject": "拒绝",
   "follow_requests.unlocked_explanation": "虽说你没有锁嘟,但是 {domain} 的工作人员觉得你可能想手工审核关注请求。",
+  "generic.saved": "Saved",
   "getting_started.developers": "开发",
   "getting_started.directory": "用户目录",
   "getting_started.documentation": "文档",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "关注者",
   "timeline_hint.resources.follows": "关注",
   "timeline_hint.resources.statuses": "更早的嘟文",
-  "trends.count_by_accounts": "{count} 人正在讨论",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "现在流行",
   "ui.beforeunload": "如果你现在离开 Mastodon,你的草稿内容将会丢失。",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "将文件拖放到此处开始上传",
   "upload_button.label": "上传媒体文件 ({formats})",
   "upload_error.limit": "文件大小超过限制。",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "为听障人士添加文字描述",
   "upload_form.description": "为视觉障碍人士添加文字说明",
   "upload_form.edit": "编辑",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "删除",
   "upload_form.video_description": "为听障人士和视障人士添加文字描述",
   "upload_modal.analyzing_picture": "分析图片…",
   "upload_modal.apply": "应用",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "天地玄黄 宇宙洪荒 日月盈仄 辰宿列张",
   "upload_modal.detect_text": "从图片中检测文本",
   "upload_modal.edit_media": "编辑媒体",
diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json
index 222855c2c..b537ca4f3 100644
--- a/app/javascript/mastodon/locales/zh-HK.json
+++ b/app/javascript/mastodon/locales/zh-HK.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "從名單中新增或移除",
   "account.badges.bot": "機械人",
   "account.badges.group": "群組",
@@ -16,13 +15,14 @@
   "account.follow": "關注",
   "account.followers": "關注的人",
   "account.followers.empty": "尚沒有人關注這位使用者。",
-  "account.follows": "正關注",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "這位使用者尚未關注任何使用者。",
   "account.follows_you": "關注你",
   "account.hide_reblogs": "隱藏 @{name} 的轉推",
   "account.last_status": "上次活躍時間",
   "account.link_verified_on": "此連結的所有權已在 {date} 檢查過",
-  "account.locked_info": "這隻帳戶的隱私狀態被設成鎖定。該擁有者會手動審核能關注這隻帳號的人。",
+  "account.locked_info": "此用戶的私隱狀態為不公開,關注請求需經過該用戶的審核。",
   "account.media": "媒體",
   "account.mention": "提及 @{name}",
   "account.moved_to": "{name} 已經遷移到:",
@@ -36,16 +36,14 @@
   "account.requested": "等候審批",
   "account.share": "分享 @{name} 的個人資料",
   "account.show_reblogs": "顯示 @{name} 的推文",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "解除對 @{name} 的封鎖",
   "account.unblock_domain": "不再隱藏 {domain}",
   "account.unendorse": "不再於個人資料頁面推薦對方",
   "account.unfollow": "取消關注",
   "account.unmute": "取消 @{name} 的靜音",
   "account.unmute_notifications": "取消來自 @{name} 通知的靜音",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "請在 {retry_time, time, medium} 過後重試",
   "alert.rate_limited.title": "已限速",
   "alert.unexpected.message": "發生不可預期的錯誤。",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "批准",
   "follow_request.reject": "拒絕",
   "follow_requests.unlocked_explanation": "即便您的帳號未被鎖定,{domain} 的員工認為可能想要自己審核這些帳號的追蹤請求。",
+  "generic.saved": "Saved",
   "getting_started.developers": "開發者",
   "getting_started.directory": "個人資料目錄",
   "getting_started.documentation": "文件",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} 位用戶在討論",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "目前趨勢",
   "ui.beforeunload": "如果你現在離開 Mastodon,你的草稿內容將會被丟棄。",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "將檔案拖放至此上載",
   "upload_button.label": "上載媒體檔案",
   "upload_error.limit": "已達到檔案上傳限制。",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "簡單描述內容給聽障人士",
   "upload_form.description": "為視覺障礙人士添加文字說明",
   "upload_form.edit": "編輯",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "刪除",
   "upload_form.video_description": "簡單描述給聽障或視障人士",
   "upload_modal.analyzing_picture": "正在分析圖片…",
   "upload_modal.apply": "套用",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "A quick brown fox 跳過那隻懶狗",
   "upload_modal.detect_text": "從圖片偵測文字",
   "upload_modal.edit_media": "編輯媒體",
diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json
index 81c13c652..d674734c1 100644
--- a/app/javascript/mastodon/locales/zh-TW.json
+++ b/app/javascript/mastodon/locales/zh-TW.json
@@ -1,6 +1,5 @@
 {
-  "account.account_note_header": "Your note for @{name}",
-  "account.add_account_note": "Add note for @{name}",
+  "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "從名單中新增或移除",
   "account.badges.bot": "機器人",
   "account.badges.group": "群組",
@@ -16,7 +15,8 @@
   "account.follow": "關注",
   "account.followers": "關注者",
   "account.followers.empty": "尚沒有人關注這位使用者。",
-  "account.follows": "正在關注",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following_counter": "{count, plural, other {{counter} Following}}",
   "account.follows.empty": "這位使用者尚未關注任何使用者。",
   "account.follows_you": "關注了你",
   "account.hide_reblogs": "隱藏來自 @{name} 的轉推",
@@ -36,16 +36,14 @@
   "account.requested": "正在等待核准。按一下取消關注請求",
   "account.share": "分享 @{name} 的個人資料",
   "account.show_reblogs": "顯示來自 @{name} 的嘟文",
+  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "取消封鎖 @{name}",
   "account.unblock_domain": "取消隱藏 {domain}",
   "account.unendorse": "不再於個人資料頁面推薦對方",
   "account.unfollow": "取消關注",
   "account.unmute": "取消靜音 @{name}",
   "account.unmute_notifications": "重新接收來自 @{name} 的通知",
-  "account_note.cancel": "Cancel",
-  "account_note.edit": "Edit",
-  "account_note.placeholder": "No comment provided",
-  "account_note.save": "Save",
+  "account_note.placeholder": "Click to add a note",
   "alert.rate_limited.message": "請在 {retry_time, time, medium} 過後重試",
   "alert.rate_limited.title": "已限速",
   "alert.unexpected.message": "發生了非預期的錯誤。",
@@ -174,6 +172,7 @@
   "follow_request.authorize": "授權",
   "follow_request.reject": "拒絕",
   "follow_requests.unlocked_explanation": "即便您的帳號未被鎖定,{domain} 的員工認為可能想要自己審核這些帳號的追蹤請求。",
+  "generic.saved": "Saved",
   "getting_started.developers": "開發者",
   "getting_started.directory": "個人資料目錄",
   "getting_started.documentation": "文件",
@@ -424,9 +423,12 @@
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.count_by_accounts": "{count} 位使用者在討論",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
   "trends.trending_now": "目前趨勢",
   "ui.beforeunload": "如果離開 Mastodon,你的草稿將會不見。",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}K",
   "upload_area.title": "拖放來上傳",
   "upload_button.label": "上傳媒體檔案 (JPEG, PNG, GIF, WebM, MP4, MOV)",
   "upload_error.limit": "已達到檔案上傳限制。",
@@ -434,10 +436,12 @@
   "upload_form.audio_description": "簡單描述內容給聽障人士",
   "upload_form.description": "為視障人士增加文字說明",
   "upload_form.edit": "編輯",
+  "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "刪除",
   "upload_form.video_description": "簡單描述給聽障或視障人士",
   "upload_modal.analyzing_picture": "正在分析圖片…",
   "upload_modal.apply": "套用",
+  "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "A quick brown fox 跳過那隻懶狗",
   "upload_modal.detect_text": "從圖片偵測文字",
   "upload_modal.edit_media": "編輯媒體",