From f99e05710ea06cf10bbd3fb64ae8c00b095cb455 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
 <41898282+github-actions[bot]@users.noreply.github.com>
Date: Mon, 18 Dec 2023 09:25:21 +0100
Subject: [PATCH 01/15] New Crowdin Translations (automated) (#28373)

Co-authored-by: GitHub Actions <noreply@github.com>
---
 app/javascript/mastodon/locales/fil.json   | 146 +++++++-
 app/javascript/mastodon/locales/ia.json    |  23 ++
 app/javascript/mastodon/locales/ie.json    | 392 +++++++++++++++++++++
 app/javascript/mastodon/locales/io.json    |  57 ++-
 app/javascript/mastodon/locales/lad.json   | 139 ++++++++
 app/javascript/mastodon/locales/pa.json    | 288 ++++++++++-----
 app/javascript/mastodon/locales/sk.json    |   1 +
 app/javascript/mastodon/locales/th.json    |   2 +-
 app/javascript/mastodon/locales/ug.json    |   2 +
 app/javascript/mastodon/locales/zh-TW.json |  16 +-
 config/locales/activerecord.ia.yml         |   8 +
 config/locales/activerecord.ie.yml         |   1 +
 config/locales/activerecord.lad.yml        |  51 +++
 config/locales/activerecord.pa.yml         |  22 ++
 config/locales/devise.ia.yml               |   1 +
 config/locales/devise.ie.yml               |   1 +
 config/locales/devise.io.yml               |   4 +-
 config/locales/devise.lad.yml              |   1 +
 config/locales/devise.pa.yml               |  17 +
 config/locales/doorkeeper.ia.yml           |   1 +
 config/locales/doorkeeper.ie.yml           |  11 +
 config/locales/doorkeeper.io.yml           |   2 +
 config/locales/doorkeeper.lad.yml          |   1 +
 config/locales/doorkeeper.pa.yml           |  84 +++++
 config/locales/eu.yml                      |   7 +
 config/locales/ia.yml                      |  52 +++
 config/locales/ie.yml                      |  68 ++++
 config/locales/io.yml                      | 275 ++++++++++++++-
 config/locales/lad.yml                     |   1 +
 config/locales/pa.yml                      | 160 +++++++++
 config/locales/simple_form.ia.yml          |   1 +
 config/locales/simple_form.ie.yml          |  23 ++
 config/locales/simple_form.io.yml          |  48 ++-
 config/locales/simple_form.lad.yml         |   1 +
 config/locales/sk.yml                      |   1 +
 config/locales/zh-TW.yml                   |   4 +-
 36 files changed, 1779 insertions(+), 133 deletions(-)
 create mode 100644 app/javascript/mastodon/locales/ia.json
 create mode 100644 app/javascript/mastodon/locales/ie.json
 create mode 100644 app/javascript/mastodon/locales/lad.json
 create mode 100644 config/locales/activerecord.ia.yml
 create mode 100644 config/locales/activerecord.ie.yml
 create mode 100644 config/locales/activerecord.lad.yml
 create mode 100644 config/locales/devise.ia.yml
 create mode 100644 config/locales/devise.ie.yml
 create mode 100644 config/locales/devise.lad.yml
 create mode 100644 config/locales/doorkeeper.ia.yml
 create mode 100644 config/locales/doorkeeper.ie.yml
 create mode 100644 config/locales/doorkeeper.lad.yml
 create mode 100644 config/locales/ia.yml
 create mode 100644 config/locales/ie.yml
 create mode 100644 config/locales/lad.yml
 create mode 100644 config/locales/simple_form.ia.yml
 create mode 100644 config/locales/simple_form.ie.yml
 create mode 100644 config/locales/simple_form.lad.yml

diff --git a/app/javascript/mastodon/locales/fil.json b/app/javascript/mastodon/locales/fil.json
index 0967ef424..bc7635887 100644
--- a/app/javascript/mastodon/locales/fil.json
+++ b/app/javascript/mastodon/locales/fil.json
@@ -1 +1,145 @@
-{}
+{
+  "about.blocks": "Mga pinatimping server",
+  "about.contact": "Kontak:",
+  "about.disclaimer": "Ang Mastodon ay software na malaya at bukas-na-pinagmulan, at isang tatak-pangkalakal ng Mastodon gGmbH.",
+  "about.domain_blocks.no_reason_available": "Hindi makuha ang dahilan",
+  "about.domain_blocks.silenced.title": "Limitado",
+  "about.domain_blocks.suspended.title": "Suspendido",
+  "about.rules": "Mga alituntunin ng server",
+  "account.account_note_header": "Tala",
+  "account.add_or_remove_from_list": "I-dagdag o tanggalin mula sa mga listahan",
+  "account.badges.bot": "Pakusa",
+  "account.badges.group": "Pangkat",
+  "account.block": "Hadlangan si @{name}",
+  "account.block_domain": "Hadlangan ang domain na {domain}",
+  "account.block_short": "Hadlangan",
+  "account.blocked": "Hinadlangan",
+  "account.browse_more_on_origin_server": "Tingnan pa sa pangunahing profile",
+  "account.cancel_follow_request": "I-kansela ang pagsunod",
+  "account.copy": "I-sipi ang kawing sa profile",
+  "account.direct": "Palihim banggitin si @{name}",
+  "account.disable_notifications": "I-tigil ang pagpapaalam sa akin tuwing nagpopost si @{name}",
+  "account.domain_blocked": "Hinadlangan ang domain",
+  "account.edit_profile": "Baguhin ang profile",
+  "account.enable_notifications": "Ipaalam sa akin kapag nag-post si @{name}",
+  "account.endorse": "I-tampok sa profile",
+  "account.featured_tags.last_status_at": "Huling post noong {date}",
+  "account.featured_tags.last_status_never": "Walang mga post",
+  "account.featured_tags.title": "Nakatampok na hashtag ni {name}",
+  "account.follow": "Sundan",
+  "account.followers": "Mga tagasunod",
+  "account.followers.empty": "Wala pang sumusunod sa tagagamit na ito.",
+  "account.following": "Sinusundan",
+  "account.follows.empty": "Wala pang sinusundan ang tagagamit na ito.",
+  "account.follows_you": "Sinusunod ka",
+  "account.go_to_profile": "Pumunta sa profile",
+  "account.hide_reblogs": "Itago ang mga pagpapalakas mula sa {name}",
+  "account.in_memoriam": "Sa Alaala Ni.",
+  "account.joined_short": "Sumali",
+  "account.languages": "Palitan ang mga nakasumuscribing wika",
+  "account.link_verified_on": "Sinuri ang pagmamay-ari ng kawing ito sa {date}",
+  "account.locked_info": "Nakakandado ang pagsasariling kalagayan ng account na ito. Manomano sinusuri ng may-ari kung sino ang maaaring sumunod sa kanya.",
+  "account.media": "Medya",
+  "account.mention": "Banggitin si @{name}",
+  "account.moved_to": "Ipinahihiwatig ni {name} na ang kanilang bagong account ngayon ay:",
+  "bundle_column_error.error.title": "Naku!",
+  "bundle_column_error.network.body": "Nagkaroon ng kamalian habang sinusubukang i-karga ang pahinang ito. Maaaring dahil ito sa pansamantalang problema ng iyong koneksyon sa internet o ang server na ito.",
+  "bundle_column_error.network.title": "Kamaliang network",
+  "bundle_column_error.retry": "Subukang muli",
+  "bundle_column_error.return": "Bumalik sa tahanan",
+  "bundle_column_error.routing.body": "Hindi mahanap ang hiniling na pahina. Sigurado ka ba na ang URL sa address bar ay tama?",
+  "bundle_column_error.routing.title": "404",
+  "bundle_modal_error.close": "I-sara",
+  "bundle_modal_error.message": "May nangyaring mali habang kinakarga ang bahaging ito.",
+  "bundle_modal_error.retry": "Subukang muli",
+  "closed_registrations.other_server_instructions": "Dahil desentralisado ang Mastodon, pwede kang gumawa ng account sa iba pang server at makipag-ugnayan pa rin dito.",
+  "closed_registrations_modal.description": "Hindi pa pwedeng gumawa ng account sa {domain}, pero tandaan na hindi mo kailangan ng account partikular sa {domain} para gamitin ang Mastodon.",
+  "closed_registrations_modal.find_another_server": "Maghanap ng iba pang server",
+  "closed_registrations_modal.preamble": "Dahil desentralisado ang Mastodon, kahit saan ka pa gumawa ng account, maaari ka pa ring sumunod at makipag-ugnayan sa kahit-sino rito sa server na ito. Pwede mo pang i-host nang pasarili!",
+  "closed_registrations_modal.title": "Pagrerehistro sa Mastodon",
+  "column.about": "Tungkol dito",
+  "column.blocks": "Nakahadlang na mga tagagamit",
+  "column.bookmarks": "Mga bookmark",
+  "column.community": "Lokal na timeline",
+  "column.direct": "Mga palihim na banggit",
+  "column.directory": "Tingnan ang mga profile",
+  "column.domain_blocks": "Nakahadlang na mga domain",
+  "column.favourites": "Mga paborito",
+  "column.firehose": "Mga live feed",
+  "column.follow_requests": "Mga hiling para sundan",
+  "column.home": "Tahanan",
+  "column.lists": "Mga listahan",
+  "column.mutes": "Mga pinatahimik na tagagamit",
+  "column.notifications": "Mga abiso",
+  "column.pins": "Mga nakapaskil na post",
+  "column.public": "Pinagsamang timeline",
+  "column_back_button.label": "Bumalik",
+  "column_header.hide_settings": "I-tago ang mga setting",
+  "column_header.moveLeft_settings": "I-lipat ang hanay pakaliwa",
+  "column_header.moveRight_settings": "I-lipat ang hanay pakanan",
+  "column_header.pin": "I-paskil",
+  "column_header.show_settings": "Ipakita ang mga setting",
+  "column_header.unpin": "Tanggalin sa pagkapaskil",
+  "column_subheading.settings": "Mga setting",
+  "community.column_settings.local_only": "Lokal lamang",
+  "community.column_settings.media_only": "Medya Lamang",
+  "community.column_settings.remote_only": "Liblib lamang",
+  "compose.language.change": "Magpalit ng wika",
+  "compose.language.search": "Maghanap ng mga wika...",
+  "compose.published.body": "Nailathala ang post.",
+  "compose.published.open": "Buksan",
+  "compose.saved.body": "Nai-save ang post.",
+  "compose_form.direct_message_warning_learn_more": "Matuto pa",
+  "compose_form.encryption_warning": "Ang mga post sa Mastodon ay hindi naka-encrypt nang dulo-dulo. Huwag magbahagi ng anumang sensitibong impormasyon sa Mastodon.",
+  "compose_form.hashtag_warning": "Hindi maililista ang post na ito sa anumang hashtag dahil hindi ito nakapubliko. Mga nakapublikong post lamang ang mahahanap ayon sa hashtag.",
+  "copy_icon_button.copied": "Sinipi sa clipboard",
+  "copypaste.copied": "Sinipi",
+  "copypaste.copy_to_clipboard": "I-sipi sa clipboard",
+  "directory.federated": "Mula sa kilalang fediverse",
+  "directory.local": "Mula sa {domain} lamang",
+  "directory.new_arrivals": "Mga bagong dating",
+  "directory.recently_active": "Kamakailang aktibo",
+  "disabled_account_banner.account_settings": "Mga setting ng account",
+  "disabled_account_banner.text": "Ang iyong account na {disabledAccount} ay hindi pinapagana ngayon.",
+  "dismissable_banner.community_timeline": "Ito ang mga pinakamakailang nakapublikong post mula sa mga taong ang mga account hinohost ng {domain}.",
+  "dismissable_banner.dismiss": "Alisin",
+  "dismissable_banner.explore_links": "Ito ang mga balitang kwento na pinaka-binabahagi sa social web ngayon. Ang mga mas bagong balitang kwento na pinost ng mas marami pang mga iba't ibang tao ay tinataasan ng antas.",
+  "dismissable_banner.explore_statuses": "Ito ang mga sumisikat na mga post sa iba't ibang bahagi ng social web ngayon. Ang mga mas bagong post na mas marami ang mga pagpapalakas at paborito ay tinataasan ng antas.",
+  "dismissable_banner.explore_tags": "Ito ang mga sumisikat na mga hashtag sa iba't ibang bahagi ng social web ngayon. Ang mga hashtag ginagamit ng mas maraming mga iba't ibang tao ay tinataasan ng antas.",
+  "dismissable_banner.public_timeline": "Ito ang mga pinakamakailang nakapublikong post mula sa mga taong nasa social web na sinusundan ng mga tao sa {domain}.",
+  "embed.instructions": "I-embed ang post na ito sa iyong pook-sapot sa pamamagitan ng pagsipi ng kodigo sa ilalim.",
+  "embed.preview": "Ito ang magiging itsura:",
+  "emoji_button.activity": "Aktibidad",
+  "emoji_button.clear": "Linisin",
+  "emoji_button.custom": "Pasadya",
+  "emoji_button.flags": "Mga watawat",
+  "emoji_button.food": "Pagkain at Inumin",
+  "emoji_button.label": "Maglagay ng emoji",
+  "emoji_button.nature": "Kalikasan",
+  "emoji_button.not_found": "Walang mahanap na mga tugmang emoji",
+  "emoji_button.objects": "Mga bagay",
+  "emoji_button.people": "Mga tao",
+  "emoji_button.recent": "Madalas na ginagamit",
+  "emoji_button.search": "Maghanap...",
+  "emoji_button.search_results": "Resulta ng paghahanap",
+  "emoji_button.symbols": "Mga tanda",
+  "emoji_button.travel": "Paglakbay at Mga Lugar",
+  "empty_column.account_hides_collections": "Pinili ng tagagamit na ito na hindi makuha ang impormasyong ito",
+  "empty_column.account_suspended": "Sinuspinde ang account",
+  "empty_column.account_timeline": "Walang mga post dito!",
+  "empty_column.account_unavailable": "Hindi makuha ang profile",
+  "empty_column.blocks": "Hindi ka pa naghahadlang ng sinumang tagagamit.",
+  "empty_column.bookmarked_statuses": "Wala ka pang naka-bookmark na post. Kapag nag-bookmark ka ng isa, makikita yun dito.",
+  "empty_column.community": "Walang laman ang lokal na timeline. Magsulat ng anuman papubliko para makaandar tayo!",
+  "empty_column.direct": "Wala ka pang mga palihim na banggit. Kapag nagpadala o tumanggap ka ng isa, makikita yun dito.",
+  "empty_column.domain_blocks": "Wala pang nakahadlang na domain.",
+  "empty_column.explore_statuses": "Wala pang sumisikat sa ngayon. Balik na lang sa muli!",
+  "empty_column.favourited_statuses": "Wala ka pang mga paboritong post. Kapag nag-paborito ka ng isa, makikita yun dito.",
+  "empty_column.favourites": "Wala pang may paborito ng post na ito. Kung may sinumang nagpaborito, makikita sila rito.",
+  "empty_column.follow_requests": "Wala ka pang mga hiling para sundan ka. Kapag nakatanggap ka ng isa, makikita yun dito.",
+  "empty_column.followed_tags": "Wala ka pang sinusunod na hashtag. Kapag may sinundan ka na, makikita sila rito.",
+  "empty_column.hashtag": "Wala pang laman ang hashtag na ito.",
+  "empty_column.home": "Walang laman ang timeline ng tahanan mo! Sumunod sa marami pang tao para mapunan ito.",
+  "empty_column.list": "Wala pang laman ang listahang ito. Kapag naglathala ng mga bagong post ang mga miyembro ng listahang ito, makikita iyon dito.",
+  "empty_column.lists": "Wala ka pang mga listahan. Kapag gumawa ka ng isa, makikita yun dito."
+}
diff --git a/app/javascript/mastodon/locales/ia.json b/app/javascript/mastodon/locales/ia.json
new file mode 100644
index 000000000..917a03466
--- /dev/null
+++ b/app/javascript/mastodon/locales/ia.json
@@ -0,0 +1,23 @@
+{
+  "account.add_or_remove_from_list": "Adder o remover ab listas",
+  "account.copy": "Copiar ligamine a profilo",
+  "bundle_column_error.network.title": "Error de rete",
+  "bundle_modal_error.close": "Clauder",
+  "column.home": "Initio",
+  "column_subheading.settings": "Parametros",
+  "compose.language.search": "Cercar linguas...",
+  "compose.published.open": "Aperir",
+  "confirmation_modal.cancel": "Cancellar",
+  "confirmations.logout.confirm": "Clauder le session",
+  "copypaste.copy_to_clipboard": "Copiar al area de transferentia",
+  "dismissable_banner.dismiss": "Dimitter",
+  "firehose.local": "Iste servitor",
+  "footer.about": "A proposito de",
+  "home.pending_critical_update.link": "Vider actualisationes",
+  "keyboard_shortcuts.my_profile": "Aperir tu profilo",
+  "lightbox.close": "Clauder",
+  "lightbox.next": "Sequente",
+  "link_preview.author": "Per {name}",
+  "lists.account.add": "Adder al lista",
+  "navigation_bar.about": "A proposito de"
+}
diff --git a/app/javascript/mastodon/locales/ie.json b/app/javascript/mastodon/locales/ie.json
new file mode 100644
index 000000000..e5a4084cc
--- /dev/null
+++ b/app/javascript/mastodon/locales/ie.json
@@ -0,0 +1,392 @@
+{
+  "about.blocks": "Moderat servitores",
+  "about.contact": "Contacter:",
+  "about.disclaimer": "Mastodon es programmatura líber e con fonte apert, e un marca de fabrica de Mastodon dGmbH.",
+  "about.domain_blocks.no_reason_available": "Rason ne disponibil",
+  "about.domain_blocks.preamble": "Mastodon generalmen possibilisa regardar li contenete de, e li interaction con usatores de quelcunc altri servitor in li fediverse. Ci trova se li exceptiones fat de ti-ci particulari servitor.",
+  "about.domain_blocks.silenced.explanation": "Generalmen, li profiles e contenete de ti-ci servitor ne va aparir, except si on sercha les explicitmen o optionalisa it per sequer.",
+  "about.domain_blocks.silenced.title": "Limitat",
+  "about.domain_blocks.suspended.explanation": "Necun data de ti-ci servitor va esser tractat, inmagasinat o exchangeat, quel inpossibilisa li interaction o comunication de usatores de ti-ci servitor.",
+  "about.domain_blocks.suspended.title": "Suspendet",
+  "about.not_available": "On ne ha disponibilisat ti-ci information sur ti-ci servitor.",
+  "about.powered_by": "Decentralisat social medie disponibilisat de {mastodon}",
+  "about.rules": "Regules del servitor",
+  "account.account_note_header": "Nota",
+  "account.add_or_remove_from_list": "Adjunter o remover de listes",
+  "account.badges.bot": "Automatisat",
+  "account.badges.group": "Gruppe",
+  "account.block": "Bloccar @{name}",
+  "account.block_domain": "Bloccar domene {domain}",
+  "account.block_short": "Bloccar",
+  "account.blocked": "Bloccat",
+  "account.browse_more_on_origin_server": "Navigar plu sur li profil original",
+  "account.cancel_follow_request": "Anullar sequer",
+  "account.copy": "Copiar ligament al profil",
+  "account.direct": "Privatmen mentionar @{name}",
+  "account.disable_notifications": "Cessa notificar me quande @{name} posta",
+  "account.domain_blocked": "Domene bloccat",
+  "account.edit_profile": "Redacter profil",
+  "account.enable_notifications": "Notificar me quande @{name} posta",
+  "account.endorse": "Recomandar sur profil",
+  "account.featured_tags.last_status_at": "Ultim post ye {date}",
+  "account.featured_tags.last_status_never": "Null postas",
+  "account.featured_tags.title": "Recomandat hashtags de {name}",
+  "account.follow": "Sequer",
+  "account.followers": "Sequitores",
+  "account.followers.empty": "Ancor nequi seque ti-ci usator.",
+  "account.followers_counter": "{count, plural, one {{counter} Sequitor} other {{counter} Sequitor}}",
+  "account.following": "Sequent",
+  "account.following_counter": "{count, plural, one {{counter} Sequent} other {{counter} Sequent}}",
+  "account.follows.empty": "Ti-ci usator ancor ne seque quemcunc.",
+  "account.follows_you": "Seque te",
+  "account.go_to_profile": "Ear a profil",
+  "account.hide_reblogs": "Celar boosts de @{name}",
+  "account.in_memoriam": "In Memoriam.",
+  "account.joined_short": "Adheret",
+  "account.languages": "Changear lingues de subscrition",
+  "account.link_verified_on": "Proprietá de ti-ci ligament esset verificat ye {date}",
+  "account.locked_info": "Li statu de confidentialitá de ti-ci conto es configurat quam cludet. Li proprietario decide manualmen qui posse sequer.",
+  "account.media": "Medie",
+  "account.mention": "Mentionar @{name}",
+  "account.moved_to": "{name} ha indicat que su nov conto es ja:",
+  "account.mute": "Silentiar @{name}",
+  "account.mute_notifications_short": "Silentiar notificationes",
+  "account.mute_short": "Silentiar",
+  "account.muted": "Silentiat",
+  "account.no_bio": "Null description providet.",
+  "account.open_original_page": "Aperter li págine original",
+  "account.posts": "Postas",
+  "account.posts_with_replies": "Postas e replicas",
+  "account.report": "Raportar @{name}",
+  "account.requested": "Atendent aprobation. Cliccar por anullar li petition de sequer",
+  "account.requested_follow": "{name} ha petit sequer te",
+  "account.share": "Distribuer li profil de @{name}",
+  "account.show_reblogs": "Monstrar boosts de @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Post} other {{counter} Postas}}",
+  "account.unblock": "Desbloccar @{name}",
+  "account.unblock_domain": "Desbloccar domene {domain}",
+  "account.unblock_short": "Desbloccar",
+  "account.unendorse": "Ne recomandar sur profil",
+  "account.unfollow": "Dessequer",
+  "account.unmute": "Dessilentiar @{name}",
+  "account.unmute_notifications_short": "Dessilentiar notificationes",
+  "account.unmute_short": "Dessilentiar",
+  "account_note.placeholder": "Clicca por adjunter un nota",
+  "admin.dashboard.daily_retention": "Usator-retention per die pos registration",
+  "admin.dashboard.monthly_retention": "Usator-retention per mensu pos registration",
+  "admin.dashboard.retention.average": "Medial",
+  "admin.dashboard.retention.cohort": "Mensu de registration",
+  "admin.dashboard.retention.cohort_size": "Nov usatores",
+  "admin.impact_report.instance_accounts": "Conto-profiles to-ci vell deleter",
+  "admin.impact_report.instance_followers": "Sequitores queles nor usatores vell perdir",
+  "admin.impact_report.instance_follows": "Sequitores queles lor usatores vell perdir",
+  "admin.impact_report.title": "Resumate de impact",
+  "alert.rate_limited.message": "Ples reprovar pos {retry_time, time, medium}.",
+  "alert.rate_limited.title": "Frequentie limitat",
+  "alert.unexpected.message": "Un ínexpectat erra ha evenit.",
+  "alert.unexpected.title": "Ups!",
+  "announcement.announcement": "Proclamation",
+  "attachments_list.unprocessed": "(íntractat)",
+  "audio.hide": "Celar audio",
+  "autosuggest_hashtag.per_week": "{count} per semane",
+  "boost_modal.combo": "Li proxim vez tu posse pressar {combo} por passar to-ci",
+  "bundle_column_error.copy_stacktrace": "Copiar erra-raporte",
+  "bundle_column_error.error.body": "Li demandat págine ne posset esser rendit. Fórsan it es un problema in nor code, o un problema de compatibilitá con li navigator.",
+  "bundle_column_error.error.title": "O ve!",
+  "bundle_column_error.network.body": "Un erra evenit durant li cargation de ti-ci págine, possibilmen pro un temporari problema de tui conexion del internet o de ti-ci servitor.",
+  "bundle_column_error.network.title": "Erra de retage",
+  "bundle_column_error.retry": "Provar denov",
+  "bundle_column_error.return": "Retornar al comense",
+  "bundle_column_error.routing.body": "Li demandat págine ne trovat se. Esque tu es cert que li URL in li adresse-barre es corect?",
+  "bundle_column_error.routing.title": "404",
+  "bundle_modal_error.close": "Cluder",
+  "bundle_modal_error.message": "Alquo errat durant li cargation de ti-ci componente.",
+  "bundle_modal_error.retry": "Provar denov",
+  "closed_registrations.other_server_instructions": "Pro que Mastodon es decentralisat, on posse crear un conto che un altri servitor e ancor interacter con ti-ci.",
+  "closed_registrations_modal.description": "Crear un conto che {domain} ne es possibil actualmen, ma ples memorar que on ne besona un conto specificmen che {domain} por usar Mastodon.",
+  "closed_registrations_modal.find_another_server": "Serchar altri servitor",
+  "closed_registrations_modal.preamble": "Mastodon es descentralisat, do on posse ser e interacter con quicunc che ti-ci servitor, sin egarda de u on crea su conto. On mem posse self-albergar it!",
+  "closed_registrations_modal.title": "Registrar sur Mastodon",
+  "column.about": "Information",
+  "column.blocks": "Bloccat usatores",
+  "column.bookmarks": "Marcatores",
+  "column.community": "Local témpor-linea",
+  "column.direct": "Privat mentiones",
+  "column.directory": "Navigar profiles",
+  "column.domain_blocks": "Bloccat domenes",
+  "column.favourites": "Favorites",
+  "column.firehose": "Témpor-lineas",
+  "column.follow_requests": "Petitiones de sequer",
+  "column.home": "Comense",
+  "column.lists": "Listes",
+  "column.mutes": "Silentiat usatores",
+  "column.notifications": "Notificationes",
+  "column.pins": "Pinglat postas",
+  "column.public": "Federat témpor-linea",
+  "column_back_button.label": "Retornar",
+  "column_header.hide_settings": "Celar parametres",
+  "column_header.moveLeft_settings": "Mover columne al levul",
+  "column_header.moveRight_settings": "Mover columne al dextri",
+  "column_header.pin": "Pinglar",
+  "column_header.show_settings": "Monstrar parametres",
+  "column_header.unpin": "Despinglar",
+  "column_subheading.settings": "Parametres",
+  "community.column_settings.local_only": "Solmen local",
+  "community.column_settings.media_only": "Solmen medie",
+  "community.column_settings.remote_only": "Solmen external",
+  "compose.language.change": "Changear lingue",
+  "compose.language.search": "Serchar lingues...",
+  "compose.published.body": "Post publicat.",
+  "compose.published.open": "Aperter",
+  "compose.saved.body": "Post conservat.",
+  "compose_form.direct_message_warning_learn_more": "Aprender plu",
+  "compose_form.hashtag_warning": "Ti-ci post ne va esser listat sur quelcunc hashtag pro que it ne es public. Solmen public postas posse esser serchat per hashtag.",
+  "compose_form.lock_disclaimer": "Tui conto ne es {locked}. Quicunc posse sequer te por vider tui postas solmen por sequitores.",
+  "compose_form.lock_disclaimer.lock": "cludet",
+  "compose_form.placeholder": "Quo es in tui mente?",
+  "compose_form.poll.add_option": "Adjunter un option",
+  "compose_form.poll.duration": "Duration del balotation",
+  "compose_form.poll.option_placeholder": "Option {number}",
+  "compose_form.poll.remove_option": "Remover ti-ci option",
+  "compose_form.poll.switch_to_multiple": "Changea li balotation por permisser multiplic selectiones",
+  "compose_form.poll.switch_to_single": "Changea li balotation por permisser un singul selection",
+  "compose_form.publish": "Publicar",
+  "compose_form.publish_form": "Nov post",
+  "compose_form.publish_loud": "{publish}!",
+  "compose_form.save_changes": "Conservar changes",
+  "compose_form.spoiler.marked": "Remover avise pri li contenete",
+  "compose_form.spoiler.unmarked": "Adjunter avise pri li contenete",
+  "compose_form.spoiler_placeholder": "Scri tui avise ci",
+  "confirmation_modal.cancel": "Anullar",
+  "confirmations.block.block_and_report": "Bloccar & Raportar",
+  "confirmations.block.confirm": "Bloccar",
+  "confirmations.block.message": "Esque tu es cert que tu vole bloccar {name}?",
+  "confirmations.cancel_follow_request.confirm": "Retraer petition",
+  "confirmations.cancel_follow_request.message": "Esque tu es cert que tu vole retraer tui petition sequer {name}?",
+  "confirmations.delete.confirm": "Deleter",
+  "confirmations.delete.message": "Esque tu es cert que tu vole deleter ti-ci post?",
+  "confirmations.delete_list.confirm": "Deleter",
+  "confirmations.delete_list.message": "Esque tu es cert que tu vole permanentmen deleter ti-ci liste?",
+  "confirmations.discard_edit_media.confirm": "Forjettar",
+  "confirmations.discard_edit_media.message": "Tu have ínconservat changes al description de medie o al previse, forjettar les sin egarda?",
+  "confirmations.domain_block.confirm": "Bloccar li tot domene",
+  "confirmations.domain_block.message": "Esque tu es certissim que tu vole bloccar li tot {domain}? In mult casus, bloccar o silentiar quelc specific contos es suficent e preferibil. Tu ne va vider contenete de ti domene in quelcunc public témpor-linea o in tui notificationes. Tui sequitores de ti domene va esser removet.",
+  "confirmations.edit.confirm": "Redacter",
+  "confirmations.edit.message": "Redacter nu va remplazzar li missage quel tu actualmen composi. Esque tu es cert que tu vole proceder?",
+  "confirmations.logout.confirm": "Exear",
+  "confirmations.logout.message": "Vole tu vermen exear?",
+  "confirmations.mute.confirm": "Silentiar",
+  "confirmations.mute.explanation": "To-ci va celar postas de ilu e postas mentionant ilu, ma it ancor va permisser ilu vider tui postas e sequer te.",
+  "confirmations.mute.message": "Esque tu vermen vole silentiar {name}?",
+  "confirmations.redraft.confirm": "Deleter & redacter",
+  "confirmations.redraft.message": "Esque tu es cert que tu vole deleter ti-ci post e redacter it? Favorites e boosts va esser perdit, e replicas al post original va esser orfanat.",
+  "confirmations.reply.confirm": "Responder",
+  "confirmations.reply.message": "Responder nu va remplazzar li missage quel tu actualmen composi. Esque tu es cert que tu vole proceder?",
+  "confirmations.unfollow.confirm": "Dessequer",
+  "confirmations.unfollow.message": "Esque tu es cert que tu vole dessequer {name}?",
+  "conversation.delete": "Deleter conversation",
+  "conversation.mark_as_read": "Marcar quam leet",
+  "conversation.open": "Vider conversation",
+  "conversation.with": "Con {names}",
+  "copypaste.copied": "Copiat",
+  "directory.federated": "Del conosset fediverse",
+  "directory.local": "De solmen {domain}",
+  "directory.new_arrivals": "Nov arivantes",
+  "directory.recently_active": "Recentmen activ",
+  "disabled_account_banner.account_settings": "Parametres del conto",
+  "dismissable_banner.community_timeline": "Tis-ci es li postas max recent de gente con contos che {domain}.",
+  "dismissable_banner.dismiss": "Demisser",
+  "dismissable_banner.explore_links": "Tis-ci es li novas max distribuet che li social retage hodie. Novas plu nov, postat de plu diferent persones, es monstrat plu alt.",
+  "dismissable_banner.explore_statuses": "Tis-ci es postas del social retage queles es popular hodie. Nov postas con plu mult boosts e favorites es monstrat plu alt.",
+  "dismissable_banner.explore_tags": "Tis-ci es hashtags queles es popular che li social retage hodie. Hashtags usat de plu mult persones diferent es monstrat plu alt.",
+  "dismissable_banner.public_timeline": "Tis-ci es li max recent public postas de persones che li social retage quem gente che {domain} seque.",
+  "embed.instructions": "Inbedar ti-ci post per copiar li code in infra.",
+  "embed.preview": "Vi qualmen it va aspecter:",
+  "emoji_button.activity": "Activitá",
+  "emoji_button.clear": "Efaciar",
+  "emoji_button.custom": "Custom",
+  "emoji_button.flags": "Flaggas",
+  "emoji_button.food": "Manjage & Trincage",
+  "emoji_button.label": "Inserter emoji",
+  "emoji_button.nature": "Natura",
+  "emoji_button.not_found": "Null acordant emoji trovat",
+  "emoji_button.objects": "Objectes",
+  "emoji_button.people": "Gente",
+  "emoji_button.recent": "Frequentmen usat",
+  "emoji_button.search": "Sercha...",
+  "emoji_button.search_results": "Resultates de sercha",
+  "emoji_button.symbols": "Simboles",
+  "emoji_button.travel": "Viageation & Locos",
+  "empty_column.account_hides_collections": "Ti-ci usator ha selectet ne publicar ti-ci information",
+  "empty_column.account_suspended": "Conto suspendet",
+  "empty_column.account_timeline": "Null postas ci!",
+  "empty_column.account_unavailable": "Profil índisponibil",
+  "empty_column.blocks": "Tu ancor ha bloccat null usatores.",
+  "empty_column.bookmarked_statuses": "Tu ancor have null marcat postas. Quande tu marca un, it va aparir ci.",
+  "empty_column.community": "Li local témpor-linea es vacui. Scri alquo publicmen por initiar la festa!",
+  "empty_column.direct": "Tu ancor have null privat mentiones. Quande tu misse o recive un, it va aparir ci.",
+  "empty_column.domain_blocks": "Ancor hay null bloccat domenes.",
+  "empty_column.explore_statuses": "Nequo es popular actualmen. Retorna plu tarde!",
+  "empty_column.favourited_statuses": "Tu ancor have null favorit postas. Quande tu favoritisa un, it va aparir ci.",
+  "empty_column.favourites": "Ancor nequi ha favoritisat ti-ci posta. Quande alqui fa it, ilu va aparir ci.",
+  "empty_column.follow_requests": "Tu ancor have null petitiones de sequer. Quande tu recive un, it va aparir ci.",
+  "empty_column.followed_tags": "Tu ancor ha sequet null hashtags. Quande tu seque un, it va aparir ci.",
+  "empty_column.hashtag": "Hay nullcos en ti-ci hashtag ancor.",
+  "empty_column.home": "Tui initial témpor-linea es vacui! Sequer plu gente por plenar it.",
+  "empty_column.list": "Ancor ne hay quocunc in ti-ci liste. Quande membres de ti-ci liste publica nov postas, ili va aparir ci.",
+  "empty_column.lists": "Tu ancor have null listes. Quande tu crea un, it va aparir ci.",
+  "empty_column.mutes": "Tu ancor ha silentiat null usatores.",
+  "empty_column.notifications": "Tu have null notificationes. Quande altri persones interacte con te, tu va vider it ci.",
+  "empty_column.public": "Hay nullcos ci! Scri alquo publicmen, o manualmen seque usatores de altri servitores por plenar to-ci",
+  "error.unexpected_crash.explanation": "Pro un error in nor code o un problema de compatibilitá in li navigator, ti-ci págine ne posset esser monstrat correctmen.",
+  "error.unexpected_crash.explanation_addons": "Ti-ci págine ne posset esser monstrat correctmen. Li error es probabilmen causat de un extension al navigator o instrumentes por automatic traduction.",
+  "error.unexpected_crash.next_steps": "Prova recargar li págine. Si to ne auxilia, tu fórsan posse usar Mastodon per un diferent navigator o aplication.",
+  "error.unexpected_crash.next_steps_addons": "Prova desactivisar les e recargar li págine. Si to ne auxilia, tu fórsan posse usar Mastodon per un diferent navigator o aplication.",
+  "errors.unexpected_crash.report_issue": "Raportar un problema",
+  "explore.search_results": "Resultates de sercha",
+  "explore.suggested_follows": "Gente",
+  "explore.title": "Explorar",
+  "explore.trending_links": "Novas",
+  "explore.trending_statuses": "Postas",
+  "explore.trending_tags": "Hashtags",
+  "filter_modal.added.context_mismatch_explanation": "Ti-ci filtre-categorie ne aplica al contextu in quel tu ha accessat ti-ci post. Si tu vole que li post es filtrat anc in ti-ci contextu, tu deve redacter li filtre.",
+  "filter_modal.added.context_mismatch_title": "Contextu íncompatibil!",
+  "filter_modal.added.expired_explanation": "Ti-ci filtre-categorie ha expirat, tu deve changear li date de expiration por far it aplicar.",
+  "filter_modal.added.expired_title": "Expirat filtre!",
+  "filter_modal.added.review_and_configure": "Por reviser e configurar ti-ci filtre-categorie, ea a {settings_link}.",
+  "filter_modal.added.review_and_configure_title": "Parametres pri filtres",
+  "filter_modal.added.settings_link": "págine por parametres",
+  "filter_modal.added.short_explanation": "Ti-ci post ha esset adjuntet al sequente filtre-categorie: {title}.",
+  "filter_modal.added.title": "Filtre adjuntet!",
+  "filter_modal.select_filter.context_mismatch": "ne aplica a ti-ci contextu",
+  "filter_modal.select_filter.expired": "expirat",
+  "filter_modal.select_filter.prompt_new": "Nov categorie: {name}",
+  "filter_modal.select_filter.search": "Serchar o crear",
+  "filter_modal.select_filter.subtitle": "Usar un existent categorie o crear nov",
+  "filter_modal.select_filter.title": "Filtrar ti-ci posta",
+  "filter_modal.title.status": "Filtrar un posta",
+  "firehose.all": "Omno",
+  "firehose.local": "Ti-ci servitor",
+  "firehose.remote": "Altri servitores",
+  "follow_request.authorize": "Autorisar",
+  "follow_request.reject": "Rejecter",
+  "follow_requests.unlocked_explanation": "Benque tu conto ne es cludet, li administratores de {domain} pensat que tu fórsan vell voler tractar seque-petitiones de tis-ci contos manualmen.",
+  "followed_tags": "Sequet hashtags",
+  "footer.about": "Information",
+  "footer.directory": "Profilarium",
+  "footer.get_app": "Obtener li aplication",
+  "footer.invite": "Invitar gente",
+  "footer.source_code": "Vider li fonte-code",
+  "footer.status": "Statu",
+  "generic.saved": "Salvat",
+  "getting_started.heading": "Qualmen comensar",
+  "hashtag.column_header.tag_mode.all": "e {additional}",
+  "hashtag.column_header.tag_mode.any": "o {additional}",
+  "hashtag.column_header.tag_mode.none": "sin {additional}",
+  "hashtag.column_settings.select.no_options_message": "Null suggestiones trovat",
+  "hashtag.column_settings.select.placeholder": "Inscrir hashtags…",
+  "hashtag.column_settings.tag_mode.all": "Omni tis",
+  "hashtag.column_settings.tag_mode.any": "Quelcunc de tis",
+  "hashtag.column_settings.tag_mode.none": "Necun de tis",
+  "hashtag.counter_by_accounts": "{count, plural, one {{counter} participante} other {{counter} participantes}}",
+  "hashtag.counter_by_uses": "{count, plural, one {{counter} post} other {{counter} postas}}",
+  "hashtag.counter_by_uses_today": "{count, plural, one {{counter} post} other {{counter} postas}} hodie",
+  "hashtag.follow": "Sequer hashtag",
+  "hashtag.unfollow": "Dessequer hashtag",
+  "hashtags.and_other": "…e {count, plural, other {# in plu}}",
+  "home.actions.go_to_explore": "Vider lu populari",
+  "home.actions.go_to_suggestions": "Trovar gente por sequer",
+  "home.column_settings.basic": "Basic",
+  "home.column_settings.show_reblogs": "Monstrar boosts",
+  "home.column_settings.show_replies": "Monstrar responses",
+  "home.explore_prompt.body": "Tui hemal témpor-linea have un mixtura del hashtags queles tu selectet sequer, li gente quem tu selectet sequer, e li postas queles ili boosta. Si to sembla tro quiet, tu fórsan vole:",
+  "home.explore_prompt.title": "To-ci es tui hemal págine in Mastodon.",
+  "home.hide_announcements": "Celar proclamationes",
+  "home.pending_critical_update.body": "Ples actualisar tui Mastodon-servitor tam rapid quam es possibil!",
+  "home.pending_critical_update.link": "Vider actualisationes",
+  "home.pending_critical_update.title": "Urgent actualisation de securitá disponibil!",
+  "home.show_announcements": "Monstrar proclamationes",
+  "interaction_modal.description.favourite": "Con un conto de Mastodon, tu posse favoritisar ti-ci post por informar li autor pri quant mult tu aprecia it e conservar it por plu tard.",
+  "interaction_modal.description.follow": "Con un conto de Mastodon, tu posse sequer {name} por reciver su postas in tui hemal témpor-linea.",
+  "interaction_modal.description.reblog": "Con un conto de Mastodon, tu posse boostar ti-ci post por distribuer it a tui propri sequitores.",
+  "interaction_modal.description.reply": "Con un conto de Mastodon, tu posse responder a ti-ci post.",
+  "interaction_modal.login.action": "Retorna a hem",
+  "interaction_modal.login.prompt": "Domene de tui hemal servitor, p.ex. mastodon.social",
+  "interaction_modal.no_account_yet": "Ne sur Mastodon?",
+  "interaction_modal.on_another_server": "Sur un servitor diferent",
+  "interaction_modal.on_this_server": "Sur ti-ci servitor",
+  "interaction_modal.sign_in": "Tu ne ha ineat a ti-ci servitor. U logia tui conto?",
+  "interaction_modal.title.favourite": "Favoritisar li post de {name}",
+  "interaction_modal.title.follow": "Sequer {name}",
+  "interaction_modal.title.reblog": "Boostar li post de {name}",
+  "interaction_modal.title.reply": "Responder al posta de {name}",
+  "intervals.full.days": "{number, plural, one {# die} other {# dies}}",
+  "intervals.full.hours": "{number, plural, one {# hor} other {# hores}}",
+  "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
+  "keyboard_shortcuts.back": "Retroear",
+  "keyboard_shortcuts.blocked": "Aperter li lista de bloccat usatores",
+  "keyboard_shortcuts.boost": "Boostar post",
+  "keyboard_shortcuts.description": "Descrition",
+  "keyboard_shortcuts.enter": "Aperter posta",
+  "keyboard_shortcuts.favourite": "Favoritisar post",
+  "keyboard_shortcuts.favourites": "Aperter li liste de favorites",
+  "keyboard_shortcuts.federated": "Aperter li federat témpor-linea",
+  "keyboard_shortcuts.home": "Aperter li hemal témpor-linea",
+  "keyboard_shortcuts.local": "Aperter li local témpor-linea",
+  "keyboard_shortcuts.mention": "Mentionar li autor",
+  "keyboard_shortcuts.muted": "Aperter li lista de silentiat usatores",
+  "keyboard_shortcuts.my_profile": "Aperter tui profil",
+  "keyboard_shortcuts.notifications": "Aperter li columne de notificationes",
+  "keyboard_shortcuts.open_media": "Aperter medie",
+  "keyboard_shortcuts.pinned": "Aperter li liste de pinglat postas",
+  "keyboard_shortcuts.profile": "Aperter profil del autor",
+  "keyboard_shortcuts.reply": "Responder al posta",
+  "keyboard_shortcuts.requests": "Aperter liste de seque-petitiones",
+  "limited_account_hint.title": "Ti-ci profil ha esset celat del moderatores de {domain}.",
+  "link_preview.author": "De {name}",
+  "lists.account.add": "Adjunter a liste",
+  "lists.account.remove": "Remover de liste",
+  "lists.delete": "Deleter liste",
+  "lists.edit": "Redacter liste",
+  "lists.edit.submit": "Changear titul",
+  "lists.exclusive": "Celar ti-ci postas del hemal témpor-linea",
+  "lists.new.create": "Adjunter liste",
+  "lists.new.title_placeholder": "Titul del nov liste",
+  "lists.replies_policy.followed": "Quelcunc sequet usator",
+  "lists.replies_policy.list": "Membres del liste",
+  "lists.replies_policy.none": "Nequi",
+  "lists.replies_policy.title": "Monstrar responses a:",
+  "lists.search": "Serchar inter li persones quem tu seque",
+  "lists.subheading": "Tui listes",
+  "load_pending": "{count, plural, one {# nov element} other {# nov elementes}}",
+  "mute_modal.duration": "Duration",
+  "mute_modal.hide_notifications": "Celar notificationes de ti-ci usator?",
+  "mute_modal.indefinite": "Índefinit",
+  "navigation_bar.filters": "Silentiat paroles",
+  "navigation_bar.follow_requests": "Petitiones de sequer",
+  "navigation_bar.lists": "Listes",
+  "navigation_bar.mutes": "Silentiat usatores",
+  "navigation_bar.personal": "Personal",
+  "navigation_bar.pins": "Pinglat postas",
+  "navigation_bar.preferences": "Preferenties",
+  "navigation_bar.public_timeline": "Federat témpor-linea",
+  "navigation_bar.search": "Sercha",
+  "navigation_bar.security": "Securitá",
+  "not_signed_in_indicator.not_signed_in": "On deve aperter session por accesser ti-ci ressurse.",
+  "notification.follow_request": "{name} ha petit sequer te",
+  "notifications.column_settings.follow_request": "Nov petitiones de sequer:",
+  "notifications.column_settings.update": "Redactiones:",
+  "notifications.group": "{count} notificationes",
+  "onboarding.compose.template": "Salute #Mastodon!",
+  "onboarding.profile.display_name": "Nómine a monstrar",
+  "report.mute": "Silentiar",
+  "report.mute_explanation": "Tu ne va vider su postas. Ilu ancor posse sequer te e vider tui postas e ne va saver que ilu es silentiat.",
+  "status.mute": "Silentiar @{name}",
+  "status.mute_conversation": "Silentiar conversation",
+  "status.pin": "Pinglar sur profil",
+  "status.pinned": "Pinglat post",
+  "status.unmute_conversation": "Dessilentiar conversation",
+  "status.unpin": "Despinglar de profil",
+  "video.mute": "Silentiar li son",
+  "video.unmute": "Dessilentiar li son"
+}
diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json
index 552debdb5..ba4440893 100644
--- a/app/javascript/mastodon/locales/io.json
+++ b/app/javascript/mastodon/locales/io.json
@@ -20,6 +20,7 @@
   "account.blocked": "Blokusita",
   "account.browse_more_on_origin_server": "Videz pluse che la originala profilo",
   "account.cancel_follow_request": "Desendez sequodemando",
+  "account.copy": "Kopiez ligilo al profilo",
   "account.direct": "Private mencionez @{name}",
   "account.disable_notifications": "Cesez avizar me kande @{name} postas",
   "account.domain_blocked": "Domain hidden",
@@ -38,7 +39,8 @@
   "account.follows.empty": "Ca uzanto ne sequa irgu til nun.",
   "account.follows_you": "Sequas tu",
   "account.go_to_profile": "Irez al profilo",
-  "account.hide_reblogs": "Celez busti de @{name}",
+  "account.hide_reblogs": "Celez repeti de @{name}",
+  "account.in_memoriam": "Memorige.",
   "account.joined_short": "Juntita",
   "account.languages": "Chanjez abonita lingui",
   "account.link_verified_on": "Proprieteso di ca ligilo kontrolesis ye {date}",
@@ -58,7 +60,7 @@
   "account.requested": "Vartante aprobo",
   "account.requested_follow": "{name} demandis sequar tu",
   "account.share": "Partigez profilo di @{name}",
-  "account.show_reblogs": "Montrez busti de @{name}",
+  "account.show_reblogs": "Montrez repeti de @{name}",
   "account.statuses_counter": "{count, plural, one {{counter} Posto} other {{counter} Posti}}",
   "account.unblock": "Desblokusar @{name}",
   "account.unblock_domain": "Desblokusar {domain}",
@@ -86,7 +88,7 @@
   "attachments_list.unprocessed": "(neprocedita)",
   "audio.hide": "Celez audio",
   "autosuggest_hashtag.per_week": "{count} dum singla semano",
-  "boost_modal.combo": "Tu povas presar sur {combo} por omisar co en la venonta foyo",
+  "boost_modal.combo": "Vu povas pulsar {combo} por omisar co venontafoye",
   "bundle_column_error.copy_stacktrace": "Kopierorraporto",
   "bundle_column_error.error.body": "La demandita pagino ne povas strukturigesar. Forsan ol esas eroro en kodexo hike o vidilkoncilieblesproblemo.",
   "bundle_column_error.error.title": "Ach!",
@@ -180,7 +182,7 @@
   "confirmations.mute.explanation": "Co celigos posti de oli e posti quo mencionas oli, ma ol ankore permisas oli vidar vua posti e sequar vu.",
   "confirmations.mute.message": "Ka vu certe volas silencigar {name}?",
   "confirmations.redraft.confirm": "Efacez e riskisez",
-  "confirmations.redraft.message": "Ka vu certe volas efacar ca posto e riskisigar ol? Favoriziti e busti esos perdita, e respondi al posto originala esos orfanigita.",
+  "confirmations.redraft.message": "Ka vu certe volas efacar ca posto e riskisigar ol? Favoriziti e repeti esos perdita, e respondi al posto originala esos orfanigita.",
   "confirmations.reply.confirm": "Respondez",
   "confirmations.reply.message": "Respondar nun remplos mesajo quon vu nun igas. Ka vu certe volas durar?",
   "confirmations.unfollow.confirm": "Desequez",
@@ -189,6 +191,7 @@
   "conversation.mark_as_read": "Markizez quale lektita",
   "conversation.open": "Videz konverso",
   "conversation.with": "Kun {names}",
+  "copy_icon_button.copied": "Kopiita",
   "copypaste.copied": "Kopiesis",
   "copypaste.copy_to_clipboard": "Kopiez",
   "directory.federated": "De savita fediverso",
@@ -200,7 +203,7 @@
   "dismissable_banner.community_timeline": "Co esas maxim recenta publika posti de personi quo havas konto quo hostigesas da {domain}.",
   "dismissable_banner.dismiss": "Ignorez",
   "dismissable_banner.explore_links": "Ca nova rakonti parolesas da personi che ca e altra servili di necentraligita situo nun.",
-  "dismissable_banner.explore_statuses": "Yen posti del tota reto sociala qui esas populara hodie. Posti plu nova kun plu busti e favoriziti esas rangizita plu alte.",
+  "dismissable_banner.explore_statuses": "Yen posti del tota reto sociala qui esas populara hodie. Posti plu nova kun plu repeti e favoriziti esas rangizita plu alte.",
   "dismissable_banner.explore_tags": "Ca hashtagi bezonas plu famoza inter personi che ca e altra servili di la necentraligita situo nun.",
   "dismissable_banner.public_timeline": "Yen la posti maxim recenta da personi che la reto sociala quin personi che {domain} sequas.",
   "embed.instructions": "Embed this status on your website by copying the code below.",
@@ -220,6 +223,7 @@
   "emoji_button.search_results": "Trovuri",
   "emoji_button.symbols": "Simboli",
   "emoji_button.travel": "Vizito & Plasi",
+  "empty_column.account_hides_collections": "Ca uzanto selektis ne publikigar ca informo",
   "empty_column.account_suspended": "Konto restriktesis",
   "empty_column.account_timeline": "No toots here!",
   "empty_column.account_unavailable": "Profilo esas nedisponebla",
@@ -294,14 +298,18 @@
   "hashtag.column_settings.tag_mode.any": "Irga co",
   "hashtag.column_settings.tag_mode.none": "Nula co",
   "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
+  "hashtag.counter_by_accounts": "{count, plural, one {{counter} partoprenanto} other {{counter} partoprenanti}}",
+  "hashtag.counter_by_uses": "{count, plural, one {{counter} posto} other {{counter} posti}}",
+  "hashtag.counter_by_uses_today": "{count, plural, one {{counter} posto} other {{counter} posti}} hodie",
   "hashtag.follow": "Sequez hashtago",
   "hashtag.unfollow": "Desequez hashtago",
+  "hashtags.and_other": "…e {count, plural, one {# plusa}other {# plusa}}",
   "home.actions.go_to_explore": "Videz quo es populara nun",
   "home.actions.go_to_suggestions": "Trovez personi por sequar",
   "home.column_settings.basic": "Simpla",
   "home.column_settings.show_reblogs": "Montrar repeti",
   "home.column_settings.show_replies": "Montrar respondi",
-  "home.explore_prompt.body": "Vua hemala fluo havos mixuro de la hashtagi quin vu selektis sequar, la personi quin vu selektis sequar, e la posti quin ili bustis. Se to semblas tro tacanta, vu darfas volar:",
+  "home.explore_prompt.body": "Vua hemala fluo havos mixuro de la hashtagi quin vu selektis sequar, la personi quin vu selektis sequar, e la posti quin ili repetis. Se to semblas tro tacanta, vu darfas volar:",
   "home.explore_prompt.title": "Co es vua hemo en Mastodon.",
   "home.hide_announcements": "Celez anunci",
   "home.pending_critical_update.body": "Voluntez aktualigar vua Mastodon-servilo tam balde kam es posibla!",
@@ -310,7 +318,7 @@
   "home.show_announcements": "Montrez anunci",
   "interaction_modal.description.favourite": "Kun konto che Mastodon, vu povas favorizar ca posto por savigar la autoro ke vu prizas ol e sparar ol por pose.",
   "interaction_modal.description.follow": "Per konto che Mastodon, vu povas sequar {name} por ganar ola posti en vua hemniuzeto.",
-  "interaction_modal.description.reblog": "Per konto che Mastodon, vu povas bustizar ca posti por partigar kun sua sequanti.",
+  "interaction_modal.description.reblog": "Per konto che Mastodon, vu povas repetar ca posti por dissemar lo a vua propra sequati.",
   "interaction_modal.description.reply": "Per konto che Mastodon, vu povas respondar ca posto.",
   "interaction_modal.login.action": "Irar a hemo",
   "interaction_modal.login.prompt": "Domeno di vua hemala servilo, ex. mastodon.social",
@@ -321,14 +329,14 @@
   "interaction_modal.sign_in_hint": "Averto: To es la retsituo ube vu kreis konto. Se vu ne rimemoras, serchez vua bonvenanta e-posto. Vu anke povas enpozar vua kompleta uzantnomo! (ex. @Mastodon@mastodon.social)",
   "interaction_modal.title.favourite": "Favorizez ca posto da {name}",
   "interaction_modal.title.follow": "Sequez {name}",
-  "interaction_modal.title.reblog": "Bustizez posto di {name}",
+  "interaction_modal.title.reblog": "Repetez posto di {name}",
   "interaction_modal.title.reply": "Respondez posto di {name}",
   "intervals.full.days": "{number, plural, one {# dio} other {# dii}}",
   "intervals.full.hours": "{number, plural, one {# horo} other {# hori}}",
   "intervals.full.minutes": "{number, plural, one {# minuto} other {# minuti}}",
   "keyboard_shortcuts.back": "to navigate back",
   "keyboard_shortcuts.blocked": "to open blocked users list",
-  "keyboard_shortcuts.boost": "to boost",
+  "keyboard_shortcuts.boost": "Repetez posto",
   "keyboard_shortcuts.column": "to focus a status in one of the columns",
   "keyboard_shortcuts.compose": "to focus the compose textarea",
   "keyboard_shortcuts.description": "Deskripto",
@@ -383,6 +391,7 @@
   "lists.search": "Trovez inter personi quon vu sequas",
   "lists.subheading": "Vua listi",
   "load_pending": "{count, plural, one {# nova kozo} other {# nova kozi}}",
+  "loading_indicator.label": "Kargante…",
   "media_gallery.toggle_visible": "Chanjar videbleso",
   "moved_to_account_banner.text": "Vua konto {disabledAccount} es nune desaktiva pro ke vu movis a {movedToAccount}.",
   "mute_modal.duration": "Durado",
@@ -448,7 +457,7 @@
   "notifications.column_settings.unread_notifications.highlight": "Briligez nelektita avizi",
   "notifications.column_settings.update": "Modifikati:",
   "notifications.filter.all": "Omna",
-  "notifications.filter.boosts": "Busti",
+  "notifications.filter.boosts": "Repeti",
   "notifications.filter.favourites": "Favoriziti",
   "notifications.filter.follows": "Sequati",
   "notifications.filter.mentions": "Mencioni",
@@ -471,6 +480,17 @@
   "onboarding.follows.empty": "Regretinde, nula rezultajo povas montresar nune. Vu povas esforcar serchar, o irar al explorala pagino por trovar personi sequinda, o esforcar itere pose.",
   "onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
   "onboarding.follows.title": "Popular on Mastodon",
+  "onboarding.profile.discoverable": "Trovebligez mea profilo",
+  "onboarding.profile.discoverable_hint": "Se vu selektas deskovrebleso che Mastodon, vua posti povas aparar en sercho-rezultaji e populari, e vua profilo forsan sugestesos a personi kun interesi simila a vua.",
+  "onboarding.profile.display_name": "Publika nomo",
+  "onboarding.profile.display_name_hint": "Vua tota nomo o vua gaya nomo…",
+  "onboarding.profile.lead": "Vu sempre povas kompletigar co plu tarde en la opcioni, ube mem plua personalizanta opcioni es disponebla.",
+  "onboarding.profile.note": "Biografio",
+  "onboarding.profile.note_hint": "Vu povas @mencionar altra personi o #hashtagi…",
+  "onboarding.profile.save_and_continue": "Preservez e avancez",
+  "onboarding.profile.title": "Kompletigez la profilo",
+  "onboarding.profile.upload_avatar": "Kargez profiloportreto",
+  "onboarding.profile.upload_header": "Kargez profilokapimajo",
   "onboarding.share.lead": "Savigez personi quale ili povas trovar vu che Mastodon!",
   "onboarding.share.message": "Me esas {username} che #Mastodon! Venez e sequez me ye {url}",
   "onboarding.share.next_steps": "Kozi quin vu darfas volar facar sequante:",
@@ -482,7 +502,7 @@
   "onboarding.steps.follow_people.title": "Follow {count, plural, one {one person} other {# people}}",
   "onboarding.steps.publish_status.body": "Say hello to the world.",
   "onboarding.steps.publish_status.title": "Facar vua unesma posto",
-  "onboarding.steps.setup_profile.body": "Others are more likely to interact with you with a filled out profile.",
+  "onboarding.steps.setup_profile.body": "Vu interagos plue kun profilo detalizita.",
   "onboarding.steps.setup_profile.title": "Customize your profile",
   "onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
   "onboarding.steps.share_profile.title": "Share your profile",
@@ -510,6 +530,7 @@
   "privacy.unlisted.short": "Ne enlistigota",
   "privacy_policy.last_updated": "Antea novajo ye {date}",
   "privacy_policy.title": "Privatesguidilo",
+  "recommended": "Rekomendata",
   "refresh": "Rifreshez",
   "regeneration_indicator.label": "Chargas…",
   "regeneration_indicator.sublabel": "Vua hemniuzeto preparesas!",
@@ -580,6 +601,8 @@
   "search.quick_action.status_search": "Posti qui asortas {x}",
   "search.search_or_paste": "Serchar o pozar URL",
   "search_popout.full_text_search_disabled_message": "Nedisponebla che {domain}.",
+  "search_popout.full_text_search_logged_out_message": "Nur disponebla enirite.",
+  "search_popout.language_code": "ISO linguokodexo",
   "search_popout.options": "Opcioni serchala",
   "search_popout.quick_actions": "Agi rapida",
   "search_popout.recent": "Lasta serchi",
@@ -607,8 +630,8 @@
   "status.admin_status": "Open this status in the moderation interface",
   "status.block": "Restriktez @{name}",
   "status.bookmark": "Libromarko",
-  "status.cancel_reblog_private": "Debustez",
-  "status.cannot_reblog": "Ca posto ne povas bustesas",
+  "status.cancel_reblog_private": "Desrepetez",
+  "status.cannot_reblog": "Ca posto ne povas repetesar",
   "status.copy": "Copy link to status",
   "status.delete": "Efacar",
   "status.detailed_status": "Detala konversvido",
@@ -636,10 +659,10 @@
   "status.pin": "Pinglagez che profilo",
   "status.pinned": "Pinned toot",
   "status.read_more": "Lektez pluse",
-  "status.reblog": "Repetar",
-  "status.reblog_private": "Bustez kun originala videbleso",
-  "status.reblogged_by": "{name} repetita",
-  "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
+  "status.reblog": "Repetez",
+  "status.reblog_private": "Repetez kun originala videbleso",
+  "status.reblogged_by": "{name} repetis",
+  "status.reblogs.empty": "Nulu ja repetis ca posto. Kande ulu facas lo, lu montresos hike.",
   "status.redraft": "Efacez e riskisigez",
   "status.remove_bookmark": "Efacez libromarko",
   "status.replied_to": "Respondis a {name}",
diff --git a/app/javascript/mastodon/locales/lad.json b/app/javascript/mastodon/locales/lad.json
new file mode 100644
index 000000000..051e475e6
--- /dev/null
+++ b/app/javascript/mastodon/locales/lad.json
@@ -0,0 +1,139 @@
+{
+  "about.blocks": "Sirvidores moderados",
+  "about.contact": "Kontakto:",
+  "about.disclaimer": "Mastodon es un programario libero, kon kodiche avierto i una marka komersiala de Mastodon gGmbH.",
+  "about.domain_blocks.no_reason_available": "Razon no desponivle",
+  "about.domain_blocks.preamble": "Mastodon djeneralmente te permete ver kontenido de i enteraktuar kon utilizadores de kualseker otro sirvidor en el fediverso. Estas son las eksepsiones en este sirvidor en partikolar.",
+  "about.domain_blocks.silenced.explanation": "\"Djeneralmente no veras profiles i kontenido de este sirvidor, salvo ke eksplisitamente lo bushkes o sigas algun kuento de el.",
+  "about.domain_blocks.silenced.title": "Limitado",
+  "about.domain_blocks.suspended.explanation": "Dingunos datos de este sirvidor sera prosesado, magazinado o enterkambiado kon este sirvidor. Enteraksyon o komunikasyon kon sus utilizadores sera imposivle.",
+  "about.domain_blocks.suspended.title": "Suspendido",
+  "about.not_available": "Esta enformasyon no esta desponivle en este sirvidor.",
+  "about.powered_by": "Redes sosyalas desentralizadas kon uzo de {mastodon}",
+  "about.rules": "Reglas del sirvidor",
+  "account.account_note_header": "Nota",
+  "account.add_or_remove_from_list": "Adjusta a o kita de listas",
+  "account.badges.bot": "Bot",
+  "account.badges.group": "Grupo",
+  "account.block": "Bloka @{name}",
+  "account.block_domain": "Bloka el domeno {domain}",
+  "account.block_short": "Bloka",
+  "account.blocked": "Blokado",
+  "account.browse_more_on_origin_server": "Ve mas en el profil orijinal",
+  "account.cancel_follow_request": "Anula solisitud de segir",
+  "account.copy": "Kopia atadijo de profil",
+  "account.direct": "Enmenta a @{name} en privado",
+  "account.disable_notifications": "No me avizes mas sovre publikasyones de @{name}",
+  "account.domain_blocked": "Domeno blokado",
+  "account.edit_profile": "Edita profil",
+  "account.enable_notifications": "Avizame kuando @{name} publike",
+  "account.endorse": "Avalia en profil",
+  "account.featured_tags.last_status_at": "Ultima publikasyon de {date}",
+  "account.featured_tags.last_status_never": "\"No ay publikasyones",
+  "account.featured_tags.title": "Etiketas avaliadas de {name}",
+  "account.follow": "Sige",
+  "account.followers": "Suivantes",
+  "account.followers.empty": "Por agora dingun no sige a este utilizador.",
+  "account.followers_counter": "{count, plural, one {{counter} suivante} other {{counter} suivantes}}",
+  "account.following": "Sigiendo",
+  "account.following_counter": "{count, plural, other {Sigiendo a {counter}}}",
+  "account.follows.empty": "Este utilizador ainda no sige a ningun.",
+  "account.follows_you": "Te sige",
+  "account.go_to_profile": "Va al profil",
+  "account.hide_reblogs": "Eskonde repartajasyones de @{name}",
+  "account.joined_short": "Adjunto",
+  "account.languages": "Troka linguas suskrividas",
+  "account.link_verified_on": "La propriedad de este atadijo fue verifikada el {date}",
+  "account.locked_info": "El estado de privasita de este konto esta konfigurado komo serado. El proprietario reviza manualmente kien le puede segir.",
+  "account.media": "Multimedia",
+  "account.mention": "Enmenta a @{name}",
+  "account.moved_to": "{name} tiene endikado ke su muevo kuento agora es:",
+  "account.mute": "Silensia a @{name}",
+  "account.mute_notifications_short": "Silensia avizos de @{name}",
+  "account.mute_short": "Silensia",
+  "account.muted": "Silensiado",
+  "account.open_original_page": "Avre pajina orijnala",
+  "account.posts": "Publikasyones",
+  "account.posts_with_replies": "Kon repuestas",
+  "account.report": "Raporta @{name}",
+  "account.requested": "Asperando achetasion. Klika para anular la solisitud de segimiento",
+  "account.requested_follow": "{name} tiene solisitado segirte",
+  "account.share": "Partaja el profil de @{name}",
+  "account.show_reblogs": "Amostra repartajasyones de @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} publikasyon} other {{counter} publikasyones}}",
+  "account.unblock": "Dezbloka @{name}",
+  "account.unblock_domain": "Dezbloka domeno {domain}",
+  "account.unblock_short": "Dezbloka",
+  "account.unendorse": "No avalia en profil",
+  "account.unfollow": "Desige",
+  "account.unmute": "Desilensia a @{name}",
+  "account.unmute_notifications_short": "Desilensia avizos",
+  "account.unmute_short": "Desilensia",
+  "account_note.placeholder": "Klika para adjustar nota",
+  "admin.dashboard.daily_retention": "Proporsyon de retensyon de utilizadores por diya dempues de enrejistrasyon",
+  "admin.dashboard.monthly_retention": "Proporsyon de retensyon de utilizadores por mez dempues de enrejistrasyon",
+  "admin.dashboard.retention.average": "Media",
+  "admin.dashboard.retention.cohort": "Mez de enrejistrasyon",
+  "admin.dashboard.retention.cohort_size": "Muevos utilizadores",
+  "alert.rate_limited.message": "Por favor aprova dempues de {retry_time, time, medium}.",
+  "alert.rate_limited.title": "Trafiko limitado",
+  "alert.unexpected.message": "Afito un yerro no asperado.",
+  "alert.unexpected.title": "Atyo!",
+  "announcement.announcement": "Pregon",
+  "attachments_list.unprocessed": "(no prosesado)",
+  "audio.hide": "Eskonder audio",
+  "autosuggest_hashtag.per_week": "{count} por semana",
+  "boost_modal.combo": "Puedes klikar {combo} para ometer esto la proksima vez",
+  "bundle_column_error.copy_stacktrace": "Kopia el raporto de yerro",
+  "bundle_column_error.error.body": "La pajina solisitada no pudo ser renderada. Podria ser por un yerro en muestro kodiche o un problem de kompatibilita kon el navigador.",
+  "bundle_column_error.error.title": "Atyo, no!",
+  "bundle_column_error.network.body": "Uvo un yerro kon la prova de eskargar esta pajina. Esto puede ser por un problem temporal kon tu koneksyon a la internet o a este sirvidor.",
+  "bundle_column_error.network.title": "Yerro de red",
+  "bundle_column_error.retry": "Aprova de muevo",
+  "bundle_column_error.return": "Volta a la linya prinsipala",
+  "bundle_column_error.routing.body": "No se pudo trokar la pajina solisitada. Estas siguro ke el adreso URL en la vara de adreso es djusto?",
+  "bundle_column_error.routing.title": "404",
+  "bundle_modal_error.close": "Serra",
+  "bundle_modal_error.message": "Algo negro afito al eskargar este komponente.",
+  "bundle_modal_error.retry": "Aprova de muevo",
+  "closed_registrations.other_server_instructions": "Deke Mastodon es desentralizado, puedes kriyar un kuento en otro sirvidor i ainda enteraktuar kon este.",
+  "closed_registrations_modal.description": "Aktualmente no es posivle kriyar un kuento en {domain}, ama por favor akodrate de ke no ay menester de tener un kuento espesifikamente en {domain} para kulanear Mastodon.",
+  "closed_registrations_modal.find_another_server": "Bushka otro sirvidor",
+  "closed_registrations_modal.preamble": "Mastodon es desentralizado, estonses sin emportansya ande kriyas tu kuento, podras segir i enteraktuar kon kualseker persona en este sirvidor. Tamyen puedes balabayarlo tu mezmo!",
+  "closed_registrations_modal.title": "Enrerjistrate en Mastodon",
+  "column.about": "Sovre mozotros",
+  "column.blocks": "Utilizadores blokados",
+  "column.bookmarks": "Markadores",
+  "column.community": "Linya de tiempo lokala",
+  "column.direct": "Enmentaduras privadas",
+  "column.directory": "Eksplora profiles",
+  "column.domain_blocks": "Domenos blokados",
+  "column.favourites": "Te plazen",
+  "column.firehose": "Linyas en bivo",
+  "column.follow_requests": "Solisitudes de segimiento",
+  "column.home": "Linya prinsipala",
+  "column.lists": "Listas",
+  "column.mutes": "Utilizadores silensiados",
+  "column.notifications": "Avizos",
+  "column.pins": "Publikasyones fiksadas",
+  "column.public": "Linya de tiempo federada",
+  "column_back_button.label": "Atras",
+  "column_header.hide_settings": "Eskonde opsyones",
+  "column_header.moveLeft_settings": "Move kolumna a la siedra",
+  "column_header.moveRight_settings": "Move kolumna a la derecha",
+  "column_header.pin": "Fiksa",
+  "column_header.show_settings": "Amostra opsyones",
+  "column_header.unpin": "Defiksar",
+  "column_subheading.settings": "Opsyones",
+  "community.column_settings.local_only": "Solo lokalas",
+  "community.column_settings.media_only": "Solo multimedia",
+  "community.column_settings.remote_only": "Solo remotas",
+  "compose.language.change": "Troka lingua",
+  "compose.language.search": "Bushka linguas...",
+  "compose_form.direct_message_warning_learn_more": "Ambezate mas",
+  "compose_form.encryption_warning": "Publikasyones en Mastodon no son shifradas de lado a lado. No partajes dinguna enformasyon sensivle por Mastodon.",
+  "compose_form.hashtag_warning": "Esta publikasyon no sera amostrada debasho de dinguna etiketa si no es publika. Solo publikasyones publikas se pueden bushkar por la etiketa.",
+  "compose_form.lock_disclaimer": "Tu kuento no esta {locked}. Todos pueden segirte para ver tus publikasyones solo para suivantes.",
+  "compose_form.lock_disclaimer.lock": "serrado",
+  "compose_form.placeholder": "Ke haber?"
+}
diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json
index 7faf27971..708d8c3e9 100644
--- a/app/javascript/mastodon/locales/pa.json
+++ b/app/javascript/mastodon/locales/pa.json
@@ -1,25 +1,39 @@
 {
   "about.contact": "ਸੰਪਰਕ:",
+  "about.domain_blocks.silenced.title": "ਸੀਮਿਤ",
   "about.domain_blocks.suspended.title": "ਮੁਅੱਤਲ ਕੀਤੀ",
+  "about.rules": "ਸਰਵਰ ਨਿਯਮ",
   "account.account_note_header": "ਨੋਟ",
-  "account.badges.bot": "Bot",
+  "account.add_or_remove_from_list": "ਸੂਚੀ ਵਿੱਚ ਜੋੜੋ ਜਾਂ ਹਟਾਓ",
+  "account.badges.bot": "ਆਟੋਮੇਟ ਕੀਤਾ",
   "account.badges.group": "ਗਰੁੱਪ",
+  "account.block": "@{name} ਉੱਤੇ ਪਾਬੰਦੀ ਲਾਓ",
+  "account.block_domain": "{domain} ਡੋਮੇਨ ਉੱਤੇ ਪਾਬੰਦੀ ਲਾਓ",
+  "account.block_short": "ਪਾਬੰਦੀ",
   "account.blocked": "ਪਾਬੰਦੀਸ਼ੁਦਾ",
-  "account.cancel_follow_request": "Withdraw follow request",
-  "account.follow": "ਪ੍ਰਸ਼ੰਸਕ ਬਣੋ",
-  "account.followers": "ਪ੍ਰਸ਼ੰਸਕ",
-  "account.following": "ਪ੍ਰਸ਼ੰਸਕ ਹਾਂ",
+  "account.cancel_follow_request": "ਫ਼ਾਲੋ ਕਰਨ ਨੂੰ ਰੱਦ ਕਰੋ",
+  "account.edit_profile": "ਪਰੋਫਾਈਲ ਨੂੰ ਸੋਧੋ",
+  "account.follow": "ਫ਼ਾਲੋ",
+  "account.followers": "ਫ਼ਾਲੋਅਰ",
+  "account.followers.empty": "ਇਸ ਵਰਤੋਂਕਾਰ ਨੂੰ ਹਾਲੇ ਕੋਈ ਫ਼ਾਲੋ ਨਹੀਂ ਕਰਦਾ ਹੈ।",
+  "account.following": "ਫ਼ਾਲੋ ਕੀਤਾ",
+  "account.follows.empty": "ਇਹ ਵਰਤੋਂਕਾਰ ਹਾਲੇ ਕਿਸੇ ਨੂੰ ਫ਼ਾਲੋ ਨਹੀਂ ਕਰਦਾ ਹੈ।",
+  "account.follows_you": "ਤੁਹਾਨੂੰ ਫ਼ਾਲੋ ਕਰੋ",
   "account.media": "ਮੀਡੀਆ",
   "account.muted": "ਮੌਨ ਕੀਤੀਆਂ",
-  "account.posts": "Toots",
-  "account.posts_with_replies": "Toots and replies",
-  "account.requested": "Awaiting approval",
+  "account.posts": "ਪੋਸਟਾਂ",
+  "account.posts_with_replies": "ਪੋਸਤਾਂ ਅਤੇ ਜਵਾਬ",
+  "account.requested": "ਮਨਜ਼ੂਰੀ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ। ਫ਼ਾਲੋ ਬੇਨਤੀਆਂ ਨੂੰ ਰੱਦ ਕਰਨ ਲਈ ਕਲਿੱਕ ਕਰੋ",
+  "account.requested_follow": "{name} ਨੇ ਤੁਹਾਨੂੰ ਫ਼ਾਲੋ ਕਰਨ ਦੀ ਬੇਨਤੀ ਕੀਤੀ ਹੈ",
   "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
+  "account.unblock": "@{name} ਤੋਂ ਪਾਬੰਦੀ ਹਟਾਓ",
+  "account.unblock_domain": "{domain} ਡੋਮੇਨ ਤੋਂ ਪਾਬੰਦੀ ਹਟਾਓ",
   "account.unblock_short": "ਪਾਬੰਦੀ ਹਟਾਓ",
-  "account.unfollow": "ਪ੍ਰਸ਼ੰਸਕੀ ਰੱਦ ਕਰੋ",
+  "account.unfollow": "ਅਣ-ਫ਼ਾਲੋ",
   "account.unmute_short": "ਮੌਨ-ਰਹਿਤ ਕਰੋ",
   "account_note.placeholder": "Click to add a note",
   "admin.dashboard.retention.average": "ਔਸਤ",
+  "admin.dashboard.retention.cohort_size": "ਨਵੇਂ ਵਰਤੋਂਕਾਰ",
   "alert.unexpected.title": "ਓਹੋ!",
   "announcement.announcement": "ਹੋਕਾ",
   "bundle_column_error.network.title": "ਨੈੱਟਵਰਕ ਦੀ ਸਮੱਸਿਆ",
@@ -27,35 +41,50 @@
   "bundle_modal_error.close": "ਬੰਦ ਕਰੋ",
   "bundle_modal_error.retry": "ਮੁੜ-ਕੋਸ਼ਿਸ਼ ਕਰੋ",
   "column.about": "ਸਾਡੇ ਬਾਰੇ",
+  "column.blocks": "ਪਾਬੰਦੀ ਲਾਏ ਵਰਤੋਂਕਾਰ",
   "column.bookmarks": "ਬੁੱਕਮਾਰਕ",
-  "column.home": "ਮੁੱਖ ਪੰਨਾ",
+  "column.community": "ਲੋਕਲ ਸਮਾਂ-ਲਾਈਨ",
+  "column.direct": "ਨਿੱਜੀ ਜ਼ਿਕਰ",
+  "column.favourites": "ਮਨਪਸੰਦ",
+  "column.follow_requests": "ਫ਼ਾਲੋ ਦੀਆਂ ਬੇਨਤੀਆਂ",
+  "column.home": "ਮੁੱਖ ਸਫ਼ਾ",
   "column.lists": "ਸੂਚੀਆਂ",
   "column.notifications": "ਸੂਚਨਾਵਾਂ",
-  "column.pins": "Pinned toot",
+  "column.pins": "ਟੰਗੀਆਂ ਪੋਸਟਾਂ",
   "column_back_button.label": "ਪਿੱਛੇ",
+  "column_header.pin": "ਟੰਗੋ",
+  "column_header.show_settings": "ਸੈਟਿੰਗਾਂ ਦਿਖਾਓ",
+  "column_header.unpin": "ਲਾਹੋ",
   "column_subheading.settings": "ਸੈਟਿੰਗਾਂ",
-  "community.column_settings.media_only": "Media only",
+  "community.column_settings.local_only": "ਸਿਰਫ ਲੋਕਲ ਹੀ",
+  "community.column_settings.media_only": "ਸਿਰਫ ਮੀਡੀਆ ਹੀ",
+  "community.column_settings.remote_only": "ਸਿਰਫ਼ ਰਿਮੋਟ ਹੀ",
+  "compose.language.change": "ਭਾਸ਼ਾ ਬਦਲੋ",
+  "compose.language.search": "ਭਾਸ਼ਾਵਾਂ ਦੀ ਖੋਜ...",
+  "compose.published.open": "ਖੋਲ੍ਹੋ",
+  "compose.saved.body": "ਪੋਸਟ ਸੰਭਾਲੀ ਗਈ।",
   "compose_form.direct_message_warning_learn_more": "ਹੋਰ ਜਾਣੋ",
   "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.",
   "compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.",
+  "compose_form.lock_disclaimer.lock": "ਲਾਕ ਹੈ",
   "compose_form.placeholder": "What is on your mind?",
   "compose_form.publish": "ਪ੍ਰਕਾਸ਼ਨ ਕਰੋ",
   "compose_form.publish_form": "Publish",
   "compose_form.save_changes": "ਤਬਦੀਲੀਆਂ ਸਾਂਭੋ",
-  "compose_form.spoiler.marked": "Text is hidden behind warning",
-  "compose_form.spoiler.unmarked": "Text is not hidden",
+  "compose_form.spoiler.marked": "ਸਮੱਗਰੀ ਚੇਤਾਵਨੀ ਨੂੰ ਹਟਾਓ",
+  "compose_form.spoiler.unmarked": "ਸਮੱਗਰੀ ਬਾਰੇ ਚੇਤਾਵਨੀ ਜੋੜੋ",
   "confirmation_modal.cancel": "ਰੱਦ ਕਰੋ",
-  "confirmations.block.confirm": "ਬਲਾਕ",
-  "confirmations.delete.confirm": "ਮਿਟਾਓ",
-  "confirmations.delete.message": "Are you sure you want to delete this status?",
-  "confirmations.delete_list.confirm": "ਮਿਟਾਓ",
+  "confirmations.block.confirm": "ਪਾਬੰਦੀ",
+  "confirmations.delete.confirm": "ਹਟਾਓ",
+  "confirmations.delete.message": "ਕੀ ਤੁਸੀਂ ਇਹ ਪੋਸਟ ਨੂੰ ਹਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?",
+  "confirmations.delete_list.confirm": "ਹਟਾਓ",
   "confirmations.discard_edit_media.confirm": "ਰੱਦ ਕਰੋ",
-  "confirmations.domain_block.confirm": "Hide entire domain",
+  "confirmations.domain_block.confirm": "ਪੂਰੀ ਡੋਮੇਨ ਉੱਤੇ ਪਾਬੰਦੀ ਲਾਓ",
   "confirmations.edit.confirm": "ਸੋਧ",
   "confirmations.logout.confirm": "ਬਾਹਰ ਹੋਵੋ",
   "confirmations.mute.confirm": "ਮੌਨ ਕਰੋ",
   "confirmations.reply.confirm": "ਜਵਾਬ ਦੇਵੋ",
-  "confirmations.unfollow.confirm": "ਪ੍ਰਸ਼ੰਸਕੀ ਰੱਦ ਕਰੋ",
+  "confirmations.unfollow.confirm": "ਅਣ-ਫ਼ਾਲੋ",
   "copypaste.copied": "ਕਾਪੀ ਕੀਤਾ",
   "copypaste.copy_to_clipboard": "ਕਲਿੱਪਬੋਰਡ 'ਤੇ ਕਾਪੀ ਕਰੋ",
   "disabled_account_banner.account_settings": "ਖਾਤੇ ਦੀਆਂ ਸੈਟਿੰਗਾਂ",
@@ -63,165 +92,252 @@
   "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.",
   "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.",
   "embed.instructions": "Embed this status on your website by copying the code below.",
-  "emoji_button.activity": "ਗਤੀਵਿਧੀਆਂ",
-  "emoji_button.clear": "ਸਾਫ਼ ਕਰੋ",
+  "emoji_button.activity": "ਗਤੀਵਿਧੀ",
+  "emoji_button.clear": "ਮਿਟਾਓ",
   "emoji_button.custom": "ਕਸਟਮ",
   "emoji_button.flags": "ਝੰਡੀਆਂ",
   "emoji_button.food": "ਖਾਣਾ-ਪੀਣਾ",
   "emoji_button.nature": "ਕੁਦਰਤ",
   "emoji_button.objects": "ਇਕਾਈ",
   "emoji_button.people": "ਲੋਕ",
-  "empty_column.account_timeline": "No toots here!",
+  "emoji_button.search": "ਖੋਜ ਕਰੋ...",
+  "emoji_button.search_results": "ਖੋਜ ਨਤੀਜੇ",
+  "emoji_button.symbols": "ਚਿੰਨ੍ਹ",
+  "emoji_button.travel": "ਸੈਰ ਸਪਾਟਾ ਤੇ ਥਾਵਾਂ",
+  "empty_column.account_timeline": "ਇੱਥੇ ਕੋਈ ਪੋਸਟ ਨਹੀਂ ਹੈ!",
   "empty_column.bookmarked_statuses": "You don't have any bookmarked toots yet. When you bookmark one, it will show up here.",
-  "empty_column.home": "Your home timeline is empty! Follow more people to fill it up. {suggestions}",
+  "empty_column.home": "ਤੁਹਾਡੀ ਟਾਈਮ-ਲਾਈਨ ਖਾਲੀ ਹੈ! ਇਸ ਨੂੰ ਭਰਨ ਲਈ ਹੋਰ ਲੋਕਾਂ ਨੂੰ ਫ਼ਾਲੋ ਕਰੋ।",
   "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.",
   "errors.unexpected_crash.report_issue": "ਮੁੱਦੇ ਦੀ ਰਿਪੋਰਟ ਕਰੋ",
   "explore.suggested_follows": "ਲੋਕ",
   "explore.title": "ਪੜਚੋਲ ਕਰੋ",
   "explore.trending_links": "ਖ਼ਬਰਾਂ",
-  "explore.trending_statuses": "ਸੰਪਾਦਨਾਵਾਂ",
-  "follow_request.reject": "ਅਸਵੀਕਾਰ ਕਰੋ",
+  "explore.trending_statuses": "ਪੋਸਟਾਂ",
+  "explore.trending_tags": "ਹੈਸ਼ਟੈਗ",
+  "filter_modal.added.settings_link": "ਸੈਟਿੰਗਾਂ ਸਫ਼ਾ",
+  "firehose.all": "ਸਭ",
+  "firehose.local": "ਇਹ ਸਰਵਰ",
+  "firehose.remote": "ਹੋਰ ਸਰਵਰ",
+  "follow_request.reject": "ਰੱਦ ਕਰੋ",
   "footer.about": "ਸਾਡੇ ਬਾਰੇ",
+  "footer.get_app": "ਐਪ ਲਵੋ",
+  "footer.invite": "ਲੋਕਾਂ ਨੂੰ ਸੱਦਾ ਭੇਜੋ",
   "footer.keyboard_shortcuts": "ਕੀਬੋਰਡ ਸ਼ਾਰਟਕੱਟ",
+  "footer.privacy_policy": "ਪਰਦੇਦਾਰੀ ਨੀਤੀ",
+  "footer.source_code": "ਸਰੋਤ ਕੋਡ ਵੇਖੋ",
   "footer.status": "ਹਾਲਤ",
   "generic.saved": "ਸਾਂਭੀ ਗਈ",
+  "getting_started.heading": "ਸ਼ੁਰੂ ਕਰੀਏ",
+  "hashtag.column_header.tag_mode.all": "ਅਤੇ {additional}",
+  "hashtag.column_header.tag_mode.any": "ਜਾਂ {additional}",
+  "hashtag.column_header.tag_mode.none": "{additional} ਬਿਨਾਂ",
+  "hashtag.column_settings.tag_mode.any": "ਇਹਨਾਂ ਵਿੱਚੋਂ ਕੋਈ",
+  "hashtag.column_settings.tag_mode.none": "ਇਹਨਾਂ ਵਿੱਚੋਂ ਕੋਈ ਨਹੀਂ",
   "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
+  "hashtag.follow": "ਹੈਸ਼ਟੈਗ ਨੂੰ ਫ਼ਾਲੋ ਕਰੋ",
+  "hashtag.unfollow": "ਹੈਸ਼ਟੈਗ ਨੂੰ ਅਣ-ਫ਼ਾਲੋ ਕਰੋ",
   "home.column_settings.basic": "ਆਮ",
-  "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",
+  "interaction_modal.title.follow": "{name} ਨੂੰ ਫ਼ਾਲੋ ਕਰੋ",
+  "keyboard_shortcuts.back": "ਪਿੱਛੇ ਜਾਓ",
+  "keyboard_shortcuts.blocked": "ਪਾਬੰਦੀ ਲਾਏ ਵਰਤੋਂਕਾਰਾਂ ਦੀ ਸੂਚੀ ਖੋਲ੍ਹੋ",
+  "keyboard_shortcuts.boost": "ਪੋਸਟ ਨੂੰ ਬੂਸਟ ਕਰੋ",
+  "keyboard_shortcuts.column": "ਫੋਕਸ ਕਾਲਮ",
   "keyboard_shortcuts.compose": "to focus the compose textarea",
   "keyboard_shortcuts.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.federated": "to open federated timeline",
-  "keyboard_shortcuts.heading": "Keyboard Shortcuts",
+  "keyboard_shortcuts.heading": "ਕੀਬੋਰਡ ਸ਼ਾਰਟਕੱਟ",
   "keyboard_shortcuts.home": "to open home timeline",
   "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.notifications": "ਨੋਟੀਫਿਕੇਸ਼ਨ ਕਾਲਮ ਖੋਲ੍ਹੋ",
   "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.profile": "ਲੇਖਕ ਦਾ ਪਰੋਫਾਈਲ ਖੋਲ੍ਹੋ",
+  "keyboard_shortcuts.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.toggle_sensitivity": "ਮੀਡੀਆ ਦਿਖਾਉਣ/ਲੁਕਾਉਣ ਲਈ",
+  "keyboard_shortcuts.toot": "ਨਵੀਂ ਪੋਸਟ ਸ਼ੁਰੂ ਕਰੋ",
   "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
   "keyboard_shortcuts.up": "to move up in the list",
   "lightbox.close": "ਬੰਦ ਕਰੋ",
   "lightbox.next": "ਅਗਲੀ",
   "lightbox.previous": "ਪਿਛਲੀ",
-  "lists.delete": "ਸੂਚੀ ਮਿਟਾਓ",
+  "link_preview.author": "{name} ਵਲੋਂ",
+  "lists.account.add": "ਸੂਚੀ ਵਿੱਚ ਜੋੜੋ",
+  "lists.account.remove": "ਸੂਚੀ ਵਿਚੋਂ ਹਟਾਓ",
+  "lists.delete": "ਸੂਚੀ ਹਟਾਓ",
+  "lists.replies_policy.followed": "ਕੋਈ ਵੀ ਫ਼ਾਲੋ ਕੀਤਾ ਵਰਤੋਂਕਾਰ",
+  "lists.replies_policy.none": "ਕੋਈ ਨਹੀਂ",
+  "loading_indicator.label": "ਲੋਡ ਹੋ ਰਿਹਾ ਹੈ…",
   "mute_modal.duration": "ਮਿਆਦ",
-  "navigation_bar.about": "ਸਾਡੇ ਬਾਰੇ",
+  "navigation_bar.about": "ਇਸ ਬਾਰੇ",
+  "navigation_bar.advanced_interface": "ਤਕਨੀਕੀ ਵੈੱਬ ਇੰਟਰਫੇਸ ਵਿੱਚ ਖੋਲ੍ਹੋ",
+  "navigation_bar.blocks": "ਪਾਬੰਦੀ ਲਾਏ ਵਰਤੋਂਕਾਰ",
   "navigation_bar.bookmarks": "ਬੁੱਕਮਾਰਕ",
-  "navigation_bar.compose": "Compose new toot",
+  "navigation_bar.community_timeline": "ਲੋਕਲ ਸਮਾਂ-ਲਾਈਨ",
+  "navigation_bar.compose": "ਨਵੀਂ ਪੋਸਟ ਲਿਖੋ",
+  "navigation_bar.direct": "ਨਿੱਜੀ ਜ਼ਿਕਰ",
   "navigation_bar.discover": "ਖੋਜ",
-  "navigation_bar.domain_blocks": "Hidden domains",
+  "navigation_bar.domain_blocks": "ਪਾਬੰਦੀ ਲਾਏ ਡੋਮੇਨ",
+  "navigation_bar.edit_profile": "ਪਰੋਫਾਈਲ ਨੂੰ ਸੋਧੋ",
   "navigation_bar.explore": "ਪੜਚੋਲ ਕਰੋ",
+  "navigation_bar.favourites": "ਮਨਪਸੰਦ",
+  "navigation_bar.follow_requests": "ਫ਼ਾਲੋ ਦੀਆਂ ਬੇਨਤੀਆਂ",
+  "navigation_bar.followed_tags": "ਫ਼ਾਲੋ ਕੀਤੇ ਹੈਸ਼ਟੈਗ",
+  "navigation_bar.follows_and_followers": "ਫ਼ਾਲੋ ਅਤੇ ਫ਼ਾਲੋ ਕਰਨ ਵਾਲੇ",
   "navigation_bar.lists": "ਸੂਚੀਆਂ",
-  "navigation_bar.logout": "ਲਾੱਗ ਆਊਟ, ਬਾਹਰ ਆਉਣਾ",
+  "navigation_bar.logout": "ਲਾਗ ਆਉਟ",
   "navigation_bar.personal": "ਨਿੱਜੀ",
-  "navigation_bar.pins": "Pinned toots",
-  "navigation_bar.preferences": "ਤਰਜੀਹਾਂ",
+  "navigation_bar.pins": "ਟੰਗੀਆਂ ਪੋਸਟਾਂ",
+  "navigation_bar.preferences": "ਪਸੰਦਾਂ",
   "navigation_bar.search": "ਖੋਜੋ",
   "navigation_bar.security": "ਸੁਰੱਖਿਆ",
-  "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.",
+  "not_signed_in_indicator.not_signed_in": "ਇਹ ਸਰੋਤ ਵਰਤਣ ਲਈ ਤੁਹਾਨੂੰ ਲਾਗਇਨ ਕਰਨ ਦੀ ਲੋੜ ਹੈ।",
+  "notification.follow": "{name} ਨੇ ਤੁਹਾਨੂੰ ਫ਼ਾਲੋ ਕੀਤਾ",
+  "notification.follow_request": "{name} ਨੇ ਤੁਹਾਨੂੰ ਫ਼ਾਲੋ ਕਰਨ ਦੀ ਬੇਨਤੀ ਕੀਤੀ ਹੈ",
   "notification.reblog": "{name} boosted your status",
-  "notifications.column_settings.status": "New toots:",
+  "notifications.column_settings.follow": "ਨਵੇਂ ਫ਼ਾਲੋਅਰ:",
+  "notifications.column_settings.follow_request": "ਨਵੀਆਂ ਫ਼ਾਲੋ ਬੇਨਤੀਆਂ:",
+  "notifications.column_settings.status": "ਨਵੀਆਂ ਪੋਸਟਾਂ:",
+  "notifications.column_settings.update": "ਸੋਧ:",
   "notifications.filter.all": "ਸਭ",
-  "notifications.filter.follows": "ਪ੍ਰਸ਼ੰਸਕ ਬਣਨ 'ਤੇ",
-  "onboarding.actions.go_to_explore": "See what's trending",
-  "onboarding.actions.go_to_home": "Go to your home feed",
-  "onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
-  "onboarding.follows.title": "Popular on Mastodon",
+  "notifications.filter.boosts": "ਬੂਸਟ",
+  "notifications.filter.favourites": "ਮਨਪਸੰਦ",
+  "notifications.filter.follows": "ਫ਼ਾਲੋ",
+  "notifications.filter.mentions": "ਜ਼ਿਕਰ",
+  "onboarding.actions.go_to_explore": "ਮੈਨੂੰ ਰੁਝਾਨ ਵੇਖਾਓ",
+  "onboarding.actions.go_to_home": "ਮੇਰੀ ਮੁੱਖ ਫੀਡ ਉੱਤੇ ਲੈ ਜਾਓ",
+  "onboarding.follows.lead": "",
+  "onboarding.follows.title": "ਆਪਣੀ ਹੋਮ ਫੀਡ ਨੂੰ ਨਿੱਜੀ ਬਣਾਓ",
+  "onboarding.profile.note": "ਜਾਣਕਾਰੀ",
+  "onboarding.profile.save_and_continue": "ਸੰਭਾਲੋ ਅਤੇ ਜਾਰੀ ਰੱਖੋ",
+  "onboarding.profile.title": "ਪਰੋਫਾਈਲ ਸੈਟਅੱਪ",
+  "onboarding.profile.upload_avatar": "ਪਰੋਫਾਈਲ ਤਸਵੀਰ ਅੱਪਲੋਡ ਕਰੋ",
+  "onboarding.share.title": "ਆਪਣਾ ਪਰੋਫਾਈਲ ਸਾਂਝਾ ਕਰੋ",
   "onboarding.start.lead": "Your new Mastodon account is ready to go. Here's how you can make the most of it:",
-  "onboarding.start.skip": "Want to skip right ahead?",
-  "onboarding.steps.follow_people.body": "You curate your own feed. Lets fill it with interesting people.",
-  "onboarding.steps.follow_people.title": "Follow {count, plural, one {one person} other {# people}}",
+  "onboarding.start.skip": "ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਮਦਦ ਨਹੀਂ ਚਾਹੀਦੀ ਹੈ?",
+  "onboarding.start.title": "ਤੁਸੀਂ ਪੂਰਾ ਕਰਨ ਲਿਆ!",
+  "onboarding.steps.follow_people.body": "ਦਿਲਚਸਪ ਲੋਕਾਂ ਨੂੰ ਫ਼ਾਲੋ ਕਰੋ, ਇਹ ਤਾਂ ਮਸਟਾਡੋਨ ਹੈ।",
+  "onboarding.steps.follow_people.title": "ਆਪਣੀ ਹੋਮ ਫੀਡ ਨੂੰ ਨਿੱਜੀ ਬਣਾਓ",
   "onboarding.steps.publish_status.body": "Say hello to the world.",
+  "onboarding.steps.publish_status.title": "ਆਪਣੀ ਪਹਿਲੀ ਪੋਸਟ ਕਰੋ",
   "onboarding.steps.setup_profile.body": "Others are more likely to interact with you with a filled out profile.",
-  "onboarding.steps.setup_profile.title": "Customize your profile",
-  "onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
-  "onboarding.steps.share_profile.title": "Share your profile",
-  "poll.closed": "ਬੰਦ ਹੋਇਆ",
+  "onboarding.steps.setup_profile.title": "ਆਪਣੇ ਪਰੋਫਾਈਲ ਨੂੰ ਆਪਣਾ ਬਣਾਓ",
+  "onboarding.steps.share_profile.body": "ਆਪਣੇ ਮਿੱਤਰਾਂ ਨੂੰ ਦੱਸੋ ਤੁਹਾਨੂੰ ਮਸਟਾਡੋਨ ਕਿਵੇਂ ਲੱਗਿਆ",
+  "onboarding.steps.share_profile.title": "ਆਪਣੇ ਮਸਟਾਡੋਨ ਪਰੋਫਾਈਲ ਨੂੰ ਸਾਂਝਾ ਕਰੋ",
+  "poll.closed": "ਬੰਦ ਹੈ",
   "poll.refresh": "ਤਾਜ਼ਾ ਕਰੋ",
   "poll.vote": "ਵੋਟ ਪਾਓ",
-  "privacy.change": "Adjust status privacy",
-  "privacy.direct.short": "Direct",
-  "privacy.private.short": "Followers-only",
+  "privacy.change": "ਪੋਸਟ ਦੀ ਪਰਦੇਦਾਰੀ ਨੂੰ ਬਦਲੋ",
+  "privacy.direct.short": "ਸਿੱਧਾ ਲੋਕਾਂ ਦਾ ਜ਼ਿਕਰ ਕਰੋ",
+  "privacy.private.short": "ਸਿਰਫ਼ ਫ਼ਾਲੋਅਰ",
   "privacy.public.short": "ਜਨਤਕ",
   "privacy_policy.title": "ਪਰਦੇਦਾਰੀ ਨੀਤੀ",
   "refresh": "ਤਾਜ਼ਾ ਕਰੋ",
   "regeneration_indicator.label": "ਲੋਡ ਹੋ ਰਿਹਾ ਹੈ...",
   "relative_time.full.just_now": "ਹੁਣੇ ਹੀ",
+  "relative_time.just_now": "ਹੁਣੇ",
+  "relative_time.minutes": "{number}ਮਿੰ",
+  "relative_time.seconds": "{number}ਸ",
   "relative_time.today": "ਅੱਜ",
   "reply_indicator.cancel": "ਰੱਦ ਕਰੋ",
   "report.block": "ਬਲਾਕ",
+  "report.categories.legal": "ਕਨੂੰਨੀ",
   "report.categories.other": "ਬਾਕੀ",
-  "report.categories.spam": "ਸਪਾਮ",
-  "report.category.title_status": "ਸੰਪਾਦਨਾ",
+  "report.categories.spam": "ਸਪੈਮ",
+  "report.category.title_account": "ਪਰੋਫਾਈਲ",
+  "report.category.title_status": "ਪੋਸਟ",
   "report.close": "ਮੁਕੰਮਲ",
   "report.mute": "ਮੌਨ ਕਰੋ",
   "report.next": "ਅਗਲੀ",
-  "report.placeholder": "Type or paste additional comments",
-  "report.submit": "Submit report",
-  "report.target": "Report {target}",
+  "report.placeholder": "ਵਧੀਕ ਟਿੱਪਣੀਆਂ",
+  "report.reasons.dislike": "ਮੈਨੂੰ ਇਹ ਪਸੰਦ ਨਹੀਂ ਹੈ",
+  "report.reasons.spam": "ਇਹ ਸਪੈਮ ਹੈ",
+  "report.submit": "ਭੇਜੋ",
+  "report.target": "{target} ਰਿਪੋਰਟ",
+  "report.unfollow": "@{name} ਨੂੰ ਅਣ-ਫ਼ਾਲੋ ਕਰੋ",
   "report_notification.attached_statuses": "{count, plural, one {# post} other {# posts}} attached",
   "report_notification.categories.other": "ਬਾਕੀ",
-  "report_notification.categories.spam": "ਸਪਾਮ",
+  "report_notification.categories.spam": "ਸਪੈਮ",
+  "report_notification.categories.violation": "ਨਿਯਮ ਦੀ ਉਲੰਘਣਾ",
   "search.placeholder": "ਖੋਜੋ",
+  "search_popout.quick_actions": "ਫੌਰੀ ਕਾਰਵਾਈਆਂ",
+  "search_popout.specific_date": "ਖਾਸ ਤਾਰੀਖ",
+  "search_popout.user": "ਵਰਤੋਂਕਾਰ",
+  "search_results.accounts": "ਪਰੋਫਾਈਲ",
   "search_results.all": "ਸਭ",
-  "search_results.statuses": "Toots",
+  "search_results.hashtags": "ਹੈਸ਼ਟੈਗ",
+  "search_results.statuses": "ਪੋਸਟਾਂ",
   "server_banner.learn_more": "ਹੋਰ ਜਾਣੋ",
   "sign_in_banner.create_account": "ਖਾਤਾ ਬਣਾਓ",
-  "sign_in_banner.sign_in": "Sign in",
-  "status.admin_status": "Open this status in the moderation interface",
-  "status.copy": "Copy link to status",
-  "status.delete": "ਮਿਟਾਓ",
+  "sign_in_banner.sign_in": "ਲਾਗਇਨ",
+  "status.admin_status": "",
+  "status.block": "@{name} ਉੱਤੇ ਪਾਬੰਦੀ ਲਾਓ",
+  "status.bookmark": "ਬੁੱਕਮਾਰਕ",
+  "status.copy": "ਪੋਸਟ ਲਈ ਲਿੰਕ ਕਾਪੀ ਕਰੋ",
+  "status.delete": "ਹਟਾਓ",
   "status.edit": "ਸੋਧ",
+  "status.edited": "{date} ਨੂੰ ਸੋਧਿਆ",
   "status.edited_x_times": "Edited {count, plural, one {# time} other {# times}}",
   "status.embed": "ਮੜ੍ਹੋ",
+  "status.favourite": "ਪਸੰਦ",
+  "status.history.created": "{name} ਨੇ {date} ਨੂੰ ਬਣਾਇਆ",
+  "status.history.edited": "{name} ਨੇ {date} ਨੂੰ ਸੋਧਿਆ",
   "status.load_more": "ਹੋਰ ਦਿਖਾਓ",
+  "status.media.open": "ਖੋਲ੍ਹਣ ਲਈ ਕਲਿੱਕ ਕਰੋ",
+  "status.media.show": "ਵੇਖਾਉਣ ਲਈ ਕਲਿੱਕ ਕਰੋ",
+  "status.mention": "@{name} ਦਾ ਜ਼ਿਕਰ",
   "status.more": "ਹੋਰ",
-  "status.open": "Expand this status",
-  "status.pinned": "Pinned toot",
+  "status.open": "ਇਹ ਪੋਸਟ ਨੂੰ ਫੈਲਾਓ",
+  "status.pin": "ਪਰੋਫਾਈਲ ਉੱਤੇ ਟੰਗੋ",
+  "status.pinned": "ਟੰਗੀ ਹੋਈ ਪੋਸਟ",
   "status.read_more": "ਹੋਰ ਪੜ੍ਹੋ",
   "status.reblog": "ਵਧਾਓ",
   "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
+  "status.replied_to": "{name} ਨੂੰ ਜਵਾਬ ਦਿੱਤਾ",
   "status.reply": "ਜਵਾਬ ਦੇਵੋ",
+  "status.replyAll": "ਮਾਮਲੇ ਨੂੰ ਜਵਾਬ ਦਿਓ",
+  "status.report": "@{name} ਦੀ ਰਿਪੋਰਟ ਕਰੋ",
+  "status.sensitive_warning": "ਸੰਵੇਦਨਸ਼ੀਲ ਸਮੱਗਰੀ",
   "status.share": "ਸਾਂਝਾ ਕਰੋ",
+  "status.show_filter_reason": "ਕਿਵੇਂ ਵੀ ਵੇਖਾਓ",
   "status.show_less": "ਘੱਟ ਦਿਖਾਓ",
-  "status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}",
-  "subscribed_languages.save": "ਤਬਦੀਲੀਆਂ ਸਾਂਭੋ",
-  "tabs_bar.home": "ਮੁੱਖ ਪੰਨਾ",
+  "status.show_more": "ਹੋਰ ਦਿਖਾਓ",
+  "status.title.with_attachments": "{user} ਨੇ {attachmentCount, plural,one {ਅਟੈਚਮੈਂਟ} other {{attachmentCount}ਅਟੈਚਮੈਂਟਾਂ}} ਪੋਸਟ ਕੀਤੀਆਂ",
+  "status.translate": "ਉਲੱਥਾ ਕਰੋ",
+  "subscribed_languages.save": "ਤਬਦੀਲੀਆਂ ਸੰਭਾਲੋ",
+  "tabs_bar.home": "ਘਰ",
   "tabs_bar.notifications": "ਸੂਚਨਾਵਾਂ",
-  "timeline_hint.resources.followers": "ਪ੍ਰਸ਼ੰਸਕ",
-  "timeline_hint.resources.follows": "ਪ੍ਰਸ਼ੰਸਕ ਬਣਨ 'ਤੇ",
-  "timeline_hint.resources.statuses": "Older toots",
+  "timeline_hint.resources.followers": "ਫ਼ਾਲੋਅਰ",
+  "timeline_hint.resources.follows": "ਫ਼ਾਲੋ",
+  "timeline_hint.resources.statuses": "ਪੂਰਾਣੀਆਂ ਪੋਸਟਾਂ",
   "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {# days}}",
-  "upload_form.audio_description": "Describe for people with hearing loss",
-  "upload_form.description": "Describe for the visually impaired",
+  "units.short.billion": "{count}ਿਬ",
+  "units.short.million": "{count}ਮਿ",
+  "units.short.thousand": "{count}ਹਜ਼ਾਰ",
+  "upload_form.audio_description": "ਬੋਲ਼ੇ ਜਾਂ ਸੁਣਨ ਵਿੱਚ ਮੁਸ਼ਕਿਲ ਵਾਲੇ ਲੋਕਾਂ ਲਈ ਵੇਰਵੇ",
+  "upload_form.description": "ਅੰਨ੍ਹੇ ਜਾਂ ਦੇਖਣ ਲਈ ਮੁਸ਼ਕਲ ਵਾਲੇ ਲੋਕਾਂ ਲਈ ਵੇਰਵੇ",
   "upload_form.edit": "ਸੋਧ",
-  "upload_form.undo": "ਮਿਟਾਓ",
-  "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
+  "upload_form.undo": "ਹਟਾਓ",
+  "upload_form.video_description": "ਬੋਲ਼ੇ, ਸੁਣਨ ਵਿੱਚ ਮੁਸ਼ਕਿਲ, ਅੰਨ੍ਹੇ ਜਾਂ ਘੱਟ ਨਿਗ੍ਹਾ ਵਾਲੇ ਲੋਕਾਂ ਲਈ ਵੇਰਵਾ",
   "upload_modal.apply": "ਲਾਗੂ ਕਰੋ",
+  "upload_modal.applying": "ਲਾਗੂ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…",
   "upload_modal.choose_image": "ਤਸਵੀਰ ਚੁਣੋ",
   "upload_modal.edit_media": "ਮੀਡੀਆ ਸੋਧੋ",
-  "upload_progress.label": "Uploading…",
-  "upload_progress.processing": "ਕਾਰਜ ਅਧੀਨ ਹੈ…",
+  "upload_progress.label": "ਅੱਪਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ...",
+  "upload_progress.processing": "ਕਾਰਵਾਈ ਚੱਲ ਰਹੀ ਹੈ…",
   "video.exit_fullscreen": "ਪੂਰੀ ਸਕਰੀਨ ਵਿੱਚੋਂ ਬਾਹਰ ਨਿਕਲੋ",
   "video.fullscreen": "ਪੂਰੀ ਸਕਰੀਨ",
-  "video.pause": "ਰਹਾਉ",
+  "video.pause": "ਠਹਿਰੋ",
   "video.play": "ਚਲਾਓ"
 }
diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json
index 46fcc0116..0eb404198 100644
--- a/app/javascript/mastodon/locales/sk.json
+++ b/app/javascript/mastodon/locales/sk.json
@@ -488,6 +488,7 @@
   "onboarding.profile.note": "O tebe",
   "onboarding.profile.note_hint": "Môžeš @spomenúť iných ľudí, alebo #haštagy…",
   "onboarding.profile.save_and_continue": "Ulož a pokračuj",
+  "onboarding.profile.title": "Nastavenie profilu",
   "onboarding.profile.upload_avatar": "Nahraj profilový obrázok",
   "onboarding.profile.upload_header": "Nahraj profilové záhlavie",
   "onboarding.share.lead": "Daj ľudom vedieť, ako ťa môžu na Mastodone nájsť!",
diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json
index 0be9bf6d7..67b920393 100644
--- a/app/javascript/mastodon/locales/th.json
+++ b/app/javascript/mastodon/locales/th.json
@@ -496,7 +496,7 @@
   "onboarding.share.message": "ฉันคือ {username} ใน #Mastodon! มาติดตามฉันที่ {url}",
   "onboarding.share.next_steps": "ขั้นตอนถัดไปที่เป็นไปได้:",
   "onboarding.share.title": "แชร์โปรไฟล์ของคุณ",
-  "onboarding.start.lead": "ตอนนี้คุณเป็นส่วนหนึ่งของ Mastodon แพลตฟอร์มสื่อสังคมที่มีเอกลักษณ์เฉพาะตัว กระจายศูนย์ ที่ซึ่งคุณ—ไม่ใช่อัลกอริทึม—เรียบเรียงประสบการณ์ของคุณเอง มาช่วยให้คุณเริ่มต้นใช้งานพรมแดนทางสังคมใหม่นี้กันเลย:",
+  "onboarding.start.lead": "ตอนนี้คุณเป็นส่วนหนึ่งของ Mastodon แพลตฟอร์มสื่อสังคมแบบกระจายศูนย์ที่มีเอกลักษณ์เฉพาะตัว ที่ซึ่งคุณ ไม่ใช่อัลกอริทึม เรียบเรียงประสบการณ์ของคุณเอง มาช่วยให้คุณเริ่มต้นใช้งานพรมแดนทางสังคมใหม่นี้กันเลย:",
   "onboarding.start.skip": "ไม่ต้องการความช่วยเหลือในการเริ่มต้นใช้งาน?",
   "onboarding.start.title": "คุณทำสำเร็จแล้ว!",
   "onboarding.steps.follow_people.body": "การติดตามผู้คนที่น่าสนใจคือสิ่งที่ Mastodon ให้ความสำคัญ",
diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json
index 4d2452e12..6bb5ba0eb 100644
--- a/app/javascript/mastodon/locales/ug.json
+++ b/app/javascript/mastodon/locales/ug.json
@@ -1,4 +1,6 @@
 {
+  "about.blocks": "ئوتتۇراھال مۇلازىمېتىر",
+  "about.contact": "ئالاقىلاشقۇچى:",
   "account.badges.bot": "Bot",
   "account.cancel_follow_request": "Withdraw follow request",
   "account.posts": "Toots",
diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json
index 4fb5a12de..8484e00c8 100644
--- a/app/javascript/mastodon/locales/zh-TW.json
+++ b/app/javascript/mastodon/locales/zh-TW.json
@@ -8,7 +8,7 @@
   "about.domain_blocks.silenced.title": "已受限",
   "about.domain_blocks.suspended.explanation": "來自此伺服器的資料都不會被處理、儲存或交換,也無法與此伺服器上的使用者互動或交流。",
   "about.domain_blocks.suspended.title": "已停權",
-  "about.not_available": "無法於此伺服器上使用此資訊。",
+  "about.not_available": "無法於本伺服器上使用此資訊。",
   "about.powered_by": "由 {mastodon} 提供的去中心化社群媒體",
   "about.rules": "伺服器規則",
   "account.account_note_header": "備註",
@@ -207,14 +207,14 @@
   "dismissable_banner.explore_statuses": "這些於此伺服器以及去中心化網路中其他伺服器發出的嘟文正在被此伺服器上的人們熱烈討論著。越多不同人轉嘟及最愛排名更高。",
   "dismissable_banner.explore_tags": "這些主題標籤正在被此伺服器以及去中心化網路上的人們熱烈討論著。越多不同人所嘟出的主題標籤排名更高。",
   "dismissable_banner.public_timeline": "這些是來自 {domain} 使用者們跟隨中帳號所發表之最新公開嘟文。",
-  "embed.instructions": "如要將此嘟文嵌入您的網站,請複製以下程式碼。",
+  "embed.instructions": "若您欲於您的網站嵌入此嘟文,請複製以下程式碼。",
   "embed.preview": "它將顯示成這樣:",
   "emoji_button.activity": "活動",
   "emoji_button.clear": "清除",
   "emoji_button.custom": "自訂",
   "emoji_button.flags": "旗幟",
   "emoji_button.food": "食物 & 飲料",
-  "emoji_button.label": "插入表情圖案",
+  "emoji_button.label": "插入表情符號",
   "emoji_button.nature": "自然",
   "emoji_button.not_found": "啊就沒這表情符號吼!! (╯°□°)╯︵ ┻━┻",
   "emoji_button.objects": "物件",
@@ -353,11 +353,11 @@
   "keyboard_shortcuts.legend": "顯示此說明選單",
   "keyboard_shortcuts.local": "開啟本站時間軸",
   "keyboard_shortcuts.mention": "提及作者",
-  "keyboard_shortcuts.muted": "開啟靜音使用者清單",
+  "keyboard_shortcuts.muted": "開啟靜音使用者列表",
   "keyboard_shortcuts.my_profile": "開啟個人檔案頁面",
   "keyboard_shortcuts.notifications": "開啟通知欄",
   "keyboard_shortcuts.open_media": "開啟媒體",
-  "keyboard_shortcuts.pinned": "開啟釘選的嘟文清單",
+  "keyboard_shortcuts.pinned": "開啟釘選的嘟文列表",
   "keyboard_shortcuts.profile": "開啟作者的個人檔案頁面",
   "keyboard_shortcuts.reply": "回應嘟文",
   "keyboard_shortcuts.requests": "開啟跟隨請求列表",
@@ -386,7 +386,7 @@
   "lists.new.create": "新增列表",
   "lists.new.title_placeholder": "新列表標題",
   "lists.replies_policy.followed": "任何跟隨的使用者",
-  "lists.replies_policy.list": "成員清單",
+  "lists.replies_policy.list": "列表成員",
   "lists.replies_policy.none": "沒有人",
   "lists.replies_policy.title": "顯示回覆:",
   "lists.search": "搜尋您跟隨的使用者",
@@ -477,7 +477,7 @@
   "onboarding.actions.back": "返回",
   "onboarding.actions.go_to_explore": "看看發生什麼新鮮事",
   "onboarding.actions.go_to_home": "前往您的首頁時間軸",
-  "onboarding.compose.template": "你好 #Mastodon!",
+  "onboarding.compose.template": "哈囉 #Mastodon!",
   "onboarding.follows.empty": "很遺憾,目前未能顯示任何結果。您可以嘗試使用搜尋、瀏覽探索頁面以找尋人們跟隨、或稍候再試。",
   "onboarding.follows.lead": "您的首頁時間軸是 Mastodon 的核心體驗。若您跟隨更多人的話,它將會變得更活躍有趣。這些個人檔案也許是個好起點,您可以隨時取消跟隨他們!",
   "onboarding.follows.title": "客製化您的首頁時間軸",
@@ -687,7 +687,7 @@
   "status.translated_from_with": "透過 {provider} 翻譯 {lang}",
   "status.uncached_media_warning": "無法預覽",
   "status.unmute_conversation": "解除此對話的靜音",
-  "status.unpin": "從個人檔案頁面取消釘選",
+  "status.unpin": "自個人檔案頁面取消釘選",
   "subscribed_languages.lead": "僅選定語言的嘟文才會出現於您的首頁上,並於變更後列出時間軸。選取「無」以接收所有語言的嘟文。",
   "subscribed_languages.save": "儲存變更",
   "subscribed_languages.target": "變更 {target} 的訂閱語言",
diff --git a/config/locales/activerecord.ia.yml b/config/locales/activerecord.ia.yml
new file mode 100644
index 000000000..480fd56f6
--- /dev/null
+++ b/config/locales/activerecord.ia.yml
@@ -0,0 +1,8 @@
+---
+ia:
+  activerecord:
+    attributes:
+      user:
+        password: Contrasigno
+      user/account:
+        username: Nomine de usator
diff --git a/config/locales/activerecord.ie.yml b/config/locales/activerecord.ie.yml
new file mode 100644
index 000000000..09926d0d7
--- /dev/null
+++ b/config/locales/activerecord.ie.yml
@@ -0,0 +1 @@
+ie:
diff --git a/config/locales/activerecord.lad.yml b/config/locales/activerecord.lad.yml
new file mode 100644
index 000000000..625d897d0
--- /dev/null
+++ b/config/locales/activerecord.lad.yml
@@ -0,0 +1,51 @@
+---
+lad:
+  activerecord:
+    attributes:
+      poll:
+        expires_at: Limito temporal
+        options: Opsyones
+      user:
+        agreement: Akodro de servisyo
+        email: Adreso de posta elektronika
+        locale: Lingua
+        password: Kod
+      user/account:
+        username: Nombre de uzador
+      user/invite_request:
+        text: Razon
+    errors:
+      models:
+        account:
+          attributes:
+            username:
+              invalid: solo puede kontener letras, shifras i sulinyados
+              reserved: esta rezervado
+        admin/webhook:
+          attributes:
+            url:
+              invalid: no es adreso URL valido
+        doorkeeper/application:
+          attributes:
+            website:
+              invalid: no es adreso URL valido
+        import:
+          attributes:
+            data:
+              malformed: tiene formato yerrado
+        user:
+          attributes:
+            email:
+              blocked: uza un prokurador de posta no autorizado
+              unreachable: no parese existir
+            role_id:
+              elevated: no puede ser mas alto ke tu rolo aktual
+        user_role:
+          attributes:
+            permissions_as_keys:
+              dangerous: inkluir permisos ke no son siguros para el rolo de baza
+              elevated: no se puede inkluir permisos kualos no tiene tu rolo aktual
+              own_role: no se puede trokar kon tu rolo aktual
+            position:
+              elevated: no puede ser mas alto ke tu rolo aktual
+              own_role: no se puede trokar kon tu rolo aktual
diff --git a/config/locales/activerecord.pa.yml b/config/locales/activerecord.pa.yml
index bb8a6c834..ea95c8947 100644
--- a/config/locales/activerecord.pa.yml
+++ b/config/locales/activerecord.pa.yml
@@ -1 +1,23 @@
+---
 pa:
+  activerecord:
+    attributes:
+      poll:
+        expires_at: ਆਖਰੀ ਤਾਰੀਖ
+        options: ਚੋਣਾਂ
+      user:
+        agreement: ਸੇਵਾ ਸਮਝੌਤਾ
+        email: ਈਮੇਲ ਪਤਾ
+        locale: ਲੋਕੇਲ
+        password: ਪਾਸਵਰਡ
+      user/account:
+        username: ਵਰਤੋਂਕਾਰ-ਨਾਂ
+      user/invite_request:
+        text: ਕਾਰਨ
+    errors:
+      models:
+        account:
+          attributes:
+            username:
+              invalid: ਸਿਰਫ਼ ਅੱਖਰ, ਅੰਕ ਅਤੇ ਹੇਠਾਂ-ਰੇਖਾ ਹੀ ਹੋੋਣੀ ਚਾਹੀਦੀ ਹੈ
+              reserved: ਰਾਖਵਾਂ ਹੈ
diff --git a/config/locales/devise.ia.yml b/config/locales/devise.ia.yml
new file mode 100644
index 000000000..6ab26788b
--- /dev/null
+++ b/config/locales/devise.ia.yml
@@ -0,0 +1 @@
+ia:
diff --git a/config/locales/devise.ie.yml b/config/locales/devise.ie.yml
new file mode 100644
index 000000000..09926d0d7
--- /dev/null
+++ b/config/locales/devise.ie.yml
@@ -0,0 +1 @@
+ie:
diff --git a/config/locales/devise.io.yml b/config/locales/devise.io.yml
index 7d5668c92..fb90c08c7 100644
--- a/config/locales/devise.io.yml
+++ b/config/locales/devise.io.yml
@@ -13,7 +13,7 @@ io:
       locked: Tua konto esas extingita.
       not_found_in_database: Nejusta %{authentication_keys}.
       pending: Vua konti ankore kontrolesas.
-      timeout: Tua kunsido expiris. Voluntez rienirar por durar.
+      timeout: Vua kunsido expiris. Voluntez rienirar por avancar.
       unauthenticated: Tu devas enirar o membreskar por durar.
       unconfirmed: Tu devas konfirmar tua konto por durar.
     mailer:
@@ -102,7 +102,7 @@ io:
     unlocks:
       send_instructions: Tu recevos retpost-mesajo kun instrucioni por riacendar tua konto pos kelka minuti.
       send_paranoid_instructions: Se tua retpost-adreso existas en nia datumbazo, tu recevos ligilo por riacendar tua konto per retpost-meajo.
-      unlocked: Tua konto riacendesis senprobleme, tu nun esas enirinta.
+      unlocked: Vua konto desklefagesis senprobleme. Voluntez enirar por avancar.
   errors:
     messages:
       already_confirmed: ja konfirmesis, voluntez probar enirar
diff --git a/config/locales/devise.lad.yml b/config/locales/devise.lad.yml
new file mode 100644
index 000000000..eeaa3294e
--- /dev/null
+++ b/config/locales/devise.lad.yml
@@ -0,0 +1 @@
+lad:
diff --git a/config/locales/devise.pa.yml b/config/locales/devise.pa.yml
index bb8a6c834..7d56361f6 100644
--- a/config/locales/devise.pa.yml
+++ b/config/locales/devise.pa.yml
@@ -1 +1,18 @@
+---
 pa:
+  devise:
+    confirmations:
+      confirmed: ਤੁਹਾਡੇ ਈਮੇਲ ਸਿਰਨਾਵੇਂ ਨੂੰ ਕਾਮਯਾਬੀ ਨਾਲ ਤਸਦੀਕ ਕੀਤਾ ਗਿਆ ਹੈ।
+    failure:
+      inactive: ਤੁਹਾਡਾ ਖਾਤਾ ਹਾਲੇ ਸਰਗਰਮ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਹੈ।
+      invalid: ਗਲਤ %{authentication_keys} ਜਾਂ ਪਾਸਵਰਡ ਹੈ।
+      last_attempt: ਤੁਹਾਡੇ ਖਾਤੇ ਦੇ ਲਾਕ ਹੋਣ ਤੋਂ ਪਹਿਲਾਂ ਤੁਹਾਡੇ ਕੋਲ ਇੱਕ ਹੋਰ ਕੋਸ਼ਿਸ਼ ਬਾਕੀ ਹੈ।
+      locked: ਤੁਹਾਡਾ ਖਾਤਾ ਲਾਕ ਹੋ ਗਿਆ ਹੈ।
+      not_found_in_database: ਗਲਤ %{authentication_keys} ਜਾਂ ਪਾਸਵਰਡ ਹੈ।
+      pending: ਤੁਹਾਡਾ ਖਾਤਾ ਹਾਲੇ ਵੀ ਪੜਤਾਲ ਅਧੀਨ ਹੈ।
+      timeout: ਤੁਹਾਡੇ ਸ਼ੈਸ਼ਨ ਦੀ ਮਿਆਦ ਪੁੱਗੀ ਹੈ। ਜਾਰੀ ਰੱਖਣ ਲਈ ਫੇਰ ਲਾਗਇਨ ਕਰੋ।
+      unauthenticated: ਜਾਰੀ ਰੱਖਣ ਤੋਂ ਪਹਿਲਾਂ ਤੁਹਾਨੂੰ ਲਾਗਇਨ ਜਾਂ ਸਾਈਨ ਅੱਪ ਕਰਨ ਦੀ ਲੋੜ ਹੈ।
+    sessions:
+      already_signed_out: ਕਾਮਯਾਬੀ ਨਾਲ ਸਾਈਨ ਆਉਟ ਕੀਤਾ।
+      signed_in: ਕਾਮਯਾਬੀ ਨਾਲ ਸਾਈਨ ਇਨ ਕੀਤਾ।
+      signed_out: ਕਾਮਯਾਬੀ ਨਾਲ ਸਾਈਨ ਆਉਟ ਕੀਤਾ।
diff --git a/config/locales/doorkeeper.ia.yml b/config/locales/doorkeeper.ia.yml
new file mode 100644
index 000000000..6ab26788b
--- /dev/null
+++ b/config/locales/doorkeeper.ia.yml
@@ -0,0 +1 @@
+ia:
diff --git a/config/locales/doorkeeper.ie.yml b/config/locales/doorkeeper.ie.yml
new file mode 100644
index 000000000..83c9cc564
--- /dev/null
+++ b/config/locales/doorkeeper.ie.yml
@@ -0,0 +1,11 @@
+---
+ie:
+  doorkeeper:
+    grouped_scopes:
+      title:
+        follow: Seques, silentias e bloccas
+        mutes: Silentias
+    scopes:
+      read:mutes: vider tui silentias
+      write:conversations: silentiar e deleter conversationes
+      write:mutes: silentiar persones e conversationes
diff --git a/config/locales/doorkeeper.io.yml b/config/locales/doorkeeper.io.yml
index e2418e4c7..a71fa9584 100644
--- a/config/locales/doorkeeper.io.yml
+++ b/config/locales/doorkeeper.io.yml
@@ -122,12 +122,14 @@ io:
         admin/accounts: Administrar di konti
         admin/all: Omna administrofuncioni
         admin/reports: Administro di raporti
+        all: Kompleta aceso a vua Mastodon-konto
         blocks: Restriktita
         bookmarks: Libromarki
         conversations: Konversi
         crypto: Intersequanta chifro
         favourites: Favoriziti
         filters: Filtrili
+        follow: Sequati, silencigati e blokusati
         follows: Sequati
         lists: Listi
         media: Mediatachaji
diff --git a/config/locales/doorkeeper.lad.yml b/config/locales/doorkeeper.lad.yml
new file mode 100644
index 000000000..eeaa3294e
--- /dev/null
+++ b/config/locales/doorkeeper.lad.yml
@@ -0,0 +1 @@
+lad:
diff --git a/config/locales/doorkeeper.pa.yml b/config/locales/doorkeeper.pa.yml
index bb8a6c834..4ed0c7db6 100644
--- a/config/locales/doorkeeper.pa.yml
+++ b/config/locales/doorkeeper.pa.yml
@@ -1 +1,85 @@
+---
 pa:
+  activerecord:
+    attributes:
+      doorkeeper/application:
+        name: ਐਪਲੀਕੇਸ਼ਨ ਦਾ ਨਾਂ
+        website: ਐਪਲੀਕੇਸ਼ਨ ਵੈੱਬਸਾਈਟ
+  doorkeeper:
+    applications:
+      buttons:
+        authorize: ਪਰਮਾਣਿਤ
+        cancel: ਰੱਦ ਕਰੋ
+        destroy: ਖਾਰਜ
+        edit: ਸੋਧੋ
+        submit: ਭੇਜੋ
+      confirmations:
+        destroy: ਪੱਕਾ?
+      edit:
+        title: ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਸੋਧੋ
+      form:
+        error: ਓਹ ਹੋ! ਸੰਭਾਵਿਤ ਗਲਤੀਆਂ ਲਈ ਆਪਣੇ ਫਾਰਮ ਦੀ ਜਾਂਚ ਕਰੋ
+      index:
+        application: ਐਪਲੀਕੇਸ਼ਨ
+        callback_url: ਕਾਲਬੈਕ URL
+        delete: ਹਟਾਓ
+        empty: ਤੁਹਾਡੇ ਕੋਲ ਕੋਈ ਐਪਲੀਕੇਸ਼ਨ ਨਹੀਂ ਹੈ।
+        name: ਨਾਂ
+        new: ਨਵੀਂ ਐਪਲੀਕੇਸ਼ਨ
+        scopes: ਸਕੋਪ
+        show: ਵੇਖਾਓ
+        title: ਤੁਹਾਡੀਆਂ ਐਪਲੀਕੇਸ਼ਨਾਂ
+      new:
+        title: ਨਵੀਂ ਐਪਲੀਕੇਸ਼ਨ
+      show:
+        actions: ਕਾਰਵਾਈਆਂ
+        application_id: ਕਲਾਈਂਟ ਕੁੰਜੀ
+        callback_urls: ਕਾਲਬੈਕ URL
+        scopes: ਸਕੋਪ
+        secret: ਕਲਾਈਂਟ ਭੇਤ
+        title: 'ਐਪਲੀਕੇਸ਼ਨ: %{name}'
+    authorizations:
+      buttons:
+        authorize: ਪਰਮਾਣਿਤ
+        deny: ਇਨਕਾਰ ਕਰੋ
+      error:
+        title: ਗਲਤੀ ਆਈ ਹੈ
+      new:
+        review_permissions: ਇਜਾਜ਼ਤਾਂ ਦੀ ਪੜਤਾਲ ਕਰੋ
+        title: ਪਰਮਾਣਕਿਤਾ ਚਾਹੀਦੀ ਹੈ
+    authorized_applications:
+      buttons:
+        revoke: ਮਨਸੂਖ ਕਰੋ
+      confirmations:
+        revoke: ਪੱਕਾ?
+      index:
+        authorized_at: "%{date} ਨੂੰ ਪਰਮਾਣਿਤ ਕੀਤਾ"
+        last_used_at: "%{date} ਨੂੰ ਆਖਰੀ ਵਾਰ ਵਰਤਿਆ"
+        never_used: ਕਦੀ ਨਹੀਂ ਵਰਤਿਆ
+        scopes: ਇਜਾਜ਼ਤਾਂ
+        superapp: ਅੰਦਰੂਨੀ
+    grouped_scopes:
+      title:
+        accounts: ਖਾਤੇ
+        blocks: ਪਾਬੰਦੀਸ਼ੁਦਾ
+        bookmarks: ਬੁੱਕਮਾਰਕ
+        crypto: ਸਿਰੇ-ਤੋਂ-ਸਿਰੇ ਤੱਕ ਇੰਕ੍ਰਿਪਸ਼ਨ
+        favourites: ਮਨਪਸੰਦ
+        filters: ਫਿਲਟਰ
+        follow: ਫ਼ਾਲੋ, ਮੌਨ ਅਤੇ ਪਾਬੰਦੀ ਲਾਏ
+        follows: ਫ਼ਾਲੋ
+        lists: ਸੂਚੀਆਂ
+        media: ਨੱਥੀ ਕੀਤਾ ਮੀਡੀਆ
+        mutes: ਮੌਨ
+        notifications: ਨੋਟੀਫਿਕੇਸ਼ਨ
+        reports: ਰਿਪੋਰਟਾਂ
+        search: ਖੋਜੋ
+        statuses: ਪੋਸਟਾਂ
+    layouts:
+      admin:
+        nav:
+          applications: ਐਪਲੀਕੇਸ਼ਨਾਂ
+    scopes:
+      write:follows: ਲੋਕਾਂ ਨੂੰ ਫ਼ਾਲੋ ਕਰੋ
+      write:lists: ਸੂਚੀਆਂ ਬਣਾਓ
+      write:media: ਮੀਡੀਆ ਫਾਇਲਾਂ ਅੱਪਲੋਡ ਕਰੋ
diff --git a/config/locales/eu.yml b/config/locales/eu.yml
index e3062d9df..bcf8540e7 100644
--- a/config/locales/eu.yml
+++ b/config/locales/eu.yml
@@ -777,6 +777,8 @@ eu:
           open: Edonork eman dezake izena
       security:
         authorized_fetch: Eskatu autentifikazioa federatutako zerbitzarietatik
+        authorized_fetch_hint: Zerbitzari federatuen autentifikazioa eskatzeak erabiltzaile-mailako zein zerbitzari-mailako blokeak zorrotzago betearaztea ahalbidetzen du. Hala ere, horrek errendimendu galera dakar, zure erantzunen irismena murrizten du eta baliteke federatutako zerbitzu batzuekin bateragarritasun-arazoak sortu ahal izatea. Horrez gain, horrek ez du eragotziko aktore dedikatuek zure mezu eta kontu publikoak eskuratzea.
+        authorized_fetch_overridden_hint: Une honetan ezin duzu ezarpen hau aldatu ingurune-aldagai batek gainidazten duelako.
         federation_authentication: Federazio autentifikazioaren betearaztea
       title: Zerbitzariko ezarpenak
     site_uploads:
@@ -784,6 +786,7 @@ eu:
       destroyed_msg: Guneko igoera ongi ezabatu da!
     software_updates:
       critical_update: Kritikoa — mesedez, eguneratu azkar
+      description: Zure Mastodon instalazioa eguneratuta mantentzea gomendatzen da azken konponketa eta hobekuntzak edukitzeko. Gainera, batzuetan funtsezkoa da Mastodon garaiz eguneratzea segurtasun-arazoak saihesteko. Arrazoi horiengatik, Mastodonek eguneratzeak egiaztatzen ditu 30 minuturo, eta zure posta elektronikoko jakinarazpen-hobespenen arabera jakinaraziko dizu.
       documentation_link: Informazio gehiago
       release_notes: Bertsio oharrak
       title: Eguneraketak eskuragarri
@@ -791,6 +794,7 @@ eu:
       types:
         major: Argitalpen handia
         minor: Argitalpen txikia
+        patch: Partxe eguneraketa — akatsen konponketa eta aplikatzeko aldaketa errazak
       version: Bertsioa
     statuses:
       account: Egilea
@@ -976,6 +980,7 @@ eu:
       next_steps: Apelazioa onartu dezakezu moderazio erabakia desegiteko, edo ez ikusia egin.
       subject: "%{username} erabiltzailea %{instance} instantziako moderazio erabaki bat apelatzen ari da"
     new_critical_software_updates:
+      body: Mastodon-en bertsio kritiko berriak kaleratu dira, agian lehenbailehen eguneratu nahi duzu!
       subject: "%{instance} ek eguneraketa kritikoak eskuragarri ditu!"
     new_pending_account:
       body: Kontu berriaren xehetasunak azpian daude. Eskaera hau onartu edo ukatu dezakezu.
@@ -1037,10 +1042,12 @@ eu:
       hint_html: Azken kontu bat! Gizakia zarela berretsi behar dugu (zabor-kontuak kanpoan mantentzeko baino ez da!) Ebatzi azpiko CAPTCHA eta sakatu "Jarraitu".
       title: Segurtasun txekeoa
     confirmations:
+      awaiting_review: Zure helbide elektronikoa baieztatu da! %{domain} lan taldea zure erregistroa berrikusten ari da. Mezu elektroniko bat jasoko duzu zure kontua onartzen badute!
       awaiting_review_title: Zure izen-ematea berrikusten ari da
       clicking_this_link: lotura hau klikatzen
       login_link: hasi saioa
       proceed_to_login_html: Orain jarraitu dezakezu %{login_link} -era.
+      redirect_to_app_html: "<strong>%{app_name}</strong> aplikaziora berbideratua izan beharko zenuke. Hori gertatu ez bada, saiatu %{clicking_this_link} edo eskuz itzuli."
       registration_complete: Osatuta dago orain zure izen-ematea %{domain} -en!
       welcome_title: Ongi etorri, %{name}!
       wrong_email_hint: Helbide-elektroniko hori zuzena ez bada, kontuaren ezarpenetan alda dezakezu.
diff --git a/config/locales/ia.yml b/config/locales/ia.yml
new file mode 100644
index 000000000..64315d177
--- /dev/null
+++ b/config/locales/ia.yml
@@ -0,0 +1,52 @@
+---
+ia:
+  admin:
+    accounts:
+      delete: Deler datos
+      deleted: Delite
+      display_name: Nomine visibile
+      enabled: Activate
+      location:
+        all: Toto
+        title: Location
+      moderation:
+        disabled: Disactivate
+      reset: Reinitialisar
+      reset_password: Reinitialisar contrasigno
+      search: Cercar
+      security: Securitate
+      username: Nomine de usator
+    custom_emojis:
+      copy: Copiar
+      create_new_category: Crear nove categoria
+      delete: Deler
+    domain_blocks:
+      confirm_suspension:
+        cancel: Cancellar
+      export: Exportar
+      import: Importar
+    email_domain_blocks:
+      add_new: Adder nove
+      delete: Deler
+    export_domain_allows:
+      no_file: Necun file seligite
+    follow_recommendations:
+      language: Per lingua
+      status: Stato
+    instances:
+      dashboard:
+        instance_languages_dimension: Linguas principal
+      delivery:
+        unavailable: Non disponibile
+      private_comment: Commento private
+      public_comment: Commento public
+    invites:
+      filter:
+        available: Disponibile
+    ip_blocks:
+      delete: Deler
+      expires_in:
+        '1209600': 2 septimanas
+        '15778476': 6 menses
+        '2629746': 1 mense
+        '86400': 1 die
diff --git a/config/locales/ie.yml b/config/locales/ie.yml
new file mode 100644
index 000000000..c5668edbd
--- /dev/null
+++ b/config/locales/ie.yml
@@ -0,0 +1,68 @@
+---
+ie:
+  accounts:
+    pin_errors:
+      following: Tu deve ja sequer li person quem tu vole indossar
+  admin:
+    action_logs:
+      action_types:
+        create_announcement: Crear un proclamation
+        destroy_announcement: Deleter un proclamation
+        update_announcement: Actualisar un proclamation
+      actions:
+        create_announcement_html: "%{name} creat li nov proclamation %{target}"
+        destroy_announcement_html: "%{name} deletet li proclamation %{target}"
+        update_announcement_html: "%{name} actualisat li proclamation %{target}"
+    announcements:
+      destroyed_msg: Proclamation deletet successosimen!
+      edit:
+        title: Redacter proclamation
+      empty: Null proclamationes trovat.
+      live: Activ
+      new:
+        create: Crear un proclamation
+        title: Nov proclamation
+      publish: Publicar
+      published_msg: Proclamation publicat successosimen!
+      scheduled_for: Planat por %{time}
+      scheduled_msg: Proclamation planat por publication!
+      title: Proclamationes
+      unpublish: Despublicar
+      unpublished_msg: Proclamation despublicat successosimen!
+      updated_msg: Proclamation actualisat successosimen!
+    roles:
+      privileges:
+        manage_announcements: Tractar proclamationes
+        manage_announcements_description: Permisse usatores tractar proclamationes sur li servitor
+  exports:
+    mutes: Tu silentia
+  featured_tags:
+    hint_html: "<strong>Pinglar tui max important hashtags sur tui profil.</strong> Un bonissim maniere de mantener un registre de tui ovres e projectes, pinglat hashtags es monstrat prominentmen sur tui profil e permisse rapid accesse a tui propri postas."
+  imports:
+    overwrite_preambles:
+      muting_html: Tu va <strong>remplazzar tui liste de silentiat contos</strong> per til <strong>%{total_items} contos</strong> de <strong>%{filename}</strong>.
+    preambles:
+      muting_html: Tu va <strong>silentiar</strong> til <strong>%{total_items} contos</strong> de <strong>%{filename}</strong>.
+    titles:
+      muting: Importation de silentiat contos
+    type_groups:
+      destructive: Bloccas & silentias
+  move_handler:
+    carry_mutes_over_text: Ti-ci usator movet se de %{acct}, quel tu hat silentiat.
+  notification_mailer:
+    follow_request:
+      action: Tractar petitiones de sequer
+      body: "%{name} ha petit sequer te"
+      subject: 'Pendent sequitor: %{name}'
+      title: Nov petition de sequer
+    mention:
+      action: Responder
+  statuses:
+    pin_errors:
+      direct: On ne posse pinglar postas queles es visibil solmen a mentionat usatores
+      limit: Tu ja ha pinglat li maxim númere de postas
+      ownership: On ne posse pinglar li posta de un altri person
+      reblog: On ne posse pinglar un boost
+  statuses_cleanup:
+    keep_pinned: Conservar pinglat postas
+    keep_pinned_hint: Delete null de tui pinglat postas
diff --git a/config/locales/io.yml b/config/locales/io.yml
index c9a0dcd73..eb5fcc709 100644
--- a/config/locales/io.yml
+++ b/config/locales/io.yml
@@ -91,6 +91,7 @@ io:
       moderation:
         active: Aktiva
         all: Omna
+        disabled: Desaktivigita
         pending: Vartanta
         silenced: Limitizita
         suspended: Restriktita
@@ -116,12 +117,16 @@ io:
       redownloaded_msg: Sucesoze rifreshis profilo di %{username} de origino
       reject: Refuzez
       rejected_msg: Sucesoze refuzis registroapliko di %{username}
+      remote_suspension_irreversible: La datumi di ca konto esas nerenversebla efacita.
+      remote_suspension_reversible_hint_html: Ca konto restriktesis che lua servilo, e la datumi tota efacesos ye %{date}. Ante ta tempo, la fora servilo povos restaurar ca konto sen irga mala efecti. Se vu volas efacar omna datumi dil konto quik, vu povas facar lo sube.
       remove_avatar: Efacez profilimajo
       remove_header: Efacez kapimajo
       removed_avatar_msg: Sucesoze efacis profilimajo di %{username}
       removed_header_msg: Sucesoze efacis kapimajo di %{username}
       resend_confirmation:
         already_confirmed: Ca uzanto ja konfirmesis
+        send: Risendez konfirmligilo
+        success: Konfirmligilo sucesoze sendesas!
       reset: Richanjez
       reset_password: Richanjez pasvorto
       resubscribe: Riabonez
@@ -129,6 +134,7 @@ io:
       search: Trovez
       search_same_email_domain: Altra uzanti kun sama retpostodomeno
       search_same_ip: Altra uzanti kun sama IP
+      security: Sekureso
       security_measures:
         only_password: Nur pasvorto
         password_and_2fa: Pasvorto e 2FA
@@ -205,6 +211,7 @@ io:
         reject_user: Refuzez uzanto
         remove_avatar_user: Efacez profilimajo
         reopen_report: Riapertez raporto
+        resend_user: Risendez konfirmretposto
         reset_password_user: Richanjez pasvorto
         resolve_report: Rezolvez raporto
         sensitive_account: Forcsentoza konto
@@ -263,6 +270,7 @@ io:
         reject_user_html: "%{name} refuzis registro de %{target}"
         remove_avatar_user_html: "%{name} efacis profilimajo de %{target}"
         reopen_report_html: "%{name} riapertis raporto %{target}"
+        resend_user_html: "%{name} risendis konfirmretposto por %{target}"
         reset_password_user_html: "%{name} richanjis pasvorto de uzanto %{target}"
         resolve_report_html: "%{name} rezolvis raporto %{target}"
         sensitive_account_html: "%{name} markizis medii di %{target} quale sentoza"
@@ -279,6 +287,7 @@ io:
         update_ip_block_html: "%{name} kreis regulo por IP %{target}"
         update_status_html: "%{name} novigis posto da %{target}"
         update_user_role_html: "%{name} chanjis rolo di %{target}"
+      deleted_account: konto efacita
       empty: Nula logi.
       filter_by_action: Filtrez segun ago
       filter_by_user: Filtrez segun uzanto
@@ -300,6 +309,7 @@ io:
       unpublish: Depublikigez
       unpublished_msg: Anunco sucesoze depublikigesas!
       updated_msg: Anunco sucesoza novigesas!
+    critical_update_pending: Urjanta aktualigo vartesas
     custom_emojis:
       assign_category: Insertez kategorio
       by_domain: Domeno
@@ -373,6 +383,15 @@ io:
       undo: Despermisez federato kun domeno
     domain_blocks:
       add_new: Add new
+      confirm_suspension:
+        cancel: Anulez
+        confirm: Restriktez
+        permanent_action: Desrestriktar la servilo ne restaurar irga datumi o relati.
+        preamble_html: Vu restriktos <strong>%{domain}</strong> e lua subdomeni.
+        remove_all_data: Co efacos omna kontenaji, imaji, videi e profildatumi por la konti di ca domeno de vua servilo.
+        stop_communication: Vua servilo haltos komunikar kun ca servili.
+        title: Konfirmez domenoblokuso por %{domain}
+        undo_relationships: Co desfacos irga sequorelato inter konti di ca servili e vua.
       created_msg: Domenobstrukto nun procedesas
       destroyed_msg: Domenobstrukto desagesis
       domain: Domeno
@@ -385,6 +404,7 @@ io:
         create: Kreez obstrukto
         hint: Domenobstrukto ne preventos kreo di kontrekordaji en datumaturo, ma retroaktive e automate aplikos partikulara jermetodi a ta konti.
         severity:
+          desc_html: "<strong>Limitizez</strong> facos la posti dil konti di ca domeno nevidebla da irgu qua ne sequas li. <strong>Restriktez</strong> efacos omna kontenaji, imaji, videi e profildatumi dil konti di ca domeno de vua servilo. Uzez <strong>Nulo</strong> se vu volas nur refuzar imaji e videi."
           noop: Nulo
           silence: Limito
           suspend: Restriktez
@@ -419,9 +439,23 @@ io:
         resolve: Rezolvez domeno
         title: Obstruktez nova retpostodomeno
       no_email_domain_block_selected: Retpostodomenobstrukti ne chanjesis por ke nulo selektesis
+      not_permitted: Ne permisata
       resolved_dns_records_hint_html: Ca domennomo rezolvesas a ca MX-domeni, quale esas ultime responsanta por ganar retposto. Obstruktar MX-domeno obstruktos registri de irga retpostoadreso quo uzas sama MX-domeni, mem se la videbla domennomo esas diferanta. <strong>Sorgemez e ne obstruktez majora retpostositi.</strong>
       resolved_through_html: Rezolvesis tra %{domain}
       title: Obstruktita retpostodomeni
+    export_domain_allows:
+      no_file: Nula dosiero selektesas
+    export_domain_blocks:
+      import:
+        description_html: Vu importacos listo de domenoblokusi. Voluntez kontrolar la listo sorgoze, partikulare se vu ne kreis la listo personale.
+        existing_relationships_warning: Existanta sequo-relati
+        private_comment_description_html: 'Por helpar vu savar de ube importacita blokusi venis, importacita blokusi kreesos kun la sequanta komento privata: <q>%{comment}</q>'
+        private_comment_template: Importacita de %{source} ye %{date}
+        title: Importacar domenoblokusi
+      invalid_domain_block: 'Un o plu kam un domenoblokuso omisesis pro la sequanta eroro(-i): %{error}'
+      new:
+        title: Importacar domenoblokusi
+      no_file: Nula dosiero selektesas
     follow_recommendations:
       description_html: "<strong>Sequorekomendi helpas nova uzanti rapide trovar interesanta kontenajo</strong>. Se uzanto ne interagas kun altra personi sate por igar personaligita sequorekomendi, ca konti rekomendas. Oli rikalkulesas die de mixo di konti kun maxim alta recenta interagi e maxim altra lokala sequantoquanto segun selektita linguo."
       language: Por linguo
@@ -450,6 +484,7 @@ io:
       content_policies:
         comment: Interna noto
         description_html: Vu povas fixar kontenajguidili quo aplikesos a omna konti de ca domeno e irga oli subdomeni.
+        limited_federation_mode_description_html: Vu povas selektar ka vu permisos federar kun ca domeno.
         policies:
           reject_media: Refusez medii
           reject_reports: Refusez raporti
@@ -497,6 +532,7 @@ io:
       total_reported: Raporti pri oli
       total_storage: Mediiatachaji
       totals_time_period_hint_html: Sumi quo montresas sube inkluzas informi de pos la komenco.
+      unknown_instance: Prezente ne esas registrago pri ta domeno che ca servilo.
     invites:
       deactivate_all: Deaktivigez omno
       filter:
@@ -553,20 +589,27 @@ io:
         mark_as_sensitive_description_html: Medii en raportizita posti markizesos quale sentoza e streko rekordigesos por helpar vu intensigar en nexta malagi da la sama konto.
         other_description_html: Videz plu multa opcioni por dominacar konduto di konto e kustumizar komuniko a raportizita konto.
         resolve_description_html: Nulo agesos kontre raportizita konto, streko ne rekordizesos e raporto klozesos.
+        silence_description_html: Konto esos videbla nur por personi qui ja sequas lo o manuale serchas lo, severe limitizante lua atingo. On sempre povas desfacar co. Klozas omna raporti kontra ca konto.
+        suspend_description_html: Ca konto e omna kontenaji esos neacesebla e efacota, e interagar kun ol esos neposibla. Desfacebla dum 30 dii. Klozas omna raporti kontra ca konto.
       actions_description_html: Decidez ago por rezolvar ca raporto. Se vu decidar puniso kontre raportizesis konto, retpostoavizo sendesos a ol, ecepte kande <strong>Spam</strong> kategorio selektesis.
+      actions_description_remote_html: Selektez quo vu agos por solvar ca raporto. Co nur efektigos quale <strong>vua</strong> servilo komunikas kun ca fora konto e traktas lua kontenaji.
       add_to_report: Insertez pluse a raporto
       are_you_sure: Ka vu esas certa?
       assign_to_self: Taskigez me
       assigned: Taskigita jerero
       by_target_domain: Domeno di raportizita konto
+      cancel: Anulez
       category: Kategorio
       category_description_html: La motivo ke ca konto e kontenajo raportizesis citesos por komuniko kun raportizita konto
       comment:
         none: Nulo
       comment_description_html: 'Por donar plu multa informo, %{name} skribis:'
+      confirm: Konfirmez
+      confirm_action: Konfirmez jero-ago kontra @%{acct}
       created_at: Raportizesis
       delete_and_resolve: Efacez posti
       forwarded: Sendesis
+      forwarded_replies_explanation: Ca raporto esas de fora uzanto e pri fora kontenajo. Esis dissemata a vu pro ke la raportita kontenajo es respondo a un ek vua uzanti.
       forwarded_to: Sendesis a %{domain}
       mark_as_resolved: Markizez quale rezolvita
       mark_as_sensitive: Markizez quale sentoza
@@ -580,6 +623,7 @@ io:
         placeholder: Deskriptez quo agesis o irga relatita novaji...
         title: Noti
       notes_description_html: Videz e pozez noti a altra jereri e vua su en futuro
+      processed_msg: 'Raporto #%{id} sucesoze traktita'
       quick_actions_description_html: 'Agetez o volvez base por vidar raportizita kontenajo:'
       remote_user_placeholder: nelokala uzanti de %{instance}
       reopen: Riapertez raporto
@@ -592,9 +636,28 @@ io:
       status: Stando
       statuses: Raportizita kontenajo
       statuses_description_html: Ofensanta kontenajo citesos en komuniko kun raportizita konto
+      summary:
+        action_preambles:
+          delete_html: 'Vu <strong>efacos</strong> kelka posti di <strong>@%{acct}</strong>. Co facos lo sequanta:'
+          mark_as_sensitive_html: 'Vu <strong>markizos</strong> kelka posti di <strong>@%{acct}</strong> quale <strong>provokema</strong>. Co facos lo sequanta:'
+          silence_html: 'Vu <strong>limitizos</strong> la konto di <strong>@%{acct}</strong>. Co facos lo sequanta:'
+          suspend_html: 'Vu <strong>restriktos</strong> la konto di <strong>@%{acct}</strong>. Co facos lo sequanta:'
+        actions:
+          delete_html: Efacar la ofensiva posti
+          mark_as_sensitive_html: Markizar la atachuri dil posti quale provokema
+          silence_html: Severe limitizar la atingo dil konto di <strong>@%{acct}</strong> per facar ke lua profilo e posti es videbla nur a personi qui ja sequas lu o qui manuale serchas lua profilo
+          suspend_html: Restriktar <strong>@%{acct}</strong>, facante ke lua profilo e kontenaji neacesibla e neposibla por interagado
+        close_report: 'Markizar raporto #%{id} quale solvita'
+        close_reports_html: Markizar <strong>omna</strong> raporti contra <strong>@%{acct}</strong> quale solvita
+        delete_data_html: Efacor la profilo e kontenaji di <strong>@%{acct}</strong> ye 30 dii de nun ecepte ke lu esus desrestrikita ante ta tempe
+        preview_preamble_html: "<strong>@%{acct}</strong> recevos averto kun la sequanta kontenajo:"
+        record_strike_html: Registrar punto kontra <strong>@%{acct}</strong> por helpar vu traktar futura reguloviolaci di ca konto
+        send_email_html: Sendez a <strong>@%{acct}</strong> avertala retposto
+        warning_placeholder: Neobligata plusa expliko por la jero-ago.
       target_origin: Fonto di raportizita konto
       title: Raporti
       unassign: Detaskigez
+      unknown_action_msg: 'Nekonocata ago: %{action}'
       unresolved: Nerezolvita
       updated_at: Novigesis
       view_profile: Videz profilo
@@ -676,14 +739,21 @@ io:
       branding:
         preamble: Fabrikmarko di ca servilo diferentigas lu de altra servili en la reto. Ca informi forsan montresas che diversa loki. Do, ca informi debas esar klara.
         title: Fabrikmarkeso
+      captcha_enabled:
+        title: Postular ke nova uzanti solvos CAPTCHA por konfirmar lia konti
       content_retention:
         preamble: Dominacez quale uzantigita kontenajo retenesar en Mastodon.
         title: Kontenajreteneso
+      default_noindex:
+        desc_html: Efektigas omna uzanti qui ne personale chanjis ca opciono
+        title: Despartoprenigez uzanti de serchilo-indexi quale originala stando
       discovery:
         follow_recommendations: Sequez rekomendaji
         preamble: Montrar interesanta kontenajo esas importanta ye voligar nova uzanti quo forsan ne savas irgu. Dominacez quale ca deskovrotraiti funcionar en ca servilo.
         profile_directory: Profilcheflisto
         public_timelines: Publika tempolinei
+        publish_discovered_servers: Publikar deskovrita servili
+        publish_statistics: Publikar statistiki
         title: Deskovro
         trends: Tendenci
       domain_blocks:
@@ -698,20 +768,51 @@ io:
           approved: Aprobo bezonesas por registro
           none: Nulu povas registrar
           open: Irgu povas registrar
+      security:
+        authorized_fetch: Postular autentikigo de federata servili
+        authorized_fetch_hint: Postular autentikigo de federata servili kapabligar plu strikta enforcigo dil blokusi di uzanti e dil servilo. Tamen, co enduktos exekutado-lentigo, diminutos la atingebleso di via respondi, e forsan enduktos koncilieblesoproblemi kun kelka softwari federata. Pluse, co ne preventos aganti dedikita de acesar vua publika posti e konti.
+        authorized_fetch_overridden_hint: Vu prezente ne povas chanjar ca opciono pro ke ol es remplasata da environmentala varieblo.
+        federation_authentication: Enforcigo di federado-autentikigo
+      title: Servilopcioni
     site_uploads:
       delete: Efacez adchargita failo
       destroyed_msg: Sitadchargito sucesoze efacesis!
+    software_updates:
+      critical_update: Urjanta — voluntez aktualigar rapide
+      description: On rekomendas ke vu sempre aktualigas vua Mastodon-instaluro por profitar la maxim nova solvuri e novaji. Pluse, kelkafoye es importantega aktualigar Mastodon rapide por evitar sekuresoproblemi. Pro ca motivi, Mastodon serchas aktualigi mihorale, e notifikos vu segun vua opcioni pri retposto-notifiki.
+      documentation_link: Lernez pluse
+      release_notes: Emiso-noti
+      title: Aktualigi disponebla
+      type: Tipo
+      types:
+        major: Majora emiso
+        minor: Minora emiso
+        patch: Mikra emiso — problemosolvuri e chanji facila a facar
+      version: Versiono
     statuses:
+      account: Skribinto
+      application: Apliko
       back_to_account: Retrovenez a kontopagino
       back_to_report: Retrovenez a raportpagino
       batch:
         remove_from_report: Efacez de raporto
         report: Raportizez
       deleted: Efacesis
+      favourites: Favoriziti
+      history: Historio di versioni
+      in_reply_to: Respondante a
+      language: Linguo
       media:
         title: Medii
+      metadata: Metadatumi
       no_status_selected: Nula posti chanjesis pro ke nulo selektesis
+      open: Apertez posto
+      original_status: Originala posto
+      reblogs: Dissemi
+      status_changed: Posto chanjita
       title: Kontoposti
+      trending: Populara
+      visibility: Videbleso
       with_media: Kun medii
     strikes:
       actions:
@@ -724,9 +825,14 @@ io:
         suspend: "%{name} restriktis konto di %{target}"
       appeal_approved: Apelis
       appeal_pending: Vartata apelo
+      appeal_rejected: Apelo refuzita
     system_checks:
       database_schema_check:
         message_html: Existas vartanta datamaturmigri. Startez por certigar ke la softwaro kondutar quale expektita
+      elasticsearch_preset:
+        action: Videz la dokumentajo
+      elasticsearch_preset_single_node:
+        action: Videz la dokumentajo
       elasticsearch_running_check:
         message_html: Ne povas konektas a Elasticsearch. Kontrolez ke ol functionas o desaktivigez textokompleta trovo
       elasticsearch_version_check:
@@ -737,6 +843,18 @@ io:
         message_html: Vu ne fixis irga servilreguli.
       sidekiq_process_check:
         message_html: Sidekiq procedo ne funcionas ye %{value} fask(o). Kontrolez vua opciono di Sidekiq
+      software_version_critical_check:
+        action: Videz la aktualigi disponebla
+        message_html: Urjanta Mastodon-aktualigo es disponebla, voluntez aktualigar la servilo tam rapide kam es posibla.
+      software_version_patch_check:
+        action: Videz la aktualigi disponebla
+        message_html: Problemosolvanta Mastodon-aktualigo es disponebla.
+      upload_check_privacy_error:
+        action: Konsultez hike por plu multa informo
+        message_html: "<strong>Vua retservilo es misfigurizita. La privateso di vua uzanti es domajebla.</strong>"
+      upload_check_privacy_error_object_storage:
+        action: Konsultez hike por plu multa informo
+        message_html: "<strong>Vua dosierokonservo es misfigurizita. La privateso di vua uzanti es domajebla.</strong>"
     tags:
       review: Kontrolez stando
       updated_msg: Hashtagopcioni novigesis sucesoze
@@ -759,6 +877,7 @@ io:
           other: Partigesis da %{count} personi de pos antea semano
         title: Tendencoza ligili
         usage_comparison: Partigesis %{today} foyi hodie, la nombro esas %{yesterday} hiere
+      not_allowed_to_trend: Ne permisita quale popularo
       only_allowed: Nur permisato
       pending_review: Vartas kontrolo
       preview_card_providers:
@@ -843,6 +962,9 @@ io:
       body: "%{target} apelas jerdecido da %{action_taken_by} de %{date}, quale esis %{type}. Oli skribis:"
       next_steps: Vu povas aprobar apelo por deagar jerdecido o ignorar.
       subject: "%{username} apela jerdecido che %{instance}"
+    new_critical_software_updates:
+      body: Nova urjanta versioni di Mastodon emisesis, vu forsan volas aktualigar tam balde kam es posibla!
+      subject: Urjanta Mastodon-aktualigi es disponebla por %{instance}!
     new_pending_account:
       body: Detali de nova konto esas la subo. Vu povas aprobar o refuzar ca apliko.
       subject: Nova konto bezonas kontrolesar che %{instance} (%{username})
@@ -850,6 +972,9 @@ io:
       body: "%{reporter} raportizis %{target}"
       body_remote: Ulu de %{domain} raportizis %{target}
       subject: Nova raporto por %{instance} (#%{id})
+    new_software_updates:
+      body: Nova Mastodon-versioni emisesis, vu forsan volas aktualigar!
+      subject: Nova Mastodon-versioni es disponebla por %{instance}!
     new_trends:
       body: 'Ca kozi bezonas kontrol ante ol povas montresar publike:'
       new_trending_links:
@@ -881,23 +1006,41 @@ io:
     notification_preferences: Chanjez retpostopreferaji
     salutation: "%{name},"
     settings: 'Chanjar la retpost-mesajala preferi: %{link}'
+    unsubscribe: Desabonez
     view: 'Vidar:'
     view_profile: Videz profilo
     view_status: Videz posto
   applications:
     created: Apliko sucesoze kreesas
     destroyed: Apliko sucesoze efacesas
+    logout: Ekirez
     regenerate_token: Rifacez acesficho
     token_regenerated: Acesficho sucesoze riganesas
     warning: Sorgemez per ca informi. Ne partigez kun irgu!
     your_token: Vua acesficho
   auth:
+    apply_for_account: Demandar konto
+    captcha_confirmation:
+      help_html: Se vu ne povas solvar la CAPTCHA, vu povas kontaktar ni per %{email} e ni povas helpar vu.
+      hint_html: Nur un plusa kozo! Ni postulas ke vu konfirmez ke vu esas homo (co es por ke ni povas preventar mesajachi!). Solvez la suba CAPTCHA e pulsez "Avancez".
+      title: Sekuresokontrolo
+    confirmations:
+      awaiting_review: Vua retpostadreso es konfirmita! La jeraro che %{domain} revuos vua apliko. Vu recevos retposto se li aprobas vua konto!
+      awaiting_review_title: Vua apliko vartas revuo
+      clicking_this_link: pulsante ca ligilo
+      login_link: enirar
+      proceed_to_login_html: Nun vu povas avancar a %{login_link}.
+      redirect_to_app_html: Vu devas sendesir al apliko <strong>%{app_name}</strong>. Se to ne evenis, probez %{clicking_this_link} o retroirez manuale al apliko.
+      registration_complete: Vua registrago che %{domain} nun es kompleta!
+      welcome_title: Bonvenez, %{name}!
+      wrong_email_hint: Se ta retpostadreso ne es korekta, vu povas chanjar lo en la konto-opcioni.
     delete_account: Efacez konto
     delete_account_html: Se vu volas efacar vua konto, vu povas <a href="%{path}">irar hike</a>. Vu demandesos konfirmar.
     description:
       prefix_invited_by_user: "@%{name} invitas vu juntar ca servilo di Mastodon!"
       prefix_sign_up: Registrez che Mastodon hodie!
       suffix: Per konto, vu povos sequar personi, postigar novaji e interchanjar mesaji kun uzanti de irga servilo di Mastodon e pluse!
+    didnt_get_confirmation: Ka vu ne recevis konfirmoligilo?
     dont_have_your_security_key: Ka vu ne havas sekuresklefo?
     forgot_password: Pasvorto obliviita?
     invalid_reset_password_token: Pasvorto richanjoficho esas nevalida o expirita. Demandez novo.
@@ -910,18 +1053,39 @@ io:
     migrate_account_html: Se vu volas ridirektar ca konto a diferanto, vu povas <a href="%{path}">ajustar hike</a>.
     or_log_in_with: O eniras per
     privacy_policy_agreement_html: Me lektis e konsentis <a href="%{privacy_policy_path}" target="_blank">privatesguidilo</a>
+    progress:
+      confirm: Konfirmar retpostoadreso
+      details: Vua detali
+      review: Nia revuo
+      rules: Aceptar reguli
     providers:
       cas: CAS
       saml: SAML
     register: Membreskar
     registration_closed: "%{instance} ne aceptas nova membri"
+    resend_confirmation: Risendez konfirmligilo
     reset_password: Chanjar la pasvorto
     rules:
+      accept: Aceptar
+      back: Retro
+      invited_by: 'Vu darfas krear konto che %{domain} pro ke vu recevis invito de:'
       preamble: Co igesas e exekutesas da jereri di %{domain}.
+      preamble_invited: Ante ke vu avancos, voluntez konsiderar la reguli kreita dal jeraro di %{domain}.
       title: Kelka bazala reguli.
+      title_invited: Vu esas invitita.
     security: Chanjar pasvorto
     set_new_password: Selektar nova pasvorto
+    setup:
+      email_below_hint_html: Kontrolez vua spam-dosieruro, o demandez altra ligilo. Vu povas korektigar vua retpostadreso se esas nekorekta.
+      email_settings_hint_html: Uzez la ligilo quan ni sendis a vu por verifikar %{email}. Ni vartos hike.
+      link_not_received: Ka vu ne recevis ligilo?
+      new_confirmation_instructions_sent: Vu recevos nova retposto kun la konfirmligilo pos kelka minuti!
+      title: Kontrolez vua retposti
+    sign_in:
+      preamble_html: Enirez per vua <strong>%{domain}</strong> detali. Se vua konto esas che altra servilo, vu ne povos enirar hike.
+      title: Enirez a %{domain}
     sign_up:
+      manual_review: Registragi che %{domain} es revuata da nia personaro. Por helpar ni traktar vua aplikajo, skribez kelko pri vu e pro quo vu volas konto che %{domain}.
       preamble: Per konto en ca servilo di Mastodon, on povas sequar irga persono en ca reto, ne ye ube ona konto hostagisas.
       title: Ni komencigez vu en %{domain}.
     status:
@@ -930,14 +1094,15 @@ io:
       functional: Vua konto esas tote funcionoza.
       pending: Vua apliko bezonas kontrolo da nia laborero. Co forsan esas nekurta. Vu ganos retposto se vua apliko aprobesas.
       redirecting_to: Vua konto esas neaktiva pro ke ol nun ridirektesos a %{acct}.
+      self_destruct: Pro ke %{domain} balde klozos, vu havas nur aceso limitizata a vua konto.
       view_strikes: Videz antea streki kontre vua konto
     too_fast: Formulario sendesis tro rapide, probez itere.
     use_security_key: Uzes sekuresklefo
   challenge:
-    confirm: Durez
+    confirm: Avancez
     hint_html: "<strong>Guidilo:</strong> Ni ne demandos vua pasvorto itere til 1 horo."
     invalid_password: Nevalida pasvorto
-    prompt: Konfirmez pasvorto por durar
+    prompt: Konfirmez pasvorto por avancar
   crypto:
     errors:
       invalid_key: ne esas valida klefo Ed25519 o Curve25519
@@ -1009,6 +1174,9 @@ io:
       your_appeal_rejected: Vua apelo refuzesis
   domain_validator:
     invalid_domain: ne esas valida domennomo
+  edit_profile:
+    basic_information: Fundamentala informo
+    other: Altra
   errors:
     '400': Demando quon vu sendis esas nevalida o malstrukturala.
     '403': Vu ne havas permiso por vidar ca pagino.
@@ -1044,6 +1212,8 @@ io:
     storage: Konservado di kontenajo
   featured_tags:
     add_new: Insertez novo
+    errors:
+      limit: Vu ja pinglizis la maxima nombro de hastagi
     hint_html: "<strong>Quo esas estelita hashtagi?</strong> Ol montresas eminente che vua publika profilo e povigas personi vidar vua publika posti partikulare kun ta hashtagi. Oli esas bona utensilo por jeretar kreiva agaji e longa projetaji."
   filters:
     contexts:
@@ -1095,7 +1265,9 @@ io:
     all_matching_items_selected_html:
       one: "<strong>%{count}</strong> kozo quo parigesas kun vua trovato selektesas."
       other: Omna <strong>%{count}</strong> kozi quo parigesas kun vua trovato selektesas.
+    cancel: Anulez
     changes_saved_msg: Chanji senprobleme konservita!
+    confirm: Konfirmez
     copy: Kopiez
     delete: Efacez
     deselect: Deselektez omno
@@ -1111,19 +1283,59 @@ io:
       other: Ulo ne eventis senprobleme! Voluntez konsultar la suba %{count} eror-raporti
   imports:
     errors:
+      empty: CSV-dosiero vakua
+      invalid_csv_file: 'Nevalida CSV-dosiero. Eroro: %{error}'
       over_rows_processing_limit: kontenas plu kam %{count} horizontala lineo
+      too_large: Dosiero es tro granda
+    failures: Falii
+    imported: Importacita
+    mismatched_types_warning: Semblas ke vu forsan selektis la nekorekta tipo por ca importaco, voluntez kontrolar itere.
     modes:
       merge: Kombinez
       merge_long: Retenez displonebla rekordi e insertez novi
       overwrite: Remplasez
       overwrite_long: Remplasez nuna rekordi per novi
+    overwrite_preambles:
+      blocking_html: Vu <strong>substitucos vua blokusolisto</strong> per til <strong>%{total_items} konti</strong> de <strong>%{filename}</strong>.
+      bookmarks_html: Vu <strong>substitucos vua libromarki</strong> per til <strong>%{total_items} posti</strong> de <strong>%{filename}</strong>.
+      domain_blocking_html: Vu <strong>substitucos vua domenoblokusolisto</strong> per til <strong>%{total_items} domeni</strong> de <strong>%{filename}</strong>.
+      following_html: Vu <strong>sequos</strong> til <strong>%{total_items} konti</strong> de <strong>%{filename}</strong> e <strong>haltar sequar irga altra konto</strong>.
+      lists_html: Vu <strong>substitucos vua listi</strong> kun la kontenaji di <strong>%{filename}</strong>. Til <strong>%{total_items} konti</strong> adjuntesos a nova listi.
+      muting_html: Vu <strong>substitucos vua listo di konti silencigita</strong> per til <strong>%{total_items} konti</strong> de <strong>%{filename}</strong>.
+    preambles:
+      blocking_html: Vu <strong>blokusos</strong> til <strong>%{total_items} konti</strong> de <strong>%{filename}</strong>.
+      bookmarks_html: Vu adjuntos <strong>%{total_items} posti</strong> de <strong>%{filename}</strong> a vua <strong>libromarki</strong>.
+      domain_blocking_html: Vu <strong>blokusos</strong> til <strong>%{total_items} domeni</strong> de <strong>%{filename}</strong>.
+      following_html: Vu <strong>sequos</strong> til <strong>%{total_items} konti</strong> de <strong>%{filename}</strong>.
+      lists_html: Vu adjuntos til <strong>%{total_items} konti</strong> de <strong>%{filename}</strong> a vua <strong>listi</strong>. Nova listi kreesos se ne existas listo a quo adjuntar.
+      muting_html: Vu <strong>silencigos</strong> til <strong>%{total_items}</strong> konti en <strong>%{filename}</strong>.
     preface: Tu povas importacar kelka datumi, tal quala listi de omna homi quin tu sequas o blokusas, a tua konto di ca instaluro, per dosiero exportacita de altra instaluro.
+    recent_imports: Importacaji recenta
+    states:
+      finished: Finita
+      in_progress: Progresanta
+      scheduled: Projetita
+      unconfirmed: Nekonfirmata
+    status: Stando
     success: Tua datumi esis senprobleme importacita ed esos traktita quale projetita
+    time_started: Komencita ye
+    titles:
+      blocking: Importacante konti blokusata
+      bookmarks: Importacante libromarki
+      domain_blocking: Importacante domeni blokusata
+      following: Importacante konti sequata
+      lists: Importacante listi
+      muting: Importacante konti silencigata
+    type: Tipo di importaco
+    type_groups:
+      constructive: Sequati & libromarki
+      destructive: Blokusati e silencigati
     types:
       blocking: Listo de blokusiti
       bookmarks: Libromarki
       domain_blocking: Domenobstruktolisto
       following: Listo de sequati
+      lists: Listi
       muting: Silenciglisto
     upload: Kargar
   invites:
@@ -1138,6 +1350,7 @@ io:
       '86400': 1 dio
     expires_in_prompt: Nulatempe
     generate: Facez invitligilo
+    invalid: Ca invito ne es valida
     invited_by: 'Vu invitesis da:'
     max_uses:
       one: 1 uzo
@@ -1148,6 +1361,9 @@ io:
       expires_at: Expiros
       uses: Uzi
     title: Invitez personi
+  lists:
+    errors:
+      limit: Vu atingis la maxima nombro de listi
   login_activities:
     authentication_methods:
       otp: 2-faktoryurizessoftwaro
@@ -1159,6 +1375,21 @@ io:
     failed_sign_in_html: Falita enirprob per %{method} de %{ip} (%{browser})
     successful_sign_in_html: Sucesoza eniro per %{method} de %{ip} (%{browser})
     title: Yurizeshistorio
+  mail_subscriptions:
+    unsubscribe:
+      action: Yes, desabonez
+      complete: Desabonita
+      confirmation_html: Ka vu esas certa ke vu volas desabonar de recevar %{type} por Mastodon che %{domain} a vua retpostoadreso %{email}? Vu sempre povas riabonar che vua <a href="%{settings_path}">opcioni pri restposto-notifiki</a>.
+      emails:
+        notification_emails:
+          favourite: notifiko-retposti pri favoriziti
+          follow: retposti pri sequo-notifiki
+          follow_request: retposti pri sequo-demandi
+          mention: retposti pri menciono-notifiki
+          reblog: retposti pri repeto-notifiki
+      resubscribe_html: Se vu desabonis eroroze, vu povas riabonar en vua <a href="%{settings_path}">opcioni pri retposto-notifiki</a>.
+      success_html: Vu ne plus recevos %{type} por Mastodon che %{domain} a vua retpostadreso %{email}.
+      title: Desabonez
   media_attachments:
     validations:
       images_and_video: Ne povas atachar video a posto quo ja kontenar imaji
@@ -1230,14 +1461,15 @@ io:
     poll:
       subject: Votposto di %{name} finis
     reblog:
-      body: "%{name} diskonocigis tua mesajo:"
-      subject: "%{name} diskonocigis tua mesajo"
-      title: Nova busto
+      body: "%{name} repetis vua posto:"
+      subject: "%{name} repetis vua posto"
+      title: Nova repeto
     status:
       subject: "%{name} nove postigis"
     update:
       subject: "%{name} modifikis posto"
   notifications:
+    administration_emails: Jerala retpostonotifiki
     email_events: Eventi por retpostoavizi
     email_events_hint: 'Selektez eventi quon vu volas ganar avizi:'
     other_settings: Altra avizopcioni
@@ -1274,12 +1506,18 @@ io:
       expired: Votposto ja finis
       invalid_choice: Selektita votselektajo ne existas
       over_character_limit: ne povas esar plu longa kam %{max} literi por sing
+      self_vote: On ne povas votar en sua propra inquesti
       too_few_options: mustas havar kozi
       too_many_options: ne povas havar plu kam %{max} kozi
   preferences:
     other: Altra
     posting_defaults: Originala postoopcioni
     public_timelines: Publika tempolinei
+  privacy:
+    privacy: Privateso
+    reach: Atingo
+    search: Sercho
+    title: Privateso e atingo
   privacy_policy:
     title: Privatesguidilo
   reactions:
@@ -1288,7 +1526,11 @@ io:
       unrecognized_emoji: ne esas rikonocita emocimajo
   relationships:
     activity: Kontoaktiveso
+    confirm_follow_selected_followers: Ka vu es certa ke vu volas sequar la selektata sequati?
+    confirm_remove_selected_followers: Ka vu es certa ke vu volas revokar la selektata sequati?
+    confirm_remove_selected_follows: Ka vu es certa ke vu volas revokar la selektata sequanti?
     dormant: Neaktiva
+    follow_failure: Ne esis posibla sequar kelka ek la selektita konti.
     follow_selected_followers: Sequez kelka sequanti
     followers: Sequanti
     following: Sequati
@@ -1317,6 +1559,9 @@ io:
     over_daily_limit: Vu ecesas limito quale esas %{limit} projetita posti por hodio
     over_total_limit: Vu ecesas limito quale esas %{limit} projetita posti
     too_soon: Projetita dato mustas esar en futuro
+  self_destruct:
+    lead_html: Desfortunoze, <strong>%{domain}</strong> balde klozos. Se vu havis konto ibe, vu ne plus povas uzar it, ma vu ankore povas demandar exportacajo de vua datumi.
+    title: Ca servilo balde klozos
   sessions:
     activity: Antea aktiveso
     browser: Vidilo
@@ -1328,6 +1573,7 @@ io:
       electron: Electron
       firefox: Firefox
       generic: Nesavita vidilo
+      huawei_browser: Navigilo Huawei
       ie: Internet Explorer
       micro_messenger: MicroMessenger
       nokia: Vidilo Nokia S40 Ovi
@@ -1337,6 +1583,7 @@ io:
       qq: Vidilo QQ
       safari: Safari
       uc_browser: UC Browser
+      unknown_browser: Nekonocata Navigilo
       weibo: Weibo
     current_session: Nuna sesiono
     description: "%{browser} che %{platform}"
@@ -1349,8 +1596,10 @@ io:
       chrome_os: ChromeOS
       firefox_os: Firefox OS
       ios: iOS
+      kai_os: KaiOS
       linux: Linux
       mac: macOS
+      unknown_platform: Nekonocata Platformo
       windows: Windows
       windows_mobile: Windows Mobile
       windows_phone: Windows Phone
@@ -1393,7 +1642,7 @@ io:
       video:
         one: "%{count} video"
         other: "%{count} videi"
-    boosted_from_html: Bustesis de %{acct_link}
+    boosted_from_html: Repetis de %{acct_link}
     content_warning: 'Kontenajaverto: %{warning}'
     default_language: Sama quale intervizajlinguo
     disallowed_hashtags:
@@ -1408,7 +1657,7 @@ io:
       direct: Posti quo povas videsar nur mencionita uzanti ne povas pinglagesar
       limit: Vu ja pinglagis maxima posti
       ownership: Posto di altra persono ne povas pinglagesar
-      reblog: Busto ne povas pinglagesar
+      reblog: Repeto ne povas pinglizesar
     poll:
       total_people:
         one: "%{count} persono"
@@ -1436,9 +1685,9 @@ io:
     exceptions: Ecepti
     explanation: Pro ke efacar posti esas nechipa procedo, co agas lente progresive kande servilo ne esas okupata. Do, vua posti forsan efacesos kurte pos oli atingas oldeslimito.
     ignore_favs: Ignorez favorati
-    ignore_reblogs: Ignorez busti
+    ignore_reblogs: Ignorez repeti
     interaction_exceptions: Ecepti segun interagi
-    interaction_exceptions_explanation: Notale, ne existas garantio ke posti efacesos se oli iras sub favorato o bustlimito pos iras super ol.
+    interaction_exceptions_explanation: Notale, ne existas garantio ke posti efacesos se oli iras sub la favoratala o repetala solii pos iras super oli.
     keep_direct: Retenez direta mesaji
     keep_direct_hint: Ne efacas irga vua direta mesaji
     keep_media: Retenez posti kun mediiatachaji
@@ -1462,8 +1711,9 @@ io:
       '7889238': 3 monati
     min_age_label: Oldeslimito
     min_favs: Retenez favorizita posti mine
-    min_reblogs: Retenez bustita posti mine
-    min_reblogs_hint: Ne efacas irga vua posti quo bustigesos mine ca foyoquanto. Restez quale vakua por efacar posti sen suciar olia foyoquanto
+    min_favs_hint: Ne efacas irgo ek vua posti qua havas adminime ca quanto de favoriziti. Restez vakua por efacar posti senegarde la nombro de favoriziti
+    min_reblogs: Retenez posti repetita adminime
+    min_reblogs_hint: Ne efacas irgo ek vua posti qua havas adminime ca quanto de repeti. Restez vakua por efacar posti senegarde la nombro de repeti
   stream_entries:
     sensitive_content: Titiliva kontenajo
   strikes:
@@ -1564,7 +1814,10 @@ io:
     seamless_external_login: Vu enirar tra externa serveso, do pasvorto e retpostoopcioni ne esas disponebla.
     signed_in_as: 'Eniris quale:'
   verification:
+    here_is_how: Yen quale
+    instructions_html: Kopiez e glutinez la kodexo suba en la HTML di vua retsituo. Pose adjuntez la adreso di vua retsituo en un ek la textobuxi di vua profilo per la "Modifikar profilo" pagino e konservez chanji.
     verification: Verifikeso
+    verified_links: Vua ligili verifikata
   webauthn_credentials:
     add: Insertez nova sekuresklefo
     create:
diff --git a/config/locales/lad.yml b/config/locales/lad.yml
new file mode 100644
index 000000000..eeaa3294e
--- /dev/null
+++ b/config/locales/lad.yml
@@ -0,0 +1 @@
+lad:
diff --git a/config/locales/pa.yml b/config/locales/pa.yml
index bb8a6c834..7a34358dd 100644
--- a/config/locales/pa.yml
+++ b/config/locales/pa.yml
@@ -1 +1,161 @@
+---
 pa:
+  about:
+    about_mastodon_html: ਭਵਿੱਖ ਦਾ ਸ਼ੋਸ਼ਲ ਨੈੱਟਵਰਕ ਹੈ। ਕੋਈ ਇਸ਼ਤਿਹਾਰ ਨਹੀਂ, ਕੋਈ ਵਪਾਰਕ ਨਿਗਰਾਨੀ ਨਹੀਂ, ਨੈਤਿਕ ਡਿਜ਼ਾਇਨ ਅਤੇ ਖਿੰਡਿਆ ਹੋਇਆ ਨੈੱਟਵਰਕ! ਮਸਟੋਡੋਨ ਨਾਲ ਆਪਣੇ ਡਾਟੇ ਨੂੰ ਆਪਣਾ ਹੀ ਰੱਖੋ!
+    contact_missing: ਸੈੱਟ ਨਹੀਂ ਹੈ
+    contact_unavailable: ਲਾਗ ਨਹੀਂ
+    hosted_on: "%{domain} ਉੱਤੇ ਹੋਸਟ ਕੀਤਾ ਮਸਟਾਡੋਨ"
+    title: ਇਸ ਬਾਰੇ
+  accounts:
+    follow: ਫ਼ਾਲੋ
+    following: ਫ਼ਾਲੋ ਕੀਤੇ ਜਾ ਰਹੇ
+    posts_tab_heading: ਪੋਸਟਾਂ
+  admin:
+    account_moderation_notes:
+      create: ਨੋਟ ਭੇਜੋ
+    accounts:
+      approve: ਮਨਜ਼ੂਰ
+      are_you_sure: ਪੱਕਾ?
+      avatar: ਅਵਤਾਰ
+      by_domain: ਡੋਮੇਨ
+      change_email:
+        changed_msg: ਈਮੇਲ ਨੂੰ ਕਾਮਯਾਬੀ ਨਾਲ ਬਦਲਿਆ ਗਿਆ!
+        current_email: ਮੌਜੂਦਾ ਈਮੇਲ
+        label: ਈਮੇਲ ਬਦਲੋ
+        new_email: ਨਵੀਂ ਈਮੇਲ
+        submit: ਈਮੇਲ ਨੂੰ ਬਦਲੋ
+        title: "%{username} ਲਈ ਈਮੇਲ ਨੂੰ ਬਦਲੋ"
+      confirm: ਤਸਦੀਕ
+      confirmed: ਤਸਦੀਕ ਕੀਤਾ
+      confirming: ਤਸਦੀਕ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ
+      custom: ਕਸਟਮ
+      delete: ਡਾਟੇ ਨੂੰ ਹਟਾਓ
+      deleted: ਹਟਾਇਆ
+      display_name: ਦਿਖਾਇਆ ਜਾਣ ਵਾਲਾ ਨਾਂ
+      domain: ਡੋਮੇਨ
+      moderation:
+        all: ਸਭ
+        suspended: ਸਸਪੈਂਡ ਕੀਤਾ
+      title: ਖਾਤੇ
+      username: ਵਰਤੋਂਕਾਰ-ਨਾਂ
+    ip_blocks:
+      delete: ਹਟਾਓ
+      expires_in:
+        '1209600': 2 ਹਫ਼ਤੇ
+        '15778476': 6 ਮਹੀਨੇ
+        '2629746': 1 ਮਹੀਨਾ
+        '31556952': 1 ਸਾਲ
+        '86400': 1 ਦਿਨ
+        '94670856': 3 ਸਾਲ
+    relays:
+      enable: ਸਮਰੱਥ
+      enabled: ਸਮਰੱਥ ਹੈ
+      save_and_enable: ਸੰਭਾਲੋ ਅਤੇ ਸਮਰੱਥ ਕਰੋ
+    reports:
+      are_you_sure: ਪੱਕਾ?
+      cancel: ਰੱਦ ਕਰੋ
+      comment:
+        none: ਕੋਈ ਨਹੀਂ
+      notes:
+        delete: ਹਟਾਓ
+    settings:
+      about:
+        title: ਇਸ ਬਾਰੇ
+    statuses:
+      deleted: ਹਟਾਏ
+      favourites: ਮਨਪਸੰਦ
+      history: ਵਰਜ਼ਨ ਅਤੀਤ
+      in_reply_to: ਇਸ ਨੂੰ ਜਵਾਬ ਦਿੱਤਾ ਜਾ ਰਿਹਾ ਹੈ
+      language: ਭਾਸ਼ਾ
+      media:
+        title: ਮੀਡੀਆ
+      metadata: ਮੇਟਾਡਾਟਾ
+    webhooks:
+      delete: ਹਟਾਓ
+      disable: ਅਸਮਰੱਥ
+      disabled: ਅਸਮਰੱਥ ਹੈ
+      enable: ਸਮਰੱਥ
+  application_mailer:
+    salutation: "%{name},"
+  applications:
+    logout: ਲਾਗ ਆਉਟ
+    your_token: ਤੁਹਾਡਾ ਪਹੁੰਚ ਟੋਕਨ
+  auth:
+    apply_for_account: ਖਾਤੇ ਲਈ ਬੇਨਤੀ
+    confirmations:
+      login_link: ਲਾਗ ਇਨ
+      welcome_title: "%{name}, ਜੀ ਆਇਆਂ ਨੂੰ!"
+    delete_account: ਖਾਤੇ ਨੂੰ ਹਟਾਓ
+    forgot_password: ਆਪਣਾ ਪਾਸਵਰਡ ਭੁੱਲ ਗਏ ਹੋ?
+    log_in_with: ਇਸ ਨਾਲ ਲਾਗਇਨ ਕਰੋ
+    login: ਲਾਗ ਇਨ
+    logout: ਲਾਗ ਆਉਟ
+    rules:
+      accept: ਮਨਜ਼ੂਰ
+      back: ਪਿੱਛੇ
+  challenge:
+    confirm: ਜਾਰੀ ਰੱਖੋ
+  date:
+    formats:
+      default: "%d %b %Y"
+      with_month_name: "%d %B %Y"
+  datetime:
+    distance_in_words:
+      about_x_hours: "%{count}ਘੰ"
+      about_x_months: "%{count}ਮਹੀ"
+      about_x_years: "%{count}ਸਾ"
+      almost_x_years: "%{count}ਸ"
+      half_a_minute: ਹੁਣੇ ਹੀ
+      less_than_x_minutes: "%{count}ਮਿੰ"
+      less_than_x_seconds: ਹੁਣੇ ਹੀ
+      over_x_years: "%{count}ਸਾ"
+      x_days: "%{count}ਦਿ"
+      x_minutes: "%{count}ਮਿੰ"
+  deletes:
+    proceed: ਖਾਤੇ ਨੂੰ ਹਟਾਓ
+  disputes:
+    strikes:
+      title: "%{date} ਨੂੰ %{action}"
+  exports:
+    archive_takeout:
+      date: ਤਾਰੀਖ
+  filters:
+    contexts:
+      account: ਪਰੋਫਾਈਲ
+      home: ਹੋਮ ਅਤੇ ਸੂਚੀਆਂ
+      notifications: ਨੋਟੀਫਿਕੇਸ਼ਨ
+      thread: ਗੱਲਾਂਬਾਤਾਂ
+    index:
+      delete: ਹਟਾਓ
+  generic:
+    all: ਸਭ
+    copy: ਕਾਪੀ ਕਰੋ
+    delete: ਹਟਾਓ
+    today: ਅੱਜ
+  invites:
+    expires_in:
+      '43200': 12 ਘੰਟੇ
+      '604800': 1 ਹਫਤਾ
+      '86400': 1 ਦਿਨ
+    expires_in_prompt: ਕਦੇ ਨਹੀਂ
+  login_activities:
+    authentication_methods:
+      password: ਪਾਸਵਰਡ
+  notification_mailer:
+    follow:
+      subject: "%{name} ਹੁਣ ਤੁਹਾਨੂੰ ਫ਼ਾਲੋ ਕਰਦੇ ਹਨ"
+      title: ਨਵੇਂ ਫ਼ਾਲੋਅਰ
+    follow_request:
+      body: "%{name} ਨੇ ਤੁਹਾਨੂੰ ਫ਼ਾਲੋ ਕਰਨ ਦੀ ਬੇਨਤੀ ਕੀਤੀ ਹੈ"
+    mention:
+      action: ਜਵਾਬ ਦਿਓ
+  number:
+    human:
+      decimal_units:
+        format: "%n%u"
+        units:
+          billion: ਬਿ
+          million: ਮਿ
+  otp_authentication:
+    enable: ਸਮਰੱਥ
+    setup: ਸੈਟ ਅੱਪ
diff --git a/config/locales/simple_form.ia.yml b/config/locales/simple_form.ia.yml
new file mode 100644
index 000000000..6ab26788b
--- /dev/null
+++ b/config/locales/simple_form.ia.yml
@@ -0,0 +1 @@
+ia:
diff --git a/config/locales/simple_form.ie.yml b/config/locales/simple_form.ie.yml
new file mode 100644
index 000000000..256d80c88
--- /dev/null
+++ b/config/locales/simple_form.ie.yml
@@ -0,0 +1,23 @@
+---
+ie:
+  simple_form:
+    hints:
+      account:
+        unlocked: Persones va posser sequer te sin petir aprobation. Desselecte si tu vole manualmen tractar petitiones de sequer e decider ca acceptar o rejecter nov sequitores.
+      announcement:
+        all_day: Si ti-ci es marcat, solmen li dates del periode de témpor va esser monstrat
+        ends_at: Ínobligatori. Li proclamation va esser despublicat automaticmen ye ti-ci témpor
+        scheduled_at: Lassar vacui por publicar li proclamation strax
+        starts_at: Ínobligatori. In li casu que tui proclamation es ligat a un specific periode de témpor
+        text: Tu posse usar post-sintaxe. Ples considerar li spacie quel li proclamation va plenar sur li ecran del usator
+      form_admin_settings:
+        bootstrap_timeline_accounts: Ti-ci contos va esser pinglat al parte superiori del recomandationes por nov usatores.
+    labels:
+      announcement:
+        all_day: Eveniment del tot die
+        ends_at: Fine del eveniment
+        scheduled_at: Planar publication
+        starts_at: Comense del eveniment
+        text: Proclamation
+      notification_emails:
+        follow_request: Alqui petit sequer te
diff --git a/config/locales/simple_form.io.yml b/config/locales/simple_form.io.yml
index b21b86723..eef2014d1 100644
--- a/config/locales/simple_form.io.yml
+++ b/config/locales/simple_form.io.yml
@@ -2,6 +2,14 @@
 io:
   simple_form:
     hints:
+      account:
+        discoverable: Vua publika posti e profilo povas remarkesar o rekomendesar en diferanta parti di Mastodon e vua profilo povas sugestesar ad altra uzanti.
+        display_name: Vua tota nomo o vua gaya nomo.
+        fields: Vua retsituo, pronomi, evo, irgo quan vu volas.
+        indexable: Vua posta publika povos aparar en rezultaji di serchi che Mastodon. Personi qui interagis kun vua posti povos serchar oli irgakaze.
+        note: 'Vu povas @mencionar altra personi o #hashtagi.'
+        show_collections: Personi povos navigar tra vua sequati e sequanti. Personi quin vu sequas, vidos ke vu sequas li irgakaze.
+        unlocked: Personi povos sequar vu sen demandar aprobo. Deselektez se vu volas revuar sequadodemandi e selektez aceptar o refuzar nova sequati.
       account_alias:
         acct: Partikulare pozez uzantonomo@domeno di konto quon vua volas ektransferesar
       account_migration:
@@ -18,6 +26,8 @@ io:
           disable: Preventez uzanto de uzar olia konto ma ne efacez o celez olia kontenaji.
           none: Uzez co por sendar averto a la uzanto sen eventigar irga altra ago.
           sensitive: Koaktez omna mediiatachaji da ca uzanto markizesar quale sentoza.
+          silence: Preventez la uzanto de povar postar per publika videbleso, celez lua posti e avizi de personi qui ne sequas lu. Co klozas omna raporto kontra ca konto.
+          suspend: Preventez irga interago de o a ca konto e efacez lua kontenaji. Inversebla til 30 dii. Co klozas omna raporti kontra ca konto.
         warning_preset_id: Neobligata. Vu povas ankore insertar kustume texto a extremajo di fixito
       announcement:
         all_day: Kande kontrolesas, nur tempoporteodato montresos
@@ -43,7 +53,7 @@ io:
         password: Uzes minime 8 litri
         phrase: Parigesos ne ye textosituaciono o konteneyoaverto di posto
         scopes: Quala API quon softwaro permisesas acesar. Se vu selektas alta skopo, vu ne mustas selektar individui.
-        setting_aggregate_reblogs: Ne montrez nova busti di posti quo recente bustesas (nova busti)
+        setting_aggregate_reblogs: Ne montrez nova repeti di posti qui ja repetesis recente (nur efektigas repeti recevata nove)
         setting_always_send_emails: Normale retpostoavizi ne sendesas kande vu aktiva uzas Mastodon
         setting_default_sensitive: Sentoza medii originala celesas e povas revelesar per klikto
         setting_display_media_default: Celez medii quo markizesis quale sentoza
@@ -51,25 +61,30 @@ io:
         setting_display_media_show_all: Sempre montrez medii
         setting_use_blurhash: Inklini esas segun kolori di celesis vidaji ma kovras irga detali
         setting_use_pending_items: Celez tempolineonovi dop kliktar e ne automatike movigar niuzeto
+        username: Vu darfas uzar literi, nombri, e sublinei
         whole_word: Kande klefvorto o fraz esas nur litera e nombra, ol nur aplikesos se ol parigesas la tota vorto
       domain_allow:
         domain: Ca domeno povas ganar informi de ca servilo e venanta informo de ol procedagesos e sparesos
       email_domain_block:
         domain: Co povas esas domennomo quo montresas che retposto o registrajo MX quon ol uzas. Oli kontrolesos kande registro.
         with_dns_records: Probo di rezolvar registri DNS di la domeno agesos e rezulti anke preventesos
+      featured_tag:
+        name: 'Yen kelka hashtagi quin vu uzis maxim recente:'
       filters:
         action: Selektez ago kande posto parigas filtrilo
         actions:
           hide: Komplete celez filtrita kontenajo quale ol ne existas
           warn: Celez filtrita kontenajo dop avert quo montras titulo di filtrilo
       form_admin_settings:
+        activity_api_enabled: Quanto de lokale publikigita posti, aktiva uzanti e nova registri, donita semanope
         backups_retention_period: Retenez igita uzantoarkivi por la diiquanto.
         bootstrap_timeline_accounts: Ca konti pinglagesos a super sequorekomendi di nova uzanti.
         closed_registrations_message: Montresas kande registradi klozesas
-        content_cache_retention_period: Posti de altra servili efacesos pos la diiquanto kande fixesas a positiva nombro. Co darfas desagesar.
+        content_cache_retention_period: Omna posti e repeti de altra servili efacesos pos la specigita nombro de dii. Kelka posti forsan ne esos restaurebla. Omna relata libromarki, favoriziti e repeti anke esos perdita e neposible restaurota.
         custom_css: Vu povas pozar kustumizita staili en retverso di Mastodon.
         mascot: Remplas montreso en avanca retintervizajo.
         media_cache_retention_period: Deschargita mediifaili efacesos pos la diiquanto kande fixesas a positiva nombro, e rideschargesas irgatempe.
+        peers_api_enabled: Listo di domeni quin ca servilo trovis en la fediverso. Nula informo inkluzesas hike pri ka vu federas kun partikulara servilo, nur ke vua servilo savas pri lo. Co es uzata da enti qui kolektas statistiki pri federeso generale.
         profile_directory: La profilcheflisto montras omna uzanti quo voluntale volas esar deskovrebla.
         require_invite_text: Kande registradi bezonas manuala aprobo, ol kauzigas "Por quo vu volas juntas?" textoenpozo esar obliganta
         site_contact_email: Quale personi povas kontaktar vu por legala o suportquestioni.
@@ -78,11 +93,13 @@ io:
         site_short_description: Kurta deskripto por helpar unala identifikar ca servilo. Qua funcionigar lu e por qua?
         site_terms: Uzez vua sua privatesguidilo o ignorez por uzar la originalo. Povas strukturigesar per sintaxo di Markdown.
         site_title: Quale personi vokas ca servilo se ne uzas domennomo.
+        status_page_url: URL di pagino ube personi povas vidar la stando di ca servilo kande la servilo ne funcionas
         theme: Temo quo videsas da ekirita vizitanti e nova uzanti.
         thumbnail: Cirkum 2:1 imajo montresar kun informo di ca servilo.
         timeline_preview: Ekirita vizitanti videsos maxim recenta publika posti quo esas displonebla en la servilo.
         trendable_by_default: Ignorez manuala kontrolar di tendencoza kontenajo. Singla kozi povas ankore efacesar de tendenci pose.
         trends: Tendenci montras quala posti, hashtagi e niuzrakonti famozeskas en ca servilo.
+        trends_as_landing_page: Montrez populara posti a uzanti neeniriti e vizitanti vice deskriptajo pri ca servilo. Bezonas ke populari es aktivita.
       form_challenge:
         current_password: Vu eniras sekura areo
       imports:
@@ -103,6 +120,9 @@ io:
       sessions:
         otp: Enter the Two-factor code from your phone or use one of your recovery codes.
         webauthn: Se ol esas klefo di USB, certigar ke vu insertas e se bezonesas, tushetez.
+      settings:
+        indexable: Vua profilpagino povas aparar en serchorezultaji che Google, Bing, e altri.
+        show_application: Vu sempre povos vidar qua apliko publikigis vua posto irgakaze.
       tag:
         name: Vu povas nur chanjar literkaso, por exemplo, por kauzigar lu divenar plu lektebla
       user:
@@ -119,9 +139,13 @@ io:
         url: Ibe eventi sendesos
     labels:
       account:
+        discoverable: Inkluzar profilo e posti en trovado-algoritmi
         fields:
           name: Etiketo
           value: Kontenajo
+        indexable: Inkluzar publika posti en serchorezultaji
+        show_collections: Montrar sequati e sequanti en la profilo
+        unlocked: Automate aceptar nova sequanti
       account_alias:
         acct: Nomo di olda konto
       account_migration:
@@ -175,10 +199,10 @@ io:
         password: Pasvorto
         phrase: Klefvorto o frazo
         setting_advanced_layout: Aktivigez avancata retintervizajo
-        setting_aggregate_reblogs: Grupbusti en tempolinei
+        setting_aggregate_reblogs: Grupigar repeti en tempolinei
         setting_always_send_emails: Sempre sendez retpostoavizi
         setting_auto_play_gif: Automate pleez animigita GIFi
-        setting_boost_modal: Montrez konfirmdialogo ante bustar
+        setting_boost_modal: Montrez konfirmdialogo ante repetar
         setting_default_language: Postolinguo
         setting_default_privacy: Videbleso di la mesaji
         setting_default_sensitive: Sempre markizez medii quale sentoza
@@ -213,6 +237,7 @@ io:
           hide: Tote celez
           warn: Celez kun averto
       form_admin_settings:
+        activity_api_enabled: Publikigez rezumstatistiko pri uzantoaktiveso en API
         backups_retention_period: Uzantoarkivretendurtempo
         bootstrap_timeline_accounts: Sempre rekomendez ca konti a nova uzanti
         closed_registrations_message: Kustumizita mesajo kande registradi ne esas disponebla
@@ -220,6 +245,7 @@ io:
         custom_css: Kustumizita CSS
         mascot: Kustumizita reprezentimajo (oldo)
         media_cache_retention_period: Mediimemorajretendurtempo
+        peers_api_enabled: Publikigez listo di deskovrita servili en API
         profile_directory: Aktivigez profilcheflisto
         registrations_mode: Qua povas registragar
         require_invite_text: Mustez pozar motivo por juntar
@@ -231,11 +257,13 @@ io:
         site_short_description: Servildeskripto
         site_terms: Privatesguidilo
         site_title: Servilnomo
+        status_page_url: URL dil stando-pagino
         theme: Originala temo
         thumbnail: Servilimajeto
         timeline_preview: Permisez neyurizita aceso a publika tempolineo
         trendable_by_default: Permisez tendenci sen bezonar kontrolo
         trends: Aktivigez tendenci
+        trends_as_landing_page: Uzar populari quale la iniciala pagino
       interactions:
         must_be_follower: Celar la savigi da homi, qui ne sequas tu
         must_be_following: Celar la savigi da homi, quin tu ne sequas
@@ -260,11 +288,20 @@ io:
         follow_request: Sendar retpost-mesajo, kande ulu diskonocigas mesajo da tu
         mention: Sendar retpost-mesajo, kande ulu mencionas tu
         pending_account: Nova konto bezonas kontrolo
-        reblog: Sendar retpost-mesajo, kande ulu diskonocigas mesajo da tu
+        reblog: Ulu repetis vua posto
         report: Nova raport sendesas
+        software_updates:
+          all: Notifikar pri omna aktualigi
+          critical: Notifikar pri nur urjanta aktualigi
+          label: Nova Mastodon-versiono es disponebla
+          none: Nultempe notifikar pri aktualigi (ne rekomendata)
+          patch: Notifikar pri problemosolvanta aktualigi
         trending_tag: Nova tendenco bezonas kontrolo
       rule:
         text: Regulo
+      settings:
+        indexable: Inkluzar profilopagino en serchili
+        show_application: Montrar la apliko de qua vu sendis posto
       tag:
         listable: Permisez ca hashtago aparar en trovaji e sugestaji
         name: Hashtago
@@ -272,6 +309,7 @@ io:
         usable: Permisez posti uzar ca hashtago
       user:
         role: Rolo
+        time_zone: Klokozono
       user_role:
         color: Insignokoloro
         highlighted: Montrez rolo quale insigno en uzantoprofili
diff --git a/config/locales/simple_form.lad.yml b/config/locales/simple_form.lad.yml
new file mode 100644
index 000000000..eeaa3294e
--- /dev/null
+++ b/config/locales/simple_form.lad.yml
@@ -0,0 +1 @@
+lad:
diff --git a/config/locales/sk.yml b/config/locales/sk.yml
index caf253c69..ab2bc5155 100644
--- a/config/locales/sk.yml
+++ b/config/locales/sk.yml
@@ -119,6 +119,7 @@ sk:
       reject: Zamietni
       rejected_msg: Úspešne zamietnutá prihláška %{username}
       remote_suspension_irreversible: Údaje tohto účtu boli nenávratne zmazané.
+      remote_suspension_reversible_hint_html: Účet bol pozastavený na ich serveri a údaje budú úplne odstránené dňa %{date}. Dovtedy môže vzdialený server účet obnoviť bez akýchkoľvek nepriaznivých účinkov. Ak chceš odstrániť všetky údaje účtu ihneď, môžeš tak urobiť nižšie.
       remove_avatar: Vymaž avatar
       remove_header: Vymaž záhlavie
       removed_avatar_msg: Úspešne odstránený obrázok avatara %{username}
diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml
index e17228da3..61650f894 100644
--- a/config/locales/zh-TW.yml
+++ b/config/locales/zh-TW.yml
@@ -1273,7 +1273,7 @@ zh-TW:
       other: 選取 %{count} 個符合您搜尋的項目。
     today: 今天
     validation_errors:
-      other: 恩...似乎發生了點錯誤?請檢查以下 %{count} 項錯誤
+      other: 恩...似乎不太對勁耶?請檢查以下 %{count} 項錯誤
   imports:
     errors:
       empty: 空的 CSV 檔案
@@ -1805,7 +1805,7 @@ zh-TW:
       title: "%{name} 誠摯歡迎您的加入!"
   users:
     follow_limit_reached: 您無法跟隨多於 %{limit} 個人
-    go_to_sso_account_settings: 前往您的身分識別提供者(IdP)之帳號設定
+    go_to_sso_account_settings: 前往您的身分提供商 (identity provider) 之帳號設定
     invalid_otp_token: 兩階段認證碼不正確
     otp_lost_help_html: 如果您無法存取這兩者,您可以透過 %{email} 與我們聯繫
     seamless_external_login: 由於您是由外部系統登入,所以不能設定密碼與電子郵件。

From d099cf67c06b52641d0e9bfbf6f29d6db87823c2 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Mon, 18 Dec 2023 10:28:06 +0100
Subject: [PATCH 02/15] Update eslint (non-major) (#28408)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
 yarn.lock | 168 ++++++++++++++++++++++++------------------------------
 1 file changed, 74 insertions(+), 94 deletions(-)

diff --git a/yarn.lock b/yarn.lock
index e369f89d8..78757c3e1 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1744,10 +1744,10 @@ __metadata:
   languageName: node
   linkType: hard
 
-"@eslint/js@npm:8.55.0":
-  version: 8.55.0
-  resolution: "@eslint/js@npm:8.55.0"
-  checksum: 88ab9fc57a651becd2b32ec40a3958db27fae133b1ae77bebd733aa5bbd00a92f325bb02f20ad680d31c731fa49b22f060a4777dd52eb3e27da013d940bd978d
+"@eslint/js@npm:8.56.0":
+  version: 8.56.0
+  resolution: "@eslint/js@npm:8.56.0"
+  checksum: 60b3a1cf240e2479cec9742424224465dc50e46d781da1b7f5ef240501b2d1202c225bd456207faac4b34a64f4765833345bc4ddffd00395e1db40fa8c426f5a
   languageName: node
   linkType: hard
 
@@ -3669,14 +3669,14 @@ __metadata:
   linkType: hard
 
 "@typescript-eslint/eslint-plugin@npm:^6.0.0":
-  version: 6.13.2
-  resolution: "@typescript-eslint/eslint-plugin@npm:6.13.2"
+  version: 6.14.0
+  resolution: "@typescript-eslint/eslint-plugin@npm:6.14.0"
   dependencies:
     "@eslint-community/regexpp": "npm:^4.5.1"
-    "@typescript-eslint/scope-manager": "npm:6.13.2"
-    "@typescript-eslint/type-utils": "npm:6.13.2"
-    "@typescript-eslint/utils": "npm:6.13.2"
-    "@typescript-eslint/visitor-keys": "npm:6.13.2"
+    "@typescript-eslint/scope-manager": "npm:6.14.0"
+    "@typescript-eslint/type-utils": "npm:6.14.0"
+    "@typescript-eslint/utils": "npm:6.14.0"
+    "@typescript-eslint/visitor-keys": "npm:6.14.0"
     debug: "npm:^4.3.4"
     graphemer: "npm:^1.4.0"
     ignore: "npm:^5.2.4"
@@ -3689,44 +3689,44 @@ __metadata:
   peerDependenciesMeta:
     typescript:
       optional: true
-  checksum: 531a4406d872738d165c6a66cb26e976523c94053b022a8210dc9fd10e91b79b705bc0fcc77145e9744e4108b53bdba55e02a10dc17757b22be92aff57849384
+  checksum: 6360efb0e142ed91de5e9bddcd041f769feeedd256332733be08f7a74c8ae637cbfb78c6b85d747c73231bbb95cef95ed2d2854ab7d43aebfbedb3a191f447f1
   languageName: node
   linkType: hard
 
 "@typescript-eslint/parser@npm:^6.0.0":
-  version: 6.13.2
-  resolution: "@typescript-eslint/parser@npm:6.13.2"
+  version: 6.14.0
+  resolution: "@typescript-eslint/parser@npm:6.14.0"
   dependencies:
-    "@typescript-eslint/scope-manager": "npm:6.13.2"
-    "@typescript-eslint/types": "npm:6.13.2"
-    "@typescript-eslint/typescript-estree": "npm:6.13.2"
-    "@typescript-eslint/visitor-keys": "npm:6.13.2"
+    "@typescript-eslint/scope-manager": "npm:6.14.0"
+    "@typescript-eslint/types": "npm:6.14.0"
+    "@typescript-eslint/typescript-estree": "npm:6.14.0"
+    "@typescript-eslint/visitor-keys": "npm:6.14.0"
     debug: "npm:^4.3.4"
   peerDependencies:
     eslint: ^7.0.0 || ^8.0.0
   peerDependenciesMeta:
     typescript:
       optional: true
-  checksum: 2c62b8cd8a37eb2ea59cd00e559f51a9f57af746e2040e872af3c58ddd3f4071ad7b7009789bdeb0e0d4ee0343bfe96ee77288020f3ae22d08e1674203f5e156
+  checksum: 0344f7f640374e7e5a5b50e9c90fbd161611b3f455132e541ef9116eef7bd3acf364db64bd38d4b6b4fe148414494620c9df660f8ddce036019c38ae8e146585
   languageName: node
   linkType: hard
 
-"@typescript-eslint/scope-manager@npm:6.13.2":
-  version: 6.13.2
-  resolution: "@typescript-eslint/scope-manager@npm:6.13.2"
+"@typescript-eslint/scope-manager@npm:6.14.0":
+  version: 6.14.0
+  resolution: "@typescript-eslint/scope-manager@npm:6.14.0"
   dependencies:
-    "@typescript-eslint/types": "npm:6.13.2"
-    "@typescript-eslint/visitor-keys": "npm:6.13.2"
-  checksum: 9b159e5bb10dfb5953e71488200b4126378fc7e987ce7d90946aea9ec40cd66c7ada92399657c5d9794189b764ca6f4eb38a8dcb9e4c5aa50ab6000a39636b9c
+    "@typescript-eslint/types": "npm:6.14.0"
+    "@typescript-eslint/visitor-keys": "npm:6.14.0"
+  checksum: 8c59a215af3d7d24d8d0b21c28a858263de471650829f288a941e0eb8af8a054798da5c7594b7f39370219718270c18464b5edb96f451457e5f080a33ba57c2c
   languageName: node
   linkType: hard
 
-"@typescript-eslint/type-utils@npm:6.13.2":
-  version: 6.13.2
-  resolution: "@typescript-eslint/type-utils@npm:6.13.2"
+"@typescript-eslint/type-utils@npm:6.14.0":
+  version: 6.14.0
+  resolution: "@typescript-eslint/type-utils@npm:6.14.0"
   dependencies:
-    "@typescript-eslint/typescript-estree": "npm:6.13.2"
-    "@typescript-eslint/utils": "npm:6.13.2"
+    "@typescript-eslint/typescript-estree": "npm:6.14.0"
+    "@typescript-eslint/utils": "npm:6.14.0"
     debug: "npm:^4.3.4"
     ts-api-utils: "npm:^1.0.1"
   peerDependencies:
@@ -3734,23 +3734,23 @@ __metadata:
   peerDependenciesMeta:
     typescript:
       optional: true
-  checksum: 1ca97c78abdf479aea0c54e869fda2ae2f69de1974cc063062ce7b5b16c7fdf497ea15c50a29dd5941ea1b6b77e8f1213a5c272a747e334ac69ede083f327468
+  checksum: 836a6e84be5a245b07c76968c98e2f3bae064767dde720080fe8f33e226188510778dbca4199b7e42ef675ec3fd6d0ab522ec1c77d6e2a9b50e8e275fe7c72c9
   languageName: node
   linkType: hard
 
-"@typescript-eslint/types@npm:6.13.2":
-  version: 6.13.2
-  resolution: "@typescript-eslint/types@npm:6.13.2"
-  checksum: 029918ca5b1442bb4bc435773504ce32191e2c3e2fde8d4176bb6513f03e3dfa2aa9724b2d22b1640656d666b97f7a7ebfeaf67b881d5e07250828fa83e3ebe8
+"@typescript-eslint/types@npm:6.14.0":
+  version: 6.14.0
+  resolution: "@typescript-eslint/types@npm:6.14.0"
+  checksum: d59306a7a441982a4dcee7d775928fd5086aba9331f7a238f915723a0dc785df0e43af562a30a7c2f1b056a1e49fd64863a8d2450d31706193add0ade87334a4
   languageName: node
   linkType: hard
 
-"@typescript-eslint/typescript-estree@npm:6.13.2":
-  version: 6.13.2
-  resolution: "@typescript-eslint/typescript-estree@npm:6.13.2"
+"@typescript-eslint/typescript-estree@npm:6.14.0":
+  version: 6.14.0
+  resolution: "@typescript-eslint/typescript-estree@npm:6.14.0"
   dependencies:
-    "@typescript-eslint/types": "npm:6.13.2"
-    "@typescript-eslint/visitor-keys": "npm:6.13.2"
+    "@typescript-eslint/types": "npm:6.14.0"
+    "@typescript-eslint/visitor-keys": "npm:6.14.0"
     debug: "npm:^4.3.4"
     globby: "npm:^11.1.0"
     is-glob: "npm:^4.0.3"
@@ -3759,34 +3759,34 @@ __metadata:
   peerDependenciesMeta:
     typescript:
       optional: true
-  checksum: 1c4c59dce0c51fdfee34d9f418e64fe28e3ec1a97661efc8a3d2780bdff36aff38de9090d356a968f394fa6d4e9c058936ce9cd260d4c44a52761ecd74915bce
+  checksum: 767c3309987b8ad053a2403605a9bd7c4eb3283dece864a741a7531a1c28eea4d85acaa4613141b64e194f9f6c4cbc5bc762c9b9f3a67c6202aa8cbb18b180d2
   languageName: node
   linkType: hard
 
-"@typescript-eslint/utils@npm:6.13.2, @typescript-eslint/utils@npm:^6.5.0":
-  version: 6.13.2
-  resolution: "@typescript-eslint/utils@npm:6.13.2"
+"@typescript-eslint/utils@npm:6.14.0, @typescript-eslint/utils@npm:^6.5.0":
+  version: 6.14.0
+  resolution: "@typescript-eslint/utils@npm:6.14.0"
   dependencies:
     "@eslint-community/eslint-utils": "npm:^4.4.0"
     "@types/json-schema": "npm:^7.0.12"
     "@types/semver": "npm:^7.5.0"
-    "@typescript-eslint/scope-manager": "npm:6.13.2"
-    "@typescript-eslint/types": "npm:6.13.2"
-    "@typescript-eslint/typescript-estree": "npm:6.13.2"
+    "@typescript-eslint/scope-manager": "npm:6.14.0"
+    "@typescript-eslint/types": "npm:6.14.0"
+    "@typescript-eslint/typescript-estree": "npm:6.14.0"
     semver: "npm:^7.5.4"
   peerDependencies:
     eslint: ^7.0.0 || ^8.0.0
-  checksum: 84969be91e7949868eaaa289288c9d71927f0e427b572501b0991d8d62b40a4234f7287c35b35d276ccbb53e9ea5457b8250fcf4941e60e6b9ba4065fbfba416
+  checksum: 72689b2897b89e1bd1c71c1c2ae436d0ccfbcfffabf3be4378de74ad8138b2ecdbeeda7c1720e2f1754569e773f2fc7216f704335e1e56c38c7601ee1d190aeb
   languageName: node
   linkType: hard
 
-"@typescript-eslint/visitor-keys@npm:6.13.2":
-  version: 6.13.2
-  resolution: "@typescript-eslint/visitor-keys@npm:6.13.2"
+"@typescript-eslint/visitor-keys@npm:6.14.0":
+  version: 6.14.0
+  resolution: "@typescript-eslint/visitor-keys@npm:6.14.0"
   dependencies:
-    "@typescript-eslint/types": "npm:6.13.2"
+    "@typescript-eslint/types": "npm:6.14.0"
     eslint-visitor-keys: "npm:^3.4.1"
-  checksum: c173bc1fcc42c3075a5ee094e7f3bf0279d98315c25ff49e20d02d79022b1d0402accfa113b070afb4d52a6f6d180594b67baa8b6a784eabdf82b54dd1ff454c
+  checksum: 0e2363f9f1986ebdb41507c54a666fa1c336eb6beb383dc342a10844d3c42c89067b21c3f158851fa6f0825e1e451a5470b5454fde70a6fc33b4b0259462d954
   languageName: node
   linkType: hard
 
@@ -7349,8 +7349,8 @@ __metadata:
   linkType: hard
 
 "eslint-plugin-import@npm:~2.29.0":
-  version: 2.29.0
-  resolution: "eslint-plugin-import@npm:2.29.0"
+  version: 2.29.1
+  resolution: "eslint-plugin-import@npm:2.29.1"
   dependencies:
     array-includes: "npm:^3.1.7"
     array.prototype.findlastindex: "npm:^1.2.3"
@@ -7368,16 +7368,16 @@ __metadata:
     object.groupby: "npm:^1.0.1"
     object.values: "npm:^1.1.7"
     semver: "npm:^6.3.1"
-    tsconfig-paths: "npm:^3.14.2"
+    tsconfig-paths: "npm:^3.15.0"
   peerDependencies:
     eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8
-  checksum: 761a4e1fbc2cd318e62350bed4c448f8b11ed83091d6bb7776f096556363a09debd9922b39fd2714c895edc9aaea82e08e684eb632283f880c58a91e4bae6733
+  checksum: 5f35dfbf4e8e67f741f396987de9504ad125c49f4144508a93282b4ea0127e052bde65ab6def1f31b6ace6d5d430be698333f75bdd7dca3bc14226c92a083196
   languageName: node
   linkType: hard
 
 "eslint-plugin-jsdoc@npm:^46.1.0":
-  version: 46.9.0
-  resolution: "eslint-plugin-jsdoc@npm:46.9.0"
+  version: 46.9.1
+  resolution: "eslint-plugin-jsdoc@npm:46.9.1"
   dependencies:
     "@es-joy/jsdoccomment": "npm:~0.41.0"
     are-docs-informative: "npm:^0.0.2"
@@ -7387,10 +7387,10 @@ __metadata:
     esquery: "npm:^1.5.0"
     is-builtin-module: "npm:^3.2.1"
     semver: "npm:^7.5.4"
-    spdx-expression-parse: "npm:^3.0.1"
+    spdx-expression-parse: "npm:^4.0.0"
   peerDependencies:
     eslint: ^7.0.0 || ^8.0.0
-  checksum: 4566b0f9bda54b446c813cf5ea93ae6d5866cbc4d448cb957b9ce2563f934d3ed2ed4e665e5a870750860a57137a1714c38599c35c60be16dce0f8e5a75b6ff6
+  checksum: d15d68797e85bb7b6fdcfc1170653683c16ab1d62c2e9c537101e774cb3231913e2bc4781f2bb808d074adce5699e5b545e450c6801b637c6434587d226ad6ac
   languageName: node
   linkType: hard
 
@@ -7511,13 +7511,13 @@ __metadata:
   linkType: hard
 
 "eslint@npm:^8.41.0":
-  version: 8.55.0
-  resolution: "eslint@npm:8.55.0"
+  version: 8.56.0
+  resolution: "eslint@npm:8.56.0"
   dependencies:
     "@eslint-community/eslint-utils": "npm:^4.2.0"
     "@eslint-community/regexpp": "npm:^4.6.1"
     "@eslint/eslintrc": "npm:^2.1.4"
-    "@eslint/js": "npm:8.55.0"
+    "@eslint/js": "npm:8.56.0"
     "@humanwhocodes/config-array": "npm:^0.11.13"
     "@humanwhocodes/module-importer": "npm:^1.0.1"
     "@nodelib/fs.walk": "npm:^1.2.8"
@@ -7554,7 +7554,7 @@ __metadata:
     text-table: "npm:^0.2.0"
   bin:
     eslint: bin/eslint.js
-  checksum: d28c0b60f19bb7d355cb8393e77b018c8f548dba3f820b799c89bb2e0c436ee26084e700c5e57e1e97e7972ec93065277849141b82e7b0c0d02c2dc1e553a2a1
+  checksum: 2be598f7da1339d045ad933ffd3d4742bee610515cd2b0d9a2b8b729395a01d4e913552fff555b559fccaefd89d7b37632825789d1b06470608737ae69ab43fb
   languageName: node
   linkType: hard
 
@@ -7883,20 +7883,7 @@ __metadata:
   languageName: node
   linkType: hard
 
-"fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.0, fast-glob@npm:^3.3.1":
-  version: 3.3.1
-  resolution: "fast-glob@npm:3.3.1"
-  dependencies:
-    "@nodelib/fs.stat": "npm:^2.0.2"
-    "@nodelib/fs.walk": "npm:^1.2.3"
-    glob-parent: "npm:^5.1.2"
-    merge2: "npm:^1.3.0"
-    micromatch: "npm:^4.0.4"
-  checksum: b68431128fb6ce4b804c5f9622628426d990b66c75b21c0d16e3d80e2d1398bf33f7e1724e66a2e3f299285dcf5b8d745b122d0304e7dd66f5231081f33ec67c
-  languageName: node
-  linkType: hard
-
-"fast-glob@npm:^3.3.2":
+"fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.0, fast-glob@npm:^3.3.1, fast-glob@npm:^3.3.2":
   version: 3.3.2
   resolution: "fast-glob@npm:3.3.2"
   dependencies:
@@ -9069,14 +9056,7 @@ __metadata:
   languageName: node
   linkType: hard
 
-"ignore@npm:^5.2.0, ignore@npm:^5.2.4":
-  version: 5.2.4
-  resolution: "ignore@npm:5.2.4"
-  checksum: 7c7cd90edd9fea6e037f9b9da4b01bf0a86b198ce78345f9bbd983929d68ff14830be31111edc5d70c264921f4962404d75b7262b4d9cc3bc12381eccbd03096
-  languageName: node
-  linkType: hard
-
-"ignore@npm:^5.3.0":
+"ignore@npm:^5.2.0, ignore@npm:^5.2.4, ignore@npm:^5.3.0":
   version: 5.3.0
   resolution: "ignore@npm:5.3.0"
   checksum: dc06bea5c23aae65d0725a957a0638b57e235ae4568dda51ca142053ed2c352de7e3bc93a69b2b32ac31966a1952e9a93c5ef2e2ab7c6b06aef9808f6b55b571
@@ -15125,13 +15105,13 @@ __metadata:
   languageName: node
   linkType: hard
 
-"spdx-expression-parse@npm:^3.0.1":
-  version: 3.0.1
-  resolution: "spdx-expression-parse@npm:3.0.1"
+"spdx-expression-parse@npm:^4.0.0":
+  version: 4.0.0
+  resolution: "spdx-expression-parse@npm:4.0.0"
   dependencies:
     spdx-exceptions: "npm:^2.1.0"
     spdx-license-ids: "npm:^3.0.0"
-  checksum: 6f8a41c87759fa184a58713b86c6a8b028250f158159f1d03ed9d1b6ee4d9eefdc74181c8ddc581a341aa971c3e7b79e30b59c23b05d2436d5de1c30bdef7171
+  checksum: 965c487e77f4fb173f1c471f3eef4eb44b9f0321adc7f93d95e7620da31faa67d29356eb02523cd7df8a7fc1ec8238773cdbf9e45bd050329d2b26492771b736
   languageName: node
   linkType: hard
 
@@ -16155,15 +16135,15 @@ __metadata:
   languageName: node
   linkType: hard
 
-"tsconfig-paths@npm:^3.14.2":
-  version: 3.14.2
-  resolution: "tsconfig-paths@npm:3.14.2"
+"tsconfig-paths@npm:^3.15.0":
+  version: 3.15.0
+  resolution: "tsconfig-paths@npm:3.15.0"
   dependencies:
     "@types/json5": "npm:^0.0.29"
     json5: "npm:^1.0.2"
     minimist: "npm:^1.2.6"
     strip-bom: "npm:^3.0.0"
-  checksum: fdc92bb7b18b31c0e76f8ec4f98d07236b09590fd6578e587ad024792c8b2235d65125a8fd007fa47a84400f84ceccbf33f24e5198d953249e7204f4cef3517c
+  checksum: 5b4f301a2b7a3766a986baf8fc0e177eb80bdba6e396792ff92dc23b5bca8bb279fc96517dcaaef63a3b49bebc6c4c833653ec58155780bc906bdbcf7dda0ef5
   languageName: node
   linkType: hard
 

From 287384b3bb969173b902c819f1f4f0f687a35091 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Mon, 18 Dec 2023 10:28:10 +0100
Subject: [PATCH 03/15] Update DefinitelyTyped types (non-major) (#28407)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
 yarn.lock | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/yarn.lock b/yarn.lock
index 78757c3e1..8d4c07a6f 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3352,11 +3352,11 @@ __metadata:
   linkType: hard
 
 "@types/react-dom@npm:^18.0.0, @types/react-dom@npm:^18.2.4":
-  version: 18.2.17
-  resolution: "@types/react-dom@npm:18.2.17"
+  version: 18.2.18
+  resolution: "@types/react-dom@npm:18.2.18"
   dependencies:
     "@types/react": "npm:*"
-  checksum: 33b53078ed7e9e0cfc4dc691e938f7db1cc06353bc345947b41b581c3efe2b980c9e4eb6460dbf5ddc521dd91959194c970221a2bd4bfad9d23ebce338e12938
+  checksum: 74dba11a1b8156f3a763f3fca1fb4ec1dcd349153279b8bf79210024a69f994bf2cf0728198c047f8130c5318420ea56281b0a4ef84c8ae943cd9a0cac705220
   languageName: node
   linkType: hard
 
@@ -3482,13 +3482,13 @@ __metadata:
   linkType: hard
 
 "@types/react@npm:*, @types/react@npm:16 || 17 || 18, @types/react@npm:>=16.9.11, @types/react@npm:^18.2.7":
-  version: 18.2.43
-  resolution: "@types/react@npm:18.2.43"
+  version: 18.2.45
+  resolution: "@types/react@npm:18.2.45"
   dependencies:
     "@types/prop-types": "npm:*"
     "@types/scheduler": "npm:*"
     csstype: "npm:^3.0.2"
-  checksum: 10477a50fbd3c0cc5b8a2ade679f442717f68fb27c8460b2aa1d3256cd18c48f742bbe5b9ee37a8c4c5f832ffa37b3a23c09fd96dd880a8e3182d8929c05e803
+  checksum: 4cc650c47ffb88baac29fb7a74e842e4af4a55f437086ef70250fdc75f0a5f2fcf8adc272d05ab2e00b1de6e14613296881271caee037dadf9130fdeb498c59e
   languageName: node
   linkType: hard
 

From 43f637c1300ad8423e1d631c59387a4ef622d603 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Mon, 18 Dec 2023 10:28:19 +0100
Subject: [PATCH 04/15] Update dependency rubocop-rails to v2.23.0 (#28396)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
 Gemfile.lock | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Gemfile.lock b/Gemfile.lock
index ab24f5dca..1ca1839ec 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -515,7 +515,7 @@ GEM
       openssl (> 2.0)
     orm_adapter (0.5.0)
     ox (2.14.17)
-    parallel (1.23.0)
+    parallel (1.24.0)
     parser (3.2.2.4)
       ast (~> 2.4.1)
       racc
@@ -682,7 +682,7 @@ GEM
     rubocop-performance (1.19.1)
       rubocop (>= 1.7.0, < 2.0)
       rubocop-ast (>= 0.4.0)
-    rubocop-rails (2.22.2)
+    rubocop-rails (2.23.0)
       activesupport (>= 4.2.0)
       rack (>= 1.1)
       rubocop (>= 1.33.0, < 2.0)

From fad7dca0e492d8798207a55fc68d20d9bfe72370 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Mon, 18 Dec 2023 10:29:41 +0100
Subject: [PATCH 05/15] Update dependency prom-client to v15.1.0 (#28394)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
 yarn.lock | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/yarn.lock b/yarn.lock
index 8d4c07a6f..58fab9907 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -13240,12 +13240,12 @@ __metadata:
   linkType: hard
 
 "prom-client@npm:^15.0.0":
-  version: 15.0.0
-  resolution: "prom-client@npm:15.0.0"
+  version: 15.1.0
+  resolution: "prom-client@npm:15.1.0"
   dependencies:
     "@opentelemetry/api": "npm:^1.4.0"
     tdigest: "npm:^0.1.1"
-  checksum: 4d69d4a6e086a80f1e7b5716c53d6be49d99dba8451f2a8117708f581f69648f47df68060cbea1c18e24fc1efe675868f85c5da89d0ef8d6f962a52b5f50c356
+  checksum: c10781adbf49225298e44da5396a51a0bd4d0cddc3c7e237ba50e888e12ead26a8f98261f362a442f1bbcdaddd6e7302d5675b37beac67ea9b6f82e4d39fb3cc
   languageName: node
   linkType: hard
 

From fc4eaa779a9f920ceb9f3aa72889e1401a3710b2 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Mon, 18 Dec 2023 10:31:21 +0100
Subject: [PATCH 06/15] Update dependency cssnano to v6.0.2 (#28382)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
 yarn.lock | 422 +++++++++++++++++++++++++++---------------------------
 1 file changed, 208 insertions(+), 214 deletions(-)

diff --git a/yarn.lock b/yarn.lock
index 58fab9907..f4d12e10a 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -6087,12 +6087,12 @@ __metadata:
   languageName: node
   linkType: hard
 
-"css-declaration-sorter@npm:^6.3.1":
-  version: 6.4.0
-  resolution: "css-declaration-sorter@npm:6.4.0"
+"css-declaration-sorter@npm:^7.0.0":
+  version: 7.1.1
+  resolution: "css-declaration-sorter@npm:7.1.1"
   peerDependencies:
     postcss: ^8.0.9
-  checksum: aef4d5927e576bae04349457be0607af44525cf5f4b28a91843c7b7f28fcbb302ba149385bb0e2172380556994e31680c5177b42d03502c417789b139e20cbc2
+  checksum: bea446e441bafde21c3c7b3f7639559311da12eea140db7ee3c61e4f41df455b7b098df107f99bc0cca32a5020841cc94bf8a2d5efb1b383e51f9de478c4816e
   languageName: node
   linkType: hard
 
@@ -6225,63 +6225,72 @@ __metadata:
   languageName: node
   linkType: hard
 
-"cssnano-preset-default@npm:^6.0.1":
-  version: 6.0.1
-  resolution: "cssnano-preset-default@npm:6.0.1"
+"cssnano-preset-default@npm:^6.0.2":
+  version: 6.0.2
+  resolution: "cssnano-preset-default@npm:6.0.2"
   dependencies:
-    css-declaration-sorter: "npm:^6.3.1"
-    cssnano-utils: "npm:^4.0.0"
-    postcss-calc: "npm:^9.0.0"
-    postcss-colormin: "npm:^6.0.0"
-    postcss-convert-values: "npm:^6.0.0"
-    postcss-discard-comments: "npm:^6.0.0"
-    postcss-discard-duplicates: "npm:^6.0.0"
-    postcss-discard-empty: "npm:^6.0.0"
-    postcss-discard-overridden: "npm:^6.0.0"
-    postcss-merge-longhand: "npm:^6.0.0"
-    postcss-merge-rules: "npm:^6.0.1"
-    postcss-minify-font-values: "npm:^6.0.0"
-    postcss-minify-gradients: "npm:^6.0.0"
-    postcss-minify-params: "npm:^6.0.0"
-    postcss-minify-selectors: "npm:^6.0.0"
-    postcss-normalize-charset: "npm:^6.0.0"
-    postcss-normalize-display-values: "npm:^6.0.0"
-    postcss-normalize-positions: "npm:^6.0.0"
-    postcss-normalize-repeat-style: "npm:^6.0.0"
-    postcss-normalize-string: "npm:^6.0.0"
-    postcss-normalize-timing-functions: "npm:^6.0.0"
-    postcss-normalize-unicode: "npm:^6.0.0"
-    postcss-normalize-url: "npm:^6.0.0"
-    postcss-normalize-whitespace: "npm:^6.0.0"
-    postcss-ordered-values: "npm:^6.0.0"
-    postcss-reduce-initial: "npm:^6.0.0"
-    postcss-reduce-transforms: "npm:^6.0.0"
-    postcss-svgo: "npm:^6.0.0"
-    postcss-unique-selectors: "npm:^6.0.0"
+    css-declaration-sorter: "npm:^7.0.0"
+    cssnano-utils: "npm:^4.0.1"
+    postcss-calc: "npm:^9.0.1"
+    postcss-colormin: "npm:^6.0.1"
+    postcss-convert-values: "npm:^6.0.1"
+    postcss-discard-comments: "npm:^6.0.1"
+    postcss-discard-duplicates: "npm:^6.0.1"
+    postcss-discard-empty: "npm:^6.0.1"
+    postcss-discard-overridden: "npm:^6.0.1"
+    postcss-merge-longhand: "npm:^6.0.1"
+    postcss-merge-rules: "npm:^6.0.2"
+    postcss-minify-font-values: "npm:^6.0.1"
+    postcss-minify-gradients: "npm:^6.0.1"
+    postcss-minify-params: "npm:^6.0.1"
+    postcss-minify-selectors: "npm:^6.0.1"
+    postcss-normalize-charset: "npm:^6.0.1"
+    postcss-normalize-display-values: "npm:^6.0.1"
+    postcss-normalize-positions: "npm:^6.0.1"
+    postcss-normalize-repeat-style: "npm:^6.0.1"
+    postcss-normalize-string: "npm:^6.0.1"
+    postcss-normalize-timing-functions: "npm:^6.0.1"
+    postcss-normalize-unicode: "npm:^6.0.1"
+    postcss-normalize-url: "npm:^6.0.1"
+    postcss-normalize-whitespace: "npm:^6.0.1"
+    postcss-ordered-values: "npm:^6.0.1"
+    postcss-reduce-initial: "npm:^6.0.1"
+    postcss-reduce-transforms: "npm:^6.0.1"
+    postcss-svgo: "npm:^6.0.1"
+    postcss-unique-selectors: "npm:^6.0.1"
   peerDependencies:
-    postcss: ^8.2.15
-  checksum: 401a8d0712cca6577df52cf4aac234ff4a946f0f51c0d09e7c518fff389706cff54d702ff22762e834b23401a89b836aef113e69cc66fa5dfa1f361bdd932495
+    postcss: ^8.4.31
+  checksum: c6f97674704c3a2a2473440549eac38ac722feebabbd39f2d4d1b8fae7f137f8fd0dfb88929e1ff737d54008de583c39e96f9dc450f2d71f8be6fc3bac2840a3
   languageName: node
   linkType: hard
 
-"cssnano-utils@npm:^4.0.0":
-  version: 4.0.0
-  resolution: "cssnano-utils@npm:4.0.0"
+"cssnano-utils@npm:^4.0.1":
+  version: 4.0.1
+  resolution: "cssnano-utils@npm:4.0.1"
   peerDependencies:
-    postcss: ^8.2.15
-  checksum: ca5cb2be5ec8ea624c28f5f54c00a440557afd3c2b25cb568517db44d230833743f3db30729126efe4d7fc616a42718dd76255bbefcb7d3cc7e3ff5989d907b3
+    postcss: ^8.4.31
+  checksum: 20513a393402f283c85c450ece43d1a6a06a9906b524481043ac203a86888a4ca5cbef878c615a58fdd82a9e870ce62c6f3fea9f51814034a084d8980e17cf96
   languageName: node
   linkType: hard
 
 "cssnano@npm:^6.0.1":
-  version: 6.0.1
-  resolution: "cssnano@npm:6.0.1"
+  version: 6.0.2
+  resolution: "cssnano@npm:6.0.2"
   dependencies:
-    cssnano-preset-default: "npm:^6.0.1"
-    lilconfig: "npm:^2.1.0"
+    cssnano-preset-default: "npm:^6.0.2"
+    lilconfig: "npm:^3.0.0"
   peerDependencies:
-    postcss: ^8.2.15
-  checksum: b73a3a257dd32201ce504cb34b08f1259c8a260b063f58d33e03283149d94ee2ba938d7f9beae1413f0f34e06828759575ade6ae95fa01d199f291e1d4f6d2c2
+    postcss: ^8.4.31
+  checksum: 5f4146a6c8937d24b0d1d33e3acd85db7913c7558cc80b23169f86c9a552d091a26e0af6adcc535f8355561872f797a917b9353e38fe935bbaf08ec2b66f5ff8
+  languageName: node
+  linkType: hard
+
+"csso@npm:5.0.5":
+  version: 5.0.5
+  resolution: "csso@npm:5.0.5"
+  dependencies:
+    css-tree: "npm:~2.2.0"
+  checksum: ab4beb1e97dd7e207c10e9925405b45f15a6cd1b4880a8686ad573aa6d476aed28b4121a666cffd26c37a26179f7b54741f7c257543003bfb244d06a62ad569b
   languageName: node
   linkType: hard
 
@@ -6294,15 +6303,6 @@ __metadata:
   languageName: node
   linkType: hard
 
-"csso@npm:^5.0.5":
-  version: 5.0.5
-  resolution: "csso@npm:5.0.5"
-  dependencies:
-    css-tree: "npm:~2.2.0"
-  checksum: ab4beb1e97dd7e207c10e9925405b45f15a6cd1b4880a8686ad573aa6d476aed28b4121a666cffd26c37a26179f7b54741f7c257543003bfb244d06a62ad569b
-  languageName: node
-  linkType: hard
-
 "cssom@npm:^0.5.0":
   version: 0.5.0
   resolution: "cssom@npm:0.5.0"
@@ -10827,20 +10827,13 @@ __metadata:
   languageName: node
   linkType: hard
 
-"lilconfig@npm:3.0.0":
+"lilconfig@npm:3.0.0, lilconfig@npm:^3.0.0":
   version: 3.0.0
   resolution: "lilconfig@npm:3.0.0"
   checksum: 7f5ee7a658dc016cacf146815e8d88b06f06f4402823b8b0934e305a57a197f55ccc9c5cd4fb5ea1b2b821c8ccaf2d54abd59602a4931af06eabda332388d3e6
   languageName: node
   linkType: hard
 
-"lilconfig@npm:^2.1.0":
-  version: 2.1.0
-  resolution: "lilconfig@npm:2.1.0"
-  checksum: 64645641aa8d274c99338e130554abd6a0190533c0d9eb2ce7ebfaf2e05c7d9961f3ffe2bfa39efd3b60c521ba3dd24fa236fe2775fc38501bf82bf49d4678b8
-  languageName: node
-  linkType: hard
-
 "lines-and-columns@npm:^1.1.6":
   version: 1.2.4
   resolution: "lines-and-columns@npm:1.2.4"
@@ -12673,7 +12666,7 @@ __metadata:
   languageName: node
   linkType: hard
 
-"postcss-calc@npm:^9.0.0":
+"postcss-calc@npm:^9.0.1":
   version: 9.0.1
   resolution: "postcss-calc@npm:9.0.1"
   dependencies:
@@ -12685,65 +12678,65 @@ __metadata:
   languageName: node
   linkType: hard
 
-"postcss-colormin@npm:^6.0.0":
-  version: 6.0.0
-  resolution: "postcss-colormin@npm:6.0.0"
+"postcss-colormin@npm:^6.0.1":
+  version: 6.0.1
+  resolution: "postcss-colormin@npm:6.0.1"
   dependencies:
     browserslist: "npm:^4.21.4"
     caniuse-api: "npm:^3.0.0"
     colord: "npm:^2.9.1"
     postcss-value-parser: "npm:^4.2.0"
   peerDependencies:
-    postcss: ^8.2.15
-  checksum: b05763b68f7f23333f408734f13be4bde641934ecbde25ac7d7fa648ab5e826716bffac0193067b317e861c6dabad81db9c012e865a83f81b6bce5c7e25c0fdd
+    postcss: ^8.4.31
+  checksum: b0056812b3436b05b6b84284a1ebe68a72299f23e7eeb0b7b40a775978d06a1cbe235f3665e3f694f5de76fe7d9b93db607536d07697b31a59fd4e8705e5b64d
   languageName: node
   linkType: hard
 
-"postcss-convert-values@npm:^6.0.0":
-  version: 6.0.0
-  resolution: "postcss-convert-values@npm:6.0.0"
+"postcss-convert-values@npm:^6.0.1":
+  version: 6.0.1
+  resolution: "postcss-convert-values@npm:6.0.1"
   dependencies:
     browserslist: "npm:^4.21.4"
     postcss-value-parser: "npm:^4.2.0"
   peerDependencies:
-    postcss: ^8.2.15
-  checksum: 8c20d31a39e0ddf7db4fde0da62e293279b5ee84c36919f2e5760650fa6f2984f1a40bfdbe8d1f7829bd37b17e5e589535f0aaaf71d4df29ad203cef830b9d7a
+    postcss: ^8.4.31
+  checksum: 53b951d7475206969c63b8427a2dea0ccba0a7cb08122e5f05aee8d12b09c870c070b101c9f8eceda76ff4d0fd9e5fa9385e83f143d658bb729dbb6a3583b872
   languageName: node
   linkType: hard
 
-"postcss-discard-comments@npm:^6.0.0":
-  version: 6.0.0
-  resolution: "postcss-discard-comments@npm:6.0.0"
+"postcss-discard-comments@npm:^6.0.1":
+  version: 6.0.1
+  resolution: "postcss-discard-comments@npm:6.0.1"
   peerDependencies:
-    postcss: ^8.2.15
-  checksum: c8792cd99c7696b21917d55937e02fb854a82ee308edf7564f18ad19bec4abf4756ba234e17f7d129d6b0dbaf6253bcddc435b1aeee190d4d26dcc2448f5453a
+    postcss: ^8.4.31
+  checksum: 5e9128ffb8c005081bb0521f5a23cf090e8513d928ed39935504ffde2e335a62a7e1a749c5c7bc2d03f06a8667900d19dd7eed19dfa4273043b5fd760476260d
   languageName: node
   linkType: hard
 
-"postcss-discard-duplicates@npm:^6.0.0":
-  version: 6.0.0
-  resolution: "postcss-discard-duplicates@npm:6.0.0"
+"postcss-discard-duplicates@npm:^6.0.1":
+  version: 6.0.1
+  resolution: "postcss-discard-duplicates@npm:6.0.1"
   peerDependencies:
-    postcss: ^8.2.15
-  checksum: 5fb0de3b187b09538a8c10f25bcc3e7b0865337a96a0599f8213864f0d52812f6c90142d170258293a30484b95e096dee28fc8fddb302016f93d4a8d269bb18f
+    postcss: ^8.4.31
+  checksum: b9ea10a3c7528bb1630613c11756f809a95da634822d943fa91b28f2a37787e7cdb9ff96deed9776e2c3753d35e42c8afd5074b630930df7b5150573d4beda23
   languageName: node
   linkType: hard
 
-"postcss-discard-empty@npm:^6.0.0":
-  version: 6.0.0
-  resolution: "postcss-discard-empty@npm:6.0.0"
+"postcss-discard-empty@npm:^6.0.1":
+  version: 6.0.1
+  resolution: "postcss-discard-empty@npm:6.0.1"
   peerDependencies:
-    postcss: ^8.2.15
-  checksum: 5dfe01f93ee2bb85e71f7832498bd051b772b9c724a5630f749237b07a14b47c2b2800b4215ab4cf0d8cba29552725b40334f3ef9d349f7aacf410ad351715dc
+    postcss: ^8.4.31
+  checksum: 6b95e588a3e8fb262e56bd313060daf29d7c9d44184bb6c4c5858ae81d6cd2907b15b3e3023b6621d50a67cfc10e6077920ff1e908892b207dee29477376498f
   languageName: node
   linkType: hard
 
-"postcss-discard-overridden@npm:^6.0.0":
-  version: 6.0.0
-  resolution: "postcss-discard-overridden@npm:6.0.0"
+"postcss-discard-overridden@npm:^6.0.1":
+  version: 6.0.1
+  resolution: "postcss-discard-overridden@npm:6.0.1"
   peerDependencies:
-    postcss: ^8.2.15
-  checksum: 3a0c91241a95a887ef10227c761fb2c48870966bda5530de635002e485abc2743dfbfdc96e3b6a21f10c6231f0cfbe1a0eae0a01a89629d64a711eab3ee008c6
+    postcss: ^8.4.31
+  checksum: 22f9d56e53b90bc0f8e6d1c24d6da6c7c1a9d757644a128a7a4263a5479aaa8eca4ce3bfe9db10358051635ed40e8778a68c3f1831b7163eae10ced001db4a87
   languageName: node
   linkType: hard
 
@@ -12770,77 +12763,77 @@ __metadata:
   languageName: node
   linkType: hard
 
-"postcss-merge-longhand@npm:^6.0.0":
-  version: 6.0.0
-  resolution: "postcss-merge-longhand@npm:6.0.0"
+"postcss-merge-longhand@npm:^6.0.1":
+  version: 6.0.1
+  resolution: "postcss-merge-longhand@npm:6.0.1"
   dependencies:
     postcss-value-parser: "npm:^4.2.0"
-    stylehacks: "npm:^6.0.0"
+    stylehacks: "npm:^6.0.1"
   peerDependencies:
-    postcss: ^8.2.15
-  checksum: 0b67c590d301ab7f087ea7421e1eac0cccd2ff1c146a2dfa16d3f32b770d12a5999b8c6ea177efc443f4fb9df13b941c401365c634533878eef1982ad9d0bb98
+    postcss: ^8.4.31
+  checksum: 2c0eb81b6c6d3d2af3b129c46d10317b7923f218db1cadcb4723091fb951fe4624638002b65f235151129d4ce9b4775a6ed0d5fa13419c0df580f72e15fa4ad3
   languageName: node
   linkType: hard
 
-"postcss-merge-rules@npm:^6.0.1":
-  version: 6.0.1
-  resolution: "postcss-merge-rules@npm:6.0.1"
+"postcss-merge-rules@npm:^6.0.2":
+  version: 6.0.2
+  resolution: "postcss-merge-rules@npm:6.0.2"
   dependencies:
     browserslist: "npm:^4.21.4"
     caniuse-api: "npm:^3.0.0"
-    cssnano-utils: "npm:^4.0.0"
+    cssnano-utils: "npm:^4.0.1"
     postcss-selector-parser: "npm:^6.0.5"
   peerDependencies:
-    postcss: ^8.2.15
-  checksum: b6a2a196905cd170757aa7b8bc74dab1fc7e2b2ca6a19c6d355fb7c41ff736023b4176c1008a7049f6a1b24a94a30d066c4e51229c1282a941f7fd6056085af7
+    postcss: ^8.4.31
+  checksum: 138a9921423420116b20e5761a1139392f0bcfcf34264fe11e254917d9c3170e3c0478a1b409e227d22bb0d9820b0168a871a240215d114e9c1e218ee6c132e6
   languageName: node
   linkType: hard
 
-"postcss-minify-font-values@npm:^6.0.0":
-  version: 6.0.0
-  resolution: "postcss-minify-font-values@npm:6.0.0"
+"postcss-minify-font-values@npm:^6.0.1":
+  version: 6.0.1
+  resolution: "postcss-minify-font-values@npm:6.0.1"
   dependencies:
     postcss-value-parser: "npm:^4.2.0"
   peerDependencies:
-    postcss: ^8.2.15
-  checksum: 6b74b1ec19bf76dcae7947c42145cb200b38767680512728f76168ae246db453798760e56111bd28ade9011d3655a79da4b33a93e5349f98fb0c1b22cc65ff36
+    postcss: ^8.4.31
+  checksum: 15af236245a6d27f1c83c943ef90d144ca043894bbd86f134506a984811a936a06824739984824965c7c3fd5a0ff4ed299f26a33f3b628662aa4fb40d7536fd0
   languageName: node
   linkType: hard
 
-"postcss-minify-gradients@npm:^6.0.0":
-  version: 6.0.0
-  resolution: "postcss-minify-gradients@npm:6.0.0"
+"postcss-minify-gradients@npm:^6.0.1":
+  version: 6.0.1
+  resolution: "postcss-minify-gradients@npm:6.0.1"
   dependencies:
     colord: "npm:^2.9.1"
-    cssnano-utils: "npm:^4.0.0"
+    cssnano-utils: "npm:^4.0.1"
     postcss-value-parser: "npm:^4.2.0"
   peerDependencies:
-    postcss: ^8.2.15
-  checksum: 59046acd470bee151291ba99421846d776c4ed243acb05a005e74f64f92b968d712d35e727f5e4a90e632d6d6aeb3a01083469f50bfdf1fb9ecae7f4ae52d9b8
+    postcss: ^8.4.31
+  checksum: e700c3f6dc425072ff739fb18bb71c970599e0d909b326f4a5c84e91cf24c4f1ee78e4d161bd4cdf6e25b7d78f1ad082bb885afdd2a150f9b281520fc6359d5c
   languageName: node
   linkType: hard
 
-"postcss-minify-params@npm:^6.0.0":
-  version: 6.0.0
-  resolution: "postcss-minify-params@npm:6.0.0"
+"postcss-minify-params@npm:^6.0.1":
+  version: 6.0.1
+  resolution: "postcss-minify-params@npm:6.0.1"
   dependencies:
     browserslist: "npm:^4.21.4"
-    cssnano-utils: "npm:^4.0.0"
+    cssnano-utils: "npm:^4.0.1"
     postcss-value-parser: "npm:^4.2.0"
   peerDependencies:
-    postcss: ^8.2.15
-  checksum: d4d1469b7ad7fe53900eb19c156ec6dcfeaf71641d29ba4df31f47d8fa8ac700df5b8d3e3768e66d695d5356ed348cea901314653046c8e48422962f165a1933
+    postcss: ^8.4.31
+  checksum: 0b34817f032ec9793fad4d33f3ba5551531073a36c9120d77194a3edeee860132951ed6954913494e5a6752ae8da1bc5cdb2a44fa5f428621afae8edddb0ca80
   languageName: node
   linkType: hard
 
-"postcss-minify-selectors@npm:^6.0.0":
-  version: 6.0.0
-  resolution: "postcss-minify-selectors@npm:6.0.0"
+"postcss-minify-selectors@npm:^6.0.1":
+  version: 6.0.1
+  resolution: "postcss-minify-selectors@npm:6.0.1"
   dependencies:
     postcss-selector-parser: "npm:^6.0.5"
   peerDependencies:
-    postcss: ^8.2.15
-  checksum: 1cdd3bd231cf25f54ab370d959f727dfcbe839a1d97bcfd65add9df73747a45d299a009ff16111bbe78943e8f81dcf5f84ae4106847b23dd3652de7aadc0b297
+    postcss: ^8.4.31
+  checksum: ffc7ebb286beda2b2aa0ed13abafc89b5ffe232a48d57d3f2b9f69e167e354482a6f5279e9118bed753bf6e82d3cfb21228a6b07acd93d0dc9e01bbf0e7ebc75
   languageName: node
   linkType: hard
 
@@ -12888,136 +12881,136 @@ __metadata:
   languageName: node
   linkType: hard
 
-"postcss-normalize-charset@npm:^6.0.0":
-  version: 6.0.0
-  resolution: "postcss-normalize-charset@npm:6.0.0"
+"postcss-normalize-charset@npm:^6.0.1":
+  version: 6.0.1
+  resolution: "postcss-normalize-charset@npm:6.0.1"
   peerDependencies:
-    postcss: ^8.2.15
-  checksum: 5232eac7f62097b1d349546182af2db7db34989867c147517cd407ab23c8450558a7f858eb8dac130959dae2d02d3460c5afa510e0ffe22221cb218f2bd79adb
+    postcss: ^8.4.31
+  checksum: 8c09eedaf8813123875c65ab35120f14a87d6b9e8d6805fa808e3a714a8f868d15123f34f61e2240d89225f2f5c2bdabbcdf6385ce86b2487370d8994a65a857
   languageName: node
   linkType: hard
 
-"postcss-normalize-display-values@npm:^6.0.0":
-  version: 6.0.0
-  resolution: "postcss-normalize-display-values@npm:6.0.0"
+"postcss-normalize-display-values@npm:^6.0.1":
+  version: 6.0.1
+  resolution: "postcss-normalize-display-values@npm:6.0.1"
   dependencies:
     postcss-value-parser: "npm:^4.2.0"
   peerDependencies:
-    postcss: ^8.2.15
-  checksum: 58163258a52610fa0d2b61bd6e872b9a2b25da1f2209cbf34fad3b62a4139fff9e0e6b298dcd1adfe6ac556098aad8b79c387280f3a949180f8fb12e6b41fecf
+    postcss: ^8.4.31
+  checksum: d08a92c653fb4f2506e029ceb8e3fdae9bc937fb1a7e80ecde759d02f6d15f69211af384d89d8582b160fd129abd9c77c8c64d75379417098ee5a2ba779e33d3
   languageName: node
   linkType: hard
 
-"postcss-normalize-positions@npm:^6.0.0":
-  version: 6.0.0
-  resolution: "postcss-normalize-positions@npm:6.0.0"
+"postcss-normalize-positions@npm:^6.0.1":
+  version: 6.0.1
+  resolution: "postcss-normalize-positions@npm:6.0.1"
   dependencies:
     postcss-value-parser: "npm:^4.2.0"
   peerDependencies:
-    postcss: ^8.2.15
-  checksum: de2ced6cfdf2931d7cbc8f9c96bb12487119dba1b454c7ac01fd19f7afdaa9bf6c63f59624281293379ead5a3d5e883007a3f192f02c40ab41528ccc5a399f5c
+    postcss: ^8.4.31
+  checksum: bb0267b13c92791543f5e9f94b119a0540e08aa46f600acd73a692cd38d07d2d2fddb11148a81adb58e3f65671eebb05ea38d2ded48f3202b2582f1199aa848e
   languageName: node
   linkType: hard
 
-"postcss-normalize-repeat-style@npm:^6.0.0":
-  version: 6.0.0
-  resolution: "postcss-normalize-repeat-style@npm:6.0.0"
+"postcss-normalize-repeat-style@npm:^6.0.1":
+  version: 6.0.1
+  resolution: "postcss-normalize-repeat-style@npm:6.0.1"
   dependencies:
     postcss-value-parser: "npm:^4.2.0"
   peerDependencies:
-    postcss: ^8.2.15
-  checksum: 1643132094067709ca7d1fa2beededd28565c83bc8a6c2a4dec879a97e1d425ca1293a8832a45732eef12b52960f024330cfb654a8a222fb7ea768a75989c31e
+    postcss: ^8.4.31
+  checksum: f6e943dbbf9341dd6ce2c9fc6820e8ae2a838d1db84f58f75b1e5c1b8b9d6895d17fb30b320e2189b8747f844713ec687540b5b1d52ccd6c9108d6d35328c659
   languageName: node
   linkType: hard
 
-"postcss-normalize-string@npm:^6.0.0":
-  version: 6.0.0
-  resolution: "postcss-normalize-string@npm:6.0.0"
+"postcss-normalize-string@npm:^6.0.1":
+  version: 6.0.1
+  resolution: "postcss-normalize-string@npm:6.0.1"
   dependencies:
     postcss-value-parser: "npm:^4.2.0"
   peerDependencies:
-    postcss: ^8.2.15
-  checksum: d586ce274451229c6a3d625edef882b342ab7702babb632845c8c201c7bcc08481f282000d19d17edb7b5ef0b1982e715a16ab60990d124e937c4aef3304151e
+    postcss: ^8.4.31
+  checksum: afcdd69522fc3ebafc349c2ef4b62f1e734ade9b6148fd20f2b841477808ac6cf6e5bfbb533c492fdc6bb2184b84be8ebb800a6ae174c4313f87fb0695088cc0
   languageName: node
   linkType: hard
 
-"postcss-normalize-timing-functions@npm:^6.0.0":
-  version: 6.0.0
-  resolution: "postcss-normalize-timing-functions@npm:6.0.0"
+"postcss-normalize-timing-functions@npm:^6.0.1":
+  version: 6.0.1
+  resolution: "postcss-normalize-timing-functions@npm:6.0.1"
   dependencies:
     postcss-value-parser: "npm:^4.2.0"
   peerDependencies:
-    postcss: ^8.2.15
-  checksum: a70742648cec15eea031096f2ad99c21c79228ce4c4ccc9f63c277c07e9e3add96298cc67b0b1797896507248153e0a662f85f490f53147ded7008b459dd5ba3
+    postcss: ^8.4.31
+  checksum: c1c81d0dcb2f74fbd69cc45b0b6bd6cde390a0c9df602aabbf3eb2149a49da48e808837e811d22a525ffb036e158e63b4b2cf12c94cf28f2c2f6af858876134e
   languageName: node
   linkType: hard
 
-"postcss-normalize-unicode@npm:^6.0.0":
-  version: 6.0.0
-  resolution: "postcss-normalize-unicode@npm:6.0.0"
+"postcss-normalize-unicode@npm:^6.0.1":
+  version: 6.0.1
+  resolution: "postcss-normalize-unicode@npm:6.0.1"
   dependencies:
     browserslist: "npm:^4.21.4"
     postcss-value-parser: "npm:^4.2.0"
   peerDependencies:
-    postcss: ^8.2.15
-  checksum: cd9b06ed09c29ccc0b2cb222044d7ec49fb710fdd6f0878b26d7f3324478d8271a555ba3d82fc8d9fdcf8671a83c499cdfa09c0e73d4dee928adff4042ed8b22
+    postcss: ^8.4.31
+  checksum: 8057748dade94dc2dd63a3b75a85e394c2e9a7076053886ff08aa9b7729d383f204eda52d882e5361ae1ec493036e90b2e18dcc5f8c9b3a8f1cbfada12bcc05b
   languageName: node
   linkType: hard
 
-"postcss-normalize-url@npm:^6.0.0":
-  version: 6.0.0
-  resolution: "postcss-normalize-url@npm:6.0.0"
+"postcss-normalize-url@npm:^6.0.1":
+  version: 6.0.1
+  resolution: "postcss-normalize-url@npm:6.0.1"
   dependencies:
     postcss-value-parser: "npm:^4.2.0"
   peerDependencies:
-    postcss: ^8.2.15
-  checksum: 719a7feee4adf638cc0b4bc204d89485388ca81f0ad0a181a225122f488f956abd29f429d69e5a57fffe93fbd2a22eab7737bd8b55b19979efba26e008b2ec11
+    postcss: ^8.4.31
+  checksum: 4e3e713a95e01f263feccd041b2b10016a0a09e494c81567f012d1326d9b2d57dc4a68956a820313630370c0ef591bdbb37cc96ed259022559623be179aad436
   languageName: node
   linkType: hard
 
-"postcss-normalize-whitespace@npm:^6.0.0":
-  version: 6.0.0
-  resolution: "postcss-normalize-whitespace@npm:6.0.0"
+"postcss-normalize-whitespace@npm:^6.0.1":
+  version: 6.0.1
+  resolution: "postcss-normalize-whitespace@npm:6.0.1"
   dependencies:
     postcss-value-parser: "npm:^4.2.0"
   peerDependencies:
-    postcss: ^8.2.15
-  checksum: 8421dd5813c1e555d7c2847dd8b71a5138ee2091341ebd1ea686d5b00cd46d249a29027e142289f873ca7f5fc995b51eb68f9693fec6d61cf951c759d109c37d
+    postcss: ^8.4.31
+  checksum: 259c0b7653f033ed14303602a30e458c37dc63ee55f47226b6379a6ea553ca7c9b971d49715b8f3f36a3a06927f6f87d7997c027ad4664af3bca37a5fe30352e
   languageName: node
   linkType: hard
 
-"postcss-ordered-values@npm:^6.0.0":
-  version: 6.0.0
-  resolution: "postcss-ordered-values@npm:6.0.0"
+"postcss-ordered-values@npm:^6.0.1":
+  version: 6.0.1
+  resolution: "postcss-ordered-values@npm:6.0.1"
   dependencies:
-    cssnano-utils: "npm:^4.0.0"
+    cssnano-utils: "npm:^4.0.1"
     postcss-value-parser: "npm:^4.2.0"
   peerDependencies:
-    postcss: ^8.2.15
-  checksum: b01352b0ea014e0037a5b8b3bd866696924bfb2cf3b47b73547786a1954e6771c04790fbe4c651bf029bafdbfde70f49e611f9ef309e945f753425841f343017
+    postcss: ^8.4.31
+  checksum: 2e71f035c90b26d7a8d31e1b716f977532367f75bc76de3318b6ba7b2e1ec43c011cc09e741f59f7d93dff427b7d90a35db0b460d2f171a6f0c6e8c938ef30ad
   languageName: node
   linkType: hard
 
-"postcss-reduce-initial@npm:^6.0.0":
-  version: 6.0.0
-  resolution: "postcss-reduce-initial@npm:6.0.0"
+"postcss-reduce-initial@npm:^6.0.1":
+  version: 6.0.1
+  resolution: "postcss-reduce-initial@npm:6.0.1"
   dependencies:
     browserslist: "npm:^4.21.4"
     caniuse-api: "npm:^3.0.0"
   peerDependencies:
-    postcss: ^8.2.15
-  checksum: 7cf6340bde9f70c7d9b20bc3ee53e883bf27ed56fcc3bb2a2c736b311d977098a7c3a6b9e4be4d2c159d0042bf7742bb5af59628cd89cf838968dacc5ae15c80
+    postcss: ^8.4.31
+  checksum: 3f8f6c26ceeb79ddc285b0e01183fe30e911dd26b3abcdca56568e2bef3747f2b7f22ee3f9117e9752e1e93c10bcd88bd6a2842ca525b54336726292ebd3c3ad
   languageName: node
   linkType: hard
 
-"postcss-reduce-transforms@npm:^6.0.0":
-  version: 6.0.0
-  resolution: "postcss-reduce-transforms@npm:6.0.0"
+"postcss-reduce-transforms@npm:^6.0.1":
+  version: 6.0.1
+  resolution: "postcss-reduce-transforms@npm:6.0.1"
   dependencies:
     postcss-value-parser: "npm:^4.2.0"
   peerDependencies:
-    postcss: ^8.2.15
-  checksum: 6da900d22dd8760b8a2ace32013036e3c4c4d9d560c31255eceea54563e3ddb2ca830bc9072fe2a1abacb8c48a008656887fc2f6ba1873e590342ad8e6bc269d
+    postcss: ^8.4.31
+  checksum: de7631302311071d86622166539162e69df506785e3674afab0602c86ed9aa67799e44405b40327f0011d58089d2dc4e2ae481b21812177818e28f9272d350a5
   languageName: node
   linkType: hard
 
@@ -13056,26 +13049,26 @@ __metadata:
   languageName: node
   linkType: hard
 
-"postcss-svgo@npm:^6.0.0":
-  version: 6.0.0
-  resolution: "postcss-svgo@npm:6.0.0"
+"postcss-svgo@npm:^6.0.1":
+  version: 6.0.1
+  resolution: "postcss-svgo@npm:6.0.1"
   dependencies:
     postcss-value-parser: "npm:^4.2.0"
-    svgo: "npm:^3.0.2"
+    svgo: "npm:^3.0.5"
   peerDependencies:
-    postcss: ^8.2.15
-  checksum: ec567cd5e982e3c0393695628bc508b87dcfe4e4b2049930e79e6c629c349fad19403f0d39d76ceda3e0f15ffd065304e76152f397fae2f3f848cdb847a0b564
+    postcss: ^8.4.31
+  checksum: 021da9b0d0696fce970f407891a0d6c05e51d1908af435026e0cd5936a75cd8502a7d504cd0e6a33b6f3369fee41f01b848e5bd919aecc3e804ce6308e91a6cc
   languageName: node
   linkType: hard
 
-"postcss-unique-selectors@npm:^6.0.0":
-  version: 6.0.0
-  resolution: "postcss-unique-selectors@npm:6.0.0"
+"postcss-unique-selectors@npm:^6.0.1":
+  version: 6.0.1
+  resolution: "postcss-unique-selectors@npm:6.0.1"
   dependencies:
     postcss-selector-parser: "npm:^6.0.5"
   peerDependencies:
-    postcss: ^8.2.15
-  checksum: 63e81a7965ff8874fdf39ef0ae0f12cc21352548733538f52eda73f0ed5a7fab7fda9090facf50395d07873c5a6f02d31a6171fd476c80858b03090ec4c61d31
+    postcss: ^8.4.31
+  checksum: 637e35775d0ee8fbcf4a81b28d3832c5076de7c0232eb7769d4fbbf783f26793e2ec95e18461ae3b9f5f5cd63c3de9db102464487ba2488d4947aad24dc8841f
   languageName: node
   linkType: hard
 
@@ -15548,15 +15541,15 @@ __metadata:
   languageName: node
   linkType: hard
 
-"stylehacks@npm:^6.0.0":
-  version: 6.0.0
-  resolution: "stylehacks@npm:6.0.0"
+"stylehacks@npm:^6.0.1":
+  version: 6.0.1
+  resolution: "stylehacks@npm:6.0.1"
   dependencies:
     browserslist: "npm:^4.21.4"
     postcss-selector-parser: "npm:^6.0.4"
   peerDependencies:
-    postcss: ^8.2.15
-  checksum: 6ce277c816dd826fdc765258d612a160bad03dae52ab51ef1676efae07e96923ebeb6880d6522eefc50d2e81cb90b632615120c73aed190f345e8d836def67b6
+    postcss: ^8.4.31
+  checksum: 0877016f5b2a06b8ceaf39382b0c33da11ea93268209444f67f29b1ce465994058f305fc3bc90dda21e8664c959561fbb06ba12b82289c3b26ba832c6979d513
   languageName: node
   linkType: hard
 
@@ -15780,19 +15773,20 @@ __metadata:
   languageName: node
   linkType: hard
 
-"svgo@npm:^3.0.2":
-  version: 3.0.2
-  resolution: "svgo@npm:3.0.2"
+"svgo@npm:^3.0.5":
+  version: 3.1.0
+  resolution: "svgo@npm:3.1.0"
   dependencies:
     "@trysound/sax": "npm:0.2.0"
     commander: "npm:^7.2.0"
     css-select: "npm:^5.1.0"
     css-tree: "npm:^2.2.1"
-    csso: "npm:^5.0.5"
+    css-what: "npm:^6.1.0"
+    csso: "npm:5.0.5"
     picocolors: "npm:^1.0.0"
   bin:
-    svgo: bin/svgo
-  checksum: d682d416dd68cdcbab5e1e77b93d621325480e97dfe87777e845ea9a0ce05d03fc837ce17080af67e787f6b24430b805ff79f4591dda30a0ab4060b6a3ac2adf
+    svgo: ./bin/svgo
+  checksum: b3f00b3319dee6ddc53f8b8ac5acef581860e1708c98b492169e096621edc1bdf46e3778099e3dffb5116bf0d4c074a686099843dbc020c73b3ccfae7b6a88f0
   languageName: node
   linkType: hard
 

From e56fb9e4890435ef89b56ef5d1b9a8d0d46ab938 Mon Sep 17 00:00:00 2001
From: Matt Jankowski <matt@jankowski.online>
Date: Mon, 18 Dec 2023 04:32:02 -0500
Subject: [PATCH 07/15] Fix `Style/SymbolProc` cop (#28386)

---
 .rubocop_todo.yml                 | 7 -------
 config/initializers/3_omniauth.rb | 2 +-
 2 files changed, 1 insertion(+), 8 deletions(-)

diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
index d9b2ec814..4ddca804a 100644
--- a/.rubocop_todo.yml
+++ b/.rubocop_todo.yml
@@ -478,13 +478,6 @@ Style/StringLiterals:
     - 'config/initializers/webauthn.rb'
     - 'config/routes.rb'
 
-# This cop supports unsafe autocorrection (--autocorrect-all).
-# Configuration parameters: AllowMethodsWithArguments, AllowedMethods, AllowedPatterns, AllowComments.
-# AllowedMethods: define_method, mail, respond_to
-Style/SymbolProc:
-  Exclude:
-    - 'config/initializers/3_omniauth.rb'
-
 # This cop supports safe autocorrection (--autocorrect).
 # Configuration parameters: EnforcedStyle, AllowSafeAssignment.
 # SupportedStyles: require_parentheses, require_no_parentheses, require_parentheses_when_complex
diff --git a/config/initializers/3_omniauth.rb b/config/initializers/3_omniauth.rb
index d316c3b73..aa8ba1a05 100644
--- a/config/initializers/3_omniauth.rb
+++ b/config/initializers/3_omniauth.rb
@@ -79,7 +79,7 @@ Devise.setup do |config|
     oidc_options[:client_auth_method] = ENV['OIDC_CLIENT_AUTH_METHOD'] if ENV['OIDC_CLIENT_AUTH_METHOD'] # OPTIONAL (default: basic)
     scope_string = ENV['OIDC_SCOPE'] if ENV['OIDC_SCOPE'] # NEED
     scopes = scope_string.split(',')
-    oidc_options[:scope] = scopes.map { |x| x.to_sym }
+    oidc_options[:scope] = scopes.map(&:to_sym)
     oidc_options[:response_type] = ENV['OIDC_RESPONSE_TYPE'] if ENV['OIDC_RESPONSE_TYPE'] # OPTIONAL (default: code)
     oidc_options[:response_mode] = ENV['OIDC_RESPONSE_MODE'] if ENV['OIDC_RESPONSE_MODE'] # OPTIONAL (default: query)
     oidc_options[:display] = ENV['OIDC_DISPLAY'] if ENV['OIDC_DISPLAY'] # OPTIONAL (default: page)

From 89d468ada74a48a72b7810b2231dc7ff2b66b250 Mon Sep 17 00:00:00 2001
From: Matt Jankowski <matt@jankowski.online>
Date: Mon, 18 Dec 2023 04:36:08 -0500
Subject: [PATCH 08/15] Fix `Style/StderrPuts` cop (#28389)

---
 .rubocop_todo.yml | 5 -----
 config/boot.rb    | 2 +-
 2 files changed, 1 insertion(+), 6 deletions(-)

diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
index 4ddca804a..5ce0c7876 100644
--- a/.rubocop_todo.yml
+++ b/.rubocop_todo.yml
@@ -455,11 +455,6 @@ Style/SingleArgumentDig:
   Exclude:
     - 'lib/webpacker/manifest_extensions.rb'
 
-# This cop supports safe autocorrection (--autocorrect).
-Style/StderrPuts:
-  Exclude:
-    - 'config/boot.rb'
-
 # This cop supports unsafe autocorrection (--autocorrect-all).
 # Configuration parameters: Mode.
 Style/StringConcatenation:
diff --git a/config/boot.rb b/config/boot.rb
index 3e44cbe58..717de85f2 100644
--- a/config/boot.rb
+++ b/config/boot.rb
@@ -1,7 +1,7 @@
 # frozen_string_literal: true
 
 unless ENV.key?('RAILS_ENV')
-  STDERR.puts 'ERROR: Missing RAILS_ENV environment variable, please set it to "production", "development", or "test".'
+  warn 'ERROR: Missing RAILS_ENV environment variable, please set it to "production", "development", or "test".'
   exit 1
 end
 

From 0e5b8fc46bed800a16385d52b2f87db096b4f3a9 Mon Sep 17 00:00:00 2001
From: Matt Jankowski <matt@jankowski.online>
Date: Mon, 18 Dec 2023 04:50:51 -0500
Subject: [PATCH 09/15] Fix `Style/RedundantReturn` cop (#28391)

---
 .rubocop_todo.yml                             |  9 --------
 .../api/v1/directories_controller.rb          |  2 +-
 .../auth/confirmations_controller.rb          |  2 +-
 app/lib/ostatus/tag_manager.rb                |  2 +-
 app/models/form/import.rb                     | 21 ++++++++++++-------
 5 files changed, 16 insertions(+), 20 deletions(-)

diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
index 5ce0c7876..b8b4895f5 100644
--- a/.rubocop_todo.yml
+++ b/.rubocop_todo.yml
@@ -426,15 +426,6 @@ Style/RedundantFetchBlock:
     - 'config/initializers/paperclip.rb'
     - 'config/puma.rb'
 
-# This cop supports safe autocorrection (--autocorrect).
-# Configuration parameters: AllowMultipleReturnValues.
-Style/RedundantReturn:
-  Exclude:
-    - 'app/controllers/api/v1/directories_controller.rb'
-    - 'app/controllers/auth/confirmations_controller.rb'
-    - 'app/lib/ostatus/tag_manager.rb'
-    - 'app/models/form/import.rb'
-
 # This cop supports unsafe autocorrection (--autocorrect-all).
 # Configuration parameters: ConvertCodeThatCanStartToReturnNil, AllowedMethods, MaxChainLength.
 # AllowedMethods: present?, blank?, presence, try, try!
diff --git a/app/controllers/api/v1/directories_controller.rb b/app/controllers/api/v1/directories_controller.rb
index 35c504a7f..e79b20ce4 100644
--- a/app/controllers/api/v1/directories_controller.rb
+++ b/app/controllers/api/v1/directories_controller.rb
@@ -12,7 +12,7 @@ class Api::V1::DirectoriesController < Api::BaseController
   private
 
   def require_enabled!
-    return not_found unless Setting.profile_directory
+    not_found unless Setting.profile_directory
   end
 
   def set_accounts
diff --git a/app/controllers/auth/confirmations_controller.rb b/app/controllers/auth/confirmations_controller.rb
index 9f6be9c42..d9cd63090 100644
--- a/app/controllers/auth/confirmations_controller.rb
+++ b/app/controllers/auth/confirmations_controller.rb
@@ -62,7 +62,7 @@ class Auth::ConfirmationsController < Devise::ConfirmationsController
   end
 
   def captcha_user_bypass?
-    return true if @confirmation_user.nil? || @confirmation_user.confirmed?
+    @confirmation_user.nil? || @confirmation_user.confirmed?
   end
 
   def require_unconfirmed!
diff --git a/app/lib/ostatus/tag_manager.rb b/app/lib/ostatus/tag_manager.rb
index 7d8131622..21b3d3aa5 100644
--- a/app/lib/ostatus/tag_manager.rb
+++ b/app/lib/ostatus/tag_manager.rb
@@ -52,7 +52,7 @@ class OStatus::TagManager
       ActivityPub::TagManager.instance.uri_to_local_id(tag)
     else
       matches = Regexp.new("objectId=([\\d]+):objectType=#{expected_type}").match(tag)
-      return matches[1] unless matches.nil?
+      matches[1] unless matches.nil?
     end
   end
 
diff --git a/app/models/form/import.rb b/app/models/form/import.rb
index 29a2975c7..712acf370 100644
--- a/app/models/form/import.rb
+++ b/app/models/form/import.rb
@@ -43,14 +43,19 @@ class Form::Import
   validate :validate_data
 
   def guessed_type
-    return :muting if csv_headers_match?('Hide notifications')
-    return :following if csv_headers_match?('Show boosts') || csv_headers_match?('Notify on new posts') || csv_headers_match?('Languages')
-    return :following if file_name_matches?('follows') || file_name_matches?('following_accounts')
-    return :blocking if file_name_matches?('blocks') || file_name_matches?('blocked_accounts')
-    return :muting if file_name_matches?('mutes') || file_name_matches?('muted_accounts')
-    return :domain_blocking if file_name_matches?('domain_blocks') || file_name_matches?('blocked_domains')
-    return :bookmarks if file_name_matches?('bookmarks')
-    return :lists if file_name_matches?('lists')
+    if csv_headers_match?('Hide notifications') || file_name_matches?('mutes') || file_name_matches?('muted_accounts')
+      :muting
+    elsif csv_headers_match?('Show boosts') || csv_headers_match?('Notify on new posts') || csv_headers_match?('Languages') || file_name_matches?('follows') || file_name_matches?('following_accounts')
+      :following
+    elsif file_name_matches?('blocks') || file_name_matches?('blocked_accounts')
+      :blocking
+    elsif file_name_matches?('domain_blocks') || file_name_matches?('blocked_domains')
+      :domain_blocking
+    elsif file_name_matches?('bookmarks')
+      :bookmarks
+    elsif file_name_matches?('lists')
+      :lists
+    end
   end
 
   # Whether the uploaded CSV file seems to correspond to a different import type than the one selected

From 8e9e7d57d8db697f5bc595f2e98c7e7b716fe59a Mon Sep 17 00:00:00 2001
From: Matt Jankowski <matt@jankowski.online>
Date: Mon, 18 Dec 2023 04:58:53 -0500
Subject: [PATCH 10/15] Opt out of `Rails/UnusedIgnoredColumns` cop (#28385)

---
 .rubocop.yml      |  6 ++++++
 .rubocop_todo.yml | 13 -------------
 2 files changed, 6 insertions(+), 13 deletions(-)

diff --git a/.rubocop.yml b/.rubocop.yml
index 222160422..2da7e361c 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -109,6 +109,12 @@ Rails/SkipsModelValidations:
   Exclude:
     - 'db/*migrate/**/*'
 
+# Reason: We want to preserve the ability to migrate from arbitrary old versions,
+# and cannot guarantee that every installation has run every migration as they upgrade.
+# https://docs.rubocop.org/rubocop-rails/cops_rails.html#railsunusedignoredcolumns
+Rails/UnusedIgnoredColumns:
+  Enabled: false
+
 # Reason: Some single letter camel case files shouldn't be split
 # https://docs.rubocop.org/rubocop-rspec/cops_rspec.html#rspecfilepath
 RSpec/FilePath:
diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
index b8b4895f5..2fa3a1ef6 100644
--- a/.rubocop_todo.yml
+++ b/.rubocop_todo.yml
@@ -196,19 +196,6 @@ Rails/UniqueValidationWithoutIndex:
     - 'app/models/identity.rb'
     - 'app/models/webauthn_credential.rb'
 
-# Configuration parameters: Include.
-# Include: app/models/**/*.rb
-Rails/UnusedIgnoredColumns:
-  Exclude:
-    - 'app/models/account.rb'
-    - 'app/models/account_stat.rb'
-    - 'app/models/admin/action_log.rb'
-    - 'app/models/custom_filter.rb'
-    - 'app/models/email_domain_block.rb'
-    - 'app/models/report.rb'
-    - 'app/models/status_edit.rb'
-    - 'app/models/user.rb'
-
 # This cop supports unsafe autocorrection (--autocorrect-all).
 # Configuration parameters: EnforcedStyle.
 # SupportedStyles: exists, where

From 2bd8d343cfe06edf1b5b21ac2c5fd9e560dac1e3 Mon Sep 17 00:00:00 2001
From: Matt Jankowski <matt@jankowski.online>
Date: Mon, 18 Dec 2023 05:06:42 -0500
Subject: [PATCH 11/15] Fix `Style/SoleNestedConditional` and
 `Style/IfInsideElse` cops, regenerate haml todo (#28384)

---
 .haml-lint_todo.yml                           | 16 ++-----------
 app/views/admin/accounts/_buttons.html.haml   | 24 +++++++++----------
 .../admin/accounts/_local_account.html.haml   |  4 ++--
 3 files changed, 16 insertions(+), 28 deletions(-)

diff --git a/.haml-lint_todo.yml b/.haml-lint_todo.yml
index 3be2a3d49..29646f28e 100644
--- a/.haml-lint_todo.yml
+++ b/.haml-lint_todo.yml
@@ -1,33 +1,21 @@
 # This configuration was generated by
 # `haml-lint --auto-gen-config`
-# on 2023-10-26 09:32:34 -0400 using Haml-Lint version 0.51.0.
+# on 2023-12-15 11:02:19 -0500 using Haml-Lint version 0.52.0.
 # The point is for the user to remove these configuration records
 # one by one as the lints are removed from the code base.
 # Note that changes in the inspected code, or installation of new
 # versions of Haml-Lint, may require this file to be generated again.
 
 linters:
-  # Offense count: 16
+  # Offense count: 11
   LineLength:
     exclude:
-      - 'app/views/admin/account_actions/new.html.haml'
-      - 'app/views/admin/accounts/index.html.haml'
-      - 'app/views/admin/ip_blocks/new.html.haml'
       - 'app/views/admin/roles/_form.html.haml'
-      - 'app/views/admin/settings/discovery/show.html.haml'
       - 'app/views/auth/registrations/edit.html.haml'
       - 'app/views/auth/registrations/new.html.haml'
-      - 'app/views/filters/_filter_fields.html.haml'
       - 'app/views/media/player.html.haml'
       - 'app/views/settings/applications/_fields.html.haml'
       - 'app/views/settings/imports/index.html.haml'
       - 'app/views/settings/preferences/appearance/show.html.haml'
       - 'app/views/settings/preferences/notifications/show.html.haml'
       - 'app/views/settings/preferences/other/show.html.haml'
-
-  # Offense count: 9
-  RuboCop:
-    exclude:
-      - 'app/views/admin/accounts/_buttons.html.haml'
-      - 'app/views/admin/accounts/_local_account.html.haml'
-      - 'app/views/admin/roles/_form.html.haml'
diff --git a/app/views/admin/accounts/_buttons.html.haml b/app/views/admin/accounts/_buttons.html.haml
index 6eb141abc..2aaca8962 100644
--- a/app/views/admin/accounts/_buttons.html.haml
+++ b/app/views/admin/accounts/_buttons.html.haml
@@ -6,8 +6,8 @@
     %p.muted-hint= deletion_request.present? ? t('admin.accounts.suspension_reversible_hint_html', date: content_tag(:strong, l(deletion_request.due_at.to_date))) : t('admin.accounts.suspension_irreversible')
   = link_to t('admin.accounts.undo_suspension'), unsuspend_admin_account_path(account.id), method: :post, class: 'button' if can?(:unsuspend, account)
   = link_to t('admin.accounts.redownload'), redownload_admin_account_path(account.id), method: :post, class: 'button' if can?(:redownload, account) && account.suspension_origin_remote?
-  - if deletion_request.present?
-    = link_to t('admin.accounts.delete'), admin_account_path(account.id), method: :delete, class: 'button button--destructive', data: { confirm: t('admin.accounts.are_you_sure') } if can?(:destroy, account)
+  - if deletion_request.present? && can?(:destroy, account)
+    = link_to t('admin.accounts.delete'), admin_account_path(account.id), method: :delete, class: 'button button--destructive', data: { confirm: t('admin.accounts.are_you_sure') }
 - else
   .action-buttons
     %div
@@ -15,8 +15,8 @@
         = link_to t('admin.accounts.warn'), new_admin_account_action_path(account.id, type: 'none'), class: 'button' if can?(:warn, account)
         - if account.user_disabled?
           = link_to t('admin.accounts.enable'), enable_admin_account_path(account.id), method: :post, class: 'button' if can?(:enable, account.user)
-        - else
-          = link_to t('admin.accounts.disable'), new_admin_account_action_path(account.id, type: 'disable'), class: 'button' if can?(:disable, account.user)
+        - elsif can?(:disable, account.user)
+          = link_to t('admin.accounts.disable'), new_admin_account_action_path(account.id, type: 'disable'), class: 'button'
       - if account.sensitized?
         = link_to t('admin.accounts.undo_sensitized'), unsensitive_admin_account_path(account.id), method: :post, class: 'button' if can?(:unsensitive, account)
       - elsif !account.local? || account.user_approved?
@@ -29,13 +29,13 @@
         - if account.user_pending?
           = link_to t('admin.accounts.approve'), approve_admin_account_path(account.id), method: :post, data: { confirm: t('admin.accounts.are_you_sure') }, class: 'button' if can?(:approve, account.user)
           = link_to t('admin.accounts.reject'), reject_admin_account_path(account.id), method: :post, data: { confirm: t('admin.accounts.are_you_sure') }, class: 'button button--destructive' if can?(:reject, account.user)
-        - unless account.user_confirmed?
-          = link_to t('admin.accounts.confirm'), admin_account_confirmation_path(account.id), method: :post, class: 'button' if can?(:confirm, account.user)
-      - if !account.local? || account.user_approved?
-        = link_to t('admin.accounts.perform_full_suspension'), new_admin_account_action_path(account.id, type: 'suspend'), class: 'button' if can?(:suspend, account)
+        - if !account.user_confirmed? && can?(:confirm, account.user)
+          = link_to t('admin.accounts.confirm'), admin_account_confirmation_path(account.id), method: :post, class: 'button'
+      - if (!account.local? || account.user_approved?) && can?(:suspend, account)
+        = link_to t('admin.accounts.perform_full_suspension'), new_admin_account_action_path(account.id, type: 'suspend'), class: 'button'
     %div
       - if account.local?
-        - if !account.memorial? && account.user_approved?
-          = link_to t('admin.accounts.memorialize'), memorialize_admin_account_path(account.id), method: :post, data: { confirm: t('admin.accounts.are_you_sure') }, class: 'button button--destructive' if can?(:memorialize, account)
-      - else
-        = link_to t('admin.accounts.redownload'), redownload_admin_account_path(account.id), method: :post, class: 'button' if can?(:redownload, account)
+        - if !account.memorial? && account.user_approved? && can?(:memorialize, account)
+          = link_to t('admin.accounts.memorialize'), memorialize_admin_account_path(account.id), method: :post, data: { confirm: t('admin.accounts.are_you_sure') }, class: 'button button--destructive'
+      - elsif can?(:redownload, account)
+        = link_to t('admin.accounts.redownload'), redownload_admin_account_path(account.id), method: :post, class: 'button'
diff --git a/app/views/admin/accounts/_local_account.html.haml b/app/views/admin/accounts/_local_account.html.haml
index 4b361fc8d..82197cda4 100644
--- a/app/views/admin/accounts/_local_account.html.haml
+++ b/app/views/admin/accounts/_local_account.html.haml
@@ -47,8 +47,8 @@
     - else
       = t 'admin.accounts.security_measures.only_password'
   %td
-    - if account.user&.two_factor_enabled?
-      = table_link_to 'unlock', t('admin.accounts.disable_two_factor_authentication'), admin_user_two_factor_authentication_path(account.user.id), method: :delete if can?(:disable_2fa, account.user)
+    - if account.user&.two_factor_enabled? && can?(:disable_2fa, account.user)
+      = table_link_to 'unlock', t('admin.accounts.disable_two_factor_authentication'), admin_user_two_factor_authentication_path(account.user.id), method: :delete
 - if can?(:reset_password, account.user)
   %tr
     %td

From 1820bad646b6260c862ddc5e421e21821380d014 Mon Sep 17 00:00:00 2001
From: Matt Jankowski <matt@jankowski.online>
Date: Mon, 18 Dec 2023 05:26:09 -0500
Subject: [PATCH 12/15] Fix `Performance/StringIdentifierArgument` cop (#28399)

---
 app/helpers/application_helper.rb        |  2 +-
 app/models/account.rb                    |  4 ++--
 app/models/concerns/remotable.rb         | 16 ++++++++--------
 app/models/form/admin_settings.rb        | 14 +++++++-------
 spec/models/concerns/remotable_spec.rb   |  4 ++--
 spec/requests/omniauth_callbacks_spec.rb |  2 +-
 6 files changed, 21 insertions(+), 21 deletions(-)

diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index 135bbb0fd..4f7f66985 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -110,7 +110,7 @@ module ApplicationHelper
   def can?(action, record)
     return false if record.nil?
 
-    policy(record).public_send("#{action}?")
+    policy(record).public_send(:"#{action}?")
   end
 
   def fa_icon(icon, attributes = {})
diff --git a/app/models/account.rb b/app/models/account.rb
index 4119944e5..2145cfcb6 100644
--- a/app/models/account.rb
+++ b/app/models/account.rb
@@ -457,8 +457,8 @@ class Account < ApplicationRecord
     end
 
     def inverse_alias(key, original_key)
-      define_method("#{key}=") do |value|
-        public_send("#{original_key}=", !ActiveModel::Type::Boolean.new.cast(value))
+      define_method(:"#{key}=") do |value|
+        public_send(:"#{original_key}=", !ActiveModel::Type::Boolean.new.cast(value))
       end
 
       define_method(key) do
diff --git a/app/models/concerns/remotable.rb b/app/models/concerns/remotable.rb
index bd8b6f4eb..6118e204a 100644
--- a/app/models/concerns/remotable.rb
+++ b/app/models/concerns/remotable.rb
@@ -7,7 +7,7 @@ module Remotable
     def remotable_attachment(attachment_name, limit, suppress_errors: true, download_on_assign: true, attribute_name: nil)
       attribute_name ||= :"#{attachment_name}_remote_url"
 
-      define_method("download_#{attachment_name}!") do |url = nil|
+      define_method(:"download_#{attachment_name}!") do |url = nil|
         url ||= self[attribute_name]
 
         return if url.blank?
@@ -24,29 +24,29 @@ module Remotable
           Request.new(:get, url).perform do |response|
             raise Mastodon::UnexpectedResponseError, response unless (200...300).cover?(response.code)
 
-            public_send("#{attachment_name}=", ResponseWithLimit.new(response, limit))
+            public_send(:"#{attachment_name}=", ResponseWithLimit.new(response, limit))
           end
         rescue Mastodon::UnexpectedResponseError, HTTP::TimeoutError, HTTP::ConnectionError, OpenSSL::SSL::SSLError => e
           Rails.logger.debug { "Error fetching remote #{attachment_name}: #{e}" }
-          public_send("#{attachment_name}=", nil) if public_send("#{attachment_name}_file_name").present?
+          public_send(:"#{attachment_name}=", nil) if public_send(:"#{attachment_name}_file_name").present?
           raise e unless suppress_errors
         rescue Paperclip::Errors::NotIdentifiedByImageMagickError, Addressable::URI::InvalidURIError, Mastodon::HostValidationError, Mastodon::LengthValidationError, Paperclip::Error, Mastodon::DimensionsValidationError, Mastodon::StreamValidationError => e
           Rails.logger.debug { "Error fetching remote #{attachment_name}: #{e}" }
-          public_send("#{attachment_name}=", nil) if public_send("#{attachment_name}_file_name").present?
+          public_send(:"#{attachment_name}=", nil) if public_send(:"#{attachment_name}_file_name").present?
         end
 
         nil
       end
 
-      define_method("#{attribute_name}=") do |url|
-        return if self[attribute_name] == url && public_send("#{attachment_name}_file_name").present?
+      define_method(:"#{attribute_name}=") do |url|
+        return if self[attribute_name] == url && public_send(:"#{attachment_name}_file_name").present?
 
         self[attribute_name] = url if has_attribute?(attribute_name)
 
-        public_send("download_#{attachment_name}!", url) if download_on_assign
+        public_send(:"download_#{attachment_name}!", url) if download_on_assign
       end
 
-      alias_method("reset_#{attachment_name}!", "download_#{attachment_name}!")
+      alias_method(:"reset_#{attachment_name}!", "download_#{attachment_name}!")
     end
   end
 end
diff --git a/app/models/form/admin_settings.rb b/app/models/form/admin_settings.rb
index 7be026d85..cb37a5221 100644
--- a/app/models/form/admin_settings.rb
+++ b/app/models/form/admin_settings.rb
@@ -84,7 +84,7 @@ class Form::AdminSettings
 
   KEYS.each do |key|
     define_method(key) do
-      return instance_variable_get("@#{key}") if instance_variable_defined?("@#{key}")
+      return instance_variable_get(:"@#{key}") if instance_variable_defined?(:"@#{key}")
 
       stored_value = if UPLOAD_KEYS.include?(key)
                        SiteUpload.where(var: key).first_or_initialize(var: key)
@@ -94,12 +94,12 @@ class Form::AdminSettings
                        Setting.public_send(key)
                      end
 
-      instance_variable_set("@#{key}", stored_value)
+      instance_variable_set(:"@#{key}", stored_value)
     end
   end
 
   UPLOAD_KEYS.each do |key|
-    define_method("#{key}=") do |file|
+    define_method(:"#{key}=") do |file|
       value = public_send(key)
       value.file = file
     rescue Mastodon::DimensionsValidationError => e
@@ -114,13 +114,13 @@ class Form::AdminSettings
     return false unless errors.empty? && valid?
 
     KEYS.each do |key|
-      next unless instance_variable_defined?("@#{key}")
+      next unless instance_variable_defined?(:"@#{key}")
 
       if UPLOAD_KEYS.include?(key)
         public_send(key).save
       else
         setting = Setting.where(var: key).first_or_initialize(var: key)
-        setting.update(value: typecast_value(key, instance_variable_get("@#{key}")))
+        setting.update(value: typecast_value(key, instance_variable_get(:"@#{key}")))
       end
     end
   end
@@ -139,9 +139,9 @@ class Form::AdminSettings
 
   def validate_site_uploads
     UPLOAD_KEYS.each do |key|
-      next unless instance_variable_defined?("@#{key}")
+      next unless instance_variable_defined?(:"@#{key}")
 
-      upload = instance_variable_get("@#{key}")
+      upload = instance_variable_get(:"@#{key}")
       next if upload.valid?
 
       upload.errors.each do |error|
diff --git a/spec/models/concerns/remotable_spec.rb b/spec/models/concerns/remotable_spec.rb
index 9f6aeb7fb..097e6bf00 100644
--- a/spec/models/concerns/remotable_spec.rb
+++ b/spec/models/concerns/remotable_spec.rb
@@ -178,11 +178,11 @@ RSpec.describe Remotable do
 
             allow(foo).to receive(:public_send)
             foo.hoge_remote_url = url
-            expect(foo).to have_received(:public_send).with("download_#{hoge}!", url)
+            expect(foo).to have_received(:public_send).with(:"download_#{hoge}!", url)
 
             allow(foo).to receive(:public_send)
             foo.download_hoge!(url)
-            expect(foo).to have_received(:public_send).with("#{hoge}=", response_with_limit)
+            expect(foo).to have_received(:public_send).with(:"#{hoge}=", response_with_limit)
           end
         end
       end
diff --git a/spec/requests/omniauth_callbacks_spec.rb b/spec/requests/omniauth_callbacks_spec.rb
index 27aa5ec50..0d37c4114 100644
--- a/spec/requests/omniauth_callbacks_spec.rb
+++ b/spec/requests/omniauth_callbacks_spec.rb
@@ -4,7 +4,7 @@ require 'rails_helper'
 
 describe 'OmniAuth callbacks' do
   shared_examples 'omniauth provider callbacks' do |provider|
-    subject { post send "user_#{provider}_omniauth_callback_path" }
+    subject { post send :"user_#{provider}_omniauth_callback_path" }
 
     context 'with full information in response' do
       before do

From 0b42cf29790c00de64069bf99d25e289af2283da Mon Sep 17 00:00:00 2001
From: Matt Jankowski <matt@jankowski.online>
Date: Mon, 18 Dec 2023 07:21:45 -0500
Subject: [PATCH 13/15] Opt out of `Rails/NegateInclude` cop (#28370)

---
 .rubocop.yml      |  5 +++++
 .rubocop_todo.yml | 17 -----------------
 2 files changed, 5 insertions(+), 17 deletions(-)

diff --git a/.rubocop.yml b/.rubocop.yml
index 2da7e361c..61cb1164b 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -115,6 +115,11 @@ Rails/SkipsModelValidations:
 Rails/UnusedIgnoredColumns:
   Enabled: false
 
+# Reason: Prevailing style choice
+# https://docs.rubocop.org/rubocop-rails/cops_rails.html#railsnegateinclude
+Rails/NegateInclude:
+  Enabled: false
+
 # Reason: Some single letter camel case files shouldn't be split
 # https://docs.rubocop.org/rubocop-rspec/cops_rspec.html#rspecfilepath
 RSpec/FilePath:
diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
index 2fa3a1ef6..030f31110 100644
--- a/.rubocop_todo.yml
+++ b/.rubocop_todo.yml
@@ -119,23 +119,6 @@ Rails/LexicallyScopedActionFilter:
     - 'app/controllers/auth/passwords_controller.rb'
     - 'app/controllers/auth/registrations_controller.rb'
 
-# This cop supports unsafe autocorrection (--autocorrect-all).
-Rails/NegateInclude:
-  Exclude:
-    - 'app/controllers/concerns/signature_verification.rb'
-    - 'app/helpers/jsonld_helper.rb'
-    - 'app/lib/activitypub/activity/create.rb'
-    - 'app/lib/activitypub/activity/move.rb'
-    - 'app/lib/feed_manager.rb'
-    - 'app/lib/link_details_extractor.rb'
-    - 'app/models/concerns/attachmentable.rb'
-    - 'app/models/concerns/remotable.rb'
-    - 'app/models/custom_filter.rb'
-    - 'app/services/activitypub/process_status_update_service.rb'
-    - 'app/services/fetch_link_card_service.rb'
-    - 'app/workers/web/push_notification_worker.rb'
-    - 'lib/paperclip/color_extractor.rb'
-
 Rails/OutputSafety:
   Exclude:
     - 'config/initializers/simple_form.rb'

From b2ca71f7336a8855eca817d238c20943a6c84f5f Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Mon, 18 Dec 2023 13:41:22 +0100
Subject: [PATCH 14/15] Update dependency rubocop-performance to v1.20.0
 (#28395)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
---
 Gemfile.lock | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/Gemfile.lock b/Gemfile.lock
index 1ca1839ec..3b33402b2 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -679,9 +679,9 @@ GEM
       rubocop (~> 1.41)
     rubocop-factory_bot (2.24.0)
       rubocop (~> 1.33)
-    rubocop-performance (1.19.1)
-      rubocop (>= 1.7.0, < 2.0)
-      rubocop-ast (>= 0.4.0)
+    rubocop-performance (1.20.0)
+      rubocop (>= 1.48.1, < 2.0)
+      rubocop-ast (>= 1.30.0, < 2.0)
     rubocop-rails (2.23.0)
       activesupport (>= 4.2.0)
       rack (>= 1.1)

From af366f65ee7f96c7f08f325bae7be499e16c4f48 Mon Sep 17 00:00:00 2001
From: Matt Jankowski <matt@jankowski.online>
Date: Mon, 18 Dec 2023 07:41:37 -0500
Subject: [PATCH 15/15] Add spec coverage for `models/form/custom_emoji_batch`
 class (#28388)

---
 .../custom_emoji_category_fabricator.rb       |   5 +
 spec/models/form/custom_emoji_batch_spec.rb   | 118 ++++++++++++++++++
 2 files changed, 123 insertions(+)
 create mode 100644 spec/fabricators/custom_emoji_category_fabricator.rb
 create mode 100644 spec/models/form/custom_emoji_batch_spec.rb

diff --git a/spec/fabricators/custom_emoji_category_fabricator.rb b/spec/fabricators/custom_emoji_category_fabricator.rb
new file mode 100644
index 000000000..af41c9722
--- /dev/null
+++ b/spec/fabricators/custom_emoji_category_fabricator.rb
@@ -0,0 +1,5 @@
+# frozen_string_literal: true
+
+Fabricator(:custom_emoji_category) do
+  name { sequence(:name) { |i| "name_#{i}" } }
+end
diff --git a/spec/models/form/custom_emoji_batch_spec.rb b/spec/models/form/custom_emoji_batch_spec.rb
new file mode 100644
index 000000000..abeada5d5
--- /dev/null
+++ b/spec/models/form/custom_emoji_batch_spec.rb
@@ -0,0 +1,118 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+describe Form::CustomEmojiBatch do
+  describe '#save' do
+    subject { described_class.new({ current_account: account }.merge(options)) }
+
+    let(:options) { {} }
+    let(:account) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
+
+    context 'with empty custom_emoji_ids' do
+      let(:options) { { custom_emoji_ids: [] } }
+
+      it 'does nothing if custom_emoji_ids is empty' do
+        expect(subject.save).to be_nil
+      end
+    end
+
+    describe 'the update action' do
+      let(:custom_emoji) { Fabricate(:custom_emoji, category: Fabricate(:custom_emoji_category)) }
+      let(:custom_emoji_category) { Fabricate(:custom_emoji_category) }
+
+      context 'without anything to change' do
+        let(:options) { { action: 'update' } }
+
+        it 'silently exits without updating any custom emojis' do
+          expect { subject.save }.to_not change(Admin::ActionLog, :count)
+        end
+      end
+
+      context 'with a category_id' do
+        let(:options) { { action: 'update', custom_emoji_ids: [custom_emoji.id], category_id: custom_emoji_category.id } }
+
+        it 'updates the category of the emoji' do
+          subject.save
+
+          expect(custom_emoji.reload.category).to eq(custom_emoji_category)
+        end
+      end
+
+      context 'with a category_name' do
+        let(:options) { { action: 'update', custom_emoji_ids: [custom_emoji.id], category_name: custom_emoji_category.name } }
+
+        it 'updates the category of the emoji' do
+          subject.save
+
+          expect(custom_emoji.reload.category).to eq(custom_emoji_category)
+        end
+      end
+    end
+
+    describe 'the list action' do
+      let(:custom_emoji) { Fabricate(:custom_emoji, visible_in_picker: false) }
+      let(:options) { { action: 'list', custom_emoji_ids: [custom_emoji.id] } }
+
+      it 'updates the picker visibility of the emoji' do
+        subject.save
+
+        expect(custom_emoji.reload.visible_in_picker).to be(true)
+      end
+    end
+
+    describe 'the unlist action' do
+      let(:custom_emoji) { Fabricate(:custom_emoji, visible_in_picker: true) }
+      let(:options) { { action: 'unlist', custom_emoji_ids: [custom_emoji.id] } }
+
+      it 'updates the picker visibility of the emoji' do
+        subject.save
+
+        expect(custom_emoji.reload.visible_in_picker).to be(false)
+      end
+    end
+
+    describe 'the enable action' do
+      let(:custom_emoji) { Fabricate(:custom_emoji, disabled: true) }
+      let(:options) { { action: 'enable', custom_emoji_ids: [custom_emoji.id] } }
+
+      it 'updates the disabled value of the emoji' do
+        subject.save
+
+        expect(custom_emoji.reload).to_not be_disabled
+      end
+    end
+
+    describe 'the disable action' do
+      let(:custom_emoji) { Fabricate(:custom_emoji, visible_in_picker: false) }
+      let(:options) { { action: 'disable', custom_emoji_ids: [custom_emoji.id] } }
+
+      it 'updates the disabled value of the emoji' do
+        subject.save
+
+        expect(custom_emoji.reload).to be_disabled
+      end
+    end
+
+    describe 'the copy action' do
+      let(:custom_emoji) { Fabricate(:custom_emoji) }
+      let(:options) { { action: 'copy', custom_emoji_ids: [custom_emoji.id] } }
+
+      it 'makes a copy of the emoji' do
+        expect { subject.save }
+          .to change(CustomEmoji, :count).by(1)
+      end
+    end
+
+    describe 'the delete action' do
+      let(:custom_emoji) { Fabricate(:custom_emoji) }
+      let(:options) { { action: 'delete', custom_emoji_ids: [custom_emoji.id] } }
+
+      it 'destroys the emoji' do
+        subject.save
+
+        expect { custom_emoji.reload }.to raise_error(ActiveRecord::RecordNotFound)
+      end
+    end
+  end
+end