about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md54
-rw-r--r--app/controllers/custom_css_controller.rb2
-rw-r--r--app/controllers/manifests_controller.rb2
-rw-r--r--app/controllers/media_controller.rb2
-rw-r--r--app/controllers/media_proxy_controller.rb2
-rw-r--r--app/controllers/settings/notifications_controller.rb28
-rw-r--r--app/controllers/settings/preferences/appearance_controller.rb9
-rw-r--r--app/controllers/settings/preferences/notifications_controller.rb9
-rw-r--r--app/controllers/settings/preferences/other_controller.rb9
-rw-r--r--app/controllers/settings/preferences_controller.rb8
-rw-r--r--app/helpers/stream_entries_helper.rb4
-rw-r--r--app/javascript/core/public.js8
-rw-r--r--app/javascript/core/theme.yml2
-rw-r--r--app/javascript/flavours/glitch/actions/alerts.js3
-rw-r--r--app/javascript/flavours/glitch/actions/compose.js26
-rw-r--r--app/javascript/flavours/glitch/actions/conversations.js84
-rw-r--r--app/javascript/flavours/glitch/actions/statuses.js7
-rw-r--r--app/javascript/flavours/glitch/actions/streaming.js4
-rw-r--r--app/javascript/flavours/glitch/components/autosuggest_textarea.js55
-rw-r--r--app/javascript/flavours/glitch/components/avatar_composite.js104
-rw-r--r--app/javascript/flavours/glitch/components/display_name.js44
-rw-r--r--app/javascript/flavours/glitch/components/icon_with_badge.js20
-rw-r--r--app/javascript/flavours/glitch/components/status.js25
-rw-r--r--app/javascript/flavours/glitch/components/status_action_bar.js20
-rw-r--r--app/javascript/flavours/glitch/components/status_header.js82
-rw-r--r--app/javascript/flavours/glitch/components/status_icons.js6
-rw-r--r--app/javascript/flavours/glitch/containers/status_container.js15
-rw-r--r--app/javascript/flavours/glitch/features/compose/components/compose_form.js58
-rw-r--r--app/javascript/flavours/glitch/features/compose/components/navigation_bar.js2
-rw-r--r--app/javascript/flavours/glitch/features/compose/components/search.js13
-rw-r--r--app/javascript/flavours/glitch/features/compose/index.js12
-rw-r--r--app/javascript/flavours/glitch/features/direct_timeline/components/conversation.js64
-rw-r--r--app/javascript/flavours/glitch/features/direct_timeline/components/conversations_list.js73
-rw-r--r--app/javascript/flavours/glitch/features/direct_timeline/containers/conversation_container.js19
-rw-r--r--app/javascript/flavours/glitch/features/direct_timeline/containers/conversations_list_container.js15
-rw-r--r--app/javascript/flavours/glitch/features/direct_timeline/index.js96
-rw-r--r--app/javascript/flavours/glitch/features/follow_requests/index.js2
-rw-r--r--app/javascript/flavours/glitch/features/getting_started/index.js47
-rw-r--r--app/javascript/flavours/glitch/features/local_settings/page/index.js17
-rw-r--r--app/javascript/flavours/glitch/features/search/index.js17
-rw-r--r--app/javascript/flavours/glitch/features/status/index.js22
-rw-r--r--app/javascript/flavours/glitch/features/ui/components/boost_modal.js19
-rw-r--r--app/javascript/flavours/glitch/features/ui/components/columns_area.js48
-rw-r--r--app/javascript/flavours/glitch/features/ui/components/compose_panel.js16
-rw-r--r--app/javascript/flavours/glitch/features/ui/components/follow_requests_nav_link.js44
-rw-r--r--app/javascript/flavours/glitch/features/ui/components/link_footer.js36
-rw-r--r--app/javascript/flavours/glitch/features/ui/components/list_panel.js55
-rw-r--r--app/javascript/flavours/glitch/features/ui/components/navigation_panel.js32
-rw-r--r--app/javascript/flavours/glitch/features/ui/components/notifications_counter_icon.js9
-rw-r--r--app/javascript/flavours/glitch/features/ui/components/tabs_bar.js38
-rw-r--r--app/javascript/flavours/glitch/features/ui/containers/columns_area_container.js11
-rw-r--r--app/javascript/flavours/glitch/features/ui/index.js28
-rw-r--r--app/javascript/flavours/glitch/reducers/conversations.js102
-rw-r--r--app/javascript/flavours/glitch/reducers/index.js2
-rw-r--r--app/javascript/flavours/glitch/reducers/local_settings.js1
-rw-r--r--app/javascript/flavours/glitch/reducers/notifications.js2
-rw-r--r--app/javascript/flavours/glitch/reducers/settings.js1
-rw-r--r--app/javascript/flavours/glitch/styles/accounts.scss3
-rw-r--r--app/javascript/flavours/glitch/styles/components/accounts.scss12
-rw-r--r--app/javascript/flavours/glitch/styles/components/columns.scss155
-rw-r--r--app/javascript/flavours/glitch/styles/components/composer.scss15
-rw-r--r--app/javascript/flavours/glitch/styles/components/drawer.scss8
-rw-r--r--app/javascript/flavours/glitch/styles/components/index.scss133
-rw-r--r--app/javascript/flavours/glitch/styles/components/search.scss4
-rw-r--r--app/javascript/flavours/glitch/styles/components/single_column.scss232
-rw-r--r--app/javascript/flavours/glitch/styles/components/status.scss9
-rw-r--r--app/javascript/flavours/glitch/styles/forms.scss10
-rw-r--r--app/javascript/flavours/glitch/styles/mastodon-light/diff.scss7
-rw-r--r--app/javascript/flavours/glitch/styles/rtl.scss4
-rw-r--r--app/javascript/flavours/glitch/util/async-components.js4
-rw-r--r--app/javascript/flavours/glitch/util/initial_state.js1
-rw-r--r--app/javascript/flavours/glitch/util/is_mobile.js3
-rw-r--r--app/javascript/images/logo_full.svg2
-rw-r--r--app/javascript/mastodon/actions/alerts.js3
-rw-r--r--app/javascript/mastodon/components/autosuggest_textarea.js5
-rw-r--r--app/javascript/mastodon/components/status.js10
-rw-r--r--app/javascript/mastodon/components/status_content.js27
-rw-r--r--app/javascript/mastodon/features/compose/components/compose_form.js17
-rw-r--r--app/javascript/mastodon/features/compose/components/privacy_dropdown.js2
-rw-r--r--app/javascript/mastodon/features/compose/components/reply_indicator.js8
-rw-r--r--app/javascript/mastodon/features/list_timeline/index.js2
-rw-r--r--app/javascript/mastodon/features/lists/index.js2
-rw-r--r--app/javascript/mastodon/features/status/components/detailed_status.js5
-rw-r--r--app/javascript/mastodon/features/ui/components/boost_modal.js8
-rw-r--r--app/javascript/mastodon/features/ui/components/navigation_panel.js3
-rw-r--r--app/javascript/mastodon/locales/ar.json115
-rw-r--r--app/javascript/mastodon/locales/ast.json5
-rw-r--r--app/javascript/mastodon/locales/bg.json5
-rw-r--r--app/javascript/mastodon/locales/bn.json5
-rw-r--r--app/javascript/mastodon/locales/ca.json83
-rw-r--r--app/javascript/mastodon/locales/co.json5
-rw-r--r--app/javascript/mastodon/locales/cs.json2
-rw-r--r--app/javascript/mastodon/locales/cy.json105
-rw-r--r--app/javascript/mastodon/locales/da.json3
-rw-r--r--app/javascript/mastodon/locales/de.json127
-rw-r--r--app/javascript/mastodon/locales/defaultMessages.json4
-rw-r--r--app/javascript/mastodon/locales/el.json25
-rw-r--r--app/javascript/mastodon/locales/en.json1
-rw-r--r--app/javascript/mastodon/locales/eo.json9
-rw-r--r--app/javascript/mastodon/locales/es.json11
-rw-r--r--app/javascript/mastodon/locales/eu.json93
-rw-r--r--app/javascript/mastodon/locales/fa.json17
-rw-r--r--app/javascript/mastodon/locales/fi.json5
-rw-r--r--app/javascript/mastodon/locales/fr.json7
-rw-r--r--app/javascript/mastodon/locales/gl.json67
-rw-r--r--app/javascript/mastodon/locales/he.json5
-rw-r--r--app/javascript/mastodon/locales/hi.json3
-rw-r--r--app/javascript/mastodon/locales/hr.json5
-rw-r--r--app/javascript/mastodon/locales/hu.json5
-rw-r--r--app/javascript/mastodon/locales/hy.json5
-rw-r--r--app/javascript/mastodon/locales/id.json5
-rw-r--r--app/javascript/mastodon/locales/io.json5
-rw-r--r--app/javascript/mastodon/locales/it.json3
-rw-r--r--app/javascript/mastodon/locales/ja.json1
-rw-r--r--app/javascript/mastodon/locales/ka.json5
-rw-r--r--app/javascript/mastodon/locales/kk.json3
-rw-r--r--app/javascript/mastodon/locales/ko.json5
-rw-r--r--app/javascript/mastodon/locales/lt.json388
-rw-r--r--app/javascript/mastodon/locales/lv.json5
-rw-r--r--app/javascript/mastodon/locales/ms.json5
-rw-r--r--app/javascript/mastodon/locales/nl.json17
-rw-r--r--app/javascript/mastodon/locales/no.json5
-rw-r--r--app/javascript/mastodon/locales/oc.json3
-rw-r--r--app/javascript/mastodon/locales/pl.json17
-rw-r--r--app/javascript/mastodon/locales/pt-BR.json3
-rw-r--r--app/javascript/mastodon/locales/pt.json3
-rw-r--r--app/javascript/mastodon/locales/ro.json3
-rw-r--r--app/javascript/mastodon/locales/ru.json9
-rw-r--r--app/javascript/mastodon/locales/sk.json3
-rw-r--r--app/javascript/mastodon/locales/sl.json5
-rw-r--r--app/javascript/mastodon/locales/sq.json9
-rw-r--r--app/javascript/mastodon/locales/sr-Latn.json5
-rw-r--r--app/javascript/mastodon/locales/sr.json5
-rw-r--r--app/javascript/mastodon/locales/sv.json29
-rw-r--r--app/javascript/mastodon/locales/ta.json661
-rw-r--r--app/javascript/mastodon/locales/te.json3
-rw-r--r--app/javascript/mastodon/locales/th.json9
-rw-r--r--app/javascript/mastodon/locales/tr.json3
-rw-r--r--app/javascript/mastodon/locales/uk.json5
-rw-r--r--app/javascript/mastodon/locales/whitelist_de.json7
-rw-r--r--app/javascript/mastodon/locales/whitelist_lt.json2
-rw-r--r--app/javascript/mastodon/locales/zh-CN.json235
-rw-r--r--app/javascript/mastodon/locales/zh-HK.json5
-rw-r--r--app/javascript/mastodon/locales/zh-TW.json3
-rw-r--r--app/javascript/styles/mastodon-light/diff.scss376
-rw-r--r--app/javascript/styles/mastodon-light/variables.scss2
-rw-r--r--app/javascript/styles/mastodon/about.scss3
-rw-r--r--app/javascript/styles/mastodon/accounts.scss3
-rw-r--r--app/javascript/styles/mastodon/components.scss82
-rw-r--r--app/javascript/styles/mastodon/containers.scss6
-rw-r--r--app/javascript/styles/mastodon/forms.scss10
-rw-r--r--app/javascript/styles/mastodon/rtl.scss4
-rw-r--r--app/javascript/styles/mastodon/stream_entries.scss4
-rw-r--r--app/lib/activitypub/activity/delete.rb9
-rw-r--r--app/views/about/show.html.haml2
-rw-r--r--app/views/accounts/show.html.haml2
-rwxr-xr-xapp/views/layouts/application.html.haml1
-rw-r--r--app/views/layouts/auth.html.haml2
-rw-r--r--app/views/layouts/mailer.html.haml2
-rw-r--r--app/views/layouts/public.html.haml2
-rw-r--r--app/views/oauth/authorizations/show.html.haml7
-rw-r--r--app/views/settings/preferences/appearance/show.html.haml39
-rw-r--r--app/views/settings/preferences/notifications/show.html.haml (renamed from app/views/settings/notifications/show.html.haml)2
-rw-r--r--app/views/settings/preferences/other/show.html.haml44
-rw-r--r--app/views/settings/preferences/show.html.haml69
-rw-r--r--app/views/settings/profiles/show.html.haml2
-rw-r--r--app/views/stream_entries/_detailed_status.html.haml13
-rw-r--r--app/views/stream_entries/_simple_status.html.haml10
-rw-r--r--config/i18n-tasks.yml2
-rw-r--r--config/initializers/simple_form.rb10
-rw-r--r--config/locales/activerecord.ar.yml4
-rw-r--r--config/locales/activerecord.bg.yml1
-rw-r--r--config/locales/activerecord.bn.yml1
-rw-r--r--config/locales/activerecord.ca.yml5
-rw-r--r--config/locales/activerecord.da.yml3
-rw-r--r--config/locales/activerecord.de.yml6
-rw-r--r--config/locales/activerecord.el.yml2
-rw-r--r--config/locales/activerecord.eo.yml17
-rw-r--r--config/locales/activerecord.es.yml6
-rw-r--r--config/locales/activerecord.eu.yml4
-rw-r--r--config/locales/activerecord.fa.yml3
-rw-r--r--config/locales/activerecord.fi.yml1
-rw-r--r--config/locales/activerecord.gl.yml2
-rw-r--r--config/locales/activerecord.hr.yml1
-rw-r--r--config/locales/activerecord.hu.yml1
-rw-r--r--config/locales/activerecord.hy.yml1
-rw-r--r--config/locales/activerecord.io.yml1
-rw-r--r--config/locales/activerecord.ja.yml2
-rw-r--r--config/locales/activerecord.ko.yml17
-rw-r--r--config/locales/activerecord.lt.yml1
-rw-r--r--config/locales/activerecord.lv.yml1
-rw-r--r--config/locales/activerecord.ms.yml1
-rw-r--r--config/locales/activerecord.nl.yml2
-rw-r--r--config/locales/activerecord.pl.yml5
-rw-r--r--config/locales/activerecord.ro.yml1
-rw-r--r--config/locales/activerecord.sk.yml2
-rw-r--r--config/locales/activerecord.ta.yml1
-rw-r--r--config/locales/activerecord.te.yml1
-rw-r--r--config/locales/activerecord.zh-CN.yml4
-rw-r--r--config/locales/activerecord.zh-TW.yml1
-rw-r--r--config/locales/ar.yml274
-rw-r--r--config/locales/ast.yml56
-rw-r--r--config/locales/bg.yml32
-rw-r--r--config/locales/bn.yml17
-rw-r--r--config/locales/ca.yml47
-rw-r--r--config/locales/co.yml47
-rw-r--r--config/locales/cs.yml56
-rw-r--r--config/locales/cy.yml197
-rw-r--r--config/locales/da.yml41
-rw-r--r--config/locales/de.yml244
-rw-r--r--config/locales/devise.ar.yml41
-rw-r--r--config/locales/devise.bn.yml1
-rw-r--r--config/locales/devise.ca.yml16
-rw-r--r--config/locales/devise.cs.yml1
-rw-r--r--config/locales/devise.eo.yml3
-rw-r--r--config/locales/devise.es.yml8
-rw-r--r--config/locales/devise.eu.yml3
-rw-r--r--config/locales/devise.he.yml3
-rw-r--r--config/locales/devise.hr.yml10
-rw-r--r--config/locales/devise.hy.yml1
-rw-r--r--config/locales/devise.id.yml1
-rw-r--r--config/locales/devise.ja.yml1
-rw-r--r--config/locales/devise.ko.yml9
-rw-r--r--config/locales/devise.lt.yml1
-rw-r--r--config/locales/devise.lv.yml1
-rw-r--r--config/locales/devise.ms.yml1
-rw-r--r--config/locales/devise.nl.yml1
-rw-r--r--config/locales/devise.ro.yml1
-rw-r--r--config/locales/devise.sk.yml4
-rw-r--r--config/locales/devise.sr-Latn.yml1
-rw-r--r--config/locales/devise.sr.yml1
-rw-r--r--config/locales/devise.ta.yml1
-rw-r--r--config/locales/devise.te.yml1
-rw-r--r--config/locales/devise.th.yml43
-rw-r--r--config/locales/devise.zh-CN.yml10
-rw-r--r--config/locales/devise.zh-HK.yml1
-rw-r--r--config/locales/devise.zh-TW.yml1
-rw-r--r--config/locales/doorkeeper.ar.yml10
-rw-r--r--config/locales/doorkeeper.bg.yml3
-rw-r--r--config/locales/doorkeeper.bn.yml1
-rw-r--r--config/locales/doorkeeper.ca.yml24
-rw-r--r--config/locales/doorkeeper.cy.yml1
-rw-r--r--config/locales/doorkeeper.da.yml1
-rw-r--r--config/locales/doorkeeper.de.yml2
-rw-r--r--config/locales/doorkeeper.es.yml1
-rw-r--r--config/locales/doorkeeper.fa.yml14
-rw-r--r--config/locales/doorkeeper.fi.yml1
-rw-r--r--config/locales/doorkeeper.fr.yml1
-rw-r--r--config/locales/doorkeeper.he.yml1
-rw-r--r--config/locales/doorkeeper.hr.yml11
-rw-r--r--config/locales/doorkeeper.hu.yml4
-rw-r--r--config/locales/doorkeeper.hy.yml1
-rw-r--r--config/locales/doorkeeper.id.yml3
-rw-r--r--config/locales/doorkeeper.io.yml68
-rw-r--r--config/locales/doorkeeper.it.yml2
-rw-r--r--config/locales/doorkeeper.ka.yml1
-rw-r--r--config/locales/doorkeeper.kk.yml1
-rw-r--r--config/locales/doorkeeper.ko.yml131
-rw-r--r--config/locales/doorkeeper.lt.yml1
-rw-r--r--config/locales/doorkeeper.lv.yml1
-rw-r--r--config/locales/doorkeeper.ms.yml1
-rw-r--r--config/locales/doorkeeper.nl.yml1
-rw-r--r--config/locales/doorkeeper.no.yml1
-rw-r--r--config/locales/doorkeeper.pt.yml1
-rw-r--r--config/locales/doorkeeper.ro.yml2
-rw-r--r--config/locales/doorkeeper.ru.yml2
-rw-r--r--config/locales/doorkeeper.sk.yml1
-rw-r--r--config/locales/doorkeeper.sv.yml1
-rw-r--r--config/locales/doorkeeper.ta.yml1
-rw-r--r--config/locales/doorkeeper.te.yml1
-rw-r--r--config/locales/doorkeeper.th.yml65
-rw-r--r--config/locales/doorkeeper.uk.yml2
-rw-r--r--config/locales/doorkeeper.zh-CN.yml25
-rw-r--r--config/locales/doorkeeper.zh-HK.yml1
-rw-r--r--config/locales/doorkeeper.zh-TW.yml1
-rw-r--r--config/locales/el.yml55
-rw-r--r--config/locales/en.yml11
-rw-r--r--config/locales/en_GB.yml3
-rw-r--r--config/locales/eo.yml49
-rw-r--r--config/locales/es.yml115
-rw-r--r--config/locales/eu.yml144
-rw-r--r--config/locales/fa.yml156
-rw-r--r--config/locales/fi.yml53
-rw-r--r--config/locales/fr.yml29
-rw-r--r--config/locales/gl.yml57
-rw-r--r--config/locales/he.yml39
-rw-r--r--config/locales/hr.yml42
-rw-r--r--config/locales/hu.yml62
-rw-r--r--config/locales/hy.yml17
-rw-r--r--config/locales/id.yml49
-rw-r--r--config/locales/io.yml125
-rw-r--r--config/locales/it.yml79
-rw-r--r--config/locales/ja.yml47
-rw-r--r--config/locales/ka.yml34
-rw-r--r--config/locales/kk.yml33
-rw-r--r--config/locales/ko.yml54
-rw-r--r--config/locales/lt.yml112
-rw-r--r--config/locales/lv.yml18
-rw-r--r--config/locales/ms.yml33
-rw-r--r--config/locales/nl.yml44
-rw-r--r--config/locales/no.yml62
-rw-r--r--config/locales/oc.yml138
-rw-r--r--config/locales/pl.yml65
-rw-r--r--config/locales/pt-BR.yml87
-rw-r--r--config/locales/pt.yml80
-rw-r--r--config/locales/ro.yml19
-rw-r--r--config/locales/ru.yml29
-rw-r--r--config/locales/simple_form.ar.yml40
-rw-r--r--config/locales/simple_form.ast.yml4
-rw-r--r--config/locales/simple_form.bg.yml1
-rw-r--r--config/locales/simple_form.bn.yml1
-rw-r--r--config/locales/simple_form.ca.yml10
-rw-r--r--config/locales/simple_form.co.yml7
-rw-r--r--config/locales/simple_form.cs.yml5
-rw-r--r--config/locales/simple_form.cy.yml7
-rw-r--r--config/locales/simple_form.da.yml4
-rw-r--r--config/locales/simple_form.de.yml77
-rw-r--r--config/locales/simple_form.el.yml10
-rw-r--r--config/locales/simple_form.en.yml5
-rw-r--r--config/locales/simple_form.en_GB.yml2
-rw-r--r--config/locales/simple_form.eo.yml10
-rw-r--r--config/locales/simple_form.es.yml25
-rw-r--r--config/locales/simple_form.eu.yml10
-rw-r--r--config/locales/simple_form.fa.yml3
-rw-r--r--config/locales/simple_form.fi.yml3
-rw-r--r--config/locales/simple_form.fr.yml9
-rw-r--r--config/locales/simple_form.gl.yml10
-rw-r--r--config/locales/simple_form.he.yml2
-rw-r--r--config/locales/simple_form.hr.yml4
-rw-r--r--config/locales/simple_form.hu.yml2
-rw-r--r--config/locales/simple_form.hy.yml1
-rw-r--r--config/locales/simple_form.id.yml5
-rw-r--r--config/locales/simple_form.io.yml6
-rw-r--r--config/locales/simple_form.it.yml9
-rw-r--r--config/locales/simple_form.ja.yml8
-rw-r--r--config/locales/simple_form.ka.yml3
-rw-r--r--config/locales/simple_form.kk.yml2
-rw-r--r--config/locales/simple_form.ko.yml6
-rw-r--r--config/locales/simple_form.lt.yml1
-rw-r--r--config/locales/simple_form.lv.yml1
-rw-r--r--config/locales/simple_form.ms.yml1
-rw-r--r--config/locales/simple_form.nl.yml5
-rw-r--r--config/locales/simple_form.no.yml4
-rw-r--r--config/locales/simple_form.oc.yml5
-rw-r--r--config/locales/simple_form.pl.yml12
-rw-r--r--config/locales/simple_form.pt-BR.yml7
-rw-r--r--config/locales/simple_form.pt.yml5
-rw-r--r--config/locales/simple_form.ro.yml4
-rw-r--r--config/locales/simple_form.ru.yml10
-rw-r--r--config/locales/simple_form.sk.yml22
-rw-r--r--config/locales/simple_form.sl.yml4
-rw-r--r--config/locales/simple_form.sq.yml6
-rw-r--r--config/locales/simple_form.sr-Latn.yml3
-rw-r--r--config/locales/simple_form.sr.yml3
-rw-r--r--config/locales/simple_form.sv.yml5
-rw-r--r--config/locales/simple_form.ta.yml1
-rw-r--r--config/locales/simple_form.te.yml1
-rw-r--r--config/locales/simple_form.th.yml3
-rw-r--r--config/locales/simple_form.tr.yml1
-rw-r--r--config/locales/simple_form.uk.yml1
-rw-r--r--config/locales/simple_form.zh-CN.yml65
-rw-r--r--config/locales/simple_form.zh-HK.yml3
-rw-r--r--config/locales/simple_form.zh-TW.yml3
-rw-r--r--config/locales/sk.yml124
-rw-r--r--config/locales/sl.yml22
-rw-r--r--config/locales/sq.yml89
-rw-r--r--config/locales/sr-Latn.rb3
-rw-r--r--config/locales/sr-Latn.yml67
-rw-r--r--config/locales/sr.rb3
-rw-r--r--config/locales/sr.yml48
-rw-r--r--config/locales/sv.yml71
-rw-r--r--config/locales/ta.yml17
-rw-r--r--config/locales/te.yml19
-rw-r--r--config/locales/th.yml57
-rw-r--r--config/locales/tr.yml35
-rw-r--r--config/locales/uk.yml58
-rw-r--r--config/locales/zh-CN.yml60
-rw-r--r--config/locales/zh-HK.yml59
-rw-r--r--config/locales/zh-TW.yml40
-rw-r--r--config/navigation.rb6
-rw-r--r--config/routes.rb15
-rw-r--r--crowdin.yml20
-rw-r--r--lib/mastodon/emoji_cli.rb4
-rw-r--r--lib/mastodon/version.rb4
-rw-r--r--spec/controllers/settings/preferences/notifications_controller_spec.rb (renamed from spec/controllers/settings/notifications_controller_spec.rb)4
-rw-r--r--spec/controllers/settings/preferences/other_controller_spec.rb (renamed from spec/controllers/settings/preferences_controller_spec.rb)6
386 files changed, 5671 insertions, 4360 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index f183b6f5a..c89f35cdf 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,60 @@ Changelog
 
 All notable changes to this project will be documented in this file.
 
+## [2.9.0] - 2019-06-13
+### Added
+
+- **Add single-column mode in web UI** ([Gargron](https://github.com/tootsuite/mastodon/pull/10807), [Gargron](https://github.com/tootsuite/mastodon/pull/10848), [Gargron](https://github.com/tootsuite/mastodon/pull/11003), [Gargron](https://github.com/tootsuite/mastodon/pull/10961), [Hanage999](https://github.com/tootsuite/mastodon/pull/10915), [noellabo](https://github.com/tootsuite/mastodon/pull/10917), [abcang](https://github.com/tootsuite/mastodon/pull/10859), [Gargron](https://github.com/tootsuite/mastodon/pull/10820), [Gargron](https://github.com/tootsuite/mastodon/pull/10835), [Gargron](https://github.com/tootsuite/mastodon/pull/10809), [Gargron](https://github.com/tootsuite/mastodon/pull/10963), [noellabo](https://github.com/tootsuite/mastodon/pull/10883), [Hanage999](https://github.com/tootsuite/mastodon/pull/10839))
+- Add waiting time to the list of pending accounts in admin UI ([Gargron](https://github.com/tootsuite/mastodon/pull/10985))
+- Add a keyboard shortcut to hide/show media in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/10647), [Gargron](https://github.com/tootsuite/mastodon/pull/10838), [ThibG](https://github.com/tootsuite/mastodon/pull/10872))
+- Add `account_id` param to `GET /api/v1/notifications` ([pwoolcoc](https://github.com/tootsuite/mastodon/pull/10796))
+- Add confirmation modal for unboosting toots in web UI ([aurelien-reeves](https://github.com/tootsuite/mastodon/pull/10287))
+- Add emoji suggestions to content warning and poll option fields in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/10555))
+- Add `source` attribute to response of `DELETE /api/v1/statuses/:id` ([ThibG](https://github.com/tootsuite/mastodon/pull/10669))
+- Add some caching for HTML versions of public status pages ([ThibG](https://github.com/tootsuite/mastodon/pull/10701))
+- Add button to conveniently copy OAuth code ([ThibG](https://github.com/tootsuite/mastodon/pull/11065))
+
+### Changed
+
+- **Change default layout to single column in web UI** ([Gargron](https://github.com/tootsuite/mastodon/pull/10847))
+- **Change light theme** ([Gargron](https://github.com/tootsuite/mastodon/pull/10992), [Gargron](https://github.com/tootsuite/mastodon/pull/10996), [yuzulabo](https://github.com/tootsuite/mastodon/pull/10754), [Gargron](https://github.com/tootsuite/mastodon/pull/10845))
+- **Change preferences page into appearance, notifications, and other** ([Gargron](https://github.com/tootsuite/mastodon/pull/10977), [Gargron](https://github.com/tootsuite/mastodon/pull/10988))
+- Change priority of delete activity forwards for replies and reblogs ([Gargron](https://github.com/tootsuite/mastodon/pull/11002))
+- Change Mastodon logo to use primary text color of the given theme ([Gargron](https://github.com/tootsuite/mastodon/pull/10994))
+- Change reblogs counter to be updated when boosted privately ([Gargron](https://github.com/tootsuite/mastodon/pull/10964))
+- Change bio limit from 160 to 500 characters ([trwnh](https://github.com/tootsuite/mastodon/pull/10790))
+- Change API rate limiting to reduce allowed unauthenticated requests ([ThibG](https://github.com/tootsuite/mastodon/pull/10860), [hinaloe](https://github.com/tootsuite/mastodon/pull/10868), [mayaeh](https://github.com/tootsuite/mastodon/pull/10867))
+- Change help text of `tootctl emoji import` command to specify a gzipped TAR archive is required ([dariusk](https://github.com/tootsuite/mastodon/pull/11000))
+- Change web UI to hide poll options behind content warnings ([ThibG](https://github.com/tootsuite/mastodon/pull/10983))
+- Change silencing to ensure local effects and remote effects are the same for silenced local users ([ThibG](https://github.com/tootsuite/mastodon/pull/10575))
+- Change `tootctl domains purge` to remove custom emoji as well ([Kjwon15](https://github.com/tootsuite/mastodon/pull/10721))
+- Change Docker image to keep `apt` working ([SuperSandro2000](https://github.com/tootsuite/mastodon/pull/10830))
+
+### Removed
+
+- Remove `dist-upgrade` from Docker image ([SuperSandro2000](https://github.com/tootsuite/mastodon/pull/10822))
+
+### Fixed
+
+- Fix RTL layout not being RTL within the columns area in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/10990))
+- Fix display of alternative text when a media attachment is not available in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/10981))
+- Fix not being able to directly switch between list timelines in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/10973))
+- Fix media sensitivity not being maintained in delete & redraft in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/10980))
+- Fix emoji picker being always displayed in web UI ([noellabo](https://github.com/tootsuite/mastodon/pull/10979), [yuzulabo](https://github.com/tootsuite/mastodon/pull/10801), [wcpaez](https://github.com/tootsuite/mastodon/pull/10978))
+- Fix potential private status leak through caching ([ThibG](https://github.com/tootsuite/mastodon/pull/10969))
+- Fix refreshing featured toots when the new collection is empty in web UI ([ThibG](https://github.com/tootsuite/mastodon/pull/10971))
+- Fix undoing domain block also undoing individual moderation on users from before the domain block ([ThibG](https://github.com/tootsuite/mastodon/pull/10660))
+- Fix time not being local in the audit log ([yuzulabo](https://github.com/tootsuite/mastodon/pull/10751))
+- Fix statuses removed by moderation re-appearing on subsequent fetches ([Kjwon15](https://github.com/tootsuite/mastodon/pull/10732))
+- Fix misattribution of inlined announces if `attributedTo` isn't present in ActivityPub ([ThibG](https://github.com/tootsuite/mastodon/pull/10967))
+- Fix `GET /api/v1/polls/:id` not requiring authentication for non-public polls ([Gargron](https://github.com/tootsuite/mastodon/pull/10960))
+- Fix handling of blank poll options in ActivityPub ([ThibG](https://github.com/tootsuite/mastodon/pull/10946))
+- Fix avatar preview aspect ratio on edit profile page ([Kjwon15](https://github.com/tootsuite/mastodon/pull/10931))
+- Fix web push notifications not being sent for polls ([ThibG](https://github.com/tootsuite/mastodon/pull/10864))
+- Fix cut off letters in last paragraph of statuses in web UI ([ariasuni](https://github.com/tootsuite/mastodon/pull/10821))
+- Fix list not being automatically unpinned when it returns 404 in web UI ([Gargron](https://github.com/tootsuite/mastodon/pull/11045))
+- Fix login sometimes redirecting to paths that are not pages ([Gargron](https://github.com/tootsuite/mastodon/pull/11019))
+
 ## [2.8.4] - 2019-05-24
 ### Fixed
 
diff --git a/app/controllers/custom_css_controller.rb b/app/controllers/custom_css_controller.rb
index be768c089..6e80feaf8 100644
--- a/app/controllers/custom_css_controller.rb
+++ b/app/controllers/custom_css_controller.rb
@@ -1,6 +1,8 @@
 # frozen_string_literal: true
 
 class CustomCssController < ApplicationController
+  skip_before_action :store_current_location
+
   before_action :set_cache_headers
 
   def show
diff --git a/app/controllers/manifests_controller.rb b/app/controllers/manifests_controller.rb
index ac267c229..332d845d8 100644
--- a/app/controllers/manifests_controller.rb
+++ b/app/controllers/manifests_controller.rb
@@ -1,6 +1,8 @@
 # frozen_string_literal: true
 
 class ManifestsController < ApplicationController
+  skip_before_action :store_current_location
+
   def show
     render json: InstancePresenter.new, serializer: ManifestSerializer
   end
diff --git a/app/controllers/media_controller.rb b/app/controllers/media_controller.rb
index 8e1624ce1..a245db2d1 100644
--- a/app/controllers/media_controller.rb
+++ b/app/controllers/media_controller.rb
@@ -3,6 +3,8 @@
 class MediaController < ApplicationController
   include Authorization
 
+  skip_before_action :store_current_location
+
   before_action :set_media_attachment
   before_action :verify_permitted_status!
 
diff --git a/app/controllers/media_proxy_controller.rb b/app/controllers/media_proxy_controller.rb
index d820b257e..950cf6d09 100644
--- a/app/controllers/media_proxy_controller.rb
+++ b/app/controllers/media_proxy_controller.rb
@@ -3,6 +3,8 @@
 class MediaProxyController < ApplicationController
   include RoutingHelper
 
+  skip_before_action :store_current_location
+
   def show
     RedisLock.acquire(lock_options) do |lock|
       if lock.acquired?
diff --git a/app/controllers/settings/notifications_controller.rb b/app/controllers/settings/notifications_controller.rb
deleted file mode 100644
index 7d7e237fb..000000000
--- a/app/controllers/settings/notifications_controller.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-# frozen_string_literal: true
-
-class Settings::NotificationsController < Settings::BaseController
-  def show; end
-
-  def update
-    user_settings.update(user_settings_params.to_h)
-
-    if current_user.save
-      redirect_to settings_notifications_path, notice: I18n.t('generic.changes_saved_msg')
-    else
-      render :show
-    end
-  end
-
-  private
-
-  def user_settings
-    UserSettingsDecorator.new(current_user)
-  end
-
-  def user_settings_params
-    params.require(:user).permit(
-      notification_emails: %i(follow follow_request reblog favourite mention digest report pending_account),
-      interactions: %i(must_be_follower must_be_following must_be_following_dm)
-    )
-  end
-end
diff --git a/app/controllers/settings/preferences/appearance_controller.rb b/app/controllers/settings/preferences/appearance_controller.rb
new file mode 100644
index 000000000..80ea57bd2
--- /dev/null
+++ b/app/controllers/settings/preferences/appearance_controller.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+class Settings::Preferences::AppearanceController < Settings::PreferencesController
+  private
+
+  def after_update_redirect_path
+    settings_preferences_appearance_path
+  end
+end
diff --git a/app/controllers/settings/preferences/notifications_controller.rb b/app/controllers/settings/preferences/notifications_controller.rb
new file mode 100644
index 000000000..a16ae6a67
--- /dev/null
+++ b/app/controllers/settings/preferences/notifications_controller.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+class Settings::Preferences::NotificationsController < Settings::PreferencesController
+  private
+
+  def after_update_redirect_path
+    settings_preferences_notifications_path
+  end
+end
diff --git a/app/controllers/settings/preferences/other_controller.rb b/app/controllers/settings/preferences/other_controller.rb
new file mode 100644
index 000000000..07eb89a76
--- /dev/null
+++ b/app/controllers/settings/preferences/other_controller.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+class Settings::Preferences::OtherController < Settings::PreferencesController
+  private
+
+  def after_update_redirect_path
+    settings_preferences_other_path
+  end
+end
diff --git a/app/controllers/settings/preferences_controller.rb b/app/controllers/settings/preferences_controller.rb
index a713ee558..5103cc50e 100644
--- a/app/controllers/settings/preferences_controller.rb
+++ b/app/controllers/settings/preferences_controller.rb
@@ -8,7 +8,7 @@ class Settings::PreferencesController < Settings::BaseController
 
     if current_user.update(user_params)
       I18n.locale = current_user.locale
-      redirect_to settings_preferences_path, notice: I18n.t('generic.changes_saved_msg')
+      redirect_to after_update_redirect_path, notice: I18n.t('generic.changes_saved_msg')
     else
       render :show
     end
@@ -16,6 +16,10 @@ class Settings::PreferencesController < Settings::BaseController
 
   private
 
+  def after_update_redirect_path
+    settings_preferences_path
+  end
+
   def user_settings
     UserSettingsDecorator.new(current_user)
   end
@@ -49,7 +53,7 @@ class Settings::PreferencesController < Settings::BaseController
       :setting_advanced_layout,
       :setting_default_content_type,
       notification_emails: %i(follow follow_request reblog favourite mention digest report pending_account),
-      interactions: %i(must_be_follower must_be_following)
+      interactions: %i(must_be_follower must_be_following must_be_following_dm)
     )
   end
 end
diff --git a/app/helpers/stream_entries_helper.rb b/app/helpers/stream_entries_helper.rb
index e59c39655..6a71f1c02 100644
--- a/app/helpers/stream_entries_helper.rb
+++ b/app/helpers/stream_entries_helper.rb
@@ -38,6 +38,10 @@ module StreamEntriesHelper
     content_tag(:svg, tag(:use, 'xlink:href' => '#mastodon-svg-logo'), 'viewBox' => '0 0 216.4144 232.00976')
   end
 
+  def svg_logo_full
+    content_tag(:svg, tag(:use, 'xlink:href' => '#mastodon-svg-logo-full'), 'viewBox' => '0 0 713.35878 175.8678')
+  end
+
   def account_badge(account, all: false)
     if account.bot?
       content_tag(:div, content_tag(:div, t('accounts.roles.bot'), class: 'account-role bot'), class: 'roles')
diff --git a/app/javascript/core/public.js b/app/javascript/core/public.js
index 4be75647a..33b7a207d 100644
--- a/app/javascript/core/public.js
+++ b/app/javascript/core/public.js
@@ -14,15 +14,15 @@ delegate(document, '.webapp-btn', 'click', ({ target, button }) => {
   return false;
 });
 
-delegate(document, '.status__content__spoiler-link', 'click', ({ target }) => {
-  const contentEl = target.parentNode.parentNode.querySelector('.e-content');
+delegate(document, '.status__content__spoiler-link', 'click', function() {
+  const contentEl = this.parentNode.parentNode.querySelector('.e-content');
 
   if (contentEl.style.display === 'block') {
     contentEl.style.display = 'none';
-    target.parentNode.style.marginBottom = 0;
+    this.parentNode.style.marginBottom = 0;
   } else {
     contentEl.style.display = 'block';
-    target.parentNode.style.marginBottom = null;
+    this.parentNode.style.marginBottom = null;
   }
 
   return false;
diff --git a/app/javascript/core/theme.yml b/app/javascript/core/theme.yml
index 32787bcab..dc641772c 100644
--- a/app/javascript/core/theme.yml
+++ b/app/javascript/core/theme.yml
@@ -3,7 +3,7 @@
 pack:
   about:
   admin: admin.js
-  auth:
+  auth: settings.js
   common:
     filename: common.js
     stylesheet: true
diff --git a/app/javascript/flavours/glitch/actions/alerts.js b/app/javascript/flavours/glitch/actions/alerts.js
index b2c7ab76a..ef2500e7b 100644
--- a/app/javascript/flavours/glitch/actions/alerts.js
+++ b/app/javascript/flavours/glitch/actions/alerts.js
@@ -8,6 +8,7 @@ const messages = defineMessages({
 export const ALERT_SHOW    = 'ALERT_SHOW';
 export const ALERT_DISMISS = 'ALERT_DISMISS';
 export const ALERT_CLEAR   = 'ALERT_CLEAR';
+export const ALERT_NOOP    = 'ALERT_NOOP';
 
 export function dismissAlert(alert) {
   return {
@@ -36,7 +37,7 @@ export function showAlertForError(error) {
 
     if (status === 404 || status === 410) {
       // Skip these errors as they are reflected in the UI
-      return {};
+      return { type: ALERT_NOOP };
     }
 
     let message = statusText;
diff --git a/app/javascript/flavours/glitch/actions/compose.js b/app/javascript/flavours/glitch/actions/compose.js
index 2fb97fa17..69cc6827f 100644
--- a/app/javascript/flavours/glitch/actions/compose.js
+++ b/app/javascript/flavours/glitch/actions/compose.js
@@ -68,6 +68,14 @@ const messages = defineMessages({
   uploadErrorPoll:  { id: 'upload_error.poll', defaultMessage: 'File upload not allowed with polls.' },
 });
 
+const COMPOSE_PANEL_BREAKPOINT = 600 + (285 * 1) + (10 * 1);
+
+export const ensureComposeIsVisible = (getState, routerHistory) => {
+  if (!getState().getIn(['compose', 'mounted']) && window.innerWidth < COMPOSE_PANEL_BREAKPOINT) {
+    routerHistory.push('/statuses/new');
+  }
+};
+
 export function changeCompose(text) {
   return {
     type: COMPOSE_CHANGE,
@@ -81,16 +89,14 @@ export function cycleElefriendCompose() {
   };
 };
 
-export function replyCompose(status, router) {
+export function replyCompose(status, routerHistory) {
   return (dispatch, getState) => {
     dispatch({
       type: COMPOSE_REPLY,
       status: status,
     });
 
-    if (router && !getState().getIn(['compose', 'mounted'])) {
-      router.push('/statuses/new');
-    }
+    ensureComposeIsVisible(getState, routerHistory);
   };
 };
 
@@ -106,29 +112,25 @@ export function resetCompose() {
   };
 };
 
-export function mentionCompose(account, router) {
+export function mentionCompose(account, routerHistory) {
   return (dispatch, getState) => {
     dispatch({
       type: COMPOSE_MENTION,
       account: account,
     });
 
-    if (!getState().getIn(['compose', 'mounted'])) {
-      router.push('/statuses/new');
-    }
+    ensureComposeIsVisible(getState, routerHistory);
   };
 };
 
-export function directCompose(account, router) {
+export function directCompose(account, routerHistory) {
   return (dispatch, getState) => {
     dispatch({
       type: COMPOSE_DIRECT,
       account: account,
     });
 
-    if (!getState().getIn(['compose', 'mounted'])) {
-      router.push('/statuses/new');
-    }
+    ensureComposeIsVisible(getState, routerHistory);
   };
 };
 
diff --git a/app/javascript/flavours/glitch/actions/conversations.js b/app/javascript/flavours/glitch/actions/conversations.js
new file mode 100644
index 000000000..856f8f10f
--- /dev/null
+++ b/app/javascript/flavours/glitch/actions/conversations.js
@@ -0,0 +1,84 @@
+import api, { getLinks } from 'flavours/glitch/util/api';
+import {
+  importFetchedAccounts,
+  importFetchedStatuses,
+  importFetchedStatus,
+} from './importer';
+
+export const CONVERSATIONS_MOUNT   = 'CONVERSATIONS_MOUNT';
+export const CONVERSATIONS_UNMOUNT = 'CONVERSATIONS_UNMOUNT';
+
+export const CONVERSATIONS_FETCH_REQUEST = 'CONVERSATIONS_FETCH_REQUEST';
+export const CONVERSATIONS_FETCH_SUCCESS = 'CONVERSATIONS_FETCH_SUCCESS';
+export const CONVERSATIONS_FETCH_FAIL    = 'CONVERSATIONS_FETCH_FAIL';
+export const CONVERSATIONS_UPDATE        = 'CONVERSATIONS_UPDATE';
+
+export const CONVERSATIONS_READ = 'CONVERSATIONS_READ';
+
+export const mountConversations = () => ({
+  type: CONVERSATIONS_MOUNT,
+});
+
+export const unmountConversations = () => ({
+  type: CONVERSATIONS_UNMOUNT,
+});
+
+export const markConversationRead = conversationId => (dispatch, getState) => {
+  dispatch({
+    type: CONVERSATIONS_READ,
+    id: conversationId,
+  });
+
+  api(getState).post(`/api/v1/conversations/${conversationId}/read`);
+};
+
+export const expandConversations = ({ maxId } = {}) => (dispatch, getState) => {
+  dispatch(expandConversationsRequest());
+
+  const params = { max_id: maxId };
+
+  if (!maxId) {
+    params.since_id = getState().getIn(['conversations', 'items', 0, 'last_status']);
+  }
+
+  const isLoadingRecent = !!params.since_id;
+
+  api(getState).get('/api/v1/conversations', { params })
+    .then(response => {
+      const next = getLinks(response).refs.find(link => link.rel === 'next');
+
+      dispatch(importFetchedAccounts(response.data.reduce((aggr, item) => aggr.concat(item.accounts), [])));
+      dispatch(importFetchedStatuses(response.data.map(item => item.last_status).filter(x => !!x)));
+      dispatch(expandConversationsSuccess(response.data, next ? next.uri : null, isLoadingRecent));
+    })
+    .catch(err => dispatch(expandConversationsFail(err)));
+};
+
+export const expandConversationsRequest = () => ({
+  type: CONVERSATIONS_FETCH_REQUEST,
+});
+
+export const expandConversationsSuccess = (conversations, next, isLoadingRecent) => ({
+  type: CONVERSATIONS_FETCH_SUCCESS,
+  conversations,
+  next,
+  isLoadingRecent,
+});
+
+export const expandConversationsFail = error => ({
+  type: CONVERSATIONS_FETCH_FAIL,
+  error,
+});
+
+export const updateConversations = conversation => dispatch => {
+  dispatch(importFetchedAccounts(conversation.accounts));
+
+  if (conversation.last_status) {
+    dispatch(importFetchedStatus(conversation.last_status));
+  }
+
+  dispatch({
+    type: CONVERSATIONS_UPDATE,
+    conversation,
+  });
+};
diff --git a/app/javascript/flavours/glitch/actions/statuses.js b/app/javascript/flavours/glitch/actions/statuses.js
index 7e22a7f98..4d2bda78b 100644
--- a/app/javascript/flavours/glitch/actions/statuses.js
+++ b/app/javascript/flavours/glitch/actions/statuses.js
@@ -2,6 +2,7 @@ import api from 'flavours/glitch/util/api';
 
 import { deleteFromTimelines } from './timelines';
 import { importFetchedStatus, importFetchedStatuses } from './importer';
+import { ensureComposeIsVisible } from './compose';
 
 export const STATUS_FETCH_REQUEST = 'STATUS_FETCH_REQUEST';
 export const STATUS_FETCH_SUCCESS = 'STATUS_FETCH_SUCCESS';
@@ -80,7 +81,7 @@ export function redraft(status, raw_text, content_type) {
   };
 };
 
-export function deleteStatus(id, router, withRedraft = false) {
+export function deleteStatus(id, routerHistory, withRedraft = false) {
   return (dispatch, getState) => {
     let status = getState().getIn(['statuses', id]);
 
@@ -97,9 +98,7 @@ export function deleteStatus(id, router, withRedraft = false) {
       if (withRedraft) {
         dispatch(redraft(status, response.data.text, response.data.content_type));
 
-        if (!getState().getIn(['compose', 'mounted'])) {
-          router.push('/statuses/new');
-        }
+        ensureComposeIsVisible(getState, routerHistory);
       }
     }).catch(error => {
       dispatch(deleteStatusFail(id, error));
diff --git a/app/javascript/flavours/glitch/actions/streaming.js b/app/javascript/flavours/glitch/actions/streaming.js
index b5dd70989..21379f492 100644
--- a/app/javascript/flavours/glitch/actions/streaming.js
+++ b/app/javascript/flavours/glitch/actions/streaming.js
@@ -7,6 +7,7 @@ import {
   disconnectTimeline,
 } from './timelines';
 import { updateNotifications, expandNotifications } from './notifications';
+import { updateConversations } from './conversations';
 import { fetchFilters } from './filters';
 import { getLocale } from 'mastodon/locales';
 
@@ -37,6 +38,9 @@ export function connectTimelineStream (timelineId, path, pollingRefresh = null,
         case 'notification':
           dispatch(updateNotifications(JSON.parse(data.payload), messages, locale));
           break;
+        case 'conversation':
+          dispatch(updateConversations(JSON.parse(data.payload)));
+          break;
         case 'filters_changed':
           dispatch(fetchFilters());
           break;
diff --git a/app/javascript/flavours/glitch/components/autosuggest_textarea.js b/app/javascript/flavours/glitch/components/autosuggest_textarea.js
index cf3907fbf..bbe0ffcbe 100644
--- a/app/javascript/flavours/glitch/components/autosuggest_textarea.js
+++ b/app/javascript/flavours/glitch/components/autosuggest_textarea.js
@@ -192,7 +192,7 @@ export default class AutosuggestTextarea extends ImmutablePureComponent {
   }
 
   render () {
-    const { value, suggestions, disabled, placeholder, onKeyUp, autoFocus } = this.props;
+    const { value, suggestions, disabled, placeholder, onKeyUp, autoFocus, children } = this.props;
     const { suggestionsHidden } = this.state;
     const style = { direction: 'ltr' };
 
@@ -200,34 +200,39 @@ export default class AutosuggestTextarea extends ImmutablePureComponent {
       style.direction = 'rtl';
     }
 
-    return (
-      <div className='autosuggest-textarea'>
-        <label>
-          <span style={{ display: 'none' }}>{placeholder}</span>
-
-          <Textarea
-            inputRef={this.setTextarea}
-            className='autosuggest-textarea__textarea'
-            disabled={disabled}
-            placeholder={placeholder}
-            autoFocus={autoFocus}
-            value={value}
-            onChange={this.onChange}
-            onKeyDown={this.onKeyDown}
-            onKeyUp={onKeyUp}
-            onFocus={this.onFocus}
-            onBlur={this.onBlur}
-            onPaste={this.onPaste}
-            style={style}
-            aria-autocomplete='list'
-          />
-        </label>
+    return [
+      <div className='compose-form__autosuggest-wrapper' key='autosuggest-wrapper'>
+        <div className='autosuggest-textarea'>
+          <label>
+            <span style={{ display: 'none' }}>{placeholder}</span>
+
+            <Textarea
+              inputRef={this.setTextarea}
+              className='autosuggest-textarea__textarea'
+              disabled={disabled}
+              placeholder={placeholder}
+              autoFocus={autoFocus}
+              value={value}
+              onChange={this.onChange}
+              onKeyDown={this.onKeyDown}
+              onKeyUp={onKeyUp}
+              onFocus={this.onFocus}
+              onBlur={this.onBlur}
+              onPaste={this.onPaste}
+              style={style}
+              aria-autocomplete='list'
+            />
+          </label>
+        </div>
+        {children}
+      </div>,
 
+      <div className='autosuggest-textarea__suggestions-wrapper' key='suggestions-wrapper'>
         <div className={`autosuggest-textarea__suggestions ${suggestionsHidden || suggestions.isEmpty() ? '' : 'autosuggest-textarea__suggestions--visible'}`}>
           {suggestions.map(this.renderSuggestion)}
         </div>
-      </div>
-    );
+      </div>,
+    ];
   }
 
 }
diff --git a/app/javascript/flavours/glitch/components/avatar_composite.js b/app/javascript/flavours/glitch/components/avatar_composite.js
new file mode 100644
index 000000000..c52df043a
--- /dev/null
+++ b/app/javascript/flavours/glitch/components/avatar_composite.js
@@ -0,0 +1,104 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+import ImmutablePropTypes from 'react-immutable-proptypes';
+import { autoPlayGif } from 'flavours/glitch/util/initial_state';
+
+export default class AvatarComposite extends React.PureComponent {
+
+  static propTypes = {
+    accounts: ImmutablePropTypes.list.isRequired,
+    animate: PropTypes.bool,
+    size: PropTypes.number.isRequired,
+  };
+
+  static defaultProps = {
+    animate: autoPlayGif,
+  };
+
+  renderItem (account, size, index) {
+    const { animate } = this.props;
+
+    let width  = 50;
+    let height = 100;
+    let top    = 'auto';
+    let left   = 'auto';
+    let bottom = 'auto';
+    let right  = 'auto';
+
+    if (size === 1) {
+      width = 100;
+    }
+
+    if (size === 4 || (size === 3 && index > 0)) {
+      height = 50;
+    }
+
+    if (size === 2) {
+      if (index === 0) {
+        right = '2px';
+      } else {
+        left = '2px';
+      }
+    } else if (size === 3) {
+      if (index === 0) {
+        right = '2px';
+      } else if (index > 0) {
+        left = '2px';
+      }
+
+      if (index === 1) {
+        bottom = '2px';
+      } else if (index > 1) {
+        top = '2px';
+      }
+    } else if (size === 4) {
+      if (index === 0 || index === 2) {
+        right = '2px';
+      }
+
+      if (index === 1 || index === 3) {
+        left = '2px';
+      }
+
+      if (index < 2) {
+        bottom = '2px';
+      } else {
+        top = '2px';
+      }
+    }
+
+    const style = {
+      left: left,
+      top: top,
+      right: right,
+      bottom: bottom,
+      width: `${width}%`,
+      height: `${height}%`,
+      backgroundSize: 'cover',
+      backgroundImage: `url(${account.get(animate ? 'avatar' : 'avatar_static')})`,
+    };
+
+    return (
+      <a
+        href={account.get('url')}
+        target='_blank'
+        onClick={(e) => this.props.onAccountClick(account.get('id'), e)}
+        title={`@${account.get('acct')}`}
+        key={account.get('id')}
+      >
+        <div style={style} data-avatar-of={`@${account.get('acct')}`} />
+      </a>
+    );
+  }
+
+  render() {
+    const { accounts, size } = this.props;
+
+    return (
+      <div className='account__avatar-composite' style={{ width: `${size}px`, height: `${size}px` }}>
+        {accounts.take(4).map((account, i) => this.renderItem(account, accounts.size, i))}
+      </div>
+    );
+  }
+
+}
diff --git a/app/javascript/flavours/glitch/components/display_name.js b/app/javascript/flavours/glitch/components/display_name.js
index a26cff049..7f6ef5a5d 100644
--- a/app/javascript/flavours/glitch/components/display_name.js
+++ b/app/javascript/flavours/glitch/components/display_name.js
@@ -10,24 +10,56 @@ export default function DisplayName ({
   className,
   inline,
   localDomain,
+  others,
+  onAccountClick,
 }) {
   const computedClass = classNames('display-name', { inline }, className);
 
   if (!account) return null;
 
+  let displayName, suffix;
+
   let acct = account.get('acct');
+
   if (acct.indexOf('@') === -1 && localDomain) {
     acct = `${acct}@${localDomain}`;
   }
 
-  //  The result.
-  return account ? (
+  if (others && others.size > 0) {
+    displayName = others.take(2).map(a => (
+      <a
+        href={a.get('url')}
+        target='_blank'
+        onClick={(e) => onAccountClick(a.get('id'), e)}
+        title={`@${a.get('acct')}`}
+      >
+        <bdi key={a.get('id')}>
+          <strong className='display-name__html' dangerouslySetInnerHTML={{ __html: a.get('display_name_html') }} />
+        </bdi>
+      </a>
+    )).reduce((prev, cur) => [prev, ', ', cur]);
+
+    if (others.size - 2 > 0) {
+     displayName.push(` +${others.size - 2}`);
+    }
+
+    suffix = (
+      <a href={account.get('url')} target='_blank' onClick={(e) => onAccountClick(account.get('id'), e)}>
+        <span className='display-name__account'>@{acct}</span>
+      </a>
+    );
+  } else {
+    displayName = <bdi><strong className='display-name__html' dangerouslySetInnerHTML={{ __html: account.get('display_name_html') }} /></bdi>;
+    suffix      = <span className='display-name__account'>@{acct}</span>;
+  }
+
+  return (
     <span className={computedClass}>
-      <bdi><strong className='display-name__html' dangerouslySetInnerHTML={{ __html: account.get('display_name_html') }} /></bdi>
+      {displayName}
       {inline ? ' ' : null}
-      <span className='display-name__account'>@{acct}</span>
+      {suffix}
     </span>
-  ) : null;
+  );
 }
 
 //  Props.
@@ -36,4 +68,6 @@ DisplayName.propTypes = {
   className: PropTypes.string,
   inline: PropTypes.bool,
   localDomain: PropTypes.string,
+  others: ImmutablePropTypes.list,
+  handleClick: PropTypes.func,
 };
diff --git a/app/javascript/flavours/glitch/components/icon_with_badge.js b/app/javascript/flavours/glitch/components/icon_with_badge.js
new file mode 100644
index 000000000..4a15ee5b4
--- /dev/null
+++ b/app/javascript/flavours/glitch/components/icon_with_badge.js
@@ -0,0 +1,20 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+import Icon from 'flavours/glitch/components/icon';
+
+const formatNumber = num => num > 40 ? '40+' : num;
+
+const IconWithBadge = ({ id, count, className }) => (
+  <i className='icon-with-badge'>
+    <Icon icon={id} fixedWidth className={className} />
+    {count > 0 && <i className='icon-with-badge__badge'>{formatNumber(count)}</i>}
+  </i>
+);
+
+IconWithBadge.propTypes = {
+  id: PropTypes.string.isRequired,
+  count: PropTypes.number.isRequired,
+  className: PropTypes.string,
+};
+
+export default IconWithBadge;
diff --git a/app/javascript/flavours/glitch/components/status.js b/app/javascript/flavours/glitch/components/status.js
index 7014cab17..f6d73475a 100644
--- a/app/javascript/flavours/glitch/components/status.js
+++ b/app/javascript/flavours/glitch/components/status.js
@@ -66,6 +66,7 @@ export default class Status extends ImmutablePureComponent {
     containerId: PropTypes.string,
     id: PropTypes.string,
     status: ImmutablePropTypes.map,
+    otherAccounts: ImmutablePropTypes.list,
     account: ImmutablePropTypes.map,
     onReply: PropTypes.func,
     onFavourite: PropTypes.func,
@@ -83,6 +84,7 @@ export default class Status extends ImmutablePureComponent {
     muted: PropTypes.bool,
     collapse: PropTypes.bool,
     hidden: PropTypes.bool,
+    unread: PropTypes.bool,
     prepend: PropTypes.string,
     withDismiss: PropTypes.bool,
     onMoveUp: PropTypes.func,
@@ -93,6 +95,7 @@ export default class Status extends ImmutablePureComponent {
     intl: PropTypes.object.isRequired,
     cacheMediaWidth: PropTypes.func,
     cachedMediaWidth: PropTypes.number,
+    onClick: PropTypes.func,
   };
 
   state = {
@@ -111,8 +114,6 @@ export default class Status extends ImmutablePureComponent {
     'account',
     'settings',
     'prepend',
-    'boostModal',
-    'favouriteModal',
     'muted',
     'collapse',
     'notification',
@@ -321,17 +322,21 @@ export default class Status extends ImmutablePureComponent {
     const { status } = this.props;
     const { isCollapsed } = this.state;
     if (!router) return;
-    if (destination === undefined) {
-      destination = `/statuses/${
-        status.getIn(['reblog', 'id'], status.get('id'))
-      }`;
-    }
+
     if (e.button === 0 && !(e.ctrlKey || e.altKey || e.metaKey)) {
       if (isCollapsed) this.setCollapsed(false);
       else if (e.shiftKey) {
         this.setCollapsed(true);
         document.getSelection().removeAllRanges();
+      } else if (this.props.onClick) {
+        this.props.onClick();
+        return;
       } else {
+        if (destination === undefined) {
+          destination = `/statuses/${
+            status.getIn(['reblog', 'id'], status.get('id'))
+          }`;
+        }
         let state = {...router.history.location.state};
         state.mastodonBackSteps = (state.mastodonBackSteps || 0) + 1;
         router.history.push(destination, state);
@@ -441,6 +446,7 @@ export default class Status extends ImmutablePureComponent {
       intl,
       status,
       account,
+      otherAccounts,
       settings,
       collapsed,
       muted,
@@ -450,6 +456,7 @@ export default class Status extends ImmutablePureComponent {
       onOpenMedia,
       notification,
       hidden,
+      unread,
       featured,
       ...other
     } = this.props;
@@ -617,6 +624,7 @@ export default class Status extends ImmutablePureComponent {
       collapsed: isCollapsed,
       'has-background': isCollapsed && background,
       'status__wrapper-reply': !!status.get('in_reply_to_id'),
+      read: unread === false,
       muted,
     }, 'focusable');
 
@@ -647,6 +655,7 @@ export default class Status extends ImmutablePureComponent {
                   friend={account}
                   collapsed={isCollapsed}
                   parseClick={parseClick}
+                  otherAccounts={otherAccounts}
                 />
               ) : null}
             </span>
@@ -656,6 +665,7 @@ export default class Status extends ImmutablePureComponent {
               collapsible={settings.getIn(['collapsed', 'enabled'])}
               collapsed={isCollapsed}
               setCollapsed={setCollapsed}
+              directMessage={!!otherAccounts}
             />
           </header>
           <StatusContent
@@ -673,6 +683,7 @@ export default class Status extends ImmutablePureComponent {
               status={status}
               account={status.get('account')}
               showReplyCount={settings.get('show_reply_count')}
+              directMessage={!!otherAccounts}
             />
           ) : null}
           {notification ? (
diff --git a/app/javascript/flavours/glitch/components/status_action_bar.js b/app/javascript/flavours/glitch/components/status_action_bar.js
index 4c398fd19..85bc4a976 100644
--- a/app/javascript/flavours/glitch/components/status_action_bar.js
+++ b/app/javascript/flavours/glitch/components/status_action_bar.js
@@ -71,6 +71,7 @@ export default class StatusActionBar extends ImmutablePureComponent {
     onBookmark: PropTypes.func,
     withDismiss: PropTypes.bool,
     showReplyCount: PropTypes.bool,
+    directMessage: PropTypes.bool,
     intl: PropTypes.object.isRequired,
   };
 
@@ -191,7 +192,7 @@ export default class StatusActionBar extends ImmutablePureComponent {
   }
 
   render () {
-    const { status, intl, withDismiss, showReplyCount } = this.props;
+    const { status, intl, withDismiss, showReplyCount, directMessage } = this.props;
 
     const mutingConversation = status.get('muted');
     const anonymousAccess    = !me;
@@ -282,14 +283,15 @@ export default class StatusActionBar extends ImmutablePureComponent {
     return (
       <div className='status__action-bar'>
         {replyButton}
-        <IconButton className='status__action-bar-button' disabled={reblogDisabled} active={status.get('reblogged')} pressed={status.get('reblogged')} title={reblogDisabled ? intl.formatMessage(messages.cannot_reblog) : intl.formatMessage(reblogMessage)} icon={reblogIcon} onClick={this.handleReblogClick} />
-        <IconButton className='status__action-bar-button star-icon' animate active={status.get('favourited')} pressed={status.get('favourited')} title={intl.formatMessage(messages.favourite)} icon='star' onClick={this.handleFavouriteClick} />
-        {shareButton}
-        <IconButton className='status__action-bar-button bookmark-icon' disabled={anonymousAccess} active={status.get('bookmarked')} pressed={status.get('bookmarked')} title={intl.formatMessage(messages.bookmark)} icon='bookmark' onClick={this.handleBookmarkClick} />
-
-        <div className='status__action-bar-dropdown'>
-          <DropdownMenuContainer disabled={anonymousAccess} status={status} items={menu} icon='ellipsis-h' size={18} direction='right' ariaLabel={intl.formatMessage(messages.more)} />
-        </div>
+        {!directMessage && [
+          <IconButton className='status__action-bar-button' disabled={reblogDisabled} active={status.get('reblogged')} pressed={status.get('reblogged')} title={reblogDisabled ? intl.formatMessage(messages.cannot_reblog) : intl.formatMessage(reblogMessage)} icon={reblogIcon} onClick={this.handleReblogClick} />,
+          <IconButton className='status__action-bar-button star-icon' animate active={status.get('favourited')} pressed={status.get('favourited')} title={intl.formatMessage(messages.favourite)} icon='star' onClick={this.handleFavouriteClick} />,
+          shareButton,
+          <IconButton className='status__action-bar-button bookmark-icon' disabled={anonymousAccess} active={status.get('bookmarked')} pressed={status.get('bookmarked')} title={intl.formatMessage(messages.bookmark)} icon='bookmark' onClick={this.handleBookmarkClick} />,
+          <div className='status__action-bar-dropdown'>
+            <DropdownMenuContainer disabled={anonymousAccess} status={status} items={menu} icon='ellipsis-h' size={18} direction='right' ariaLabel={intl.formatMessage(messages.more)} />
+          </div>,
+        ]}
 
         <a href={status.get('url')} className='status__relative-time' target='_blank' rel='noopener'><RelativeTimestamp timestamp={status.get('created_at')} /></a>
       </div>
diff --git a/app/javascript/flavours/glitch/components/status_header.js b/app/javascript/flavours/glitch/components/status_header.js
index f9321904c..23cff286a 100644
--- a/app/javascript/flavours/glitch/components/status_header.js
+++ b/app/javascript/flavours/glitch/components/status_header.js
@@ -6,6 +6,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes';
 //  Mastodon imports.
 import Avatar from './avatar';
 import AvatarOverlay from './avatar_overlay';
+import AvatarComposite from './avatar_composite';
 import DisplayName from './display_name';
 
 export default class StatusHeader extends React.PureComponent {
@@ -14,12 +15,18 @@ export default class StatusHeader extends React.PureComponent {
     status: ImmutablePropTypes.map.isRequired,
     friend: ImmutablePropTypes.map,
     parseClick: PropTypes.func.isRequired,
+    otherAccounts: ImmutablePropTypes.list,
   };
 
   //  Handles clicks on account name/image
+  handleClick = (id, e) => {
+    const { parseClick } = this.props;
+    parseClick(e, `/accounts/${id}`);
+  }
+
   handleAccountClick = (e) => {
-    const { status, parseClick } = this.props;
-    parseClick(e, `/accounts/${status.getIn(['account', 'id'])}`);
+    const { status } = this.props;
+    this.handleClick(status.getIn(['account', 'id']), e);
   }
 
   //  Rendering.
@@ -27,36 +34,55 @@ export default class StatusHeader extends React.PureComponent {
     const {
       status,
       friend,
+      otherAccounts,
     } = this.props;
 
     const account = status.get('account');
 
-    return (
-      <div className='status__info__account' >
-        <a
-          href={account.get('url')}
-          target='_blank'
-          className='status__avatar'
-          onClick={this.handleAccountClick}
-        >
-          {
-            friend ? (
-              <AvatarOverlay account={account} friend={friend} />
-            ) : (
-              <Avatar account={account} size={48} />
-            )
-          }
-        </a>
-        <a
-          href={account.get('url')}
-          target='_blank'
-          className='status__display-name'
-          onClick={this.handleAccountClick}
-        >
-          <DisplayName account={account} />
-        </a>
-      </div>
-    );
+    let statusAvatar;
+    if (otherAccounts && otherAccounts.size > 0) {
+      statusAvatar = <AvatarComposite accounts={otherAccounts} size={48} onAccountClick={this.handleClick} />;
+    } else if (friend === undefined || friend === null) {
+      statusAvatar = <Avatar account={account} size={48} />;
+    } else {
+      statusAvatar = <AvatarOverlay account={account} friend={friend} />;
+    }
+
+    if (!otherAccounts) {
+      return (
+        <div className='status__info__account'>
+          <a
+            href={account.get('url')}
+            target='_blank'
+            className='status__avatar'
+            onClick={this.handleAccountClick}
+          >
+            {statusAvatar}
+          </a>
+          <a
+            href={account.get('url')}
+            target='_blank'
+            className='status__display-name'
+            onClick={this.handleAccountClick}
+          >
+            <DisplayName account={account} others={otherAccounts} />
+          </a>
+        </div>
+      );
+    } else {
+      // This is a DM conversation
+      return (
+        <div className='status__info__account'>
+          <span className='status__avatar'>
+            {statusAvatar}
+          </span>
+
+          <span className='status__display-name'>
+            <DisplayName account={account} others={otherAccounts} onAccountClick={this.handleClick} />
+          </span>
+        </div>
+      );
+    }
   }
 
 }
diff --git a/app/javascript/flavours/glitch/components/status_icons.js b/app/javascript/flavours/glitch/components/status_icons.js
index c9747650f..4a2c62881 100644
--- a/app/javascript/flavours/glitch/components/status_icons.js
+++ b/app/javascript/flavours/glitch/components/status_icons.js
@@ -22,6 +22,7 @@ export default class StatusIcons extends React.PureComponent {
     mediaIcon: PropTypes.string,
     collapsible: PropTypes.bool,
     collapsed: PropTypes.bool,
+    directMessage: PropTypes.bool,
     setCollapsed: PropTypes.func.isRequired,
     intl: PropTypes.object.isRequired,
   };
@@ -42,6 +43,7 @@ export default class StatusIcons extends React.PureComponent {
       mediaIcon,
       collapsible,
       collapsed,
+      directMessage,
       intl,
     } = this.props;
 
@@ -59,9 +61,7 @@ export default class StatusIcons extends React.PureComponent {
             aria-hidden='true'
           />
         ) : null}
-        {(
-          <VisibilityIcon visibility={status.get('visibility')} />
-        )}
+        {!directMessage && <VisibilityIcon visibility={status.get('visibility')} />}
         {collapsible ? (
           <IconButton
             className='status__collapse-button'
diff --git a/app/javascript/flavours/glitch/containers/status_container.js b/app/javascript/flavours/glitch/containers/status_container.js
index 98dc5bb87..a6069cb90 100644
--- a/app/javascript/flavours/glitch/containers/status_container.js
+++ b/app/javascript/flavours/glitch/containers/status_container.js
@@ -96,11 +96,16 @@ const mapDispatchToProps = (dispatch, { intl }) => ({
   },
 
   onReblog (status, e) {
-    if (e.shiftKey || !boostModal) {
-      this.onModalReblog(status);
-    } else {
-      dispatch(openModal('BOOST', { status, onReblog: this.onModalReblog }));
-    }
+    dispatch((_, getState) => {
+      let state = getState();
+      if (state.getIn(['local_settings', 'confirm_boost_missing_media_description']) && status.get('media_attachments').some(item => !item.get('description')) && !status.get('reblogged')) {
+        dispatch(openModal('BOOST', { status, onReblog: this.handleModalReblog, missingMediaDescription: true }));
+      } else if (e.shiftKey || !boostModal) {
+        this.onModalReblog(status);
+      } else {
+        dispatch(openModal('BOOST', { status, onReblog: this.onModalReblog }));
+      }
+    });
   },
 
   onBookmark (status) {
diff --git a/app/javascript/flavours/glitch/features/compose/components/compose_form.js b/app/javascript/flavours/glitch/features/compose/components/compose_form.js
index 0120be28f..b4b43785a 100644
--- a/app/javascript/flavours/glitch/features/compose/components/compose_form.js
+++ b/app/javascript/flavours/glitch/features/compose/components/compose_form.js
@@ -28,10 +28,6 @@ const messages = defineMessages({
 export default @injectIntl
 class ComposeForm extends ImmutablePureComponent {
 
-  setRef = c => {
-    this.composeForm = c;
-  };
-
   static contextTypes = {
     router: PropTypes.object,
   };
@@ -145,6 +141,10 @@ class ComposeForm extends ImmutablePureComponent {
     }
   }
 
+  setRef = c => {
+    this.composeForm = c;
+  };
+
   //  Inserts an emoji at the caret.
   handleEmoji = (data) => {
     const { textarea: { selectionStart } } = this;
@@ -213,7 +213,9 @@ class ComposeForm extends ImmutablePureComponent {
   }
 
   handleFocus = () => {
-    this.composeForm.scrollIntoView();
+    if (this.composeForm) {
+      this.composeForm.scrollIntoView();
+    }
   }
 
   //  This statement does several things:
@@ -335,32 +337,28 @@ class ComposeForm extends ImmutablePureComponent {
           />
         </div>
 
-        <div className='composer--textarea'>
-          <TextareaIcons advancedOptions={advancedOptions} />
-
-          <AutosuggestTextarea
-            ref={this.setAutosuggestTextarea}
-            placeholder={intl.formatMessage(messages.placeholder)}
-            disabled={isSubmitting}
-            value={this.props.text}
-            onChange={this.handleChange}
-            suggestions={this.props.suggestions}
-            onFocus={this.handleFocus}
-            onKeyDown={this.handleKeyDown}
-            onSuggestionsFetchRequested={onFetchSuggestions}
-            onSuggestionsClearRequested={onClearSuggestions}
-            onSuggestionSelected={this.onSuggestionSelected}
-            onPaste={onPaste}
-            autoFocus={!showSearch && !isMobile(window.innerWidth, layout)}
-          />
-
+        <AutosuggestTextarea
+          ref={this.setAutosuggestTextarea}
+          placeholder={intl.formatMessage(messages.placeholder)}
+          disabled={isSubmitting}
+          value={this.props.text}
+          onChange={this.handleChange}
+          suggestions={this.props.suggestions}
+          onFocus={this.handleFocus}
+          onKeyDown={this.handleKeyDown}
+          onSuggestionsFetchRequested={onFetchSuggestions}
+          onSuggestionsClearRequested={onClearSuggestions}
+          onSuggestionSelected={this.onSuggestionSelected}
+          onPaste={onPaste}
+          autoFocus={!showSearch && !isMobile(window.innerWidth, layout)}
+        >
           <EmojiPicker onPickEmoji={handleEmoji} />
-        </div>
-
-        <div className='compose-form__modifiers'>
-          <UploadFormContainer />
-          <PollFormContainer />
-        </div>
+          <TextareaIcons advancedOptions={advancedOptions} />
+          <div className='compose-form__modifiers'>
+            <UploadFormContainer />
+            <PollFormContainer />
+          </div>
+        </AutosuggestTextarea>
 
         <OptionsContainer
           advancedOptions={advancedOptions}
diff --git a/app/javascript/flavours/glitch/features/compose/components/navigation_bar.js b/app/javascript/flavours/glitch/features/compose/components/navigation_bar.js
index 59172bb23..3148434f1 100644
--- a/app/javascript/flavours/glitch/features/compose/components/navigation_bar.js
+++ b/app/javascript/flavours/glitch/features/compose/components/navigation_bar.js
@@ -17,7 +17,7 @@ export default class NavigationBar extends ImmutablePureComponent {
       <div className='drawer--account'>
         <Permalink className='avatar' href={this.props.account.get('url')} to={`/accounts/${this.props.account.get('id')}`}>
           <span style={{ display: 'none' }}>{this.props.account.get('acct')}</span>
-          <Avatar account={this.props.account} size={40} />
+          <Avatar account={this.props.account} size={48} />
         </Permalink>
 
         <Permalink className='acct' href={this.props.account.get('url')} to={`/accounts/${this.props.account.get('id')}`}>
diff --git a/app/javascript/flavours/glitch/features/compose/components/search.js b/app/javascript/flavours/glitch/features/compose/components/search.js
index 5fed1567a..1d96933ea 100644
--- a/app/javascript/flavours/glitch/features/compose/components/search.js
+++ b/app/javascript/flavours/glitch/features/compose/components/search.js
@@ -33,7 +33,7 @@ class SearchPopout extends React.PureComponent {
     const { style } = this.props;
     const extraInformation = searchEnabled ? <FormattedMessage id='search_popout.tips.full_text' defaultMessage='Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.' /> : <FormattedMessage id='search_popout.tips.text' defaultMessage='Simple text returns matching display names, usernames and hashtags' />;
     return (
-      <div style={{ ...style, position: 'absolute', width: 285 }}>
+      <div style={{ ...style, position: 'absolute', width: 285, zIndex: 2 }}>
         <Motion defaultStyle={{ opacity: 0, scaleX: 0.85, scaleY: 0.75 }} style={{ opacity: spring(1, { damping: 35, stiffness: 400 }), scaleX: spring(1, { damping: 35, stiffness: 400 }), scaleY: spring(1, { damping: 35, stiffness: 400 }) }}>
           {({ opacity, scaleX, scaleY }) => (
             <div className='drawer--search--popout' style={{ opacity: opacity, transform: `scale(${scaleX}, ${scaleY})` }}>
@@ -60,6 +60,10 @@ class SearchPopout extends React.PureComponent {
 export default @injectIntl
 class Search extends React.PureComponent {
 
+  static contextTypes = {
+    router: PropTypes.object.isRequired,
+  };
+
   static propTypes = {
     value: PropTypes.string.isRequired,
     submitted: PropTypes.bool,
@@ -67,6 +71,7 @@ class Search extends React.PureComponent {
     onSubmit: PropTypes.func.isRequired,
     onClear: PropTypes.func.isRequired,
     onShow: PropTypes.func.isRequired,
+    openInRoute: PropTypes.bool,
     intl: PropTypes.object.isRequired,
   };
 
@@ -109,8 +114,10 @@ class Search extends React.PureComponent {
     const { onSubmit } = this.props;
     switch (e.key) {
     case 'Enter':
-      if (onSubmit) {
-        onSubmit();
+      onSubmit();
+
+      if (this.props.openInRoute) {
+        this.context.router.history.push('/search');
       }
       break;
     case 'Escape':
diff --git a/app/javascript/flavours/glitch/features/compose/index.js b/app/javascript/flavours/glitch/features/compose/index.js
index e60eedfd9..d3070a199 100644
--- a/app/javascript/flavours/glitch/features/compose/index.js
+++ b/app/javascript/flavours/glitch/features/compose/index.js
@@ -29,7 +29,7 @@ const mapDispatchToProps = (dispatch, { intl }) => ({
   },
 });
 
-export default @connect(mapStateToProps)
+export default @connect(mapStateToProps, mapDispatchToProps)
 @injectIntl
 class Compose extends React.PureComponent {
   static propTypes = {
@@ -61,12 +61,12 @@ class Compose extends React.PureComponent {
         <div className='drawer__pager'>
           {!isSearchPage && <div className='drawer__inner'>
             <NavigationContainer />
+
             <ComposeFormContainer />
-            {multiColumn && (
-              <div className='drawer__inner__mastodon'>
-                {mascot ? <img alt='' draggable='false' src={mascot} /> : <button className='mastodon' onClick={onClickElefriend} />}
-              </div>
-            )}
+
+            <div className='drawer__inner__mastodon'>
+              {mascot ? <img alt='' draggable='false' src={mascot} /> : <button className='mastodon' onClick={onClickElefriend} />}
+            </div>
           </div>}
 
           <Motion defaultStyle={{ x: isSearchPage ? 0 : -100 }} style={{ x: spring(showSearch || isSearchPage ? 0 : -100, { stiffness: 210, damping: 20 }) }}>
diff --git a/app/javascript/flavours/glitch/features/direct_timeline/components/conversation.js b/app/javascript/flavours/glitch/features/direct_timeline/components/conversation.js
new file mode 100644
index 000000000..9ddeabe75
--- /dev/null
+++ b/app/javascript/flavours/glitch/features/direct_timeline/components/conversation.js
@@ -0,0 +1,64 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+import ImmutablePropTypes from 'react-immutable-proptypes';
+import ImmutablePureComponent from 'react-immutable-pure-component';
+import StatusContainer from 'flavours/glitch/containers/status_container';
+
+export default class Conversation extends ImmutablePureComponent {
+
+  static contextTypes = {
+    router: PropTypes.object,
+  };
+
+  static propTypes = {
+    conversationId: PropTypes.string.isRequired,
+    accounts: ImmutablePropTypes.list.isRequired,
+    lastStatusId: PropTypes.string,
+    unread:PropTypes.bool.isRequired,
+    onMoveUp: PropTypes.func,
+    onMoveDown: PropTypes.func,
+    markRead: PropTypes.func.isRequired,
+  };
+
+  handleClick = () => {
+    if (!this.context.router) {
+      return;
+    }
+
+    const { lastStatusId, unread, markRead } = this.props;
+
+    if (unread) {
+      markRead();
+    }
+
+    this.context.router.history.push(`/statuses/${lastStatusId}`);
+  }
+
+  handleHotkeyMoveUp = () => {
+    this.props.onMoveUp(this.props.conversationId);
+  }
+
+  handleHotkeyMoveDown = () => {
+    this.props.onMoveDown(this.props.conversationId);
+  }
+
+  render () {
+    const { accounts, lastStatusId, unread } = this.props;
+
+    if (lastStatusId === null) {
+      return null;
+    }
+
+    return (
+      <StatusContainer
+        id={lastStatusId}
+        unread={unread}
+        otherAccounts={accounts}
+        onMoveUp={this.handleHotkeyMoveUp}
+        onMoveDown={this.handleHotkeyMoveDown}
+        onClick={this.handleClick}
+      />
+    );
+  }
+
+}
diff --git a/app/javascript/flavours/glitch/features/direct_timeline/components/conversations_list.js b/app/javascript/flavours/glitch/features/direct_timeline/components/conversations_list.js
new file mode 100644
index 000000000..4fa76fd6d
--- /dev/null
+++ b/app/javascript/flavours/glitch/features/direct_timeline/components/conversations_list.js
@@ -0,0 +1,73 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+import ImmutablePropTypes from 'react-immutable-proptypes';
+import ImmutablePureComponent from 'react-immutable-pure-component';
+import ConversationContainer from '../containers/conversation_container';
+import ScrollableList from 'flavours/glitch/components/scrollable_list';
+import { debounce } from 'lodash';
+
+export default class ConversationsList extends ImmutablePureComponent {
+
+  static propTypes = {
+    conversations: ImmutablePropTypes.list.isRequired,
+    hasMore: PropTypes.bool,
+    isLoading: PropTypes.bool,
+    onLoadMore: PropTypes.func,
+  };
+
+  getCurrentIndex = id => this.props.conversations.findIndex(x => x.get('id') === id)
+
+  handleMoveUp = id => {
+    const elementIndex = this.getCurrentIndex(id) - 1;
+    this._selectChild(elementIndex, true);
+  }
+
+  handleMoveDown = id => {
+    const elementIndex = this.getCurrentIndex(id) + 1;
+    this._selectChild(elementIndex, false);
+  }
+
+  _selectChild (index, align_top) {
+    const container = this.node.node;
+    const element = container.querySelector(`article:nth-of-type(${index + 1}) .focusable`);
+
+    if (element) {
+      if (align_top && container.scrollTop > element.offsetTop) {
+        element.scrollIntoView(true);
+      } else if (!align_top && container.scrollTop + container.clientHeight < element.offsetTop + element.offsetHeight) {
+        element.scrollIntoView(false);
+      }
+      element.focus();
+    }
+  }
+
+  setRef = c => {
+    this.node = c;
+  }
+
+  handleLoadOlder = debounce(() => {
+    const last = this.props.conversations.last();
+
+    if (last && last.get('last_status')) {
+      this.props.onLoadMore(last.get('last_status'));
+    }
+  }, 300, { leading: true })
+
+  render () {
+    const { conversations, onLoadMore, ...other } = this.props;
+
+    return (
+      <ScrollableList {...other} onLoadMore={onLoadMore && this.handleLoadOlder} scrollKey='direct' ref={this.setRef}>
+        {conversations.map(item => (
+          <ConversationContainer
+            key={item.get('id')}
+            conversationId={item.get('id')}
+            onMoveUp={this.handleMoveUp}
+            onMoveDown={this.handleMoveDown}
+          />
+        ))}
+      </ScrollableList>
+    );
+  }
+
+}
diff --git a/app/javascript/flavours/glitch/features/direct_timeline/containers/conversation_container.js b/app/javascript/flavours/glitch/features/direct_timeline/containers/conversation_container.js
new file mode 100644
index 000000000..bd6f6bfb0
--- /dev/null
+++ b/app/javascript/flavours/glitch/features/direct_timeline/containers/conversation_container.js
@@ -0,0 +1,19 @@
+import { connect } from 'react-redux';
+import Conversation from '../components/conversation';
+import { markConversationRead } from '../../../actions/conversations';
+
+const mapStateToProps = (state, { conversationId }) => {
+  const conversation = state.getIn(['conversations', 'items']).find(x => x.get('id') === conversationId);
+
+  return {
+    accounts: conversation.get('accounts').map(accountId => state.getIn(['accounts', accountId], null)),
+    unread: conversation.get('unread'),
+    lastStatusId: conversation.get('last_status', null),
+  };
+};
+
+const mapDispatchToProps = (dispatch, { conversationId }) => ({
+  markRead: () => dispatch(markConversationRead(conversationId)),
+});
+
+export default connect(mapStateToProps, mapDispatchToProps)(Conversation);
diff --git a/app/javascript/flavours/glitch/features/direct_timeline/containers/conversations_list_container.js b/app/javascript/flavours/glitch/features/direct_timeline/containers/conversations_list_container.js
new file mode 100644
index 000000000..e10558f3a
--- /dev/null
+++ b/app/javascript/flavours/glitch/features/direct_timeline/containers/conversations_list_container.js
@@ -0,0 +1,15 @@
+import { connect } from 'react-redux';
+import ConversationsList from '../components/conversations_list';
+import { expandConversations } from 'flavours/glitch/actions/conversations';
+
+const mapStateToProps = state => ({
+  conversations: state.getIn(['conversations', 'items']),
+  isLoading: state.getIn(['conversations', 'isLoading'], true),
+  hasMore: state.getIn(['conversations', 'hasMore'], false),
+});
+
+const mapDispatchToProps = dispatch => ({
+  onLoadMore: maxId => dispatch(expandConversations({ maxId })),
+});
+
+export default connect(mapStateToProps, mapDispatchToProps)(ConversationsList);
diff --git a/app/javascript/flavours/glitch/features/direct_timeline/index.js b/app/javascript/flavours/glitch/features/direct_timeline/index.js
index dc7e0534d..6fe8a1ce8 100644
--- a/app/javascript/flavours/glitch/features/direct_timeline/index.js
+++ b/app/javascript/flavours/glitch/features/direct_timeline/index.js
@@ -5,10 +5,13 @@ import StatusListContainer from 'flavours/glitch/features/ui/containers/status_l
 import Column from 'flavours/glitch/components/column';
 import ColumnHeader from 'flavours/glitch/components/column_header';
 import { expandDirectTimeline } from 'flavours/glitch/actions/timelines';
+import { mountConversations, unmountConversations, expandConversations } from 'flavours/glitch/actions/conversations';
 import { addColumn, removeColumn, moveColumn } from 'flavours/glitch/actions/columns';
 import { defineMessages, injectIntl, FormattedMessage } from 'react-intl';
 import ColumnSettingsContainer from './containers/column_settings_container';
 import { connectDirectStream } from 'flavours/glitch/actions/streaming';
+import { changeSetting } from 'flavours/glitch/actions/settings';
+import ConversationsListContainer from './containers/conversations_list_container';
 
 const messages = defineMessages({
   title: { id: 'column.direct', defaultMessage: 'Direct messages' },
@@ -16,6 +19,7 @@ const messages = defineMessages({
 
 const mapStateToProps = state => ({
   hasUnread: state.getIn(['timelines', 'direct', 'unread']) > 0,
+  conversationsMode: state.getIn(['settings', 'direct', 'conversations']),
 });
 
 @connect(mapStateToProps)
@@ -28,6 +32,7 @@ export default class DirectTimeline extends React.PureComponent {
     intl: PropTypes.object.isRequired,
     hasUnread: PropTypes.bool,
     multiColumn: PropTypes.bool,
+    conversationsMode: PropTypes.bool,
   };
 
   handlePin = () => {
@@ -50,13 +55,32 @@ export default class DirectTimeline extends React.PureComponent {
   }
 
   componentDidMount () {
-    const { dispatch } = this.props;
+    const { dispatch, conversationsMode } = this.props;
+
+    dispatch(mountConversations());
+
+    if (conversationsMode) {
+      dispatch(expandConversations());
+    } else {
+      dispatch(expandDirectTimeline());
+    }
 
-    dispatch(expandDirectTimeline());
     this.disconnect = dispatch(connectDirectStream());
   }
 
+  componentDidUpdate(prevProps) {
+    const { dispatch, conversationsMode } = this.props;
+
+    if (prevProps.conversationsMode && !conversationsMode) {
+      dispatch(expandDirectTimeline());
+    } else if (!prevProps.conversationsMode && conversationsMode) {
+      dispatch(expandConversations());
+    }
+  }
+
   componentWillUnmount () {
+    this.props.dispatch(unmountConversations());
+
     if (this.disconnect) {
       this.disconnect();
       this.disconnect = null;
@@ -67,14 +91,49 @@ export default class DirectTimeline extends React.PureComponent {
     this.column = c;
   }
 
-  handleLoadMore = maxId => {
+  handleLoadMoreTimeline = maxId => {
     this.props.dispatch(expandDirectTimeline({ maxId }));
   }
 
+  handleLoadMoreConversations = maxId => {
+    this.props.dispatch(expandConversations({ maxId }));
+  }
+
+  handleTimelineClick = () => {
+    this.props.dispatch(changeSetting(['direct', 'conversations'], false));
+  }
+
+  handleConversationsClick = () => {
+    this.props.dispatch(changeSetting(['direct', 'conversations'], true));
+  }
+
   render () {
-    const { intl, hasUnread, columnId, multiColumn } = this.props;
+    const { intl, hasUnread, columnId, multiColumn, conversationsMode } = this.props;
     const pinned = !!columnId;
 
+    let contents;
+    if (conversationsMode) {
+      contents = (
+        <ConversationsListContainer
+          trackScroll={!pinned}
+          scrollKey={`direct_timeline-${columnId}`}
+          timelineId='direct'
+          onLoadMore={this.handleLoadMore}
+          emptyMessage={<FormattedMessage id='empty_column.direct' defaultMessage="You don't have any direct messages yet. When you send or receive one, it will show up here." />}
+        />
+      );
+    } else {
+      contents = (
+        <StatusListContainer
+          trackScroll={!pinned}
+          scrollKey={`direct_timeline-${columnId}`}
+          timelineId='direct'
+          onLoadMore={this.handleLoadMoreTimeline}
+          emptyMessage={<FormattedMessage id='empty_column.direct' defaultMessage="You don't have any direct messages yet. When you send or receive one, it will show up here." />}
+        />
+      );
+    }
+
     return (
       <Column ref={this.setRef} label={intl.formatMessage(messages.title)}>
         <ColumnHeader
@@ -90,13 +149,28 @@ export default class DirectTimeline extends React.PureComponent {
           <ColumnSettingsContainer />
         </ColumnHeader>
 
-        <StatusListContainer
-          trackScroll={!pinned}
-          scrollKey={`direct_timeline-${columnId}`}
-          timelineId='direct'
-          onLoadMore={this.handleLoadMore}
-          emptyMessage={<FormattedMessage id='empty_column.direct' defaultMessage="You don't have any direct messages yet. When you send or receive one, it will show up here." />}
-        />
+        <div className='notification__filter-bar'>
+          <button
+            className={conversationsMode ? 'active' : ''}
+            onClick={this.handleConversationsClick}
+          >
+            <FormattedMessage
+              id='direct.conversations_mode'
+              defaultMessage='Conversations'
+            />
+          </button>
+          <button
+            className={conversationsMode ? '' : 'active'}
+            onClick={this.handleTimelineClick}
+          >
+            <FormattedMessage
+              id='direct.timeline_mode'
+              defaultMessage='Timeline'
+            />
+          </button>
+        </div>
+
+        {contents}
       </Column>
     );
   }
diff --git a/app/javascript/flavours/glitch/features/follow_requests/index.js b/app/javascript/flavours/glitch/features/follow_requests/index.js
index bce6338ea..d0845769e 100644
--- a/app/javascript/flavours/glitch/features/follow_requests/index.js
+++ b/app/javascript/flavours/glitch/features/follow_requests/index.js
@@ -59,7 +59,7 @@ export default class FollowRequests extends ImmutablePureComponent {
     }
 
     return (
-      <Column name='follow-requests' icon='users' heading={intl.formatMessage(messages.heading)}>
+      <Column name='follow-requests' icon='user-plus' heading={intl.formatMessage(messages.heading)}>
         <ColumnBackButtonSlim />
 
         <ScrollContainer scrollKey='follow_requests' shouldUpdateScroll={this.shouldUpdateScroll}>
diff --git a/app/javascript/flavours/glitch/features/getting_started/index.js b/app/javascript/flavours/glitch/features/getting_started/index.js
index d0c72c087..f669220e3 100644
--- a/app/javascript/flavours/glitch/features/getting_started/index.js
+++ b/app/javascript/flavours/glitch/features/getting_started/index.js
@@ -8,12 +8,13 @@ import { openModal } from 'flavours/glitch/actions/modal';
 import PropTypes from 'prop-types';
 import ImmutablePropTypes from 'react-immutable-proptypes';
 import ImmutablePureComponent from 'react-immutable-pure-component';
-import { me, invitesEnabled, version } from 'flavours/glitch/util/initial_state';
+import { me } from 'flavours/glitch/util/initial_state';
 import { fetchFollowRequests } from 'flavours/glitch/actions/accounts';
 import { List as ImmutableList } from 'immutable';
 import { createSelector } from 'reselect';
 import { fetchLists } from 'flavours/glitch/actions/lists';
-import { preferencesLink, profileLink, signOutLink } from 'flavours/glitch/util/backend_links';
+import { preferencesLink, signOutLink } from 'flavours/glitch/util/backend_links';
+import LinkFooter from 'flavours/glitch/features/ui/components/link_footer';
 
 const messages = defineMessages({
   heading: { id: 'getting_started.heading', defaultMessage: 'Getting started' },
@@ -73,9 +74,15 @@ const badgeDisplay = (number, limit) => {
   }
 };
 
-@connect(makeMapStateToProps, mapDispatchToProps)
-@injectIntl
-export default class GettingStarted extends ImmutablePureComponent {
+const NAVIGATION_PANEL_BREAKPOINT = 600 + (285 * 2) + (10 * 2);
+
+ export default @connect(makeMapStateToProps, mapDispatchToProps)
+ @injectIntl
+ class GettingStarted extends ImmutablePureComponent {
+
+  static contextTypes = {
+    router: PropTypes.object.isRequired,
+  };
 
   static propTypes = {
     intl: PropTypes.object.isRequired,
@@ -95,7 +102,12 @@ export default class GettingStarted extends ImmutablePureComponent {
   }
 
   componentDidMount () {
-    const { myAccount, fetchFollowRequests } = this.props;
+    const { myAccount, fetchFollowRequests, multiColumn } = this.props;
+
+    if (!multiColumn && window.innerWidth >= NAVIGATION_PANEL_BREAKPOINT) {
+      this.context.router.history.replace('/timelines/home');
+      return;
+    }
 
     if (myAccount.get('locked')) {
       fetchFollowRequests();
@@ -135,7 +147,7 @@ export default class GettingStarted extends ImmutablePureComponent {
     }
 
     if (myAccount.get('locked')) {
-      navItems.push(<ColumnLink key='6' icon='users' text={intl.formatMessage(messages.follow_requests)} badge={badgeDisplay(unreadFollowRequests, 40)} to='/follow_requests' />);
+      navItems.push(<ColumnLink key='6' icon='user-plus' text={intl.formatMessage(messages.follow_requests)} badge={badgeDisplay(unreadFollowRequests, 40)} to='/follow_requests' />);
     }
 
     navItems.push(<ColumnLink key='7' icon='ellipsis-h' text={intl.formatMessage(messages.misc)} to='/getting-started-misc' />);
@@ -163,26 +175,7 @@ export default class GettingStarted extends ImmutablePureComponent {
             <ColumnLink icon='sign-out' text={intl.formatMessage(messages.sign_out)} href={signOutLink} method='delete' />
           </div>
 
-          <div className='getting-started__footer'>
-            <ul>
-              {invitesEnabled && <li><a href='/invites' target='_blank'><FormattedMessage id='getting_started.invite' defaultMessage='Invite people' /></a> · </li>}
-              <li><a href='/about/more' target='_blank'><FormattedMessage id='navigation_bar.info' defaultMessage='About this server' /></a> · </li>
-              <li><a href='https://joinmastodon.org/apps' target='_blank'><FormattedMessage id='navigation_bar.apps' defaultMessage='Mobile apps' /></a> · </li>
-              <li><a href='/terms' target='_blank'><FormattedMessage id='getting_started.terms' defaultMessage='Terms of service' /></a> · </li>
-              <li><a href='https://docs.joinmastodon.org' target='_blank'><FormattedMessage id='getting_started.documentation' defaultMessage='Documentation' /></a></li>
-            </ul>
-
-            <p>
-              <FormattedMessage
-                id='getting_started.open_source_notice'
-                defaultMessage='GlitchCafe is open source software, based on {Glitchsoc} which is a friendly fork of {Mastodon}. You can contribute or report issues on GitHub at {github}.'
-                values={{
-                  github: <span><a href='https://github.com/pluralcafe/mastodon' rel='noopener' target='_blank'>pluralcafe/mastodon</a> (v{version})</span>,
-		  Glitchsoc: <a href='https://github.com/glitch-soc/mastodon' rel='noopener' target='_blank'>glitch-soc/mastodon</a>,
-                  Mastodon: <a href='https://github.com/tootsuite/mastodon' rel='noopener' target='_blank'>Mastodon</a> }}
-              />
-            </p>
-          </div>
+          <LinkFooter />
         </div>
       </Column>
     );
diff --git a/app/javascript/flavours/glitch/features/local_settings/page/index.js b/app/javascript/flavours/glitch/features/local_settings/page/index.js
index cd2d86713..23499455b 100644
--- a/app/javascript/flavours/glitch/features/local_settings/page/index.js
+++ b/app/javascript/flavours/glitch/features/local_settings/page/index.js
@@ -11,8 +11,11 @@ import LocalSettingsPageItem from './item';
 
 const messages = defineMessages({
   layout_auto: {  id: 'layout.auto', defaultMessage: 'Auto' },
+  layout_auto_hint: {  id: 'layout.hint.auto', defaultMessage: 'Automatically chose layout based on “Enable advanced web interface” setting and screen size.' },
   layout_desktop: { id: 'layout.desktop', defaultMessage: 'Desktop' },
+  layout_desktop_hint: { id: 'layout.hint.desktop', defaultMessage: 'Use multiple-column layout regardless of the “Enable advanced web interface” setting or screen size.' },
   layout_mobile: { id: 'layout.single', defaultMessage: 'Mobile' },
+  layout_mobile_hint: { id: 'layout.hint.single', defaultMessage: 'Use single-column layout regardless of the “Enable advanced web interface” setting or screen size.' },
   side_arm_none: { id: 'settings.side_arm.none', defaultMessage: 'None' },
   side_arm_keep: { id: 'settings.side_arm_reply_mode.keep', defaultMessage: 'Keep secondary toot button to set privacy' },
   side_arm_copy: { id: 'settings.side_arm_reply_mode.copy', defaultMessage: 'Copy privacy setting of the toot being replied to' },
@@ -51,6 +54,14 @@ export default class LocalSettingsPage extends React.PureComponent {
           <FormattedMessage id='settings.hicolor_privacy_icons' defaultMessage='High color privacy icons' />
           <span className='hint'><FormattedMessage id='settings.hicolor_privacy_icons.hint' defaultMessage="Display privacy icons in bright and easily distinguishable colors" /></span>
         </LocalSettingsPageItem>
+        <LocalSettingsPageItem
+          settings={settings}
+          item={['confirm_boost_missing_media_description']}
+          id='mastodon-settings--confirm_boost_missing_media_description'
+          onChange={onChange}
+        >
+          <FormattedMessage id='settings.confirm_boost_missing_media_description' defaultMessage='Show confirmation dialog before boosting toots lacking media descriptions' />
+        </LocalSettingsPageItem>
         <section>
           <h2><FormattedMessage id='settings.notifications_opts' defaultMessage='Notifications options' /></h2>
           <LocalSettingsPageItem
@@ -79,9 +90,9 @@ export default class LocalSettingsPage extends React.PureComponent {
             item={['layout']}
             id='mastodon-settings--layout'
             options={[
-              { value: 'auto', message: intl.formatMessage(messages.layout_auto) },
-              { value: 'multiple', message: intl.formatMessage(messages.layout_desktop) },
-              { value: 'single', message: intl.formatMessage(messages.layout_mobile) },
+              { value: 'auto', message: intl.formatMessage(messages.layout_auto), hint: intl.formatMessage(messages.layout_auto_hint) },
+              { value: 'multiple', message: intl.formatMessage(messages.layout_desktop), hint: intl.formatMessage(messages.layout_desktop_hint) },
+              { value: 'single', message: intl.formatMessage(messages.layout_mobile), hint: intl.formatMessage(messages.layout_mobile_hint) },
             ]}
             onChange={onChange}
           >
diff --git a/app/javascript/flavours/glitch/features/search/index.js b/app/javascript/flavours/glitch/features/search/index.js
new file mode 100644
index 000000000..b35c8ed49
--- /dev/null
+++ b/app/javascript/flavours/glitch/features/search/index.js
@@ -0,0 +1,17 @@
+import React from 'react';
+import SearchContainer from 'flavours/glitch/features/compose/containers/search_container';
+import SearchResultsContainer from 'flavours/glitch/features/compose/containers/search_results_container';
+
+const Search = () => (
+  <div className='column search-page'>
+    <SearchContainer />
+
+    <div className='drawer__pager'>
+      <div className='drawer__inner darker'>
+        <SearchResultsContainer />
+      </div>
+    </div>
+  </div>
+);
+
+export default Search;
diff --git a/app/javascript/flavours/glitch/features/status/index.js b/app/javascript/flavours/glitch/features/status/index.js
index 145a33fff..76bfaaffa 100644
--- a/app/javascript/flavours/glitch/features/status/index.js
+++ b/app/javascript/flavours/glitch/features/status/index.js
@@ -231,18 +231,24 @@ export default class Status extends ImmutablePureComponent {
   }
 
   handleModalReblog = (status) => {
-    this.props.dispatch(reblog(status));
+    const { dispatch } = this.props;
+
+    if (status.get('reblogged')) {
+      dispatch(unreblog(status));
+    } else {
+      dispatch(reblog(status));
+    }
   }
 
   handleReblogClick = (status, e) => {
-    if (status.get('reblogged')) {
-      this.props.dispatch(unreblog(status));
+    const { settings, dispatch } = this.props;
+
+    if (settings.get('confirm_boost_missing_media_description') && status.get('media_attachments').some(item => !item.get('description')) && !status.get('reblogged')) {
+      dispatch(openModal('BOOST', { status, onReblog: this.handleModalReblog, missingMediaDescription: true }));
+    } else if ((e && e.shiftKey) || !boostModal) {
+      this.handleModalReblog(status);
     } else {
-      if ((e && e.shiftKey) || !boostModal) {
-        this.handleModalReblog(status);
-      } else {
-        this.props.dispatch(openModal('BOOST', { status, onReblog: this.handleModalReblog }));
-      }
+      dispatch(openModal('BOOST', { status, onReblog: this.handleModalReblog }));
     }
   }
 
diff --git a/app/javascript/flavours/glitch/features/ui/components/boost_modal.js b/app/javascript/flavours/glitch/features/ui/components/boost_modal.js
index ce7ec2479..600e4422f 100644
--- a/app/javascript/flavours/glitch/features/ui/components/boost_modal.js
+++ b/app/javascript/flavours/glitch/features/ui/components/boost_modal.js
@@ -7,6 +7,7 @@ import StatusContent from 'flavours/glitch/components/status_content';
 import Avatar from 'flavours/glitch/components/avatar';
 import RelativeTimestamp from 'flavours/glitch/components/relative_timestamp';
 import DisplayName from 'flavours/glitch/components/display_name';
+import AttachmentList from 'flavours/glitch/components/attachment_list';
 import ImmutablePureComponent from 'react-immutable-pure-component';
 
 const messages = defineMessages({
@@ -25,6 +26,7 @@ export default class BoostModal extends ImmutablePureComponent {
     status: ImmutablePropTypes.map.isRequired,
     onReblog: PropTypes.func.isRequired,
     onClose: PropTypes.func.isRequired,
+    missingMediaDescription: PropTypes.bool,
     intl: PropTypes.object.isRequired,
   };
 
@@ -52,7 +54,7 @@ export default class BoostModal extends ImmutablePureComponent {
   }
 
   render () {
-    const { status, intl } = this.props;
+    const { status, missingMediaDescription, intl } = this.props;
     const buttonText = status.get('reblogged') ? messages.cancel_reblog : messages.reblog;
 
     return (
@@ -74,11 +76,24 @@ export default class BoostModal extends ImmutablePureComponent {
             </div>
 
             <StatusContent status={status} />
+
+            {status.get('media_attachments').size > 0 && (
+              <AttachmentList
+                compact
+                media={status.get('media_attachments')}
+              />
+            )}
           </div>
         </div>
 
         <div className='boost-modal__action-bar'>
-          <div><FormattedMessage id='boost_modal.combo' defaultMessage='You can press {combo} to skip this next time' values={{ combo: <span>Shift + <i className='fa fa-retweet' /></span> }} /></div>
+          <div>
+            { missingMediaDescription ?
+                <FormattedMessage id='boost_modal.missing_description' defaultMessage='This toot contains some media without description' />
+              :
+                <FormattedMessage id='boost_modal.combo' defaultMessage='You can press {combo} to skip this next time' values={{ combo: <span>Shift + <i className='fa fa-retweet' /></span> }} />
+            }
+          </div>
           <Button text={intl.formatMessage(buttonText)} onClick={this.handleReblog} ref={this.setRef} />
         </div>
       </div>
diff --git a/app/javascript/flavours/glitch/features/ui/components/columns_area.js b/app/javascript/flavours/glitch/features/ui/components/columns_area.js
index 0fe580b9b..3a188ca87 100644
--- a/app/javascript/flavours/glitch/features/ui/components/columns_area.js
+++ b/app/javascript/flavours/glitch/features/ui/components/columns_area.js
@@ -5,7 +5,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes';
 import ImmutablePureComponent from 'react-immutable-pure-component';
 
 import ReactSwipeableViews from 'react-swipeable-views';
-import { links, getIndex, getLink } from './tabs_bar';
+import TabsBar, { links, getIndex, getLink } from './tabs_bar';
 import { Link } from 'react-router-dom';
 
 import BundleContainer from '../containers/bundle_container';
@@ -13,6 +13,8 @@ import ColumnLoading from './column_loading';
 import DrawerLoading from './drawer_loading';
 import BundleColumnError from './bundle_column_error';
 import { Compose, Notifications, HomeTimeline, CommunityTimeline, PublicTimeline, HashtagTimeline, DirectTimeline, FavouritedStatuses, BookmarkedStatuses, ListTimeline } from 'flavours/glitch/util/async-components';
+import ComposePanel from './compose_panel';
+import NavigationPanel from './navigation_panel';
 
 import detectPassiveEvents from 'detect-passive-events';
 import { scrollRight } from 'flavours/glitch/util/scroll';
@@ -49,6 +51,8 @@ export default class ColumnsArea extends ImmutablePureComponent {
     swipeToChangeColumns: PropTypes.bool,
     singleColumn: PropTypes.bool,
     children: PropTypes.node,
+    navbarUnder: PropTypes.bool,
+    openSettings: PropTypes.func,
   };
 
   state = {
@@ -139,7 +143,7 @@ export default class ColumnsArea extends ImmutablePureComponent {
       <ColumnLoading title={title} icon={icon} />;
 
     return (
-      <div className='columns-area' key={index}>
+      <div className='columns-area columns-area--mobile' key={index}>
         {view}
       </div>
     );
@@ -154,7 +158,7 @@ export default class ColumnsArea extends ImmutablePureComponent {
   }
 
   render () {
-    const { columns, children, singleColumn, swipeToChangeColumns, intl } = this.props;
+    const { columns, children, singleColumn, swipeToChangeColumns, intl, navbarUnder, openSettings } = this.props;
     const { shouldAnimate } = this.state;
 
     const columnIndex = getIndex(this.context.router.history.location.pathname);
@@ -163,17 +167,37 @@ export default class ColumnsArea extends ImmutablePureComponent {
     if (singleColumn) {
       const floatingActionButton = shouldHideFAB(this.context.router.history.location.pathname) ? null : <Link key='floating-action-button' to='/statuses/new' className='floating-action-button' aria-label={intl.formatMessage(messages.publish)}><i className='fa fa-pencil' /></Link>;
 
-      return columnIndex !== -1 ? [
+      const content = columnIndex !== -1 ? (
         <ReactSwipeableViews key='content' index={columnIndex} onChangeIndex={this.handleSwipe} onTransitionEnd={this.handleAnimationEnd} animateTransitions={shouldAnimate} springConfig={{ duration: '400ms', delay: '0s', easeFunction: 'ease' }} style={{ height: '100%' }} disabled={!swipeToChangeColumns}>
           {links.map(this.renderView)}
-        </ReactSwipeableViews>,
-
-        floatingActionButton,
-      ] : [
-        <div className='columns-area'>{children}</div>,
-
-        floatingActionButton,
-      ];
+        </ReactSwipeableViews>
+      ) : (
+        <div key='content' className='columns-area columns-area--mobile'>{children}</div>
+      );
+
+      return (
+        <div className='columns-area__panels'>
+          <div className='columns-area__panels__pane columns-area__panels__pane--compositional'>
+            <div className='columns-area__panels__pane__inner'>
+              <ComposePanel />
+            </div>
+          </div>
+
+          <div className='columns-area__panels__main'>
+            {!navbarUnder && <TabsBar key='tabs' />}
+            {content}
+            {navbarUnder && <TabsBar key='tabs' />}
+          </div>
+
+          <div className='columns-area__panels__pane columns-area__panels__pane--start columns-area__panels__pane--navigational'>
+            <div className='columns-area__panels__pane__inner'>
+              <NavigationPanel onOpenSettings={openSettings} />
+            </div>
+          </div>
+
+          {floatingActionButton}
+        </div>
+      );
     }
 
     return (
diff --git a/app/javascript/flavours/glitch/features/ui/components/compose_panel.js b/app/javascript/flavours/glitch/features/ui/components/compose_panel.js
new file mode 100644
index 000000000..f5eefee0d
--- /dev/null
+++ b/app/javascript/flavours/glitch/features/ui/components/compose_panel.js
@@ -0,0 +1,16 @@
+import React from 'react';
+import SearchContainer from 'flavours/glitch/features/compose/containers/search_container';
+import ComposeFormContainer from 'flavours/glitch/features/compose/containers/compose_form_container';
+import NavigationContainer from 'flavours/glitch/features/compose/containers/navigation_container';
+import LinkFooter from './link_footer';
+
+const ComposePanel = () => (
+  <div className='compose-panel'>
+    <SearchContainer openInRoute />
+    <NavigationContainer />
+    <ComposeFormContainer />
+    <LinkFooter withHotkeys />
+  </div>
+);
+
+export default ComposePanel;
diff --git a/app/javascript/flavours/glitch/features/ui/components/follow_requests_nav_link.js b/app/javascript/flavours/glitch/features/ui/components/follow_requests_nav_link.js
new file mode 100644
index 000000000..189f403bd
--- /dev/null
+++ b/app/javascript/flavours/glitch/features/ui/components/follow_requests_nav_link.js
@@ -0,0 +1,44 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+import { fetchFollowRequests } from 'flavours/glitch/actions/accounts';
+import { connect } from 'react-redux';
+import { NavLink, withRouter } from 'react-router-dom';
+import IconWithBadge from 'flavours/glitch/components/icon_with_badge';
+import { me } from 'flavours/glitch/util/initial_state';
+import { List as ImmutableList } from 'immutable';
+import { FormattedMessage } from 'react-intl';
+
+const mapStateToProps = state => ({
+  locked: state.getIn(['accounts', me, 'locked']),
+  count: state.getIn(['user_lists', 'follow_requests', 'items'], ImmutableList()).size,
+});
+
+export default @withRouter
+@connect(mapStateToProps)
+class FollowRequestsNavLink extends React.Component {
+
+  static propTypes = {
+    dispatch: PropTypes.func.isRequired,
+    locked: PropTypes.bool,
+    count: PropTypes.number.isRequired,
+  };
+
+  componentDidMount () {
+    const { dispatch, locked } = this.props;
+
+    if (locked) {
+      dispatch(fetchFollowRequests());
+    }
+  }
+
+  render () {
+    const { locked, count } = this.props;
+
+    if (!locked || count === 0) {
+      return null;
+    }
+
+    return <NavLink className='column-link column-link--transparent' to='/follow_requests'><IconWithBadge className='column-link__icon' id='user-plus' count={count} /><FormattedMessage id='navigation_bar.follow_requests' defaultMessage='Follow requests' /></NavLink>;
+  }
+
+}
diff --git a/app/javascript/flavours/glitch/features/ui/components/link_footer.js b/app/javascript/flavours/glitch/features/ui/components/link_footer.js
new file mode 100644
index 000000000..3e724fffb
--- /dev/null
+++ b/app/javascript/flavours/glitch/features/ui/components/link_footer.js
@@ -0,0 +1,36 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+import { FormattedMessage } from 'react-intl';
+import { Link } from 'react-router-dom';
+import { invitesEnabled, version, repository, source_url } from 'flavours/glitch/util/initial_state';
+import { signOutLink } from 'flavours/glitch/util/backend_links';
+
+const LinkFooter = () => (
+  <div className='getting-started__footer'>
+    <ul>
+      {invitesEnabled && <li><a href='/invites' target='_blank'><FormattedMessage id='getting_started.invite' defaultMessage='Invite people' /></a> · </li>}
+      <li><a href='/auth/edit'><FormattedMessage id='getting_started.security' defaultMessage='Security' /></a> · </li>
+      <li><a href='/about/more' target='_blank'><FormattedMessage id='navigation_bar.info' defaultMessage='About this server' /></a> · </li>
+      <li><a href='https://joinmastodon.org/apps' target='_blank'><FormattedMessage id='navigation_bar.apps' defaultMessage='Mobile apps' /></a> · </li>
+      <li><a href='/terms' target='_blank'><FormattedMessage id='getting_started.terms' defaultMessage='Terms of service' /></a> · </li>
+      <li><a href='/settings/applications' target='_blank'><FormattedMessage id='getting_started.developers' defaultMessage='Developers' /></a> · </li>
+      <li><a href='https://docs.joinmastodon.org' target='_blank'><FormattedMessage id='getting_started.documentation' defaultMessage='Documentation' /></a> · </li>
+      <li><a href={signOutLink} data-method='delete'><FormattedMessage id='navigation_bar.logout' defaultMessage='Logout' /></a></li>
+    </ul>
+
+    <p>
+      <FormattedMessage
+        id='getting_started.open_source_notice'
+        defaultMessage='Glitchsoc is open source software, a friendly fork of {Mastodon}. You can contribute or report issues on GitHub at {github}.'
+        values={{
+          github: <span><a href='https://github.com/glitch-soc/mastodon' rel='noopener' target='_blank'>glitch-soc/mastodon</a> (v{version})</span>,
+          Mastodon: <a href='https://github.com/tootsuite/mastodon' rel='noopener' target='_blank'>Mastodon</a> }}
+      />
+    </p>
+  </div>
+);
+
+LinkFooter.propTypes = {
+};
+
+export default LinkFooter;
diff --git a/app/javascript/flavours/glitch/features/ui/components/list_panel.js b/app/javascript/flavours/glitch/features/ui/components/list_panel.js
new file mode 100644
index 000000000..b2e6925b7
--- /dev/null
+++ b/app/javascript/flavours/glitch/features/ui/components/list_panel.js
@@ -0,0 +1,55 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+import ImmutablePropTypes from 'react-immutable-proptypes';
+import ImmutablePureComponent from 'react-immutable-pure-component';
+import { fetchLists } from 'flavours/glitch/actions/lists';
+import { connect } from 'react-redux';
+import { createSelector } from 'reselect';
+import { NavLink, withRouter } from 'react-router-dom';
+import Icon from 'flavours/glitch/components/icon';
+
+const getOrderedLists = createSelector([state => state.get('lists')], lists => {
+  if (!lists) {
+    return lists;
+  }
+
+  return lists.toList().filter(item => !!item).sort((a, b) => a.get('title').localeCompare(b.get('title'))).take(4);
+});
+
+const mapStateToProps = state => ({
+  lists: getOrderedLists(state),
+});
+
+export default @withRouter
+@connect(mapStateToProps)
+class ListPanel extends ImmutablePureComponent {
+
+  static propTypes = {
+    dispatch: PropTypes.func.isRequired,
+    lists: ImmutablePropTypes.list,
+  };
+
+  componentDidMount () {
+    const { dispatch } = this.props;
+    dispatch(fetchLists());
+  }
+
+  render () {
+    const { lists } = this.props;
+
+    if (!lists || lists.isEmpty()) {
+      return null;
+    }
+
+    return (
+      <div>
+        <hr />
+
+        {lists.map(list => (
+          <NavLink key={list.get('id')} className='column-link column-link--transparent' strict to={`/timelines/list/${list.get('id')}`}><Icon className='column-link__icon' icon='list-ul' fixedWidth />{list.get('title')}</NavLink>
+        ))}
+      </div>
+    );
+  }
+
+}
diff --git a/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js b/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js
new file mode 100644
index 000000000..4688c7766
--- /dev/null
+++ b/app/javascript/flavours/glitch/features/ui/components/navigation_panel.js
@@ -0,0 +1,32 @@
+import React from 'react';
+import { NavLink, withRouter } from 'react-router-dom';
+import { FormattedMessage } from 'react-intl';
+import Icon from 'flavours/glitch/components/icon';
+import { profile_directory } from 'flavours/glitch/util/initial_state';
+import NotificationsCounterIcon from './notifications_counter_icon';
+import FollowRequestsNavLink from './follow_requests_nav_link';
+import ListPanel from './list_panel';
+
+const NavigationPanel = ({ onOpenSettings }) => (
+  <div className='navigation-panel'>
+    <NavLink className='column-link column-link--transparent' to='/timelines/home' data-preview-title-id='column.home' data-preview-icon='home' ><Icon className='column-link__icon' icon='home' fixedWidth /><FormattedMessage id='tabs_bar.home' defaultMessage='Home' /></NavLink>
+    <NavLink className='column-link column-link--transparent' to='/notifications' data-preview-title-id='column.notifications' data-preview-icon='bell' ><NotificationsCounterIcon className='column-link__icon' /><FormattedMessage id='tabs_bar.notifications' defaultMessage='Notifications' /></NavLink>
+    <FollowRequestsNavLink />
+    <NavLink className='column-link column-link--transparent' to='/timelines/public/local' data-preview-title-id='column.community' data-preview-icon='users' ><Icon className='column-link__icon' icon='users' fixedWidth /><FormattedMessage id='tabs_bar.local_timeline' defaultMessage='Local' /></NavLink>
+    <NavLink className='column-link column-link--transparent' exact to='/timelines/public' data-preview-title-id='column.public' data-preview-icon='globe' ><Icon className='column-link__icon' icon='globe' fixedWidth /><FormattedMessage id='tabs_bar.federated_timeline' defaultMessage='Federated' /></NavLink>
+    <NavLink className='column-link column-link--transparent' to='/timelines/direct'><Icon className='column-link__icon' icon='envelope' fixedWidth /><FormattedMessage id='navigation_bar.direct' defaultMessage='Direct messages' /></NavLink>
+    <NavLink className='column-link column-link--transparent' to='/bookmarks'><Icon className='column-link__icon' icon='bookmark' fixedWidth /><FormattedMessage id='navigation_bar.bookmarks' defaultMessage='Bookmarks' /></NavLink>
+    <NavLink className='column-link column-link--transparent' to='/lists'><Icon className='column-link__icon' icon='list-ul' fixedWidth /><FormattedMessage id='navigation_bar.lists' defaultMessage='Lists' /></NavLink>
+
+    <ListPanel />
+
+    <hr />
+
+    <a className='column-link column-link--transparent' href='/settings/preferences' target='_blank'><Icon className='column-link__icon' icon='cog' fixedWidth /><FormattedMessage id='navigation_bar.preferences' defaultMessage='Preferences' /></a>
+    <a className='column-link column-link--transparent' href='#' onClick={onOpenSettings}><Icon className='column-link__icon' icon='cogs' fixedWidth /><FormattedMessage id='navigation_bar.app_settings' defaultMessage='App settings' /></a>
+    <a className='column-link column-link--transparent' href='/relationships' target='_blank'><Icon className='column-link__icon' icon='users' fixedWidth /><FormattedMessage id='navigation_bar.follows_and_followers' defaultMessage='Follows and followers' /></a>
+    {!!profile_directory && <a className='column-link column-link--transparent' href='/explore'><Icon className='column-link__icon' id='address-book-o' fixedWidth /><FormattedMessage id='navigation_bar.profile_directory' defaultMessage='Profile directory' /></a>}
+  </div>
+);
+
+export default withRouter(NavigationPanel);
diff --git a/app/javascript/flavours/glitch/features/ui/components/notifications_counter_icon.js b/app/javascript/flavours/glitch/features/ui/components/notifications_counter_icon.js
new file mode 100644
index 000000000..6b52ef9b4
--- /dev/null
+++ b/app/javascript/flavours/glitch/features/ui/components/notifications_counter_icon.js
@@ -0,0 +1,9 @@
+import { connect } from 'react-redux';
+import IconWithBadge from 'flavours/glitch/components/icon_with_badge';
+
+const mapStateToProps = state => ({
+  count: state.getIn(['local_settings', 'notifications', 'tab_badge']) ? state.getIn(['notifications', 'unread']) : 0,
+  id: 'bell',
+});
+
+export default connect(mapStateToProps)(IconWithBadge);
diff --git a/app/javascript/flavours/glitch/features/ui/components/tabs_bar.js b/app/javascript/flavours/glitch/features/ui/components/tabs_bar.js
index b44a21a42..dbd08aa2b 100644
--- a/app/javascript/flavours/glitch/features/ui/components/tabs_bar.js
+++ b/app/javascript/flavours/glitch/features/ui/components/tabs_bar.js
@@ -4,40 +4,16 @@ import { NavLink, withRouter } from 'react-router-dom';
 import { FormattedMessage, injectIntl } from 'react-intl';
 import { debounce } from 'lodash';
 import { isUserTouching } from 'flavours/glitch/util/is_mobile';
-import { connect } from 'react-redux';
-
-const mapStateToProps = state => ({
-  unreadNotifications: state.getIn(['notifications', 'unread']),
-  showBadge: state.getIn(['local_settings', 'notifications', 'tab_badge']),
-});
-
-@connect(mapStateToProps)
-class NotificationsIcon extends React.PureComponent {
-  static propTypes = {
-    unreadNotifications: PropTypes.number,
-    showBadge: PropTypes.bool,
-  };
-
-  render() {
-    const { unreadNotifications, showBadge } = this.props;
-    return (
-      <span className='icon-badge-wrapper'>
-        <i className='fa fa-fw fa-bell' />
-        { showBadge && unreadNotifications > 0 && <div className='icon-badge' />}
-      </span>
-    );
-  }
-}
+import NotificationsCounterIcon from './notifications_counter_icon';
 
 export const links = [
-  <NavLink className='tabs-bar__link primary' to='/timelines/home' data-preview-title-id='column.home' data-preview-icon='home' ><i className='fa fa-fw fa-home' /><FormattedMessage id='tabs_bar.home' defaultMessage='Home' /></NavLink>,
-  <NavLink className='tabs-bar__link primary' to='/notifications' data-preview-title-id='column.notifications' data-preview-icon='bell' ><NotificationsIcon /><FormattedMessage id='tabs_bar.notifications' defaultMessage='Notifications' /></NavLink>,
-
-  <NavLink className='tabs-bar__link secondary' to='/timelines/public/local' data-preview-title-id='column.community' data-preview-icon='users' ><i className='fa fa-fw fa-users' /><FormattedMessage id='tabs_bar.local_timeline' defaultMessage='Local' /></NavLink>,
-  <NavLink className='tabs-bar__link secondary' exact to='/timelines/public' data-preview-title-id='column.public' data-preview-icon='globe' ><i className='fa fa-fw fa-globe' /><FormattedMessage id='tabs_bar.federated_timeline' defaultMessage='Federated' /></NavLink>,
-  <NavLink className='tabs-bar__link primary' to='/search' data-preview-title-id='tabs_bar.search' data-preview-icon='bell' ><i className='fa fa-fw fa-search' /><FormattedMessage id='tabs_bar.search' defaultMessage='Search' /></NavLink>,
+  <NavLink className='tabs-bar__link' to='/timelines/home' data-preview-title-id='column.home' data-preview-icon='home' ><i className='fa fa-fw fa-home' /><FormattedMessage id='tabs_bar.home' defaultMessage='Home' /></NavLink>,
+  <NavLink className='tabs-bar__link' to='/notifications' data-preview-title-id='column.notifications' data-preview-icon='bell' ><NotificationsCounterIcon /><FormattedMessage id='tabs_bar.notifications' defaultMessage='Notifications' /></NavLink>,
 
-  <NavLink className='tabs-bar__link primary' style={{ flexGrow: '0', flexBasis: '30px' }} to='/getting-started' data-preview-title-id='getting_started.heading' data-preview-icon='bars' ><i className='fa fa-fw fa-bars' /></NavLink>,
+  <NavLink className='tabs-bar__link' to='/timelines/public/local' data-preview-title-id='column.community' data-preview-icon='users' ><i className='fa fa-fw fa-users' /><FormattedMessage id='tabs_bar.local_timeline' defaultMessage='Local' /></NavLink>,
+  <NavLink className='tabs-bar__link' exact to='/timelines/public' data-preview-title-id='column.public' data-preview-icon='globe' ><i className='fa fa-fw fa-globe' /><FormattedMessage id='tabs_bar.federated_timeline' defaultMessage='Federated' /></NavLink>,
+  <NavLink className='tabs-bar__link optional' to='/search' data-preview-title-id='tabs_bar.search' data-preview-icon='bell' ><i className='fa fa-fw fa-search' /><FormattedMessage id='tabs_bar.search' defaultMessage='Search' /></NavLink>,
+  <NavLink className='tabs-bar__link' style={{ flexGrow: '0', flexBasis: '30px' }} to='/getting-started' data-preview-title-id='getting_started.heading' data-preview-icon='bars' ><i className='fa fa-fw fa-bars' /></NavLink>,
 ];
 
 export function getIndex (path) {
diff --git a/app/javascript/flavours/glitch/features/ui/containers/columns_area_container.js b/app/javascript/flavours/glitch/features/ui/containers/columns_area_container.js
index ba194a002..b69842cd6 100644
--- a/app/javascript/flavours/glitch/features/ui/containers/columns_area_container.js
+++ b/app/javascript/flavours/glitch/features/ui/containers/columns_area_container.js
@@ -1,9 +1,18 @@
 import { connect } from 'react-redux';
 import ColumnsArea from '../components/columns_area';
+import { openModal } from 'flavours/glitch/actions/modal';
 
 const mapStateToProps = state => ({
   columns: state.getIn(['settings', 'columns']),
   swipeToChangeColumns: state.getIn(['local_settings', 'swipe_to_change_columns']),
 });
 
-export default connect(mapStateToProps, null, null, { forwardRef: true })(ColumnsArea);
+const mapDispatchToProps = dispatch => ({
+  openSettings (e) {
+    e.preventDefault();
+    e.stopPropagation();
+    dispatch(openModal('SETTINGS', {}));
+  },
+});
+
+export default connect(mapStateToProps, mapDispatchToProps, null, { forwardRef: true })(ColumnsArea);
diff --git a/app/javascript/flavours/glitch/features/ui/index.js b/app/javascript/flavours/glitch/features/ui/index.js
index f8fff934d..787488db4 100644
--- a/app/javascript/flavours/glitch/features/ui/index.js
+++ b/app/javascript/flavours/glitch/features/ui/index.js
@@ -2,7 +2,6 @@ import React from 'react';
 import NotificationsContainer from './containers/notifications_container';
 import PropTypes from 'prop-types';
 import LoadingBarContainer from './containers/loading_bar_container';
-import TabsBar from './components/tabs_bar';
 import ModalContainer from './containers/modal_container';
 import { connect } from 'react-redux';
 import { Redirect, withRouter } from 'react-router-dom';
@@ -45,6 +44,7 @@ import {
   Mutes,
   PinnedStatuses,
   Lists,
+  Search,
   GettingStartedMisc,
 } from 'flavours/glitch/util/async-components';
 import { HotKeys } from 'react-hotkeys';
@@ -270,19 +270,6 @@ export default class UI extends React.Component {
     };
   }
 
-  shouldComponentUpdate (nextProps) {
-    if (nextProps.navbarUnder !== this.props.navbarUnder) {
-      // Avoid expensive update just to toggle a class
-      this.node.classList.toggle('navbar-under', nextProps.navbarUnder);
-
-      return false;
-    }
-
-    // Why isn't this working?!?
-    // return super.shouldComponentUpdate(nextProps, nextState);
-    return true;
-  }
-
   componentDidUpdate (prevProps) {
     if (![this.props.location.pathname, '/'].includes(prevProps.location.pathname)) {
       this.columnsAreaNode.handleChildrenContentChange();
@@ -320,7 +307,7 @@ export default class UI extends React.Component {
   handleHotkeyNew = e => {
     e.preventDefault();
 
-    const element = this.node.querySelector('.composer--textarea textarea');
+    const element = this.node.querySelector('.compose-form__autosuggest-wrapper textarea');
 
     if (element) {
       element.focus();
@@ -432,6 +419,8 @@ export default class UI extends React.Component {
   render () {
     const { width, draggingOver } = this.state;
     const { children, layout, isWide, navbarUnder, dropdownMenuIsOpen } = this.props;
+    const singleColumn = isMobile(width, layout);
+    const redirect = singleColumn ? <Redirect from='/' to='/timelines/home' exact /> : <Redirect from='/' to='/getting-started' exact />;
 
     const columnsClass = layout => {
       switch (layout) {
@@ -475,11 +464,9 @@ export default class UI extends React.Component {
     return (
       <HotKeys keyMap={keyMap} handlers={handlers} ref={this.setHotkeysRef} attach={window} focused>
         <div className={className} ref={this.setRef} style={{ pointerEvents: dropdownMenuIsOpen ? 'none' : null }}>
-          {navbarUnder ? null : (<TabsBar />)}
-
-          <ColumnsAreaContainer ref={this.setColumnsAreaRef} singleColumn={isMobile(width, layout)}>
+          <ColumnsAreaContainer ref={this.setColumnsAreaRef} singleColumn={singleColumn} navbarUnder={navbarUnder}>
             <WrappedSwitch>
-              <Redirect from='/' to='/getting-started' exact />
+              {redirect}
               <WrappedRoute path='/getting-started' component={GettingStarted} content={children} />
               <WrappedRoute path='/keyboard-shortcuts' component={KeyboardShortcuts} content={children} />
               <WrappedRoute path='/timelines/home' component={HomeTimeline} content={children} />
@@ -493,7 +480,7 @@ export default class UI extends React.Component {
               <WrappedRoute path='/bookmarks' component={BookmarkedStatuses} content={children} />
               <WrappedRoute path='/pinned' component={PinnedStatuses} content={children} />
 
-              <WrappedRoute path='/search' component={Compose} content={children} componentParams={{ isSearchPage: true }} />
+              <WrappedRoute path='/search' component={Search} content={children} />
 
               <WrappedRoute path='/statuses/new' component={Compose} content={children} />
               <WrappedRoute path='/statuses/:statusId' exact component={Status} content={children} />
@@ -518,7 +505,6 @@ export default class UI extends React.Component {
           </ColumnsAreaContainer>
 
           <NotificationsContainer />
-          {navbarUnder ? (<TabsBar />) : null}
           <LoadingBarContainer className='loading-bar' />
           <ModalContainer />
           <UploadArea active={draggingOver} onClose={this.closeUploadModal} />
diff --git a/app/javascript/flavours/glitch/reducers/conversations.js b/app/javascript/flavours/glitch/reducers/conversations.js
new file mode 100644
index 000000000..c01659da5
--- /dev/null
+++ b/app/javascript/flavours/glitch/reducers/conversations.js
@@ -0,0 +1,102 @@
+import { Map as ImmutableMap, List as ImmutableList } from 'immutable';
+import {
+  CONVERSATIONS_MOUNT,
+  CONVERSATIONS_UNMOUNT,
+  CONVERSATIONS_FETCH_REQUEST,
+  CONVERSATIONS_FETCH_SUCCESS,
+  CONVERSATIONS_FETCH_FAIL,
+  CONVERSATIONS_UPDATE,
+  CONVERSATIONS_READ,
+} from '../actions/conversations';
+import compareId from 'flavours/glitch/util/compare_id';
+
+const initialState = ImmutableMap({
+  items: ImmutableList(),
+  isLoading: false,
+  hasMore: true,
+  mounted: 0,
+});
+
+const conversationToMap = item => ImmutableMap({
+  id: item.id,
+  unread: item.unread,
+  accounts: ImmutableList(item.accounts.map(a => a.id)),
+  last_status: item.last_status ? item.last_status.id : null,
+});
+
+const updateConversation = (state, item) => state.update('items', list => {
+  const index   = list.findIndex(x => x.get('id') === item.id);
+  const newItem = conversationToMap(item);
+
+  if (index === -1) {
+    return list.unshift(newItem);
+  } else {
+    return list.set(index, newItem);
+  }
+});
+
+const expandNormalizedConversations = (state, conversations, next, isLoadingRecent) => {
+  let items = ImmutableList(conversations.map(conversationToMap));
+
+  return state.withMutations(mutable => {
+    if (!items.isEmpty()) {
+      mutable.update('items', list => {
+        list = list.map(oldItem => {
+          const newItemIndex = items.findIndex(x => x.get('id') === oldItem.get('id'));
+
+          if (newItemIndex === -1) {
+            return oldItem;
+          }
+
+          const newItem = items.get(newItemIndex);
+          items = items.delete(newItemIndex);
+
+          return newItem;
+        });
+
+        list = list.concat(items);
+
+        return list.sortBy(x => x.get('last_status'), (a, b) => {
+          if(a === null || b === null) {
+            return -1;
+          }
+
+          return compareId(a, b) * -1;
+        });
+      });
+    }
+
+    if (!next && !isLoadingRecent) {
+      mutable.set('hasMore', false);
+    }
+
+    mutable.set('isLoading', false);
+  });
+};
+
+export default function conversations(state = initialState, action) {
+  switch (action.type) {
+  case CONVERSATIONS_FETCH_REQUEST:
+    return state.set('isLoading', true);
+  case CONVERSATIONS_FETCH_FAIL:
+    return state.set('isLoading', false);
+  case CONVERSATIONS_FETCH_SUCCESS:
+    return expandNormalizedConversations(state, action.conversations, action.next, action.isLoadingRecent);
+  case CONVERSATIONS_UPDATE:
+    return updateConversation(state, action.conversation);
+  case CONVERSATIONS_MOUNT:
+    return state.update('mounted', count => count + 1);
+  case CONVERSATIONS_UNMOUNT:
+    return state.update('mounted', count => count - 1);
+  case CONVERSATIONS_READ:
+    return state.update('items', list => list.map(item => {
+      if (item.get('id') === action.id) {
+        return item.set('unread', false);
+      }
+
+      return item;
+    }));
+  default:
+    return state;
+  }
+};
diff --git a/app/javascript/flavours/glitch/reducers/index.js b/app/javascript/flavours/glitch/reducers/index.js
index 45b93b92c..266d87dc1 100644
--- a/app/javascript/flavours/glitch/reducers/index.js
+++ b/app/javascript/flavours/glitch/reducers/index.js
@@ -28,6 +28,7 @@ import lists from './lists';
 import listEditor from './list_editor';
 import listAdder from './list_adder';
 import filters from './filters';
+import conversations from './conversations';
 import suggestions from './suggestions';
 import pinnedAccountsEditor from './pinned_accounts_editor';
 import polls from './polls';
@@ -64,6 +65,7 @@ const reducers = {
   listEditor,
   listAdder,
   filters,
+  conversations,
   suggestions,
   pinnedAccountsEditor,
   polls,
diff --git a/app/javascript/flavours/glitch/reducers/local_settings.js b/app/javascript/flavours/glitch/reducers/local_settings.js
index 5716c5982..68e1c8424 100644
--- a/app/javascript/flavours/glitch/reducers/local_settings.js
+++ b/app/javascript/flavours/glitch/reducers/local_settings.js
@@ -15,6 +15,7 @@ const initialState = ImmutableMap({
   show_reply_count : false,
   always_show_spoilers_field: false,
   confirm_missing_media_description: false,
+  confirm_boost_missing_media_description: false,
   confirm_before_clearing_draft: true,
   preselect_on_reply: true,
   inline_preview_cards: true,
diff --git a/app/javascript/flavours/glitch/reducers/notifications.js b/app/javascript/flavours/glitch/reducers/notifications.js
index 04ae3d406..5bbf9c822 100644
--- a/app/javascript/flavours/glitch/reducers/notifications.js
+++ b/app/javascript/flavours/glitch/reducers/notifications.js
@@ -27,7 +27,7 @@ import compareId from 'flavours/glitch/util/compare_id';
 const initialState = ImmutableMap({
   items: ImmutableList(),
   hasMore: true,
-  top: true,
+  top: false,
   mounted: 0,
   unread: 0,
   lastReadId: '0',
diff --git a/app/javascript/flavours/glitch/reducers/settings.js b/app/javascript/flavours/glitch/reducers/settings.js
index cc86a6b20..a37863a69 100644
--- a/app/javascript/flavours/glitch/reducers/settings.js
+++ b/app/javascript/flavours/glitch/reducers/settings.js
@@ -72,6 +72,7 @@ const initialState = ImmutableMap({
   }),
 
   direct: ImmutableMap({
+    conversations: true,
     regex: ImmutableMap({
       body: '',
     }),
diff --git a/app/javascript/flavours/glitch/styles/accounts.scss b/app/javascript/flavours/glitch/styles/accounts.scss
index 8b8c615ee..0fae137f0 100644
--- a/app/javascript/flavours/glitch/styles/accounts.scss
+++ b/app/javascript/flavours/glitch/styles/accounts.scss
@@ -199,7 +199,8 @@
   }
 }
 
-.account-role {
+.account-role,
+.simple_form .recommended {
   display: inline-block;
   padding: 4px 6px;
   cursor: default;
diff --git a/app/javascript/flavours/glitch/styles/components/accounts.scss b/app/javascript/flavours/glitch/styles/components/accounts.scss
index c0340e3f8..d2233207d 100644
--- a/app/javascript/flavours/glitch/styles/components/accounts.scss
+++ b/app/javascript/flavours/glitch/styles/components/accounts.scss
@@ -46,6 +46,18 @@
     vertical-align: middle;
     margin-right: 5px;
   }
+
+  &-composite {
+    @include avatar-radius;
+    overflow: hidden;
+
+    & div {
+      @include avatar-radius;
+      float: left;
+      position: relative;
+      box-sizing: border-box;
+    }
+  }
 }
 
 .account__avatar-overlay {
diff --git a/app/javascript/flavours/glitch/styles/components/columns.scss b/app/javascript/flavours/glitch/styles/components/columns.scss
index 7a8accc27..b354e7acf 100644
--- a/app/javascript/flavours/glitch/styles/components/columns.scss
+++ b/app/javascript/flavours/glitch/styles/components/columns.scss
@@ -11,15 +11,42 @@
   justify-content: flex-start;
   overflow-x: auto;
   position: relative;
-}
 
-@include limited-single-column('screen and (min-width: 360px)', $parent: null) {
-  .columns-area {
-    padding: 10px;
-  }
+  &__panels {
+    display: flex;
+    justify-content: center;
+    width: 100%;
+    height: 100%;
+
+    &__pane {
+      height: 100%;
+      overflow: hidden;
+      pointer-events: none;
+      display: flex;
+      justify-content: flex-end;
+
+      &--start {
+        justify-content: flex-start;
+      }
+
+      &__inner {
+        width: 285px;
+        pointer-events: auto;
+        height: 100%;
+      }
+    }
 
-  .react-swipeable-view-container .columns-area {
-    height: calc(100% - 20px) !important;
+    &__main {
+      box-sizing: border-box;
+      width: 100%;
+      max-width: 600px;
+      display: flex;
+      flex-direction: column;
+
+      @media screen and (min-width: 360px) {
+        padding: 0 10px;
+      }
+    }
   }
 }
 
@@ -63,62 +90,6 @@
   overflow: hidden;
 }
 
-@include limited-single-column('screen and (min-width: 360px)', $parent: null) {
-  .tabs-bar {
-    margin: 10px;
-    margin-bottom: 0;
-  }
-}
-
-:root {  //  Overrides .wide stylings for mobile view
-  @include single-column('screen and (max-width: 630px)', $parent: null) {
-    .column {
-      flex: auto;
-      width: 100%;
-      min-width: 0;
-      max-width: none;
-      padding: 0;
-    }
-
-    .columns-area {
-      flex-direction: column;
-    }
-
-    .search__input,
-    .autosuggest-textarea__textarea {
-      font-size: 16px;
-    }
-  }
-}
-
-@include multi-columns('screen and (min-width: 631px)', $parent: null) {
-  .columns-area {
-    padding: 0;
-  }
-
-  .column {
-    flex: 0 0 auto;
-    padding: 10px;
-    padding-left: 5px;
-    padding-right: 5px;
-
-    &:first-child {
-      padding-left: 10px;
-    }
-
-    &:last-child {
-      padding-right: 10px;
-    }
-  }
-
-  .columns-area > div {
-    .column {
-      padding-left: 5px;
-      padding-right: 5px;
-    }
-  }
-}
-
 .column-back-button {
   background: lighten($ui-base-color, 4%);
   color: $highlight-text-color;
@@ -183,9 +154,31 @@
   padding: 15px;
   text-decoration: none;
 
-  &:hover {
+  &:hover,
+  &:focus,
+  &:active {
     background: lighten($ui-base-color, 11%);
   }
+
+  &:focus {
+    outline: 0;
+  }
+
+  &--transparent {
+    background: transparent;
+    color: $ui-secondary-color;
+
+    &:hover,
+    &:focus,
+    &:active {
+      background: transparent;
+      color: $primary-text-color;
+    }
+
+    &.active {
+      color: $ui-highlight-color;
+    }
+  }
 }
 
 .column-link__icon {
@@ -277,7 +270,7 @@
   flex-direction: column;
   overflow: hidden;
 
-  .wide & {
+  .wide .columns-area:not(.columns-area--mobile) & {
     flex: auto;
     min-width: 330px;
     max-width: 400px;
@@ -294,6 +287,10 @@
   margin-left: 0;
 }
 
+.column-header__links {
+  margin-bottom: 14px;
+}
+
 .column-header__links .text-btn {
   margin-right: 10px;
 }
@@ -438,6 +435,10 @@
     contain: strict;
   }
 
+  & > span {
+    max-width: 400px;
+  }
+
   a {
     color: $highlight-text-color;
     text-decoration: none;
@@ -503,27 +504,3 @@
     margin: 0 5px;
   }
 }
-
-.floating-action-button {
-  position: fixed;
-  display: flex;
-  justify-content: center;
-  align-items: center;
-  width: 3.9375rem;
-  height: 3.9375rem;
-  bottom: 1.3125rem;
-  right: 1.3125rem;
-  background: darken($ui-highlight-color, 3%);
-  color: $white;
-  border-radius: 50%;
-  font-size: 21px;
-  line-height: 21px;
-  text-decoration: none;
-  box-shadow: 2px 3px 9px rgba($base-shadow-color, 0.4);
-
-  &:hover,
-  &:focus,
-  &:active {
-    background: lighten($ui-highlight-color, 7%);
-  }
-}
diff --git a/app/javascript/flavours/glitch/styles/components/composer.scss b/app/javascript/flavours/glitch/styles/components/composer.scss
index ba517a2ab..62eca49a1 100644
--- a/app/javascript/flavours/glitch/styles/components/composer.scss
+++ b/app/javascript/flavours/glitch/styles/components/composer.scss
@@ -12,7 +12,8 @@
   opacity: 0.0;
 
   &.composer--spoiler--visible {
-    height: 47px;
+    height: 36px;
+    margin-bottom: 11px;
     opacity: 1.0;
   }
 
@@ -98,6 +99,9 @@
   border-radius: 4px;
   padding: 10px;
   background: $ui-primary-color;
+  min-height: 23px;
+  overflow-y: auto;
+  flex: 0 2 auto;
 
   & > header {
     margin-bottom: 5px;
@@ -225,7 +229,7 @@
   }
 }
 
-.composer--textarea,
+.compose-form__autosuggest-wrapper,
 .autosuggest-input {
   position: relative;
 
@@ -284,6 +288,11 @@
   }
 }
 
+.autosuggest-textarea__suggestions-wrapper {
+  position: relative;
+  height: 0;
+}
+
 .autosuggest-textarea__suggestions {
   display: block;
   position: absolute;
@@ -485,6 +494,7 @@
   box-shadow: inset 0 5px 5px rgba($base-shadow-color, 0.05);
   border-radius: 0 0 4px 4px;
   height: 27px;
+  flex: 0 0 auto;
 
   & > * {
     display: inline-block;
@@ -575,6 +585,7 @@
   text-align: right;
   white-space: nowrap;
   overflow: hidden;
+  justify-content: flex-end;
 
   & > .count {
     display: inline-block;
diff --git a/app/javascript/flavours/glitch/styles/components/drawer.scss b/app/javascript/flavours/glitch/styles/components/drawer.scss
index 9f426448f..f054ddbc0 100644
--- a/app/javascript/flavours/glitch/styles/components/drawer.scss
+++ b/app/javascript/flavours/glitch/styles/components/drawer.scss
@@ -86,9 +86,8 @@
     box-sizing: border-box;
     margin: 0;
     border: none;
-    padding: 10px 30px 10px 10px;
+    padding: 15px 30px 15px 15px;
     width: 100%;
-    height: 36px;
     outline: 0;
     color: $darker-text-color;
     background: $ui-base-color;
@@ -276,6 +275,7 @@
   background: lighten($ui-base-color, 13%) url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 234.80078 31.757813" width="234.80078" height="31.757812"><path d="M19.599609 0c-1.05 0-2.10039.375-2.90039 1.125L0 16.925781v14.832031h234.80078V17.025391l-16.5-15.900391c-1.6-1.5-4.20078-1.5-5.80078 0l-13.80078 13.099609c-1.6 1.5-4.19883 1.5-5.79883 0L179.09961 1.125c-1.6-1.5-4.19883-1.5-5.79883 0L159.5 14.224609c-1.6 1.5-4.20078 1.5-5.80078 0L139.90039 1.125c-1.6-1.5-4.20078-1.5-5.80078 0l-13.79883 13.099609c-1.6 1.5-4.20078 1.5-5.80078 0L100.69922 1.125c-1.600001-1.5-4.198829-1.5-5.798829 0l-13.59961 13.099609c-1.6 1.5-4.200781 1.5-5.800781 0L61.699219 1.125c-1.6-1.5-4.198828-1.5-5.798828 0L42.099609 14.224609c-1.6 1.5-4.198828 1.5-5.798828 0L22.5 1.125C21.7.375 20.649609 0 19.599609 0z" fill="#{hex-color($ui-base-color)}"/></svg>') no-repeat bottom / 100% auto;
   flex: 1;
   min-height: 47px;
+  display: none;
 
   > img {
     display: block;
@@ -295,6 +295,10 @@
     border: none;
     cursor: inherit;
   }
+
+  @media screen and (min-height: 640px) {
+    display: block;
+  }
 }
 
 .pseudo-drawer {
diff --git a/app/javascript/flavours/glitch/styles/components/index.scss b/app/javascript/flavours/glitch/styles/components/index.scss
index 63211392e..9f96a3154 100644
--- a/app/javascript/flavours/glitch/styles/components/index.scss
+++ b/app/javascript/flavours/glitch/styles/components/index.scss
@@ -287,8 +287,12 @@
   text-overflow: ellipsis;
   white-space: nowrap;
 
+  a {
+    color: inherit;
+    text-decoration: inherit;
+  }
+
   strong {
-    display: block;
     height: 18px;
     font-size: 16px;
     font-weight: 500;
@@ -308,7 +312,7 @@
     white-space: nowrap;
   }
 
-  &:hover {
+  > a:hover {
     strong {
       text-decoration: underline;
     }
@@ -548,7 +552,44 @@
   }
 }
 
+.column,
+.drawer {
+  flex: 1 1 100%;
+  overflow: hidden;
+}
+
+@media screen and (min-width: 631px) {
+  .columns-area {
+    padding: 0;
+  }
+
+  .column,
+  .drawer {
+    flex: 0 0 auto;
+    padding: 10px;
+    padding-left: 5px;
+    padding-right: 5px;
+
+    &:first-child {
+      padding-left: 10px;
+    }
+
+    &:last-child {
+      padding-right: 10px;
+    }
+  }
+
+  .columns-area > div {
+    .column,
+    .drawer {
+      padding-left: 5px;
+      padding-right: 5px;
+    }
+  }
+}
+
 .tabs-bar {
+  box-sizing: border-box;
   display: flex;
   background: lighten($ui-base-color, 8%);
   flex: 0 0 auto;
@@ -559,6 +600,7 @@
   display: block;
   flex: 1 1 auto;
   padding: 15px 10px;
+  padding-bottom: 13px;
   color: $primary-text-color;
   text-decoration: none;
   text-align: center;
@@ -573,31 +615,53 @@
     font-size: 16px;
   }
 
-  &.active {
-    border-bottom: 2px solid $ui-highlight-color;
-    color: $highlight-text-color;
-  }
-
   &:hover,
   &:focus,
   &:active {
     @include multi-columns('screen and (min-width: 631px)') {
       background: lighten($ui-base-color, 14%);
+      border-bottom-color: lighten($ui-base-color, 14%);
     }
   }
 
-  span:last-child {
+  &.active {
+    border-bottom: 2px solid $ui-highlight-color;
+    color: $highlight-text-color;
+  }
+
+  span {
     margin-left: 5px;
     display: none;
   }
+
+  span.icon {
+    margin-left: 0;
+    display: inline;
+  }
 }
 
-@include multi-columns('screen and (min-width: 631px)', $parent: null) {
-  .tabs-bar {
-    display: none;
+.icon-with-badge {
+  position: relative;
+
+  &__badge {
+    position: absolute;
+    left: 9px;
+    top: -13px;
+    background: $ui-highlight-color;
+    border: 2px solid lighten($ui-base-color, 8%);
+    padding: 1px 6px;
+    border-radius: 6px;
+    font-size: 10px;
+    font-weight: 500;
+    line-height: 14px;
+    color: $primary-text-color;
   }
 }
 
+.column-link--transparent .icon-with-badge__badge {
+  border-color: darken($ui-base-color, 8%);
+}
+
 .scrollable {
   overflow-y: scroll;
   overflow-x: hidden;
@@ -1268,6 +1332,52 @@
   height: 1em;
 }
 
+.layout-toggle {
+  display: flex;
+  padding: 5px;
+
+  button {
+    box-sizing: border-box;
+    flex: 0 0 50%;
+    background: transparent;
+    padding: 5px;
+    border: 0;
+    position: relative;
+
+    &:hover,
+    &:focus,
+    &:active {
+      svg path:first-child {
+        fill: lighten($ui-base-color, 16%);
+      }
+    }
+  }
+
+  svg {
+    width: 100%;
+    height: auto;
+
+    path:first-child {
+      fill: lighten($ui-base-color, 12%);
+    }
+
+    path:last-child {
+      fill: darken($ui-base-color, 14%);
+    }
+  }
+
+  &__active {
+    color: $ui-highlight-color;
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    transform: translate(-50%, -50%);
+    background: lighten($ui-base-color, 12%);
+    border-radius: 50%;
+    padding: 0.35rem;
+  }
+}
+
 ::-webkit-scrollbar-thumb {
   border-radius: 0;
 }
@@ -1322,3 +1432,4 @@ noscript {
 @import 'emoji_picker';
 @import 'local_settings';
 @import 'error_boundary';
+@import 'single_column';
diff --git a/app/javascript/flavours/glitch/styles/components/search.scss b/app/javascript/flavours/glitch/styles/components/search.scss
index f59ef019e..3ef141133 100644
--- a/app/javascript/flavours/glitch/styles/components/search.scss
+++ b/app/javascript/flavours/glitch/styles/components/search.scss
@@ -12,7 +12,7 @@
 .search__icon {
   .fa {
     position: absolute;
-    top: 10px;
+    top: 16px;
     right: 10px;
     z-index: 2;
     display: inline-block;
@@ -42,7 +42,7 @@
   }
 
   .fa-times-circle {
-    top: 11px;
+    top: 17px;
     transform: rotate(0deg);
     cursor: pointer;
 
diff --git a/app/javascript/flavours/glitch/styles/components/single_column.scss b/app/javascript/flavours/glitch/styles/components/single_column.scss
new file mode 100644
index 000000000..ca962abd2
--- /dev/null
+++ b/app/javascript/flavours/glitch/styles/components/single_column.scss
@@ -0,0 +1,232 @@
+.compose-panel {
+  width: 285px;
+  margin-top: 10px;
+  display: flex;
+  flex-direction: column;
+  height: calc(100% - 10px);
+  overflow-y: hidden;
+
+  .drawer--search input {
+    line-height: 18px;
+    font-size: 16px;
+    padding: 15px;
+    padding-right: 30px;
+  }
+
+  .search__icon .fa {
+    top: 15px;
+  }
+
+  .drawer--account {
+    flex: 0 1 48px;
+  }
+
+  .flex-spacer {
+    background: transparent;
+  }
+
+  .composer {
+    flex: 1;
+    overflow-y: hidden;
+    display: flex;
+    flex-direction: column;
+    min-height: 310px;
+  }
+
+  .compose-form__autosuggest-wrapper {
+    overflow-y: auto;
+    background-color: $white;
+    border-radius: 4px 4px 0 0;
+    flex: 0 1 auto;
+  }
+
+  .autosuggest-textarea__textarea {
+    overflow-y: hidden;
+  }
+
+  .compose-form__upload-thumbnail {
+    height: 80px;
+  }
+}
+
+.navigation-panel {
+  margin-top: 10px;
+  margin-bottom: 10px;
+  height: calc(100% - 20px);
+  overflow-y: auto;
+
+  hr {
+    border: 0;
+    background: transparent;
+    border-top: 1px solid lighten($ui-base-color, 4%);
+    margin: 10px 0;
+  }
+}
+
+@media screen and (min-width: 600px) {
+  .tabs-bar__link {
+    span {
+      display: inline;
+    }
+  }
+}
+
+.columns-area--mobile {
+  flex-direction: column;
+  width: 100%;
+  margin: 0 auto;
+
+  .column,
+  .drawer {
+    width: 100%;
+    height: 100%;
+    padding: 0;
+  }
+
+  .autosuggest-textarea__textarea {
+    font-size: 16px;
+  }
+
+  .search__input {
+    line-height: 18px;
+    font-size: 16px;
+    padding: 15px;
+    padding-right: 30px;
+  }
+
+  .search__icon .fa {
+    top: 15px;
+  }
+
+  @media screen and (min-width: 360px) {
+    padding: 10px 0;
+  }
+
+  @media screen and (min-width: 630px) {
+    .detailed-status {
+      padding: 15px;
+
+      .media-gallery,
+      .video-player {
+        margin-top: 15px;
+      }
+    }
+
+    .account__header__bar {
+      padding: 5px 10px;
+    }
+
+    .navigation-bar,
+    .compose-form {
+      padding: 15px;
+    }
+
+    .compose-form .compose-form__publish .compose-form__publish-button-wrapper {
+      padding-top: 15px;
+    }
+
+    .status {
+      padding: 15px;
+      min-height: 48px + 2px;
+
+      .media-gallery,
+      &__action-bar,
+      .video-player {
+        margin-top: 10px;
+      }
+    }
+
+    .account {
+      padding: 15px 10px;
+
+      &__header__bio {
+        margin: 0 -10px;
+      }
+    }
+
+    .notification {
+      &__message {
+        padding-top: 15px;
+      }
+
+      .status {
+        padding-top: 8px;
+      }
+
+      .account {
+        padding-top: 8px;
+      }
+    }
+  }
+}
+
+.floating-action-button {
+  position: fixed;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  width: 3.9375rem;
+  height: 3.9375rem;
+  bottom: 1.3125rem;
+  right: 1.3125rem;
+  background: darken($ui-highlight-color, 3%);
+  color: $white;
+  border-radius: 50%;
+  font-size: 21px;
+  line-height: 21px;
+  text-decoration: none;
+  box-shadow: 2px 3px 9px rgba($base-shadow-color, 0.4);
+
+  &:hover,
+  &:focus,
+  &:active {
+    background: lighten($ui-highlight-color, 7%);
+  }
+}
+
+@media screen and (min-width: 360px) {
+  .tabs-bar {
+    margin: 10px auto;
+    margin-bottom: 0;
+    width: 100%;
+  }
+
+  .react-swipeable-view-container .columns-area--mobile {
+    height: calc(100% - 20px) !important;
+  }
+
+  .getting-started__wrapper,
+  .getting-started__trends,
+  .search {
+    margin-bottom: 10px;
+  }
+}
+
+@media screen and (max-width: 600px + (285px * 1) + (10px * 1)) {
+  .columns-area__panels__pane--compositional {
+    display: none;
+  }
+}
+
+@media screen and (min-width: 600px + (285px * 1) + (10px * 1)) {
+  .floating-action-button,
+  .tabs-bar__link.optional {
+    display: none;
+  }
+
+  .search-page .search {
+    display: none;
+  }
+}
+
+@media screen and (max-width: 600px + (285px * 2) + (10px * 2)) {
+  .columns-area__panels__pane--navigational {
+    display: none;
+  }
+}
+
+@media screen and (min-width: 600px + (285px * 2) + (10px * 2)) {
+  .tabs-bar {
+    display: none;
+  }
+}
diff --git a/app/javascript/flavours/glitch/styles/components/status.scss b/app/javascript/flavours/glitch/styles/components/status.scss
index 327694a7e..ee4440e89 100644
--- a/app/javascript/flavours/glitch/styles/components/status.scss
+++ b/app/javascript/flavours/glitch/styles/components/status.scss
@@ -209,7 +209,7 @@
     outline: 0;
     background: lighten($ui-base-color, 4%);
 
-    .status.status-direct {
+    &.status.status-direct:not(.read) {
       background: lighten($ui-base-color, 12%);
 
       &.muted {
@@ -249,8 +249,9 @@
     margin-top: 8px;
   }
 
-  &.status-direct {
+  &.status-direct:not(.read) {
     background: lighten($ui-base-color, 8%);
+    border-bottom-color: lighten($ui-base-color, 12%);
   }
 
   &.light {
@@ -333,7 +334,7 @@
     &:focus > .status__content:after {
       background: linear-gradient(rgba(lighten($ui-base-color, 4%), 0), rgba(lighten($ui-base-color, 4%), 1));
     }
-    &.status-direct> .status__content:after {
+    &.status-direct:not(.read)> .status__content:after {
       background: linear-gradient(rgba(lighten($ui-base-color, 8%), 0), rgba(lighten($ui-base-color, 8%), 1));
     }
 
@@ -599,7 +600,7 @@
   }
 }
 
-.status__display-name,
+a.status__display-name,
 .reply-indicator__display-name,
 .detailed-status__display-name,
 .account__display-name {
diff --git a/app/javascript/flavours/glitch/styles/forms.scss b/app/javascript/flavours/glitch/styles/forms.scss
index 2b8d7a682..dae29a003 100644
--- a/app/javascript/flavours/glitch/styles/forms.scss
+++ b/app/javascript/flavours/glitch/styles/forms.scss
@@ -79,6 +79,12 @@ code {
           text-decoration: none;
         }
       }
+
+      .recommended {
+        position: absolute;
+        margin: 0 4px;
+        margin-top: -2px;
+      }
     }
   }
 
@@ -443,6 +449,10 @@ code {
     height: 41px;
   }
 
+  h4 {
+    margin-bottom: 15px !important;
+  }
+
   .label_input {
     &__wrapper {
       position: relative;
diff --git a/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss b/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss
index ce2a2eeb5..7da8edbde 100644
--- a/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss
+++ b/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss
@@ -27,15 +27,16 @@
   }
 }
 
-.status.status-direct {
+.status.status-direct:not(.read) {
   background: darken($ui-base-color, 8%);
+  border-bottom-color: darken($ui-base-color, 12%);
 
   &.collapsed> .status__content:after {
     background: linear-gradient(rgba(darken($ui-base-color, 8%), 0), rgba(darken($ui-base-color, 8%), 1));
   }
 }
 
-.focusable:focus.status.status-direct {
+.focusable:focus.status.status-direct:not(.read) {
   background: darken($ui-base-color, 4%);
 
   &.collapsed> .status__content:after {
@@ -124,7 +125,7 @@
 // Change the default color of several parts of the compose form
 .composer {
 
-  .composer--spoiler input, .composer--textarea textarea {
+  .composer--spoiler input, .compose-form__autosuggest-wrapper textarea {
     color: lighten($ui-base-color, 80%);
 
     &:disabled { background: lighten($simple-background-color, 10%) }
diff --git a/app/javascript/flavours/glitch/styles/rtl.scss b/app/javascript/flavours/glitch/styles/rtl.scss
index 9e0a93ec2..11fae3121 100644
--- a/app/javascript/flavours/glitch/styles/rtl.scss
+++ b/app/javascript/flavours/glitch/styles/rtl.scss
@@ -43,6 +43,10 @@ body.rtl {
     left: 10px;
   }
 
+  .columns-area {
+    direction: rtl;
+  }
+
   .column-header__buttons {
     left: 0;
     right: auto;
diff --git a/app/javascript/flavours/glitch/util/async-components.js b/app/javascript/flavours/glitch/util/async-components.js
index 094952204..f2aeda834 100644
--- a/app/javascript/flavours/glitch/util/async-components.js
+++ b/app/javascript/flavours/glitch/util/async-components.js
@@ -149,3 +149,7 @@ export function GettingStartedMisc () {
 export function ListAdder () {
   return import(/* webpackChunkName: "features/glitch/async/list_adder" */'flavours/glitch/features/list_adder');
 }
+
+export function Search () {
+  return import(/*webpackChunkName: "features/glitch/async/search" */'flavours/glitch/features/search');
+}
diff --git a/app/javascript/flavours/glitch/util/initial_state.js b/app/javascript/flavours/glitch/util/initial_state.js
index 99d8a4dbc..f42c06a3a 100644
--- a/app/javascript/flavours/glitch/util/initial_state.js
+++ b/app/javascript/flavours/glitch/util/initial_state.js
@@ -28,5 +28,6 @@ export const version = getMeta('version');
 export const mascot = getMeta('mascot');
 export const isStaff = getMeta('is_staff');
 export const defaultContentType = getMeta('default_content_type');
+export const forceSingleColumn = getMeta('advanced_layout') === false;
 
 export default initialState;
diff --git a/app/javascript/flavours/glitch/util/is_mobile.js b/app/javascript/flavours/glitch/util/is_mobile.js
index 80e8e0a8a..db3c8bd80 100644
--- a/app/javascript/flavours/glitch/util/is_mobile.js
+++ b/app/javascript/flavours/glitch/util/is_mobile.js
@@ -1,4 +1,5 @@
 import detectPassiveEvents from 'detect-passive-events';
+import { forceSingleColumn } from 'flavours/glitch/util/initial_state';
 
 const LAYOUT_BREAKPOINT = 630;
 
@@ -9,7 +10,7 @@ export function isMobile(width, columns) {
   case 'single':
     return true;
   default:
-    return width <= LAYOUT_BREAKPOINT;
+    return forceSingleColumn || width <= LAYOUT_BREAKPOINT;
   }
 };
 
diff --git a/app/javascript/images/logo_full.svg b/app/javascript/images/logo_full.svg
index c33883342..03bcf93e3 100644
--- a/app/javascript/images/logo_full.svg
+++ b/app/javascript/images/logo_full.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 713.35878 175.8678"><path d="M160.55476 105.43125c-2.4125 12.40625-21.5975 25.9825-43.63375 28.61375-11.49125 1.3725-22.80375 2.63125-34.8675 2.07875-19.73-.90375-35.2975-4.71-35.2975-4.71 0 1.92125.11875 3.75.355 5.46 2.565 19.47 19.3075 20.6375 35.16625 21.18125 16.00625.5475 30.2575-3.9475 30.2575-3.9475l.65875 14.4725s-11.19625 6.01125-31.14 7.11625c-10.99875.605-24.65375-.27625-40.56-4.485C6.99851 162.08 1.06601 125.31.15851 88-.11899 76.9225.05226 66.47625.05226 57.74125c0-38.1525 24.99625-49.335 24.99625-49.335C37.65226 2.6175 59.27976.18375 81.76351 0h.5525c22.48375.18375 44.125 2.6175 56.72875 8.40625 0 0 24.99625 11.1825 24.99625 49.335 0 0 .3125 28.1475-3.48625 47.69" fill="#3088d4"/><path d="M34.65751 48.494c0-5.55375 4.5025-10.055 10.055-10.055 5.55375 0 10.055 4.50125 10.055 10.055 0 5.5525-4.50125 10.055-10.055 10.055-5.5525 0-10.055-4.5025-10.055-10.055M178.86476 60.69975v46.195h-18.30125v-44.8375c0-9.4525-3.9775-14.24875-11.9325-14.24875-8.79375 0-13.2025 5.69125-13.2025 16.94375V89.2935h-18.19375V64.75225c0-11.2525-4.40875-16.94375-13.2025-16.94375-7.955 0-11.9325 4.79625-11.9325 14.24875v44.8375H73.79851v-46.195c0-9.44125 2.40375-16.94375 7.2325-22.495 4.98-5.55 11.50125-8.395 19.595-8.395 9.36625 0 16.45875 3.59875 21.14625 10.79875l4.56 7.6425 4.55875-7.6425c4.68875-7.2 11.78-10.79875 21.1475-10.79875 8.09375 0 14.61375 2.845 19.59375 8.395 4.82875 5.55125 7.2325 13.05375 7.2325 22.495M241.91276 83.663625c3.77625-3.99 5.595-9.015 5.595-15.075 0-6.06-1.81875-11.085-5.595-14.9275-3.63625-3.99125-8.25375-5.91125-13.84875-5.91125-5.59625 0-10.2125 1.92-13.84875 5.91125-3.6375 3.8425-5.45625 8.8675-5.45625 14.9275 0 6.06 1.81875 11.085 5.45625 15.075 3.63625 3.8425 8.2525 5.76375 13.84875 5.76375 5.595 0 10.2125-1.92125 13.84875-5.76375m5.595-52.025h18.04625v73.9h-18.04625v-8.72125c-5.455 7.2425-13.01 10.79-22.80125 10.79-9.3725 0-17.34625-3.695-24.06125-11.23375-6.57375-7.5375-9.93125-16.84875-9.93125-27.785 0-10.78875 3.3575-20.10125 9.93125-27.63875 6.715-7.5375 14.68875-11.38 24.06125-11.38 9.79125 0 17.34625 3.5475 22.80125 10.78875v-8.72zM326.26951 67.258625c5.315 3.99 7.97375 9.60625 7.83375 16.7 0 7.53875-2.65875 13.45-8.11375 17.58875-5.45625 3.99125-12.03 6.06-20.00375 6.06-14.40875 0-24.20125-5.9125-29.3775-17.58875l15.66875-9.31c2.0975 6.35375 6.71375 9.60625 13.70875 9.60625 6.43375 0 9.6525-2.07 9.6525-6.35625 0-3.10375-4.1975-5.91125-12.73-8.1275-3.21875-.8875-5.87625-1.77375-7.97375-2.51375-2.9375-1.18125-5.455-2.5125-7.55375-4.1375-5.17625-3.99-7.83375-9.3125-7.83375-16.11 0-7.2425 2.5175-13.00625 7.55375-17.145 5.17625-4.28625 11.47-6.355 19.025-6.355 12.03 0 20.84375 5.1725 26.5775 15.66625l-15.38625 8.8675c-2.23875-5.02375-6.015-7.53625-11.19125-7.53625-5.45625 0-8.11375 2.06875-8.11375 6.05875 0 3.10375 4.19625 5.91125 12.73 8.12875 6.575 1.4775 11.75 3.695 15.5275 6.50375M383.626635 49.966125h-15.8075v30.7425c0 3.695 1.4 5.91125 4.0575 6.945 1.95875.74 5.875.8875 11.75.59125v17.29375c-12.16875 1.4775-20.9825.295-26.15875-3.69625-5.175-3.8425-7.69375-10.93625-7.69375-21.13375v-30.7425h-12.17v-18.3275h12.17v-14.9275l18.045-5.76375v20.69125h15.8075v18.3275zM441.124885 83.2205c3.6375-3.84375 5.455-8.72125 5.455-14.6325 0-5.91125-1.8175-10.78875-5.455-14.63125-3.6375-3.84375-8.11375-5.76375-13.57-5.76375-5.455 0-9.93125 1.92-13.56875 5.76375-3.4975 3.99-5.31625 8.8675-5.31625 14.63125 0 5.765 1.81875 10.6425 5.31625 14.6325 3.6375 3.8425 8.11375 5.76375 13.56875 5.76375 5.45625 0 9.9325-1.92125 13.57-5.76375m-39.86875 13.15375c-7.13375-7.5375-10.63125-16.70125-10.63125-27.78625 0-10.9375 3.4975-20.1 10.63125-27.6375 7.13375-7.5375 15.9475-11.38 26.29875-11.38 10.3525 0 19.165 3.8425 26.3 11.38 7.135 7.5375 10.77125 16.84875 10.77125 27.6375 0 10.9375-3.63625 20.24875-10.77125 27.78625-7.135 7.53875-15.8075 11.2325-26.3 11.2325-10.49125 0-19.165-3.69375-26.29875-11.2325M524.92126 83.663625c3.6375-3.99 5.455-9.015 5.455-15.075 0-6.06-1.8175-11.085-5.455-14.9275-3.63625-3.99125-8.25375-5.91125-13.84875-5.91125-5.59625 0-10.2125 1.92-13.98875 5.91125-3.63625 3.8425-5.45625 8.8675-5.45625 14.9275 0 6.06 1.82 11.085 5.45625 15.075 3.77625 3.8425 8.5325 5.76375 13.98875 5.76375 5.595 0 10.2125-1.92125 13.84875-5.76375m5.455-81.585h18.04625v103.46h-18.04625v-8.72125c-5.315 7.2425-12.87 10.79-22.66125 10.79-9.3725 0-17.485-3.695-24.2-11.23375-6.575-7.5375-9.9325-16.84875-9.9325-27.785 0-10.78875 3.3575-20.10125 9.9325-27.63875 6.715-7.5375 14.8275-11.38 24.2-11.38 9.79125 0 17.34625 3.5475 22.66125 10.78875v-38.28zM611.79626 83.2205c3.63625-3.84375 5.455-8.72125 5.455-14.6325 0-5.91125-1.81875-10.78875-5.455-14.63125-3.6375-3.84375-8.11375-5.76375-13.57-5.76375-5.455 0-9.9325 1.92-13.56875 5.76375-3.49875 3.99-5.31625 8.8675-5.31625 14.63125 0 5.765 1.8175 10.6425 5.31625 14.6325 3.63625 3.8425 8.11375 5.76375 13.56875 5.76375 5.45625 0 9.9325-1.92125 13.57-5.76375m-39.86875 13.15375c-7.135-7.5375-10.63125-16.70125-10.63125-27.78625 0-10.9375 3.49625-20.1 10.63125-27.6375 7.135-7.5375 15.9475-11.38 26.29875-11.38 10.3525 0 19.165 3.8425 26.3 11.38 7.135 7.5375 10.77125 16.84875 10.77125 27.6375 0 10.9375-3.63625 20.24875-10.77125 27.78625-7.135 7.53875-15.8075 11.2325-26.3 11.2325-10.49125 0-19.16375-3.69375-26.29875-11.2325M713.35876 60.163875v45.37375h-18.04625v-43.00875c0-4.8775-1.25875-8.5725-3.77625-11.38-2.37875-2.5125-5.73625-3.84375-10.0725-3.84375-10.2125 0-15.3875 6.06-15.3875 18.3275v39.905h-18.04625v-73.89875h18.04625v8.27625c4.33625-6.94625 11.19-10.345 20.84375-10.345 7.69375 0 13.98875 2.66 18.885 8.12875 5.035 5.46875 7.55375 12.85875 7.55375 22.465" fill="#fff"/></svg>
+<svg xmlns="http://www.w3.org/2000/svg"><symbol id="mastodon-svg-logo-full" viewBox="0 0 713.35878 175.8678"><path d="M160.55476 105.43125c-2.4125 12.40625-21.5975 25.9825-43.63375 28.61375-11.49125 1.3725-22.80375 2.63125-34.8675 2.07875-19.73-.90375-35.2975-4.71-35.2975-4.71 0 1.92125.11875 3.75.355 5.46 2.565 19.47 19.3075 20.6375 35.16625 21.18125 16.00625.5475 30.2575-3.9475 30.2575-3.9475l.65875 14.4725s-11.19625 6.01125-31.14 7.11625c-10.99875.605-24.65375-.27625-40.56-4.485C6.99851 162.08 1.06601 125.31.15851 88-.11899 76.9225.05226 66.47625.05226 57.74125c0-38.1525 24.99625-49.335 24.99625-49.335C37.65226 2.6175 59.27976.18375 81.76351 0h.5525c22.48375.18375 44.125 2.6175 56.72875 8.40625 0 0 24.99625 11.1825 24.99625 49.335 0 0 .3125 28.1475-3.48625 47.69" fill="#3088d4"/><path d="M34.65751 48.494c0-5.55375 4.5025-10.055 10.055-10.055 5.55375 0 10.055 4.50125 10.055 10.055 0 5.5525-4.50125 10.055-10.055 10.055-5.5525 0-10.055-4.5025-10.055-10.055M178.86476 60.69975v46.195h-18.30125v-44.8375c0-9.4525-3.9775-14.24875-11.9325-14.24875-8.79375 0-13.2025 5.69125-13.2025 16.94375V89.2935h-18.19375V64.75225c0-11.2525-4.40875-16.94375-13.2025-16.94375-7.955 0-11.9325 4.79625-11.9325 14.24875v44.8375H73.79851v-46.195c0-9.44125 2.40375-16.94375 7.2325-22.495 4.98-5.55 11.50125-8.395 19.595-8.395 9.36625 0 16.45875 3.59875 21.14625 10.79875l4.56 7.6425 4.55875-7.6425c4.68875-7.2 11.78-10.79875 21.1475-10.79875 8.09375 0 14.61375 2.845 19.59375 8.395 4.82875 5.55125 7.2325 13.05375 7.2325 22.495M241.91276 83.663625c3.77625-3.99 5.595-9.015 5.595-15.075 0-6.06-1.81875-11.085-5.595-14.9275-3.63625-3.99125-8.25375-5.91125-13.84875-5.91125-5.59625 0-10.2125 1.92-13.84875 5.91125-3.6375 3.8425-5.45625 8.8675-5.45625 14.9275 0 6.06 1.81875 11.085 5.45625 15.075 3.63625 3.8425 8.2525 5.76375 13.84875 5.76375 5.595 0 10.2125-1.92125 13.84875-5.76375m5.595-52.025h18.04625v73.9h-18.04625v-8.72125c-5.455 7.2425-13.01 10.79-22.80125 10.79-9.3725 0-17.34625-3.695-24.06125-11.23375-6.57375-7.5375-9.93125-16.84875-9.93125-27.785 0-10.78875 3.3575-20.10125 9.93125-27.63875 6.715-7.5375 14.68875-11.38 24.06125-11.38 9.79125 0 17.34625 3.5475 22.80125 10.78875v-8.72zM326.26951 67.258625c5.315 3.99 7.97375 9.60625 7.83375 16.7 0 7.53875-2.65875 13.45-8.11375 17.58875-5.45625 3.99125-12.03 6.06-20.00375 6.06-14.40875 0-24.20125-5.9125-29.3775-17.58875l15.66875-9.31c2.0975 6.35375 6.71375 9.60625 13.70875 9.60625 6.43375 0 9.6525-2.07 9.6525-6.35625 0-3.10375-4.1975-5.91125-12.73-8.1275-3.21875-.8875-5.87625-1.77375-7.97375-2.51375-2.9375-1.18125-5.455-2.5125-7.55375-4.1375-5.17625-3.99-7.83375-9.3125-7.83375-16.11 0-7.2425 2.5175-13.00625 7.55375-17.145 5.17625-4.28625 11.47-6.355 19.025-6.355 12.03 0 20.84375 5.1725 26.5775 15.66625l-15.38625 8.8675c-2.23875-5.02375-6.015-7.53625-11.19125-7.53625-5.45625 0-8.11375 2.06875-8.11375 6.05875 0 3.10375 4.19625 5.91125 12.73 8.12875 6.575 1.4775 11.75 3.695 15.5275 6.50375M383.626635 49.966125h-15.8075v30.7425c0 3.695 1.4 5.91125 4.0575 6.945 1.95875.74 5.875.8875 11.75.59125v17.29375c-12.16875 1.4775-20.9825.295-26.15875-3.69625-5.175-3.8425-7.69375-10.93625-7.69375-21.13375v-30.7425h-12.17v-18.3275h12.17v-14.9275l18.045-5.76375v20.69125h15.8075v18.3275zM441.124885 83.2205c3.6375-3.84375 5.455-8.72125 5.455-14.6325 0-5.91125-1.8175-10.78875-5.455-14.63125-3.6375-3.84375-8.11375-5.76375-13.57-5.76375-5.455 0-9.93125 1.92-13.56875 5.76375-3.4975 3.99-5.31625 8.8675-5.31625 14.63125 0 5.765 1.81875 10.6425 5.31625 14.6325 3.6375 3.8425 8.11375 5.76375 13.56875 5.76375 5.45625 0 9.9325-1.92125 13.57-5.76375m-39.86875 13.15375c-7.13375-7.5375-10.63125-16.70125-10.63125-27.78625 0-10.9375 3.4975-20.1 10.63125-27.6375 7.13375-7.5375 15.9475-11.38 26.29875-11.38 10.3525 0 19.165 3.8425 26.3 11.38 7.135 7.5375 10.77125 16.84875 10.77125 27.6375 0 10.9375-3.63625 20.24875-10.77125 27.78625-7.135 7.53875-15.8075 11.2325-26.3 11.2325-10.49125 0-19.165-3.69375-26.29875-11.2325M524.92126 83.663625c3.6375-3.99 5.455-9.015 5.455-15.075 0-6.06-1.8175-11.085-5.455-14.9275-3.63625-3.99125-8.25375-5.91125-13.84875-5.91125-5.59625 0-10.2125 1.92-13.98875 5.91125-3.63625 3.8425-5.45625 8.8675-5.45625 14.9275 0 6.06 1.82 11.085 5.45625 15.075 3.77625 3.8425 8.5325 5.76375 13.98875 5.76375 5.595 0 10.2125-1.92125 13.84875-5.76375m5.455-81.585h18.04625v103.46h-18.04625v-8.72125c-5.315 7.2425-12.87 10.79-22.66125 10.79-9.3725 0-17.485-3.695-24.2-11.23375-6.575-7.5375-9.9325-16.84875-9.9325-27.785 0-10.78875 3.3575-20.10125 9.9325-27.63875 6.715-7.5375 14.8275-11.38 24.2-11.38 9.79125 0 17.34625 3.5475 22.66125 10.78875v-38.28zM611.79626 83.2205c3.63625-3.84375 5.455-8.72125 5.455-14.6325 0-5.91125-1.81875-10.78875-5.455-14.63125-3.6375-3.84375-8.11375-5.76375-13.57-5.76375-5.455 0-9.9325 1.92-13.56875 5.76375-3.49875 3.99-5.31625 8.8675-5.31625 14.63125 0 5.765 1.8175 10.6425 5.31625 14.6325 3.63625 3.8425 8.11375 5.76375 13.56875 5.76375 5.45625 0 9.9325-1.92125 13.57-5.76375m-39.86875 13.15375c-7.135-7.5375-10.63125-16.70125-10.63125-27.78625 0-10.9375 3.49625-20.1 10.63125-27.6375 7.135-7.5375 15.9475-11.38 26.29875-11.38 10.3525 0 19.165 3.8425 26.3 11.38 7.135 7.5375 10.77125 16.84875 10.77125 27.6375 0 10.9375-3.63625 20.24875-10.77125 27.78625-7.135 7.53875-15.8075 11.2325-26.3 11.2325-10.49125 0-19.16375-3.69375-26.29875-11.2325M713.35876 60.163875v45.37375h-18.04625v-43.00875c0-4.8775-1.25875-8.5725-3.77625-11.38-2.37875-2.5125-5.73625-3.84375-10.0725-3.84375-10.2125 0-15.3875 6.06-15.3875 18.3275v39.905h-18.04625v-73.89875h18.04625v8.27625c4.33625-6.94625 11.19-10.345 20.84375-10.345 7.69375 0 13.98875 2.66 18.885 8.12875 5.035 5.46875 7.55375 12.85875 7.55375 22.465"/></symbol></svg>
diff --git a/app/javascript/mastodon/actions/alerts.js b/app/javascript/mastodon/actions/alerts.js
index b2c7ab76a..ef2500e7b 100644
--- a/app/javascript/mastodon/actions/alerts.js
+++ b/app/javascript/mastodon/actions/alerts.js
@@ -8,6 +8,7 @@ const messages = defineMessages({
 export const ALERT_SHOW    = 'ALERT_SHOW';
 export const ALERT_DISMISS = 'ALERT_DISMISS';
 export const ALERT_CLEAR   = 'ALERT_CLEAR';
+export const ALERT_NOOP    = 'ALERT_NOOP';
 
 export function dismissAlert(alert) {
   return {
@@ -36,7 +37,7 @@ export function showAlertForError(error) {
 
     if (status === 404 || status === 410) {
       // Skip these errors as they are reflected in the UI
-      return {};
+      return { type: ALERT_NOOP };
     }
 
     let message = statusText;
diff --git a/app/javascript/mastodon/components/autosuggest_textarea.js b/app/javascript/mastodon/components/autosuggest_textarea.js
index 4c50294ba..b070fe3e5 100644
--- a/app/javascript/mastodon/components/autosuggest_textarea.js
+++ b/app/javascript/mastodon/components/autosuggest_textarea.js
@@ -201,7 +201,7 @@ export default class AutosuggestTextarea extends ImmutablePureComponent {
     }
 
     return [
-      <div className='compose-form__autosuggest-wrapper'>
+      <div className='compose-form__autosuggest-wrapper' key='autosuggest-wrapper'>
         <div className='autosuggest-textarea'>
           <label>
             <span style={{ display: 'none' }}>{placeholder}</span>
@@ -226,7 +226,8 @@ export default class AutosuggestTextarea extends ImmutablePureComponent {
         </div>
         {children}
       </div>,
-      <div className='autosuggest-textarea__suggestions-wrapper'>
+
+      <div className='autosuggest-textarea__suggestions-wrapper' key='suggestions-wrapper'>
         <div className={`autosuggest-textarea__suggestions ${suggestionsHidden || suggestions.isEmpty() ? '' : 'autosuggest-textarea__suggestions--visible'}`}>
           {suggestions.map(this.renderSuggestion)}
         </div>
diff --git a/app/javascript/mastodon/components/status.js b/app/javascript/mastodon/components/status.js
index 6e944dc9e..aa5e870dc 100644
--- a/app/javascript/mastodon/components/status.js
+++ b/app/javascript/mastodon/components/status.js
@@ -16,7 +16,6 @@ import { MediaGallery, Video } from '../features/ui/util/async-components';
 import { HotKeys } from 'react-hotkeys';
 import classNames from 'classnames';
 import Icon from 'mastodon/components/icon';
-import PollContainer from 'mastodon/containers/poll_container';
 import { displayMedia } from '../initial_state';
 
 // We use the component (and not the container) since we do not want
@@ -172,6 +171,11 @@ class Status extends ImmutablePureComponent {
   }
 
   handleExpandClick = (e) => {
+    if (this.props.onClick) {
+      this.props.onClick();
+      return;
+    }
+
     if (e.button === 0) {
       if (!this.context.router) {
         return;
@@ -321,9 +325,7 @@ class Status extends ImmutablePureComponent {
       status  = status.get('reblog');
     }
 
-    if (status.get('poll')) {
-      media = <PollContainer pollId={status.get('poll')} />;
-    } else if (status.get('media_attachments').size > 0) {
+    if (status.get('media_attachments').size > 0) {
       if (this.props.muted) {
         media = (
           <AttachmentList
diff --git a/app/javascript/mastodon/components/status_content.js b/app/javascript/mastodon/components/status_content.js
index fa8901386..06f5b4aad 100644
--- a/app/javascript/mastodon/components/status_content.js
+++ b/app/javascript/mastodon/components/status_content.js
@@ -5,6 +5,7 @@ import { isRtl } from '../rtl';
 import { FormattedMessage } from 'react-intl';
 import Permalink from './permalink';
 import classnames from 'classnames';
+import PollContainer from 'mastodon/containers/poll_container';
 import Icon from 'mastodon/components/icon';
 
 const MAX_HEIGHT = 642; // 20px * 32 (+ 2px padding at the top)
@@ -106,8 +107,12 @@ export default class StatusContent extends React.PureComponent {
     const [ startX, startY ] = this.startXY;
     const [ deltaX, deltaY ] = [Math.abs(e.clientX - startX), Math.abs(e.clientY - startY)];
 
-    if (e.target.localName === 'button' || e.target.localName === 'a' || (e.target.parentNode && (e.target.parentNode.localName === 'button' || e.target.parentNode.localName === 'a'))) {
-      return;
+    let element = e.target;
+    while (element) {
+      if (element.localName === 'button' || element.localName === 'a' || element.localName === 'label') {
+        return;
+      }
+      element = element.parentNode;
     }
 
     if (deltaX + deltaY < 5 && e.button === 0 && this.props.onClick) {
@@ -191,6 +196,8 @@ export default class StatusContent extends React.PureComponent {
           {mentionsPlaceholder}
 
           <div tabIndex={!hidden ? 0 : null} className={`status__content__text ${!hidden ? 'status__content__text--visible' : ''}`} style={directionStyle} dangerouslySetInnerHTML={content} lang={status.get('language')} />
+
+          {!hidden && !!status.get('poll') && <PollContainer pollId={status.get('poll')} />}
         </div>
       );
     } else if (this.props.onClick) {
@@ -212,9 +219,13 @@ export default class StatusContent extends React.PureComponent {
         output.push(readMoreButton);
       }
 
+      if (status.get('poll')) {
+        output.push(<PollContainer pollId={status.get('poll')} />);
+      }
+
       return output;
     } else {
-      return (
+      const output = [
         <div
           tabIndex='0'
           ref={this.setRef}
@@ -222,8 +233,14 @@ export default class StatusContent extends React.PureComponent {
           style={directionStyle}
           dangerouslySetInnerHTML={content}
           lang={status.get('language')}
-        />
-      );
+        />,
+      ];
+
+      if (status.get('poll')) {
+        output.push(<PollContainer pollId={status.get('poll')} />);
+      }
+
+      return output;
     }
   }
 
diff --git a/app/javascript/mastodon/features/compose/components/compose_form.js b/app/javascript/mastodon/features/compose/components/compose_form.js
index ff22a2953..c31e10be9 100644
--- a/app/javascript/mastodon/features/compose/components/compose_form.js
+++ b/app/javascript/mastodon/features/compose/components/compose_form.js
@@ -34,10 +34,6 @@ const messages = defineMessages({
 export default @injectIntl
 class ComposeForm extends ImmutablePureComponent {
 
-  setRef = c => {
-    this.composeForm = c;
-  };
-
   static contextTypes = {
     router: PropTypes.object,
   };
@@ -120,7 +116,9 @@ class ComposeForm extends ImmutablePureComponent {
   }
 
   handleFocus = () => {
-    this.composeForm.scrollIntoView();
+    if (this.composeForm) {
+      this.composeForm.scrollIntoView();
+    }
   }
 
   componentDidUpdate (prevProps) {
@@ -164,6 +162,10 @@ class ComposeForm extends ImmutablePureComponent {
     this.spoilerText = c;
   }
 
+  setRef = c => {
+    this.composeForm = c;
+  };
+
   handleEmojiPick = (data) => {
     const { text }     = this.props;
     const position     = this.autosuggestTextarea.textarea.selectionStart;
@@ -209,10 +211,6 @@ class ComposeForm extends ImmutablePureComponent {
           />
         </div>
 
-        <div className={`emoji-picker-wrapper ${this.props.showSearch ? 'emoji-picker-wrapper--hidden' : ''}`}>
-          <EmojiPickerDropdown onPickEmoji={this.handleEmojiPick} />
-        </div>
-
         <AutosuggestTextarea
           ref={this.setAutosuggestTextarea}
           placeholder={intl.formatMessage(messages.placeholder)}
@@ -228,6 +226,7 @@ class ComposeForm extends ImmutablePureComponent {
           onPaste={onPaste}
           autoFocus={!showSearch && !isMobile(window.innerWidth)}
         >
+          <EmojiPickerDropdown onPickEmoji={this.handleEmojiPick} />
           <div className='compose-form__modifiers'>
             <UploadFormContainer />
             <PollFormContainer />
diff --git a/app/javascript/mastodon/features/compose/components/privacy_dropdown.js b/app/javascript/mastodon/features/compose/components/privacy_dropdown.js
index 3288f81f8..d02a55be0 100644
--- a/app/javascript/mastodon/features/compose/components/privacy_dropdown.js
+++ b/app/javascript/mastodon/features/compose/components/privacy_dropdown.js
@@ -129,7 +129,7 @@ class PrivacyDropdownMenu extends React.PureComponent {
           // It should not be transformed when mounting because the resulting
           // size will be used to determine the coordinate of the menu by
           // react-overlays
-          <div className={`privacy-dropdown__dropdown ${placement}`} style={{ ...style, opacity: opacity, transform: mounted ? `scale(${scaleX}, ${scaleY})` : null }} role='listbox' ref={this.setRef}>
+          <div className={`privacy-dropdown__dropdown ${placement}`} style={{ ...style, opacity: opacity, transform: mounted ? `scale(${scaleX}, ${scaleY})` : null, zIndex: 2 }} role='listbox' ref={this.setRef}>
             {items.map(item => (
               <div role='option' tabIndex='0' key={item.value} data-index={item.value} onKeyDown={this.handleKeyDown} onClick={this.handleClick} className={classNames('privacy-dropdown__option', { active: item.value === value })} aria-selected={item.value === value} ref={item.value === value ? this.setFocusRef : null}>
                 <div className='privacy-dropdown__option__icon'>
diff --git a/app/javascript/mastodon/features/compose/components/reply_indicator.js b/app/javascript/mastodon/features/compose/components/reply_indicator.js
index 142223f3d..66dc85742 100644
--- a/app/javascript/mastodon/features/compose/components/reply_indicator.js
+++ b/app/javascript/mastodon/features/compose/components/reply_indicator.js
@@ -7,6 +7,7 @@ import DisplayName from '../../../components/display_name';
 import { defineMessages, injectIntl } from 'react-intl';
 import ImmutablePureComponent from 'react-immutable-pure-component';
 import { isRtl } from '../../../rtl';
+import AttachmentList from 'mastodon/components/attachment_list';
 
 const messages = defineMessages({
   cancel: { id: 'reply_indicator.cancel', defaultMessage: 'Cancel' },
@@ -60,6 +61,13 @@ class ReplyIndicator extends ImmutablePureComponent {
         </div>
 
         <div className='reply-indicator__content' style={style} dangerouslySetInnerHTML={content} />
+
+        {status.get('media_attachments').size > 0 && (
+          <AttachmentList
+            compact
+            media={status.get('media_attachments')}
+          />
+        )}
       </div>
     );
   }
diff --git a/app/javascript/mastodon/features/list_timeline/index.js b/app/javascript/mastodon/features/list_timeline/index.js
index ad7d16f95..0db6d2228 100644
--- a/app/javascript/mastodon/features/list_timeline/index.js
+++ b/app/javascript/mastodon/features/list_timeline/index.js
@@ -175,8 +175,6 @@ class ListTimeline extends React.PureComponent {
               <Icon id='trash' /> <FormattedMessage id='lists.delete' defaultMessage='Delete list' />
             </button>
           </div>
-
-          <hr />
         </ColumnHeader>
 
         <StatusListContainer
diff --git a/app/javascript/mastodon/features/lists/index.js b/app/javascript/mastodon/features/lists/index.js
index 24f40c16b..015e21b68 100644
--- a/app/javascript/mastodon/features/lists/index.js
+++ b/app/javascript/mastodon/features/lists/index.js
@@ -65,11 +65,11 @@ class Lists extends ImmutablePureComponent {
 
         <NewListForm />
 
-        <ColumnSubheading text={intl.formatMessage(messages.subheading)} />
         <ScrollableList
           scrollKey='lists'
           shouldUpdateScroll={shouldUpdateScroll}
           emptyMessage={emptyMessage}
+          prepend={<ColumnSubheading text={intl.formatMessage(messages.subheading)} />}
         >
           {lists.map(list =>
             <ColumnLink key={list.get('id')} to={`/timelines/list/${list.get('id')}`} icon='list-ul' text={list.get('title')} />
diff --git a/app/javascript/mastodon/features/status/components/detailed_status.js b/app/javascript/mastodon/features/status/components/detailed_status.js
index 9089eb303..c7aa4d033 100644
--- a/app/javascript/mastodon/features/status/components/detailed_status.js
+++ b/app/javascript/mastodon/features/status/components/detailed_status.js
@@ -13,7 +13,6 @@ import Video from '../../video';
 import scheduleIdleTask from '../../ui/util/schedule_idle_task';
 import classNames from 'classnames';
 import Icon from 'mastodon/components/icon';
-import PollContainer from 'mastodon/containers/poll_container';
 
 export default class DetailedStatus extends ImmutablePureComponent {
 
@@ -107,9 +106,7 @@ export default class DetailedStatus extends ImmutablePureComponent {
       outerStyle.height = `${this.state.height}px`;
     }
 
-    if (status.get('poll')) {
-      media = <PollContainer pollId={status.get('poll')} />;
-    } else if (status.get('media_attachments').size > 0) {
+    if (status.get('media_attachments').size > 0) {
       if (status.getIn(['media_attachments', 0, 'type']) === 'video') {
         const video = status.getIn(['media_attachments', 0]);
 
diff --git a/app/javascript/mastodon/features/ui/components/boost_modal.js b/app/javascript/mastodon/features/ui/components/boost_modal.js
index 4c39a60e7..70f4a1282 100644
--- a/app/javascript/mastodon/features/ui/components/boost_modal.js
+++ b/app/javascript/mastodon/features/ui/components/boost_modal.js
@@ -9,6 +9,7 @@ import RelativeTimestamp from '../../../components/relative_timestamp';
 import DisplayName from '../../../components/display_name';
 import ImmutablePureComponent from 'react-immutable-pure-component';
 import Icon from 'mastodon/components/icon';
+import AttachmentList from 'mastodon/components/attachment_list';
 
 const messages = defineMessages({
   cancel_reblog: { id: 'status.cancel_reblog_private', defaultMessage: 'Unboost' },
@@ -73,6 +74,13 @@ class BoostModal extends ImmutablePureComponent {
             </div>
 
             <StatusContent status={status} />
+
+            {status.get('media_attachments').size > 0 && (
+              <AttachmentList
+                compact
+                media={status.get('media_attachments')}
+              />
+            )}
           </div>
         </div>
 
diff --git a/app/javascript/mastodon/features/ui/components/navigation_panel.js b/app/javascript/mastodon/features/ui/components/navigation_panel.js
index 1d783ba1b..ef3ad2e09 100644
--- a/app/javascript/mastodon/features/ui/components/navigation_panel.js
+++ b/app/javascript/mastodon/features/ui/components/navigation_panel.js
@@ -2,6 +2,7 @@ import React from 'react';
 import { NavLink, withRouter } from 'react-router-dom';
 import { FormattedMessage } from 'react-intl';
 import Icon from 'mastodon/components/icon';
+import { profile_directory } from 'mastodon/initial_state';
 import NotificationsCounterIcon from './notifications_counter_icon';
 import FollowRequestsNavLink from './follow_requests_nav_link';
 import ListPanel from './list_panel';
@@ -23,7 +24,7 @@ const NavigationPanel = () => (
 
     <a className='column-link column-link--transparent' href='/settings/preferences'><Icon className='column-link__icon' id='cog' fixedWidth /><FormattedMessage id='navigation_bar.preferences' defaultMessage='Preferences' /></a>
     <a className='column-link column-link--transparent' href='/relationships'><Icon className='column-link__icon' id='users' fixedWidth /><FormattedMessage id='navigation_bar.follows_and_followers' defaultMessage='Follows and followers' /></a>
-    <a className='column-link column-link--transparent' href='/explore'><Icon className='column-link__icon' id='address-book-o' fixedWidth /><FormattedMessage id='navigation_bar.profile_directory' defaultMessage='Profile directory' /></a>
+    {!!profile_directory && <a className='column-link column-link--transparent' href='/explore'><Icon className='column-link__icon' id='address-book-o' fixedWidth /><FormattedMessage id='navigation_bar.profile_directory' defaultMessage='Profile directory' /></a>}
   </div>
 );
 
diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json
index 68c8835d1..28a18c92d 100644
--- a/app/javascript/mastodon/locales/ar.json
+++ b/app/javascript/mastodon/locales/ar.json
@@ -1,8 +1,8 @@
 {
-  "account.add_or_remove_from_list": "أضيف/ي أو أحذف/ي من القائمة",
+  "account.add_or_remove_from_list": "أضفه أو أزله من القائمة",
   "account.badges.bot": "روبوت",
   "account.block": "حظر @{name}",
-  "account.block_domain": "إخفاء كل شيئ قادم من إسم النطاق {domain}",
+  "account.block_domain": "إخفاء كل شيئ قادم من اسم النطاق {domain}",
   "account.blocked": "محظور",
   "account.direct": "رسالة خاصة إلى @{name}",
   "account.domain_blocked": "النطاق مخفي",
@@ -19,7 +19,7 @@
   "account.locked_info": "تم تأمين خصوصية هذا الحساب عبر قفل. صاحب الحساب يُراجِع يدويا طلبات المتابَعة و الاشتراك بحسابه.",
   "account.media": "وسائط",
   "account.mention": "أُذكُر/ي @{name}",
-  "account.moved_to": "{name} إنتقل إلى :",
+  "account.moved_to": "{name} انتقل إلى:",
   "account.mute": "كتم @{name}",
   "account.mute_notifications": "كتم الإخطارات من @{name}",
   "account.muted": "مكتوم",
@@ -36,7 +36,7 @@
   "account.unmute": "إلغاء الكتم عن @{name}",
   "account.unmute_notifications": "إلغاء كتم إخطارات @{name}",
   "alert.unexpected.message": "لقد طرأ هناك خطأ غير متوقّع.",
-  "alert.unexpected.title": "المعذرة !",
+  "alert.unexpected.title": "المعذرة!",
   "boost_modal.combo": "يمكنك/ي ضغط {combo} لتخطّي هذه في المرّة القادمة",
   "bundle_column_error.body": "لقد وقع هناك خطأ أثناء عملية تحميل هذا العنصر.",
   "bundle_column_error.retry": "إعادة المحاولة",
@@ -66,7 +66,7 @@
   "column_subheading.settings": "الإعدادات",
   "community.column_settings.media_only": "الوسائط فقط",
   "compose_form.direct_message_warning": "لن يَظهر هذا التبويق إلا للمستخدمين المذكورين.",
-  "compose_form.direct_message_warning_learn_more": "إقرأ المزيد",
+  "compose_form.direct_message_warning_learn_more": "اقرأ المزيد",
   "compose_form.hashtag_warning": "هذا التبويق لن يُدرَج تحت أي وسم كان بما أنه غير مُدرَج. لا يُسمح بالبحث إلّا عن التبويقات العمومية عن طريق الوسوم.",
   "compose_form.lock_disclaimer": "حسابك ليس {locked}. يمكن لأي شخص متابعتك و عرض المنشورات.",
   "compose_form.lock_disclaimer.lock": "مقفل",
@@ -77,22 +77,22 @@
   "compose_form.poll.remove_option": "إزالة هذا الخيار",
   "compose_form.publish": "بوّق",
   "compose_form.publish_loud": "{publish}!",
-  "compose_form.sensitive.hide": "Mark media as sensitive",
+  "compose_form.sensitive.hide": "تحديد الوسائط كحساسة",
   "compose_form.sensitive.marked": "لقد تم تحديد هذه الصورة كحساسة",
   "compose_form.sensitive.unmarked": "لم يتم تحديد الصورة كحساسة",
   "compose_form.spoiler.marked": "إنّ النص مخفي وراء تحذير",
   "compose_form.spoiler.unmarked": "النص غير مخفي",
   "compose_form.spoiler_placeholder": "تنبيه عن المحتوى",
   "confirmation_modal.cancel": "إلغاء",
-  "confirmations.block.block_and_report": "Block & Report",
+  "confirmations.block.block_and_report": "احجبه وابلغ عنه",
   "confirmations.block.confirm": "حجب",
   "confirmations.block.message": "هل أنت متأكد أنك تريد حجب {name} ؟",
   "confirmations.delete.confirm": "حذف",
   "confirmations.delete.message": "هل أنت متأكد أنك تريد حذف هذا المنشور ؟",
-  "confirmations.delete_list.confirm": "Delete",
+  "confirmations.delete_list.confirm": "احذف",
   "confirmations.delete_list.message": "هل تود حقا حذف هذه القائمة ؟",
-  "confirmations.domain_block.confirm": "إخفاء إسم النطاق كاملا",
-  "confirmations.domain_block.message": "متأكد من أنك تود حظر إسم النطاق {domain} بالكامل ؟ في غالب الأحيان يُستَحسَن كتم أو حظر بعض الحسابات بدلا من حظر نطاق بالكامل.\nلن تتمكن مِن رؤية محتوى هذا النطاق لا على خيوطك العمومية و لا في إشعاراتك. سوف يتم كذلك إزالة كافة متابعيك المنتمين إلى هذا النطاق.",
+  "confirmations.domain_block.confirm": "إخفاء اسم النطاق كاملا",
+  "confirmations.domain_block.message": "متأكد من أنك تود حظر اسم النطاق {domain} بالكامل ؟ في غالب الأحيان يُستَحسَن كتم أو حظر بعض الحسابات بدلا من حظر نطاق بالكامل.\nلن تتمكن مِن رؤية محتوى هذا النطاق لا على خيوطك العمومية و لا في إشعاراتك. سوف يتم كذلك إزالة كافة متابعيك المنتمين إلى هذا النطاق.",
   "confirmations.mute.confirm": "أكتم",
   "confirmations.mute.message": "هل أنت متأكد أنك تريد كتم {name} ؟",
   "confirmations.redraft.confirm": "إزالة و إعادة الصياغة",
@@ -102,7 +102,7 @@
   "confirmations.unfollow.confirm": "إلغاء المتابعة",
   "confirmations.unfollow.message": "متأكد من أنك تريد إلغاء متابعة {name} ؟",
   "embed.instructions": "يمكنكم إدماج هذا المنشور على موقعكم الإلكتروني عن طريق نسخ الشفرة أدناه.",
-  "embed.preview": "هكذا ما سوف يبدو عليه :",
+  "embed.preview": "هكذا ما سوف يبدو عليه:",
   "emoji_button.activity": "الأنشطة",
   "emoji_button.custom": "مخصص",
   "emoji_button.flags": "الأعلام",
@@ -112,7 +112,7 @@
   "emoji_button.not_found": "لا إيموجو !! (╯°□°)╯︵ ┻━┻",
   "emoji_button.objects": "أشياء",
   "emoji_button.people": "الناس",
-  "emoji_button.recent": "الشائعة الإستخدام",
+  "emoji_button.recent": "الشائعة الاستخدام",
   "emoji_button.search": "ابحث...",
   "emoji_button.search_results": "نتائج البحث",
   "emoji_button.symbols": "رموز",
@@ -120,7 +120,7 @@
   "empty_column.account_timeline": "ليس هناك تبويقات!",
   "empty_column.account_unavailable": "الملف الشخصي غير متوفر",
   "empty_column.blocks": "لم تقم بحظر أي مستخدِم بعد.",
-  "empty_column.community": "الخط الزمني المحلي فارغ. أكتب شيئا ما للعامة كبداية !",
+  "empty_column.community": "الخط الزمني المحلي فارغ. أكتب شيئا ما للعامة كبداية!",
   "empty_column.direct": "لم تتلق أية رسالة خاصة مباشِرة بعد. سوف يتم عرض الرسائل المباشرة هنا إن قمت بإرسال واحدة أو تلقيت البعض منها.",
   "empty_column.domain_blocks": "ليس هناك نطاقات مخفية بعد.",
   "empty_column.favourited_statuses": "ليس لديك أية تبويقات مفضلة بعد. عندما ستقوم بالإعجاب بواحد، سيظهر هنا.",
@@ -133,13 +133,13 @@
   "empty_column.lists": "ليس عندك أية قائمة بعد. سوف تظهر قائمتك هنا إن قمت بإنشاء واحدة.",
   "empty_column.mutes": "لم تقم بكتم أي مستخدم بعد.",
   "empty_column.notifications": "لم تتلق أي إشعار بعدُ. تفاعل مع المستخدمين الآخرين لإنشاء محادثة.",
-  "empty_column.public": "لا يوجد أي شيء هنا ! قم بنشر شيء ما للعامة، أو إتبع المستخدمين الآخرين المتواجدين على الخوادم الأخرى لملء خيط المحادثات",
+  "empty_column.public": "لا يوجد أي شيء هنا! قم بنشر شيء ما للعامة، أو اتبع المستخدمين الآخرين المتواجدين على الخوادم الأخرى لملء خيط المحادثات",
   "follow_request.authorize": "ترخيص",
   "follow_request.reject": "رفض",
   "getting_started.developers": "المُطوِّرون",
   "getting_started.directory": "دليل المستخدِمين والمستخدِمات",
   "getting_started.documentation": "الدليل",
-  "getting_started.heading": "إستعدّ للبدء",
+  "getting_started.heading": "استعدّ للبدء",
   "getting_started.invite": "دعوة أشخاص",
   "getting_started.open_source_notice": "ماستدون برنامج مفتوح المصدر. يمكنك المساهمة، أو الإبلاغ عن تقارير الأخطاء، على جيت هب {github}.",
   "getting_started.security": "الأمان",
@@ -156,15 +156,15 @@
   "home.column_settings.basic": "أساسية",
   "home.column_settings.show_reblogs": "عرض الترقيات",
   "home.column_settings.show_replies": "عرض الردود",
-  "intervals.full.days": "{number, plural, one {# day} other {# days}}",
-  "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
-  "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
+  "intervals.full.days": "{number, plural, one {# يوم} other {# أيام}}",
+  "intervals.full.hours": "{number, plural, one {# ساعة} other {# ساعات}}",
+  "intervals.full.minutes": "{number, plural, one {# دقيقة} other {# دقائق}}",
   "introduction.federation.action": "التالي",
-  "introduction.federation.federated.headline": "Federated",
+  "introduction.federation.federated.headline": "الفديرالي",
   "introduction.federation.federated.text": "كافة المنشورات التي نُشِرت إلى العامة على الخوادم الأخرى للفديفرس سوف يتم عرضها على الخيط المُوحَّد.",
-  "introduction.federation.home.headline": "Home",
+  "introduction.federation.home.headline": "الرئيسي",
   "introduction.federation.home.text": "سوف تُعرَض منشورات الأشخاص الذين تُتابِعهم على الخيط الرئيسي. بإمكانك متابعة أي حساب أيا كان الخادم الذي هو عليه!",
-  "introduction.federation.local.headline": "Local",
+  "introduction.federation.local.headline": "المحلي",
   "introduction.federation.local.text": "المنشورات المُوجّهة للعامة على نفس الخادم الذي أنتم عليه ستظهر على الخيط الزمني المحلي.",
   "introduction.interactions.action": "إنهاء العرض التوضيحي!",
   "introduction.interactions.favourite.headline": "الإضافة إلى المفضلة",
@@ -175,22 +175,22 @@
   "introduction.interactions.reply.text": "يمكنكم الرد على تبويقاتكم و تبويقات الآخرين على شكل سلسلة محادثة.",
   "introduction.welcome.action": "هيا بنا!",
   "introduction.welcome.headline": "الخطوات الأولى",
-  "introduction.welcome.text": "مرحبا بكم على الفيديفيرس! بعد لحظات قليلة ، سيكون بمقدوركم بث رسائل والتحدث إلى أصدقائكم عبر تشكيلة واسعة من الخوادم المختلفة. هذا الخادم ، {domain} ، يستضيف ملفكم الشخصي ، لذا يجب تذكر اسمه جيدا.",
+  "introduction.welcome.text": "مرحبا بكم على الفديفرس! بعد لحظات قليلة ، سيكون بمقدوركم بث رسائل والتحدث إلى أصدقائكم عبر تشكيلة واسعة من الخوادم المختلفة. هذا الخادم ، {domain} ، يستضيف ملفكم الشخصي ، لذا يجب تذكر اسمه جيدا.",
   "keyboard_shortcuts.back": "للعودة",
   "keyboard_shortcuts.blocked": "لفتح قائمة المستخدمين المحظورين",
   "keyboard_shortcuts.boost": "للترقية",
   "keyboard_shortcuts.column": "للتركيز على منشور على أحد الأعمدة",
   "keyboard_shortcuts.compose": "للتركيز على نافذة تحرير النصوص",
-  "keyboard_shortcuts.description": "Description",
+  "keyboard_shortcuts.description": "الوصف",
   "keyboard_shortcuts.direct": "لفتح عمود الرسائل المباشرة",
-  "keyboard_shortcuts.down": "للإنتقال إلى أسفل القائمة",
-  "keyboard_shortcuts.enter": "to open status",
+  "keyboard_shortcuts.down": "للانتقال إلى أسفل القائمة",
+  "keyboard_shortcuts.enter": "لفتح المنشور",
   "keyboard_shortcuts.favourite": "للإضافة إلى المفضلة",
   "keyboard_shortcuts.favourites": "لفتح قائمة المفضلات",
   "keyboard_shortcuts.federated": "لفتح الخيط الزمني الفديرالي",
   "keyboard_shortcuts.heading": "Keyboard Shortcuts",
   "keyboard_shortcuts.home": "لفتح الخيط الرئيسي",
-  "keyboard_shortcuts.hotkey": "مفتاح الإختصار",
+  "keyboard_shortcuts.hotkey": "مفتاح الاختصار",
   "keyboard_shortcuts.legend": "لعرض هذا المفتاح",
   "keyboard_shortcuts.local": "لفتح الخيط الزمني المحلي",
   "keyboard_shortcuts.mention": "لذِكر الناشر",
@@ -204,16 +204,17 @@
   "keyboard_shortcuts.search": "للتركيز على البحث",
   "keyboard_shortcuts.start": "لفتح عمود \"هيا نبدأ\"",
   "keyboard_shortcuts.toggle_hidden": "لعرض أو إخفاء النص مِن وراء التحذير",
+  "keyboard_shortcuts.toggle_sensitivity": "لعرض/إخفاء الوسائط",
   "keyboard_shortcuts.toot": "لتحرير تبويق جديد",
   "keyboard_shortcuts.unfocus": "لإلغاء التركيز على حقل النص أو نافذة البحث",
-  "keyboard_shortcuts.up": "للإنتقال إلى أعلى القائمة",
+  "keyboard_shortcuts.up": "للانتقال إلى أعلى القائمة",
   "lightbox.close": "إغلاق",
   "lightbox.next": "التالي",
   "lightbox.previous": "العودة",
-  "lightbox.view_context": "View context",
+  "lightbox.view_context": "اعرض السياق",
   "lists.account.add": "أضف إلى القائمة",
-  "lists.account.remove": "إحذف من القائمة",
-  "lists.delete": "Delete list",
+  "lists.account.remove": "احذف من القائمة",
+  "lists.delete": "احذف القائمة",
   "lists.edit": "تعديل القائمة",
   "lists.edit.submit": "تعديل العنوان",
   "lists.new.create": "إنشاء قائمة",
@@ -230,20 +231,22 @@
   "navigation_bar.community_timeline": "الخيط العام المحلي",
   "navigation_bar.compose": "تحرير تبويق جديد",
   "navigation_bar.direct": "الرسائل المباشِرة",
-  "navigation_bar.discover": "إكتشف",
+  "navigation_bar.discover": "اكتشف",
   "navigation_bar.domain_blocks": "النطاقات المخفية",
   "navigation_bar.edit_profile": "تعديل الملف الشخصي",
   "navigation_bar.favourites": "المفضلة",
   "navigation_bar.filters": "الكلمات المكتومة",
   "navigation_bar.follow_requests": "طلبات المتابعة",
+  "navigation_bar.follows_and_followers": "المتابِعين والمتابَعون",
   "navigation_bar.info": "عن هذا الخادم",
-  "navigation_bar.keyboard_shortcuts": "إختصارات لوحة المفاتيح",
+  "navigation_bar.keyboard_shortcuts": "اختصارات لوحة المفاتيح",
   "navigation_bar.lists": "القوائم",
   "navigation_bar.logout": "خروج",
   "navigation_bar.mutes": "الحسابات المكتومة",
-  "navigation_bar.personal": "Personal",
+  "navigation_bar.personal": "شخصي",
   "navigation_bar.pins": "التبويقات المثبتة",
   "navigation_bar.preferences": "التفضيلات",
+  "navigation_bar.profile_directory": "دليل المستخدِمين",
   "navigation_bar.public_timeline": "الخيط العام الموحد",
   "navigation_bar.security": "الأمان",
   "notification.favourite": "أُعجِب {name} بمنشورك",
@@ -251,19 +254,19 @@
   "notification.mention": "{name} ذكرك",
   "notification.poll": "A poll you have voted in has ended",
   "notification.reblog": "{name} قام بترقية تبويقك",
-  "notifications.clear": "إمسح الإخطارات",
+  "notifications.clear": "امسح الإخطارات",
   "notifications.clear_confirmation": "أمتأكد من أنك تود مسح جل الإخطارات الخاصة بك و المتلقاة إلى حد الآن ؟",
   "notifications.column_settings.alert": "إشعارات سطح المكتب",
-  "notifications.column_settings.favourite": "المُفَضَّلة :",
+  "notifications.column_settings.favourite": "المُفَضَّلة:",
   "notifications.column_settings.filter_bar.advanced": "عرض كافة الفئات",
   "notifications.column_settings.filter_bar.category": "شريط الفلترة السريعة",
   "notifications.column_settings.filter_bar.show": "عرض",
-  "notifications.column_settings.follow": "متابعُون جُدُد :",
-  "notifications.column_settings.mention": "الإشارات :",
+  "notifications.column_settings.follow": "متابعُون جُدُد:",
+  "notifications.column_settings.mention": "الإشارات:",
   "notifications.column_settings.poll": "نتائج استطلاع الرأي:",
   "notifications.column_settings.push": "الإخطارات المدفوعة",
   "notifications.column_settings.reblog": "الترقيّات:",
-  "notifications.column_settings.show": "إعرِضها في عمود",
+  "notifications.column_settings.show": "اعرِضها في عمود",
   "notifications.column_settings.sound": "أصدر صوتا",
   "notifications.filter.all": "الكل",
   "notifications.filter.boosts": "الترقيات",
@@ -274,11 +277,11 @@
   "notifications.group": "{count} إشعارات",
   "poll.closed": "انتهى",
   "poll.refresh": "تحديث",
-  "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
+  "poll.total_votes": "{count, plural, one {# صوت} other {# أصوات}}",
   "poll.vote": "صَوّت",
   "poll_button.add_poll": "إضافة استطلاع للرأي",
   "poll_button.remove_poll": "إزالة استطلاع الرأي",
-  "privacy.change": "إضبط خصوصية المنشور",
+  "privacy.change": "اضبط خصوصية المنشور",
   "privacy.direct.long": "أنشر إلى المستخدمين المشار إليهم فقط",
   "privacy.direct.short": "مباشر",
   "privacy.private.long": "أنشر لمتابعيك فقط",
@@ -287,20 +290,20 @@
   "privacy.public.short": "للعامة",
   "privacy.unlisted.long": "لا تقم بإدراجه على الخيوط العامة",
   "privacy.unlisted.short": "غير مدرج",
-  "regeneration_indicator.label": "جارٍ التحميل …",
-  "regeneration_indicator.sublabel": "جارٍ تجهيز تغذية صفحتك الرئيسية !",
-  "relative_time.days": "{number}d",
-  "relative_time.hours": "{number}h",
+  "regeneration_indicator.label": "جارٍ التحميل…",
+  "regeneration_indicator.sublabel": "جارٍ تجهيز تغذية صفحتك الرئيسية!",
+  "relative_time.days": "{number}ي",
+  "relative_time.hours": "{number}سا",
   "relative_time.just_now": "الآن",
-  "relative_time.minutes": "{number}m",
-  "relative_time.seconds": "{number}s",
+  "relative_time.minutes": "{number}د",
+  "relative_time.seconds": "{number}ثا",
   "reply_indicator.cancel": "إلغاء",
   "report.forward": "التحويل إلى {target}",
-  "report.forward_hint": "هذا الحساب ينتمي إلى خادوم آخَر. هل تودّ إرسال نسخة مجهولة مِن التقرير إلى هنالك أيضًا ؟",
+  "report.forward_hint": "هذا الحساب ينتمي إلى خادوم آخَر. هل تودّ إرسال نسخة مجهولة مِن التقرير إلى هنالك أيضًا؟",
   "report.hint": "سوف يتم إرسال التقرير إلى المُشرِفين على خادومكم. بإمكانكم الإدلاء بشرح عن سبب الإبلاغ عن الحساب أسفله:",
   "report.placeholder": "تعليقات إضافية",
   "report.submit": "إرسال",
-  "report.target": "إبلاغ",
+  "report.target": "ابلغ عن {target}",
   "search.placeholder": "ابحث",
   "search_popout.search_format": "نمط البحث المتقدم",
   "search_popout.tips.full_text": "النص البسيط يقوم بعرض المنشورات التي كتبتها أو قمت بإرسالها أو ترقيتها أو تمت الإشارة إليك فيها من طرف آخرين ، بالإضافة إلى مطابقة أسماء المستخدمين وأسماء العرض وعلامات التصنيف.",
@@ -314,11 +317,11 @@
   "search_results.total": "{count, number} {count, plural, one {result} و {results}}",
   "status.admin_account": "افتح الواجهة الإدارية لـ @{name}",
   "status.admin_status": "افتح هذا المنشور على واجهة الإشراف",
-  "status.block": "Block @{name}",
+  "status.block": "احجب @{name}",
   "status.cancel_reblog_private": "إلغاء الترقية",
   "status.cannot_reblog": "تعذرت ترقية هذا المنشور",
   "status.copy": "نسخ رابط المنشور",
-  "status.delete": "إحذف",
+  "status.delete": "احذف",
   "status.detailed_status": "تفاصيل المحادثة",
   "status.direct": "رسالة خاصة إلى @{name}",
   "status.embed": "إدماج",
@@ -341,31 +344,31 @@
   "status.redraft": "إزالة و إعادة الصياغة",
   "status.reply": "ردّ",
   "status.replyAll": "رُد على الخيط",
-  "status.report": "إبلِغ عن @{name}",
+  "status.report": "ابلِغ عن @{name}",
   "status.sensitive_warning": "محتوى حساس",
   "status.share": "مشاركة",
-  "status.show_less": "إعرض أقلّ",
+  "status.show_less": "اعرض أقلّ",
   "status.show_less_all": "طي الكل",
   "status.show_more": "أظهر المزيد",
   "status.show_more_all": "توسيع الكل",
   "status.show_thread": "الكشف عن المحادثة",
   "status.unmute_conversation": "فك الكتم عن المحادثة",
   "status.unpin": "فك التدبيس من الملف الشخصي",
-  "suggestions.dismiss": "إلغاء الإقتراح",
+  "suggestions.dismiss": "إلغاء الاقتراح",
   "suggestions.header": "يمكن أن يهمك…",
   "tabs_bar.federated_timeline": "الموحَّد",
   "tabs_bar.home": "الرئيسية",
   "tabs_bar.local_timeline": "المحلي",
   "tabs_bar.notifications": "الإخطارات",
   "tabs_bar.search": "البحث",
-  "time_remaining.days": "{number, plural, one {# day} other {# days}} left",
+  "time_remaining.days": "{number, plural, one {# يوم} other {# أيام}} متبقية",
   "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
   "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
-  "time_remaining.moments": "Moments remaining",
+  "time_remaining.moments": "لحظات متبقية",
   "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
   "trends.count_by_accounts": "{count} {rawCount, plural, one {person} آخرون {people}} يتحدثون",
   "ui.beforeunload": "سوف تفقد مسودتك إن تركت ماستدون.",
-  "upload_area.title": "إسحب ثم أفلت للرفع",
+  "upload_area.title": "اسحب ثم أفلت للرفع",
   "upload_button.label": "إضافة وسائط (JPEG، PNG، GIF، WebM، MP4، MOV)",
   "upload_error.limit": "لقد تم بلوغ الحد الأقصى المسموح به لإرسال الملفات.",
   "upload_error.poll": "لا يمكن إدراج ملفات في استطلاعات الرأي.",
diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json
index 57849c393..b911848ee 100644
--- a/app/javascript/mastodon/locales/ast.json
+++ b/app/javascript/mastodon/locales/ast.json
@@ -166,7 +166,7 @@
   "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
   "introduction.federation.local.headline": "Local",
   "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
-  "introduction.interactions.action": "Finish tutorial!",
+  "introduction.interactions.action": "Finish toot-orial!",
   "introduction.interactions.favourite.headline": "Favourite",
   "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
   "introduction.interactions.reblog.headline": "Boost",
@@ -204,6 +204,7 @@
   "keyboard_shortcuts.search": "to focus search",
   "keyboard_shortcuts.start": "p'abrir la columna «entamar»",
   "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
+  "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
   "keyboard_shortcuts.toot": "p'apenzar un toot nuevu",
   "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
   "keyboard_shortcuts.up": "pa xubir na llista",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "Favoritos",
   "navigation_bar.filters": "Pallabres silenciaes",
   "navigation_bar.follow_requests": "Solicitúes de siguimientu",
+  "navigation_bar.follows_and_followers": "Follows and followers",
   "navigation_bar.info": "Tocante a esta instancia",
   "navigation_bar.keyboard_shortcuts": "Atayos",
   "navigation_bar.lists": "Llistes",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "Personal",
   "navigation_bar.pins": "Toots fixaos",
   "navigation_bar.preferences": "Preferencies",
+  "navigation_bar.profile_directory": "Profile directory",
   "navigation_bar.public_timeline": "Llinia temporal federada",
   "navigation_bar.security": "Seguranza",
   "notification.favourite": "{name} favourited your status",
diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json
index 7836146cd..783f9eb68 100644
--- a/app/javascript/mastodon/locales/bg.json
+++ b/app/javascript/mastodon/locales/bg.json
@@ -166,7 +166,7 @@
   "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
   "introduction.federation.local.headline": "Local",
   "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
-  "introduction.interactions.action": "Finish tutorial!",
+  "introduction.interactions.action": "Finish toot-orial!",
   "introduction.interactions.favourite.headline": "Favourite",
   "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
   "introduction.interactions.reblog.headline": "Boost",
@@ -204,6 +204,7 @@
   "keyboard_shortcuts.search": "to focus search",
   "keyboard_shortcuts.start": "to open \"get started\" column",
   "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
+  "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
   "keyboard_shortcuts.toot": "to start a brand new toot",
   "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
   "keyboard_shortcuts.up": "to move up in the list",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "Favourites",
   "navigation_bar.filters": "Muted words",
   "navigation_bar.follow_requests": "Follow requests",
+  "navigation_bar.follows_and_followers": "Follows and followers",
   "navigation_bar.info": "Extended information",
   "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
   "navigation_bar.lists": "Lists",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "Personal",
   "navigation_bar.pins": "Pinned toots",
   "navigation_bar.preferences": "Предпочитания",
+  "navigation_bar.profile_directory": "Profile directory",
   "navigation_bar.public_timeline": "Публичен канал",
   "navigation_bar.security": "Security",
   "notification.favourite": "{name} хареса твоята публикация",
diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json
index bdf952d3a..93e7eedf9 100644
--- a/app/javascript/mastodon/locales/bn.json
+++ b/app/javascript/mastodon/locales/bn.json
@@ -204,6 +204,7 @@
   "keyboard_shortcuts.search": "খোঁজার অংশে ফোকাস করতে",
   "keyboard_shortcuts.start": "\"প্রথম শুরুর\" কলাম বের করতে",
   "keyboard_shortcuts.toggle_hidden": "CW লেখা দেখতে বা লুকাতে",
+  "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
   "keyboard_shortcuts.toot": "নতুন একটা টুট লেখা শুরু করতে",
   "keyboard_shortcuts.unfocus": "লেখা বা খোঁজার জায়গায় ফোকাস না করতে",
   "keyboard_shortcuts.up": "তালিকার উপরের দিকে যেতে",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "পছন্দের",
   "navigation_bar.filters": "বন্ধ করা শব্দ",
   "navigation_bar.follow_requests": "অনুসরণের অনুরোধগুলি",
+  "navigation_bar.follows_and_followers": "Follows and followers",
   "navigation_bar.info": "এই সার্ভার সম্পর্কে",
   "navigation_bar.keyboard_shortcuts": "চাবি ব্যবহার",
   "navigation_bar.lists": "তালিকাগুলো",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "নিজস্ব",
   "navigation_bar.pins": "পিন দেওয়া টুট",
   "navigation_bar.preferences": "পছন্দসমূহ",
+  "navigation_bar.profile_directory": "Profile directory",
   "navigation_bar.public_timeline": "যুক্তবিশ্বের সময়রেখা",
   "navigation_bar.security": "নিরাপত্তা",
   "notification.favourite": "{name} আপনার কার্যক্রম পছন্দ করেছেন",
@@ -292,7 +295,7 @@
   "relative_time.days": "{number} দিন",
   "relative_time.hours": "{number} ঘন্টা",
   "relative_time.just_now": "এখন",
-  "relative_time.minutes": "{number} মাস",
+  "relative_time.minutes": "{number}ম",
   "relative_time.seconds": "{number} সেকেন্ড",
   "reply_indicator.cancel": "বাতিল করতে",
   "report.forward": "এটা আরো পাঠান {target} তে",
diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json
index 0cafb1120..acb9709d0 100644
--- a/app/javascript/mastodon/locales/ca.json
+++ b/app/javascript/mastodon/locales/ca.json
@@ -1,7 +1,7 @@
 {
   "account.add_or_remove_from_list": "Afegir o Treure de les llistes",
   "account.badges.bot": "Bot",
-  "account.block": "Bloca @{name}",
+  "account.block": "Bloqueja @{name}",
   "account.block_domain": "Amaga-ho tot de {domain}",
   "account.blocked": "Bloquejat",
   "account.direct": "Missatge directe @{name}",
@@ -11,7 +11,7 @@
   "account.follow": "Segueix",
   "account.followers": "Seguidors",
   "account.followers.empty": "Encara ningú no segueix aquest usuari.",
-  "account.follows": "Seguint",
+  "account.follows": "Seguiments",
   "account.follows.empty": "Aquest usuari encara no segueix a ningú.",
   "account.follows_you": "Et segueix",
   "account.hide_reblogs": "Amaga els impulsos de @{name}",
@@ -44,7 +44,7 @@
   "bundle_modal_error.close": "Tanca",
   "bundle_modal_error.message": "S'ha produït un error en carregar aquest component.",
   "bundle_modal_error.retry": "Torna-ho a provar",
-  "column.blocks": "Usuaris blocats",
+  "column.blocks": "Usuaris bloquejats",
   "column.community": "Línia de temps local",
   "column.direct": "Missatges directes",
   "column.domain_blocks": "Dominis ocults",
@@ -54,7 +54,7 @@
   "column.lists": "Llistes",
   "column.mutes": "Usuaris silenciats",
   "column.notifications": "Notificacions",
-  "column.pins": "Toot fixat",
+  "column.pins": "Toots fixats",
   "column.public": "Línia de temps federada",
   "column_back_button.label": "Enrere",
   "column_header.hide_settings": "Amaga la configuració",
@@ -65,12 +65,12 @@
   "column_header.unpin": "No fixis",
   "column_subheading.settings": "Configuració",
   "community.column_settings.media_only": "Només multimèdia",
-  "compose_form.direct_message_warning": "Aquest toot només serà enviat als usuaris esmentats. De totes maneres, els operadors de la teva o de qualsevol de les instàncies receptores poden inspeccionar aquest missatge.",
+  "compose_form.direct_message_warning": "Aquest toot només serà enviat als usuaris esmentats.",
   "compose_form.direct_message_warning_learn_more": "Aprèn més",
   "compose_form.hashtag_warning": "Aquest toot no es mostrarà en cap etiqueta ja que no està llistat. Només els toots públics poden ser cercats per etiqueta.",
   "compose_form.lock_disclaimer": "El teu compte no està bloquejat {locked}. Tothom pot seguir-te i veure els teus missatges a seguidors.",
-  "compose_form.lock_disclaimer.lock": "blocat",
-  "compose_form.placeholder": "En què estàs pensant?",
+  "compose_form.lock_disclaimer.lock": "bloquejat",
+  "compose_form.placeholder": "En què penses?",
   "compose_form.poll.add_option": "Afegeix una opció",
   "compose_form.poll.duration": "Durada de l'enquesta",
   "compose_form.poll.option_placeholder": "Opció {number}",
@@ -84,11 +84,11 @@
   "compose_form.spoiler.unmarked": "Text no ocult",
   "compose_form.spoiler_placeholder": "Escriu l'avís aquí",
   "confirmation_modal.cancel": "Cancel·la",
-  "confirmations.block.block_and_report": "Block & Report",
-  "confirmations.block.confirm": "Bloca",
+  "confirmations.block.block_and_report": "Bloquejar i informar",
+  "confirmations.block.confirm": "Bloqueja",
   "confirmations.block.message": "Estàs segur que vols bloquejar a {name}?",
   "confirmations.delete.confirm": "Suprimeix",
-  "confirmations.delete.message": "Estàs segur que vols suprimir aquest estat?",
+  "confirmations.delete.message": "Estàs segur que vols suprimir aquest toot?",
   "confirmations.delete_list.confirm": "Suprimeix",
   "confirmations.delete_list.message": "Estàs segur que vols suprimir permanentment aquesta llista?",
   "confirmations.domain_block.confirm": "Amaga tot el domini",
@@ -96,12 +96,12 @@
   "confirmations.mute.confirm": "Silencia",
   "confirmations.mute.message": "Estàs segur que vols silenciar {name}?",
   "confirmations.redraft.confirm": "Esborrar i refer",
-  "confirmations.redraft.message": "Estàs segur que vols esborrar aquesta publicació i tornar a redactar-la? Perderàs totes els impulsos i favorits, i les respostes a la publicació original es quedaran orfes.",
+  "confirmations.redraft.message": "Estàs segur que vols esborrar aquest toot i tornar a redactar-lo? Perderàs totes els impulsos i favorits, i les respostes al toot original es quedaran orfes.",
   "confirmations.reply.confirm": "Respon",
   "confirmations.reply.message": "Responen ara es sobreescriurà el missatge que estàs editant. Estàs segur que vols continuar?",
   "confirmations.unfollow.confirm": "Deixa de seguir",
   "confirmations.unfollow.message": "Estàs segur que vols deixar de seguir {name}?",
-  "embed.instructions": "Incrusta aquest estat al lloc web copiant el codi a continuació.",
+  "embed.instructions": "Incrusta aquest toot al lloc web copiant el codi a continuació.",
   "embed.preview": "Aquí tenim quin aspecte tindrá:",
   "emoji_button.activity": "Activitat",
   "emoji_button.custom": "Personalitzat",
@@ -118,18 +118,18 @@
   "emoji_button.symbols": "Símbols",
   "emoji_button.travel": "Viatges i Llocs",
   "empty_column.account_timeline": "No hi ha toots aquí!",
-  "empty_column.account_unavailable": "Profile unavailable",
+  "empty_column.account_unavailable": "Perfil no disponible",
   "empty_column.blocks": "Encara no has bloquejat cap usuari.",
-  "empty_column.community": "La línia de temps local és buida. Escriu alguna cosa públicament per fer rodar la pilota!",
+  "empty_column.community": "La línia de temps local és buida. Escriu alguna cosa públicament per a fer rodar la pilota!",
   "empty_column.direct": "Encara no tens missatges directes. Quan enviïs o rebis un, es mostrarà aquí.",
   "empty_column.domain_blocks": "Encara no hi ha dominis ocults.",
   "empty_column.favourited_statuses": "Encara no tens cap toot favorit. Quan en tinguis, apareixerà aquí.",
   "empty_column.favourites": "Encara ningú ha marcat aquest toot com a favorit. Quan algú ho faci, apareixera aquí.",
-  "empty_column.follow_requests": "Encara no teniu cap petició de seguiment. Quan rebeu una, apareixerà aquí.",
+  "empty_column.follow_requests": "Encara no teniu cap petició de seguiment. Quan rebis una, apareixerà aquí.",
   "empty_column.hashtag": "Encara no hi ha res en aquesta etiqueta.",
   "empty_column.home": "Encara no segueixes ningú. Visita {public} o fes cerca per començar i conèixer altres usuaris.",
   "empty_column.home.public_timeline": "la línia de temps pública",
-  "empty_column.list": "Encara no hi ha res en aquesta llista. Quan els membres d'aquesta llista publiquin nous estats, apareixeran aquí.",
+  "empty_column.list": "Encara no hi ha res en aquesta llista. Quan els membres d'aquesta llista publiquin nous toots, apareixeran aquí.",
   "empty_column.lists": "Encara no tens cap llista. Quan en facis una, apareixerà aquí.",
   "empty_column.mutes": "Encara no has silenciat cap usuari.",
   "empty_column.notifications": "Encara no tens notificacions. Interactua amb altres per iniciar la conversa.",
@@ -179,31 +179,32 @@
   "keyboard_shortcuts.back": "navegar enrera",
   "keyboard_shortcuts.blocked": "per obrir la llista d'usuaris bloquejats",
   "keyboard_shortcuts.boost": "impulsar",
-  "keyboard_shortcuts.column": "per centrar un estat en una de les columnes",
+  "keyboard_shortcuts.column": "per a centrar un toot en una de les columnes",
   "keyboard_shortcuts.compose": "per centrar l'area de composició de text",
   "keyboard_shortcuts.description": "Descripció",
   "keyboard_shortcuts.direct": "per obrir la columna de missatges directes",
   "keyboard_shortcuts.down": "per baixar en la llista",
-  "keyboard_shortcuts.enter": "ampliar estat",
+  "keyboard_shortcuts.enter": "ampliar el toot",
   "keyboard_shortcuts.favourite": "afavorir",
   "keyboard_shortcuts.favourites": "per obrir la llista de favorits",
   "keyboard_shortcuts.federated": "per obrir la línia de temps federada",
   "keyboard_shortcuts.heading": "Dreçeres de teclat",
-  "keyboard_shortcuts.home": "per obrir la línia de temps Inici",
+  "keyboard_shortcuts.home": "per a obrir la línia de temps Inici",
   "keyboard_shortcuts.hotkey": "Tecla d'accés directe",
   "keyboard_shortcuts.legend": "per a mostrar aquesta llegenda",
-  "keyboard_shortcuts.local": "per obrir la línia de temps local",
-  "keyboard_shortcuts.mention": "per esmentar l'autor",
-  "keyboard_shortcuts.muted": "per obrir la llista d'usuaris silenciats",
-  "keyboard_shortcuts.my_profile": "per obrir el teu perfil",
-  "keyboard_shortcuts.notifications": "per obrir la columna de notificacions",
-  "keyboard_shortcuts.pinned": "per obrir la llista de toots fixats",
-  "keyboard_shortcuts.profile": "per obrir el perfil de l'autor",
+  "keyboard_shortcuts.local": "per a obrir la línia de temps local",
+  "keyboard_shortcuts.mention": "per a esmentar l'autor",
+  "keyboard_shortcuts.muted": "per a obrir la llista d'usuaris silenciats",
+  "keyboard_shortcuts.my_profile": "per a obrir el teu perfil",
+  "keyboard_shortcuts.notifications": "per a obrir la columna de notificacions",
+  "keyboard_shortcuts.pinned": "per a obrir la llista de toots fixats",
+  "keyboard_shortcuts.profile": "per a obrir el perfil de l'autor",
   "keyboard_shortcuts.reply": "respondre",
-  "keyboard_shortcuts.requests": "per obrir la llista de sol·licituds de seguiment",
-  "keyboard_shortcuts.search": "per centrar la cerca",
-  "keyboard_shortcuts.start": "per obrir la columna \"Començar\"",
+  "keyboard_shortcuts.requests": "per a obrir la llista de sol·licituds de seguiment",
+  "keyboard_shortcuts.search": "per a centrar la cerca",
+  "keyboard_shortcuts.start": "per a obrir la columna \"Començar\"",
   "keyboard_shortcuts.toggle_hidden": "per a mostrar/amagar text sota CW",
+  "keyboard_shortcuts.toggle_sensitivity": "per a mostrar/amagar mèdia",
   "keyboard_shortcuts.toot": "per a començar un toot nou de trinca",
   "keyboard_shortcuts.unfocus": "descentrar l'area de composició de text/cerca",
   "keyboard_shortcuts.up": "moure amunt en la llista",
@@ -213,7 +214,7 @@
   "lightbox.view_context": "Veure el context",
   "lists.account.add": "Afegir a la llista",
   "lists.account.remove": "Treure de la llista",
-  "lists.delete": "Delete list",
+  "lists.delete": "Esborrar llista",
   "lists.edit": "Editar llista",
   "lists.edit.submit": "Canvi de títol",
   "lists.new.create": "Afegir llista",
@@ -225,7 +226,7 @@
   "missing_indicator.label": "No trobat",
   "missing_indicator.sublabel": "Aquest recurs no pot ser trobat",
   "mute_modal.hide_notifications": "Amagar notificacions d'aquest usuari?",
-  "navigation_bar.apps": "Apps Mòbils",
+  "navigation_bar.apps": "Apps mòbils",
   "navigation_bar.blocks": "Usuaris bloquejats",
   "navigation_bar.community_timeline": "Línia de temps Local",
   "navigation_bar.compose": "Redacta nou toot",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "Favorits",
   "navigation_bar.filters": "Paraules silenciades",
   "navigation_bar.follow_requests": "Sol·licituds de seguiment",
+  "navigation_bar.follows_and_followers": "Seguits i seguidors",
   "navigation_bar.info": "Sobre aquest servidor",
   "navigation_bar.keyboard_shortcuts": "Dreceres de teclat",
   "navigation_bar.lists": "Llistes",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "Personal",
   "navigation_bar.pins": "Toots fixats",
   "navigation_bar.preferences": "Preferències",
+  "navigation_bar.profile_directory": "Directori de perfils",
   "navigation_bar.public_timeline": "Línia de temps federada",
   "navigation_bar.security": "Seguretat",
   "notification.favourite": "{name} ha afavorit el teu estat",
@@ -300,24 +303,24 @@
   "report.hint": "El informe s'enviarà als moderadors del teu servidor. Pots explicar perquè vols informar d'aquest compte aquí:",
   "report.placeholder": "Comentaris addicionals",
   "report.submit": "Enviar",
-  "report.target": "Informes",
+  "report.target": "Informes {target}",
   "search.placeholder": "Cercar",
   "search_popout.search_format": "Format de cerca avançada",
   "search_popout.tips.full_text": "Text simple recupera publicacions que has escrit, les marcades com a favorites, les impulsades o en les que has estat esmentat, així com usuaris, noms d'usuari i etiquetes.",
   "search_popout.tips.hashtag": "etiqueta",
-  "search_popout.tips.status": "status",
+  "search_popout.tips.status": "estat",
   "search_popout.tips.text": "El text simple retorna coincidències amb els noms de visualització, els noms d'usuari i les etiquetes",
   "search_popout.tips.user": "usuari",
   "search_results.accounts": "Gent",
   "search_results.hashtags": "Etiquetes",
   "search_results.statuses": "Toots",
-  "search_results.total": "{count, number} {count, plural, un {result} altres {results}}",
+  "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
   "status.admin_account": "Obre l'interfície de moderació per a @{name}",
-  "status.admin_status": "Obre aquest estat a la interfície de moderació",
+  "status.admin_status": "Obre aquest toot a la interfície de moderació",
   "status.block": "Bloqueja @{name}",
   "status.cancel_reblog_private": "Desfer l'impuls",
   "status.cannot_reblog": "Aquesta publicació no pot ser impulsada",
-  "status.copy": "Copia l'enllaç a l'estat",
+  "status.copy": "Copia l'enllaç al toot",
   "status.delete": "Esborrar",
   "status.detailed_status": "Visualització detallada de la conversa",
   "status.direct": "Missatge directe @{name}",
@@ -363,12 +366,12 @@
   "time_remaining.minutes": "{number, plural, one {# minut} other {# minuts}} restants",
   "time_remaining.moments": "Moments restants",
   "time_remaining.seconds": "{number, plural, one {# segon} other {# segons}} restants",
-  "trends.count_by_accounts": "{count} {rawCount, plural, una {person} altres {people}} parlant",
-  "ui.beforeunload": "El vostre esborrany es perdrà si sortiu de Mastodon.",
-  "upload_area.title": "Arrossega i deixa anar per carregar",
+  "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
+  "ui.beforeunload": "El teu esborrany es perdrà si surts de Mastodon.",
+  "upload_area.title": "Arrossega i deixa anar per a carregar",
   "upload_button.label": "Afegir multimèdia (JPEG, PNG, GIF, WebM, MP4, MOV)",
   "upload_error.limit": "S'ha superat el límit de càrrega d'arxius.",
-  "upload_error.poll": "No es permet l'enviament de fitxers amb les enquestes.",
+  "upload_error.poll": "No es permet l'enviament de fitxers en les enquestes.",
   "upload_form.description": "Descriure els problemes visuals",
   "upload_form.focus": "Modificar la previsualització",
   "upload_form.undo": "Esborra",
diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json
index 8321d7e7e..907032bdf 100644
--- a/app/javascript/mastodon/locales/co.json
+++ b/app/javascript/mastodon/locales/co.json
@@ -246,6 +246,7 @@
   "navigation_bar.personal": "Persunale",
   "navigation_bar.pins": "Statuti puntarulati",
   "navigation_bar.preferences": "Preferenze",
+  "navigation_bar.profile_directory": "Annuariu di i prufili",
   "navigation_bar.public_timeline": "Linea pubblica glubale",
   "navigation_bar.security": "Sicurità",
   "notification.favourite": "{name} hà aghjuntu u vostru statutu à i so favuriti",
@@ -291,8 +292,8 @@
   "privacy.unlisted.short": "Micca listatu",
   "regeneration_indicator.label": "Caricamentu…",
   "regeneration_indicator.sublabel": "Priparazione di a vostra pagina d'accolta!",
-  "relative_time.days": "{number}d",
-  "relative_time.hours": "{number}h",
+  "relative_time.days": "{number}ghj",
+  "relative_time.hours": "{number}o",
   "relative_time.just_now": "avà",
   "relative_time.minutes": "{number}m",
   "relative_time.seconds": "{number}s",
diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json
index 5dd977374..1bd2ae84d 100644
--- a/app/javascript/mastodon/locales/cs.json
+++ b/app/javascript/mastodon/locales/cs.json
@@ -204,6 +204,7 @@
   "keyboard_shortcuts.search": "k zaměření na hledání",
   "keyboard_shortcuts.start": "k otevření sloupce „začínáme“",
   "keyboard_shortcuts.toggle_hidden": "k zobrazení/skrytí textu za varováním o obsahu",
+  "keyboard_shortcuts.toggle_sensitivity": "k zobrazení/skrytí médií",
   "keyboard_shortcuts.toot": "k napsání úplně nového tootu",
   "keyboard_shortcuts.unfocus": "ke zrušení zaměření na psací prostor/hledání",
   "keyboard_shortcuts.up": "k posunutí nahoru v seznamu",
@@ -245,6 +246,7 @@
   "navigation_bar.personal": "Osobní",
   "navigation_bar.pins": "Připnuté tooty",
   "navigation_bar.preferences": "Předvolby",
+  "navigation_bar.profile_directory": "Adresář profilů",
   "navigation_bar.public_timeline": "Federovaná časová osa",
   "navigation_bar.security": "Zabezpečení",
   "notification.favourite": "{name} si oblíbil/a váš toot",
diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json
index 92dde4607..07067e6b1 100644
--- a/app/javascript/mastodon/locales/cy.json
+++ b/app/javascript/mastodon/locales/cy.json
@@ -45,7 +45,7 @@
   "bundle_modal_error.message": "Aeth rhywbeth o'i le tra'n llwytho'r elfen hon.",
   "bundle_modal_error.retry": "Ceiswich eto",
   "column.blocks": "Defnyddwyr a flociwyd",
-  "column.community": "Llinell amser lleol",
+  "column.community": "Ffrwd lleol",
   "column.direct": "Negeseuon preifat",
   "column.domain_blocks": "Parthau cuddiedig",
   "column.favourites": "Ffefrynnau",
@@ -71,20 +71,20 @@
   "compose_form.lock_disclaimer": "Nid yw eich cyfri wedi'i {locked}. Gall unrhyw un eich dilyn i weld eich tŵtiau dilynwyr-yn-unig.",
   "compose_form.lock_disclaimer.lock": "wedi ei gloi",
   "compose_form.placeholder": "Beth sydd ar eich meddwl?",
-  "compose_form.poll.add_option": "Add a choice",
-  "compose_form.poll.duration": "Poll duration",
-  "compose_form.poll.option_placeholder": "Choice {number}",
-  "compose_form.poll.remove_option": "Remove this choice",
+  "compose_form.poll.add_option": "Ychwanegu Dewisiad",
+  "compose_form.poll.duration": "Cyfnod pleidlais",
+  "compose_form.poll.option_placeholder": "Dewisiad {number}",
+  "compose_form.poll.remove_option": "Tynnu'r dewisiad",
   "compose_form.publish": "Tŵt",
   "compose_form.publish_loud": "{publish}!",
-  "compose_form.sensitive.hide": "Mark media as sensitive",
+  "compose_form.sensitive.hide": "Marcio cyfryngau fel eu bod yn sensitif",
   "compose_form.sensitive.marked": "Cyfryngau wedi'u marcio'n sensitif",
   "compose_form.sensitive.unmarked": "Nid yw'r cyfryngau wedi'u marcio'n sensitif",
   "compose_form.spoiler.marked": "Testun wedi ei guddio gan rybudd",
   "compose_form.spoiler.unmarked": "Nid yw'r testun wedi ei guddio",
   "compose_form.spoiler_placeholder": "Ysgrifenwch eich rhybudd yma",
   "confirmation_modal.cancel": "Canslo",
-  "confirmations.block.block_and_report": "Block & Report",
+  "confirmations.block.block_and_report": "Rhwystro ac Adrodd",
   "confirmations.block.confirm": "Blocio",
   "confirmations.block.message": "Ydych chi'n sicr eich bod eisiau blocio {name}?",
   "confirmations.delete.confirm": "Dileu",
@@ -109,7 +109,7 @@
   "emoji_button.food": "Bwyd a Diod",
   "emoji_button.label": "Mewnosodwch emoji",
   "emoji_button.nature": "Natur",
-  "emoji_button.not_found": "Dim emojo!! (╯°□°)╯︵ ┻━┻",
+  "emoji_button.not_found": "Dim emojau!! (╯°□°)╯︵ ┻━┻",
   "emoji_button.objects": "Gwrthrychau",
   "emoji_button.people": "Pobl",
   "emoji_button.recent": "Defnyddir yn aml",
@@ -117,8 +117,8 @@
   "emoji_button.search_results": "Canlyniadau chwilio",
   "emoji_button.symbols": "Symbolau",
   "emoji_button.travel": "Teithio & Llefydd",
-  "empty_column.account_timeline": "No toots here!",
-  "empty_column.account_unavailable": "Profile unavailable",
+  "empty_column.account_timeline": "Dim tŵtiau fama!",
+  "empty_column.account_unavailable": "Proffil ddim ar gael",
   "empty_column.blocks": "Nid ydych wedi blocio unrhyw ddefnyddwyr eto.",
   "empty_column.community": "Mae'r ffrwd lleol yn wag. Ysgrifenwch rhywbeth yn gyhoeddus i gael dechrau arni!",
   "empty_column.direct": "Nid oes gennych unrhyw negeseuon preifat eto. Pan y byddwch yn anfon neu derbyn un, mi fydd yn ymddangos yma.",
@@ -147,8 +147,8 @@
   "hashtag.column_header.tag_mode.all": "a {additional}",
   "hashtag.column_header.tag_mode.any": "neu {additional}",
   "hashtag.column_header.tag_mode.none": "heb {additional}",
-  "hashtag.column_settings.select.no_options_message": "No suggestions found",
-  "hashtag.column_settings.select.placeholder": "Enter hashtags…",
+  "hashtag.column_settings.select.no_options_message": "Dim awgrymiadau i'w weld",
+  "hashtag.column_settings.select.placeholder": "Mewnbynnu hashnodau…",
   "hashtag.column_settings.tag_mode.all": "Pob un o'r rhain",
   "hashtag.column_settings.tag_mode.any": "Unrhyw un o'r rhain",
   "hashtag.column_settings.tag_mode.none": "Dim o'r rhain",
@@ -156,26 +156,26 @@
   "home.column_settings.basic": "Syml",
   "home.column_settings.show_reblogs": "Dangos bŵstiau",
   "home.column_settings.show_replies": "Dangos ymatebion",
-  "intervals.full.days": "{number, plural, one {# day} other {# days}}",
-  "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
-  "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
+  "intervals.full.days": "{number, plural, one {# ddydd} other {# o ddyddiau}}",
+  "intervals.full.hours": "{number, plural, one {# awr} other {# o oriau}}",
+  "intervals.full.minutes": "{number, plural, one {# funud} other {# o funudau}}",
   "introduction.federation.action": "Nesaf",
   "introduction.federation.federated.headline": "Ffederasiwn",
-  "introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.",
-  "introduction.federation.home.headline": "Home",
-  "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
-  "introduction.federation.local.headline": "Local",
-  "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
+  "introduction.federation.federated.text": "Bydd pyst cyhoeddus o gweinyddion arall yn y Ffedysawd yn cael ai arddangos yn ffrwd y ffederasiwn.",
+  "introduction.federation.home.headline": "Hafan",
+  "introduction.federation.home.text": "Bydd pyst o bobl rydych yn ei ddilyn yn dangos yn eich ffrwd gatref. Gallwch dilyn unrhyw un ar unrhyw gweinydd!",
+  "introduction.federation.local.headline": "Lleol",
+  "introduction.federation.local.text": "Bydd pyst gyhoeddus o bobl ar yr un gweinydd a chi yn cael ei arddangos yn y ffrwd lleol.",
   "introduction.interactions.action": "Gorffen tiwtorial!",
   "introduction.interactions.favourite.headline": "Ffefryn",
-  "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
+  "introduction.interactions.favourite.text": "Gallwch cadw tŵt am hwyrach, a gadael i'r awdur gwybod roeddech yn ei hoffi, trwy ei hoffi.",
   "introduction.interactions.reblog.headline": "Hwb",
-  "introduction.interactions.reblog.text": "You can share other people's toots with your followers by boosting them.",
+  "introduction.interactions.reblog.text": "Gallwch rhannu tŵtiau pobl eraill gyda'ch dilynwyr trwy eu bŵstio.",
   "introduction.interactions.reply.headline": "Ateb",
-  "introduction.interactions.reply.text": "You can reply to other people's and your own toots, which will chain them together in a conversation.",
+  "introduction.interactions.reply.text": "Gallwch ateb i dŵtiau pobl eraill a thŵtiau eich hun, a fydd yn eu cadwyno at ei gilydd mewn sgwrs.",
   "introduction.welcome.action": "Awn ni!",
   "introduction.welcome.headline": "Camau cyntaf",
-  "introduction.welcome.text": "Welcome to the fediverse! In a few moments, you'll be able to broadcast messages and talk to your friends across a wide variety of servers. But this server, {domain}, is special—it hosts your profile, so remember its name.",
+  "introduction.welcome.text": "Croeso i'r ffedysawd! Mewn ychydig o funudau, byddwch yn gallu darlledu negeseuon a siarad i'ch ffrindiau ar draws amrywiaeth eang o weinyddion. Ond mae'r gweinydd hyn, {domain}, yn arbennig - mae o'n gweinyddu eich proffil, fellu cofiwch ei enw.",
   "keyboard_shortcuts.back": "i lywio nôl",
   "keyboard_shortcuts.blocked": "i agor rhestr defnyddwyr a flociwyd",
   "keyboard_shortcuts.boost": "i fŵstio",
@@ -190,7 +190,7 @@
   "keyboard_shortcuts.federated": "i agor ffrwd y ffederasiwn",
   "keyboard_shortcuts.heading": "Llwybrau byr allweddell",
   "keyboard_shortcuts.home": "i agor ffrwd cartref",
-  "keyboard_shortcuts.hotkey": "Hotkey",
+  "keyboard_shortcuts.hotkey": "Bysell brys",
   "keyboard_shortcuts.legend": "i ddangos yr arwr yma",
   "keyboard_shortcuts.local": "i agor ffrwd lleol",
   "keyboard_shortcuts.mention": "i grybwyll yr awdur",
@@ -204,18 +204,19 @@
   "keyboard_shortcuts.search": "i ffocysu chwilio",
   "keyboard_shortcuts.start": "i agor colofn \"dechrau arni\"",
   "keyboard_shortcuts.toggle_hidden": "i ddangos/cuddio testun tu ôl i CW",
+  "keyboard_shortcuts.toggle_sensitivity": "i ddangos/gyddio cyfryngau",
   "keyboard_shortcuts.toot": "i ddechrau tŵt newydd sbon",
   "keyboard_shortcuts.unfocus": "i ddad-ffocysu ardal cyfansoddi testun/chwilio",
   "keyboard_shortcuts.up": "i symud yn uwch yn y rhestr",
   "lightbox.close": "Cau",
   "lightbox.next": "Nesaf",
   "lightbox.previous": "Blaenorol",
-  "lightbox.view_context": "View context",
+  "lightbox.view_context": "Gweld cyd-destyn",
   "lists.account.add": "Ychwanegwch at restr",
   "lists.account.remove": "Dileu o'r rhestr",
   "lists.delete": "Dileu rhestr",
   "lists.edit": "Golygwch rhestr",
-  "lists.edit.submit": "Change title",
+  "lists.edit.submit": "Newid teitl",
   "lists.new.create": "Ychwanegu rhestr",
   "lists.new.title_placeholder": "Teitl rhestr newydd",
   "lists.search": "Chwilio ymysg pobl yr ydych yn ei ddilyn",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "Ffefrynnau",
   "navigation_bar.filters": "Geiriau a dawelwyd",
   "navigation_bar.follow_requests": "Ceisiadau dilyn",
+  "navigation_bar.follows_and_followers": "Dilynion a ddilynwyr",
   "navigation_bar.info": "Ynghylch yr achos hwn",
   "navigation_bar.keyboard_shortcuts": "Bysellau brys",
   "navigation_bar.lists": "Rhestrau",
@@ -244,12 +246,13 @@
   "navigation_bar.personal": "Personol",
   "navigation_bar.pins": "Tŵtiau wedi eu pinio",
   "navigation_bar.preferences": "Dewisiadau",
+  "navigation_bar.profile_directory": "Cyfeiriadur Proffil",
   "navigation_bar.public_timeline": "Ffrwd y ffederasiwn",
   "navigation_bar.security": "Diogelwch",
   "notification.favourite": "hoffodd {name} eich tŵt",
   "notification.follow": "dilynodd {name} chi",
   "notification.mention": "Soniodd {name} amdanoch chi",
-  "notification.poll": "A poll you have voted in has ended",
+  "notification.poll": "Mae pleidlais rydych wedi pleidleisio ynddi wedi dod i ben",
   "notification.reblog": "Hysbysebodd {name} eich tŵt",
   "notifications.clear": "Clirio hysbysiadau",
   "notifications.clear_confirmation": "Ydych chi'n sicr eich bod am glirio'ch holl hysbysiadau am byth?",
@@ -260,7 +263,7 @@
   "notifications.column_settings.filter_bar.show": "Dangos",
   "notifications.column_settings.follow": "Dilynwyr newydd:",
   "notifications.column_settings.mention": "Crybwylliadau:",
-  "notifications.column_settings.poll": "Poll results:",
+  "notifications.column_settings.poll": "Canlyniadau pleidlais:",
   "notifications.column_settings.push": "Hysbysiadau push",
   "notifications.column_settings.reblog": "Hybiadau:",
   "notifications.column_settings.show": "Dangos yn y golofn",
@@ -270,14 +273,14 @@
   "notifications.filter.favourites": "Ffefrynnau",
   "notifications.filter.follows": "Yn dilyn",
   "notifications.filter.mentions": "Crybwylliadau",
-  "notifications.filter.polls": "Poll results",
+  "notifications.filter.polls": "Canlyniadau pleidlais",
   "notifications.group": "{count} o hysbysiadau",
-  "poll.closed": "Closed",
-  "poll.refresh": "Refresh",
-  "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
-  "poll.vote": "Vote",
-  "poll_button.add_poll": "Add a poll",
-  "poll_button.remove_poll": "Remove poll",
+  "poll.closed": "Ar gau",
+  "poll.refresh": "Adnewyddu",
+  "poll.total_votes": "{count, plural, one {# bleidlais} other {# o bleidleisiau}}",
+  "poll.vote": "Pleidleisio",
+  "poll_button.add_poll": "Ychwanegu pleidlais",
+  "poll_button.remove_poll": "Tynnu pleidlais",
   "privacy.change": "Addasu preifatrwdd y tŵt",
   "privacy.direct.long": "Cyhoeddi i'r defnyddwyr sy'n cael eu crybwyll yn unig",
   "privacy.direct.short": "Uniongyrchol",
@@ -289,11 +292,11 @@
   "privacy.unlisted.short": "Heb ei restru",
   "regeneration_indicator.label": "Llwytho…",
   "regeneration_indicator.sublabel": "Mae eich ffrwd cartref yn cael ei baratoi!",
-  "relative_time.days": "{number}d",
-  "relative_time.hours": "{number}h",
+  "relative_time.days": "{number}dydd",
+  "relative_time.hours": "{number}awr",
   "relative_time.just_now": "nawr",
-  "relative_time.minutes": "{number}m",
-  "relative_time.seconds": "{number}s",
+  "relative_time.minutes": "{number}munud",
+  "relative_time.seconds": "{number}eiliad",
   "reply_indicator.cancel": "Canslo",
   "report.forward": "Ymlaen i {target}",
   "report.forward_hint": "Mae'r cyfrif o weinydd arall. Anfon copi anhysbys o'r adroddiad yno hefyd?",
@@ -311,13 +314,13 @@
   "search_results.accounts": "Pobl",
   "search_results.hashtags": "Hanshnodau",
   "search_results.statuses": "Tŵtiau",
-  "search_results.total": "{count, number} {count, plural, one {result} arall {results}}",
-  "status.admin_account": "Open moderation interface for @{name}",
-  "status.admin_status": "Open this tŵt in the moderation interface",
+  "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
+  "status.admin_account": "Agor rhyngwyneb goruwchwylio ar gyfer @{name}",
+  "status.admin_status": "Agor y tŵt yn y rhyngwyneb goruwchwylio",
   "status.block": "Blocio @{name}",
   "status.cancel_reblog_private": "Dadfŵstio",
   "status.cannot_reblog": "Ni ellir sbarduno'r tŵt hwn",
-  "status.copy": "Copy link to status",
+  "status.copy": "Copïo cysylltiad i'r tŵt",
   "status.delete": "Dileu",
   "status.detailed_status": "Golwg manwl o'r sgwrs",
   "status.direct": "Neges breifat @{name}",
@@ -358,17 +361,17 @@
   "tabs_bar.local_timeline": "Lleol",
   "tabs_bar.notifications": "Hysbysiadau",
   "tabs_bar.search": "Chwilio",
-  "time_remaining.days": "{number, plural, one {# day} other {# days}} left",
-  "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
-  "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
-  "time_remaining.moments": "Moments remaining",
-  "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
+  "time_remaining.days": "{number, plural, one {# ddydd} other {# o ddyddiau}} ar ôl",
+  "time_remaining.hours": "{number, plural, one {# awr} other {# o oriau}} ar ôl",
+  "time_remaining.minutes": "{number, plural, one {# funud} other {# o funudau}} ar ôl",
+  "time_remaining.moments": "Munudau ar ôl",
+  "time_remaining.seconds": "{number, plural, one {# eiliad} other {# o eiliadau}} ar ôl",
   "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} yn siarad",
   "ui.beforeunload": "Mi fyddwch yn colli eich drafft os gadewch Mastodon.",
   "upload_area.title": "Llusgwch & gollwing i uwchlwytho",
   "upload_button.label": "Ychwanegwch gyfryngau (JPEG, PNG, GIF, WebM, MP4, MOV)",
-  "upload_error.limit": "File upload limit exceeded.",
-  "upload_error.poll": "File upload not allowed with polls.",
+  "upload_error.limit": "Wedi mynd heibio'r uchafswm terfyn uwchlwytho.",
+  "upload_error.poll": "Nid oes modd uwchlwytho ffeiliau â phleidleisiau.",
   "upload_form.description": "Disgrifio i'r rheini a nam ar ei golwg",
   "upload_form.focus": "Newid rhagolwg",
   "upload_form.undo": "Dileu",
diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json
index 0afacada1..ba8ba7a28 100644
--- a/app/javascript/mastodon/locales/da.json
+++ b/app/javascript/mastodon/locales/da.json
@@ -204,6 +204,7 @@
   "keyboard_shortcuts.search": "for at fokusere søgningen",
   "keyboard_shortcuts.start": "for at åbne \"kom igen\" kolonnen",
   "keyboard_shortcuts.toggle_hidden": "for at vise/skjule tekst bag CW",
+  "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
   "keyboard_shortcuts.toot": "for at påbegynde et helt nyt trut",
   "keyboard_shortcuts.unfocus": "for at fjerne fokus fra skriveområde/søgning",
   "keyboard_shortcuts.up": "for at bevæge dig op ad listen",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "Favoritter",
   "navigation_bar.filters": "Dæmpede ord",
   "navigation_bar.follow_requests": "Følgeanmodninger",
+  "navigation_bar.follows_and_followers": "Follows and followers",
   "navigation_bar.info": "Om denne instans",
   "navigation_bar.keyboard_shortcuts": "Hurtigtast",
   "navigation_bar.lists": "Lister",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "Personligt",
   "navigation_bar.pins": "Fastgjorte trut",
   "navigation_bar.preferences": "Præferencer",
+  "navigation_bar.profile_directory": "Profile directory",
   "navigation_bar.public_timeline": "Fælles tidslinje",
   "navigation_bar.security": "Sikkerhed",
   "notification.favourite": "{name} favoriserede din status",
diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json
index 8b7d256eb..5c63af3b2 100644
--- a/app/javascript/mastodon/locales/de.json
+++ b/app/javascript/mastodon/locales/de.json
@@ -9,7 +9,7 @@
   "account.edit_profile": "Profil bearbeiten",
   "account.endorse": "Auf Profil hervorheben",
   "account.follow": "Folgen",
-  "account.followers": "Folgende",
+  "account.followers": "Folger_innen",
   "account.followers.empty": "Diesem Profil folgt noch niemand.",
   "account.follows": "Folgt",
   "account.follows.empty": "Dieses Profil folgt noch niemandem.",
@@ -37,7 +37,7 @@
   "account.unmute_notifications": "Benachrichtigungen von @{name} einschalten",
   "alert.unexpected.message": "Ein unerwarteter Fehler ist aufgetreten.",
   "alert.unexpected.title": "Hoppla!",
-  "boost_modal.combo": "Du kannst {combo} drücken, um dies beim nächsten Mal zu überspringen",
+  "boost_modal.combo": "Drücke {combo}, um dieses Fenster zu überspringen",
   "bundle_column_error.body": "Etwas ist beim Laden schiefgelaufen.",
   "bundle_column_error.retry": "Erneut versuchen",
   "bundle_column_error.title": "Netzwerkfehler",
@@ -55,7 +55,7 @@
   "column.mutes": "Stummgeschaltete Profile",
   "column.notifications": "Mitteilungen",
   "column.pins": "Angeheftete Beiträge",
-  "column.public": "Gesamtes bekanntes Netz",
+  "column.public": "Föderierte Zeitleiste",
   "column_back_button.label": "Zurück",
   "column_header.hide_settings": "Einstellungen verbergen",
   "column_header.moveLeft_settings": "Spalte nach links verschieben",
@@ -67,36 +67,36 @@
   "community.column_settings.media_only": "Nur Medien",
   "compose_form.direct_message_warning": "Dieser Beitrag wird nur für die erwähnten Nutzer sichtbar sein.",
   "compose_form.direct_message_warning_learn_more": "Mehr erfahren",
-  "compose_form.hashtag_warning": "Dieser Beitrag wird nicht unter einen dieser Hashtags sichtbar sein, solange er ungelistet ist. Bei einer Suche kann er nicht gefunden werden.",
+  "compose_form.hashtag_warning": "Dieser Beitrag wird nicht durch Hashtags entdeckbar sein, weil er ungelistet ist. Nur öffentliche Beiträge tauchen in Hashtag-Zeitleisten auf.",
   "compose_form.lock_disclaimer": "Dein Profil ist nicht {locked}. Wer dir folgen will, kann das jederzeit tun und dann auch deine privaten Beiträge sehen.",
   "compose_form.lock_disclaimer.lock": "gesperrt",
   "compose_form.placeholder": "Was gibt's Neues?",
-  "compose_form.poll.add_option": "Eine Auswahl hinzufügen",
+  "compose_form.poll.add_option": "Eine Wahl hinzufügen",
   "compose_form.poll.duration": "Umfragedauer",
-  "compose_form.poll.option_placeholder": "Auswahl {number}",
-  "compose_form.poll.remove_option": "Auswahl entfernen",
+  "compose_form.poll.option_placeholder": "Wahl {number}",
+  "compose_form.poll.remove_option": "Wahl entfernen",
   "compose_form.publish": "Tröt",
   "compose_form.publish_loud": "{publish}!",
-  "compose_form.sensitive.hide": "Mark media as sensitive",
+  "compose_form.sensitive.hide": "Medien als heikel markieren",
   "compose_form.sensitive.marked": "Medien sind als heikel markiert",
   "compose_form.sensitive.unmarked": "Medien sind nicht als heikel markiert",
   "compose_form.spoiler.marked": "Text ist hinter einer Warnung versteckt",
   "compose_form.spoiler.unmarked": "Text ist nicht versteckt",
   "compose_form.spoiler_placeholder": "Inhaltswarnung",
   "confirmation_modal.cancel": "Abbrechen",
-  "confirmations.block.block_and_report": "Block & Report",
+  "confirmations.block.block_and_report": "Blockieren und melden",
   "confirmations.block.confirm": "Blockieren",
   "confirmations.block.message": "Bist du dir sicher, dass du {name} blockieren möchtest?",
   "confirmations.delete.confirm": "Löschen",
   "confirmations.delete.message": "Bist du dir sicher, dass du diesen Beitrag löschen möchtest?",
-  "confirmations.delete_list.confirm": "Delete",
+  "confirmations.delete_list.confirm": "Löschen",
   "confirmations.delete_list.message": "Bist du dir sicher, dass du diese Liste permanent löschen möchtest?",
   "confirmations.domain_block.confirm": "Die ganze Domain verbergen",
-  "confirmations.domain_block.message": "Bist du dir wirklich sicher, dass du die ganze Domain {domain} blockieren willst? In den meisten Fällen reichen ein paar gezielte Blockierungen oder Stummschaltungen aus. Du wirst den Inhalt von dieser Domain nicht in irgendwelchen öffentlichen Timelines oder den Benachrichtigungen finden. Deine Follower von dieser Domain werden entfernt.",
+  "confirmations.domain_block.message": "Bist du dir wirklich sicher, dass du die ganze Domain {domain} blockieren willst? In den meisten Fällen reichen ein paar gezielte Blockierungen oder Stummschaltungen aus. Nach der Blockierung wirst du nichts mehr von dieser Domain in öffentlichen Zeitleisten oder Benachrichtigungen sehen. Deine Folger_innen von dieser Domain werden auch entfernt.",
   "confirmations.mute.confirm": "Stummschalten",
   "confirmations.mute.message": "Bist du dir sicher, dass du {name} stummschalten möchtest?",
   "confirmations.redraft.confirm": "Löschen und neu erstellen",
-  "confirmations.redraft.message": "Bist du dir sicher, dass du diesen Beitrag löschen und neu machen möchtest? Favoriten und Boosts werden verloren gehen und Antworten zu diesem Beitrag werden verwaist sein.",
+  "confirmations.redraft.message": "Bist du dir sicher, dass du diesen Beitrag löschen und neu erstellen möchtest? Favorisierungen, geteilte Beiträge und Antworten werden verloren gehen.",
   "confirmations.reply.confirm": "Antworten",
   "confirmations.reply.message": "Wenn du jetzt antwortest wird es die gesamte Nachricht verwerfen, die du gerade schreibst. Möchtest du wirklich fortfahren?",
   "confirmations.unfollow.confirm": "Entfolgen",
@@ -150,9 +150,9 @@
   "hashtag.column_settings.select.no_options_message": "Keine Vorschläge gefunden",
   "hashtag.column_settings.select.placeholder": "Hashtags eintragen…",
   "hashtag.column_settings.tag_mode.all": "All diese",
-  "hashtag.column_settings.tag_mode.any": "Eine von diesen",
-  "hashtag.column_settings.tag_mode.none": "Keine von diesen",
-  "hashtag.column_settings.tag_toggle": "Zusätzliche Tags für diese Spalte einfügen",
+  "hashtag.column_settings.tag_mode.any": "Eins von diesen",
+  "hashtag.column_settings.tag_mode.none": "Keins von diesen",
+  "hashtag.column_settings.tag_toggle": "Zusätzliche Hashtags für diese Spalte einfügen",
   "home.column_settings.basic": "Einfach",
   "home.column_settings.show_reblogs": "Geteilte Beiträge anzeigen",
   "home.column_settings.show_replies": "Antworten anzeigen",
@@ -161,33 +161,33 @@
   "intervals.full.minutes": "{number, plural, one {# Minute} other {# Minuten}}",
   "introduction.federation.action": "Weiter",
   "introduction.federation.federated.headline": "Föderiert",
-  "introduction.federation.federated.text": "Öffentliche Beiträge von anderen Servern im Fediverse erscheinen in der föderierten Zeitleiste.",
-  "introduction.federation.home.headline": "Home",
-  "introduction.federation.home.text": "Beiträge von Leuten, denen du folgst, erscheinen in deiner Start-Zeitleiste. Du kannst Menschen auf beliebigen Servern folgen!",
+  "introduction.federation.federated.text": "Öffentliche Beiträge von anderen Servern im Fediversum erscheinen in der föderierten Zeitleiste.",
+  "introduction.federation.home.headline": "Startseite",
+  "introduction.federation.home.text": "Beiträge von Leuten, denen du folgst, erscheinen auf deiner Startseite. Du kannst Menschen auf beliebigen Servern folgen!",
   "introduction.federation.local.headline": "Lokal",
   "introduction.federation.local.text": "Öffentliche Beiträge von Leuten auf demselben Server wie du erscheinen in der lokalen Zeitleiste.",
   "introduction.interactions.action": "Tutorial beenden!",
   "introduction.interactions.favourite.headline": "Favorisieren",
-  "introduction.interactions.favourite.text": "Du kannst Beitrage für später speichern und ihre AutorInnen wissen lassen, dass sie dir gefallen haben, indem du sie favorisierst.",
+  "introduction.interactions.favourite.text": "Du kannst Beitrage für später speichern und ihre Autor_innen wissen lassen, dass sie dir gefallen haben, indem du sie favorisierst.",
   "introduction.interactions.reblog.headline": "Teilen",
-  "introduction.interactions.reblog.text": "Du kannst Beiträge anderer mit deinen Followern teilen, indem du sie boostest.",
+  "introduction.interactions.reblog.text": "Du kannst Beiträge anderer mit deinen Followern teilen, indem du sie teilst.",
   "introduction.interactions.reply.headline": "Antworten",
-  "introduction.interactions.reply.text": "Du kannst auf die Beiträge anderer antworten und die Beiträge werden dann in einer Unterhaltung zusammengefasst.",
+  "introduction.interactions.reply.text": "Du kannst auf die Beiträge anderer antworten. Diese Beiträge werden dann in einer Konversation zusammengefasst.",
   "introduction.welcome.action": "Lass uns loslegen!",
   "introduction.welcome.headline": "Erste Schritte",
-  "introduction.welcome.text": "Willkommen im Fediverse! In wenigen Momenten wirst du in der Lage sein Nachrichten zu versenden und mit deinen Freunden über Server hinweg in Kontakt zu treten. Aber dieser Server, {domain}, ist sehr speziell — er hostet dein Profil, also merke dir den Namen.",
+  "introduction.welcome.text": "Willkommen im Fediversum! In wenigen Momenten wirst du in der Lage sein Nachrichten zu versenden und mit deinen Freunden von anderen Servern in Kontakt zu treten. Aber dieser Server, {domain}, ist für dich sehr speziell — er hostet dein Profil, also merke dir die Domain.",
   "keyboard_shortcuts.back": "zurück navigieren",
   "keyboard_shortcuts.blocked": "Liste blockierter Profile öffnen",
   "keyboard_shortcuts.boost": "teilen",
-  "keyboard_shortcuts.column": "einen Status in einer der Spalten fokussieren",
+  "keyboard_shortcuts.column": "einen Beitrag in einer der Spalten fokussieren",
   "keyboard_shortcuts.compose": "fokussiere das Eingabefeld",
   "keyboard_shortcuts.description": "Beschreibung",
   "keyboard_shortcuts.direct": "Direct-Message-Spalte öffnen",
   "keyboard_shortcuts.down": "sich in der Liste hinunter bewegen",
-  "keyboard_shortcuts.enter": "Status öffnen",
+  "keyboard_shortcuts.enter": "Beitrag öffnen",
   "keyboard_shortcuts.favourite": "um zu favorisieren",
   "keyboard_shortcuts.favourites": "Favoriten-Liste öffnen",
-  "keyboard_shortcuts.federated": "Förderierte Zeitleiste öffnen",
+  "keyboard_shortcuts.federated": "Föderierte Zeitleiste öffnen",
   "keyboard_shortcuts.heading": "Tastenkombinationen",
   "keyboard_shortcuts.home": "Startseite öffnen",
   "keyboard_shortcuts.hotkey": "Tastenkürzel",
@@ -200,20 +200,21 @@
   "keyboard_shortcuts.pinned": "Liste angehefteter Beiträge öffnen",
   "keyboard_shortcuts.profile": "Profil des Autors öffnen",
   "keyboard_shortcuts.reply": "antworten",
-  "keyboard_shortcuts.requests": "Liste der Folge-Anfragen  öffnen",
+  "keyboard_shortcuts.requests": "Liste der Folge-Anfragen öffnen",
   "keyboard_shortcuts.search": "Suche fokussieren",
-  "keyboard_shortcuts.start": "\"Erste Schritte-Spalte öffnen",
+  "keyboard_shortcuts.start": "\"Erste Schritte\"-Spalte öffnen",
   "keyboard_shortcuts.toggle_hidden": "Text hinter einer Inhaltswarnung verstecken/anzeigen",
-  "keyboard_shortcuts.toot": "einen neuen Toot beginnen",
+  "keyboard_shortcuts.toggle_sensitivity": "Medien hinter einer Inhaltswarnung verstecken/anzeigen",
+  "keyboard_shortcuts.toot": "einen neuen Beitrag beginnen",
   "keyboard_shortcuts.unfocus": "Textfeld/die Suche nicht mehr fokussieren",
   "keyboard_shortcuts.up": "sich in der Liste hinauf bewegen",
   "lightbox.close": "Schließen",
   "lightbox.next": "Weiter",
   "lightbox.previous": "Zurück",
-  "lightbox.view_context": "View context",
+  "lightbox.view_context": "Beitrag sehen",
   "lists.account.add": "Zur Liste hinzufügen",
   "lists.account.remove": "Von der Liste entfernen",
-  "lists.delete": "Delete list",
+  "lists.delete": "Liste löschen",
   "lists.edit": "Liste bearbeiten",
   "lists.edit.submit": "Titel ändern",
   "lists.new.create": "Liste hinzufügen",
@@ -236,14 +237,16 @@
   "navigation_bar.favourites": "Favoriten",
   "navigation_bar.filters": "Stummgeschaltene Wörter",
   "navigation_bar.follow_requests": "Folgeanfragen",
+  "navigation_bar.follows_and_followers": "Folger_innen und Gefolgte",
   "navigation_bar.info": "Über diesen Server",
   "navigation_bar.keyboard_shortcuts": "Tastenkombinationen",
   "navigation_bar.lists": "Listen",
   "navigation_bar.logout": "Abmelden",
   "navigation_bar.mutes": "Stummgeschaltete Profile",
-  "navigation_bar.personal": "Personal",
+  "navigation_bar.personal": "Persönlich",
   "navigation_bar.pins": "Angeheftete Beiträge",
   "navigation_bar.preferences": "Einstellungen",
+  "navigation_bar.profile_directory": "Profilverzeichnis",
   "navigation_bar.public_timeline": "Föderierte Zeitleiste",
   "navigation_bar.security": "Sicherheit",
   "notification.favourite": "{name} hat deinen Beitrag favorisiert",
@@ -258,17 +261,17 @@
   "notifications.column_settings.filter_bar.advanced": "Zeige alle Kategorien an",
   "notifications.column_settings.filter_bar.category": "Schnellfilterleiste",
   "notifications.column_settings.filter_bar.show": "Anzeigen",
-  "notifications.column_settings.follow": "Neue Folgende:",
+  "notifications.column_settings.follow": "Neue Folger_innen:",
   "notifications.column_settings.mention": "Erwähnungen:",
-  "notifications.column_settings.poll": "Ergebnisse der Umfrage:",
+  "notifications.column_settings.poll": "Ergebnisse von Umfragen:",
   "notifications.column_settings.push": "Push-Benachrichtigungen",
   "notifications.column_settings.reblog": "Geteilte Beiträge:",
   "notifications.column_settings.show": "In der Spalte anzeigen",
   "notifications.column_settings.sound": "Ton abspielen",
   "notifications.filter.all": "Alle",
-  "notifications.filter.boosts": "Erneut geteilte Beiträge",
-  "notifications.filter.favourites": "Favoriten",
-  "notifications.filter.follows": "Folgende",
+  "notifications.filter.boosts": "Geteilte Beiträge",
+  "notifications.filter.favourites": "Favorisierungen",
+  "notifications.filter.follows": "Folger_innen",
   "notifications.filter.mentions": "Erwähnungen",
   "notifications.filter.polls": "Ergebnisse der Umfrage",
   "notifications.group": "{count} Benachrichtigungen",
@@ -279,16 +282,16 @@
   "poll_button.add_poll": "Eine Umfrage erstellen",
   "poll_button.remove_poll": "Umfrage entfernen",
   "privacy.change": "Sichtbarkeit des Beitrags anpassen",
-  "privacy.direct.long": "Beitrag nur an erwähnte Profile",
-  "privacy.direct.short": "Direkt",
-  "privacy.private.long": "Beitrag nur an Folgende",
-  "privacy.private.short": "Nur Folgende",
-  "privacy.public.long": "Beitrag an öffentliche Zeitleisten",
+  "privacy.direct.long": "Wird an erwähnte Profile gesendet",
+  "privacy.direct.short": "Direktnachricht",
+  "privacy.private.long": "Wird nur für deine Folger_innen sichtbar sein",
+  "privacy.private.short": "Nur für Folger_innen",
+  "privacy.public.long": "Wird in öffentlichen Zeitleisten erscheinen",
   "privacy.public.short": "Öffentlich",
-  "privacy.unlisted.long": "Nicht in öffentlichen Zeitleisten anzeigen",
+  "privacy.unlisted.long": "Wird in öffentlichen Zeitleisten nicht gezeigt",
   "privacy.unlisted.short": "Nicht gelistet",
   "regeneration_indicator.label": "Laden…",
-  "regeneration_indicator.sublabel": "Deine Heimzeitleiste wird gerade vorbereitet!",
+  "regeneration_indicator.sublabel": "Deine Startseite wird gerade vorbereitet!",
   "relative_time.days": "{number}d",
   "relative_time.hours": "{number}h",
   "relative_time.just_now": "jetzt",
@@ -303,21 +306,21 @@
   "report.target": "{target} melden",
   "search.placeholder": "Suche",
   "search_popout.search_format": "Fortgeschrittenes Suchformat",
-  "search_popout.tips.full_text": "Simpler Text gibt Beiträge, die du geschrieben, favorisiert und geteilt hast zurück. Außerdem auch Beiträge in denen du erwähnt wurdest, als auch passende Nutzernamen, Anzeigenamen oder Hashtags.",
+  "search_popout.tips.full_text": "Einfache Texteingabe gibt Beiträge, die du geschrieben, favorisiert und geteilt hast zurück. Außerdem auch Beiträge in denen du erwähnt wurdest, aber auch passende Nutzernamen, Anzeigenamen oder Hashtags.",
   "search_popout.tips.hashtag": "Hashtag",
-  "search_popout.tips.status": "status",
-  "search_popout.tips.text": "Einfacher Text gibt Anzeigenamen, Benutzernamen und Hashtags zurück",
+  "search_popout.tips.status": "Beitrag",
+  "search_popout.tips.text": "Einfache Texteingabe gibt Anzeigenamen, Benutzernamen und Hashtags zurück",
   "search_popout.tips.user": "Nutzer",
   "search_results.accounts": "Personen",
   "search_results.hashtags": "Hashtags",
   "search_results.statuses": "Beiträge",
   "search_results.total": "{count, number} {count, plural, one {Ergebnis} other {Ergebnisse}}",
   "status.admin_account": "Öffne Moderationsoberfläche für @{name}",
-  "status.admin_status": "Öffne diesen Status in der Moderationsoberfläche",
+  "status.admin_status": "Öffne Beitrag in der Moderationsoberfläche",
   "status.block": "Blockiere @{name}",
   "status.cancel_reblog_private": "Nicht mehr teilen",
   "status.cannot_reblog": "Dieser Beitrag kann nicht geteilt werden",
-  "status.copy": "Kopiere Link zum Status",
+  "status.copy": "Kopiere Link zum Beitrag",
   "status.delete": "Löschen",
   "status.detailed_status": "Detaillierte Ansicht der Konversation",
   "status.direct": "Direktnachricht @{name}",
@@ -329,39 +332,39 @@
   "status.mention": "@{name} erwähnen",
   "status.more": "Mehr",
   "status.mute": "@{name} stummschalten",
-  "status.mute_conversation": "Thread stummschalten",
+  "status.mute_conversation": "Konversation stummschalten",
   "status.open": "Diesen Beitrag öffnen",
   "status.pin": "Im Profil anheften",
   "status.pinned": "Angehefteter Beitrag",
   "status.read_more": "Mehr lesen",
   "status.reblog": "Teilen",
-  "status.reblog_private": "An das eigentliche Publikum teilen",
+  "status.reblog_private": "Mit der ursprünglichen Zielgruppe teilen",
   "status.reblogged_by": "{name} teilte",
-  "status.reblogs.empty": "Diesen Beitrag hat noch niemand geteilt. Sobald es jemand tut, wird die Person hier angezeigt.",
+  "status.reblogs.empty": "Diesen Beitrag hat noch niemand geteilt. Sobald es jemand tut, wird diese Person hier angezeigt.",
   "status.redraft": "Löschen und neu erstellen",
   "status.reply": "Antworten",
-  "status.replyAll": "Auf Thread antworten",
+  "status.replyAll": "Allen antworten",
   "status.report": "@{name} melden",
   "status.sensitive_warning": "Heikle Inhalte",
   "status.share": "Teilen",
   "status.show_less": "Weniger anzeigen",
-  "status.show_less_all": "Zeige weniger für alles",
+  "status.show_less_all": "Alle Inhaltswarnungen zuklappen",
   "status.show_more": "Mehr anzeigen",
-  "status.show_more_all": "Zeige mehr für alles",
-  "status.show_thread": "Zeige Thread",
-  "status.unmute_conversation": "Stummschaltung von Thread aufheben",
+  "status.show_more_all": "Alle Inhaltswarnungen aufklappen",
+  "status.show_thread": "Zeige Konversation",
+  "status.unmute_conversation": "Stummschaltung von Konversation aufheben",
   "status.unpin": "Vom Profil lösen",
-  "suggestions.dismiss": "Hinweis ausblenden",
-  "suggestions.header": "Du bist vielleicht interessiert in…",
+  "suggestions.dismiss": "Empfehlung ausblenden",
+  "suggestions.header": "Du bist vielleicht interessiert an…",
   "tabs_bar.federated_timeline": "Föderation",
   "tabs_bar.home": "Startseite",
   "tabs_bar.local_timeline": "Lokal",
   "tabs_bar.notifications": "Mitteilungen",
-  "tabs_bar.search": "Suchen",
+  "tabs_bar.search": "Suche",
   "time_remaining.days": "{number, plural, one {# Tag} other {# Tage}} verbleibend",
   "time_remaining.hours": "{number, plural, one {# Stunde} other {# Stunden}} verbleibend",
   "time_remaining.minutes": "{number, plural, one {# Minute} other {# Minuten}} verbleibend",
-  "time_remaining.moments": "Momente verbleibend",
+  "time_remaining.moments": "Schließt in Kürze",
   "time_remaining.seconds": "{number, plural, one {# Sekunde} other {# Sekunden}} verbleibend",
   "trends.count_by_accounts": "{count} {rawCount, plural, eine {Person} other {Personen}} reden darüber",
   "ui.beforeunload": "Dein Entwurf geht verloren, wenn du Mastodon verlässt.",
@@ -370,7 +373,7 @@
   "upload_error.limit": "Dateiupload-Limit erreicht.",
   "upload_error.poll": "Dateiuploads sind in Kombination mit Umfragen nicht erlaubt.",
   "upload_form.description": "Für Menschen mit Sehbehinderung beschreiben",
-  "upload_form.focus": "Thumbnail bearbeiten",
+  "upload_form.focus": "Vorschaubild bearbeiten",
   "upload_form.undo": "Löschen",
   "upload_progress.label": "Wird hochgeladen …",
   "video.close": "Video schließen",
@@ -379,7 +382,7 @@
   "video.fullscreen": "Vollbild",
   "video.hide": "Video verbergen",
   "video.mute": "Stummschalten",
-  "video.pause": "Pause",
+  "video.pause": "Pausieren",
   "video.play": "Abspielen",
   "video.unmute": "Ton einschalten"
 }
diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json
index 70b314769..faca8241d 100644
--- a/app/javascript/mastodon/locales/defaultMessages.json
+++ b/app/javascript/mastodon/locales/defaultMessages.json
@@ -2350,6 +2350,10 @@
       {
         "defaultMessage": "Follows and followers",
         "id": "navigation_bar.follows_and_followers"
+      },
+      {
+        "defaultMessage": "Profile directory",
+        "id": "navigation_bar.profile_directory"
       }
     ],
     "path": "app/javascript/mastodon/features/ui/components/navigation_panel.json"
diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json
index 8dd9e9eb9..ceaa2be4d 100644
--- a/app/javascript/mastodon/locales/el.json
+++ b/app/javascript/mastodon/locales/el.json
@@ -1,5 +1,5 @@
 {
-  "account.add_or_remove_from_list": "Προσθήκη ή αφαίρεση από λίστες",
+  "account.add_or_remove_from_list": "Προσθήκη ή Αφαίρεση από λίστες",
   "account.badges.bot": "Μποτ",
   "account.block": "Απόκλεισε τον/την @{name}",
   "account.block_domain": "Απόκρυψε τα πάντα από το {domain}",
@@ -15,21 +15,21 @@
   "account.follows.empty": "Αυτός ο χρήστης δεν ακολουθεί κανέναν ακόμα.",
   "account.follows_you": "Σε ακολουθεί",
   "account.hide_reblogs": "Απόκρυψη προωθήσεων από @{name}",
-  "account.link_verified_on": "Η ιδιοκτησία αυτού του συνδέσμου εκλέχθηκε την {date}",
+  "account.link_verified_on": "Η ιδιοκτησία αυτού του συνδέσμου ελέχθηκε την {date}",
   "account.locked_info": "Η κατάσταση απορρήτου αυτού του λογαριασμού είναι κλειδωμένη. Ο ιδιοκτήτης επιβεβαιώνει χειροκίνητα ποιος μπορεί να τον ακολουθήσει.",
   "account.media": "Πολυμέσα",
   "account.mention": "Ανάφερε @{name}",
   "account.moved_to": "{name} μεταφέρθηκε στο:",
-  "account.mute": "Σώπασε τον/την @{name}",
-  "account.mute_notifications": "Σώπασε τις ειδοποιήσεις από τον/την @{name}",
+  "account.mute": "Σώπασε @{name}",
+  "account.mute_notifications": "Σώπασε τις ειδοποιήσεις από @{name}",
   "account.muted": "Αποσιωπημένος/η",
   "account.posts": "Τουτ",
   "account.posts_with_replies": "Τουτ και απαντήσεις",
-  "account.report": "Κατάγγειλε τον/την @{name}",
+  "account.report": "Κατάγγειλε @{name}",
   "account.requested": "Εκκρεμεί έγκριση. Κάνε κλικ για να ακυρώσεις το αίτημα παρακολούθησης",
   "account.share": "Μοιράσου το προφίλ του/της @{name}",
   "account.show_reblogs": "Δείξε τις προωθήσεις του/της @{name}",
-  "account.unblock": "Ξεμπλόκαρε τον/την @{name}",
+  "account.unblock": "Ξεμπλόκαρε @{name}",
   "account.unblock_domain": "Αποκάλυψε το {domain}",
   "account.unendorse": "Άνευ προβολής στο προφίλ",
   "account.unfollow": "Διακοπή παρακολούθησης",
@@ -77,16 +77,16 @@
   "compose_form.poll.remove_option": "Αφαίρεση επιλογής",
   "compose_form.publish": "Τουτ",
   "compose_form.publish_loud": "{publish}!",
-  "compose_form.sensitive.hide": "Mark media as sensitive",
+  "compose_form.sensitive.hide": "Σημείωσε τα πολυμέσα ως ευαίσθητα",
   "compose_form.sensitive.marked": "Το πολυμέσο έχει σημειωθεί ως ευαίσθητο",
   "compose_form.sensitive.unmarked": "Το πολυμέσο δεν έχει σημειωθεί ως ευαίσθητο",
   "compose_form.spoiler.marked": "Κείμενο κρυμμένο πίσω από προειδοποίηση",
   "compose_form.spoiler.unmarked": "Μη κρυμμένο κείμενο",
   "compose_form.spoiler_placeholder": "Γράψε την προειδοποίησή σου εδώ",
   "confirmation_modal.cancel": "Άκυρο",
-  "confirmations.block.block_and_report": "Block & Report",
+  "confirmations.block.block_and_report": "Αποκλεισμός & Καταγγελία",
   "confirmations.block.confirm": "Απόκλεισε",
-  "confirmations.block.message": "Σίγουρα θες να αποκλείσεις τον/την {name};",
+  "confirmations.block.message": "Σίγουρα θες να αποκλείσεις {name};",
   "confirmations.delete.confirm": "Διέγραψε",
   "confirmations.delete.message": "Σίγουρα θες να διαγράψεις αυτή την κατάσταση;",
   "confirmations.delete_list.confirm": "Διέγραψε",
@@ -94,7 +94,7 @@
   "confirmations.domain_block.confirm": "Απόκρυψη ολόκληρου του τομέα",
   "confirmations.domain_block.message": "Σίγουρα θες να μπλοκάρεις ολόκληρο το {domain}; Συνήθως μερικά εστιασμένα μπλοκ ή αποσιωπήσεις επαρκούν και προτιμούνται. Δεν θα βλέπεις περιεχόμενο από αυτό τον κόμβο σε καμία δημόσια ροή, ούτε στις ειδοποιήσεις σου. Όσους ακόλουθους έχεις αυτό αυτό τον κόμβο θα αφαιρεθούν.",
   "confirmations.mute.confirm": "Αποσιώπηση",
-  "confirmations.mute.message": "Σίγουρα θες να αποσιωπήσεις τον/την {name};",
+  "confirmations.mute.message": "Σίγουρα θες να αποσιωπήσεις {name};",
   "confirmations.redraft.confirm": "Διαγραφή & ξαναγράψιμο",
   "confirmations.redraft.message": "Σίγουρα θέλεις να σβήσεις αυτή την κατάσταση και να την ξαναγράψεις; Οι αναφορές και τα αγαπημένα της θα χαθούν ενώ οι απαντήσεις προς αυτή θα μείνουν ορφανές.",
   "confirmations.reply.confirm": "Απάντησε",
@@ -204,13 +204,14 @@
   "keyboard_shortcuts.search": "εστίαση αναζήτησης",
   "keyboard_shortcuts.start": "άνοιγμα κολώνας \"Ξεκινώντας\"",
   "keyboard_shortcuts.toggle_hidden": "εμφάνιση/απόκρυψη κειμένου πίσω από την προειδοποίηση",
+  "keyboard_shortcuts.toggle_sensitivity": "εμφάνιση/απόκρυψη πολυμέσων",
   "keyboard_shortcuts.toot": "δημιουργία νέου τουτ",
   "keyboard_shortcuts.unfocus": "απο-εστίαση του πεδίου σύνθεσης/αναζήτησης",
   "keyboard_shortcuts.up": "κίνηση προς την κορυφή της λίστας",
   "lightbox.close": "Κλείσιμο",
   "lightbox.next": "Επόμενο",
   "lightbox.previous": "Προηγούμενο",
-  "lightbox.view_context": "View context",
+  "lightbox.view_context": "Εμφάνιση πλαισίου",
   "lists.account.add": "Πρόσθεσε στη λίστα",
   "lists.account.remove": "Βγάλε από τη λίστα",
   "lists.delete": "Διαγραφή λίστας",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "Αγαπημένα",
   "navigation_bar.filters": "Αποσιωπημένες λέξεις",
   "navigation_bar.follow_requests": "Αιτήματα ακολούθησης",
+  "navigation_bar.follows_and_followers": "Ακολουθεί και ακολουθείται",
   "navigation_bar.info": "Πληροφορίες κόμβου",
   "navigation_bar.keyboard_shortcuts": "Συντομεύσεις",
   "navigation_bar.lists": "Λίστες",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "Προσωπικά",
   "navigation_bar.pins": "Καρφιτσωμένα τουτ",
   "navigation_bar.preferences": "Προτιμήσεις",
+  "navigation_bar.profile_directory": "Κατάλογος λογαριασμών",
   "navigation_bar.public_timeline": "Ομοσπονδιακή ροή",
   "navigation_bar.security": "Ασφάλεια",
   "notification.favourite": "Ο/Η {name} σημείωσε ως αγαπημένη την κατάστασή σου",
diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json
index 92d1af784..49e4ddbda 100644
--- a/app/javascript/mastodon/locales/en.json
+++ b/app/javascript/mastodon/locales/en.json
@@ -251,6 +251,7 @@
   "navigation_bar.personal": "Personal",
   "navigation_bar.pins": "Pinned toots",
   "navigation_bar.preferences": "Preferences",
+  "navigation_bar.profile_directory": "Profile directory",
   "navigation_bar.public_timeline": "Federated timeline",
   "navigation_bar.security": "Security",
   "notification.favourite": "{name} favourited your status",
diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json
index a89da4ad5..897cb6353 100644
--- a/app/javascript/mastodon/locales/eo.json
+++ b/app/javascript/mastodon/locales/eo.json
@@ -77,7 +77,7 @@
   "compose_form.poll.remove_option": "Forigi ĉi tiu elekton",
   "compose_form.publish": "Hup",
   "compose_form.publish_loud": "{publish}!",
-  "compose_form.sensitive.hide": "Mark media as sensitive",
+  "compose_form.sensitive.hide": "Marki aŭdovidaĵojn kiel tiklaj",
   "compose_form.sensitive.marked": "Aŭdovidaĵo markita tikla",
   "compose_form.sensitive.unmarked": "Aŭdovidaĵo ne markita tikla",
   "compose_form.spoiler.marked": "Teksto kaŝita malantaŭ averto",
@@ -118,7 +118,7 @@
   "emoji_button.symbols": "Simboloj",
   "emoji_button.travel": "Vojaĝoj kaj lokoj",
   "empty_column.account_timeline": "Neniu mesaĝo ĉi tie!",
-  "empty_column.account_unavailable": "Profile unavailable",
+  "empty_column.account_unavailable": "Profilo ne disponebla",
   "empty_column.blocks": "Vi ankoraŭ ne blokis uzanton.",
   "empty_column.community": "La loka tempolinio estas malplena. Skribu ion por plenigi ĝin!",
   "empty_column.direct": "Vi ankoraŭ ne havas rektan mesaĝon. Kiam vi sendos aŭ ricevos iun, ĝi aperos ĉi tie.",
@@ -204,13 +204,14 @@
   "keyboard_shortcuts.search": "por fokusigi la serĉilon",
   "keyboard_shortcuts.start": "por malfermi la kolumnon «por komenci»",
   "keyboard_shortcuts.toggle_hidden": "por montri/kaŝi tekston malantaŭ enhava averto",
+  "keyboard_shortcuts.toggle_sensitivity": "por montri/kaŝi aŭdovidaĵojn",
   "keyboard_shortcuts.toot": "por komenci tute novan mesaĝon",
   "keyboard_shortcuts.unfocus": "por malfokusigi la tekstujon aŭ la serĉilon",
   "keyboard_shortcuts.up": "por iri supren en la listo",
   "lightbox.close": "Fermi",
   "lightbox.next": "Sekva",
   "lightbox.previous": "Antaŭa",
-  "lightbox.view_context": "View context",
+  "lightbox.view_context": "Vidi kontekston",
   "lists.account.add": "Aldoni al la listo",
   "lists.account.remove": "Forigi de la listo",
   "lists.delete": "Forigi la liston",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "Stelumoj",
   "navigation_bar.filters": "Silentigitaj vortoj",
   "navigation_bar.follow_requests": "Petoj de sekvado",
+  "navigation_bar.follows_and_followers": "Sekvatoj kaj sekvantoj",
   "navigation_bar.info": "Pri ĉi tiu servilo",
   "navigation_bar.keyboard_shortcuts": "Rapidklavoj",
   "navigation_bar.lists": "Listoj",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "Persone",
   "navigation_bar.pins": "Alpinglitaj mesaĝoj",
   "navigation_bar.preferences": "Preferoj",
+  "navigation_bar.profile_directory": "Profilujo",
   "navigation_bar.public_timeline": "Fratara tempolinio",
   "navigation_bar.security": "Sekureco",
   "notification.favourite": "{name} stelumis vian mesaĝon",
diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json
index 00d756d34..fc9e7bb16 100644
--- a/app/javascript/mastodon/locales/es.json
+++ b/app/javascript/mastodon/locales/es.json
@@ -1,5 +1,5 @@
 {
-  "account.add_or_remove_from_list": "Add or Remove from lists",
+  "account.add_or_remove_from_list": "Agregar o eliminar de las listas",
   "account.badges.bot": "Bot",
   "account.block": "Bloquear",
   "account.block_domain": "Ocultar todo de {domain}",
@@ -15,8 +15,8 @@
   "account.follows.empty": "Este usuario todavía no sigue a nadie.",
   "account.follows_you": "Te sigue",
   "account.hide_reblogs": "Ocultar retoots de @{name}",
-  "account.link_verified_on": "Ownership of this link was checked on {date}",
-  "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
+  "account.link_verified_on": "El proprietario de este link fue verificado el {date}",
+  "account.locked_info": "El estado de privacidad de esta cuenta està configurado como bloqueado. El proprietario debe revisar manualmente quien puede seguirle.",
   "account.media": "Media",
   "account.mention": "Mencionar a @{name}",
   "account.moved_to": "{name} se ha mudado a:",
@@ -166,7 +166,7 @@
   "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
   "introduction.federation.local.headline": "Local",
   "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
-  "introduction.interactions.action": "Finish tutorial!",
+  "introduction.interactions.action": "Finish toot-orial!",
   "introduction.interactions.favourite.headline": "Favourite",
   "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
   "introduction.interactions.reblog.headline": "Boost",
@@ -204,6 +204,7 @@
   "keyboard_shortcuts.search": "para poner el foco en la búsqueda",
   "keyboard_shortcuts.start": "abrir la columna \"comenzar\"",
   "keyboard_shortcuts.toggle_hidden": "mostrar/ocultar texto tras aviso de contenido (CW)",
+  "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
   "keyboard_shortcuts.toot": "para comenzar un nuevo toot",
   "keyboard_shortcuts.unfocus": "para retirar el foco de la caja de redacción/búsqueda",
   "keyboard_shortcuts.up": "para ir hacia arriba en la lista",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "Favoritos",
   "navigation_bar.filters": "Palabras silenciadas",
   "navigation_bar.follow_requests": "Solicitudes para seguirte",
+  "navigation_bar.follows_and_followers": "Follows and followers",
   "navigation_bar.info": "Información adicional",
   "navigation_bar.keyboard_shortcuts": "Atajos",
   "navigation_bar.lists": "Listas",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "Personal",
   "navigation_bar.pins": "Toots fijados",
   "navigation_bar.preferences": "Preferencias",
+  "navigation_bar.profile_directory": "Profile directory",
   "navigation_bar.public_timeline": "Historia federada",
   "navigation_bar.security": "Seguridad",
   "notification.favourite": "{name} marcó tu estado como favorito",
diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json
index d4cef3d5d..5e37f5862 100644
--- a/app/javascript/mastodon/locales/eu.json
+++ b/app/javascript/mastodon/locales/eu.json
@@ -1,6 +1,6 @@
 {
   "account.add_or_remove_from_list": "Gehitu edo kendu zerrendetatik",
-  "account.badges.bot": "Bot",
+  "account.badges.bot": "Bot-a",
   "account.block": "Blokeatu @{name}",
   "account.block_domain": "Ezkutatu {domain} domeinuko guztia",
   "account.blocked": "Blokeatuta",
@@ -17,7 +17,7 @@
   "account.hide_reblogs": "Ezkutatu @{name}(r)en bultzadak",
   "account.link_verified_on": "Esteka honen jabetzaren egiaztaketa data: {date}",
   "account.locked_info": "Kontu honen pribatutasun egoera blokeatuta gisa ezarri da. Jabeak eskuz erabakitzen du nork jarraitu diezaioken.",
-  "account.media": "Media",
+  "account.media": "Multimedia",
   "account.mention": "Aipatu @{name}",
   "account.moved_to": "{name} hona lekualdatu da:",
   "account.mute": "Mututu @{name}",
@@ -40,7 +40,7 @@
   "boost_modal.combo": "{combo} sakatu dezakezu hurrengoan hau saltatzeko",
   "bundle_column_error.body": "Zerbait okerra gertatu da osagai hau kargatzean.",
   "bundle_column_error.retry": "Saiatu berriro",
-  "bundle_column_error.title": "Network error",
+  "bundle_column_error.title": "Sareko errorea",
   "bundle_modal_error.close": "Itxi",
   "bundle_modal_error.message": "Zerbait okerra gertatu da osagai hau kargatzean.",
   "bundle_modal_error.retry": "Saiatu berriro",
@@ -71,21 +71,21 @@
   "compose_form.lock_disclaimer": "Zure kontua ez dago {locked}. Edonork jarraitu zaitzake zure jarraitzaileentzako soilik diren mezuak ikusteko.",
   "compose_form.lock_disclaimer.lock": "giltzapetuta",
   "compose_form.placeholder": "Zer duzu buruan?",
-  "compose_form.poll.add_option": "Add a choice",
-  "compose_form.poll.duration": "Poll duration",
-  "compose_form.poll.option_placeholder": "Choice {number}",
-  "compose_form.poll.remove_option": "Remove this choice",
+  "compose_form.poll.add_option": "Gehitu aukera bat",
+  "compose_form.poll.duration": "Inkestaren iraupena",
+  "compose_form.poll.option_placeholder": "{number}. aukera",
+  "compose_form.poll.remove_option": "Kendu aukera hau",
   "compose_form.publish": "Toot",
   "compose_form.publish_loud": "{publish}!",
-  "compose_form.sensitive.hide": "Mark media as sensitive",
+  "compose_form.sensitive.hide": "Markatu multimedia hunkigarri gisa",
   "compose_form.sensitive.marked": "Multimedia edukia hunkigarri gisa markatu da",
   "compose_form.sensitive.unmarked": "Multimedia edukia ez da hunkigarri gisa markatu",
   "compose_form.spoiler.marked": "Testua abisu batek ezkutatzen du",
   "compose_form.spoiler.unmarked": "Testua ez dago ezkutatuta",
   "compose_form.spoiler_placeholder": "Idatzi zure abisua hemen",
   "confirmation_modal.cancel": "Utzi",
-  "confirmations.block.block_and_report": "Block & Report",
-  "confirmations.block.confirm": "Block",
+  "confirmations.block.block_and_report": "Blokeatu eta salatu",
+  "confirmations.block.confirm": "Blokeatu",
   "confirmations.block.message": "Ziur {name} blokeatu nahi duzula?",
   "confirmations.delete.confirm": "Ezabatu",
   "confirmations.delete.message": "Ziur mezu hau ezabatu nahi duzula?",
@@ -118,7 +118,7 @@
   "emoji_button.symbols": "Sinboloak",
   "emoji_button.travel": "Bidaiak eta tokiak",
   "empty_column.account_timeline": "Ez dago toot-ik hemen!",
-  "empty_column.account_unavailable": "Profile unavailable",
+  "empty_column.account_unavailable": "Profila ez dago eskuragarri",
   "empty_column.blocks": "Ez duzu erabiltzailerik blokeatu oraindik.",
   "empty_column.community": "Denbora-lerro lokala hutsik dago. Idatzi zerbait publikoki pilota biraka jartzeko!",
   "empty_column.direct": "Ez duzu mezu zuzenik oraindik. Baten bat bidali edo jasotzen duzunean, hemen agertuko da.",
@@ -147,8 +147,8 @@
   "hashtag.column_header.tag_mode.all": "eta {osagarria}",
   "hashtag.column_header.tag_mode.any": "edo {osagarria}",
   "hashtag.column_header.tag_mode.none": "gabe {osagarria}",
-  "hashtag.column_settings.select.no_options_message": "No suggestions found",
-  "hashtag.column_settings.select.placeholder": "Enter hashtags…",
+  "hashtag.column_settings.select.no_options_message": "Ez da proposamenik aurkitu",
+  "hashtag.column_settings.select.placeholder": "Sartu traolak…",
   "hashtag.column_settings.tag_mode.all": "Hauetako guztiak",
   "hashtag.column_settings.tag_mode.any": "Hautako edozein",
   "hashtag.column_settings.tag_mode.none": "Hauetako bat ere ez",
@@ -156,15 +156,15 @@
   "home.column_settings.basic": "Oinarrizkoa",
   "home.column_settings.show_reblogs": "Erakutsi bultzadak",
   "home.column_settings.show_replies": "Erakutsi erantzunak",
-  "intervals.full.days": "{number, plural, one {# day} other {# days}}",
-  "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
-  "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
+  "intervals.full.days": "{number, plural, one {egun #} other {# egun}}",
+  "intervals.full.hours": "{number, plural, one {ordu #} other {# ordu}}",
+  "intervals.full.minutes": "{number, plural, one {minutu #} other {# minutu}}",
   "introduction.federation.action": "Hurrengoa",
-  "introduction.federation.federated.headline": "Federated",
+  "introduction.federation.federated.headline": "Federatua",
   "introduction.federation.federated.text": "Fedibertsoko beste zerbitzarietako bidalketa publikoak federatutako denbora-lerroan agertuko dira.",
-  "introduction.federation.home.headline": "Home",
+  "introduction.federation.home.headline": "Hasiera",
   "introduction.federation.home.text": "Jarraitzen dituzun horien mezuak zure hasierako jarioan agertuko dira. Edozein zerbitzariko edonor jarraitu dezakezu!",
-  "introduction.federation.local.headline": "Local",
+  "introduction.federation.local.headline": "Lokala",
   "introduction.federation.local.text": "Zure zerbitzari berean dauden horien mezu publikoak denbora-lerro lokalean agertuko dira.",
   "introduction.interactions.action": "Amaitu tutoriala!",
   "introduction.interactions.favourite.headline": "Gogokoa",
@@ -181,10 +181,10 @@
   "keyboard_shortcuts.boost": "bultzada ematea",
   "keyboard_shortcuts.column": "mezu bat zutabe batean fokatzea",
   "keyboard_shortcuts.compose": "testua konposatzeko arean fokatzea",
-  "keyboard_shortcuts.description": "Description",
+  "keyboard_shortcuts.description": "Deskripzioa",
   "keyboard_shortcuts.direct": "mezu zuzenen zutabea irekitzeko",
   "keyboard_shortcuts.down": "zerrendan behera mugitzea",
-  "keyboard_shortcuts.enter": "to open status",
+  "keyboard_shortcuts.enter": "mezua irekitzeko",
   "keyboard_shortcuts.favourite": "gogoko egitea",
   "keyboard_shortcuts.favourites": "gogokoen zerrenda irekitzeko",
   "keyboard_shortcuts.federated": "federatutako denbora-lerroa irekitzeko",
@@ -204,18 +204,19 @@
   "keyboard_shortcuts.search": "bilaketan fokua jartzea",
   "keyboard_shortcuts.start": "\"Menua\" zutabea irekitzeko",
   "keyboard_shortcuts.toggle_hidden": "testua erakustea/ezkutatzea abisu baten atzean",
+  "keyboard_shortcuts.toggle_sensitivity": "multimedia erakutsi/ezkutatzeko",
   "keyboard_shortcuts.toot": "toot berria hastea",
   "keyboard_shortcuts.unfocus": "testua konposatzeko area / bilaketatik fokua kentzea",
   "keyboard_shortcuts.up": "zerrendan gora mugitzea",
   "lightbox.close": "Itxi",
   "lightbox.next": "Hurrengoa",
   "lightbox.previous": "Aurrekoa",
-  "lightbox.view_context": "View context",
+  "lightbox.view_context": "Ikusi testuingurua",
   "lists.account.add": "Gehitu zerrendara",
   "lists.account.remove": "Kendu zerrendatik",
   "lists.delete": "Ezabatu zerrenda",
   "lists.edit": "Editatu zerrenda",
-  "lists.edit.submit": "Change title",
+  "lists.edit.submit": "Aldatu izenburua",
   "lists.new.create": "Gehitu zerrenda",
   "lists.new.title_placeholder": "Zerrenda berriaren izena",
   "lists.search": "Bilatu jarraitzen dituzun pertsonen artean",
@@ -236,20 +237,22 @@
   "navigation_bar.favourites": "Gogokoak",
   "navigation_bar.filters": "Mutututako hitzak",
   "navigation_bar.follow_requests": "Jarraitzeko eskariak",
+  "navigation_bar.follows_and_followers": "Jarraitutakoak eta jarraitzaileak",
   "navigation_bar.info": "Zerbitzari honi buruz",
   "navigation_bar.keyboard_shortcuts": "Laster-teklak",
   "navigation_bar.lists": "Zerrendak",
   "navigation_bar.logout": "Amaitu saioa",
   "navigation_bar.mutes": "Mutututako erabiltzaileak",
-  "navigation_bar.personal": "Personal",
+  "navigation_bar.personal": "Pertsonala",
   "navigation_bar.pins": "Finkatutako toot-ak",
   "navigation_bar.preferences": "Hobespenak",
+  "navigation_bar.profile_directory": "Profilen direktorioa",
   "navigation_bar.public_timeline": "Federatutako denbora-lerroa",
   "navigation_bar.security": "Segurtasuna",
   "notification.favourite": "{name}(e)k zure mezua gogoko du",
   "notification.follow": "{name}(e)k jarraitzen zaitu",
   "notification.mention": "{name}(e)k aipatu zaitu",
-  "notification.poll": "A poll you have voted in has ended",
+  "notification.poll": "Zuk erantzun duzun inkesta bat bukatu da",
   "notification.reblog": "{name}(e)k bultzada eman dio zure mezuari",
   "notifications.clear": "Garbitu jakinarazpenak",
   "notifications.clear_confirmation": "Ziur zure jakinarazpen guztiak behin betirako garbitu nahi dituzula?",
@@ -260,7 +263,7 @@
   "notifications.column_settings.filter_bar.show": "Erakutsi",
   "notifications.column_settings.follow": "Jarraitzaile berriak:",
   "notifications.column_settings.mention": "Aipamenak:",
-  "notifications.column_settings.poll": "Poll results:",
+  "notifications.column_settings.poll": "Inkestaren emaitzak:",
   "notifications.column_settings.push": "Push jakinarazpenak",
   "notifications.column_settings.reblog": "Bultzadak:",
   "notifications.column_settings.show": "Erakutsi zutabean",
@@ -270,14 +273,14 @@
   "notifications.filter.favourites": "Gogokoak",
   "notifications.filter.follows": "Jarraipenak",
   "notifications.filter.mentions": "Aipamenak",
-  "notifications.filter.polls": "Poll results",
+  "notifications.filter.polls": "Inkestaren emaitza",
   "notifications.group": "{count} jakinarazpen",
-  "poll.closed": "Closed",
-  "poll.refresh": "Refresh",
-  "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
-  "poll.vote": "Vote",
-  "poll_button.add_poll": "Add a poll",
-  "poll_button.remove_poll": "Remove poll",
+  "poll.closed": "Itxita",
+  "poll.refresh": "Berritu",
+  "poll.total_votes": "{count, plural, one {boto #} other {# boto}}",
+  "poll.vote": "Bozkatu",
+  "poll_button.add_poll": "Gehitu inkesta bat",
+  "poll_button.remove_poll": "Kendu inkesta",
   "privacy.change": "Doitu mezuaren pribatutasuna",
   "privacy.direct.long": "Bidali aipatutako erabiltzaileei besterik ez",
   "privacy.direct.short": "Zuzena",
@@ -299,22 +302,22 @@
   "report.forward_hint": "Kontu hau beste zerbitzari batekoa da. Bidali txostenaren kopia anonimo hara ere?",
   "report.hint": "Txostena zure zerbitzariaren moderatzaileei bidaliko zaie. Kontu hau zergatik salatzen duzun behean azaldu dezakezu:",
   "report.placeholder": "Iruzkin gehigarriak",
-  "report.submit": "Submit",
+  "report.submit": "Bidali",
   "report.target": "{target} salatzen",
   "search.placeholder": "Bilatu",
   "search_popout.search_format": "Bilaketa aurreratuaren formatua",
   "search_popout.tips.full_text": "Testu hutsarekin zuk idatzitako mezuak, gogokoak, bultzadak edo aipamenak aurkitu ditzakezu, bat datozen erabiltzaile-izenak, pantaila-izenak, eta traolak.",
   "search_popout.tips.hashtag": "traola",
-  "search_popout.tips.status": "status",
+  "search_popout.tips.status": "mezua",
   "search_popout.tips.text": "Testu hutsak pantaila-izenak, erabiltzaile-izenak eta traolak bilatzen ditu",
   "search_popout.tips.user": "erabiltzailea",
   "search_results.accounts": "Jendea",
   "search_results.hashtags": "Traolak",
   "search_results.statuses": "Toot-ak",
-  "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
+  "search_results.total": "{count, number} {count, plural, one {emaitza} other {emaitzak}}",
   "status.admin_account": "Ireki @{name} erabiltzailearen moderazio interfazea",
   "status.admin_status": "Ireki mezu hau moderazio interfazean",
-  "status.block": "Block @{name}",
+  "status.block": "Blokeatu @{name}",
   "status.cancel_reblog_private": "Kendu bultzada",
   "status.cannot_reblog": "Mezu honi ezin zaio bultzada eman",
   "status.copy": "Kopiatu mezuaren esteka",
@@ -358,17 +361,17 @@
   "tabs_bar.local_timeline": "Lokala",
   "tabs_bar.notifications": "Jakinarazpenak",
   "tabs_bar.search": "Bilatu",
-  "time_remaining.days": "{number, plural, one {# day} other {# days}} left",
-  "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
-  "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
-  "time_remaining.moments": "Moments remaining",
-  "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
+  "time_remaining.days": "{number, plural, one {egun #} other {# egun}} amaitzeko",
+  "time_remaining.hours": "{number, plural, one {ordu #} other {# ordu}} amaitzeko",
+  "time_remaining.minutes": "{number, plural, one {minutu #} other {# minutu}} amaitzeko",
+  "time_remaining.moments": "Amaitzekotan",
+  "time_remaining.seconds": "{number, plural, one {segundo #} other {# segundo}} amaitzeko",
   "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} hitz egiten",
   "ui.beforeunload": "Zure zirriborroa galduko da Mastodon uzten baduzu.",
   "upload_area.title": "Arrastatu eta jaregin igotzeko",
   "upload_button.label": "Gehitu multimedia  (JPEG, PNG, GIF, WebM, MP4, MOV)",
   "upload_error.limit": "Fitxategi igoera muga gaindituta.",
-  "upload_error.poll": "File upload not allowed with polls.",
+  "upload_error.poll": "Ez da inkestetan fitxategiak igotzea onartzen.",
   "upload_form.description": "Deskribatu ikusmen arazoak dituztenentzat",
   "upload_form.focus": "Aldatu aurrebista",
   "upload_form.undo": "Ezabatu",
@@ -376,10 +379,10 @@
   "video.close": "Itxi bideoa",
   "video.exit_fullscreen": "Irten pantaila osotik",
   "video.expand": "Hedatu bideoa",
-  "video.fullscreen": "Full screen",
+  "video.fullscreen": "Pantaila osoa",
   "video.hide": "Ezkutatu bideoa",
   "video.mute": "Mututu soinua",
-  "video.pause": "Pause",
+  "video.pause": "Pausatu",
   "video.play": "Jo",
   "video.unmute": "Desmututu soinua"
 }
diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json
index 3dcfbc7ac..def140df6 100644
--- a/app/javascript/mastodon/locales/fa.json
+++ b/app/javascript/mastodon/locales/fa.json
@@ -77,7 +77,7 @@
   "compose_form.poll.remove_option": "حذف این گزینه",
   "compose_form.publish": "بوق",
   "compose_form.publish_loud": "{publish}!",
-  "compose_form.sensitive.hide": "Mark media as sensitive",
+  "compose_form.sensitive.hide": "علامت‌گذاری به عنوان حساس",
   "compose_form.sensitive.marked": "این تصویر به عنوان حساس علامت‌گذاری شده",
   "compose_form.sensitive.unmarked": "این تصویر به عنوان حساس علامت‌گذاری نشده",
   "compose_form.spoiler.marked": "نوشته پشت هشدار محتوا پنهان است",
@@ -89,7 +89,7 @@
   "confirmations.block.message": "آیا واقعاً می‌خواهید {name} را مسدود کنید؟",
   "confirmations.delete.confirm": "پاک کن",
   "confirmations.delete.message": "آیا واقعاً می‌خواهید این نوشته را پاک کنید؟",
-  "confirmations.delete_list.confirm": "Delete",
+  "confirmations.delete_list.confirm": "پاک کن",
   "confirmations.delete_list.message": "آیا واقعاً می‌خواهید این فهرست را برای همیشه پاک کنید؟",
   "confirmations.domain_block.confirm": "پنهان‌سازی کل دامین",
   "confirmations.domain_block.message": "آیا جدی جدی می‌خواهید کل دامین {domain} را مسدود کنید؟ بیشتر وقت‌ها مسدودکردن یا بی‌صداکردن چند حساب کاربری خاص کافی است و توصیه می‌شود. پس از این کار شما هیچ نوشته‌ای را از این دامین در فهرست نوشته‌های عمومی یا اعلان‌هایتان نخواهید دید. پیگیران شما از این دامین هم حذف خواهد شد.",
@@ -204,13 +204,14 @@
   "keyboard_shortcuts.search": "برای فعال‌کردن جستجو",
   "keyboard_shortcuts.start": "برای گشودن ستون «آغاز کنید»",
   "keyboard_shortcuts.toggle_hidden": "برای نمایش/نهفتن نوشتهٔ پشت هشدار محتوا",
+  "keyboard_shortcuts.toggle_sensitivity": "برای نمایش/نهفتن عکس و ویدیو",
   "keyboard_shortcuts.toot": "برای آغاز یک بوق تازه",
   "keyboard_shortcuts.unfocus": "برای برداشتن توجه از نوشتن/جستجو",
   "keyboard_shortcuts.up": "برای بالا رفتن در فهرست",
   "lightbox.close": "بستن",
   "lightbox.next": "بعدی",
   "lightbox.previous": "قبلی",
-  "lightbox.view_context": "View context",
+  "lightbox.view_context": "نمایش گفتگو",
   "lists.account.add": "افزودن به فهرست",
   "lists.account.remove": "پاک‌کردن از فهرست",
   "lists.delete": "حذف فهرست",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "پسندیده‌ها",
   "navigation_bar.filters": "واژگان بی‌صداشده",
   "navigation_bar.follow_requests": "درخواست‌های پیگیری",
+  "navigation_bar.follows_and_followers": "پیگیری‌ها و پیگیران",
   "navigation_bar.info": "دربارهٔ این سرور",
   "navigation_bar.keyboard_shortcuts": "میان‌برهای صفحه‌کلید",
   "navigation_bar.lists": "فهرست‌ها",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "شخصی",
   "navigation_bar.pins": "نوشته‌های ثابت",
   "navigation_bar.preferences": "ترجیحات",
+  "navigation_bar.profile_directory": "فهرست گزیدهٔ کاربران",
   "navigation_bar.public_timeline": "نوشته‌های همه‌جا",
   "navigation_bar.security": "امنیت",
   "notification.favourite": "‫{name}‬ نوشتهٔ شما را پسندید",
@@ -289,11 +292,11 @@
   "privacy.unlisted.short": "فهرست‌نشده",
   "regeneration_indicator.label": "در حال باز شدن…",
   "regeneration_indicator.sublabel": "این فهرست دارد آماده می‌شود!",
-  "relative_time.days": "{number}d",
-  "relative_time.hours": "{number}h",
+  "relative_time.days": "{number} روز",
+  "relative_time.hours": "{number} ساعت",
   "relative_time.just_now": "الان",
-  "relative_time.minutes": "{number}m",
-  "relative_time.seconds": "{number}s",
+  "relative_time.minutes": "{number} دقیقه",
+  "relative_time.seconds": "{number} ثانیه",
   "reply_indicator.cancel": "لغو",
   "report.forward": "فرستادن به {target}",
   "report.forward_hint": "این حساب در سرور دیگری ثبت شده. آیا می‌خواهید رونوشتی از این گزارش به طور ناشناس به آن‌جا هم فرستاده شود؟",
diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json
index 9e098638f..4eca05ca5 100644
--- a/app/javascript/mastodon/locales/fi.json
+++ b/app/javascript/mastodon/locales/fi.json
@@ -166,7 +166,7 @@
   "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
   "introduction.federation.local.headline": "Local",
   "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
-  "introduction.interactions.action": "Finish tutorial!",
+  "introduction.interactions.action": "Finish toot-orial!",
   "introduction.interactions.favourite.headline": "Favourite",
   "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
   "introduction.interactions.reblog.headline": "Boost",
@@ -204,6 +204,7 @@
   "keyboard_shortcuts.search": "siirry hakukenttään",
   "keyboard_shortcuts.start": "avaa \"Aloitus\" -sarake",
   "keyboard_shortcuts.toggle_hidden": "näytä/piilota sisältövaroituksella merkitty teksti",
+  "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
   "keyboard_shortcuts.toot": "ala kirjoittaa uutta tuuttausta",
   "keyboard_shortcuts.unfocus": "siirry pois tekstikentästä tai hakukentästä",
   "keyboard_shortcuts.up": "siirry listassa ylöspäin",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "Suosikit",
   "navigation_bar.filters": "Mykistetyt sanat",
   "navigation_bar.follow_requests": "Seuraamispyynnöt",
+  "navigation_bar.follows_and_followers": "Follows and followers",
   "navigation_bar.info": "Tietoa tästä instanssista",
   "navigation_bar.keyboard_shortcuts": "Näppäinkomennot",
   "navigation_bar.lists": "Listat",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "Personal",
   "navigation_bar.pins": "Kiinnitetyt tuuttaukset",
   "navigation_bar.preferences": "Asetukset",
+  "navigation_bar.profile_directory": "Profile directory",
   "navigation_bar.public_timeline": "Yleinen aikajana",
   "navigation_bar.security": "Tunnukset",
   "notification.favourite": "{name} tykkäsi tilastasi",
diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json
index 090f15bea..06bb70e02 100644
--- a/app/javascript/mastodon/locales/fr.json
+++ b/app/javascript/mastodon/locales/fr.json
@@ -1,6 +1,6 @@
 {
   "account.add_or_remove_from_list": "Ajouter ou retirer des listes",
-  "account.badges.bot": "Bot",
+  "account.badges.bot": "Robot",
   "account.block": "Bloquer @{name}",
   "account.block_domain": "Tout masquer venant de {domain}",
   "account.blocked": "Bloqué",
@@ -84,7 +84,7 @@
   "compose_form.spoiler.unmarked": "Le texte n’est pas caché",
   "compose_form.spoiler_placeholder": "Écrivez ici votre avertissement",
   "confirmation_modal.cancel": "Annuler",
-  "confirmations.block.block_and_report": "Block & Report",
+  "confirmations.block.block_and_report": "Bloquer et signaler",
   "confirmations.block.confirm": "Bloquer",
   "confirmations.block.message": "Confirmez-vous le blocage de {name} ?",
   "confirmations.delete.confirm": "Supprimer",
@@ -204,6 +204,7 @@
   "keyboard_shortcuts.search": "pour cibler la recherche",
   "keyboard_shortcuts.start": "pour ouvrir la colonne \"pour commencer\"",
   "keyboard_shortcuts.toggle_hidden": "pour afficher/cacher un texte derrière CW",
+  "keyboard_shortcuts.toggle_sensitivity": "pour afficher/cacher les médias",
   "keyboard_shortcuts.toot": "pour démarrer un tout nouveau pouet",
   "keyboard_shortcuts.unfocus": "pour quitter la zone de composition/recherche",
   "keyboard_shortcuts.up": "pour remonter dans la liste",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "Favoris",
   "navigation_bar.filters": "Mots silenciés",
   "navigation_bar.follow_requests": "Demandes de suivi",
+  "navigation_bar.follows_and_followers": "Abonnements et abonné⋅e·s",
   "navigation_bar.info": "Plus d’informations",
   "navigation_bar.keyboard_shortcuts": "Raccourcis clavier",
   "navigation_bar.lists": "Listes",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "Personnel",
   "navigation_bar.pins": "Pouets épinglés",
   "navigation_bar.preferences": "Préférences",
+  "navigation_bar.profile_directory": "Annuaire des profils",
   "navigation_bar.public_timeline": "Fil public global",
   "navigation_bar.security": "Sécurité",
   "notification.favourite": "{name} a ajouté à ses favoris :",
diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json
index 61afd4cbf..9b19d6f11 100644
--- a/app/javascript/mastodon/locales/gl.json
+++ b/app/javascript/mastodon/locales/gl.json
@@ -13,7 +13,7 @@
   "account.followers.empty": "Ninguén está a seguir esta usuaria por agora.",
   "account.follows": "Seguindo",
   "account.follows.empty": "Esta usuaria aínda non segue a ninguén.",
-  "account.follows_you": "Séguena",
+  "account.follows_you": "Séguete",
   "account.hide_reblogs": "Ocultar repeticións de @{name}",
   "account.link_verified_on": "A propiedade de esta ligazón foi comprobada en {date}",
   "account.locked_info": "O estado da intimidade de esta conta estableceuse en pechado. A persoa dona da conta revisa quen pode seguila.",
@@ -71,25 +71,25 @@
   "compose_form.lock_disclaimer": "A súa conta non está {locked}. Calquera pode seguila para ver as súas mensaxes só-para-seguidoras.",
   "compose_form.lock_disclaimer.lock": "bloqueado",
   "compose_form.placeholder": "Qué contas?",
-  "compose_form.poll.add_option": "Add a choice",
-  "compose_form.poll.duration": "Poll duration",
-  "compose_form.poll.option_placeholder": "Choice {number}",
-  "compose_form.poll.remove_option": "Remove this choice",
+  "compose_form.poll.add_option": "Engadir unha opción",
+  "compose_form.poll.duration": "Duración da sondaxe",
+  "compose_form.poll.option_placeholder": "Opción {number}",
+  "compose_form.poll.remove_option": "Eliminar esta opción",
   "compose_form.publish": "Toot",
   "compose_form.publish_loud": "{publish}!",
-  "compose_form.sensitive.hide": "Mark media as sensitive",
+  "compose_form.sensitive.hide": "Marcar medios como sensibles",
   "compose_form.sensitive.marked": "Medios marcados como sensibles",
   "compose_form.sensitive.unmarked": "Os medios non están marcados como sensibles",
   "compose_form.spoiler.marked": "O texto está agochado tras un aviso",
   "compose_form.spoiler.unmarked": "O texto non está agochado",
   "compose_form.spoiler_placeholder": "Escriba o aviso aquí",
   "confirmation_modal.cancel": "Cancelar",
-  "confirmations.block.block_and_report": "Block & Report",
+  "confirmations.block.block_and_report": "Bloquear e Informar",
   "confirmations.block.confirm": "Bloquear",
   "confirmations.block.message": "Está segura de querer bloquear a {name}?",
   "confirmations.delete.confirm": "Borrar",
   "confirmations.delete.message": "Está segura de que quere eliminar este estado?",
-  "confirmations.delete_list.confirm": "Delete",
+  "confirmations.delete_list.confirm": "Eliminar",
   "confirmations.delete_list.message": "Estás seguro de que queres eliminar permanentemente esta lista?",
   "confirmations.domain_block.confirm": "Agochar un dominio completo",
   "confirmations.domain_block.message": "Realmente está segura de que quere bloquear por completo o dominio {domain}? Normalmente é suficiente, e preferible, bloquear de xeito selectivo varios elementos. Non verá contidos de ese dominio en ningunha liña temporal ou nas notificacións. As súas seguidoras en ese dominio serán eliminadas.",
@@ -138,7 +138,7 @@
   "follow_request.reject": "Rexeitar",
   "getting_started.developers": "Desenvolvedoras",
   "getting_started.directory": "Directorio do perfil",
-  "getting_started.documentation": "Documentation",
+  "getting_started.documentation": "Documentación",
   "getting_started.heading": "Comezando",
   "getting_started.invite": "Convide a xente",
   "getting_started.open_source_notice": "Mastodon é software de código aberto. Pode contribuír ou informar de fallos en GitHub en {github}.",
@@ -147,8 +147,8 @@
   "hashtag.column_header.tag_mode.all": "e {additional}",
   "hashtag.column_header.tag_mode.any": "ou {additional}",
   "hashtag.column_header.tag_mode.none": "sen {additional}",
-  "hashtag.column_settings.select.no_options_message": "No suggestions found",
-  "hashtag.column_settings.select.placeholder": "Enter hashtags…",
+  "hashtag.column_settings.select.no_options_message": "Non se atopan suxestións",
+  "hashtag.column_settings.select.placeholder": "Introducir etiquetas…",
   "hashtag.column_settings.tag_mode.all": "Todos estos",
   "hashtag.column_settings.tag_mode.any": "Calquera de estos",
   "hashtag.column_settings.tag_mode.none": "Ningún de estos",
@@ -156,13 +156,13 @@
   "home.column_settings.basic": "Básico",
   "home.column_settings.show_reblogs": "Mostrar repeticións",
   "home.column_settings.show_replies": "Mostrar respostas",
-  "intervals.full.days": "{number, plural, one {# day} other {# days}}",
-  "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
+  "intervals.full.days": "{number, plural,one {# día} other {# días}}",
+  "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}",
   "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutos}}",
   "introduction.federation.action": "Seguinte",
-  "introduction.federation.federated.headline": "Federated",
+  "introduction.federation.federated.headline": "Federado",
   "introduction.federation.federated.text": "Publicacións públicas desde outros servidores do fediverso aparecerán na liña temporal federada.",
-  "introduction.federation.home.headline": "Home",
+  "introduction.federation.home.headline": "Inicio",
   "introduction.federation.home.text": "Publicacións de xente que vostede segue aparecerán no TL de Inicio. Pode seguir a calquera en calquer servidor!",
   "introduction.federation.local.headline": "Local",
   "introduction.federation.local.text": "Publicacións públicas de xente no seu mesmo servidor aparecerán na liña temporal local.",
@@ -204,18 +204,19 @@
   "keyboard_shortcuts.search": "para centrar a busca",
   "keyboard_shortcuts.start": "abrir columna \"comezando\"",
   "keyboard_shortcuts.toggle_hidden": "mostrar/agochar un texto detrás do AC",
+  "keyboard_shortcuts.toggle_sensitivity": "mostrar/ocultar medios",
   "keyboard_shortcuts.toot": "escribir un toot novo",
   "keyboard_shortcuts.unfocus": "quitar o foco do área de escritura/busca",
   "keyboard_shortcuts.up": "ir hacia arriba na lista",
   "lightbox.close": "Fechar",
   "lightbox.next": "Seguinte",
   "lightbox.previous": "Anterior",
-  "lightbox.view_context": "View context",
+  "lightbox.view_context": "Ver contexto",
   "lists.account.add": "Engadir á lista",
   "lists.account.remove": "Eliminar da lista",
-  "lists.delete": "Delete list",
+  "lists.delete": "Eliminar lista",
   "lists.edit": "Editar lista",
-  "lists.edit.submit": "Change title",
+  "lists.edit.submit": "Cambiar título",
   "lists.new.create": "Engadir lista",
   "lists.new.title_placeholder": "Novo título da lista",
   "lists.search": "Procurar entre a xente que segues",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "Favoritas",
   "navigation_bar.filters": "Palabras acaladas",
   "navigation_bar.follow_requests": "Peticións de seguimento",
+  "navigation_bar.follows_and_followers": "Seguindo e seguidoras",
   "navigation_bar.info": "Sobre este servidor",
   "navigation_bar.keyboard_shortcuts": "Atallos",
   "navigation_bar.lists": "Listas",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "Persoal",
   "navigation_bar.pins": "Mensaxes fixadas",
   "navigation_bar.preferences": "Preferencias",
+  "navigation_bar.profile_directory": "Directorio de perfil",
   "navigation_bar.public_timeline": "Liña temporal federada",
   "navigation_bar.security": "Seguridade",
   "notification.favourite": "{name} marcou como favorito o seu estado",
@@ -272,12 +275,12 @@
   "notifications.filter.mentions": "Mencións",
   "notifications.filter.polls": "Resultados da sondaxe",
   "notifications.group": "{count} notificacións",
-  "poll.closed": "Closed",
-  "poll.refresh": "Refresh",
-  "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
+  "poll.closed": "Pechado",
+  "poll.refresh": "Actualizar",
+  "poll.total_votes": "{count, plural, one {# voto} outros {# votos}}",
   "poll.vote": "Votar",
-  "poll_button.add_poll": "Add a poll",
-  "poll_button.remove_poll": "Remove poll",
+  "poll_button.add_poll": "Engadir sondaxe",
+  "poll_button.remove_poll": "Eliminar sondaxe",
   "privacy.change": "Axustar a intimidade do estado",
   "privacy.direct.long": "Enviar exclusivamente as usuarias mencionadas",
   "privacy.direct.short": "Directa",
@@ -314,10 +317,10 @@
   "search_results.total": "{count, number} {count,plural,one {result} outros {results}}",
   "status.admin_account": "Abrir interface de moderación para @{name}",
   "status.admin_status": "Abrir este estado na interface de moderación",
-  "status.block": "Block @{name}",
+  "status.block": "Bloquear @{name}",
   "status.cancel_reblog_private": "Non promover",
   "status.cannot_reblog": "Esta mensaxe non pode ser promovida",
-  "status.copy": "Copy link to status",
+  "status.copy": "Copiar ligazón ao estado",
   "status.delete": "Eliminar",
   "status.detailed_status": "Vista detallada da conversa",
   "status.direct": "Mensaxe directa @{name}",
@@ -358,17 +361,17 @@
   "tabs_bar.local_timeline": "Local",
   "tabs_bar.notifications": "Notificacións",
   "tabs_bar.search": "Buscar",
-  "time_remaining.days": "{number, plural, one {# day} other {# days}} left",
-  "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
-  "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
-  "time_remaining.moments": "Moments remaining",
-  "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
+  "time_remaining.days": "{number, plural, one {# dia} other {# días}} restantes",
+  "time_remaining.hours": "{number, plural, one {# hora} other {# horas}} restantes",
+  "time_remaining.minutes": "{number, plural, one {# minuto} other {# minutos}} restantes",
+  "time_remaining.moments": "Está rematando",
+  "time_remaining.seconds": "{number, plural, one {# segundo} other {# segundos}} restantes",
   "trends.count_by_accounts": "{count} {rawCount, plural, one {person} outras {people}} conversando",
   "ui.beforeunload": "O borrador perderase se sae de Mastodon.",
   "upload_area.title": "Arrastre e solte para subir",
   "upload_button.label": "Engadir medios (JPEG, PNG, GIF, WebM, MP4, MOV)",
-  "upload_error.limit": "File upload limit exceeded.",
-  "upload_error.poll": "File upload not allowed with polls.",
+  "upload_error.limit": "Excedeu o límite de subida de ficheiros.",
+  "upload_error.poll": "Non se poden subir ficheiros nas sondaxes.",
   "upload_form.description": "Describa para deficientes visuais",
   "upload_form.focus": "Cambiar vista previa",
   "upload_form.undo": "Eliminar",
diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json
index bf09ead22..248be3c7b 100644
--- a/app/javascript/mastodon/locales/he.json
+++ b/app/javascript/mastodon/locales/he.json
@@ -166,7 +166,7 @@
   "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
   "introduction.federation.local.headline": "Local",
   "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
-  "introduction.interactions.action": "Finish tutorial!",
+  "introduction.interactions.action": "Finish toot-orial!",
   "introduction.interactions.favourite.headline": "Favourite",
   "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
   "introduction.interactions.reblog.headline": "Boost",
@@ -204,6 +204,7 @@
   "keyboard_shortcuts.search": "להתמקד בחלון החיפוש",
   "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": "להתחיל חיצרוץ חדש",
   "keyboard_shortcuts.unfocus": "לצאת מתיבת חיבור/חיפוש",
   "keyboard_shortcuts.up": "לנוע במעלה הרשימה",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "חיבובים",
   "navigation_bar.filters": "Muted words",
   "navigation_bar.follow_requests": "בקשות מעקב",
+  "navigation_bar.follows_and_followers": "Follows and followers",
   "navigation_bar.info": "מידע נוסף",
   "navigation_bar.keyboard_shortcuts": "קיצורי מקלדת",
   "navigation_bar.lists": "Lists",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "Personal",
   "navigation_bar.pins": "חיצרוצים מקובעים",
   "navigation_bar.preferences": "העדפות",
+  "navigation_bar.profile_directory": "Profile directory",
   "navigation_bar.public_timeline": "ציר זמן בין-קהילתי",
   "navigation_bar.security": "Security",
   "notification.favourite": "חצרוצך חובב על ידי {name}",
diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json
index 5d8f4ab7f..ac58514d4 100644
--- a/app/javascript/mastodon/locales/hi.json
+++ b/app/javascript/mastodon/locales/hi.json
@@ -204,6 +204,7 @@
   "keyboard_shortcuts.search": "to focus search",
   "keyboard_shortcuts.start": "to open \"get started\" column",
   "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
+  "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
   "keyboard_shortcuts.toot": "to start a brand new toot",
   "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
   "keyboard_shortcuts.up": "to move up in the list",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "Favourites",
   "navigation_bar.filters": "Muted words",
   "navigation_bar.follow_requests": "Follow requests",
+  "navigation_bar.follows_and_followers": "Follows and followers",
   "navigation_bar.info": "About this server",
   "navigation_bar.keyboard_shortcuts": "Hotkeys",
   "navigation_bar.lists": "Lists",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "Personal",
   "navigation_bar.pins": "Pinned toots",
   "navigation_bar.preferences": "Preferences",
+  "navigation_bar.profile_directory": "Profile directory",
   "navigation_bar.public_timeline": "Federated timeline",
   "navigation_bar.security": "Security",
   "notification.favourite": "{name} favourited your status",
diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json
index 5353cb572..6f9b5343a 100644
--- a/app/javascript/mastodon/locales/hr.json
+++ b/app/javascript/mastodon/locales/hr.json
@@ -166,7 +166,7 @@
   "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
   "introduction.federation.local.headline": "Local",
   "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
-  "introduction.interactions.action": "Finish tutorial!",
+  "introduction.interactions.action": "Finish toot-orial!",
   "introduction.interactions.favourite.headline": "Favourite",
   "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
   "introduction.interactions.reblog.headline": "Boost",
@@ -204,6 +204,7 @@
   "keyboard_shortcuts.search": "to focus search",
   "keyboard_shortcuts.start": "to open \"get started\" column",
   "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
+  "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
   "keyboard_shortcuts.toot": "to start a brand new toot",
   "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
   "keyboard_shortcuts.up": "to move up in the list",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "Favoriti",
   "navigation_bar.filters": "Muted words",
   "navigation_bar.follow_requests": "Zahtjevi za slijeđenje",
+  "navigation_bar.follows_and_followers": "Follows and followers",
   "navigation_bar.info": "Više informacija",
   "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
   "navigation_bar.lists": "Lists",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "Personal",
   "navigation_bar.pins": "Pinned toots",
   "navigation_bar.preferences": "Postavke",
+  "navigation_bar.profile_directory": "Profile directory",
   "navigation_bar.public_timeline": "Federalni timeline",
   "navigation_bar.security": "Security",
   "notification.favourite": "{name} je lajkao tvoj status",
diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json
index b906dd619..7be8b7d67 100644
--- a/app/javascript/mastodon/locales/hu.json
+++ b/app/javascript/mastodon/locales/hu.json
@@ -166,7 +166,7 @@
   "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
   "introduction.federation.local.headline": "Local",
   "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
-  "introduction.interactions.action": "Finish tutorial!",
+  "introduction.interactions.action": "Finish toot-orial!",
   "introduction.interactions.favourite.headline": "Favourite",
   "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
   "introduction.interactions.reblog.headline": "Boost",
@@ -204,6 +204,7 @@
   "keyboard_shortcuts.search": "kereső kiemelése",
   "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": "új tülk megkezdése",
   "keyboard_shortcuts.unfocus": "tülk szerkesztés/keresés fókuszpontból való kivétele",
   "keyboard_shortcuts.up": "fennebb helyezés a listában",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "Kedvencek",
   "navigation_bar.filters": "Muted words",
   "navigation_bar.follow_requests": "Követési kérések",
+  "navigation_bar.follows_and_followers": "Follows and followers",
   "navigation_bar.info": "Ezen szerverről",
   "navigation_bar.keyboard_shortcuts": "Gyorsbillentyűk",
   "navigation_bar.lists": "Listák",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "Personal",
   "navigation_bar.pins": "Kitűzött tülkök",
   "navigation_bar.preferences": "Beállítások",
+  "navigation_bar.profile_directory": "Profile directory",
   "navigation_bar.public_timeline": "Nyilvános időfolyam",
   "navigation_bar.security": "Security",
   "notification.favourite": "{name} kedvencnek jelölte az állapotod",
diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json
index e2e0aa881..b2dc16a48 100644
--- a/app/javascript/mastodon/locales/hy.json
+++ b/app/javascript/mastodon/locales/hy.json
@@ -166,7 +166,7 @@
   "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
   "introduction.federation.local.headline": "Local",
   "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
-  "introduction.interactions.action": "Finish tutorial!",
+  "introduction.interactions.action": "Finish toot-orial!",
   "introduction.interactions.favourite.headline": "Favourite",
   "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
   "introduction.interactions.reblog.headline": "Boost",
@@ -204,6 +204,7 @@
   "keyboard_shortcuts.search": "որոնման դաշտին սեւեռվելու համար",
   "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": "թարմ թութ սկսելու համար",
   "keyboard_shortcuts.unfocus": "տեքստի/որոնման տիրույթից ապասեւեռվելու համար",
   "keyboard_shortcuts.up": "ցանկով վերեւ շարժվելու համար",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "Հավանածներ",
   "navigation_bar.filters": "Muted words",
   "navigation_bar.follow_requests": "Հետեւելու հայցեր",
+  "navigation_bar.follows_and_followers": "Follows and followers",
   "navigation_bar.info": "Այս հանգույցի մասին",
   "navigation_bar.keyboard_shortcuts": "Ստեղնաշարի կարճատներ",
   "navigation_bar.lists": "Ցանկեր",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "Անձնական",
   "navigation_bar.pins": "Ամրացված թթեր",
   "navigation_bar.preferences": "Նախապատվություններ",
+  "navigation_bar.profile_directory": "Profile directory",
   "navigation_bar.public_timeline": "Դաշնային հոսք",
   "navigation_bar.security": "Անվտանգություն",
   "notification.favourite": "{name} հավանեց թութդ",
diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json
index 5b15327ed..07ce0eb98 100644
--- a/app/javascript/mastodon/locales/id.json
+++ b/app/javascript/mastodon/locales/id.json
@@ -166,7 +166,7 @@
   "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
   "introduction.federation.local.headline": "Local",
   "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
-  "introduction.interactions.action": "Finish tutorial!",
+  "introduction.interactions.action": "Finish toot-orial!",
   "introduction.interactions.favourite.headline": "Favourite",
   "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
   "introduction.interactions.reblog.headline": "Boost",
@@ -204,6 +204,7 @@
   "keyboard_shortcuts.search": "untuk fokus mencari",
   "keyboard_shortcuts.start": "to open \"get started\" column",
   "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
+  "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
   "keyboard_shortcuts.toot": "to start a brand new toot",
   "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
   "keyboard_shortcuts.up": "to move up in the list",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "Favorit",
   "navigation_bar.filters": "Muted words",
   "navigation_bar.follow_requests": "Permintaan mengikuti",
+  "navigation_bar.follows_and_followers": "Follows and followers",
   "navigation_bar.info": "Informasi selengkapnya",
   "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
   "navigation_bar.lists": "Lists",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "Personal",
   "navigation_bar.pins": "Pinned toots",
   "navigation_bar.preferences": "Pengaturan",
+  "navigation_bar.profile_directory": "Profile directory",
   "navigation_bar.public_timeline": "Linimasa gabungan",
   "navigation_bar.security": "Security",
   "notification.favourite": "{name} menyukai status anda",
diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json
index 61c65c12d..c3f8707d1 100644
--- a/app/javascript/mastodon/locales/io.json
+++ b/app/javascript/mastodon/locales/io.json
@@ -166,7 +166,7 @@
   "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
   "introduction.federation.local.headline": "Local",
   "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
-  "introduction.interactions.action": "Finish tutorial!",
+  "introduction.interactions.action": "Finish toot-orial!",
   "introduction.interactions.favourite.headline": "Favourite",
   "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
   "introduction.interactions.reblog.headline": "Boost",
@@ -204,6 +204,7 @@
   "keyboard_shortcuts.search": "to focus search",
   "keyboard_shortcuts.start": "to open \"get started\" column",
   "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
+  "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
   "keyboard_shortcuts.toot": "to start a brand new toot",
   "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
   "keyboard_shortcuts.up": "to move up in the list",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "Favorati",
   "navigation_bar.filters": "Muted words",
   "navigation_bar.follow_requests": "Demandi di sequado",
+  "navigation_bar.follows_and_followers": "Follows and followers",
   "navigation_bar.info": "Detaloza informi",
   "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
   "navigation_bar.lists": "Lists",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "Personal",
   "navigation_bar.pins": "Pinned toots",
   "navigation_bar.preferences": "Preferi",
+  "navigation_bar.profile_directory": "Profile directory",
   "navigation_bar.public_timeline": "Federata tempolineo",
   "navigation_bar.security": "Security",
   "notification.favourite": "{name} favorizis tua mesajo",
diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json
index ebdc42102..d5e88c4f3 100644
--- a/app/javascript/mastodon/locales/it.json
+++ b/app/javascript/mastodon/locales/it.json
@@ -204,6 +204,7 @@
   "keyboard_shortcuts.search": "per spostare il focus sulla ricerca",
   "keyboard_shortcuts.start": "per aprire la colonna \"Come iniziare\"",
   "keyboard_shortcuts.toggle_hidden": "per mostrare/nascondere il testo dei CW",
+  "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
   "keyboard_shortcuts.toot": "per iniziare a scrivere un toot completamente nuovo",
   "keyboard_shortcuts.unfocus": "per uscire dall'area di composizione o dalla ricerca",
   "keyboard_shortcuts.up": "per spostarsi in alto nella lista",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "Apprezzati",
   "navigation_bar.filters": "Parole silenziate",
   "navigation_bar.follow_requests": "Richieste di amicizia",
+  "navigation_bar.follows_and_followers": "Follows and followers",
   "navigation_bar.info": "Informazioni su questo server",
   "navigation_bar.keyboard_shortcuts": "Tasti di scelta rapida",
   "navigation_bar.lists": "Liste",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "Personal",
   "navigation_bar.pins": "Toot fissati in cima",
   "navigation_bar.preferences": "Impostazioni",
+  "navigation_bar.profile_directory": "Profile directory",
   "navigation_bar.public_timeline": "Timeline federata",
   "navigation_bar.security": "Sicurezza",
   "notification.favourite": "{name} ha apprezzato il tuo post",
diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json
index fb4a814c8..bdc1f98fb 100644
--- a/app/javascript/mastodon/locales/ja.json
+++ b/app/javascript/mastodon/locales/ja.json
@@ -250,6 +250,7 @@
   "navigation_bar.personal": "個人用",
   "navigation_bar.pins": "固定したトゥート",
   "navigation_bar.preferences": "ユーザー設定",
+  "navigation_bar.profile_directory": "ディレクトリ",
   "navigation_bar.public_timeline": "連合タイムライン",
   "navigation_bar.misc": "その他",
   "navigation_bar.security": "セキュリティ",
diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json
index 237c11a66..ff7059aea 100644
--- a/app/javascript/mastodon/locales/ka.json
+++ b/app/javascript/mastodon/locales/ka.json
@@ -166,7 +166,7 @@
   "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
   "introduction.federation.local.headline": "Local",
   "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
-  "introduction.interactions.action": "Finish tutorial!",
+  "introduction.interactions.action": "Finish toot-orial!",
   "introduction.interactions.favourite.headline": "Favourite",
   "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
   "introduction.interactions.reblog.headline": "Boost",
@@ -204,6 +204,7 @@
   "keyboard_shortcuts.search": "ძიებაზე ფოკუსირებისთვის",
   "keyboard_shortcuts.start": "to open \"get started\" column",
   "keyboard_shortcuts.toggle_hidden": "გაფრთხილების უკან ტექსტის გამოსაჩენად/დასამალვად",
+  "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
   "keyboard_shortcuts.toot": "ახალი ტუტის დასაწყებად",
   "keyboard_shortcuts.unfocus": "შედგენის ტექსტ-არეაზე ფოკუსის მოსაშორებლად",
   "keyboard_shortcuts.up": "სიაში ზემოთ გადასაადგილებლად",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "ფავორიტები",
   "navigation_bar.filters": "გაჩუმებული სიტყვები",
   "navigation_bar.follow_requests": "დადევნების მოთხოვნები",
+  "navigation_bar.follows_and_followers": "Follows and followers",
   "navigation_bar.info": "ამ ინსტანციის შესახებ",
   "navigation_bar.keyboard_shortcuts": "ცხელი კლავიშები",
   "navigation_bar.lists": "სიები",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "პირადი",
   "navigation_bar.pins": "აპინული ტუტები",
   "navigation_bar.preferences": "პრეფერენსიები",
+  "navigation_bar.profile_directory": "Profile directory",
   "navigation_bar.public_timeline": "ფედერალური თაიმლაინი",
   "navigation_bar.security": "უსაფრთხოება",
   "notification.favourite": "{name}-მა თქვენი სტატუსი აქცია ფავორიტად",
diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json
index bae8dd121..b9bd7cac3 100644
--- a/app/javascript/mastodon/locales/kk.json
+++ b/app/javascript/mastodon/locales/kk.json
@@ -204,6 +204,7 @@
   "keyboard_shortcuts.search": "іздеу",
   "keyboard_shortcuts.start": "бастапқы бағанға бару",
   "keyboard_shortcuts.toggle_hidden": "жабық мәтінді CW ашу/жабу",
+  "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
   "keyboard_shortcuts.toot": "жаңа жазба бастау",
   "keyboard_shortcuts.unfocus": "жазба қалдыру алаңынан шығу",
   "keyboard_shortcuts.up": "тізімде жоғары шығу",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "Таңдаулылар",
   "navigation_bar.filters": "Үнсіз сөздер",
   "navigation_bar.follow_requests": "Жазылуға сұранғандар",
+  "navigation_bar.follows_and_followers": "Follows and followers",
   "navigation_bar.info": "Сервер туралы",
   "navigation_bar.keyboard_shortcuts": "Ыстық пернелер",
   "navigation_bar.lists": "Тізімдер",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "Жеке",
   "navigation_bar.pins": "Жабыстырылғандар",
   "navigation_bar.preferences": "Басымдықтар",
+  "navigation_bar.profile_directory": "Profile directory",
   "navigation_bar.public_timeline": "Жаһандық желі",
   "navigation_bar.security": "Қауіпсіздік",
   "notification.favourite": "{name} жазбаңызды таңдаулыға қосты",
diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json
index bd7b9764d..656a36bce 100644
--- a/app/javascript/mastodon/locales/ko.json
+++ b/app/javascript/mastodon/locales/ko.json
@@ -77,7 +77,7 @@
   "compose_form.poll.remove_option": "이 항목 삭제",
   "compose_form.publish": "툿",
   "compose_form.publish_loud": "{publish}!",
-  "compose_form.sensitive.hide": "Mark media as sensitive",
+  "compose_form.sensitive.hide": "미디어를 민감함으로 설정하기",
   "compose_form.sensitive.marked": "미디어가 열람주의로 설정되어 있습니다",
   "compose_form.sensitive.unmarked": "미디어가 열람주의로 설정 되어 있지 않습니다",
   "compose_form.spoiler.marked": "열람주의가 설정되어 있습니다",
@@ -211,7 +211,7 @@
   "lightbox.close": "닫기",
   "lightbox.next": "다음",
   "lightbox.previous": "이전",
-  "lightbox.view_context": "View context",
+  "lightbox.view_context": "게시물 보기",
   "lists.account.add": "리스트에 추가",
   "lists.account.remove": "리스트에서 제거",
   "lists.delete": "리스트 삭제",
@@ -246,6 +246,7 @@
   "navigation_bar.personal": "개인용",
   "navigation_bar.pins": "고정된 툿",
   "navigation_bar.preferences": "사용자 설정",
+  "navigation_bar.profile_directory": "프로필 디렉토리",
   "navigation_bar.public_timeline": "연합 타임라인",
   "navigation_bar.security": "보안",
   "notification.favourite": "{name}님이 즐겨찾기 했습니다",
diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json
new file mode 100644
index 000000000..ac58514d4
--- /dev/null
+++ b/app/javascript/mastodon/locales/lt.json
@@ -0,0 +1,388 @@
+{
+  "account.add_or_remove_from_list": "Add or Remove from lists",
+  "account.badges.bot": "Bot",
+  "account.block": "Block @{name}",
+  "account.block_domain": "Hide everything from {domain}",
+  "account.blocked": "Blocked",
+  "account.direct": "Direct message @{name}",
+  "account.domain_blocked": "Domain hidden",
+  "account.edit_profile": "Edit profile",
+  "account.endorse": "Feature on profile",
+  "account.follow": "Follow",
+  "account.followers": "Followers",
+  "account.followers.empty": "No one follows this user yet.",
+  "account.follows": "Follows",
+  "account.follows.empty": "This user doesn't follow anyone yet.",
+  "account.follows_you": "Follows you",
+  "account.hide_reblogs": "Hide boosts from @{name}",
+  "account.link_verified_on": "Ownership of this link was checked on {date}",
+  "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
+  "account.media": "Media",
+  "account.mention": "Mention @{name}",
+  "account.moved_to": "{name} has moved to:",
+  "account.mute": "Mute @{name}",
+  "account.mute_notifications": "Mute notifications from @{name}",
+  "account.muted": "Muted",
+  "account.posts": "Toots",
+  "account.posts_with_replies": "Toots and replies",
+  "account.report": "Report @{name}",
+  "account.requested": "Awaiting approval. Click to cancel follow request",
+  "account.share": "Share @{name}'s profile",
+  "account.show_reblogs": "Show boosts from @{name}",
+  "account.unblock": "Unblock @{name}",
+  "account.unblock_domain": "Unhide {domain}",
+  "account.unendorse": "Don't feature on profile",
+  "account.unfollow": "Unfollow",
+  "account.unmute": "Unmute @{name}",
+  "account.unmute_notifications": "Unmute notifications from @{name}",
+  "alert.unexpected.message": "An unexpected error occurred.",
+  "alert.unexpected.title": "Oops!",
+  "boost_modal.combo": "You can press {combo} to skip this next time",
+  "bundle_column_error.body": "Something went wrong while loading this component.",
+  "bundle_column_error.retry": "Try again",
+  "bundle_column_error.title": "Network error",
+  "bundle_modal_error.close": "Close",
+  "bundle_modal_error.message": "Something went wrong while loading this component.",
+  "bundle_modal_error.retry": "Try again",
+  "column.blocks": "Blocked users",
+  "column.community": "Local timeline",
+  "column.direct": "Direct messages",
+  "column.domain_blocks": "Hidden domains",
+  "column.favourites": "Favourites",
+  "column.follow_requests": "Follow requests",
+  "column.home": "Home",
+  "column.lists": "Lists",
+  "column.mutes": "Muted users",
+  "column.notifications": "Notifications",
+  "column.pins": "Pinned toot",
+  "column.public": "Federated timeline",
+  "column_back_button.label": "Back",
+  "column_header.hide_settings": "Hide settings",
+  "column_header.moveLeft_settings": "Move column to the left",
+  "column_header.moveRight_settings": "Move column to the right",
+  "column_header.pin": "Pin",
+  "column_header.show_settings": "Show settings",
+  "column_header.unpin": "Unpin",
+  "column_subheading.settings": "Settings",
+  "community.column_settings.media_only": "Media Only",
+  "compose_form.direct_message_warning": "This toot will only be sent to all the mentioned users.",
+  "compose_form.direct_message_warning_learn_more": "Learn more",
+  "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.",
+  "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
+  "compose_form.lock_disclaimer.lock": "locked",
+  "compose_form.placeholder": "What is on your mind?",
+  "compose_form.poll.add_option": "Add a choice",
+  "compose_form.poll.duration": "Poll duration",
+  "compose_form.poll.option_placeholder": "Choice {number}",
+  "compose_form.poll.remove_option": "Remove this choice",
+  "compose_form.publish": "Toot",
+  "compose_form.publish_loud": "{publish}!",
+  "compose_form.sensitive.hide": "Mark media as sensitive",
+  "compose_form.sensitive.marked": "Media is marked as sensitive",
+  "compose_form.sensitive.unmarked": "Media is not marked as sensitive",
+  "compose_form.spoiler.marked": "Text is hidden behind warning",
+  "compose_form.spoiler.unmarked": "Text is not hidden",
+  "compose_form.spoiler_placeholder": "Write your warning here",
+  "confirmation_modal.cancel": "Cancel",
+  "confirmations.block.block_and_report": "Block & Report",
+  "confirmations.block.confirm": "Block",
+  "confirmations.block.message": "Are you sure you want to block {name}?",
+  "confirmations.delete.confirm": "Delete",
+  "confirmations.delete.message": "Are you sure you want to delete this status?",
+  "confirmations.delete_list.confirm": "Delete",
+  "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
+  "confirmations.domain_block.confirm": "Hide entire domain",
+  "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.",
+  "confirmations.mute.confirm": "Mute",
+  "confirmations.mute.message": "Are you sure you want to mute {name}?",
+  "confirmations.redraft.confirm": "Delete & redraft",
+  "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.",
+  "confirmations.reply.confirm": "Reply",
+  "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?",
+  "confirmations.unfollow.confirm": "Unfollow",
+  "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
+  "embed.instructions": "Embed this status on your website by copying the code below.",
+  "embed.preview": "Here is what it will look like:",
+  "emoji_button.activity": "Activity",
+  "emoji_button.custom": "Custom",
+  "emoji_button.flags": "Flags",
+  "emoji_button.food": "Food & Drink",
+  "emoji_button.label": "Insert emoji",
+  "emoji_button.nature": "Nature",
+  "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
+  "emoji_button.objects": "Objects",
+  "emoji_button.people": "People",
+  "emoji_button.recent": "Frequently used",
+  "emoji_button.search": "Search...",
+  "emoji_button.search_results": "Search results",
+  "emoji_button.symbols": "Symbols",
+  "emoji_button.travel": "Travel & Places",
+  "empty_column.account_timeline": "No toots here!",
+  "empty_column.account_unavailable": "Profile unavailable",
+  "empty_column.blocks": "You haven't blocked any users yet.",
+  "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
+  "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
+  "empty_column.domain_blocks": "There are no hidden domains yet.",
+  "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
+  "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.",
+  "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
+  "empty_column.hashtag": "There is nothing in this hashtag yet.",
+  "empty_column.home": "Your home timeline is empty! Visit {public} or use search to get started and meet other users.",
+  "empty_column.home.public_timeline": "the public timeline",
+  "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.",
+  "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
+  "empty_column.mutes": "You haven't muted any users yet.",
+  "empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.",
+  "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other servers to fill it up",
+  "follow_request.authorize": "Authorize",
+  "follow_request.reject": "Reject",
+  "getting_started.developers": "Developers",
+  "getting_started.directory": "Profile directory",
+  "getting_started.documentation": "Documentation",
+  "getting_started.heading": "Getting started",
+  "getting_started.invite": "Invite people",
+  "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.",
+  "getting_started.security": "Security",
+  "getting_started.terms": "Terms of service",
+  "hashtag.column_header.tag_mode.all": "and {additional}",
+  "hashtag.column_header.tag_mode.any": "or {additional}",
+  "hashtag.column_header.tag_mode.none": "without {additional}",
+  "hashtag.column_settings.select.no_options_message": "No suggestions found",
+  "hashtag.column_settings.select.placeholder": "Enter hashtags…",
+  "hashtag.column_settings.tag_mode.all": "All of these",
+  "hashtag.column_settings.tag_mode.any": "Any of these",
+  "hashtag.column_settings.tag_mode.none": "None of these",
+  "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
+  "home.column_settings.basic": "Basic",
+  "home.column_settings.show_reblogs": "Show boosts",
+  "home.column_settings.show_replies": "Show replies",
+  "intervals.full.days": "{number, plural, one {# day} other {# days}}",
+  "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
+  "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
+  "introduction.federation.action": "Next",
+  "introduction.federation.federated.headline": "Federated",
+  "introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.",
+  "introduction.federation.home.headline": "Home",
+  "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
+  "introduction.federation.local.headline": "Local",
+  "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
+  "introduction.interactions.action": "Finish toot-orial!",
+  "introduction.interactions.favourite.headline": "Favourite",
+  "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
+  "introduction.interactions.reblog.headline": "Boost",
+  "introduction.interactions.reblog.text": "You can share other people's toots with your followers by boosting them.",
+  "introduction.interactions.reply.headline": "Reply",
+  "introduction.interactions.reply.text": "You can reply to other people's and your own toots, which will chain them together in a conversation.",
+  "introduction.welcome.action": "Let's go!",
+  "introduction.welcome.headline": "First steps",
+  "introduction.welcome.text": "Welcome to the fediverse! In a few moments, you'll be able to broadcast messages and talk to your friends across a wide variety of servers. But this server, {domain}, is special—it hosts your profile, so remember its name.",
+  "keyboard_shortcuts.back": "to navigate back",
+  "keyboard_shortcuts.blocked": "to open blocked users list",
+  "keyboard_shortcuts.boost": "to boost",
+  "keyboard_shortcuts.column": "to focus a status in one of the columns",
+  "keyboard_shortcuts.compose": "to focus the compose textarea",
+  "keyboard_shortcuts.description": "Description",
+  "keyboard_shortcuts.direct": "to open direct messages column",
+  "keyboard_shortcuts.down": "to move down in the list",
+  "keyboard_shortcuts.enter": "to open status",
+  "keyboard_shortcuts.favourite": "to favourite",
+  "keyboard_shortcuts.favourites": "to open favourites list",
+  "keyboard_shortcuts.federated": "to open federated timeline",
+  "keyboard_shortcuts.heading": "Keyboard Shortcuts",
+  "keyboard_shortcuts.home": "to open home timeline",
+  "keyboard_shortcuts.hotkey": "Hotkey",
+  "keyboard_shortcuts.legend": "to display this legend",
+  "keyboard_shortcuts.local": "to open local timeline",
+  "keyboard_shortcuts.mention": "to mention author",
+  "keyboard_shortcuts.muted": "to open muted users list",
+  "keyboard_shortcuts.my_profile": "to open your profile",
+  "keyboard_shortcuts.notifications": "to open notifications column",
+  "keyboard_shortcuts.pinned": "to open pinned toots list",
+  "keyboard_shortcuts.profile": "to open author's profile",
+  "keyboard_shortcuts.reply": "to reply",
+  "keyboard_shortcuts.requests": "to open follow requests list",
+  "keyboard_shortcuts.search": "to focus search",
+  "keyboard_shortcuts.start": "to open \"get started\" column",
+  "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
+  "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
+  "keyboard_shortcuts.toot": "to start a brand new toot",
+  "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
+  "keyboard_shortcuts.up": "to move up in the list",
+  "lightbox.close": "Close",
+  "lightbox.next": "Next",
+  "lightbox.previous": "Previous",
+  "lightbox.view_context": "View context",
+  "lists.account.add": "Add to list",
+  "lists.account.remove": "Remove from list",
+  "lists.delete": "Delete list",
+  "lists.edit": "Edit list",
+  "lists.edit.submit": "Change title",
+  "lists.new.create": "Add list",
+  "lists.new.title_placeholder": "New list title",
+  "lists.search": "Search among people you follow",
+  "lists.subheading": "Your lists",
+  "loading_indicator.label": "Loading...",
+  "media_gallery.toggle_visible": "Toggle visibility",
+  "missing_indicator.label": "Not found",
+  "missing_indicator.sublabel": "This resource could not be found",
+  "mute_modal.hide_notifications": "Hide notifications from this user?",
+  "navigation_bar.apps": "Mobile apps",
+  "navigation_bar.blocks": "Blocked users",
+  "navigation_bar.community_timeline": "Local timeline",
+  "navigation_bar.compose": "Compose new toot",
+  "navigation_bar.direct": "Direct messages",
+  "navigation_bar.discover": "Discover",
+  "navigation_bar.domain_blocks": "Hidden domains",
+  "navigation_bar.edit_profile": "Edit profile",
+  "navigation_bar.favourites": "Favourites",
+  "navigation_bar.filters": "Muted words",
+  "navigation_bar.follow_requests": "Follow requests",
+  "navigation_bar.follows_and_followers": "Follows and followers",
+  "navigation_bar.info": "About this server",
+  "navigation_bar.keyboard_shortcuts": "Hotkeys",
+  "navigation_bar.lists": "Lists",
+  "navigation_bar.logout": "Logout",
+  "navigation_bar.mutes": "Muted users",
+  "navigation_bar.personal": "Personal",
+  "navigation_bar.pins": "Pinned toots",
+  "navigation_bar.preferences": "Preferences",
+  "navigation_bar.profile_directory": "Profile directory",
+  "navigation_bar.public_timeline": "Federated timeline",
+  "navigation_bar.security": "Security",
+  "notification.favourite": "{name} favourited your status",
+  "notification.follow": "{name} followed you",
+  "notification.mention": "{name} mentioned you",
+  "notification.poll": "A poll you have voted in has ended",
+  "notification.reblog": "{name} boosted your status",
+  "notifications.clear": "Clear notifications",
+  "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
+  "notifications.column_settings.alert": "Desktop notifications",
+  "notifications.column_settings.favourite": "Favourites:",
+  "notifications.column_settings.filter_bar.advanced": "Display all categories",
+  "notifications.column_settings.filter_bar.category": "Quick filter bar",
+  "notifications.column_settings.filter_bar.show": "Show",
+  "notifications.column_settings.follow": "New followers:",
+  "notifications.column_settings.mention": "Mentions:",
+  "notifications.column_settings.poll": "Poll results:",
+  "notifications.column_settings.push": "Push notifications",
+  "notifications.column_settings.reblog": "Boosts:",
+  "notifications.column_settings.show": "Show in column",
+  "notifications.column_settings.sound": "Play sound",
+  "notifications.filter.all": "All",
+  "notifications.filter.boosts": "Boosts",
+  "notifications.filter.favourites": "Favourites",
+  "notifications.filter.follows": "Follows",
+  "notifications.filter.mentions": "Mentions",
+  "notifications.filter.polls": "Poll results",
+  "notifications.group": "{count} notifications",
+  "poll.closed": "Closed",
+  "poll.refresh": "Refresh",
+  "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
+  "poll.vote": "Vote",
+  "poll_button.add_poll": "Add a poll",
+  "poll_button.remove_poll": "Remove poll",
+  "privacy.change": "Adjust status privacy",
+  "privacy.direct.long": "Post to mentioned users only",
+  "privacy.direct.short": "Direct",
+  "privacy.private.long": "Post to followers only",
+  "privacy.private.short": "Followers-only",
+  "privacy.public.long": "Post to public timelines",
+  "privacy.public.short": "Public",
+  "privacy.unlisted.long": "Do not show in public timelines",
+  "privacy.unlisted.short": "Unlisted",
+  "regeneration_indicator.label": "Loading…",
+  "regeneration_indicator.sublabel": "Your home feed is being prepared!",
+  "relative_time.days": "{number}d",
+  "relative_time.hours": "{number}h",
+  "relative_time.just_now": "now",
+  "relative_time.minutes": "{number}m",
+  "relative_time.seconds": "{number}s",
+  "reply_indicator.cancel": "Cancel",
+  "report.forward": "Forward to {target}",
+  "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
+  "report.hint": "The report will be sent to your server moderators. You can provide an explanation of why you are reporting this account below:",
+  "report.placeholder": "Additional comments",
+  "report.submit": "Submit",
+  "report.target": "Report {target}",
+  "search.placeholder": "Search",
+  "search_popout.search_format": "Advanced search format",
+  "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
+  "search_popout.tips.hashtag": "hashtag",
+  "search_popout.tips.status": "status",
+  "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
+  "search_popout.tips.user": "user",
+  "search_results.accounts": "People",
+  "search_results.hashtags": "Hashtags",
+  "search_results.statuses": "Toots",
+  "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
+  "status.admin_account": "Open moderation interface for @{name}",
+  "status.admin_status": "Open this status in the moderation interface",
+  "status.block": "Block @{name}",
+  "status.cancel_reblog_private": "Unboost",
+  "status.cannot_reblog": "This post cannot be boosted",
+  "status.copy": "Copy link to status",
+  "status.delete": "Delete",
+  "status.detailed_status": "Detailed conversation view",
+  "status.direct": "Direct message @{name}",
+  "status.embed": "Embed",
+  "status.favourite": "Favourite",
+  "status.filtered": "Filtered",
+  "status.load_more": "Load more",
+  "status.media_hidden": "Media hidden",
+  "status.mention": "Mention @{name}",
+  "status.more": "More",
+  "status.mute": "Mute @{name}",
+  "status.mute_conversation": "Mute conversation",
+  "status.open": "Expand this status",
+  "status.pin": "Pin on profile",
+  "status.pinned": "Pinned toot",
+  "status.read_more": "Read more",
+  "status.reblog": "Boost",
+  "status.reblog_private": "Boost to original audience",
+  "status.reblogged_by": "{name} boosted",
+  "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
+  "status.redraft": "Delete & re-draft",
+  "status.reply": "Reply",
+  "status.replyAll": "Reply to thread",
+  "status.report": "Report @{name}",
+  "status.sensitive_warning": "Sensitive content",
+  "status.share": "Share",
+  "status.show_less": "Show less",
+  "status.show_less_all": "Show less for all",
+  "status.show_more": "Show more",
+  "status.show_more_all": "Show more for all",
+  "status.show_thread": "Show thread",
+  "status.unmute_conversation": "Unmute conversation",
+  "status.unpin": "Unpin from profile",
+  "suggestions.dismiss": "Dismiss suggestion",
+  "suggestions.header": "You might be interested in…",
+  "tabs_bar.federated_timeline": "Federated",
+  "tabs_bar.home": "Home",
+  "tabs_bar.local_timeline": "Local",
+  "tabs_bar.notifications": "Notifications",
+  "tabs_bar.search": "Search",
+  "time_remaining.days": "{number, plural, one {# day} other {# days}} left",
+  "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
+  "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
+  "time_remaining.moments": "Moments remaining",
+  "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
+  "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
+  "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
+  "upload_area.title": "Drag & drop to upload",
+  "upload_button.label": "Add media (JPEG, PNG, GIF, WebM, MP4, MOV)",
+  "upload_error.limit": "File upload limit exceeded.",
+  "upload_error.poll": "File upload not allowed with polls.",
+  "upload_form.description": "Describe for the visually impaired",
+  "upload_form.focus": "Crop",
+  "upload_form.undo": "Delete",
+  "upload_progress.label": "Uploading...",
+  "video.close": "Close video",
+  "video.exit_fullscreen": "Exit full screen",
+  "video.expand": "Expand video",
+  "video.fullscreen": "Full screen",
+  "video.hide": "Hide video",
+  "video.mute": "Mute sound",
+  "video.pause": "Pause",
+  "video.play": "Play",
+  "video.unmute": "Unmute sound"
+}
diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json
index 755f24168..647e23a69 100644
--- a/app/javascript/mastodon/locales/lv.json
+++ b/app/javascript/mastodon/locales/lv.json
@@ -166,7 +166,7 @@
   "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
   "introduction.federation.local.headline": "Local",
   "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
-  "introduction.interactions.action": "Finish tutorial!",
+  "introduction.interactions.action": "Finish toot-orial!",
   "introduction.interactions.favourite.headline": "Favourite",
   "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
   "introduction.interactions.reblog.headline": "Boost",
@@ -204,6 +204,7 @@
   "keyboard_shortcuts.search": "to focus search",
   "keyboard_shortcuts.start": "to open \"get started\" column",
   "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
+  "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
   "keyboard_shortcuts.toot": "to start a brand new toot",
   "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
   "keyboard_shortcuts.up": "to move up in the list",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "Favourites",
   "navigation_bar.filters": "Muted words",
   "navigation_bar.follow_requests": "Follow requests",
+  "navigation_bar.follows_and_followers": "Follows and followers",
   "navigation_bar.info": "About this instance",
   "navigation_bar.keyboard_shortcuts": "Hotkeys",
   "navigation_bar.lists": "Lists",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "Personal",
   "navigation_bar.pins": "Pinned toots",
   "navigation_bar.preferences": "Preferences",
+  "navigation_bar.profile_directory": "Profile directory",
   "navigation_bar.public_timeline": "Federated timeline",
   "navigation_bar.security": "Security",
   "notification.favourite": "{name} favourited your status",
diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json
index cc384e7ed..d7c509963 100644
--- a/app/javascript/mastodon/locales/ms.json
+++ b/app/javascript/mastodon/locales/ms.json
@@ -166,7 +166,7 @@
   "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
   "introduction.federation.local.headline": "Local",
   "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
-  "introduction.interactions.action": "Finish tutorial!",
+  "introduction.interactions.action": "Finish toot-orial!",
   "introduction.interactions.favourite.headline": "Favourite",
   "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
   "introduction.interactions.reblog.headline": "Boost",
@@ -204,6 +204,7 @@
   "keyboard_shortcuts.search": "to focus search",
   "keyboard_shortcuts.start": "to open \"get started\" column",
   "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
+  "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
   "keyboard_shortcuts.toot": "to start a brand new toot",
   "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
   "keyboard_shortcuts.up": "to move up in the list",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "Favourites",
   "navigation_bar.filters": "Muted words",
   "navigation_bar.follow_requests": "Follow requests",
+  "navigation_bar.follows_and_followers": "Follows and followers",
   "navigation_bar.info": "About this instance",
   "navigation_bar.keyboard_shortcuts": "Hotkeys",
   "navigation_bar.lists": "Lists",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "Personal",
   "navigation_bar.pins": "Pinned toots",
   "navigation_bar.preferences": "Preferences",
+  "navigation_bar.profile_directory": "Profile directory",
   "navigation_bar.public_timeline": "Federated timeline",
   "navigation_bar.security": "Security",
   "notification.favourite": "{name} favourited your status",
diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json
index 3faf2aef4..4bcab5ba0 100644
--- a/app/javascript/mastodon/locales/nl.json
+++ b/app/javascript/mastodon/locales/nl.json
@@ -162,14 +162,14 @@
   "introduction.federation.action": "Volgende",
   "introduction.federation.federated.headline": "Globaal",
   "introduction.federation.federated.text": "Openbare toots van mensen op andere servers in de fediverse verschijnen op de globale tijdlijn.",
-  "introduction.federation.home.headline": "Home",
+  "introduction.federation.home.headline": "Start",
   "introduction.federation.home.text": "Toots van mensen die jij volgt verschijnen onder start. Je kunt iedereen op elke server volgen!",
-  "introduction.federation.local.headline": "Local",
+  "introduction.federation.local.headline": "Lokaal",
   "introduction.federation.local.text": "Openbare toots van mensen die ook op jouw server zitten verschijnen op de lokale tijdlijn.",
   "introduction.interactions.action": "Introductie beëindigen!",
   "introduction.interactions.favourite.headline": "Favorieten",
   "introduction.interactions.favourite.text": "Je kunt door een toot aan jouw favorieten toe te voegen, deze voor later bewaren en de auteur laten weten dat je de toot leuk vind.",
-  "introduction.interactions.reblog.headline": "Boost",
+  "introduction.interactions.reblog.headline": "Boosten",
   "introduction.interactions.reblog.text": "Je kunt toots van andere mensen met jouw volgers delen door deze te boosten.",
   "introduction.interactions.reply.headline": "Reageren",
   "introduction.interactions.reply.text": "Je kunt op toots van andere mensen en op die van jezelf reageren, waardoor er een gesprek ontstaat.",
@@ -204,13 +204,14 @@
   "keyboard_shortcuts.search": "om het zoekvak te focussen",
   "keyboard_shortcuts.start": "om de \"Aan de slag\"-kolom te tonen",
   "keyboard_shortcuts.toggle_hidden": "om tekst achter een waarschuwing (CW) te tonen/verbergen",
+  "keyboard_shortcuts.toggle_sensitivity": "om media te tonen/verbergen",
   "keyboard_shortcuts.toot": "om een nieuwe toot te starten",
   "keyboard_shortcuts.unfocus": "om het tekst- en zoekvak te ontfocussen",
   "keyboard_shortcuts.up": "om omhoog te bewegen in de lijst",
   "lightbox.close": "Sluiten",
   "lightbox.next": "Volgende",
   "lightbox.previous": "Vorige",
-  "lightbox.view_context": "View context",
+  "lightbox.view_context": "Context tonen",
   "lists.account.add": "Aan lijst toevoegen",
   "lists.account.remove": "Uit lijst verwijderen",
   "lists.delete": "Lijst verwijderen",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "Favorieten",
   "navigation_bar.filters": "Filters",
   "navigation_bar.follow_requests": "Volgverzoeken",
+  "navigation_bar.follows_and_followers": "Volgers en gevolgden",
   "navigation_bar.info": "Over deze server",
   "navigation_bar.keyboard_shortcuts": "Sneltoetsen",
   "navigation_bar.lists": "Lijsten",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "Persoonlijk",
   "navigation_bar.pins": "Vastgezette toots",
   "navigation_bar.preferences": "Instellingen",
+  "navigation_bar.profile_directory": "Gebruikersgids",
   "navigation_bar.public_timeline": "Globale tijdlijn",
   "navigation_bar.security": "Beveiliging",
   "notification.favourite": "{name} voegde jouw toot als favoriet toe",
@@ -290,7 +293,7 @@
   "regeneration_indicator.label": "Aan het laden…",
   "regeneration_indicator.sublabel": "Jouw tijdlijn wordt aangemaakt!",
   "relative_time.days": "{number}d",
-  "relative_time.hours": "{number}h",
+  "relative_time.hours": "{number}u",
   "relative_time.just_now": "nu",
   "relative_time.minutes": "{number}m",
   "relative_time.seconds": "{number}s",
@@ -321,7 +324,7 @@
   "status.delete": "Verwijderen",
   "status.detailed_status": "Uitgebreide gespreksweergave",
   "status.direct": "Directe toot @{name}",
-  "status.embed": "Embed",
+  "status.embed": "Insluiten",
   "status.favourite": "Favoriet",
   "status.filtered": "Gefilterd",
   "status.load_more": "Meer laden",
@@ -334,7 +337,7 @@
   "status.pin": "Aan profielpagina vastmaken",
   "status.pinned": "Vastgemaakte toot",
   "status.read_more": "Meer lezen",
-  "status.reblog": "Boost",
+  "status.reblog": "Boosten",
   "status.reblog_private": "Boost naar oorspronkelijke ontvangers",
   "status.reblogged_by": "{name} boostte",
   "status.reblogs.empty": "Niemand heeft deze toot nog geboost. Wanneer iemand dit doet, valt dat hier te zien.",
diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json
index f039bcbfd..2ba8236e2 100644
--- a/app/javascript/mastodon/locales/no.json
+++ b/app/javascript/mastodon/locales/no.json
@@ -166,7 +166,7 @@
   "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
   "introduction.federation.local.headline": "Local",
   "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
-  "introduction.interactions.action": "Finish tutorial!",
+  "introduction.interactions.action": "Finish toot-orial!",
   "introduction.interactions.favourite.headline": "Favourite",
   "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
   "introduction.interactions.reblog.headline": "Boost",
@@ -204,6 +204,7 @@
   "keyboard_shortcuts.search": "å fokusere søk",
   "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": "å starte en helt ny tut",
   "keyboard_shortcuts.unfocus": "å ufokusere komponerings-/søkefeltet",
   "keyboard_shortcuts.up": "å flytte opp i listen",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "Favoritter",
   "navigation_bar.filters": "Muted words",
   "navigation_bar.follow_requests": "Følgeforespørsler",
+  "navigation_bar.follows_and_followers": "Follows and followers",
   "navigation_bar.info": "Utvidet informasjon",
   "navigation_bar.keyboard_shortcuts": "Tastatursnarveier",
   "navigation_bar.lists": "Lister",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "Personal",
   "navigation_bar.pins": "Festa tuter",
   "navigation_bar.preferences": "Preferanser",
+  "navigation_bar.profile_directory": "Profile directory",
   "navigation_bar.public_timeline": "Felles tidslinje",
   "navigation_bar.security": "Security",
   "notification.favourite": "{name} likte din status",
diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json
index 7eaa422c9..3178f200d 100644
--- a/app/javascript/mastodon/locales/oc.json
+++ b/app/javascript/mastodon/locales/oc.json
@@ -204,6 +204,7 @@
   "keyboard_shortcuts.search": "anar a la recèrca",
   "keyboard_shortcuts.start": "dobrir la colomna « Per començar »",
   "keyboard_shortcuts.toggle_hidden": "mostrar/amagar lo tèxte dels avertiments",
+  "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
   "keyboard_shortcuts.toot": "començar un estatut tot novèl",
   "keyboard_shortcuts.unfocus": "quitar lo camp tèxte/de recèrca",
   "keyboard_shortcuts.up": "far montar dins la lista",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "Favorits",
   "navigation_bar.filters": "Mots ignorats",
   "navigation_bar.follow_requests": "Demandas d’abonament",
+  "navigation_bar.follows_and_followers": "Follows and followers",
   "navigation_bar.info": "Tocant aqueste servidor",
   "navigation_bar.keyboard_shortcuts": "Acorchis clavièr",
   "navigation_bar.lists": "Listas",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "Personal",
   "navigation_bar.pins": "Tuts penjats",
   "navigation_bar.preferences": "Preferéncias",
+  "navigation_bar.profile_directory": "Profile directory",
   "navigation_bar.public_timeline": "Flux public global",
   "navigation_bar.security": "Seguretat",
   "notification.favourite": "{name} a ajustat a sos favorits",
diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json
index 3b6fde738..d101c21aa 100644
--- a/app/javascript/mastodon/locales/pl.json
+++ b/app/javascript/mastodon/locales/pl.json
@@ -81,14 +81,14 @@
   "compose_form.poll.remove_option": "Usuń tę opcję",
   "compose_form.publish": "Wyślij",
   "compose_form.publish_loud": "{publish}!",
-  "compose_form.sensitive.hide": "Mark media as sensitive",
+  "compose_form.sensitive.hide": "Oznacz multimedia jako wrażliwe",
   "compose_form.sensitive.marked": "Zawartość multimedia jest oznaczona jako wrażliwa",
   "compose_form.sensitive.unmarked": "Zawartość multimedialna nie jest oznaczona jako wrażliwa",
   "compose_form.spoiler.marked": "Tekst jest ukryty za ostrzeżeniem",
   "compose_form.spoiler.unmarked": "Tekst nie jest ukryty",
   "compose_form.spoiler_placeholder": "Wprowadź swoje ostrzeżenie o zawartości",
   "confirmation_modal.cancel": "Anuluj",
-  "confirmations.block.block_and_report": "Block & Report",
+  "confirmations.block.block_and_report": "Zablokuj i zgłoś",
   "confirmations.block.confirm": "Zablokuj",
   "confirmations.block.message": "Czy na pewno chcesz zablokować {name}?",
   "confirmations.delete.confirm": "Usuń",
@@ -122,7 +122,7 @@
   "emoji_button.symbols": "Symbole",
   "emoji_button.travel": "Podróże i miejsca",
   "empty_column.account_timeline": "Brak wpisów tutaj!",
-  "empty_column.account_unavailable": "Profile unavailable",
+  "empty_column.account_unavailable": "Profil niedostępny",
   "empty_column.blocks": "Nie zablokowałeś(-aś) jeszcze żadnego użytkownika.",
   "empty_column.community": "Lokalna oś czasu jest pusta. Napisz coś publicznie, aby zagaić!",
   "empty_column.direct": "Nie masz żadnych wiadomości bezpośrednich. Kiedy dostaniesz lub wyślesz jakąś, pojawi się ona tutaj.",
@@ -208,13 +208,14 @@
   "keyboard_shortcuts.search": "aby przejść do pola wyszukiwania",
   "keyboard_shortcuts.start": "aby otworzyć kolumnę „Rozpocznij”",
   "keyboard_shortcuts.toggle_hidden": "aby wyświetlić lub ukryć wpis spod CW",
+  "keyboard_shortcuts.toggle_sensitivity": "by pokazać/ukryć multimedia",
   "keyboard_shortcuts.toot": "aby utworzyć nowy wpis",
   "keyboard_shortcuts.unfocus": "aby opuścić pole wyszukiwania/pisania",
   "keyboard_shortcuts.up": "aby przejść na górę listy",
   "lightbox.close": "Zamknij",
   "lightbox.next": "Następne",
   "lightbox.previous": "Poprzednie",
-  "lightbox.view_context": "View context",
+  "lightbox.view_context": "Pokaż kontekst",
   "lists.account.add": "Dodaj do listy",
   "lists.account.remove": "Usunąć z listy",
   "lists.delete": "Usuń listę",
@@ -240,6 +241,7 @@
   "navigation_bar.favourites": "Ulubione",
   "navigation_bar.filters": "Wyciszone słowa",
   "navigation_bar.follow_requests": "Prośby o śledzenie",
+  "navigation_bar.follows_and_followers": "Śledzeni i śledzący",
   "navigation_bar.info": "Szczegółowe informacje",
   "navigation_bar.keyboard_shortcuts": "Skróty klawiszowe",
   "navigation_bar.lists": "Listy",
@@ -249,6 +251,7 @@
   "navigation_bar.personal": "Osobiste",
   "navigation_bar.pins": "Przypięte wpisy",
   "navigation_bar.preferences": "Preferencje",
+  "navigation_bar.profile_directory": "Katalog profilów",
   "navigation_bar.public_timeline": "Globalna oś czasu",
   "navigation_bar.security": "Bezpieczeństwo",
   "notification.favourite": "{name} dodał(a) Twój wpis do ulubionych",
@@ -275,7 +278,7 @@
   "notifications.filter.favourites": "Ulubione",
   "notifications.filter.follows": "Śledzenia",
   "notifications.filter.mentions": "Wspomienia",
-  "notifications.filter.polls": "Poll results",
+  "notifications.filter.polls": "Wyniki głosowania",
   "notifications.group": "{count, number} {count, plural, one {powiadomienie} few {powiadomienia} many {powiadomień} more {powiadomień}}",
   "poll.closed": "Zamknięte",
   "poll.refresh": "Odśwież",
@@ -309,7 +312,7 @@
   "search.placeholder": "Szukaj",
   "search_popout.search_format": "Zaawansowane wyszukiwanie",
   "search_popout.tips.full_text": "Pozwala na wyszukiwanie wpisów które napisałeś(-aś), dodałeś(-aś) do ulubionych lub podbiłeś(-aś), w których o Tobie wspomniano, oraz pasujące nazwy użytkowników, pełne nazwy i hashtagi.",
-  "search_popout.tips.hashtag": "hashtag",
+  "search_popout.tips.hashtag": "hasztag",
   "search_popout.tips.status": "wpis",
   "search_popout.tips.text": "Proste wyszukiwanie pasujących pseudonimów, nazw użytkowników i hashtagów",
   "search_popout.tips.user": "użytkownik",
@@ -373,7 +376,7 @@
   "upload_area.title": "Przeciągnij i upuść aby wysłać",
   "upload_button.label": "Dodaj zawartość multimedialną (JPEG, PNG, GIF, WebM, MP4, MOV)",
   "upload_error.limit": "Przekroczono limit plików do wysłania.",
-  "upload_error.poll": "File upload not allowed with polls.",
+  "upload_error.poll": "Dołączanie plików nie dozwolone z głosowaniami.",
   "upload_form.description": "Wprowadź opis dla niewidomych i niedowidzących",
   "upload_form.focus": "Dopasuj podgląd",
   "upload_form.undo": "Usuń",
diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json
index 4cbd2296c..dca087af9 100644
--- a/app/javascript/mastodon/locales/pt-BR.json
+++ b/app/javascript/mastodon/locales/pt-BR.json
@@ -204,6 +204,7 @@
   "keyboard_shortcuts.search": "para focar a pesquisa",
   "keyboard_shortcuts.start": "para abrir a coluna \"primeiros passos\"",
   "keyboard_shortcuts.toggle_hidden": "mostrar/esconder o texto com aviso de conteúdo",
+  "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
   "keyboard_shortcuts.toot": "para compor um novo toot",
   "keyboard_shortcuts.unfocus": "para remover o foco da área de composição/pesquisa",
   "keyboard_shortcuts.up": "para mover para cima na lista",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "Favoritos",
   "navigation_bar.filters": "Palavras silenciadas",
   "navigation_bar.follow_requests": "Seguidores pendentes",
+  "navigation_bar.follows_and_followers": "Follows and followers",
   "navigation_bar.info": "Mais informações",
   "navigation_bar.keyboard_shortcuts": "Atalhos de teclado",
   "navigation_bar.lists": "Listas",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "Pessoal",
   "navigation_bar.pins": "Postagens fixadas",
   "navigation_bar.preferences": "Preferências",
+  "navigation_bar.profile_directory": "Profile directory",
   "navigation_bar.public_timeline": "Global",
   "navigation_bar.security": "Segurança",
   "notification.favourite": "{name} adicionou a sua postagem aos favoritos",
diff --git a/app/javascript/mastodon/locales/pt.json b/app/javascript/mastodon/locales/pt.json
index b980dfa1c..157090c55 100644
--- a/app/javascript/mastodon/locales/pt.json
+++ b/app/javascript/mastodon/locales/pt.json
@@ -204,6 +204,7 @@
   "keyboard_shortcuts.search": "para focar na pesquisa",
   "keyboard_shortcuts.start": "para abrir a coluna dos \"primeiros passos\"",
   "keyboard_shortcuts.toggle_hidden": "para mostrar/esconder texto atrás de CW",
+  "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
   "keyboard_shortcuts.toot": "para compor um novo post",
   "keyboard_shortcuts.unfocus": "para remover o foco da área de publicação/pesquisa",
   "keyboard_shortcuts.up": "para mover para cima na lista",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "Favoritos",
   "navigation_bar.filters": "Palavras silenciadas",
   "navigation_bar.follow_requests": "Seguidores pendentes",
+  "navigation_bar.follows_and_followers": "Follows and followers",
   "navigation_bar.info": "Sobre este servidor",
   "navigation_bar.keyboard_shortcuts": "Atalhos de teclado",
   "navigation_bar.lists": "Listas",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "Personal",
   "navigation_bar.pins": "Posts fixos",
   "navigation_bar.preferences": "Preferências",
+  "navigation_bar.profile_directory": "Profile directory",
   "navigation_bar.public_timeline": "Global",
   "navigation_bar.security": "Segurança",
   "notification.favourite": "{name} adicionou o teu post aos favoritos",
diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json
index 0021846d6..dcb7a088d 100644
--- a/app/javascript/mastodon/locales/ro.json
+++ b/app/javascript/mastodon/locales/ro.json
@@ -204,6 +204,7 @@
   "keyboard_shortcuts.search": "să focuseze căutarea",
   "keyboard_shortcuts.start": "să deschidă coloana \"Începere\"",
   "keyboard_shortcuts.toggle_hidden": "să arate/ascundă textul in spatele CW",
+  "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
   "keyboard_shortcuts.toot": "să înceapă o postare nouă",
   "keyboard_shortcuts.unfocus": "să dezactiveze zona de compunere/căutare",
   "keyboard_shortcuts.up": "să mute mai sus în listă",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "Favorite",
   "navigation_bar.filters": "Cuvinte oprite",
   "navigation_bar.follow_requests": "Cereri de urmărire",
+  "navigation_bar.follows_and_followers": "Follows and followers",
   "navigation_bar.info": "Despre această instanță",
   "navigation_bar.keyboard_shortcuts": "Prescurtări",
   "navigation_bar.lists": "Liste",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "Personal",
   "navigation_bar.pins": "Postări fixate",
   "navigation_bar.preferences": "Preferințe",
+  "navigation_bar.profile_directory": "Profile directory",
   "navigation_bar.public_timeline": "Flux global",
   "navigation_bar.security": "Securitate",
   "notification.favourite": "{name} a adăugat statusul tău la favorite",
diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json
index 9e8e4e324..d720b6272 100644
--- a/app/javascript/mastodon/locales/ru.json
+++ b/app/javascript/mastodon/locales/ru.json
@@ -14,7 +14,7 @@
   "account.follows": "Подписки",
   "account.follows.empty": "Этот пользователь ни на кого не подписан.",
   "account.follows_you": "Подписан(а) на Вас",
-  "account.hide_reblogs": "Скрыть продвижения от @{name}",
+  "account.hide_reblogs": "Скрыть реблоги от @{name}",
   "account.link_verified_on": "Владение этой ссылкой было проверено {date}",
   "account.locked_info": "Это закрытый аккаунт. Его владелец вручную одобряет подписчиков.",
   "account.media": "Медиа",
@@ -77,7 +77,7 @@
   "compose_form.poll.remove_option": "Удалить этот вариант",
   "compose_form.publish": "Трубить",
   "compose_form.publish_loud": "{publish}!",
-  "compose_form.sensitive.hide": "Mark media as sensitive",
+  "compose_form.sensitive.hide": "Пометить медиафайл как чувствительный",
   "compose_form.sensitive.marked": "Медиафайлы не отмечены как чувствительные",
   "compose_form.sensitive.unmarked": "Медиафайлы не отмечены как чувствительные",
   "compose_form.spoiler.marked": "Текст скрыт за предупреждением",
@@ -204,13 +204,14 @@
   "keyboard_shortcuts.search": "перейти к поиску",
   "keyboard_shortcuts.start": "перейти к разделу \"добро пожаловать\"",
   "keyboard_shortcuts.toggle_hidden": "показать/скрыть текст за предупреждением",
+  "keyboard_shortcuts.toggle_sensitivity": "показать/скрыть медиафайлы",
   "keyboard_shortcuts.toot": "начать писать новый пост",
   "keyboard_shortcuts.unfocus": "убрать фокус с поля ввода/поиска",
   "keyboard_shortcuts.up": "вверх по списку",
   "lightbox.close": "Закрыть",
   "lightbox.next": "Далее",
   "lightbox.previous": "Назад",
-  "lightbox.view_context": "View context",
+  "lightbox.view_context": "Контекст",
   "lists.account.add": "Добавить в список",
   "lists.account.remove": "Убрать из списка",
   "lists.delete": "Удалить список",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "Понравившееся",
   "navigation_bar.filters": "Заглушенные слова",
   "navigation_bar.follow_requests": "Запросы на подписку",
+  "navigation_bar.follows_and_followers": "Подписки и подписчики",
   "navigation_bar.info": "Об узле",
   "navigation_bar.keyboard_shortcuts": "Сочетания клавиш",
   "navigation_bar.lists": "Списки",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "Личное",
   "navigation_bar.pins": "Закреплённые посты",
   "navigation_bar.preferences": "Опции",
+  "navigation_bar.profile_directory": "Каталог профилей",
   "navigation_bar.public_timeline": "Глобальная лента",
   "navigation_bar.security": "Безопасность",
   "notification.favourite": "{name} понравился Ваш статус",
diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json
index 88fc73d01..56edf5469 100644
--- a/app/javascript/mastodon/locales/sk.json
+++ b/app/javascript/mastodon/locales/sk.json
@@ -204,6 +204,7 @@
   "keyboard_shortcuts.search": "zameraj sa na vyhľadávanie",
   "keyboard_shortcuts.start": "otvor panel ''začíname''",
   "keyboard_shortcuts.toggle_hidden": "ukáž/skry text za CW",
+  "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
   "keyboard_shortcuts.toot": "začni úplne nový príspevok",
   "keyboard_shortcuts.unfocus": "nesústreď sa na písaciu plochu, alebo hľadanie",
   "keyboard_shortcuts.up": "posuň sa vyššie v zozname",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "Obľúbené",
   "navigation_bar.filters": "Filtrované slová",
   "navigation_bar.follow_requests": "Žiadosti o sledovanie",
+  "navigation_bar.follows_and_followers": "Follows and followers",
   "navigation_bar.info": "O tomto serveri",
   "navigation_bar.keyboard_shortcuts": "Klávesové skratky",
   "navigation_bar.lists": "Zoznamy",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "Osobné",
   "navigation_bar.pins": "Pripnuté príspevky",
   "navigation_bar.preferences": "Voľby",
+  "navigation_bar.profile_directory": "Profile directory",
   "navigation_bar.public_timeline": "Federovaná časová os",
   "navigation_bar.security": "Zabezbečenie",
   "notification.favourite": "{name} si obľúbil/a tvoj príspevok",
diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json
index 4c07165cd..736d7da36 100644
--- a/app/javascript/mastodon/locales/sl.json
+++ b/app/javascript/mastodon/locales/sl.json
@@ -166,7 +166,7 @@
   "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
   "introduction.federation.local.headline": "Local",
   "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
-  "introduction.interactions.action": "Finish tutorial!",
+  "introduction.interactions.action": "Finish toot-orial!",
   "introduction.interactions.favourite.headline": "Favourite",
   "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
   "introduction.interactions.reblog.headline": "Boost",
@@ -204,6 +204,7 @@
   "keyboard_shortcuts.search": "to focus search",
   "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": "da začnete povsem nov tut",
   "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
   "keyboard_shortcuts.up": "to move up in the list",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "Favourites",
   "navigation_bar.filters": "Muted words",
   "navigation_bar.follow_requests": "Follow requests",
+  "navigation_bar.follows_and_followers": "Follows and followers",
   "navigation_bar.info": "O tem vozlišču",
   "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
   "navigation_bar.lists": "Lists",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "Personal",
   "navigation_bar.pins": "Pripeti tuti",
   "navigation_bar.preferences": "Preferences",
+  "navigation_bar.profile_directory": "Profile directory",
   "navigation_bar.public_timeline": "Federated timeline",
   "navigation_bar.security": "Security",
   "notification.favourite": "{name} favourited your status",
diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json
index 95bb7bd9d..13ce4e978 100644
--- a/app/javascript/mastodon/locales/sq.json
+++ b/app/javascript/mastodon/locales/sq.json
@@ -67,7 +67,7 @@
   "community.column_settings.media_only": "Vetëm Media",
   "compose_form.direct_message_warning": "Ky mesazh do t’u dërgohet përdoruesve të përmendur.",
   "compose_form.direct_message_warning_learn_more": "Mësoni më tepër",
-  "compose_form.hashtag_warning": "Ky mesazh s’do të paraqitet nën ndonjë hashtag, ngaqë s’i është caktuar ndonjë. Vetëm mesazhet publike mund të kërkohen sipas  hashtagësh.",
+  "compose_form.hashtag_warning": "Ky mesazh s’do të paraqitet nën ndonjë hashtag, ngaqë s’i është caktuar ndonjë. Vetëm mesazhet publike mund të kërkohen sipas hashtagësh.",
   "compose_form.lock_disclaimer": "Llogaria juaj s’është {locked}. Mund ta ndjekë cilido, për të parë postimet tuaja vetëm për ndjekësit.",
   "compose_form.lock_disclaimer.lock": "e bllokuar",
   "compose_form.placeholder": "Ç’bluani në mendje?",
@@ -204,6 +204,7 @@
   "keyboard_shortcuts.search": "për kalim fokusi te kërkimi",
   "keyboard_shortcuts.start": "për hapjen e shtyllës \"fillojani\"",
   "keyboard_shortcuts.toggle_hidden": "për shfaqje/fshehje teksti pas CW",
+  "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
   "keyboard_shortcuts.toot": "për të filluar një mesazh fringo të ri",
   "keyboard_shortcuts.unfocus": "për heqjen e fokusit nga fusha e hartimit të mesazheve apo kërkimeve",
   "keyboard_shortcuts.up": "për ngjitje sipër nëpër listë",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "Të parapëlqyer",
   "navigation_bar.filters": "Fjalë të heshtuara",
   "navigation_bar.follow_requests": "Kërkesa për ndjekje",
+  "navigation_bar.follows_and_followers": "Follows and followers",
   "navigation_bar.info": "Mbi këtë shërbyes",
   "navigation_bar.keyboard_shortcuts": "Taste përkatës",
   "navigation_bar.lists": "Lista",
@@ -244,13 +246,14 @@
   "navigation_bar.personal": "Personale",
   "navigation_bar.pins": "Mesazhe të fiksuar",
   "navigation_bar.preferences": "Parapëlqime",
+  "navigation_bar.profile_directory": "Profile directory",
   "navigation_bar.public_timeline": "Rrjedhë kohore të federuarish",
   "navigation_bar.security": "Siguri",
   "notification.favourite": "{name} parapëlqeu gjendjen tuaj",
   "notification.follow": "{name} zuri t’ju ndjekë",
   "notification.mention": "{name} ju ka përmendur",
   "notification.poll": "A poll you have voted in has ended",
-  "notification.reblog": "përforcoi gjendjen tuaj",
+  "notification.reblog": "{name} përforcoi gjendjen tuaj",
   "notifications.clear": "Pastroji njoftimet",
   "notifications.clear_confirmation": "Jeni i sigurt se doni të pastrohen përgjithmonë krejt njoftimet tuaja?",
   "notifications.column_settings.alert": "Njoftime desktopi",
@@ -271,7 +274,7 @@
   "notifications.filter.follows": "Ndjekje",
   "notifications.filter.mentions": "Përmendje",
   "notifications.filter.polls": "Poll results",
-  "notifications.group": "%(count)s njoftime",
+  "notifications.group": "{count}s njoftime",
   "poll.closed": "Closed",
   "poll.refresh": "Refresh",
   "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json
index 17ce3964c..8f8ca7c30 100644
--- a/app/javascript/mastodon/locales/sr-Latn.json
+++ b/app/javascript/mastodon/locales/sr-Latn.json
@@ -166,7 +166,7 @@
   "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
   "introduction.federation.local.headline": "Local",
   "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
-  "introduction.interactions.action": "Finish tutorial!",
+  "introduction.interactions.action": "Finish toot-orial!",
   "introduction.interactions.favourite.headline": "Favourite",
   "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
   "introduction.interactions.reblog.headline": "Boost",
@@ -204,6 +204,7 @@
   "keyboard_shortcuts.search": "da se prebacite na pretragu",
   "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": "da započnete skroz novi tut",
   "keyboard_shortcuts.unfocus": "da ne budete više na pretrazi/pravljenju novog tuta",
   "keyboard_shortcuts.up": "da se pomerite na gore u listi",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "Omiljeni",
   "navigation_bar.filters": "Muted words",
   "navigation_bar.follow_requests": "Zahtevi za praćenje",
+  "navigation_bar.follows_and_followers": "Follows and followers",
   "navigation_bar.info": "O ovoj instanci",
   "navigation_bar.keyboard_shortcuts": "Prečice na tastaturi",
   "navigation_bar.lists": "Liste",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "Personal",
   "navigation_bar.pins": "Prikačeni tutovi",
   "navigation_bar.preferences": "Podešavanja",
+  "navigation_bar.profile_directory": "Profile directory",
   "navigation_bar.public_timeline": "Federisana lajna",
   "navigation_bar.security": "Security",
   "notification.favourite": "{name} je stavio Vaš status kao omiljeni",
diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json
index 8c430f6b3..8ef18a774 100644
--- a/app/javascript/mastodon/locales/sr.json
+++ b/app/javascript/mastodon/locales/sr.json
@@ -166,7 +166,7 @@
   "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
   "introduction.federation.local.headline": "Local",
   "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
-  "introduction.interactions.action": "Finish tutorial!",
+  "introduction.interactions.action": "Finish toot-orial!",
   "introduction.interactions.favourite.headline": "Favourite",
   "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
   "introduction.interactions.reblog.headline": "Boost",
@@ -204,6 +204,7 @@
   "keyboard_shortcuts.search": "да се пребаците на претрагу",
   "keyboard_shortcuts.start": "да отворите колону \"почнимо\"",
   "keyboard_shortcuts.toggle_hidden": "да прикажете/сакријте текст иза CW-а",
+  "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
   "keyboard_shortcuts.toot": "да започнете скроз нову трубу",
   "keyboard_shortcuts.unfocus": "да одфокусирате/не будете више на претрази/прављењу нове трубе",
   "keyboard_shortcuts.up": "да се померите на горе у листи",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "Омиљене",
   "navigation_bar.filters": "Пригушене речи",
   "navigation_bar.follow_requests": "Захтеви за праћење",
+  "navigation_bar.follows_and_followers": "Follows and followers",
   "navigation_bar.info": "О овој инстанци",
   "navigation_bar.keyboard_shortcuts": "Пречице на тастатури",
   "navigation_bar.lists": "Листе",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "Personal",
   "navigation_bar.pins": "Прикачене трубе",
   "navigation_bar.preferences": "Подешавања",
+  "navigation_bar.profile_directory": "Profile directory",
   "navigation_bar.public_timeline": "Здружена временска линија",
   "navigation_bar.security": "Безбедност",
   "notification.favourite": "{name} је ставио/ла Ваш статус као омиљени",
diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json
index 52bf6e826..ab12be885 100644
--- a/app/javascript/mastodon/locales/sv.json
+++ b/app/javascript/mastodon/locales/sv.json
@@ -1,5 +1,5 @@
 {
-  "account.add_or_remove_from_list": "Add or Remove from lists",
+  "account.add_or_remove_from_list": "Lägg till eller ta bort från listor",
   "account.badges.bot": "Robot",
   "account.block": "Blockera @{name}",
   "account.block_domain": "Dölj allt från {domain}",
@@ -10,7 +10,7 @@
   "account.endorse": "Feature on profile",
   "account.follow": "Följ",
   "account.followers": "Följare",
-  "account.followers.empty": "No one follows this user yet.",
+  "account.followers.empty": "Ingen följer denna användaren än.",
   "account.follows": "Följer",
   "account.follows.empty": "This user doesn't follow anyone yet.",
   "account.follows_you": "Följer dig",
@@ -36,7 +36,7 @@
   "account.unmute": "Ta bort tystad @{name}",
   "account.unmute_notifications": "Återaktivera notifikationer från @{name}",
   "alert.unexpected.message": "Ett oväntat fel uppstod.",
-  "alert.unexpected.title": "Oops!",
+  "alert.unexpected.title": "Whups!",
   "boost_modal.combo": "Du kan trycka {combo} för att slippa denna nästa gång",
   "bundle_column_error.body": "Något gick fel när du laddade denna komponent.",
   "bundle_column_error.retry": "Försök igen",
@@ -151,7 +151,7 @@
   "hashtag.column_settings.select.placeholder": "Enter hashtags…",
   "hashtag.column_settings.tag_mode.all": "All of these",
   "hashtag.column_settings.tag_mode.any": "Any of these",
-  "hashtag.column_settings.tag_mode.none": "None of these",
+  "hashtag.column_settings.tag_mode.none": "Ingen av dessa",
   "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
   "home.column_settings.basic": "Grundläggande",
   "home.column_settings.show_reblogs": "Visa knuffar",
@@ -159,14 +159,14 @@
   "intervals.full.days": "{number, plural, one {# day} other {# days}}",
   "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
-  "introduction.federation.action": "Next",
+  "introduction.federation.action": "Nästa",
   "introduction.federation.federated.headline": "Federated",
   "introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.",
   "introduction.federation.home.headline": "Home",
   "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
   "introduction.federation.local.headline": "Local",
   "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
-  "introduction.interactions.action": "Finish tutorial!",
+  "introduction.interactions.action": "Finish toot-orial!",
   "introduction.interactions.favourite.headline": "Favourite",
   "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
   "introduction.interactions.reblog.headline": "Boost",
@@ -204,6 +204,7 @@
   "keyboard_shortcuts.search": "att fokusera sökfältet",
   "keyboard_shortcuts.start": "to open \"get started\" column",
   "keyboard_shortcuts.toggle_hidden": "att visa/gömma text bakom CW",
+  "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
   "keyboard_shortcuts.toot": "att börja en helt ny toot",
   "keyboard_shortcuts.unfocus": "att avfokusera komponera text fält / sökfält",
   "keyboard_shortcuts.up": "att flytta upp i listan",
@@ -215,7 +216,7 @@
   "lists.account.remove": "Ta bort från lista",
   "lists.delete": "Radera lista",
   "lists.edit": "Redigera lista",
-  "lists.edit.submit": "Change title",
+  "lists.edit.submit": "Ändra titel",
   "lists.new.create": "Lägg till lista",
   "lists.new.title_placeholder": "Ny listrubrik",
   "lists.search": "Sök bland personer du följer",
@@ -225,7 +226,7 @@
   "missing_indicator.label": "Hittades inte",
   "missing_indicator.sublabel": "Den här resursen kunde inte hittas",
   "mute_modal.hide_notifications": "Dölj notifikationer från denna användare?",
-  "navigation_bar.apps": "Mobile apps",
+  "navigation_bar.apps": "Mobilappar",
   "navigation_bar.blocks": "Blockerade användare",
   "navigation_bar.community_timeline": "Lokal tidslinje",
   "navigation_bar.compose": "Compose new toot",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "Favoriter",
   "navigation_bar.filters": "Muted words",
   "navigation_bar.follow_requests": "Följförfrågningar",
+  "navigation_bar.follows_and_followers": "Follows and followers",
   "navigation_bar.info": "Om denna instans",
   "navigation_bar.keyboard_shortcuts": "Tangentbordsgenvägar",
   "navigation_bar.lists": "Listor",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "Personal",
   "navigation_bar.pins": "Nålade inlägg (toots)",
   "navigation_bar.preferences": "Inställningar",
+  "navigation_bar.profile_directory": "Profile directory",
   "navigation_bar.public_timeline": "Förenad tidslinje",
   "navigation_bar.security": "Säkerhet",
   "notification.favourite": "{name} favoriserade din status",
@@ -267,15 +270,15 @@
   "notifications.column_settings.sound": "Spela upp ljud",
   "notifications.filter.all": "All",
   "notifications.filter.boosts": "Boosts",
-  "notifications.filter.favourites": "Favourites",
+  "notifications.filter.favourites": "Favoriter",
   "notifications.filter.follows": "Follows",
   "notifications.filter.mentions": "Mentions",
   "notifications.filter.polls": "Poll results",
   "notifications.group": "{count} aviseringar",
   "poll.closed": "Closed",
-  "poll.refresh": "Refresh",
+  "poll.refresh": "Ladda om",
   "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
-  "poll.vote": "Vote",
+  "poll.vote": "Rösta",
   "poll_button.add_poll": "Add a poll",
   "poll_button.remove_poll": "Remove poll",
   "privacy.change": "Justera sekretess",
@@ -333,7 +336,7 @@
   "status.open": "Utvidga denna status",
   "status.pin": "Fäst i profil",
   "status.pinned": "Fäst toot",
-  "status.read_more": "Read more",
+  "status.read_more": "Läs mer",
   "status.reblog": "Knuff",
   "status.reblog_private": "Knuffa till de ursprungliga åhörarna",
   "status.reblogged_by": "{name} knuffade",
@@ -348,7 +351,7 @@
   "status.show_less_all": "Visa mindre för alla",
   "status.show_more": "Visa mer",
   "status.show_more_all": "Visa mer för alla",
-  "status.show_thread": "Show thread",
+  "status.show_thread": "Visa tråd",
   "status.unmute_conversation": "Öppna konversation",
   "status.unpin": "Ångra fäst i profil",
   "suggestions.dismiss": "Dismiss suggestion",
diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json
index cc384e7ed..637ca884a 100644
--- a/app/javascript/mastodon/locales/ta.json
+++ b/app/javascript/mastodon/locales/ta.json
@@ -1,385 +1,388 @@
 {
-  "account.add_or_remove_from_list": "Add or Remove from lists",
-  "account.badges.bot": "Bot",
+  "account.add_or_remove_from_list": "பட்டியல்களில் இருந்து சேர் அல்லது நீக்குக",
+  "account.badges.bot": "பாட்",
   "account.block": "Block @{name}",
-  "account.block_domain": "Hide everything from {domain}",
-  "account.blocked": "Blocked",
-  "account.direct": "Direct message @{name}",
-  "account.domain_blocked": "Domain hidden",
-  "account.edit_profile": "Edit profile",
-  "account.endorse": "Feature on profile",
-  "account.follow": "Follow",
-  "account.followers": "Followers",
-  "account.followers.empty": "No one follows this user yet.",
-  "account.follows": "Follows",
-  "account.follows.empty": "This user doesn't follow anyone yet.",
-  "account.follows_you": "Follows you",
-  "account.hide_reblogs": "Hide boosts from @{name}",
-  "account.link_verified_on": "Ownership of this link was checked on {date}",
-  "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
+  "account.block_domain": "எல்லாவற்றையும் மறைக்க {domain}",
+  "account.blocked": "தடைமுட்டுகள்",
+  "account.direct": "நேரடி செய்தி @{name}",
+  "account.domain_blocked": "டொமைன் மறைக்கப்பட்டது",
+  "account.edit_profile": "சுயவிவரத்தைத் திருத்தவும்",
+  "account.endorse": "சுயவிவரத்தில் அம்சம்",
+  "account.follow": "பின்பற்று",
+  "account.followers": "பின்பற்றுபவர்கள்",
+  "account.followers.empty": "இதுவரை யாரும் இந்த பயனரைப் பின்தொடரவில்லை.",
+  "account.follows": "பின்பற்று",
+  "account.follows.empty": "இந்த பயனர் இதுவரை யாரையும் பின்தொடரவில்லை.",
+  "account.follows_you": "நீ பின் தொடர்கிறாய்",
+  "account.hide_reblogs": "இருந்து ஊக்கியாக மறை @{name}",
+  "account.link_verified_on": "இந்த இணைப்பை உரிமையாளர் சரிபார்க்கப்பட்டது {date}",
+  "account.locked_info": "இந்தக் கணக்கு தனியுரிமை நிலை பூட்டப்பட்டுள்ளது. அவர்களைப் பின்தொடர்பவர் யார் என்பதை உரிமையாளர் கைமுறையாக மதிப்பாய்வு செய்கிறார்.",
   "account.media": "Media",
-  "account.mention": "Mention @{name}",
-  "account.moved_to": "{name} has moved to:",
-  "account.mute": "Mute @{name}",
-  "account.mute_notifications": "Mute notifications from @{name}",
-  "account.muted": "Muted",
+  "account.mention": "குறிப்பிடு @{name}",
+  "account.moved_to": "{name} நகர்த்தப்பட்டது:",
+  "account.mute": "ஊமையான @{name}",
+  "account.mute_notifications": "அறிவிப்புகளை முடக்கு @{name}",
+  "account.muted": "முடக்கியது",
   "account.posts": "Toots",
-  "account.posts_with_replies": "Toots and replies",
+  "account.posts_with_replies": "Toots மற்றும் பதில்கள்",
   "account.report": "Report @{name}",
-  "account.requested": "Awaiting approval. Click to cancel follow request",
-  "account.share": "Share @{name}'s profile",
-  "account.show_reblogs": "Show boosts from @{name}",
-  "account.unblock": "Unblock @{name}",
-  "account.unblock_domain": "Unhide {domain}",
-  "account.unendorse": "Don't feature on profile",
-  "account.unfollow": "Unfollow",
-  "account.unmute": "Unmute @{name}",
-  "account.unmute_notifications": "Unmute notifications from @{name}",
-  "alert.unexpected.message": "An unexpected error occurred.",
-  "alert.unexpected.title": "Oops!",
-  "boost_modal.combo": "You can press {combo} to skip this next time",
-  "bundle_column_error.body": "Something went wrong while loading this component.",
-  "bundle_column_error.retry": "Try again",
+  "account.requested": "ஒப்புதலுக்காக காத்திருக்கிறது. கோரிக்கையை ரத்துசெய்ய கிளிக் செய்க",
+  "account.share": "பங்கிடு @{name}'s மனித முகத்தின்",
+  "account.show_reblogs": "காட்டு boosts இருந்து @{name}",
+  "account.unblock": "விடுவி @{name}",
+  "account.unblock_domain": "காண்பி {domain}",
+  "account.unendorse": "சுயவிவரத்தில் அம்சம் இல்லை",
+  "account.unfollow": "பின்தொடராட்",
+  "account.unmute": "தடுப்புநீக்கு @{name}",
+  "account.unmute_notifications": "அறிவிப்புகளை அகற்றவும் @{name}",
+  "alert.unexpected.message": "எதிர் பாராத பிழை ஏற்பட்டு விட்டது.",
+  "alert.unexpected.title": "அச்சச்சோ!",
+  "boost_modal.combo": "நீங்கள் அழுத்தவும் {combo} அடுத்த முறை தவிர்க்கவும்",
+  "bundle_column_error.body": "இந்த கூறுகளை ஏற்றும்போது ஏதோ தவறு ஏற்பட்டது.",
+  "bundle_column_error.retry": "மீண்டும் முயற்சி செய்",
   "bundle_column_error.title": "Network error",
-  "bundle_modal_error.close": "Close",
-  "bundle_modal_error.message": "Something went wrong while loading this component.",
-  "bundle_modal_error.retry": "Try again",
-  "column.blocks": "Blocked users",
-  "column.community": "Local timeline",
-  "column.direct": "Direct messages",
-  "column.domain_blocks": "Hidden domains",
-  "column.favourites": "Favourites",
-  "column.follow_requests": "Follow requests",
+  "bundle_modal_error.close": "நெருக்கமாக",
+  "bundle_modal_error.message": "இந்த கூறுகளை ஏற்றும்போது ஏதோ தவறு ஏற்பட்டது.",
+  "bundle_modal_error.retry": "மீண்டும் முயற்சி செய்",
+  "column.blocks": "தடுக்கப்பட்ட பயனர்கள்",
+  "column.community": "உள்ளூர் காலக்கெடு",
+  "column.direct": "நேரடி செய்திகள்",
+  "column.domain_blocks": "மறைந்த களங்கள்",
+  "column.favourites": "விருப்பத்துக்குகந்த",
+  "column.follow_requests": "கோரிக்கைகளை பின்பற்றவும்",
   "column.home": "Home",
-  "column.lists": "Lists",
-  "column.mutes": "Muted users",
+  "column.lists": "குதிரை வீர்ர்கள்",
+  "column.mutes": "முடக்கப்பட்ட பயனர்கள்",
   "column.notifications": "Notifications",
   "column.pins": "Pinned toot",
-  "column.public": "Federated timeline",
-  "column_back_button.label": "Back",
-  "column_header.hide_settings": "Hide settings",
-  "column_header.moveLeft_settings": "Move column to the left",
-  "column_header.moveRight_settings": "Move column to the right",
-  "column_header.pin": "Pin",
-  "column_header.show_settings": "Show settings",
-  "column_header.unpin": "Unpin",
-  "column_subheading.settings": "Settings",
-  "community.column_settings.media_only": "Media Only",
+  "column.public": "கூட்டாட்சி காலக்கெடு",
+  "column_back_button.label": "ஆதரி",
+  "column_header.hide_settings": "அமைப்புகளை மறை",
+  "column_header.moveLeft_settings": "நெடுவரிசையை இடதுபுறமாக நகர்த்தவும்",
+  "column_header.moveRight_settings": "நெடுவரிசை வலது புறமாக நகர்த்து",
+  "column_header.pin": "குண்டூசி",
+  "column_header.show_settings": "அமைப்புகளைக் காட்டு",
+  "column_header.unpin": "பொருத்தப்படாத",
+  "column_subheading.settings": "அமைப்புகள்",
+  "community.column_settings.media_only": "மீடியா மட்டுமே",
   "compose_form.direct_message_warning": "This toot will only be sent to all the mentioned users.",
-  "compose_form.direct_message_warning_learn_more": "Learn more",
-  "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.",
-  "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
-  "compose_form.lock_disclaimer.lock": "locked",
+  "compose_form.direct_message_warning_learn_more": "மேலும் அறிக",
+  "compose_form.hashtag_warning": "இந்த toot பட்டியலிடப்படாதது போல எந்த ஹேஸ்டேக்கின் கீழ் பட்டியலிடப்படாது. ஹேஸ்டேக் மூலம் பொது டோட்டல்கள் மட்டுமே தேட முடியும்.",
+  "compose_form.lock_disclaimer": "உங்கள் கணக்கு அல்ல {locked}. உங்களுடைய பின்தொடர்பவர் மட்டும் இடுகைகளை யாராவது காணலாம்.",
+  "compose_form.lock_disclaimer.lock": "தாழிடு",
   "compose_form.placeholder": "What is on your mind?",
-  "compose_form.poll.add_option": "Add a choice",
-  "compose_form.poll.duration": "Poll duration",
-  "compose_form.poll.option_placeholder": "Choice {number}",
-  "compose_form.poll.remove_option": "Remove this choice",
+  "compose_form.poll.add_option": "ஒரு விருப்பத்தைச் சேர்க்கவும்",
+  "compose_form.poll.duration": "வாக்கெடுப்பு காலம்",
+  "compose_form.poll.option_placeholder": "தேர்ந்தெடுப்ப {number}",
+  "compose_form.poll.remove_option": "இந்த விருப்பத்தை அகற்றவும்",
   "compose_form.publish": "Toot",
   "compose_form.publish_loud": "{publish}!",
   "compose_form.sensitive.hide": "Mark media as sensitive",
-  "compose_form.sensitive.marked": "Media is marked as sensitive",
-  "compose_form.sensitive.unmarked": "Media is not marked as sensitive",
-  "compose_form.spoiler.marked": "Text is hidden behind warning",
-  "compose_form.spoiler.unmarked": "Text is not hidden",
-  "compose_form.spoiler_placeholder": "Write your warning here",
-  "confirmation_modal.cancel": "Cancel",
+  "compose_form.sensitive.marked": "ஊடகம் உணர்திறன் என குறிக்கப்பட்டுள்ளது",
+  "compose_form.sensitive.unmarked": "ஊடகம் உணர்திறன் என குறிக்கப்படவில்லை",
+  "compose_form.spoiler.marked": "எச்சரிக்கை பின்னால் உரை மறைக்கப்பட்டுள்ளது",
+  "compose_form.spoiler.unmarked": "உரை மறைக்கப்படவில்லை",
+  "compose_form.spoiler_placeholder": "இங்கே உங்கள் எச்சரிக்கையை எழுதுங்கள்",
+  "confirmation_modal.cancel": "எதிராணை",
   "confirmations.block.block_and_report": "Block & Report",
   "confirmations.block.confirm": "Block",
-  "confirmations.block.message": "Are you sure you want to block {name}?",
+  "confirmations.block.message": "நீங்கள் நிச்சயமாக தடைசெய்ய விரும்புகிறீர்களா {name}?",
   "confirmations.delete.confirm": "Delete",
-  "confirmations.delete.message": "Are you sure you want to delete this status?",
+  "confirmations.delete.message": "இந்த நிலையை நிச்சயமாக நீக்க விரும்புகிறீர்களா?",
   "confirmations.delete_list.confirm": "Delete",
-  "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
-  "confirmations.domain_block.confirm": "Hide entire domain",
-  "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.",
-  "confirmations.mute.confirm": "Mute",
-  "confirmations.mute.message": "Are you sure you want to mute {name}?",
-  "confirmations.redraft.confirm": "Delete & redraft",
-  "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.",
-  "confirmations.reply.confirm": "Reply",
-  "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?",
-  "confirmations.unfollow.confirm": "Unfollow",
-  "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
-  "embed.instructions": "Embed this status on your website by copying the code below.",
-  "embed.preview": "Here is what it will look like:",
-  "emoji_button.activity": "Activity",
-  "emoji_button.custom": "Custom",
-  "emoji_button.flags": "Flags",
-  "emoji_button.food": "Food & Drink",
+  "confirmations.delete_list.message": "இந்த பட்டியலில் நிரந்தரமாக நீக்க விரும்புகிறீர்களா?",
+  "confirmations.domain_block.confirm": "முழு டொமைனை மறை",
+  "confirmations.domain_block.message": "நீங்கள் உண்மையில், நிச்சயமாக நீங்கள் முழு தடுக்க வேண்டும் நிச்சயமாக {domain}? பெரும்பாலான சந்தர்ப்பங்களில் ஒரு சில இலக்குகள் அல்லது மியூட்கள் போதுமானவை மற்றும் சிறந்தவை. எந்த பொது நேரத்திலும் அல்லது உங்கள் அறிவிப்புகளிலும் அந்தக் களத்திலிருந்து உள்ளடக்கத்தை நீங்கள் பார்க்க மாட்டீர்கள். அந்த களத்தில் இருந்து உங்கள் ஆதரவாளர்கள் அகற்றப்படுவார்கள்.",
+  "confirmations.mute.confirm": "ஊமையான",
+  "confirmations.mute.message": "நிச்சயமாக நீங்கள் முடக்க விரும்புகிறீர்களா {name}?",
+  "confirmations.redraft.confirm": "நீக்கு & redraft",
+  "confirmations.redraft.message": "நிச்சயமாக இந்த நிலையை நீக்கி, அதை மறுபடியும் உருவாக்க வேண்டுமா? பிடித்தவை மற்றும் ஊக்கங்கள் இழக்கப்படும், மற்றும் அசல் இடுகையில் பதில்கள் அனாதையான இருக்கும்.",
+  "confirmations.reply.confirm": "பதில்",
+  "confirmations.reply.message": "இப்போது பதில், தற்போது நீங்கள் உருவாக்கும் செய்தி மேலெழுதப்படும். நீங்கள் தொடர விரும்புகிறீர்களா?",
+  "confirmations.unfollow.confirm": "பின்தொடராட்",
+  "confirmations.unfollow.message": "நிச்சயமாக நீங்கள் பின்தொடர விரும்புகிறீர்களா {name}?",
+  "embed.instructions": "கீழே உள்ள குறியீட்டை நகலெடுப்பதன் மூலம் உங்கள் இணையதளத்தில் இந்த நிலையை உட்பொதிக்கவும்.",
+  "embed.preview": "இது போன்ற தோற்றத்தை இங்கு காணலாம்:",
+  "emoji_button.activity": "நடவடிக்கை",
+  "emoji_button.custom": "வழக்கம்",
+  "emoji_button.flags": "கொடி",
+  "emoji_button.food": "உணவு மற்றும் பானம்",
   "emoji_button.label": "Insert emoji",
-  "emoji_button.nature": "Nature",
-  "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
-  "emoji_button.objects": "Objects",
+  "emoji_button.nature": "இயற்கை",
+  "emoji_button.not_found": "எமோஜோஸ் இல்லை! (╯°□°)╯︵ ┻━┻",
+  "emoji_button.objects": "மறுப்ப கூறு",
   "emoji_button.people": "People",
-  "emoji_button.recent": "Frequently used",
-  "emoji_button.search": "Search...",
-  "emoji_button.search_results": "Search results",
+  "emoji_button.recent": "அடிக்கடி பயன்படுத்தப்படும்",
+  "emoji_button.search": "தேடல்...",
+  "emoji_button.search_results": "தேடல் முடிவுகள்",
   "emoji_button.symbols": "Symbols",
-  "emoji_button.travel": "Travel & Places",
-  "empty_column.account_timeline": "No toots here!",
-  "empty_column.account_unavailable": "Profile unavailable",
-  "empty_column.blocks": "You haven't blocked any users yet.",
-  "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
-  "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
-  "empty_column.domain_blocks": "There are no hidden domains yet.",
-  "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
-  "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.",
-  "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
-  "empty_column.hashtag": "There is nothing in this hashtag yet.",
-  "empty_column.home": "Your home timeline is empty! Visit {public} or use search to get started and meet other users.",
-  "empty_column.home.public_timeline": "the public timeline",
-  "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.",
-  "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
-  "empty_column.mutes": "You haven't muted any users yet.",
-  "empty_column.notifications": "You don't have any notifications yet. Interact with others to start the conversation.",
-  "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other instances to fill it up",
-  "follow_request.authorize": "Authorize",
-  "follow_request.reject": "Reject",
-  "getting_started.developers": "Developers",
-  "getting_started.directory": "Profile directory",
+  "emoji_button.travel": "சுற்றுலா மற்றும் இடங்கள்",
+  "empty_column.account_timeline": "இல்லை toots இங்கே!",
+  "empty_column.account_unavailable": "சுயவிவரம் கிடைக்கவில்லை",
+  "empty_column.blocks": "இதுவரை எந்த பயனர்களும் தடுக்கவில்லை.",
+  "empty_column.community": "உள்ளூர் காலக்கெடு காலியாக உள்ளது. பந்தை உருட்டிக்கொள்வதற்கு பகிரங்கமாக ஒன்றை எழுதுங்கள்!",
+  "empty_column.direct": "உங்களிடம் நேரடியான செய்திகள் எதுவும் இல்லை. நீங்கள் ஒன்றை அனுப்பி அல்லது பெறும் போது, அது இங்கே காண்பிக்கும்.",
+  "empty_column.domain_blocks": "இன்னும் மறைந்த களங்கள் இல்லை.",
+  "empty_column.favourited_statuses": "இதுவரை உங்களுக்கு பிடித்த டோட்டுகள் இல்லை. உங்களுக்கு பிடித்த ஒரு போது, அது இங்கே காண்பிக்கும்.",
+  "empty_column.favourites": "இதுவரை யாரும் இந்தத் தட்டுக்கு ஆதரவில்லை. யாராவது செய்தால், அவர்கள் இங்கே காண்பார்கள்.",
+  "empty_column.follow_requests": "உங்களுக்கு இன்னும் எந்தவொரு கோரிக்கைகளும் இல்லை. நீங்கள் ஒன்றைப் பெற்றுக்கொண்டால், அது இங்கே காண்பிக்கும்.",
+  "empty_column.hashtag": "இன்னும் இந்த ஹேஸ்டேக்கில் எதுவும் இல்லை.",
+  "empty_column.home": "உங்கள் வீட்டுக் காலம் காலியாக உள்ளது! வருகை {public} அல்லது தொடங்குவதற்கு தேடலைப் பயன்படுத்தலாம் மற்றும் பிற பயனர்களை சந்திக்கவும்.",
+  "empty_column.home.public_timeline": "பொது காலக்கெடு",
+  "empty_column.list": "இந்த பட்டியலில் இதுவரை எதுவும் இல்லை. இந்த பட்டியலின் உறுப்பினர்கள் புதிய நிலைகளை இடுகையிடுகையில், அவை இங்கே தோன்றும்.",
+  "empty_column.lists": "உங்களுக்கு இதுவரை எந்த பட்டியலும் இல்லை. நீங்கள் ஒன்றை உருவாக்கினால், அது இங்கே காண்பிக்கும்.",
+  "empty_column.mutes": "நீங்கள் இதுவரை எந்த பயனர்களையும் முடக்கியிருக்கவில்லை.",
+  "empty_column.notifications": "உங்களிடம் எந்த அறிவிப்புகளும் இல்லை. உரையாடலைத் தொடங்க பிறருடன் தொடர்புகொள்ளவும்.",
+  "empty_column.public": "இங்கே எதுவும் இல்லை! பகிரங்கமாக ஒன்றை எழுதவும் அல்லது மற்ற நிகழ்வுகளிலிருந்து பயனர்களை அதை நிரப்புவதற்கு கைமுறையாக பின்பற்றவும்",
+  "follow_request.authorize": "அதிகாரமளி",
+  "follow_request.reject": "விலக்கு",
+  "getting_started.developers": "உருவாக்குநர்கள்",
+  "getting_started.directory": "சுயவிவர அடைவு",
   "getting_started.documentation": "Documentation",
-  "getting_started.heading": "Getting started",
-  "getting_started.invite": "Invite people",
-  "getting_started.open_source_notice": "Mastodon is open source software. You can contribute or report issues on GitHub at {github}.",
-  "getting_started.security": "Security",
-  "getting_started.terms": "Terms of service",
-  "hashtag.column_header.tag_mode.all": "and {additional}",
-  "hashtag.column_header.tag_mode.any": "or {additional}",
-  "hashtag.column_header.tag_mode.none": "without {additional}",
-  "hashtag.column_settings.select.no_options_message": "No suggestions found",
-  "hashtag.column_settings.select.placeholder": "Enter hashtags…",
-  "hashtag.column_settings.tag_mode.all": "All of these",
-  "hashtag.column_settings.tag_mode.any": "Any of these",
-  "hashtag.column_settings.tag_mode.none": "None of these",
-  "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
-  "home.column_settings.basic": "Basic",
-  "home.column_settings.show_reblogs": "Show boosts",
-  "home.column_settings.show_replies": "Show replies",
-  "intervals.full.days": "{number, plural, one {# day} other {# days}}",
-  "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
-  "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
-  "introduction.federation.action": "Next",
+  "getting_started.heading": "தொடங்குதல்",
+  "getting_started.invite": "நபர்களை அழைக்கவும்",
+  "getting_started.open_source_notice": "Mastodon திறந்த மூல மென்பொருள். GitHub இல் நீங்கள் பங்களிக்கவோ அல்லது புகார் அளிக்கவோ முடியும் {github}.",
+  "getting_started.security": "பத்திரம்",
+  "getting_started.terms": "சேவை விதிமுறைகள்",
+  "hashtag.column_header.tag_mode.all": "மற்றும் {additional}",
+  "hashtag.column_header.tag_mode.any": "அல்லது {additional}",
+  "hashtag.column_header.tag_mode.none": "இல்லாமல் {additional}",
+  "hashtag.column_settings.select.no_options_message": "பரிந்துரைகள் எதுவும் இல்லை",
+  "hashtag.column_settings.select.placeholder": "ஹாஷ்டேகுகளை உள்ளிடவும் …",
+  "hashtag.column_settings.tag_mode.all": "இவை அனைத்தும்",
+  "hashtag.column_settings.tag_mode.any": "இவை எதையும்",
+  "hashtag.column_settings.tag_mode.none": "இவற்றில் ஏதுமில்லை",
+  "hashtag.column_settings.tag_toggle": "இந்த நெடுவரிசையில் கூடுதல் குறிச்சொற்களை சேர்க்கவும்",
+  "home.column_settings.basic": "அடிப்படையான",
+  "home.column_settings.show_reblogs": "காட்டு boosts",
+  "home.column_settings.show_replies": "பதில்களைக் காண்பி",
+  "intervals.full.days": "{number, plural, one {# day} மற்ற {# days}}",
+  "intervals.full.hours": "{number, plural, one {# hour} மற்ற {# hours}}",
+  "intervals.full.minutes": "{number, plural, one {# minute} மற்ற {# minutes}}",
+  "introduction.federation.action": "அடுத்த",
   "introduction.federation.federated.headline": "Federated",
-  "introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.",
+  "introduction.federation.federated.text": "கூட்டமைப்பின் பிற சேவையகங்களிலிருந்து பொது பதிவுகள் கூட்டப்பட்ட காலக்கெடுவில் தோன்றும்.",
   "introduction.federation.home.headline": "Home",
-  "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
+  "introduction.federation.home.text": "நீங்கள் பின்பற்றும் நபர்களின் இடுகைகள் உங்கள் வீட்டு ஊட்டத்தில் தோன்றும். நீங்கள் எந்த சர்வரில் யாரையும் பின்பற்ற முடியும்!",
   "introduction.federation.local.headline": "Local",
-  "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
-  "introduction.interactions.action": "Finish tutorial!",
-  "introduction.interactions.favourite.headline": "Favourite",
-  "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
-  "introduction.interactions.reblog.headline": "Boost",
-  "introduction.interactions.reblog.text": "You can share other people's toots with your followers by boosting them.",
-  "introduction.interactions.reply.headline": "Reply",
-  "introduction.interactions.reply.text": "You can reply to other people's and your own toots, which will chain them together in a conversation.",
-  "introduction.welcome.action": "Let's go!",
-  "introduction.welcome.headline": "First steps",
-  "introduction.welcome.text": "Welcome to the fediverse! In a few moments, you'll be able to broadcast messages and talk to your friends across a wide variety of servers. But this server, {domain}, is special—it hosts your profile, so remember its name.",
-  "keyboard_shortcuts.back": "to navigate back",
-  "keyboard_shortcuts.blocked": "to open blocked users list",
-  "keyboard_shortcuts.boost": "to boost",
-  "keyboard_shortcuts.column": "to focus a status in one of the columns",
-  "keyboard_shortcuts.compose": "to focus the compose textarea",
+  "introduction.federation.local.text": "உள்ளூர் சேவையகத்தில் தோன்றும் அதே சர்வரில் உள்ளவர்களின் பொது இடுகைகள்.",
+  "introduction.interactions.action": "பயிற்சி முடிக்க!",
+  "introduction.interactions.favourite.headline": "விருப்பத்துக்குகந்த",
+  "introduction.interactions.favourite.text": "நீங்கள் ஒரு காப்பாற்ற முடியும் toot பின்னர், மற்றும் ஆசிரியர் அதை நீங்கள் பிடித்திருக்கிறது என்று, அதை பிடித்திருக்கிறது என்று தெரியப்படுத்துங்கள்.",
+  "introduction.interactions.reblog.headline": "மதிப்பை உயர்த்து",
+  "introduction.interactions.reblog.text": "மற்றவர்களின் பகிர்ந்து கொள்ளலாம் toots உங்கள் ஆதரவாளர்களுடன் அவர்களை அதிகரிக்கும்.",
+  "introduction.interactions.reply.headline": "மறுமொழி கூறு",
+  "introduction.interactions.reply.text": "நீங்கள் மற்றவர்களுக்கும் உங்கள் சொந்த டோட்ட்களிற்கும் பதிலளிப்பீர்கள், இது ஒரு உரையாடலில் சங்கிலி ஒன்றாகச் சேரும்.",
+  "introduction.welcome.action": "போகலாம்!",
+  "introduction.welcome.headline": "முதல் படிகள்",
+  "introduction.welcome.text": "கூட்டாளிக்கு வருக! ஒரு சில நிமிடங்களில், பலவிதமான சேவையகங்களில் செய்திகளை உரையாட மற்றும் உங்கள் நண்பர்களிடம் பேச முடியும். ஆனால் இந்த சர்வர், {domain}, சிறப்பு - இது உங்கள் சுயவிவரத்தை வழங்குகிறது, எனவே அதன் பெயரை நினைவில் கொள்ளுங்கள்.",
+  "keyboard_shortcuts.back": "மீண்டும் செல்லவும்",
+  "keyboard_shortcuts.blocked": "தடுக்கப்பட்ட பயனர்களின் பட்டியலைத் திறக்க",
+  "keyboard_shortcuts.boost": "அதிகரிக்கும்",
+  "keyboard_shortcuts.column": "நெடுவரிசைகளில் ஒன்றில் நிலைக்கு கவனம் செலுத்த வேண்டும்",
+  "keyboard_shortcuts.compose": "தொகு உரைப்பகுதியை கவனத்தில் கொள்ளவும்",
   "keyboard_shortcuts.description": "Description",
-  "keyboard_shortcuts.direct": "to open direct messages column",
-  "keyboard_shortcuts.down": "to move down in the list",
+  "keyboard_shortcuts.direct": "நேரடி செய்திகள் பத்தி திறக்க",
+  "keyboard_shortcuts.down": "பட்டியலில் கீழே நகர்த்த",
   "keyboard_shortcuts.enter": "to open status",
-  "keyboard_shortcuts.favourite": "to favourite",
-  "keyboard_shortcuts.favourites": "to open favourites list",
-  "keyboard_shortcuts.federated": "to open federated timeline",
+  "keyboard_shortcuts.favourite": "பிடித்தது",
+  "keyboard_shortcuts.favourites": "பிடித்தவை பட்டியலை திறக்க",
+  "keyboard_shortcuts.federated": "ஒருங்கிணைந்த நேரத்தை திறக்க",
   "keyboard_shortcuts.heading": "Keyboard Shortcuts",
-  "keyboard_shortcuts.home": "to open home timeline",
-  "keyboard_shortcuts.hotkey": "Hotkey",
-  "keyboard_shortcuts.legend": "to display this legend",
-  "keyboard_shortcuts.local": "to open local timeline",
-  "keyboard_shortcuts.mention": "to mention author",
-  "keyboard_shortcuts.muted": "to open muted users list",
-  "keyboard_shortcuts.my_profile": "to open your profile",
-  "keyboard_shortcuts.notifications": "to open notifications column",
-  "keyboard_shortcuts.pinned": "to open pinned toots list",
-  "keyboard_shortcuts.profile": "to open author's profile",
-  "keyboard_shortcuts.reply": "to reply",
-  "keyboard_shortcuts.requests": "to open follow requests list",
-  "keyboard_shortcuts.search": "to focus search",
-  "keyboard_shortcuts.start": "to open \"get started\" column",
-  "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
-  "keyboard_shortcuts.toot": "to start a brand new toot",
-  "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
-  "keyboard_shortcuts.up": "to move up in the list",
-  "lightbox.close": "Close",
-  "lightbox.next": "Next",
-  "lightbox.previous": "Previous",
+  "keyboard_shortcuts.home": "வீட்டு நேரத்தை திறக்க",
+  "keyboard_shortcuts.hotkey": "ஹாட் கீ",
+  "keyboard_shortcuts.legend": "இந்த புராணத்தை காட்சிப்படுத்த",
+  "keyboard_shortcuts.local": "உள்ளூர் காலவரிசை திறக்க",
+  "keyboard_shortcuts.mention": "எழுத்தாளர் குறிப்பிட வேண்டும்",
+  "keyboard_shortcuts.muted": "முடக்கப்பட்ட பயனர்களின் பட்டியலைத் திறக்க",
+  "keyboard_shortcuts.my_profile": "உங்கள் சுயவிவரத்தை திறக்க",
+  "keyboard_shortcuts.notifications": "அறிவிப்பு நெடுவரிசையைத் திறக்க",
+  "keyboard_shortcuts.pinned": "திறக்க பொருத்தப்பட்டன toots பட்டியல்",
+  "keyboard_shortcuts.profile": "ஆசிரியரின் சுயவிவரத்தைத் திறக்க",
+  "keyboard_shortcuts.reply": "பதிலளிக்க",
+  "keyboard_shortcuts.requests": "கோரிக்கைகள் பட்டியலைத் திறக்க",
+  "keyboard_shortcuts.search": "தேடல் கவனம் செலுத்த",
+  "keyboard_shortcuts.start": "'தொடங்குவதற்கு' நெடுவரிசை திறக்க",
+  "keyboard_shortcuts.toggle_hidden": "CW க்கு பின்னால் உரையை மறைக்க / மறைக்க",
+  "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
+  "keyboard_shortcuts.toot": "தொடங்க ஒரு புதிய toot",
+  "keyboard_shortcuts.unfocus": "உரை பகுதியை / தேடலை கவனம் செலுத்த வேண்டும்",
+  "keyboard_shortcuts.up": "பட்டியலில் மேலே செல்ல",
+  "lightbox.close": "நெருக்கமாக",
+  "lightbox.next": "அடுத்த",
+  "lightbox.previous": "சென்ற",
   "lightbox.view_context": "View context",
-  "lists.account.add": "Add to list",
-  "lists.account.remove": "Remove from list",
+  "lists.account.add": "பட்டியலில் சேர்",
+  "lists.account.remove": "பட்டியலில் இருந்து அகற்று",
   "lists.delete": "Delete list",
-  "lists.edit": "Edit list",
-  "lists.edit.submit": "Change title",
-  "lists.new.create": "Add list",
-  "lists.new.title_placeholder": "New list title",
-  "lists.search": "Search among people you follow",
-  "lists.subheading": "Your lists",
-  "loading_indicator.label": "Loading...",
-  "media_gallery.toggle_visible": "Toggle visibility",
-  "missing_indicator.label": "Not found",
-  "missing_indicator.sublabel": "This resource could not be found",
-  "mute_modal.hide_notifications": "Hide notifications from this user?",
-  "navigation_bar.apps": "Mobile apps",
-  "navigation_bar.blocks": "Blocked users",
-  "navigation_bar.community_timeline": "Local timeline",
-  "navigation_bar.compose": "Compose new toot",
-  "navigation_bar.direct": "Direct messages",
-  "navigation_bar.discover": "Discover",
-  "navigation_bar.domain_blocks": "Hidden domains",
-  "navigation_bar.edit_profile": "Edit profile",
-  "navigation_bar.favourites": "Favourites",
-  "navigation_bar.filters": "Muted words",
-  "navigation_bar.follow_requests": "Follow requests",
-  "navigation_bar.info": "About this instance",
-  "navigation_bar.keyboard_shortcuts": "Hotkeys",
-  "navigation_bar.lists": "Lists",
-  "navigation_bar.logout": "Logout",
-  "navigation_bar.mutes": "Muted users",
+  "lists.edit": "பட்டியலை திருத்து",
+  "lists.edit.submit": "தலைப்பு மாற்றவும்",
+  "lists.new.create": "பட்டியலில் சேர்",
+  "lists.new.title_placeholder": "புதிய பட்டியல் தலைப்பு",
+  "lists.search": "நீங்கள் பின்தொடரும் நபர்கள் மத்தியில் தேடுதல்",
+  "lists.subheading": "உங்கள் பட்டியல்கள்",
+  "loading_indicator.label": "ஏற்றுதல்...",
+  "media_gallery.toggle_visible": "நிலைமாற்று தெரியும்",
+  "missing_indicator.label": "கிடைக்கவில்லை",
+  "missing_indicator.sublabel": "இந்த ஆதாரத்தை காண முடியவில்லை",
+  "mute_modal.hide_notifications": "இந்த பயனரின் அறிவிப்புகளை மறைக்கவா?",
+  "navigation_bar.apps": "மொபைல் பயன்பாடுகள்",
+  "navigation_bar.blocks": "தடுக்கப்பட்ட பயனர்கள்",
+  "navigation_bar.community_timeline": "உள்ளூர் காலக்கெடு",
+  "navigation_bar.compose": "புதியவற்றை எழுதுக toot",
+  "navigation_bar.direct": "நேரடி செய்திகள்",
+  "navigation_bar.discover": "கண்டு பிடி",
+  "navigation_bar.domain_blocks": "மறைந்த களங்கள்",
+  "navigation_bar.edit_profile": "சுயவிவரத்தைத் திருத்தவும்",
+  "navigation_bar.favourites": "விருப்பத்துக்குகந்த",
+  "navigation_bar.filters": "முடக்கப்பட்ட வார்த்தைகள்",
+  "navigation_bar.follow_requests": "கோரிக்கைகளை பின்பற்றவும்",
+  "navigation_bar.follows_and_followers": "Follows and followers",
+  "navigation_bar.info": "இந்த நிகழ்வு பற்றி",
+  "navigation_bar.keyboard_shortcuts": "சுருக்குவிசைகள்",
+  "navigation_bar.lists": "குதிரை வீர்ர்கள்",
+  "navigation_bar.logout": "விடு பதிகை",
+  "navigation_bar.mutes": "முடக்கப்பட்ட பயனர்கள்",
   "navigation_bar.personal": "Personal",
-  "navigation_bar.pins": "Pinned toots",
-  "navigation_bar.preferences": "Preferences",
-  "navigation_bar.public_timeline": "Federated timeline",
-  "navigation_bar.security": "Security",
-  "notification.favourite": "{name} favourited your status",
-  "notification.follow": "{name} followed you",
-  "notification.mention": "{name} mentioned you",
-  "notification.poll": "A poll you have voted in has ended",
-  "notification.reblog": "{name} boosted your status",
-  "notifications.clear": "Clear notifications",
-  "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
-  "notifications.column_settings.alert": "Desktop notifications",
-  "notifications.column_settings.favourite": "Favourites:",
-  "notifications.column_settings.filter_bar.advanced": "Display all categories",
-  "notifications.column_settings.filter_bar.category": "Quick filter bar",
-  "notifications.column_settings.filter_bar.show": "Show",
-  "notifications.column_settings.follow": "New followers:",
-  "notifications.column_settings.mention": "Mentions:",
-  "notifications.column_settings.poll": "Poll results:",
+  "navigation_bar.pins": "பொருத்தப்பட்டன toots",
+  "navigation_bar.preferences": "விருப்பங்கள்",
+  "navigation_bar.profile_directory": "Profile directory",
+  "navigation_bar.public_timeline": "கூட்டாட்சி காலக்கெடு",
+  "navigation_bar.security": "பத்திரம்",
+  "notification.favourite": "{name} ஆர்வம் கொண்டவர், உங்கள் நிலை",
+  "notification.follow": "{name} நீங்கள் தொடர்ந்து வந்தீர்கள்",
+  "notification.mention": "{name} நீங்கள் குறிப்பிட்டுள்ளீர்கள்",
+  "notification.poll": "நீங்கள் வாக்களித்த வாக்கெடுப்பு முடிவடைந்தது",
+  "notification.reblog": "{name} உங்கள் நிலை அதிகரித்தது",
+  "notifications.clear": "அறிவிப்புகளை அழிக்கவும்",
+  "notifications.clear_confirmation": "உங்கள் எல்லா அறிவிப்புகளையும் நிரந்தரமாக அழிக்க விரும்புகிறீர்களா?",
+  "notifications.column_settings.alert": "டெஸ்க்டாப் அறிவிப்புகள்",
+  "notifications.column_settings.favourite": "பிடித்தவை:",
+  "notifications.column_settings.filter_bar.advanced": "எல்லா வகைகளையும் காட்டு",
+  "notifications.column_settings.filter_bar.category": "விரைவு வடிகட்டி பட்டை",
+  "notifications.column_settings.filter_bar.show": "காட்டு",
+  "notifications.column_settings.follow": "புதிய பின்பற்றுபவர்கள்:",
+  "notifications.column_settings.mention": "குறிப்பிடுகிறது:",
+  "notifications.column_settings.poll": "கருத்துக்கணிப்பு முடிவுகள்:",
   "notifications.column_settings.push": "Push notifications",
-  "notifications.column_settings.reblog": "Boosts:",
-  "notifications.column_settings.show": "Show in column",
-  "notifications.column_settings.sound": "Play sound",
-  "notifications.filter.all": "All",
-  "notifications.filter.boosts": "Boosts",
-  "notifications.filter.favourites": "Favourites",
-  "notifications.filter.follows": "Follows",
-  "notifications.filter.mentions": "Mentions",
-  "notifications.filter.polls": "Poll results",
+  "notifications.column_settings.reblog": "மதிப்பை உயர்த்து:",
+  "notifications.column_settings.show": "பத்தியில் காண்பி",
+  "notifications.column_settings.sound": "ஒலி விளையாட",
+  "notifications.filter.all": "எல்லா",
+  "notifications.filter.boosts": "மதிப்பை உயர்த்து",
+  "notifications.filter.favourites": "விருப்பத்துக்குகந்த",
+  "notifications.filter.follows": "பின்பற்று",
+  "notifications.filter.mentions": "குறிப்பிடுகிறார்",
+  "notifications.filter.polls": "கருத்துக்கணிப்பு முடிவுகள்",
   "notifications.group": "{count} notifications",
-  "poll.closed": "Closed",
-  "poll.refresh": "Refresh",
-  "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
-  "poll.vote": "Vote",
-  "poll_button.add_poll": "Add a poll",
-  "poll_button.remove_poll": "Remove poll",
-  "privacy.change": "Adjust status privacy",
-  "privacy.direct.long": "Post to mentioned users only",
-  "privacy.direct.short": "Direct",
-  "privacy.private.long": "Post to followers only",
-  "privacy.private.short": "Followers-only",
-  "privacy.public.long": "Post to public timelines",
+  "poll.closed": "மூடிய",
+  "poll.refresh": "பத்துயிர்ப்ப?ட்டு",
+  "poll.total_votes": "{count, plural, one {# vote} மற்ற {# votes}}",
+  "poll.vote": "வாக்களி",
+  "poll_button.add_poll": "வாக்கெடுப்பைச் சேர்க்கவும்",
+  "poll_button.remove_poll": "வாக்கெடுப்பை அகற்று",
+  "privacy.change": "நிலை தனியுரிமை",
+  "privacy.direct.long": "குறிப்பிடப்பட்ட பயனர்களுக்கு மட்டுமே இடுகையிடவும்",
+  "privacy.direct.short": "நடத்து",
+  "privacy.private.long": "பின்தொடர்பவர்களுக்கு மட்டுமே இடுகை",
+  "privacy.private.short": "பின்பற்றுபவர்கள் மட்டும்",
+  "privacy.public.long": "பொது நேரங்களுக்கான இடுகை",
   "privacy.public.short": "Public",
   "privacy.unlisted.long": "Do not show in public timelines",
-  "privacy.unlisted.short": "Unlisted",
-  "regeneration_indicator.label": "Loading…",
-  "regeneration_indicator.sublabel": "Your home feed is being prepared!",
+  "privacy.unlisted.short": "பட்டியலிடப்படாத",
+  "regeneration_indicator.label": "சுமையேற்றம்…",
+  "regeneration_indicator.sublabel": "உங்கள் வீட்டு ஊட்டம் தயார் செய்யப்படுகிறது!",
   "relative_time.days": "{number}d",
   "relative_time.hours": "{number}h",
-  "relative_time.just_now": "now",
+  "relative_time.just_now": "இப்பொழுது",
   "relative_time.minutes": "{number}m",
   "relative_time.seconds": "{number}s",
-  "reply_indicator.cancel": "Cancel",
-  "report.forward": "Forward to {target}",
-  "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
-  "report.hint": "The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:",
-  "report.placeholder": "Additional comments",
+  "reply_indicator.cancel": "எதிராணை",
+  "report.forward": "முன்னோக்கி {target}",
+  "report.forward_hint": "கணக்கு மற்றொரு சேவையகத்திலிருந்து வருகிறது. அறிக்கையின் அநாமதேய பிரதி ஒன்றை அனுப்பவும்.?",
+  "report.hint": "அறிக்கை உங்கள் மாதிரியாக மாற்றியமைக்கப்படும். கீழே உள்ள கணக்கை நீங்கள் ஏன் புகாரளிக்கிறீர்கள் என்பதற்கான விளக்கத்தை வழங்கலாம்:",
+  "report.placeholder": "கூடுதல் கருத்துரைகள்",
   "report.submit": "Submit",
   "report.target": "Report {target}",
-  "search.placeholder": "Search",
-  "search_popout.search_format": "Advanced search format",
-  "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
-  "search_popout.tips.hashtag": "hashtag",
+  "search.placeholder": "தேடு",
+  "search_popout.search_format": "மேம்பட்ட தேடல் வடிவம்",
+  "search_popout.tips.full_text": "எளிமையான உரை நீங்கள் எழுதப்பட்ட, புகழ், அதிகரித்தது, அல்லது குறிப்பிட்டுள்ள, அதே போல் பயனர் பெயர்கள், காட்சி பெயர்கள், மற்றும் ஹேஸ்டேகைகளை கொண்டுள்ளது என்று நிலைகளை கொடுக்கிறது.",
+  "search_popout.tips.hashtag": "ஹேஸ்டேக்",
   "search_popout.tips.status": "status",
-  "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
+  "search_popout.tips.text": "எளிய உரை காட்சி பெயர்கள், பயனர்பெயர்கள் மற்றும் ஹாஷ்டேட்களுடன் பொருந்துகிறது",
   "search_popout.tips.user": "user",
   "search_results.accounts": "People",
-  "search_results.hashtags": "Hashtags",
+  "search_results.hashtags": "ஹாஷ்டேக்குகளைச்",
   "search_results.statuses": "Toots",
-  "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
-  "status.admin_account": "Open moderation interface for @{name}",
-  "status.admin_status": "Open this status in the moderation interface",
+  "search_results.total": "{count, number} {count, plural, one {result} மற்ற {results}}",
+  "status.admin_account": "மிதமான இடைமுகத்தை திறக்க @{name}",
+  "status.admin_status": "மிதமான இடைமுகத்தில் இந்த நிலையை திறக்கவும்",
   "status.block": "Block @{name}",
-  "status.cancel_reblog_private": "Unboost",
-  "status.cannot_reblog": "This post cannot be boosted",
-  "status.copy": "Copy link to status",
+  "status.cancel_reblog_private": "இல்லை பூஸ்ட்",
+  "status.cannot_reblog": "இந்த இடுகை அதிகரிக்க முடியாது",
+  "status.copy": "நிலைக்கு இணைப்பை நகலெடு",
   "status.delete": "Delete",
-  "status.detailed_status": "Detailed conversation view",
-  "status.direct": "Direct message @{name}",
-  "status.embed": "Embed",
-  "status.favourite": "Favourite",
-  "status.filtered": "Filtered",
-  "status.load_more": "Load more",
-  "status.media_hidden": "Media hidden",
-  "status.mention": "Mention @{name}",
-  "status.more": "More",
-  "status.mute": "Mute @{name}",
-  "status.mute_conversation": "Mute conversation",
-  "status.open": "Expand this status",
-  "status.pin": "Pin on profile",
-  "status.pinned": "Pinned toot",
-  "status.read_more": "Read more",
-  "status.reblog": "Boost",
-  "status.reblog_private": "Boost to original audience",
-  "status.reblogged_by": "{name} boosted",
-  "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
-  "status.redraft": "Delete & re-draft",
-  "status.reply": "Reply",
-  "status.replyAll": "Reply to thread",
+  "status.detailed_status": "விரிவான உரையாடல் காட்சி",
+  "status.direct": "நேரடி செய்தி @{name}",
+  "status.embed": "கிடத்து",
+  "status.favourite": "விருப்பத்துக்குகந்த",
+  "status.filtered": "வடிகட்டு",
+  "status.load_more": "அதிகமாய் ஏற்று",
+  "status.media_hidden": "மீடியா மறைக்கப்பட்டது",
+  "status.mention": "குறிப்பிடு @{name}",
+  "status.more": "அதிக",
+  "status.mute": "ஊமையான @{name}",
+  "status.mute_conversation": "ஒலிதடு உரையாடல்",
+  "status.open": "இந்த நிலையை விரிவாக்கு",
+  "status.pin": "சுயவிவரத்தில் முள்",
+  "status.pinned": "பொருத்தப்பட்டன toot",
+  "status.read_more": "மேலும் வாசிக்க",
+  "status.reblog": "மதிப்பை உயர்த்து",
+  "status.reblog_private": "Boost அசல் பார்வையாளர்களுக்கு",
+  "status.reblogged_by": "{name} மதிப்பை உயர்த்து",
+  "status.reblogs.empty": "இதுவரை யாரும் இந்த மோதலை அதிகரிக்கவில்லை. யாராவது செய்தால், அவர்கள் இங்கே காண்பார்கள்.",
+  "status.redraft": "நீக்கு மற்றும் மீண்டும் வரைவு",
+  "status.reply": "பதில்",
+  "status.replyAll": "நூலுக்கு பதிலளிக்கவும்",
   "status.report": "Report @{name}",
-  "status.sensitive_warning": "Sensitive content",
-  "status.share": "Share",
-  "status.show_less": "Show less",
-  "status.show_less_all": "Show less for all",
-  "status.show_more": "Show more",
-  "status.show_more_all": "Show more for all",
-  "status.show_thread": "Show thread",
-  "status.unmute_conversation": "Unmute conversation",
-  "status.unpin": "Unpin from profile",
-  "suggestions.dismiss": "Dismiss suggestion",
-  "suggestions.header": "You might be interested in…",
+  "status.sensitive_warning": "உணர்திறன் உள்ளடக்கம்",
+  "status.share": "பங்கிடு",
+  "status.show_less": "குறைவாகக் காண்பி",
+  "status.show_less_all": "அனைத்தையும் குறைவாக காட்டு",
+  "status.show_more": "மேலும் காட்ட",
+  "status.show_more_all": "அனைவருக்கும் மேலும் காட்டு",
+  "status.show_thread": "நூல் காட்டு",
+  "status.unmute_conversation": "ஊமையாக உரையாடல் இல்லை",
+  "status.unpin": "சுயவிவரத்திலிருந்து நீக்கவும்",
+  "suggestions.dismiss": "பரிந்துரை விலக்க",
+  "suggestions.header": "நீங்கள் ஆர்வமாக இருக்கலாம் …",
   "tabs_bar.federated_timeline": "Federated",
   "tabs_bar.home": "Home",
   "tabs_bar.local_timeline": "Local",
   "tabs_bar.notifications": "Notifications",
-  "tabs_bar.search": "Search",
-  "time_remaining.days": "{number, plural, one {# day} other {# days}} left",
-  "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
-  "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
-  "time_remaining.moments": "Moments remaining",
-  "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
-  "trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
-  "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
-  "upload_area.title": "Drag & drop to upload",
-  "upload_button.label": "Add media (JPEG, PNG, GIF, WebM, MP4, MOV)",
-  "upload_error.limit": "File upload limit exceeded.",
-  "upload_error.poll": "File upload not allowed with polls.",
-  "upload_form.description": "Describe for the visually impaired",
-  "upload_form.focus": "Crop",
+  "tabs_bar.search": "தேடு",
+  "time_remaining.days": "{number, plural, one {# day} மற்ற {# days}} left",
+  "time_remaining.hours": "{number, plural, one {# hour} மற்ற {# hours}} left",
+  "time_remaining.minutes": "{number, plural, one {# minute} மற்ற {# minutes}} left",
+  "time_remaining.moments": "தருணங்கள் மீதமுள்ளன",
+  "time_remaining.seconds": "{number, plural, one {# second} மற்ற {# seconds}} left",
+  "trends.count_by_accounts": "{count} {rawCount, plural, one {person} மற்ற {people}} உரையாடு",
+  "ui.beforeunload": "நீங்கள் வெளியே சென்றால் உங்கள் வரைவு இழக்கப்படும் மஸ்தோடோன்.",
+  "upload_area.title": "பதிவேற்ற & இழுக்கவும்",
+  "upload_button.label": "மீடியாவைச் சேர்க்கவும் (JPEG, PNG, GIF, WebM, MP4, MOV)",
+  "upload_error.limit": "கோப்பு பதிவேற்ற வரம்பு மீறப்பட்டது.",
+  "upload_error.poll": "கோப்பு பதிவேற்றம் அனுமதிக்கப்படவில்லை.",
+  "upload_form.description": "பார்வையற்ற விவரிக்கவும்",
+  "upload_form.focus": "மாற்றம் முன்னோட்டம்",
   "upload_form.undo": "Delete",
-  "upload_progress.label": "Uploading...",
-  "video.close": "Close video",
-  "video.exit_fullscreen": "Exit full screen",
-  "video.expand": "Expand video",
+  "upload_progress.label": "ஏற்றுகிறது ...",
+  "video.close": "வீடியோவை மூடு",
+  "video.exit_fullscreen": "முழு திரையில் இருந்து வெளியேறவும்",
+  "video.expand": "வீடியோவை விரிவாக்கு",
   "video.fullscreen": "Full screen",
-  "video.hide": "Hide video",
-  "video.mute": "Mute sound",
+  "video.hide": "வீடியோவை மறை",
+  "video.mute": "ஒலி முடக்கவும்",
   "video.pause": "Pause",
-  "video.play": "Play",
-  "video.unmute": "Unmute sound"
+  "video.play": "விளையாடு",
+  "video.unmute": "ஒலி மெளனமாக இல்லை"
 }
diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json
index 39c697b0b..269ea45c3 100644
--- a/app/javascript/mastodon/locales/te.json
+++ b/app/javascript/mastodon/locales/te.json
@@ -204,6 +204,7 @@
   "keyboard_shortcuts.search": "శోధనపై దృష్టి పెట్టండి",
   "keyboard_shortcuts.start": "\"ఇక్కడ ప్రారంభించండి\" నిలువు వరుసను తెరవడానికి",
   "keyboard_shortcuts.toggle_hidden": "CW వెనుక ఉన్న పాఠ్యాన్ని చూపడానికి / దాచడానికి",
+  "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
   "keyboard_shortcuts.toot": "ఒక సరికొత్త టూట్ను ప్రారంభించడానికి",
   "keyboard_shortcuts.unfocus": "పాఠ్యం వ్రాసే ఏరియా/శోధన పట్టిక నుండి బయటకు రావడానికి",
   "keyboard_shortcuts.up": "జాబితాలో పైకి తరలించడానికి",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "ఇష్టపడినవి",
   "navigation_bar.filters": "మ్యూట్ చేయబడిన పదాలు",
   "navigation_bar.follow_requests": "అనుసరించడానికి అభ్యర్ధనలు",
+  "navigation_bar.follows_and_followers": "Follows and followers",
   "navigation_bar.info": "ఈ సేవిక గురించి",
   "navigation_bar.keyboard_shortcuts": "హాట్ కీలు",
   "navigation_bar.lists": "జాబితాలు",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "వ్యక్తిగతం",
   "navigation_bar.pins": "అతికించిన టూట్లు",
   "navigation_bar.preferences": "ప్రాధాన్యతలు",
+  "navigation_bar.profile_directory": "Profile directory",
   "navigation_bar.public_timeline": "సమాఖ్య కాలక్రమం",
   "navigation_bar.security": "భద్రత",
   "notification.favourite": "{name} మీ స్టేటస్ ను ఇష్టపడ్డారు",
diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json
index 86997b70f..bd042c1d1 100644
--- a/app/javascript/mastodon/locales/th.json
+++ b/app/javascript/mastodon/locales/th.json
@@ -16,7 +16,7 @@
   "account.follows_you": "ติดตามคุณ",
   "account.hide_reblogs": "ซ่อนการดันจาก @{name}",
   "account.link_verified_on": "ตรวจสอบความเป็นเจ้าของของลิงก์นี้เมื่อ {date}",
-  "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
+  "account.locked_info": "บัญชีนี้ถูกล็อคไว้ เจ้าของจะต้องรับรองการติดตามของคุณด้วย",
   "account.media": "สื่อ",
   "account.mention": "กล่าวถึง @{name}",
   "account.moved_to": "{name} ได้ย้ายไปยัง:",
@@ -37,7 +37,7 @@
   "account.unmute_notifications": "เลิกปิดเสียงการแจ้งเตือนจาก @{name}",
   "alert.unexpected.message": "เกิดข้อผิดพลาดที่ไม่คาดคิด",
   "alert.unexpected.title": "อุปส์!",
-  "boost_modal.combo": "You can press {combo} to skip this next time",
+  "boost_modal.combo": "กด {combo} เพื่อข้าม",
   "bundle_column_error.body": "มีบางอย่างผิดพลาดขณะโหลดส่วนประกอบนี้",
   "bundle_column_error.retry": "ลองอีกครั้ง",
   "bundle_column_error.title": "ข้อผิดพลาดเครือข่าย",
@@ -166,7 +166,7 @@
   "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
   "introduction.federation.local.headline": "Local",
   "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
-  "introduction.interactions.action": "Finish tutorial!",
+  "introduction.interactions.action": "Finish toot-orial!",
   "introduction.interactions.favourite.headline": "Favourite",
   "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
   "introduction.interactions.reblog.headline": "Boost",
@@ -204,6 +204,7 @@
   "keyboard_shortcuts.search": "to focus search",
   "keyboard_shortcuts.start": "to open \"get started\" column",
   "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
+  "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
   "keyboard_shortcuts.toot": "to start a brand new toot",
   "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
   "keyboard_shortcuts.up": "to move up in the list",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "รายการโปรด",
   "navigation_bar.filters": "คำที่ปิดเสียงอยู่",
   "navigation_bar.follow_requests": "คำขอติดตาม",
+  "navigation_bar.follows_and_followers": "Follows and followers",
   "navigation_bar.info": "เกี่ยวกับเซิร์ฟเวอร์นี้",
   "navigation_bar.keyboard_shortcuts": "ปุ่มลัด",
   "navigation_bar.lists": "รายการ",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "ส่วนบุคคล",
   "navigation_bar.pins": "โพสต์ที่ปักหมุด",
   "navigation_bar.preferences": "การกำหนดลักษณะ",
+  "navigation_bar.profile_directory": "Profile directory",
   "navigation_bar.public_timeline": "เส้นเวลาที่ติดต่อกับภายนอก",
   "navigation_bar.security": "ความปลอดภัย",
   "notification.favourite": "{name} ได้ชื่นชอบสถานะของคุณ",
diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json
index c3a0791b5..ec4657b9b 100644
--- a/app/javascript/mastodon/locales/tr.json
+++ b/app/javascript/mastodon/locales/tr.json
@@ -204,6 +204,7 @@
   "keyboard_shortcuts.search": "aramaya odaklanmak için",
   "keyboard_shortcuts.start": "\"başlayın\" sütununu açmak için",
   "keyboard_shortcuts.toggle_hidden": "CW'den önceki yazıyı göstermek/gizlemek için",
+  "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
   "keyboard_shortcuts.toot": "yeni bir gönderiye başlamak için",
   "keyboard_shortcuts.unfocus": "aramada bir gönderiye odaklanmamak için",
   "keyboard_shortcuts.up": "listede yukarıya çıkmak için",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "Favoriler",
   "navigation_bar.filters": "Susturulmuş kelimeler",
   "navigation_bar.follow_requests": "Takip istekleri",
+  "navigation_bar.follows_and_followers": "Follows and followers",
   "navigation_bar.info": "Genişletilmiş bilgi",
   "navigation_bar.keyboard_shortcuts": "Klavye kısayolları",
   "navigation_bar.lists": "Listeler",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "Kişisel",
   "navigation_bar.pins": "Sabitlenmiş gönderiler",
   "navigation_bar.preferences": "Tercihler",
+  "navigation_bar.profile_directory": "Profile directory",
   "navigation_bar.public_timeline": "Federe zaman tüneli",
   "navigation_bar.security": "Güvenlik",
   "notification.favourite": "{name} senin durumunu favorilere ekledi",
diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json
index d02b652ff..124b9fb07 100644
--- a/app/javascript/mastodon/locales/uk.json
+++ b/app/javascript/mastodon/locales/uk.json
@@ -166,7 +166,7 @@
   "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
   "introduction.federation.local.headline": "Local",
   "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
-  "introduction.interactions.action": "Finish tutorial!",
+  "introduction.interactions.action": "Finish toot-orial!",
   "introduction.interactions.favourite.headline": "Favourite",
   "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
   "introduction.interactions.reblog.headline": "Boost",
@@ -204,6 +204,7 @@
   "keyboard_shortcuts.search": "сфокусуватися на пошуку",
   "keyboard_shortcuts.start": "to open \"get started\" column",
   "keyboard_shortcuts.toggle_hidden": "показати/приховати прихований текст",
+  "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
   "keyboard_shortcuts.toot": "почати писати новий дмух",
   "keyboard_shortcuts.unfocus": "розфокусуватися з нового допису чи пошуку",
   "keyboard_shortcuts.up": "рухатися вверх списком",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "Вподобане",
   "navigation_bar.filters": "Приховані слова",
   "navigation_bar.follow_requests": "Запити на підписку",
+  "navigation_bar.follows_and_followers": "Follows and followers",
   "navigation_bar.info": "Про сайт",
   "navigation_bar.keyboard_shortcuts": "Гарячі клавіши",
   "navigation_bar.lists": "Списки",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "Особисте",
   "navigation_bar.pins": "Закріплені дмухи",
   "navigation_bar.preferences": "Налаштування",
+  "navigation_bar.profile_directory": "Profile directory",
   "navigation_bar.public_timeline": "Глобальна стрічка",
   "navigation_bar.security": "Безпека",
   "notification.favourite": "{name} вподобав(-ла) ваш допис",
diff --git a/app/javascript/mastodon/locales/whitelist_de.json b/app/javascript/mastodon/locales/whitelist_de.json
index 0d4f101c7..6c9617e60 100644
--- a/app/javascript/mastodon/locales/whitelist_de.json
+++ b/app/javascript/mastodon/locales/whitelist_de.json
@@ -1,2 +1,9 @@
 [
+  "relative_time.seconds",
+  "relative_time.minutes",
+  "relative_time.hours",
+  "relative_time.days",
+  "account.badges.bot",
+  "compose_form.publish_loud",
+  "search_results.hashtags"
 ]
diff --git a/app/javascript/mastodon/locales/whitelist_lt.json b/app/javascript/mastodon/locales/whitelist_lt.json
new file mode 100644
index 000000000..0d4f101c7
--- /dev/null
+++ b/app/javascript/mastodon/locales/whitelist_lt.json
@@ -0,0 +1,2 @@
+[
+]
diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json
index 960d4bb95..785419eae 100644
--- a/app/javascript/mastodon/locales/zh-CN.json
+++ b/app/javascript/mastodon/locales/zh-CN.json
@@ -1,5 +1,5 @@
 {
-  "account.add_or_remove_from_list": "Add or Remove from lists",
+  "account.add_or_remove_from_list": "从列表中添加或删除",
   "account.badges.bot": "机器人",
   "account.block": "屏蔽 @{name}",
   "account.block_domain": "隐藏来自 {domain} 的内容",
@@ -7,16 +7,16 @@
   "account.direct": "发送私信给 @{name}",
   "account.domain_blocked": "网站已屏蔽",
   "account.edit_profile": "修改个人资料",
-  "account.endorse": "Feature on profile",
+  "account.endorse": "在个人资料中推荐此用户",
   "account.follow": "关注",
   "account.followers": "关注者",
-  "account.followers.empty": "No one follows this user yet.",
+  "account.followers.empty": "目前无人关注此用户。",
   "account.follows": "正在关注",
-  "account.follows.empty": "This user doesn't follow anyone yet.",
+  "account.follows.empty": "此用户目前没有关注任何人。",
   "account.follows_you": "关注了你",
   "account.hide_reblogs": "隐藏来自 @{name} 的转嘟",
-  "account.link_verified_on": "Ownership of this link was checked on {date}",
-  "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
+  "account.link_verified_on": "此链接的所有权已在 {date} 检查",
+  "account.locked_info": "此账户已锁嘟。账户的主人会手动审核关注者。",
   "account.media": "媒体",
   "account.mention": "提及 @{name}",
   "account.moved_to": "{name} 已经迁移到:",
@@ -31,7 +31,7 @@
   "account.show_reblogs": "显示来自 @{name} 的转嘟",
   "account.unblock": "不再屏蔽 @{name}",
   "account.unblock_domain": "不再隐藏来自 {domain} 的内容",
-  "account.unendorse": "Don't feature on profile",
+  "account.unendorse": "不在个人资料中推荐此用户",
   "account.unfollow": "取消关注",
   "account.unmute": "不再隐藏 @{name}",
   "account.unmute_notifications": "不再隐藏来自 @{name} 的通知",
@@ -71,20 +71,20 @@
   "compose_form.lock_disclaimer": "你的帐户没有{locked}。任何人都可以在关注你后立即查看仅关注者可见的嘟文。",
   "compose_form.lock_disclaimer.lock": "开启保护",
   "compose_form.placeholder": "在想啥?",
-  "compose_form.poll.add_option": "Add a choice",
-  "compose_form.poll.duration": "Poll duration",
-  "compose_form.poll.option_placeholder": "Choice {number}",
-  "compose_form.poll.remove_option": "Remove this choice",
+  "compose_form.poll.add_option": "添加一个选项",
+  "compose_form.poll.duration": "投票持续时间",
+  "compose_form.poll.option_placeholder": "选项 {number}",
+  "compose_form.poll.remove_option": "移除这个选项",
   "compose_form.publish": "嘟嘟",
   "compose_form.publish_loud": "{publish}!",
-  "compose_form.sensitive.hide": "Mark media as sensitive",
+  "compose_form.sensitive.hide": "标记媒体为敏感内容",
   "compose_form.sensitive.marked": "媒体已被标记为敏感内容",
   "compose_form.sensitive.unmarked": "媒体未被标记为敏感内容",
   "compose_form.spoiler.marked": "正文已被折叠在警告信息之后",
   "compose_form.spoiler.unmarked": "正文未被折叠",
   "compose_form.spoiler_placeholder": "折叠部分的警告消息",
   "confirmation_modal.cancel": "取消",
-  "confirmations.block.block_and_report": "Block & Report",
+  "confirmations.block.block_and_report": "屏蔽与举报",
   "confirmations.block.confirm": "屏蔽",
   "confirmations.block.message": "你确定要屏蔽 {name} 吗?",
   "confirmations.delete.confirm": "删除",
@@ -96,9 +96,9 @@
   "confirmations.mute.confirm": "隐藏",
   "confirmations.mute.message": "你确定要隐藏 {name} 吗?",
   "confirmations.redraft.confirm": "删除并重新编辑",
-  "confirmations.redraft.message": "你确定要删除这条嘟文并重新编辑它吗?所有相关的回复、转嘟和收藏都会被清除。",
-  "confirmations.reply.confirm": "Reply",
-  "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?",
+  "confirmations.redraft.message": "你确定要删除这条嘟文并重新编辑它吗?所有相关的转嘟和收藏都会被清除,回复将会被孤立。",
+  "confirmations.reply.confirm": "回复",
+  "confirmations.reply.message": "回复此消息会覆盖掉当前正在编辑的消息。确定继续吗?",
   "confirmations.unfollow.confirm": "取消关注",
   "confirmations.unfollow.message": "你确定要取消关注 {name} 吗?",
   "embed.instructions": "要在你的网站上嵌入这条嘟文,请复制以下代码。",
@@ -117,105 +117,106 @@
   "emoji_button.search_results": "搜索结果",
   "emoji_button.symbols": "符号",
   "emoji_button.travel": "旅行和地点",
-  "empty_column.account_timeline": "No toots here!",
-  "empty_column.account_unavailable": "Profile unavailable",
-  "empty_column.blocks": "You haven't blocked any users yet.",
+  "empty_column.account_timeline": "这里没有嘟文!",
+  "empty_column.account_unavailable": "个人资料不可用",
+  "empty_column.blocks": "你目前没有屏蔽任何用户。",
   "empty_column.community": "本站时间轴暂时没有内容,快嘟几个来抢头香啊!",
   "empty_column.direct": "你还没有使用过私信。当你发出或者收到私信时,它会在这里显示。",
-  "empty_column.domain_blocks": "There are no hidden domains yet.",
-  "empty_column.favourited_statuses": "You don't have any favourite toots yet. When you favourite one, it will show up here.",
-  "empty_column.favourites": "No one has favourited this toot yet. When someone does, they will show up here.",
-  "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
+  "empty_column.domain_blocks": "目前没有被隐藏的站点。",
+  "empty_column.favourited_statuses": "你还没有收藏过任何嘟文。收藏过的嘟文会显示在这里。",
+  "empty_column.favourites": "没人收藏过这条嘟文。假如有人收藏了,就会显示在这里。",
+  "empty_column.follow_requests": "你没有收到新的关注请求。收到了之后就会显示在这里。",
   "empty_column.hashtag": "这个话题标签下暂时没有内容。",
   "empty_column.home": "你还没有关注任何用户。快看看{public},向其他用户搭讪吧。",
   "empty_column.home.public_timeline": "公共时间轴",
   "empty_column.list": "这个列表中暂时没有内容。列表中用户所发送的的新嘟文将会在这里显示。",
-  "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
-  "empty_column.mutes": "You haven't muted any users yet.",
+  "empty_column.lists": "你没有创建过列表。你创建的列表会在这里显示。",
+  "empty_column.mutes": "你没有隐藏任何用户。",
   "empty_column.notifications": "你还没有收到过任何通知,快向其他用户搭讪吧。",
-  "empty_column.public": "这里神马都没有!写一些公开的嘟文,或者关注其他实例的用户后,这里就会有嘟文出现了哦!",
+  "empty_column.public": "这里什么都没有!写一些公开的嘟文,或者关注其他服务器的用户后,这里就会有嘟文出现了",
   "follow_request.authorize": "同意",
   "follow_request.reject": "拒绝",
   "getting_started.developers": "开发",
-  "getting_started.directory": "Profile directory",
+  "getting_started.directory": "用户资料目录",
   "getting_started.documentation": "文档",
   "getting_started.heading": "开始使用",
   "getting_started.invite": "邀请用户",
   "getting_started.open_source_notice": "Mastodon 是一个开源软件。欢迎前往 GitHub({github})贡献代码或反馈问题。",
   "getting_started.security": "帐户安全",
   "getting_started.terms": "使用条款",
-  "hashtag.column_header.tag_mode.all": "and {additional}",
-  "hashtag.column_header.tag_mode.any": "or {additional}",
-  "hashtag.column_header.tag_mode.none": "without {additional}",
-  "hashtag.column_settings.select.no_options_message": "No suggestions found",
-  "hashtag.column_settings.select.placeholder": "Enter hashtags…",
-  "hashtag.column_settings.tag_mode.all": "All of these",
-  "hashtag.column_settings.tag_mode.any": "Any of these",
-  "hashtag.column_settings.tag_mode.none": "None of these",
-  "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
+  "hashtag.column_header.tag_mode.all": "以及 {additional}",
+  "hashtag.column_header.tag_mode.any": "或是 {additional}",
+  "hashtag.column_header.tag_mode.none": "而不用 {additional}",
+  "hashtag.column_settings.select.no_options_message": "没有找到建议",
+  "hashtag.column_settings.select.placeholder": "输入话题标签…",
+  "hashtag.column_settings.tag_mode.all": "全部",
+  "hashtag.column_settings.tag_mode.any": "任一",
+  "hashtag.column_settings.tag_mode.none": "全都不要",
+  "hashtag.column_settings.tag_toggle": "在此栏加入额外的标签",
   "home.column_settings.basic": "基本设置",
   "home.column_settings.show_reblogs": "显示转嘟",
   "home.column_settings.show_replies": "显示回复",
-  "intervals.full.days": "{number, plural, one {# day} other {# days}}",
-  "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
-  "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
-  "introduction.federation.action": "Next",
-  "introduction.federation.federated.headline": "Federated",
-  "introduction.federation.federated.text": "Public posts from other servers of the fediverse will appear in the federated timeline.",
-  "introduction.federation.home.headline": "Home",
-  "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
-  "introduction.federation.local.headline": "Local",
-  "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
-  "introduction.interactions.action": "Finish tutorial!",
-  "introduction.interactions.favourite.headline": "Favourite",
-  "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
-  "introduction.interactions.reblog.headline": "Boost",
-  "introduction.interactions.reblog.text": "You can share other people's toots with your followers by boosting them.",
-  "introduction.interactions.reply.headline": "Reply",
-  "introduction.interactions.reply.text": "You can reply to other people's and your own toots, which will chain them together in a conversation.",
-  "introduction.welcome.action": "Let's go!",
-  "introduction.welcome.headline": "First steps",
-  "introduction.welcome.text": "Welcome to the fediverse! In a few moments, you'll be able to broadcast messages and talk to your friends across a wide variety of servers. But this server, {domain}, is special—it hosts your profile, so remember its name.",
+  "intervals.full.days": "{number} 天",
+  "intervals.full.hours": "{number} 小时",
+  "intervals.full.minutes": "{number} 分钟",
+  "introduction.federation.action": "下一步",
+  "introduction.federation.federated.headline": "跨站",
+  "introduction.federation.federated.text": "其他跨站服务器的公共动态会显示在跨站时间线中。",
+  "introduction.federation.home.headline": "主页",
+  "introduction.federation.home.text": "你所关注的用户的动态会显示在主页里。你可以关注任何服务器上的任何人!",
+  "introduction.federation.local.headline": "本站",
+  "introduction.federation.local.text": "你所关注的用户的动态会显示在主页里,你可以关注任何服务器上的任何人。",
+  "introduction.interactions.action": "教程结束!",
+  "introduction.interactions.favourite.headline": "收藏",
+  "introduction.interactions.favourite.text": "你可以保存嘟文以便以后阅读。或者通过收藏功能告诉作者你点了个赞。",
+  "introduction.interactions.reblog.headline": "转嘟",
+  "introduction.interactions.reblog.text": "通过转嘟,你可以向你的关注者分享其他人的嘟文。",
+  "introduction.interactions.reply.headline": "回复",
+  "introduction.interactions.reply.text": "你可以向其他人回复,这些回复会像对话一样串在一起。",
+  "introduction.welcome.action": "让我们开始吧!",
+  "introduction.welcome.headline": "首先",
+  "introduction.welcome.text": "欢迎来到联邦!稍后,您将可以广播消息冰河您的朋友交流,这些消息将穿越于联邦中的各式服务器。但是这台服务器,{domain},是特殊的——它保存了你的个人资料,所以请记住它的名字。",
   "keyboard_shortcuts.back": "返回上一页",
-  "keyboard_shortcuts.blocked": "to open blocked users list",
+  "keyboard_shortcuts.blocked": "打开被屏蔽用户列表",
   "keyboard_shortcuts.boost": "转嘟",
-  "keyboard_shortcuts.column": "选择第 X 栏中的嘟文",
+  "keyboard_shortcuts.column": "选择某一栏中的嘟文",
   "keyboard_shortcuts.compose": "选择嘟文撰写框",
   "keyboard_shortcuts.description": "说明",
-  "keyboard_shortcuts.direct": "to open direct messages column",
+  "keyboard_shortcuts.direct": "打开私信栏",
   "keyboard_shortcuts.down": "在列表中让光标下移",
   "keyboard_shortcuts.enter": "展开嘟文",
   "keyboard_shortcuts.favourite": "收藏嘟文",
-  "keyboard_shortcuts.favourites": "to open favourites list",
-  "keyboard_shortcuts.federated": "to open federated timeline",
+  "keyboard_shortcuts.favourites": "打开收藏列表",
+  "keyboard_shortcuts.federated": "打开跨站时间线",
   "keyboard_shortcuts.heading": "快捷键列表",
-  "keyboard_shortcuts.home": "to open home timeline",
+  "keyboard_shortcuts.home": "打开主页时间线",
   "keyboard_shortcuts.hotkey": "快捷键",
   "keyboard_shortcuts.legend": "显示此列表",
-  "keyboard_shortcuts.local": "to open local timeline",
+  "keyboard_shortcuts.local": "打开本站时间线",
   "keyboard_shortcuts.mention": "提及嘟文作者",
-  "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.pinned": "to open pinned toots list",
-  "keyboard_shortcuts.profile": "to open author's profile",
+  "keyboard_shortcuts.muted": "打开屏蔽用户列表",
+  "keyboard_shortcuts.my_profile": "打开你的个人资料",
+  "keyboard_shortcuts.notifications": "打卡通知栏",
+  "keyboard_shortcuts.pinned": "打开置顶嘟文列表",
+  "keyboard_shortcuts.profile": "打开作者的个人资料",
   "keyboard_shortcuts.reply": "回复嘟文",
-  "keyboard_shortcuts.requests": "to open follow requests list",
+  "keyboard_shortcuts.requests": "打开关注请求列表",
   "keyboard_shortcuts.search": "选择搜索框",
-  "keyboard_shortcuts.start": "to open \"get started\" column",
+  "keyboard_shortcuts.start": "打开“开始使用”栏",
   "keyboard_shortcuts.toggle_hidden": "显示或隐藏被折叠的正文",
+  "keyboard_shortcuts.toggle_sensitivity": "显示/隐藏媒体",
   "keyboard_shortcuts.toot": "发送新嘟文",
   "keyboard_shortcuts.unfocus": "取消输入",
   "keyboard_shortcuts.up": "在列表中让光标上移",
   "lightbox.close": "关闭",
-  "lightbox.next": "下一步",
-  "lightbox.previous": "上一步",
-  "lightbox.view_context": "View context",
+  "lightbox.next": "下一个",
+  "lightbox.previous": "上一个",
+  "lightbox.view_context": "查看上下文",
   "lists.account.add": "添加到列表",
   "lists.account.remove": "从列表中删除",
   "lists.delete": "删除列表",
   "lists.edit": "编辑列表",
-  "lists.edit.submit": "Change title",
+  "lists.edit.submit": "更改标题",
   "lists.new.create": "新建列表",
   "lists.new.title_placeholder": "新列表的标题",
   "lists.search": "搜索你关注的人",
@@ -224,18 +225,19 @@
   "media_gallery.toggle_visible": "切换显示/隐藏",
   "missing_indicator.label": "找不到内容",
   "missing_indicator.sublabel": "无法找到此资源",
-  "mute_modal.hide_notifications": "同时隐藏来自这个用户的通知",
-  "navigation_bar.apps": "Mobile apps",
+  "mute_modal.hide_notifications": "同时隐藏来自这个用户的通知?",
+  "navigation_bar.apps": "移动应用",
   "navigation_bar.blocks": "已屏蔽的用户",
   "navigation_bar.community_timeline": "本站时间轴",
-  "navigation_bar.compose": "Compose new toot",
+  "navigation_bar.compose": "撰写新嘟文",
   "navigation_bar.direct": "私信",
   "navigation_bar.discover": "发现",
   "navigation_bar.domain_blocks": "已屏蔽的网站",
   "navigation_bar.edit_profile": "修改个人资料",
   "navigation_bar.favourites": "收藏的内容",
-  "navigation_bar.filters": "Muted words",
+  "navigation_bar.filters": "被隐藏的词",
   "navigation_bar.follow_requests": "关注请求",
+  "navigation_bar.follows_and_followers": "正在关注以及关注者",
   "navigation_bar.info": "关于本站",
   "navigation_bar.keyboard_shortcuts": "快捷键列表",
   "navigation_bar.lists": "列表",
@@ -244,40 +246,41 @@
   "navigation_bar.personal": "个人",
   "navigation_bar.pins": "置顶嘟文",
   "navigation_bar.preferences": "首选项",
+  "navigation_bar.profile_directory": "用户资料目录",
   "navigation_bar.public_timeline": "跨站公共时间轴",
   "navigation_bar.security": "安全",
   "notification.favourite": "{name} 收藏了你的嘟文",
   "notification.follow": "{name} 开始关注你",
   "notification.mention": "{name} 提及你",
-  "notification.poll": "A poll you have voted in has ended",
+  "notification.poll": "你参与的一个投票已经结束",
   "notification.reblog": "{name} 转嘟了你的嘟文",
   "notifications.clear": "清空通知列表",
   "notifications.clear_confirmation": "你确定要永久清空通知列表吗?",
   "notifications.column_settings.alert": "桌面通知",
   "notifications.column_settings.favourite": "当你的嘟文被收藏时:",
-  "notifications.column_settings.filter_bar.advanced": "Display all categories",
-  "notifications.column_settings.filter_bar.category": "Quick filter bar",
-  "notifications.column_settings.filter_bar.show": "Show",
+  "notifications.column_settings.filter_bar.advanced": "显示所有类别",
+  "notifications.column_settings.filter_bar.category": "快速过滤栏",
+  "notifications.column_settings.filter_bar.show": "显示",
   "notifications.column_settings.follow": "当有人关注你时:",
   "notifications.column_settings.mention": "当有人在嘟文中提及你时:",
-  "notifications.column_settings.poll": "Poll results:",
+  "notifications.column_settings.poll": "投票结果:",
   "notifications.column_settings.push": "推送通知",
   "notifications.column_settings.reblog": "当有人转嘟了你的嘟文时:",
   "notifications.column_settings.show": "在通知栏显示",
   "notifications.column_settings.sound": "播放音效",
-  "notifications.filter.all": "All",
-  "notifications.filter.boosts": "Boosts",
-  "notifications.filter.favourites": "Favourites",
-  "notifications.filter.follows": "Follows",
-  "notifications.filter.mentions": "Mentions",
-  "notifications.filter.polls": "Poll results",
+  "notifications.filter.all": "全部",
+  "notifications.filter.boosts": "转嘟",
+  "notifications.filter.favourites": "收藏",
+  "notifications.filter.follows": "关注",
+  "notifications.filter.mentions": "提及",
+  "notifications.filter.polls": "投票结果",
   "notifications.group": "{count} 条通知",
-  "poll.closed": "Closed",
-  "poll.refresh": "Refresh",
-  "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
-  "poll.vote": "Vote",
-  "poll_button.add_poll": "Add a poll",
-  "poll_button.remove_poll": "Remove poll",
+  "poll.closed": "已关闭",
+  "poll.refresh": "刷新",
+  "poll.total_votes": "{count} 票",
+  "poll.vote": "投票",
+  "poll_button.add_poll": "发起投票",
+  "poll_button.remove_poll": "移除投票",
   "privacy.change": "设置嘟文可见范围",
   "privacy.direct.long": "只有被提及的用户能看到",
   "privacy.direct.short": "私信",
@@ -296,8 +299,8 @@
   "relative_time.seconds": "{number}秒",
   "reply_indicator.cancel": "取消",
   "report.forward": "发送举报至 {target}",
-  "report.forward_hint": "这名用户来自另一个实例。是否要向那个实例发送一条匿名的举报?",
-  "report.hint": "举报将会发送给你所在实例的监察员。你可以在下面填写举报这个用户的理由:",
+  "report.forward_hint": "这名用户来自另一个服务器。是否要向那个服务器发送一条匿名的举报?",
+  "report.hint": "举报将会发送给你所在服务器的监察员。你可以在下面填写举报这个用户的理由:",
   "report.placeholder": "附言",
   "report.submit": "提交",
   "report.target": "举报 {target}",
@@ -312,18 +315,18 @@
   "search_results.hashtags": "话题标签",
   "search_results.statuses": "嘟文",
   "search_results.total": "共 {count, number} 个结果",
-  "status.admin_account": "Open moderation interface for @{name}",
-  "status.admin_status": "Open this status in the moderation interface",
+  "status.admin_account": "打开 @{name} 的管理界面",
+  "status.admin_status": "打开这条嘟文的管理界面",
   "status.block": "屏蔽 @{name}",
   "status.cancel_reblog_private": "取消转嘟",
   "status.cannot_reblog": "无法转嘟这条嘟文",
-  "status.copy": "Copy link to status",
+  "status.copy": "复制链接到嘟文中",
   "status.delete": "删除",
-  "status.detailed_status": "Detailed conversation view",
+  "status.detailed_status": "对话详情",
   "status.direct": "发送私信给 @{name}",
   "status.embed": "嵌入",
   "status.favourite": "收藏",
-  "status.filtered": "Filtered",
+  "status.filtered": "已过滤",
   "status.load_more": "加载更多",
   "status.media_hidden": "隐藏媒体内容",
   "status.mention": "提及 @{name}",
@@ -333,11 +336,11 @@
   "status.open": "展开嘟文",
   "status.pin": "在个人资料页面置顶",
   "status.pinned": "置顶嘟文",
-  "status.read_more": "Read more",
+  "status.read_more": "阅读全文",
   "status.reblog": "转嘟",
   "status.reblog_private": "转嘟给原有关注者",
   "status.reblogged_by": "{name} 转嘟了",
-  "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
+  "status.reblogs.empty": "无人转嘟此条。如果有人转嘟了,就会显示在这里。",
   "status.redraft": "删除并重新编辑",
   "status.reply": "回复",
   "status.replyAll": "回复所有人",
@@ -348,30 +351,30 @@
   "status.show_less_all": "隐藏所有内容",
   "status.show_more": "显示内容",
   "status.show_more_all": "显示所有内容",
-  "status.show_thread": "Show thread",
+  "status.show_thread": "显示全部对话",
   "status.unmute_conversation": "不再隐藏此对话",
   "status.unpin": "在个人资料页面取消置顶",
-  "suggestions.dismiss": "Dismiss suggestion",
-  "suggestions.header": "You might be interested in…",
+  "suggestions.dismiss": "关闭建议",
+  "suggestions.header": "您可能会感兴趣…",
   "tabs_bar.federated_timeline": "跨站",
   "tabs_bar.home": "主页",
   "tabs_bar.local_timeline": "本站",
   "tabs_bar.notifications": "通知",
   "tabs_bar.search": "搜索",
-  "time_remaining.days": "{number, plural, one {# day} other {# days}} left",
-  "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
-  "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
-  "time_remaining.moments": "Moments remaining",
-  "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
+  "time_remaining.days": "剩余 {number, plural, one {# 天} other {# 天}}",
+  "time_remaining.hours": "剩余 {number, plural, one {# 小时} other {# 小时}}",
+  "time_remaining.minutes": "剩余 {number, plural, one {# 分钟} other {# 分钟}}",
+  "time_remaining.moments": "即将结束",
+  "time_remaining.seconds": "剩余 {number, plural, one {# 秒} other {# 秒}}",
   "trends.count_by_accounts": "{count} 人正在讨论",
   "ui.beforeunload": "如果你现在离开 Mastodon,你的草稿内容将会被丢弃。",
   "upload_area.title": "将文件拖放到此处开始上传",
-  "upload_button.label": "上传媒体文件",
-  "upload_error.limit": "File upload limit exceeded.",
-  "upload_error.poll": "File upload not allowed with polls.",
+  "upload_button.label": "上传媒体文件 (JPEG, PNG, GIF, WebM, MP4, MOV)",
+  "upload_error.limit": "超过文件上传限制。",
+  "upload_error.poll": "投票中不允许上传文件。",
   "upload_form.description": "为视觉障碍人士添加文字说明",
   "upload_form.focus": "剪裁",
-  "upload_form.undo": "取消上传",
+  "upload_form.undo": "删除",
   "upload_progress.label": "上传中…",
   "video.close": "关闭视频",
   "video.exit_fullscreen": "退出全屏",
diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json
index a2d7b0e82..2cfc11703 100644
--- a/app/javascript/mastodon/locales/zh-HK.json
+++ b/app/javascript/mastodon/locales/zh-HK.json
@@ -166,7 +166,7 @@
   "introduction.federation.home.text": "Posts from people you follow will appear in your home feed. You can follow anyone on any server!",
   "introduction.federation.local.headline": "Local",
   "introduction.federation.local.text": "Public posts from people on the same server as you will appear in the local timeline.",
-  "introduction.interactions.action": "Finish tutorial!",
+  "introduction.interactions.action": "Finish toot-orial!",
   "introduction.interactions.favourite.headline": "Favourite",
   "introduction.interactions.favourite.text": "You can save a toot for later, and let the author know that you liked it, by favouriting it.",
   "introduction.interactions.reblog.headline": "Boost",
@@ -204,6 +204,7 @@
   "keyboard_shortcuts.search": "把標示移動到搜索",
   "keyboard_shortcuts.start": "to open \"get started\" column",
   "keyboard_shortcuts.toggle_hidden": "顯示或隱藏被標為敏感的文字",
+  "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
   "keyboard_shortcuts.toot": "新的推文",
   "keyboard_shortcuts.unfocus": "把標示移離文字輸入和搜索",
   "keyboard_shortcuts.up": "在列表往上移動",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "最愛的內容",
   "navigation_bar.filters": "Muted words",
   "navigation_bar.follow_requests": "關注請求",
+  "navigation_bar.follows_and_followers": "Follows and followers",
   "navigation_bar.info": "關於本服務站",
   "navigation_bar.keyboard_shortcuts": "鍵盤快速鍵",
   "navigation_bar.lists": "列表",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "Personal",
   "navigation_bar.pins": "置頂文章",
   "navigation_bar.preferences": "偏好設定",
+  "navigation_bar.profile_directory": "Profile directory",
   "navigation_bar.public_timeline": "跨站時間軸",
   "navigation_bar.security": "安全",
   "notification.favourite": "{name} 收藏了你的文章",
diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json
index 7b01ce4dd..5715ef01a 100644
--- a/app/javascript/mastodon/locales/zh-TW.json
+++ b/app/javascript/mastodon/locales/zh-TW.json
@@ -204,6 +204,7 @@
   "keyboard_shortcuts.search": "將焦點移至搜尋框",
   "keyboard_shortcuts.start": "開啟「開始使用」欄位",
   "keyboard_shortcuts.toggle_hidden": "顯示/隱藏在內容警告之後的正文",
+  "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
   "keyboard_shortcuts.toot": "開始發出新嘟文",
   "keyboard_shortcuts.unfocus": "取消輸入文字區塊 / 搜尋的焦點",
   "keyboard_shortcuts.up": "在名單中往上移動",
@@ -236,6 +237,7 @@
   "navigation_bar.favourites": "最愛內容",
   "navigation_bar.filters": "靜音詞彙",
   "navigation_bar.follow_requests": "關注請求",
+  "navigation_bar.follows_and_followers": "Follows and followers",
   "navigation_bar.info": "關於此伺服器",
   "navigation_bar.keyboard_shortcuts": "快速鍵",
   "navigation_bar.lists": "名單",
@@ -244,6 +246,7 @@
   "navigation_bar.personal": "個人",
   "navigation_bar.pins": "釘選的嘟文",
   "navigation_bar.preferences": "偏好設定",
+  "navigation_bar.profile_directory": "Profile directory",
   "navigation_bar.public_timeline": "聯邦時間軸",
   "navigation_bar.security": "安全性",
   "notification.favourite": "{name} 把你的嘟文加入了最愛",
diff --git a/app/javascript/styles/mastodon-light/diff.scss b/app/javascript/styles/mastodon-light/diff.scss
index d35a59821..ee8a7d265 100644
--- a/app/javascript/styles/mastodon-light/diff.scss
+++ b/app/javascript/styles/mastodon-light/diff.scss
@@ -1,6 +1,10 @@
 // Notes!
 // Sass color functions, "darken" and "lighten" are automatically replaced.
 
+html {
+  scrollbar-color: $ui-base-color rgba($ui-base-color, 0.25);
+}
+
 // Change the colors of button texts
 .button {
   color: $white;
@@ -11,18 +15,139 @@
 }
 
 // Change default background colors of columns
-.column {
-  > .scrollable {
+.column > .scrollable,
+.getting-started,
+.column-inline-form {
+  background: $white;
+  border: 1px solid lighten($ui-base-color, 8%);
+  border-top: 0;
+}
+
+.column-back-button,
+.column-header {
+  background: $white;
+  border: 1px solid lighten($ui-base-color, 8%);
+
+  @media screen and (max-width: $no-gap-breakpoint) {
+    border-top: 0;
+  }
+
+  &--slim-button {
+    border: 0;
+    top: -49px;
+    right: 1px;
+  }
+}
+
+.column-header__back-button,
+.column-header__button,
+.column-header__button.active,
+.account__header__bar {
+  background: $white;
+}
+
+.column-header__button.active {
+  color: $ui-highlight-color;
+
+  &:hover,
+  &:active,
+  &:focus {
+    color: $ui-highlight-color;
     background: $white;
   }
 }
 
-.drawer__inner {
+.account__header__bar .avatar .account__avatar {
+  border-color: $white;
+}
+
+.getting-started__footer a {
+  color: $ui-secondary-color;
+  text-decoration: underline;
+}
+
+.column-subheading {
+  background: darken($ui-base-color, 4%);
+  border-bottom: 1px solid lighten($ui-base-color, 8%);
+}
+
+.getting-started,
+.scrollable {
+  .column-link {
+    background: $white;
+    border-bottom: 1px solid lighten($ui-base-color, 8%);
+
+    &:hover,
+    &:active,
+    &:focus {
+      background: $ui-base-color;
+    }
+  }
+}
+
+.getting-started .navigation-bar {
+  border-top: 1px solid lighten($ui-base-color, 8%);
+  border-bottom: 1px solid lighten($ui-base-color, 8%);
+
+  @media screen and (max-width: $no-gap-breakpoint) {
+    border-top: 0;
+  }
+}
+
+.compose-form__autosuggest-wrapper,
+.poll__text input[type="text"],
+.compose-form .spoiler-input__input,
+.compose-form__poll-wrapper select,
+.search__input,
+.setting-text,
+.box-widget input[type="text"],
+.box-widget input[type="email"],
+.box-widget input[type="password"],
+.box-widget textarea,
+.statuses-grid .detailed-status {
+  border: 1px solid lighten($ui-base-color, 8%);
+}
+
+.search__input {
+  @media screen and (max-width: $no-gap-breakpoint) {
+    border-top: 0;
+    border-bottom: 0;
+  }
+}
+
+.list-editor .search .search__input {
+  border-top: 0;
+  border-bottom: 0;
+}
+
+.compose-form__poll-wrapper select {
+  background: $simple-background-color url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14.933 18.467' height='19.698' width='15.929'><path d='M3.467 14.967l-3.393-3.5H14.86l-3.392 3.5c-1.866 1.925-3.666 3.5-4 3.5-.335 0-2.135-1.575-4-3.5zm.266-11.234L7.467 0 11.2 3.733l3.733 3.734H0l3.733-3.734z' fill='#{hex-color(lighten($ui-base-color, 8%))}'/></svg>") no-repeat right 8px center / auto 16px;
+}
+
+.compose-form__poll-wrapper,
+.compose-form__poll-wrapper .poll__footer {
+  border-top-color: lighten($ui-base-color, 8%);
+}
+
+.notification__filter-bar {
+  border: 1px solid lighten($ui-base-color, 8%);
+  border-top: 0;
+}
+
+.compose-form .compose-form__buttons-wrapper {
   background: $ui-base-color;
+  border: 1px solid lighten($ui-base-color, 8%);
+  border-top: 0;
+}
+
+.drawer__header,
+.drawer__inner {
+  background: $white;
+  border: 1px solid lighten($ui-base-color, 8%);
 }
 
 .drawer__inner__mastodon {
-  background: $ui-base-color url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 234.80078 31.757813" width="234.80078" height="31.757812"><path d="M19.599609 0c-1.05 0-2.10039.375-2.90039 1.125L0 16.925781v14.832031h234.80078V17.025391l-16.5-15.900391c-1.6-1.5-4.20078-1.5-5.80078 0l-13.80078 13.099609c-1.6 1.5-4.19883 1.5-5.79883 0L179.09961 1.125c-1.6-1.5-4.19883-1.5-5.79883 0L159.5 14.224609c-1.6 1.5-4.20078 1.5-5.80078 0L139.90039 1.125c-1.6-1.5-4.20078-1.5-5.80078 0l-13.79883 13.099609c-1.6 1.5-4.20078 1.5-5.80078 0L100.69922 1.125c-1.600001-1.5-4.198829-1.5-5.798829 0l-13.59961 13.099609c-1.6 1.5-4.200781 1.5-5.800781 0L61.699219 1.125c-1.6-1.5-4.198828-1.5-5.798828 0L42.099609 14.224609c-1.6 1.5-4.198828 1.5-5.798828 0L22.5 1.125C21.7.375 20.649609 0 19.599609 0z" fill="#{hex-color($white)}"/></svg>') no-repeat bottom / 100% auto;
+  background: $white url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 234.80078 31.757813" width="234.80078" height="31.757812"><path d="M19.599609 0c-1.05 0-2.10039.375-2.90039 1.125L0 16.925781v14.832031h234.80078V17.025391l-16.5-15.900391c-1.6-1.5-4.20078-1.5-5.80078 0l-13.80078 13.099609c-1.6 1.5-4.19883 1.5-5.79883 0L179.09961 1.125c-1.6-1.5-4.19883-1.5-5.79883 0L159.5 14.224609c-1.6 1.5-4.20078 1.5-5.80078 0L139.90039 1.125c-1.6-1.5-4.20078-1.5-5.80078 0l-13.79883 13.099609c-1.6 1.5-4.20078 1.5-5.80078 0L100.69922 1.125c-1.600001-1.5-4.198829-1.5-5.798829 0l-13.59961 13.099609c-1.6 1.5-4.200781 1.5-5.800781 0L61.699219 1.125c-1.6-1.5-4.198828-1.5-5.798828 0L42.099609 14.224609c-1.6 1.5-4.198828 1.5-5.798828 0L22.5 1.125C21.7.375 20.649609 0 19.599609 0z" fill="#{hex-color($ui-base-color)}"/></svg>') no-repeat bottom / 100% auto;
 }
 
 // Change the colors used in compose-form
@@ -93,16 +218,16 @@
 
 .detailed-status,
 .detailed-status__action-bar {
-  background: darken($ui-base-color, 6%);
+  background: $white;
 }
 
 // Change the background colors of status__content__spoiler-link
 .reply-indicator__content .status__content__spoiler-link,
 .status__content .status__content__spoiler-link {
-  background: $ui-base-lighter-color;
+  background: $ui-base-color;
 
   &:hover {
-    background: lighten($ui-base-lighter-color, 6%);
+    background: lighten($ui-base-color, 4%);
   }
 }
 
@@ -112,41 +237,47 @@
   background: $ui-base-color;
 }
 
+.privacy-dropdown.active .privacy-dropdown__value.active .icon-button {
+  color: $white;
+}
+
 .account-gallery__item a {
   background-color: $ui-base-color;
 }
 
 // Change the colors used in the dropdown menu
 .dropdown-menu {
-  background: $ui-base-color;
+  background: $white;
 
   &__arrow {
     &.left {
-      border-left-color: $ui-base-color;
+      border-left-color: $white;
     }
 
     &.top {
-      border-top-color: $ui-base-color;
+      border-top-color: $white;
     }
 
     &.bottom {
-      border-bottom-color: $ui-base-color;
+      border-bottom-color: $white;
     }
 
     &.right {
-      border-right-color: $ui-base-color;
+      border-right-color: $white;
     }
   }
 
   &__item {
     a {
-      background: $ui-base-color;
+      background: $white;
       color: $darker-text-color;
     }
   }
 }
 
 // Change the text colors on inverted background
+.privacy-dropdown__option.active,
+.privacy-dropdown__option:hover,
 .privacy-dropdown__option.active .privacy-dropdown__option__content,
 .privacy-dropdown__option.active .privacy-dropdown__option__content strong,
 .privacy-dropdown__option:hover .privacy-dropdown__option__content,
@@ -162,7 +293,7 @@
 .actions-modal ul li:not(:empty) a:focus button,
 .actions-modal ul li:not(:empty) a:hover,
 .actions-modal ul li:not(:empty) a:hover button,
-.admin-wrapper .sidebar ul li a.selected,
+.admin-wrapper .sidebar ul .simple-navigation-active-leaf a,
 .simple_form .block-button,
 .simple_form .button,
 .simple_form button {
@@ -170,7 +301,7 @@
 }
 
 .dropdown-menu__separator {
-  border-bottom-color: lighten($ui-base-color, 12%);
+  border-bottom-color: lighten($ui-base-color, 4%);
 }
 
 // Change the background colors of modals
@@ -185,6 +316,12 @@
   background: $ui-base-color;
 }
 
+.column-header__collapsible-inner {
+  background: darken($ui-base-color, 4%);
+  border: 1px solid lighten($ui-base-color, 8%);
+  border-top: 0;
+}
+
 .boost-modal__action-bar,
 .confirmation-modal__action-bar,
 .mute-modal__action-bar,
@@ -233,13 +370,139 @@
   background: $white;
 }
 
+.tabs-bar {
+  background: $white;
+  border: 1px solid lighten($ui-base-color, 8%);
+  border-bottom: 0;
+
+  @media screen and (max-width: $no-gap-breakpoint) {
+    border-top: 0;
+  }
+
+  &__link {
+    padding-bottom: 14px;
+    border-bottom-width: 1px;
+    border-bottom-color: lighten($ui-base-color, 8%);
+
+    &:hover,
+    &:active,
+    &:focus {
+      background: $ui-base-color;
+    }
+
+    &.active {
+      &:hover,
+      &:active,
+      &:focus {
+        background: transparent;
+        border-bottom-color: $ui-highlight-color;
+      }
+    }
+  }
+}
+
 // Change the default colors used on some parts of the profile pages
 .activity-stream-tabs {
   background: $account-background-color;
   border-bottom-color: lighten($ui-base-color, 8%);
 }
 
+.box-widget,
+.nothing-here,
+.page-header,
+.directory__tag > a,
+.directory__tag > div,
+.landing-page__call-to-action,
+.contact-widget,
+.landing .hero-widget__text,
+.landing-page__information.contact-widget {
+  background: $white;
+  border: 1px solid lighten($ui-base-color, 8%);
+
+  @media screen and (max-width: $no-gap-breakpoint) {
+    border-left: 0;
+    border-right: 0;
+    border-top: 0;
+  }
+}
+
+.landing .hero-widget__text {
+  border-top: 0;
+  border-bottom: 0;
+}
+
+.simple_form {
+  input[type=text],
+  input[type=number],
+  input[type=email],
+  input[type=password],
+  textarea {
+    &:hover {
+      border-color: lighten($ui-base-color, 12%);
+    }
+  }
+}
+
+.landing .hero-widget__footer {
+  background: $white;
+  border: 1px solid lighten($ui-base-color, 8%);
+  border-top: 0;
+
+  @media screen and (max-width: $no-gap-breakpoint) {
+    border: 0;
+  }
+}
+
+.brand__tagline {
+  color: $ui-secondary-color;
+}
+
+.directory__tag > a {
+  &:hover,
+  &:active,
+  &:focus {
+    background: $ui-base-color;
+  }
+
+  @media screen and (max-width: $no-gap-breakpoint) {
+    border: 0;
+  }
+}
+
+.directory__tag.active > a,
+.directory__tag.active > div {
+  border-color: $ui-highlight-color;
+
+  &,
+  h4,
+  h4 small,
+  .fa,
+  .trends__item__current {
+    color: $white;
+  }
+
+  &:hover,
+  &:active,
+  &:focus {
+    background: $ui-highlight-color;
+  }
+}
+
+.batch-table {
+  &__toolbar,
+  &__row,
+  .nothing-here {
+    border-color: lighten($ui-base-color, 8%);
+  }
+}
+
 .activity-stream {
+  border: 1px solid lighten($ui-base-color, 8%);
+
+  &--under-tabs {
+    border-top: 0;
+  }
+
   .entry {
     background: $account-background-color;
 
@@ -294,6 +557,22 @@
     background: rgba($error-red, 0.5);
     text-shadow: none;
   }
+
+  .recommended {
+    border-color: $ui-highlight-color;
+    color: $ui-highlight-color;
+    background-color: rgba($ui-highlight-color, 0.1);
+  }
+}
+
+.compose-form .compose-form__warning {
+  border-color: $ui-highlight-color;
+  background-color: rgba($ui-highlight-color, 0.1);
+
+  &,
+  a {
+    color: $ui-highlight-color;
+  }
 }
 
 .status__content,
@@ -312,14 +591,41 @@
 }
 
 .public-layout {
+  .account__section-headline {
+    border: 1px solid lighten($ui-base-color, 8%);
+
+    @media screen and (max-width: $no-gap-breakpoint) {
+      border-top: 0;
+    }
+  }
+
   .header,
   .public-account-header,
   .public-account-bio {
     box-shadow: none;
   }
 
+  .public-account-bio,
+  .hero-widget__text {
+    background: $account-background-color;
+    border: 1px solid lighten($ui-base-color, 8%);
+  }
+
   .header {
-    background: lighten($ui-base-color, 12%);
+    background: $ui-base-color;
+    border: 1px solid lighten($ui-base-color, 8%);
+
+    @media screen and (max-width: $no-gap-breakpoint) {
+      border: 0;
+    }
+
+    .brand {
+      &:hover,
+      &:focus,
+      &:active {
+        background: lighten($ui-base-color, 4%);
+      }
+    }
   }
 
   .public-account-header {
@@ -331,17 +637,50 @@
       }
     }
 
+    &__bar {
+      &::before {
+        background: $account-background-color;
+        border: 1px solid lighten($ui-base-color, 8%);
+        border-top: 0;
+      }
+
+      .avatar img {
+        border-color: $account-background-color;
+      }
+
+      @media screen and (max-width: $no-columns-breakpoint) {
+        background: $account-background-color;
+        border: 1px solid lighten($ui-base-color, 8%);
+        border-top: 0;
+      }
+    }
+
     &__tabs {
       &__name {
         h1,
         h1 small {
           color: $white;
+
+          @media screen and (max-width: $no-columns-breakpoint) {
+            color: $primary-text-color;
+          }
         }
       }
     }
+
+    &__extra {
+      .public-account-bio {
+        border: 0;
+      }
+
+      .public-account-bio .account__header__fields {
+        border-color: lighten($ui-base-color, 8%);
+      }
+    }
   }
 }
 
+.notification__filter-bar button.active::after,
 .account__section-headline a.active::after {
   border-color: transparent transparent $white;
 }
@@ -355,6 +694,9 @@
 .activity-stream,
 .nothing-here,
 .directory__tag > a,
-.directory__tag > div {
+.directory__tag > div,
+.card > a,
+.page-header,
+.compose-form .compose-form__warning {
   box-shadow: none;
 }
diff --git a/app/javascript/styles/mastodon-light/variables.scss b/app/javascript/styles/mastodon-light/variables.scss
index 9f6d470b1..01748148f 100644
--- a/app/javascript/styles/mastodon-light/variables.scss
+++ b/app/javascript/styles/mastodon-light/variables.scss
@@ -17,7 +17,7 @@ $ui-base-color: $classic-secondary-color !default;
 $ui-base-lighter-color: #b0c0cf;
 $ui-primary-color: #9bcbed;
 $ui-secondary-color: $classic-base-color !default;
-$ui-highlight-color: #2b5fd9;
+$ui-highlight-color: #2b90d9;
 
 $primary-text-color: $black !default;
 $darker-text-color: $classic-base-color !default;
diff --git a/app/javascript/styles/mastodon/about.scss b/app/javascript/styles/mastodon/about.scss
index d3b4a5909..61637ce96 100644
--- a/app/javascript/styles/mastodon/about.scss
+++ b/app/javascript/styles/mastodon/about.scss
@@ -659,7 +659,8 @@ $small-breakpoint: 960px;
     align-items: center;
     padding: 50px;
 
-    img {
+    svg {
+      fill: $primary-text-color;
       height: 52px;
     }
 
diff --git a/app/javascript/styles/mastodon/accounts.scss b/app/javascript/styles/mastodon/accounts.scss
index a93e1ea12..f95313a25 100644
--- a/app/javascript/styles/mastodon/accounts.scss
+++ b/app/javascript/styles/mastodon/accounts.scss
@@ -197,7 +197,8 @@
   }
 }
 
-.account-role {
+.account-role,
+.simple_form .recommended {
   display: inline-block;
   padding: 4px 6px;
   cursor: default;
diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss
index 63c38ff42..597a8d1dc 100644
--- a/app/javascript/styles/mastodon/components.scss
+++ b/app/javascript/styles/mastodon/components.scss
@@ -337,7 +337,6 @@
     position: absolute;
     top: 5px;
     right: 5px;
-    z-index: 1;
   }
 
   .compose-form__autosuggest-wrapper {
@@ -413,15 +412,6 @@
     height: 0;
   }
 
-  .emoji-picker-wrapper {
-    position: relative;
-    height: 0;
-
-    &.emoji-picker-wrapper--hidden {
-      display: none;
-    }
-  }
-
   .autosuggest-textarea__suggestions {
     box-sizing: border-box;
     display: none;
@@ -1839,7 +1829,7 @@ a.account__display-name {
       display: flex;
       flex-direction: column;
 
-      @media screen and (min-width: 360px) {
+      @media screen and (min-width: $no-gap-breakpoint) {
         padding: 0 10px;
       }
     }
@@ -1965,11 +1955,6 @@ a.account__display-name {
     font-size: 16px;
   }
 
-  &.active {
-    border-bottom: 2px solid $highlight-text-color;
-    color: $highlight-text-color;
-  }
-
   &:hover,
   &:focus,
   &:active {
@@ -1979,6 +1964,11 @@ a.account__display-name {
     }
   }
 
+  &.active {
+    border-bottom: 2px solid $highlight-text-color;
+    color: $highlight-text-color;
+  }
+
   span {
     margin-left: 5px;
     display: none;
@@ -2021,7 +2011,7 @@ a.account__display-name {
     top: 15px;
   }
 
-  @media screen and (min-width: 360px) {
+  @media screen and (min-width: $no-gap-breakpoint) {
     padding: 10px 0;
   }
 
@@ -2135,7 +2125,7 @@ a.account__display-name {
   }
 }
 
-@media screen and (min-width: 360px) {
+@media screen and (min-width: $no-gap-breakpoint) {
   .tabs-bar {
     margin: 10px auto;
     margin-bottom: 0;
@@ -2212,17 +2202,6 @@ a.account__display-name {
   height: calc(100% - 10px);
   overflow-y: hidden;
 
-  .search__input {
-    line-height: 18px;
-    font-size: 16px;
-    padding: 15px;
-    padding-right: 30px;
-  }
-
-  .search__icon .fa {
-    top: 15px;
-  }
-
   .navigation-bar {
     padding-top: 20px;
     padding-bottom: 20px;
@@ -2709,21 +2688,22 @@ a.account__display-name {
 }
 
 .setting-text {
-  color: $darker-text-color;
-  background: transparent;
-  border: 0;
-  border-bottom: 2px solid $ui-primary-color;
-  box-sizing: border-box;
   display: block;
-  font-family: inherit;
-  margin-bottom: 10px;
-  padding: 7px 0;
+  box-sizing: border-box;
   width: 100%;
+  margin: 0;
+  color: $inverted-text-color;
+  background: $simple-background-color;
+  padding: 10px;
+  font-family: inherit;
+  font-size: 14px;
+  resize: vertical;
+  border: 0;
+  outline: 0;
+  border-radius: 4px;
 
-  &:focus,
-  &:active {
-    color: $primary-text-color;
-    border-bottom-color: $highlight-text-color;
+  &:focus {
+    outline: 0;
   }
 
   @media screen and (max-width: 600px) {
@@ -3085,6 +3065,10 @@ a.status-card.compact:hover {
   display: flex;
 }
 
+.column-header__links {
+  margin-bottom: 14px;
+}
+
 .column-header__links .text-btn {
   margin-right: 10px;
 }
@@ -3895,8 +3879,10 @@ a.status-card.compact:hover {
   @include search-input;
 
   display: block;
-  padding: 10px;
+  padding: 15px;
   padding-right: 30px;
+  line-height: 18px;
+  font-size: 16px;
 }
 
 .search__icon {
@@ -3911,7 +3897,7 @@ a.status-card.compact:hover {
 
   .fa {
     position: absolute;
-    top: 10px;
+    top: 16px;
     right: 10px;
     z-index: 2;
     display: inline-block;
@@ -3941,7 +3927,7 @@ a.status-card.compact:hover {
   }
 
   .fa-times-circle {
-    top: 11px;
+    top: 17px;
     transform: rotate(0deg);
     color: $action-button-color;
     cursor: pointer;
@@ -4747,7 +4733,6 @@ a.status-card.compact:hover {
   display: block;
   text-decoration: none;
   color: $secondary-text-color;
-  line-height: 0;
   position: relative;
   z-index: 1;
 
@@ -5474,8 +5459,8 @@ noscript {
 }
 
 .column-inline-form {
-  padding: 7px 15px;
-  padding-right: 5px;
+  padding: 15px;
+  padding-right: 0;
   display: flex;
   justify-content: flex-start;
   align-items: center;
@@ -5486,7 +5471,6 @@ noscript {
 
     input {
       width: 100%;
-      margin-bottom: 6px;
 
       &:focus {
         outline: 0;
@@ -5496,7 +5480,7 @@ noscript {
 
   .icon-button {
     flex: 0 0 auto;
-    margin: 0 5px;
+    margin: 0 10px;
   }
 }
 
diff --git a/app/javascript/styles/mastodon/containers.scss b/app/javascript/styles/mastodon/containers.scss
index 2d68d2b70..3564bf07b 100644
--- a/app/javascript/styles/mastodon/containers.scss
+++ b/app/javascript/styles/mastodon/containers.scss
@@ -21,7 +21,8 @@
     justify-content: center;
     align-items: center;
 
-    img {
+    svg {
+      fill: $primary-text-color;
       height: 42px;
       margin-right: 10px;
     }
@@ -256,12 +257,13 @@
       display: block;
       padding: 15px;
 
-      img {
+      svg {
         display: block;
         height: 18px;
         width: auto;
         position: relative;
         bottom: -2px;
+        fill: $primary-text-color;
 
         @media screen and (max-width: $no-gap-breakpoint) {
           height: 20px;
diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss
index f3de87791..456ee4e0d 100644
--- a/app/javascript/styles/mastodon/forms.scss
+++ b/app/javascript/styles/mastodon/forms.scss
@@ -79,6 +79,12 @@ code {
           text-decoration: none;
         }
       }
+
+      .recommended {
+        position: absolute;
+        margin: 0 4px;
+        margin-top: -2px;
+      }
     }
   }
 
@@ -443,6 +449,10 @@ code {
     height: 41px;
   }
 
+  h4 {
+    margin-bottom: 15px !important;
+  }
+
   .label_input {
     &__wrapper {
       position: relative;
diff --git a/app/javascript/styles/mastodon/rtl.scss b/app/javascript/styles/mastodon/rtl.scss
index a59f59f59..58bc53b14 100644
--- a/app/javascript/styles/mastodon/rtl.scss
+++ b/app/javascript/styles/mastodon/rtl.scss
@@ -43,6 +43,10 @@ body.rtl {
     left: 10px;
   }
 
+  .columns-area {
+    direction: rtl;
+  }
+
   .column-header__buttons {
     left: 0;
     right: auto;
diff --git a/app/javascript/styles/mastodon/stream_entries.scss b/app/javascript/styles/mastodon/stream_entries.scss
index bfbb907e0..19ce0ab8f 100644
--- a/app/javascript/styles/mastodon/stream_entries.scss
+++ b/app/javascript/styles/mastodon/stream_entries.scss
@@ -4,6 +4,10 @@
   overflow: hidden;
   margin-bottom: 10px;
 
+  &--under-tabs {
+    border-radius: 0 0 4px 4px;
+  }
+
   @media screen and (max-width: $no-gap-breakpoint) {
     margin-bottom: 0;
     border-radius: 0;
diff --git a/app/lib/activitypub/activity/delete.rb b/app/lib/activitypub/activity/delete.rb
index 4236af071..0eb14b89c 100644
--- a/app/lib/activitypub/activity/delete.rb
+++ b/app/lib/activitypub/activity/delete.rb
@@ -45,7 +45,7 @@ class ActivityPub::Activity::Delete < ActivityPub::Activity
     rebloggers_ids = @status.reblogs.includes(:account).references(:account).merge(Account.local).pluck(:account_id)
     inboxes        = Account.where(id: ::Follow.where(target_account_id: rebloggers_ids).select(:account_id)).inboxes - [@account.preferred_inbox_url]
 
-    ActivityPub::DeliveryWorker.push_bulk(inboxes) do |inbox_url|
+    ActivityPub::LowPriorityDeliveryWorker.push_bulk(inboxes) do |inbox_url|
       [payload, rebloggers_ids.first, inbox_url]
     end
   end
@@ -61,7 +61,12 @@ class ActivityPub::Activity::Delete < ActivityPub::Activity
 
   def forward_for_reply
     return unless @json['signature'].present? && reply_to_local?
-    ActivityPub::RawDistributionWorker.perform_async(Oj.dump(@json), replied_to_status.account_id, [@account.preferred_inbox_url])
+
+    inboxes = replied_to_status.account.followers.inboxes - [@account.preferred_inbox_url]
+
+    ActivityPub::LowPriorityDeliveryWorker.push_bulk(inboxes) do |inbox_url|
+      [payload, replied_to_status.account_id, inbox_url]
+    end
   end
 
   def delete_now!
diff --git a/app/views/about/show.html.haml b/app/views/about/show.html.haml
index 45e5f0717..f24f4e195 100644
--- a/app/views/about/show.html.haml
+++ b/app/views/about/show.html.haml
@@ -8,7 +8,7 @@
 .landing
   .landing__brand
     = link_to root_url, class: 'brand' do
-      = image_pack_tag 'logo_full.svg', alt: 'Mastodon'
+      = svg_logo_full
       %span.brand__tagline=t 'about.tagline'
 
   .landing__grid
diff --git a/app/views/accounts/show.html.haml b/app/views/accounts/show.html.haml
index e4223119c..950e61847 100644
--- a/app/views/accounts/show.html.haml
+++ b/app/views/accounts/show.html.haml
@@ -38,7 +38,7 @@
       - elsif @statuses.empty?
         = nothing_here 'nothing-here--under-tabs'
       - else
-        .activity-stream
+        .activity-stream.activity-stream--under-tabs
           - if params[:page].to_i.zero?
             = render partial: 'stream_entries/status', collection: @pinned_statuses, as: :status, locals: { pinned: true }
 
diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml
index f11fddd4d..2be9427c5 100755
--- a/app/views/layouts/application.html.haml
+++ b/app/views/layouts/application.html.haml
@@ -42,3 +42,4 @@
 
     %div{ style: 'display: none'}
       = render file: Rails.root.join('app', 'javascript', 'images', 'logo_transparent.svg')
+      = render file: Rails.root.join('app', 'javascript', 'images', 'logo_full.svg')
diff --git a/app/views/layouts/auth.html.haml b/app/views/layouts/auth.html.haml
index fcbd29fe9..ba105d25e 100644
--- a/app/views/layouts/auth.html.haml
+++ b/app/views/layouts/auth.html.haml
@@ -3,7 +3,7 @@
     .logo-container
       %h1
         = link_to root_path do
-          = image_pack_tag 'logo_full.svg', alt: 'Mastodon'
+          = svg_logo_full
 
     .form-container
       = render 'flashes'
diff --git a/app/views/layouts/mailer.html.haml b/app/views/layouts/mailer.html.haml
index 26fb697bb..8b69d758b 100644
--- a/app/views/layouts/mailer.html.haml
+++ b/app/views/layouts/mailer.html.haml
@@ -46,7 +46,7 @@
                             %tbody
                               %td.column-cell
                                 %p= t 'about.hosted_on', domain: site_hostname
-                                %p= link_to t('application_mailer.notification_preferences'), settings_notifications_url
+                                %p= link_to t('application_mailer.notification_preferences'), settings_preferences_notifications_url
                               %td.column-cell.text-right
                                 = link_to root_url do
                                   = image_tag full_pack_url('media/images/mailer/logo_transparent.png'), alt: 'Mastodon', height: 24
diff --git a/app/views/layouts/public.html.haml b/app/views/layouts/public.html.haml
index 37808cdd0..92df0bfbe 100644
--- a/app/views/layouts/public.html.haml
+++ b/app/views/layouts/public.html.haml
@@ -5,7 +5,7 @@
         %nav.header
           .nav-left
             = link_to root_url, class: 'brand' do
-              = image_pack_tag 'logo_full.svg', alt: 'Mastodon'
+              = svg_logo_full
 
             = link_to t('directories.directory'), explore_path, class: 'nav-link optional' if Setting.profile_directory
             = link_to t('about.about_this'), about_more_path, class: 'nav-link optional'
diff --git a/app/views/oauth/authorizations/show.html.haml b/app/views/oauth/authorizations/show.html.haml
index ad5236007..c3c9960d8 100644
--- a/app/views/oauth/authorizations/show.html.haml
+++ b/app/views/oauth/authorizations/show.html.haml
@@ -1,4 +1,7 @@
 .form-container
-  .flash-message
+  .flash-message.simple_form
     %p= t('doorkeeper.authorizations.show.title')
-    %input{ type: 'text', class: 'oauth-code', readonly: true, value: params[:code], onClick: 'select()' }
+    .input-copy
+      .input-copy__wrapper
+        %input{ type: 'text', class: 'oauth-code', spellcheck: 'false', readonly: true, value: params[:code] }
+      %button{ type: :button }= t('generic.copy')
diff --git a/app/views/settings/preferences/appearance/show.html.haml b/app/views/settings/preferences/appearance/show.html.haml
new file mode 100644
index 000000000..9577c10b5
--- /dev/null
+++ b/app/views/settings/preferences/appearance/show.html.haml
@@ -0,0 +1,39 @@
+- content_for :page_title do
+  = t('settings.appearance')
+
+= simple_form_for current_user, url: settings_preferences_appearance_path, html: { method: :put } do |f|
+  .fields-group
+    = f.input :locale, collection: I18n.available_locales, wrapper: :with_label, include_blank: false, label_method: lambda { |locale| human_locale(locale) }, selected: I18n.locale, hint: false
+
+  %h4= t 'appearance.advanced_web_interface'
+
+  %p.hint= t 'appearance.advanced_web_interface_hint'
+
+  .fields-group
+    = f.input :setting_advanced_layout, as: :boolean, wrapper: :with_label, hint: false
+
+  %h4= t 'appearance.animations_and_accessibility'
+
+  .fields-group
+    = f.input :setting_auto_play_gif, as: :boolean, wrapper: :with_label, recommended: true
+    = f.input :setting_reduce_motion, as: :boolean, wrapper: :with_label
+    = f.input :setting_system_font_ui, as: :boolean, wrapper: :with_label
+
+  %h4= t 'appearance.confirmation_dialogs'
+
+  .fields-group
+    = f.input :setting_unfollow_modal, as: :boolean, wrapper: :with_label
+    = f.input :setting_boost_modal, as: :boolean, wrapper: :with_label
+    = f.input :setting_favourite_modal, as: :boolean, wrapper: :with_label
+    = f.input :setting_delete_modal, as: :boolean, wrapper: :with_label
+
+  %h4= t 'appearance.sensitive_content'
+
+  .fields-group
+    = f.input :setting_display_media, collection: ['default', 'show_all', 'hide_all'],label_method: lambda { |item| t("simple_form.hints.defaults.setting_display_media_#{item}") }, hint: false, as: :radio_buttons, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li', wrapper: :with_floating_label
+
+  .fields-group
+    = f.input :setting_expand_spoilers, as: :boolean, wrapper: :with_label
+
+  .actions
+    = f.button :button, t('generic.save_changes'), type: :submit
diff --git a/app/views/settings/notifications/show.html.haml b/app/views/settings/preferences/notifications/show.html.haml
index 6ec57b502..acc646fc3 100644
--- a/app/views/settings/notifications/show.html.haml
+++ b/app/views/settings/preferences/notifications/show.html.haml
@@ -1,7 +1,7 @@
 - content_for :page_title do
   = t('settings.notifications')
 
-= simple_form_for current_user, url: settings_notifications_path, html: { method: :put } do |f|
+= simple_form_for current_user, url: settings_preferences_notifications_path, html: { method: :put } do |f|
   = render 'shared/error_messages', object: current_user
 
   .fields-group
diff --git a/app/views/settings/preferences/other/show.html.haml b/app/views/settings/preferences/other/show.html.haml
new file mode 100644
index 000000000..9bdcb368d
--- /dev/null
+++ b/app/views/settings/preferences/other/show.html.haml
@@ -0,0 +1,44 @@
+- content_for :page_title do
+  = t('settings.preferences')
+
+= simple_form_for current_user, url: settings_preferences_other_path, html: { method: :put } do |f|
+  = render 'shared/error_messages', object: current_user
+
+  .fields-group
+    = f.input :setting_noindex, as: :boolean, wrapper: :with_label
+
+  .fields-group
+    = f.input :setting_hide_network, as: :boolean, wrapper: :with_label
+
+  .fields-group
+    = f.input :setting_aggregate_reblogs, as: :boolean, wrapper: :with_label, recommended: true
+
+  - unless Setting.hide_followers_count
+    .fields-group
+      = f.input :setting_hide_followers_count, as: :boolean, wrapper: :with_label
+
+  %h4= t 'preferences.posting_defaults'
+
+  .fields-row
+    .fields-group.fields-row__column.fields-row__column-6
+      = f.input :setting_default_privacy, collection: Status.selectable_visibilities, wrapper: :with_label, include_blank: false, label_method: lambda { |visibility| safe_join([I18n.t("statuses.visibilities.#{visibility}"), I18n.t("statuses.visibilities.#{visibility}_long")], ' - ') }, required: false, hint: false
+
+    .fields-group.fields-row__column.fields-row__column-6
+      = f.input :setting_default_language, collection: [nil] + filterable_languages.sort, wrapper: :with_label, label_method: lambda { |locale| locale.nil? ? I18n.t('statuses.language_detection') : human_locale(locale) }, required: false, include_blank: false, hint: false
+
+  .fields-group
+    = f.input :setting_default_sensitive, as: :boolean, wrapper: :with_label
+
+  .fields-group
+    = f.input :setting_show_application, as: :boolean, wrapper: :with_label, recommended: true
+
+  .fields-group
+    = f.input :setting_default_content_type, collection: ['text/plain', 'text/markdown', 'text/html'], wrapper: :with_label, include_blank: false, label_method: lambda { |item| safe_join([t("simple_form.labels.defaults.setting_default_content_type_#{item.split('/')[1]}"), content_tag(:span, t("simple_form.hints.defaults.setting_default_content_type_#{item.split('/')[1]}"), class: 'hint')]) }, required: false, as: :radio_buttons, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li'
+
+  %h4= t 'preferences.public_timelines'
+
+  .fields-group
+    = f.input :chosen_languages, collection: filterable_languages.sort, wrapper: :with_block_label, include_blank: false, label_method: lambda { |locale| human_locale(locale) }, required: false, as: :check_boxes, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li'
+
+  .actions
+    = f.button :button, t('generic.save_changes'), type: :submit
diff --git a/app/views/settings/preferences/show.html.haml b/app/views/settings/preferences/show.html.haml
deleted file mode 100644
index 45c8b55db..000000000
--- a/app/views/settings/preferences/show.html.haml
+++ /dev/null
@@ -1,69 +0,0 @@
-- content_for :page_title do
-  = t('settings.preferences')
-
-%ul.quick-nav
-  %li= link_to t('preferences.languages'), '#settings_languages'
-  %li= link_to t('preferences.publishing'), '#settings_publishing'
-  %li= link_to t('preferences.other'), '#settings_other'
-  %li= link_to t('preferences.web'), '#settings_web'
-  %li= link_to t('settings.notifications'), settings_notifications_path
-
-= simple_form_for current_user, url: settings_preferences_path, html: { method: :put } do |f|
-  = render 'shared/error_messages', object: current_user
-
-  .fields-row#settings_languages
-    .fields-group.fields-row__column.fields-row__column-6
-      = f.input :locale, collection: I18n.available_locales, wrapper: :with_label, include_blank: false, label_method: lambda { |locale| human_locale(locale) }, selected: I18n.locale
-    .fields-group.fields-row__column.fields-row__column-6
-      = f.input :setting_default_language, collection: [nil] + filterable_languages.sort, wrapper: :with_label, label_method: lambda { |locale| locale.nil? ? I18n.t('statuses.language_detection') : human_locale(locale) }, required: false, include_blank: false
-
-  .fields-group
-    = f.input :chosen_languages, collection: filterable_languages.sort, wrapper: :with_block_label, include_blank: false, label_method: lambda { |locale| human_locale(locale) }, required: false, as: :check_boxes, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li'
-
-  %hr#settings_publishing/
-
-  .fields-group
-    = f.input :setting_default_privacy, collection: Status.selectable_visibilities, wrapper: :with_floating_label, include_blank: false, label_method: lambda { |visibility| safe_join([I18n.t("statuses.visibilities.#{visibility}"), content_tag(:span, I18n.t("statuses.visibilities.#{visibility}_long"), class: 'hint')]) }, required: false, as: :radio_buttons, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li'
-
-    = f.input :setting_default_content_type, collection: ['text/plain', 'text/markdown', 'text/html'], wrapper: :with_label, include_blank: false, label_method: lambda { |item| safe_join([t("simple_form.labels.defaults.setting_default_content_type_#{item.split('/')[1]}"), content_tag(:span, t("simple_form.hints.defaults.setting_default_content_type_#{item.split('/')[1]}"), class: 'hint')]) }, required: false, as: :radio_buttons, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li'
-
-    = f.input :setting_default_sensitive, as: :boolean, wrapper: :with_label
-
-  %hr#settings_other/
-
-  .fields-group
-    = f.input :setting_noindex, as: :boolean, wrapper: :with_label
-
-  .fields-group
-    = f.input :setting_hide_network, as: :boolean, wrapper: :with_label
-
-  .fields-group
-    = f.input :setting_show_application, as: :boolean, wrapper: :with_label
-
-  - unless Setting.hide_followers_count
-    .fields-group
-      = f.input :setting_hide_followers_count, as: :boolean, wrapper: :with_label
-
-  %hr#settings_web/
-
-  .fields-group
-    = f.input :setting_advanced_layout, as: :boolean, wrapper: :with_label
-
-  .fields-group
-    = f.input :setting_unfollow_modal, as: :boolean, wrapper: :with_label
-    = f.input :setting_boost_modal, as: :boolean, wrapper: :with_label
-    = f.input :setting_favourite_modal, as: :boolean, wrapper: :with_label
-    = f.input :setting_delete_modal, as: :boolean, wrapper: :with_label
-
-  .fields-group
-    = f.input :setting_aggregate_reblogs, as: :boolean, wrapper: :with_label
-
-  .fields-group
-    = f.input :setting_auto_play_gif, as: :boolean, wrapper: :with_label
-    = f.input :setting_display_media, collection: ['default', 'show_all', 'hide_all'], wrapper: :with_label, include_blank: false, label_method: lambda { |item| safe_join([t("simple_form.labels.defaults.setting_display_media_#{item}"), content_tag(:span, t("simple_form.hints.defaults.setting_display_media_#{item}"), class: 'hint')]) }, required: false, as: :radio_buttons, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li'
-    = f.input :setting_expand_spoilers, as: :boolean, wrapper: :with_label
-    = f.input :setting_reduce_motion, as: :boolean, wrapper: :with_label
-    = f.input :setting_system_font_ui, as: :boolean, wrapper: :with_label
-
-  .actions
-    = f.button :button, t('generic.save_changes'), type: :submit
diff --git a/app/views/settings/profiles/show.html.haml b/app/views/settings/profiles/show.html.haml
index 05cc93d69..9f794ca6b 100644
--- a/app/views/settings/profiles/show.html.haml
+++ b/app/views/settings/profiles/show.html.haml
@@ -28,7 +28,7 @@
 
   - if Setting.profile_directory
     .fields-group
-      = f.input :discoverable, as: :boolean, wrapper: :with_label, hint: t('simple_form.hints.defaults.discoverable_html', min_followers: Account::MIN_FOLLOWERS_DISCOVERY, path: explore_path)
+      = f.input :discoverable, as: :boolean, wrapper: :with_label, hint: t('simple_form.hints.defaults.discoverable_html', min_followers: Account::MIN_FOLLOWERS_DISCOVERY, path: explore_path), recommended: true
 
   %hr.spacer/
 
diff --git a/app/views/stream_entries/_detailed_status.html.haml b/app/views/stream_entries/_detailed_status.html.haml
index 23f2920d8..95b96feef 100644
--- a/app/views/stream_entries/_detailed_status.html.haml
+++ b/app/views/stream_entries/_detailed_status.html.haml
@@ -19,13 +19,14 @@
     - if status.spoiler_text?
       %p{ :style => ('margin-bottom: 0' unless current_account&.user&.setting_expand_spoilers) }<
         %span.p-summary> #{Formatter.instance.format_spoiler(status, autoplay: autoplay)}&nbsp;
-        %a.status__content__spoiler-link{ href: '#' }= t('statuses.show_more')
-    .e-content{ lang: status.language, style: "display: #{!current_account&.user&.setting_expand_spoilers && status.spoiler_text? ? 'none' : 'block'}; direction: #{rtl_status?(status) ? 'rtl' : 'ltr'}" }= Formatter.instance.format(status, custom_emojify: true, autoplay: autoplay)
+        %button.status__content__spoiler-link= t('statuses.show_more')
+    .e-content{ lang: status.language, style: "display: #{!current_account&.user&.setting_expand_spoilers && status.spoiler_text? ? 'none' : 'block'}; direction: #{rtl_status?(status) ? 'rtl' : 'ltr'}" }
+      = Formatter.instance.format(status, custom_emojify: true, autoplay: autoplay)
+      - if status.preloadable_poll
+        = react_component :poll, disabled: true, poll: ActiveModelSerializers::SerializableResource.new(status.preloadable_poll, serializer: REST::PollSerializer, scope: current_user, scope_name: :current_user).as_json do
+          = render partial: 'stream_entries/poll', locals: { status: status, poll: status.preloadable_poll, autoplay: autoplay }
 
-  - if status.preloadable_poll
-    = react_component :poll, disabled: true, poll: ActiveModelSerializers::SerializableResource.new(status.preloadable_poll, serializer: REST::PollSerializer, scope: current_user, scope_name: :current_user).as_json do
-      = render partial: 'stream_entries/poll', locals: { status: status, poll: status.preloadable_poll, autoplay: autoplay }
-  - elsif !status.media_attachments.empty?
+  - if !status.media_attachments.empty?
     - if status.media_attachments.first.video?
       - video = status.media_attachments.first
       = react_component :video, src: video.file.url(:original), preview: video.file.url(:small), blurhash: video.blurhash, sensitive: !current_account&.user&.show_all_media? && status.sensitive? || current_account&.user&.hide_all_media?, width: 670, height: 380, detailed: true, inline: true, alt: video.description do
diff --git a/app/views/stream_entries/_simple_status.html.haml b/app/views/stream_entries/_simple_status.html.haml
index 4df1a0cdf..d383d3443 100644
--- a/app/views/stream_entries/_simple_status.html.haml
+++ b/app/views/stream_entries/_simple_status.html.haml
@@ -23,14 +23,14 @@
     - if status.spoiler_text?
       %p{ :style => ('margin-bottom: 0' unless current_account&.user&.setting_expand_spoilers) }<
         %span.p-summary> #{Formatter.instance.format_spoiler(status, autoplay: autoplay)}&nbsp;
-        %a.status__content__spoiler-link{ href: '#' }= t('statuses.show_more')
+        %button.status__content__spoiler-link= t('statuses.show_more')
     .e-content{ lang: status.language, style: "display: #{!current_account&.user&.setting_expand_spoilers && status.spoiler_text? ? 'none' : 'block'}; direction: #{rtl_status?(status) ? 'rtl' : 'ltr'}" }<
       = Formatter.instance.format(status, custom_emojify: true, autoplay: autoplay)
+      - if status.preloadable_poll
+        = react_component :poll, disabled: true, poll: ActiveModelSerializers::SerializableResource.new(status.preloadable_poll, serializer: REST::PollSerializer, scope: current_user, scope_name: :current_user).as_json do
+          = render partial: 'stream_entries/poll', locals: { status: status, poll: status.preloadable_poll, autoplay: autoplay }
 
-  - if status.preloadable_poll
-    = react_component :poll, disabled: true, poll: ActiveModelSerializers::SerializableResource.new(status.preloadable_poll, serializer: REST::PollSerializer, scope: current_user, scope_name: :current_user).as_json do
-      = render partial: 'stream_entries/poll', locals: { status: status, poll: status.preloadable_poll, autoplay: autoplay }
-  - elsif !status.media_attachments.empty?
+  - if !status.media_attachments.empty?
     - if status.media_attachments.first.video?
       - video = status.media_attachments.first
       = react_component :video, src: video.file.url(:original), preview: video.file.url(:small), blurhash: video.blurhash, sensitive: !current_account&.user&.show_all_media? && status.sensitive? || current_account&.user&.hide_all_media?, width: 610, height: 343, inline: true, alt: video.description do
diff --git a/config/i18n-tasks.yml b/config/i18n-tasks.yml
index b2a621e85..e3bede60d 100644
--- a/config/i18n-tasks.yml
+++ b/config/i18n-tasks.yml
@@ -51,7 +51,7 @@ ignore_unused:
   - 'activerecord.errors.*'
   - '{devise,pagination,doorkeeper}.*'
   - '{date,datetime,time,number}.*'
-  - 'simple_form.{yes,no}'
+  - 'simple_form.{yes,no,recommended}'
   - 'simple_form.{placeholders,hints,labels}.*'
   - 'simple_form.{error_notification,required}.:'
   - 'errors.messages.*'
diff --git a/config/initializers/simple_form.rb b/config/initializers/simple_form.rb
index 386ede654..964526819 100644
--- a/config/initializers/simple_form.rb
+++ b/config/initializers/simple_form.rb
@@ -8,7 +8,16 @@ module AppendComponent
   end
 end
 
+module RecommendedComponent
+  def recommended(wrapper_options = nil)
+    return unless options[:recommended]
+    options[:label_text] = ->(raw_label_text, _required_label_text, _label_present) { safe_join([raw_label_text, ' ', content_tag(:span, I18n.t('simple_form.recommended'), class: 'recommended')]) }
+    nil
+  end
+end
+
 SimpleForm.include_component(AppendComponent)
+SimpleForm.include_component(RecommendedComponent)
 
 SimpleForm.setup do |config|
   # Wrappers are used by the form builder to generate a
@@ -65,6 +74,7 @@ SimpleForm.setup do |config|
     b.use :html5
 
     b.wrapper tag: :div, class: :label_input do |ba|
+      ba.optional :recommended
       ba.use :label
 
       ba.wrapper tag: :div, class: :label_input__wrapper do |bb|
diff --git a/config/locales/activerecord.ar.yml b/config/locales/activerecord.ar.yml
index 68c7fe939..2b39ee156 100644
--- a/config/locales/activerecord.ar.yml
+++ b/config/locales/activerecord.ar.yml
@@ -1,6 +1,10 @@
 ---
 ar:
   activerecord:
+    attributes:
+      poll:
+        expires_at: آخر أجل
+        options: الخيارات
     errors:
       models:
         account:
diff --git a/config/locales/activerecord.bg.yml b/config/locales/activerecord.bg.yml
new file mode 100644
index 000000000..d0e375da9
--- /dev/null
+++ b/config/locales/activerecord.bg.yml
@@ -0,0 +1 @@
+bg:
diff --git a/config/locales/activerecord.bn.yml b/config/locales/activerecord.bn.yml
new file mode 100644
index 000000000..152c69829
--- /dev/null
+++ b/config/locales/activerecord.bn.yml
@@ -0,0 +1 @@
+bn:
diff --git a/config/locales/activerecord.ca.yml b/config/locales/activerecord.ca.yml
index 19e39b5e7..2795a6b33 100644
--- a/config/locales/activerecord.ca.yml
+++ b/config/locales/activerecord.ca.yml
@@ -2,8 +2,9 @@
 ca:
   activerecord:
     attributes:
-      status:
-        owned_poll: Enquesta
+      poll:
+        expires_at: Data límit
+        options: Opcions
     errors:
       models:
         account:
diff --git a/config/locales/activerecord.da.yml b/config/locales/activerecord.da.yml
index 8e9db715b..5e7266ef1 100644
--- a/config/locales/activerecord.da.yml
+++ b/config/locales/activerecord.da.yml
@@ -1,9 +1,6 @@
 ---
 da:
   activerecord:
-    attributes:
-      status:
-        owned_poll: Afstemning
     errors:
       models:
         account:
diff --git a/config/locales/activerecord.de.yml b/config/locales/activerecord.de.yml
index ce465545b..46a48d234 100644
--- a/config/locales/activerecord.de.yml
+++ b/config/locales/activerecord.de.yml
@@ -4,9 +4,7 @@ de:
     attributes:
       poll:
         expires_at: Frist
-        options: Wahlen
-      status:
-        owned_poll: Umfrage
+        options: Wahlmöglichkeiten
     errors:
       models:
         account:
@@ -16,4 +14,4 @@ de:
         status:
           attributes:
             reblog:
-              taken: des Status existiert schon
+              taken: des Beitrags existiert schon
diff --git a/config/locales/activerecord.el.yml b/config/locales/activerecord.el.yml
index abeca78ac..36e5f508d 100644
--- a/config/locales/activerecord.el.yml
+++ b/config/locales/activerecord.el.yml
@@ -5,8 +5,6 @@ el:
       poll:
         expires_at: Προθεσμία
         options: Επιλογές
-      status:
-        owned_poll: Ψηφοφορία
     errors:
       models:
         account:
diff --git a/config/locales/activerecord.eo.yml b/config/locales/activerecord.eo.yml
new file mode 100644
index 000000000..f8a3cf18b
--- /dev/null
+++ b/config/locales/activerecord.eo.yml
@@ -0,0 +1,17 @@
+---
+eo:
+  activerecord:
+    attributes:
+      poll:
+        expires_at: Limdato
+        options: Elektoj
+    errors:
+      models:
+        account:
+          attributes:
+            username:
+              invalid: nur leteroj, ciferoj kaj substrekoj
+        status:
+          attributes:
+            reblog:
+              taken: de statuso jam ekzistas
diff --git a/config/locales/activerecord.es.yml b/config/locales/activerecord.es.yml
index d18b16834..f40e6c361 100644
--- a/config/locales/activerecord.es.yml
+++ b/config/locales/activerecord.es.yml
@@ -1,12 +1,16 @@
 ---
 es:
   activerecord:
+    attributes:
+      poll:
+        expires_at: Vencimiento
+        options: Opciones
     errors:
       models:
         account:
           attributes:
             username:
-              invalid: solo letras, números y guiones bajos
+              invalid: sólo letras, números y guiones bajos
         status:
           attributes:
             reblog:
diff --git a/config/locales/activerecord.eu.yml b/config/locales/activerecord.eu.yml
index 64c8bc04e..235738f22 100644
--- a/config/locales/activerecord.eu.yml
+++ b/config/locales/activerecord.eu.yml
@@ -1,6 +1,10 @@
 ---
 eu:
   activerecord:
+    attributes:
+      poll:
+        expires_at: Epemuga
+        options: Aukerak
     errors:
       models:
         account:
diff --git a/config/locales/activerecord.fa.yml b/config/locales/activerecord.fa.yml
index 0cc6c12d7..1cd50eec7 100644
--- a/config/locales/activerecord.fa.yml
+++ b/config/locales/activerecord.fa.yml
@@ -1,9 +1,6 @@
 ---
 fa:
   activerecord:
-    attributes:
-      status:
-        owned_poll: رأی‌گیری
     errors:
       models:
         account:
diff --git a/config/locales/activerecord.fi.yml b/config/locales/activerecord.fi.yml
new file mode 100644
index 000000000..23c538b19
--- /dev/null
+++ b/config/locales/activerecord.fi.yml
@@ -0,0 +1 @@
+fi:
diff --git a/config/locales/activerecord.gl.yml b/config/locales/activerecord.gl.yml
index 3792f3476..0bc27502c 100644
--- a/config/locales/activerecord.gl.yml
+++ b/config/locales/activerecord.gl.yml
@@ -5,8 +5,6 @@ gl:
       poll:
         expires_at: Caducidade
         options: Opcións
-      status:
-        owned_poll: Sondaxe
     errors:
       models:
         account:
diff --git a/config/locales/activerecord.hr.yml b/config/locales/activerecord.hr.yml
new file mode 100644
index 000000000..f67f33c7e
--- /dev/null
+++ b/config/locales/activerecord.hr.yml
@@ -0,0 +1 @@
+hr:
diff --git a/config/locales/activerecord.hu.yml b/config/locales/activerecord.hu.yml
new file mode 100644
index 000000000..52314c50c
--- /dev/null
+++ b/config/locales/activerecord.hu.yml
@@ -0,0 +1 @@
+hu:
diff --git a/config/locales/activerecord.hy.yml b/config/locales/activerecord.hy.yml
new file mode 100644
index 000000000..c40654016
--- /dev/null
+++ b/config/locales/activerecord.hy.yml
@@ -0,0 +1 @@
+hy:
diff --git a/config/locales/activerecord.io.yml b/config/locales/activerecord.io.yml
new file mode 100644
index 000000000..c63dc0e8d
--- /dev/null
+++ b/config/locales/activerecord.io.yml
@@ -0,0 +1 @@
+io:
diff --git a/config/locales/activerecord.ja.yml b/config/locales/activerecord.ja.yml
index ce147819a..8b0eefb12 100644
--- a/config/locales/activerecord.ja.yml
+++ b/config/locales/activerecord.ja.yml
@@ -5,8 +5,6 @@ ja:
       poll:
         expires_at: 期限
         options: 項目
-      user:
-        email: メールアドレス
     errors:
       models:
         account:
diff --git a/config/locales/activerecord.ko.yml b/config/locales/activerecord.ko.yml
new file mode 100644
index 000000000..3c081269a
--- /dev/null
+++ b/config/locales/activerecord.ko.yml
@@ -0,0 +1,17 @@
+---
+ko:
+  activerecord:
+    attributes:
+      poll:
+        expires_at: 마감 기한
+        options: 선택
+    errors:
+      models:
+        account:
+          attributes:
+            username:
+              invalid: 영문자, 숫자, _만 사용 가능
+        status:
+          attributes:
+            reblog:
+              taken: 이미 게시물이 존재합니다
diff --git a/config/locales/activerecord.lt.yml b/config/locales/activerecord.lt.yml
new file mode 100644
index 000000000..6c5cb837a
--- /dev/null
+++ b/config/locales/activerecord.lt.yml
@@ -0,0 +1 @@
+lt:
diff --git a/config/locales/activerecord.lv.yml b/config/locales/activerecord.lv.yml
new file mode 100644
index 000000000..1be0eabc0
--- /dev/null
+++ b/config/locales/activerecord.lv.yml
@@ -0,0 +1 @@
+lv:
diff --git a/config/locales/activerecord.ms.yml b/config/locales/activerecord.ms.yml
new file mode 100644
index 000000000..2925688a0
--- /dev/null
+++ b/config/locales/activerecord.ms.yml
@@ -0,0 +1 @@
+ms:
diff --git a/config/locales/activerecord.nl.yml b/config/locales/activerecord.nl.yml
index 31348b18f..a9bcb33fa 100644
--- a/config/locales/activerecord.nl.yml
+++ b/config/locales/activerecord.nl.yml
@@ -5,8 +5,6 @@ nl:
       poll:
         expires_at: Deadline
         options: Keuzes
-      status:
-        owned_poll: Poll
     errors:
       models:
         account:
diff --git a/config/locales/activerecord.pl.yml b/config/locales/activerecord.pl.yml
index bd8e40a6a..f10420ec7 100644
--- a/config/locales/activerecord.pl.yml
+++ b/config/locales/activerecord.pl.yml
@@ -2,8 +2,9 @@
 pl:
   activerecord:
     attributes:
-      user:
-        email: adres e-mail
+      poll:
+        expires_at: Ostateczny termin
+        options: Opcje
     errors:
       models:
         account:
diff --git a/config/locales/activerecord.ro.yml b/config/locales/activerecord.ro.yml
new file mode 100644
index 000000000..79dbaa871
--- /dev/null
+++ b/config/locales/activerecord.ro.yml
@@ -0,0 +1 @@
+ro:
diff --git a/config/locales/activerecord.sk.yml b/config/locales/activerecord.sk.yml
index 26f6c9737..eb8d75d48 100644
--- a/config/locales/activerecord.sk.yml
+++ b/config/locales/activerecord.sk.yml
@@ -5,8 +5,6 @@ sk:
       poll:
         expires_at: Trvá do
         options: Voľby
-      status:
-        owned_poll: Anketa
     errors:
       models:
         account:
diff --git a/config/locales/activerecord.ta.yml b/config/locales/activerecord.ta.yml
new file mode 100644
index 000000000..4320953ce
--- /dev/null
+++ b/config/locales/activerecord.ta.yml
@@ -0,0 +1 @@
+ta:
diff --git a/config/locales/activerecord.te.yml b/config/locales/activerecord.te.yml
new file mode 100644
index 000000000..34c54f18f
--- /dev/null
+++ b/config/locales/activerecord.te.yml
@@ -0,0 +1 @@
+te:
diff --git a/config/locales/activerecord.zh-CN.yml b/config/locales/activerecord.zh-CN.yml
index 8628d6677..8d2ddfd14 100644
--- a/config/locales/activerecord.zh-CN.yml
+++ b/config/locales/activerecord.zh-CN.yml
@@ -1,6 +1,10 @@
 ---
 zh-CN:
   activerecord:
+    attributes:
+      poll:
+        expires_at: 截止时间
+        options: 选项
     errors:
       models:
         account:
diff --git a/config/locales/activerecord.zh-TW.yml b/config/locales/activerecord.zh-TW.yml
new file mode 100644
index 000000000..cb82c0526
--- /dev/null
+++ b/config/locales/activerecord.zh-TW.yml
@@ -0,0 +1 @@
+zh-TW:
diff --git a/config/locales/ar.yml b/config/locales/ar.yml
index fe49ac7f6..8da2de5ec 100644
--- a/config/locales/ar.yml
+++ b/config/locales/ar.yml
@@ -2,22 +2,27 @@
 ar:
   about:
     about_hashtag_html: هذه تبويقات متاحة للجمهور تحتوي على الكلمات الدلالية <strong>#%{hashtag}</strong>. يمكنك التفاعل معها إن كان لديك حساب في أي مكان على الفديفرس.
-    about_mastodon_html: ماستدون شبكة إجتماعية مبنية على أسُس بروتوكولات برمجيات الويب الحرة و مفتوحة المصدر. و هو لامركزي تمامًا كالبريد الإلكتروني.
+    about_mastodon_html: ماستدون شبكة اجتماعية مبنية على أسُس بروتوكولات برمجيات الويب الحرة و مفتوحة المصدر. و هو لامركزي تمامًا كالبريد الإلكتروني.
     about_this: عن مثيل الخادوم هذا
-    administered_by: 'يُديره :'
+    active_count_after: نشط
+    administered_by: 'يُديره:'
     api: واجهة برمجة التطبيقات
     apps: تطبيقات الأجهزة المحمولة
     contact: للتواصل معنا
     contact_missing: لم يتم تعيينه
     contact_unavailable: غير متوفر
+    discover_users: اكتشف مستخدِمين
     documentation: الدليل
     extended_description_html: |
       <h3>مكان جيد للقواعد</h3>
       <p>لم يتم بعد إدخال الوصف الطويل.</p>
     generic_description: "%{domain} هو سيرفر من بين سيرفرات الشبكة"
+    get_apps: جرّب تطبيقا على الموبايل
     hosted_on: ماستدون مُستضاف على %{domain}
     learn_more: تعلم المزيد
     privacy_policy: سياسة الخصوصية
+    see_whats_happening: اطّلع على ما يجري
+    server_stats: 'إحصائيات الخادم:'
     source_code: الشفرة المصدرية
     status_count_after:
       few: منشورات
@@ -27,6 +32,7 @@ ar:
       two: منشورات
       zero: منشورات
     status_count_before: نشروا
+    tagline: اتبع أصدقائك وصديقاتك واكتشف آخرين وأخريات
     terms: شروط الخدمة
     user_count_after:
       few: مستخدمين
@@ -38,8 +44,8 @@ ar:
     user_count_before: يستضيف
     what_is_mastodon: ما هو ماستدون ؟
   accounts:
-    choices_html: 'توصيات %{name} :'
-    follow: إتبع
+    choices_html: 'توصيات %{name}:'
+    follow: اتبع
     followers:
       few: متابِعون
       many: متابِعون
@@ -54,7 +60,7 @@ ar:
     media: الوسائط
     moved_html: "%{name} إنتقلَ إلى %{new_profile_link} :"
     network_hidden: إنّ المعطيات غير متوفرة
-    nothing_here: لا يوجد أي شيء هنا !
+    nothing_here: لا يوجد أي شيء هنا!
     people_followed_by: الأشخاص الذين يتبعهم %{name}
     people_who_follow: الأشخاص الذين يتبعون %{name}
     pin_errors:
@@ -68,27 +74,30 @@ ar:
       zero: تبويقات
     posts_tab_heading: تبويقات
     posts_with_replies: التبويقات و الردود
-    reserved_username: إسم المستخدم محجوز
+    reserved_username: اسم المستخدم محجوز
     roles:
       admin: المدير
       bot: روبوت
       moderator: مُشرِف
+    unavailable: الحساب غير متوفر
     unfollow: إلغاء المتابعة
   admin:
     account_actions:
-      action: تنفيذ الاجراء
+      action: تنفيذ الإجراء
       title: اتخاذ إجراء إشراف على %{acct}
     account_moderation_notes:
-      create: إترك ملاحظة
-      created_msg: تم إنشاء ملاحظة الإشراف بنجاح !
+      create: اترك ملاحظة
+      created_msg: تم إنشاء ملاحظة الإشراف بنجاح!
       delete: حذف
-      destroyed_msg: تم تدمير ملاحظة الإشراف بنجاح !
+      destroyed_msg: تم تدمير ملاحظة الإشراف بنجاح!
     accounts:
+      approve: صادِق عليه
+      approve_all: الموافقة على الكل
       are_you_sure: متأكد ؟
       avatar: الصورة الرمزية
       by_domain: النطاق
       change_email:
-        changed_msg: تم تعديل عنوان البريد الإلكتروني الخاص بالحساب بنجاح !
+        changed_msg: تم تعديل عنوان البريد الإلكتروني الخاص بالحساب بنجاح!
         current_email: عنوان البريد الإلكتروني الحالي
         label: تعديل عنوان البريد الإلكتروني
         new_email: عنوان البريد الإلكتروني الجديد
@@ -102,7 +111,7 @@ ar:
       disable: تعطيل
       disable_two_factor_authentication: تعطيل المصادقة بخطوتين
       disabled: معطَّل
-      display_name: عرض الإسم
+      display_name: عرض الاسم
       domain: النطاق
       edit: تعديل
       email: البريد الإلكتروني
@@ -129,15 +138,18 @@ ar:
       moderation:
         active: نشِط
         all: الكل
+        pending: قيد المراجعة
         silenced: تم كتمه
         suspended: مُجَمَّد
         title: الإشراف
       moderation_notes: ملاحظات الإشراف
       most_recent_activity: آخر نشاط حديث
       most_recent_ip: أحدث عنوان إيبي
+      no_account_selected: لم يطرأ أي تغيير على أي حساب بما أنه لم يتم اختيار أي واحد
       no_limits_imposed: مِن دون حدود مشروطة
       not_subscribed: غير مشترك
       outbox_url: رابط صندوق الصادر
+      pending: في انتظار المراجعة
       perform_full_suspension: تعليق الحساب
       profile_url: رابط الملف الشخصي
       promote: ترقية
@@ -145,15 +157,17 @@ ar:
       public: عمومي
       push_subscription_expires: انتهاء الاشتراك ”PuSH“
       redownload: تحديث الصفحة الشخصية
+      reject: ارفض
+      reject_all: ارفض الكل
       remove_avatar: حذف الصورة الرمزية
       remove_header: حذف الرأسية
       resend_confirmation:
         already_confirmed: هذا المستخدم مؤكد بالفعل
-        send: أعد إرسال رسالة البريد الالكتروني الخاصة بالتأكيد
+        send: أعد إرسال رسالة البريد الإلكتروني الخاصة بالتأكيد
         success: تم إرسال رسالة التأكيد بنجاح!
       reset: إعادة التعيين
       reset_password: إعادة ضبط كلمة السر
-      resubscribe: إعادة الإشتراك
+      resubscribe: إعادة الاشتراك
       role: الصلاحيات
       roles:
         admin: مدير
@@ -165,18 +179,19 @@ ar:
       shared_inbox_url: رابط الصندوق المُشترَك للبريد الوارد
       show:
         created_reports: البلاغات التي أنشأها هذا الحساب
-        targeted_reports: الشكاوي التي أُنشِأت مِن طرف الآخَرين
+        targeted_reports: الشكاوى التي أُنشِأت مِن طرف الآخَرين
       silence: كتم
       silenced: تم كتمه
       statuses: المنشورات
       subscribe: اشترك
       suspended: تم تعليقه
+      time_in_queue: في قائمة الانتظار %{time}
       title: الحسابات
       unconfirmed_email: البريد الإلكتروني غير مؤكد
       undo_silenced: رفع الصمت
       undo_suspension: إلغاء تعليق الحساب
       unsubscribe: إلغاء الاشتراك
-      username: إسم المستخدم
+      username: اسم المستخدم
       warn: تحذير
       web: الويب
     action_logs:
@@ -193,7 +208,7 @@ ar:
         destroy_domain_block: "%{name} قام بإلغاء الحجب عن النطاق %{target}"
         destroy_email_domain_block: قام %{name} بإضافة نطاق البريد الإلكتروني %{target} إلى اللائحة البيضاء
         destroy_status: لقد قام %{name} بحذف منشور %{target}
-        disable_2fa_user: "%{name} لقد قام  بتعطيل ميزة المصادقة بخطوتين للمستخدم %{target}"
+        disable_2fa_user: "%{name} لقد قام بتعطيل ميزة المصادقة بخطوتين للمستخدم %{target}"
         disable_custom_emoji: "%{name} قام بتعطيل الإيموجي %{target}"
         disable_user: "%{name} لقد قام بتعطيل تسجيل الدخول للمستخدِم %{target}"
         enable_custom_emoji: "%{name} قام بتنشيط الإيموجي %{target}"
@@ -218,9 +233,9 @@ ar:
       copied_msg: تم إنشاء نسخة محلية للإيموجي بنجاح
       copy: نسخ
       copy_failed_msg: فشلت عملية إنشاء نسخة محلية لهذا الإيموجي
-      created_msg: تم إنشاء الإيموجي بنجاح !
+      created_msg: تم إنشاء الإيموجي بنجاح!
       delete: حذف
-      destroyed_msg: تمت عملية تدمير الإيموجي بنجاح !
+      destroyed_msg: تمت عملية تدمير الإيموجي بنجاح!
       disable: تعطيل
       disabled_msg: تمت عملية تعطيل ذلك الإيموجي بنجاح
       emoji: إيموجي
@@ -235,8 +250,8 @@ ar:
       shortcode_hint: على الأقل حرفين، و فقط رموز أبجدية عددية و أسطر سفلية
       title: الإيموجي الخاصة
       unlisted: غير مدرج
-      update_failed_msg: تعذرت عملية تحذيث ذاك الإيموجي
-      updated_msg: تم تحديث الإيموجي بنجاح !
+      update_failed_msg: تعذرت عملية تحديث ذاك الإيموجي
+      updated_msg: تم تحديث الإيموجي بنجاح!
       upload: رفع
     dashboard:
       backlog: الأعمال المتراكمة
@@ -246,9 +261,10 @@ ar:
       feature_profile_directory: دليل الحسابات
       feature_registrations: التسجيلات
       feature_relay: المُرحّل الفديرالي
+      feature_timeline_preview: معاينة الخيط الزمني
       features: الميّزات
       hidden_service: الفيديرالية مع الخدمات الخفية
-      open_reports: فتح الشكاوي
+      open_reports: فتح الشكاوى
       recent_users: أحدث المستخدِمين
       search: البحث النصي الكامل
       single_user_mode: وضع المستخدِم الأوحد
@@ -286,8 +302,8 @@ ar:
           many: "%{count} حسابات معنية في قاعدة البيانات"
           one: حساب واحد معني في قاعدة البيانات
           other: "%{count} حسابات معنية في قاعدة البيانات"
-          two: حسابات معنية في قاعدة البيانات
-          zero: حسابات معنية في قاعدة البيانات
+          two: "%{count} حسابات معنية في قاعدة البيانات"
+          zero: "%{count} حسابات معنية في قاعدة البيانات"
         retroactive:
           silence: إلغاء الكتم عن كافة الحسابات المتواجدة على هذا النطاق
           suspend: إلغاء التعليق المفروض على كافة حسابات هذا النطاق
@@ -319,6 +335,7 @@ ar:
         zero: "%{count} حسابات معروفة"
       moderation:
         all: كافتها
+        limited: محدود
         title: الإشراف
       title: الفديرالية
       total_blocked_by_us: المحجوبة مِن طرفنا
@@ -334,13 +351,15 @@ ar:
         expired: المنتهي صلاحيتها
         title: التصفية
       title: الدعوات
+    pending_accounts:
+      title: الحسابات المعلقة (%{count})
     relays:
       add_new: إضافة مُرحّل جديد
       delete: حذف
       disable: تعطيل
       disabled: مُعطَّل
       enable: تشغيل
-      enable_hint: عندما تقوم بتنشيط هذه الميزة، سوف يشترك خادومك في جميع التبويقات القادمة مِن هذا المُرحِّل و سيشرع كذلك بإرسال كافة التبويقات العمومية إليه.
+      enable_hint: عندما تقوم بتنشيط هذه الميزة، سوف يشترك خادومكم في جميع التبويقات القادمة مِن هذا المُرحِّل و سيشرع كذلك بإرسال كافة التبويقات العمومية إليه.
       enabled: مُشغَّل
       inbox_url: رابط المُرحّل
       pending: في انتظار تسريح المُرحِّل
@@ -362,14 +381,14 @@ ar:
       comment:
         none: لا شيء
       created_at: ذكرت
-      mark_as_resolved: إعتبار الشكوى كمحلولة
-      mark_as_unresolved: علام كغير محلولة
+      mark_as_resolved: اعتبار الشكوى كمحلولة
+      mark_as_unresolved: علم كغير محلولة
       notes:
         create: اضف ملاحظة
         create_and_resolve: الحل مع ملاحظة
         create_and_unresolve: إعادة فتح مع ملاحظة
         delete: حذف
-        placeholder: قم بوصف الإجراءات التي تم اتخاذها أو أي تحديثات أخرى ذات علاقة …
+        placeholder: قم بوصف الإجراءات التي تم اتخاذها أو أي تحديثات أخرى ذات علاقة...
       reopen: إعادة فتح الشكوى
       report: 'الشكوى #%{id}'
       reported_account: حساب مُبلّغ عنه
@@ -377,20 +396,20 @@ ar:
       resolved: معالجة
       resolved_msg: تم حل تقرير بنجاح!
       status: الحالة
-      title: الشكاوي
+      title: الشكاوى
       unassign: إلغاء تعيين
       unresolved: غير معالجة
       updated_at: محدث
     settings:
       activity_api_enabled:
-        desc_html: عدد المنشورات المحلية و المستخدمين النشطين و التسجيلات الأسبوعية الجديدة
+        desc_html: عدد المنشورات المحلية و المستخدمين الناشطين و التسجيلات الأسبوعية الجديدة
         title: نشر مُجمل الإحصائيات عن نشاط المستخدمين
       bootstrap_timeline_accounts:
         desc_html: افصل بين أسماء المستخدمين المتعددة بواسطة الفاصلة. استعمل الحسابات المحلية والمفتوحة فقط. الافتراضي عندما تكون فارغة كل المسؤولين المحليين.
-        title: الإشتراكات الإفتراضية للمستخدمين الجدد
+        title: الاشتراكات الافتراضية للمستخدمين الجدد
       contact_information:
         email: البريد الإلكتروني المهني
-        username: الإتصال بالمستخدِم
+        username: الاتصال بالمستخدِم
       custom_css:
         desc_html: يقوم بتغيير المظهر بواسطة سي أس أس يُحمَّل على كافة الصفحات
         title: سي أس أس مخصص
@@ -398,7 +417,7 @@ ar:
         desc_html: معروض على الصفحة الأولى. لا يقل عن 600 × 100 بكسل. عند عدم التعيين ، تعود الصورة إلى النسخة المصغرة على سبيل المثال
         title: الصورة الرأسية
       peers_api_enabled:
-        desc_html: أسماء النطاقات التي إلتقى بها مثيل الخادوم على البيئة الموحَّدة فيديفرس
+        desc_html: أسماء النطاقات التي التقى بها مثيل الخادوم على البيئة الموحَّدة فديفرس
         title: نشر عدد مثيلات الخوادم التي تم مصادفتها
       preview_sensitive_media:
         desc_html: روابط المُعَاينة على مواقع الويب الأخرى ستقوم بعرض صُوَر مصغّرة حتى و إن كانت الوسائط حساسة
@@ -416,9 +435,13 @@ ar:
         min_invite_role:
           disabled: لا أحد
           title: المستخدِمون المصرح لهم لإرسال الدعوات
+      registrations_mode:
+        modes:
+          none: لا أحد يمكنه إنشاء حساب
+          open: يمكن للجميع إنشاء حساب
+        title: طريقة إنشاء الحسابات
       show_known_fediverse_at_about_page:
-        desc_html: عند التثبت ، سوف تظهر toots من جميع fediverse المعروفة على عرض مسبق. وإلا فإنه سيعرض فقط toots المحلية.
-        title: إظهار الفيديفرس الموحَّد في خيط المُعايَنة
+        title: إظهار الفديفرس الموحَّد في خيط المُعايَنة
       show_staff_badge:
         desc_html: عرض شارة الموظفين على صفحة المستخدم
         title: إظهار شارة الموظفين
@@ -429,17 +452,17 @@ ar:
         desc_html: مكان جيد لمدونة قواعد السلوك والقواعد والإرشادات وغيرها من الأمور التي تحدد حالتك. يمكنك استخدام علامات HTML
         title: الوصف المُفصّل للموقع
       site_short_description:
-        desc_html: يتم عرضه في لوحة جانبية و في البيانات الوصفية. قم بوصف ماستدون و ما يميز هذا السيرفر عن الآخرين في فقرة موجزة. إن تركت الحقل فارغا فسوف يتم عرض الوصف الإفتراضي لمثيل الخادوم.
+        desc_html: يتم عرضه في لوحة جانبية و في البيانات الوصفية. قم بوصف ماستدون و ما يميز هذا السيرفر عن الآخرين في فقرة موجزة. إن تركت الحقل فارغا فسوف يتم عرض الوصف الافتراضي لمثيل الخادوم.
         title: مقدمة وصفية قصيرة عن مثيل الخادوم
       site_terms:
         desc_html: يمكنك كتابة سياسة الخصوصية الخاصة بك ، شروط الخدمة أو غيرها من القوانين. يمكنك استخدام علامات HTML
         title: شروط الخدمة المخصصة
-      site_title: إسم مثيل الخادم
+      site_title: اسم مثيل الخادم
       thumbnail:
         desc_html: يستخدم للعروض السابقة عبر Open Graph و API. 1200x630px موصى به
         title: الصورة الرمزية المصغرة لمثيل الخادوم
       timeline_preview:
-        desc_html: عرض الخيط العمومي على صفحة الإستقبال
+        desc_html: عرض الخيط العمومي على صفحة الاستقبال
         title: مُعاينة الخيط العام
       title: إعدادات الموقع
     statuses:
@@ -460,7 +483,6 @@ ar:
       confirmed: مؤكَّد
       expires_in: تنتهي مدة صلاحيتها في
       last_delivery: آخر إيداع
-      title: WebSub
       topic: الموضوع
     tags:
       accounts: الحسابات
@@ -478,15 +500,20 @@ ar:
       edit_preset: تعديل نموذج التحذير
       title: إدارة نماذج التحذير
   admin_mailer:
+    new_pending_account:
+      subject: حساب جديد في انتظار مراجعة على %{instance} (%{username})
     new_report:
       body: قام %{reporter} بالإبلاغ عن %{target}
       body_remote: أبلغ شخص ما من %{domain} عن %{target}
       subject: تقرير جديد ل%{instance} (#%{id})
+  appearance:
+    advanced_web_interface: واجهة الويب المتقدمة
+    confirmation_dialogs: نوافذ التأكيد
+    sensitive_content: محتوى حساس
   application_mailer:
     notification_preferences: تعديل خيارات البريد الإلكتروني
     salutation: "%{name}،"
-    settings: 'تغيير تفضيلات البريد الإلكتروني : %{link}'
-    view: 'View:'
+    settings: 'تغيير تفضيلات البريد الإلكتروني: %{link}'
     view_profile: عرض الملف الشخصي
     view_status: عرض المنشور
   applications:
@@ -495,10 +522,12 @@ ar:
     invalid_url: إن الرابط المقدم غير صالح
     regenerate_token: إعادة توليد رمز النفاذ
     token_regenerated: تم إعادة إنشاء الرمز الوصول بنجاح
-    warning: كن حذرا مع هذه البيانات. لا تقم أبدا بمشاركتها مع الآخَرين !
+    warning: كن حذرا مع هذه البيانات. لا تقم أبدا بمشاركتها مع الآخَرين!
     your_token: رمز نفاذك
   auth:
+    apply_for_account: اطلب دعوة
     change_password: الكلمة السرية
+    checkbox_agreement_html: أوافق على <a href="%{rules_path}" target="_blank">قواعد الخادم</a> و <a href="%{terms_path}" target="_blank">شروط الخدمة</a>
     confirm_email: تأكيد عنوان البريد الإلكتروني
     delete_account: حذف حساب
     delete_account_html: إن كنت ترغب في حذف حسابك يُمكنك <a href="%{path}">المواصلة هنا</a>. سوف يُطلَبُ منك التأكيد قبل الحذف.
@@ -507,23 +536,25 @@ ar:
     invalid_reset_password_token: رمز إعادة تعيين كلمة المرور غير صالح أو منتهي الصلاحية. يرجى طلب واحد جديد.
     login: تسجيل الدخول
     logout: خروج
-    migrate_account: الإنتقال إلى حساب آخر
+    migrate_account: الانتقال إلى حساب آخر
     migrate_account_html: إن كنت ترغب في تحويل هذا الحساب نحو حساب آخَر، يُمكِنُك <a href="%{path}">إعداده هنا</a>.
     or_log_in_with: أو قم بتسجيل الدخول بواسطة
     providers:
       cas: CAS
       saml: SAML
     register: إنشاء حساب
+    registration_closed: لا يقبل %{instance} استقبال أعضاء جدد
     resend_confirmation: إعادة إرسال تعليمات التأكيد
     reset_password: إعادة تعيين كلمة المرور
     security: الأمان
     set_new_password: إدخال كلمة مرور جديدة
+    trouble_logging_in: هل صادفتكم مشكلة في الولوج؟
   authorize_follow:
     already_following: أنت تتابع بالفعل هذا الحساب
     error: يا للأسف، وقع هناك خطأ إثر عملية البحث عن الحساب عن بعد
-    follow: إتبع
-    follow_request: 'لقد قمت بإرسال طلب متابعة إلى :'
-    following: 'مرحى ! أنت الآن تتبع :'
+    follow: اتبع
+    follow_request: 'لقد قمت بإرسال طلب متابعة إلى:'
+    following: 'مرحى! أنت الآن تتبع:'
     post_follow:
       close: أو يمكنك إغلاق هذه النافذة.
       return: عرض الملف الشخصي للمستخدم
@@ -566,19 +597,21 @@ ar:
     '404': إنّ الصفحة التي تبحث عنها لا وجود لها أصلا.
     '410': إنّ الصفحة التي تبحث عنها لم تعد موجودة.
     '422':
-      content: فشل التحقق الآمن. ربما منعتَ كعكات الكوكيز ؟
+      content: فشل التحقق الآمن. ربما منعتَ كعكات الكوكيز؟
       title: فشِل التحقق الآمن
     '429': طلبات كثيرة جدا
     '500':
       content: نحن متأسفون، لقد حدث خطأ ما مِن جانبنا.
       title: هذه الصفحة خاطئة
     noscript_html: يرجى تفعيل الجافا سكريبت لاستخدام تطبيق الويب لماستدون، أو عِوض ذلك قوموا بتجريب إحدى <a href="%{apps_path}">التطبيقات الأصلية</a> الدّاعمة لماستدون على منصّتكم.
+  existing_username_validator:
+    not_found_multiple: تعذر العثور على %{usernames}
   exports:
     archive_takeout:
       date: التاريخ
       download: تنزيل نسخة لحسابك
       hint_html: بإمكانك طلب نسخة كاملة لـ <strong>كافة تبويقاتك و الوسائط التي قمت بنشرها</strong>. البيانات المُصدَّرة ستكون محفوظة على شكل نسق ActivityPub و باستطاعتك قراءتها بأي برنامج يدعم هذا النسق. يُمكنك طلب نسخة كل 7 أيام.
-      in_progress: عملية جمع نسخة لبيانات حسابك جارية …
+      in_progress: عملية جمع نسخة لبيانات حسابك جارية...
       request: طلب نسخة لحسابك
       size: الحجم
     blocks: قمت بحظر
@@ -608,11 +641,13 @@ ar:
       title: إضافة عامل تصفية جديد
   footer:
     developers: المطورون
-    more: المزيد …
+    more: المزيد…
     resources: الموارد
   generic:
-    changes_saved_msg: تم حفظ التعديلات بنجاح !
+    all: الكل
+    changes_saved_msg: تم حفظ التعديلات بنجاح!
     copy: نسخ
+    order_by: ترتيب بحسب
     save_changes: حفظ التغييرات
     validation_errors:
       few: هناك شيء ما ليس على ما يرام! يُرجى مراجعة الأخطاء الـ %{count} أدناه
@@ -621,6 +656,17 @@ ar:
       other: هناك شيء ما ليس على ما يرام! يُرجى مراجعة الأخطاء الـ %{count} أدناه
       two: هناك شيء ما ليس على ما يرام! يُرجى مراجعة الأخطاء الـ %{count} أدناه
       zero: هناك شيء ما ليس على ما يرام! يُرجى مراجعة الأخطاء الـ %{count} أدناه
+  identity_proofs:
+    active: نشط
+    authorize: نعم ، قم بترخيصه
+    authorize_connection_prompt: هل تريد ترخيص هذا الاتصال المشفّر؟
+    i_am_html: أنا %{username} على %{service}.
+    identity: الهوية
+    inactive: ليس نشطا
+    publicize_checkbox: 'وقم بتبويق هذا:'
+    publicize_toot: 'متحقق منه! أنا %{username} على %{service}: %{url}'
+    status: حالة التحقق
+    view_proof: عرض الدليل
   imports:
     modes:
       merge: دمج
@@ -638,7 +684,7 @@ ar:
   in_memoriam_html: في ذكرى.
   invites:
     delete: تعطيل
-    expired: إنتهت صلاحيتها
+    expired: انتهت صلاحيتها
     expires_in:
       '1800': 30 دقيقة
       '21600': 6 ساعات
@@ -648,14 +694,14 @@ ar:
       '86400': يوم واحد
     expires_in_prompt: أبدا
     generate: توليد
-    invited_by: 'تمت دعوتك من طرف :'
+    invited_by: 'تمت دعوتك من طرف:'
     max_uses:
       few: "%{count} استخدامات"
       many: "%{count} استخدامات"
       one: استخدام واحد
       other: "%{count} استخدامات"
-      two: استخدامات
-      zero: استخدامات
+      two: "%{count} استخدامات"
+      zero: "%{count} استخدامات"
     max_uses_prompt: بلا حدود
     prompt: توليد و مشاركة روابط للسماح للآخَرين بالنفاذ إلى مثيل الخادوم هذا
     table:
@@ -671,16 +717,16 @@ ar:
       too_many: لا يمكن إرفاق أكثر من 4 ملفات
   migrations:
     acct: username@domain للحساب الجديد
-    currently_redirecting: 'تم تحويل رابط ملفك الشخصي إلى :'
+    currently_redirecting: 'تم تحويل رابط ملفك الشخصي إلى:'
     proceed: حفظ
-    updated_msg: تم تحديث إعدادات ترحيل حسابك بنجاح !
+    updated_msg: تم تحديث إعدادات ترحيل حسابك بنجاح!
   moderation:
     title: الإشراف
   notification_mailer:
     digest:
       action: معاينة كافة الإشعارات
-      body: هذا هو مُلَخَّص الرسائل التي فاتتك وذلك منذ آخر زيارة لك في  %{since}
-      mention: "%{name} أشار إليك في :"
+      body: هذا هو مُلَخَّص الرسائل التي فاتتك وذلك منذ آخر زيارة لك في %{since}
+      mention: "%{name} أشار إليك في:"
       new_followers_summary:
         few: رائع، لقد قام بمتابَعتك %{count} مُتابِعون جُدد أثناء فترة غيابك عن ماستدون!
         many: رائع، لقد قام بمتابَعتك %{count} مُتابِعون جُدد أثناء فترة غيابك عن ماستدون!
@@ -693,15 +739,15 @@ ar:
         many: "%{count} إشعارات جديدة منذ آخر زيارة لك إلى \U0001F418"
         one: "إشعار واحد 1 منذ آخر زيارة لك لـ \U0001F418"
         other: "%{count} إشعارات جديدة منذ آخر زيارة لك إلى \U0001F418"
-        two: "إشعارات جديدة منذ آخر زيارة لك إلى \U0001F418"
-        zero: "إشعارات جديدة منذ آخر زيارة لك إلى \U0001F418"
-      title: أثناء فترة غيابك …
+        two: "%{count} إشعارات جديدة منذ آخر زيارة لك إلى \U0001F418"
+        zero: "%{count} إشعارات جديدة منذ آخر زيارة لك إلى \U0001F418"
+      title: أثناء فترة غيابك...
     favourite:
-      body: 'أُعجب %{name} بمنشورك :'
+      body: 'أُعجب %{name} بمنشورك:'
       subject: أُعجِب %{name} بمنشورك
       title: مفضّلة جديدة
     follow:
-      body: "%{name} من متتبعيك الآن !"
+      body: "%{name} من متتبعيك الآن!"
       subject: "%{name} من متتبعيك الآن"
       title: متابِع جديد
     follow_request:
@@ -723,29 +769,45 @@ ar:
       decimal_units:
         format: "%n%u"
         units:
-          billion: B
-          million: M
+          billion: بل
+          million: ملي
           quadrillion: كواد
           thousand: ألف
-          trillion: T
-          unit: ''
+          trillion: ترل
   pagination:
     newer: الأحدَث
     next: التالي
     older: الأقدَم
     prev: السابق
     truncate: و
+  polls:
+    errors:
+      already_voted: لقد قمت بالتصويت على استطلاع الرأي هذا مِن قبل
+      duplicate_options: يحتوي على عناصر مكررة
+      duration_too_short: مبكّر جدا
+      expired: لقد انتهى استطلاع الرأي
   preferences:
-    languages: اللغات
     other: إعدادات أخرى
-    publishing: النشر
-    web: الويب
+    posting_defaults: التفضيلات الافتراضية لنشر التبويقات
+    public_timelines: الخيوط الزمنية العامة
+  relationships:
+    activity: نشاط الحساب
+    dormant: في سبات
+    last_active: آخر نشاط
+    most_recent: الأحدث
+    moved: هاجر
+    primary: رئيسي
+    relationship: العلاقة
+    remove_selected_domains: احذف كافة المتابِعين القادمين مِن النطاقات المختارة
+    remove_selected_followers: احذف المتابِعين الذين قمت باختيارهم
+    remove_selected_follows: الغي متابعة المستخدمين الذين اخترتهم
+    status: حالة الحساب
   remote_follow:
     acct: قم بإدخال عنوان حسابك username@domain الذي من خلاله تود النشاط
     missing_resource: تعذر العثور على رابط التحويل المطلوب الخاص بحسابك
     no_account_html: أليس عندك حساب بعدُ ؟ يُمْكنك <a href='%{sign_up_path}' target='_blank'>التسجيل مِن هنا</a>
     proceed: أكمل المتابعة
-    prompt: 'إنك  بصدد متابعة :'
+    prompt: 'إنك بصدد متابعة:'
   remote_interaction:
     favourite:
       proceed: المواصلة إلى المفضلة
@@ -773,7 +835,7 @@ ar:
       generic: متصفح مجهول
       ie: إنترنت إكسبلورر
       micro_messenger: مايكرو ميسنجر
-      nokia: متصفح  Nokia S40 Ovi
+      nokia: متصفح Nokia S40 Ovi
       opera: أوبرا
       otter: أوتر
       phantom_js: فانتوم جي آس
@@ -783,7 +845,7 @@ ar:
       weibo: وايبو
     current_session: الجلسة الحالية
     description: "%{browser} على %{platform}"
-    explanation: ها هي قائمة مُتصفِّحات الويب  التي تستخدِم حاليًا حساب ماستدون الخاص بك.
+    explanation: ها هي قائمة مُتصفِّحات الويب التي تستخدِم حاليًا حساب ماستدون الخاص بك.
     ip: عنوان الإيبي
     platforms:
       adobe_air: أدوبي إيير
@@ -802,36 +864,44 @@ ar:
     revoke_success: تم إبطال الجلسة بنجاح
     title: الجلسات
   settings:
+    account: الحساب
+    account_settings: إعدادات الحساب
+    appearance: المظهر
     authorized_apps: التطبيقات المرخص لها
     back: عودة إلى ماستدون
     delete: حذف الحسابات
     development: التطوير
     edit_profile: تعديل الملف الشخصي
     export: تصدير البيانات
-    import: إستيراد
+    featured_tags: الوسوم الشائعة
+    identity_proofs: دلائل الهوية
+    import: استيراد
+    import_and_export: استيراد وتصدير
     migrate: تهجير الحساب
     notifications: الإخطارات
     preferences: التفضيلات
+    profile: الملف الشخصي
+    relationships: المتابِعون والمتابَعون
     two_factor_authentication: المُصادقة بخُطوَتَيْن
   statuses:
     attached:
-      description: 'مُرفَق : %{attached}'
+      description: 'مُرفَق: %{attached}'
       image:
         few: "%{count} صور"
         many: "%{count} صور"
         one: صورة %{count}
         other: "%{count} صور"
-        two: صور
-        zero: صور
+        two: "%{count} صورة"
+        zero: "%{count} صورة"
       video:
         few: "%{count} فيديوهات"
         many: "%{count} فيديوهات"
         one: فيديو %{count}
         other: "%{count} فيديوهات"
-        two: فيديوهات
-        zero: فيديوهات
+        two: "%{count} فيديوهات"
+        zero: "%{count} فيديوهات"
     boosted_from_html: تم إعادة ترقيته مِن %{acct_link}
-    content_warning: 'تحذير عن المحتوى : %{warning}'
+    content_warning: 'تحذير عن المحتوى: %{warning}'
     disallowed_hashtags:
       few: 'يحتوي على وسوم غير مسموح بها: %{tags}'
       many: 'يحتوي على وسوم غير مسموح بها: %{tags}'
@@ -840,18 +910,20 @@ ar:
       two: 'يحتوي على وسوم غير مسموح بها: %{tags}'
       zero: 'يحتوي على وسوم غير مسموح بها: %{tags}'
     language_detection: اكتشاف اللغة تلقائيا
-    open_in_web: إفتح في الويب
+    open_in_web: افتح في الويب
     over_character_limit: تم تجاوز حد الـ %{max} حرف المسموح بها
     pin_errors:
       limit: لقد بلغت الحد الأقصى للتبويقات المدبسة
       ownership: لا يمكن تدبيس تبويق نشره شخص آخر
       private: لا يمكن تدبيس تبويق لم يُنشر للعامة
       reblog: لا يمكن تثبيت ترقية
+    poll:
+      vote: صوّت
     show_more: أظهر المزيد
     sign_in_to_participate: قم بتسجيل الدخول للمشاركة في هذه المحادثة
-    title: '%{name} : "%{quote}"'
+    title: '%{name}: "%{quote}"'
     visibilities:
-      private: إعرض فقط لمتتبعيك
+      private: اعرض فقط لمتتبعيك
       private_long: إعرضه لمتتبعيك فقط
       public: للعامة
       public_long: يمكن للجميع رؤيته
@@ -864,13 +936,9 @@ ar:
   terms:
     title: شروط الخدمة وسياسة الخصوصية على %{instance}
   themes:
-    contrast: تباين عالٍ
-    default: ماستدون
+    contrast: ماستدون (تباين عالٍ)
+    default: ماستدون (داكن)
     mastodon-light: ماستدون (فاتح)
-  time:
-    formats:
-      default: "%b %d, %Y, %H:%M"
-      month: "%b %Y"
   two_factor_authentication:
     code_hint: قم بإدخال الرمز المُوَلّد عبر تطبيق المصادقة للتأكيد
     description_html: في حال تفعيل <strong>المصادقة بخطوتين </strong>، فتسجيل الدخول يتطلب منك أن يكون بحوزتك هاتفك النقال قصد توليد الرمز الذي سيتم إدخاله.
@@ -878,17 +946,17 @@ ar:
     enable: تفعيل
     enabled: نظام المصادقة بخطوتين مُفعَّل
     enabled_success: تم تفعيل المصادقة بخطوتين بنجاح
-    generate_recovery_codes: توليد رموز الإسترجاع
+    generate_recovery_codes: توليد رموز الاسترجاع
     instructions_html: "<strong>قم بمسح رمز الكيو آر عبر Google Authenticator أو أي تطبيق TOTP على جهازك</strong>. من الآن فصاعدا سوف يقوم ذاك التطبيق بتوليد رموز يجب عليك إدخالها عند تسجيل الدخول."
-    lost_recovery_codes: تُمكّنك رموز الإسترجاع الإحتاطية مِن استرجاع النفاذ إلى حسابك في حالة فقدان جهازك المحمول. إن ضاعت منك هذه الرموز فبإمكانك إعادة توليدها مِن هنا و إبطال الرموز القديمة.
-    manual_instructions: 'في حالة تعذّر مسح رمز الكيو آر أو طُلب منك إدخال يدوي، يُمْكِنك إدخال هذا النص السري على التطبيق :'
-    recovery_codes: النسخ الإحتياطي لرموز الإسترجاع
-    recovery_codes_regenerated: تم إعادة توليد رموز الإسترجاع الإحتياطية بنجاح
+    lost_recovery_codes: تُمكّنك رموز الاسترجاع الاحتياطية مِن استرجاع النفاذ إلى حسابك في حالة فقدان جهازك المحمول. إن ضاعت منك هذه الرموز فبإمكانك إعادة توليدها مِن هنا و إبطال الرموز القديمة.
+    manual_instructions: 'في حالة تعذّر مسح رمز الكيو آر أو طُلب منك إدخال يدوي، يُمْكِنك إدخال هذا النص السري على التطبيق:'
+    recovery_codes: النسخ الاحتياطي لرموز الاسترجاع
+    recovery_codes_regenerated: تم إعادة توليد رموز الاسترجاع الاحتياطية بنجاح
     setup: تنشيط
-    wrong_code: الرمز الذي أدخلته غير صالح ! تحقق من صحة الوقت على الخادم و الجهاز ؟
+    wrong_code: الرمز الذي أدخلته غير صالح! تحقق من صحة الوقت على الخادم و الجهاز؟
   user_mailer:
     backup_ready:
-      explanation: لقد قمت بطلب نسخة كاملة لحسابك على ماستدون. إنها متوفرة الآن للتنزيل !
+      explanation: لقد قمت بطلب نسخة كاملة لحسابك على ماستدون. إنها متوفرة الآن للتنزيل!
       subject: نسخة بيانات حسابك جاهزة للتنزيل
       title: المغادرة بأرشيف الحساب
     warning:
@@ -903,12 +971,12 @@ ar:
         suspend: الحساب مُعلَّق
     welcome:
       edit_profile_action: تهيئة الملف الشخصي
-      edit_profile_step: يُمكنك·كي تخصيص ملفك الشخصي عن طريق تحميل صورة رمزية ورأسية و بتعديل  إسمك·كي العلني وأكثر. و إن أردت·تي معاينة المتابِعين و المتابعات الجُدد قبيل السماح لهم·ن بمتابَعتك فيمكنك·كي تأمين حسابك·كي.
-      explanation: ها هي بعض النصائح قبل بداية الإستخدام
+      edit_profile_step: يُمكنك·كي تخصيص ملفك الشخصي عن طريق تحميل صورة رمزية ورأسية و بتعديل اسمك·كي العلني وأكثر. و إن أردت·تي معاينة المتابِعين و المتابعات الجُدد قبيل السماح لهم·ن بمتابَعتك فيمكنك·كي تأمين حسابك·كي.
+      explanation: ها هي بعض النصائح قبل بداية الاستخدام
       final_action: اشرَع في النشر
       final_step: |-
-        يمكنك الشروع في النشر في الحين ! حتى و إن لم كنت لا تمتلك متابِعين بعدُ، يمكن للآخرين الإطلاع على منشوراتك الموجهة للجمهور على الخيط المحلي أو إن قمت باستخدام وسوم.
-        إبدأ بتقديم نفسك باستعمال وسم #introductions.
+        يمكنك الشروع في النشر في الحين! حتى و إن لم كنت لا تمتلك متابِعين بعدُ، يمكن للآخرين الإطلاع على منشوراتك الموجهة للجمهور على الخيط المحلي أو إن قمت باستخدام وسوم.
+        ابدأ بتقديم نفسك باستعمال وسم #introductions.
       full_handle: عنوانك الكامل
       full_handle_hint: هذا هو ما يجب تقديمه لأصدقائك قصد أن يكون بإمكانهم متابَعتك أو مُراسَلتك حتى و إن كانت حساباتهم على خوادم أخرى.
       review_preferences_action: تعديل التفضيلات
@@ -917,13 +985,13 @@ ar:
       tip_following: أنت تتبع تلقائيا مديري و مديرات الخادم. للعثور على أشخاص مميزين أو قد تهمك حساباتهم بإمكانك الإطلاع على الخيوط المحلية و كذا الفدرالية.
       tip_local_timeline: الخيط الزمني المحلي هو بمثابة نظرة سريعة على الأشخاص المتواجدين على %{instance} يمكن اعتبارهم كجيرانك وجاراتك الأقرب إليك!
       tips: نصائح
-      title: أهلاً بك، %{name} !
+      title: أهلاً بك، %{name}!
   users:
     follow_limit_reached: لا يمكنك متابعة أكثر مِن %{limit} أشخاص
     invalid_email: عنوان البريد الإلكتروني غير صالح
     invalid_otp_token: رمز المصادقة بخطوتين غير صالح
-    otp_lost_help_html: إن فقدتَهُما ، يمكنك الإتصال بـ %{email}
+    otp_lost_help_html: إن فقدتَهُما ، يمكنك الاتصال بـ %{email}
     seamless_external_login: لقد قمت بتسجيل الدخول عبر خدمة خارجية، إنّ إعدادات الكلمة السرية و البريد الإلكتروني غير متوفرة.
-    signed_in_as: 'تم تسجيل دخولك بصفة :'
+    signed_in_as: 'تم تسجيل دخولك بصفة:'
   verification:
     verification: التحقق
diff --git a/config/locales/ast.yml b/config/locales/ast.yml
index 7a51be7cf..ec545ca57 100644
--- a/config/locales/ast.yml
+++ b/config/locales/ast.yml
@@ -4,7 +4,6 @@ ast:
     about_mastodon_html: Mastodon ye una rede social basada en protocolos abiertos y software de códigu llibre. Ye descentralizada, como'l corréu electrónicu.
     about_this: Tocante a
     administered_by: 'Alministráu por:'
-    api: API
     contact: Contautu
     contact_missing: Nun s'afitó
     contact_unavailable: N/D
@@ -15,7 +14,6 @@ ast:
     hosted_on: Mastodon ta agospiáu en %{domain}
     learn_more: Deprendi más
     source_code: Códigu fonte
-    status_count_after: estaos
     status_count_before: Que crearon
     terms: Términos del serviciu
     user_count_after:
@@ -33,10 +31,6 @@ ast:
     nothing_here: "¡Equí nun hai nada!"
     people_followed_by: Persones a les que sigue %{name}
     people_who_follow: Persones que siguen a %{name}
-    posts:
-      one: Toot
-      other: Toots
-    posts_tab_heading: Toots
     posts_with_replies: Toots y rempuestes
     reserved_username: El nome d'usuariu ta acutáu
     roles:
@@ -44,12 +38,10 @@ ast:
   admin:
     accounts:
       are_you_sure: "¿De xuru?"
-      avatar: Avatar
       by_domain: Dominiu
       domain: Dominiu
       email: Corréu
       followers: Siguidores
-      ip: IP
       location:
         local: Llocal
         title: Allugamientu
@@ -64,7 +56,6 @@ ast:
       statuses: Estaos
       title: Cuentes
       username: Nome d'usuariu
-      web: Web
     action_logs:
       actions:
         create_domain_block: "%{name} bloquió'l dominiu %{target}"
@@ -81,7 +72,6 @@ ast:
       features: Carauterístiques
       hidden_service: Federación con servicios anubríos
       recent_users: Usuarios recientes
-      software: Software
       total_users: usuarios en total
       week_interactions: interaiciones d'esta selmana
       week_users_new: usuarios d'esta selmana
@@ -111,14 +101,10 @@ ast:
       title: Axustes del sitiu
     statuses:
       failed_to_execute: Fallu al executar
-    subscriptions:
-      title: WebSub
     title: Alministración
   admin_mailer:
     new_report:
       body_remote: Daquién dende %{domain} informó de %{target}
-  application_mailer:
-    salutation: "%{name},"
   applications:
     invalid_url: La URL apurrida nun ye válida
     warning: Ten curiáu con estos datos, ¡enxamás nun los compartas con naide!
@@ -130,9 +116,6 @@ ast:
     login: Aniciar sesión
     migrate_account: Mudase a otra cuenta
     migrate_account_html: Si deseyes redirixir esta cuenta a otra, pues <a href="%{path}"> configuralo equí</a>.
-    providers:
-      cas: CAS
-      saml: SAML
     register: Rexistrase
     security: Seguranza
   authorize_follow:
@@ -162,6 +145,7 @@ ast:
       content: Falló la verificación de seguranza. ¿Tas bloquiando les cookies?
       title: Falló la verificación de seguranza
     '429': Ficiéronse milenta solicitúes
+    '500': 
   exports:
     archive_takeout:
       date: Data
@@ -169,7 +153,6 @@ ast:
       request: Solicitar l'archivu
       size: Tamañu
     blocks: Xente que bloquiesti
-    csv: CSV
     follows: Xente que sigues
     mutes: Xente que silenciesti
   filters:
@@ -223,8 +206,6 @@ ast:
     digest:
       body: Equí hai un resume de los mensaxes que nun viesti dende la última visita'l %{since}
       mention: "%{name} mentóte en:"
-      subject:
-        other: "%{count} avisos nuevos dende la última visita \U0001F418"
     follow:
       body: "¡Agora %{name} ta siguiéndote!"
       title: Siguidor nuevu
@@ -239,16 +220,8 @@ ast:
       body: "%{name} compartió'l to estáu:"
       subject: "%{name} compartió'l to estáu"
       title: Compartición nueva de toot
-  number:
-    human:
-      decimal_units:
-        format: "%n%u"
   pagination:
     next: Siguiente
-  preferences:
-    languages: Llingües
-    publishing: Espublización
-    web: Web
   remote_follow:
     acct: Introduz el nome_usuariu@dominiu dende'l que lo quies facer
     no_account_html: "¿Nun tienes una cuenta? Pues <a href='%{sign_up_path}' target='_blank'>rexistrate equí</a>"
@@ -259,38 +232,11 @@ ast:
   sessions:
     browser: Restolador
     browsers:
-      alipay: Alipay
-      blackberry: Blackberry
-      chrome: Chrome
-      edge: Microsoft Edge
-      electron: Electron
-      firefox: Firefox
       generic: Restolador desconocíu
-      ie: Internet Explorer
-      micro_messenger: MicroMessenger
-      opera: Opera
-      otter: Otter
-      phantom_js: PhantomJS
-      qq: QQ Browser
-      safari: Safari
-      uc_browser: UCBrowser
-      weibo: Weibo
     current_session: Sesión actual
     description: "%{browser} en %{platform}"
-    ip: IP
     platforms:
-      adobe_air: Adobe Air
-      android: Android
-      blackberry: Blackberry
-      chrome_os: ChromeOS
-      firefox_os: Firefox OS
-      ios: iOS
-      linux: Linux
-      mac: Mac
       other: plataforma desconocida
-      windows: Windows
-      windows_mobile: Windows Mobile
-      windows_phone: Windows Phone
     title: Sesiones
   settings:
     authorized_apps: Aplicaciones autorizaes
diff --git a/config/locales/bg.yml b/config/locales/bg.yml
index 57aa6f87e..e11340542 100644
--- a/config/locales/bg.yml
+++ b/config/locales/bg.yml
@@ -5,18 +5,14 @@ bg:
     about_this: За тази инстанция
     contact: За контакти
     source_code: Програмен код
-    status_count_after: публикации
     status_count_before: Написали
-    user_count_after: потребители
     user_count_before: Дом на
   accounts:
     follow: Последвай
-    followers: Последователи
     following: Следва
     nothing_here: Тук няма никого!
     people_followed_by: Хора, които %{name} следва
     people_who_follow: Хора, които следват %{name}
-    posts: Публикации
     unfollow: Не следвай
   application_mailer:
     settings: 'Промяна на предпочитанията за e-mail: %{link}'
@@ -51,15 +47,20 @@ bg:
       x_minutes: "%{count} мин"
       x_months: "%{count} м"
       x_seconds: "%{count} сек"
+  errors:
+    '403': You don't have permission to view this page.
+    '404': The page you are looking for isn't here.
+    '410': The page you were looking for doesn't exist here anymore.
+    '422': 
+    '429': Throttled
+    '500': 
   exports:
     blocks: Вашите блокирания
-    csv: CSV
     follows: Вашите следвания
     storage: Съхранение на мултимедия
   generic:
     changes_saved_msg: Успешно запазване на промените!
     save_changes: Запази промените
-    validation_errors: Нещо все още не е наред! Моля, прегледай грешките по-долу
   imports:
     preface: Можеш да импортираш някои данни, като например всички хора, които следваш или блокираш в акаунта си на тази инстанция, от файлове, създадени чрез експорт в друга инстанция.
     success: Твоите данни бяха успешно качени и ще бъдат обработени впоследствие
@@ -67,6 +68,14 @@ bg:
       blocking: Списък на блокираните
       following: Списък на последователите
     upload: Качване
+  invites:
+    expires_in:
+      '1800': 30 minutes
+      '21600': 6 hours
+      '3600': 1 hour
+      '43200': 12 hours
+      '604800': 1 week
+      '86400': 1 day
   media_attachments:
     validations:
       images_and_video: Не мога да прикача видеоклип към публикация, която вече съдържа изображения
@@ -96,17 +105,6 @@ bg:
     reblog:
       body: 'Твоята публикация беше споделена от %{name}:'
       subject: "%{name} сподели публикацията ти"
-  number:
-    human:
-      decimal_units:
-        format: "%n%u"
-        units:
-          billion: B
-          million: M
-          quadrillion: Q
-          thousand: K
-          trillion: T
-          unit: ''
   pagination:
     next: Напред
     prev: Назад
diff --git a/config/locales/bn.yml b/config/locales/bn.yml
index b4eb012f5..b3eb0bd62 100644
--- a/config/locales/bn.yml
+++ b/config/locales/bn.yml
@@ -68,6 +68,7 @@ bn:
       admin: পরিচালক
       bot: রোবট
       moderator: পরিচালক
+    unavailable: প্রোফাইল অনুপলব্ধ
     unfollow: অনুসরণ বাদ
   admin:
     account_actions:
@@ -80,6 +81,7 @@ bn:
       destroyed_msg: প্রশাসনবস্তুত লেখাটি সঠিকভাবে মুছে ফেলা হয়েছে!
     accounts:
       approve: অনুমোদন দিন
+      approve_all: প্রত্যেক কে অনুমতি দিন
       are_you_sure: আপনি কি নিশ্চিত ?
       avatar: অবতার
       by_domain: ওয়েবসাইট/কার্যক্ষেত্র
@@ -137,5 +139,20 @@ bn:
       outbox_url: চিঠি পাঠানোর বাক্স লিংক
       pending: পয্র্যবেক্ষণের অপেক্ষায় আছে
       perform_full_suspension: বাতিল করা
+  errors:
+    '403': You don't have permission to view this page.
+    '404': The page you are looking for isn't here.
+    '410': The page you were looking for doesn't exist here anymore.
+    '422': 
+    '429': Throttled
+    '500': 
+  invites:
+    expires_in:
+      '1800': 30 minutes
+      '21600': 6 hours
+      '3600': 1 hour
+      '43200': 12 hours
+      '604800': 1 week
+      '86400': 1 day
   verification:
     verification: সত্যতা নির্ধারণ
diff --git a/config/locales/ca.yml b/config/locales/ca.yml
index e76182bf4..a5d96cc1c 100644
--- a/config/locales/ca.yml
+++ b/config/locales/ca.yml
@@ -8,7 +8,7 @@ ca:
     active_footnote: Usuaris actius mensuals (UAM)
     administered_by: 'Administrat per:'
     api: API
-    apps: Apps mòbil
+    apps: Apps mòbils
     apps_platforms: Utilitza Mastodon des de iOS, Android i altres plataformes
     browse_directory: Navega per el directori de perfils i filtra segons interessos
     browse_public_posts: Navega per una transmissió en directe de publicacions públiques a Mastodon
@@ -30,8 +30,8 @@ ca:
     server_stats: 'Estadístiques del servidor:'
     source_code: Codi font
     status_count_after:
-      one: estat
-      other: estats
+      one: toot
+      other: toots
     status_count_before: Que han escrit
     tagline: Segueix els teus amics i descobreix-ne de nous
     terms: Termes del servei
@@ -174,6 +174,7 @@ ca:
       statuses: Estats
       subscribe: Subscriu
       suspended: Suspès
+      time_in_queue: Esperant en la cua %{time}
       title: Comptes
       unconfirmed_email: Correu electrònic sense confirmar
       undo_silenced: Deixa de silenciar
@@ -209,7 +210,7 @@ ca:
         resolve_report: "%{name} ha resolt l'informe %{target}"
         silence_account: "%{name} ha silenciat el compte de %{target}"
         suspend_account: "%{name} ha suspès el compte de %{target}"
-        unassigned_report: "%{name} ha des-assignat  l'informe %{target}"
+        unassigned_report: "%{name} ha des-assignat l'informe %{target}"
         unsilence_account: "%{name} ha silenciat el compte de %{target}"
         unsuspend_account: "%{name} ha llevat la suspensió del compte de %{target}"
         update_custom_emoji: "%{name} ha actualitzat l'emoji %{target}"
@@ -498,6 +499,12 @@ ca:
       body: "%{reporter} ha informat de %{target}"
       body_remote: Algú des de el domini %{domain} ha informat sobre %{target}
       subject: Informe nou per a %{instance} (#%{id})
+  appearance:
+    advanced_web_interface: Interfície web avançada
+    advanced_web_interface_hint: 'Si vols fer ús de tota l''amplada de la teva pantalla, l''interfície web avançada et permet configurar diverses columnes per a veure molta més informació al mateix temps: Inici, notificacions, línia de temps federada i qualsevol número de llistes i etiquetes.'
+    animations_and_accessibility: Animacions i accessibilitat
+    confirmation_dialogs: Diàlegs de confirmació
+    sensitive_content: Contingut sensible
   application_mailer:
     notification_preferences: Canvia les preferències de correu
     salutation: "%{name},"
@@ -526,7 +533,7 @@ ca:
     login: Inicia sessió
     logout: Tanca sessió
     migrate_account: Mou a un compte diferent
-    migrate_account_html: Si vols redirigir aquest compte a un altre diferent, el pots  <a href="%{path}">configurar aquí</a>.
+    migrate_account_html: Si vols redirigir aquest compte a un altre diferent, el pots <a href="%{path}">configurar aquí</a>.
     or_log_in_with: O inicia sessió amb
     providers:
       cas: CAS
@@ -556,7 +563,7 @@ ca:
       about_x_years: "%{count} anys"
       almost_x_years: "%{count}anys"
       half_a_minute: Ara mateix
-      less_than_x_minutes: "%{count}m"
+      less_than_x_minutes: fa %{count} minuts
       less_than_x_seconds: Ara mateix
       over_x_years: "%{count} anys"
       x_days: "%{count} dies"
@@ -759,7 +766,6 @@ ca:
           quadrillion: Q
           thousand: m
           trillion: T
-          unit: " "
   pagination:
     newer: Més recent
     next: Endavant
@@ -769,7 +775,7 @@ ca:
   polls:
     errors:
       already_voted: Ja has votat en aquesta enquesta
-      duplicate_options: Conté opcions duplicades
+      duplicate_options: conté opcions duplicades
       duration_too_long: està massa lluny en el futur
       duration_too_short: és massa aviat
       expired: L'enquesta ja ha finalitzat
@@ -777,10 +783,9 @@ ca:
       too_few_options: ha de tenir més d'una opció
       too_many_options: no pot contenir més de %{max} opcions
   preferences:
-    languages: Llengues
     other: Altre
-    publishing: Publicant
-    web: Web
+    posting_defaults: Valors predeterminats de publicació
+    public_timelines: Línies de temps públiques
   relationships:
     activity: Activitat del compte
     dormant: Inactiu
@@ -927,10 +932,10 @@ ca:
       <h3 id="collect">Quina informació recollim?</h3>
 
       <ul>
-        <li><em>Informació bàsica del compte</em>: Si et registres en aquest servidor, se´t pot demanar que introdueixis un nom d'usuari, una adreça de correu electrònic i una contrasenya. També pots introduir informació de perfil addicional, com ara un nom de visualització i una biografia, i carregar una imatge de perfil i de capçalera. El nom d'usuari, el nom de visualització, la biografia, la imatge de perfil i la imatge de capçalera sempre apareixen públicament.</li>
-        <li><em>Publicacions, seguiment i altra informació pública</em>: La llista de persones que segueixes s'enumeren públicament i el mateix passa amb els teus seguidors. Quan envies un missatge, la data i l'hora s'emmagatzemen, així com l'aplicació que va enviar el missatge. Els missatges poden contenir multimèdia, com ara imatges i vídeos. Els toots públics i no llistats estan disponibles públicament. En quan tinguis un toot en el teu perfil, aquest també és informació pública. Les teves entrades es lliuren als teus seguidors que en alguns casos significa que es lliuren a diferents servidors en els quals s'hi emmagatzemen còpies. Quan suprimeixes publicacions, també es lliuraran als teus seguidors. L'acció d'impulsar o marcar com a favorit una publicació sempre és pública.</li>
-        <li><em>Toots directes i per a només seguidors</em>: Totes les publicacions s'emmagatzemen i processen al servidor. Els toots per a només seguidors només es lliuren als teus seguidors i als usuaris que s'esmenten en ells i els toots directes només es lliuren als usuaris esmentats. En alguns casos, significa que es lliuren a diferents servidors i s'hi emmagatzemen còpies. Fem un esforç de bona fe per limitar l'accés a aquestes publicacions només a les persones autoritzades, però és possible que altres servidors no ho facin. Per tant, és important revisar els servidors als quals pertanyen els teus seguidors. Pots canviar la opció de aprovar o rebutjar els nous seguidors manualment a la configuració.  <em>Tingues en compte que els operadors del servidor i qualsevol servidor receptor poden visualitzar aquests missatges</em> i els destinataris poden fer una captura de pantalla, copiar-los o tornar-los a compartir.  <em>No comparteixis cap informació perillosa a Mastodon.</em></li>
-        <li><em>IPs i altres metadades</em>: Quan inicies sessió registrem l'adreça IP en que l'has iniciat, així com el nom de l'aplicació o navegador. Totes les sessions registrades estan disponibles per a la teva revisió i revocació a la configuració. L'última adreça IP utilitzada s'emmagatzema durant un màxim de 12 mesos. També podrem conservar els registres que inclouen l'adreça IP de cada sol·licitud al nostre servidor.</li>
+      <li><em>Informació bàsica del compte</em>: Si et registres en aquest servidor, se´t pot demanar que introdueixis un nom d'usuari, una adreça de correu electrònic i una contrasenya. També pots introduir informació de perfil addicional, com ara un nom de visualització i una biografia, i carregar una imatge de perfil i de capçalera. El nom d'usuari, el nom de visualització, la biografia, la imatge de perfil i la imatge de capçalera sempre apareixen públicament.</li>
+      <li><em>Publicacions, seguiment i altra informació pública</em>: La llista de persones que segueixes s'enumeren públicament i el mateix passa amb els teus seguidors. Quan envies un missatge, la data i l'hora s'emmagatzemen, així com l'aplicació que va enviar el missatge. Els missatges poden contenir multimèdia, com ara imatges i vídeos. Els toots públics i no llistats estan disponibles públicament. En quan tinguis un toot en el teu perfil, aquest també és informació pública. Les teves entrades es lliuren als teus seguidors que en alguns casos significa que es lliuren a diferents servidors en els quals s'hi emmagatzemen còpies. Quan suprimeixes publicacions, també es lliuraran als teus seguidors. L'acció d'impulsar o marcar com a favorit una publicació sempre és pública.</li>
+      <li><em>Toots directes i per a només seguidors</em>: Totes les publicacions s'emmagatzemen i processen al servidor. Els toots per a només seguidors només es lliuren als teus seguidors i als usuaris que s'esmenten en ells i els toots directes només es lliuren als usuaris esmentats. En alguns casos, significa que es lliuren a diferents servidors i s'hi emmagatzemen còpies. Fem un esforç de bona fe per limitar l'accés a aquestes publicacions només a les persones autoritzades, però és possible que altres servidors no ho facin. Per tant, és important revisar els servidors als quals pertanyen els teus seguidors. Pots canviar la opció de aprovar o rebutjar els nous seguidors manualment a la configuració. <em>Tingues en compte que els operadors del servidor i qualsevol servidor receptor poden visualitzar aquests missatges</em> i els destinataris poden fer una captura de pantalla, copiar-los o tornar-los a compartir. <em>No comparteixis cap informació perillosa a Mastodon.</em></li>
+      <li><em>IPs i altres metadades</em>: Quan inicies sessió registrem l'adreça IP en que l'has iniciat, així com el nom de l'aplicació o navegador. Totes les sessions registrades estan disponibles per a la teva revisió i revocació a la configuració. L'última adreça IP utilitzada s'emmagatzema durant un màxim de 12 mesos. També podrem conservar els registres que inclouen l'adreça IP de cada sol·licitud al nostre servidor.</li>
       </ul>
 
       <hr class="spacer" />
@@ -940,9 +945,9 @@ ca:
       <p>Qualsevol de la informació que recopilem de tu es pot utilitzar de la manera següent:</p>
 
       <ul>
-        <li>Per proporcionar la funcionalitat bàsica de Mastodon. Només pots interactuar amb el contingut d'altres persones i publicar el teu propi contingut quan hàgis iniciat la sessió. Per exemple, pots seguir altres persones per veure les publicacions combinades a la teva pròpia línia de temps personalitzada.</li>
-        <li>Per ajudar a la moderació de la comunitat, per exemple comparar la teva adreça IP amb altres conegudes per determinar l'evasió de prohibicions o altres infraccions.</li>
-        <li>L'adreça electrònica que ens proporciones pot utilitzar-se per enviar-te informació, notificacions sobre altres persones que interactuen amb el teu contingut o t'envien missatges, i per respondre a les consultes i / o altres sol·licituds o preguntes.</li>
+      <li>Per proporcionar la funcionalitat bàsica de Mastodon. Només pots interactuar amb el contingut d'altres persones i publicar el teu propi contingut quan hàgis iniciat la sessió. Per exemple, pots seguir altres persones per veure les publicacions combinades a la teva pròpia línia de temps personalitzada.</li>
+      <li>Per ajudar a la moderació de la comunitat, per exemple comparar la teva adreça IP amb altres conegudes per determinar l'evasió de prohibicions o altres infraccions.</li>
+      <li>L'adreça electrònica que ens proporciones pot utilitzar-se per enviar-te informació, notificacions sobre altres persones que interactuen amb el teu contingut o t'envien missatges, i per respondre a les consultes i / o altres sol·licituds o preguntes.</li>
       </ul>
 
       <hr class="spacer" />
@@ -958,8 +963,8 @@ ca:
       <p>Farem un esforç de bona fe per:</p>
 
       <ul>
-        <li>Conservar els registres del servidor que continguin l'adreça IP de totes les sol·licituds que rebi, tenint em compte que aquests registres es mantenen no més de 90 dies.</li>
-        <li>Conservar les adreces IP associades als usuaris registrats no més de 12 mesos.</li>
+      <li>Conservar els registres del servidor que continguin l'adreça IP de totes les sol·licituds que rebi, tenint em compte que aquests registres es mantenen no més de 90 dies.</li>
+      <li>Conservar les adreces IP associades als usuaris registrats no més de 12 mesos.</li>
       </ul>
 
       <p>Pots sol·licitar i descarregar un arxiu del teu contingut incloses les publicacions, els fitxers adjunts multimèdia, la imatge de perfil i la imatge de capçalera.</p>
@@ -1000,7 +1005,7 @@ ca:
 
       <p>Si decidim canviar la nostra política de privadesa, publicarem aquests canvis en aquesta pàgina.</p>
 
-      <p> Aquest document és CC-BY-SA. Actualitzat per darrera vegada el 7 de Març del 2018.</p>
+      <p>Aquest document és CC-BY-SA. Actualitzat per darrera vegada el 7 de Març del 2018.</p>
 
       <p>Originalment adaptat des del <a href="https://github.com/discourse/discourse">Discourse privacy policy</a>.</p>
     title: "%{instance} Condicions del servei i política de privadesa"
diff --git a/config/locales/co.yml b/config/locales/co.yml
index 4927c5c51..b3d14fdb5 100644
--- a/config/locales/co.yml
+++ b/config/locales/co.yml
@@ -154,7 +154,7 @@ co:
         already_confirmed: St’utilizatore hè digià cunfirmatu
         send: Rimandà un’e-mail di cunfirmazione
         success: L’e-mail di cunfirmazione hè statu mandatu!
-      reset: Reset
+      reset: Riinizializà
       reset_password: Riinizializà a chjave d’accessu
       resubscribe: Riabbunassi
       role: Auturizazione
@@ -174,6 +174,7 @@ co:
       statuses: Statuti
       subscribe: Abbunassi
       suspended: Suspesu
+      time_in_queue: 'Attesa in fila: %{time}'
       title: Conti
       unconfirmed_email: E-mail micca cunfirmatu
       undo_silenced: Ùn silenzà più
@@ -258,7 +259,7 @@ co:
       single_user_mode: Modu utilizatore unicu
       software: Lugiziale
       space: Usu di u spaziu
-      title: Dashboard
+      title: Quatru di strumenti
       total_users: utilizatori in tutale
       trends: Tindenze
       week_interactions: interazzione sta settimana
@@ -498,6 +499,12 @@ co:
       body: "%{reporter} hà palisatu %{target}"
       body_remote: Qualch’unu da %{domain} hà palisatu %{target}
       subject: Novu signalamentu nant’à %{instance} (#%{id})
+  appearance:
+    advanced_web_interface: Interfaccia web avanzata
+    advanced_web_interface_hint: 'S''è voi vulete fà usu di a larghezza sana di u vostru screnu, l''interfaccia web avanzata vi permette di cunfigurà parechje culonne sfarente per vede tutta l''infurmazione chì vulete vede in listessu tempu: Accolta, nutificazione, linea pubblica, è tutti l''hashtag è liste chì vulete.'
+    animations_and_accessibility: Animazione è accessibilità
+    confirmation_dialogs: Pop-up di cunfirmazione
+    sensitive_content: Cuntinutu sensibile
   application_mailer:
     notification_preferences: Cambià e priferenze e-mail
     salutation: "%{name},"
@@ -551,17 +558,17 @@ co:
     title: Siguità %{acct}
   datetime:
     distance_in_words:
-      about_x_hours: "%{count}h"
-      about_x_months: "%{count}mo"
-      about_x_years: "%{count}y"
-      almost_x_years: "%{count}y"
+      about_x_hours: "%{count}o"
+      about_x_months: "%{count}Me"
+      about_x_years: "%{count}A"
+      almost_x_years: "%{count}A"
       half_a_minute: Avà
       less_than_x_minutes: "%{count}m"
       less_than_x_seconds: Avà
-      over_x_years: "%{count}y"
-      x_days: "%{count}d"
+      over_x_years: "%{count}A"
+      x_days: "%{count}ghj"
       x_minutes: "%{count}m"
-      x_months: "%{count}mo"
+      x_months: "%{count}Me"
       x_seconds: "%{count}s"
   deletes:
     bad_password_msg: È nò! Sta chjave ùn hè curretta
@@ -759,7 +766,6 @@ co:
           quadrillion: P
           thousand: K
           trillion: T
-          unit: ''
   pagination:
     newer: Più ricente
     next: Dopu
@@ -777,10 +783,9 @@ co:
       too_few_options: deve avè più d'un'uzzione
       too_many_options: ùn pò micca avè più di %{max} uzzione
   preferences:
-    languages: Lingue
     other: Altre
-    publishing: Pubblicazione
-    web: Web
+    posting_defaults: Paramettri predefiniti
+    public_timelines: Linee pubbliche
   relationships:
     activity: Attività di u contu
     dormant: Inattivu
@@ -927,10 +932,10 @@ co:
       <h3 id="collect">Quelles informations collectons-nous ?</h3>
 
       <ul>
-        <li><em>Informations de base sur votre compte</em> : Si vous vous inscrivez sur ce serveur, il vous sera demandé de rentrer un identifiant, une adresse électronique et un mot de passe. Vous pourrez également ajouter des informations additionnelles sur votre profil, telles qu’un nom public et une biographie, ainsi que téléverser une image de profil et une image d’en-tête. Vos identifiant, nom public, biographie, image de profil et image d’en-tête seront toujours affichés publiquement.</li>
+      <li><em>Informations de base sur votre compte</em> : Si vous vous inscrivez sur ce serveur, il vous sera demandé de rentrer un identifiant, une adresse électronique et un mot de passe. Vous pourrez également ajouter des informations additionnelles sur votre profil, telles qu’un nom public et une biographie, ainsi que téléverser une image de profil et une image d’en-tête. Vos identifiant, nom public, biographie, image de profil et image d’en-tête seront toujours affichés publiquement.</li>
       <li><em>Posts, liste d’abonnements et autres informations publiques</em> : La liste de vos abonnements ainsi que la liste de vos abonné·e·s sont publiques. Quand vous postez un message, la date et l’heure d’envoi ainsi que le nom de l’application utilisée pour sa transmission sont enregistré·e·s. Des médias, tels que des images ou des vidéos, peuvent être joints aux messages. Les posts publics et non listés sont affichés publiquement. Quand vous mettez en avant un post sur votre profil, ce post est également affiché publiquement. Vos messages sont délivrés à vos abonné·e·s, ce qui, dans certains cas, signifie qu’ils sont délivrés à des serveurs tiers et que ces derniers en stockent une copie. Quand vous supprimer un post, il est probable que vos abonné·e·s en soient informé·e·s. Partager un message ou le marquer comme favori est toujours une action publique.</li>
-        <li><em>Posts directs et abonné·e·s uniquement</em> : Tous les posts sont stockés et traités par le serveur. Les messages abonné·e·s uniquement ne sont transmis qu’à vos abonné·e·s et aux personnes mentionnées dans le corps du message, tandis que les messages directs ne sont transmis qu’aux personnes mentionnées. Dans certains cas, cela signifie qu’ils sont délivrés à des serveurs tiers et que ces derniers en stockent une copie. Nous faisons un effort de bonne fois pour en limiter l’accès uniquement aux personnes autorisées, mais ce n’est pas nécessairement le cas des autres serveurs. Il est donc très important que vous vérifiiez les serveurs auxquels appartiennent vos abonné·e·s. Il vous est possible d’activer une option dans les paramètres afin d’approuver et de rejeter manuellement les nouveaux·lles abonné·e·s. <em>Gardez s’il-vous-plaît en mémoire que les opérateur·rice·s du serveur ainsi que celles et ceux de n’importe quel serveur récepteur peuvent voir ces messages</em> et qu’il est possible pour les destinataires de faire des captures d’écran, de copier et plus généralement de repartager ces messages. <em>Ne partager aucune information sensible à l’aide de Mastodon.</em></li>
-        <li><em>IP et autres métadonnées</em> : Quand vous vous connectez, nous enregistrons votre adresse IP ainsi que le nom de votre navigateur web. Toutes les sessions enregistrées peuvent être consultées dans les paramètres, afin que vous puissiez les surveiller et éventuellement les révoquer. La dernière adresse IP utilisée est conservée pour une durée de 12 mois. Nous sommes également susceptibles de conserver les journaux du serveur, ce qui inclut l’adresse IP de chaque requête reçue.</li>
+      <li><em>Posts directs et abonné·e·s uniquement</em> : Tous les posts sont stockés et traités par le serveur. Les messages abonné·e·s uniquement ne sont transmis qu’à vos abonné·e·s et aux personnes mentionnées dans le corps du message, tandis que les messages directs ne sont transmis qu’aux personnes mentionnées. Dans certains cas, cela signifie qu’ils sont délivrés à des serveurs tiers et que ces derniers en stockent une copie. Nous faisons un effort de bonne fois pour en limiter l’accès uniquement aux personnes autorisées, mais ce n’est pas nécessairement le cas des autres serveurs. Il est donc très important que vous vérifiiez les serveurs auxquels appartiennent vos abonné·e·s. Il vous est possible d’activer une option dans les paramètres afin d’approuver et de rejeter manuellement les nouveaux·lles abonné·e·s. <em>Gardez s’il-vous-plaît en mémoire que les opérateur·rice·s du serveur ainsi que celles et ceux de n’importe quel serveur récepteur peuvent voir ces messages</em> et qu’il est possible pour les destinataires de faire des captures d’écran, de copier et plus généralement de repartager ces messages. <em>Ne partager aucune information sensible à l’aide de Mastodon.</em></li>
+      <li><em>IP et autres métadonnées</em> : Quand vous vous connectez, nous enregistrons votre adresse IP ainsi que le nom de votre navigateur web. Toutes les sessions enregistrées peuvent être consultées dans les paramètres, afin que vous puissiez les surveiller et éventuellement les révoquer. La dernière adresse IP utilisée est conservée pour une durée de 12 mois. Nous sommes également susceptibles de conserver les journaux du serveur, ce qui inclut l’adresse IP de chaque requête reçue.</li>
       </ul>
 
       <hr class="spacer" />
@@ -940,9 +945,9 @@ co:
       <p>Toutes les informations que nous collectons sur vous peuvent être utilisées d’une des manières suivantes :</p>
 
       <ul>
-        <li>Pour vous fournir les fonctionnalités de base de Mastodon. Vous ne pouvez interagir avec le contenu des autres et poster votre propre contenu que lorsque vous êtes connecté·e. Par exemple, vous pouvez vous abonner à plusieurs autres comptes pour voir l’ensemble de leurs posts dans votre fil d’accueil personnalisé.</li>
-        <li>Pour aider à la modération de la communauté, par exemple, comparer votre adresse IP à d’autres afin de déterminer si un bannissement a été contourné ou si une autre violation aux règles a été commise.</li>
-        <li>L’adresse électronique que vous nous avez fournie peut être utilisée pour vous envoyez des informations, des notifications lorsque d’autres personnes interagissent avec votre contenu ou vous envoient des messages, pour répondre à des demandes de votre part ainsi que pour tout autres requêtes ou questions.</li>
+      <li>Pour vous fournir les fonctionnalités de base de Mastodon. Vous ne pouvez interagir avec le contenu des autres et poster votre propre contenu que lorsque vous êtes connecté·e. Par exemple, vous pouvez vous abonner à plusieurs autres comptes pour voir l’ensemble de leurs posts dans votre fil d’accueil personnalisé.</li>
+      <li>Pour aider à la modération de la communauté, par exemple, comparer votre adresse IP à d’autres afin de déterminer si un bannissement a été contourné ou si une autre violation aux règles a été commise.</li>
+      <li>L’adresse électronique que vous nous avez fournie peut être utilisée pour vous envoyez des informations, des notifications lorsque d’autres personnes interagissent avec votre contenu ou vous envoient des messages, pour répondre à des demandes de votre part ainsi que pour tout autres requêtes ou questions.</li>
       </ul>
 
       <hr class="spacer" />
@@ -958,8 +963,8 @@ co:
       <p>Nous ferons un effort de bonne foi :</p>
 
       <ul>
-        <li>Pour ne pas conserver plus de 90 jours les journaux systèmes contenant les adresses IP de toutes les requêtes reçues par ce serveur.</li>
-        <li>Pour ne pas conserver plus de 12 mois les adresses IP associées aux utilisateur·ice·s enregistré·e·s.</li>
+      <li>Pour ne pas conserver plus de 90 jours les journaux systèmes contenant les adresses IP de toutes les requêtes reçues par ce serveur.</li>
+      <li>Pour ne pas conserver plus de 12 mois les adresses IP associées aux utilisateur·ice·s enregistré·e·s.</li>
       </ul>
 
       <p>Vous pouvez demander une archive de votre contenu, incluant vos posts, vos médias joints, votre image de profil et votre image d’en-tête.</p>
diff --git a/config/locales/cs.yml b/config/locales/cs.yml
index 9b73e3b1d..574754738 100644
--- a/config/locales/cs.yml
+++ b/config/locales/cs.yml
@@ -30,14 +30,16 @@ cs:
     server_stats: 'Statistika serveru:'
     source_code: Zdrojový kód
     status_count_after:
-      few: tooty
-      one: toot
-      other: tootů
+      few: příspěvky
+      many: příspěvků
+      one: příspěvek
+      other: příspěvků
     status_count_before: Kteří napsali
     tagline: Sledujte své přátele a objevujte nové
     terms: Podmínky používání
     user_count_after:
       few: uživatelé
+      many: uživatelů
       one: uživatel
       other: uživatelů
     user_count_before: Domov
@@ -47,6 +49,7 @@ cs:
     follow: Sledovat
     followers:
       few: Sledující
+      many: Sledujících
       one: Sledující
       other: Sledujících
     following: Sledovaných
@@ -63,6 +66,7 @@ cs:
       following: Musíte již sledovat osobu, kterou chcete podpořit
     posts:
       few: Tooty
+      many: Tootů
       one: Toot
       other: Tootů
     posts_tab_heading: Tooty
@@ -118,7 +122,7 @@ cs:
       header: Záhlaví
       inbox_url: URL příchozí schránky
       invited_by: Pozván/a uživatelem
-      ip: IP
+      ip: IP adresa
       joined: Připojil/a se
       location:
         all: Všechny
@@ -178,6 +182,7 @@ cs:
       statuses: Tooty
       subscribe: Odebírat
       suspended: Pozastaven/a
+      time_in_queue: Čeká ve frontě %{time}
       title: Účty
       unconfirmed_email: Nepotvrzený e-mail
       undo_silenced: Zrušit utišení
@@ -295,6 +300,7 @@ cs:
       show:
         affected_accounts:
           few: "%{count} účty v databázi byly ovlivněny"
+          many: "%{count} účtů v databázi bylo ovlivněno"
           one: Jeden účet v databázi byl ovlivněn
           other: "%{count} účtů v databázi bylo ovlivněno"
         retroactive:
@@ -321,6 +327,7 @@ cs:
       delivery_available: Doručení je k dispozici
       known_accounts:
         few: "%{count} známé účty"
+        many: "%{count} známých účtů"
         one: "%{count} známý účet"
         other: "%{count} známých účtů"
       moderation:
@@ -504,6 +511,12 @@ cs:
       body: "%{reporter} nahlásil/a uživatele %{target}"
       body_remote: Někdo z %{domain} nahlásil uživatele %{target}
       subject: Nové nahlášení pro %{instance} (#%{id})
+  appearance:
+    advanced_web_interface: Pokročilé webové rozhraní
+    advanced_web_interface_hint: 'Chcete-li využít celé šířky vaší obrazovky, dovolí vám pokročilé webové rozhraní nastavit si mnoho různých sloupců, takže můžete vidět ve stejnou chvíli tolik informací, kolik chcete: domovskou časovou osu, oznámení, federovanou časovou osu a libovolný počet seznamů a hashtagů.'
+    animations_and_accessibility: Animace a přístupnost
+    confirmation_dialogs: Potvrzovací dialogy
+    sensitive_content: Citlivý obsah
   application_mailer:
     notification_preferences: Změnit volby e-mailu
     salutation: "%{name},"
@@ -586,6 +599,7 @@ cs:
     how_to_enable: Aktuálně nejste přihlášen/a do adresáře. Přihlásit se můžete níže. Použijte ve svém popisu profilu hashtagy, abyste mohl/a být uveden/a pod konkrétními hashtagy!
     people:
       few: "%{count} lidé"
+      many: "%{count} lidí"
       one: "%{count} člověk"
       other: "%{count} lidí"
   errors:
@@ -650,6 +664,7 @@ cs:
     save_changes: Uložit změny
     validation_errors:
       few: Něco ještě není úplně v pořádku! Prosím zkontrolujte %{count} chyby níže
+      many: Něco ještě není úplně v pořádku! Prosím zkontrolujte %{count} chyb níže
       one: Něco ještě není úplně v pořádku! Prosím zkontrolujte chybu níže
       other: Něco ještě není úplně v pořádku! Prosím zkontrolujte %{count} chyb níže
   html_validator:
@@ -702,6 +717,7 @@ cs:
     invited_by: 'Byl/a jste pozván/a uživatelem:'
     max_uses:
       few: "%{count} použití"
+      many: "%{count} použití"
       one: 1 použití
       other: "%{count} použití"
     max_uses_prompt: Bez limitu
@@ -731,10 +747,12 @@ cs:
       mention: "%{name} vás zmínil/a v:"
       new_followers_summary:
         few: Navíc jste získal/a %{count} nové sledující, zatímco jste byl/a pryč! Skvělé!
+        many: Navíc jste získal/a %{count} nových sledujících, zatímco jste byl/a pryč! Úžasné!
         one: Navíc jste získal/a jednoho nového sledujícího, zatímco jste byl/a pryč! Hurá!
         other: Navíc jste získal/a %{count} nových sledujících, zatímco jste byl/a pryč! Úžasné!
       subject:
         few: "%{count} nová oznámení od vaší poslední návštěvy \U0001F418"
+        many: "%{count} nových oznámení od vaší poslední návštěvy \U0001F418"
         one: "1 nové oznámení od vaší poslední návštěvy \U0001F418"
         other: "%{count} nových oznámení od vaší poslední návštěvy \U0001F418"
       title: Ve vaší nepřítomnosti…
@@ -770,7 +788,6 @@ cs:
           quadrillion: bld
           thousand: tis
           trillion: bil
-          unit: ''
   pagination:
     newer: Novější
     next: Další
@@ -788,10 +805,9 @@ cs:
       too_few_options: musí mít více než jednu položku
       too_many_options: nesmí obsahovat více než %{max} položky
   preferences:
-    languages: Jazyky
     other: Ostatní
-    publishing: Publikování
-    web: Web
+    posting_defaults: Výchozí možnosti psaní
+    public_timelines: Veřejné časové osy
   relationships:
     activity: Aktivita účtu
     dormant: Nečinné
@@ -854,7 +870,7 @@ cs:
     current_session: Aktuální relace
     description: "%{browser} na %{platform}"
     explanation: Tohle jsou webové prohlížeče aktuálně přihlášené na váš účet Mastodon.
-    ip: IP
+    ip: IP adresa
     platforms:
       adobe_air: Adobe Air
       android: Androidu
@@ -896,16 +912,19 @@ cs:
       description: 'Přiloženo: %{attached}'
       image:
         few: "%{count} obrázky"
+        many: "%{count} obrázků"
         one: "%{count} obrázek"
         other: "%{count} obrázků"
       video:
         few: "%{count} videa"
+        many: "%{count} videí"
         one: "%{count} video"
         other: "%{count} videí"
     boosted_from_html: Boostnuto z %{acct_link}
     content_warning: 'Varování o obsahu: %{warning}'
     disallowed_hashtags:
       few: 'obsahoval nepovolené hashtagy: %{tags}'
+      many: 'obsahoval nepovolené hashtagy: %{tags}'
       one: 'obsahoval nepovolený hashtag: %{tags}'
       other: 'obsahoval nepovolené hashtagy: %{tags}'
     language_detection: Zjistit jazyk automaticky
@@ -919,6 +938,7 @@ cs:
     poll:
       total_votes:
         few: "%{count} hlasy"
+        many: "%{count} hlasů"
         one: "%{count} hlas"
         other: "%{count} hlasů"
       vote: Hlasovat
@@ -942,10 +962,10 @@ cs:
       <h3 id="collect">Jaké informace sbíráme?</h3>
 
       <ul>
-        <li><em>Základní informace o účtu</em>: Pokud se na tomto serveru zaregistrujete, můžeme vás požádat o zadání uživatelského jména, e-mailové adresy a hesla. Můžete také zadat dodatečné profilové informace, jako například zobrazované jméno a krátký životopis, a nahrát si profilovou fotografii a obrázek záhlaví. Uživatelské i zobrazované jméno, životopis, profilová fotografie a obrázek záhlaví jsou vždy uvedeny veřejně.</li>
-        <li><em>Příspěvky, sledující a další veřejné informace</em>: Seznam lidí, které sledujete, je uveden veřejně, totéž platí i pro vaše sledující. Když sem nahrajete zprávu, bude uloženo datum a čas, společně s aplikací, ze které jste zprávu odeslali. Zprávy mohou obsahovat mediální přílohy, jako jsou obrázky a videa. Veřejné a neuvedené příspěvky jsou dostupné veřejně. Pokud na vašem profilu uvedete příspěvek, je to také veřejně dostupná informace. Vaše příspěvky jsou doručeny vašim sledujícím, což v některých případech znamená, že budou doručeny na různé servery, na kterých budou ukládány kopie. Pokud příspěvky smažete, bude tohle taktéž doručeno vašim sledujícím. Akce znovusdílení nebo oblíbení jiného příspěvku je vždy veřejná.</li>
-        <li><em>Příspěvky přímé a pouze pro sledující</em>: Všechny příspěvky jsou uloženy a zpracovány na serveru. Příspěvky pouze pro sledující jsou doručeny vašim sledujícím a uživatelům v nich zmíněným a přímé příspěvky jsou doručeny pouze uživatelům v nich zmíněným. V některých případech tohle znamená, že budou doručeny na různé servery, na kterých budou ukládány kopie. Upřímně se snažíme omezit přístup k těmto příspěvkům pouze na autorizované uživatele, ovšem jiné servery tak nemusejí učinit. Proto je důležité posoudit servery, ke kterým vaši sledující patří. V nastavení si můžete zapnout volbu pro manuální schvalování či odmítnutí nových sledujících. <em>Prosím mějte na paměti, že operátoři tohoto serveru a kteréhokoliv přijímacího serveru mohou tyto zprávy vidět</em> a příjemci mohou vytvořit jejich snímek, zkopírovat je, nebo je jinak sdílet. <em>Nesdílejte přes Mastodon jakékoliv nebezpečné informace.</em></li>
-        <li><em>IP adresy a další metadata</em>: Když se přihlásíte, zaznamenáváme IP adresu, ze které se přihlašujete, jakožto i název vašeho webového prohlížeče. Všechny vaše webové relace jsou v nastavení přístupné k vašemu posouzení a odvolání. Nejpozdější IP adresa použita je uložena maximálně do 12 měsíců. Můžeme také uchovávat serverové záznamy, které obsahují IP adresy každého požadavku odeslaného na náš server.</li>
+      <li><em>Základní informace o účtu</em>: Pokud se na tomto serveru zaregistrujete, můžeme vás požádat o zadání uživatelského jména, e-mailové adresy a hesla. Můžete také zadat dodatečné profilové informace, jako například zobrazované jméno a krátký životopis, a nahrát si profilovou fotografii a obrázek záhlaví. Uživatelské i zobrazované jméno, životopis, profilová fotografie a obrázek záhlaví jsou vždy uvedeny veřejně.</li>
+      <li><em>Příspěvky, sledující a další veřejné informace</em>: Seznam lidí, které sledujete, je uveden veřejně, totéž platí i pro vaše sledující. Když sem nahrajete zprávu, bude uloženo datum a čas, společně s aplikací, ze které jste zprávu odeslali. Zprávy mohou obsahovat mediální přílohy, jako jsou obrázky a videa. Veřejné a neuvedené příspěvky jsou dostupné veřejně. Pokud na vašem profilu uvedete příspěvek, je to také veřejně dostupná informace. Vaše příspěvky jsou doručeny vašim sledujícím, což v některých případech znamená, že budou doručeny na různé servery, na kterých budou ukládány kopie. Pokud příspěvky smažete, bude tohle taktéž doručeno vašim sledujícím. Akce znovusdílení nebo oblíbení jiného příspěvku je vždy veřejná.</li>
+      <li><em>Příspěvky přímé a pouze pro sledující</em>: Všechny příspěvky jsou uloženy a zpracovány na serveru. Příspěvky pouze pro sledující jsou doručeny vašim sledujícím a uživatelům v nich zmíněným a přímé příspěvky jsou doručeny pouze uživatelům v nich zmíněným. V některých případech tohle znamená, že budou doručeny na různé servery, na kterých budou ukládány kopie. Upřímně se snažíme omezit přístup k těmto příspěvkům pouze na autorizované uživatele, ovšem jiné servery tak nemusejí učinit. Proto je důležité posoudit servery, ke kterým vaši sledující patří. V nastavení si můžete zapnout volbu pro manuální schvalování či odmítnutí nových sledujících. <em>Prosím mějte na paměti, že operátoři tohoto serveru a kteréhokoliv přijímacího serveru mohou tyto zprávy vidět</em> a příjemci mohou vytvořit jejich snímek, zkopírovat je, nebo je jinak sdílet. <em>Nesdílejte přes Mastodon jakékoliv nebezpečné informace.</em></li>
+      <li><em>IP adresy a další metadata</em>: Když se přihlásíte, zaznamenáváme IP adresu, ze které se přihlašujete, jakožto i název vašeho webového prohlížeče. Všechny vaše webové relace jsou v nastavení přístupné k vašemu posouzení a odvolání. Nejpozdější IP adresa použita je uložena maximálně do 12 měsíců. Můžeme také uchovávat serverové záznamy, které obsahují IP adresy každého požadavku odeslaného na náš server.</li>
       </ul>
 
       <hr class="spacer" />
@@ -955,9 +975,9 @@ cs:
       <p>Jakékoliv informace, které sbíráme, mohou být použity následujícími způsoby:</p>
 
       <ul>
-        <li>K poskytnutí základních funkcí Mastodonu. Interagovat s obsahem od jiných lidí a přispívat svým vlastním obsahem můžete pouze, pokud jste přihlášeni. Můžete například sledovat jiné lidi a zobrazit si jejich kombinované příspěvky ve vaší vlastní personalizované časové ose.</li>
-        <li>Pro pomoc moderování komunity, například porovnáním vaší IP adresy s dalšími známými adresami pro určení vyhýbání se zákazům či jiných přestupků.</li>
-        <li>E-mailová adresa, kterou nám poskytnete, může být použita pro zasílání informací, oznámení o interakcích jiných uživatelů s vaším obsahem nebo přijatých zprávách a k odpovědím na dotazy a/nebo další požadavky či otázky.</li>
+      <li>K poskytnutí základních funkcí Mastodonu. Interagovat s obsahem od jiných lidí a přispívat svým vlastním obsahem můžete pouze, pokud jste přihlášeni. Můžete například sledovat jiné lidi a zobrazit si jejich kombinované příspěvky ve vaší vlastní personalizované časové ose.</li>
+      <li>Pro pomoc moderování komunity, například porovnáním vaší IP adresy s dalšími známými adresami pro určení vyhýbání se zákazům či jiných přestupků.</li>
+      <li>E-mailová adresa, kterou nám poskytnete, může být použita pro zasílání informací, oznámení o interakcích jiných uživatelů s vaším obsahem nebo přijatých zprávách a k odpovědím na dotazy a/nebo další požadavky či otázky.</li>
       </ul>
 
       <hr class="spacer" />
@@ -973,8 +993,8 @@ cs:
       <p>Budeme se upřímně snažit:</p>
 
       <ul>
-        <li>Uchovávat serverové záznamy obsahující IP adresy všech požadavků pro tento server, pokud se takové záznamy uchovávají, maximálně 90 dní.</li>
-        <li>Uchovávat IP adresy související s registrovanými uživateli maximálně 12 měsíců.</li>
+      <li>Uchovávat serverové záznamy obsahující IP adresy všech požadavků pro tento server, pokud se takové záznamy uchovávají, maximálně 90 dní.</li>
+      <li>Uchovávat IP adresy související s registrovanými uživateli maximálně 12 měsíců.</li>
       </ul>
 
       <p>Kdykoliv si můžete vyžádat a stáhnout archiv vašeho obsahu, včetně vašich příspěvků, mediálních příloh, profilové fotografie a obrázku záhlaví.</p>
diff --git a/config/locales/cy.yml b/config/locales/cy.yml
index f365f7173..adf6bc1d0 100644
--- a/config/locales/cy.yml
+++ b/config/locales/cy.yml
@@ -4,20 +4,30 @@ cy:
     about_hashtag_html: Dyma dŵtiau cyhoeddus wedi eu tagio gyda <strong>#%{hashtag}</strong>. Gallwch ryngweithio gyda nhw os oes gennych gyfrif yn unrhyw le yn y ffeddysawd.
     about_mastodon_html: Mae Mastodon yn rwydwaith cymdeithasol sy'n seiliedig ar brotocolau gwe a meddalwedd cod agored rhad ac am ddim. Yn debyg i e-bost mae'n ddatganoledig.
     about_this: Ynghylch
+    active_count_after: yn weithredol
+    active_footnote: Defnyddwyr Gweithredol Misol (DGM)
     administered_by: 'Gweinyddir gan:'
     api: API
     apps: Apiau symudol
+    apps_platforms: Defnyddio Mastodon o iOS, Android a phlatfformau eraill
+    browse_directory: Pori cyfeiriadur proffil a hidlo wrth diddordebau
+    browse_public_posts: Pori ffrwd byw o byst cyhoeddus ar Fastodon
     contact: Cyswllt
     contact_missing: Heb ei osod
     contact_unavailable: Ddim yn berthnasol
+    discover_users: Darganfod defnyddwyr
     documentation: Dogfennaeth
     extended_description_html: |
       <h3>Lle da ar gyfer rheolau</h3>
       <p>Nid yw'r disgrifiad estynedig wedi ei osod eto.</p>
+    federation_hint_html: Gyda cyfrif ar %{instance}, gallwch dilyn pobl ar unrhyw gweinydd Mastodon, a thu hwnt.
     generic_description: Mae %{domain} yn un gweinydd yn y rhwydwaith
+    get_apps: Rhowch gynnig ar ap dyfeis symudol
     hosted_on: Mastodon wedi ei weinyddu ar %{domain}
     learn_more: Dysu mwy
     privacy_policy: Polisi preifatrwydd
+    see_whats_happening: Gweld beth sy'n digwydd
+    server_stats: 'Ystadegau gweinydd:'
     source_code: Cod ffynhonnell
     status_count_after:
       few: statwsau
@@ -27,6 +37,7 @@ cy:
       two: statwsau
       zero: statwsau
     status_count_before: Ysgriffennwyd gan
+    tagline: Dilyn ffrindiau a darganfod rhai newydd
     terms: Telerau gwasanaeth
     user_count_after:
       few: defnyddwyr
@@ -73,17 +84,20 @@ cy:
       admin: Gweinyddwr
       bot: Bot
       moderator: Safonwr
+    unavailable: Proffil ddim ar gael
     unfollow: Dad-ddilyn
   admin:
     account_actions:
       action: Cyflawni gweithred
-      title: Perfformio cymedroli ar %{acct}
+      title: Perfformio gweithrediad goruwchwylio ar %{acct}
     account_moderation_notes:
       create: Gadael nodyn
-      created_msg: Crewyd nodyn cymedroli yn llwyddiannus!
+      created_msg: Crewyd nodyn goruwchwylio yn llwyddiannus!
       delete: Dileu
-      destroyed_msg: Dinistrwyd nodyn cymedroli yn llwyddiannus!
+      destroyed_msg: Dinistrwyd nodyn goruwchwylio yn llwyddiannus!
     accounts:
+      approve: Cymeradwyo
+      approve_all: Cymeradwyo pob un
       are_you_sure: Ydych chi'n siŵr?
       avatar: Afatar
       by_domain: Parth
@@ -129,15 +143,18 @@ cy:
       moderation:
         active: Yn weithredol
         all: Popeth
+        pending: Yn aros
         silenced: Wedi ei dawelu
         suspended: Wedi ei atal
-        title: Cymedroli
-      moderation_notes: Nodiadau cymedroli
+        title: Goruwchwyliad
+      moderation_notes: Nodiadau goruwchwylio
       most_recent_activity: Gweithgarwch diweddaraf
       most_recent_ip: IP diweddaraf
+      no_account_selected: Ni newidwyd dim cyfrif achos ni ddewiswyd dim un
       no_limits_imposed: Dim terfynau wedi'i gosod
       not_subscribed: Heb danysgrifio
       outbox_url: Allflwch URL
+      pending: Yn aros am adolygiad
       perform_full_suspension: Atal
       profile_url: URL proffil
       promote: Hyrwyddo
@@ -145,6 +162,8 @@ cy:
       public: Cyhoeddus
       push_subscription_expires: Tanysgrifiad PuSH yn dod i ben
       redownload: Adnewyddu proffil
+      reject: Gwrthod
+      reject_all: Gwrthod pob un
       remove_avatar: Dileu afatar
       remove_header: Dileu pennawd
       resend_confirmation:
@@ -157,7 +176,7 @@ cy:
       role: Caniatâd
       roles:
         admin: Gweinyddwr
-        moderator: Safonwr
+        moderator: Aroglygydd
         staff: Staff
         user: Defnyddiwr
       salmon_url: URL Eog
@@ -171,6 +190,7 @@ cy:
       statuses: Statysau
       subscribe: Tanysgrifio
       suspended: Ataliwyd
+      time_in_queue: Yn aros yn y rhestr am %{time}
       title: Cyfrifon
       unconfirmed_email: E-bost heb ei gadarnhau
       undo_silenced: Dadwneud tawelu
@@ -246,6 +266,7 @@ cy:
       feature_profile_directory: Cyfeiriadur proffil
       feature_registrations: Cofrestriadau
       feature_relay: Relái ffederasiwn
+      feature_timeline_preview: Rhagolwg o'r ffrwd
       features: Nodweddion
       hidden_service: Ffederasiwn a gwasanaethau cudd
       open_reports: adroddiadau agored
@@ -265,9 +286,10 @@ cy:
       created_msg: Mae'r bloc parth nawr yn cael ei brosesu
       destroyed_msg: Mae'r bloc parth wedi ei ddadwneud
       domain: Parth
+      existing_domain_block_html: Rydych yn barod wedi gosod cyfyngau fwy llym ar %{name}, mae rhaid i chi ei <a href="%{unblock_url}">ddadblocio</a> yn gyntaf.
       new:
         create: Creu bloc
-        hint: Ni fydd y bloc parth yn atal cread cofnodion cyfrif yn y bas data, ond mi fydd yn gosod dulliau cymedroli penodol ôl-weithredol ac awtomatig ar y cyfrifau hynny.
+        hint: Ni fydd y bloc parth yn atal cread cofnodion cyfrif yn y bas data, ond mi fydd yn gosod dulliau goruwchwylio penodol ôl-weithredol ac awtomatig ar y cyfrifau hynny.
         severity:
           desc_html: Mae <strong>Tawelu</strong> yn gwneud twtiau y cyfrif yn anweledig i unrhyw un nad yw'n dilyn y cyfrif. Mae <strong>Atal</strong> yn cael gwared ar holl gynnwys, cyfryngau a data proffil y cyfrif. Defnyddiwch <strong>Dim</strong> os ydych chi ond am wrthod dogfennau cyfryngau.
           noop: Dim
@@ -323,7 +345,7 @@ cy:
       moderation:
         all: Pob
         limited: Gyfyngedig
-        title: Cymedroli
+        title: Goruwchwyliad
       title: Ffederasiwn
       total_blocked_by_us: Wedi'i bloc gan ni
       total_followed_by_them: Yn dilyn ganynt
@@ -338,6 +360,8 @@ cy:
         expired: Wedi dod i ben
         title: Hidlo
       title: Gwahoddiadau
+    pending_accounts:
+      title: Cyfrifau yn aros (%{count})
     relays:
       add_new: Ychwanegau relái newydd
       delete: Dileu
@@ -363,7 +387,7 @@ cy:
       action_taken_by: Gwnaethpwyd hyn gan
       are_you_sure: Ydych chi'n sicr?
       assign_to_self: Aseinio i mi
-      assigned: Cymedrolwr wedi'i aseinio
+      assigned: Arolygwr wedi'i aseinio
       comment:
         none: Dim
       created_at: Adroddwyd
@@ -424,6 +448,12 @@ cy:
         min_invite_role:
           disabled: Neb
           title: Caniatau gwahoddiadau gan
+      registrations_mode:
+        modes:
+          approved: Mae angen cymeradwyaeth ar gyfer cofrestru
+          none: Ni all unrhyw un cofrestru
+          open: Gall unrhyw un cofrestru
+        title: Modd cofrestriadau
       show_known_fediverse_at_about_page:
         desc_html: Wedi'i ddewis, bydd yn dangos rhagolwg o dŵtiau o'r holl ffedysawd. Fel arall bydd ond yn dangos tŵtiau lleol.
         title: Dangos ffedysawd hysbys ar ragolwg y ffrwd
@@ -486,10 +516,19 @@ cy:
       edit_preset: Golygu rhagosodiad rhybudd
       title: Rheoli rhagosodiadau rhybudd
   admin_mailer:
+    new_pending_account:
+      body: Mae manylion y cyfrif newydd yn isod. Gallwch cymeradwyo neu wrthod y ceisiad hon.
+      subject: Cyfrif newydd i fynu ar gyfer adolygiad ar %{instance} (%{username})
     new_report:
       body: Mae %{reporter} wedi cwyno am %{target}
       body_remote: Mae rhywun o %{domain} wedi cwyno am %{target}
-      subject: Cwyn newydd am %{instance} {#%{id}}
+      subject: Cwyn newydd am %{instance} (#%{id})
+  appearance:
+    advanced_web_interface: Rhyngwyneb gwe uwch
+    advanced_web_interface_hint: 'Os hoffech gwneud defnydd o gyd o''ch lled sgrin, mae''r rhyngwyneb gwe uwch yn gadael i chi ffurfweddu sawl colofn wahanol i weld cymaint o wybodaeth â hoffech: Catref, hysbysiadau, ffrwd y ffedysawd, unrhyw nifer o rhestrau ac hashnodau.'
+    animations_and_accessibility: Animeiddiau ac hygyrchedd
+    confirmation_dialogs: Deialog cadarnhau
+    sensitive_content: Cynnwys sensitif
   application_mailer:
     notification_preferences: Newid gosodiadau e-bost
     salutation: "%{name},"
@@ -506,7 +545,9 @@ cy:
     warning: Byddwch yn ofalus a'r data hyn. Peidiwch a'i rannu byth!
     your_token: Eich tocyn mynediad
   auth:
+    apply_for_account: Gofyn am wahoddiad
     change_password: Cyfrinair
+    checkbox_agreement_html: Rydw i'n cytuno i'r <a href="%{rules_path}" target="_blank">rheolau'r gweinydd</a> a'r <a href="%{terms_path}" target="_blank">telerau gwasanaeth</a>
     confirm_email: Cadarnhau e-bost
     delete_account: Dileu cyfrif
     delete_account_html: Os hoffech chi ddileu eich cyfrif, mae modd <a href="%{path}">parhau yma</a>. Bydd gofyn i chi gadarnhau.
@@ -522,10 +563,12 @@ cy:
       cas: CAS
       saml: SAML
     register: Cofrestru
+    registration_closed: Nid yw %{instance} yn derbyn aelodau newydd
     resend_confirmation: Ailanfon cyfarwyddiadau cadarnhau
     reset_password: Ailosod cyfrinair
     security: Diogelwch
     set_new_password: Gosod cyfrinair newydd
+    trouble_logging_in: Trafferdd mewngofnodi?
   authorize_follow:
     already_following: Yr ydych yn dilyn y cyfrif hwn yn barod
     error: Yn anffodus, roedd gwall tra'n edrych am y cyfrif anghysbell
@@ -544,11 +587,11 @@ cy:
       about_x_years: "%{count}blwyddyn"
       almost_x_years: "%{count}blwyddyn"
       half_a_minute: Newydd fod
-      less_than_x_minutes: "%{count}m"
+      less_than_x_minutes: "%{count}munud"
       less_than_x_seconds: Newydd fod
       over_x_years: "%{count}blwyddyn"
       x_days: "%{count}dydd"
-      x_minutes: "%{count}m"
+      x_minutes: "%{count}munud"
       x_months: "%{count}mis"
       x_seconds: "%{count}eiliad"
   deletes:
@@ -566,13 +609,6 @@ cy:
     explanation: Darganfod defnyddwyr yn seiliedig ar eu diddordebau
     explore_mastodon: Archwilio %{title}
     how_to_enable: Ar hyn o bryd nid ydych chi wedi dewis y cyfeiriadur. Gallwch ddewis i mewn isod. Defnyddiwch hashnodau yn eich bio-destun i'w restru dan hashnodau penodol!
-    people:
-      few: "%{count} personau"
-      many: "%{count} personau"
-      one: "%{count} person"
-      other: "%{count} personau"
-      two: "%{count} personau"
-      zero: "%{count} personau"
   errors:
     '403': Nid oes gennych ganiatad i weld y dudalen hon.
     '404': Nid yw'r dudalen yr oeddech yn chwilio amdani'n bodoli.
@@ -585,6 +621,9 @@ cy:
       content: Mae'n ddrwg gennym ni, ond fe aeth rhywbeth o'i le ar ein rhan ni.
       title: Nid yw'r dudalen hon yn gywir
     noscript_html: I ddefnyddio ap gwe Mastodon, galluogwch JavaScript os gwlwch yn dda. Fel arall, gallwch drio un o'r <a href="%{apps_path}">apiau cynhenid</a> ar gyfer Mastodon ar eich platfform.
+  existing_username_validator:
+    not_found: ni ddarganfwyd defnyddiwr lleol gyda'r enw cyfrif hynny
+    not_found_multiple: ni ddarganfwyd %{usernames}
   exports:
     archive_takeout:
       date: Dyddiad
@@ -625,8 +664,10 @@ cy:
     more: Mwy…
     resources: Adnoddau
   generic:
+    all: Popeth
     changes_saved_msg: Llwyddwyd i gadw y newidiadau!
     copy: Copïo
+    order_by: Trefnu wrth
     save_changes: Cadw newidiadau
     validation_errors:
       few: Mae rhywbeth o'i le o hyd! Edrychwch ar y %{count} gwall isod os gwelwch yn dda
@@ -635,18 +676,41 @@ cy:
       other: Mae rhywbeth o'i le o hyd! Edrychwch ar y %{count} gwall isod os gwelwch yn dda
       two: Mae rhywbeth o'i le o hyd! Edrychwch ar y %{count} gwall isod os gwelwch yn dda
       zero: Mae rhywbeth o'i le o hyd! Edrychwch ar y %{count} gwall isod os gwelwch yn dda
+  html_validator:
+    invalid_markup: 'yn cynnwys marciad HTML annilys: %{error}'
+  identity_proofs:
+    active: Yn weithredol
+    authorize: Ie, awdurdodi
+    authorize_connection_prompt: Awdurdodi y cysylltiad cryptograffig hon?
+    errors:
+      failed: Methwyd y cysylltiad cryptograffig. Ceisiwch eto o %{provider}, os gwelwch yn dda.
+      keybase:
+        invalid_token: Mae tocynnau keybase yn hashiau o llofnodau ac mae rhaid iddynt bod yn 66 cymeriadau hecs
+        verification_failed: Nid yw Keybase yn adnabod y tocyn hyn fel llofnod defnyddiwr Keybase %{kb_username}. Cesiwch eto o Keybase, os gwelwch yn dda.
+      wrong_user: Ni all greu prawf ar gyfer %{proving} tra wedi mewngofnodi fel %{current}. Mewngofnodi fel %{proving} a cheisiwch eto.
+    explanation_html: Fama gallwch cysylltu i'ch hunanieithau arall yn cryptograffig, er enghraifft proffil Keybase. Mae hyn yn gadael pobl arall i anfon chi negeseuon amgryptiedig a ymddiried mewn cynnwys rydych yn eich anfon iddynt.
+    i_am_html: Rydw i'n %{username} ar %{service}.
+    identity: Hunaniaeth
+    inactive: Anweithgar
+    publicize_checkbox: 'A thŵtiwch hon:'
+    publicize_toot: 'Wedi profi! Rydw i''n %{username} ar %{service}: %{url}'
+    status: Statws gwirio
+    view_proof: Gweld prawf
   imports:
     modes:
       merge: Cyfuno
       merge_long: Cadw'r cofnodau presennol ac ychwanegu rhai newydd
+      overwrite: Trosysgrifio
+      overwrite_long: Disodli cofnodau bresennol gyda'r cofnodau newydd
     preface: Mae modd mewnforio data yr ydych wedi allforio o achos arall, megis rhestr o bobl yr ydych yn ei ddilyn neu yn blocio.
     success: Uwchlwythwyd eich data yn llwyddiannus ac fe fydd yn cael ei brosesu mewn da bryd
     types:
       blocking: Rhestr blocio
+      domain_blocking: Rhestr rhwystro parth
       following: Rhestr dilyn
       muting: Rhestr tawelu
     upload: Uwchlwytho
-  in_memoriam_html: In Memoriam.
+  in_memoriam_html: Mewn Cofiad.
   invites:
     delete: Dadactifadu
     expired: Wedi darfod
@@ -686,7 +750,7 @@ cy:
     proceed: Cadw
     updated_msg: Diweddarwyd gosodiad mudo eich cyfrif yn llwyddiannus!
   moderation:
-    title: Cymedroli
+    title: Goruwchwyliad
   notification_mailer:
     digest:
       action: Gweld holl hysbysiadau
@@ -734,22 +798,44 @@ cy:
       decimal_units:
         format: "%n%u"
         units:
-          billion: B
-          million: M
-          quadrillion: Q
-          thousand: K
-          trillion: T
+          billion: Biliwn
+          million: Miliwn
+          quadrillion: Cwadriliwn
+          thousand: Mil
+          trillion: Triliwn
   pagination:
     newer: Diweddarach
     next: Nesaf
     older: Hŷn
     prev: Blaenorol
     truncate: "&hellip;"
+  polls:
+    errors:
+      already_voted: Rydych chi barod wedi pleidleisio ar y pleidlais hon
+      duplicate_options: yn cynnwys eitemau dyblyg
+      duration_too_long: yn rhy bell yn y dyfodol
+      duration_too_short: yn rhy fuan
+      expired: Mae'r pleidlais wedi gorffen yn barod
+      over_character_limit: ni all fod yn hirach na %{max} cymeriad yr un
+      too_few_options: rhaid cael fwy nag un eitem
+      too_many_options: ni all cynnwys fwy na %{max} o eitemau
   preferences:
-    languages: Ieithoedd
     other: Arall
-    publishing: Cyhoeddi
-    web: Gwe
+    posting_defaults: Rhagosodiadau postio
+    public_timelines: Ffrydau gyhoeddus
+  relationships:
+    activity: Gweithgareddau cyfrif
+    dormant: Segur
+    last_active: Gweithred ddiwethaf
+    most_recent: Yn diweddaraf
+    moved: Wedi symud
+    mutual: Cydfuddiannol
+    primary: Cynradd
+    relationship: Perthynas
+    remove_selected_domains: Tynnu pob dilynydd o'r parthau dewisiedig
+    remove_selected_followers: Tynnu'r dilynydd dewisiedig
+    remove_selected_follows: Dad-ddilyn y defnyddwyr dewisiedig
+    status: Statws cyfrif
   remote_follow:
     acct: Mewnbynnwch eich enwdefnyddiwr@parth yr ydych eisiau gweithredu ohonno
     missing_resource: Ni ellir canfod yr URL ailgyferio angenrheidiol i'ch cyfrif
@@ -764,40 +850,14 @@ cy:
     activity: Gweithgaredd ddiwethaf
     browser: Porwr
     browsers:
-      alipay: Alipay
-      blackberry: Blackberry
-      chrome: Chrome
-      edge: Microsoft Edge
-      electron: Electron
-      firefox: Firefox
       generic: Porwr anhysbys
-      ie: Internet Explorer
-      micro_messenger: MicroMessenger
       nokia: Porwr Nokia S40 Ovi
-      opera: Opera
-      otter: Otter
-      phantom_js: PhantomJS
       qq: Porwr QQ
-      safari: Safari
-      uc_browser: UCBrowser
-      weibo: Weibo
     current_session: Sesiwn cyfredol
     description: "%{browser} ar %{platform}"
     explanation: Dyma'r porwyr gwê sydd wedi mewngofnodi i'ch cyfrif Mastododon ar hyn o bryd.
-    ip: IP
     platforms:
-      adobe_air: Adobe Air
-      android: Android
-      blackberry: Blackberry
-      chrome_os: ChromeOS
-      firefox_os: Firefox OS
-      ios: iOS
-      linux: Linux
-      mac: Mac
       other: platfform anhysbys
-      windows: Windows
-      windows_mobile: Windows Mobile
-      windows_phone: Windows Phone
     revoke: Diddymu
     revoke_success: Sesiwn wedi ei ddiddymu yn llwyddiannus
     title: Sesiynau
@@ -849,7 +909,6 @@ cy:
       reblog: Ni ellir pinio bŵstiau
     show_more: Dangos mwy
     sign_in_to_participate: Mengofnodwch i gymryd rhan yn y sgwrs
-    title: '%{name}: "%{quote}"'
     visibilities:
       private: Dilynwyr yn unig
       private_long: Dangos i ddilynwyr yn unig
@@ -867,10 +926,10 @@ cy:
       <h3 id="collect">Pa wybodaeth ydyn ni'n ei gasglu?</h3>
 
       <ul>
-        <li><em>Gwybodaeth cyfrif sylfaenol</em>: Os ydych yn cofrestru ar y gweinydd hwn, mae'n bosib y byddwch yn cael eich gofyn i fewnbynnu enw defnyddiwr, cyfeiriad e-bost a chyfrinair. Mae modd i chi hefyd fewnbynnu gwybodaeth ychwanegol megis enw arddangos a bywgraffiad ac uwchlwytho llun proffil a llun pennawd. Mae'r enw defnyddiwr, enw arddangos, bywgraffiad, llun proffil a'r llun pennawd wedi eu rhestru'n gyhoeddus bob tro.</li>
-        <li><em>Postio, dilyn a gwybodaeth gyhoeddus arall</em>: Mae'r rhestr o bobl yr ydych yn dilyn wedi ei restru'n gyhoeddus, mae'r un peth yn wir am eich dilynwyr. Pan yr ydych yn mewnosod neges, mae'r dyddiad a'r amser yn cael ei gofnodi ynghyd a'r rhaglen y wnaethoch anfon y neges ohonni. Gall negeseuon gynnwys atodiadau cyfryngau, megis lluniau neu fideo. Mae negeseuon cyhoeddus a negeseuon heb eu rhestru ar gael yn gyhoeddus. Pan yr ydych yn nodweddu neges ar eich proffil, mae hynny hefyd yn wybodaeth sydd ar gael yn gyhoeddus. Mae eich negeseuon yn cael eu hanfon i'ch dilynwyr, mewn rhai achosion mae hyn yn golygu eu bod yn cael eu hanfon i amryw o weinyddwyr ac fe fydd copiau yn cael eu cadw yno. Pan yr ydych yn dileu negeseuon, mae hyn hefyd yn cael ei hanfon i'ch dilynwyr. Mae'r weithred o rannu neu hoffi neges arall yn gyhoeddus bob tro.</li>
-        <li><em>Negeseuon uniongyrchol a dilynwyr yn unig</em>: Mae pob neges yn cael eu cadw a'u prosesu ar y gweinydd. Mae negeseuon dilynwyr yn unig yn cael eu hanfon i'ch dilynwyr a'r defnyddwyr sy'n cael eu crybwyll ynddynt tra bod negeseuon uniongyrchol yn cael eu hanfon at rheini sy'n cael crybwyll ynddynt yn unig. Mewn rhai achostion golyga hyn eu bod yn cael eu hanfon i weinyddwyr gwahanol a'u cadw yno. yr ydym yn gnweud ymgais ewyllys da i gyfyngu'r mynediad at y negeseuon yna i bobl ac awdurdod yn unig, ond mae'n bosib y bydd gweinyddwyr eraill yn methu a gwneud hyn. Mae'n bwysig felly i chi fod yn wyliadwrus o ba weinyddwyr y mae eich dilynwyr yn perthyn iddynt. Mae modd i chi osod y dewis i ganiatau a gwrthod dilynwyr newydd a llaw yn y gosodiadau. <em>Cofiwch gall gweithredwyr y gweinydd ac unrhyw weinydd derbyn weld unrhyw negeseuon o'r fath</em>, ac fe all y derbynwyr gymryd sgrinlin, copïo neu drwy ddulliau eraill rannu rhain. <em>Peidiwch a rhannu unrhyw wybodaeth beryglus dros Mastodon.</em></li>
-        <li><em>IPs a mathau eraill o metadata</em>: Pan yr ydych yn mewngofnodi, yr ydym yn cofnodi y cyfeiriad IP yr ydych yn mewngofnodi ohonno, ynghyd a enw eich rhaglen pori. Mae pob un sesiwn mewngofnodi ar gael i chi adolygu a gwrthod yn y gosodiadau. Mae'r cyfeiriad IP diweddaraf yn cael ei storio hyd at 12 mis. Mae'n bosib y byddwn hefyd yn cadw cofnodion gweinydd sy'n cynnwys y cyfeiriad IP am bob cais sy'n cael ei wneud i'n gweinydd.</li>
+      <li><em>Gwybodaeth cyfrif sylfaenol</em>: Os ydych yn cofrestru ar y gweinydd hwn, mae'n bosib y byddwch yn cael eich gofyn i fewnbynnu enw defnyddiwr, cyfeiriad e-bost a chyfrinair. Mae modd i chi hefyd fewnbynnu gwybodaeth ychwanegol megis enw arddangos a bywgraffiad ac uwchlwytho llun proffil a llun pennawd. Mae'r enw defnyddiwr, enw arddangos, bywgraffiad, llun proffil a'r llun pennawd wedi eu rhestru'n gyhoeddus bob tro.</li>
+      <li><em>Postio, dilyn a gwybodaeth gyhoeddus arall</em>: Mae'r rhestr o bobl yr ydych yn dilyn wedi ei restru'n gyhoeddus, mae'r un peth yn wir am eich dilynwyr. Pan yr ydych yn mewnosod neges, mae'r dyddiad a'r amser yn cael ei gofnodi ynghyd a'r rhaglen y wnaethoch anfon y neges ohonni. Gall negeseuon gynnwys atodiadau cyfryngau, megis lluniau neu fideo. Mae negeseuon cyhoeddus a negeseuon heb eu rhestru ar gael yn gyhoeddus. Pan yr ydych yn nodweddu neges ar eich proffil, mae hynny hefyd yn wybodaeth sydd ar gael yn gyhoeddus. Mae eich negeseuon yn cael eu hanfon i'ch dilynwyr, mewn rhai achosion mae hyn yn golygu eu bod yn cael eu hanfon i amryw o weinyddwyr ac fe fydd copiau yn cael eu cadw yno. Pan yr ydych yn dileu negeseuon, mae hyn hefyd yn cael ei hanfon i'ch dilynwyr. Mae'r weithred o rannu neu hoffi neges arall yn gyhoeddus bob tro.</li>
+      <li><em>Negeseuon uniongyrchol a dilynwyr yn unig</em>: Mae pob neges yn cael eu cadw a'u prosesu ar y gweinydd. Mae negeseuon dilynwyr yn unig yn cael eu hanfon i'ch dilynwyr a'r defnyddwyr sy'n cael eu crybwyll ynddynt tra bod negeseuon uniongyrchol yn cael eu hanfon at rheini sy'n cael crybwyll ynddynt yn unig. Mewn rhai achostion golyga hyn eu bod yn cael eu hanfon i weinyddwyr gwahanol a'u cadw yno. yr ydym yn gnweud ymgais ewyllys da i gyfyngu'r mynediad at y negeseuon yna i bobl ac awdurdod yn unig, ond mae'n bosib y bydd gweinyddwyr eraill yn methu a gwneud hyn. Mae'n bwysig felly i chi fod yn wyliadwrus o ba weinyddwyr y mae eich dilynwyr yn perthyn iddynt. Mae modd i chi osod y dewis i ganiatau a gwrthod dilynwyr newydd a llaw yn y gosodiadau. <em>Cofiwch gall gweithredwyr y gweinydd ac unrhyw weinydd derbyn weld unrhyw negeseuon o'r fath</em>, ac fe all y derbynwyr gymryd sgrinlin, copïo neu drwy ddulliau eraill rannu rhain. <em>Peidiwch a rhannu unrhyw wybodaeth beryglus dros Mastodon.</em></li>
+      <li><em>IPs a mathau eraill o metadata</em>: Pan yr ydych yn mewngofnodi, yr ydym yn cofnodi y cyfeiriad IP yr ydych yn mewngofnodi ohonno, ynghyd a enw eich rhaglen pori. Mae pob un sesiwn mewngofnodi ar gael i chi adolygu a gwrthod yn y gosodiadau. Mae'r cyfeiriad IP diweddaraf yn cael ei storio hyd at 12 mis. Mae'n bosib y byddwn hefyd yn cadw cofnodion gweinydd sy'n cynnwys y cyfeiriad IP am bob cais sy'n cael ei wneud i'n gweinydd.</li>
       </ul>
 
       <hr class="spacer" />
@@ -880,9 +939,9 @@ cy:
       <p>Gall unrhyw wybodaeth yr ydym yn ei gasglu oddi wrthych gael ei ddefnyddio yn y ffyrdd canlynol:</p>
 
       <ul>
-        <li>I ddarparu prif weithgaredd Mastodon. Gallwch ond rhyngweithio a chynnwys pobl eraill pan yr ydych wedi'ch mewngofnodi. Er enghraifft, gallwch ddilyn pobl eraill i weld eu negeseuon wedi cyfuno ar ffrwd gartref bersonol.</li>
-        <li>I helpu gyda goruwchwylio'r gymuned, er enghraifft drwy gymharu eich cyfeiriad IP gyda rhai eraill hysbys er mwyn sefydlu ymgais i geisio hepgor gwaharddiad neu droseddau eraill.</li>
-        <li>Gall y cyfeiriad e-bost yr ydych yn ei ddarparu gael ei ddefnyddio i anfon gwybodaeth atoch, hsybysiadau am bobl eraill yn rhyngweithio a'ch cynnwys neu'n anfon negeseuon atoch a/neu geisiadau neu gwestiynnau eraill.</li>
+      <li>I ddarparu prif weithgaredd Mastodon. Gallwch ond rhyngweithio a chynnwys pobl eraill pan yr ydych wedi'ch mewngofnodi. Er enghraifft, gallwch ddilyn pobl eraill i weld eu negeseuon wedi cyfuno ar ffrwd gartref bersonol.</li>
+      <li>I helpu gyda goruwchwylio'r gymuned, er enghraifft drwy gymharu eich cyfeiriad IP gyda rhai eraill hysbys er mwyn sefydlu ymgais i geisio hepgor gwaharddiad neu droseddau eraill.</li>
+      <li>Gall y cyfeiriad e-bost yr ydych yn ei ddarparu gael ei ddefnyddio i anfon gwybodaeth atoch, hsybysiadau am bobl eraill yn rhyngweithio a'ch cynnwys neu'n anfon negeseuon atoch a/neu geisiadau neu gwestiynnau eraill.</li>
       </ul>
 
       <hr class="spacer" />
@@ -898,8 +957,8 @@ cy:
       <p>Gwnawn ymdrech ewyllys da i:</p>
 
       <ul>
-        <li>Gadw cofnod gweinydd yn cynnwys y cyfeiriad IP o bob cais i'r gweinydd hwn, i'r graddau y mae cofnodion o'r fath yn cael eu cadw, am ddim mwy na 90 diwrnod.</li>
-        <li>Gadw cyfeiriadau IP a chysylltiad i ddefnyddwyr cofrestredig am ddim mwy na 12 mis.</li>
+      <li>Gadw cofnod gweinydd yn cynnwys y cyfeiriad IP o bob cais i'r gweinydd hwn, i'r graddau y mae cofnodion o'r fath yn cael eu cadw, am ddim mwy na 90 diwrnod.</li>
+      <li>Gadw cyfeiriadau IP a chysylltiad i ddefnyddwyr cofrestredig am ddim mwy na 12 mis.</li>
       </ul>
 
       <p>Mae modd i chi wneud cais am, a lawrlwytho archif o'ch cynnwys, gan gynnwys eich tŵtiau, atodiadau cyfryngau, llun proffil a llun pennawd.</p>
@@ -945,13 +1004,9 @@ cy:
       <p>Cafodd ei addasu yn wreiddiol o'r<a href="https://github.com/discourse/discourse">Polisi preifatrwydd disgwrs</a>.</p>
     title: "%{instance} Termau Gwasanaeth a Polisi Preifatrwydd"
   themes:
-    contrast: Cyferbyniad uchel
-    default: Mastodon
+    contrast: Mastodon (Cyferbyniad uchel)
+    default: Mastodon (Tywyll)
     mastodon-light: Mastodon (golau)
-  time:
-    formats:
-      default: "%b %d, %Y, %H:%M"
-      month: "%b %Y"
   two_factor_authentication:
     code_hint: Mewnbynwch y côd a grewyd gan eich ap dilysu i gadarnhau
     description_html: Os ydych yn galluogi <strong>awdurdodi dau-gam</strong>, bydd mewngofnodi yn gofyn i chi fod a'ch ffôn gerllaw er mwyn cynhyrchu tocyn i chi gael mewnbynnu.
diff --git a/config/locales/da.yml b/config/locales/da.yml
index 0787db621..da6ab1054 100644
--- a/config/locales/da.yml
+++ b/config/locales/da.yml
@@ -5,7 +5,6 @@ da:
     about_mastodon_html: Mastodon er et socialt netværk der er baseret på åbne web protokoller og frit, open-source source software. Der er decentraliseret ligesom e-mail tjenester.
     about_this: Om
     administered_by: 'Administreret af:'
-    api: API
     apps: Apps til mobilen
     apps_platforms: Brug Mastodon på iOS, Android og andre platformer
     contact: Kontakt
@@ -20,9 +19,6 @@ da:
     learn_more: Lær mere
     privacy_policy: Privatlivspolitik
     source_code: Kildekode
-    status_count_after:
-      one: status
-      other: statusser
     status_count_before: Som har skrevet
     terms: Vilkår for service
     user_count_after:
@@ -87,8 +83,6 @@ da:
       display_name: Visningsnavn
       domain: Domæne
       edit: Rediger
-      email: Email
-      email_status: Email status
       enable: Aktiver
       enabled: Aktiveret
       feed_url: Link til feed
@@ -153,7 +147,6 @@ da:
       undo_suspension: Fortryd udelukkelse
       unsubscribe: Abonner ikke længere
       username: Brugernavn
-      web: Web
     action_logs:
       actions:
         assigned_to_self_report: "%{name} tildelte anmeldelsen %{target} til sig selv"
@@ -224,7 +217,6 @@ da:
       recent_users: Seneste brugere
       search: Søg på fuld tekst
       single_user_mode: Enkelt bruger mode
-      software: Software
       space: Brugt lagerplads
       title: Betjeningspanel
       total_users: samlede antal brugere
@@ -294,7 +286,6 @@ da:
       pending: Venter på godkendelse fra relæet
       save_and_enable: Gem og aktiver
       setup: Opsæt en videresendelses forbindelse
-      status: Status
       title: Videresendelser
     report_notes:
       created_msg: Anmeldelse note blev oprettet!
@@ -324,7 +315,6 @@ da:
       reported_by: Anmeldt af
       resolved: Løst
       resolved_msg: Anmeldelse er sat til at være løst!
-      status: Status
       title: Anmeldelser
       unassign: Utildel
       unresolved: Uløst
@@ -410,7 +400,6 @@ da:
     tags:
       accounts: Kontoer
       hidden: Skjult
-    title: Administration
   admin_mailer:
     new_report:
       body: "%{reporter} har anmeldt %{target}"
@@ -418,7 +407,6 @@ da:
       subject: Ny anmeldelse for %{instance} (#%{id})
   application_mailer:
     notification_preferences: Ændre email præferencer
-    salutation: "%{name},"
     settings: 'Ændre email præferencer: %{link}'
     view: 'Se:'
     view_profile: Se profil
@@ -444,9 +432,6 @@ da:
     migrate_account: Flyt til en anden konto
     migrate_account_html: Hvis du ønsker at omdirigere denne konto til en anden, kan du <a href="%{path}">gøre det her</a>.
     or_log_in_with: Eller log in med
-    providers:
-      cas: CAS
-      saml: SAML
     register: Opret dig
     resend_confirmation: Gensend bekræftelses instrukser
     reset_password: Nulstil kodeord
@@ -470,13 +455,9 @@ da:
       about_x_years: "%{count}år"
       almost_x_years: "%{count}år"
       half_a_minute: Lige nu
-      less_than_x_minutes: "%{count}m"
       less_than_x_seconds: Lige nu
       over_x_years: "%{count}år"
-      x_days: "%{count}d"
-      x_minutes: "%{count}m"
       x_months: "%{count}md"
-      x_seconds: "%{count}s"
   deletes:
     bad_password_msg: Godt forsøg, hackere! Forkert kodeord
     confirm_password: Indtast dit nuværende kodeord for at bekræfte din identitet
@@ -506,7 +487,6 @@ da:
       request: Anmod om dit arkiv
       size: Størrelse
     blocks: Du blokerer
-    csv: CSV
     follows: Du følger
     mutes: Du dæmper
     storage: Medie lager
@@ -619,14 +599,9 @@ da:
   number:
     human:
       decimal_units:
-        format: "%n%u"
         units:
           billion: mia.
           million: mio.
-          quadrillion: Q
-          thousand: K
-          trillion: T
-          unit: "\n"
   pagination:
     newer: Nyere
     next: Næste
@@ -634,10 +609,7 @@ da:
     prev: Forrige
     truncate: "...&hellip;"
   preferences:
-    languages: Sprog
     other: Andet
-    publishing: Offentligører
-    web: Web
   remote_follow:
     acct: Indtast dit brugernavn@domæne du vil handle fra
     missing_resource: Kunne ikke finde det påkrævede omdirigerings link for din konto
@@ -650,7 +622,6 @@ da:
     unfollowed: Følger ikke længere
   sessions:
     activity: Sidste aktivitet
-    browser: Browser
     browsers:
       alipay: Ali-pay
       blackberry: Blackberry OS
@@ -672,15 +643,11 @@ da:
     current_session: Nuværrende session
     description: "%{browser} på %{platform}"
     explanation: Disse er de web browsere der på nuværende tidspunkt er logget ind på din Mastodon konto.
-    ip: IP
     platforms:
       adobe_air: Adobe air
-      android: Android
       blackberry: Blackberry OS
       chrome_os: Chromeos
       firefox_os: Firefox Os
-      ios: iOS
-      linux: Linux
       mac: Mac.
       other: ukendt platform
       windows: Microsoft windows
@@ -707,9 +674,6 @@ da:
       image:
         one: "%{count} billede"
         other: "%{count} billeder"
-      video:
-        one: "%{count} video"
-        other: "%{count} videoer"
     boosted_from_html: Fremhævet fra %{acct_link}
     content_warning: 'Advarsel om indhold: %{warning}'
     disallowed_hashtags:
@@ -725,7 +689,6 @@ da:
       reblog: Fremhævede trut kan ikke fastgøres
     show_more: Vis mere
     sign_in_to_participate: Log ind for at deltage i samtalen
-    title: '%{name}: "%{quote}"'
     visibilities:
       private: Kun-følgere
       private_long: Vis kun til følgere
@@ -744,10 +707,6 @@ da:
     contrast: Mastodon (Høj kontrast)
     default: Mastodont (Mørk)
     mastodon-light: Mastodon (Lys)
-  time:
-    formats:
-      default: "%b %d, %Y, %H:%M"
-      month: "%b %Y"
   two_factor_authentication:
     code_hint: Indtast koden der er genereret af din app for at bekræfte
     description_html: Hvis du aktiverer <strong>to-faktor godkendelse</strong>, vil du være nødt til at være i besiddelse af din telefon, der genererer tokens som du skal indtaste, når du logger ind.
diff --git a/config/locales/de.yml b/config/locales/de.yml
index 7138b7269..cfdaacab0 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -1,51 +1,51 @@
 ---
 de:
   about:
-    about_hashtag_html: Dies sind öffentliche Beiträge, die mit <strong>#%{hashtag}</strong> getaggt wurden. Wenn du irgendwo im Fediversum ein Konto besitzt, kannst du mit ihnen interagieren.
+    about_hashtag_html: Das sind öffentliche Beiträge, die mit <strong>#%{hashtag}</strong> getaggt wurden. Wenn du irgendwo im Fediversum ein Konto besitzt, kannst du mit ihnen interagieren.
     about_mastodon_html: Mastodon ist ein soziales Netzwerk. Es basiert auf offenen Web-Protokollen und freier, quelloffener Software. Es ist dezentral (so wie E-Mail!).
     about_this: Über diesen Server
     active_count_after: aktiv
-    active_footnote: Monatlich Aktive User (MAU)
-    administered_by: 'Administriert von:'
+    active_footnote: Monatlich Aktive Nutzer_innen (MAU)
+    administered_by: 'Betrieben von:'
     api: API
     apps: Mobile Apps
     apps_platforms: Benutze Mastodon auf iOS, Android und anderen Plattformen
-    browse_directory: Durchsuche ein Profilverzeichnis und filtere nach Interessen
-    browse_public_posts: Durchsuche eine Zeitleiste an öffentlichen Beiträgen auf Mastodon
+    browse_directory: Durchsuche das Profilverzeichnis und filtere nach Interessen
+    browse_public_posts: Stöbere durch öffentliche Beiträge auf Mastodon
     contact: Kontakt
     contact_missing: Nicht angegeben
-    contact_unavailable: N/A
-    discover_users: Benutzer entdecken
+    contact_unavailable: Nicht verfügbar
+    discover_users: Benutzer_innen entdecken
     documentation: Dokumentation
     extended_description_html: |
-      <h3>Ein guter Platz für Regeln</h3>
-      <p>Die erweiterte Beschreibung wurde noch nicht aufgesetzt.</p>
-    federation_hint_html: Mit einem Account auf %{instance} wirst du in der Lage sein Nutzern auf irgendeinem Mastodon-Server und darüber hinaus zu folgen.
-    generic_description: "%{domain} ist ein Server im Netzwerk"
+      <h3>Ein hervorragender Ort für Regeln</h3>
+      <p>Die erweiterte Beschreibung wurde von dem Administrator noch nicht eingestellt.</p>
+    federation_hint_html: Mit einem Konto auf %{instance} wirst du in der Lage sein Nutzer_innen auf beliebigen Mastodon-Servern und darüber hinaus zu folgen.
+    generic_description: "%{domain} ist ein Server im Fediversum"
     get_apps: Versuche eine mobile App
-    hosted_on: Mastodon, beherbergt auf %{domain}
+    hosted_on: Mastodon, gehostet auf %{domain}
     learn_more: Mehr erfahren
     privacy_policy: Datenschutzerklärung
     see_whats_happening: Finde heraus, was gerade in der Welt los ist
     server_stats: 'Serverstatistiken:'
     source_code: Quellcode
     status_count_after:
-      one: Statusmeldung
-      other: Statusmeldungen
+      one: Beitrag
+      other: Beiträge
     status_count_before: mit
-    tagline: Finde Freunde und entdecke neue
+    tagline: Finde deine Freunde und entdecke neue
     terms: Nutzungsbedingungen
     user_count_after:
-      one: Benutzer:in
-      other: Benutzer:innen
-    user_count_before: Zuhause für
+      one: Profil
+      other: Profile
+    user_count_before: Hostet
     what_is_mastodon: Was ist Mastodon?
   accounts:
     choices_html: "%{name} empfiehlt:"
     follow: Folgen
     followers:
-      one: Folgender
-      other: Folgende
+      one: Folger_innen
+      other: Folger_innen
     following: Folgt
     joined: Beigetreten am %{date}
     last_active: zuletzt aktiv
@@ -65,7 +65,7 @@ de:
     posts_with_replies: Beiträge mit Antworten
     reserved_username: Dieser Profilname ist belegt
     roles:
-      admin: Admin
+      admin: Administrator
       bot: Bot
       moderator: Moderator
     unavailable: Profil nicht verfügbar
@@ -80,8 +80,8 @@ de:
       delete: Löschen
       destroyed_msg: Moderationsnotiz erfolgreich gelöscht!
     accounts:
-      approve: Aktzeptieren
-      approve_all: Alle aktzeptieren
+      approve: Akzeptieren
+      approve_all: Alle akzeptieren
       are_you_sure: Bist du sicher?
       avatar: Profilbild
       by_domain: Domain
@@ -108,10 +108,10 @@ de:
       enable: Freischalten
       enabled: Freigegeben
       feed_url: Feed-URL
-      followers: Folgende
-      followers_url: URL des Folgenden
+      followers: Folger_innen
+      followers_url: URL der Folger_innen
       follows: Folgt
-      header: Header
+      header: Titelbild
       inbox_url: Posteingangs-URL
       invited_by: Eingeladen von
       ip: IP-Adresse
@@ -119,27 +119,27 @@ de:
       location:
         all: Alle
         local: Lokal
-        remote: Entfernt
-        title: Ort
+        remote: Fern
+        title: Ursprung
       login_status: Loginstatus
-      media_attachments: Medienanhänge
+      media_attachments: Dateien
       memorialize: In Gedenkmal verwandeln
       moderation:
         active: Aktiv
         all: Alle
-        pending: Ausstehend
+        pending: In Warteschlange
         silenced: Stummgeschaltet
         suspended: Gesperrt
         title: Moderation
       moderation_notes: Moderationsnotizen
       most_recent_activity: Letzte Aktivität
       most_recent_ip: Letzte IP-Adresse
-      no_account_selected: Keine Konten wurden verändert, da keine ausgewählt wurden
-      no_limits_imposed: Keine Limits eingesetzt
+      no_account_selected: Keine Konten wurden geändert, da keine ausgewählt wurden
+      no_limits_imposed: Keine Beschränkungen
       not_subscribed: Nicht abonniert
       outbox_url: Postausgangs-URL
-      pending: Ausstehender Review
-      perform_full_suspension: Sperren
+      pending: In Warteschlange
+      perform_full_suspension: Verbannen
       profile_url: Profil-URL
       promote: Befördern
       protocol: Protokoll
@@ -149,10 +149,10 @@ de:
       reject: Ablehnen
       reject_all: Alle ablehnen
       remove_avatar: Profilbild entfernen
-      remove_header: Header entfernen
+      remove_header: Titelbild entfernen
       resend_confirmation:
-        already_confirmed: Diese:r Benutzer:in wurde bereits bestätigt
-        send: Bestätigungsmail erneut senden
+        already_confirmed: Diese_r Benutzer_in wurde bereits bestätigt
+        send: Bestätigungs-E-Mail erneut senden
         success: Bestätigungs-E-Mail erfolgreich gesendet!
       reset: Zurücksetzen
       reset_password: Passwort zurücksetzen
@@ -160,24 +160,25 @@ de:
       role: Berechtigungen
       roles:
         admin: Administrator
-        moderator: Moderator:in
+        moderator: Moderator_in
         staff: Mitarbeiter
         user: Nutzer
       salmon_url: Salmon-URL
       search: Suche
       shared_inbox_url: Geteilte Posteingang-URL
       show:
-        created_reports: Erstellte Beschwerdemeldungen
-        targeted_reports: Beschwerdemeldungen von anderen
+        created_reports: Erstellte Meldungen
+        targeted_reports: Von anderen gemeldet
       silence: Stummschalten
       silenced: Stummgeschaltet
       statuses: Beiträge
       subscribe: Abonnieren
-      suspended: Gesperrt
+      suspended: Verbannt
+      time_in_queue: "%{time} in der Warteschlange"
       title: Konten
       unconfirmed_email: Unbestätigte E-Mail-Adresse
-      undo_silenced: Stummschaltung zurücknehmen
-      undo_suspension: Sperre zurücknehmen
+      undo_silenced: Stummschaltung aufheben
+      undo_suspension: Verbannung aufheben
       unsubscribe: Abbestellen
       username: Profilname
       warn: Warnen
@@ -191,29 +192,29 @@ de:
         create_custom_emoji: "%{name} hat neues Emoji %{target} hochgeladen"
         create_domain_block: "%{name} hat die Domain %{target} blockiert"
         create_email_domain_block: "%{name} hat die E-Mail-Domain %{target} geblacklistet"
-        demote_user: "%{name} stufte Benutzer:in %{target} herunter"
+        demote_user: "%{name} stufte Benutzer_in %{target} herunter"
         destroy_custom_emoji: "%{name} zerstörte Emoji %{target}"
         destroy_domain_block: "%{name} hat die Domain %{target} entblockt"
         destroy_email_domain_block: "%{name} hat die E-Mail-Domain %{target} gewhitelistet"
-        destroy_status: "%{name} hat Status von %{target} entfernt"
-        disable_2fa_user: "%{name} hat Zwei-Faktor-Anforderung für Benutzer:in %{target} deaktiviert"
+        destroy_status: "%{name} hat einen Beitrag von %{target} entfernt"
+        disable_2fa_user: "%{name} hat Zwei-Faktor-Anforderung für Benutzer_in %{target} deaktiviert"
         disable_custom_emoji: "%{name} hat das %{target} Emoji deaktiviert"
-        disable_user: "%{name} hat den Login für Benutzer:in  %{target} deaktiviert"
+        disable_user: "%{name} hat Zugang von Benutzer_in %{target} deaktiviert"
         enable_custom_emoji: "%{name} hat das %{target} Emoji aktiviert"
-        enable_user: "%{name} hat die Anmeldung für di:en Benutzer:in %{target} aktiviert"
-        memorialize_account: "%{name} hat %{target}s Konto in eine Gedenkseite umgewandelt"
+        enable_user: "%{name} hat Zugang von Benutzer_in %{target} aktiviert"
+        memorialize_account: "%{name} hat das Konto von %{target} in eine Gedenkseite umgewandelt"
         promote_user: "%{name} hat %{target} befördert"
         remove_avatar_user: "%{name} hat das Profilbild von %{target} entfernt"
         reopen_report: "%{name} hat die Meldung %{target} wieder geöffnet"
-        reset_password_user: "%{name} hat das Passwort für di:en Benutzer:in %{target} zurückgesetzt"
+        reset_password_user: "%{name} hat das Passwort von %{target} zurückgesetzt"
         resolve_report: "%{name} hat die Meldung %{target} bearbeitet"
-        silence_account: "%{name} hat %{target}s Konto stummgeschaltet"
-        suspend_account: "%{name} hat %{target}s Konto gesperrt"
+        silence_account: "%{name} hat das Konto von %{target} stummgeschaltet"
+        suspend_account: "%{name} hat das Konto von %{target} verbannt"
         unassigned_report: "%{name} hat die Zuweisung der Meldung %{target} entfernt"
-        unsilence_account: "%{name} hat die Stummschaltung von %{target}s Konto aufgehoben"
-        unsuspend_account: "%{name} hat die Sperrung von %{target}s Konto aufgehoben"
-        update_custom_emoji: "%{name} hat das %{target} Emoji aktualisiert"
-        update_status: "%{name} hat den Status von %{target} aktualisiert"
+        unsilence_account: "%{name} hat die Stummschaltung von %{target} aufgehoben"
+        unsuspend_account: "%{name} hat die Verbannung von %{target} aufgehoben"
+        update_custom_emoji: "%{name} hat das %{target} Emoji geändert"
+        update_status: "%{name} hat einen Beitrag von %{target} aktualisiert"
       deleted_status: "(gelöschter Beitrag)"
       title: Überprüfungsprotokoll
     custom_emojis:
@@ -229,7 +230,7 @@ de:
       emoji: Emoji
       enable: Aktivieren
       enabled_msg: Das Emoji wurde aktiviert
-      image_hint: PNG bis 50 kB
+      image_hint: PNG bis zu 50 kB
       listed: Gelistet
       new:
         title: Eigenes Emoji hinzufügen
@@ -242,33 +243,34 @@ de:
       updated_msg: Emoji erfolgreich aktualisiert!
       upload: Hochladen
     dashboard:
-      backlog: Unerledigte Jobs
+      backlog: Rückständige Jobs
       config: Konfiguration
       feature_deletions: Kontolöschung
-      feature_invites: Einladungslinks
+      feature_invites: Einladungen
       feature_profile_directory: Profilverzeichnis
-      feature_registrations: Registrierung
-      feature_relay: Föderations-Relay
+      feature_registrations: Offene Anmeldung
+      feature_relay: Föderationsrelais
       feature_timeline_preview: Zeitleistenvorschau
-      features: Eigenschaften
+      features: Funktionen
       hidden_service: Föderation mit versteckten Diensten
-      open_reports: Offene Meldungen
+      open_reports: Ausstehende Meldungen
       recent_users: Neueste Nutzer
       search: Volltextsuche
       single_user_mode: Einzelnutzermodus
       software: Software
       space: Speicherverbrauch
       title: Übersicht
-      total_users: Benutzer:innen insgesamt
+      total_users: Benutzer_innen insgesamt
       trends: Trends
       week_interactions: Interaktionen diese Woche
       week_users_active: Aktiv diese Woche
-      week_users_new: Benutzer:innen diese Woche
+      week_users_new: Benutzer_innen diese Woche
     domain_blocks:
       add_new: Neue Domainblockade hinzufügen
       created_msg: Die Domain-Blockade wird nun durchgeführt
       destroyed_msg: Die Domain-Blockade wurde rückgängig gemacht
       domain: Domain
+      existing_domain_block_html: Es gibt schon eine Blockade für %{name}, diese muss erst <a href="%{unblock_url}">aufgehoben</a> werden.
       new:
         create: Blockade einrichten
         hint: Die Domain-Blockade wird nicht verhindern, dass Konteneinträge in der Datenbank erstellt werden. Aber es werden rückwirkend und automatisch alle Moderationsmethoden auf diese Konten angewendet.
@@ -282,8 +284,8 @@ de:
       reject_media_hint: Entfernt lokal gespeicherte Mediendateien und verhindert deren künftiges Herunterladen. Für Sperren irrelevant
       reject_reports: Meldungen ablehnen
       reject_reports_hint: Ignoriere alle Meldungen von dieser Domain. Irrelevant für Sperrungen
-      rejecting_media: Mediendateien ablehnen
-      rejecting_reports: Beschwerdemeldungen ablehnen
+      rejecting_media: Mediendateien werden nicht gespeichert
+      rejecting_reports: Meldungen werden ignoriert
       severity:
         silence: stummgeschaltet
         suspend: gesperrt
@@ -309,22 +311,22 @@ de:
       title: E-Mail-Domain-Blockade
     followers:
       back_to_account: Zurück zum Konto
-      title: "%{acct}'s Follower"
+      title: "%{acct}'s Folger_innen"
     instances:
       by_domain: Domain
-      delivery_available: Zustellung ist verfügbar
+      delivery_available: Zustellung funktioniert
       known_accounts:
         one: "%{count} bekanntes Konto"
-        other: "%{count} bekannte Accounts"
+        other: "%{count} bekannte Konten"
       moderation:
         all: Alle
-        limited: Limitiert
+        limited: Beschränkt
         title: Moderation
       title: Föderation
-      total_blocked_by_us: Von uns gesperrt
+      total_blocked_by_us: Von uns blockiert
       total_followed_by_them: Gefolgt von denen
       total_followed_by_us: Gefolgt von uns
-      total_reported: Beschwerdemeldungen über sie
+      total_reported: Beschwerden über sie
       total_storage: Medienanhänge
     invites:
       deactivate_all: Alle deaktivieren
@@ -348,9 +350,9 @@ de:
       inbox_url: Relay-URL
       pending: Warte auf Zustimmung des Relays
       save_and_enable: Speichern und aktivieren
-      setup: Relayverbindung einrichten
-      status: Status
-      title: Relays
+      setup: Relaisverbindung einrichten
+      status: Zustand
+      title: Relais
     report_notes:
       created_msg: Meldungs-Kommentar erfolgreich erstellt!
       destroyed_msg: Meldungs-Kommentar erfolgreich gelöscht!
@@ -373,13 +375,13 @@ de:
         create_and_unresolve: Mit Kommentar wieder öffnen
         delete: Löschen
         placeholder: Beschreibe, welche Maßnahmen ergriffen wurden oder irgendwelche andere Neuigkeiten…
-      reopen: Meldung wieder öffnen
+      reopen: Meldung wieder eröffnen
       report: 'Meldung #%{id}'
       reported_account: Gemeldetes Konto
       reported_by: Gemeldet von
       resolved: Gelöst
       resolved_msg: Meldung erfolgreich gelöst!
-      status: Status
+      status: Zustand
       title: Meldungen
       unassign: Zuweisung entfernen
       unresolved: Ungelöst
@@ -399,22 +401,22 @@ de:
         title: Benutzerdefiniertes CSS
       hero:
         desc_html: Wird auf der Startseite angezeigt. Mindestens 600x100px sind empfohlen. Wenn es nicht gesetzt wurde, wird das Server-Thumbnail dafür verwendet
-        title: Bild für Startseite
+        title: Bild für Einstiegsseite
       mascot:
         desc_html: Angezeigt auf mehreren Seiten. Mehr als 293x205px empfohlen. Wenn es nicht gesetzt wurde wird es auf das Standard-Maskottchen zurückfallen
         title: Maskottchen-Bild
       peers_api_enabled:
-        desc_html: Domain-Namen, die der Server im Fediverse gefunden hat
-        title: Veröffentliche Liste von gefundenen Servern
+        desc_html: Domain-Namen, die der Server im Fediversum gefunden hat
+        title: Veröffentliche entdeckte Server durch die API
       preview_sensitive_media:
         desc_html: Linkvorschauen auf anderen Webseiten werden ein Vorschaubild anzeigen, obwohl die Medien als heikel gekennzeichnet sind
-        title: Heikle Medien in OpenGraph-Vorschauen anzeigen
+        title: Heikle Medien im OpenGraph-Vorschau anzeigen
       profile_directory:
         desc_html: Erlaube Benutzer auffindbar zu sein
         title: Aktiviere Profilverzeichnis
       registrations:
         closed_message:
-          desc_html: Wird auf der Frontseite angezeigt, wenn die Registrierung geschlossen ist. Du kannst HTML-Tags benutzen
+          desc_html: Wird auf der Einstiegsseite gezeigt, wenn die Anmeldung geschlossen ist. Du kannst HTML-Tags nutzen
           title: Nachricht über geschlossene Registrierung
         deletion:
           desc_html: Allen erlauben, ihr Konto eigenmächtig zu löschen
@@ -430,7 +432,7 @@ de:
         title: Registrierungsmodus
       show_known_fediverse_at_about_page:
         desc_html: Wenn aktiviert, wird es alle Beiträge aus dem bereits bekannten Teil des Fediversums auf der Startseite anzeigen. Andernfalls werden lokale Beitrage des Servers angezeigt.
-        title: Verwende öffentliche Zeitleiste für die Vorschau
+        title: Zeige eine öffentliche Zeitleiste auf der Einstiegsseite
       show_staff_badge:
         desc_html: Zeige Mitarbeiter-Badge auf Benutzerseite
         title: Zeige Mitarbeiter-Badge
@@ -441,17 +443,17 @@ de:
         desc_html: Bietet sich für Verhaltenskodizes, Regeln, Richtlinien und weiteres an, was deinen Server auszeichnet. Du kannst HTML-Tags benutzen
         title: Erweiterte Beschreibung des Servers
       site_short_description:
-        desc_html: Wird angezeigt in der Seitenleiste und in Meta-Tags. Beschreibe in einem einzigen Abschnitt, was Mastodon ist und was diesen Server ausmacht. Falls leer, wird die Server-Beschreibung verwendet.
-        title: Kurze Server-Beschreibung
+        desc_html: Wird angezeigt in der Seitenleiste und in Meta-Tags. Beschreibe in einem einzigen Abschnitt, was Mastodon ist und was diesen Server von anderen unterscheidet. Falls leer, wird die Server-Beschreibung verwendet.
+        title: Kurze Beschreibung des Servers
       site_terms:
-        desc_html: Hier kannst du deine eigenen Geschäftsbedingungen, Datenschutzerklärung und anderes rechtlich Relevante eintragen. Du kannst HTML-Tags benutzen
-        title: Eigene Geschäftsbedingungen
+        desc_html: Hier kannst du deine eigenen Geschäftsbedingungen, Datenschutzerklärung und anderes rechtlich Relevante eintragen. Du kannst HTML-Tags nutzen
+        title: Benutzerdefinierte Geschäftsbedingungen
       site_title: Name des Servers
       thumbnail:
         desc_html: Wird für die Vorschau via OpenGraph und API verwendet. 1200×630 px wird empfohlen
-        title: Server-Thumbnail
+        title: Vorschaubild des Servers
       timeline_preview:
-        desc_html: Auf der Frontseite die öffentliche Zeitleiste anzeigen
+        desc_html: Auf der Einstiegsseite die öffentliche Zeitleiste anzeigen
         title: Zeitleisten-Vorschau
       title: Server-Einstellungen
     statuses:
@@ -464,7 +466,7 @@ de:
       media:
         title: Medien
       no_media: Keine Medien
-      no_status_selected: Keine Beiträge wurden verändert, weil keine ausgewählt wurden
+      no_status_selected: Keine Beiträge wurden geändert, weil keine ausgewählt wurden
       title: Beiträge des Kontos
       with_media: Mit Medien
     subscriptions:
@@ -477,7 +479,7 @@ de:
     tags:
       accounts: Konten
       hidden: Versteckt
-      hide: Vor Verzeichnis verstecken
+      hide: Vom Profilverzeichnis verstecken
       name: Hashtag
       title: Hashtags
       unhide: Zeige in Verzeichnis
@@ -497,13 +499,19 @@ de:
       body: "%{reporter} hat %{target} gemeldet"
       body_remote: Jemand von %{domain} hat %{target} gemeldet
       subject: Neue Meldung auf %{instance} (#%{id})
+  appearance:
+    advanced_web_interface: Fortgeschrittene Benutzeroberfläche
+    advanced_web_interface_hint: Wenn du mehr aus deiner Bildschirmbreite herausholen möchtest, erlaubt dir die fortgeschrittene Benutzeroberfläche viele unterschiedliche Spalten auf einmal zu sehen, wie z.B. deine Startseite, Benachrichtigungen, das gesamte bekannte Netz, deine Listen und beliebige Hashtags.
+    animations_and_accessibility: Animationen und Barrierefreiheit
+    confirmation_dialogs: Bestätigungsfenster
+    sensitive_content: Heikle Inhalte
   application_mailer:
     notification_preferences: Ändere E-Mail-Einstellungen
     salutation: "%{name},"
     settings: 'E-Mail-Einstellungen ändern: %{link}'
     view: 'Ansehen:'
     view_profile: Zeige Profil
-    view_status: Zeige Status
+    view_status: Beitrag öffnen
   applications:
     created: Anwendung erfolgreich erstellt
     destroyed: Anwendung erfolgreich gelöscht
@@ -545,8 +553,8 @@ de:
     following: 'Erfolg! Du folgst nun:'
     post_follow:
       close: Oder du schließt einfach dieses Fenster.
-      return: Zeige Profil des Benutzers
-      web: Das Web öffnen
+      return: Zeige das Profil
+      web: In der Benutzeroberfläche öffnen
     title: "%{acct} folgen"
   datetime:
     distance_in_words:
@@ -557,8 +565,8 @@ de:
       half_a_minute: Gerade eben
       less_than_x_minutes: "%{count}m"
       less_than_x_seconds: Gerade eben
-      over_x_years: "%{count}y"
-      x_days: "%{count}d"
+      over_x_years: "%{count}J"
+      x_days: "%{count}T"
       x_minutes: "%{count}m"
       x_months: "%{count}mo"
       x_seconds: "%{count}s"
@@ -573,8 +581,8 @@ de:
   directories:
     directory: Profilverzeichnis
     enabled: Du bist gerade in dem Verzeichnis gelistet.
-    enabled_but_waiting: Du bist damit einverstanden im Verzeichnis gelistet zu werden, aber du hast nicht die minimale Anzahl an Folgenden (%{min_followers}), damit es passiert.
-    explanation: Entdecke Benutzer basierend auf deren Interessen
+    enabled_but_waiting: Du bist damit einverstanden im Verzeichnis aufgelistet zu werden, aber du hast noch nicht genug Folger_innen (%{min_followers}).
+    explanation: Entdecke Benutzer_innen basierend auf deren Interessen
     explore_mastodon: Entdecke %{title}
     how_to_enable: Du hast dich gerade nicht dazu entschieden im Verzeichnis gelistet zu werden. Du kannst dich unten dafür eintragen. Benutze Hashtags in deiner Profilbeschreibung, um unter spezifischen Hashtags gelistet zu werden!
     people:
@@ -706,7 +714,7 @@ de:
   media_attachments:
     validations:
       images_and_video: Es kann kein Video an einen Beitrag, der bereits Bilder enthält, angehängt werden
-      too_many: Es können nicht mehr als 4 Bilder angehängt werden
+      too_many: Es können nicht mehr als 4 Dateien angehängt werden
   migrations:
     acct: benutzername@domain des neuen Kontos
     currently_redirecting: 'Deine Profilweiterleitung wurde gesetzt auf:'
@@ -758,7 +766,6 @@ de:
           quadrillion: Q
           thousand: K
           trillion: T
-          unit: ''
   pagination:
     newer: Neuer
     next: Vorwärts
@@ -776,10 +783,9 @@ de:
       too_few_options: muss mindestens einen Eintrag haben
       too_many_options: kann nicht mehr als %{max} Einträge beinhalten
   preferences:
-    languages: Sprachen
     other: Weiteres
-    publishing: Beiträge
-    web: Web
+    posting_defaults: Standardeinstellungen für Beiträge
+    public_timelines: Öffentliche Zeitleisten
   relationships:
     activity: Kontoaktivität
     dormant: Inaktiv
@@ -862,7 +868,7 @@ de:
   settings:
     account: Konto
     account_settings: Konto & Sicherheit
-    appearance: Bearbeiten
+    appearance: Aussehen
     authorized_apps: Autorisierte Anwendungen
     back: Zurück zu Mastodon
     delete: Konto löschen
@@ -877,7 +883,7 @@ de:
     notifications: Benachrichtigungen
     preferences: Einstellungen
     profile: Profil
-    relationships: Folgende und Follower
+    relationships: Folger_innen und Gefolgte
     two_factor_authentication: Zwei-Faktor-Auth
   statuses:
     attached:
@@ -891,8 +897,8 @@ de:
     boosted_from_html: Geteilt von %{acct_link}
     content_warning: 'Inhaltswarnung: %{warning}'
     disallowed_hashtags:
-      one: 'Enthält den unerlaubten Hashtag: %{tags}'
-      other: 'Enthält die unerlaubten Hashtags: %{tags}'
+      one: 'enthält einen verbotenen Hashtag: %{tags}'
+      other: 'enthält verbotene Hashtags: %{tags}'
     language_detection: Sprache automatisch erkennen
     open_in_web: Im Web öffnen
     over_character_limit: Zeichenlimit von %{max} überschritten
@@ -919,17 +925,17 @@ de:
   stream_entries:
     pinned: Angehefteter Beitrag
     reblogged: teilte
-    sensitive_content: Sensible Inhalte
+    sensitive_content: Heikle Inhalte
   terms:
     body_html: |
       <h2>Datenschutzerklärung</h2>
       <h3 id="collect">Welche Informationen sammeln wir?</h3>
 
       <ul>
-        <li><em>Grundlegende Kontoinformationen</em>: Wenn du dich auf diesem Server registrierst, wirst du darum gebeten, einen Benutzer:innen-Namen, eine E-Mail-Adresse und ein Passwort einzugeben. Du kannst auch zusätzliche Profilinformationen wie etwa einen Anzeigenamen oder eine Biografie eingeben und ein Profilbild oder ein Headerbild hochladen. Der Benutzer:innen-Name, der Anzeigename, die Biografie, das Profilbild und das Headerbild werden immer öffentlich angezeigt.</li>
-        <li><em>Beiträge, Folge- und andere öffentliche Informationen</em>: Die Liste der Leute, denen du folgst, wird öffentlich gezeigt, das gleiche gilt für deine Folgenden (Follower). Sobald du eine Nachricht übermittelst, wird das Datum und die Uhrzeit gemeinsam mit der Information, welche Anwendung du dafür verwendet hast, gespeichert. Nachricht können Medienanhänge enthalten, etwa Bilder und Videos. Öffentliche und ungelistete Beiträge sind öffentlich verfügbar. Sobald du einen Beitrag auf deinem Profil anpinnst, sind dies auch öffentlich verfügbare Informationen. Deine Beiträge werden an deine Folgenden ausgeliefert, was in manchen Fällen bedeutet, dass sie an andere Server ausgeliefert werden und dort Kopien gespeichert werden. Sobald du Beiträge löschst, wird dies ebenso an deine Follower ausgeliefert. Die Handlungen des Teilens und Favorisieren eines anderen Beitrages ist immer öffentlich.</li>
-        <li><em>Direkte und "Nur Folgende"-Beiträge</em>: Alle Beiträge werden auf dem Server gespeichert und verarbeitet. "Nur Folgende"-Beiträge werden an deine Folgenden und an Benutzer:innen, die du in ihnen erwähnst, ausgeliefert, direkte Beiträge nur an in ihnen erwähnte Benutzer:innen. In manchen Fällen bedeutet dass, dass sie an andere Server ausgeliefert werden und dort Kopien gespeichert werden. Wir bemühen uns nach bestem Wissen und Gewissen, den Zugriff auf diese Beiträge auf nur autorisierte Personen einzuschränken, jedoch könnten andere Server dabei scheitern. Deswegen ist es wichtig, die Server, zu denen deine Folgenden gehören, zu überprüfen. Du kannst eine Option in den Einstellungen umschalten, um neue Folgenden manuell anzunehmen oder abzuweisen. <em>Bitte beachte, dass die Betreiber des Server und jedes empfangenden Servers solche Nachrichten anschauen könnten</em> und dass Empfänger von diesen eine Bildschirmkopie erstellen könnten, sie kopieren oder anderweitig weiterverteilen könnten. <em>Teile nicht irgendwelche gefährlichen Informationen über Mastodon.</em></li>
-        <li><em>Internet Protocol-Adressen (IP-Adressen) und andere Metadaten</em>: Sobald du dich anmeldest, erfassen wir sowohl die IP-Adresse, von der aus du dich anmeldest, als auch den Namen deine Browseranwendung. Alle angemeldeten Sitzungen (Sessions) sind für deine Überprüfung und Widerruf in den Einstellungen verfügbar. Die letzte verwendete IP-Adresse wird bis zu 12 Monate lang gespeichert. Wir könnten auch Serverprotokoll behalten, welche die IP-Adresse von jeder Anfrage an unseren Server enthalten.</li>
+      <li><em>Grundlegende Kontoinformationen</em>: Wenn du dich auf diesem Server registrierst, wirst du darum gebeten, einen Benutzer:innen-Namen, eine E-Mail-Adresse und ein Passwort einzugeben. Du kannst auch zusätzliche Profilinformationen wie etwa einen Anzeigenamen oder eine Biografie eingeben und ein Profilbild oder ein Headerbild hochladen. Der Benutzer:innen-Name, der Anzeigename, die Biografie, das Profilbild und das Headerbild werden immer öffentlich angezeigt.</li>
+      <li><em>Beiträge, Folge- und andere öffentliche Informationen</em>: Die Liste der Leute, denen du folgst, wird öffentlich gezeigt, das gleiche gilt für deine Folgenden (Follower). Sobald du eine Nachricht übermittelst, wird das Datum und die Uhrzeit gemeinsam mit der Information, welche Anwendung du dafür verwendet hast, gespeichert. Nachricht können Medienanhänge enthalten, etwa Bilder und Videos. Öffentliche und ungelistete Beiträge sind öffentlich verfügbar. Sobald du einen Beitrag auf deinem Profil anpinnst, sind dies auch öffentlich verfügbare Informationen. Deine Beiträge werden an deine Folgenden ausgeliefert, was in manchen Fällen bedeutet, dass sie an andere Server ausgeliefert werden und dort Kopien gespeichert werden. Sobald du Beiträge löschst, wird dies ebenso an deine Follower ausgeliefert. Die Handlungen des Teilens und Favorisieren eines anderen Beitrages ist immer öffentlich.</li>
+      <li><em>Direkte und "Nur Folgende"-Beiträge</em>: Alle Beiträge werden auf dem Server gespeichert und verarbeitet. "Nur Folgende"-Beiträge werden an deine Folgenden und an Benutzer:innen, die du in ihnen erwähnst, ausgeliefert, direkte Beiträge nur an in ihnen erwähnte Benutzer:innen. In manchen Fällen bedeutet dass, dass sie an andere Server ausgeliefert werden und dort Kopien gespeichert werden. Wir bemühen uns nach bestem Wissen und Gewissen, den Zugriff auf diese Beiträge auf nur autorisierte Personen einzuschränken, jedoch könnten andere Server dabei scheitern. Deswegen ist es wichtig, die Server, zu denen deine Folgenden gehören, zu überprüfen. Du kannst eine Option in den Einstellungen umschalten, um neue Folgenden manuell anzunehmen oder abzuweisen. <em>Bitte beachte, dass die Betreiber des Server und jedes empfangenden Servers solche Nachrichten anschauen könnten</em> und dass Empfänger von diesen eine Bildschirmkopie erstellen könnten, sie kopieren oder anderweitig weiterverteilen könnten. <em>Teile nicht irgendwelche gefährlichen Informationen über Mastodon.</em></li>
+      <li><em>Internet Protocol-Adressen (IP-Adressen) und andere Metadaten</em>: Sobald du dich anmeldest, erfassen wir sowohl die IP-Adresse, von der aus du dich anmeldest, als auch den Namen deine Browseranwendung. Alle angemeldeten Sitzungen (Sessions) sind für deine Überprüfung und Widerruf in den Einstellungen verfügbar. Die letzte verwendete IP-Adresse wird bis zu 12 Monate lang gespeichert. Wir könnten auch Serverprotokoll behalten, welche die IP-Adresse von jeder Anfrage an unseren Server enthalten.</li>
       </ul>
 
       <hr class="spacer" />
@@ -939,9 +945,9 @@ de:
       <p>Jede der von dir gesammelten Information kann in den folgenden Weisen verwendet werden:</p>
 
       <ul>
-        <li>Um die Kernfunktionalität von Mastodon bereitzustellen. Du kannst du mit dem Inhalt anderer Leute interagieren und deine eigenen Inhalte beitragen, wenn du angemeldet bist. Zum Beispiel kannst du anderen folgen, um deren kombinierten Beiträge in deine personalisierten Start-Timeline zu sehen.</li>
-        <li>Um Moderation der Community zu ermöglichen, zum Beispiel beim Vergleichen deiner IP-Adresse mit anderen bekannten, um Verbotsumgehung oder andere Vergehen festzustellen.</li>
-        <li>Die E-Mail-Adresse, die du bereitstellst, kann dazu verwendet werden, dir Informationen, Benachrichtigungen über andere Leute, die mit deinen Inhalten interagieren oder dir Nachrichten senden, und auf Anfragen, Wünsche und/oder Fragen zu antworten.</li>
+      <li>Um die Kernfunktionalität von Mastodon bereitzustellen. Du kannst du mit dem Inhalt anderer Leute interagieren und deine eigenen Inhalte beitragen, wenn du angemeldet bist. Zum Beispiel kannst du anderen folgen, um deren kombinierten Beiträge in deine personalisierten Start-Timeline zu sehen.</li>
+      <li>Um Moderation der Community zu ermöglichen, zum Beispiel beim Vergleichen deiner IP-Adresse mit anderen bekannten, um Verbotsumgehung oder andere Vergehen festzustellen.</li>
+      <li>Die E-Mail-Adresse, die du bereitstellst, kann dazu verwendet werden, dir Informationen, Benachrichtigungen über andere Leute, die mit deinen Inhalten interagieren oder dir Nachrichten senden, und auf Anfragen, Wünsche und/oder Fragen zu antworten.</li>
       </ul>
 
       <hr class="spacer" />
@@ -957,8 +963,8 @@ de:
       <p>Wir werden mit bestem Wissen und Gewissen:</p>
 
       <ul>
-        <li>Serverprotokolle, die IP-Adressen von allen deinen Anfragen an diesen Server, falls solche Protokolle behalten werden, für nicht mehr als 90 Tage behalten.</li>
-        <li>registrierten Benutzer:innen zugeordnete IP-Adressen nicht länger als 12 Monate behalten.</li>
+      <li>Serverprotokolle, die IP-Adressen von allen deinen Anfragen an diesen Server, falls solche Protokolle behalten werden, für nicht mehr als 90 Tage behalten.</li>
+      <li>registrierten Benutzer:innen zugeordnete IP-Adressen nicht länger als 12 Monate behalten.</li>
       </ul>
 
       <p>Du kannst ein Archiv deines Inhalts anfordern und herunterladen, inkludierend deiner Beiträge, Medienanhänge, Profilbilder und Headerbilder.</p>
@@ -1015,7 +1021,7 @@ de:
       month: "%b %Y"
   two_factor_authentication:
     code_hint: Gib zur Bestätigung den Code ein, den deine Authenticator-App generiert hat
-    description_html: Wenn du <strong>Zwei-Faktor-Authentisierung (2FA)</strong> aktivierst, wirst du dein Telefon zum Anmelden benötigen. Darauf werden Tokens erzeugt, die du bei der Anmeldung eingeben musst.
+    description_html: Wenn du <strong>Zwei-Faktor-Authentifizierung (2FA)</strong> aktivierst, wirst du dein Telefon zum Anmelden benötigen. Darauf werden Sicherheitscodes erzeugt, die du bei der Anmeldung eingeben musst.
     disable: Deaktivieren
     enable: Aktivieren
     enabled: Zwei-Faktor-Authentisierung ist aktiviert
diff --git a/config/locales/devise.ar.yml b/config/locales/devise.ar.yml
index 927eeee5a..92e2135ba 100644
--- a/config/locales/devise.ar.yml
+++ b/config/locales/devise.ar.yml
@@ -12,52 +12,53 @@ ar:
       last_attempt: بإمكانك إعادة المحاولة مرة واحدة قبل أن يتم قفل حسابك.
       locked: إن حسابك مقفل.
       not_found_in_database: "%{authentication_keys} أو كلمة سر خاطئة."
-      timeout: لقد إنتهت مدة صلاحية جلستك. قم بتسجيل الدخول من جديد للمواصلة.
+      pending: إنّ حسابك في انتظار مراجعة.
+      timeout: لقد انتهت مدة صلاحية جلستك. قم بتسجيل الدخول من جديد للمواصلة.
       unauthenticated: يجب عليك تسجيل الدخول أو إنشاء حساب قبل المواصلة.
       unconfirmed: يجب عليك تأكيد عنوان بريدك الإلكتروني قبل المواصلة.
     mailer:
       confirmation_instructions:
         action: للتحقق من عنوان البريد الإلكتروني
         action_with_app: تأكيد ثم العودة إلى %{app}
-        explanation: لقد قمت بإنشاء حساب على %{host} بواسطة عنوان البريد الإلكتروني الحالي. إنك على بعد خطوات قليلة من تفعليه. إن لم تكن من طلب ذلك، يرجى ألّا تولي إهتماما بهذه الرسالة.
+        explanation: لقد قمت بإنشاء حساب على %{host} بواسطة عنوان البريد الإلكتروني الحالي. إنك على بعد خطوات قليلة من تفعليه. إن لم تكن من طلب ذلك، يرجى ألّا تولي اهتماما بهذه الرسالة.
         extra_html: ندعوك إلى الإطلاع على <a href="%{terms_path}">القواعد الخاصة بمثيل الخادوم هذا</a> and <a href="%{policy_path}">و شروط الخدمة الخاصة بنا</a>.
-        subject: 'ماستدون : تعليمات التأكيد لمثيل الخادوم  %{instance}'
+        subject: 'ماستدون: تعليمات التأكيد لمثيل الخادوم %{instance}'
         title: للتحقق من عنوان البريد الإلكتروني
       email_changed:
         explanation: 'لقد تم تغيير عنوان البريد الإلكتروني الخاص بحسابك إلى :'
         extra: إن لم تقم شخصيًا بتعديل عنوان بريدك الإلكتروني ، ذلك يعني أنّ شخصا آخر قد نَفِذَ إلى حسابك. فالرجاء قم بتعديل كلمتك السرية في الحال أو قم بالإتصال بمدير مثيل الخادوم إن كنت غير قادر على استعمال حسابك.
-        subject: 'ماستدون : تم استبدال عنوان بريدك الإلكتروني'
+        subject: 'ماستدون: تم استبدال عنوان بريدك الإلكتروني'
         title: عنوان البريد الإلكتروني الجديد
       password_change:
         explanation: تم تغيير كلمة السر الخاصة بحسابك.
-        extra: إن لم تقم شخصيًا بتعديل كلمتك السرية، ذلك يعني أنّ شخصا آخر قد سيطر على حسابك. فالرجاء قم بتعديل كلمتك السرية في الحال أو قم بالإتصال بمدير مثيل الخادوم إن كنت غير قادر على استعمال حسابك.
-        subject: 'ماستدون : تم تغيير كلمة المرور'
+        extra: إن لم تقم شخصيًا بتعديل كلمتك السرية، ذلك يعني أنّ شخصا آخر قد سيطر على حسابك. فالرجاء قم بتعديل كلمتك السرية في الحال أو قم بالاتصال بمدير مثيل الخادوم إن كنت غير قادر على استعمال حسابك.
+        subject: 'ماستدون: تم تغيير كلمة المرور'
         title: تم تغيير كلمة السر
       reconfirmation_instructions:
         explanation: ندعوك لتأكيد العنوان الجديد قصد تعديله في بريدك.
-        extra: إن لم تكن صاحب هذا الطلب ، يُرجى عدم إعارة الإهتمام لهذه الرسالة. فعنوان البريد الإلكتروني المتعلق بحساب ماستدون سوف يبقى هو مِن غير أي تعديل إلّا و فقط إن قمت بالنقر على الرابط أعلاه قصد تعديله.
-        subject: 'ماستدون : تأكيد كلمة السر الخاصة بـ %{instance}'
+        extra: إن لم تكن صاحب هذا الطلب ، يُرجى عدم إعارة الاهتمام لهذه الرسالة. فعنوان البريد الإلكتروني المتعلق بحساب ماستدون سوف يبقى هو مِن غير أي تعديل إلّا و فقط إن قمت بالنقر على الرابط أعلاه قصد تعديله.
+        subject: 'ماستدون: تأكيد كلمة السر الخاصة بـ %{instance}'
         title: التحقق من عنوان البريد الإلكتروني
       reset_password_instructions:
         action: تغيير كلمة السر
         explanation: لقد قمت بطلب تغيير كلمة السر الخاصة بحسابك.
-        extra: إن لم تكن صاحب هذا الطلب ، يُرجى عدم إعارة الإهتمام لهذه الرسالة. فكلِمَتُك السرية تبقى هي مِن غير أي تعديل إلّا و فقط إن قمت بالنقر على الرابط أعلاه قصد إنشاء كلمة سرية جديدة.
-        subject: 'ماستدون : تعليمات إستعادة كلمة المرور'
+        extra: إن لم تكن صاحب هذا الطلب ، يُرجى عدم إعارة الاهتمام لهذه الرسالة. فكلِمَتُك السرية تبقى هي مِن غير أي تعديل إلّا و فقط إن قمت بالنقر على الرابط أعلاه قصد إنشاء كلمة سرية جديدة.
+        subject: 'ماستدون: تعليمات استعادة كلمة المرور'
         title: إعادة تعيين كلمة السر
       unlock_instructions:
-        subject: 'ماستدون : تعليمات فك القفل'
+        subject: 'ماستدون: تعليمات فك القفل'
     omniauth_callbacks:
       failure: تعذرت المصادقة من %{kind} بسبب "%{reason}".
       success: تمت المصادقة بنجاح عبر حساب %{kind}.
     passwords:
-      no_token: ليس بإمكانك النفاذ إلى هذه الصفحة  إن لم تقم بالنقر على الرابط المتواجد في الرسالة الإلكترونية. الرجاء التحقق مِن أنك قمت بإدخال عنوان الرابط كاملا كما هو مذكور في رسالة إعادة تعيين الكلمة السرية.
-      send_instructions: إن كان عنوان بريدك الإلكتروني ضمن قاعدة بياناتنا، فسوف تتلقّى في غضون دقائق رابطا يُمكّنُك مِن استعادة كلمتك السرية على عنوان علبة البريد الإلكتروني الخاصة بك.إن لم تجد هذه الرسالة، يرجى تفقد مجلّد البريد المزعج.
-      send_paranoid_instructions: إن كان عنوان بريدك الإلكتروني ضمن قاعدة بياناتنا، فسوف تتلقّى في غضون دقائق رابطا يُمكّنُك مِن استعادة كلمتك السرية على عنوان علبة البريد الإلكتروني الخاصة بك.إن لم تجد هذه الرسالة، يرجى تفقد مجلّد البريد المزعج.
+      no_token: ليس بإمكانك النفاذ إلى هذه الصفحة إن لم تقم بالنقر على الرابط المتواجد في الرسالة الإلكترونية. الرجاء التحقق مِن أنك قمت بإدخال عنوان الرابط كاملا كما هو مذكور في رسالة إعادة تعيين الكلمة السرية.
+      send_instructions: إن كان عنوان بريدك الإلكتروني ضمن قاعدة بياناتنا، فسوف تتلقّى في غضون دقائق رابطا يُمكّنُك مِن استعادة كلمتك السرية على عنوان علبة البريد الإلكتروني الخاصة بك. إن لم تجد هذه الرسالة، يرجى تفقد مجلّد البريد المزعج.
+      send_paranoid_instructions: إن كان عنوان بريدك الإلكتروني ضمن قاعدة بياناتنا، فسوف تتلقّى في غضون دقائق رابطا يُمكّنُك مِن استعادة كلمتك السرية على عنوان علبة البريد الإلكتروني الخاصة بك. إن لم تجد هذه الرسالة، يرجى تفقد مجلّد البريد المزعج.
       updated: تم تغيير كلمة المرور بنجاح. أنت مسجل الآن.
       updated_not_active: تم تغيير كلمة المرور بنجاح.
     registrations:
-      destroyed: إلى اللقاء ! لقد تم إلغاء حسابك. نتمنى أن نراك مجددا.
-      signed_up: أهلا وسهلا ! تم تسجيل دخولك بنجاح.
+      destroyed: إلى اللقاء! لقد تم إلغاء حسابك. نتمنى أن نراك مجددا.
+      signed_up: أهلا وسهلا! تم تسجيل دخولك بنجاح.
       signed_up_but_inactive: لقد تمت عملية إنشاء حسابك بنجاح إلاّ أنه لا يمكننا تسجيل دخولك إلاّ بعد قيامك بتفعيله.
       signed_up_but_locked: لقد تم تسجيل حسابك بنجاح إلّا أنه لا يمكنك تسجيل الدخول لأن حسابك مجمد.
       signed_up_but_unconfirmed: لقد تم إرسال رسالة تحتوي على رابط للتفعيل إلى عنوان بريدك الإلكتروني. بالضغط على الرابط سوف يتم تفعيل حسابك. لذا يُرجى إلقاء نظرة على ملف الرسائل غير المرغوب فيها إنْ لم تَعثُر على الرسالة السالفة الذِكر.
@@ -70,12 +71,12 @@ ar:
     unlocks:
       send_instructions: سوف تتلقى خلال بضع دقائق رسالة إلكترونية تحتوي على التعليمات اللازمة لفك القفل عن حسابك. إن لم تتلقى تلك الرسالة ، ندعوك إلى تفقُّد مجلد البريد المزعج.
       send_paranoid_instructions: إن كان حسابك موجود فعليًا فسوف تتلقى في غضون دقائق رسالة إلكترونية تحتوي على تعليمات تدُلُّك على كيفية فك القفل عن حسابك. إن لم تتلقى تلك الرسالة ، ندعوك إلى تفقُّد مجلد البريد المزعج.
-      unlocked: لقد تمت عملية إلغاء تجميد حسابك بنجاح. للمواصلة،  يُرجى تسجيل الدخول.
+      unlocked: لقد تمت عملية إلغاء تجميد حسابك بنجاح. للمواصلة ، يُرجى تسجيل الدخول.
   errors:
     messages:
-      already_confirmed: قمت بتأكيده من قبل، يرجى إعادة محاولة تسجيل الدخول
+      already_confirmed: قمت بتأكيده من قبل ، يرجى إعادة محاولة تسجيل الدخول
       confirmation_period_expired: يجب التأكد منه قبل انقضاء مدة %{period}، يرجى إعادة طلب جديد
-      expired: إنتهت مدة صلاحيته، الرجاء طلب واحد جديد
+      expired: انتهت مدة صلاحيته، الرجاء طلب واحد جديد
       not_found: لا يوجد
       not_locked: ليس مقفلاً
       not_saved:
@@ -84,4 +85,4 @@ ar:
         one: 'خطأ واحد منع هذا %{resource} من الحفظ:'
         other: "%{count} أخطاء منعت هذا %{resource} من الحفظ:"
         two: 'أخطاء منعت هذا %{resource} من الحفظ:'
-        zero: 'أخطاء منعت هذا %{resource} من الحفظ:'
+        zero: "%{count} أخطاء منعت هذا %{resource} من الحفظ:"
diff --git a/config/locales/devise.bn.yml b/config/locales/devise.bn.yml
new file mode 100644
index 000000000..152c69829
--- /dev/null
+++ b/config/locales/devise.bn.yml
@@ -0,0 +1 @@
+bn:
diff --git a/config/locales/devise.ca.yml b/config/locales/devise.ca.yml
index aea361d0d..7f2df1f99 100644
--- a/config/locales/devise.ca.yml
+++ b/config/locales/devise.ca.yml
@@ -3,15 +3,17 @@ ca:
   devise:
     confirmations:
       confirmed: L'adreça de correu s'ha confirmat correctament.
-      send_instructions: En pocs minuts rebràs un correu electrònic amb instruccions sobre com confirmar l'adreça de correu.
-      send_paranoid_instructions: Si l'adreça de correu electrònic existeix en la nostra base de dades, en pocs minuts rebràs un correu electrònic amb instruccions sobre com confirmar l'adreça de correu.
+      send_instructions: "En pocs minuts rebràs un correu electrònic amb instruccions sobre com confirmar l'adreça de correu. \nSi us plau verifica la carpeta de corrreu brossa si no has rebut aquest correu."
+      send_paranoid_instructions: |-
+        Si l'adreça de correu electrònic existeix en la nostra base de dades, en pocs minuts rebràs un correu electrònic amb instruccions sobre com confirmar l'adreça de correu.
+        Si us plau verifica la carpeta de corrreu brossa si no has rebut aquest correu.
     failure:
       already_authenticated: Ja estàs registrat.
       inactive: El teu compte encara no s'ha activat.
       invalid: "%{authentication_keys} o contrasenya no són vàlids."
-      last_attempt: Tens un intent més, abans que es bloqui el compte.
-      locked: El compte s'ha blocat.
-      not_found_in_database: "%{authentication_keys} o contrasenya no vàlids."
+      last_attempt: Tens un intent més, abans que es bloqueji el compte.
+      locked: El compte s'ha bloquejat.
+      not_found_in_database: "%{authentication_keys} o contrasenya no són vàlids."
       pending: El teu compte encara està en revisió.
       timeout: La sessió ha expirat. Inicia sessió una altra vegada per a continuar.
       unauthenticated: Cal iniciar sessió o registrar-se abans de continuar.
@@ -50,7 +52,7 @@ ca:
         subject: 'Mastodon: Instruccions per a desblocar'
     omniauth_callbacks:
       failure: No podem autentificar-te desde %{kind} degut a "%{reason}".
-      success: Autentificat amb èxit des del compte %{kind} .
+      success: Autentificat amb èxit des del compte %{kind}.
     passwords:
       no_token: No pots accedir a aquesta pàgina sense provenir des del correu de restabliment de la contrasenya. Si vens des del correu de restabliment de contrasenya, assegura't que estàs emprant l'adreça completa proporcionada.
       send_instructions: Rebràs un correu electrònic amb instruccions sobre com reiniciar la contrasenya en pocs minuts.
@@ -65,7 +67,7 @@ ca:
       signed_up_but_pending: S'ha enviat un missatge amb un enllaç de confirmació a la teva adreça de correu electrònic. Després de que hagis fet clic a l'enllaç, revisarem la teva sol·licitud. Se't notificarà si s'aprova.
       signed_up_but_unconfirmed: Un missatge amb un enllaç de confirmació ha estat enviat per correu electrònic. Si us plau segueixi l'enllaç per activar el seu compte.
       update_needs_confirmation: Ha actualitzat el seu compte amb èxit, però necessitem verificar la nova adreça de correu. Si us plau comprovi el correu i segueixi l'enllaç per confirmar la nova adreça de correu.
-      updated: el seu compte ha estat actualitzat amb èxit.
+      updated: El seu compte ha estat actualitzat amb èxit.
     sessions:
       already_signed_out: Has tancat la sessió amb èxit.
       signed_in: T'has registrat amb èxit.
diff --git a/config/locales/devise.cs.yml b/config/locales/devise.cs.yml
index bc9340605..94c41ed98 100644
--- a/config/locales/devise.cs.yml
+++ b/config/locales/devise.cs.yml
@@ -83,5 +83,6 @@ cs:
       not_locked: nebyl uzamčen
       not_saved:
         few: "%{count} chyby zabránily uložení tohoto %{resource}:"
+        many: "%{count} chyb zabránilo uložení tohoto %{resource}:"
         one: '1 chyba zabránila uložení tohoto %{resource}:'
         other: "%{count} chyb zabránilo uložení tohoto %{resource}:"
diff --git a/config/locales/devise.eo.yml b/config/locales/devise.eo.yml
index b63815309..d7b7b2d6c 100644
--- a/config/locales/devise.eo.yml
+++ b/config/locales/devise.eo.yml
@@ -12,6 +12,7 @@ eo:
       last_attempt: Vi ankoraŭ povas provi unufoje antaŭ ol via konto estos ŝlosita.
       locked: Via konto estas ŝlosita.
       not_found_in_database: Nevalida %{authentication_keys} aŭ pasvorto.
+      pending: Via konto ankoraŭ estas kontrolanta.
       timeout: Via seanco eksvalidiĝis. Bonvolu ensaluti denove por daŭrigi.
       unauthenticated: Vi devas ensaluti aŭ registriĝi antaŭ ol daŭrigi.
       unconfirmed: Vi devas konfirmi vian retadreson antaŭ ol daŭrigi.
@@ -20,6 +21,7 @@ eo:
         action: Konfirmi retadreson
         action_with_app: Konfirmi kaj reveni al %{app}
         explanation: Vi kreis konton en %{host} per ĉi tiu retadreso. Nur klako restas por aktivigi ĝin. Se tio ne estis vi, bonvolu ignori ĉi tiun retmesaĝon.
+        explanation_when_pending: Vi petis inviton al %{host} per ĉi tiu retpoŝta adreso. Kiam vi konfirmas vian retpoŝtan adreson, ni revizios vian kandidatiĝon. Vi ne povas ensaluti ĝis tiam. Se via kandidatiĝo estas rifuzita, viaj datumoj estos forigitaj, do neniu alia ago estos postulita de vi. Se tio ne estis vi, bonvolu ignori ĉi tiun retpoŝton.
         extra_html: Bonvolu rigardi <a href="%{terms_path}">la regulojn de la servilo</a> kaj <a href="%{policy_path}">niajn uzkondiĉojn</a>.
         subject: 'Mastodon: Konfirmaj instrukcioj por %{instance}'
         title: Konfirmi retadreson
@@ -60,6 +62,7 @@ eo:
       signed_up: Bonvenon! Vi sukcese registriĝis.
       signed_up_but_inactive: Vi sukcese registriĝis. Tamen, ni ne povis ensalutigi vin, ĉar via konto ankoraŭ ne estas konfirmita.
       signed_up_but_locked: Vi sukcese registriĝis. Tamen, ni ne povis ensalutigi vin, ĉar via konto estas ŝlosita.
+      signed_up_but_pending: Mesaĝo kun konfirma ligilo estis sendita al via retpoŝta adreso. Post kiam vi alklakis la ligilon, ni revizios vian kandidatiĝon. Vi estos sciigita se ĝi estas aprobita.
       signed_up_but_unconfirmed: Retmesaĝo kun konfirma ligilo estis sendita al via retadreso. Bonvolu sekvi la ligilon por aktivigi vian konton. Bonvolu kontroli vian spamujon, se vi ne ricevis ĉi tiun retmesaĝon.
       update_needs_confirmation: Vi sukcese ĝisdatigis vian konton, sed ni bezonas kontroli vian novan retadreson. Bonvolu kontroli viajn retmesaĝojn kaj sekvi la konfirman ligilon por konfirmi vian novan retadreson. Bonvolu kontroli vian spamujon, se vi ne ricevis ĉi tiun retmesaĝon.
       updated: Via konto estis sukcese ĝisdatigita.
diff --git a/config/locales/devise.es.yml b/config/locales/devise.es.yml
index ecb97fd13..8210415f2 100644
--- a/config/locales/devise.es.yml
+++ b/config/locales/devise.es.yml
@@ -2,7 +2,7 @@
 es:
   devise:
     confirmations:
-      confirmed: Su dirección de correo ha sido confirmada con éxito.
+      confirmed: Su direccion de email ha sido confirmada con exito.
       send_instructions: Recibirá un correo electrónico con instrucciones sobre cómo confirmar su dirección de correo en pocos minutos.
       send_paranoid_instructions: Si su dirección de correo electrónico existe en nuestra base de datos, recibirá un correo electrónico con instrucciones sobre cómo confirmar su dirección de correo en pocos minutos.
     failure:
@@ -12,19 +12,22 @@ es:
       last_attempt: Tiene un intento más antes de que su cuenta sea bloqueada.
       locked: Su cuenta está bloqueada.
       not_found_in_database: Inválido %{authentication_keys} o contraseña.
+      pending: Su cuenta aun se encuentra bajo revisión.
       timeout: Su sesión ha expirado. Por favor inicie sesión de nuevo para continuar.
       unauthenticated: Necesita iniciar sesión o registrarse antes de continuar.
       unconfirmed: Tiene que confirmar su dirección de correo electrónico antes de continuar.
     mailer:
       confirmation_instructions:
         action: Verificar dirección de correo electrónico
+        action_with_app: Confirmar y regresar a %{app}
         explanation: Has creado una cuenta en %{host} con esta dirección de correo electrónico. Estas a un clic de activarla. Si no fue usted, por favor ignore este correo electrónico.
+        explanation_when_pending: Usted ha solicitado una invitación a %{host} con esta dirección de correo electrónico. Una vez que confirme su dirección de correo electrónico, revisaremos su aplicación. No puede iniciar sesión hasta que su aplicación sea revisada. Si su solicitud está rechazada, sus datos serán eliminados, así que no será necesaria ninguna acción adicional por ti. Si no fuera usted, por favor ignore este correo electrónico.
         extra_html: Por favor revise <a href="%{terms_path}">las reglas de la instancia</a> y <a href="%{policy_path}">nuestros términos de servicio</a>.
         subject: 'Mastodon: Instrucciones de confirmación para %{instance}'
         title: Verificar dirección de correo electrónico
       email_changed:
         explanation: 'El correo electrónico para su cuenta esta siendo cambiada a:'
-        extra: Si usted no a cambiado su correo electrónico. es probable que alguien a conseguido acceso a su cuenta. Por favor cambie su contraseña inmediatamente o contacte a el administrador de la instancia si usted esta bloqueado de su cuenta.
+        extra: Si usted no ha cambiado su correo electrónico, es probable que alguien haya conseguido acceso a su cuenta. Por favor cambie su contraseña inmediatamente o contacte al administrador de la instancia si usted no puede iniciar sesión.
         subject: 'Mastodon: Correo electrónico cambiado'
         title: Nueva dirección de correo electrónico
       password_change:
@@ -59,6 +62,7 @@ es:
       signed_up: "¡Bienvenido! Se ha registrado con éxito."
       signed_up_but_inactive: Se ha registrado con éxito. Sin embargo, no podemos identificarle porque su cuenta no ha sido activada todavía.
       signed_up_but_locked: Se ha registrado con éxito. Sin embargo, no podemos identificarle porque su cuenta está bloqueada.
+      signed_up_but_pending: Un mensaje con un enlace de confirmacion ha sido enviado a su direccion de email. Luego de clickear el link revisaremos su aplicacion. Seras notificado si es aprovada.
       signed_up_but_unconfirmed: Un mensaje con un enlace de confirmación ha sido enviado a su correo electrónico. Por favor siga el enlace para activar su cuenta.
       update_needs_confirmation: Ha actualizado su cuenta con éxito, pero necesitamos verificar su nueva dirección de correo. Por favor compruebe su correo y siga el enlace para confirmar su nueva dirección de correo.
       updated: su cuenta ha sido actualizada con éxito.
diff --git a/config/locales/devise.eu.yml b/config/locales/devise.eu.yml
index 65046dc0f..3526f2ab5 100644
--- a/config/locales/devise.eu.yml
+++ b/config/locales/devise.eu.yml
@@ -12,6 +12,7 @@ eu:
       last_attempt: Saiakera bat geratzen zaizu zure kontua giltzapetu aurretik.
       locked: Zure kontua giltzapetuta dago.
       not_found_in_database: Baliogabeko %{authentication_keys} edo pasahitza.
+      pending: Zure kontua oraindik berrikusteke dago.
       timeout: Zure saioa iraungitu da. Hasi saioa berriro jarraitzeko.
       unauthenticated: Saioa hasi edo izena eman behar duzu jarraitu aurretik.
       unconfirmed: Zure e-mail helbidea baieztatu behar duzu jarraitu aurretik.
@@ -20,6 +21,7 @@ eu:
         action: Baieztatu e-mail helbidea
         action_with_app: Berretsi eta itzuli %{app} aplikaziora
         explanation: Kontu bat sortu duzu %{host} ostalarian e-mail helbide honekin. Aktibatzeko klik bat falta zaizu. Ez baduzu zuk sortu, ez egin ezer e-mail honekin.
+        explanation_when_pending: "%{host} instantziara gonbidatua izatea eskatu duzu e-mail helbide honekin. Behin zure e-mail helbidea berresten duzula, zure eskaera berrikusiko da. Ezin duzu aurretik saioa hasi. Zure eskaera ukatuko balitz, zure datuak ezabatuko lirateke, eta ez zenuke beste ezer egiteko beharrik. Hau ez bazara zu izan, ezikusi e-mail hau."
         extra_html: Egiaztatu <a href="%{terms_path}">zerbitzariaren arauak</a> eta <a href="%{policy_path}">zerbitzuaren erabilera baldintzak</a>.
         subject: 'Mastodon: %{instance} instantziaren argibideak baieztapenerako'
         title: Baieztatu e-mail helbidea
@@ -60,6 +62,7 @@ eu:
       signed_up: Ongi etorri! Ongi hasi duzu saioa.
       signed_up_but_inactive: Ongi eman duzu izena. Hala ere, ezin duzu saioa hasi zure kontua oraindik ez dagoelako aktibatuta.
       signed_up_but_locked: Ongi eman duzu izena. Hala ere, ezin duzu saioa hasi zure kontua giltzapetuta dagoelako.
+      signed_up_but_pending: Berrespen esteka bat duen mezu bat bidali da zure e-mail helbidera. Behin esteka sakatzen duzula, zure eskaera berrikusiko da. Onartzen bada jakinaraziko zaizu.
       signed_up_but_unconfirmed: Baieztapen esteka bat duen e-mail bidali zaizu. Jarraitu esteka zure kontua aktibatzeko. Egiaztatu spam karpeta ez baduzu e-mail hau jaso.
       update_needs_confirmation: Zure kontua ongi eguneratu duzu, baina zure email helbide berria egiaztatu behar dugu. Baieztapen esteka bat duen e-mail bidali zaizu, jarraitu esteka zure e-mal helbide berria baieztatzeko. Egiaztatu spam karpeta ez baduzu e-mail hau jaso.
       updated: Zure kontua ongi eguneratu da.
diff --git a/config/locales/devise.he.yml b/config/locales/devise.he.yml
index 3d8f7fa59..be8af6f9e 100644
--- a/config/locales/devise.he.yml
+++ b/config/locales/devise.he.yml
@@ -56,6 +56,3 @@ he:
       expired: פג תוקפו. נא לבקש חדש
       not_found: לא נמצא
       not_locked: לא היה נעול
-      not_saved:
-        one: 'שגיאה אחת מנעה את שמירת %{resource} זה:'
-        other: "%{count} שגיאות מנעו את שמירת %{resource} זה:"
diff --git a/config/locales/devise.hr.yml b/config/locales/devise.hr.yml
index 2a859054a..e0c569cee 100644
--- a/config/locales/devise.hr.yml
+++ b/config/locales/devise.hr.yml
@@ -2,18 +2,9 @@
 hr:
   devise:
     confirmations:
-      already_authenticated: Već si prijavljen.
       confirmed: Tvoja email adresa je uspješno potvrđena.
-      inactive: Tvoj račun još nije aktiviran.
-      invalid: Nevaljan %{authentication_keys} ili lozinka.
-      last_attempt: Imaš još jedan pokušaj prije no što ti se račun zaključa.
-      locked: Tvoj račun je zaključan.
-      not_found_in_database: Nevaljan %{authentication_keys} ili lozinka.
       send_instructions: Primit ćeš email sa uputama kako potvrditi  svoju email adresu za nekoliko minuta.
       send_paranoid_instructions: Ako tvoja email adresa postoji u našoj bazi podataka, primit ćeš email sa uputama kako ju potvrditi za nekoliko minuta.
-      timeout: Tvoja sesija je istekla. Molimo te, prijavi se ponovo kako bi nastavio.
-      unauthenticated: Moraš se registrirati ili prijaviti prije no što nastaviš.
-      unconfirmed: Moraš potvrditi svoju email adresu prije no što nastaviš.
     mailer:
       confirmation_instructions:
         subject: 'Mastodon: Upute za potvrđivanje %{instance}'
@@ -58,4 +49,3 @@ hr:
       expired: je istekao, zatraži novu
       not_found: nije nađen
       not_locked: nije zaključan
-      not_saved: "%{count} greške su zabranile da ovaj %{resource} bude sačuvan:"
diff --git a/config/locales/devise.hy.yml b/config/locales/devise.hy.yml
new file mode 100644
index 000000000..c40654016
--- /dev/null
+++ b/config/locales/devise.hy.yml
@@ -0,0 +1 @@
+hy:
diff --git a/config/locales/devise.id.yml b/config/locales/devise.id.yml
index 47fac413f..5fa902091 100644
--- a/config/locales/devise.id.yml
+++ b/config/locales/devise.id.yml
@@ -57,5 +57,4 @@ id:
       not_found: tidak ditemukan
       not_locked: tidak dikunci
       not_saved:
-        one: '1 error yang membuat %{resource} ini tidak dapat disimpan:'
         other: "%{count} error yang membuat %{resource} ini tidak dapat disimpan:"
diff --git a/config/locales/devise.ja.yml b/config/locales/devise.ja.yml
index eed45efb7..dc147be62 100644
--- a/config/locales/devise.ja.yml
+++ b/config/locales/devise.ja.yml
@@ -82,5 +82,4 @@ ja:
       not_found: 見つかりません
       not_locked: ロックされていません
       not_saved:
-        one: エラーが発生したため、%{resource}の保存に失敗しました。
         other: "%{count}個のエラーが発生したため、%{resource}の保存に失敗しました:"
diff --git a/config/locales/devise.ko.yml b/config/locales/devise.ko.yml
index 33ca8f842..f48531246 100644
--- a/config/locales/devise.ko.yml
+++ b/config/locales/devise.ko.yml
@@ -74,3 +74,12 @@ ko:
       send_instructions: 몇 분 이내로 계정 잠금 해제에 대한 안내 메일이 발송 됩니다. 메일을 받지 못 하신 경우 스팸 폴더를 확인해 주세요.
       send_paranoid_instructions: 계정이 존재한다면 몇 분 이내로 계정 잠금 해제에 대한 안내 메일이 발송 됩니다. 메일을 받지 못 하신 경우 스팸 폴더를 확인해 주세요.
       unlocked: 계정이 성공적으로 잠금 해제 되었습니다. 계속 하려면 로그인 하세요.
+  errors:
+    messages:
+      already_confirmed: 이미 확인 되었습니다, 로그인 하세요
+      confirmation_period_expired: "%{period} 안에 확인을 해야 합니다, 새로 요청하세요"
+      expired: 만료되었습니다, 새로 요청하세요
+      not_found: 찾을 수 없습니다
+      not_locked: 잠기지 않았습니다
+      not_saved:
+        other: "%{count}개의 에러로 인해 %{resource}가 저장 될 수 없습니다:"
diff --git a/config/locales/devise.lt.yml b/config/locales/devise.lt.yml
new file mode 100644
index 000000000..6c5cb837a
--- /dev/null
+++ b/config/locales/devise.lt.yml
@@ -0,0 +1 @@
+lt:
diff --git a/config/locales/devise.lv.yml b/config/locales/devise.lv.yml
new file mode 100644
index 000000000..1be0eabc0
--- /dev/null
+++ b/config/locales/devise.lv.yml
@@ -0,0 +1 @@
+lv:
diff --git a/config/locales/devise.ms.yml b/config/locales/devise.ms.yml
new file mode 100644
index 000000000..2925688a0
--- /dev/null
+++ b/config/locales/devise.ms.yml
@@ -0,0 +1 @@
+ms:
diff --git a/config/locales/devise.nl.yml b/config/locales/devise.nl.yml
index 96d14d9d2..51a95403f 100644
--- a/config/locales/devise.nl.yml
+++ b/config/locales/devise.nl.yml
@@ -9,7 +9,6 @@ nl:
       already_authenticated: Je bent al ingelogd.
       inactive: Jouw account is nog niet geactiveerd.
       invalid: "%{authentication_keys} of wachtwoord ongeldig."
-      invalid_token: Ongeldige bevestigingscode.
       last_attempt: Je hebt nog één poging over voordat jouw account wordt opgeschort.
       locked: Jouw account is opgeschort.
       not_found_in_database: "%{authentication_keys} of wachtwoord ongeldig."
diff --git a/config/locales/devise.ro.yml b/config/locales/devise.ro.yml
new file mode 100644
index 000000000..79dbaa871
--- /dev/null
+++ b/config/locales/devise.ro.yml
@@ -0,0 +1 @@
+ro:
diff --git a/config/locales/devise.sk.yml b/config/locales/devise.sk.yml
index 5ce04ba7a..8842abe61 100644
--- a/config/locales/devise.sk.yml
+++ b/config/locales/devise.sk.yml
@@ -80,7 +80,3 @@ sk:
       expired: vypŕšal, prosím, vyžiadaj si nový
       not_found: nenájdený
       not_locked: nebol zamknutý
-      not_saved:
-        few: "%{resource} nebol uložený kvôli %{count} chybám:"
-        one: "%{resource} nebol uložený kvôli chybe:"
-        other: "%{resource} nebol uložený kvôli %{count} chybám:"
diff --git a/config/locales/devise.sr-Latn.yml b/config/locales/devise.sr-Latn.yml
index 21ddbd726..c2c5f7c76 100644
--- a/config/locales/devise.sr-Latn.yml
+++ b/config/locales/devise.sr-Latn.yml
@@ -58,6 +58,5 @@ sr-Latn:
       not_locked: nije zaključan
       not_saved:
         few: "%{count} greške sprečavaju %{resource}a:"
-        many: "%{count} grešaka sprečavaju %{resource}a:"
         one: '1 greška sprečava %{resource}a:'
         other: "%{count} grešaka sprečavaju %{resource}a:"
diff --git a/config/locales/devise.sr.yml b/config/locales/devise.sr.yml
index 475d1e2a5..baffc2701 100644
--- a/config/locales/devise.sr.yml
+++ b/config/locales/devise.sr.yml
@@ -80,6 +80,5 @@ sr:
       not_locked: није закључан
       not_saved:
         few: "%{count} грешке спречавају %{resource}a:"
-        many: "%{count} грешака спречавају %{resource}a:"
         one: '1 грешка спречава %{resource}а:'
         other: "%{count} грешака спречавају %{resource}a:"
diff --git a/config/locales/devise.ta.yml b/config/locales/devise.ta.yml
new file mode 100644
index 000000000..4320953ce
--- /dev/null
+++ b/config/locales/devise.ta.yml
@@ -0,0 +1 @@
+ta:
diff --git a/config/locales/devise.te.yml b/config/locales/devise.te.yml
new file mode 100644
index 000000000..34c54f18f
--- /dev/null
+++ b/config/locales/devise.te.yml
@@ -0,0 +1 @@
+te:
diff --git a/config/locales/devise.th.yml b/config/locales/devise.th.yml
index e20df69af..c6c75b98f 100644
--- a/config/locales/devise.th.yml
+++ b/config/locales/devise.th.yml
@@ -2,60 +2,17 @@
 th:
   devise:
     confirmations:
-      confirmed: Your email address has been successfully confirmed.
       send_instructions: You will receive an email with instructions for how to confirm your email address in a few minutes.
       send_paranoid_instructions: If your email address exists in our database, you will receive an email with instructions for how to confirm your email address in a few minutes.
-    failure:
-      already_authenticated: You are already signed in.
-      inactive: Your account is not activated yet.
-      invalid: Invalid %{authentication_keys} or password.
-      last_attempt: You have one more attempt before your account is locked.
-      locked: Your account is locked.
-      not_found_in_database: Invalid %{authentication_keys} or password.
-      timeout: Your session expired. Please sign in again to continue.
-      unauthenticated: You need to sign in or sign up before continuing.
-      unconfirmed: You have to confirm your email address before continuing.
-    mailer:
-      confirmation_instructions:
-        subject: 'Mastodon: Confirmation instructions for %{instance}'
-      password_change:
-        subject: 'Mastodon: Password changed'
-      reset_password_instructions:
-        subject: 'Mastodon: Reset password instructions'
-      unlock_instructions:
-        subject: 'Mastodon: Unlock instructions'
-    omniauth_callbacks:
-      failure: Could not authenticate you from %{kind} because "%{reason}".
-      success: Successfully authenticated from %{kind} account.
     passwords:
-      no_token: You can't access this page without coming from a password reset email. If you do come from a password reset email, please make sure you used the full URL provided.
       send_instructions: If your email address exists in our database, you will receive a password recovery link at your email address in a few minutes.
       send_paranoid_instructions: If your email address exists in our database, you will receive a password recovery link at your email address in a few minutes.
-      updated: Your password has been changed successfully. You are now signed in.
-      updated_not_active: Your password has been changed successfully.
     registrations:
-      destroyed: Bye! Your account has been successfully cancelled. We hope to see you again soon.
-      signed_up: Welcome! You have signed up successfully.
-      signed_up_but_inactive: You have signed up successfully. However, we could not sign you in because your account is not yet activated.
-      signed_up_but_locked: You have signed up successfully. However, we could not sign you in because your account is locked.
       signed_up_but_unconfirmed: A message with a confirmation link has been sent to your email address. Please follow the link to activate your account.
       update_needs_confirmation: You updated your account successfully, but we need to verify your new email address. Please check your email and follow the confirm link to confirm your new email address.
-      updated: Your account has been updated successfully.
-    sessions:
-      already_signed_out: Signed out successfully.
-      signed_in: Signed in successfully.
-      signed_out: Signed out successfully.
     unlocks:
       send_instructions: You will receive an email with instructions for how to unlock your account in a few minutes.
       send_paranoid_instructions: If your account exists, you will receive an email with instructions for how to unlock it in a few minutes.
-      unlocked: Your account has been unlocked successfully. Please sign in to continue.
   errors:
     messages:
-      already_confirmed: was already confirmed, please try signing in
-      confirmation_period_expired: needs to be confirmed within %{period}, please request a new one
-      expired: has expired, please request a new one
       not_found: ไม่พบ
-      not_locked: was not locked
-      not_saved:
-        one: '1 error prohibited this %{resource} from being saved:'
-        other: "%{count} errors prohibited this %{resource} from being saved:"
diff --git a/config/locales/devise.zh-CN.yml b/config/locales/devise.zh-CN.yml
index bef2baa18..22fa130f6 100644
--- a/config/locales/devise.zh-CN.yml
+++ b/config/locales/devise.zh-CN.yml
@@ -12,24 +12,27 @@ zh-CN:
       last_attempt: 你还有最后一次尝试机会,再次失败你的帐户将被锁定。
       locked: 你的帐户已被锁定。
       not_found_in_database: "%{authentication_keys}或密码错误。"
+      pending: 你的账户仍在审核中。
       timeout: 你已登录超时,请重新登录。
       unauthenticated: 继续操作前请注册或者登录。
       unconfirmed: 继续操作前请先确认你的帐户。
     mailer:
       confirmation_instructions:
         action: 验证电子邮件地址
+        action_with_app: 确认并返回%{app}
         explanation: 你在 %{host} 上使用这个电子邮件地址创建了一个帐户。只需点击下面的链接,即可完成激活。如果你并没有创建过帐户,请忽略此邮件。
-        extra_html: 请记得阅读<a href="%{terms_path}">本实例的相关规定</a>和<a href="%{policy_path}">我们的使用条款</a>。
+        explanation_when_pending: 你用这个电子邮件申请了在 %{host} 注册。在确认电子邮件地址之后,我们会审核你的申请。在此之前,你不能登录。如果你的申请被驳回,你的数据会被移除,因此你无需再采取任何行动。如果申请人不是你,请忽略这封邮件。
+        extra_html: 请记得阅读<a href="%{terms_path}">本服务器的相关规定</a>和<a href="%{policy_path}">我们的使用条款</a>。
         subject: Mastodon:确认 %{instance} 帐户信息
         title: 验证电子邮件地址
       email_changed:
         explanation: 你的帐户的电子邮件地址即将变更为:
-        extra: 如果你并没有请求更改你的电子邮件地址,则他人很有可能已经入侵你的帐户。请立即更改你的密码;如果你已经无法访问你的帐户,请联系实例的管理员请求协助。
+        extra: 如果你并没有请求更改你的电子邮件地址,则他人很有可能已经入侵你的帐户。请立即更改你的密码;如果你已经无法访问你的帐户,请联系服务器管理员请求协助。
         subject: Mastodon:电子邮件地址已被更改
         title: 新电子邮件地址
       password_change:
         explanation: 你的帐户的密码已被更改。
-        extra: 如果你并没有请求更改你的密码,则他人很有可能已经入侵你的帐户。请立即更改你的密码;如果你已经无法访问你的帐户,请联系实例的管理员请求协助。
+        extra: 如果你并没有请求更改你的密码,则他人很有可能已经入侵你的帐户。请立即更改你的密码;如果你已经无法访问你的帐户,请联系服务器的管理员请求协助。
         subject: Mastodon:密码已被更改
         title: 密码已被重置
       reconfirmation_instructions:
@@ -59,6 +62,7 @@ zh-CN:
       signed_up: 欢迎!你已注册成功。
       signed_up_but_inactive: 你已注册,但尚未激活帐户。
       signed_up_but_locked: 你已注册,但帐户被锁定了。
+      signed_up_but_pending: 一封带有确认链接的邮件已经发送到了您的邮箱。 在您点击确认链接后,我们将会审核您的申请。审核通过后,我们将会通知您。
       signed_up_but_unconfirmed: 一封带有确认链接的邮件已经发送至你的邮箱,请点击邮件中的链接以激活你的帐户。如果没有,请检查你的垃圾邮件。
       update_needs_confirmation: 信息更新成功,但我们需要验证你的新电子邮件地址,请点击邮件中的链接以确认。如果没有,请检查你的垃圾邮箱。
       updated: 帐户资料更新成功。
diff --git a/config/locales/devise.zh-HK.yml b/config/locales/devise.zh-HK.yml
index b7d88ef94..ceae8b238 100644
--- a/config/locales/devise.zh-HK.yml
+++ b/config/locales/devise.zh-HK.yml
@@ -78,5 +78,4 @@ zh-HK:
       not_found: 找不到
       not_locked: 並未被鎖定
       not_saved:
-        one: 1 個錯誤令 %{resource} 無法被儲存︰
         other: "%{count} 個錯誤令 %{resource} 無法被儲存︰"
diff --git a/config/locales/devise.zh-TW.yml b/config/locales/devise.zh-TW.yml
index 0ade1e60a..cb989630e 100644
--- a/config/locales/devise.zh-TW.yml
+++ b/config/locales/devise.zh-TW.yml
@@ -82,5 +82,4 @@ zh-TW:
       not_found: 找不到
       not_locked: 並未被鎖定
       not_saved:
-        one: 因 1 個錯誤導致 %{resource} 無法儲存:
         other: 因 %{count} 錯誤導致 %{resource} 無法儲存:
diff --git a/config/locales/doorkeeper.ar.yml b/config/locales/doorkeeper.ar.yml
index 200d340a8..75d66086f 100644
--- a/config/locales/doorkeeper.ar.yml
+++ b/config/locales/doorkeeper.ar.yml
@@ -46,12 +46,12 @@ ar:
       new:
         title: تطبيق جديد
       show:
-        actions: Actions
+        actions: الإجراءات
         application_id: معرف التطبيق
         callback_urls: روابط رد النداء
         scopes: المجالات
         secret: السر
-        title: 'تطبيق : %{name}'
+        title: 'تطبيق: %{name}'
     authorizations:
       buttons:
         authorize: ترخيص
@@ -72,7 +72,7 @@ ar:
       index:
         application: التطبيق
         created_at: صُرّح له في
-        date_format: "%d-%m-%Y %H:%M:%S"
+        date_format: "%Y-%m-%d %H:%M:%S"
         scopes: المجالات
         title: تطبيقاتك المرخص لها
     errors:
@@ -85,11 +85,11 @@ ar:
         invalid_resource_owner: إنّ المُعرِّفات التي قدّمها صاحب المورِد غير صحيحة أو أنه لا وجود لصاحب المورِد
         invalid_scope: المجال المطلوب غير صحيح أو مجهول أو مُعبَّر عنه بشكل خاطئ.
         invalid_token:
-          expired: إنتهت فترة صلاحيته رمز المصادقة
+          expired: انتهت فترة صلاحيته رمز المصادقة
           revoked: تم إبطال رمز المصادقة
           unknown: رمز المصادقة غير صالح
         resource_owner_authenticator_not_configured: لقد أخفقت عملية البحث عن صاحب المَورِد لغياب الضبط في Doorkeeper.configure.resource_owner_authenticator.
-        server_error: لقد صادفَ خادوم التصريحات ضروفا غير مواتية، الأمر الذي مَنَعه مِن مواصلة دراسة الطلب.
+        server_error: لقد صادفَ خادوم التصريحات ظروفا غير مواتية، الأمر الذي مَنَعه مِن مواصلة دراسة الطلب.
         temporarily_unavailable: تعذر على خادم التفويض معالجة الطلب و ذلك بسبب زيادة مؤقتة في التحميل أو عملية صيانة مبرمجة على الخادم.
         unauthorized_client: لا يصرح للعميل بتنفيذ هذا الطلب باستخدام هذه الطريقة.
         unsupported_grant_type: هذا النوع من منح التصريح غير معتمد في خادم الترخيص.
diff --git a/config/locales/doorkeeper.bg.yml b/config/locales/doorkeeper.bg.yml
index 24de4aee0..f36187e12 100644
--- a/config/locales/doorkeeper.bg.yml
+++ b/config/locales/doorkeeper.bg.yml
@@ -56,8 +56,6 @@ bg:
         able_to: Ще е възможно
         prompt: Приложението %{client_name} заявява достъп до твоя акаунт
         title: Изисква се упълномощаване
-      show:
-        title: Copy this authorization code and paste it to the application.
     authorized_applications:
       buttons:
         revoke: Отмяна
@@ -66,7 +64,6 @@ bg:
       index:
         application: Приложение
         created_at: Създадено на
-        date_format: "%Y-%m-%d %H:%M:%S"
         scopes: Диапазони
         title: Твоите упълномощени приложения
     errors:
diff --git a/config/locales/doorkeeper.bn.yml b/config/locales/doorkeeper.bn.yml
new file mode 100644
index 000000000..152c69829
--- /dev/null
+++ b/config/locales/doorkeeper.bn.yml
@@ -0,0 +1 @@
+bn:
diff --git a/config/locales/doorkeeper.ca.yml b/config/locales/doorkeeper.ca.yml
index 8366912dc..dfa46551f 100644
--- a/config/locales/doorkeeper.ca.yml
+++ b/config/locales/doorkeeper.ca.yml
@@ -29,7 +29,7 @@ ca:
       edit:
         title: Edita l'aplicació
       form:
-        error: Ep! Comprova el formulari
+        error: Ep! Comprova el formulari per a possibles errors
       help:
         native_redirect_uri: Utilitza %{native_redirect_uri} per a proves locals
         redirect_uri: Utilitza una línia per URI
@@ -117,4 +117,26 @@ ca:
       follow: seguir, blocar, desblocar i deixar de seguir comptes
       push: rebre notificacions push del teu compte
       read: llegir les dades del teu compte
+      read:accounts: veure informació dels comptes
+      read:blocks: veure els teus bloqueijos
+      read:favourites: veure els teus favorits
+      read:filters: veure els teus filtres
+      read:follows: veure els teus seguiments
+      read:lists: veure les teves llistes
+      read:mutes: veure els teus silenciats
+      read:notifications: veure les teves notificacions
+      read:reports: veure els teus informes
+      read:search: cerca en nom teu
+      read:statuses: veure tots els toots
       write: publicar en el teu nom
+      write:accounts: modifica el teu perfil
+      write:blocks: bloqueja comptes i dominis
+      write:favourites: afavoreix toots
+      write:filters: crear filtres
+      write:follows: seguir usuaris
+      write:lists: crear llistes
+      write:media: pujar fitxers multimèdia
+      write:mutes: silencia usuaris i converses
+      write:notifications: esborra les teves notificacions
+      write:reports: informe d’altres persones
+      write:statuses: publicar toots
diff --git a/config/locales/doorkeeper.cy.yml b/config/locales/doorkeeper.cy.yml
index 87d7a8660..f51e1b464 100644
--- a/config/locales/doorkeeper.cy.yml
+++ b/config/locales/doorkeeper.cy.yml
@@ -72,7 +72,6 @@ cy:
       index:
         application: Rhaglen
         created_at: Awdurdodedig
-        date_format: "%Y-%m-%d %H:%M:%S"
         scopes: Rhinweddau
         title: Eich rhaglenni awdurdodedig
     errors:
diff --git a/config/locales/doorkeeper.da.yml b/config/locales/doorkeeper.da.yml
index df964e4b1..b0f50a893 100644
--- a/config/locales/doorkeeper.da.yml
+++ b/config/locales/doorkeeper.da.yml
@@ -72,7 +72,6 @@ da:
       index:
         application: Applikation
         created_at: Godkendt
-        date_format: "%Y-%m-%d %H:%M:%S"
         scopes: Omfang
         title: Dine godkendte applikationer
     errors:
diff --git a/config/locales/doorkeeper.de.yml b/config/locales/doorkeeper.de.yml
index bf4b06e7c..771b89251 100644
--- a/config/locales/doorkeeper.de.yml
+++ b/config/locales/doorkeeper.de.yml
@@ -71,7 +71,7 @@ de:
         revoke: Bist du sicher?
       index:
         application: Anwendung
-        created_at: autorisiert am
+        created_at: Autorisiert am
         date_format: "%d.%m.%Y %H:%M:%S"
         scopes: Befugnisse
         title: Deine autorisierten Anwendungen
diff --git a/config/locales/doorkeeper.es.yml b/config/locales/doorkeeper.es.yml
index 937ecd32a..752387d87 100644
--- a/config/locales/doorkeeper.es.yml
+++ b/config/locales/doorkeeper.es.yml
@@ -117,3 +117,4 @@ es:
       follow: seguir, bloquear, desbloquear y dejar de seguir cuentas
       read: leer los datos de tu cuenta
       write: publicar en tu nombre
+      write:blocks: bloquear cuentas y dominios
diff --git a/config/locales/doorkeeper.fa.yml b/config/locales/doorkeeper.fa.yml
index e19126554..b677c3346 100644
--- a/config/locales/doorkeeper.fa.yml
+++ b/config/locales/doorkeeper.fa.yml
@@ -23,7 +23,6 @@ fa:
         cancel: لغو
         destroy: پاک کردن
         edit: ویرایش
-        submit: Submit
       confirmations:
         destroy: آیا مطمئن هستید؟
       edit:
@@ -46,7 +45,6 @@ fa:
       new:
         title: برنامهٔ تازه
       show:
-        actions: Actions
         application_id: کلید کلاینت
         callback_urls: نشانی‌های Callabck
         scopes: دامنه‌ها
@@ -72,29 +70,17 @@ fa:
       index:
         application: برنامه
         created_at: مجازشده از
-        date_format: "%Y-%m-%d %H:%M:%S"
         scopes: اجازه‌ها
         title: برنامه‌های مجاز
     errors:
       messages:
         access_denied: دارندهٔ منبع یا سرور اجازه دهنده درخواست را نپذیرفت.
-        credential_flow_not_configured: Resource Owner Password Credentials flow failed due to Doorkeeper.configure.resource_owner_from_credentials being unconfigured.
-        invalid_client: Client authentication failed due to unknown client, no client authentication included, or unsupported authentication method.
-        invalid_grant: The provided authorization grant is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client.
-        invalid_redirect_uri: The redirect uri included is not valid.
-        invalid_request: The request is missing a required parameter, includes an unsupported parameter value, or is otherwise malformed.
-        invalid_resource_owner: The provided resource owner credentials are not valid, or resource owner cannot be found
-        invalid_scope: The requested scope is invalid, unknown, or malformed.
         invalid_token:
           expired: کد دسترسی منقضی شده است
           revoked: کد دسترسی فسخ شده است
           unknown: کد دسترسی معتبر نیست
-        resource_owner_authenticator_not_configured: Resource Owner find failed due to Doorkeeper.configure.resource_owner_authenticator being unconfiged.
         server_error: خطای پیش‌بینی‌نشده‌ای برای سرور اجازه‌دهنده رخ داد که جلوی اجرای این درخواست را گرفت.
         temporarily_unavailable: سرور اجازه‌دهنده به دلیل بار زیاد یا تعمیرات سرور هم‌اینک نمی‌تواند درخواست شما را بررسی کند.
-        unauthorized_client: The client is not authorized to perform this request using this method.
-        unsupported_grant_type: The authorization grant type is not supported by the authorization server.
-        unsupported_response_type: The authorization server does not support this response type.
     flash:
       applications:
         create:
diff --git a/config/locales/doorkeeper.fi.yml b/config/locales/doorkeeper.fi.yml
index a3b878b65..10613d435 100644
--- a/config/locales/doorkeeper.fi.yml
+++ b/config/locales/doorkeeper.fi.yml
@@ -72,7 +72,6 @@ fi:
       index:
         application: Sovellus
         created_at: Valtuutettu
-        date_format: "%Y-%m-%d %H:%M:%S"
         scopes: Oikeudet
         title: Valtuutetut sovellukset
     errors:
diff --git a/config/locales/doorkeeper.fr.yml b/config/locales/doorkeeper.fr.yml
index eae691659..352561768 100644
--- a/config/locales/doorkeeper.fr.yml
+++ b/config/locales/doorkeeper.fr.yml
@@ -5,7 +5,6 @@ fr:
       doorkeeper/application:
         name: Nom
         redirect_uri: L’URL de redirection
-        scope: Portée
         scopes: Étendues
         website: Site web de l’application
     errors:
diff --git a/config/locales/doorkeeper.he.yml b/config/locales/doorkeeper.he.yml
index d797b0ac9..78bb0a142 100644
--- a/config/locales/doorkeeper.he.yml
+++ b/config/locales/doorkeeper.he.yml
@@ -72,7 +72,6 @@ he:
       index:
         application: ישום
         created_at: מאושר
-        date_format: "%Y-%m-%d %H:%M:%S"
         scopes: תחומים
         title: ישומיך המאושרים
     errors:
diff --git a/config/locales/doorkeeper.hr.yml b/config/locales/doorkeeper.hr.yml
index e0240938e..221ec27e9 100644
--- a/config/locales/doorkeeper.hr.yml
+++ b/config/locales/doorkeeper.hr.yml
@@ -4,7 +4,6 @@ hr:
     attributes:
       doorkeeper/application:
         name: Ime
-        redirect_uri: Redirect URI
     errors:
       models:
         doorkeeper/application:
@@ -33,7 +32,6 @@ hr:
         redirect_uri: Koristi jednu liniju po URI
         scopes: Odvoji scopes sa razmacima. Ostavi prazninu kako bi koristio zadane scopes.
       index:
-        callback_url: Callback URL
         name: Ime
         new: Nova Aplikacija
         title: Tvoje aplikacije
@@ -43,7 +41,6 @@ hr:
         actions: Akcije
         application_id: Id Aplikacije
         callback_urls: Callback urls
-        scopes: Scopes
         secret: Tajna
         title: 'Aplikacija: %{name}'
     authorizations:
@@ -56,8 +53,6 @@ hr:
         able_to: Moći će
         prompt: Aplikacija %{client_name} je zatražila pristup tvom računu
         title: Traži se autorizacija
-      show:
-        title: Copy this authorization code and paste it to the application.
     authorized_applications:
       buttons:
         revoke: Odbij
@@ -66,15 +61,11 @@ hr:
       index:
         application: Aplikacija
         created_at: Ovlašeno
-        date_format: "%Y-%m-%d %H:%M:%S"
-        scopes: Scopes
         title: Tvoje autorizirane aplikacije
     errors:
       messages:
         access_denied: Vlasnik resursa / autorizacijski server je odbio zahtjev.
-        credential_flow_not_configured: Resource Owner Password Credentials flow failed due to Doorkeeper.configure.resource_owner_from_credentials being unconfigured.
         invalid_client: Autentifikacija klijenta nije uspjela zbog nepoznatog klijenta, neuključene autentifikacije od strane klijenta, ili nepodržane metode autentifikacije.
-        invalid_grant: The provided authorization grant is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client.
         invalid_redirect_uri: The redirect uri included nije valjan.
         invalid_request: Zahtjevu nedostaje traženi parametar, uključuje nepodržanu vrijednost parametra, ili je na neki drugi način neispravno formiran.
         invalid_resource_owner: The provided resource owner credentials nisu valjani, ili vlasnik resursa ne može biti nađen
@@ -83,7 +74,6 @@ hr:
           expired: Pristupni token je istekao
           revoked: Pristupni token je odbijen
           unknown: Pristupni token nije valjan
-        resource_owner_authenticator_not_configured: Resource Owner find failed due to Doorkeeper.configure.resource_owner_authenticator being unconfiged.
         server_error: Autorizacijski server naišao je na neočekivani uvjet, što ga je onemogućilo da ispuni zahtjev.
         temporarily_unavailable: Autorizacijski server trenutno nije u mogućnosti  izvesti zahtjev zbog privremenog preopterećenja ili održavanja servera.
         unauthorized_client: Klijent nije ovlašten izvesti zahtjev koristeći ovu metodu.
@@ -104,7 +94,6 @@ hr:
       admin:
         nav:
           applications: Aplikacije
-          oauth2_provider: OAuth2 Provider
       application:
         title: Traži se OAuth autorizacija
     scopes:
diff --git a/config/locales/doorkeeper.hu.yml b/config/locales/doorkeeper.hu.yml
index fa706e100..da57aaf9b 100644
--- a/config/locales/doorkeeper.hu.yml
+++ b/config/locales/doorkeeper.hu.yml
@@ -36,7 +36,6 @@ hu:
         scopes: A nézeteket szóközzel válaszd el. Hagyd üresen az alapértelmezett nézetekhez.
       index:
         application: Alkalmazás
-        callback_url: Callback URL
         delete: Eltávolítás
         name: Név
         new: Új alkalmazás
@@ -62,8 +61,6 @@ hu:
         able_to: Képes lesz
         prompt: "%{client_name} nevű alkalmazás engedélyt kér a fiókodhoz való hozzáféréshez."
         title: Engedély szükséges
-      show:
-        title: Copy this authorization code and paste it to the application.
     authorized_applications:
       buttons:
         revoke: Visszavonás
@@ -72,7 +69,6 @@ hu:
       index:
         application: Alkalmazás
         created_at: Készítve
-        date_format: "%Y-%m-%d %H:%M:%S"
         scopes: Hatáskör
         title: Engedélyezett alkalmazásaid
     errors:
diff --git a/config/locales/doorkeeper.hy.yml b/config/locales/doorkeeper.hy.yml
new file mode 100644
index 000000000..c40654016
--- /dev/null
+++ b/config/locales/doorkeeper.hy.yml
@@ -0,0 +1 @@
+hy:
diff --git a/config/locales/doorkeeper.id.yml b/config/locales/doorkeeper.id.yml
index 0a99b86c0..3f9dee2ac 100644
--- a/config/locales/doorkeeper.id.yml
+++ b/config/locales/doorkeeper.id.yml
@@ -62,8 +62,6 @@ id:
         able_to: Mempunyai akses untuk
         prompt: Aplikasi %{client_name} meminta akses pada akun anda
         title: Izin diperlukan
-      show:
-        title: Copy this authorization code and paste it to the application.
     authorized_applications:
       buttons:
         revoke: Cabut izin
@@ -72,7 +70,6 @@ id:
       index:
         application: Aplikasi
         created_at: Diizinkan pada
-        date_format: "%Y-%m-%d %H:%M:%S"
         scopes: Scope
         title: Aplikasi yang anda izinkan
     errors:
diff --git a/config/locales/doorkeeper.io.yml b/config/locales/doorkeeper.io.yml
index 28466d3ae..ff1fdf9c2 100644
--- a/config/locales/doorkeeper.io.yml
+++ b/config/locales/doorkeeper.io.yml
@@ -31,82 +31,14 @@ io:
       help:
         native_redirect_uri: Uzez %{native_redirect_uri} por lokala probi
         redirect_uri: Uzez un lineo por singla URI
-        scopes: Separate scopes with spaces. Leave blank to use the default scopes.
       index:
-        callback_url: Callback URL
-        name: Name
         new: New Application
-        title: Your applications
       new:
         title: New Application
       show:
-        actions: Actions
         application_id: Application Id
         callback_urls: Callback urls
-        scopes: Scopes
         secret: Secret
-        title: 'Application: %{name}'
-    authorizations:
-      buttons:
-        authorize: Authorize
-        deny: Deny
-      error:
-        title: An error has occurred
-      new:
-        able_to: It will be able to
-        prompt: Application %{client_name} requests access to your account
-        title: Authorization required
-      show:
-        title: Copy this authorization code and paste it to the application.
-    authorized_applications:
-      buttons:
-        revoke: Revoke
-      confirmations:
-        revoke: Are you sure?
-      index:
-        application: Application
-        created_at: Authorized
-        date_format: "%Y-%m-%d %H:%M:%S"
-        scopes: Scopes
-        title: Your authorized applications
-    errors:
-      messages:
-        access_denied: The resource owner or authorization server denied the request.
-        credential_flow_not_configured: Resource Owner Password Credentials flow failed due to Doorkeeper.configure.resource_owner_from_credentials being unconfigured.
-        invalid_client: Client authentication failed due to unknown client, no client authentication included, or unsupported authentication method.
-        invalid_grant: The provided authorization grant is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client.
-        invalid_redirect_uri: The redirect uri included is not valid.
-        invalid_request: The request is missing a required parameter, includes an unsupported parameter value, or is otherwise malformed.
-        invalid_resource_owner: The provided resource owner credentials are not valid, or resource owner cannot be found
-        invalid_scope: The requested scope is invalid, unknown, or malformed.
-        invalid_token:
-          expired: The access token expired
-          revoked: The access token was revoked
-          unknown: The access token is invalid
-        resource_owner_authenticator_not_configured: Resource Owner find failed due to Doorkeeper.configure.resource_owner_authenticator being unconfiged.
-        server_error: The authorization server encountered an unexpected condition which prevented it from fulfilling the request.
-        temporarily_unavailable: The authorization server is currently unable to handle the request due to a temporary overloading or maintenance of the server.
-        unauthorized_client: The client is not authorized to perform this request using this method.
-        unsupported_grant_type: The authorization grant type is not supported by the authorization server.
-        unsupported_response_type: The authorization server does not support this response type.
-    flash:
-      applications:
-        create:
-          notice: Application created.
-        destroy:
-          notice: Application deleted.
-        update:
-          notice: Application updated.
-      authorized_applications:
-        destroy:
-          notice: Application revoked.
-    layouts:
-      admin:
-        nav:
-          applications: Applications
-          oauth2_provider: OAuth2 Provider
-      application:
-        title: OAuth authorization required
     scopes:
       follow: follow, block, unblock and unfollow accounts
       read: read your account's data
diff --git a/config/locales/doorkeeper.it.yml b/config/locales/doorkeeper.it.yml
index a76130bb9..f6bd8b4bc 100644
--- a/config/locales/doorkeeper.it.yml
+++ b/config/locales/doorkeeper.it.yml
@@ -36,11 +36,9 @@ it:
         scopes: Dividi gli scopes con spazi. Lascia vuoto per utilizzare gli scopes di default.
       index:
         application: Applicazione
-        callback_url: Callback URL
         delete: Elimina
         name: Nome
         new: Nuova applicazione
-        scopes: Scopes
         show: Mostra
         title: Le tue applicazioni
       new:
diff --git a/config/locales/doorkeeper.ka.yml b/config/locales/doorkeeper.ka.yml
index e462e66f1..f4178a752 100644
--- a/config/locales/doorkeeper.ka.yml
+++ b/config/locales/doorkeeper.ka.yml
@@ -72,7 +72,6 @@ ka:
       index:
         application: აპლიკაცია
         created_at: ავტორიზებული
-        date_format: "%Y-%m-%d %H:%M:%S"
         scopes: ფარგლები
         title: თქვენი ავტორიზებული აპლიკაციები
     errors:
diff --git a/config/locales/doorkeeper.kk.yml b/config/locales/doorkeeper.kk.yml
index 409435802..97897cdcb 100644
--- a/config/locales/doorkeeper.kk.yml
+++ b/config/locales/doorkeeper.kk.yml
@@ -72,7 +72,6 @@ kk:
       index:
         application: Қосымша
         created_at: Авторизацияланды
-        date_format: "%Y-%m-%d %H:%M:%S"
         scopes: Scopеs
         title: Your authorized applicаtions
     errors:
diff --git a/config/locales/doorkeeper.ko.yml b/config/locales/doorkeeper.ko.yml
new file mode 100644
index 000000000..76e725deb
--- /dev/null
+++ b/config/locales/doorkeeper.ko.yml
@@ -0,0 +1,131 @@
+---
+ko:
+  activerecord:
+    attributes:
+      doorkeeper/application:
+        name: 애플리케이션 이름
+        redirect_uri: 리디렉션 URI
+        scopes: 범위
+        website: 애플리케이션 웹사이트
+    errors:
+      models:
+        doorkeeper/application:
+          attributes:
+            redirect_uri:
+              fragment_present: fragment를 포함할 수 없습니다
+              invalid_uri: 올바른 URI여야 합니다.
+              relative_uri: 절대경로 URI여야 합니다
+              secured_uri: HTTPS/SSL URI여야 합니다.
+  doorkeeper:
+    applications:
+      buttons:
+        authorize: 승인
+        cancel: 취소
+        destroy: 제거
+        edit: 수정
+        submit: 제출
+      confirmations:
+        destroy: 확실합니까?
+      edit:
+        title: 애플리케이션 수정
+      form:
+        error: 이런! 에러를 확인하세요
+      help:
+        native_redirect_uri: "%{native_redirect_uri}를 이용해 로컬 테스트를 할 수 있습니다"
+        redirect_uri: 한 줄에 하나의 URI를 작성하세요
+        scopes: 스페이스로 범위를 구분하세요. 빈 칸으로 놔두면 기본 범위를 사용합니다.
+      index:
+        application: 애플리케이션
+        callback_url: 콜백 URL
+        delete: 삭제
+        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:
+        able_to: 다음과 같은 행동들이 가능합니다
+        prompt: "%{client_name}이 당신의 계정에 접근 권한을 요청합니다"
+        title: 승인 필요
+      show:
+        title: 이 승인 코드를 복사하여 애플리케이션에 붙여넣으세요
+    authorized_applications:
+      buttons:
+        revoke: 취소
+      confirmations:
+        revoke: 확실합니까?
+      index:
+        application: 애플리케이션
+        created_at: 승인 됨
+        date_format: "%Y-%m-%d %H:%M:%S"
+        scopes: 범위
+        title: 당신의 승인 된 애플리케이션들
+    errors:
+      messages:
+        access_denied: 리소스 소유자 또는 권한 부여 서버가 요청을 거부했습니다.
+        invalid_redirect_uri: 리디렉션 URI가 올바르지 않습니다
+        invalid_request: 요청에 필요한 매개변수가 없거나, 지원 되지 않는 매개변수가 있거나, 형식이 잘못되었습니다.
+        invalid_token:
+          expired: 액세스 토큰이 만료되었습니다.
+          revoked: 액세스 토큰이 취소되었습니다.
+          unknown: 액세스 토큰이 잘못되었습니다.
+    flash:
+      applications:
+        create:
+          notice: 애플리케이션이 생성 되었습니다.
+        destroy:
+          notice: 애플리케이션이 삭제 되었습니다.
+        update:
+          notice: 애플리케이션이 갱신 되었습니다.
+      authorized_applications:
+        destroy:
+          notice: 애플리케이션이 취소 되었습니다.
+    layouts:
+      admin:
+        nav:
+          applications: 애플리케이션
+          oauth2_provider: OAuth2 제공자
+      application:
+        title: OAuth 인증이 필요합니다
+    scopes:
+      follow: 계정의 관계를 수정
+      push: 푸시 알림을 받기
+      read: 계정의 모든 데이터를 읽기
+      read:accounts: 계정의 정보를 보기
+      read:blocks: 차단을 보기
+      read:favourites: 관심글을 보기
+      read:filters: 필터를 보기
+      read:follows: 팔로우를 보기
+      read:lists: 리스트를 보기
+      read:mutes: 뮤트를 보기
+      read:notifications: 알림 보기
+      read:reports: 신고 보기
+      read:search: 당신의 권한으로 검색
+      read:statuses: 게시물 모두 보기
+      write: 계정 정보 수정
+      write:accounts: 프로필 수정
+      write:blocks: 계정이나 도메인 차단
+      write:favourites: 관심글 지정
+      write:filters: 필터 만들기
+      write:follows: 사람을 팔로우
+      write:lists: 리스트 만들기
+      write:media: 미디어 파일 업로드
+      write:mutes: 사람이나 대화 뮤트
+      write:notifications: 알림 모두 지우기
+      write:reports: 다른 사람을 신고
+      write:statuses: 게시물 게시
diff --git a/config/locales/doorkeeper.lt.yml b/config/locales/doorkeeper.lt.yml
new file mode 100644
index 000000000..6c5cb837a
--- /dev/null
+++ b/config/locales/doorkeeper.lt.yml
@@ -0,0 +1 @@
+lt:
diff --git a/config/locales/doorkeeper.lv.yml b/config/locales/doorkeeper.lv.yml
new file mode 100644
index 000000000..1be0eabc0
--- /dev/null
+++ b/config/locales/doorkeeper.lv.yml
@@ -0,0 +1 @@
+lv:
diff --git a/config/locales/doorkeeper.ms.yml b/config/locales/doorkeeper.ms.yml
new file mode 100644
index 000000000..2925688a0
--- /dev/null
+++ b/config/locales/doorkeeper.ms.yml
@@ -0,0 +1 @@
+ms:
diff --git a/config/locales/doorkeeper.nl.yml b/config/locales/doorkeeper.nl.yml
index bf6d46f4b..aa37ea190 100644
--- a/config/locales/doorkeeper.nl.yml
+++ b/config/locales/doorkeeper.nl.yml
@@ -110,7 +110,6 @@ nl:
       admin:
         nav:
           applications: Toepassingen
-          home: Home
           oauth2_provider: OAuth2-provider
       application:
         title: OAuth-autorisatie vereist
diff --git a/config/locales/doorkeeper.no.yml b/config/locales/doorkeeper.no.yml
index 56c15fab7..263fef15e 100644
--- a/config/locales/doorkeeper.no.yml
+++ b/config/locales/doorkeeper.no.yml
@@ -72,7 +72,6 @@
       index:
         application: Applikasjon
         created_at: Autorisert
-        date_format: "%Y-%m-%d %H:%M:%S"
         scopes: Omfang
         title: Dine autoriserte applikasjoner
     errors:
diff --git a/config/locales/doorkeeper.pt.yml b/config/locales/doorkeeper.pt.yml
index e76cd01fd..f21e84d17 100644
--- a/config/locales/doorkeeper.pt.yml
+++ b/config/locales/doorkeeper.pt.yml
@@ -72,7 +72,6 @@ pt:
       index:
         application: Aplicação
         created_at: Criada em
-        date_format: "%Y-%m-%d %H:%M:%S"
         scopes: Autorizações
         title: As tuas aplicações autorizadas
     errors:
diff --git a/config/locales/doorkeeper.ro.yml b/config/locales/doorkeeper.ro.yml
index fea4baf60..79dbaa871 100644
--- a/config/locales/doorkeeper.ro.yml
+++ b/config/locales/doorkeeper.ro.yml
@@ -1,3 +1 @@
----
 ro:
-  doorkeeper: {}
diff --git a/config/locales/doorkeeper.ru.yml b/config/locales/doorkeeper.ru.yml
index f37317559..ebe90a189 100644
--- a/config/locales/doorkeeper.ru.yml
+++ b/config/locales/doorkeeper.ru.yml
@@ -63,7 +63,7 @@ ru:
         prompt: Приложение %{client_name} запрашивает доступ к Вашему аккаунту
         title: Требуется авторизация
       show:
-        title: Copy this authorization code and paste it to the application.
+        title: Скопируйте этот код авторизации и вставьте его в приложении.
     authorized_applications:
       buttons:
         revoke: Отозвать авторизацию
diff --git a/config/locales/doorkeeper.sk.yml b/config/locales/doorkeeper.sk.yml
index 98597ca8b..f54eb6d48 100644
--- a/config/locales/doorkeeper.sk.yml
+++ b/config/locales/doorkeeper.sk.yml
@@ -72,7 +72,6 @@ sk:
       index:
         application: Aplikácia
         created_at: Autorizované
-        date_format: "%Y-%m-%d %H:%M:%S"
         scopes: Oprávnenia
         title: Vaše autorizované aplikácie
     errors:
diff --git a/config/locales/doorkeeper.sv.yml b/config/locales/doorkeeper.sv.yml
index 25440cbb0..4fd246eff 100644
--- a/config/locales/doorkeeper.sv.yml
+++ b/config/locales/doorkeeper.sv.yml
@@ -72,7 +72,6 @@ sv:
       index:
         application: Applikation
         created_at: Auktoriserad
-        date_format: "%Y-%m-%d %H:%M:%S"
         scopes: Omfattning
         title: Dina behöriga ansökningar
     errors:
diff --git a/config/locales/doorkeeper.ta.yml b/config/locales/doorkeeper.ta.yml
new file mode 100644
index 000000000..4320953ce
--- /dev/null
+++ b/config/locales/doorkeeper.ta.yml
@@ -0,0 +1 @@
+ta:
diff --git a/config/locales/doorkeeper.te.yml b/config/locales/doorkeeper.te.yml
new file mode 100644
index 000000000..34c54f18f
--- /dev/null
+++ b/config/locales/doorkeeper.te.yml
@@ -0,0 +1 @@
+te:
diff --git a/config/locales/doorkeeper.th.yml b/config/locales/doorkeeper.th.yml
index 60edae1e4..4b7c9383e 100644
--- a/config/locales/doorkeeper.th.yml
+++ b/config/locales/doorkeeper.th.yml
@@ -10,103 +10,38 @@ th:
         doorkeeper/application:
           attributes:
             redirect_uri:
-              fragment_present: cannot contain a fragment.
               invalid_uri: ต้องใช้ URI ที่ถูกต้อง.
               relative_uri: ต้องเป็น absolute URI.
               secured_uri: ต้องใช้ HTTPS/SSL URI.
   doorkeeper:
     applications:
       buttons:
-        authorize: Authorize
         cancel: ยกเลิก
         destroy: ทำลาย
         edit: แก้ไข
-        submit: Submit
       confirmations:
         destroy: แน่ใจนะ?
       edit:
         title: แก้ไข แอ๊ฟพลิเคชั่น
-      form:
-        error: Whoops! Check your form for possible errors
       help:
         native_redirect_uri: ใช้ %{native_redirect_uri} สำหรับการทดสอบ
         redirect_uri: ใช้บรรทัดละหนึ่ง URI
-        scopes: Separate scopes with spaces. Leave blank to use the default scopes.
       index:
-        callback_url: Callback URL
         name: ชื่อ
         new: New Application
-        title: Your applications
       new:
         title: New Application
       show:
-        actions: Actions
         application_id: Application Id
         callback_urls: Callback urls
-        scopes: Scopes
         secret: Secret
-        title: 'Application: %{name}'
     authorizations:
       buttons:
         authorize: อนุญาติ
         deny: ไม่อนุญาติ
-      error:
-        title: An error has occurred
-      new:
-        able_to: It will be able to
-        prompt: Application %{client_name} requests access to your account
-        title: Authorization required
-      show:
-        title: Copy this authorization code and paste it to the application.
     authorized_applications:
       buttons:
         revoke: ยกเลิกการอนุญาติ
-      confirmations:
-        revoke: Are you sure?
-      index:
-        application: Application
-        created_at: Authorized
-        date_format: "%Y-%m-%d %H:%M:%S"
-        scopes: Scopes
-        title: Your authorized applications
-    errors:
-      messages:
-        access_denied: The resource owner or authorization server denied the request.
-        credential_flow_not_configured: Resource Owner Password Credentials flow failed due to Doorkeeper.configure.resource_owner_from_credentials being unconfigured.
-        invalid_client: Client authentication failed due to unknown client, no client authentication included, or unsupported authentication method.
-        invalid_grant: The provided authorization grant is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client.
-        invalid_redirect_uri: The redirect uri included is not valid.
-        invalid_request: The request is missing a required parameter, includes an unsupported parameter value, or is otherwise malformed.
-        invalid_resource_owner: The provided resource owner credentials are not valid, or resource owner cannot be found
-        invalid_scope: The requested scope is invalid, unknown, or malformed.
-        invalid_token:
-          expired: The access token expired
-          revoked: The access token was revoked
-          unknown: The access token is invalid
-        resource_owner_authenticator_not_configured: Resource Owner find failed due to Doorkeeper.configure.resource_owner_authenticator being unconfiged.
-        server_error: The authorization server encountered an unexpected condition which prevented it from fulfilling the request.
-        temporarily_unavailable: The authorization server is currently unable to handle the request due to a temporary overloading or maintenance of the server.
-        unauthorized_client: The client is not authorized to perform this request using this method.
-        unsupported_grant_type: The authorization grant type is not supported by the authorization server.
-        unsupported_response_type: The authorization server does not support this response type.
-    flash:
-      applications:
-        create:
-          notice: Application created.
-        destroy:
-          notice: Application deleted.
-        update:
-          notice: Application updated.
-      authorized_applications:
-        destroy:
-          notice: Application revoked.
-    layouts:
-      admin:
-        nav:
-          applications: Applications
-          oauth2_provider: OAuth2 Provider
-      application:
-        title: OAuth authorization required
     scopes:
       follow: follow, block, unblock and unfollow accounts
       read: read your account's data
diff --git a/config/locales/doorkeeper.uk.yml b/config/locales/doorkeeper.uk.yml
index 205ad026f..305a5c1d6 100644
--- a/config/locales/doorkeeper.uk.yml
+++ b/config/locales/doorkeeper.uk.yml
@@ -58,8 +58,6 @@ uk:
         able_to: Він зможе
         prompt: Податок %{client_name} просить доступу до вашого акаунту
         title: Необхідна авторизація
-      show:
-        title: Copy this authorization code and paste it to the application.
     authorized_applications:
       buttons:
         revoke: Відкликати авторизацію
diff --git a/config/locales/doorkeeper.zh-CN.yml b/config/locales/doorkeeper.zh-CN.yml
index 3c7dd99be..1cce6adc2 100644
--- a/config/locales/doorkeeper.zh-CN.yml
+++ b/config/locales/doorkeeper.zh-CN.yml
@@ -72,7 +72,6 @@ zh-CN:
       index:
         application: 应用
         created_at: 授权时间
-        date_format: "%Y-%m-%d %H:%M:%S"
         scopes: 权限范围
         title: 已授权的应用列表
     errors:
@@ -117,4 +116,26 @@ zh-CN:
       follow: 关注或屏蔽用户
       push: 接收你的帐户的推送通知
       read: 读取你的帐户数据
-      write: 为你发表嘟文
+      read:accounts: 查看账户信息
+      read:blocks: 查看你的屏蔽列表
+      read:favourites: 查看你的收藏
+      read:filters: 查看你的过滤器
+      read:follows: 查看你的关注
+      read:lists: 查看你的列表
+      read:mutes: 查看你的隐藏列表
+      read:notifications: 查看你的通知
+      read:reports: 查看你的举报
+      read:search: 以你的身份搜索
+      read:statuses: 查看所有嘟文
+      write: 修改你的账户数据
+      write:accounts: 修改你的个人资料
+      write:blocks: 屏蔽账户和域名
+      write:favourites: 收藏嘟文
+      write:filters: 创建过滤器
+      write:follows: 关注其他人
+      write:lists: 创建列表
+      write:media: 上传媒体文件
+      write:mutes: 隐藏用户和对话
+      write:notifications: 清除你的通知
+      write:reports: 举报他人
+      write:statuses: 发表嘟文
diff --git a/config/locales/doorkeeper.zh-HK.yml b/config/locales/doorkeeper.zh-HK.yml
index 19ed76d1a..d9c91caf0 100644
--- a/config/locales/doorkeeper.zh-HK.yml
+++ b/config/locales/doorkeeper.zh-HK.yml
@@ -72,7 +72,6 @@ zh-HK:
       index:
         application: 應用程式
         created_at: 授權日期
-        date_format: "%Y-%m-%d %H:%M:%S"
         scopes: 權限範圍
         title: 已獲你授權的程用程式
     errors:
diff --git a/config/locales/doorkeeper.zh-TW.yml b/config/locales/doorkeeper.zh-TW.yml
index 690fc4513..41dd17264 100644
--- a/config/locales/doorkeeper.zh-TW.yml
+++ b/config/locales/doorkeeper.zh-TW.yml
@@ -72,7 +72,6 @@ zh-TW:
       index:
         application: 應用程式
         created_at: 授權時間
-        date_format: "%Y-%m-%d %H:%M:%S"
         scopes: 權限範圍
         title: 已授權的應用程式
     errors:
diff --git a/config/locales/el.yml b/config/locales/el.yml
index f2b6751ff..a08ec7141 100644
--- a/config/locales/el.yml
+++ b/config/locales/el.yml
@@ -41,7 +41,7 @@ el:
     user_count_before: Σπίτι για
     what_is_mastodon: Τι είναι το Mastodon;
   accounts:
-    choices_html: 'Επιλογές του/της %{name}:'
+    choices_html: 'Επιλογές από %{name}:'
     follow: Ακολούθησε
     followers:
       one: Ακόλουθος
@@ -68,6 +68,7 @@ el:
       admin: Διαχειριστής
       bot: Μποτ (αυτόματος λογαριασμός)
       moderator: Μεσολαβητής
+    unavailable: Το προφίλ δεν είναι διαθέσιμο
     unfollow: Διακοπή παρακολούθησης
   admin:
     account_actions:
@@ -80,6 +81,7 @@ el:
       destroyed_msg: Επιτυχής καταστροφή σημειώματος μεσολάβησης!
     accounts:
       approve: Έγκριση
+      approve_all: Έγκριση όλων
       are_you_sure: Σίγουρα;
       avatar: Αβατάρ
       by_domain: Τομέας
@@ -132,6 +134,7 @@ el:
       moderation_notes: Σημειώσεις μεσολάβησης
       most_recent_activity: Πιο πρόσφατη δραστηριότητα
       most_recent_ip: Πιο πρόσφατη IP
+      no_account_selected: Κανείς λογαριασμός δεν ενημερώθηκε αφού κανείς δεν ήταν επιλεγμένος
       no_limits_imposed: Χωρίς όρια
       not_subscribed: Άνευ συνδρομής
       outbox_url: URL εξερχομένων
@@ -144,6 +147,7 @@ el:
       push_subscription_expires: Η εγγραφή PuSH λήγει
       redownload: Ανανέωση αβατάρ
       reject: Απόρριψη
+      reject_all: Απόρριψη όλων
       remove_avatar: Απομακρυσμένο αβατάρ
       remove_header: Αφαίρεση επικεφαλίδας
       resend_confirmation:
@@ -170,6 +174,7 @@ el:
       statuses: Καταστάσεις
       subscribe: Εγγραφή
       suspended: Σε αναστολή
+      time_in_queue: Σε αναμονή για %{time}
       title: Λογαριασμοί
       unconfirmed_email: Ανεπιβεβαίωτο email
       undo_silenced: Αναίρεση αποσιώπησης
@@ -245,6 +250,7 @@ el:
       feature_profile_directory: Κατάλογος χρηστών
       feature_registrations: Εγγραφές
       feature_relay: Ανταποκριτής ομοσπονδίας
+      feature_timeline_preview: Προεπισκόπιση ροής
       features: Λειτουργίες
       hidden_service: Ομοσπονδία με κρυμμένες υπηρεσίες
       open_reports: ανοιχτές καταγγελίες
@@ -264,6 +270,7 @@ el:
       created_msg: Ο αποκλεισμός τομέα είναι υπό επεξεργασία
       destroyed_msg: Ο αποκλεισμός τομέα άρθηκε
       domain: Τομέας
+      existing_domain_block_html: Έχεις ήδη επιβάλλει αυστηρότερους περιορισμούς στο %{name}, πρώτα θα πρέπει να τους <a href="%{unblock_url}">αναιρέσεις</a>.
       new:
         create: Δημιουργία αποκλεισμού
         hint: Ο αποκλεισμός τομέα δεν θα αποτρέψει νέες καταχωρίσεις λογαριασμών στην βάση δεδομένων, αλλά θα εφαρμόσει αναδρομικά και αυτόματα συγκεκριμένες πολιτικές μεσολάβησης σε αυτούς τους λογαριασμούς.
@@ -329,6 +336,8 @@ el:
         expired: Ληγμένες
         title: Φίλτρο
       title: Προσκλήσεις
+    pending_accounts:
+      title: Λογαριασμοί σε αναμονή (%{count})
     relays:
       add_new: Πρόσθεσε νέο ανταποκριτή (relay)
       delete: Διαγραφή
@@ -465,7 +474,7 @@ el:
       confirmed: Επιβεβαιωμένες
       expires_in: Λήγει σε
       last_delivery: Τελευταία παράδοση
-      title: WebSub
+      title: Πρωτόκολλο WebSub
       topic: Θέμα
     tags:
       accounts: Λογαριασμοί
@@ -490,6 +499,12 @@ el:
       body: Ο/Η %{reporter} κατήγγειλε τον/την %{target}
       body_remote: Κάποιος/α από τον τομέα %{domain} κατήγγειλε τον/την %{target}
       subject: Νέα καταγγελία για %{instance} (#%{id})
+  appearance:
+    advanced_web_interface: Προηγμένη λειτουργία χρήσης
+    advanced_web_interface_hint: 'Αν θέλεις να χρησιμοποιήσεις ολόκληρο το πλάτος της οθόνης σου, η προηγμένη λειτουργία χρήσης σου επιτρέπει να ορίσεις πολλαπλές κολώνες ώστε να βλέπεις ταυτόχρονα όση πληροφορία θέλεις: Την αρχική ροή, τις ειδοποιήσεις, την ομοσπονδιακή ροή και όσες λίστες και ταμπέλες θέλεις.'
+    animations_and_accessibility: Κίνηση και προσβασιμότητα
+    confirmation_dialogs: Ερωτήσεις επιβεβαίωσης
+    sensitive_content: Ευαίσθητο περιεχόμενο
   application_mailer:
     notification_preferences: Αλλαγή προτιμήσεων email
     salutation: "%{name},"
@@ -522,7 +537,7 @@ el:
     or_log_in_with: Ή συνδέσου με
     providers:
       cas: Υπηρεσία Κεντρικής Πιστοποίησης (CAS)
-      saml: SAML
+      saml: Πρωτόκολλο SAML
     register: Εγγραφή
     registration_closed: Το %{instance} δεν δέχεται νέα μέλη
     resend_confirmation: Στείλε ξανά τις οδηγίες επιβεβαίωσης
@@ -631,6 +646,7 @@ el:
     all: Όλα
     changes_saved_msg: Οι αλλαγές αποθηκεύτηκαν!
     copy: Αντιγραφή
+    order_by: Ταξινόμηση κατά
     save_changes: Αποθήκευσε τις αλλαγές
     validation_errors:
       one: Κάτι δεν είναι εντάξει ακόμα! Για κοίταξε το παρακάτω σφάλμα
@@ -646,10 +662,13 @@ el:
       keybase:
         invalid_token: Τα κλειδιά Keybase είναι κατακερματισμένες υπογραφές και πρέπει να έχουν μήκος 66 δεκαεξαδικών χαρακτήρων
         verification_failed: Το Keybase δεν δέχτηκε αυτό το κλειδί ως υπογραφή του χρήστη %{kb_username}. Παρακαλούμε δοκίμασε μέσω Keybase.
+      wrong_user: Δεν επιτρέπεται να δημιουργηθεί ένα αποδεικτικό για %{proving} υπό τη σύνδεση ως %{current}. Συνδέσου ως %{proving} και δοκίμασε ξανά.
     explanation_html: Εδώ μπορείς να συνδέσεις κρυπτογραφικά τις υπόλοιπες ταυτοτητές σου, όπως για παράδειγμα ένα προφίλ στο Keybase. Αυτό επιτρέπει σε άλλους ανθρώπους να σου στέλνουν κρυπτογραφημένα μηνύματα και να μπορούν να εμπιστευτούν το περιεχόμενο που τους στέλνεις εσύ.
     i_am_html: Είμαι ο/η %{username} στην υπηρεσία %{service}.
     identity: Ταυτότητα
     inactive: Ανενεργή
+    publicize_checkbox: 'Και κάνε τουτ αυτό:'
+    publicize_toot: 'Αποδείχτηκε! Λέγομαι %{username} στο %{service}: %{url}'
     status: Κατάσταση επαλήθευσης
     view_proof: Εμφάνιση απόδειξης
   imports:
@@ -764,13 +783,14 @@ el:
       too_few_options: πρέπει να έχει περισσότερες από μια επιλογές
       too_many_options: δεν μπορεί να έχει περισσότερες από %{max} επιλογές
   preferences:
-    languages: Γλώσσες
     other: Άλλο
-    publishing: Δημοσίευση
-    web: Διαδίκτυο
+    posting_defaults: Προεπιλογές δημοσίευσης
+    public_timelines: Δημόσιες ροές
   relationships:
     activity: Δραστηριότητα λογαριασμού
     dormant: Αδρανής
+    last_active: Τελευταία δραστηριότητα
+    most_recent: Πιο πρόσφατα
     moved: Μετακόμισε
     mutual: Αμοιβαίος
     primary: Βασικός
@@ -846,6 +866,9 @@ el:
     revoke_success: Η σύνδεση ανακλήθηκε επιτυχώς
     title: Σύνδεση
   settings:
+    account: Λογαριασμός
+    account_settings: Ρυθμίσεις λογαριασμού
+    appearance: Εμφάνιση
     authorized_apps: Εγκεκριμένες εφαρμογές
     back: Πίσω στο Mastodon
     delete: Διαγραφή λογαριασμού
@@ -855,9 +878,11 @@ el:
     featured_tags: Χαρακτηριστικές ταμπέλες
     identity_proofs: Αποδείξεις ταυτοτήτων
     import: Εισαγωγή
+    import_and_export: Εισαγωγή & Εξαγωγή
     migrate: Μετακόμιση λογαριασμού
     notifications: Ειδοποιήσεις
     preferences: Προτιμήσεις
+    profile: Προφίλ
     relationships: Ακολουθεί και ακολουθείται
     two_factor_authentication: Πιστοποίηση 2 παραγόντων (2FA)
   statuses:
@@ -907,10 +932,10 @@ el:
       <h3 id="collect">Ποιες πληροφορίες συλλέγουμε;</h3>
 
       <ul>
-        <li><em>Βασικά στοιχεία λογαριασμού</em>: Όταν εγγραφείς σε αυτό τον διακομιστή, μπορεί να σου ζητηθεί όνομα χρήστη, διεύθυνση email και ένας κωδικός. Μπορεί επίσης να εισάγεις επιπλέον πληροφορίες λογαριασμού όπως ένα όνομα λογαριασμού και σύντομο βιογραφικό και να ανεβάσεις εικόνα προφίλ και επικεφαλίδας. Το όνομα χρήστη, το όνομα λογαριασμού, το βιογραφικό και οι εικόνες προφίλ και επικεφαλίδας είναι πάντα δημόσια εμφανείς.</li>
-        <li><em>Δημοσιεύσεις, ακόλουθοι και λοιπά δημόσια στοιχεία</em>: Η λίστα των ανθρώπων που ακολουθείς εμφανίζεται δημόσια, το ίδιο και οι ακόλουθοί σου. Όταν υποβάλλεις ένα μήνυμα, η ημερομηνία και ώρα αποθηκεύονται καθώς και η εφαρμογή που χρησιμοποίησες για την υποβολή του. Τα μηνύματα μπορεί να περιέχουν συνημμένα πολυμέσα όπως εικόνες και βίντεο. Τα δημόσια και τα μη καταχωρημένα μηνύματα είναι δημόσια διαθέσιμα. Όταν προβάλεις μια δημοσίευση στο προφίλ σου, είναι και αυτό δημόσια διαθέσιμο. Οι δημοσιεύσεις σου παραδίδονται στους ακολούθους σου, σε κάποιες περιπτώσεις αυτό σημαίνει ότι παραδίδονται σε διαφορετικούς διακομιστές (servers) και αντίγραφά τους αποθηκεύονται σε αυτούς. Παρομοίως, όταν διαγράψεις δημοσιεύσεις, αυτό μεταφέρεται στους ακόλουθους σου. Η αναδημοσίευση και η σημείωση ως αγαπημένης μιας δημοσίευσης είναι πάντα δημόσια.</li>
-        <li><em>Προσωπικές δημοσιεύσεις και προς ακόλουθους</em>: Όλες οι δημοσιεύσεις αποθηκεύονται και επεξεργάζονται στον διακομιστή. Οι δημοσιεύσεις προς τους ακόλουθους παραδίδονται στους ακόλουθους σου και σε όσους χρήστες αναφέρονται σε αυτές. Σε κάποιες περιπτώσεις αυτό σημαίνει πως παραδίδονται σε διαφορετικούς διακομιστές και αντίγραφά τους αποθηκεύονται σε αυτούς. Καταβάλουμε ειλικρινή προσπάθεια περιορισμού πρόσβασης σε αυτές τις δημοσιεύσεις μόνο σε εγκεκριμένα άτομα, όμως διαφορετικοί διακομιστές μπορεί να μην το πετυχαίνουν αυτό. Για αυτό, είναι σημαντικό να ελέγχεις τους διακομιστές στους οποίους ανήκουν οι ακόλουθοί σου. Μπορείς να ενεργοποιήσεις την επιλογή χειροκίνητης αποδοχής ή απόρριψης των νέων ακόλουθών σου στις ρυθμίσεις. <em>Παρακαλούμε έχε υπόψιν σου πως οι διαχειριστές του διακομιστή και των αποδεκτών διακομιστών πιθανόν να κοιτάνε αυτά τα μηνύματα</em>, και πως οι τελικοί αποδέκτες μπορούν να αποθηκεύσουν την οθόνη, το μήνυμα ή να το αναμεταδώσουν με άλλους τρόπους. <em>Μην μοιράζεσαι επικύνδυνες πληροφορίες μέσω του Mastodon.</em></li>
-        <li><em>Διευθύνσεις IP και άλλα metadata</em>: Όταν συνδέεσαι, καταγράφουμε την διεύθυνση IP σου, καθώς και το όνομα της εφαρμογής του φυλλομετρητή σου (browser). Όλες οι τρέχουσες συνδέσεις στον λογαριασμό σου είναι διαθέσιμες προς ανασκόπηση στις ρυθμίσεις. Η πιο πρόσφατη διεύθυνση IP αποθηκεύεται για μέχρι 12 μήνες. Επίσης μπορεί να διατηρήσουμε ιστορικό του διακομιστή (log files) που να περιέχει την διεύθυνση ΙΡ κάθε κλήσης προς τον διακομιστή μας.</li>
+      <li><em>Βασικά στοιχεία λογαριασμού</em>: Όταν εγγραφείς σε αυτό τον διακομιστή, μπορεί να σου ζητηθεί όνομα χρήστη, διεύθυνση email και ένας κωδικός. Μπορεί επίσης να εισάγεις επιπλέον πληροφορίες λογαριασμού όπως ένα όνομα λογαριασμού και σύντομο βιογραφικό και να ανεβάσεις εικόνα προφίλ και επικεφαλίδας. Το όνομα χρήστη, το όνομα λογαριασμού, το βιογραφικό και οι εικόνες προφίλ και επικεφαλίδας είναι πάντα δημόσια εμφανείς.</li>
+      <li><em>Δημοσιεύσεις, ακόλουθοι και λοιπά δημόσια στοιχεία</em>: Η λίστα των ανθρώπων που ακολουθείς εμφανίζεται δημόσια, το ίδιο και οι ακόλουθοί σου. Όταν υποβάλλεις ένα μήνυμα, η ημερομηνία και ώρα αποθηκεύονται καθώς και η εφαρμογή που χρησιμοποίησες για την υποβολή του. Τα μηνύματα μπορεί να περιέχουν συνημμένα πολυμέσα όπως εικόνες και βίντεο. Τα δημόσια και τα μη καταχωρημένα μηνύματα είναι δημόσια διαθέσιμα. Όταν προβάλεις μια δημοσίευση στο προφίλ σου, είναι και αυτό δημόσια διαθέσιμο. Οι δημοσιεύσεις σου παραδίδονται στους ακολούθους σου, σε κάποιες περιπτώσεις αυτό σημαίνει ότι παραδίδονται σε διαφορετικούς διακομιστές (servers) και αντίγραφά τους αποθηκεύονται σε αυτούς. Παρομοίως, όταν διαγράψεις δημοσιεύσεις, αυτό μεταφέρεται στους ακόλουθους σου. Η αναδημοσίευση και η σημείωση ως αγαπημένης μιας δημοσίευσης είναι πάντα δημόσια.</li>
+      <li><em>Προσωπικές δημοσιεύσεις και προς ακόλουθους</em>: Όλες οι δημοσιεύσεις αποθηκεύονται και επεξεργάζονται στον διακομιστή. Οι δημοσιεύσεις προς τους ακόλουθους παραδίδονται στους ακόλουθους σου και σε όσους χρήστες αναφέρονται σε αυτές. Σε κάποιες περιπτώσεις αυτό σημαίνει πως παραδίδονται σε διαφορετικούς διακομιστές και αντίγραφά τους αποθηκεύονται σε αυτούς. Καταβάλουμε ειλικρινή προσπάθεια περιορισμού πρόσβασης σε αυτές τις δημοσιεύσεις μόνο σε εγκεκριμένα άτομα, όμως διαφορετικοί διακομιστές μπορεί να μην το πετυχαίνουν αυτό. Για αυτό, είναι σημαντικό να ελέγχεις τους διακομιστές στους οποίους ανήκουν οι ακόλουθοί σου. Μπορείς να ενεργοποιήσεις την επιλογή χειροκίνητης αποδοχής ή απόρριψης των νέων ακόλουθών σου στις ρυθμίσεις. <em>Παρακαλούμε έχε υπόψιν σου πως οι διαχειριστές του διακομιστή και των αποδεκτών διακομιστών πιθανόν να κοιτάνε αυτά τα μηνύματα</em>, και πως οι τελικοί αποδέκτες μπορούν να αποθηκεύσουν την οθόνη, το μήνυμα ή να το αναμεταδώσουν με άλλους τρόπους. <em>Μην μοιράζεσαι επικύνδυνες πληροφορίες μέσω του Mastodon.</em></li>
+      <li><em>Διευθύνσεις IP και άλλα metadata</em>: Όταν συνδέεσαι, καταγράφουμε την διεύθυνση IP σου, καθώς και το όνομα της εφαρμογής του φυλλομετρητή σου (browser). Όλες οι τρέχουσες συνδέσεις στον λογαριασμό σου είναι διαθέσιμες προς ανασκόπηση στις ρυθμίσεις. Η πιο πρόσφατη διεύθυνση IP αποθηκεύεται για μέχρι 12 μήνες. Επίσης μπορεί να διατηρήσουμε ιστορικό του διακομιστή (log files) που να περιέχει την διεύθυνση ΙΡ κάθε κλήσης προς τον διακομιστή μας.</li>
       </ul>
 
       <hr class="spacer" />
@@ -920,9 +945,9 @@ el:
       <p>Οι πληροφορίες σου που συλλέγουμε μπορεί να χρησιμοποιηθούν με τους ακόλουθους τρόπους:</p>
 
       <ul>
-        <li>Για να παρέχουμε την βασική λειτουργικότητα του Mastodon. Μπορείς να αλληλεπιδράσεις με τις δημοσιεύσεις άλλων και να κάνεις τις δικές σου μόνο αφού συνδεθείς. Για παράδειγμα, μπορείς να ακολουθήσεις άλλους χρήστες για να βλέπεις τις συνολικές δημοσιεύσεις τους στη δική σου, προσωπική αρχική ροή.</li>
-        <li>Για να διευκολύνουμε τη διαχείριση της κοινότητας, για παράδειγμα συγκρίνοντας τη δική σου διεύθυνση IP με άλλες γνωστές διευθύνσεις για να καθορίσουμε περιπτώσεις αποφυγής αποκλεισμού ή άλλων παραβάσεων.</li>
-        <li>Η διεύθυνση email που δίνεις μπορεί να χρησιμοποιηθεί για να σου στείλουμε πληροφορίες, ειδοποιήσεις για αλληλεπιδράσεις άλλων χρηστών με τις δημοσιεύσεις σου και να ανταποκριθούμε σε ερωτήματά σου.</li>
+      <li>Για να παρέχουμε την βασική λειτουργικότητα του Mastodon. Μπορείς να αλληλεπιδράσεις με τις δημοσιεύσεις άλλων και να κάνεις τις δικές σου μόνο αφού συνδεθείς. Για παράδειγμα, μπορείς να ακολουθήσεις άλλους χρήστες για να βλέπεις τις συνολικές δημοσιεύσεις τους στη δική σου, προσωπική αρχική ροή.</li>
+      <li>Για να διευκολύνουμε τη διαχείριση της κοινότητας, για παράδειγμα συγκρίνοντας τη δική σου διεύθυνση IP με άλλες γνωστές διευθύνσεις για να καθορίσουμε περιπτώσεις αποφυγής αποκλεισμού ή άλλων παραβάσεων.</li>
+      <li>Η διεύθυνση email που δίνεις μπορεί να χρησιμοποιηθεί για να σου στείλουμε πληροφορίες, ειδοποιήσεις για αλληλεπιδράσεις άλλων χρηστών με τις δημοσιεύσεις σου και να ανταποκριθούμε σε ερωτήματά σου.</li>
       </ul>
 
       <hr class="spacer" />
@@ -938,8 +963,8 @@ el:
       <p>Καταβάλουμε κάθε δυνατή προσπάθεια να:</p>
 
       <ul>
-        <li>Διατηρήσουμε αρχεία ενεργειών των διακομιστών (servers) για όλα τα αιτήματα σε αυτόν τον διακομιστή, και αυτά τα αρχεία διατηρούνται για μέγιστο χρόνο 90 ημερών.</li>
-        <li>Διατηρήσουμε τις διευθύνσεις IP που σχετίζονται με εγγεγραμμένους χρήστες για μέγιστο χρόνο 12 μηνών.</li>
+      <li>Διατηρήσουμε αρχεία ενεργειών των διακομιστών (servers) για όλα τα αιτήματα σε αυτόν τον διακομιστή, και αυτά τα αρχεία διατηρούνται για μέγιστο χρόνο 90 ημερών.</li>
+      <li>Διατηρήσουμε τις διευθύνσεις IP που σχετίζονται με εγγεγραμμένους χρήστες για μέγιστο χρόνο 12 μηνών.</li>
       </ul>
 
       <p>Μπορείς να αιτηθείς και να αποθηκεύσεις τοπικά ένα αρχείο του περιεχομένου σου που περιλαμβάνει τις δημοσιεύσεις, τα συνημμένα πολυμέσα, την εικόνα προφίλ και την εικόνα επικεφαλίδας.</p>
diff --git a/config/locales/en.yml b/config/locales/en.yml
index e70dd1c6b..3a8a0c485 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -512,6 +512,12 @@ en:
       body: "%{reporter} has reported %{target}"
       body_remote: Someone from %{domain} has reported %{target}
       subject: New report for %{instance} (#%{id})
+  appearance:
+    advanced_web_interface: Advanced web interface
+    advanced_web_interface_hint: 'If you want to make use of your entire screen width, the advanced web interface allows you to configure many different columns to see as much information at the same time as you want: Home, notifications, federated timeline, any number of lists and hashtags.'
+    animations_and_accessibility: Animations and accessibility
+    confirmation_dialogs: Confirmation dialogs
+    sensitive_content: Sensitive content
   application_mailer:
     notification_preferences: Change e-mail preferences
     salutation: "%{name},"
@@ -792,10 +798,9 @@ en:
       too_few_options: must have more than one item
       too_many_options: can't contain more than %{max} items
   preferences:
-    languages: Languages
     other: Other
-    publishing: Publishing
-    web: Web
+    posting_defaults: Posting defaults
+    public_timelines: Public timelines
   relationships:
     activity: Account activity
     dormant: Dormant
diff --git a/config/locales/en_GB.yml b/config/locales/en_GB.yml
index d428a95c3..33ba16210 100644
--- a/config/locales/en_GB.yml
+++ b/config/locales/en_GB.yml
@@ -759,10 +759,7 @@ en_GB:
       too_few_options: must have more than one item
       too_many_options: can't contain more than %{max} items
   preferences:
-    languages: Languages
     other: Other
-    publishing: Publishing
-    web: Web
   relationships:
     activity: Account activity
     dormant: Dormant
diff --git a/config/locales/eo.yml b/config/locales/eo.yml
index b85cb1a49..c71b42fdd 100644
--- a/config/locales/eo.yml
+++ b/config/locales/eo.yml
@@ -1,7 +1,7 @@
 ---
 eo:
   about:
-    about_hashtag_html: Ĉi tiuj estas la publikaj mesaĝoj markitaj per <strong>#%{hashtag}</strong>. Vi povas interagi kun ili se vi havas konton ie ajn en la fediverse.
+    about_hashtag_html: Ĉi tiuj estas la publikaj fajfoj markitaj per <strong>#%{hashtag}</strong>. Vi povas interagi kun ili se vi havas konton ie ajn en la fediverse.
     about_mastodon_html: Mastodon estas socia reto bazita sur malfermitaj retaj protokoloj kaj sur libera malfermitkoda programo. Ĝi estas sencentra kiel retmesaĝoj.
     about_this: Pri
     active_count_after: aktiva
@@ -68,6 +68,7 @@ eo:
       admin: Administranto
       bot: Roboto
       moderator: Kontrolanto
+    unavailable: Profilo ne disponebla
     unfollow: Ne plu sekvi
   admin:
     account_actions:
@@ -80,6 +81,7 @@ eo:
       destroyed_msg: Kontrola noto sukcese detruita!
     accounts:
       approve: Aprobi
+      approve_all: Aprobi ĉiujn
       are_you_sure: Ĉu vi certas?
       avatar: Profilbildo
       by_domain: Domajno
@@ -132,6 +134,7 @@ eo:
       moderation_notes: Kontrolaj notoj
       most_recent_activity: Lasta ago
       most_recent_ip: Lasta IP
+      no_account_selected: Neniu konto estis ŝanĝita ĉar neniu estis selektita
       no_limits_imposed: Neniu limito trudita
       not_subscribed: Ne abonita
       outbox_url: Elira URL
@@ -144,6 +147,7 @@ eo:
       push_subscription_expires: Eksvalidiĝo de la abono al PuSH
       redownload: Aktualigi profilon
       reject: Malakcepti
+      reject_all: Malaprobi ĉiujn
       remove_avatar: Forigi profilbildon
       remove_header: Forigi kapan bildon
       resend_confirmation:
@@ -491,6 +495,10 @@ eo:
       body: "%{reporter} signalis %{target}"
       body_remote: Iu de %{domain} signalis %{target}
       subject: Nova signalo por %{instance} (#%{id})
+  appearance:
+    advanced_web_interface: Altnivela retpaĝa interfaco
+    confirmation_dialogs: Konfirmaj dialogoj
+    sensitive_content: Tikla enhavo
   application_mailer:
     notification_preferences: Ŝanĝi retmesaĝajn preferojn
     salutation: "%{name},"
@@ -655,8 +663,8 @@ eo:
     i_am_html: Mi estas %{username} en %{service}.
     identity: Identeco
     inactive: Malaktiva
-    publicize_checkbox: 'And toot this:'
-    publicize_toot: 'It is proven! I am %{username} on %{service}: %{url}'
+    publicize_checkbox: 'Kaj fajfi ĉi tio:'
+    publicize_toot: 'I estas pruvita! Mi estas %{username} sur %{service}: %{url}'
     status: Confirmo statuso
     view_proof: Vidi pruvo
   imports:
@@ -754,7 +762,6 @@ eo:
           quadrillion: Dd
           thousand: m
           trillion: Dn
-          unit: " "
   pagination:
     newer: Pli nova
     next: Sekva
@@ -772,23 +779,16 @@ eo:
       too_few_options: devas enhavi pli da unu propono
       too_many_options: ne povas enhavi pli da %{max} proponoj
   preferences:
-    languages: Lingvoj
     other: Aliaj aferoj
-    publishing: Publikado
-    web: Reto
   relationships:
-    activity: Account activity
-    dormant: Dormant
-    last_active: Last active
-    most_recent: Most recent
-    moved: Moved
-    mutual: Mutual
-    primary: Primary
-    relationship: Relationship
-    remove_selected_domains: Remove all followers from the selected domains
-    remove_selected_followers: Remove selected followers
-    remove_selected_follows: Unfollow selected users
-    status: Account status
+    dormant: Dormanta
+    last_active: Lasta aktiva
+    most_recent: Plej lasta
+    moved: Moviĝita
+    mutual: Reciproka
+    primary: Primara
+    relationship: Rilato
+    status: Statuso de la konto
   remote_follow:
     acct: Enmetu vian uzantnomo@domajno de kie vi volas agi
     missing_resource: La URL de plusendado ne estis trovita
@@ -856,6 +856,9 @@ eo:
     revoke_success: Seanco sukcese malvalidigita
     title: Seancoj
   settings:
+    account: Konto
+    account_settings: Agordoj de konto
+    appearance: Apero
     authorized_apps: Rajtigitaj aplikaĵoj
     back: Reveni al Mastodon
     delete: Konta forigo
@@ -863,12 +866,14 @@ eo:
     edit_profile: Redakti profilon
     export: Eksporti datumojn
     featured_tags: Elstarigitaj kradvortoj
-    identity_proofs: Identity proofs
+    identity_proofs: Pruvo de identeco
     import: Importi
+    import_and_export: Alporto kaj elporto
     migrate: Konta migrado
     notifications: Sciigoj
     preferences: Preferoj
-    relationships: Follows and followers
+    profile: Profilo
+    relationships: Sekvatoj kaj sekvantoj
     two_factor_authentication: Dufaktora aŭtentigo
   statuses:
     attached:
@@ -899,7 +904,7 @@ eo:
       vote: Voĉdoni
     show_more: Montri pli
     sign_in_to_participate: Ensaluti por partopreni en la konversacio
-    title: '%{name}: "%{quote}"'
+    title: "%{name}: “%{quote}”"
     visibilities:
       private: Montri nur al sekvantoj
       private_long: Montri nur al sekvantoj
diff --git a/config/locales/es.yml b/config/locales/es.yml
index 3a8e8dc0b..4a919f52b 100644
--- a/config/locales/es.yml
+++ b/config/locales/es.yml
@@ -5,24 +5,28 @@ es:
     about_mastodon_html: Mastodon es un servidor de red social <em>libre y de código abierto</em>. Una alternativa <em>descentralizada</em> a plataformas comerciales, que evita el riesgo de que una única compañía monopolice tu comunicación. Cualquiera puede ejecutar Mastodon y participar sin problemas en la <em>red social</em>.
     about_this: Acerca de esta instancia
     administered_by: 'Administrado por:'
-    api: API
     apps: Aplicaciones móviles
     contact: Contacto
     contact_missing: No especificado
-    contact_unavailable: N/A
+    discover_users: Descubrir usuarios
     documentation: Documentación
     extended_description_html: |
       <h3>Un buen lugar para las reglas</h3>
       <p>La descripción extendida no se ha colocado aún.</p>
+    federation_hint_html: Con una cuenta en %{instance} usted podrá seguir a las personas en cualquier servidor de Mastodon y más allá.
     generic_description: "%{domain} es un servidor en la red"
+    get_apps: Probar una aplicación móvil
     hosted_on: Mastodon hosteado en %{domain}
     learn_more: Aprende más
     privacy_policy: Política de privacidad
+    see_whats_happening: Ver lo que está pasando
+    server_stats: 'Datos del servidor:'
     source_code: Código fuente
     status_count_after:
       one: estado
       other: estados
     status_count_before: Qué han escrito
+    tagline: Seguir a amigos existentes y descubre nuevos
     terms: Condiciones de servicio
     user_count_after:
       one: usuario
@@ -39,7 +43,6 @@ es:
     joined: Se unió el %{date}
     last_active: última conexión
     link_verified_on: La propiedad de este vínculo fue verificada el %{date}
-    media: Media
     moved_html: "%{name} se ha trasladado a %{new_profile_link}:"
     network_hidden: Esta información no está disponible
     nothing_here: "¡No hay nada aquí!"
@@ -55,11 +58,12 @@ es:
     reserved_username: El nombre de usuario está reservado
     roles:
       admin: Administrador
-      bot: Bot
       moderator: Moderador
+    unavailable: Perfil no disponible
     unfollow: Dejar de seguir
   admin:
     account_actions:
+      action: Realizar acción
       title: Moderar %{acct}
     account_moderation_notes:
       create: Crear
@@ -67,8 +71,9 @@ es:
       delete: Borrar
       destroyed_msg: "¡Nota de moderación destruida con éxito!"
     accounts:
+      approve: Aprobar
+      approve_all: Aprobar todos
       are_you_sure: "¿Estás seguro?"
-      avatar: Avatar
       by_domain: Dominio
       change_email:
         changed_msg: "¡El correo electrónico se ha actualizado correctamente!"
@@ -99,10 +104,8 @@ es:
       header: Cabecera
       inbox_url: URL de la bandeja de entrada
       invited_by: Invitado por
-      ip: IP
       location:
         all: Todos
-        local: Local
         remote: Remoto
         title: Localización
       login_status: Estado del login
@@ -117,9 +120,11 @@ es:
       moderation_notes: Notas de moderación
       most_recent_activity: Actividad más reciente
       most_recent_ip: IP más reciente
+      no_account_selected: Ninguna cuenta se cambió como ninguna fue seleccionada
       no_limits_imposed: Sin límites impuestos
       not_subscribed: No se está suscrito
       outbox_url: URL de bandeja de salida
+      pending: Revisión pendiente
       perform_full_suspension: Suspender
       profile_url: URL del perfil
       promote: Promocionar
@@ -127,6 +132,8 @@ es:
       public: Público
       push_subscription_expires: Expiración de la suscripción PuSH
       redownload: Refrescar avatar
+      reject: Rechazar
+      reject_all: Rechazar todos
       remove_avatar: Eliminar el avatar
       resend_confirmation:
         already_confirmed: Este usuario ya está confirmado
@@ -158,12 +165,14 @@ es:
       undo_suspension: Des-suspender
       unsubscribe: Desuscribir
       username: Nombre de usuario
+      warn: Adevertir
       web: Web
     action_logs:
       actions:
         assigned_to_self_report: "%{name} se ha asignado la denuncia %{target} a sí mismo"
         change_email_user: "%{name} ha cambiado la dirección de correo del usuario %{target}"
         confirm_user: "%{name} confirmó la dirección de correo del usuario %{target}"
+        create_account_warning: "%{name} envió una advertencia a %{target}"
         create_custom_emoji: "%{name} subió un nuevo emoji %{target}"
         create_domain_block: "%{name} bloqueó el dominio %{target}"
         create_email_domain_block: "%{name} puso en lista negra el dominio de correos %{target}"
@@ -202,7 +211,6 @@ es:
       destroyed_msg: "¡Emojo destruido con éxito!"
       disable: Deshabilitar
       disabled_msg: Se deshabilitó con éxito ese emoji
-      emoji: Emoji
       enable: Habilitar
       enabled_msg: Se habilitó con éxito ese emoji
       image_hint: PNG de hasta 50KB
@@ -222,6 +230,7 @@ es:
       config: Configuración
       feature_deletions: Borrados de cuenta
       feature_invites: Enlaces de invitación
+      feature_profile_directory: Directorio de perfil
       feature_registrations: Registros
       feature_relay: Relés de federación
       features: Características
@@ -243,6 +252,7 @@ es:
       created_msg: El bloque de dominio está siendo procesado
       destroyed_msg: El bloque de dominio se deshizo
       domain: Dominio
+      existing_domain_block_html: Ya ha impuesto límites más estrictos a %{name}, necesita <a href="%{unblock_url}">desbloquearlo primero</a>.
       new:
         create: Crear bloque
         hint: El bloque de dominio no prevendrá la creación de entradas de cuenta en la base de datos, pero aplicará retroactiva y automáticamente métodos de moderación específica en dichas cuentas.
@@ -413,17 +423,21 @@ es:
       confirmed: Confirmado
       expires_in: Expira en
       last_delivery: Última entrega
-      title: WebSub
       topic: Tópico
     title: Administración
+    warning_presets:
+      add_new: Añadir nuevo
+      delete: Borrar
+      edit: Editar
   admin_mailer:
+    new_pending_account:
+      body: Los detalles de la nueva cuenta están abajos. Puedes aprobar o rechazar esta aplicación.
     new_report:
       body: "%{reporter} ha reportado a %{target}"
       body_remote: Alguien de %{domain} a reportado a %{target}
       subject: Nuevo reporte para la %{instance} (#%{id})
   application_mailer:
     notification_preferences: Cambiar preferencias de correo electrónico
-    salutation: "%{name},"
     settings: 'Cambiar preferencias de correo: %{link}'
     view: 'Vista:'
     view_profile: Ver perfil
@@ -438,6 +452,7 @@ es:
     your_token: Tu token de acceso
   auth:
     change_password: Contraseña
+    checkbox_agreement_html: Acepto <a href="%{rules_path}" target="_blank">las reglas del servidor</a> y <a href="%{terms_path}" target="_blank">términos de servicio</a>
     confirm_email: Confirmar email
     delete_account: Borrar cuenta
     delete_account_html: Si desea eliminar su cuenta, puede <a href="%{path}">proceder aquí</a>. Será pedido de una confirmación.
@@ -449,10 +464,8 @@ es:
     migrate_account: Mudarse a otra cuenta
     migrate_account_html: Si deseas redireccionar esta cuenta a otra distinta, puedes <a href="%{path}">configurarlo aquí</a>.
     or_log_in_with: O inicia sesión con
-    providers:
-      cas: CAS
-      saml: SAML
     register: Registrarse
+    registration_closed: "%{instance} no está aceptando nuevos miembros"
     resend_confirmation: Volver a enviar el correo de confirmación
     reset_password: Restablecer contraseña
     security: Cambiar contraseña
@@ -470,18 +483,10 @@ es:
     title: Seguir a %{acct}
   datetime:
     distance_in_words:
-      about_x_hours: "%{count}h"
       about_x_months: "%{count}m"
-      about_x_years: "%{count}y"
-      almost_x_years: "%{count}y"
       half_a_minute: Justo ahora
-      less_than_x_minutes: "%{count}m"
       less_than_x_seconds: Justo ahora
-      over_x_years: "%{count}y"
-      x_days: "%{count}d"
-      x_minutes: "%{count}m"
       x_months: "%{count}m"
-      x_seconds: "%{count}s"
   deletes:
     bad_password_msg: "¡Buen intento, hackers! Contraseña incorrecta"
     confirm_password: Ingresa tu contraseña actual para demostrar tu identidad
@@ -490,6 +495,12 @@ es:
     success_msg: Tu cuenta se eliminó con éxito
     warning_html: Se garantiza únicamente la eliminación del contenido de esta instancia. El contenido que se haya compartido extensamente dejará sus huellas. Los servidores fuera de línea y los que se hayan desuscrito de tus actualizaciones ya no actualizarán sus bases de datos.
     warning_title: Disponibilidad diseminada del contenido
+  directories:
+    explore_mastodon: Explorar %{title}
+    how_to_enable: Usted no está registrado por el directorio. Puede registrar por abajo. ¡Utilice hashtags en su bio para aparecer bajo hashtags específicos!
+    people:
+      one: "%{count} persona"
+      other: "%{count} personas"
   errors:
     '403': No tienes permiso para acceder a esta página.
     '404': La página que estabas buscando no existe.
@@ -502,6 +513,9 @@ es:
       content: Lo sentimos, algo ha funcionado mal por nuestra parte.
       title: Esta página no es correcta
     noscript_html: Para usar la aplicación web de Mastodon, por favor activa Javascript. Alternativamente, prueba alguna de las <a href="%{apps_path}">aplicaciones nativas</a> para Mastodon para tu plataforma.
+  existing_username_validator:
+    not_found: no pudo encontrar un usuario local con ese nombre de usuario
+    not_found_multiple: no pudo encontrar %{usernames}
   exports:
     archive_takeout:
       date: Fecha
@@ -511,10 +525,13 @@ es:
       request: Solicitar tu archivo
       size: Tamaño
     blocks: Personas que has bloqueado
-    csv: CSV
     follows: Personas que sigues
     mutes: Tienes en silencio
     storage: Almacenamiento
+  featured_tags:
+    add_new: Añadir nuevo
+    errors:
+      limit: Ya has alcanzado la cantidad máxima de hashtags
   filters:
     contexts:
       home: Timeline propio
@@ -542,6 +559,13 @@ es:
     validation_errors:
       one: "¡Algo no está bien! Por favor, revisa el error"
       other: "¡Algo no está bien! Por favor, revise %{count} errores más abajo"
+  identity_proofs:
+    authorize_connection_prompt: "¿Autorizar esta conexión criptográfica?"
+    errors:
+      failed: La conexión criptográfica falló. Por favor, inténtalo de nuevo desde %{provider}.
+      keybase:
+        invalid_token: Los tokens de Keybase son hashes de firmas y deben tener 66 caracteres hex
+        verification_failed: Keybase no reconoce este token como una firma del usuario de Keybase %{kb_username}. Por favor, inténtelo de nuevo desde Keybase.
   imports:
     preface: Puedes importar ciertos datos, como todas las personas que estás siguiendo o bloqueando en tu cuenta en esta instancia, desde archivos exportados de otra instancia.
     success: Sus datos se han cargado correctamente y serán procesados en brevedad
@@ -621,28 +645,13 @@ es:
       body: "%{name} ha retooteado tu estado:"
       subject: "%{name} ha retooteado tu estado"
       title: Nueva difusión
-  number:
-    human:
-      decimal_units:
-        format: "%n%u"
-        units:
-          billion: B
-          million: M
-          quadrillion: Q
-          thousand: K
-          trillion: T
-          unit: " "
   pagination:
     newer: Más nuevo
     next: Próximo
     older: Más antiguo
     prev: Anterior
-    truncate: "&hellip;"
   preferences:
-    languages: Idiomas
     other: Otros
-    publishing: Publicación
-    web: Web
   remote_follow:
     acct: Ingesa tu usuario@dominio desde el que quieres seguir
     missing_resource: No se pudo encontrar la URL de redirección requerida para tu cuenta
@@ -650,47 +659,18 @@ es:
     proceed: Proceder a seguir
     prompt: 'Vas a seguir a:'
   remote_unfollow:
-    error: Error
     title: Título
     unfollowed: Ha dejado de seguirse
   sessions:
     activity: Última actividad
     browser: Navegador
     browsers:
-      alipay: Alipay
-      blackberry: Blackberry
-      chrome: Chrome
-      edge: Microsoft Edge
-      electron: Electron
-      firefox: Firefox
       generic: Desconocido
-      ie: Internet Explorer
-      micro_messenger: MicroMessenger
-      nokia: Nokia S40 Ovi Browser
-      opera: Opera
-      otter: Otter
-      phantom_js: PhantomJS
-      qq: QQ Browser
-      safari: Safari
-      uc_browser: UCBrowser
-      weibo: Weibo
     current_session: Sesión actual
     description: "%{browser} en %{platform}"
     explanation: Estos son los navegadores web conectados actualmente en tu cuenta de Mastodon.
-    ip: IP
     platforms:
-      adobe_air: Adobe Air
-      android: Android
-      blackberry: Blackberry
-      chrome_os: ChromeOS
-      firefox_os: Firefox OS
-      ios: iOS
-      linux: Linux
-      mac: Mac
       other: Desconocido
-      windows: Windows
-      windows_mobile: Windows Mobile
-      windows_phone: Windows Phone
     revoke: Revocar
     revoke_success: Sesión revocada exitosamente
     title: Sesiones
@@ -730,7 +710,6 @@ es:
       reblog: Un boost no puede fijarse
     show_more: Mostrar más
     sign_in_to_participate: Regístrate para participar en la conversación
-    title: '%{name}: "%{quote}"'
     visibilities:
       private: Sólo mostrar a seguidores
       private_long: Solo mostrar a tus seguidores
@@ -751,7 +730,6 @@ es:
   time:
     formats:
       default: "%d de %b del %Y, %H:%M"
-      month: "%b %Y"
   two_factor_authentication:
     code_hint: Ingresa el código generado por tu aplicación de autenticación para confirmar
     description_html: Si habilitas la <strong>autenticación de dos factores</strong>, se requerirá estar en posesión de su teléfono, lo que generará tokens para que usted pueda iniciar sesión.
@@ -788,7 +766,6 @@ es:
       tip_following: Sigues a tus administradores de servidor por defecto. Para encontrar más gente interesante, revisa las lineas de tiempo local y federada.
       tip_local_timeline: La linea de tiempo local is una vista de la gente en %{instance}. Estos son tus vecinos inmediatos!
       tip_mobile_webapp: Si el navegador de tu dispositivo móvil ofrece agregar Mastodon a tu página de inicio, puedes recibir notificaciones. Actúa como una aplicación nativa en muchas formas!
-      tips: Tips
       title: Te damos la bienvenida a bordo, %{name}!
   users:
     follow_limit_reached: No puedes seguir a más de %{limit} personas
diff --git a/config/locales/eu.yml b/config/locales/eu.yml
index 5ae664cad..d83deb214 100644
--- a/config/locales/eu.yml
+++ b/config/locales/eu.yml
@@ -4,25 +4,36 @@ eu:
     about_hashtag_html: Hauek  <strong>#%{hashtag}</strong> traola duten toot publikoak dira. Fedibertsoko edozein kontu baduzu harremanetan jarri zaitezke.
     about_mastodon_html: Mastodon web protokolo ireki eta libreak darabiltzan gizarte sare bat da. E-mail sarea bezala deszentralizatua da.
     about_this: Honi buruz
+    active_count_after: aktiboa
+    active_footnote: Hilabeteko erabiltzaile aktiboak (HEA)
     administered_by: 'Administratzailea(k):'
     api: APIa
     apps: Aplikazio mugikorrak
+    apps_platforms: Erabili Mastodon, iOS, Android eta beste plataformetatik
+    browse_directory: Arakatu profilen direktorio bat eta iragazi interesen arabera
+    browse_public_posts: Arakatu Mastodoneko mezu publikoen zuzeneko jario bat
     contact: Kontaktua
     contact_missing: Ezarri gabe
     contact_unavailable: E/E
+    discover_users: Aurkitu erabiltzaileak
     documentation: Dokumentazioa
     extended_description_html: |
       <h3>Arauentzako toki egoki bat</h3>
       <p>Azalpen luzea ez da ezarri oraindik.</p>
+    federation_hint_html: "%{instance} instantzian kontu bat izanda edozein Mastodon zerbitzariko jendea jarraitu ahal izango duzu, eta harago ere."
     generic_description: "%{domain} sareko zerbitzari bat da"
+    get_apps: Probatu mugikorrerako aplikazio bat
     hosted_on: Mastodon %{domain} domeinuan ostatatua
     learn_more: Ikasi gehiago
     privacy_policy: Pribatutasun politika
+    see_whats_happening: Ikusi zer gertatzen ari den
+    server_stats: 'Zerbitzariaren estatistikak:'
     source_code: Iturburu kodea
     status_count_after:
       one: mezu
       other: mezu
     status_count_before: Hauek
+    tagline: Jarraitu lagunak eta egin berriak
     terms: Erabilera baldintzak
     user_count_after:
       one: erabiltzaile
@@ -49,7 +60,7 @@ eu:
       following: Onetsi nahi duzun pertsona aurretik jarraitu behar duzu
     posts:
       one: Toot
-      other: Toot
+      other: Tootak
     posts_tab_heading: Tootak
     posts_with_replies: Toot eta erantzunak
     reserved_username: Erabiltzaile-izena erreserbatuta dago
@@ -57,6 +68,7 @@ eu:
       admin: Administratzailea
       bot: Bot-a
       moderator: Moderatzailea
+    unavailable: Profila ez dago eskuragarri
     unfollow: Utzi jarraitzeari
   admin:
     account_actions:
@@ -68,6 +80,8 @@ eu:
       delete: Ezabatu
       destroyed_msg: Moderazio ohara ongi suntsitu da!
     accounts:
+      approve: Onartu
+      approve_all: Onartu denak
       are_you_sure: Ziur zaude?
       avatar: Abatarra
       by_domain: Domeinua
@@ -100,7 +114,7 @@ eu:
       header: Goiburua
       inbox_url: Sarrera ontziaren URL-a
       invited_by: 'Honek gonbidatua:'
-      ip: IP
+      ip: IP-a
       joined: Elkartuta
       location:
         all: Denak
@@ -113,15 +127,18 @@ eu:
       moderation:
         active: Aktiboa
         all: Denak
+        pending: Zain
         silenced: Isilarazita
         suspended: Kanporatua
         title: Moderazioa
       moderation_notes: Moderazio oharrak
       most_recent_activity: Azken jarduera
       most_recent_ip: Azken IP-a
+      no_account_selected: Ez da konturik aldatu ez delako bata bera hautatu
       no_limits_imposed: Ez da mugarik ezarri
       not_subscribed: Harpidetu gabe
       outbox_url: Irteera ontziaren URL-a
+      pending: Berrikusketa egiteke
       perform_full_suspension: Kanporatu
       profile_url: Profilaren URL-a
       promote: Sustatu
@@ -129,6 +146,8 @@ eu:
       public: Publikoa
       push_subscription_expires: Push harpidetzaren iraugitzea
       redownload: Freskatu profila
+      reject: Ukatu
+      reject_all: Ukatu denak
       remove_avatar: Kendu abatarra
       remove_header: Kendu goiburua
       resend_confirmation:
@@ -155,6 +174,7 @@ eu:
       statuses: Mezuak
       subscribe: Harpidetu
       suspended: Kanporatuta
+      time_in_queue: Kolan zain %{time}
       title: Kontuak
       unconfirmed_email: Baieztatu gabeko e-mail helbidea
       undo_silenced: Utzi isilarazteari
@@ -162,7 +182,7 @@ eu:
       unsubscribe: Kendu harpidetza
       username: Erabiltzaile-izena
       warn: Abisatu
-      web: Web
+      web: Weba
     action_logs:
       actions:
         assigned_to_self_report: "%{name}(e)k %{target} salaketa bere buruari esleitu dio"
@@ -207,7 +227,7 @@ eu:
       destroyed_msg: Emoji-a ongi suntsitu da!
       disable: Desgaitu
       disabled_msg: Emoji-a ongi desgaitu da
-      emoji: Emoji
+      emoji: Emojia
       enable: Gaitu
       enabled_msg: Emoji hori ongi gaitu da
       image_hint: PNG gehienez 50KB
@@ -230,13 +250,14 @@ eu:
       feature_profile_directory: Profil-direktorioa
       feature_registrations: Izen emateak
       feature_relay: Federazio haria
+      feature_timeline_preview: Denbora-lerroaren aurrebista
       features: Ezaugarriak
       hidden_service: Federazioa ezkutuko zerbitzuekin
       open_reports: salaketa irekiak
       recent_users: Azken erabiltzaileak
       search: Testu osoko bilaketa
       single_user_mode: Erabiltzaile bakarreko modua
-      software: Software
+      software: Softwarea
       space: Espazio erabilera
       title: Kontrol panela
       total_users: erabiltzaile guztira
@@ -249,6 +270,7 @@ eu:
       created_msg: Domeinuaren blokeoa orain prozesatzen ari da
       destroyed_msg: Domeinuaren blokeoa desegin da
       domain: Domeinua
+      existing_domain_block_html: '%{name} domeinuan muga zorrotzagoak ezarri dituzu jada, aurretik <a href="%{unblock_url}">desblokeatu</a> beharko duzu.'
       new:
         create: Sortu blokeoa
         hint: Domeinuaren blokeoak ez du eragotziko kontuen sarrerak sortzea datu-basean, baina automatikoki ezarriko zaizkie moderazio metodo bereziak iraganeko mezuetan ere.
@@ -291,6 +313,7 @@ eu:
       back_to_account: Itzuli kontura
       title: "%{acct} kontuaren jarraitzaileak"
     instances:
+      by_domain: Domeinua
       delivery_available: Bidalketa eskuragarri dago
       known_accounts:
         one: Kontu ezagun %{count}
@@ -313,6 +336,8 @@ eu:
         expired: Iraungitua
         title: Iragazi
       title: Gonbidapenak
+    pending_accounts:
+      title: Zain dauden kontuak (%{count})
     relays:
       add_new: Gehitu hari berria
       delete: Ezabatu
@@ -399,6 +424,12 @@ eu:
         min_invite_role:
           disabled: Inor ez
           title: Baimendu hauen gobidapenak
+      registrations_mode:
+        modes:
+          approved: Izena emateko onarpena behar da
+          none: Ezin du inork izena eman
+          open: Edonork eman dezake izena
+        title: Erregistratzeko modua
       show_known_fediverse_at_about_page:
         desc_html: Txandakatzean, fedibertsu ezagun osoko toot-ak bistaratuko ditu aurrebistan. Bestela, toot lokalak besterik ez ditu erakutsiko.
         title: Erakutsi fedibertsu ezagun osoko denbora-lerroa aurrebistan
@@ -461,10 +492,19 @@ eu:
       edit_preset: Editatu abisu aurre-ezarpena
       title: Kudeatu abisu aurre-ezarpenak
   admin_mailer:
+    new_pending_account:
+      body: Kontu berriaren xehetasunak azpian daude. Eskaera hau onartu edo ukatu dezakezu.
+      subject: Kontu berria berrikusteko %{instance} instantzian (%{username})
     new_report:
       body: "%{reporter}(e)k %{target} salatu du"
       body_remote: "%{domain} domeinuko norbaitek %{target} salatu du"
       subject: Salaketa berria %{instance} instantzian (#%{id})
+  appearance:
+    advanced_web_interface: Web interfaze aurreratua
+    advanced_web_interface_hint: 'Pantaila bere zabalera osoan erabili nahi baduzu, web interfaze aurreratuak hainbat zutabe desberdin konfiguratzea ahalbidetzen dizu, aldi berean nahi beste informazio ikusteko: Hasiera, jakinarazpenak, federatutako denbora-lerroa, edo nahi beste zerrenda eta traola.'
+    animations_and_accessibility: Animazioak eta irisgarritasuna
+    confirmation_dialogs: Berrespen dialogoak
+    sensitive_content: Eduki hunkigarria
   application_mailer:
     notification_preferences: Aldatu e-mail hobespenak
     salutation: "%{name},"
@@ -481,7 +521,9 @@ eu:
     warning: Kontuz datu hauekin, ez partekatu inoiz inorekin!
     your_token: Zure sarbide token-a
   auth:
+    apply_for_account: Eskatu gonbidapen bat
     change_password: Pasahitza
+    checkbox_agreement_html: <a href="%{rules_path}" target="_blank">Zerbitzariaren arauak</a> eta <a href="%{terms_path}" target="_blank">erabilera baldintzak</a> onartzen ditut
     confirm_email: Berretsi e-mail helbidea
     delete_account: Ezabatu kontua
     delete_account_html: Kontua ezabatu nahi baduzu, <a href="%{path}">jarraitu hemen</a>. Berrestea eskatuko zaizu.
@@ -497,10 +539,12 @@ eu:
       cas: CAS
       saml: SAML
     register: Eman izena
+    registration_closed: "%{instance} instantziak ez ditu kide berriak onartzen"
     resend_confirmation: Birbidali berresteko argibideak
     reset_password: Berrezarri pasahitza
     security: Segurtasuna
     set_new_password: Ezarri pasahitza berria
+    trouble_logging_in: Arazoak saioa hasteko?
   authorize_follow:
     already_following: Kontu hau aurretik jarraitzen duzu
     error: Zoritxarrez, urruneko kontua bilatzean errore bat gertatu da
@@ -514,7 +558,7 @@ eu:
     title: Jarraitu %{acct}
   datetime:
     distance_in_words:
-      about_x_hours: "%{count}h"
+      about_x_hours: "%{count}o"
       about_x_months: "%{count} hilabete"
       about_x_years: "%{count} urte"
       almost_x_years: "%{count} urte"
@@ -556,6 +600,9 @@ eu:
       content: Sentitzen dugu, zerbait okerra gertatu da gure aldean.
       title: Orri hau ez da zuzena
     noscript_html: Mastodon web aplikazioa erabiltzeko, gaitu JavaScript. Bestela, probatu Mastodon plataformarako <a href="%{apps_path}">aplikazio natibo</a>ren bat.
+  existing_username_validator:
+    not_found: ezin izan da izen hori duen kide lokalik aurkitu
+    not_found_multiple: ezin izan dira aurkitu %{usernames}
   exports:
     archive_takeout:
       date: Data
@@ -596,12 +643,34 @@ eu:
     more: Gehiago…
     resources: Baliabideak
   generic:
+    all: Denak
     changes_saved_msg: Aldaketak ongi gorde dira!
     copy: Kopiatu
+    order_by: Ordenatze-irizpidea
     save_changes: Gorde aldaketak
     validation_errors:
       one: Zerbait ez dabil ongi! Egiaztatu beheko errorea mesedez
       other: Zerbait ez dabil ongi! Egiaztatu beheko %{count}  erroreak mesedez
+  html_validator:
+    invalid_markup: 'HTML markaketa baliogabea du: %{error}'
+  identity_proofs:
+    active: Aktiboa
+    authorize: Bai, baimendu
+    authorize_connection_prompt: Baimendu zifratutako konexio hau?
+    errors:
+      failed: Zifratutako konexioak huts egin du. Saiatu berriro %{provider} hornitzailetik.
+      keybase:
+        invalid_token: Keybase-ko token-ak sinaduren hash-ak dira eta 66 hex karakterekoak izan beha dira
+        verification_failed: Keybase-k ez du token hau Keybase-ko %{kb_username} erabiltzailearen sinaduratzat onartzen. Saiatu berriro Keybase-tik.
+      wrong_user: Ezin izan da %{proving} erabiltzailearentzat froga sortu %{current} gisa saioa hasita. Hasi saioa %{proving} erabilita eta saiatu berriro.
+    explanation_html: Hemen modu zifratuan konektatu ditzakezu zure beste identitateak, esaterako Keybase profila. Honek beste jendeak zuri zifratutako mezuak bidaltzea ahalbidetzen du, eta zuk beraiei bidalitako edukia fidagarritzat jotzea.
+    i_am_html: "%{username} erabiltzailea naiz %{service} zerbitzuan."
+    identity: Identitatea
+    inactive: Ez aktiboa
+    publicize_checkbox: 'Eta bidali toot hau:'
+    publicize_toot: 'Frogatua dago! %{username} erabiltzailea naiz %{service} zerbitzuan: %{url}'
+    status: Egiaztatze egoera
+    view_proof: Ikusi froga
   imports:
     modes:
       merge: Bateratu
@@ -697,18 +766,39 @@ eu:
           quadrillion: Q
           thousand: K
           trillion: T
-          unit: "."
   pagination:
     newer: Berriagoa
     next: Hurrengoa
     older: Zaharragoa
     prev: Aurrekoa
     truncate: "&hellip;"
+  polls:
+    errors:
+      already_voted: Inkesta honetan dagoeneko bozkatu duzu
+      duplicate_options: bikoiztutako elementuak ditu
+      duration_too_long: etorkizunean urrunegi dago
+      duration_too_short: goizegi da
+      expired: Inkesta amaitu da jada
+      over_character_limit: bakoitzak gehienez %{max} karaktere izan ditzake
+      too_few_options: elementu bat baino gehiago izan behar du
+      too_many_options: ezin ditu %{max} elementu baino gehiago izan
   preferences:
-    languages: Hizkuntzak
     other: Beste bat
-    publishing: Argitaratzea
-    web: Web
+    posting_defaults: Bidalketarako lehenetsitakoak
+    public_timelines: Denbora-lerro publikoak
+  relationships:
+    activity: Kontuaren aktibitatea
+    dormant: Ez aktiboa
+    last_active: Azkenekoz aktiboa
+    most_recent: Azkenak
+    moved: Lekuz aldatua
+    mutual: Alde bikoa
+    primary: Primarioa
+    relationship: Erlazioa
+    remove_selected_domains: Kendu hautatutako domeinuetako jarraitzaile guztiak
+    remove_selected_followers: Kendu hautatutako jarraitzaileak
+    remove_selected_follows: Utzi hautatutako erabiltzaileak jarraitzeari
+    status: Kontuaren egoera
   remote_follow:
     acct: Sartu jarraitzeko erabili nahi duzun erabiltzaile@domeinua
     missing_resource: Ezin izan da zure konturako behar den birbideratze URL-a
@@ -758,7 +848,7 @@ eu:
     current_session: Uneko saioa
     description: "%{browser} - %{platform}"
     explanation: Zure Mastodon kontuan saioa hasita duten nabigatzaileak daude.
-    ip: IP
+    ip: IP-a
     platforms:
       adobe_air: Adobe Air
       android: Android
@@ -776,6 +866,9 @@ eu:
     revoke_success: Saioa ongi indargabetu da
     title: Saioak
   settings:
+    account: Kontua
+    account_settings: Kontuaren ezarpenak
+    appearance: Itxura
     authorized_apps: Baimendutako aplikazioak
     back: Itzuli Mastodon-era
     delete: Kontuaren ezabaketa
@@ -783,10 +876,14 @@ eu:
     edit_profile: Aldatu profila
     export: Datuen esportazioa
     featured_tags: Nabarmendutako traolak
+    identity_proofs: Identitate frogak
     import: Inportazioa
+    import_and_export: Inportatu eta esportatu
     migrate: Kontuaren migrazioa
     notifications: Jakinarazpenak
     preferences: Hobespenak
+    profile: Profila
+    relationships: Jarraitutakoak eta jarraitzaileak
     two_factor_authentication: Bi faktoreetako autentifikazioa
   statuses:
     attached:
@@ -810,6 +907,11 @@ eu:
       ownership: Ezin duzu beste norbaiten toot bat finkatu
       private: Ezin dira publikoak ez diren toot-ak finkatu
       reblog: Bultzada bat ezin da finkatu
+    poll:
+      total_votes:
+        one: Boto %{count}
+        other: "%{count} boto"
+      vote: Bozkatu
     show_more: Erakutsi gehiago
     sign_in_to_participate: Eman izena elkarrizketan parte hartzeko
     title: '%{name}: "%{quote}"'
@@ -830,10 +932,10 @@ eu:
       <h3 id="collect">Zer informazio biltzen dugu?</h3>
 
       <ul>
-        <li><em>Kontuaren oinarrizko informazioa</em>: Zerbitzari honetan izena ematen baduzu, erabiltzaile-izena, e-mail helbidea eta pasahitza sartzea galdetu dakizuke.  Profilean bestelako informazioa sartu dezakezu esaterako pantaila.-izena eta biografia, eta profileko eta goiburuko irudiak igo ditzakezu. Erabiltzaile-izena, pantaiula-izena, biografia, profileko irudia eta goiburuko irudia beti dira publikoak.</li>
-        <li><em>Mezuak, jarraitzea eta beste informazioa</em>: Jarraitzen duzun jendearen zerrenda publikoa da, baita zure jarraitzaileena.  Mezu bat bidaltzean, data eta ordua eta mezua bidaltzeko erabilitako aplikazioa gordetzen dira. Mezuen eranskinak izan ditzakete, esaterako irudiak eta bideoak. Mezu publikoak eta zerrendatu gabeak publikoki ikusi daitezke. Zure profilean mezu bat sustatzen duzunean, informazio hori ere publikoki eskuragarri dago. Zure mezuak zure jarraitzaileei bidaltzen zaie, kasu batzuetan honek esan nahi du beste zerbitzari batzuetara bidaltzen dela eta han kopiak gordetzen dituzte. Mezuak ezabatzen dituzunean, hau zure jarraitzaileei bidaltzen zaie ere, beste mezu batzuk zabaltzea edo gogoko izatea beti da informazio publikoa.</li>
-        <li><em>Mezu zuzenak eta soilik jarraitzaileentzako mezuak</em>: Mezu guztiak zerbitzarian gorde eta prozesatzen dira. Soilik jarraitzaileentzako diren mezuak  zure jarraitzaileei bidaltzen zaie eta bertan aipatutako erabiltzaileei, mezu zuzenak soilik aipatutako erabiltzaileei bidaltzen zaie. Honek esan nahi du kasu batzuetan beste zerbitzari batzuetara bidaltzen dela mezua eta han kopiak gordetzen direla. Borondate oneko ahalegin bat egiten dugu mezuok soilik baimena duten pertsonek ikus ditzaten, baina beste zerbitzariek agian ez. Hortaz,  zure jarraitzaileen zerbitzaria zein den egiaztatzea garrantzitsua da.  Jarraitzaileak eskuz onartu eta ukatzeko aukera aldatu dezakezu. <em>Kontuan izan zerbitzariaren operadoreak eta mezua jasotzen duen edozein zerbitzarik operadoreek mezuok ikus ditzaketela</em> eta edonork atera dezakeela pantaila argazki bat, kopiatu edo beste modu batean partekatu.<em>Ez partekatu informazio arriskutsua Mastodon bidez.</em></li>
-        <li><em>IP-ak eta bestelako meta-datuak</em>: Saioa hasten duzunean, zure IP helbidea gordetzen dugu, eta erabiltzen duzun nabigatzaile edo aplikazioa. Hasitako saio guztiak zuk ikusteko mopduan daude eta ezarpenetan indargabetu ditzakezu. Erabilitako azken IP helbidea 12 hilabetez gordetzen da. Gure zerbitzariak jasotako eskari guztiak eta IP-a duten zerbitzariko egunkariak gorde genitzake.</li>
+      <li><em>Kontuaren oinarrizko informazioa</em>: Zerbitzari honetan izena ematen baduzu, erabiltzaile-izena, e-mail helbidea eta pasahitza sartzea galdetu dakizuke.  Profilean bestelako informazioa sartu dezakezu esaterako pantaila.-izena eta biografia, eta profileko eta goiburuko irudiak igo ditzakezu. Erabiltzaile-izena, pantaiula-izena, biografia, profileko irudia eta goiburuko irudia beti dira publikoak.</li>
+      <li><em>Mezuak, jarraitzea eta beste informazioa</em>: Jarraitzen duzun jendearen zerrenda publikoa da, baita zure jarraitzaileena.  Mezu bat bidaltzean, data eta ordua eta mezua bidaltzeko erabilitako aplikazioa gordetzen dira. Mezuen eranskinak izan ditzakete, esaterako irudiak eta bideoak. Mezu publikoak eta zerrendatu gabeak publikoki ikusi daitezke. Zure profilean mezu bat sustatzen duzunean, informazio hori ere publikoki eskuragarri dago. Zure mezuak zure jarraitzaileei bidaltzen zaie, kasu batzuetan honek esan nahi du beste zerbitzari batzuetara bidaltzen dela eta han kopiak gordetzen dituzte. Mezuak ezabatzen dituzunean, hau zure jarraitzaileei bidaltzen zaie ere, beste mezu batzuk zabaltzea edo gogoko izatea beti da informazio publikoa.</li>
+      <li><em>Mezu zuzenak eta soilik jarraitzaileentzako mezuak</em>: Mezu guztiak zerbitzarian gorde eta prozesatzen dira. Soilik jarraitzaileentzako diren mezuak  zure jarraitzaileei bidaltzen zaie eta bertan aipatutako erabiltzaileei, mezu zuzenak soilik aipatutako erabiltzaileei bidaltzen zaie. Honek esan nahi du kasu batzuetan beste zerbitzari batzuetara bidaltzen dela mezua eta han kopiak gordetzen direla. Borondate oneko ahalegin bat egiten dugu mezuok soilik baimena duten pertsonek ikus ditzaten, baina beste zerbitzariek agian ez. Hortaz,  zure jarraitzaileen zerbitzaria zein den egiaztatzea garrantzitsua da.  Jarraitzaileak eskuz onartu eta ukatzeko aukera aldatu dezakezu. <em>Kontuan izan zerbitzariaren operadoreak eta mezua jasotzen duen edozein zerbitzarik operadoreek mezuok ikus ditzaketela</em> eta edonork atera dezakeela pantaila argazki bat, kopiatu edo beste modu batean partekatu.<em>Ez partekatu informazio arriskutsua Mastodon bidez.</em></li>
+      <li><em>IP-ak eta bestelako meta-datuak</em>: Saioa hasten duzunean, zure IP helbidea gordetzen dugu, eta erabiltzen duzun nabigatzaile edo aplikazioa. Hasitako saio guztiak zuk ikusteko mopduan daude eta ezarpenetan indargabetu ditzakezu. Erabilitako azken IP helbidea 12 hilabetez gordetzen da. Gure zerbitzariak jasotako eskari guztiak eta IP-a duten zerbitzariko egunkariak gorde genitzake.</li>
       </ul>
 
       <hr class="spacer" />
@@ -843,9 +945,9 @@ eu:
       <p>Biltzen dugun informazio guztia honela erabiltzen da:</p>
 
       <ul>
-        <li>Mastodon zerbitzuko funtzio nagusietarako. Beste pertsonen edukiarekin harremanetan sartzeko edo zure edukia argitaratzeko saioa hasi behar duzu. Adibidez, beste pertsona batzuk jarraitu ditzakezu zure denbora-lerro pertsonalizatu bat izateko.</li>
-        <li>Komunitatearen moderazioari laguntzeko, esaterako zure IP-a ezagutzen ditugun beste batzuekin alderatu dezakegu, debekuak ekiditea edo bestelako arau-urraketak eragozteko.</li>
-        <li>Emandako e-mail helbidea informazioa bidaltzeko erabili genezake, beste pertsonek zure edukiekin harremanetan jartzean jakinarazteko, edo mezu bat bidaltzen dizutenean, galderak erantzutean eta bestelako eskari eta galderetarako.</li>
+      <li>Mastodon zerbitzuko funtzio nagusietarako. Beste pertsonen edukiarekin harremanetan sartzeko edo zure edukia argitaratzeko saioa hasi behar duzu. Adibidez, beste pertsona batzuk jarraitu ditzakezu zure denbora-lerro pertsonalizatu bat izateko.</li>
+      <li>Komunitatearen moderazioari laguntzeko, esaterako zure IP-a ezagutzen ditugun beste batzuekin alderatu dezakegu, debekuak ekiditea edo bestelako arau-urraketak eragozteko.</li>
+      <li>Emandako e-mail helbidea informazioa bidaltzeko erabili genezake, beste pertsonek zure edukiekin harremanetan jartzean jakinarazteko, edo mezu bat bidaltzen dizutenean, galderak erantzutean eta bestelako eskari eta galderetarako.</li>
       </ul>
 
       <hr class="spacer" />
@@ -861,8 +963,8 @@ eu:
       <p>Borondate oneko ahalegina egingo dugu honetarako:</p>
 
       <ul>
-        <li>Zerbitzari honetara egindako eskari guztien egunkaria IP helbidearekin, 90 egunez gehienez.</li>
-        <li>Izena eman duten erabiltzaileen eskariekin lotutako IP helbideak, 12 hilabetez gehienez..</li>
+      <li>Zerbitzari honetara egindako eskari guztien egunkaria IP helbidearekin, 90 egunez gehienez.</li>
+      <li>Izena eman duten erabiltzaileen eskariekin lotutako IP helbideak, 12 hilabetez gehienez..</li>
       </ul>
 
       <p>Zure edukiaren kopia duen artxibo bat eskatu eta deskargatu dezakezu, bertan mezuak multimedia eranskinak, profileko irudia eta goiburuko irudia daude.</p>
@@ -914,7 +1016,7 @@ eu:
   time:
     formats:
       default: "%Y(e)ko %b %d, %H:%M"
-      month: "%b %Y"
+      month: "%Y(e)ko %b"
   two_factor_authentication:
     code_hint: Sartu zure autentifikazio aplikazioak sortutako kodea berresteko
     description_html: "<strong>Bi faktoreetako autentifikazioa</strong> gaitzen baduzu, saioa hasteko telefonoa eskura izan beharko duzu, honek zuk sartu behar dituzun kodeak sortuko dituelako."
diff --git a/config/locales/fa.yml b/config/locales/fa.yml
index 3a3455c6d..948347f3c 100644
--- a/config/locales/fa.yml
+++ b/config/locales/fa.yml
@@ -80,6 +80,7 @@ fa:
       destroyed_msg: یادداشت مدیر با موفقیت پاک شد!
     accounts:
       approve: پذیرفتن
+      approve_all: پذیرفتن همه
       are_you_sure: آیا مطمئن هستید؟
       avatar: تصویر نمایه
       by_domain: دامین
@@ -112,7 +113,6 @@ fa:
       header: زمینه
       inbox_url: نشانی صندوق ورودی
       invited_by: دعوت‌شده از طرف
-      ip: IP
       joined: عضویت از
       location:
         all: همه
@@ -132,6 +132,7 @@ fa:
       moderation_notes: یادداشت مدیر
       most_recent_activity: آخرین فعالیت‌ها
       most_recent_ip: آخرین IP ها
+      no_account_selected: هیچ حسابی تغییر نکرد زیرا حسابی انتخاب نشده بود
       no_limits_imposed: بدون محدودیت
       not_subscribed: عضو نیست
       outbox_url: نشانی صندوق خروجی
@@ -144,6 +145,7 @@ fa:
       push_subscription_expires: عضویت از راه PuSH منقضی شد
       redownload: به‌روزرسانی نمایه
       reject: نپذیرفتن
+      reject_all: نپذیرفتن هیچکدام
       remove_avatar: حذف تصویر نمایه
       remove_header: برداشتن تصویر زمینه
       resend_confirmation:
@@ -170,6 +172,7 @@ fa:
       statuses: نوشته‌ها
       subscribe: اشتراک
       suspended: تعلیق‌شده
+      time_in_queue: در حال انتظار %{time}
       title: حساب‌ها
       unconfirmed_email: ایمیل تأییدنشده
       undo_silenced: واگردانی بی‌صداکردن
@@ -245,6 +248,7 @@ fa:
       feature_profile_directory: فهرست گزیدهٔ کاربران
       feature_registrations: ثبت‌نام‌ها
       feature_relay: رله
+      feature_timeline_preview: پیش‌نمایش نوشته‌ها
       features: ویژگی‌ها
       hidden_service: ارتباط میان‌سروری با سرویس‌های نهفته
       open_reports: گزارش‌های فعال
@@ -295,7 +299,7 @@ fa:
     email_domain_blocks:
       add_new: افزودن تازه
       created_msg: مسدودسازی دامین ایمیل با موفقیت ساخته شد
-      delete: Delete
+      delete: پاک‌کردن
       destroyed_msg: مسدودسازی دامین ایمیل با موفقیت پاک شد
       domain: دامین
       new:
@@ -465,7 +469,6 @@ fa:
       confirmed: تأییدشده
       expires_in: مهلت انقضا
       last_delivery: آخرین ارسال
-      title: WebSub
       topic: موضوع
     tags:
       accounts: حساب‌ها
@@ -490,6 +493,12 @@ fa:
       body: کاربر %{reporter} کاربر %{target} را گزارش داد
       body_remote: کسی از %{domain} گزارش %{target} را فرستاده
       subject: گزارش تازه‌ای برای %{instance} (#%{id})
+  appearance:
+    advanced_web_interface: رابط کاربری پیشرفته
+    advanced_web_interface_hint: 'اگر می‌خواهید همهٔ فضای نمایشگر خود را به کار ببرید، می‌توانید به کمک رابط کاربری پیشرفته ستون‌های گوناگونی داشته باشید تا در یک نگاه همهٔ اطلاعاتی را که می‌خواهید ببینید: نوشته‌های دیگران، اعلان‌ها، فهرست نوشته‌های همه‌جا، و هر تعداد فهرست و برچسب که بخواهید.'
+    animations_and_accessibility: پویانمایی‌های و دسترسی‌پذیری
+    confirmation_dialogs: پیغام‌های تأیید
+    sensitive_content: محتوای حساس
   application_mailer:
     notification_preferences: تغییر ترجیحات ایمیل
     salutation: "%{name}،"
@@ -520,9 +529,6 @@ fa:
     migrate_account: نقل مکان به یک حساب دیگر
     migrate_account_html: اگر می‌خواهید این حساب را به حساب دیگری منتقل کنید، <a href="%{path}">این‌جا را کلیک کنید</a>.
     or_log_in_with: یا ورود به وسیلهٔ
-    providers:
-      cas: CAS
-      saml: SAML
     register: عضو شوید
     registration_closed: سرور %{instance} عضو تازه‌ای نمی‌پذیرد
     resend_confirmation: راهنمایی برای تأیید را دوباره بفرست
@@ -597,7 +603,6 @@ fa:
       request: درخواست بایگانی داده‌هایتان
       size: اندازه
     blocks: حساب‌های مسدودشده
-    csv: CSV
     domain_blocks: دامین‌های مسدودشده
     follows: حساب‌های پی‌گرفته
     lists: فهرست‌ها
@@ -631,6 +636,7 @@ fa:
     all: همه
     changes_saved_msg: تغییرات با موفقیت ذخیره شدند!
     copy: رونوشت
+    order_by: مرتب‌سازی
     save_changes: ذخیرهٔ تغییرات
     validation_errors:
       one: یک چیزی هنوز درست نیست! لطفاً خطاهای زیر را ببینید
@@ -646,10 +652,13 @@ fa:
       keybase:
         invalid_token: کدهای Keybase چکیده (هش) امضاهای دیجیتال هستند و دست‌کم ۶۶ نویسه در مبنای ۱۶ دارند
         verification_failed: این کد را Keybase به عنوان امضای دیجیتال کاربر %{kb_username} تأیید نمی‌کند. لطفاً دوباره از Keybase تلاش کنید.
+      wrong_user: نمی‌توان تأییدی برای %{proving} در حالی که به عنوان %{current} وارد شده‌اید. به عنوان %{proving} وارد شوید و دوباره تلاش کنید.
     explanation_html: این‌جا می‌توانید به شناسه‌های دیگر خود مانند نمایهٔ Keybase خودتان به طور رمزنگارانه متصل شوید. با این کار دیگران می‌توانند به شما پیغام‌های رمزشده بفرستند و به چیزی که شما به آن‌ها می‌فرستید اعتماد کنند.
     i_am_html: من %{username} روی %{service} هستم.
     identity: شناسه
     inactive: غیرفعال
+    publicize_checkbox: 'این را ببوقید:'
+    publicize_toot: 'تأیید شد! من %{username} روی %{service} هستم: %{url}'
     status: وضعیت تأیید
     view_proof: دیدن مدرک
   imports:
@@ -737,23 +746,11 @@ fa:
       body: "%{name} نوشتهٔ شما را بازبوقید:"
       subject: "%{name} نوشتهٔ شما را بازبوقید"
       title: بازبوق تازه
-  number:
-    human:
-      decimal_units:
-        format: "%n%u"
-        units:
-          billion: B
-          million: M
-          quadrillion: Q
-          thousand: K
-          trillion: T
-          unit: ''
   pagination:
     newer: تازه‌تر
     next: بعدی
     older: قدیمی‌تر
     prev: قبلی
-    truncate: "&hellip;"
   polls:
     errors:
       already_voted: شما قبلاً در این نظرسنجی رأی داده‌اید
@@ -765,13 +762,12 @@ fa:
       too_few_options: حتماً باید بیش از یک گزینه داشته باشد
       too_many_options: نمی‌تواند بیشتر از %{max} گزینه داشته باشد
   preferences:
-    languages: تنظیمات زبان
     other: سایر تنظیمات
-    publishing: تنظیمات انتشار مطالب
-    web: وب
   relationships:
     activity: فعالیت حساب
     dormant: غیرفعال
+    last_active: آخرین فعالیت
+    most_recent: تازه‌ترین
     moved: منتقل‌شده
     mutual: دوطرفه
     primary: اصلی
@@ -809,44 +805,19 @@ fa:
     activity: آخرین فعالیت
     browser: مرورگر
     browsers:
-      alipay: Alipay
-      blackberry: Blackberry
-      chrome: Chrome
-      edge: Microsoft Edge
-      electron: Electron
-      firefox: Firefox
       generic: مرورگر ناشناخته
-      ie: Internet Explorer
-      micro_messenger: MicroMessenger
-      nokia: Nokia S40 Ovi Browser
-      opera: Opera
-      otter: Otter
-      phantom_js: PhantomJS
-      qq: QQ Browser
-      safari: Safari
-      uc_browser: UCBrowser
-      weibo: Weibo
     current_session: نشست فعلی
     description: "%{browser} روی %{platform}"
     explanation: مرورگرهای زیر هم‌اینک به حساب شما وارد شده‌اند.
-    ip: IP
     platforms:
-      adobe_air: Adobe Air
-      android: Android
-      blackberry: Blackberry
-      chrome_os: ChromeOS
-      firefox_os: Firefox OS
-      ios: iOS
-      linux: Linux
-      mac: Mac
       other: سیستم ناشناخته
-      windows: Windows
-      windows_mobile: Windows Mobile
-      windows_phone: Windows Phone
     revoke: لغو کردن
     revoke_success: نشست با موفقیت لغو شد
     title: نشست‌ها
   settings:
+    account: حساب
+    account_settings: تنظیمات حساب
+    appearance: نما
     authorized_apps: برنامه‌های مجاز
     back: بازگشت به ماستدون
     delete: پاک‌کردن حساب
@@ -856,9 +827,11 @@ fa:
     featured_tags: برچسب‌های منتخب
     identity_proofs: مدرک شناسه‌ها
     import: درون‌ریزی
+    import_and_export: درون‌ریزی و برون‌بری
     migrate: انتقال حساب
     notifications: اعلان‌ها
     preferences: ترجیحات
+    profile: نمایه
     relationships: پیگیری‌ها و پیگیران
     two_factor_authentication: ورود دومرحله‌ای
   statuses:
@@ -890,7 +863,6 @@ fa:
       vote: رأی
     show_more: نمایش
     sign_in_to_participate: برای شرکت در گفتگو وارد حساب خود شوید
-    title: '%{name}: "%{quote}"'
     visibilities:
       private: خصوصی
       private_long: تنها پیگیران شما می‌بینند
@@ -903,6 +875,87 @@ fa:
     reblogged: بازبوقید
     sensitive_content: محتوای حساس
   terms:
+    body_html: |
+      <h2>سیاست رازداری</h2>
+      <h3 id="collect">What information do we collect?</h3>
+
+      <ul>
+      <li><em>Basic account information</em>: If you register on this server, you may be asked to enter a username, an e-mail address and a password. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly.</li>
+      <li><em>Posts, following and other public information</em>: The list of people you follow is listed publicly, the same is true for your followers. When you submit a message, the date and time is stored as well as the application you submitted the message from. Messages may contain media attachments, such as pictures and videos. Public and unlisted posts are available publicly. When you feature a post on your profile, that is also publicly available information. Your posts are delivered to your followers, in some cases it means they are delivered to different servers and copies are stored there. When you delete posts, this is likewise delivered to your followers. The action of reblogging or favouriting another post is always public.</li>
+      <li><em>Direct and followers-only posts</em>: All posts are stored and processed on the server. Followers-only posts are delivered to your followers and users who are mentioned in them, and direct posts are delivered only to users mentioned in them. In some cases it means they are delivered to different servers and copies are stored there. We make a good faith effort to limit the access to those posts only to authorized persons, but other servers may fail to do so. Therefore it's important to review servers your followers belong to. You may toggle an option to approve and reject new followers manually in the settings. <em>Please keep in mind that the operators of the server and any receiving server may view such messages</em>, and that recipients may screenshot, copy or otherwise re-share them. <em>Do not share any dangerous information over Mastodon.</em></li>
+      <li><em>IPs and other metadata</em>: When you log in, we record the IP address you log in from, as well as the name of your browser application. All the logged in sessions are available for your review and revocation in the settings. The latest IP address used is stored for up to 12 months. We also may retain server logs which include the IP address of every request to our server.</li>
+      </ul>
+
+      <hr class="spacer" />
+
+      <h3 id="use">What do we use your information for?</h3>
+
+      <p>Any of the information we collect from you may be used in the following ways:</p>
+
+      <ul>
+      <li>To provide the core functionality of Mastodon. You can only interact with other people's content and post your own content when you are logged in. For example, you may follow other people to view their combined posts in your own personalized home timeline.</li>
+      <li>To aid moderation of the community, for example comparing your IP address with other known ones to determine ban evasion or other violations.</li>
+      <li>The email address you provide may be used to send you information, notifications about other people interacting with your content or sending you messages, and to respond to inquiries, and/or other requests or questions.</li>
+      </ul>
+
+      <hr class="spacer" />
+
+      <h3 id="protect">How do we protect your information?</h3>
+
+      <p>We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information. Among other things, your browser session, as well as the traffic between your applications and the API, are secured with SSL, and your password is hashed using a strong one-way algorithm. You may enable two-factor authentication to further secure access to your account.</p>
+
+      <hr class="spacer" />
+
+      <h3 id="data-retention">What is our data retention policy?</h3>
+
+      <p>We will make a good faith effort to:</p>
+
+      <ul>
+      <li>Retain server logs containing the IP address of all requests to this server, in so far as such logs are kept, no more than 90 days.</li>
+      <li>Retain the IP addresses associated with registered users no more than 12 months.</li>
+      </ul>
+
+      <p>You can request and download an archive of your content, including your posts, media attachments, profile picture, and header image.</p>
+
+      <p>You may irreversibly delete your account at any time.</p>
+
+      <hr class="spacer"/>
+
+      <h3 id="cookies">Do we use cookies?</h3>
+
+      <p>Yes. Cookies are small files that a site or its service provider transfers to your computer's hard drive through your Web browser (if you allow). These cookies enable the site to recognize your browser and, if you have a registered account, associate it with your registered account.</p>
+
+      <p>We use cookies to understand and save your preferences for future visits.</p>
+
+      <hr class="spacer" />
+
+      <h3 id="disclose">Do we disclose any information to outside parties?</h3>
+
+      <p>We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our site, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety.</p>
+
+      <p>Your public content may be downloaded by other servers in the network. Your public and followers-only posts are delivered to the servers where your followers reside, and direct messages are delivered to the servers of the recipients, in so far as those followers or recipients reside on a different server than this.</p>
+
+      <p>When you authorize an application to use your account, depending on the scope of permissions you approve, it may access your public profile information, your following list, your followers, your lists, all your posts, and your favourites. Applications can never access your e-mail address or password.</p>
+
+      <hr class="spacer" />
+
+      <h3 id="children">Site usage by children</h3>
+
+      <p>If this server is in the EU or the EEA: Our site, products and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the GDPR (<a href="https://en.wikipedia.org/wiki/General_Data_Protection_Regulation">General Data Protection Regulation</a>) do not use this site.</p>
+
+      <p>If this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of COPPA (<a href="https://en.wikipedia.org/wiki/Children%27s_Online_Privacy_Protection_Act">Children's Online Privacy Protection Act</a>) do not use this site.</p>
+
+      <p>Law requirements can be different if this server is in another jurisdiction.</p>
+
+      <hr class="spacer" />
+
+      <h3 id="changes">Changes to our Privacy Policy</h3>
+
+      <p>If we decide to change our privacy policy, we will post those changes on this page.</p>
+
+      <p>This document is CC-BY-SA. It was last updated March 7, 2018.</p>
+
+      <p>Originally adapted from the <a href="https://github.com/discourse/discourse">Discourse privacy policy</a>.</p>
     title: شرایط استفاده و سیاست رازداری %{instance}
   themes:
     contrast: ماستدون (کنتراست بالا)
@@ -911,7 +964,6 @@ fa:
   time:
     formats:
       default: "%d %b %Y, %H:%M"
-      month: "%b %Y"
   two_factor_authentication:
     code_hint: برای تأیید، کدی را که برنامهٔ تأییدکننده ساخته است وارد کنید
     description_html: اگر <strong>ورود دومرحله‌ای</strong> را فعال کنید، برای ورود به سیستم به تلفن خود نیاز خواهید داشت تا برایتان یک کد موقتی بسازد.
diff --git a/config/locales/fi.yml b/config/locales/fi.yml
index e4a0ed22c..e0dc0f756 100644
--- a/config/locales/fi.yml
+++ b/config/locales/fi.yml
@@ -5,7 +5,6 @@ fi:
     about_mastodon_html: Mastodon on sosiaalinen verkosto. Se on toteutettu avoimilla verkkoprotokollilla ja vapailla, avoimen lähdekoodin ohjelmistoilla, ja se toimii hajautetusti samaan tapaan kuin sähköposti.
     about_this: Tietoja tästä palvelimesta
     administered_by: 'Ylläpitäjä:'
-    api: API
     apps: Mobiili sovellukset
     contact: Ota yhteyttä
     contact_missing: Ei asetettu
@@ -39,7 +38,6 @@ fi:
     joined: Liittynyt %{date}
     last_active: viimeksi aktiivinen
     link_verified_on: Tämän linkin omistus on tarkastettu %{date}
-    media: Media
     moved_html: "%{name} on muuttanut osoitteeseen %{new_profile_link}:"
     network_hidden: Nämä tiedot eivät ole käytettävissä
     nothing_here: Täällä ei ole mitään!
@@ -47,10 +45,6 @@ fi:
     people_who_follow: Käyttäjän %{name} seuraajat
     pin_errors:
       following: Sinun täytyy seurata henkilöä jota haluat tukea
-    posts:
-      one: Toot
-      other: Toots
-    posts_tab_heading: Toots
     posts_with_replies: Tuuttaukset ja vastaukset
     reserved_username: Käyttäjänimi on varattu
     roles:
@@ -93,7 +87,6 @@ fi:
       followers_url: Seuraajien osoite
       follows: Seuraa
       inbox_url: Saapuvan postilaatikon osoite
-      ip: IP
       location:
         all: Kaikki
         local: Paikalliset
@@ -148,7 +141,6 @@ fi:
       undo_suspension: Peru jäähy
       unsubscribe: Lopeta tilaus
       username: Käyttäjänimi
-      web: Web
     action_logs:
       actions:
         assigned_to_self_report: "%{name} otti raportin %{target} tehtäväkseen"
@@ -189,7 +181,6 @@ fi:
       destroyed_msg: Emojon poisto onnistui!
       disable: Poista käytöstä
       disabled_msg: Emojin poisto käytöstä onnistui
-      emoji: Emoji
       enable: Ota käyttöön
       enabled_msg: Emojin käyttöönotto onnistui
       image_hint: PNG enintään 50 kt
@@ -336,8 +327,6 @@ fi:
         nsfw_off: NSFW POIS
         nsfw_on: NSFW PÄÄLLÄ
       failed_to_execute: Suoritus epäonnistui
-      media:
-        title: Media
       no_media: Ei mediaa
       title: Tilin tilat
       with_media: Sisältää mediaa
@@ -346,7 +335,6 @@ fi:
       confirmed: Vahvistettu
       expires_in: Vanhenee
       last_delivery: Viimeisin toimitus
-      title: WebSub
       topic: Aihe
     title: Ylläpito
   admin_mailer:
@@ -356,7 +344,6 @@ fi:
       subject: Uusi raportti instanssista %{instance} (nro %{id})
   application_mailer:
     notification_preferences: Muuta sähköpostiasetuksia
-    salutation: "%{name},"
     settings: 'Muuta sähköpostiasetuksia: %{link}'
     view: 'Näytä:'
     view_profile: Näytä profiili
@@ -382,9 +369,6 @@ fi:
     migrate_account: Muuta toiseen tiliin
     migrate_account_html: Jos haluat ohjata tämän tilin toiseen tiliin, voit <a href="%{path}">asettaa toisen tilin tästä</a>.
     or_log_in_with: Tai käytä kirjautumiseen
-    providers:
-      cas: CAS
-      saml: SAML
     register: Rekisteröidy
     resend_confirmation: Lähetä vahvistusohjeet uudestaan
     reset_password: Palauta salasana
@@ -444,7 +428,6 @@ fi:
       request: Pyydä arkisto
       size: Koko
     blocks: Estot
-    csv: CSV
     follows: Seurattavat
     mutes: Mykistetyt
     storage: Media-arkisto
@@ -538,22 +521,16 @@ fi:
         format: "%n %u"
         units:
           billion: Mrd
-          million: M
           quadrillion: Brd
           thousand: k
           trillion: B
-          unit: ''
   pagination:
     newer: Uudemmat
     next: Seuraava
     older: Vanhemmat
     prev: Edellinen
-    truncate: "&hellip;"
   preferences:
-    languages: Kielet
     other: Muut
-    publishing: Julkaiseminen
-    web: Web
   remote_follow:
     acct: Syötä se käyttäjätunnus@verkkotunnus, josta haluat seurata
     missing_resource: Vaadittavaa uudelleenohjaus-URL:ää tiliisi ei löytynyt
@@ -565,40 +542,13 @@ fi:
     activity: Viimeisin toiminta
     browser: Selain
     browsers:
-      alipay: Alipay
-      blackberry: Blackberry
-      chrome: Chrome
-      edge: Microsoft Edge
-      electron: Electron
-      firefox: Firefox
       generic: Tuntematon selain
-      ie: Internet Explorer
-      micro_messenger: MicroMessenger
       nokia: Nokia S40 Ovi -selain
-      opera: Opera
-      otter: Otter
-      phantom_js: PhantomJS
-      qq: QQ Browser
-      safari: Safari
-      uc_browser: UCBrowser
-      weibo: Weibo
     current_session: Nykyinen istunto
     description: "%{browser}, %{platform}"
     explanation: Nämä verkkoselaimet ovat tällä hetkellä kirjautuneet Mastodon-tilillesi.
-    ip: IP
     platforms:
-      adobe_air: Adobe Air
-      android: Android
-      blackberry: Blackberry
-      chrome_os: ChromeOS
-      firefox_os: Firefox OS
-      ios: iOS
-      linux: Linux
-      mac: Mac
       other: tuntematon järjestelmä
-      windows: Windows
-      windows_mobile: Windows Mobile
-      windows_phone: Windows Phone
     revoke: Hylkää
     revoke_success: Istunnon hylkäys onnistui
     title: Istunnot
@@ -620,9 +570,6 @@ fi:
       image:
         one: "%{count} kuva"
         other: "%{count} kuvaa"
-      video:
-        one: "%{count} video"
-        other: "%{count} videota"
     content_warning: 'Sisältövaroitus: %{warning}'
     disallowed_hashtags:
       one: 'sisälsi aihetunnisteen jota ei sallita: %{tags}'
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index e76fdf99e..5c15ab6a4 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -174,6 +174,7 @@ fr:
       statuses: Statuts
       subscribe: S’abonner
       suspended: Suspendu
+      time_in_queue: En file d’attente %{time}
       title: Comptes
       unconfirmed_email: Courriel non-confirmé
       undo_silenced: Démasquer
@@ -498,6 +499,12 @@ fr:
       body: "%{reporter} a signalé %{target}"
       body_remote: Quelqu’un de %{domain} a signalé %{target}
       subject: Nouveau signalement sur %{instance} (#%{id})
+  appearance:
+    advanced_web_interface: Interface web avancée
+    advanced_web_interface_hint: 'Si vous voulez utiliser toute la largeur de votre écran, l’interface web avancée vous permet de configurer plusieurs colonnes différentes pour voir autant d’informations que vous le souhaitez en même temps : Accueil, notifications, fil public fédéré, un nombre illimité de listes et hashtags.'
+    animations_and_accessibility: Animations et accessibilité
+    confirmation_dialogs: Dialogues de confirmation
+    sensitive_content: Contenu sensible
   application_mailer:
     notification_preferences: Modifier les préférences de courriel
     salutation: "%{name},"
@@ -759,7 +766,6 @@ fr:
           quadrillion: P
           thousand: K
           trillion: T
-          unit: ''
   pagination:
     newer: Plus récent
     next: Suivant
@@ -777,10 +783,9 @@ fr:
       too_few_options: doit avoir plus qu’une proposition
       too_many_options: ne peut contenir plus que %{max} propositions
   preferences:
-    languages: Langues
     other: Autre
-    publishing: Publication
-    web: Web
+    posting_defaults: Paramètres par défaut des pouets
+    public_timelines: Fils publics
   relationships:
     activity: Activité du compte
     dormant: Dormant
@@ -927,10 +932,10 @@ fr:
       <h3 id="collect">Quelles informations collectons-nous ?</h3>
 
       <ul>
-        <li><em>Informations de base sur votre compte</em> : Si vous vous inscrivez sur ce serveur, il vous sera demandé de rentrer un identifiant, une adresse électronique et un mot de passe. Vous pourrez également ajouter des informations additionnelles sur votre profil, telles qu’un nom public et une biographie, ainsi que téléverser une image de profil et une image d’en-tête. Vos identifiant, nom public, biographie, image de profil et image d’en-tête seront toujours affichés publiquement.</li>
+      <li><em>Informations de base sur votre compte</em> : Si vous vous inscrivez sur ce serveur, il vous sera demandé de rentrer un identifiant, une adresse électronique et un mot de passe. Vous pourrez également ajouter des informations additionnelles sur votre profil, telles qu’un nom public et une biographie, ainsi que téléverser une image de profil et une image d’en-tête. Vos identifiant, nom public, biographie, image de profil et image d’en-tête seront toujours affichés publiquement.</li>
       <li><em>Posts, liste d’abonnements et autres informations publiques</em> : La liste de vos abonnements ainsi que la liste de vos abonné·e·s sont publiques. Quand vous postez un message, la date et l’heure d’envoi ainsi que le nom de l’application utilisée pour sa transmission sont enregistré·e·s. Des médias, tels que des images ou des vidéos, peuvent être joints aux messages. Les posts publics et non listés sont affichés publiquement. Quand vous mettez en avant un post sur votre profil, ce post est également affiché publiquement. Vos messages sont délivrés à vos abonné·e·s, ce qui, dans certains cas, signifie qu’ils sont délivrés à des serveurs tiers et que ces derniers en stockent une copie. Quand vous supprimer un post, il est probable que vos abonné·e·s en soient informé·e·s. Partager un message ou le marquer comme favori est toujours une action publique.</li>
-        <li><em>Posts directs et abonné·e·s uniquement</em> : Tous les posts sont stockés et traités par le serveur. Les messages abonné·e·s uniquement ne sont transmis qu’à vos abonné·e·s et aux personnes mentionnées dans le corps du message, tandis que les messages directs ne sont transmis qu’aux personnes mentionnées. Dans certains cas, cela signifie qu’ils sont délivrés à des serveurs tiers et que ces derniers en stockent une copie. Nous faisons un effort de bonne fois pour en limiter l’accès uniquement aux personnes autorisées, mais ce n’est pas nécessairement le cas des autres serveurs. Il est donc très important que vous vérifiiez les serveurs auxquels appartiennent vos abonné·e·s. Il vous est possible d’activer une option dans les paramètres afin d’approuver et de rejeter manuellement les nouveaux·lles abonné·e·s. <em>Gardez s’il-vous-plaît en mémoire que les opérateur·rice·s du serveur ainsi que celles et ceux de n’importe quel serveur récepteur peuvent voir ces messages</em> et qu’il est possible pour les destinataires de faire des captures d’écran, de copier et plus généralement de repartager ces messages. <em>Ne partager aucune information sensible à l’aide de Mastodon.</em></li>
-        <li><em>IP et autres métadonnées</em> : Quand vous vous connectez, nous enregistrons votre adresse IP ainsi que le nom de votre navigateur web. Toutes les sessions enregistrées peuvent être consultées dans les paramètres, afin que vous puissiez les surveiller et éventuellement les révoquer. La dernière adresse IP utilisée est conservée pour une durée de 12 mois. Nous sommes également susceptibles de conserver les journaux du serveur, ce qui inclut l’adresse IP de chaque requête reçue.</li>
+      <li><em>Posts directs et abonné·e·s uniquement</em> : Tous les posts sont stockés et traités par le serveur. Les messages abonné·e·s uniquement ne sont transmis qu’à vos abonné·e·s et aux personnes mentionnées dans le corps du message, tandis que les messages directs ne sont transmis qu’aux personnes mentionnées. Dans certains cas, cela signifie qu’ils sont délivrés à des serveurs tiers et que ces derniers en stockent une copie. Nous faisons un effort de bonne fois pour en limiter l’accès uniquement aux personnes autorisées, mais ce n’est pas nécessairement le cas des autres serveurs. Il est donc très important que vous vérifiiez les serveurs auxquels appartiennent vos abonné·e·s. Il vous est possible d’activer une option dans les paramètres afin d’approuver et de rejeter manuellement les nouveaux·lles abonné·e·s. <em>Gardez s’il-vous-plaît en mémoire que les opérateur·rice·s du serveur ainsi que celles et ceux de n’importe quel serveur récepteur peuvent voir ces messages</em> et qu’il est possible pour les destinataires de faire des captures d’écran, de copier et plus généralement de repartager ces messages. <em>Ne partager aucune information sensible à l’aide de Mastodon.</em></li>
+      <li><em>IP et autres métadonnées</em> : Quand vous vous connectez, nous enregistrons votre adresse IP ainsi que le nom de votre navigateur web. Toutes les sessions enregistrées peuvent être consultées dans les paramètres, afin que vous puissiez les surveiller et éventuellement les révoquer. La dernière adresse IP utilisée est conservée pour une durée de 12 mois. Nous sommes également susceptibles de conserver les journaux du serveur, ce qui inclut l’adresse IP de chaque requête reçue.</li>
       </ul>
 
       <hr class="spacer" />
@@ -940,9 +945,9 @@ fr:
       <p>Toutes les informations que nous collectons sur vous peuvent être utilisées d’une des manières suivantes :</p>
 
       <ul>
-        <li>Pour vous fournir les fonctionnalités de base de Mastodon. Vous ne pouvez interagir avec le contenu des autres et poster votre propre contenu que lorsque vous êtes connecté·e. Par exemple, vous pouvez vous abonner à plusieurs autres comptes pour voir l’ensemble de leurs posts dans votre fil d’accueil personnalisé.</li>
-        <li>Pour aider à la modération de la communauté, par exemple, comparer votre adresse IP à d’autres afin de déterminer si un bannissement a été contourné ou si une autre violation aux règles a été commise.</li>
-        <li>L’adresse électronique que vous nous avez fournie peut être utilisée pour vous envoyez des informations, des notifications lorsque d’autres personnes interagissent avec votre contenu ou vous envoient des messages, pour répondre à des demandes de votre part ainsi que pour tout autres requêtes ou questions.</li>
+      <li>Pour vous fournir les fonctionnalités de base de Mastodon. Vous ne pouvez interagir avec le contenu des autres et poster votre propre contenu que lorsque vous êtes connecté·e. Par exemple, vous pouvez vous abonner à plusieurs autres comptes pour voir l’ensemble de leurs posts dans votre fil d’accueil personnalisé.</li>
+      <li>Pour aider à la modération de la communauté, par exemple, comparer votre adresse IP à d’autres afin de déterminer si un bannissement a été contourné ou si une autre violation aux règles a été commise.</li>
+      <li>L’adresse électronique que vous nous avez fournie peut être utilisée pour vous envoyez des informations, des notifications lorsque d’autres personnes interagissent avec votre contenu ou vous envoient des messages, pour répondre à des demandes de votre part ainsi que pour tout autres requêtes ou questions.</li>
       </ul>
 
       <hr class="spacer" />
@@ -958,8 +963,8 @@ fr:
       <p>Nous ferons un effort de bonne foi :</p>
 
       <ul>
-        <li>Pour ne pas conserver plus de 90 jours les journaux systèmes contenant les adresses IP de toutes les requêtes reçues par ce serveur.</li>
-        <li>Pour ne pas conserver plus de 12 mois les adresses IP associées aux utilisateur·ice·s enregistré·e·s.</li>
+      <li>Pour ne pas conserver plus de 90 jours les journaux systèmes contenant les adresses IP de toutes les requêtes reçues par ce serveur.</li>
+      <li>Pour ne pas conserver plus de 12 mois les adresses IP associées aux utilisateur·ice·s enregistré·e·s.</li>
       </ul>
 
       <p>Vous pouvez demander une archive de votre contenu, incluant vos posts, vos médias joints, votre image de profil et votre image d’en-tête.</p>
diff --git a/config/locales/gl.yml b/config/locales/gl.yml
index 9c4673186..79ef993e2 100644
--- a/config/locales/gl.yml
+++ b/config/locales/gl.yml
@@ -68,6 +68,7 @@ gl:
       admin: Admin
       bot: Bot
       moderator: Mod
+    unavailable: Perfil non dispoñible
     unfollow: Deixar de seguir
   admin:
     account_actions:
@@ -80,6 +81,7 @@ gl:
       destroyed_msg: Nota a moderación destruída con éxito!
     accounts:
       approve: Aprobar
+      approve_all: Aprobar todo
       are_you_sure: Está segura?
       avatar: Avatar
       by_domain: Dominio
@@ -101,7 +103,7 @@ gl:
       display_name: Mostrar nome
       domain: Dominio
       edit: Editar
-      email: Email
+      email: Correo-e
       email_status: Estado do correo
       enable: Habilitar
       enabled: Habilitado
@@ -132,6 +134,7 @@ gl:
       moderation_notes: Notas de moderación
       most_recent_activity: Actividade máis recente
       most_recent_ip: IP máis recente
+      no_account_selected: Non cambiou nada xa que non tiña nada seleccionado
       no_limits_imposed: Sen límites impostos
       not_subscribed: Non suscrita
       outbox_url: URL caixa de saída
@@ -144,6 +147,7 @@ gl:
       push_subscription_expires: A suscrición PuSH caduca
       redownload: Actualizar perfil
       reject: Rexeitar
+      reject_all: Rexeitar todo
       remove_avatar: Eliminar avatar
       remove_header: Eliminar cabeceira
       resend_confirmation:
@@ -170,6 +174,7 @@ gl:
       statuses: Estados
       subscribe: Subscribir
       suspended: Suspendida
+      time_in_queue: Agardando en cola %{time}
       title: Contas
       unconfirmed_email: Correo non confirmado
       undo_silenced: Desfacer acalar
@@ -245,6 +250,7 @@ gl:
       feature_profile_directory: Directorio do perfil
       feature_registrations: Rexistros
       feature_relay: Repetidores de federación
+      feature_timeline_preview: Vista previa da TL
       features: Características
       hidden_service: Federación con servizos ocultos
       open_reports: informes abertos
@@ -264,6 +270,7 @@ gl:
       created_msg: Estase a procesar o bloqueo do dominio
       destroyed_msg: Desfixose a acción de bloqueo de dominio
       domain: Dominio
+      existing_domain_block_html: Xa estableceu límites estrictos para %{name}, precisa <a href="%{unblock_url}">desbloqueala</a> primeiro.
       new:
         create: Crear bloque
         hint: O bloqueo do dominio non previrá a creación de entradas de contas na base de datos, pero aplicará de xeito retroactivo e automático regras específicas de moderación sobre esas contas.
@@ -329,6 +336,8 @@ gl:
         expired: Cadudado
         title: Filtro
       title: Convida
+    pending_accounts:
+      title: Contas pendentes (%{count})
     relays:
       add_new: Engadir un novo repetidor
       delete: Eliminar
@@ -490,6 +499,12 @@ gl:
       body: "%{reporter} informou sobre %{target}"
       body_remote: Alguén desde %{domain} informou sobre %{target}
       subject: Novo informe sobre %{instance} (#%{id})
+  appearance:
+    advanced_web_interface: Interface web avanzada
+    advanced_web_interface_hint: Se quere utilizar todo o ancho da súa pantalla, a interface web avanzada permítelle configurar diferentes columnas para ver tanta información como desexe. Inicio, notificacións, liña temporal federada, calquera número de listas e etiquetas.
+    animations_and_accessibility: Animacións e accesibilidade
+    confirmation_dialogs: Diálogos de confirmación
+    sensitive_content: Contido sensible
   application_mailer:
     notification_preferences: Cambiar os axustes de correo-e
     salutation: "%{name},"
@@ -585,6 +600,9 @@ gl:
       content: Sentímolo, pero algo do noso lado falloou.
       title: Esta páxina non é correcta
     noscript_html: Para utilizar a aplicación web de Mastodon debe habilitar JavaScript. De xeito alternativo, intente unha das <a href="%{apps_path}">apps nativas</a> para Mastodon da súa plataforma.
+  existing_username_validator:
+    not_found: non se atopou unha usuaria local con ese alcume
+    not_found_multiple: non se atopou a %{usernames}
   exports:
     archive_takeout:
       date: Data
@@ -628,10 +646,13 @@ gl:
     all: Todo
     changes_saved_msg: Cambios gardados correctamente!!
     copy: Copiar
+    order_by: Ordenar por
     save_changes: Gardar cambios
     validation_errors:
       one: Algo non está ben de todo! Por favor revise abaixo o erro
       other: Algo aínda non está ben! Por favor revise os %{count} erros abaixo
+  html_validator:
+    invalid_markup: 'contén etiquetas HTML non válidas: %{error}'
   identity_proofs:
     active: Activo
     authorize: Si, autorizar
@@ -641,10 +662,13 @@ gl:
       keybase:
         invalid_token: Os testemuños Keybase son hashes de firma e deben ter 66 caracteres hexadecimais
         verification_failed: Keybase non recoñece este testemuño como firma da usuaria de Keybase %{kb_username}. Por favor inténteo desde Keybase.
+      wrong_user: Non se puido crear a proba para %{proving} mentras está conectada como %{current}. Conéctese como %{proving} e inténteo de novo.
     explanation_html: Aquí pódese conectar criptográficamente as suas outras identidades, como a un perfil Keybase. Esto permitelle a outras persoas enviarlle mensaxes cifradas e confiar no contido que vostede lle envía.
     i_am_html: Eu son %{username} en %{service}.
     identity: Identidade
     inactive: Inactiva
+    publicize_checkbox: 'E tootee esto:'
+    publicize_toot: 'Comprobado! Eu son %{username} en %{service}: %{url}'
     status: Estado da validación
     view_proof: Ver proba
   imports:
@@ -742,7 +766,6 @@ gl:
           quadrillion: Q
           thousand: K
           trillion: T
-          unit: " "
   pagination:
     newer: Máis novo
     next: Seguinte
@@ -760,13 +783,14 @@ gl:
       too_few_options: debe ter máis de unha opción
       too_many_options: non pode haber máis de %{max} opcións
   preferences:
-    languages: Idiomas
     other: Outro
-    publishing: Publicando
-    web: Web
+    posting_defaults: Valores por omisión
+    public_timelines: Liñas temporais públicas
   relationships:
     activity: Actividade da conta
     dormant: En repouso
+    last_active: Último activo
+    most_recent: Máis recente
     moved: Movida
     mutual: Mutuo
     primary: Principal
@@ -842,6 +866,9 @@ gl:
     revoke_success: A sesión revocouse con éxito
     title: Sesións
   settings:
+    account: Conta
+    account_settings: Axustes da conta
+    appearance: Aparencia
     authorized_apps: Apps autorizadas
     back: Voltar a Mastodon
     delete: Eliminación da conta
@@ -851,9 +878,11 @@ gl:
     featured_tags: Etiquetas destacadas
     identity_proofs: Probas de identidade
     import: Importar
+    import_and_export: Importar e exportar
     migrate: Migrar conta
     notifications: Notificacións
     preferences: Preferencias
+    profile: Perfil
     relationships: Seguindo e seguidoras
     two_factor_authentication: Validar Doble Factor
   statuses:
@@ -903,10 +932,10 @@ gl:
       <h3 id="collect">Qué información recollemos?</h3>
 
       <ul>
-        <li><em>Información básica da conta</em>: Si se rexistra en este servidor, pediráselle un nome de usuaria, un enderezo de correo electrónico e un contrasinal. De xeito adicional tamén poderá introducir información como un nome público e biografía, tamén subir unha fotografía de perfil e unha imaxe para a cabeceira. O nome de usuaria, o nome público, a biografía e as imaxes de perfil e cabeceira sempre se mostran publicamente.</li>
-        <li><em>Publicacións, seguimento e outra información pública</em>: O listado das persoas que segue é un listado público, o mesmo acontece coas súas seguidoras. Cando evía unha mensaxe, a data e hora gárdanse así como o aplicativo que utilizou para enviar a mensaxe. As publicacións poderían conter ficheiros de medios anexos, como fotografías e vídeos. As publicacións públicas e as non listadas están dispoñibles de xeito público. Cando destaca unha publicación no seu perfil tamén é pública. As publicacións son enviadas as súas seguidoras, en algúns casos pode acontecer que estén en diferentes servidores e gárdanse copias neles. Cando elemina unha publicación tamén se envía as súas seguidoras. A acción de voltar a publicar ou marcar como favorita outra publicación sempre é pública.</li>
-        <li><em>Mensaxes directas e só para seguidoras</em>: Todas as mensaxes gárdanse e procésanse no servidor. As mensaxes só para seguidoras son entregadas as súas seguidoras e as usuarias que son mencionadas en elas, e as mensaxes directas entréganse só as usuarias mencionadas en elas. En algúns casos esto implica que son entregadas a diferentes servidores e gárdanse copias alí. Facemos un esforzo sincero para limitar o acceso a esas publicacións só as persoas autorizadas, pero outros servidores poderían non ser tan escrupulosos. Polo tanto, é importante revisar os servidores onde se hospedan as súas seguidoras. Nos axustes pode activar a opción de aprovar ou rexeitar novas seguidoras de xeito manual.  <em>Teña en conta que a administración do servidor e todos os outros servidores implicados poden ver as mensaxes.</em>, e as destinatarias poderían facer capturas de pantalla, copiar e voltar a compartir as mensaxes. <em>Non comparta información comprometida en Mastodon.</em></li>
-        <li><em>IPs e outros metadatos</em>: Cando se conecta, gravamos o IP desde onde se conecta, así como o nome do aplicativo desde onde o fai. Todas as sesións conectadas están dispoñibles para revisar e revogar nos axustes. O último enderezo IP utilizado gárdase ate por 12 meses. Tamén poderiamos gardar informes do servidor que inclúan o enderezo IP de cada petición ao servidor.</li>
+      <li><em>Información básica da conta</em>: Si se rexistra en este servidor, pediráselle un nome de usuaria, un enderezo de correo electrónico e un contrasinal. De xeito adicional tamén poderá introducir información como un nome público e biografía, tamén subir unha fotografía de perfil e unha imaxe para a cabeceira. O nome de usuaria, o nome público, a biografía e as imaxes de perfil e cabeceira sempre se mostran publicamente.</li>
+      <li><em>Publicacións, seguimento e outra información pública</em>: O listado das persoas que segue é un listado público, o mesmo acontece coas súas seguidoras. Cando evía unha mensaxe, a data e hora gárdanse así como o aplicativo que utilizou para enviar a mensaxe. As publicacións poderían conter ficheiros de medios anexos, como fotografías e vídeos. As publicacións públicas e as non listadas están dispoñibles de xeito público. Cando destaca unha publicación no seu perfil tamén é pública. As publicacións son enviadas as súas seguidoras, en algúns casos pode acontecer que estén en diferentes servidores e gárdanse copias neles. Cando elemina unha publicación tamén se envía as súas seguidoras. A acción de voltar a publicar ou marcar como favorita outra publicación sempre é pública.</li>
+      <li><em>Mensaxes directas e só para seguidoras</em>: Todas as mensaxes gárdanse e procésanse no servidor. As mensaxes só para seguidoras son entregadas as súas seguidoras e as usuarias que son mencionadas en elas, e as mensaxes directas entréganse só as usuarias mencionadas en elas. En algúns casos esto implica que son entregadas a diferentes servidores e gárdanse copias alí. Facemos un esforzo sincero para limitar o acceso a esas publicacións só as persoas autorizadas, pero outros servidores poderían non ser tan escrupulosos. Polo tanto, é importante revisar os servidores onde se hospedan as súas seguidoras. Nos axustes pode activar a opción de aprovar ou rexeitar novas seguidoras de xeito manual.  <em>Teña en conta que a administración do servidor e todos os outros servidores implicados poden ver as mensaxes.</em>, e as destinatarias poderían facer capturas de pantalla, copiar e voltar a compartir as mensaxes. <em>Non comparta información comprometida en Mastodon.</em></li>
+      <li><em>IPs e outros metadatos</em>: Cando se conecta, gravamos o IP desde onde se conecta, así como o nome do aplicativo desde onde o fai. Todas as sesións conectadas están dispoñibles para revisar e revogar nos axustes. O último enderezo IP utilizado gárdase ate por 12 meses. Tamén poderiamos gardar informes do servidor que inclúan o enderezo IP de cada petición ao servidor.</li>
       </ul>
 
       <hr class="spacer" />
@@ -916,9 +945,9 @@ gl:
       <p>Toda a información que recollemos podería ser utilizada dos seguintes xeitos:</p>
 
       <ul>
-        <li>Para proporcionar a funcionabiliade básica de Mastodon. Só pode interactuar co contido de outra xente e publicar o seu propio contido si está conectada. Por exemplo, podería seguir outra xente e ver as súas publicacións combinadas nunha liña temporal inicial persoalizada.</li>
-        <li>Para axudar a moderar a comunidade, por exemplo comparando o seu enderezo IP con outros coñecidos para evitar esquivar os rexeitamentos ou outras infraccións.</li>
-        <li>O endero de correo electrónico que nos proporciona podería ser utilizado para enviarlle información, notificacións sobre outra xente que interactúa cos seus contidos ou lle envía mensaxes, e para respostar a consultas, e/ou outras cuestións ou peticións.</li>
+      <li>Para proporcionar a funcionabiliade básica de Mastodon. Só pode interactuar co contido de outra xente e publicar o seu propio contido si está conectada. Por exemplo, podería seguir outra xente e ver as súas publicacións combinadas nunha liña temporal inicial persoalizada.</li>
+      <li>Para axudar a moderar a comunidade, por exemplo comparando o seu enderezo IP con outros coñecidos para evitar esquivar os rexeitamentos ou outras infraccións.</li>
+      <li>O endero de correo electrónico que nos proporciona podería ser utilizado para enviarlle información, notificacións sobre outra xente que interactúa cos seus contidos ou lle envía mensaxes, e para respostar a consultas, e/ou outras cuestións ou peticións.</li>
       </ul>
 
       <hr class="spacer" />
@@ -934,8 +963,8 @@ gl:
       <p>Faremos un sincero esforzo en:</p>
 
       <ul>
-        <li>Protexer informes do servidor que conteñan direccións IP das peticións ao servidor, ate a data estos informes gárdanse por non máis de 90 días.</li>
-        <li>Reter os enderezos IP asociados con usuarias rexistradas non máis de 12 meses.</li>
+      <li>Protexer informes do servidor que conteñan direccións IP das peticións ao servidor, ate a data estos informes gárdanse por non máis de 90 días.</li>
+      <li>Reter os enderezos IP asociados con usuarias rexistradas non máis de 12 meses.</li>
       </ul>
 
       <p>Pode solicitar e descargar un ficheiro cos seus contidos, incluíndo publicacións, anexos de medios, imaxes de perfil e imaxe da cabeceira.</p>
diff --git a/config/locales/he.yml b/config/locales/he.yml
index e471c4d02..5e50f738d 100644
--- a/config/locales/he.yml
+++ b/config/locales/he.yml
@@ -4,7 +4,6 @@ he:
     about_hashtag_html: אלו סטטוסים פומביים המתוייגים בתור<strong>#%{hashtag}</strong>. ניתן להגיב, להדהד או לחבב אותם אם יש לך חשבון בכל מקום בפדרציה.
     about_mastodon_html: מסטודון היא רשת חברתית <em>חופשית, מבוססת תוכנה חופשית ("קוד פתוח")</em>. כאלטרנטיבה <em>בלתי ריכוזית</em> לפלטפרומות המסחריות, מסטודון מאפשרת להמנע מהסיכונים הנלווים להפקדת התקשורת שלך בידי חברה יחידה. שמת את מבטחך בשרת אחד &mdash; לא משנה במי בחרת, תמיד אפשר לדבר עם כל שאר המשתמשים. לכל מי שרוצה יש את האפשרות להקים שרת מסטודון עצמאי, ולהשתתף ב<em>רשת החברתית</em> באופן חלק.
     about_this: אודות שרת זה
-    api: API
     apps: יישומונים לנייד
     contact: יצירת קשר
     contact_missing: ללא הגדרה
@@ -17,21 +16,17 @@ he:
     hosted_on: מסטודון שיושב בכתובת %{domain}
     learn_more: מידע נוסף
     source_code: קוד מקור
-    status_count_after: הודעות
     status_count_before: שכתבו
-    user_count_after: משתמשים
     user_count_before: ביתם של
     what_is_mastodon: מה זה מסטודון?
   accounts:
     follow: לעקוב
-    followers: עוקבים
     following: נעקבים
     media: מדיה
     moved_html: "%{name} עבר(ה) אל %{new_profile_link}:"
     nothing_here: אין פה שום דבר!
     people_followed_by: הנעקבים של %{name}
     people_who_follow: העוקבים של %{name}
-    posts: הודעות
     posts_with_replies: חצרוצים ותגובות
     reserved_username: שם המשתמש שמור
     roles:
@@ -146,9 +141,6 @@ he:
       reject_media: חסימת קבצי מדיה
       reject_media_hint: מסירה קבצי מדיה השמורים מקומית ומונעת מהורדת קבצים נוספים בעתיד. לא רלוונטי להשעיות
       show:
-        affected_accounts:
-          one: חשבון אחד במסד הנתונים מושפע
-          other: "%{count} חשהבונות במסד הנתונים מושפעים"
         retroactive:
           silence: הסרת השתקה מכל החשבונות על שרת זה
           suspend: הסרת השעייה מכל החשבונות על שרת זה
@@ -234,18 +226,15 @@ he:
       content: בדיקת אבטחה נכשלה. החסמת עוגיותיך מפנינו?
       title: בדיקת בטיחות נכשלה
     '429': הוחנק
+    '500': 
   exports:
     blocks: רשימת חסימות
-    csv: CSV
     follows: רשימת נעקבים
     mutes: רשימת השתקות
     storage: אחסון מדיה
   generic:
     changes_saved_msg: השינויים נשמרו בהצלחה!
     save_changes: שמור שינויים
-    validation_errors:
-      one: משהו לא לגמרי בסדר עדיין! אנא הציצו על השגיאה מטה
-      other: משהו לא לגמרי בסדר עדיין! אנא הציצו על %{count} השגיאות מטה
   imports:
     preface: ניתן ליבא מידע מסויים כגון כל הנעקבים או המשתמשים החסומים לתוך חשבונך על שרת זה, מתוך קבצים שנוצרו על ידי יצוא משרת אחר כגון רשימת הנעקבים והחסומים שלך.
     success: כל המידע יובא בהצלחה, ויעובד בזמן הקרוב
@@ -254,6 +243,14 @@ he:
       following: רשימת נעקבים
       muting: רשימת השתקות
     upload: יבוא
+  invites:
+    expires_in:
+      '1800': 30 minutes
+      '21600': 6 hours
+      '3600': 1 hour
+      '43200': 12 hours
+      '604800': 1 week
+      '86400': 1 day
   media_attachments:
     validations:
       images_and_video: לא ניתן להוסיף וידאו לחצרוץ שכבר מכיל תמונות
@@ -262,12 +259,6 @@ he:
     digest:
       body: להלן סיכום זריז של הדברים שקרו על מאז ביקורך האחרון ב-%{since}
       mention: "%{name} פנה אליך ב:"
-      new_followers_summary:
-        one: נוסף לך עוקב! סחתיין!
-        other: נוספו לך %{count} עוקבים חדשים! מעולה!
-      subject:
-        one: "התראה חדשה אחת מאז ביקורך האחרון \U0001F418"
-        other: "%{count} התראות חדשות \U0001F418"
     favourite:
       body: 'חצרוצך חובב על ידי %{name}:'
       subject: חצרוצך חובב על ידי %{name}
@@ -283,21 +274,9 @@ he:
     reblog:
       body: 'חצרוצך הודהד על ידי %{name}:'
       subject: חצרוצך הודהד על ידי%{name}
-  number:
-    human:
-      decimal_units:
-        format: "%n%u"
-        units:
-          billion: B
-          million: M
-          quadrillion: Q
-          thousand: K
-          trillion: T
-          unit: ''
   pagination:
     next: הבא
     prev: הקודם
-    truncate: "&hellip;"
   remote_follow:
     acct: נא להקליד שם_משתמש@קהילה מהם ברצונך לעקוב
     missing_resource: לא ניתן למצוא קישורית להפניה לחשבונך
diff --git a/config/locales/hr.yml b/config/locales/hr.yml
index f9c552bce..a4fe62055 100644
--- a/config/locales/hr.yml
+++ b/config/locales/hr.yml
@@ -5,18 +5,13 @@ hr:
     about_this: O ovoj instanci
     contact: Kontakt
     source_code: Izvorni kod
-    status_count_after: statusi
     status_count_before: Tko je autor
-    user_count_after: korisnici
-    user_count_before: Home to
   accounts:
     follow: Slijedi
-    followers: Sljedbenici
     following: Slijedim
     nothing_here: Ovdje nema ničeg!
     people_followed_by: Ljudi koje %{name} slijedi
     people_who_follow: Ljudi koji slijede %{name}
-    posts: Postovi
     unfollow: Prestani slijediti
   application_mailer:
     settings: 'Promijeni e-mail postavke: %{link}'
@@ -44,22 +39,24 @@ hr:
       about_x_years: "%{count}g"
       almost_x_years: "%{count}g"
       half_a_minute: upravo
-      less_than_x_minutes: "%{count}m"
       less_than_x_seconds: upravo
       over_x_years: "%{count}g"
-      x_days: "%{count}d"
-      x_minutes: "%{count}m"
       x_months: "%{count}mj"
       x_seconds: "%{count}sek"
+  errors:
+    '403': You don't have permission to view this page.
+    '404': The page you are looking for isn't here.
+    '410': The page you were looking for doesn't exist here anymore.
+    '422': 
+    '429': Throttled
+    '500': 
   exports:
     blocks: Blokirao si
-    csv: CSV
     follows: Slijediš
     storage: Pohrana media zapisa
   generic:
     changes_saved_msg: Izmjene su uspješno sačuvane!
     save_changes: Sačuvaj izmjene
-    validation_errors: Nešto još uvijek ne štima! Vidi %{count} greške ispod
   imports:
     preface: Možeš uvesti određene podatke kao što su svi ljudi koje slijediš ili blokiraš u svoj račun na ovoj instanci, sa fajlova kreiranih izvozom sa druge instance.
     success: Tvoji podaci su uspješno uploadani i bit će obrađeni u dogledno vrijeme
@@ -67,13 +64,18 @@ hr:
       blocking: Lista blokiranih
       following: Lista onih koje slijedim
       muting: Lista utišanih
-    upload: Upload
+  invites:
+    expires_in:
+      '1800': 30 minutes
+      '21600': 6 hours
+      '3600': 1 hour
+      '43200': 12 hours
+      '604800': 1 week
+      '86400': 1 day
   notification_mailer:
     digest:
       body: Ovo je kratak sažetak propuštenog od tvog prošlog posjeta %{since}
       mention: "%{name} te je spomenuo:"
-      new_followers_summary: Imaš %{count} novih sljedbenika! Prekrašno!
-      subject: "%{count} novih notifikacija od tvog prošlog posjeta \U0001F418"
     favourite:
       body: 'Tvoj status je %{name} označio kao omiljen:'
       subject: "%{name} je označio kao omiljen tvoj status"
@@ -89,17 +91,6 @@ hr:
     reblog:
       body: 'Tvoj status je potaknut od %{name}:'
       subject: "%{name} je potakao tvoj status"
-  number:
-    human:
-      decimal_units:
-        format: "%n%u"
-        units:
-          billion: B
-          million: M
-          quadrillion: Q
-          thousand: K
-          trillion: T
-          unit: ''
   pagination:
     next: Sljedeći
     prev: Prošli
@@ -127,9 +118,6 @@ hr:
   stream_entries:
     reblogged: potaknut
     sensitive_content: Osjetljivi sadržaj
-  time:
-    formats:
-      default: "%b %d, %Y, %H:%M"
   two_factor_authentication:
     description_html: Ako omogućiš <strong>dvo-faktorsku autentifikaciju</strong>, prijavljivanje će zahtjevati da kod sebe imaš svoj mobitel, koji će generirati tokene koje ćeš unijeti.
     disable: Onemogući
diff --git a/config/locales/hu.yml b/config/locales/hu.yml
index b6029eeca..cd6a1692f 100644
--- a/config/locales/hu.yml
+++ b/config/locales/hu.yml
@@ -6,7 +6,6 @@ hu:
     about_this: Rólunk
     contact: Kapcsolat
     contact_missing: Nincs megadva
-    contact_unavailable: N/A
     extended_description_html: |
       <h3>Ez itt a szabályzat helye</h3>
       <p>Még nem állítottál be bővebb leírást.</p>
@@ -14,21 +13,17 @@ hu:
     hosted_on: "%{domain} Mastodon instancia"
     learn_more: Tudj meg többet
     source_code: Forráskód
-    status_count_after: tülköt küldött
     status_count_before: eddig
-    user_count_after: felhasználónk
     user_count_before: Összesen
     what_is_mastodon: Mi a Mastodon?
   accounts:
     follow: Követés
-    followers: Követők
     following: Követed őket
     media: Média
     moved_html: "%{name} ide költözött: %{new_profile_link}"
     nothing_here: Nincs itt semmi!
     people_followed_by: "%{name} követett személyei"
     people_who_follow: "%{name} követői"
-    posts: Tülkök
     posts_with_replies: Tülkök és válaszok
     reserved_username: Ez egy már lefoglalt felhasználónév
     roles:
@@ -43,7 +38,6 @@ hu:
       destroyed_msg: Moderációs bejegyzés törölve!
     accounts:
       are_you_sure: Biztos vagy benne?
-      by_domain: Domain
       confirm: Megerősítés
       confirmed: Megerősítve
       confirming: Megerősítve
@@ -52,7 +46,6 @@ hu:
       disable_two_factor_authentication: Kétlépcsős azonosítás kikapcsolása
       disabled: Kikapcsolva
       display_name: Megjelenített név
-      domain: Domain
       edit: Szerkesztés
       email: E-mail
       email_status: E-mail állapot
@@ -63,7 +56,6 @@ hu:
       followers_url: Követők URL
       follows: Követettek
       inbox_url: Beérkezett üzenetek URL
-      ip: IP
       location:
         all: Összes
         local: Helyi
@@ -102,7 +94,6 @@ hu:
         moderator: Moderátor
         staff: Stáb
         user: Felhasználó
-      salmon_url: Salmon URL
       search: Keresés
       shared_inbox_url: Bejövő üzenetek URL keresése
       show:
@@ -144,7 +135,6 @@ hu:
         update_status: "%{name} frissítette %{target} felhasználó tülkjét"
       title: Audit napló
     custom_emojis:
-      by_domain: Domain
       copied_msg: Sikeresen létrehoztuk a hangulatjel helyi másolatát
       copy: Másolás
       copy_failed_msg: Hangulatjel helyi másolatának létrehozása sikertelen
@@ -161,7 +151,6 @@ hu:
       new:
         title: Új egyedi hangulatjel hozzáadása
       overwrite: Felülírás
-      shortcode: Shortcode
       shortcode_hint: Legalább két karakter, csak betűk, számok és alsóvonás
       title: Egyedi hangulatjelek
       unlisted: Nincs listázva
@@ -172,7 +161,6 @@ hu:
       add_new: Új hozzáadása
       created_msg: A domain-tiltás feldolgozása folyamatban
       destroyed_msg: A domain tiltása feloldva
-      domain: Domain
       new:
         create: Tiltás létrehozása
         hint: A domain-tiltás nem gátolja meg az új fiókok hozzáadását az abatbázishoz, de visszamenőlegesen és automatikusan aktivál bizonyos moderációs szabályokat ezen fiókok esetében.
@@ -199,7 +187,6 @@ hu:
       created_msg: E-mail domain sikeresen hozzáadva a feketelistához
       delete: Törlés
       destroyed_msg: E-mail domain sikeresen eltávolítva a feketelistáról
-      domain: Domain
       new:
         create: Domain hozzáadása
         title: Új e-mail feketelista bejegyzés
@@ -282,11 +269,9 @@ hu:
       title: Felhasználó tülkjei
       with_media: Médiafájlokkal
     subscriptions:
-      callback_url: Callback URL
       confirmed: Megerősítve
       expires_in: Elévül
       last_delivery: Utolsó kézbesítés
-      title: WebSub
       topic: Téma
     title: Karbantartás
   admin_mailer:
@@ -295,7 +280,6 @@ hu:
       subject: 'Új jelentés az alábbi instancián: %{instance} (#%{id})'
   application_mailer:
     notification_preferences: E-mail beállítások módosítása
-    salutation: "%{name},"
     settings: 'E-mail beállítások módosítása: %{link}'
     view: 'Megtekintés:'
     view_profile: Profil megtekintése
@@ -369,7 +353,6 @@ hu:
     noscript_html: A Mastodon webalkalmazás használatához engedélyezned kell a JavaScriptet. A másik megoldás, hogy kipróbálod az egyik, a platformodnak megfelelő <a href="%{apps_path}">alkalmazást</a>.
   exports:
     blocks: Tiltólistádon
-    csv: CSV
     follows: Követettjeid
     mutes: Némításaid
     storage: Médiatároló
@@ -387,7 +370,6 @@ hu:
       following: Követettjeid listája
       muting: Némított felhasználók listája
     upload: Feltöltés
-  in_memoriam_html: In Memoriam.
   invites:
     delete: Visszavonás
     expired: Lejárt
@@ -396,6 +378,7 @@ hu:
       '21600': 6 óra
       '3600': 1 óra
       '43200': 12 óra
+      '604800': 1 week
       '86400': 1 nap
     expires_in_prompt: Soha
     generate: Generálás
@@ -456,26 +439,11 @@ hu:
       body: 'Az állapotod reblogolta %{name}:'
       subject: "%{name} reblogolta az állapotod"
       title: Új reblog
-  number:
-    human:
-      decimal_units:
-        format: "%n%u"
-        units:
-          billion: B
-          million: M
-          quadrillion: Q
-          thousand: K
-          trillion: T
-          unit: " "
   pagination:
     next: Következő
     prev: Előző
-    truncate: "&hellip;"
   preferences:
-    languages: Nyelvek
     other: Egyéb
-    publishing: Közzététel
-    web: Web
   remote_follow:
     acct: Írd be a felhasználódat, amelyről követni szeretnéd felhasznalonev@domain formátumban
     missing_resource: A fiókodnál nem található a szükséges átirányítási URL
@@ -485,40 +453,13 @@ hu:
     activity: Legutóbbi tevékenység
     browser: Böngésző
     browsers:
-      alipay: Alipay
-      blackberry: Blackberry
-      chrome: Chrome
-      edge: Microsoft Edge
-      electron: Electron
-      firefox: Firefox
       generic: Ismeretlen böngésző
-      ie: Internet Explorer
-      micro_messenger: MicroMessenger
       nokia: Nokia S40 Ovi Böngésző
-      opera: Opera
-      otter: Otter
-      phantom_js: PhantomJS
-      qq: QQ Browser
-      safari: Safari
-      uc_browser: UCBrowser
-      weibo: Weibo
     current_session: Jelenlegi munkamenet
     description: "%{browser} az alábbi platformon: %{platform}"
     explanation: Jelenleg az alábbi böngészőkkel vagy bejelentkezve a fiókodba.
-    ip: IP
     platforms:
-      adobe_air: Adobe Air
-      android: Android
-      blackberry: Blackberry
-      chrome_os: ChromeOS
-      firefox_os: Firefox OS
-      ios: iOS
-      linux: Linux
-      mac: Mac
       other: ismeretlen platform
-      windows: Windows
-      windows_mobile: Windows Mobile
-      windows_phone: Windows Phone
     revoke: Visszavonás
     revoke_success: Munkamenet sikeresen visszavonva
     title: Munkamenetek
@@ -543,7 +484,6 @@ hu:
       private: Csak publikus tülköt tűzhetsz ki
       reblog: Reblogolt tülköt nem tudsz kitűzni
     show_more: Mutass többet
-    title: '%{name}: "%{quote}"'
     visibilities:
       private: Csak követőknek
       private_long: A tülk csak követőidnek jelenik meg
diff --git a/config/locales/hy.yml b/config/locales/hy.yml
new file mode 100644
index 000000000..86645a574
--- /dev/null
+++ b/config/locales/hy.yml
@@ -0,0 +1,17 @@
+---
+hy:
+  errors:
+    '403': You don't have permission to view this page.
+    '404': The page you are looking for isn't here.
+    '410': The page you were looking for doesn't exist here anymore.
+    '422': 
+    '429': Throttled
+    '500': 
+  invites:
+    expires_in:
+      '1800': 30 minutes
+      '21600': 6 hours
+      '3600': 1 hour
+      '43200': 12 hours
+      '604800': 1 week
+      '86400': 1 day
diff --git a/config/locales/id.yml b/config/locales/id.yml
index 4323c145f..43721b19b 100644
--- a/config/locales/id.yml
+++ b/config/locales/id.yml
@@ -5,7 +5,6 @@ id:
     about_mastodon_html: Mastodon adalah sebuah jejaring sosial <em>terbuka, open-source</em. Sebuah alternatif <em>desentralisasi</em> dari platform komersial, menjauhkan anda resiko dari sebuah perusahaan yang memonopoli komunikasi anda. Pilih server yang anda percayai &mdash; apapun yang anda pilih, anda tetap dapat berinteraksi dengan semua orang. Semua orang dapat menjalankan server Mastodon sendiri dan berpartisipasi dalam <em>jejaring sosial</em> dengan mudah.
     about_this: Tentang server ini
     administered_by: 'Dikelola oleh:'
-    api: API
     apps: Aplikasi hp
     contact: Kontak
     contact_missing: Belum diset
@@ -20,25 +19,21 @@ id:
     privacy_policy: Kebijakan Privasi
     source_code: Kode sumber
     status_count_after:
-      one: status
       other: status
     status_count_before: Yang telah menulis
     terms: Kebijakan layanan
     user_count_after:
-      one: pengguna
       other: pengguna
     user_count_before: Tempat bernaung bagi
     what_is_mastodon: Apa itu Mastodon?
   accounts:
     follow: Ikuti
     followers:
-      one: Pengikut
       other: Pengikut
     following: Mengikuti
     joined: Bergabung pada %{date}
     last_active: terakhir aktif
     link_verified_on: Kepemilikan tautan ini telah dicek pada %{date}
-    media: Media
     moved_html: "%{name} telah pindah ke %{new_profile_link}:"
     network_hidden: Informasi ini tidak tersedia
     nothing_here: Tidak ada apapun disini!
@@ -47,14 +42,11 @@ id:
     pin_errors:
       following: Anda harus mengikuti orang yang ingin anda endorse
     posts:
-      one: Toot
       other: Toot
     posts_tab_heading: Toot
     posts_with_replies: Toot dan balasan
     reserved_username: Nama pengguna telah dipesan
     roles:
-      admin: Admin
-      bot: Bot
       moderator: Moderator
     unfollow: Berhenti mengikuti
   admin:
@@ -68,8 +60,6 @@ id:
       destroyed_msg: Catatan moderasi berhasil dihapus!
     accounts:
       are_you_sure: Anda yakin?
-      avatar: Avatar
-      by_domain: Domain
       change_email:
         changed_msg: Email akun ini berhasil diubah!
         current_email: Email saat ini
@@ -85,7 +75,6 @@ id:
       disable_two_factor_authentication: Nonaktifkan 2FA
       disabled: Dinonaktifkan
       display_name: Nama
-      domain: Domain
       edit: Ubah
       email: E-mail
       email_status: Status Email
@@ -97,12 +86,10 @@ id:
       follows: Mengikut
       inbox_url: URL Kotak masuk
       invited_by: Diundang oleh
-      ip: IP
       joined: Bergabung
       location:
         all: Semua
         local: Lokal
-        remote: Remote
         title: Lokasi
       login_status: Status login
       media_attachments: Lampiran media
@@ -132,13 +119,10 @@ id:
         already_confirmed: Pengguna ini sudah dikonfirmasi
         send: Kirim ulang email konfirmasi
         success: Email konfirmasi berhasil dikirim!
-      reset: Reset
       reset_password: Reset kata sandi
       resubscribe: Langganan ulang
       role: Hak akses
       roles:
-        admin: Administrator
-        moderator: Moderator
         staff: Staf
         user: Pengguna
       salmon_url: URL Salmon
@@ -158,12 +142,10 @@ id:
       unsubscribe: Berhenti langganan
       username: Nama pengguna
       warn: Beri Peringatan
-      web: Web
     domain_blocks:
       add_new: Tambah
       created_msg: Pemblokiran domain sedang diproses
       destroyed_msg: Pemblokiran domain telah dibatalkan
-      domain: Domain
       new:
         create: Buat pemblokiran
         hint: Pemblokiran domain tidak akan menghentikan pembuatan akun dalam database, tapi kami akan memberikan moderasi otomatis pada akun-akun tersebut.
@@ -176,13 +158,11 @@ id:
       reject_media_hint: Hapus file media yang tersimpan dan menolak semua unduhan nantinya. Tidak terpengaruh dengan suspen
       show:
         affected_accounts:
-          one: Satu akun di dalam database terpengaruh
           other: "%{count} akun dalam database terpengaruh"
         retroactive:
           silence: Hapus pendiaman terhadap akun pada domain ini
           suspend: Hapus suspen terhadap akun pada domain ini
         title: Hapus pemblokiran domain %{domain}
-        undo: Undo
     instances:
       title: Server yang diketahui
     reports:
@@ -193,7 +173,6 @@ id:
       reported_account: Akun yang dilaporkan
       reported_by: Dilaporkan oleh
       resolved: Terseleseikan
-      status: Status
       title: Laporan
       unresolved: Belum Terseleseikan
     settings:
@@ -213,11 +192,9 @@ id:
       site_title: Judul Situs
       title: Pengaturan situs
     subscriptions:
-      callback_url: Callback URL
       confirmed: Dikonfirmasi
       expires_in: Kadaluarsa dalam
       last_delivery: Terakhir dikirim
-      title: WebSub
       topic: Topik
     title: Administrasi
   application_mailer:
@@ -260,16 +237,16 @@ id:
     '422':
       content: Verifikasi keamanan gagal. Apa anda memblokir cookie?
       title: Verifikasi keamanan gagal
+    '429': Throttled
+    '500': 
   exports:
     blocks: Anda blokir
-    csv: CSV
     follows: Anda ikuti
     mutes: Anda bisukan
     storage: Penyimpanan media
   generic:
     changes_saved_msg: Perubahan berhasil disimpan!
     save_changes: Simpan perubahan
-    validation_errors: Ada yang tidak beres! Mohon tinjau error dibawah ini
   imports:
     preface: Anda bisa mengimpor data tertentu seperti orang-orang yang anda ikuti atau anda blokir di server ini, dari file yang dibuat oleh fitur expor di server lain.
     success: Data anda berhasil diupload dan akan diproses sesegera mungkin
@@ -278,6 +255,14 @@ id:
       following: Daftar diikuti
       muting: Daftar didiamkan
     upload: Unggah
+  invites:
+    expires_in:
+      '1800': 30 minutes
+      '21600': 6 hours
+      '3600': 1 hour
+      '43200': 12 hours
+      '604800': 1 week
+      '86400': 1 day
   media_attachments:
     validations:
       images_and_video: Tidak bisa melampirkan video pada status yang telah memiliki gambar
@@ -287,10 +272,8 @@ id:
       body: Ini adalah ringkasan singkat yang anda lewatkan pada sejak kunjungan terakhir anda pada %{since}
       mention: "%{name} menyebut anda di:"
       new_followers_summary:
-        one: Anda mendapatkan satu pengikut baru! Hore!
         other: Anda mendapatkan %{count} pengikut baru! Luar biasa!
       subject:
-        one: "1 notifikasi baru sejak kunjungan terakhir anda pada \U0001F418"
         other: "%{count} notifikasi baru sejak kunjungan terakhir anda pada \U0001F418"
     favourite:
       body: 'Status anda disukai oleh %{name}:'
@@ -307,21 +290,9 @@ id:
     reblog:
       body: 'Status anda di-boost oleh %{name}:'
       subject: "%{name} mem-boost status anda"
-  number:
-    human:
-      decimal_units:
-        format: "%n%u"
-        units:
-          billion: B
-          million: M
-          quadrillion: Q
-          thousand: K
-          trillion: T
-          unit: ''
   pagination:
     next: Selanjutnya
     prev: Sebelumnya
-    truncate: "&hellip;"
   remote_follow:
     acct: Masukkan namapengguna@domain yang akan anda ikuti
     missing_resource: Tidak dapat menemukan URL redirect dari akun anda
diff --git a/config/locales/io.yml b/config/locales/io.yml
index b5edb2aa3..559bf0f53 100644
--- a/config/locales/io.yml
+++ b/config/locales/io.yml
@@ -5,97 +5,35 @@ io:
     about_this: Pri ta instaluro
     contact: Kontaktar
     source_code: Fontkodexo
-    status_count_after: mesaji
     status_count_before: Qua publikigis
-    user_count_after: uzeri
     user_count_before: Hemo di
   accounts:
     follow: Sequar
-    followers: Sequanti
     following: Sequati
     nothing_here: Esas nulo hike!
     people_followed_by: Sequati da %{name}
     people_who_follow: Sequanti di %{name}
-    posts: Mesaji
     unfollow: Dessequar
   admin:
     accounts:
       are_you_sure: Ka tu esas certa?
-      display_name: Display name
-      domain: Domain
-      edit: Edit
       email: E-mail
-      feed_url: Feed URL
-      followers: Followers
-      follows: Follows
-      location:
-        all: All
-        local: Local
-        remote: Remote
-        title: Location
-      media_attachments: Media attachments
-      moderation:
-        all: All
-        silenced: Silenced
-        suspended: Suspended
-        title: Moderation
-      most_recent_activity: Most recent activity
-      most_recent_ip: Most recent IP
-      not_subscribed: Not subscribed
       perform_full_suspension: Perform full suspension
-      profile_url: Profile URL
-      public: Public
-      push_subscription_expires: PuSH subscription expires
-      reset_password: Reset password
-      salmon_url: Salmon URL
       show:
         created_reports: Reports created by this account
         targeted_reports: Reports made about this account
-      silence: Silence
-      statuses: Statuses
-      title: Accounts
-      undo_silenced: Undo silence
-      undo_suspension: Undo suspension
-      username: Username
-      web: Web
     domain_blocks:
       add_new: Add new
-      created_msg: Domain block is now being processed
-      destroyed_msg: Domain block has been undone
-      domain: Domain
       new:
-        create: Create block
-        hint: The domain block will not prevent creation of account entries in the database, but will retroactively and automatically apply specific moderation methods on those accounts.
         severity:
           desc_html: "<strong>Silence</strong> will make the account's posts invisible to anyone who isn't following them. <strong>Suspend</strong> will remove all of the account's content, media, and profile data."
-          silence: Silence
-          suspend: Suspend
-        title: New domain block
-      reject_media: Reject media files
-      reject_media_hint: Removes locally stored media files and refuses to download any in the future. Irrelevant for suspensions
       show:
-        affected_accounts:
-          one: One account in the database affected
-          other: "%{count} accounts in the database affected"
         retroactive:
           silence: Unsilence all existing accounts from this domain
           suspend: Unsuspend all existing accounts from this domain
-        title: Undo domain block for %{domain}
-        undo: Undo
       undo: Undo
     instances:
       title: Known Instances
-    reports:
-      comment:
-        none: None
-      mark_as_resolved: Mark as resolved
-      report: 'Report #%{id}'
-      reported_account: Reported account
-      reported_by: Reported by
-      resolved: Resolved
-      status: Status
-      title: Reports
-      unresolved: Unresolved
     settings:
       contact_information:
         email: Enter a public e-mail address
@@ -103,7 +41,6 @@ io:
       registrations:
         closed_message:
           desc_html: Displayed on frontpage when registrations are closed<br>You can use HTML tags
-          title: Closed registration message
       site_description:
         desc_html: Displayed as a paragraph on the frontpage and used as a meta tag.<br>You can use HTML tags, in particular <code>&lt;a&gt;</code> and <code>&lt;em&gt;</code>.
         title: Site description
@@ -112,14 +49,6 @@ io:
         title: Extended site description
       site_title: Site title
       title: Site Settings
-    subscriptions:
-      callback_url: Callback URL
-      confirmed: Confirmed
-      expires_in: Expires in
-      last_delivery: Last delivery
-      title: WebSub
-      topic: Topic
-    title: Administration
   application_mailer:
     settings: 'Chanjar la retpost-mesajala preferi: %{link}'
     view: 'Vidar:'
@@ -141,29 +70,18 @@ io:
     title: Sequar %{acct}
   datetime:
     distance_in_words:
-      about_x_hours: "%{count}h"
-      about_x_months: "%{count}mo"
-      about_x_years: "%{count}y"
-      almost_x_years: "%{count}y"
       half_a_minute: Jus
-      less_than_x_minutes: "%{count}m"
       less_than_x_seconds: Jus
-      over_x_years: "%{count}y"
-      x_days: "%{count}d"
-      x_minutes: "%{count}m"
-      x_months: "%{count}mo"
-      x_seconds: "%{count}s"
   errors:
+    '403': You don't have permission to view this page.
     '404': La pagino quan tu serchas ne existas.
     '410': La pagino quan tu serchas ne plus existas.
-    '422':
-      content: Security verification failed. Are you blocking cookies?
-      title: Security verification failed
+    '422': 
+    '429': Throttled
+    '500': 
   exports:
     blocks: Tu blokusas
-    csv: CSV
     follows: Tu sequas
-    mutes: You mute
     storage: Konservado di kontenajo
   generic:
     changes_saved_msg: Chanji senprobleme konservita!
@@ -177,12 +95,15 @@ io:
     types:
       blocking: Listo de blokusiti
       following: Listo de sequati
-      muting: Muting list
     upload: Kargar
-  media_attachments:
-    validations:
-      images_and_video: Cannot attach a video to a status that already contains images
-      too_many: Cannot attach more than 4 files
+  invites:
+    expires_in:
+      '1800': 30 minutes
+      '21600': 6 hours
+      '3600': 1 hour
+      '43200': 12 hours
+      '604800': 1 week
+      '86400': 1 day
   notification_mailer:
     digest:
       body: Yen mikra rezumo di to, depos ke tu laste vizitis en %{since}
@@ -208,21 +129,9 @@ io:
     reblog:
       body: "%{name} diskonocigis tua mesajo:"
       subject: "%{name} diskonocigis tua mesajo"
-  number:
-    human:
-      decimal_units:
-        format: "%n%u"
-        units:
-          billion: B
-          million: M
-          quadrillion: Q
-          thousand: K
-          trillion: T
-          unit: ''
   pagination:
     next: Sequanta
     prev: Preiranta
-    truncate: "&hellip;"
   remote_follow:
     acct: Enpozez tua uzernomo@instaluro de ube tu volas sequar ta uzero
     missing_resource: La URL di plussendado ne povis esar trovita
@@ -247,23 +156,13 @@ io:
   stream_entries:
     reblogged: diskonocigita
     sensitive_content: Titiliva kontenajo
-  time:
-    formats:
-      default: "%b %d, %Y, %H:%M"
   two_factor_authentication:
-    code_hint: Enter the code generated by your authenticator app to confirm
     description_html: Se tu posibligas <strong>dufaktora autentikigo</strong>, tu bezonos tua poshtelefonilo por enirar, nam ol kreos nombri, quin tu devos enskribar.
     disable: Extingar
     enable: Acendar
-    enabled_success: Two-factor authentication successfully enabled
     generate_recovery_codes: Generate Recovery Codes
     instructions_html: "<strong>Skanez ta QR-kodexo per Google Authenticator o per simila apliko di tua poshtelefonilo</strong>. De lore, la apliko kreos nombri, quin tu devos enskribar."
-    lost_recovery_codes: Recovery codes allow you to regain access to your account if you lose your phone. If you've lost your recovery codes, you can regenerate them here. Your old recovery codes will be invalidated.
-    manual_instructions: 'If you can''t scan the QR code and need to enter it manually, here is the plain-text secret:'
-    recovery_codes_regenerated: Recovery codes successfully regenerated
     recovery_instructions_html: If you ever lose access to your phone, you can use one of the recovery codes below to regain access to your account. Keep the recovery codes safe, for example by printing them and storing them with other important documents.
-    setup: Set up
-    wrong_code: The entered code was invalid! Are server time and device time correct?
   users:
     invalid_email: La retpost-adreso ne esas valida
     invalid_otp_token: La dufaktora autentikigila kodexo ne esas valida
diff --git a/config/locales/it.yml b/config/locales/it.yml
index 508b8a0dc..1d1238056 100644
--- a/config/locales/it.yml
+++ b/config/locales/it.yml
@@ -4,9 +4,11 @@ it:
     about_hashtag_html: Questi sono i toot pubblici etichettati con <strong>#%{hashtag}</strong>. Puoi interagire con loro se hai un account nel fediverse.
     about_mastodon_html: Mastodon è un social network <em>gratuito e open-source</em>. Un'alternativa <em>decentralizzata</em> alle piattaforme commerciali che evita che una singola compagnia monopolizzi il tuo modo di comunicare. Scegli un server di cui ti fidi &mdash; qualunque sia la tua scelta, potrai interagire con chiunque altro. Chiunque può sviluppare un suo server Mastodon e partecipare alla vita del <em>social network</em>.
     about_this: A proposito di questo server
+    active_count_after: attivo
+    active_footnote: Utenti Attivi Mensili (MAU)
     administered_by: 'Amministrato da:'
-    api: API
     apps: Applicazioni Mobile
+    apps_platforms: Usa Mastodon da iOS, Android e altre piattaforme
     contact: Contatti
     contact_missing: Non impostato
     contact_unavailable: N/D
@@ -15,14 +17,13 @@ it:
       <h3>Un buon posto per le regole</h3>
       <p>La descrizione estesa non è ancora stata preparata.</p>
     generic_description: "%{domain} è un server nella rete"
+    get_apps: Prova l'app per smartphone
     hosted_on: Mastodon ospitato su %{domain}
     learn_more: Scopri altro
     privacy_policy: Politica della privacy
     source_code: Codice sorgente
-    status_count_after:
-      one: status
-      other: status
     status_count_before: Che hanno pubblicato
+    tagline: Segui vecchi amici e trovane nuovi
     terms: Termini di Servizio
     user_count_after:
       one: utente
@@ -39,7 +40,6 @@ it:
     joined: Dal %{date}
     last_active: ultima attività
     link_verified_on: La proprietà di questo link è stata controllata il %{date}
-    media: Media
     moved_html: "%{name} è stato spostato su %{new_profile_link}:"
     network_hidden: Questa informazione non e' disponibile
     nothing_here: Qui non c'è nulla!
@@ -47,15 +47,11 @@ it:
     people_who_follow: Persone che seguono %{name}
     pin_errors:
       following: Devi gia seguire la persona che vuoi promuovere
-    posts:
-      one: Toot
-      other: Toot
     posts_tab_heading: Toot
     posts_with_replies: Toot e risposte
     reserved_username: Il nome utente è gia stato preso
     roles:
       admin: Amministratore
-      bot: Bot
       moderator: Moderatore
     unfollow: Non seguire più
   admin:
@@ -69,7 +65,6 @@ it:
       destroyed_msg: Nota di moderazione distrutta con successo!
     accounts:
       are_you_sure: Sei sicuro?
-      avatar: Avatar
       by_domain: Dominio
       change_email:
         changed_msg: Account email cambiato con successo!
@@ -89,7 +84,6 @@ it:
       display_name: Nome visualizzato
       domain: Dominio
       edit: Modifica
-      email: Email
       email_status: Stato email
       enable: Abilita
       enabled: Abilitato
@@ -100,7 +94,6 @@ it:
       header: Intestazione
       inbox_url: URL inbox
       invited_by: Invitato da
-      ip: IP
       joined: Unito
       location:
         all: Tutto
@@ -162,7 +155,6 @@ it:
       unsubscribe: Annulla l'iscrizione
       username: Nome utente
       warn: Avverti
-      web: Web
     action_logs:
       actions:
         assigned_to_self_report: "%{name} ha assegnato il rapporto %{target} a se stesso"
@@ -196,7 +188,6 @@ it:
         update_custom_emoji: "%{name} ha aggiornato l'emoji %{target}"
         update_status: "%{name} stato aggiornato da %{target}"
       deleted_status: "(stato cancellato)"
-      title: Audit log
     custom_emojis:
       by_domain: Dominio
       copied_msg: Creata con successo una copia locale dell'emoji
@@ -207,7 +198,6 @@ it:
       destroyed_msg: Emoji distrutto con successo!
       disable: Disabilita
       disabled_msg: Questa emoji è stata disabilitata con successo
-      emoji: Emoji
       enable: Abilita
       enabled_msg: Questa emoji è stata abilitata con successo
       image_hint: PNG fino a 50 KB
@@ -215,7 +205,6 @@ it:
       new:
         title: Aggiungi nuovo emoji personalizzato
       overwrite: Sovrascrivi
-      shortcode: Shortcode
       shortcode_hint: Almeno due caratteri, solo caratteri alfanumerici e trattino basso
       title: Emoji personalizzate
       unlisted: Non elencato
@@ -223,7 +212,6 @@ it:
       updated_msg: Emoji aggiornata con successo!
       upload: Carica
     dashboard:
-      backlog: backlogged jobs
       config: Configurazione
       feature_deletions: Cancellazioni di account
       feature_invites: Link di invito
@@ -236,9 +224,7 @@ it:
       recent_users: Utenti Recenti
       search: Ricerca testo intero
       single_user_mode: Modalita utente singolo
-      software: Software
       space: Utilizzo dello spazio
-      title: Dashboard
       total_users: utenti totali
       trends: Tendenze
       week_interactions: interazioni per questa settimana
@@ -322,14 +308,12 @@ it:
       pending: In attesa dell'approvazione del ripetitore
       save_and_enable: Salva e attiva
       setup: Crea una connessione con un ripetitore
-      status: Status
       title: Ripetitori
     report_notes:
       created_msg: Nota rapporto creata!
       destroyed_msg: Nota rapporto cancellata!
     reports:
       account:
-        note: note
         report: rapporto
       action_taken_by: Azione intrapresa da
       are_you_sure: Sei sicuro?
@@ -383,7 +367,7 @@ it:
         title: Mostra media sensibili nella anteprime OpenGraph
       profile_directory:
         desc_html: Permetti agli utenti di essere trovati
-        title: Attiva directory del profilo
+        title: Attiva directory dei profili
       registrations:
         closed_message:
           desc_html: Mostrato nella pagina iniziale quando le registrazioni sono chiuse. Puoi usare tag HTML
@@ -426,8 +410,6 @@ it:
         nsfw_off: Segna come non sensibile
         nsfw_on: Segna come sensibile
       failed_to_execute: Impossibile eseguire
-      media:
-        title: Media
       no_media: Nessun media
       no_status_selected: Nessun status è stato modificato perché nessuno era stato selezionato
       title: Gli status dell'account
@@ -440,8 +422,7 @@ it:
     tags:
       accounts: Account
       hidden: Nascosto
-      hide: Nascondi nella directory
-      name: Hashtag
+      hide: Non mostrare nella directory
       title: Hashtag
       unhide: Mostra nella directory
       visible: Visibile
@@ -454,7 +435,6 @@ it:
       title: Gestisci avvisi predefiniti
   application_mailer:
     notification_preferences: Cambia preferenze email
-    salutation: "%{name},"
     settings: 'Cambia le impostazioni per le email: %{link}'
     view: 'Guarda:'
     view_profile: Mostra profilo
@@ -467,7 +447,6 @@ it:
     token_regenerated: Token di accesso rigenerato
     warning: Fa' molta attenzione con questi dati. Non fornirli mai a nessun altro!
   auth:
-    change_password: Password
     confirm_email: Conferma email
     delete_account: Elimina account
     delete_account_html: Se desideri cancellare il tuo account, puoi <a href="%{path}">farlo qui</a>. Ti sarà chiesta conferma.
@@ -532,6 +511,7 @@ it:
     '422':
       content: Verifica di sicurezza non riuscita. Stai bloccando i cookies?
       title: Verifica di sicurezza non riuscita
+    '429': Throttled
     '500':
       content: Siamo spiacenti, ma qualcosa non ha funzionato dal nostro lato.
       title: Questa pagina non è corretta
@@ -545,7 +525,6 @@ it:
       request: Richiedi il tuo archivio
       size: Dimensioni
     blocks: Stai bloccando
-    csv: CSV
     domain_blocks: Blocchi di dominio
     follows: Stai seguendo
     lists: Liste
@@ -594,7 +573,6 @@ it:
       following: Lista dei seguaci
       muting: Lista dei silenziati
     upload: Carica
-  in_memoriam_html: In Memoriam.
   invites:
     delete: Disattiva
     expired: Scaduto
@@ -665,23 +643,11 @@ it:
       body: 'Il tuo status è stato condiviso da %{name}:'
       subject: "%{name} ha condiviso il tuo status"
       title: Nuova condivisione
-  number:
-    human:
-      decimal_units:
-        format: "%n%u"
-        units:
-          billion: B
-          million: M
-          quadrillion: Q
-          thousand: K
-          trillion: T
-          unit: ''
   pagination:
     newer: Più recente
     next: Avanti
     older: Più vecchio
     prev: Indietro
-    truncate: "&hellip;"
   polls:
     errors:
       already_voted: Hai già votato in questo sondaggio
@@ -692,10 +658,7 @@ it:
       too_few_options: deve avere più di un elemento
       too_many_options: non può contenere più di %{max} elementi
   preferences:
-    languages: Lingue
     other: Altro
-    publishing: Pubblicazione
-    web: Web
   remote_follow:
     acct: Inserisci il tuo username@dominio da cui vuoi seguire questo utente
     missing_resource: Impossibile trovare l'URL di reindirizzamento richiesto per il tuo account
@@ -722,33 +685,13 @@ it:
     too_soon: La data di pubblicazione deve essere nel futuro
   sessions:
     activity: Ultima attività
-    browser: Browser
     browsers:
-      blackberry: Blackberry
-      chrome: Chrome
-      edge: Microsoft Edge
-      firefox: Firefox
       generic: Browser sconosciuto
-      ie: Internet Explorer
-      opera: Opera
-      safari: Safari
     current_session: Sessione corrente
     description: "%{browser} su %{platform}"
     explanation: Questi sono i browser da cui attualmente è avvenuto l'accesso al tuo account Mastodon.
-    ip: IP
     platforms:
-      adobe_air: Adobe Air
-      android: Android
-      blackberry: Blackberry
-      chrome_os: ChromeOS
-      firefox_os: Firefox OS
-      ios: iOS
-      linux: Linux
-      mac: Mac
       other: piattaforma sconosciuta
-      windows: Windows
-      windows_mobile: Windows Mobile
-      windows_phone: Windows Phone
     title: Sessioni
   settings:
     authorized_apps: Applicazioni autorizzate
@@ -769,9 +712,6 @@ it:
       image:
         one: "%{count} immagine"
         other: "%{count} immagini"
-      video:
-        one: "%{count} video"
-        other: "%{count} video"
     boosted_from_html: Condiviso da %{acct_link}
     disallowed_hashtags:
       one: 'contiene un hashtag non permesso: %{tags}'
@@ -808,9 +748,6 @@ it:
     contrast: Mastodon (contrasto elevato)
     default: Mastodon (scuro)
     mastodon-light: Mastodon (chiaro)
-  time:
-    formats:
-      default: "%b %d, %Y, %H:%M"
   two_factor_authentication:
     code_hint: Inserisci il codice generato dalla tua app di autenticazione
     description_html: Se abiliti <strong>l'autorizzazione a due fattori</strong>, entrare nel tuo account ti richiederà di avere vicino il tuo telefono, il quale ti genererà un codice per eseguire l'accesso.
diff --git a/config/locales/ja.yml b/config/locales/ja.yml
index 5c6009f6d..895610d16 100644
--- a/config/locales/ja.yml
+++ b/config/locales/ja.yml
@@ -30,13 +30,11 @@ ja:
     server_stats: 'サーバー統計:'
     source_code: ソースコード
     status_count_after:
-      one: トゥート
       other: トゥート
     status_count_before: トゥート数
     tagline: Follow friends and discover new ones
     terms: 利用規約
     user_count_after:
-      one: 人
       other: 人
     user_count_before: ユーザー数
     what_is_mastodon: Mastodon とは?
@@ -44,7 +42,6 @@ ja:
     choices_html: "%{name} によるおすすめ:"
     follow: フォロー
     followers:
-      one: フォロワー
       other: フォロワー
     following: フォロー中
     joined: "%{date} に登録"
@@ -59,7 +56,6 @@ ja:
     pin_errors:
       following: おすすめしたい人はあなたが既にフォローしている必要があります
     posts:
-      one: トゥート
       other: トゥート
     posts_tab_heading: トゥート
     posts_with_replies: トゥートと返信
@@ -174,6 +170,7 @@ ja:
       statuses: トゥート数
       subscribe: 購読する
       suspended: 停止済み
+      time_in_queue: "%{time} 待ち"
       title: アカウント
       unconfirmed_email: 確認待ちのメールアドレス
       undo_silenced: サイレンスから戻す
@@ -290,7 +287,6 @@ ja:
         suspend: 停止中
       show:
         affected_accounts:
-          one: データベース中の一つのアカウントに影響します
           other: データベース中の%{count}個のアカウントに影響します
         retroactive:
           silence: このドメインの既存の影響するアカウントのサイレンスを戻す
@@ -315,7 +311,6 @@ ja:
       by_domain: ドメイン
       delivery_available: 配送可能
       known_accounts:
-        one: 既知のアカウント数 %{count}
         other: 既知のアカウント数 %{count}
       moderation:
         all: すべて
@@ -498,6 +493,12 @@ ja:
       body: "%{reporter} が %{target} を通報しました"
       body_remote: "%{domain} の誰かが %{target} を通報しました"
       subject: "%{instance} の新しい通報 (#%{id})"
+  appearance:
+    advanced_web_interface: 上級者向け UI
+    advanced_web_interface_hint: ディスプレイを幅いっぱいまで活用したい場合、上級者向け UI をおすすめします。ホーム、通知、連合タイムライン、更にはリストやハッシュタグなど、様々な異なるカラムから望む限りの情報を一度に受け取れるような設定が可能になります。
+    animations_and_accessibility: アニメーションとアクセシビリティー
+    confirmation_dialogs: 確認ダイアログ
+    sensitive_content: 閲覧注意コンテンツ
   application_mailer:
     notification_preferences: メール設定の変更
     salutation: "%{name} さん"
@@ -579,7 +580,6 @@ ja:
     explore_mastodon: "%{title}を探索"
     how_to_enable: あなたはディレクトリへの掲載を選択していません。下記から選択できます。ハッシュタグカラムに掲載するにはプロフィール文にハッシュタグを使用してください。
     people:
-      one: "%{count} 人"
       other: "%{count} 人"
   errors:
     '403': このページを表示する権限がありません。
@@ -643,7 +643,6 @@ ja:
     save_changes: 変更を保存
     use_this: これを使う
     validation_errors:
-      one: エラーが発生しました! 以下のエラーを確認してください
       other: エラーが発生しました! 以下の%{count}個のエラーを確認してください
   html_validator:
     invalid_markup: '無効なHTMLマークアップが含まれています: %{error}'
@@ -694,7 +693,6 @@ ja:
     generate: 作成
     invited_by: '次の人に招待されました:'
     max_uses:
-      one: '1'
       other: "%{count}"
     max_uses_prompt: 無制限
     prompt: リンクを生成・共有してこのサーバーへの新規登録を受け付けることができます
@@ -722,10 +720,8 @@ ja:
       body: '最後のログイン(%{since})からの出来事:'
       mention: "%{name} さんがあなたに返信しました:"
       new_followers_summary:
-        one: また、離れている間に新たなフォロワーを獲得しました!
         other: また、離れている間に%{count} 人の新たなフォロワーを獲得しました!
       subject:
-        one: "新しい1件の通知 \U0001F418"
         other: "新しい%{count}件の通知 \U0001F418"
       title: 不在の間に…
     favourite:
@@ -777,10 +773,9 @@ ja:
       too_few_options: は複数必要です
       too_many_options: は%{max}個までです
   preferences:
-    languages: 言語
     other: その他
-    publishing: 投稿
-    web: ウェブ
+    posting_defaults: デフォルトの投稿設定
+    public_timelines: 公開タイムライン
   relationships:
     activity: 活動
     dormant: 非アクティブ
@@ -863,7 +858,7 @@ ja:
   settings:
     account: アカウント
     account_settings: セキュリティ
-    appearance: プロフィールを編集
+    appearance: 外観
     authorized_apps: 認証済みアプリ
     back: Mastodon に戻る
     delete: アカウントの削除
@@ -885,15 +880,12 @@ ja:
     attached:
       description: '添付: %{attached}'
       image:
-        one: "%{count} 枚の画像"
         other: "%{count} 枚の画像"
       video:
-        one: "%{count} 本の動画"
         other: "%{count} 本の動画"
     boosted_from_html: "%{acct_link} からブースト"
     content_warning: '閲覧注意: %{warning}'
     disallowed_hashtags:
-      one: '許可されていないハッシュタグが含まれています: %{tags}'
       other: '許可されていないハッシュタグが含まれています: %{tags}'
     language_detection: 自動検出
     open_in_web: Webで開く
@@ -905,7 +897,6 @@ ja:
       reblog: ブーストを固定することはできません
     poll:
       total_votes:
-        one: "%{count}票"
         other: "%{count}票"
       vote: 投票
     show_more: もっと見る
@@ -928,10 +919,10 @@ ja:
       <h3 id="collect">どのような情報を収集しますか?</h3>
 
       <ul>
-        <li><em>基本的なアカウント情報</em>: 当サイトに登録すると、ユーザー名・メールアドレス・パスワードの入力を求められることがあります。また表示名や自己紹介・プロフィール画像・ヘッダー画像といった追加のプロフィールを登録できます。ユーザー名・表示名・自己紹介・プロフィール画像・ヘッダー画像は常に公開されます。</li>
-        <li><em>投稿・フォロー・その他公開情報</em>: フォローしているユーザーの一覧は一般公開されます。フォロワーも同様です。メッセージを投稿する際、日時だけでなく投稿に使用したアプリケーション名も記録されます。メッセージには写真や動画といった添付メディアを含むことがあります。「公開」や「未収載」の投稿は一般公開されます。プロフィールに投稿を載せるとそれもまた公開情報となります。投稿はフォロワーに配信されます。場合によっては他のサーバーに配信され、そこにコピーが保存されることを意味します。投稿を削除した場合も同様にフォロワーに配信されます。他の投稿をリブログやお気に入り登録する行動は常に公開されます。</li>
-        <li><em>「ダイレクト」と「フォロワー限定」投稿</em>: すべての投稿はサーバーに保存され、処理されます。「フォロワー限定」投稿はフォロワーと投稿に書かれたユーザーに配信されます。「ダイレクト」投稿は投稿に書かれたユーザーにのみ配信されます。場合によっては他のサーバーに配信され、そこにコピーが保存されることを意味します。私たちはこれらの閲覧を一部の許可された者に限定するよう誠意を持って努めます。しかし他のサーバーにおいても同様に扱われるとは限りません。したがって、相手の所属するサーバーを吟味することが重要です。設定で新しいフォロワーの承認または拒否を手動で行うよう切り替えることもできます。<em>サーバー管理者は「ダイレクト」や「フォロワー限定」投稿も閲覧する可能性があることを忘れないでください。</em>また受信者がスクリーンショットやコピー、もしくは共有する可能性があることを忘れないでください。<em>いかなる危険な情報もMastodon上で共有しないでください。</em></li>
-        <li><em>IPアドレスやその他メタデータ</em>: ログインする際IPアドレスだけでなくブラウザーアプリケーション名を記録します。ログインしたセッションはすべてユーザー設定で見直し、取り消すことができます。使用されている最新のIPアドレスは最大12ヵ月間保存されます。またサーバーへのIPアドレスを含むすべてのリクエストのログを保持することがあります。</li>
+      <li><em>基本的なアカウント情報</em>: 当サイトに登録すると、ユーザー名・メールアドレス・パスワードの入力を求められることがあります。また表示名や自己紹介・プロフィール画像・ヘッダー画像といった追加のプロフィールを登録できます。ユーザー名・表示名・自己紹介・プロフィール画像・ヘッダー画像は常に公開されます。</li>
+      <li><em>投稿・フォロー・その他公開情報</em>: フォローしているユーザーの一覧は一般公開されます。フォロワーも同様です。メッセージを投稿する際、日時だけでなく投稿に使用したアプリケーション名も記録されます。メッセージには写真や動画といった添付メディアを含むことがあります。「公開」や「未収載」の投稿は一般公開されます。プロフィールに投稿を載せるとそれもまた公開情報となります。投稿はフォロワーに配信されます。場合によっては他のサーバーに配信され、そこにコピーが保存されることを意味します。投稿を削除した場合も同様にフォロワーに配信されます。他の投稿をリブログやお気に入り登録する行動は常に公開されます。</li>
+      <li><em>「ダイレクト」と「フォロワー限定」投稿</em>: すべての投稿はサーバーに保存され、処理されます。「フォロワー限定」投稿はフォロワーと投稿に書かれたユーザーに配信されます。「ダイレクト」投稿は投稿に書かれたユーザーにのみ配信されます。場合によっては他のサーバーに配信され、そこにコピーが保存されることを意味します。私たちはこれらの閲覧を一部の許可された者に限定するよう誠意を持って努めます。しかし他のサーバーにおいても同様に扱われるとは限りません。したがって、相手の所属するサーバーを吟味することが重要です。設定で新しいフォロワーの承認または拒否を手動で行うよう切り替えることもできます。<em>サーバー管理者は「ダイレクト」や「フォロワー限定」投稿も閲覧する可能性があることを忘れないでください。</em>また受信者がスクリーンショットやコピー、もしくは共有する可能性があることを忘れないでください。<em>いかなる危険な情報もMastodon上で共有しないでください。</em></li>
+      <li><em>IPアドレスやその他メタデータ</em>: ログインする際IPアドレスだけでなくブラウザーアプリケーション名を記録します。ログインしたセッションはすべてユーザー設定で見直し、取り消すことができます。使用されている最新のIPアドレスは最大12ヵ月間保存されます。またサーバーへのIPアドレスを含むすべてのリクエストのログを保持することがあります。</li>
       </ul>
 
       <hr class="spacer" />
@@ -941,9 +932,9 @@ ja:
       <p>収集した情報は次の用途に使用されることがあります:</p>
 
       <ul>
-        <li>Mastodonのコア機能の提供: ログインしている間にかぎり他の人たちと投稿を通じて交流することができます。例えば自分専用のホームタイムラインで投稿をまとめて読むために他の人たちをフォローできます。</li>
-        <li>コミュニティ維持の補助: 例えばIPアドレスを既知のものと比較し、BAN回避目的の複数登録者やその他違反者を判別します。</li>
-        <li>提供されたメールアドレスはお知らせの送信・投稿に対するリアクションやメッセージ送信の通知・お問い合わせやその他要求や質問への返信に使用されることがあります。</li>
+      <li>Mastodonのコア機能の提供: ログインしている間にかぎり他の人たちと投稿を通じて交流することができます。例えば自分専用のホームタイムラインで投稿をまとめて読むために他の人たちをフォローできます。</li>
+      <li>コミュニティ維持の補助: 例えばIPアドレスを既知のものと比較し、BAN回避目的の複数登録者やその他違反者を判別します。</li>
+      <li>提供されたメールアドレスはお知らせの送信・投稿に対するリアクションやメッセージ送信の通知・お問い合わせやその他要求や質問への返信に使用されることがあります。</li>
       </ul>
 
       <hr class="spacer" />
@@ -959,8 +950,8 @@ ja:
       <p>私たちは次のように誠意を持って努めます:</p>
 
       <ul>
-        <li>当サイトへのIPアドレスを含むすべての要求に対するサーバーログを90日以内のできるかぎりの間保持します。</li>
-        <li>登録されたユーザーに関連付けられたIPアドレスを12ヵ月以内の間保持します。</li>
+      <li>当サイトへのIPアドレスを含むすべての要求に対するサーバーログを90日以内のできるかぎりの間保持します。</li>
+      <li>登録されたユーザーに関連付けられたIPアドレスを12ヵ月以内の間保持します。</li>
       </ul>
 
       <p>あなたは投稿・添付メディア・プロフィール画像・ヘッダー画像を含む自身のデータのアーカイブを要求し、ダウンロードすることができます。</p>
diff --git a/config/locales/ka.yml b/config/locales/ka.yml
index 9781fc5be..53057d860 100644
--- a/config/locales/ka.yml
+++ b/config/locales/ka.yml
@@ -19,16 +19,13 @@ ka:
     learn_more: გაიგე მეტი
     privacy_policy: კონფიდენციალურობის პოლიტიკა
     source_code: კოდი
-    status_count_after: სტატუსები
     status_count_before: ვინც უავტორა
     terms: მომსახურების პირობები
-    user_count_after: მომხმარებლისთვის
     user_count_before: სახლი
     what_is_mastodon: რა არის მასტოდონი?
   accounts:
     choices_html: "%{name}-ის არჩევნები:"
     follow: გაყევი
-    followers: მიმდევრები
     following: მიჰყვება
     joined: გაწევრიანდა %{date}
     media: მედია
@@ -39,7 +36,6 @@ ka:
     people_who_follow: ხალხი ვინც მიჰყვება %{name}-ს
     pin_errors:
       following: იმ ადამიანს, ვინც მოგწონთ, უკვე უნდა მიჰყვებოდეთ
-    posts: ტუტები
     posts_with_replies: ტუტები და პასუხები
     reserved_username: მომხმარებელი რეზერვირებულია
     roles:
@@ -387,7 +383,6 @@ ka:
       subject: ახალი რეპორტი %{instance} (#%{id})-ზე
   application_mailer:
     notification_preferences: შეცვალეთ ელ-ფოსტის პრეფერნსიები
-    salutation: "%{name},"
     settings: 'შეცვალეთ ელ-ფოსტის პრეფერენსიები: %{link}'
     view: 'ჩვენება:'
     view_profile: პროფილის ჩვენება
@@ -587,25 +582,19 @@ ka:
   number:
     human:
       decimal_units:
-        format: "%n%u"
         units:
           billion: ბილ.
           million: მილ.
           quadrillion: კუად.
           thousand: ათას.
           trillion: ტრილ.
-          unit: ''
   pagination:
     newer: უფრო ახალი
     next: შემდეგი
     older: ძველი
     prev: წინა
-    truncate: "&hellip;"
   preferences:
-    languages: ენები
     other: სხვა
-    publishing: გამოქვეყნება
-    web: ვები
   remote_follow:
     acct: შეიყვანეთ თქვენი username@domain საიდანაც გსურთ გაჰყვეთ
     missing_resource: საჭირო გადამისამართების ურლ თქვენი ანგარიშისთვის ვერ მოიძებნა
@@ -693,7 +682,6 @@ ka:
       reblog: ბუსტი ვერ აიპინება
     show_more: მეტის ჩვენება
     sign_in_to_participate: საუბარში მონაწილეობისთვის გაიარეთ ავტორიზაცია
-    title: '%{name}: "%{quote}"'
     visibilities:
       private: მხოლოდ-მიმდევრები
       private_long: აჩვენე მხოლოდ მიმდევრებს
@@ -711,10 +699,10 @@ ka:
       <h3 id="collect">რა ინფორმაციას ვაგროვებთ?</h3>
 
       <ul>
-        <li><em>ძირითადი ანგარიშის ინფორმაცია</em>: თუ დარეგისტრირდებით ამ სერვერზე, შესაძლოა მოგთხოვოთ მომხმარებლის სახელი, ელ-ფოსტის მისამართი და პაროლი. შესაძლებელია, ასევე შეიყვანოთ დამატებითი პროფილის ინორმაცია, როგორიცაა დისპლეის სახელი და ბიოგრაფია, ასევე ატვირთოთ პროფილის და დასათაურების სურათი. მომხმარებლის სახელი, დისპლეის სახელი, ბიოგრაფია, პროფილის სურათი, დასათაურების სურათი ყოველთვის ღიადაა ჩამოთვლილი.</li>
-        <li><em>პოსტები, დადევნებები და სხვა საჯარო ინფორმაცია</em>: ადამიანების სია, რომლებსაც მიჰყვებით საჯაროდაა ჩამოთვლილი, იგივე ეხება თქვენს მიდევრებსაც. როდესაც აგზავნით წერილს, თარიღი, დრო და აპლიკაცია თუ საიდანაც განათავსეთ წერილი ინახება. წერილები შესაძლოა შეიცავდნენ მედია ფაილებს, როგორებიცაა სურათები და ვიდეოები. ღია და ჩამოუთვლელი პოსტები ხელმისაწვდომია საჯაროდ. როდესაც ათავსებთ პოსტს თქვენს პროფილზე, ის ასევე საჟაროდ წვდომადი ხდება. თქვენი პოსტები ეგზავნებათ თქვენს მიმდევრებს, ზოგიერთ შემთხვევაში ეს ნიშნავს, რომ ისინი იგზავნება სხვა სერვერებზე და მათი ასლები იქვე ინახება. როდესაც აუქმებთ პოსტს, ეს მოქმედება ეგზავნებათ თქვენს მიმდევრებს. რე-ბლოგირების ან ფავორიტად ქცევის ქმედებები ასევე საქვეყნოა.</li>
-        <li><em>პირდაპირი და პოსტები მხოლოდ-მიმდევრებისთვის</em>: ყველა პოსტი ინახება და მათი პროცესირება ხდება სერვერზე. პოსტები რომლებიც განეკუთვნება მხოლოდ მიმდევრებს მიეწოდებათ მათ, მომხმარებლები, რომლებიც დასახელებულია პოსტებში და პირდაპირი პოსტები ეგზავნებათ მხოლოდ ჩამოთვლილ მომხმარებლებს. ზოგიერთ შემთხვევაში, ეს ნიშნავს, რომ გადაგზავნა ხდება გარე სერვერებზე და ასლებიც იქ ინახება. ჩვენ დიდ ძალისხმევას ვუწევთ წვდომის ლიმიტს მხოლოდ აუტორიზირებული ადამიანებისთვის, თუმცა სხვა სერვერებმა შეიძლება ეს არ აწარმოონ. აქედან გამომდინარე, მნიშვნელოვანია განიხილოთ სერვერები, საიდანაც მოდიან თქვენი მიმდევრები. შეგიძლიათ ჩართოთ ან გამორთოთ პარამეტრი, დაადასტუროთ ან უარყოთ ახალი მიმდევარი. <em>გთხოვთ გაითვალისწინოთ, რომ სერვერის ოპერაციები და სხვა მიმღები სერვერები შესაძლოა კითხულობდნენ ამგვარ წერილებს</em>, მიმღებებს შეუძლიათ შექმნან სქრინშოთი, დააკოპირონ ან ხელახლა გააზიარონ ისინი. <em>არ გააზიაროთ საშიში ინფორმაცია მასტოდონით.</em></li>
-        <li><em>აი-პიები და სხვა მეტა-მონაცემები</em>: როდესაც გაივლით აუტენტიფიკაციას, ჩვენ ვინახავთ აი-პი მისამართს საიდანაც შემოხვედით, ასევე ბრაუზერის აპლიკაციას. ყველა ავტორიზირებული სესია თქვენთვის განსახილველად და გასაუქმებლად ხელმისაწვდომია პარამეტრებში. ბოლო შენახული აი-პი მისამართი ინახება მაქსიმუმ 12 თვით. ჩვენ ასევე შეიძლება გაგვაჩნდეს სერვერის ლოგი, რომელიც ინახავს თითოეული მოთხოვნის IP მისამართს.</li>
+      <li><em>ძირითადი ანგარიშის ინფორმაცია</em>: თუ დარეგისტრირდებით ამ სერვერზე, შესაძლოა მოგთხოვოთ მომხმარებლის სახელი, ელ-ფოსტის მისამართი და პაროლი. შესაძლებელია, ასევე შეიყვანოთ დამატებითი პროფილის ინორმაცია, როგორიცაა დისპლეის სახელი და ბიოგრაფია, ასევე ატვირთოთ პროფილის და დასათაურების სურათი. მომხმარებლის სახელი, დისპლეის სახელი, ბიოგრაფია, პროფილის სურათი, დასათაურების სურათი ყოველთვის ღიადაა ჩამოთვლილი.</li>
+      <li><em>პოსტები, დადევნებები და სხვა საჯარო ინფორმაცია</em>: ადამიანების სია, რომლებსაც მიჰყვებით საჯაროდაა ჩამოთვლილი, იგივე ეხება თქვენს მიდევრებსაც. როდესაც აგზავნით წერილს, თარიღი, დრო და აპლიკაცია თუ საიდანაც განათავსეთ წერილი ინახება. წერილები შესაძლოა შეიცავდნენ მედია ფაილებს, როგორებიცაა სურათები და ვიდეოები. ღია და ჩამოუთვლელი პოსტები ხელმისაწვდომია საჯაროდ. როდესაც ათავსებთ პოსტს თქვენს პროფილზე, ის ასევე საჟაროდ წვდომადი ხდება. თქვენი პოსტები ეგზავნებათ თქვენს მიმდევრებს, ზოგიერთ შემთხვევაში ეს ნიშნავს, რომ ისინი იგზავნება სხვა სერვერებზე და მათი ასლები იქვე ინახება. როდესაც აუქმებთ პოსტს, ეს მოქმედება ეგზავნებათ თქვენს მიმდევრებს. რე-ბლოგირების ან ფავორიტად ქცევის ქმედებები ასევე საქვეყნოა.</li>
+      <li><em>პირდაპირი და პოსტები მხოლოდ-მიმდევრებისთვის</em>: ყველა პოსტი ინახება და მათი პროცესირება ხდება სერვერზე. პოსტები რომლებიც განეკუთვნება მხოლოდ მიმდევრებს მიეწოდებათ მათ, მომხმარებლები, რომლებიც დასახელებულია პოსტებში და პირდაპირი პოსტები ეგზავნებათ მხოლოდ ჩამოთვლილ მომხმარებლებს. ზოგიერთ შემთხვევაში, ეს ნიშნავს, რომ გადაგზავნა ხდება გარე სერვერებზე და ასლებიც იქ ინახება. ჩვენ დიდ ძალისხმევას ვუწევთ წვდომის ლიმიტს მხოლოდ აუტორიზირებული ადამიანებისთვის, თუმცა სხვა სერვერებმა შეიძლება ეს არ აწარმოონ. აქედან გამომდინარე, მნიშვნელოვანია განიხილოთ სერვერები, საიდანაც მოდიან თქვენი მიმდევრები. შეგიძლიათ ჩართოთ ან გამორთოთ პარამეტრი, დაადასტუროთ ან უარყოთ ახალი მიმდევარი. <em>გთხოვთ გაითვალისწინოთ, რომ სერვერის ოპერაციები და სხვა მიმღები სერვერები შესაძლოა კითხულობდნენ ამგვარ წერილებს</em>, მიმღებებს შეუძლიათ შექმნან სქრინშოთი, დააკოპირონ ან ხელახლა გააზიარონ ისინი. <em>არ გააზიაროთ საშიში ინფორმაცია მასტოდონით.</em></li>
+      <li><em>აი-პიები და სხვა მეტა-მონაცემები</em>: როდესაც გაივლით აუტენტიფიკაციას, ჩვენ ვინახავთ აი-პი მისამართს საიდანაც შემოხვედით, ასევე ბრაუზერის აპლიკაციას. ყველა ავტორიზირებული სესია თქვენთვის განსახილველად და გასაუქმებლად ხელმისაწვდომია პარამეტრებში. ბოლო შენახული აი-პი მისამართი ინახება მაქსიმუმ 12 თვით. ჩვენ ასევე შეიძლება გაგვაჩნდეს სერვერის ლოგი, რომელიც ინახავს თითოეული მოთხოვნის IP მისამართს.</li>
       </ul>
 
       <hr class="spacer" />
@@ -724,9 +712,9 @@ ka:
       <p>ნებისმიერი სხვა ინფორმაცია, რომელსაც ვაგროვებთ თქვენგან შესაძლოა გამოყენებულ იქნას შემდეგი გზებით:</p>
 
       <ul>
-        <li>რომ უზრუნველვყოთ მასტოდონის მთავარი ფუნქციონალი. შეგიძლიათ ინტერაქცია გაუწიოთ მხოლოდ სხვის კონტენტს და შექმნათ პოსტები მაშინ როდესაც ავტორიზებული ხართ. მაგალითად, შესაძლოა გაჰყვეთ სხვა ადამიანებს, რათა იხილოთ მათი ჯამური პოსტები საკუთარ პერსონალიზებულ სახლის თაიმლაინზე.</li>
-        <li>რომ შევუწყვოთ ხელი საზოგადოების მოდერაციას, მაგალითად შევადაროთ თქვენი აი-პი მისამართი სხვა ცნობილ მისამართებს, რათა ამოვიცნოთ ბანის გადაუხდელობა ან სხვა დარღვევები.</li>
-        <li>ელ-ფოსტის მისამართი რომელსაც გვაწვდით, შესაძლოა გამოვიყენოთ თქვენთვის ინფორმაციის გამოსაგძავნად, შეგატყობინოთ სხვა ადამიანების ინტერაქციაზე თქვენს კონტენტთან ან თქვენთვის გამოგზავნილ წერილებზე, ასევე რომ გიპასუხოთ მოთხოვნებზე და/ან სხვა საკითხებზე.</li>
+      <li>რომ უზრუნველვყოთ მასტოდონის მთავარი ფუნქციონალი. შეგიძლიათ ინტერაქცია გაუწიოთ მხოლოდ სხვის კონტენტს და შექმნათ პოსტები მაშინ როდესაც ავტორიზებული ხართ. მაგალითად, შესაძლოა გაჰყვეთ სხვა ადამიანებს, რათა იხილოთ მათი ჯამური პოსტები საკუთარ პერსონალიზებულ სახლის თაიმლაინზე.</li>
+      <li>რომ შევუწყვოთ ხელი საზოგადოების მოდერაციას, მაგალითად შევადაროთ თქვენი აი-პი მისამართი სხვა ცნობილ მისამართებს, რათა ამოვიცნოთ ბანის გადაუხდელობა ან სხვა დარღვევები.</li>
+      <li>ელ-ფოსტის მისამართი რომელსაც გვაწვდით, შესაძლოა გამოვიყენოთ თქვენთვის ინფორმაციის გამოსაგძავნად, შეგატყობინოთ სხვა ადამიანების ინტერაქციაზე თქვენს კონტენტთან ან თქვენთვის გამოგზავნილ წერილებზე, ასევე რომ გიპასუხოთ მოთხოვნებზე და/ან სხვა საკითხებზე.</li>
       </ul>
 
       <hr class="spacer" />
@@ -742,8 +730,8 @@ ka:
       <p>ჩვენ არ დავიშურებთ ძალისხმევას რომ:</p>
 
       <ul>
-        <li>შევინარჩუნოთ სერვერის ლოგები, რომლებიც მოიცავენ ყველა მოთხოვნის აი-პი მისამართს, თუმცა ესეთი ლოგები არ ინახება 90 დღეზე მეტ ხანს.</li>
-        <li>შევინარჩუნოთ რეგისტრირებული მომხმარებლების აი-პი მისამართები მაქსიმუმ 12 თვით.</li>
+      <li>შევინარჩუნოთ სერვერის ლოგები, რომლებიც მოიცავენ ყველა მოთხოვნის აი-პი მისამართს, თუმცა ესეთი ლოგები არ ინახება 90 დღეზე მეტ ხანს.</li>
+      <li>შევინარჩუნოთ რეგისტრირებული მომხმარებლების აი-პი მისამართები მაქსიმუმ 12 თვით.</li>
       </ul>
 
       <p>შეგიძლიათ მოითხოვოთ და ჩამოტვირთოთ თქვენი კონტენტის არქივი, რომელიც მოიცავს თქვენს პოსტებს, მედია ფაილებს, პროფილის და დასათაურების სურათს.</p>
@@ -792,10 +780,6 @@ ka:
     contrast: მაღალი კონტრასტი
     default: მასტოდონი
     mastodon-light: მასტოდონი (ღია)
-  time:
-    formats:
-      default: "%b %d, %Y, %H:%M"
-      month: "%b %Y"
   two_factor_authentication:
     code_hint: დასამოწმებლად შეიყვანეთ თქვენი აუტენტიფიკატორ აპლიკაციისგან გენერირებული კოდი
     description_html: თუ ჩართავთ <strong>მეორე-ფაქტორის აუტენტიფიკაციას</strong>, შესვლისას აუცილებელი იქნება ფლობდეთ ტელეფონს, რომელიც დააგენერირებს შესვლის ტოკენებს.
diff --git a/config/locales/kk.yml b/config/locales/kk.yml
index 84bd71081..c6212c378 100644
--- a/config/locales/kk.yml
+++ b/config/locales/kk.yml
@@ -5,7 +5,6 @@ kk:
     about_mastodon_html: Mastodon - әлеуметтік желіге негізделген, тегін және веб протоколды, ашық кодты бағдарлама. Ол email сияқты орталығы жоқ құрылым.
     about_this: Туралы
     administered_by: 'Админ:'
-    api: API
     apps: Мобиль қосымшалар
     contact: Байланыс
     contact_missing: Бапталмаған
@@ -89,7 +88,6 @@ kk:
       display_name: Атын көрсет
       domain: Домен
       edit: Түзету
-      email: Email
       email_status: Email статусы
       enable: Қосу
       enabled: Қосылды
@@ -100,7 +98,6 @@ kk:
       header: Басы
       inbox_url: Келген хаттар URL
       invited_by: Шақырған
-      ip: IP
       joined: Қосылды
       location:
         all: Барлығы
@@ -468,7 +465,6 @@ kk:
       subject: New rеport for %{instance} (#%{id})
   application_mailer:
     notification_preferences: Change e-mail prеferences
-    salutation: "%{name},"
     settings: 'Change e-mail preferеnces: %{link}'
     view: 'Viеw:'
     view_profile: Viеw Profile
@@ -691,11 +687,9 @@ kk:
   number:
     human:
       decimal_units:
-        format: "%n%u"
         units:
           billion: В
           million: М
-          quadrillion: Q
           thousand: К
           trillion: Т
   pagination:
@@ -703,7 +697,6 @@ kk:
     next: Келесі
     older: Ерте
     prev: Алдыңғы
-    truncate: "&hellip;"
   polls:
     errors:
       already_voted: Бұл сауалнамаға қатысқансыз
@@ -715,10 +708,7 @@ kk:
       too_few_options: бір жауаптан көп болуы керек
       too_many_options: "%{max} жауаптан көп болмайды"
   preferences:
-    languages: Тілдер
     other: Басқа
-    publishing: Жариялау
-    web: Веб
   remote_follow:
     acct: Өзіңіздің username@domain теріңіз
     missing_resource: Аккаунтыңызға байланған URL табылмады
@@ -827,7 +817,6 @@ kk:
       vote: Дауыс беру
     show_more: Тағы әкел
     sign_in_to_participate: Сұхбатқа қатысу үшін кіріңіз
-    title: '%{name}: "%{quote}"'
     visibilities:
       private: Тек оқырмандарға
       private_long: Тек оқырмандарға ғана көрінеді
@@ -845,10 +834,10 @@ kk:
       <h3 id="collect">What information do we collect?</h3>
 
       <ul>
-        <li><em>Basic account information</em>: If you register on this server, you may be asked to enter a username, an e-mail address and a password. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly.</li>
-        <li><em>Posts, following and other public information</em>: The list of people you follow is listed publicly, the same is true for your followers. When you submit a message, the date and time is stored as well as the application you submitted the message from. Messages may contain media attachments, such as pictures and videos. Public and unlisted posts are available publicly. When you feature a post on your profile, that is also publicly available information. Your posts are delivered to your followers, in some cases it means they are delivered to different servers and copies are stored there. When you delete posts, this is likewise delivered to your followers. The action of reblogging or favouriting another post is always public.</li>
-        <li><em>Direct and followers-only posts</em>: All posts are stored and processed on the server. Followers-only posts are delivered to your followers and users who are mentioned in them, and direct posts are delivered only to users mentioned in them. In some cases it means they are delivered to different servers and copies are stored there. We make a good faith effort to limit the access to those posts only to authorized persons, but other servers may fail to do so. Therefore it's important to review servers your followers belong to. You may toggle an option to approve and reject new followers manually in the settings. <em>Please keep in mind that the operators of the server and any receiving server may view such messages</em>, and that recipients may screenshot, copy or otherwise re-share them. <em>Do not share any dangerous information over Mastodon.</em></li>
-        <li><em>IPs and other metadata</em>: When you log in, we record the IP address you log in from, as well as the name of your browser application. All the logged in sessions are available for your review and revocation in the settings. The latest IP address used is stored for up to 12 months. We also may retain server logs which include the IP address of every request to our server.</li>
+      <li><em>Basic account information</em>: If you register on this server, you may be asked to enter a username, an e-mail address and a password. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly.</li>
+      <li><em>Posts, following and other public information</em>: The list of people you follow is listed publicly, the same is true for your followers. When you submit a message, the date and time is stored as well as the application you submitted the message from. Messages may contain media attachments, such as pictures and videos. Public and unlisted posts are available publicly. When you feature a post on your profile, that is also publicly available information. Your posts are delivered to your followers, in some cases it means they are delivered to different servers and copies are stored there. When you delete posts, this is likewise delivered to your followers. The action of reblogging or favouriting another post is always public.</li>
+      <li><em>Direct and followers-only posts</em>: All posts are stored and processed on the server. Followers-only posts are delivered to your followers and users who are mentioned in them, and direct posts are delivered only to users mentioned in them. In some cases it means they are delivered to different servers and copies are stored there. We make a good faith effort to limit the access to those posts only to authorized persons, but other servers may fail to do so. Therefore it's important to review servers your followers belong to. You may toggle an option to approve and reject new followers manually in the settings. <em>Please keep in mind that the operators of the server and any receiving server may view such messages</em>, and that recipients may screenshot, copy or otherwise re-share them. <em>Do not share any dangerous information over Mastodon.</em></li>
+      <li><em>IPs and other metadata</em>: When you log in, we record the IP address you log in from, as well as the name of your browser application. All the logged in sessions are available for your review and revocation in the settings. The latest IP address used is stored for up to 12 months. We also may retain server logs which include the IP address of every request to our server.</li>
       </ul>
 
       <hr class="spacer" />
@@ -858,9 +847,9 @@ kk:
       <p>Any of the information we collect from you may be used in the following ways:</p>
 
       <ul>
-        <li>To provide the core functionality of Mastodon. You can only interact with other people's content and post your own content when you are logged in. For example, you may follow other people to view their combined posts in your own personalized home timeline.</li>
-        <li>To aid moderation of the community, for example comparing your IP address with other known ones to determine ban evasion or other violations.</li>
-        <li>The email address you provide may be used to send you information, notifications about other people interacting with your content or sending you messages, and to respond to inquiries, and/or other requests or questions.</li>
+      <li>To provide the core functionality of Mastodon. You can only interact with other people's content and post your own content when you are logged in. For example, you may follow other people to view their combined posts in your own personalized home timeline.</li>
+      <li>To aid moderation of the community, for example comparing your IP address with other known ones to determine ban evasion or other violations.</li>
+      <li>The email address you provide may be used to send you information, notifications about other people interacting with your content or sending you messages, and to respond to inquiries, and/or other requests or questions.</li>
       </ul>
 
       <hr class="spacer" />
@@ -876,8 +865,8 @@ kk:
       <p>We will make a good faith effort to:</p>
 
       <ul>
-        <li>Retain server logs containing the IP address of all requests to this server, in so far as such logs are kept, no more than 90 days.</li>
-        <li>Retain the IP addresses associated with registered users no more than 12 months.</li>
+      <li>Retain server logs containing the IP address of all requests to this server, in so far as such logs are kept, no more than 90 days.</li>
+      <li>Retain the IP addresses associated with registered users no more than 12 months.</li>
       </ul>
 
       <p>You can request and download an archive of your content, including your posts, media attachments, profile picture, and header image.</p>
@@ -926,10 +915,6 @@ kk:
     contrast: Mastodon (Жоғары контраст)
     default: Mastodon (Қою)
     mastodon-light: Mastodon (Ашық)
-  time:
-    formats:
-      default: "%b %d, %Y, %H:%M"
-      month: "%b %Y"
   two_factor_authentication:
     code_hint: Растау үшін түпнұсқалықты растау бағдарламасы арқылы жасалған кодты енгізіңіз
     description_html: "<strong>екі факторлы түпнұсқалықты растауды</strong> қоссаңыз, кіру үшін сізге телефонға кіруіңізді талап етеді, сізге арнайы токен беріледі."
diff --git a/config/locales/ko.yml b/config/locales/ko.yml
index 820b8e515..3f14d5df6 100644
--- a/config/locales/ko.yml
+++ b/config/locales/ko.yml
@@ -14,7 +14,7 @@ ko:
     browse_public_posts: 마스토돈의 공개 라이브 스트림을 둘러보기
     contact: 연락처
     contact_missing: 미설정
-    contact_unavailable: N/A
+    contact_unavailable: 없음
     discover_users: 유저 발견하기
     documentation: 문서
     extended_description_html: |
@@ -30,13 +30,11 @@ ko:
     server_stats: '서버 통계:'
     source_code: 소스 코드
     status_count_after:
-      one: 툿
       other: 툿
     status_count_before: 툿 수
     tagline: 친구들을 팔로우 하고 새로운 사람들도 만나기
     terms: 이용약관
     user_count_after:
-      one: 명
       other: 명
     user_count_before: 사용자 수
     what_is_mastodon: 마스토돈이란?
@@ -44,7 +42,6 @@ ko:
     choices_html: "%{name}의 추천:"
     follow: 팔로우
     followers:
-      one: 팔로워
       other: 팔로워
     following: 팔로잉
     joined: "%{date}에 가입함"
@@ -59,7 +56,6 @@ ko:
     pin_errors:
       following: 추천하려는 사람을 팔로우 하고 있어야 합니다
     posts:
-      one: 툿
       other: 툿
     posts_tab_heading: 툿
     posts_with_replies: 툿과 답장
@@ -174,6 +170,7 @@ ko:
       statuses: 툿 수
       subscribe: 구독하기
       suspended: 정지 됨
+      time_in_queue: "%{time}동안 기다림"
       title: 계정
       unconfirmed_email: 미확인 된 이메일 주소
       undo_silenced: 침묵 해제
@@ -292,7 +289,6 @@ ko:
         suspend: 정지
       show:
         affected_accounts:
-          one: 데이터베이스 중 1개의 계정에 영향을 끼칩니다
           other: 데이터베이스 중 %{count}개의 계정에 영향을 끼칩니다
         retroactive:
           silence: 이 도메인에 존재하는 모든 계정의 침묵를 해제
@@ -317,7 +313,6 @@ ko:
       by_domain: 도메인
       delivery_available: 전송 가능
       known_accounts:
-        one: 알려진 계정 %{count}개
         other: 알려진 계정 %{count}개
       moderation:
         all: 모두
@@ -500,11 +495,17 @@ ko:
       body: "%{reporter} 가 %{target} 를 신고했습니다"
       body_remote: "%{domain}의 누군가가 %{target}을 신고했습니다"
       subject: "%{instance} 에 새 신고 등록됨 (#%{id})"
+  appearance:
+    advanced_web_interface: 고급 웹 인터페이스
+    advanced_web_interface_hint: '화면의 가로폭을 가득 채우고 싶다면, 고급 웹 인터페이스는 한 번에 여러 정보를 볼 수 있도록 여러 컬럼을 설정할 수 있도록 합니다: 홈, 알림, 연합타임라인, 리스트, 해시태그 등'
+    animations_and_accessibility: 애니메이션과 접근성
+    confirmation_dialogs: 확인 대화상자
+    sensitive_content: 민감한 내용
   application_mailer:
     notification_preferences: 메일 설정 변경
     salutation: "%{name} 님,"
     settings: '메일 설정을 변경: %{link}'
-    view: 'View:'
+    view: '보기:'
     view_profile: 프로필 보기
     view_status: 게시물 보기
   applications:
@@ -581,7 +582,6 @@ ko:
     explore_mastodon: "%{title} 탐사하기"
     how_to_enable: 아직 디렉터리에 참여하지 않았습니다. 아래에서 참여할 수 있습니다. 바이오 텍스트에 해시태그를 사용해 특정 해시태그 디렉터리에 표시 될 수 있습니다!
     people:
-      one: "%{count}명"
       other: "%{count}명"
   errors:
     '403': 이 페이지를 표시할 권한이 없습니다.
@@ -644,7 +644,6 @@ ko:
     order_by: 순서
     save_changes: 변경 사항을 저장
     validation_errors:
-      one: 오류가 발생했습니다. 아래 오류를 확인해 주십시오
       other: 오류가 발생했습니다. 아래 %{count}개 오류를 확인해 주십시오
   html_validator:
     invalid_markup: '올바르지 않은 HTML 마크업을 포함하고 있습니다: %{error}'
@@ -695,7 +694,6 @@ ko:
     generate: 생성
     invited_by: '당신을 초대한 사람:'
     max_uses:
-      one: 일회용
       other: "%{count} 회"
     max_uses_prompt: 제한 없음
     prompt: 이 서버에 대한 초대 링크를 만들고 공유합니다
@@ -723,10 +721,8 @@ ko:
       body: 마지막 로그인(%{since}) 이후로 일어난 일들에 관한 요약
       mention: "%{name} 님이 답장했습니다:"
       new_followers_summary:
-        one: 그리고, 접속 하지 않으신 동안 새 팔로워가 생겼습니다!
         other: 게다가, 접속하지 않은 동안 %{count} 명의 팔로워가 생겼습니다!
       subject:
-        one: "1건의 새로운 알림 \U0001F418"
         other: "%{count}건의 새로운 알림 \U0001F418"
       title: 당신이 없는 동안에...
     favourite:
@@ -761,7 +757,6 @@ ko:
           quadrillion: Q
           thousand: K
           trillion: T
-          unit: "."
   pagination:
     newer: 새로운 툿
     next: 다음
@@ -779,10 +774,9 @@ ko:
       too_few_options: 한가지 이상의 항목을 포함해야 합니다
       too_many_options: 항목은 %{max}개를 넘을 수 없습니다
   preferences:
-    languages: 언어
     other: 기타
-    publishing: 퍼블리싱
-    web: 웹
+    posting_defaults: 게시물 기본설정
+    public_timelines: 공개 타임라인
   relationships:
     activity: 계정 활동
     dormant: 휴면
@@ -840,7 +834,7 @@ ko:
       phantom_js: PhantomJS
       qq: QQ 브라우저
       safari: 사파리
-      uc_browser: UCBrowser
+      uc_browser: UC브라우저
       weibo: 웨이보
     current_session: 현재 세션
     description: "%{platform}의 %{browser}"
@@ -886,15 +880,12 @@ ko:
     attached:
       description: '첨부: %{attached}'
       image:
-        one: "%{count} 이미지"
         other: "%{count} 이미지"
       video:
-        one: "%{count} 영상"
         other: "%{count} 영상"
-    boosted_from_html: "%{acct_link} 님이 부스트"
+    boosted_from_html: "%{acct_link} 님으로부터 부스트"
     content_warning: '열람 주의: %{warning}'
     disallowed_hashtags:
-      one: '허용 되지 않은 해시태그를 포함하고 있습니다: %{tags}'
       other: '허용되지 않은 해시태그를 포함하고 있습니다: %{tags}'
     language_detection: 자동으로 언어 감지
     open_in_web: Web으로 열기
@@ -906,7 +897,6 @@ ko:
       reblog: 부스트는 고정될 수 없습니다
     poll:
       total_votes:
-        one: "%{count}명 투표함"
         other: "%{count}명 투표함"
       vote: 투표
     show_more: 더 보기
@@ -929,10 +919,10 @@ ko:
       <h3 id="collect">우리가 어떤 정보를 수집하나요?</h3>
 
       <ul>
-        <li><em>기본 계정 정보</em>: 이 서버에 가입하실 때 유저네임, 이메일 주소, 패스워드 등을 입력 받게 됩니다. 추가적으로 디스플레이네임이나 자기소개, 프로필 이미지, 헤더 이미지 등의 프로필 정보를 입력하게 됩니다. 유저네임, 디스플레이네임, 자기소개, 프로필 이미지와 헤더 이미지는 언제나 공개적으로 게시됩니다.</li>
-        <li><em>게시물, 팔로잉, 기타 공개된 정보</em>: 당신이 팔로우 하는 사람들의 리스트는 공개됩니다. 당신을 팔로우 하는 사람들도 마찬가지입니다. 당신이 게시물을 작성하는 경우, 응용프로그램이 메시지를 받았을 때의 날짜와 시간이 기록 됩니다. 게시물은 그림이나 영상 등의 미디어를 포함할 수 있습니다. 퍼블릭과 미표시(unlisted) 게시물은 공개적으로 접근이 가능합니다. 프로필에 게시물을 고정하는 경우 마찬가지로 공개적으로 접근 가능한 정보가 됩니다. 당신의 게시물들은 당신의 팔로워들에게 전송 됩니다. 몇몇 경우 이것은 다른 서버에 전송되고 그곳에 사본이 저장 됩니다. 당신이 게시물을 삭제하는 경우 이 또한 당신의 팔로워들에게 전송 됩니다. 다른 게시물을 리블로깅 하거나 즐겨찾기 하는 경우 이는 언제나 공개적으로 제공 됩니다.</li>
-        <li><em>DM, 팔로워 공개 게시물</em>: 모든 게시물들은 서버에서 처리되고 저장됩니다. 팔로워 공개 게시물은 당신의 팔로워와 멘션 된 사람들에게 전달이 됩니다. 다이렉트 메시지는 멘션 된 사람들에게만 전송 됩니다. 몇몇 경우 이것은 다른 서버에 전송 되고 그곳에 사본이 저장됨을 의미합니다. 우리는 이 게시물들이 권한을 가진 사람들만 열람이 가능하도록 노력을 할 것이지만 다른 서버에서는 이것이 실패할 수도 있습니다. 그러므로 당신의 팔로워들이 속한 서버를 재확인하는 것이 중요합니다. 당신은 새 팔로워를 수동으로 승인하거나 거절하도록 설정을 변경할 수 있습니다. <em>해당 서버의 운영자는 서버가 받는 메시지를 열람할 수 있다는 것을 항상 염두해 두세요</em>, 그리고 수신자들은 스크린샷을 찍거나 복사하는 등의 방법으로 다시 공유할 수 있습니다. <em>위험한 정보를 마스토돈을 통해 공유하지 마세요.</em></li>
-        <li><em>IP와 기타 메타데이터</em>: 당신이 로그인 하는 경우 IP 주소와 브라우저의 이름을 저장합니다. 모든 세션은 당신이 검토하고 취소할 수 있도록 설정에서 제공 됩니다. 마지막으로 사용 된 IP 주소는 최대 12개월 간 저장됩니다. 또한, 모든 요청에 대해 IP주소를 포함한 정보를 로그에 저장할 수 있습니다.</li>
+      <li><em>기본 계정 정보</em>: 이 서버에 가입하실 때 유저네임, 이메일 주소, 패스워드 등을 입력 받게 됩니다. 추가적으로 디스플레이네임이나 자기소개, 프로필 이미지, 헤더 이미지 등의 프로필 정보를 입력하게 됩니다. 유저네임, 디스플레이네임, 자기소개, 프로필 이미지와 헤더 이미지는 언제나 공개적으로 게시됩니다.</li>
+      <li><em>게시물, 팔로잉, 기타 공개된 정보</em>: 당신이 팔로우 하는 사람들의 리스트는 공개됩니다. 당신을 팔로우 하는 사람들도 마찬가지입니다. 당신이 게시물을 작성하는 경우, 응용프로그램이 메시지를 받았을 때의 날짜와 시간이 기록 됩니다. 게시물은 그림이나 영상 등의 미디어를 포함할 수 있습니다. 퍼블릭과 미표시(unlisted) 게시물은 공개적으로 접근이 가능합니다. 프로필에 게시물을 고정하는 경우 마찬가지로 공개적으로 접근 가능한 정보가 됩니다. 당신의 게시물들은 당신의 팔로워들에게 전송 됩니다. 몇몇 경우 이것은 다른 서버에 전송되고 그곳에 사본이 저장 됩니다. 당신이 게시물을 삭제하는 경우 이 또한 당신의 팔로워들에게 전송 됩니다. 다른 게시물을 리블로깅 하거나 즐겨찾기 하는 경우 이는 언제나 공개적으로 제공 됩니다.</li>
+      <li><em>DM, 팔로워 공개 게시물</em>: 모든 게시물들은 서버에서 처리되고 저장됩니다. 팔로워 공개 게시물은 당신의 팔로워와 멘션 된 사람들에게 전달이 됩니다. 다이렉트 메시지는 멘션 된 사람들에게만 전송 됩니다. 몇몇 경우 이것은 다른 서버에 전송 되고 그곳에 사본이 저장됨을 의미합니다. 우리는 이 게시물들이 권한을 가진 사람들만 열람이 가능하도록 노력을 할 것이지만 다른 서버에서는 이것이 실패할 수도 있습니다. 그러므로 당신의 팔로워들이 속한 서버를 재확인하는 것이 중요합니다. 당신은 새 팔로워를 수동으로 승인하거나 거절하도록 설정을 변경할 수 있습니다. <em>해당 서버의 운영자는 서버가 받는 메시지를 열람할 수 있다는 것을 항상 염두해 두세요</em>, 그리고 수신자들은 스크린샷을 찍거나 복사하는 등의 방법으로 다시 공유할 수 있습니다. <em>위험한 정보를 마스토돈을 통해 공유하지 마세요.</em></li>
+      <li><em>IP와 기타 메타데이터</em>: 당신이 로그인 하는 경우 IP 주소와 브라우저의 이름을 저장합니다. 모든 세션은 당신이 검토하고 취소할 수 있도록 설정에서 제공 됩니다. 마지막으로 사용 된 IP 주소는 최대 12개월 간 저장됩니다. 또한, 모든 요청에 대해 IP주소를 포함한 정보를 로그에 저장할 수 있습니다.</li>
       </ul>
 
       <hr class="spacer" />
@@ -942,9 +932,9 @@ ko:
       <p>당신에게서 수집한 정보는 다음과 같은 곳에 사용 됩니다:</p>
 
       <ul>
-        <li>마스토돈의 주요 기능 제공. 다른 사람의 게시물에 상호작용 하거나 자신의 게시물을 작성하기 위해서는 로그인을 해야 합니다. 예를 들어, 다른 사람의 게시물을 자신만의 홈 타임라인에서 모아 보기 위해 팔로우를 할 수 있습니다.</li>
-        <li>커뮤니티의 모더레이션을 위해, 예를 들어 당신의 IP 주소와 기타 사항을 비교하여 금지를 우회하거나 다른 규칙을 위반하는지 판단하는 데에 사용할 수 있습니다.</li>
-        <li>당신이 제공한 이메일 주소를 통해 정보, 다른 사람들의 반응이나 받은 메시지에 대한 알림, 기타 요청 등에 관한 응답 요청 등을 보내는 데에 활용됩니다.</li>
+      <li>마스토돈의 주요 기능 제공. 다른 사람의 게시물에 상호작용 하거나 자신의 게시물을 작성하기 위해서는 로그인을 해야 합니다. 예를 들어, 다른 사람의 게시물을 자신만의 홈 타임라인에서 모아 보기 위해 팔로우를 할 수 있습니다.</li>
+      <li>커뮤니티의 모더레이션을 위해, 예를 들어 당신의 IP 주소와 기타 사항을 비교하여 금지를 우회하거나 다른 규칙을 위반하는지 판단하는 데에 사용할 수 있습니다.</li>
+      <li>당신이 제공한 이메일 주소를 통해 정보, 다른 사람들의 반응이나 받은 메시지에 대한 알림, 기타 요청 등에 관한 응답 요청 등을 보내는 데에 활용됩니다.</li>
       </ul>
 
       <hr class="spacer" />
@@ -960,8 +950,8 @@ ko:
       <p>우리는 다음을 위해 노력을 할 것입니다:</p>
 
       <ul>
-        <li>IP를 포함해 이 서버에 전송 되는 모든 요청에 대한 로그는 90일을 초과하여 저장되지 않습니다.</li>
-        <li>가입 된 유저의 IP 정보는 12개월을 초과하여 저장 되지 않습니다.</li>
+      <li>IP를 포함해 이 서버에 전송 되는 모든 요청에 대한 로그는 90일을 초과하여 저장되지 않습니다.</li>
+      <li>가입 된 유저의 IP 정보는 12개월을 초과하여 저장 되지 않습니다.</li>
       </ul>
 
       <p>당신은 언제든지 게시물, 미디어 첨부, 프로필 이미지, 헤더 이미지를 포함한 당신의 컨텐트에 대한 아카이브를 요청하고 다운로드 할 수 있습니다.</p>
diff --git a/config/locales/lt.yml b/config/locales/lt.yml
index 7ea8dc76b..2cf0b7c42 100644
--- a/config/locales/lt.yml
+++ b/config/locales/lt.yml
@@ -5,11 +5,9 @@ lt:
     about_mastodon_html: Mastodon, tai socialinis tinklas pagrįstas atviro kodo programavimu, ir atvirais web protokolais. Visiškai nemokamas. Ši sistema decantrilizuota kaip jūsų elektroninis paštas.
     about_this: Apie
     administered_by: 'Administruoja:'
-    api: API
     apps: Mobilioji Aplikacija
     contact: Kontaktai
     contact_missing: Nenustatyta
-    contact_unavailable: N/A
     documentation: Dokumentacija
     extended_description_html: |
       <h3>Taisyklės</h3>
@@ -19,25 +17,13 @@ lt:
     learn_more: Daugiau
     privacy_policy: Privatumo Politika
     source_code: Šaltinio kodas
-    status_count_after:
-      few: statusai
-      one: statusas
-      other: statusai
     status_count_before: Autorius
     terms: Naudojimo sąlygos
-    user_count_after:
-      few: vartotojai
-      one: vartotojas
-      other: vartotojai
     user_count_before: Namai
     what_is_mastodon: Kas tai, Mastodon?
   accounts:
     choices_html: "%{name} pasirinkimai:"
     follow: Sekti
-    followers:
-      few: Sekėjai
-      one: Sekėjas
-      other: Sekėjai
     following: Sekami
     joined: Prisijungiai %{date}
     last_active: paskutinį kartą aktyvus
@@ -50,10 +36,6 @@ lt:
     people_who_follow: Žmonės kurie seka %{name}
     pin_errors:
       following: Privalai sekti žmogų kurį nori pagerbti
-    posts:
-      few: Tootai
-      one: Tootas
-      other: Tootai
     posts_tab_heading: Tootai
     posts_with_replies: Tootai ir atsakymai
     reserved_username: Vartotojo vardas rezervuotas
@@ -104,7 +86,6 @@ lt:
       header: Antraštė
       inbox_url: Gautųjų URL
       invited_by: Pakvietė
-      ip: IP
       joined: Prisijungė
       location:
         all: Visi
@@ -166,7 +147,6 @@ lt:
       unsubscribe: Nebeprenumeruoti
       username: Slapyvardis
       warn: Įspėti
-      web: Web
     action_logs:
       actions:
         assigned_to_self_report: "%{name} paskyrė reportą %{target} saviems"
@@ -274,10 +254,6 @@ lt:
         silence: užtildytas
         suspend: uždraustas
       show:
-        affected_accounts:
-          few: "%{count} vartotojai duomenų bazėje yra paveikti"
-          one: Vienas vartotojas duomenų bazėje paveiktas
-          other: "%{count} vartotojai duomenų bazėje yra paveikti"
         retroactive:
           silence: Atitildyti visus egzistuojančius vartotojus šiame domene
           suspend: Atblokuotis visus egzistuojančius vartotojus šiame domene
@@ -300,10 +276,6 @@ lt:
     instances:
       by_domain: Domenas
       delivery_available: Pristatymas galimas
-      known_accounts:
-        few: "%{count} žinomos paskyros"
-        one: "%{count} žinoma paskyra"
-        other: "%{count} žinomos paskyros"
       moderation:
         all: Visi
         limited: Limituotas
@@ -476,7 +448,6 @@ lt:
       subject: Naujas skundas %{instance} (#%{id})
   application_mailer:
     notification_preferences: Keisti el pašto parinktis
-    salutation: "%{name},"
     settings: 'Keisti el pašto parinktis: %{link}'
     view: 'Peržiūra:'
     view_profile: Peržiurėti profilį
@@ -502,9 +473,6 @@ lt:
     migrate_account: Prisijungti prie kitos paskyros
     migrate_account_html: Jeigu norite nukreipti šią paskyrą į kita, galite tai <a href="%{path}">konfiguruoti čia</a>.
     or_log_in_with: Arba prisijungti su
-    providers:
-      cas: CAS
-      saml: SAML
     register: Užsiregistruoti
     resend_confirmation: Išsiųsti dar kartą patvirtinimo instrukcijas
     reset_password: Atstatyti slaptažodį
@@ -550,10 +518,6 @@ lt:
     explanation: Raskite vartotojus, remiantis tuo, kuo jie domisi
     explore_mastodon: Naršyti %{title}
     how_to_enable: Jūs nesate prisijungęs prie šios direktorijos. Galite prisijungti žemiau. Naudokite saitažodžius savo biografiniame tekste, kad būtumėte rastas naudojantis specifinius saitažodžius!
-    people:
-      few: "%{count} žmonės"
-      one: "%{count} žmogus"
-      other: "%{count} žmonės"
   errors:
     '403': Jūs neturie prieigos matyti šiam puslapiui.
     '404': Puslapis nerastas.
@@ -575,7 +539,6 @@ lt:
       request: Prašyti savo archyvo
       size: Dydis
     blocks: Jūs blokuojate
-    csv: CSV
     domain_blocks: Domeno blokai
     follows: Jūs sekate
     lists: Sąrašai
@@ -609,10 +572,6 @@ lt:
     changes_saved_msg: Pakeitimai sėkmingai išsaugoti!
     copy: Kopijuoti
     save_changes: Išsaugoti pakeitimus
-    validation_errors:
-      few: Kažkas negerai! Prašau patikrinti %{count} klaidas žemiau
-      one: Kažkas negerai! Peržiūrėk klaidas žemiau
-      other: Kažkas negerai! Prašau patikrinti %{count} klaidas žemiau
   imports:
     modes:
       merge: Sulieti
@@ -641,10 +600,6 @@ lt:
     expires_in_prompt: Niekada
     generate: Generuoti
     invited_by: 'Jus pakvietė:'
-    max_uses:
-      few: "%{count} naudojimai"
-      one: 1 naudojimas
-      other: "%{count} naudojimai"
     max_uses_prompt: Be limito
     prompt: Generuoti ir dalintis įrašais su kitais, kad sukurti prieigą prie serverio
     table:
@@ -670,14 +625,6 @@ lt:
       action: Peržiurėti visus pranešimus
       body: Čia yra trumpa santrauka žinutės, kurią jūs praleidote nuo jūsų paskutinio apsilankymo %{since}
       mention: "%{name} paminėjo jus:"
-      new_followers_summary:
-        few: Beje, jūs gavote %{count} naujų sekėjų, nuo jūsų paskutinio apsilankymo! Nuostabu!
-        one: Beje, jūs gavote naują sekėją, kol buvote atsijungęs! Yay!
-        other: Beje, jūs gavote %{count} naujų sekėjų, nuo jūsų paskutinio apsilankymo! Nuostabu!
-      subject:
-        few: "%{count} nauji pranešimai, nuo paskutinio apsilankymo\U0001F418"
-        one: "1 naujas pranešimas nuo paskutinio apsilankymo \U0001F418"
-        other: "%{count} nauji pranešimai, nuo paskutinio apsilankymo\U0001F418"
       title: Kol jūsų nebuvo...
     favourite:
       body: 'Jūsų statusą pamėgo %{name}:'
@@ -701,27 +648,13 @@ lt:
       body: 'Jūsų statusą pakėlė %{name}:'
       subject: "%{name} pakėlė Jūsų statusą"
       title: Naujas pakėlimas
-  number:
-    human:
-      decimal_units:
-        format: "%n%u"
-        units:
-          billion: B
-          million: M
-          quadrillion: Q
-          thousand: K
-          trillion: T
   pagination:
     newer: Naujesnis
     next: Kitas
     older: Senesnis
     prev: Ankstesnis
-    truncate: "&hellip;"
   preferences:
-    languages: Kalbos
     other: Kita
-    publishing: Skelbiama
-    web: Tinklas
   remote_follow:
     acct: Įveskite Jūsų slapyvardį@domenas kurį norite naudoti
     missing_resource: Jūsų paskyros nukreipimo URL nerasta
@@ -751,40 +684,12 @@ lt:
     activity: Paskutinė veikla
     browser: Naršyklė
     browsers:
-      alipay: Alipay
-      blackberry: Blackberry
-      chrome: Chrome
-      edge: Microsoft Edge
-      electron: Electron
-      firefox: Firefox
       generic: Nežinoma naršyklė
-      ie: Internet Explorer
-      micro_messenger: MicroMessenger
-      nokia: Nokia S40 Ovi Browser
-      opera: Opera
-      otter: Otter
-      phantom_js: PhantomJS
-      qq: QQ Browser
-      safari: Safari
-      uc_browser: UCBrowser
-      weibo: Weibo
     current_session: Dabartinė sesija
     description: "%{browser} ant %{platform}"
     explanation: Čia rodomos web naršyklės prijungtos prie Jūsų Mastodon paskyros.
-    ip: IP
     platforms:
-      adobe_air: Adobe Air
-      android: Android
-      blackberry: Blackberry
-      chrome_os: ChromeOS
-      firefox_os: Firefox OS
-      ios: iOS
-      linux: Linux
-      mac: Mac
       other: nežinoma platforma
-      windows: Windows
-      windows_mobile: Windows Mobile
-      windows_phone: Windows Phone
     revoke: Atšaukti
     revoke_success: Sesija sėkmingai atšaukta
     title: Sesijos
@@ -804,20 +709,8 @@ lt:
   statuses:
     attached:
       description: 'Pridėta: %{attached}'
-      image:
-        few: "%{count} nuotraukos"
-        one: "%{count} nuotrauka"
-        other: "%{count} nuotraukos"
-      video:
-        few: "%{count} vaizdo įrašai"
-        one: "%{count} video"
-        other: "%{count} vaizdo įrašai"
     boosted_from_html: Pakelta iš %{acct_link}
     content_warning: 'Turinio įspėjimas: %{warning}'
-    disallowed_hashtags:
-      few: 'rasti neleistini saitąžodžiai: %{tags}'
-      one: 'rastas neleistinas saitažodis : %{tags}'
-      other: 'rasti neleistini saitąžodžiai: %{tags}'
     language_detection: Automatiškai nustatyti kalbą
     open_in_web: Atidaryti naudojan Web
     over_character_limit: pasiektas %{max} simbolių limitas
@@ -828,7 +721,6 @@ lt:
       reblog: Pakeltos žinutės negali būti prisegtos
     show_more: Daugiau
     sign_in_to_participate: Prisijunkite jeigu norite dalyvauti pokalbyje
-    title: '%{name}: "%{quote}"'
     visibilities:
       private: Tik sekėjams
       private_long: Rodyti tik sekėjams
@@ -925,10 +817,6 @@ lt:
     contrast: Mastodon (Didelio Kontrasto)
     default: Mastodon (Tamsus)
     mastodon-light: Mastodon (Šviesus)
-  time:
-    formats:
-      default: "%b %d, %Y, %H:%M"
-      month: "%b %Y"
   two_factor_authentication:
     code_hint: Įveskite autentikacijos aplikacijos sugeneruotą kodą kad galėtumete tęsti
     description_html: Jeigu įjungiate <strong>dviejų veiksnių autentikaciją</strong>, prisijungiant jums reikės turėti su savimi savo telefoną, kuris jums generuos prisijungimo žetonus.
diff --git a/config/locales/lv.yml b/config/locales/lv.yml
index 0967ef424..971450a89 100644
--- a/config/locales/lv.yml
+++ b/config/locales/lv.yml
@@ -1 +1,17 @@
-{}
+---
+lv:
+  errors:
+    '403': You don't have permission to view this page.
+    '404': The page you are looking for isn't here.
+    '410': The page you were looking for doesn't exist here anymore.
+    '422': 
+    '429': Throttled
+    '500': 
+  invites:
+    expires_in:
+      '1800': 30 minutes
+      '21600': 6 hours
+      '3600': 1 hour
+      '43200': 12 hours
+      '604800': 1 week
+      '86400': 1 day
diff --git a/config/locales/ms.yml b/config/locales/ms.yml
index fbadd80fd..3597ccd15 100644
--- a/config/locales/ms.yml
+++ b/config/locales/ms.yml
@@ -5,7 +5,6 @@ ms:
     about_mastodon_html: Mastodon ialah rangkaian sosial berasaskan protokol web terbuka dan perisian percuma bersumber terbuka. Ianya tak terpusat seperti emel.
     about_this: Mengenai Kami
     administered_by: 'Ditadbir oleh:'
-    api: API
     apps: Aplikasi mudah alih
     contact: Hubungi kami
     contact_missing: Tidak ditetapkan
@@ -20,12 +19,10 @@ ms:
     privacy_policy: Polisi privasi
     source_code: Kod sumber
     status_count_after:
-      one: status
       other: status
     status_count_before: Telah menulis
     terms: Terma perkhidmatan
     user_count_after:
-      one: pengguna
       other: pengguna
     user_count_before: Rumah kepada
     what_is_mastodon: Apakah itu Mastodon?
@@ -33,12 +30,10 @@ ms:
     choices_html: 'Pilihan %{name}:'
     follow: Ikut
     followers:
-      one: Pengikut
       other: Pengikut
     following: Mengikuti
     joined: Sertai pada %{date}
     link_verified_on: Pemilikan pautan ini diperiksa pada %{date}
-    media: Media
     moved_html: "%{name} telah berpindah ke %{new_profile_link}:"
     network_hidden: Maklumat ini tidak tersedia
     nothing_here: Tiada apa-apa di sini!
@@ -47,14 +42,11 @@ ms:
     pin_errors:
       following: Anda mestilah sudah mengikuti orang yang anda ingin syorkan
     posts:
-      one: Toot
       other: Toot
     posts_tab_heading: Toot
     posts_with_replies: Toot dan maklum balas
     reserved_username: Nama pengguna ini terpelihara
     roles:
-      admin: Admin
-      bot: Bot
       moderator: Pengawal
     unfollow: Nyahikut
   admin:
@@ -65,8 +57,6 @@ ms:
       destroyed_msg: Nota kawalan telah berjaya dipadam!
     accounts:
       are_you_sure: Anda pasti?
-      avatar: Avatar
-      by_domain: Domain
       change_email:
         changed_msg: Emel akaun telah berjaya ditukar!
         current_email: Emel Semasa
@@ -82,7 +72,6 @@ ms:
       disable_two_factor_authentication: Lumpuhkan 2FA
       disabled: Dilumpuhkan
       display_name: Nama paparan
-      domain: Domain
       edit: Tukar
       email: Emel
       email_status: Status Emel
@@ -151,7 +140,6 @@ ms:
       undo_suspension: Buang penggantungan
       unsubscribe: Buang langganan
       username: Nama pengguna
-      web: Web
     action_logs:
       actions:
         assigned_to_self_report: "%{name} memberikan laporan %{target} kepada diri mereka sendiri"
@@ -186,7 +174,6 @@ ms:
       deleted_status: "(status telah dipadam)"
       title: Log audit
     custom_emojis:
-      by_domain: Domain
       copied_msg: Telah berjaya mencipta salinan tempatan emoji
       copy: Salin
       copy_failed_msg: Tidak dapat membuat salinan tempatan emoji tersebut
@@ -195,7 +182,6 @@ ms:
       destroyed_msg: Emoji berjaya dipadam!
       disable: Lumpuhkan
       disabled_msg: Emoji tersebut berjaya dilumpuhkan
-      emoji: Emoji
       enable: Bolehkan
       enabled_msg: Emoji tersebut berjaya dibolehkan
       image_hint: PNG, maksimum 50KB
@@ -235,7 +221,6 @@ ms:
       add_new: Tambah
       created_msg: Sekatan domain sedang diproses
       destroyed_msg: Sekatan domain telah dibatalkan
-      domain: Domain
       new:
         create: Cipta sekatan
         hint: Sekatan domain tidak akan menghindarkan penciptaan entri akaun dalam pangkalan data, tetapi akan diberikan kaedah kawalan khusus tertentu pada akaun-akaun tersebut secara retroaktif dan automatik.
@@ -251,7 +236,6 @@ ms:
       reject_reports_hint: Abaikan semua laporan daripada domain ini. Tidak dikira untuk penggantungan
       show:
         affected_accounts:
-          one: Satu akaun dalam pangkalan data menerima kesan
           other: "%{count} akaun dalam pangkalan data menerima kesan"
         retroactive:
           silence: Buang penyenyapan semua akaun sedia ada daripada domain ini
@@ -264,7 +248,6 @@ ms:
       created_msg: Berjaya menambah domain emel ke dalam senarai hitam
       delete: Padam
       destroyed_msg: Berjaya memadam domain emel daripada senarai hitam
-      domain: Domain
       new:
         create: Tambah domain
         title: Entri senarai hitam emel baru
@@ -292,7 +275,6 @@ ms:
       pending: Menunggu persetujuan geganti
       save_and_enable: Simpan dan bolehkan
       setup: Tetapkan sambungan geganti
-      status: Status
       title: Geganti
     report_notes:
       created_msg: Nota laporan berjaya dicipta!
@@ -314,9 +296,24 @@ ms:
         create: Tambah nota
         create_and_resolve: Selesaikan dengan nota
         placeholder: Terangkan tindakan apa yang telah diambil, atau sebarang kemas kini lain yang berkaitan...
+  errors:
+    '403': You don't have permission to view this page.
+    '404': The page you are looking for isn't here.
+    '410': The page you were looking for doesn't exist here anymore.
+    '422': 
+    '429': Throttled
+    '500': 
   exports:
     archive_takeout:
       in_progress: Mengkompil arkib anda...
+  invites:
+    expires_in:
+      '1800': 30 minutes
+      '21600': 6 hours
+      '3600': 1 hour
+      '43200': 12 hours
+      '604800': 1 week
+      '86400': 1 day
   notification_mailer:
     digest:
       title: Ketika anda tiada di sini...
diff --git a/config/locales/nl.yml b/config/locales/nl.yml
index e07e7b133..78be7872d 100644
--- a/config/locales/nl.yml
+++ b/config/locales/nl.yml
@@ -121,7 +121,7 @@ nl:
         local: Lokaal
         remote: Extern
         title: Locatie
-      login_status: Login status
+      login_status: Loginstatus
       media_attachments: Mediabijlagen
       memorialize: In gedenkpagina veranderen
       moderation:
@@ -174,6 +174,7 @@ nl:
       statuses: Toots
       subscribe: Abonneren
       suspended: Opgeschort
+      time_in_queue: "%{time} in de wachtrij"
       title: Accounts
       unconfirmed_email: Onbevestigd e-mailadres
       undo_silenced: Niet langer negeren
@@ -234,7 +235,7 @@ nl:
       new:
         title: Lokale emoji toevoegen
       overwrite: Overschrijven
-      shortcode: Shortcode
+      shortcode: Verkorte code
       shortcode_hint: Tenminste 2 tekens (alleen alfanumeriek en underscores)
       title: Lokale emoji’s
       unlisted: Niet weergegeven
@@ -269,6 +270,7 @@ nl:
       created_msg: Domeinblokkade wordt nu verwerkt
       destroyed_msg: Domeinblokkade is ongedaan gemaakt
       domain: Domein
+      existing_domain_block_html: Jij hebt al strengere beperkingen opgelegd aan %{name}, je moet het domein eerst <a href="%{unblock_url}">deblokkeren</a>.
       new:
         create: Blokkade aanmaken
         hint: Een domeinblokkade voorkomt niet dat accountgegevens van dit domein aan de database worden toegevoegd, maar dat er met terugwerkende kracht en automatisch bepaalde moderatiemethoden op deze accounts worden toegepast.
@@ -497,6 +499,12 @@ nl:
       body: "%{reporter} heeft %{target} gerapporteerd"
       body_remote: Iemand van %{domain} heeft %{target} gerapporteerd
       subject: Nieuwe rapportage op %{instance} (#%{id})
+  appearance:
+    advanced_web_interface: Geavanceerde webomgeving
+    advanced_web_interface_hint: 'Wanneer je van de hele schermbreedte gebruik wilt maken, stelt de geavanceerde webomgeving je in staat om meerdere verschillende kolommen te configureren. Hiermee kun je zoveel mogelijk informatie op hetzelfde moment bekijken, zoals: Start, meldingen, de globale tijdlijn, meerdere lijsten en hashtags.'
+    animations_and_accessibility: Animaties en toegankelijkheid
+    confirmation_dialogs: Bevestigingen
+    sensitive_content: Gevoelige inhoud
   application_mailer:
     notification_preferences: E-mailvoorkeuren wijzigen
     salutation: "%{name},"
@@ -753,12 +761,11 @@ nl:
       decimal_units:
         format: "%n%u"
         units:
-          billion: B
-          million: M
-          quadrillion: Q
+          billion: mld.
+          million: mln.
+          quadrillion: qdn.
           thousand: K
-          trillion: T
-          unit: " "
+          trillion: bln.
   pagination:
     newer: Nieuwer
     next: Volgende
@@ -776,10 +783,9 @@ nl:
       too_few_options: moet meer dan één item bevatten
       too_many_options: kan niet meer dan %{max} items bevatten
   preferences:
-    languages: Talen
     other: Overig
-    publishing: Publiceren
-    web: Webapp
+    posting_defaults: Standaardinstellingen voor posten
+    public_timelines: Openbare tijdlijnen
   relationships:
     activity: Accountactiviteit
     dormant: Sluimerend
@@ -926,10 +932,10 @@ nl:
       <h3 id="collect">What information do we collect?</h3>
 
       <ul>
-        <li><em>Basic account information</em>: If you register on this server, you may be asked to enter a username, an e-mail address and a password. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly.</li>
-        <li><em>Posts, following and other public information</em>: The list of people you follow is listed publicly, the same is true for your followers. When you submit a message, the date and time is stored as well as the application you submitted the message from. Messages may contain media attachments, such as pictures and videos. Public and unlisted posts are available publicly. When you feature a post on your profile, that is also publicly available information. Your posts are delivered to your followers, in some cases it means they are delivered to different servers and copies are stored there. When you delete posts, this is likewise delivered to your followers. The action of reblogging or favouriting another post is always public.</li>
-        <li><em>Direct and followers-only posts</em>: All posts are stored and processed on the server. Followers-only posts are delivered to your followers and users who are mentioned in them, and direct posts are delivered only to users mentioned in them. In some cases it means they are delivered to different servers and copies are stored there. We make a good faith effort to limit the access to those posts only to authorized persons, but other servers may fail to do so. Therefore it's important to review servers your followers belong to. You may toggle an option to approve and reject new followers manually in the settings. <em>Please keep in mind that the operators of the server and any receiving server may view such messages</em>, and that recipients may screenshot, copy or otherwise re-share them. <em>Do not share any dangerous information over Mastodon.</em></li>
-        <li><em>IPs and other metadata</em>: When you log in, we record the IP address you log in from, as well as the name of your browser application. All the logged in sessions are available for your review and revocation in the settings. The latest IP address used is stored for up to 12 months. We also may retain server logs which include the IP address of every request to our server.</li>
+      <li><em>Basic account information</em>: If you register on this server, you may be asked to enter a username, an e-mail address and a password. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly.</li>
+      <li><em>Posts, following and other public information</em>: The list of people you follow is listed publicly, the same is true for your followers. When you submit a message, the date and time is stored as well as the application you submitted the message from. Messages may contain media attachments, such as pictures and videos. Public and unlisted posts are available publicly. When you feature a post on your profile, that is also publicly available information. Your posts are delivered to your followers, in some cases it means they are delivered to different servers and copies are stored there. When you delete posts, this is likewise delivered to your followers. The action of reblogging or favouriting another post is always public.</li>
+      <li><em>Direct and followers-only posts</em>: All posts are stored and processed on the server. Followers-only posts are delivered to your followers and users who are mentioned in them, and direct posts are delivered only to users mentioned in them. In some cases it means they are delivered to different servers and copies are stored there. We make a good faith effort to limit the access to those posts only to authorized persons, but other servers may fail to do so. Therefore it's important to review servers your followers belong to. You may toggle an option to approve and reject new followers manually in the settings. <em>Please keep in mind that the operators of the server and any receiving server may view such messages</em>, and that recipients may screenshot, copy or otherwise re-share them. <em>Do not share any dangerous information over Mastodon.</em></li>
+      <li><em>IPs and other metadata</em>: When you log in, we record the IP address you log in from, as well as the name of your browser application. All the logged in sessions are available for your review and revocation in the settings. The latest IP address used is stored for up to 12 months. We also may retain server logs which include the IP address of every request to our server.</li>
       </ul>
 
       <hr class="spacer" />
@@ -939,9 +945,9 @@ nl:
       <p>Any of the information we collect from you may be used in the following ways:</p>
 
       <ul>
-        <li>To provide the core functionality of Mastodon. You can only interact with other people's content and post your own content when you are logged in. For example, you may follow other people to view their combined posts in your own personalized home timeline.</li>
-        <li>To aid moderation of the community, for example comparing your IP address with other known ones to determine ban evasion or other violations.</li>
-        <li>The email address you provide may be used to send you information, notifications about other people interacting with your content or sending you messages, and to respond to inquiries, and/or other requests or questions.</li>
+      <li>To provide the core functionality of Mastodon. You can only interact with other people's content and post your own content when you are logged in. For example, you may follow other people to view their combined posts in your own personalized home timeline.</li>
+      <li>To aid moderation of the community, for example comparing your IP address with other known ones to determine ban evasion or other violations.</li>
+      <li>The email address you provide may be used to send you information, notifications about other people interacting with your content or sending you messages, and to respond to inquiries, and/or other requests or questions.</li>
       </ul>
 
       <hr class="spacer" />
@@ -957,8 +963,8 @@ nl:
       <p>We will make a good faith effort to:</p>
 
       <ul>
-        <li>Retain server logs containing the IP address of all requests to this server, in so far as such logs are kept, no more than 90 days.</li>
-        <li>Retain the IP addresses associated with registered users no more than 12 months.</li>
+      <li>Retain server logs containing the IP address of all requests to this server, in so far as such logs are kept, no more than 90 days.</li>
+      <li>Retain the IP addresses associated with registered users no more than 12 months.</li>
       </ul>
 
       <p>You can request and download an archive of your content, including your posts, media attachments, profile picture, and header image.</p>
diff --git a/config/locales/no.yml b/config/locales/no.yml
index f16b314cb..d21dda6fb 100644
--- a/config/locales/no.yml
+++ b/config/locales/no.yml
@@ -14,25 +14,19 @@
     hosted_on: Mastodon driftet på %{domain}
     learn_more: Lær mer
     source_code: Kildekode
-    status_count_after: statuser
     status_count_before: Som skrev
-    user_count_after: brukere
     user_count_before: Her bor
     what_is_mastodon: Hva er Mastodon?
   accounts:
     follow: Følg
-    followers: Følgere
     following: Følger
-    media: Media
     moved_html: "%{name} har flyttet til %{new_profile_link}:"
     nothing_here: Det er ingenting her!
     people_followed_by: Folk som %{name} følger
     people_who_follow: Folk som følger %{name}
-    posts: Poster
     posts_with_replies: Tuter med svar
     reserved_username: Brukernavnet er reservert
     roles:
-      admin: Admin
       moderator: Moderere
     unfollow: Slutte følge
   admin:
@@ -98,8 +92,6 @@
       resubscribe: Abonner på nytt
       role: Rettigheter
       roles:
-        admin: Administrator
-        moderator: Moderator
         staff: Personale
         user: Bruker
       salmon_url: Salmon-URL
@@ -116,7 +108,6 @@
       undo_suspension: Angre utvisning
       unsubscribe: Avslutte abonnementet
       username: Brukernavn
-      web: Web
     action_logs:
       actions:
         confirm_user: "%{name} bekreftet e-postadresse for bruker %{target}"
@@ -153,7 +144,6 @@
       destroyed_msg: Emojo slettet uten problem!
       disable: Deaktivere
       disabled_msg: Deaktiverte emoji uten problem
-      emoji: Emoji
       enable: Aktivere
       enabled_msg: Aktiverte emojien uten problem
       image_hint: PNG opp til 50KB
@@ -211,7 +201,6 @@
         all: Alle
         available: Tilgjengelig
         expired: Utløpt
-        title: Filter
       title: Invitasjoner
     reports:
       action_taken_by: Handling utført av
@@ -223,7 +212,6 @@
       reported_account: Rapportert konto
       reported_by: Rapportert av
       resolved: Løst
-      status: Status
       title: Rapporter
       unresolved: Uløst
     settings:
@@ -276,8 +264,6 @@
         nsfw_off: NSFW AV
         nsfw_on: NSFW PÅ
       failed_to_execute: Utføring mislyktes
-      media:
-        title: Media
       no_media: Ingen media
       title: Kontostatuser
       with_media: Med media
@@ -286,7 +272,6 @@
       confirmed: Bekreftet
       expires_in: Utløper om
       last_delivery: Siste levering
-      title: WebSub
       topic: Emne
     title: Administrasjon
   admin_mailer:
@@ -295,7 +280,6 @@
       subject: Ny rapport for %{instance} (#%{id})
   application_mailer:
     notification_preferences: Endre e-post innstillingene
-    salutation: "%{name},"
     settings: 'Endre foretrukne e-postinnstillinger: %{link}'
     view: 'Se:'
     view_profile: Vis Profil
@@ -369,7 +353,6 @@
     noscript_html: For å bruke Mastodon webapplikasjon må du aktivere JavaScript. Alternativt kan du forsøke en av de mange <a href="%{apps_path}">integrerte appene</a> for Mastodon til din plattform.
   exports:
     blocks: Du blokkerer
-    csv: CSV
     follows: Du følger
     mutes: Du demper
     storage: Medialagring
@@ -396,6 +379,7 @@
       '21600': 6 timer
       '3600': 1 time
       '43200': 12 timer
+      '604800': 1 week
       '86400': 1 dag
     expires_in_prompt: Aldri
     generate: Generer
@@ -456,26 +440,11 @@
       body: 'Din status ble fremhevd av %{name}:'
       subject: "%{name} fremhevde din status"
       title: Ny fremheving
-  number:
-    human:
-      decimal_units:
-        format: "%n%u"
-        units:
-          billion: B
-          million: M
-          quadrillion: Q
-          thousand: K
-          trillion: T
-          unit: " "
   pagination:
     next: Neste
     prev: Forrige
-    truncate: "&hellip;"
   preferences:
-    languages: Språk
     other: Annet
-    publishing: Publisering
-    web: Web
   remote_follow:
     acct: Tast inn brukernavn@domene som du vil følge fra
     missing_resource: Kunne ikke finne URLen for din konto
@@ -485,40 +454,13 @@
     activity: Siste aktivitet
     browser: Nettleser
     browsers:
-      alipay: Alipay
-      blackberry: Blackberry
-      chrome: Chrome
-      edge: Microsoft Edge
-      electron: Electron
-      firefox: Firefox
       generic: Ukjent nettleser
-      ie: Internet Explorer
-      micro_messenger: MicroMessenger
-      nokia: Nokia S40 Ovi Browser
-      opera: Opera
-      otter: Otter
-      phantom_js: PhantomJS
-      qq: QQ Browser
-      safari: Safari
-      uc_browser: UCBrowser
-      weibo: Weibo
     current_session: Nåværende økt
     description: "%{browser} på %{platform}"
     explanation: Dette er nettlesere innlogget på din Mastodon-konto akkurat nå.
     ip: IP-adresse
     platforms:
-      adobe_air: Adobe Air
-      android: Android
-      blackberry: Blackberry
-      chrome_os: ChromeOS
-      firefox_os: Firefox OS
-      ios: iOS
-      linux: Linux
-      mac: Mac
       other: ukjent plattform
-      windows: Windows
-      windows_mobile: Windows Mobile
-      windows_phone: Windows Phone
     revoke: Tilbakekall
     revoke_success: Økt tilbakekalt
     title: Økter
@@ -543,7 +485,6 @@
       private: Kun offentlige tuter kan festes
       reblog: En fremheving kan ikke festes
     show_more: Vis mer
-    title: '%{name}: "%{quote}"'
     visibilities:
       private: Privat
       private_long: Synlig kun for følgere
@@ -594,7 +535,6 @@
       tip_following: Du følger din tjeners administrator(er) som standard. For å finne mer interessante personer, sjekk den lokale og forente tidslinjen.
       tip_local_timeline: Den lokale tidslinjen blir kontant matet med meldinger fra personer på %{instance}. Dette er dine nærmeste naboer!
       tip_mobile_webapp: Hvis din mobile nettleser tilbyr deg å legge Mastadon til din hjemmeskjerm kan du motta push-varslinger. Det er nesten som en integrert app på mange måter!
-      tips: Tips
       title: Velkommen ombord, %{name}!
   users:
     invalid_email: E-postaddressen er ugyldig
diff --git a/config/locales/oc.yml b/config/locales/oc.yml
index 81f17cd3d..785caa4ec 100644
--- a/config/locales/oc.yml
+++ b/config/locales/oc.yml
@@ -7,7 +7,6 @@ oc:
     active_count_after: actius
     active_footnote: Utilizaire actius per mes (UAM)
     administered_by: 'Administrat per :'
-    api: API
     apps: Aplicacions per mobil
     apps_platforms: Utilizatz Mastodon d‘iOS, Android o d’autras plataforma estant
     browse_directory: Navigatz per l’annuari de perfil e filtratz segon çò qu’aimatz
@@ -63,7 +62,6 @@ oc:
     posts_with_replies: Tuts e responsas
     reserved_username: Aqueste nom d’utilizaire es reservat
     roles:
-      admin: Admin
       bot: Robòt
       moderator: Moderador
     unfollow: Quitar de sègre
@@ -79,7 +77,6 @@ oc:
     accounts:
       approve: Aprovar
       are_you_sure: Sètz segur ?
-      avatar: Avatar
       by_domain: Domeni
       change_email:
         changed_msg: Adreça corrèctament cambiada !
@@ -110,7 +107,6 @@ oc:
       header: Bandièra
       inbox_url: URL de recepcion
       invited_by: Convidat per
-      ip: IP
       joined: Venguèt
       location:
         all: Totes
@@ -138,7 +134,6 @@ oc:
       profile_url: URL del perfil
       promote: Promòure
       protocol: Protocòl
-      public: Public
       push_subscription_expires: Fin de l’abonament PuSH
       redownload: Actualizar lo perfil
       remove_avatar: Supriir l’avatar
@@ -150,9 +145,7 @@ oc:
       reset: Reïnicializar
       reset_password: Reïnicializar lo senhal
       resubscribe: Se tornar abonar
-      role: Permissions
       roles:
-        admin: Administrator
         moderator: Moderador
         staff: Personnal
         user: Uitlizaire
@@ -174,7 +167,6 @@ oc:
       unsubscribe: Se desabonar
       username: Nom d’utilizaire
       warn: Avisar
-      web: Web
     action_logs:
       actions:
         assigned_to_self_report: "%{name} s’assignèt lo rapòrt %{target}"
@@ -219,7 +211,6 @@ oc:
       destroyed_msg: Emoji ben suprimit !
       disable: Desactivar
       disabled_msg: Aqueste emoji es ben desactivat
-      emoji: Emoji
       enable: Activar
       enabled_msg: Aqueste emoji es ben activat
       image_hint: PNG cap a 50Ko
@@ -460,7 +451,6 @@ oc:
       confirmed: Confirmat
       expires_in: S’acaba dins
       last_delivery: Darrièra distribucion
-      title: WebSub
       topic: Subjècte
     tags:
       accounts: Comptes
@@ -469,7 +459,6 @@ oc:
       name: Etiqueta
       title: Etiquetas
       unhide: Aparéisser dins l’annuari
-      visible: Visible
     title: Administracion
     warning_presets:
       add_new: N’ajustar un nòu
@@ -484,7 +473,6 @@ oc:
       subject: Novèl senhalament per %{instance} (#%{id})
   application_mailer:
     notification_preferences: Cambiar las preferéncias de corrièl
-    salutation: "%{name},"
     settings: 'Cambiar las preferéncias de corrièl : %{link}'
     view: 'Veire :'
     view_profile: Veire lo perfil
@@ -512,9 +500,6 @@ oc:
     migrate_account: Mudar endacòm mai
     migrate_account_html: Se volètz mandar los visitors d’aqueste compte a un autre, podètz<a href="%{path}"> o configurar aquí</a>.
     or_log_in_with: O autentificatz-vos amb
-    providers:
-      cas: CAS
-      saml: SAML
     register: Se marcar
     registration_closed: "%{instance} accepta pas de nòus membres"
     resend_confirmation: Tornar mandar las instruccions de confirmacion
@@ -533,59 +518,6 @@ oc:
       return: Veire lo perfil a la persona
       web: Tornar a l’interfàcia Web
     title: Sègre %{acct}
-  date:
-    abbr_day_names:
-    - dg
-    - dl
-    - dm
-    - dc
-    - dj
-    - dv
-    - ds
-    abbr_month_names:
-    - None
-    - gen
-    - feb
-    - mar
-    - abr
-    - mai
-    - jun
-    - jul
-    - ago
-    - set
-    - oct
-    - nov
-    - dec
-    day_names:
-    - dimenge
-    - diluns
-    - dimars
-    - dimècres
-    - dijòus
-    - divendres
-    - dissabte
-    formats:
-      default: "%e/%m/%Y"
-      long: Lo %e %B de %Y
-      short: "%e %B de %Y"
-    month_names:
-    - None
-    - de genièr
-    - de febrièr
-    - de març
-    - d’abrial
-    - de mai
-    - de junh
-    - de julhet
-    - d’agost
-    - de setembre
-    - d’octòbre
-    - de novembre
-    - de decembre
-    order:
-    - :day
-    - :month
-    - :year
   datetime:
     distance_in_words:
       about_x_hours: "%{count} h"
@@ -599,10 +531,6 @@ oc:
       x_days: "%{count} jorns"
       x_minutes: "%{count} min"
       x_months: "%{count} meses"
-      x_seconds: "%{count}s"
-      x_years:
-        one: Fa un an
-        other: Fa %{count} ans
   deletes:
     bad_password_msg: Ben ensajat pirata ! Senhal incorrècte
     confirm_password: Picatz vòstre senhal actual per verificar vòstra identitat
@@ -642,7 +570,6 @@ oc:
       request: Demandar vòstre archiu
       size: Talha
     blocks: Personas que blocatz
-    csv: CSV
     domain_blocks: Blocatge de domenis
     follows: Personas que seguètz
     lists: Listas
@@ -771,23 +698,11 @@ oc:
       body: "%{name} a tornat partejar vòstre estatut :"
       subject: "%{name} a tornat partejar vòstre estatut"
       title: Novèl partatge
-  number:
-    human:
-      decimal_units:
-        format: "%n%u"
-        units:
-          billion: B
-          million: M
-          quadrillion: Q
-          thousand: K
-          trillion: T
-          unit: ''
   pagination:
     newer: Mai recents
     next: Seguent
     older: Mai ancians
     prev: Precedent
-    truncate: "&hellip;"
   polls:
     errors:
       already_voted: Avètz ja votat per aqueste sondatge
@@ -799,10 +714,7 @@ oc:
       too_few_options: deu contenir mai d’una opcion
       too_many_options: pòt pas contenir mai de %{max} opcions
   preferences:
-    languages: Lengas
     other: Autre
-    publishing: Publicar
-    web: Interfàcia Web
   relationships:
     activity: Activitat del compte
     dormant: Inactiu
@@ -829,7 +741,6 @@ oc:
       proceed: Contunhar per respondre
       prompt: 'Volètz respondre a aqueste tut :'
   remote_unfollow:
-    error: Error
     title: Títol
     unfollowed: Pas mai seguit
   scheduled_statuses:
@@ -840,43 +751,14 @@ oc:
     activity: Darrièra activitat
     browser: Navigator
     browsers:
-      alipay: Alipay
-      blackberry: Blackberry
-      chrome: Chrome
-      edge: Microsoft Edge
-      electron: Electron
-      firefox: Firefox
       generic: Navigator desconegut
-      ie: Internet Explorer
-      micro_messenger: MicroMessenger
-      nokia: Nokia S40 Ovi Browser
-      opera: Opera
-      otter: Otter
-      phantom_js: PhantomJS
-      qq: QQ Browser
-      safari: Safari
-      uc_browser: UCBrowser
-      weibo: Weibo
     current_session: Session en cors
     description: "%{browser} sus %{platform}"
     explanation: Aquí los navigators connectats a vòstre compte Mastodon.
-    ip: IP
     platforms:
-      adobe_air: Adobe Air
-      android: Android
-      blackberry: Blackberry
-      chrome_os: ChromeOS
-      firefox_os: Firefox OS
-      ios: iOS
-      linux: Linux
-      mac: Mac
       other: plataforma desconeguda
-      windows: Windows
-      windows_mobile: Windows Mobile
-      windows_phone: Windows Phone
     revoke: Revocar
     revoke_success: Session ben revocada
-    title: Sessions
   settings:
     authorized_apps: Aplicacions autorizadas
     back: Tornar a Mastodon
@@ -924,7 +806,6 @@ oc:
     visibilities:
       private: Seguidors solament
       private_long: Mostrar pas qu’als seguidors
-      public: Public
       public_long: Tot lo monde pòt veire
       unlisted: Pas listat
       unlisted_long: Tot lo monde pòt veire mai serà pas visible sul flux public
@@ -938,10 +819,10 @@ oc:
       <h3 id="collect">Quinas informacions reculhèm ?</h3>
 
       <ul>
-        <li><em>Inforacions de basa del compte</em> :  se vos marcatz sus aqueste servidor, vos podèm demandar de picar un escais-nom, una adreça de corrièl e un senhal. Podètz tanben ajustar d’informacions de perfil addicionalas coma un nom de far veire, una biografia, un imatge de perfil e una banièra. L’escais-nom, lo nom d’afichatge, la biografia, l’imatge de perfil e la banièra son totjorn indicats per èsser vistes publicament.</li>
-        <li><em>Publicacions, abonaments e autras informacions publicas</em> : La lista del monde que seguètz es visibla publicament, tot parièr per vòstres seguidors. Quand enviatz un messatge, la data e l’ora son gardats, l’aplicacion qu’avètz utilizada tanben. Los messatges pòdon conténer de mèdias juntats coma d’imatge e vidèos. Las publicacions publicas e pas listadas son disponiblas publicament. Quand penjatz una publicacion per vòstre perfil, aquò tanben es visible per tot lo monde. Vòstras publicacions son mandadas a vòstre seguidors, dins qualques cases aquò significa que passaràn per diferents servidors e seràn copiadas e gardadas sus aqueles servidors. Quand escafatz de publicacions, aquò es tanben mandat a vòstre seguidors. L’accion de partejar o d’ajustar als favorits una publicacion es totjorn quicòm de public.</li>
-       <li><em>Publicacions dirèctas e solament pels seguidors</em> :</li> totas las publicacions son gardadas e tractadas pel servidor. Las publicacions pas que per vòstres seguidors son enviadas a vòstres seguidors e las personas mencionadas dedins, las publicacions dirèctas son pas qu’enviadas a las personas mencionadas. Dins qualques cases aquò significa que passaràn per diferents servidors, copiadas e gardadas sus eles. Ensagem de limitar l’accès a aquelas publicacions a monde autorizat, mas los demai servidors pòdon fracar a far parièr. A causa d’aquò es fòrça important de repassar los servidors d’apertenéncia de vòstres seguidors. Podètz activar una opcion per autorizar o regetar una demanda de seguiment dins los paramètres. <em>Vos cal pas oblidar que’ls administrators dels servidors e dels servidors de recepcion pòdon veire aqueles messatges</em>, e que’ls destinataris pòdon realizar de captura d’ecran, copiar e tornar partejar los messatges.<em>Partegetz pas cap informacion perilhosa sus Mastodon</em><li>.
-        <li><em>Adreças IP e autras metadonadas</em> : quand vos connectatz, enregistrem l’adreça IP qu’utilizatz per establir la connexion, e tanben lo nom de vòstre navigador. Totas las sessions de connexion son disponiblas per que las repassetz e tiretz dins los paramètres. Las darrièras adreças IP son salvagardas fins a 12 meses. Podèm tanben gardar de jornals d’audit del servidor que pòdon conténer las adreças IP de cada requèstas mandadas a nòstre servidor.</li>
+      <li><em>Inforacions de basa del compte</em> :  se vos marcatz sus aqueste servidor, vos podèm demandar de picar un escais-nom, una adreça de corrièl e un senhal. Podètz tanben ajustar d’informacions de perfil addicionalas coma un nom de far veire, una biografia, un imatge de perfil e una banièra. L’escais-nom, lo nom d’afichatge, la biografia, l’imatge de perfil e la banièra son totjorn indicats per èsser vistes publicament.</li>
+      <li><em>Publicacions, abonaments e autras informacions publicas</em> : La lista del monde que seguètz es visibla publicament, tot parièr per vòstres seguidors. Quand enviatz un messatge, la data e l’ora son gardats, l’aplicacion qu’avètz utilizada tanben. Los messatges pòdon conténer de mèdias juntats coma d’imatge e vidèos. Las publicacions publicas e pas listadas son disponiblas publicament. Quand penjatz una publicacion per vòstre perfil, aquò tanben es visible per tot lo monde. Vòstras publicacions son mandadas a vòstre seguidors, dins qualques cases aquò significa que passaràn per diferents servidors e seràn copiadas e gardadas sus aqueles servidors. Quand escafatz de publicacions, aquò es tanben mandat a vòstre seguidors. L’accion de partejar o d’ajustar als favorits una publicacion es totjorn quicòm de public.</li>
+      <li><em>Publicacions dirèctas e solament pels seguidors</em> :</li> totas las publicacions son gardadas e tractadas pel servidor. Las publicacions pas que per vòstres seguidors son enviadas a vòstres seguidors e las personas mencionadas dedins, las publicacions dirèctas son pas qu’enviadas a las personas mencionadas. Dins qualques cases aquò significa que passaràn per diferents servidors, copiadas e gardadas sus eles. Ensagem de limitar l’accès a aquelas publicacions a monde autorizat, mas los demai servidors pòdon fracar a far parièr. A causa d’aquò es fòrça important de repassar los servidors d’apertenéncia de vòstres seguidors. Podètz activar una opcion per autorizar o regetar una demanda de seguiment dins los paramètres. <em>Vos cal pas oblidar que’ls administrators dels servidors e dels servidors de recepcion pòdon veire aqueles messatges</em>, e que’ls destinataris pòdon realizar de captura d’ecran, copiar e tornar partejar los messatges.<em>Partegetz pas cap informacion perilhosa sus Mastodon</em><li>.
+      <li><em>Adreças IP e autras metadonadas</em> : quand vos connectatz, enregistrem l’adreça IP qu’utilizatz per establir la connexion, e tanben lo nom de vòstre navigador. Totas las sessions de connexion son disponiblas per que las repassetz e tiretz dins los paramètres. Las darrièras adreças IP son salvagardas fins a 12 meses. Podèm tanben gardar de jornals d’audit del servidor que pòdon conténer las adreças IP de cada requèstas mandadas a nòstre servidor.</li>
 
       </ul>
 
@@ -952,9 +833,9 @@ oc:
       <p>Totas las informacions que collectem de vos pòdon servir dins los cases seguents :</p>
 
       <ul>
-        <li>Per provesir la foncionament màger de Mastodon. Podètz pas qu’interagir amb lo contengut del monde e de vòstras publicacions quand sètz connectat. Per exemple, avètz la possibilitat de sègre de monde per veire lors publicacions amassadas dins vòstre flux d’actualitat personalizat.</li>
-        <li>Per ajudar la moderacion de la comunitat, per exemple en comparant vòstra adreça IP amb d’autras per determinar d’ensages de contornament de bandiment e d’autras violéncias.</li>
-        <li>Podèm utilizar l’adreça qu’avètz donada per vos enviar d’informacions e de notificacions que demandatz tocant de cambiaments dins los subjèctes del forum o en responsa a vòstre nom d’utilizaire, en responsa a una demanda, e/o tota autra question.</li>
+      <li>Per provesir la foncionament màger de Mastodon. Podètz pas qu’interagir amb lo contengut del monde e de vòstras publicacions quand sètz connectat. Per exemple, avètz la possibilitat de sègre de monde per veire lors publicacions amassadas dins vòstre flux d’actualitat personalizat.</li>
+      <li>Per ajudar la moderacion de la comunitat, per exemple en comparant vòstra adreça IP amb d’autras per determinar d’ensages de contornament de bandiment e d’autras violéncias.</li>
+      <li>Podèm utilizar l’adreça qu’avètz donada per vos enviar d’informacions e de notificacions que demandatz tocant de cambiaments dins los subjèctes del forum o en responsa a vòstre nom d’utilizaire, en responsa a una demanda, e/o tota autra question.</li>
       </ul>
 
       <hr class="spacer" />
@@ -969,8 +850,8 @@ oc:
       <p>Farem esfòrces per :</p>
 
       <ul>
-       <li>Gardar los jornals del servidor que contenon las adreças IP de totas las demandas al servidor pas mai de 90 jorns.</li>
-       <li>Gardar las adreças IP ligadas als utilizaires e lors publicacions pas mai de 12 messes.</li>
+      <li>Gardar los jornals del servidor que contenon las adreças IP de totas las demandas al servidor pas mai de 90 jorns.</li>
+      <li>Gardar las adreças IP ligadas als utilizaires e lors publicacions pas mai de 12 messes.</li>
       </ul>
 
       <p>Podètz demandar e telecargar vòstre archiu de contengut, amb vòstras publicacions, los mèdias enviats, l’imatge de perfil e l’imatge de bandièra.</p>
@@ -1024,7 +905,6 @@ oc:
   time:
     formats:
       default: Lo %d %b de %Y a %Ho%M
-      month: "%b %Y"
   two_factor_authentication:
     code_hint: Picatz lo còdi generat per vòstra aplicacion d’autentificacion per confirmar
     description_html: S’activatz <strong> l’autentificacion two-factor</strong>, vos caldrà vòstre mobil per vos connectar perque generarà un geton per vos daissar dintrar.
diff --git a/config/locales/pl.yml b/config/locales/pl.yml
index d4e07f6e8..538e6d554 100644
--- a/config/locales/pl.yml
+++ b/config/locales/pl.yml
@@ -76,6 +76,7 @@ pl:
       admin: Administrator
       bot: Bot
       moderator: Moderator
+    unavailable: Profil niedostępny
     unfollow: Przestań śledzić
   admin:
     account_actions:
@@ -88,6 +89,7 @@ pl:
       destroyed_msg: Pomyślnie usunięto notatkę moderacyjną!
     accounts:
       approve: Przyjmij
+      approve_all: Zatwierdź wszystkie
       are_you_sure: Jesteś tego pewien?
       avatar: Awatar
       by_domain: Domena
@@ -140,6 +142,7 @@ pl:
       moderation_notes: Notatki moderacyjne
       most_recent_activity: Najnowsza aktywność
       most_recent_ip: Ostatnie IP
+      no_account_selected: Żadne konto nie zostało zmienione, bo żadne nie zostało wybrane
       no_limits_imposed: Nie nałożono ograniczeń
       not_subscribed: Nie zasubskrybowano
       outbox_url: Adres skrzynki nadawczej
@@ -152,6 +155,7 @@ pl:
       push_subscription_expires: Subskrypcja PuSH wygasa
       redownload: Odśwież profil
       reject: Odrzuć
+      reject_all: Odrzuć wszystkie
       remove_avatar: Usun awatar
       remove_header: Usuń nagłówek
       resend_confirmation:
@@ -178,6 +182,7 @@ pl:
       statuses: Wpisy
       subscribe: Subskrybuj
       suspended: Zawieszono
+      time_in_queue: Czekanie w kolejce %{time}
       title: Konta
       unconfirmed_email: Niepotwierdzony adres e-mail
       undo_silenced: Cofnij wyciszenie
@@ -230,7 +235,7 @@ pl:
       destroyed_msg: Pomyślnie usunięto emoji!
       disable: Wyłącz
       disabled_msg: Pomyślnie wyłączono emoji
-      emoji: Emoji
+      emoji: Emotikona
       enable: Włącz
       enabled_msg: Pomyślnie przywrócono emoji
       image_hint: Plik PNG ważący do 50KB
@@ -238,7 +243,7 @@ pl:
       new:
         title: Dodaj nowe niestandardowe emoji
       overwrite: Zastąp
-      shortcode: Shortcode
+      shortcode: Krótki kod
       shortcode_hint: Co najmniej 2 znaki, tylko znaki alfanumeryczne i podkreślniki
       title: Niestandardowe emoji
       unlisted: Niewidoczne
@@ -273,6 +278,7 @@ pl:
       created_msg: Blokada domen jest przetwarzana
       destroyed_msg: Blokada domeny nie może zostać odwrócona
       domain: Domena
+      existing_domain_block_html: Już narzuciłeś bardziej rygorystyczne limity na %{name}, musisz najpierw <a href="%{unblock_url}">je odblokować</a>.
       new:
         create: Utwórz blokadę
         hint: Blokada domen nie zabroni tworzenia wpisów kont w bazie danych, ale pozwoli na automatyczną moderację kont do nich należących.
@@ -342,6 +348,8 @@ pl:
         expired: Wygasłe
         title: Filtruj
       title: Zaproszenia
+    pending_accounts:
+      title: Oczekujące konta (%{count})
     relays:
       add_new: Dodaj nowy
       delete: Usuń
@@ -468,7 +476,7 @@ pl:
         nsfw_on: Oznacz jako NSFW
       failed_to_execute: Nie udało się wykonać
       media:
-        title: Media
+        title: Multimedia
       no_media: Bez zawartości multimedialnej
       no_status_selected: Żaden wpis nie został zmieniony, bo żaden nie został wybrany
       title: Wpisy konta
@@ -484,7 +492,7 @@ pl:
       accounts: Konta
       hidden: Ukryte
       hide: Ukryj w katalogu
-      name: Hashtag
+      name: Hasztag
       title: Hashtagi
       unhide: Pokazuj w katalogu
       visible: Widoczne
@@ -503,6 +511,12 @@ pl:
       body: Użytkownik %{reporter} zgłosił(a) %{target}
       body_remote: Użytkownik instancji %{domain} zgłosił(a) %{target}
       subject: Nowe zgłoszenie na %{instance} (#%{id})
+  appearance:
+    advanced_web_interface: Zaawansowany interfejs użytkownika
+    advanced_web_interface_hint: Jeśli chcesz użyć pełną szerokość swojego ekranu, zaawansowany interfejs użytkownika pozwala Ci skonfigurować wiele różnych kolumn, by zobaczyć jak najwięcej informacji kiedy tylko chcesz. Strona główna, Powiadomienia, Globalna oś czasu, dowolna ilość list i hasztagów.
+    animations_and_accessibility: Animacje i dostępność
+    confirmation_dialogs: Dialogi potwierdzenia
+    sensitive_content: Wrażliwa zawartość
   application_mailer:
     notification_preferences: Zmień ustawienia e-maili
     salutation: "%{name},"
@@ -556,7 +570,7 @@ pl:
     title: Śledź %{acct}
   datetime:
     distance_in_words:
-      about_x_hours: "%{count}h"
+      about_x_hours: "%{count}g"
       about_x_months: "%{count} miesięcy"
       about_x_years: "%{count} lat"
       almost_x_years: "%{count} lat"
@@ -770,12 +784,11 @@ pl:
       decimal_units:
         format: "%n%u"
         units:
-          billion: B
-          million: M
-          quadrillion: Q
-          thousand: K
-          trillion: T
-          unit: ''
+          billion: mld
+          million: mil
+          quadrillion: bld
+          thousand: tys
+          trillion: bln
   pagination:
     newer: Nowsze
     next: Następna
@@ -793,10 +806,9 @@ pl:
       too_few_options: musi zawierać przynajmniej dwie opcje
       too_many_options: nie może zawierać więcej niż %{max} opcji
   preferences:
-    languages: Języki
     other: Pozostałe
-    publishing: Publikowanie
-    web: Sieć
+    posting_defaults: Domyślne ustawienia wpisów
+    public_timelines: Publiczne osie czasu
   relationships:
     activity: Aktywność konta
     dormant: Uśpione
@@ -877,6 +889,9 @@ pl:
     revoke_success: Pomyślnie unieważniono sesję
     title: Sesje
   settings:
+    account: Konto
+    account_settings: Ustawienia konta
+    appearance: Wygląd
     authorized_apps: Uwierzytelnione aplikacje
     back: Powrót do Mastodona
     delete: Usuń konto
@@ -887,9 +902,11 @@ pl:
     flavours: Odmiany
     identity_proofs: Dowody tożsamości
     import: Importowanie danych
+    import_and_export: Import i eksport
     migrate: Migracja konta
     notifications: Powiadomienia
     preferences: Preferencje
+    profile: Profil
     relationships: Śledzeni i śledzący
     two_factor_authentication: Uwierzytelnianie dwuetapowe
   statuses:
@@ -947,10 +964,10 @@ pl:
       <h3 id="collect">Jakie informacje zbieramy?</h3>
 
       <ul>
-        <li><em>Podstawowe informacje o koncie</em>: Podczas rejestracji na tym serwerze, możesz zostać poproszony(-a) o wprowadzenie nazwy użytkownika, adresu e-mail i hasła. Możesz także wprowadzić dodatkowe informacje o profilu, takie jak nazwa wyświetlana i biografia oraz wysłać awatar i obraz nagłówka. Nazwa użytkownika, nazwa wyświetlana, biografia, awatar i obraz nagłówka są zawsze widoczne dla wszystkich.</li>
-        <li><em>Wpisy, śledzenie i inne publiczne informacje</em>: Lista osób które śledzisz jest widoczna publicznie, tak jak lista osób, które Cię śledzą. Jeżeli dodasz wpis, data i czas jego utworzenia i aplikacja, z której go wysłano są przechowywane. Wiadomości mogą zawierać załączniki multimedialne, takie jak zdjęcia i filmy. Publiczne i niewidoczne wpisy są dostępne publicznie. Udostępniony wpis również jest widoczny publicznie. Twoje wpisy są dostarczane obserwującym, co oznacza że jego kopie mogą zostać dostarczone i być przechowywane na innych serwerach. Kiedy usuniesz wpis, przestaje być widoczny również dla osób śledzących Cię. „Podbijanie” i dodanie do ulubionych jest zawsze publiczne.</li>
-        <li><em>Wpisy bezpośrednie i tylko dla śledzących</em>: Wszystkie wpisy są przechowywane i przetwarzane na serwerze. Wpisy przeznaczone tylko dla śledzących są widoczne tylko dla nich i osób wspomnianych we wpisie, a wpisy bezpośrednie tylko dla wspomnianych. W wielu przypadkach oznacza to, że ich kopie są dostarczane i przechowywane na innych serwerach. Staramy się ograniczać zasięg tych wpisów wyłącznie do właściwych odbiorców, ale inne serwery mogą tego nie robić. Ważne jest, aby sprawdzać jakich serwerów używają osoby, które Cię śledzą. Możesz aktywować opcję pozwalającą na ręczne akceptowanie i odrzucanie nowych śledzących. <em>Pamiętaj, że właściciele serwerów mogą zobaczyć te wiadomości</em>, a odbiorcy mogą wykonać zrzut ekranu, skopiować lub udostępniać ten wpis. <em>Nie udostępniaj wrażliwych danych z użyciem Mastodona.</em></li>
-        <li><em>Adresy IP i inne metadane</em>: Kiedy zalogujesz się, przechowujemy adres IP użyty w trakcie logowania wraz z nazwą używanej przeglądarki. Wszystkie aktywne sesje możesz zobaczyć (i wygasić) w ustawieniach. Ostatnio używany adres IP jest przechowywany przez nas do 12 miesięcy. Możemy również przechowywać adresy IP wykorzystywane przy każdym działaniu na serwerze.</li>
+      <li><em>Podstawowe informacje o koncie</em>: Podczas rejestracji na tym serwerze, możesz zostać poproszony(-a) o wprowadzenie nazwy użytkownika, adresu e-mail i hasła. Możesz także wprowadzić dodatkowe informacje o profilu, takie jak nazwa wyświetlana i biografia oraz wysłać awatar i obraz nagłówka. Nazwa użytkownika, nazwa wyświetlana, biografia, awatar i obraz nagłówka są zawsze widoczne dla wszystkich.</li>
+      <li><em>Wpisy, śledzenie i inne publiczne informacje</em>: Lista osób które śledzisz jest widoczna publicznie, tak jak lista osób, które Cię śledzą. Jeżeli dodasz wpis, data i czas jego utworzenia i aplikacja, z której go wysłano są przechowywane. Wiadomości mogą zawierać załączniki multimedialne, takie jak zdjęcia i filmy. Publiczne i niewidoczne wpisy są dostępne publicznie. Udostępniony wpis również jest widoczny publicznie. Twoje wpisy są dostarczane obserwującym, co oznacza że jego kopie mogą zostać dostarczone i być przechowywane na innych serwerach. Kiedy usuniesz wpis, przestaje być widoczny również dla osób śledzących Cię. „Podbijanie” i dodanie do ulubionych jest zawsze publiczne.</li>
+      <li><em>Wpisy bezpośrednie i tylko dla śledzących</em>: Wszystkie wpisy są przechowywane i przetwarzane na serwerze. Wpisy przeznaczone tylko dla śledzących są widoczne tylko dla nich i osób wspomnianych we wpisie, a wpisy bezpośrednie tylko dla wspomnianych. W wielu przypadkach oznacza to, że ich kopie są dostarczane i przechowywane na innych serwerach. Staramy się ograniczać zasięg tych wpisów wyłącznie do właściwych odbiorców, ale inne serwery mogą tego nie robić. Ważne jest, aby sprawdzać jakich serwerów używają osoby, które Cię śledzą. Możesz aktywować opcję pozwalającą na ręczne akceptowanie i odrzucanie nowych śledzących. <em>Pamiętaj, że właściciele serwerów mogą zobaczyć te wiadomości</em>, a odbiorcy mogą wykonać zrzut ekranu, skopiować lub udostępniać ten wpis. <em>Nie udostępniaj wrażliwych danych z użyciem Mastodona.</em></li>
+      <li><em>Adresy IP i inne metadane</em>: Kiedy zalogujesz się, przechowujemy adres IP użyty w trakcie logowania wraz z nazwą używanej przeglądarki. Wszystkie aktywne sesje możesz zobaczyć (i wygasić) w ustawieniach. Ostatnio używany adres IP jest przechowywany przez nas do 12 miesięcy. Możemy również przechowywać adresy IP wykorzystywane przy każdym działaniu na serwerze.</li>
       </ul>
 
       <hr class="spacer" />
@@ -960,9 +977,9 @@ pl:
       <p>Zebrane informacje mogą zostać użyte w następujące sposoby:</p>
 
       <ul>
-        <li>Aby dostarczyć podstawową funkcjonalność Mastodona. Możesz wchodzić w interakcje z zawartością tworzoną przez innych tylko gdy jesteś zalogowany. Na przykład, możesz śledzić innych, aby widzieć ich wpisy w dostosowanej osi czasu.</li>
-        <li>Aby wspomóc moderację społeczności, na przykład porównując Twój adres IP ze znanymi, aby rozpoznać próbę obejścia blokady i inne naruszenia.</li>
-        <li>Adres e-mail może zostać wykorzystany, aby wysyłać Ci informacje, powiadomienia o osobach wchodzących w interakcje z tworzoną przez Ciebie zawartością, wysyłających Ci wiadomości, odpowiadać na zgłoszenia i inne żądania lub zapytania.</li>
+      <li>Aby dostarczyć podstawową funkcjonalność Mastodona. Możesz wchodzić w interakcje z zawartością tworzoną przez innych tylko gdy jesteś zalogowany. Na przykład, możesz śledzić innych, aby widzieć ich wpisy w dostosowanej osi czasu.</li>
+      <li>Aby wspomóc moderację społeczności, na przykład porównując Twój adres IP ze znanymi, aby rozpoznać próbę obejścia blokady i inne naruszenia.</li>
+      <li>Adres e-mail może zostać wykorzystany, aby wysyłać Ci informacje, powiadomienia o osobach wchodzących w interakcje z tworzoną przez Ciebie zawartością, wysyłających Ci wiadomości, odpowiadać na zgłoszenia i inne żądania lub zapytania.</li>
       </ul>
 
       <hr class="spacer" />
@@ -978,8 +995,8 @@ pl:
       <p>Staramy się:</p>
 
       <ul>
-        <li>Przechowywać logi zawierające adresy IP używane przy każdym żądaniu do serwera przez nie dłużej niż 90 dni.</li>
-        <li>Przechowywać adresy IP przypisane do użytkowników przez nie dłużej niż 12 miesięcy.</li>
+      <li>Przechowywać logi zawierające adresy IP używane przy każdym żądaniu do serwera przez nie dłużej niż 90 dni.</li>
+      <li>Przechowywać adresy IP przypisane do użytkowników przez nie dłużej niż 12 miesięcy.</li>
       </ul>
 
       <p>Możesz zażądać i pobrać archiwum tworzonej zawartości, wliczając Twoje wpisy, załączniki multimedialne, awatar i zdjęcie nagłówka.</p>
@@ -1030,7 +1047,7 @@ pl:
     mastodon-light: Mastodon (Jasny)
   time:
     formats:
-      default: "%b %d, %Y, %H:%M"
+      default: "%d. %b %Y, %H:%M"
       month: "%b %Y"
   two_factor_authentication:
     code_hint: Aby kontynuować, wprowadź kod wyświetlany przez aplikację uwierzytelniającą
diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml
index 22a3918a1..d75e91b8b 100644
--- a/config/locales/pt-BR.yml
+++ b/config/locales/pt-BR.yml
@@ -7,7 +7,6 @@ pt-BR:
     active_count_after: Ativo
     active_footnote: Usuários ativos mensais (UAM)
     administered_by: 'Administrado por:'
-    api: API
     apps: Apps
     apps_platforms: Use o Mastodon a partir de iOS, Android e outras plataformas
     browse_directory: Navegue pelo diretório de perfis e filtre por interesses
@@ -29,9 +28,6 @@ pt-BR:
     see_whats_happening: Veja o que está acontecendo
     server_stats: 'Estatísticas do servidor:'
     source_code: Código-fonte
-    status_count_after:
-      one: status
-      other: status
     status_count_before: Autores de
     tagline: Siga amigos e encontre novos
     terms: Termos de serviço
@@ -58,10 +54,6 @@ pt-BR:
     people_who_follow: Pessoas que seguem %{name}
     pin_errors:
       following: Você tem que estar seguindo a pessoa que você quer sugerir
-    posts:
-      one: Toot
-      other: Toots
-    posts_tab_heading: Toots
     posts_with_replies: Toots e respostas
     reserved_username: Este usuário está reservado
     roles:
@@ -83,7 +75,6 @@ pt-BR:
       approve: Aprovar
       approve_all: Aprovar tudo
       are_you_sure: Você tem certeza?
-      avatar: Avatar
       by_domain: Domínio
       change_email:
         changed_msg: E-mail da conta modificado com sucesso!
@@ -114,11 +105,9 @@ pt-BR:
       header: Cabeçalho
       inbox_url: URL da caixa de entrada
       invited_by: Convidado por
-      ip: IP
       joined: Se cadastrou
       location:
         all: Todos
-        local: Local
         remote: Remoto
         title: Localização
       login_status: Situação de login
@@ -181,7 +170,6 @@ pt-BR:
       unsubscribe: Desinscrever-se
       username: Nome de usuário
       warn: Notificar
-      web: Web
     action_logs:
       actions:
         assigned_to_self_report: "%{name} designou a denúncia %{target} para si"
@@ -226,7 +214,6 @@ pt-BR:
       destroyed_msg: Emoji deletado com sucesso!
       disable: Desabilitar
       disabled_msg: Emoji desabilitado com sucesso
-      emoji: Emoji
       enable: Habilitar
       enabled_msg: Emoji habilitado com sucesso
       image_hint: PNG de até 50KB
@@ -256,7 +243,6 @@ pt-BR:
       recent_users: Usuários recentes
       search: Pesquisa em texto
       single_user_mode: Modo de usuário único
-      software: Software
       space: Uso de espaço em disco
       title: Painel de controle
       total_users: usuários no total
@@ -349,7 +335,6 @@ pt-BR:
       pending: Esperando pela aprovação do repetidor
       save_and_enable: Salvar e habilitar
       setup: Configurar uma conexão de repetidor
-      status: Status
       title: Repetidores
     report_notes:
       created_msg: Nota de denúncia criada com sucesso!
@@ -379,7 +364,6 @@ pt-BR:
       reported_by: Denunciada por
       resolved: Resolvido
       resolved_msg: Denúncia resolvida com sucesso!
-      status: Status
       title: Denúncias
       unassign: Desatribuir
       unresolved: Não resolvido
@@ -472,14 +456,11 @@ pt-BR:
       confirmed: Confirmado
       expires_in: Expira em
       last_delivery: Última entrega
-      title: WebSub
       topic: Tópico
     tags:
       accounts: Contas
       hidden: Escondido
       hide: Esconder do diretório
-      name: Hashtag
-      title: Hashtags
       unhide: Mostrar no diretório
       visible: Visível
     title: Administração
@@ -499,7 +480,6 @@ pt-BR:
       subject: Nova denúncia sobre %{instance} (#%{id})
   application_mailer:
     notification_preferences: Mudar preferências de e-mail
-    salutation: "%{name},"
     settings: 'Mudar e-mail de preferência: %{link}'
     view: 'Visualizar:'
     view_profile: Ver perfil
@@ -527,9 +507,6 @@ pt-BR:
     migrate_account: Mudar para uma conta diferente
     migrate_account_html: Se você quer redirecionar essa conta para uma outra você pode <a href="%{path}">configurar isso aqui</a>.
     or_log_in_with: Ou faça login com
-    providers:
-      cas: CAS
-      saml: SAML
     register: Cadastrar-se
     registration_closed: "%{instance} não está aceitando novos membros"
     resend_confirmation: Reenviar instruções de confirmação
@@ -550,7 +527,6 @@ pt-BR:
     title: Seguir %{acct}
   datetime:
     distance_in_words:
-      about_x_hours: "%{count}h"
       about_x_months: "%{count} meses"
       about_x_years: "%{count} anos"
       almost_x_years: "%{count} anos"
@@ -604,7 +580,6 @@ pt-BR:
       request: Solicitar o seu arquivo
       size: Tamanho
     blocks: Você bloqueou
-    csv: CSV
     domain_blocks: Bloqueios de domínio
     follows: Você segue
     lists: Listas
@@ -748,23 +723,11 @@ pt-BR:
       body: 'Sua postagem foi compartilhada por %{name}:'
       subject: "%{name} compartilhou a sua postagem"
       title: Novo compartilhamento
-  number:
-    human:
-      decimal_units:
-        format: "%n%u"
-        units:
-          billion: B
-          million: M
-          quadrillion: Q
-          thousand: K
-          trillion: T
-          unit: ''
   pagination:
     newer: Mais novo
     next: Próximo
     older: Mais antigo
     prev: Anterior
-    truncate: "&hellip;"
   polls:
     errors:
       already_voted: Você já votou nessa enquete
@@ -776,10 +739,7 @@ pt-BR:
       too_few_options: deve ter mais que um item
       too_many_options: não pode ter mais que %{max} itens
   preferences:
-    languages: Idiomas
     other: Outro
-    publishing: Publicação
-    web: Web
   relationships:
     activity: Atividade da conta
     dormant: Inativo
@@ -822,40 +782,13 @@ pt-BR:
     activity: Última atividade
     browser: Navegador
     browsers:
-      alipay: Alipay
-      blackberry: Blackberry
-      chrome: Chrome
-      edge: Microsoft Edge
-      electron: Electron
-      firefox: Firefox
       generic: Navegador desconhecido
-      ie: Internet Explorer
-      micro_messenger: MicroMessenger
       nokia: Navegador Nokia S40 Ovi
-      opera: Opera
-      otter: Otter
-      phantom_js: PhantomJS
-      qq: QQ Browser
-      safari: Safari
-      uc_browser: UCBrowser
-      weibo: Weibo
     current_session: Sessão atual
     description: "%{browser} em %{platform}"
     explanation: Estes são os navegadores que estão conectados com a sua conta do Mastodon.
-    ip: IP
     platforms:
-      adobe_air: Adobe Air
-      android: Android
-      blackberry: Blackberry
-      chrome_os: ChromeOS
-      firefox_os: Firefox OS
-      ios: iOS
-      linux: Linux
-      mac: Mac
       other: Plataforma desconhecida
-      windows: Windows
-      windows_mobile: Windows Mobile
-      windows_phone: Windows Phone
     revoke: Revogar
     revoke_success: Sessão revogada com sucesso
     title: Sessões
@@ -908,7 +841,6 @@ pt-BR:
       vote: Votar
     show_more: Mostrar mais
     sign_in_to_participate: Entre para participar dessa conversa
-    title: '%{name}: "%{quote}"'
     visibilities:
       private: Apenas seguidores
       private_long: Mostrar apenas para seguidores
@@ -926,10 +858,10 @@ pt-BR:
       <h3 id="collect">Que informação nós coletamos?</h3>
 
       <ul>
-        <li><em>Informação básica de conta</em>: Se você se registrar nesse servidor, podemos pedir que você utilize um nome de usuário, um e-mail e uma senha. Você também pode adicionar informações extras como um nome de exibição e biografia; enviar uma imagem de perfil e imagem de cabeçalho. O nome de usuário, nome de exibição, biografia, imagem de perfil e imagem de cabeçalho são sempre listadas publicamente.</li>
-        <li><em>Posts, informação de seguidores e outras informações públicas</em>: A lista de pessoas que você segue é listada publicamente, o mesmo é verdade para quem te segue. Quando você envia uma mensagem, a data e o horário são armazenados, assim como a aplicação que você usou para enviar a mensagem. Mensagens podem conter mídias anexadas, como imagens e vídeos. Posts públicos e não-listados estão disponíveis publicamente. Quando você destaca um post no seu perfil, isso também é uma informação pública. Seus posts são entregues aos seus seguidores e em alguns casos isso significa que eles são enviados para servidores diferentes e cópias são armazenadas nesses servidores. Quando você remove posts, essa informação também é entregue aos seus seguidores. O ato de compartilhar ou favoritar um outro post é sempre público.</li>
-        <li><em>Mensagens diretas e posts somente para seguidores</em>: Todos os posts são armazenados e processados no servidor. Posts somente para seguidores são entregues aos seus seguidores e usuários que são mencionados neles; mensagens diretas são entregues somente aos usuários mencionados nelas. Em alguns casos isso significa que as mensagens são entregues para servidores diferentes e cópias são armazenadas nesses servidores. Nós fazemos esforços substanciais para limitar o acesso dessas mensagens somente para as pessoas autorizadas, mas outros servidores podem não fazer o mesmo. É importante portanto revisar os servidores à qual seus seguidores pertencem. Você pode usar uma opção para aprovar ou rejeitar novos seguidores manualmente nas configurações. <em>Por favor tenha em mente que os operadores do servidor e de qualquer servidores do destinatário podem ver tais mensagens</em>, e que os destinatários podem fazer capturas de tela, copiar ou de outra maneira compartilhar as mensagens. <em>Não compartilhe informação confidencial pelo Mastodon.</em></li>
-        <li><em>IPs e outros metadados</em>: Quando você faz se autentica, nos guardamos o endereço de IP que você usou ao se autenticar e o nome do seu navegador da internet. Todas as sessões autenticadas são disponíveis para serem analisadas e revogadas nas configurações. O último endereço de IP usado é guardado por até 12 meses. Nós também podemos reter históricos do servidor que incluem o endereço de IP de todas as requisições ao nosso servidor.</li>
+      <li><em>Informação básica de conta</em>: Se você se registrar nesse servidor, podemos pedir que você utilize um nome de usuário, um e-mail e uma senha. Você também pode adicionar informações extras como um nome de exibição e biografia; enviar uma imagem de perfil e imagem de cabeçalho. O nome de usuário, nome de exibição, biografia, imagem de perfil e imagem de cabeçalho são sempre listadas publicamente.</li>
+      <li><em>Posts, informação de seguidores e outras informações públicas</em>: A lista de pessoas que você segue é listada publicamente, o mesmo é verdade para quem te segue. Quando você envia uma mensagem, a data e o horário são armazenados, assim como a aplicação que você usou para enviar a mensagem. Mensagens podem conter mídias anexadas, como imagens e vídeos. Posts públicos e não-listados estão disponíveis publicamente. Quando você destaca um post no seu perfil, isso também é uma informação pública. Seus posts são entregues aos seus seguidores e em alguns casos isso significa que eles são enviados para servidores diferentes e cópias são armazenadas nesses servidores. Quando você remove posts, essa informação também é entregue aos seus seguidores. O ato de compartilhar ou favoritar um outro post é sempre público.</li>
+      <li><em>Mensagens diretas e posts somente para seguidores</em>: Todos os posts são armazenados e processados no servidor. Posts somente para seguidores são entregues aos seus seguidores e usuários que são mencionados neles; mensagens diretas são entregues somente aos usuários mencionados nelas. Em alguns casos isso significa que as mensagens são entregues para servidores diferentes e cópias são armazenadas nesses servidores. Nós fazemos esforços substanciais para limitar o acesso dessas mensagens somente para as pessoas autorizadas, mas outros servidores podem não fazer o mesmo. É importante portanto revisar os servidores à qual seus seguidores pertencem. Você pode usar uma opção para aprovar ou rejeitar novos seguidores manualmente nas configurações. <em>Por favor tenha em mente que os operadores do servidor e de qualquer servidores do destinatário podem ver tais mensagens</em>, e que os destinatários podem fazer capturas de tela, copiar ou de outra maneira compartilhar as mensagens. <em>Não compartilhe informação confidencial pelo Mastodon.</em></li>
+      <li><em>IPs e outros metadados</em>: Quando você faz se autentica, nos guardamos o endereço de IP que você usou ao se autenticar e o nome do seu navegador da internet. Todas as sessões autenticadas são disponíveis para serem analisadas e revogadas nas configurações. O último endereço de IP usado é guardado por até 12 meses. Nós também podemos reter históricos do servidor que incluem o endereço de IP de todas as requisições ao nosso servidor.</li>
       </ul>
 
       <hr class="spacer" />
@@ -939,9 +871,9 @@ pt-BR:
       <p>Toda informação que coletamos de você pode ser usada das seguintes maneiras:</p>
 
       <ul>
-        <li>Para prover a funcionalidade básica do Mastodon. Você só pode interagir com o conteúdo de outras pessoas e postar seu próprio conteúdo estando autenticado. Por exemplo, você pode seguir outras pessoas para ver seus posts combinados na sua linha do tempo personalizada.</li>
-        <li>Para auxiliar na moderação da comunidade, por exemplo ao comparar o seu endereço de IP com outros endereços de IP conhecidos para determinar evasão de banimento e outras violações.</li>
-        <li>O endereço de email que você prover pode ser usado para lhe enviar informação, notificação sobre outras pessoas interagindo com o seu conteúdo ou lhe enviando mensagens e para responder a questões ou outros pedidos.</li>
+      <li>Para prover a funcionalidade básica do Mastodon. Você só pode interagir com o conteúdo de outras pessoas e postar seu próprio conteúdo estando autenticado. Por exemplo, você pode seguir outras pessoas para ver seus posts combinados na sua linha do tempo personalizada.</li>
+      <li>Para auxiliar na moderação da comunidade, por exemplo ao comparar o seu endereço de IP com outros endereços de IP conhecidos para determinar evasão de banimento e outras violações.</li>
+      <li>O endereço de email que você prover pode ser usado para lhe enviar informação, notificação sobre outras pessoas interagindo com o seu conteúdo ou lhe enviando mensagens e para responder a questões ou outros pedidos.</li>
       </ul>
 
       <hr class="spacer" />
@@ -957,8 +889,8 @@ pt-BR:
       <p>Nós fazemos esforços substanciais para:</p>
 
       <ul>
-        <li>Reter o histórico do servidor contendo os endereços de IP de todas as requisições feitas à esse servidor, e com respeito a quanto tempo esses logs são retidos, não mais que 90 dias.</li>
-        <li>Reter o endereço de IP associado com usuários registrados não mais que 12 meses.</li>
+      <li>Reter o histórico do servidor contendo os endereços de IP de todas as requisições feitas à esse servidor, e com respeito a quanto tempo esses logs são retidos, não mais que 90 dias.</li>
+      <li>Reter o endereço de IP associado com usuários registrados não mais que 12 meses.</li>
       </ul>
 
       <p>Você pode pedir e fazer o download de um arquivo de todo o conteúdo da sua conta, incluindo as suas mensagens, suas mídias anexadas, imagem de perfil e imagem de topo.</p>
@@ -1009,7 +941,6 @@ pt-BR:
     mastodon-light: Mastodon (claro)
   time:
     formats:
-      default: "%b %d, %Y, %H:%M"
       month: "%B de %Y"
   two_factor_authentication:
     code_hint: Insira o código gerado pelo seu aplicativo auteticador para confirmar
diff --git a/config/locales/pt.yml b/config/locales/pt.yml
index b827184e9..9cd92f6bd 100644
--- a/config/locales/pt.yml
+++ b/config/locales/pt.yml
@@ -5,7 +5,6 @@ pt:
     about_mastodon_html: Mastodon é uma rede social baseada em protocolos abertos da web e software livre e gratuito. É descentralizado como e-mail.
     about_this: Sobre esta instância
     administered_by: 'Administrado por:'
-    api: API
     apps: Aplicações móveis
     contact: Contacto
     contact_missing: Não configurado
@@ -39,7 +38,6 @@ pt:
     joined: Aderiu %{date}
     last_active: última vez activo
     link_verified_on: A posse deste link foi verificada em %{date}
-    media: Media
     moved_html: "%{name} mudou-se para %{new_profile_link}:"
     network_hidden: Esta informação não está disponível
     nothing_here: Não há nada aqui!
@@ -69,7 +67,6 @@ pt:
       destroyed_msg: Nota de moderação excluída com sucesso!
     accounts:
       are_you_sure: Tens a certeza?
-      avatar: Avatar
       by_domain: Domínio
       change_email:
         changed_msg: E-mail da conta alterado com sucesso!
@@ -100,11 +97,9 @@ pt:
       header: Cabeçalho
       inbox_url: URL da caixa de entrada
       invited_by: Convidado por
-      ip: IP
       joined: Aderiu
       location:
         all: Todos
-        local: Local
         remote: Remoto
         title: Local
       login_status: Estado de início de sessão
@@ -162,7 +157,6 @@ pt:
       unsubscribe: Cancelar inscrição
       username: Usuário
       warn: Aviso
-      web: Web
     action_logs:
       actions:
         assigned_to_self_report: "%{name} atribuiu o relatório %{target} a si próprios"
@@ -207,7 +201,6 @@ pt:
       destroyed_msg: Emoji destruído com sucesso!
       disable: Desativar
       disabled_msg: Desativado com sucesso este emoji
-      emoji: Emoji
       enable: Ativar
       enabled_msg: Ativado com sucesso este emoji
       image_hint: PNG de até 50KB
@@ -236,7 +229,6 @@ pt:
       recent_users: Utilizadores recentes
       search: Pesquisa com texto completo
       single_user_mode: Modo de utilizador único
-      software: Software
       space: Utilização do espaço
       title: Painel de controlo
       total_users: total de utilizadores
@@ -444,14 +436,11 @@ pt:
       confirmed: Confirmado
       expires_in: Expira em
       last_delivery: Última entrega
-      title: WebSub
       topic: Tópico
     tags:
       accounts: Contas
       hidden: Escondidas
       hide: Esconder no diretório
-      name: Hashtag
-      title: Hashtags
       unhide: Mostrar no diretório
       visible: Visível
     title: Administração
@@ -468,7 +457,6 @@ pt:
       subject: Novo relatório sobre %{instance} (#%{id})
   application_mailer:
     notification_preferences: Alterar preferências de e-mail
-    salutation: "%{name},"
     settings: 'Alterar preferências de email: %{link}'
     view: 'Ver:'
     view_profile: Ver perfil
@@ -494,9 +482,6 @@ pt:
     migrate_account: Mudar para uma conta diferente
     migrate_account_html: Se desejas redirecionar esta conta para uma outra podes<a href="%{path}">configurar isso aqui</a>.
     or_log_in_with: Ou iniciar sessão com
-    providers:
-      cas: CAS
-      saml: SAML
     register: Registar
     resend_confirmation: Reenviar instruções de confirmação
     reset_password: Criar nova palavra-passe
@@ -515,7 +500,6 @@ pt:
     title: Seguir %{acct}
   datetime:
     distance_in_words:
-      about_x_hours: "%{count}h"
       about_x_months: "%{count} meses"
       about_x_years: "%{count} anos"
       almost_x_years: "%{count} anos"
@@ -568,7 +552,6 @@ pt:
       request: Pede o teu arquivo
       size: Tamanho
     blocks: Bloqueaste
-    csv: CSV
     domain_blocks: Bloqueios de domínio
     follows: Segues
     lists: Listas
@@ -690,23 +673,11 @@ pt:
       body: 'O teu post foi partilhado por %{name}:'
       subject: "%{name} partilhou o teu post"
       title: Nova partilha
-  number:
-    human:
-      decimal_units:
-        format: "%n%u"
-        units:
-          billion: B
-          million: M
-          quadrillion: Q
-          thousand: K
-          trillion: T
-          unit: ''
   pagination:
     newer: Mais nova
     next: Seguinte
     older: Mais velha
     prev: Anterior
-    truncate: "&hellip;"
   polls:
     errors:
       already_voted: Tu já votaste nesta sondagem
@@ -718,10 +689,7 @@ pt:
       too_few_options: tem de ter mais do que um item
       too_many_options: não pode conter mais do que %{max} itens
   preferences:
-    languages: Idiomas
     other: Outro
-    publishing: Publicação
-    web: Web
   remote_follow:
     acct: Entre seu usuário@domínio do qual quer seguir
     missing_resource: Não foi possível achar a URL de redirecionamento para sua conta
@@ -751,40 +719,15 @@ pt:
     activity: Última atividade
     browser: Navegador
     browsers:
-      alipay: Alipay
-      blackberry: Blackberry
-      chrome: Chrome
-      edge: Microsoft Edge
-      electron: Electron
-      firefox: Firefox
       generic: Navegador desconhecido
-      ie: Internet Explorer
-      micro_messenger: MicroMessenger
       nokia: Navegador Nokia S40 Ovi
-      opera: Opera
       otter: Lontra
-      phantom_js: PhantomJS
-      qq: QQ Browser
-      safari: Safari
-      uc_browser: UCBrowser
-      weibo: Weibo
     current_session: Sessão atual
     description: "%{browser} em %{platform}"
     explanation: Estes são os navegadores que estão conectados com a tua conta do Mastodon.
-    ip: IP
     platforms:
-      adobe_air: Adobe Air
-      android: Android
-      blackberry: Blackberry
-      chrome_os: ChromeOS
       firefox_os: SO Firefox
-      ios: iOS
-      linux: Linux
-      mac: Mac
       other: Plataforma desconhecida
-      windows: Windows
-      windows_mobile: Windows Mobile
-      windows_phone: Windows Phone
     revoke: Revogar
     revoke_success: Sessão revogada com sucesso
     title: Sessões
@@ -830,7 +773,6 @@ pt:
       vote: Votar
     show_more: Mostrar mais
     sign_in_to_participate: Inicie a sessão para participar na conversa
-    title: '%{name}: "%{quote}"'
     visibilities:
       private: Mostrar apenas para seguidores
       private_long: Mostrar apenas para seguidores
@@ -848,10 +790,10 @@ pt:
       <h3 id="collect">Que informação nós recolhemos?</h3>
 
       <ul>
-        <li><em>Informação básica da conta</em>: Se te registares neste servidor, pode-te ser pedido que indiques um nome de utilizador, um endereço de e-mail e uma palavra-passe. Também podes introduzir informação adicional de perfil, tal como um nome a mostrar e dados biográficos, que carregues uma fotografia para o teu perfil e para o cabeçalho. O nome de utilizador, o nome a mostrar, a biografia, a imagem de perfil e a imagem de cabeçalho são sempre listados publicamente.</li>
-        <li><em>Publicações, seguimento e outra informação pública</em>: A lista de pessoas que tu segues é pública, o mesmo é verdade para os teus seguidores. Quando tu publicas uma mensagem, a data e a hora são guardados, tal como a aplicação a partir da qual a mensagem foi enviada. As mensagens podem conter anexos multimédia, tais como fotografias ou vídeos. Publicações públicas e não listadas são acessíveis publicamente. Quando expões uma publicação no teu perfil, isso é também informação disponível publicamente. As tuas publicações são enviadas aos teus seguidores. Em alguns casos isso significa que elas são enviadas para servidores diferentes onde são guardadas cópias. Quando tu apagas publicações, isso também é enviado para os teus seguidores. A acção de republicar ou favoritar outra publicação é sempre pública.</li>
-        <li><em>Publicações directas e exclusivas para seguidores</em>: Todas as publicações são guardadas e processadas no servidor. Publicações exclusivas para seguidores são enviadas para os teus seguidores e para utilizadores que são nelas mencionados. As publicações directas são enviadas apenas para os utilizadores nelas mencionados. Em alguns casos isso significa que elas são enviadas para diferentes servidores onde são guardadas cópias das mesmas. Nós fazemos um grande esforço para limitar o acesso a estas publicações aos utilizadores autorizados, mas outros servidores podem falhar neste objectivo.  Por isso, tu deves rever os servidores a que os teus seguidores pertencem. Tu podes activar uma opção para aprovar e rejeitar manualmente novos seguidores nas configurações. <em>Por favor, tem em mente que os gestores do servidor e qualquer servidor que receba a publicação pode lê-la</em>e que os destinatários podem fazer uma captura de tela, copiar ou partilhar a publicação. <em>Não partilhes qualquer informação perigosa no Mastodon.</em></li>
-        <li><em>IPs e outros metadados</em>: Quando inicias sessão, nós guardamos o endereço de IP a partir do qual iniciaste a sessão, tal como o nome do teu navegador. Todas as sessões estão disponíveis para verificação e revogação nas configurações. O último endereço de IP usado é guardado até 12 meses. Nós também podemos guardar registos de servidor, os quais incluem o endereço de IP de cada pedido dirigido ao nosso servidor.</li>
+      <li><em>Informação básica da conta</em>: Se te registares neste servidor, pode-te ser pedido que indiques um nome de utilizador, um endereço de e-mail e uma palavra-passe. Também podes introduzir informação adicional de perfil, tal como um nome a mostrar e dados biográficos, que carregues uma fotografia para o teu perfil e para o cabeçalho. O nome de utilizador, o nome a mostrar, a biografia, a imagem de perfil e a imagem de cabeçalho são sempre listados publicamente.</li>
+      <li><em>Publicações, seguimento e outra informação pública</em>: A lista de pessoas que tu segues é pública, o mesmo é verdade para os teus seguidores. Quando tu publicas uma mensagem, a data e a hora são guardados, tal como a aplicação a partir da qual a mensagem foi enviada. As mensagens podem conter anexos multimédia, tais como fotografias ou vídeos. Publicações públicas e não listadas são acessíveis publicamente. Quando expões uma publicação no teu perfil, isso é também informação disponível publicamente. As tuas publicações são enviadas aos teus seguidores. Em alguns casos isso significa que elas são enviadas para servidores diferentes onde são guardadas cópias. Quando tu apagas publicações, isso também é enviado para os teus seguidores. A acção de republicar ou favoritar outra publicação é sempre pública.</li>
+      <li><em>Publicações directas e exclusivas para seguidores</em>: Todas as publicações são guardadas e processadas no servidor. Publicações exclusivas para seguidores são enviadas para os teus seguidores e para utilizadores que são nelas mencionados. As publicações directas são enviadas apenas para os utilizadores nelas mencionados. Em alguns casos isso significa que elas são enviadas para diferentes servidores onde são guardadas cópias das mesmas. Nós fazemos um grande esforço para limitar o acesso a estas publicações aos utilizadores autorizados, mas outros servidores podem falhar neste objectivo.  Por isso, tu deves rever os servidores a que os teus seguidores pertencem. Tu podes activar uma opção para aprovar e rejeitar manualmente novos seguidores nas configurações. <em>Por favor, tem em mente que os gestores do servidor e qualquer servidor que receba a publicação pode lê-la</em>e que os destinatários podem fazer uma captura de tela, copiar ou partilhar a publicação. <em>Não partilhes qualquer informação perigosa no Mastodon.</em></li>
+      <li><em>IPs e outros metadados</em>: Quando inicias sessão, nós guardamos o endereço de IP a partir do qual iniciaste a sessão, tal como o nome do teu navegador. Todas as sessões estão disponíveis para verificação e revogação nas configurações. O último endereço de IP usado é guardado até 12 meses. Nós também podemos guardar registos de servidor, os quais incluem o endereço de IP de cada pedido dirigido ao nosso servidor.</li>
       </ul>
 
       <hr class="spacer" />
@@ -861,9 +803,9 @@ pt:
       <p>Qualquer informação que recolhemos sobre ti pode ser usada dos seguintes modos:</p>
 
       <ul>
-        <li>Para providenciar a funcionalidade central do Mastodon. Tu só podes interagir com o conteúdo de outras pessoas e publicar o teu próprio conteúdo depois de teres iniciado sessão. Por exemplo, tu podes seguir outras pessoas para veres as suas publicações na tua cronologia inicial personalizada. </li>
-        <li>Para ajudar na moderação da comunidade para, por exemplo, comparar o teu endereço IP com outros conhecidos, para determinar a fuga ao banimento ou outras violações.</li>
-        <li>O endereço de e-mail que tu forneces pode ser usado para te enviar informações e/ou notificações sobre outras pessoas que estão a interagir com o teu conteúdo ou a enviar-te mensagens, para responderes a inquéritos e/ou outros pedidos ou questões.</li>
+      <li>Para providenciar a funcionalidade central do Mastodon. Tu só podes interagir com o conteúdo de outras pessoas e publicar o teu próprio conteúdo depois de teres iniciado sessão. Por exemplo, tu podes seguir outras pessoas para veres as suas publicações na tua cronologia inicial personalizada. </li>
+      <li>Para ajudar na moderação da comunidade para, por exemplo, comparar o teu endereço IP com outros conhecidos, para determinar a fuga ao banimento ou outras violações.</li>
+      <li>O endereço de e-mail que tu forneces pode ser usado para te enviar informações e/ou notificações sobre outras pessoas que estão a interagir com o teu conteúdo ou a enviar-te mensagens, para responderes a inquéritos e/ou outros pedidos ou questões.</li>
       </ul>
 
       <hr class="spacer" />
@@ -879,8 +821,8 @@ pt:
       <p>Nós envidaremos todos os esforços no sentido de:</p>
 
       <ul>
-        <li>Guardar registos do servidor contendo o endereço de IP de todos os pedidos feitos a este  servidor, considerando que estes registos não serão guardados por mais de 90 dias.</li>
-        <li>Guardar os endereços de IP associados aos utilizadores registados durante um período que não ultrapassará os 12 meses.</li>
+      <li>Guardar registos do servidor contendo o endereço de IP de todos os pedidos feitos a este  servidor, considerando que estes registos não serão guardados por mais de 90 dias.</li>
+      <li>Guardar os endereços de IP associados aos utilizadores registados durante um período que não ultrapassará os 12 meses.</li>
       </ul>
 
       <p>Tu podes pedir e descarregar um ficheiro com o teu conteúdo, incluindo as tuas publicações, os ficheiros multimédia, a imagem de perfil e a imagem de cabeçalho.</p>
@@ -929,10 +871,6 @@ pt:
     contrast: Mastodon (Elevado contraste)
     default: Mastodon
     mastodon-light: Mastodon (Leve)
-  time:
-    formats:
-      default: "%b %d, %Y, %H:%M"
-      month: "%b %Y"
   two_factor_authentication:
     code_hint: Entre o código gerado pelo seu aplicativo para confirmar
     description_html: Se ativar a <strong>autenticação em dois passos</strong>, quando logar será necessário o seu telefone que vai gerar os tokens para validação.
diff --git a/config/locales/ro.yml b/config/locales/ro.yml
index cdb68c72a..6e6c6f403 100644
--- a/config/locales/ro.yml
+++ b/config/locales/ro.yml
@@ -2,11 +2,6 @@
 ro:
   about:
     hosted_on: Mastodon găzduit de %{domain}
-  accounts:
-    posts:
-      few: Toots
-      one: Toot
-      other: Toots
   auth:
     change_password: Parolă
     confirm_email: Confirmă email
@@ -20,9 +15,6 @@ ro:
     migrate_account: Transfer către un alt cont
     migrate_account_html: Dacă dorești să redirecționezi acest cont către un altul, poți <a href="%{path}">configura asta aici</a>.
     or_log_in_with: Sau conectează-te cu
-    providers:
-      cas: CAS
-      saml: SAML
     register: Înregistrare
     resend_confirmation: Retrimite instrucțiunile de confirmare
     reset_password: Resetare parolă
@@ -50,9 +42,7 @@ ro:
       less_than_x_seconds: Chiar acum
       over_x_years: "%{count}ani"
       x_days: "%{count}z"
-      x_minutes: "%{count}m"
       x_months: "%{count}l"
-      x_seconds: "%{count}s"
   deletes:
     bad_password_msg: Bună încercare, hackere! Parolă incorectă
     confirm_password: Introdu parola curentă pentru a-ți verifica identitatea
@@ -88,7 +78,6 @@ ro:
       request: Cere arhiva ta
       size: Dimensiune
     blocks: Blocați
-    csv: CSV
     follows: Tu urmărești
     mutes: Opriți
     storage: Depozitare media
@@ -108,3 +97,11 @@ ro:
       title: Filtre
     new:
       title: Adaugă un filtru nou
+  invites:
+    expires_in:
+      '1800': 30 minutes
+      '21600': 6 hours
+      '3600': 1 hour
+      '43200': 12 hours
+      '604800': 1 week
+      '86400': 1 day
diff --git a/config/locales/ru.yml b/config/locales/ru.yml
index edccd9e7c..7e336be98 100644
--- a/config/locales/ru.yml
+++ b/config/locales/ru.yml
@@ -171,7 +171,6 @@ ru:
         moderator: Модератор
         staff: Персонал
         user: Пользователь
-      salmon_url: Salmon URL
       search: Поиск
       shared_inbox_url: URL общих входящих
       show:
@@ -509,6 +508,9 @@ ru:
       body: "%{reporter} подал(а) жалобу на %{target}"
       body_remote: Кто-то с узла %{domain} пожаловался на %{target}
       subject: Новая жалоба, узел %{instance} (#%{id})
+  appearance:
+    advanced_web_interface: Многоколоночный интерфейс
+    sensitive_content: Чувствительное содержимое
   application_mailer:
     notification_preferences: Изменить настройки e-mail
     salutation: "%{name},"
@@ -660,7 +662,7 @@ ru:
       one: Что-то здесь не так! Пожалуйста, прочитайте об ошибке ниже
       other: Что-то здесь не так! Пожалуйста, прочитайте о %{count} ошибках ниже
   html_validator:
-    invalid_markup: 'contains invalid HTML markup: %{error}'
+    invalid_markup: 'невалидная разметка HTML: %{error}'
   identity_proofs:
     active: Активно
     authorize: Да, авторизовать
@@ -780,7 +782,6 @@ ru:
           quadrillion: квадрлн
           thousand: тыс
           trillion: трлн
-          unit: ''
   pagination:
     newer: Новее
     next: След
@@ -798,10 +799,8 @@ ru:
       too_few_options: должно быть больше 1 варианта
       too_many_options: может содержать не больше %{max} вариантов
   preferences:
-    languages: Языки
     other: Другое
-    publishing: Публикация
-    web: WWW
+    public_timelines: Публичные ленты
   relationships:
     activity: Активность аккаунта
     dormant: Заброшенные
@@ -956,10 +955,10 @@ ru:
       <h3 id="collect">What information do we collect?</h3>
 
       <ul>
-        <li><em>Basic account information</em>: If you register on this server, you may be asked to enter a username, an e-mail address and a password. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly.</li>
-        <li><em>Posts, following and other public information</em>: The list of people you follow is listed publicly, the same is true for your followers. When you submit a message, the date and time is stored as well as the application you submitted the message from. Messages may contain media attachments, such as pictures and videos. Public and unlisted posts are available publicly. When you feature a post on your profile, that is also publicly available information. Your posts are delivered to your followers, in some cases it means they are delivered to different servers and copies are stored there. When you delete posts, this is likewise delivered to your followers. The action of reblogging or favouriting another post is always public.</li>
-        <li><em>Direct and followers-only posts</em>: All posts are stored and processed on the server. Followers-only posts are delivered to your followers and users who are mentioned in them, and direct posts are delivered only to users mentioned in them. In some cases it means they are delivered to different servers and copies are stored there. We make a good faith effort to limit the access to those posts only to authorized persons, but other servers may fail to do so. Therefore it's important to review servers your followers belong to. You may toggle an option to approve and reject new followers manually in the settings. <em>Please keep in mind that the operators of the server and any receiving server may view such messages</em>, and that recipients may screenshot, copy or otherwise re-share them. <em>Do not share any dangerous information over Mastodon.</em></li>
-        <li><em>IPs and other metadata</em>: When you log in, we record the IP address you log in from, as well as the name of your browser application. All the logged in sessions are available for your review and revocation in the settings. The latest IP address used is stored for up to 12 months. We also may retain server logs which include the IP address of every request to our server.</li>
+      <li><em>Basic account information</em>: If you register on this server, you may be asked to enter a username, an e-mail address and a password. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly.</li>
+      <li><em>Posts, following and other public information</em>: The list of people you follow is listed publicly, the same is true for your followers. When you submit a message, the date and time is stored as well as the application you submitted the message from. Messages may contain media attachments, such as pictures and videos. Public and unlisted posts are available publicly. When you feature a post on your profile, that is also publicly available information. Your posts are delivered to your followers, in some cases it means they are delivered to different servers and copies are stored there. When you delete posts, this is likewise delivered to your followers. The action of reblogging or favouriting another post is always public.</li>
+      <li><em>Direct and followers-only posts</em>: All posts are stored and processed on the server. Followers-only posts are delivered to your followers and users who are mentioned in them, and direct posts are delivered only to users mentioned in them. In some cases it means they are delivered to different servers and copies are stored there. We make a good faith effort to limit the access to those posts only to authorized persons, but other servers may fail to do so. Therefore it's important to review servers your followers belong to. You may toggle an option to approve and reject new followers manually in the settings. <em>Please keep in mind that the operators of the server and any receiving server may view such messages</em>, and that recipients may screenshot, copy or otherwise re-share them. <em>Do not share any dangerous information over Mastodon.</em></li>
+      <li><em>IPs and other metadata</em>: When you log in, we record the IP address you log in from, as well as the name of your browser application. All the logged in sessions are available for your review and revocation in the settings. The latest IP address used is stored for up to 12 months. We also may retain server logs which include the IP address of every request to our server.</li>
       </ul>
 
       <hr class="spacer" />
@@ -969,9 +968,9 @@ ru:
       <p>Any of the information we collect from you may be used in the following ways:</p>
 
       <ul>
-        <li>To provide the core functionality of Mastodon. You can only interact with other people's content and post your own content when you are logged in. For example, you may follow other people to view their combined posts in your own personalized home timeline.</li>
-        <li>To aid moderation of the community, for example comparing your IP address with other known ones to determine ban evasion or other violations.</li>
-        <li>The email address you provide may be used to send you information, notifications about other people interacting with your content or sending you messages, and to respond to inquiries, and/or other requests or questions.</li>
+      <li>To provide the core functionality of Mastodon. You can only interact with other people's content and post your own content when you are logged in. For example, you may follow other people to view their combined posts in your own personalized home timeline.</li>
+      <li>To aid moderation of the community, for example comparing your IP address with other known ones to determine ban evasion or other violations.</li>
+      <li>The email address you provide may be used to send you information, notifications about other people interacting with your content or sending you messages, and to respond to inquiries, and/or other requests or questions.</li>
       </ul>
 
       <hr class="spacer" />
@@ -987,8 +986,8 @@ ru:
       <p>We will make a good faith effort to:</p>
 
       <ul>
-        <li>Retain server logs containing the IP address of all requests to this server, in so far as such logs are kept, no more than 90 days.</li>
-        <li>Retain the IP addresses associated with registered users no more than 12 months.</li>
+      <li>Retain server logs containing the IP address of all requests to this server, in so far as such logs are kept, no more than 90 days.</li>
+      <li>Retain the IP addresses associated with registered users no more than 12 months.</li>
       </ul>
 
       <p>You can request and download an archive of your content, including your posts, media attachments, profile picture, and header image.</p>
diff --git a/config/locales/simple_form.ar.yml b/config/locales/simple_form.ar.yml
index f0d121135..b948a5c50 100644
--- a/config/locales/simple_form.ar.yml
+++ b/config/locales/simple_form.ar.yml
@@ -17,28 +17,28 @@ ar:
         email: سوف تتلقى رسالة إلكترونية للتأكيد
         fields: يُمكنك عرض 4 عناصر على شكل جدول في ملفك الشخصي
         header: ملف PNG أو GIF أو JPG. حجمه على أقصى تصدير %{size}. سيتم تصغيره إلى %{dimensions}px
-        inbox_url: نسخ العنوان الذي تريد استخدامه مِن صفحة الإستقبال للمُرحَّل
+        inbox_url: نسخ العنوان الذي تريد استخدامه مِن صفحة الاستقبال للمُرحَّل
         irreversible: التبويقات التي تم تصفيتها ستختفي لا محالة حتى و إن تمت إزالة عامِل التصفية لاحقًا
         locale: لغة واجهة المستخدم و الرسائل الإلكترونية و الإشعارات
         locked: يتطلب منك الموافقة يدويا على طلبات المتابعة
         password: يُنصح باستخدام 8 أحرف على الأقل
         phrase: سوف يتم العثور عليه مهما كان نوع النص أو حتى و إن كان داخل الويب فيه تحذير عن المحتوى
-        scopes: ما هي المجالات المسموح بها في التطبيق ؟ إن قمت باختيار أعلى المجالات فيمكنك الإستغناء عن الخَيار اليدوي.
+        scopes: ما هي المجالات المسموح بها في التطبيق ؟ إن قمت باختيار أعلى المجالات فيمكنك الاستغناء عن الخَيار اليدوي.
         setting_aggregate_reblogs: لا تقم بعرض المشارَكات الجديدة لتبويقات قد قُمتَ بمشاركتها سابقا (هذا الإجراء يعني المشاركات الجديدة فقط التي تلقيتَها)
-        setting_default_language: يمكن الكشف التلقائي للّغة اللتي استخدمتها في تحرير تبويقاتك ، غيرَ أنّ العملية ليست دائما دقيقة
         setting_display_media_default: إخفاء الوسائط المُعيَّنة كحساسة
         setting_display_media_hide_all: إخفاء كافة الوسائط دائمًا
         setting_display_media_show_all: دائمًا عرض الوسائط المُعيَّنة كحساسة
         setting_hide_network: الحسابات التي تُتابعها و التي تُتابِعك على حد سواء لن تُعرَض على صفحتك الشخصية
         setting_noindex: ذلك يؤثر على حالة ملفك الشخصي و صفحاتك
-        setting_theme: ذلك يؤثر على الشكل الذي سيبدو عليه ماستدون عندما تقوم بالدخول مِن أي جهاز.
         username: اسم المستخدم الخاص بك سوف يكون فريدا مِن نوعه على %{domain}
       featured_tag:
         name: 'رُبَّما تريد/ي استخدام أحد هؤلاء:'
       imports:
         data: ملف CSV تم تصديره مِن خادوم ماستدون آخر
+      invite_request:
+        text: هذا سوف يساعدنا في مراجعة تطبيقك
       sessions:
-        otp: 'قم بإدخال رمز المصادقة بخطوتين الذي قام بتوليده تطبيق جهازك أو إستخدم أحد رموز النفاذ الإحتياطية :'
+        otp: 'قم بإدخال رمز المصادقة بخطوتين الذي قام بتوليده تطبيق جهازك أو استخدم أحد رموز النفاذ الاحتياطية:'
       user:
         chosen_languages: لن تظهر على الخيوط العمومية إلّا التبويقات المنشورة في اللغات المختارة
     labels:
@@ -69,7 +69,7 @@ ar:
         current_password: كلمة السر الحالية
         data: البيانات
         discoverable: القيام بإدراج هذا الحساب في قائمة دليل الحسابات
-        display_name: الإسم المعروض
+        display_name: الاسم المعروض
         email: عنوان البريد الإلكتروني
         expires_in: تنتهي مدة صلاحيته بعد
         fields: البيانات الوصفية للصفحة الشخصية
@@ -84,29 +84,30 @@ ar:
         otp_attempt: رمز المصادقة بخطوتين
         password: كلمة السر
         phrase: كلمة مفتاح أو عبارة
+        setting_advanced_layout: تمكين واجهة الويب المتقدمة
         setting_aggregate_reblogs: جمع الترقيات في خيوط زمنية
         setting_auto_play_gif: تشغيل تلقائي لِوَسائط جيف المتحركة
         setting_boost_modal: إظهار مربع حوار للتأكيد قبل ترقية أي تبويق
         setting_default_language: لغة النشر
         setting_default_privacy: خصوصية المنشور
-        setting_default_sensitive: إعتبر الوسائط دائما كمحتوى حساس
+        setting_default_sensitive: اعتبر الوسائط دائما كمحتوى حساس
         setting_delete_modal: إظهار مربع حوار للتأكيد قبل حذف أي تبويق
         setting_display_media: عرض الوسائط
         setting_display_media_default: افتراضي
-        setting_display_media_hide_all: اخفاء الكل
+        setting_display_media_hide_all: إخفاء الكل
         setting_display_media_show_all: عرض الكل
         setting_expand_spoilers: توسيع التبويقات التي تحتوي على تحذيرات عن المحتوى تلقائيا
         setting_hide_network: إخفِ شبكتك
         setting_noindex: عدم السماح لمحركات البحث بفهرسة ملفك الشخصي
         setting_reduce_motion: تخفيض عدد الصور في الوسائط المتحركة
-        setting_show_application: إكشف/ي البرامج التي كانت تُرسل تبويقات
-        setting_system_font_ui: إستخدم الخطوط الإفتراضية للنظام
+        setting_show_application: اكشف اسم التطبيقات المستخدمة لنشر التبويقات
+        setting_system_font_ui: استخدم الخطوط الافتراضية للنظام
         setting_theme: سمة الموقع
         setting_unfollow_modal: إظهار مربع حوار للتأكيد قبل إلغاء متابعة أي حساب
         severity: القوّة
-        type: صيغة الإستيراد
-        username: إسم المستخدم
-        username_or_email: إسم المستخدم أو كلمة السر
+        type: صيغة الاستيراد
+        username: اسم المستخدم
+        username_or_email: اسم المستخدم أو كلمة السر
         whole_word: الكلمة كاملة
       featured_tag:
         name: الوسم
@@ -114,15 +115,18 @@ ar:
         must_be_follower: حظر الإخطارات القادمة من حسابات لا تتبعك
         must_be_following: حظر الإخطارات القادمة من الحسابات التي لا تتابعها
         must_be_following_dm: حظر الرسائل المباشرة القادمة من طرف أشخاص لا تتبعهم
+      invite_request:
+        text: لماذا ترغب في الانضمام؟
       notification_emails:
         digest: إرسال ملخصات عبر البريد الإلكتروني
-        favourite: إبعث بريداً إلكترونيًا عندما يُعجَب أحدهم بمنشورك
-        follow: إبعث بريداً إلكترونيًا عندما يتبعك أحد
-        follow_request: إبعث بريدا إلكترونيا عندما يقوم أحدهم بإرسال طلب بالمتابعة
-        mention: إبعث بريداً إلكترونيًا عندما يُشير إليك أو يذكُرك أحدهم
-        reblog: إبعث بريداً إلكترونيًا عندما يقوم أحدهم بترقية منشورك
+        favourite: ابعث بريداً إلكترونيًا عندما يُعجَب أحدهم بمنشورك
+        follow: ابعث بريداً إلكترونيًا عندما يتبعك أحد
+        follow_request: ابعث بريدا إلكترونيا عندما يقوم أحدهم بإرسال طلب بالمتابعة
+        mention: ابعث بريداً إلكترونيًا عندما يُشير إليك أو يذكُرك أحدهم
+        reblog: ابعث بريداً إلكترونيًا عندما يقوم أحدهم بترقية منشورك
         report: إرسال رسالة إلكترونية عند تلقّي إبلاغ جديد
     'no': لا
+    recommended: موصى بها
     required:
       mark: "*"
       text: مطلوب
diff --git a/config/locales/simple_form.ast.yml b/config/locales/simple_form.ast.yml
index b91d5780a..4ec3935c9 100644
--- a/config/locales/simple_form.ast.yml
+++ b/config/locales/simple_form.ast.yml
@@ -10,7 +10,6 @@ ast:
         irreversible: Los toots peñeraos van desapaecer de mou irreversible, magar que se desanicie la peñera dempués
         password: Usa 8 caráuteres polo menos
         setting_hide_network: La xente que sigas y teas siguiendo nun va amosase nel perfil
-        setting_theme: Afeuta al aspeutu de Mastodon cuando anicies sesión dende cualesquier preséu.
         username: El nome d'usuariu va ser únicu en %{domain}
       imports:
         data: El ficheru CSV esportáu dende otra instancia de Mastodon
@@ -20,7 +19,6 @@ ast:
           name: Etiqueta
           value: Conteníu
       defaults:
-        avatar: Avatar
         bot: Esta cuenta ye d'un robó
         chosen_languages: Peñera de llingües
         confirm_new_password: Confirmación de la contraseña nueva
@@ -36,7 +34,6 @@ ast:
         locked: Bloquiar cuenta
         max_uses: Númberu máximu d'usos
         new_password: Contraseña nueva
-        note: Bio
         otp_attempt: Códigu de verificación en dos pasos
         password: Contraseña
         phrase: Pallabra clave o fras
@@ -61,6 +58,5 @@ ast:
         mention: Unviar un corréu cuando daquién te mente
     'no': Non
     required:
-      mark: "*"
       text: ríquese
     'yes': Sí
diff --git a/config/locales/simple_form.bg.yml b/config/locales/simple_form.bg.yml
index 9441e53b3..9991bed3d 100644
--- a/config/locales/simple_form.bg.yml
+++ b/config/locales/simple_form.bg.yml
@@ -39,6 +39,5 @@ bg:
         reblog: Изпращай e-mail, когато някой сподели твоя публикация
     'no': Не
     required:
-      mark: "*"
       text: задължително
     'yes': Да
diff --git a/config/locales/simple_form.bn.yml b/config/locales/simple_form.bn.yml
new file mode 100644
index 000000000..152c69829
--- /dev/null
+++ b/config/locales/simple_form.bn.yml
@@ -0,0 +1 @@
+bn:
diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml
index db87fb116..d8713e4ca 100644
--- a/config/locales/simple_form.ca.yml
+++ b/config/locales/simple_form.ca.yml
@@ -27,20 +27,21 @@ ca:
         phrase: Es combinarà independentment del format en el text o l'avís de contingut d'un toot
         scopes: A quines API es permetrà l'accés a l'aplicació. Si selecciones un àmbit d'alt nivell, no cal que seleccionis un d'individual.
         setting_aggregate_reblogs: No mostra els nous impulsos dels toots que ja s'han impulsat recentment (només afecta als impulsos nous rebuts)
-        setting_default_language: La llengua dels teus toots pot ser detectada automàticament però no sempre acuradament
+        setting_default_sensitive: Els mèdia sensibles estan ocults per defecte i es poden revelar amb un clic
         setting_display_media_default: Amaga els multimèdia marcats com a sensibles
         setting_display_media_hide_all: Sempre oculta tots els multimèdia
         setting_display_media_show_all: Mostra sempre els elements multimèdia marcats com a sensibles
         setting_hide_network: Qui tu segueixes i els que et segueixen a tu no es mostraran en el teu perfil
         setting_noindex: Afecta el teu perfil públic i les pàgines d'estat
         setting_show_application: L'aplicació que fas servir per a publicar es mostrarà a la vista detallada dels teus toots
-        setting_theme: Afecta l'aspecte de Mastodon quan es visita des de qualsevol dispositiu.
         username: El teu nom d'usuari serà únic a %{domain}
         whole_word: Quan la paraula clau o la frase sigui només alfanumèrica, s'aplicarà si coincideix amb la paraula sencera
       featured_tag:
         name: 'És possible que vulguis utilitzar un d''aquests:'
       imports:
         data: Fitxer CSV exportat des d'un altre servidor de Mastodon
+      invite_request:
+        text: Això ens ajudarà a revisar la teva petició
       sessions:
         otp: 'Introdueix el codi de dos factors generat per el teu telèfon o utilitza un dels teus codis de recuperació:'
       user:
@@ -88,6 +89,7 @@ ca:
         otp_attempt: Codi de dos factors
         password: Contrasenya
         phrase: Paraula clau o frase
+        setting_advanced_layout: Activar l’interfície web avançada
         setting_aggregate_reblogs: Agrupa impulsos en les línies de temps
         setting_auto_play_gif: Reproducció automàtica de GIFs animats
         setting_boost_modal: Mostra la finestra de confirmació abans d'impulsar
@@ -118,15 +120,19 @@ ca:
         must_be_follower: Blocar les notificacions de persones que no et segueixen
         must_be_following: Bloca les notificacions de persones que no segueixes
         must_be_following_dm: Bloca els missatges directes de persones que no segueixes
+      invite_request:
+        text: Per què vols unir-te?
       notification_emails:
         digest: Envia un resum per correu electrònic
         favourite: Envia un correu electrònic si algú marca com a preferit el teu estat
         follow: Envia un correu electrònic si algú et segueix
         follow_request: Envia un correu electrònic si algú sol·licita seguir-te
         mention: Envia un correu electrònic si algú et menciona
+        pending_account: Envia un correu electrònic quan es necessiti revisar un compte nou
         reblog: Envia un correu electrònic si algú comparteix el teu estat
         report: Envia un correu electrònic quan s'enviï un nou informe
     'no': 'No'
+    recommended: Recomanat
     required:
       mark: "*"
       text: necessari
diff --git a/config/locales/simple_form.co.yml b/config/locales/simple_form.co.yml
index c4529093b..1f5dba43f 100644
--- a/config/locales/simple_form.co.yml
+++ b/config/locales/simple_form.co.yml
@@ -26,16 +26,14 @@ co:
         password: Ci volenu almenu 8 caratteri
         phrase: Sarà trovu senza primura di e maiuscule o di l'avertimenti
         scopes: L'API à quelle l'applicazione averà accessu. S'è voi selezziunate un parametru d'altu livellu, un c'hè micca bisognu di selezziunà quell'individuali.
-        setting_advanced_layout: L'interfaccia avanzata cunsiste in parechje culonne persunalizabile
         setting_aggregate_reblogs: Ùn mustrà micca e nove spartere per i statuti chì sò stati spartuti da pocu (tocca solu e spartere più ricente)
-        setting_default_language: A lingua di i vostri statuti pò esse induvinata autumaticamente, mà ùn marchja micca sempre bè
+        setting_default_sensitive: I media sensibili sò piattati, salvu un cambiamentu di i paramettri, è ponu esse visti cù un cliccu
         setting_display_media_default: Piattà i media marcati cum'è sensibili
         setting_display_media_hide_all: Sempre piattà tutti i media
         setting_display_media_show_all: Sempre affissà i media marcati cum'è sensibili
         setting_hide_network: I vostri abbunati è abbunamenti ùn saranu micca mustrati nant’à u vostru prufile
         setting_noindex: Tocca à u vostru prufile pubblicu è i vostri statuti
         setting_show_application: L'applicazione chì voi utilizate per mandà statuti sarà affissata indè a vista ditagliata di quelli
-        setting_theme: Tocca à l’apparenza di Mastodon quandu site cunnettatu·a da qualch’apparechju.
         username: U vostru cugnome sarà unicu nant'à %{domain}
         whole_word: Quandu a parolla o a frasa sana hè alfanumerica, sarà applicata solu s'ella currisponde à a parolla sana
       featured_tag:
@@ -51,7 +49,7 @@ co:
     labels:
       account:
         fields:
-          name: Label
+          name: Marcu
           value: Cuntinutu
       account_warning_preset:
         text: Testu preselezziunatu
@@ -134,6 +132,7 @@ co:
         reblog: Mandà un’e-mail quandu qualch’unu sparte i mo statuti
         report: Mandà un'e-mail quandu c'hè un novu signalamentu
     'no': Nò
+    recommended: Ricumandati
     required:
       mark: "*"
       text: riquisiti
diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml
index fa45fecd5..3bf74e971 100644
--- a/config/locales/simple_form.cs.yml
+++ b/config/locales/simple_form.cs.yml
@@ -26,16 +26,14 @@ cs:
         password: Použijte alespoň 8 znaků
         phrase: Shoda bude nalezena bez ohledu na velikost písmen v těle tootu či varování o obsahu
         scopes: Která API bude aplikaci povoleno používat. Pokud vyberete rozsah nejvyššího stupně, nebudete je muset vybírat jednotlivě.
-        setting_advanced_layout: Pokročilé rozhraní se skládá z několika přizpůsobitelných sloupců
         setting_aggregate_reblogs: Nezobrazovat nové boosty pro tooty, které byly nedávno boostnuty (ovlivňuje pouze nově přijaté boosty)
-        setting_default_language: Jazyk vašich tootů může být detekován automaticky, není to však vždy přesné
+        setting_default_sensitive: Citlivá média jsou ve výchozím stavu skryta a mohou být zobrazena kliknutím
         setting_display_media_default: Skrývat média označená jako citlivá
         setting_display_media_hide_all: Vždy skrývat všechna média
         setting_display_media_show_all: Vždy zobrazovat média označená jako citlivá
         setting_hide_network: Koho sledujete a kdo sleduje vás nebude zobrazeno na vašem profilu
         setting_noindex: Ovlivňuje váš veřejný profil a stránky tootů
         setting_show_application: Aplikace, kterou používáte k psaní tootů, bude zobrazena v detailním zobrazení vašich tootů
-        setting_theme: Ovlivňuje jak Mastodon vypadá, jste-li přihlášen na libovolném zařízení.
         username: Vaše uživatelské jméno bude na %{domain} unikátní
         whole_word: Je-li klíčové slovo či fráze pouze alfanumerická, bude aplikována pouze, pokud se shoduje s celým slovem
       featured_tag:
@@ -134,6 +132,7 @@ cs:
         reblog: Posílat e-maily, když někdo boostne váš toot
         report: Posílat e-maily, je-li odesláno nové nahlášení
     'no': Ne
+    recommended: Doporučeno
     required:
       mark: "*"
       text: požadováno
diff --git a/config/locales/simple_form.cy.yml b/config/locales/simple_form.cy.yml
index 24ae49a2a..b3c879b2f 100644
--- a/config/locales/simple_form.cy.yml
+++ b/config/locales/simple_form.cy.yml
@@ -18,13 +18,11 @@ cy:
         password: Defnyddiwch oleiaf 8 nodyn
         phrase: Caiff ei gyfateb heb ystyriaeth o briflythrennu mewn testun neu rhybudd ynghylch cynnwys tŵt
         scopes: Pa APIau y bydd gan y rhaglen ganiatad i gael mynediad iddynt. Os dewiswch maes lefel uchaf, yna nid oes angen dewis rhai unigol.
-        setting_default_language: Mae modd adnabod iaith eich tŵtiau yn awtomatig, ond nid yw bob tro'n gywir
         setting_display_media_default: Cuddio cyfryngau wedi eu marcio'n sensitif
         setting_display_media_hide_all: Cuddio cyfryngau bob tro
         setting_display_media_show_all: Dangos cyfryngau wedi eu marcio'n sensitif bob tro
         setting_hide_network: Ni fydd y rheini yr ydych yn eu dilyn a phwy sy'n eich dilyn chi yn cael ei ddangos ar eich proffil
         setting_noindex: Mae hyn yn effeithio ar eich proffil cyhoeddus a'ch tudalennau statws
-        setting_theme: Mae hyn yn effeithio ar sut olwg sydd ar Matododon pan yr ydych wedi mewngofnodi o unrhyw ddyfais.
         username: Bydd eich enw defnyddiwr yn unigryw ar %{domain}
         whole_word: Os yw'r allweddair neu'r ymadrodd yn alffaniwmerig yn unig, mi fydd ond yn cael ei osod os yw'n cyfateb a'r gair cyfan
       imports:
@@ -36,7 +34,6 @@ cy:
     labels:
       account:
         fields:
-          name: Label
           value: Cynnwys
       account_warning_preset:
         text: Testun rhagosodedig
@@ -59,7 +56,6 @@ cy:
         confirm_password: Cadarnhau cyfrinair
         context: Hidlo cyd-destunau
         current_password: Cyfrinair presennol
-        data: Data
         discoverable: Rhestrwch y cyfrif hwn ar y cyfeiriadur
         display_name: Enw arddangos
         email: Cyfeiriad e-bost
@@ -76,7 +72,7 @@ cy:
         otp_attempt: Côd dau gam
         password: Cyfrinair
         phrase: Allweddair neu ymadrodd
-        setting_aggregate_reblogs: Grŵp hybiau mewn llinellau amser
+        setting_aggregate_reblogs: Grŵp hybiau mewn ffrydiau
         setting_auto_play_gif: Chwarae GIFs wedi'u hanimeiddio yn awtomatig
         setting_boost_modal: Dangos deialog cadarnhad cyn bŵstio
         setting_default_language: Cyhoeddi iaith
@@ -113,6 +109,5 @@ cy:
         report: Anfon e-bost pan y cyflwynir adroddiad newydd
     'no': Na
     required:
-      mark: "*"
       text: gofynnol
     'yes': Ie
diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml
index 483be7055..324afece6 100644
--- a/config/locales/simple_form.da.yml
+++ b/config/locales/simple_form.da.yml
@@ -20,12 +20,10 @@ da:
         password: Brug mindst 8 tegn
         phrase: Vil blive parret uanset om der er store eller små bogstaver i teksten eller om der er en advarsel om et trut
         scopes: Hvilke APIs applikationen vil få adgang til. Hvis du vælger et højtlevel omfang, behøver du ikke vælge enkeltstående.
-        setting_default_language: Sproget for dine trut kan blive fundet automatisk, men det er ikke altid præcist
         setting_display_media_default: Skjul medier markeret som følsomt
         setting_display_media_hide_all: Skjul altid alle medier
         setting_hide_network: Hvem du følger og hvem der følger dig vil ikke blive vist på din profil
         setting_noindex: Påvirker din offentlige profil og status sider
-        setting_theme: Påvirker hvordan Mastodon ser ud når du er logget ind via en hvilken som helst enhed.
         username: Dit brugernavn vil være unikt på %{domain}
         whole_word: Når nøgle ordet eller udtrykket kun er alfanumerisk, vil det kun blive brugt hvis det passer hele ordet
       imports:
@@ -53,7 +51,6 @@ da:
         confirm_password: Bekræft adgangskode
         context: Filtrer sammenhænge
         current_password: Nuværende adgangskode
-        data: Data
         display_name: Visningsnavn
         email: E-mail adresse
         expires_in: Udløber efter
@@ -105,6 +102,5 @@ da:
         report: Send email når en ny anmeldelse bliver indsendt
     'no': Nej
     required:
-      mark: "*"
       text: påkrævet
     'yes': Ja
diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml
index 779476069..61e0f9740 100644
--- a/config/locales/simple_form.de.yml
+++ b/config/locales/simple_form.de.yml
@@ -3,50 +3,49 @@ de:
   simple_form:
     hints:
       account_warning_preset:
-        text: Du kannst Toot-Syntax benutzen, wie zum Beispiel URLs, Hashtags und Erwähnungen
+        text: Du kannst Beitragssyntax benutzen, wie z.B. URLs, Hashtags und Erwähnungen
       admin_account_action:
-        send_email_notification: Der Benutzer erhält eine Erklärung, was mit seinem Account geschehen ist
-        text_html: Optional. Du kannst Toot-Syntax benutzen. Du kannst <a href="%{path}">Warnungsvorlagen</a> benutzen um Zeit zu sparen
+        send_email_notification: Benutzer_in wird Bescheid gegeben, was mit dem Konto geschehen ist
+        text_html: Optional. Du kannst Beitragssyntax nutzen. Du kannst <a href="%{path}">Warnungsvorlagen</a> benutzen um Zeit zu sparen
         type_html: Wähle aus, was du mit <strong>%{acct}</strong> machen möchtest
         warning_preset_id: Optional. Du kannst immer noch eigenen Text an das Ende der Vorlage hinzufügen
       defaults:
         autofollow: Leute, die sich über deine Einladung registrieren, werden dir automatisch folgen
         avatar: PNG, GIF oder JPG. Maximal %{size}. Wird auf %{dimensions} px herunterskaliert
         bot: Dieses Konto führt lediglich automatisierte Aktionen durch und wird möglicherweise nicht überwacht
-        context: Ein oder mehrere Aspekte, wo der Filter greifen soll
-        digest: Wenn du lange Zeit inaktiv bist, wird dir eine Zusammenfassung von Erwähnungen in deiner Abwesenheit zugeschickt
-        discoverable_html: Das <a href="%{path}" target="_blank">Verzeichnis</a> lässt dich basierend auf Interessen und Aktivitäten neue Benutzerkonten finden. Dies benötigt mindestens %{min_followers} Follower
+        context: Ein oder mehrere Kontexte, wo der Filter aktiv werden soll
+        digest: Wenn du eine lange Zeit inaktiv bist, wird dir eine Zusammenfassung von Erwähnungen zugeschickt, die du in deiner Abwesenheit empfangen hast
+        discoverable_html: Das <a href="%{path}" target="_blank">Verzeichnis</a> erlaubt es dein Profil durch deine Hashtags und deine Aktivitäten zu entdecken. Voraussetzung ist allerdings mindestens %{min_followers} Folger_innen
         email: Du wirst eine Bestätigungs-E-Mail erhalten
         fields: Du kannst bis zu 4 Elemente auf deinem Profil anzeigen lassen, die als Tabelle dargestellt werden
         header: PNG, GIF oder JPG. Maximal %{size}. Wird auf %{dimensions} px herunterskaliert
         inbox_url: Kopiere die URL von der Startseite des gewünschten Relays
-        irreversible: Gefilterte Beiträge werden unwiderruflich gefiltert, selbst wenn der Filter später entfernt wurde
+        irreversible: Gefilterte Beiträge werden unwiderruflich gelöscht, selbst wenn der Filter später entfernt wird
         locale: Die Sprache der Oberfläche, E-Mails und Push-Benachrichtigungen
         locked: Wer dir folgen möchte, muss um deine Erlaubnis bitten
         password: Verwende mindestens 8 Zeichen
-        phrase: Wird unabhängig vom umgebenen Text oder Inhaltswarnung eines Beitrags verglichen
+        phrase: Wird schreibungsunabhängig mit dem Text und Inhaltswarnung eines Beitrags verglichen
         scopes: Welche Schnittstellen der Applikation erlaubt sind. Wenn du einen Top-Level-Scope auswählst, dann musst du nicht jeden einzelnen darunter auswählen.
         setting_aggregate_reblogs: Zeige denselben Beitrag nicht nochmal an, wenn er erneut geteilt wurde (dies betrifft nur neulich erhaltene erneut geteilte Beiträge)
-        setting_default_language: Die Sprache der Beiträge kann automatisch erkannt werden, aber dies ist nicht immer genau
+        setting_default_sensitive: Heikle Medien werden erst nach einem Klick sichtbar
         setting_display_media_default: Verstecke Medien, die als sensibel markiert sind
         setting_display_media_hide_all: Alle Medien immer verstecken
         setting_display_media_show_all: Medien, die als sensibel markiert sind, immer anzeigen
         setting_hide_network: Wem du folgst und wer dir folgt, wird in deinem Profil nicht angezeigt
         setting_noindex: Betrifft dein öffentliches Profil und deine Beiträge
-        setting_show_application: Die Anwendung, die du zum Schreiben von Beiträgen benutzt wird in der detaillierten Ansicht deiner Beiträge angezeigt
-        setting_theme: Wirkt sich darauf aus, wie Mastodon aussieht, egal auf welchem Gerät du eingeloggt bist.
-        username: Dein Benutzer:innen-Name wird auf %{domain} nur einmal vorkommen
-        whole_word: Wenn das Schlagwort oder die Phrase nur Buchstaben und Zahlen enthält, wird es nur angewendet, wenn es dem ganzen Wort entspricht
+        setting_show_application: Die Anwendung die du nutzst wird in der detaillierten Ansicht deiner Beiträge angezeigt
+        username: Dein Profilname wird auf %{domain} einzigartig sein
+        whole_word: Wenn das Schlagwort nur aus Buchstaben und Zahlen besteht, wird es nur angewendet, wenn es dem ganzen Wort entspricht
       featured_tag:
         name: 'Du möchtest vielleicht einen von diesen benutzen:'
       imports:
         data: CSV-Datei, die aus einem anderen Mastodon-Server exportiert wurde
-      inivte_request:
-        text: Dies wird uns helfen deine Anfrage besser zu verstehen
+      invite_request:
+        text: Dies wird uns helfen deine Anmeldungsanfrage besser zu verarbeiten
       sessions:
-        otp: 'Gib den Zwei-Faktor-Authentisierungscode von deinem Telefon ein oder benutze einen deiner Wiederherstellungscodes:'
+        otp: 'Gib die Zwei-Faktor-Authentifizierung von deinem Telefon ein oder benutze einen deiner Wiederherstellungscodes:'
       user:
-        chosen_languages: Wenn dies aktiviert ist, dann werden nur Beiträge in den ausgewählten Sprachen auf der öffentlichen Timeline angezeigt
+        chosen_languages: Wenn aktiviert, werden nur Beiträge in den ausgewählten Sprachen auf den öffentlichen Zeitleisten angezeigt
     labels:
       account:
         fields:
@@ -62,76 +61,78 @@ de:
           disable: Deaktivieren
           none: Nichts tun
           silence: Stummschalten
-          suspend: Deaktivieren und unwiderruflich Benutzerdaten löschen
+          suspend: Deaktivieren und Benutzerdaten unwiderruflich löschen
         warning_preset_id: Benutze eine Warnungsvorlage
       defaults:
-        autofollow: Einladen, um deinem Account zu folgen
+        autofollow: Eingeladene Nutzer_innen sollen dir automatisch folgen
         avatar: Profilbild
-        bot: Dieser Benutzer ist ein Bot
+        bot: Dieses Profil ist ein Bot
         chosen_languages: Sprachen filtern
         confirm_new_password: Neues Passwort bestätigen
         confirm_password: Passwort bestätigen
-        context: Aspekte filtern
+        context: In Kontexten filtern
         current_password: Derzeitiges Passwort
         data: Daten
-        discoverable: Dieses Benutzerkonto im Verzeichnis auflisten
+        discoverable: Dieses Profil im Profilverzeichnis zeigen
         display_name: Anzeigename
         email: E-Mail-Adresse
         expires_in: Läuft ab
-        fields: Profil-Metadaten
+        fields: Tabellenfelder
         header: Titelbild
-        inbox_url: Inbox-URL des Relays
+        inbox_url: Inbox-URL des Relais
         irreversible: Verwerfen statt verstecken
         locale: Sprache der Benutzeroberfläche
-        locked: Gesperrtes Profil
+        locked: Profil sperren
         max_uses: Maximale Verwendungen
         new_password: Neues Passwort
         note: Über mich
-        otp_attempt: Zwei-Faktor-Authentisierungs-Code
+        otp_attempt: Zwei-Faktor-Authentifizierung
         password: Passwort
-        phrase: Schlagwort oder Phrase
-        setting_aggregate_reblogs: Gruppiere erneut geteilte Beiträge in Zeitleisten
+        phrase: Schlagwort oder Satz
+        setting_advanced_layout: Fortgeschrittene Benutzeroberfläche benutzen
+        setting_aggregate_reblogs: Gruppiere erneut geteilte Beiträge auf der Startseite
         setting_auto_play_gif: Animierte GIFs automatisch abspielen
         setting_boost_modal: Bestätigungsdialog anzeigen, bevor ein Beitrag geteilt wird
         setting_default_language: Beitragssprache
         setting_default_privacy: Beitragssichtbarkeit
-        setting_default_sensitive: Medien immer als sensibel markieren
+        setting_default_sensitive: Medien immer als heikel markieren
         setting_delete_modal: Bestätigungsdialog anzeigen, bevor ein Beitrag gelöscht wird
         setting_display_media: Medien-Anzeige
-        setting_display_media_default: Standard
-        setting_display_media_hide_all: Alle verstecken
-        setting_display_media_show_all: Alle anzeigen
+        setting_display_media_default: Heikle Inhalte verstecken
+        setting_display_media_hide_all: Alle Medien verstecken
+        setting_display_media_show_all: Alle Medien anzeigen
         setting_expand_spoilers: Beiträge mit Inhaltswarnungen immer ausklappen
-        setting_hide_network: Blende dein Netzwerk aus
+        setting_hide_network: Netzwerk ausblenden
         setting_noindex: Suchmaschinen-Indexierung verhindern
         setting_reduce_motion: Bewegung in Animationen verringern
         setting_show_application: Anwendung preisgeben, die benutzt wurde um Beiträge zu versenden
         setting_system_font_ui: Standardschriftart des Systems verwenden
-        setting_theme: Theme der Website
+        setting_theme: Theme
         setting_unfollow_modal: Bestätigungsdialog anzeigen, bevor jemandem entfolgt wird
         severity: Schweregrad
-        type: Importtyp
+        type: Art des Imports
         username: Profilname
         username_or_email: Profilname oder E-Mail
         whole_word: Ganzes Wort
       featured_tag:
         name: Hashtag
       interactions:
-        must_be_follower: Benachrichtigungen von Nicht-Folgenden blockieren
+        must_be_follower: Benachrichtigungen von Profilen blockieren, die mir nicht folgen
         must_be_following: Benachrichtigungen von Profilen blockieren, denen ich nicht folge
         must_be_following_dm: Private Nachrichten von Profilen, denen ich nicht folge, blockieren
       invite_request:
         text: Warum möchtest du beitreten?
       notification_emails:
-        digest: Schicke Übersichts-E-Mails
+        digest: Kurzfassungen über E-Mail senden
         favourite: E-Mail senden, wenn jemand meinen Beitrag favorisiert
         follow: E-Mail senden, wenn mir jemand folgt
         follow_request: E-Mail senden, wenn mir jemand folgen möchte
         mention: E-Mail senden, wenn mich jemand erwähnt
-        pending_account: E-Mail senden, wenn ein Benutzerkonto zur Überprüfung aussteht
+        pending_account: E-Mail senden, wenn ein neues Benutzerkonto zur Überprüfung aussteht
         reblog: E-Mail senden, wenn jemand meinen Beitrag teilt
         report: E-Mail senden, wenn ein neuer Bericht vorliegt
     'no': Nein
+    recommended: Empfohlen
     required:
       mark: "*"
       text: Pflichtfeld
diff --git a/config/locales/simple_form.el.yml b/config/locales/simple_form.el.yml
index 3d812204c..bd78881ae 100644
--- a/config/locales/simple_form.el.yml
+++ b/config/locales/simple_form.el.yml
@@ -27,20 +27,21 @@ el:
         phrase: Θα ταιριάζει ανεξαρτήτως πεζών/κεφαλαίων ή προειδοποίησης περιεχομένου του τουτ
         scopes: Ποια API θα επιτρέπεται στην εφαρμογή να χρησιμοποιήσεις. Αν επιλέξεις κάποιο υψηλό εύρος εφαρμογής, δε χρειάζεται να επιλέξεις και εξειδικευμένα.
         setting_aggregate_reblogs: Απόκρυψη των νέων προωθήσεωνγια τα τουτ που έχουν προωθηθεί πρόσφατα (επηρεάζει μόνο τις νέες προωθήσεις)
-        setting_default_language: Η γλώσσα των τουτ σου μπορεί να ανιχνευτεί αυτόματα αλλά δεν είναι πάντα ακριβές
+        setting_default_sensitive: Τα ευαίσθητα πολυμέσα είναι κρυμμένα και εμφανίζονται με ένα κλικ
         setting_display_media_default: Απόκρυψη ευαίσθητων πολυμέσων
         setting_display_media_hide_all: Μόνιμη απόκρυψη όλων των πολυμέσων
         setting_display_media_show_all: Μόνιμη εμφάνιση ευαίσθητων πολυμέσων
         setting_hide_network: Δε θα εμφανίζεται στο προφίλ σου ποιους ακολουθείς και ποιοι σε ακολουθούν
         setting_noindex: Επηρεάζει το δημόσιο προφίλ και τις δημοσιεύσεις σου
         setting_show_application: Η εφαρμογή που χρησιμοποιείς για να στέλνεις τα τουτ σου θα εμφανίζεται στις αναλυτικές λεπτομέρειες τους
-        setting_theme: Επηρεάζει την εμφάνιση του Mastodon όταν συνδέεται από οποιαδήποτε συσκευή.
         username: Το όνομα χρήστη σου θα είναι μοναδικό στο %{domain}
         whole_word: Όταν η λέξη ή η φράση κλειδί είναι μόνο αλφαριθμητική, θα εφαρμοστεί μόνο αν ταιριάζει με ολόκληρη τη λέξη
       featured_tag:
         name: 'Ίσως να θες να χρησιμοποιήσεις μια από αυτές:'
       imports:
         data: Αρχείο CSV που έχει εξαχθεί από διαφορετικό κόμβο Mastodon
+      invite_request:
+        text: Αυτό θα μας βοηθήσει να επιθεωρήσουμε την αίτησή σου
       sessions:
         otp: 'Βάλε τον κωδικό δυο παραγόντων (2FA) από την εφαρμογή του τηλεφώνου σου ή χρησιμοποίησε κάποιον από τους κωδικούς ανάκτησης σου:'
       user:
@@ -88,6 +89,7 @@ el:
         otp_attempt: Κωδικός δυο παραγόντων
         password: Συνθηματικό
         phrase: Λέξη ή φράση κλειδί
+        setting_advanced_layout: Ενεργοποίηση προηγμένης λειτουργίας χρήσης
         setting_aggregate_reblogs: Ομαδοποίηση προωθήσεων στις ροές
         setting_auto_play_gif: Αυτόματη αναπαραγωγή των GIF
         setting_boost_modal: Εμφάνιση ερώτησης επιβεβαίωσης πριν την προώθηση
@@ -118,15 +120,19 @@ el:
         must_be_follower: Μπλόκαρε τις ειδοποιήσεις από όσους δεν ακολουθείς
         must_be_following: Μπλόκαρε τις ειδοποιήσεις που προέρχονται από άτομα που δεν τα ακολουθείς
         must_be_following_dm: Μπλόκαρε τα προσωπικά μηνύματα από όσους δεν ακολουθείς
+      invite_request:
+        text: Γιατί θέλεις να συμμετάσχεις;
       notification_emails:
         digest: Στέλνε συνοπτικά email
         favourite: Στελνε email όταν κάποιος σημειώνει ως αγαπημένη τη δημοσίευσή σου
         follow: Στελνε email όταν κάποιος σε ακολουθεί
         follow_request: Στέλνε email όταν κάποιος ζητάει να σε ακολουθήσει
         mention: Στέλνε email όταν κάποιος σε αναφέρει
+        pending_account: Αποστολή email όταν υπάρχει νέος λογαριασμός για επιθεώρηση
         reblog: Στέλνε email όταν κάποιος προωθεί τη δημοσίευση σου
         report: Αποστολή email όταν υποβάλλεται νέα καταγγελία
     'no': Όχι
+    recommended: Προτείνεται
     required:
       mark: "*"
       text: απαιτείται
diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml
index 97a5e8785..e5e12c05a 100644
--- a/config/locales/simple_form.en.yml
+++ b/config/locales/simple_form.en.yml
@@ -26,12 +26,12 @@ en:
         password: Use at least 8 characters
         phrase: Will be matched regardless of casing in text or content warning of a toot
         scopes: Which APIs the application will be allowed to access. If you select a top-level scope, you don't need to select individual ones.
-        setting_advanced_layout: The advanced UI consists of multiple customizable columns
         setting_aggregate_reblogs: Do not show new boosts for toots that have been recently boosted (only affects newly-received boosts)
         setting_default_content_type_html: When writing toots, assume they are written in raw HTML, unless specified otherwise
         setting_default_content_type_markdown: When writing toots, assume they are using Markdown for rich text formatting, unless specified otherwise
         setting_default_content_type_plain: When writing toots, assume they are plain text with no special formatting, unless specified otherwise (default Mastodon behavior)
         setting_default_language: The language of your toots can be detected automatically, but it's not always accurate
+        setting_default_sensitive: Sensitive media is hidden by default and can be revealed with a click
         setting_display_media_default: Hide media marked as sensitive
         setting_display_media_hide_all: Always hide all media
         setting_display_media_show_all: Always show media marked as sensitive
@@ -103,7 +103,7 @@ en:
         setting_default_content_type_markdown: Markdown
         setting_default_content_type_plain: Plain text
         setting_default_language: Posting language
-        setting_default_privacy: Post privacy
+        setting_default_privacy: Posting privacy
         setting_default_sensitive: Always mark media as sensitive
         setting_delete_modal: Show confirmation dialog before deleting a toot
         setting_display_media: Media display
@@ -143,6 +143,7 @@ en:
         reblog: Send e-mail when someone boosts your status
         report: Send e-mail when a new report is submitted
     'no': 'No'
+    recommended: Recommended
     required:
       mark: "*"
       text: required
diff --git a/config/locales/simple_form.en_GB.yml b/config/locales/simple_form.en_GB.yml
index 6eac4bf3c..8752d81bb 100644
--- a/config/locales/simple_form.en_GB.yml
+++ b/config/locales/simple_form.en_GB.yml
@@ -27,14 +27,12 @@ en_GB:
         phrase: Will be matched regardless of casing in text or content warning of a toot
         scopes: Which APIs the application will be allowed to access. If you select a top-level scope, you don't need to select individual ones.
         setting_aggregate_reblogs: Do not show new boosts for toots that have been recently boosted (only affects newly-received boosts)
-        setting_default_language: The language of your toots can be detected automatically, but it's not always accurate
         setting_display_media_default: Hide media marked as sensitive
         setting_display_media_hide_all: Always hide all media
         setting_display_media_show_all: Always show media marked as sensitive
         setting_hide_network: Who you follow and who follows you will not be shown on your profile
         setting_noindex: Affects your public profile and status pages
         setting_show_application: The application you use to toot will be displayed in the detailed view of your toots
-        setting_theme: Affects how Mastodon looks when you're logged in from any device.
         username: Your username will be unique on %{domain}
         whole_word: When the keyword or phrase is alphanumeric only, it will only be applied if it matches the whole word
       featured_tag:
diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml
index f4e1df32a..1b63b27a8 100644
--- a/config/locales/simple_form.eo.yml
+++ b/config/locales/simple_form.eo.yml
@@ -27,20 +27,21 @@ eo:
         phrase: Estos provita senzorge pri la uskleco de teksto aŭ averto pri enhavo de mesaĝo
         scopes: Kiujn API-ojn la aplikaĵo permesiĝos atingi. Se vi elektas supran amplekson, vi ne bezonas elekti la individuajn.
         setting_aggregate_reblogs: Ne montri novajn diskonigojn de mesaĝoj laste diskonigitaj (nur efikas al novaj diskonigoj)
-        setting_default_language: La lingvo de viaj mesaĝoj povas esti aŭtomate detektitaj, sed tio ne ĉiam ĝustas
+        setting_default_sensitive: Sentema komunikilo estas kaŝita defaŭlte kaj povas esti rivelita per alklako
         setting_display_media_default: Kaŝi aŭdovidaĵojn markitajn kiel tiklaj
         setting_display_media_hide_all: Ĉiam kaŝi ĉiujn aŭdovidaĵojn
         setting_display_media_show_all: Ĉiam montri aŭdovidaĵojn markitajn kiel tiklaj
         setting_hide_network: Tiuj, kiujn vi sekvas, kaj tiuj, kiuj sekvas vin ne estos videblaj en via profilo
         setting_noindex: Influas vian publikan profilon kaj mesaĝajn paĝojn
         setting_show_application: La aplikaĵo, kiun vi uzas por afiŝi, estos montrita en la detala vido de viaj mesaĝoj
-        setting_theme: Influas kiel Mastodon aspektas post ensaluto de ajna aparato.
         username: Via uzantnomo estos unika ĉe %{domain}
         whole_word: Kiam la vorto aŭ frazo estas nur litera aŭ cifera, ĝi estos uzata nur se ĝi kongruas kun la tuta vorto
       featured_tag:
         name: 'Vi povus uzi iun el la jenaj:'
       imports:
         data: CSV-dosiero el alia Mastodon-servilo
+      invite_request:
+        text: Ĉi tio helpos nin revizii vian kandidatiĝon
       sessions:
         otp: 'Enmetu la kodon de dufaktora aŭtentigo el via telefono aŭ uzu unu el viaj realiraj kodoj:'
       user:
@@ -88,6 +89,7 @@ eo:
         otp_attempt: Kodo de dufaktora aŭtentigo
         password: Pasvorto
         phrase: Vorto aŭ frazo
+        setting_advanced_layout: Ebligi altnivelan retpaĝan interfacon
         setting_aggregate_reblogs: Grupigi diskonigojn en tempolinioj
         setting_auto_play_gif: Aŭtomate ekigi GIF-ojn
         setting_boost_modal: Montri fenestron por konfirmi antaŭ ol diskonigi
@@ -118,15 +120,19 @@ eo:
         must_be_follower: Bloki sciigojn de nesekvantoj
         must_be_following: Bloki sciigojn de homoj, kiujn vi ne sekvas
         must_be_following_dm: Bloki rektajn mesaĝojn de homoj, kiujn vi ne sekvas
+      invite_request:
+        text: Kial vi volas aliĝi?
       notification_emails:
         digest: Sendi resumajn retmesaĝojn
         favourite: Sendi retmesaĝon kiam iu stelumas vian mesaĝon
         follow: Sendi retmesaĝon kiam iu sekvas vin
         follow_request: Sendi retmesaĝon kiam iu petas sekvi vin
         mention: Sendi retmesaĝon kiam iu mencias vin
+        pending_account: Sendi retmesaĝon kiam nova konto bezonas kontrolon
         reblog: Sendi retmesaĝon kiam iu diskonigas vian mesaĝon
         report: Sendi retmesaĝon kiam nova signalo estas sendita
     'no': Ne
+    recommended: Rekomendita
     required:
       mark: "*"
       text: bezonata
diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml
index c0d72dc27..7b871e8ba 100644
--- a/config/locales/simple_form.es.yml
+++ b/config/locales/simple_form.es.yml
@@ -2,27 +2,34 @@
 es:
   simple_form:
     hints:
+      account_warning_preset:
+        text: Puede usar sintaxis de toots, como URLs, hashtags y menciones
+      admin_account_action:
+        send_email_notification: El usuario recibirá una explicación de lo que sucedió con respecto a su cuenta
       defaults:
         autofollow: Los usuarios que se registren mediante la invitación te seguirán automáticamente
         avatar: PNG, GIF o JPG. Máximo %{size}. Será escalado a %{dimensions}px
         bot: Esta cuenta ejecuta principalmente acciones automatizadas y podría no ser monitorizada
         context: Uno o múltiples contextos en los que debe aplicarse el filtro
         digest: Solo enviado tras un largo periodo de inactividad y solo si has recibido mensajes personales durante tu ausencia
+        email: Se le enviará un correo de confirmación
         fields: Puedes tener hasta 4 elementos mostrándose como una tabla en tu perfil
         header: PNG, GIF o JPG. Máximo %{size}. Será escalado a %{dimensions}px
         inbox_url: Copia la URL de la página principal del relés que quieres utilizar
         irreversible: Los toots filtrados desaparecerán irreversiblemente, incluso si este filtro es eliminado más adelante
         locale: El idioma de la interfaz de usuario, correos y notificaciones push
         locked: Requiere que manualmente apruebes seguidores y las publicaciones serán mostradas solamente a tus seguidores
+        password: Utilice al menos 8 caracteres
         phrase: Se aplicará sin importar las mayúsculas o los avisos de contenido de un toot
         scopes: Qué APIs de la aplicación tendrán acceso. Si seleccionas el alcance de nivel mas alto, no necesitas seleccionar las individuales.
-        setting_default_language: El idioma de tus toots podrá detectarse automáticamente, pero no siempre es preciso
         setting_hide_network: A quién sigues y quién te sigue no será mostrado en tu perfil
         setting_noindex: Afecta a tu perfil público y páginas de estado
-        setting_theme: Afecta al aspecto de Mastodon cuando te identificas desde cualquier dispositivo.
+        setting_show_application: La aplicación que utiliza usted para publicar toots se mostrará en la vista detallada de sus toots
         whole_word: Cuando la palabra clave o frase es solo alfanumérica, solo será aplicado si concuerda con toda la palabra
       imports:
         data: Archivo CSV exportado desde otra instancia de Mastodon
+      invite_request:
+        text: Esto nos ayudará a revisar su aplicación
       sessions:
         otp: 'Introduce el código de autenticación de dos factores geberado por tu aplicación de teléfono o usa uno de tus códigos de recuperación:'
       user:
@@ -32,9 +39,15 @@ es:
         fields:
           name: Etiqueta
           value: Contenido
+      admin_account_action:
+        send_email_notification: Notificar al usuario por correo electrónico
+        text: Aviso personalizado
+        type: Acción
+        types:
+          disable: Deshabilitar
+          silence: Silenciar
       defaults:
         autofollow: Invitar a seguir tu cuenta
-        avatar: Avatar
         bot: Esta es una cuenta bot
         chosen_languages: Filtrar idiomas
         confirm_new_password: Confirmar nueva contraseña
@@ -66,6 +79,7 @@ es:
         setting_hide_network: Ocultar tu red
         setting_noindex: Excluirse del indexado de motores de búsqueda
         setting_reduce_motion: Reducir el movimiento de las animaciones
+        setting_show_application: Mostrar aplicación usada para publicar toots
         setting_system_font_ui: Utilizar la tipografía por defecto del sistema
         setting_theme: Tema del sitio
         setting_unfollow_modal: Mostrar diálogo de confirmación antes de dejar de seguir a alguien
@@ -78,16 +92,19 @@ es:
         must_be_follower: Bloquear notificaciones de personas que no te siguen
         must_be_following: Bloquear notificaciones de personas que no sigues
         must_be_following_dm: Bloquear mensajes directos de la gente que no sigues
+      invite_request:
+        text: "¿Por qué quiere unirse usted?"
       notification_emails:
         digest: Enviar resumen de correos electrónicos
         favourite: Enviar correo electrónico cuando alguien de a favorito en su publicación
         follow: Enviar correo electrónico cuando alguien te siga
         follow_request: Enviar correo electrónico cuando alguien solicita seguirte
         mention: Enviar correo electrónico cuando alguien te mencione
+        pending_account: Enviar correo electrónico cuando una nueva cuenta necesita revisión
         reblog: Enviar correo electrónico cuando alguien comparta su publicación
         report: Enviar un correo cuando se envía un nuevo informe
     'no': 'No'
+    recommended: Recomendado
     required:
-      mark: "*"
       text: necesario
     'yes': Sí
diff --git a/config/locales/simple_form.eu.yml b/config/locales/simple_form.eu.yml
index f4fadb29d..acd5fd6d9 100644
--- a/config/locales/simple_form.eu.yml
+++ b/config/locales/simple_form.eu.yml
@@ -27,20 +27,21 @@ eu:
         phrase: Bat egingo du Maiuskula/minuskula kontuan hartu gabe eta edukiaren abisua kontuan hartu gabe
         scopes: Zeintzuk API atzitu ditzakeen aplikazioak. Goi mailako arloa aukeratzen baduzu, ez dituzu azpikoak aukeratu behar.
         setting_aggregate_reblogs: Ez erakutsi buktzada berriak berriki bultzada jaso duten tootentzat (berriki jasotako bultzadei eragiten die besterik ez)
-        setting_default_language: Zure Toot-en hizkuntza automatikoki antzeman daiteke, baina ez da beti zehatza
+        setting_default_sensitive: Multimedia hunkigarria lehenetsita ezkutatzen da, eta sakatuz ikusi daiteke
         setting_display_media_default: Ezkutatu hunkigarri gisa markatutako multimedia
         setting_display_media_hide_all: Ezkutatu multimedia guztia beti
         setting_display_media_show_all: Erakutsi beti hunkigarri gisa markatutako multimedia
         setting_hide_network: Nor jarraitzen duzun eta nork jarraitzen zaituen ez da bistaratuko zure profilean
         setting_noindex: Zure profil publiko eta Toot-en orrietan eragina du
         setting_show_application: Tootak bidaltzeko erabiltzen duzun aplikazioa zure tooten ikuspegi xehetsuan bistaratuko da
-        setting_theme: Edozein gailutik konektatzean Mastodon-en itxuran eragiten du.
         username: Zure erabiltzaile-izena bakana izango da %{domain} domeinuan
         whole_word: Hitz eta esaldi gakoa alfanumerikoa denean, hitz osoarekin bat datorrenean besterik ez da aplikatuko
       featured_tag:
         name: 'Hauetakoren bat erabili zenezake:'
       imports:
         data: Beste Mastodon zerbitzari batetik esportatutako CSV fitxategia
+      invite_request:
+        text: Honek zure eskaera berrikustean lagunduko digu
       sessions:
         otp: 'Sartu zure telefonoko aplikazioak sortutako bi faktoreetako kodea, edo erabili zure berreskuratze kodeetako bat:'
       user:
@@ -88,6 +89,7 @@ eu:
         otp_attempt: Bi faktoreetako kodea
         password: Pasahitza
         phrase: Hitz edo esaldi gakoa
+        setting_advanced_layout: Gaitu web interfaze aurreratua
         setting_aggregate_reblogs: Taldekatu bultzadak denbora-lerroetan
         setting_auto_play_gif: Erreproduzitu GIF animatuak automatikoki
         setting_boost_modal: Erakutsi baieztapen elkarrizketa-koadroa bultzada eman aurretik
@@ -118,15 +120,19 @@ eu:
         must_be_follower: Blokeatu jarraitzaile ez direnen jakinarazpenak
         must_be_following: Blokeatu zuk jarraitzen ez dituzunen jakinarazpenak
         must_be_following_dm: Blokeatu zuk jarraitzen ez dituzunen mezu zuzenak
+      invite_request:
+        text: Zergatik elkartu nahi duzu?
       notification_emails:
         digest: Bidali laburpenak e-mail bidez
         favourite: Bidali e-mail bat norbaitek zure mezua gogoko duenean
         follow: Bidali e-mail bat norbaitek jarraitzen zaituenean
         follow_request: Bidali e-mail bat norbaitek zu jarraitzea eskatzen duenean
         mention: Bidali e-mail bat norbaitek zu aipatzean
+        pending_account: Bidali e-mail bat kontu bat berrikusi behar denean
         reblog: Bidali e-mail bat norbaitek zure mezuari bultzada ematen badio
         report: Bidali e-maila txosten berri bat aurkezten denean
     'no': Ez
+    recommended: Aholkatua
     required:
       mark: "*"
       text: beharrezkoa
diff --git a/config/locales/simple_form.fa.yml b/config/locales/simple_form.fa.yml
index b7ba444aa..cbe97095b 100644
--- a/config/locales/simple_form.fa.yml
+++ b/config/locales/simple_form.fa.yml
@@ -27,14 +27,12 @@ fa:
         phrase: مستقل از کوچکی و بزرگی حروف، با متن اصلی یا هشدار محتوای بوق‌ها مقایسه می‌شود
         scopes: واسط‌های برنامه‌نویسی که این برنامه به آن دسترسی دارد. اگر بالاترین سطح دسترسی را انتخاب کنید، دیگر نیازی به انتخاب سطح‌های پایینی ندارید.
         setting_aggregate_reblogs: برای بازبوق‌هایی که به تازگی برایتان نمایش داده شده‌اند، بازبوق‌های بیشتر را نشان نده (فقط روی بازبوق‌های اخیر تأثیر می‌گذارد)
-        setting_default_language: زبان نوشته‌های شما به طور خودکار تشخیص داده می‌شود، ولی این تشخیص همیشه دقیق نیست
         setting_display_media_default: تصویرهایی را که به عنوان حساس علامت زده شده‌اند پنهان کن
         setting_display_media_hide_all: همیشه همهٔ عکس‌ها و ویدیوها را پنهان کن
         setting_display_media_show_all: همیشه تصویرهایی را که به عنوان حساس علامت زده شده‌اند را نشان بده
         setting_hide_network: فهرست پیگیران شما و فهرست کسانی که شما پی می‌گیرید روی نمایهٔ شما دیده نخواهد شد
         setting_noindex: روی نمایهٔ عمومی و صفحهٔ نوشته‌های شما تأثیر می‌گذارد
         setting_show_application: برنامه‌ای که به کمک آن بوق می‌زنید، در جزئیات بوق شما نمایش خواهد یافت
-        setting_theme: ظاهر ماستدون را وقتی که از هر دستگاهی به آن وارد می‌شوید تعیین می‌کند.
         username: نام کاربری شما روی %{domain} یکتا خواهد بود
         whole_word: اگر کلیدواژه فقط دارای حروف و اعداد باشد، تنها وقتی پیدا می‌شود که با کل یک واژه در متن منطبق باشد، نه با بخشی از یک واژه
       featured_tag:
@@ -128,6 +126,5 @@ fa:
         report: وقتی گزارش تازه‌ای فرستاده شد ایمیل بفرست
     'no': خیر
     required:
-      mark: "*"
       text: ضروری
     'yes': بله
diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml
index 5fda10969..2bb56b40e 100644
--- a/config/locales/simple_form.fi.yml
+++ b/config/locales/simple_form.fi.yml
@@ -4,7 +4,6 @@ fi:
     hints:
       admin_account_action:
         send_email_notification: Käyttäjä saa selityksen mitä tapahtui hänen tililleen
-        type_html: Valitse mitä teet <strong>1%{acct}</strong>2
       defaults:
         avatar: PNG, GIF tai JPG. Enintään %{size}. Skaalataan kokoon %{dimensions} px
         digest: Lähetetään vain pitkän poissaolon jälkeen ja vain, jos olet saanut suoria viestejä poissaolosi aikana
@@ -12,7 +11,6 @@ fi:
         header: PNG, GIF tai JPG. Enintään %{size}. Skaalataan kokoon %{dimensions} px
         locked: Sinun täytyy hyväksyä seuraajat manuaalisesti
         setting_noindex: Vaikuttaa julkiseen profiiliisi ja tilasivuihisi
-        setting_theme: Vaikuttaa Mastodonin ulkoasuun millä tahansa laitteella kirjauduttaessa.
       imports:
         data: Toisesta Mastodon-instanssista tuotu CSV-tiedosto
       sessions:
@@ -66,6 +64,5 @@ fi:
         reblog: Lähetä sähköposti, kun joku buustaa julkaisusi
     'no': Ei
     required:
-      mark: "*"
       text: pakollinen tieto
     'yes': Kyllä
diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml
index e2121098a..6b3aa9bfb 100644
--- a/config/locales/simple_form.fr.yml
+++ b/config/locales/simple_form.fr.yml
@@ -27,14 +27,13 @@ fr:
         phrase: Sera trouvé sans que la case ou l’avertissement de contenu du pouet soit pris en compte
         scopes: À quelles APIs l’application sera autorisée à accéder. Si vous sélectionnez un périmètre de haut-niveau, vous n’avez pas besoin de sélectionner les individuels.
         setting_aggregate_reblogs: Ne pas afficher de nouveaux repartagés pour les pouets qui ont été récemment repartagés (n’affecte que les repartagés nouvellement reçus)
-        setting_default_language: La langue de vos pouets peut être détectée automatiquement, mais ça n’est pas toujours pertinent
-        setting_display_media_default: Masquer les supports marqués comme sensibles
+        setting_default_sensitive: Les médias sensibles sont cachés par défaut et peuvent être révélés d’un simple clic
+        setting_display_media_default: Masquer les médias marqués comme sensibles
         setting_display_media_hide_all: Toujours masquer tous les médias
         setting_display_media_show_all: Toujours afficher les médias marqués comme sensibles
         setting_hide_network: Ceux que vous suivez et ceux qui vous suivent ne seront pas affichés sur votre profil
         setting_noindex: Affecte votre profil public ainsi que vos statuts
         setting_show_application: Le nom de l’application que vous utilisez afin d’envoyer des pouets sera affiché dans la vue détaillée de ceux-ci
-        setting_theme: Affecte l’apparence de Mastodon quand vous êtes connecté·e depuis n’importe quel appareil.
         username: Votre nom d’utilisateur sera unique sur %{domain}
         whole_word: Lorsque le mot-clef ou la phrase-clef est uniquement alphanumérique, ça sera uniquement appliqué s’il correspond au mot entier
       featured_tag:
@@ -61,7 +60,7 @@ fr:
         types:
           disable: Désactiver
           none: Ne rien faire
-          silence: Silence
+          silence: Masquer
           suspend: Suspendre et effacer les données du compte de manière irréversible
         warning_preset_id: Utiliser un modèle d’avertissement
       defaults:
@@ -90,6 +89,7 @@ fr:
         otp_attempt: Code d’identification à deux facteurs
         password: Mot de passe
         phrase: Mot-clé ou phrase
+        setting_advanced_layout: Activer l’interface Web avancée
         setting_aggregate_reblogs: Repartagés en groupe dans la ligne de temps
         setting_auto_play_gif: Lire automatiquement les GIFs animés
         setting_boost_modal: Afficher une fenêtre de confirmation avant de partager
@@ -132,6 +132,7 @@ fr:
         reblog: Envoyer un courriel lorsque quelqu’un partage mes statuts
         report: Envoyer un courriel lorsqu’un nouveau rapport est soumis
     'no': Non
+    recommended: Recommandé
     required:
       mark: "*"
       text: Champs requis
diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml
index 434b8caff..22389051f 100644
--- a/config/locales/simple_form.gl.yml
+++ b/config/locales/simple_form.gl.yml
@@ -27,20 +27,21 @@ gl:
         phrase: Concordará independentemente das maiúsculas ou avisos de contido no toot
         scopes: A que APIs terá acceso a aplicación. Si selecciona un ámbito de alto nivel, non precisa seleccionar elementos individuais.
         setting_aggregate_reblogs: Non mostrar novas promocións de toots que foron promocionados recentemente (só afecta a promocións recén recibidas)
-        setting_default_language: Pódese detectar automáticamente o idioma dos seus toots, mais non sempre é preciso
+        setting_default_sensitive: Medios sensibles marcados como ocultos por defecto e móstranse cun click
         setting_display_media_default: Ocultar medios marcados como sensibles
         setting_display_media_hide_all: Ocultar sempre os medios
         setting_display_media_show_all: Mostrar sempre os medios marcados como sensibles
         setting_hide_network: Non se mostrará no seu perfil quen a segue e quen a está a seguir
         setting_noindex: Afecta ao seu perfil público e páxinas de estado
         setting_show_application: A aplicación que está a utilizar para enviar toots mostrarase na vista detallada do toot
-        setting_theme: Afecta ao aspecto de Mastodon en calquer dispositivo cando está conectada.
         username: O seu nome de usuaria será único en %{domain}
         whole_word: Se a chave ou frase de paso é só alfanumérica, só se aplicará se concorda a palabra completa
       featured_tag:
         name: 'Podería utilizar algunha de estas:'
       imports:
         data: Ficheiro CSV exportado desde outro servidor Mastodon
+      invite_request:
+        text: Esto axudaranos a revisar a súa aplicación
       sessions:
         otp: 'Introduza o código de doble-factor xerado no aplicativo do seu móbil ou utilice un dos seus códigos de recuperación:'
       user:
@@ -88,6 +89,7 @@ gl:
         otp_attempt: Código de Doble-Factor
         password: Contrasinal
         phrase: Palabra chave ou frase
+        setting_advanced_layout: Activar interface web avanzada
         setting_aggregate_reblogs: Agrupar promocións nas liñas temporais
         setting_auto_play_gif: Reprodución automática de GIFs animados
         setting_boost_modal: Pedir confirmación antes de promocionar
@@ -118,15 +120,19 @@ gl:
         must_be_follower: Bloquear as notificacións de non-seguidoras
         must_be_following: Bloquea as notificacións de personas que non segue
         must_be_following_dm: Bloquea as mensaxes directas de personas que non segue
+      invite_request:
+        text: Por que quere unirse?
       notification_emails:
         digest: Enviar correos con resumos
         favourite: Enviar un correo cando alguén marca como favorita unha das súas publicacións
         follow: Enviar un correo cando alguén a segue
         follow_request: Enviar un correo cando alguén solicita seguila
         mention: Enviar un correo cando alguén a menciona
+        pending_account: Enviar correo-e cando unha nova conta precisa revisión
         reblog: Enviar un correo cando alguén promociona a súa mensaxe
         report: Enviar un correo cando se envíe un novo informe
     'no': Non
+    recommended: Recomendado
     required:
       mark: "*"
       text: requerido
diff --git a/config/locales/simple_form.he.yml b/config/locales/simple_form.he.yml
index c86498c66..36d7cbf67 100644
--- a/config/locales/simple_form.he.yml
+++ b/config/locales/simple_form.he.yml
@@ -8,7 +8,6 @@ he:
         header: PNG, GIF או JPG. מקסימום %{size}. גודל התמונה יוקטן %{dimensions}px
         locked: מחייב אישור עוקבים באופן ידני. פרטיות ההודעות תהיה עוקבים-בלבד אלא אם יצוין אחרת
         setting_noindex: משפיע על הפרופיל הציבורי שלך ועמודי ההודעות
-        setting_theme: משפיע על המראה של מסטודון בעת החיבור המזוהה מכל מכשיר שהוא.
       imports:
         data: קובץ CSV שיוצא משרת מסטודון אחר
       sessions:
@@ -57,6 +56,5 @@ he:
         reblog: שליחת דוא"ל כשמהדהדים חצרוץ שלך
     'no': לא
     required:
-      mark: "*"
       text: שדה חובה
     'yes': כן
diff --git a/config/locales/simple_form.hr.yml b/config/locales/simple_form.hr.yml
index 4b1d2b1e0..083343307 100644
--- a/config/locales/simple_form.hr.yml
+++ b/config/locales/simple_form.hr.yml
@@ -10,18 +10,15 @@ hr:
         data: CSV fajl izvezen iz druge Mastodon instance
     labels:
       defaults:
-        avatar: Avatar
         confirm_new_password: Potvrdi novu lozinku
         confirm_password: Potvrdi lozinku
         current_password: Trenutna lozinka
         data: Podaci
         display_name: Ime koje ću prikazati
         email: E-mail adresa
-        header: Header
         locale: Jezik
         locked: Učini račun privatnim
         new_password: Nova lozinka
-        note: Bio
         otp_attempt: Dvo-faktorski kod
         password: Lozinka
         setting_auto_play_gif: Automatski pokreni animirane GIFove
@@ -40,6 +37,5 @@ hr:
         reblog: Pošalji mi e-mail kad netko rebloga moj status
     'no': Ne
     required:
-      mark: "*"
       text: traženo
     'yes': Da
diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml
index f36fabda1..c508a5906 100644
--- a/config/locales/simple_form.hu.yml
+++ b/config/locales/simple_form.hu.yml
@@ -8,7 +8,6 @@ hu:
         header: PNG, GIF vagy JPG. Maximum %{size}. Át lesz méretezve %{dimensions} pixelre
         locked: Egyenként engedélyezned kell a követőidet
         setting_noindex: A publikus profilodra és státusz oldalra vonatkozik
-        setting_theme: A bármely eszközről bejelentkezett felület kinézetére vonatkozik.
       imports:
         data: Egy másik Mastodon szerverről exportált CSV fájl
       sessions:
@@ -57,6 +56,5 @@ hu:
         reblog: E-mail küldése amikor valaki reblogolja az állapotod
     'no': Nem
     required:
-      mark: "*"
       text: kötelező
     'yes': Igen
diff --git a/config/locales/simple_form.hy.yml b/config/locales/simple_form.hy.yml
new file mode 100644
index 000000000..c40654016
--- /dev/null
+++ b/config/locales/simple_form.hy.yml
@@ -0,0 +1 @@
+hy:
diff --git a/config/locales/simple_form.id.yml b/config/locales/simple_form.id.yml
index c6da2beff..ba9fbb4e8 100644
--- a/config/locales/simple_form.id.yml
+++ b/config/locales/simple_form.id.yml
@@ -12,18 +12,14 @@ id:
         otp: Masukkan kode dua-faktor dari handphone atau gunakan kode pemulihan anda.
     labels:
       defaults:
-        avatar: Avatar
         confirm_new_password: Konfirmasi kata sandi baru
         confirm_password: Konfirmasi kata sandi
         current_password: Kata sandi sekarang
-        data: Data
         display_name: Nama yang ditampilkan
         email: Alamat e-mail
-        header: Header
         locale: Bahasa
         locked: Buat akun menjadi pribadi
         new_password: Password baru
-        note: Bio
         otp_attempt: Kode dua-faktor
         password: Kata sandi
         setting_boost_modal: Tampilkan dialog konfirmasi dialog sebelum boost
@@ -43,6 +39,5 @@ id:
         reblog: Kirim email saat seseorang mem-boost status anda
     'no': Tidak
     required:
-      mark: "*"
       text: wajib
     'yes': Ya
diff --git a/config/locales/simple_form.io.yml b/config/locales/simple_form.io.yml
index c9fd9899e..4d640fd9a 100644
--- a/config/locales/simple_form.io.yml
+++ b/config/locales/simple_form.io.yml
@@ -26,10 +26,7 @@ io:
         note: Suprizento
         otp_attempt: Dufaktora identigilo
         password: Pasvorto
-        setting_auto_play_gif: Auto-play animated GIFs
-        setting_boost_modal: Show confirmation dialog before boosting
         setting_default_privacy: Videbleso di la mesaji
-        severity: Severity
         type: Tipo di importaco
         username: Uzernomo
       interactions:
@@ -42,8 +39,5 @@ io:
         follow_request: Sendar retpost-mesajo, kande ulu diskonocigas mesajo da tu
         mention: Sendar retpost-mesajo, kande ulu mencionas tu
         reblog: Sendar retpost-mesajo, kande ulu diskonocigas mesajo da tu
-    'no': 'No'
     required:
-      mark: "*"
       text: bezonata
-    'yes': 'Yes'
diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml
index 9061844fe..b832a8035 100644
--- a/config/locales/simple_form.it.yml
+++ b/config/locales/simple_form.it.yml
@@ -27,14 +27,12 @@ it:
         phrase: Il confronto sarà eseguito ignorando minuscole/maiuscole e i content warning
         scopes: A quali API l'applicazione potrà avere accesso. Se selezionate un ambito di alto livello, non c'è bisogno di selezionare quelle singole.
         setting_aggregate_reblogs: Non mostrare nuove condivisioni per toot che sono stati condivisi di recente (ha effetto solo sulle nuove condivisioni)
-        setting_default_language: La lingua dei tuoi toot può essere individuata automaticamente, ma il risultato non è sempre accurato
         setting_display_media_default: Nascondi media segnati come sensibili
         setting_display_media_hide_all: Nascondi sempre tutti i media
         setting_display_media_show_all: Nascondi sempre i media segnati come sensibili
         setting_hide_network: Chi segui e chi segue te non saranno mostrati sul tuo profilo
         setting_noindex: Ha effetto sul tuo profilo pubblico e sulle pagine degli status
         setting_show_application: L'applicazione che usi per pubblicare i toot sarà mostrata nella vista di dettaglio dei tuoi toot
-        setting_theme: Ha effetto sul modo in cui Mastodon verrà visualizzato quando sarai collegato da qualsiasi dispositivo.
         username: Il tuo nome utente sarà unico su %{domain}
         whole_word: Quando la parola chiave o la frase è solo alfanumerica, si applica solo se corrisponde alla parola intera
       featured_tag:
@@ -64,14 +62,12 @@ it:
         warning_preset_id: Usa un avviso preimpostato
       defaults:
         autofollow: Invita a seguire il tuo account
-        avatar: Avatar
         bot: Questo account è un bot
         chosen_languages: Filtra lingue
         confirm_new_password: Conferma nuova password
         confirm_password: Conferma password
         context: Contesti del filtro
         current_password: Password corrente
-        data: Data
         discoverable: Inserisci questo account nella directory
         display_name: Nome visualizzato
         email: Indirizzo email
@@ -86,7 +82,6 @@ it:
         new_password: Nuova password
         note: Biografia
         otp_attempt: Codice due-fattori
-        password: Password
         phrase: Parola chiave o frase
         setting_aggregate_reblogs: Raggruppa condivisioni in timeline
         setting_auto_play_gif: Play automatico GIF animate
@@ -112,8 +107,6 @@ it:
         username: Nome utente
         username_or_email: Nome utente o email
         whole_word: Parola intera
-      featured_tag:
-        name: Hashtag
       interactions:
         must_be_follower: Blocca notifiche da chi non ti segue
         must_be_following: Blocca notifiche dalle persone che non segui
@@ -126,8 +119,6 @@ it:
         mention: Invia email quando qualcuno ti menziona
         reblog: Invia email quando qualcuno da un boost al tuo stato
         report: Manda una mail quando viene inviato un nuovo rapporto
-    'no': 'No'
     required:
-      mark: "*"
       text: richiesto
     'yes': Si
diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml
index fba8bd45f..89f2e7a8d 100644
--- a/config/locales/simple_form.ja.yml
+++ b/config/locales/simple_form.ja.yml
@@ -26,16 +26,14 @@ ja:
         password: 少なくとも8文字は入力してください
         phrase: トゥートの大文字小文字や閲覧注意に関係なく一致
         scopes: アプリの API に許可するアクセス権を選択してください。最上位のスコープを選択する場合、個々のスコープを選択する必要はありません。
-        setting_advanced_layout: 上級者向け UI はカスタマイズ可能な複数のカラムで構成されています
         setting_aggregate_reblogs: 最近ブーストされたトゥートが新たにブーストされても表示しません (設定後受信したものにのみ影響)
-        setting_default_language: トゥートの言語は自動的に検出されますが、必ずしも正確とは限りません
+        setting_default_sensitive: 閲覧注意状態のメディアはデフォルトでは内容が伏せられ、クリックして初めて閲覧できるようになります
         setting_display_media_default: 閲覧注意としてマークされたメディアは隠す
         setting_display_media_hide_all: 全てのメディアを常に隠す
         setting_display_media_show_all: 閲覧注意としてマークされたメディアも常に表示する
         setting_hide_network: フォローとフォロワーの情報がプロフィールページで見られないようにします
         setting_noindex: 公開プロフィールおよび各投稿ページに影響します
         setting_show_application: トゥートするのに使用したアプリがトゥートの詳細ビューに表示されるようになります
-        setting_theme: ログインしている全てのデバイスで適用されるデザインです。
         username: あなたのユーザー名は %{domain} の中で重複していない必要があります
         whole_word: キーワードまたはフレーズが英数字のみの場合、単語全体と一致する場合のみ適用されるようになります
       featured_tag:
@@ -108,7 +106,7 @@ ja:
         setting_hide_network: 繋がりを隠す
         setting_noindex: 検索エンジンによるインデックスを拒否する
         setting_reduce_motion: アニメーションの動きを減らす
-        setting_show_application: トゥートの送信に使用したアプリを開示する
+        setting_show_application: 送信したアプリを開示する
         setting_system_font_ui: システムのデフォルトフォントを使う
         setting_theme: サイトテーマ
         setting_unfollow_modal: フォローを解除する前に確認ダイアログを表示する
@@ -135,7 +133,7 @@ ja:
         reblog: トゥートがブーストされた時にメールで通知する
         report: 通報を受けた時にメールで通知する
     'no': いいえ
+    recommended: おすすめ
     required:
-      mark: "*"
       text: 必須
     'yes': はい
diff --git a/config/locales/simple_form.ka.yml b/config/locales/simple_form.ka.yml
index 6bccb3134..2df3db45b 100644
--- a/config/locales/simple_form.ka.yml
+++ b/config/locales/simple_form.ka.yml
@@ -16,10 +16,8 @@ ka:
         locked: საჭიროებს თქვენ მიერ მიმდევრების ხელით დადასტურებას
         phrase: დამთხვევა მოხდება დიდი და პატარა ასოების ან კონტენტის გაფრთხილების გათვალისწინების გარეშე
         scopes: რომელი აპიებისადმი ექნება აპლიკაციას ცვდომა. თუ არიჩევთ უმთავრეს ფარგლებს, არ დაგჭირდებათ ინდივიდუალურების ამორჩევა.
-        setting_default_language: თქვენი ტუტების ენა შეიძლება დადგინდეს ავტომატურად, მაგრამ ეს არაა ყოველთვის ზუსტი
         setting_hide_network: ვის მიყვებით და ვინ მოგყვებათ არ გამოჩნდება აქ
         setting_noindex: გავლენას ახდენს თქვენს ღია პროფილისა და სტატუსის გვერდებზე
-        setting_theme: გავლენას ახდენს თუ როგორ გამოიყურება მასტოდონი, როდესაც შესული ხართ რომელიმე მოწყობილობიდან.
         whole_word: როდესაც სიტყვა ან ფრაზა მხოლოდ ალფა-ნუმერიკულია, ის დაფიქსირდება თუ ემთხვევა სრულ სიტყვას
       imports:
         data: ცსვ ფაილის ექსპორტი მოხდა მასტოდონის სხვა ინსტანციიდან
@@ -87,6 +85,5 @@ ka:
         reblog: გამოიგზავნოს წერილი როდესაც ვინმე გაზრდის თქვენს სტატუსს
     'no': არა
     required:
-      mark: "*"
       text: აუცილებელი
     'yes': კი
diff --git a/config/locales/simple_form.kk.yml b/config/locales/simple_form.kk.yml
index 0967ef424..1dcc9b127 100644
--- a/config/locales/simple_form.kk.yml
+++ b/config/locales/simple_form.kk.yml
@@ -1 +1 @@
-{}
+kk:
diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml
index ccb7604e1..8147cde5d 100644
--- a/config/locales/simple_form.ko.yml
+++ b/config/locales/simple_form.ko.yml
@@ -26,16 +26,14 @@ ko:
         password: 최소 8글자
         phrase: 툿 내용이나 CW 내용 안에서 대소문자 구분 없이 매칭 됩니다
         scopes: 애플리케이션에 허용할 API들입니다. 최상위 스코프를 선택하면 개별적인 것은 선택하지 않아도 됩니다.
-        setting_advanced_layout: 고급 UI는 여러 개의 커스텀 가능한 컬럼을 제공합니다.
         setting_aggregate_reblogs: 내가 부스트 했던 툿은 새로 부스트 되어도 보여주지 않습니다
-        setting_default_language: 작성한 툿의 언어는 자동으로 인식할 수 있지만, 언제나 정확한 건 아닙니다
+        setting_default_sensitive: 민감한 미디어는 기본적으로 가려져 있으며 클릭해서 볼 수 있습니다
         setting_display_media_default: 민감함으로 설정 된 미디어 가리기
         setting_display_media_hide_all: 항상 모든 미디어를 가리기
         setting_display_media_show_all: 민감함으로 설정 된 미디어를 항상 보이기
         setting_hide_network: 나를 팔로우 하는 사람들과 내가 팔로우 하는 사람들이 내 프로필에 표시되지 않게 합니다
         setting_noindex: 공개 프로필 및 각 툿페이지에 영향을 미칩니다
         setting_show_application: 당신이 툿을 작성하는데에 사용한 앱이 툿의 상세정보에 표시 됩니다
-        setting_theme: 로그인중인 모든 디바이스에 적용되는 디자인입니다.
         username: 당신의 유저네임은 %{domain} 안에서 유일해야 합니다
         whole_word: 키워드가 영문과 숫자로만 이루어 진 경우, 단어 전체에 매칭 되었을 때에만 작동하게 합니다
       featured_tag:
@@ -134,7 +132,7 @@ ko:
         reblog: 누군가 내 툿을 부스트 했을 때 이메일 보내기
         report: 새 신고 등록시 이메일로 알리기
     'no': 아니오
+    recommended: 추천함
     required:
-      mark: "*"
       text: 필수 항목
     'yes': 네
diff --git a/config/locales/simple_form.lt.yml b/config/locales/simple_form.lt.yml
new file mode 100644
index 000000000..6c5cb837a
--- /dev/null
+++ b/config/locales/simple_form.lt.yml
@@ -0,0 +1 @@
+lt:
diff --git a/config/locales/simple_form.lv.yml b/config/locales/simple_form.lv.yml
new file mode 100644
index 000000000..1be0eabc0
--- /dev/null
+++ b/config/locales/simple_form.lv.yml
@@ -0,0 +1 @@
+lv:
diff --git a/config/locales/simple_form.ms.yml b/config/locales/simple_form.ms.yml
new file mode 100644
index 000000000..2925688a0
--- /dev/null
+++ b/config/locales/simple_form.ms.yml
@@ -0,0 +1 @@
+ms:
diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml
index 09bd4e856..58d29ce12 100644
--- a/config/locales/simple_form.nl.yml
+++ b/config/locales/simple_form.nl.yml
@@ -27,14 +27,13 @@ nl:
         phrase: Komt overeen ongeacht hoofd-/kleine letters of tekstwaarschuwingen
         scopes: Tot welke API's heeft de toepassing toegang. Wanneer je een toestemming van het bovenste niveau kiest, hoef je geen individuele toestemmingen meer te kiezen.
         setting_aggregate_reblogs: Geen nieuwe boosts tonen voor toots die recentelijk nog zijn geboost (heeft alleen effect op nieuw ontvangen boosts)
-        setting_default_language: De taal van jouw toots kan automatisch worden gedetecteerd, maar het is niet altijd accuraat
+        setting_default_sensitive: Gevoelige media wordt standaard verborgen en kan met één klik worden getoond
         setting_display_media_default: Als gevoelig gemarkeerde media verbergen
         setting_display_media_hide_all: Media altijd verbergen
         setting_display_media_show_all: Als gevoelig gemarkeerde media altijd verbergen
         setting_hide_network: Wie jij volgt en wie jou volgen wordt niet op jouw profiel getoond
         setting_noindex: Heeft invloed op jouw openbare profiel en toots
         setting_show_application: De toepassing de je gebruikt om te tooten wordt in de gedetailleerde weergave van de toot getoond
-        setting_theme: Heeft invloed op hoe de webapp van Mastodon eruitziet (op elk apparaat waarmee je inlogt).
         username: Jouw gebruikersnaam is uniek op %{domain}
         whole_word: Wanneer het trefwoord of zinsdeel alfanumeriek is, wordt het alleen gefilterd wanneer het hele woord overeenkomt
       featured_tag:
@@ -90,6 +89,7 @@ nl:
         otp_attempt: Tweestaps-aanmeldcode
         password: Wachtwoord
         phrase: Trefwoord of zinsdeel
+        setting_advanced_layout: Geavanceerde webomgeving inschakelen
         setting_aggregate_reblogs: Boosts in tijdlijnen groeperen
         setting_auto_play_gif: Speel geanimeerde GIF's automatisch af
         setting_boost_modal: Vraag voor het boosten van een toot een bevestiging
@@ -132,6 +132,7 @@ nl:
         reblog: Een e-mail versturen wanneer iemand jouw toot heeft geboost
         report: Verstuur een e-mail wanneer een nieuw rapportage is ingediend
     'no': Nee
+    recommended: Aanbevolen
     required:
       mark: "*"
       text: vereist
diff --git a/config/locales/simple_form.no.yml b/config/locales/simple_form.no.yml
index fc339c3f2..9393e37d1 100644
--- a/config/locales/simple_form.no.yml
+++ b/config/locales/simple_form.no.yml
@@ -8,18 +8,15 @@
         header: PNG, GIF eller JPG. Maksimalt %{size}. Vil bli nedskalert til %{dimensions}px
         locked: Krever at du manuelt godkjenner følgere
         setting_noindex: Påvirker din offentlige profil og statussider
-        setting_theme: Påvirker hvordan Mastodon ser ut når du er logget inn fra uansett enhet.
       imports:
         data: CSV-fil eksportert fra en annen Mastodon-instans
       sessions:
         otp: Angi tofaktorkoden fra din telefon eller bruk en av dine gjenopprettingskoder.
     labels:
       defaults:
-        avatar: Avatar
         confirm_new_password: Bekreft nytt passord
         confirm_password: Bekreft passord
         current_password: Nåværende passord
-        data: Data
         display_name: Visningsnavn
         email: E-postadresse
         expires_in: Utløper etter
@@ -57,6 +54,5 @@
         reblog: Send e-post når noen fremhever din status
     'no': Nei
     required:
-      mark: "*"
       text: obligatorisk
     'yes': Ja
diff --git a/config/locales/simple_form.oc.yml b/config/locales/simple_form.oc.yml
index 3efaa34df..e0bfcfef9 100644
--- a/config/locales/simple_form.oc.yml
+++ b/config/locales/simple_form.oc.yml
@@ -27,14 +27,12 @@ oc:
         phrase: Serà pres en compte que siá en majuscula o minuscula o dins un avertiment de contengut sensible
         scopes: A quinas APIs poiràn accedir las aplicacions. Se seleccionatz un encastre de naut nivèl, fa pas mestièr de seleccionar los nivèls mai basses.
         setting_aggregate_reblogs: Mostrar pas los nòus partatges que son estats partejats recentament (afecta pas que los nòus partatges recebuts)
-        setting_default_language: La lenga de vòstres tuts pòt èsser detectada automaticament, mas de còps es pas corrèctament determinada
         setting_display_media_default: Rescondre los mèdias marcats coma sensibles
         setting_display_media_hide_all: Totjorn rescondre los mèdias
         setting_display_media_show_all: Totjorn mostrar los mèdias marcats coma sensibles
         setting_hide_network: Vòstre perfil mostrarà pas los que vos sègon e lo monde que seguètz
         setting_noindex: Aquò es destinat a vòstre perfil public e vòstra pagina d’estatuts
         setting_show_application: Lo nom de l’aplicacion qu’utilizatz per publicar serà mostrat dins la vista detalhada de vòstres tuts
-        setting_theme: Aquò càmbia lo tèma grafic de Mastodon quand sètz connectat qual que siasque lo periferic.
         username: Vòstre nom d’utilizaire serà unic sus %{domain}
         whole_word: Quand lo mot-clau o frasa es solament alfranumeric, serà pas qu’aplicat se correspond al mot complèt
       featured_tag:
@@ -66,7 +64,6 @@ oc:
         warning_preset_id: Utilizar un avertiment predefinit
       defaults:
         autofollow: Convidar a sègre vòstre compte
-        avatar: Avatar
         bot: Aquò es lo compte a un robòt
         chosen_languages: Filtrar las lengas
         confirm_new_password: Confirmacion del nòu senhal
@@ -86,7 +83,6 @@ oc:
         locked: Far venir lo compte privat
         max_uses: Limit d’utilizacions
         new_password: Nòu senhal
-        note: Bio
         otp_attempt: Còdi Two-factor
         password: Senhal
         phrase: Senhal o frasa
@@ -133,6 +129,5 @@ oc:
         report: Enviar un corrièl pels nòus senhalaments
     'no': Non
     required:
-      mark: "*"
       text: requesit
     'yes': Òc
diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml
index 0da8c1063..b74bbc2f5 100644
--- a/config/locales/simple_form.pl.yml
+++ b/config/locales/simple_form.pl.yml
@@ -27,7 +27,7 @@ pl:
         phrase: Zostanie wykryte nawet, gdy znajduje się za ostrzeżeniem o zawartości
         scopes: Wybór API, do których aplikacja będzie miała dostęp. Jeżeli wybierzesz nadrzędny zakres, nie musisz wybierać jego elementów.
         setting_aggregate_reblogs: Nie pokazuj nowych podbić dla wpisów, które zostały niedawno podbite (dotyczy tylko nowo otrzymanych podbić)
-        setting_default_language: Język Twoich wpisów może być wykrywany automatycznie, ale nie zawsze jest to dokładne
+        setting_default_sensitive: Wrażliwe multimedia są domyślnie schowane i mogą być odkryte kliknięciem
         setting_display_media_default: Ukrywaj zawartość oznaczoną jako wrażliwa
         setting_display_media_hide_all: Zawsze oznaczaj zawartość multimedialną jako wrażliwą
         setting_display_media_show_all: Nie ukrywaj zawartości multimedialnej oznaczonej jako wrażliwa
@@ -41,6 +41,8 @@ pl:
         name: 'Sugerujemy użycie jednego z następujących:'
       imports:
         data: Plik CSV wyeksportowany z innego serwera Mastodona
+      invite_request:
+        text: To pomoże nam w recenzji Twojej aplikacji
       sessions:
         otp: 'Wprowadź kod weryfikacji dwuetapowej z telefonu lub wykorzystaj jeden z kodów zapasowych:'
       user:
@@ -88,7 +90,7 @@ pl:
         otp_attempt: Kod uwierzytelnienia dwustopniowego
         password: Hasło
         phrase: Słowo kluczowe lub fraza
-        scopes: Do których API aplikacja będzie miała dostęp. Jeżeli wybierzesz zakres wyższego poziomu, nie musisz zaznaczać bardziej szczegółowych.
+        setting_advanced_layout: Włącz zaawansowany interfejs użytkownika
         setting_aggregate_reblogs: Grupuj podbicia na osiach czasu
         setting_auto_play_gif: Automatycznie odtwarzaj animowane GIFy
         setting_boost_modal: Pytaj o potwierdzenie przed podbiciem
@@ -115,20 +117,24 @@ pl:
         username_or_email: Nazwa użytkownika lub adres e-mail
         whole_word: Całe słowo
       featured_tag:
-        name: Hashtag
+        name: Hasztag
       interactions:
         must_be_follower: Nie wyświetlaj powiadomień od osób, które Cię nie śledzą
         must_be_following: Nie wyświetlaj powiadomień od osób, których nie śledzisz
         must_be_following_dm: Nie wyświetlaj wiadomości bezpośrednich od osób, których nie śledzisz
+      invite_request:
+        text: Czemu chcesz dołączyć?
       notification_emails:
         digest: Wysyłaj podsumowania e-mailem
         favourite: Powiadamiaj mnie e-mailem, gdy ktoś polubi mój wpis
         follow: Powiadamiaj mnie e-mailem, gdy ktoś zacznie mnie śledzić
         follow_request: Powiadamiaj mnie e-mailem, gdy ktoś poprosi o pozwolenie na śledzenie mnie
         mention: Powiadamiaj mnie e-mailem, gdy ktoś o mnie wspomni
+        pending_account: Wyślij e-mail kiedy nowe konto potrzebuje recenzji
         reblog: Powiadamiaj mnie e-mailem, gdy ktoś podbije mój wpis
         report: Powiadamiaj mnie e-mailem, gdy zostanie utworzone nowe zgłoszenie
     'no': Nie
+    recommended: Polecane
     required:
       mark: "*"
       text: pole wymagane
diff --git a/config/locales/simple_form.pt-BR.yml b/config/locales/simple_form.pt-BR.yml
index 734bd21d0..10475e515 100644
--- a/config/locales/simple_form.pt-BR.yml
+++ b/config/locales/simple_form.pt-BR.yml
@@ -27,14 +27,12 @@ pt-BR:
         phrase: Vai coincidir, independente de maiúsculas ou minúsculas, no texto ou no aviso de conteúdo de um toot
         scopes: Quais APIs a aplicação vai ter permissão de acessar. Se você selecionar um escopo de alto nível, você não precisa selecionar individualmente os outros.
         setting_aggregate_reblogs: Não mostrar novos compartilhamentos para toots que foram compartilhados recentemente (afeta somente novos compartilhamentos recebidos)
-        setting_default_language: O idioma de seus toots pode ser detectado automaticamente, mas isso nem sempre é preciso
         setting_display_media_default: Esconder mídia marcada como sensível
         setting_display_media_hide_all: Sempre esconder todas as mídias
         setting_display_media_show_all: Sempre mostrar mídia marcada como sensível
         setting_hide_network: Quem você segue e quem segue você não serão exibidos no seu perfil
         setting_noindex: Afeta seu perfil público e as páginas de suas postagens
         setting_show_application: A aplicação que você usar para enviar seus toots vai aparecer na visão detalhada dos seus toots
-        setting_theme: Afeta a aparência do Mastodon quando em sua conta em qualquer aparelho.
         username: Seu nome de usuário será único em %{domain}
         whole_word: Quando a palavra ou frase é inteiramente alfanumérica, ela será aplicada somente se corresponder a palavra inteira
       featured_tag:
@@ -66,7 +64,6 @@ pt-BR:
         warning_preset_id: Usar um aviso pré-definido
       defaults:
         autofollow: Convite para seguir a sua conta
-        avatar: Avatar
         bot: Esta é uma conta-robô
         chosen_languages: Filtros de idioma
         confirm_new_password: Confirmar nova senha
@@ -86,7 +83,6 @@ pt-BR:
         locked: Trancar conta
         max_uses: Número máximo de usos
         new_password: Nova senha
-        note: Bio
         otp_attempt: Código de autenticação em dois passos
         password: Senha
         phrase: Palavra-chave ou frase
@@ -114,8 +110,6 @@ pt-BR:
         username: Nome de usuário
         username_or_email: Nome de usuário ou e-mail
         whole_word: Palavra inteira
-      featured_tag:
-        name: Hashtag
       interactions:
         must_be_follower: Bloquear notificações de não-seguidores
         must_be_following: Bloquear notificações de pessoas que você não segue
@@ -133,6 +127,5 @@ pt-BR:
         report: Mandar um e-mail quando uma nova denúncia é submetida
     'no': Não
     required:
-      mark: "*"
       text: obrigatório
     'yes': Sim
diff --git a/config/locales/simple_form.pt.yml b/config/locales/simple_form.pt.yml
index 589f5cf5c..bf6381889 100644
--- a/config/locales/simple_form.pt.yml
+++ b/config/locales/simple_form.pt.yml
@@ -27,14 +27,12 @@ pt:
         phrase: Será correspondido independentemente da capitalização ou do aviso de conteúdo duma publicação
         scopes: Quais as APIs a que será concedido acesso. Se escolheres uma abrangência de nível superior, não precisarás de as seleccionar individualmente.
         setting_aggregate_reblogs: Não mostrar novas partilhas que foram partilhadas recentemente (só afecta as novas partilhas)
-        setting_default_language: A língua das tuas publicações pode ser detectada automaticamente, mas isso nem sempre é preciso
         setting_display_media_default: Esconder media marcada como sensível
         setting_display_media_hide_all: Esconder sempre toda a media
         setting_display_media_show_all: Mostrar sempre a media marcada como sensível
         setting_hide_network: Quem tu segues e quem te segue não será mostrado no teu perfil
         setting_noindex: Afecta o teu perfil público e as páginas das tuas publicações
         setting_show_application: A aplicação que tu usas para publicar será mostrada na vista detalhada das tuas publicações
-        setting_theme: Afecta a aparência do Mastodon quando entras na tua conta em qualquer dispositivo.
         username: O teu nome de utilizador será único em %{domain}
         whole_word: Quando a palavra-chave ou expressão-chave é somente alfanumérica, ela só será aplicada se corresponder à palavra completa
       featured_tag:
@@ -112,8 +110,6 @@ pt:
         username: Nome de utilizador
         username_or_email: Nome de utilizador ou e-mail
         whole_word: Palavra completa
-      featured_tag:
-        name: Hashtag
       interactions:
         must_be_follower: Bloquear notificações de não-seguidores
         must_be_following: Bloquear notificações de pessoas que não segues
@@ -128,6 +124,5 @@ pt:
         report: Enviar um e-mail quando um novo relatório é submetido
     'no': Não
     required:
-      mark: "*"
       text: obrigatório
     'yes': Sim
diff --git a/config/locales/simple_form.ro.yml b/config/locales/simple_form.ro.yml
index 757b87204..4df2fe161 100644
--- a/config/locales/simple_form.ro.yml
+++ b/config/locales/simple_form.ro.yml
@@ -27,13 +27,11 @@ ro:
         phrase: Vor fi potrivite indiferent de textul din casetă sau advertismentul unei postări
         scopes: La care API-uri aplicația are nevoie de acces. Dacă selectezi un scop principal nu mai e nevoie să selectezi fiecare sub-scop al acestuia.
         setting_aggregate_reblogs: Nu afișa redistribuirile noi pentru postările care au fost deja recent redistribuite (afectează doar noile redistribuiri primite)
-        setting_default_language: Limba postărilor tale poate fi detectată automat, dar nu este întotdeauna precisă
         setting_display_media_default: Ascunde conținutul media marcat ca sensibil (NSFW)
         setting_display_media_hide_all: Întotdeauna ascunde tot conținutul media
         setting_display_media_show_all: Întotdeauna afișează conținutul media marcat ca sensibil
         setting_hide_network: Pe cine urmărești și cine te urmărește nu vor fi afișați pe profilul tău
         setting_noindex: Afecteazâ profilul tău public și statusurile tale
-        setting_theme: Afecteazâ modul în care arată interfața pe toate dispozitivele pe care ești conectat.
         username: Numele tău de utilizator va fi unic pe %{domain}
         whole_word: Când fraza sau cuvântul este doar alfanumeric, acesta se aplică doar dacă există o potrivire completă
       imports:
@@ -68,7 +66,6 @@ ro:
         confirm_password: Confirmă parola
         context: Contextele filtrului
         current_password: Parola actuală
-        data: Data
         discoverable: Listează acest cont in director
         display_name: Numele afișat
         email: Adresa de e-mail
@@ -117,6 +114,5 @@ ro:
         report: Trimite e-mail când un raport nou este trimis
     'no': Nu
     required:
-      mark: "*"
       text: obligatoriu
     'yes': Da
diff --git a/config/locales/simple_form.ru.yml b/config/locales/simple_form.ru.yml
index 4196076a9..26a73c3c6 100644
--- a/config/locales/simple_form.ru.yml
+++ b/config/locales/simple_form.ru.yml
@@ -27,20 +27,21 @@ ru:
         phrase: Будет сопоставлено независимо от присутствия в тексте или предупреждения о содержании статуса
         scopes: Какие API приложению будет позволено использовать. Если вы выберете самый верхний, нижестоящие будут выбраны автоматически.
         setting_aggregate_reblogs: Не показывать новые продвижения статусов, которые уже были недавно продвинуты (относится только к новым продвижениям)
-        setting_default_language: Язык ваших статусов может быть определён автоматически, но не всегда правильно
+        setting_default_sensitive: Чувствительные медиафайлы скрыты по умолчанию и могут быть показаны по нажатию на них
         setting_display_media_default: Скрывать чувствительные медиафайлы
         setting_display_media_hide_all: Всегда скрывать любые медиафайлы
         setting_display_media_show_all: Всегда показывать чувствительные медиафайлы
         setting_hide_network: Те, на кого вы подписаны и кто подписан на Вас, не будут отображены в вашем профиле
         setting_noindex: Относится к вашему публичному профилю и страницам статусов
         setting_show_application: В окне просмотра вашего статуса будет видно, с какого приложения он был отправлен
-        setting_theme: Влияет на внешний вид Mastodon при выполненном входе в аккаунт.
         username: Ваш юзернейм будет уникальным на %{domain}
         whole_word: Если слово или фраза состоит только из букв и цифр, сопоставление произойдёт только по полному совпадению
       featured_tag:
         name: 'Возможно, вы захотите выбрать из них:'
       imports:
         data: Файл CSV, экспортированный с другого узла Mastodon
+      invite_request:
+        text: Это поможет нам рассмотреть вашу заявку
       sessions:
         otp: 'Введите код двухфакторной аутентификации, сгенерированный в мобильном приложении, или используйте один из ваших кодов восстановления:'
       user:
@@ -88,6 +89,7 @@ ru:
         otp_attempt: Двухфакторный код
         password: Пароль
         phrase: Слово или фраза
+        setting_advanced_layout: Включить многоколоночный интерфейс
         setting_aggregate_reblogs: Группировать продвижения в лентах
         setting_auto_play_gif: Автоматически проигрывать анимированные GIF
         setting_boost_modal: Показывать диалог подтверждения перед продвижением
@@ -118,15 +120,19 @@ ru:
         must_be_follower: Заблокировать уведомления не от подписчиков
         must_be_following: Заблокировать уведомления от людей, на которых вы не подписаны
         must_be_following_dm: Заблокировать личные сообщения от людей, на которых вы не подписаны
+      invite_request:
+        text: Почему вы хотите присоединиться к нам?
       notification_emails:
         digest: Присылать дайджест по e-mail
         favourite: Уведомлять по e-mail, когда кому-то нравится ваш статус
         follow: Уведомлять по e-mail, когда кто-то подписался на вас
         follow_request: Уведомлять по e-mail, когда кто-то запрашивает разрешение на подписку
         mention: Уведомлять по e-mail, когда кто-то упомянул вас
+        pending_account: Отправлять e-mail при наличии новых заявок на присоединение
         reblog: Уведомлять по e-mail, когда кто-то продвинул ваш статус
         report: Уведомлять по e-mail при создании жалобы
     'no': Нет
+    recommended: Рекомендуется
     required:
       mark: "*"
       text: обязательно
diff --git a/config/locales/simple_form.sk.yml b/config/locales/simple_form.sk.yml
index c6de0009d..7e9c0f277 100644
--- a/config/locales/simple_form.sk.yml
+++ b/config/locales/simple_form.sk.yml
@@ -26,16 +26,14 @@ sk:
         password: Zadaj aspoň osem znakov
         phrase: Zhoda sa nájde nezávisle od toho, či je text napísaný, veľkými, alebo malými písmenami, či už v tele, alebo v hlavičke
         scopes: Ktoré API budú povolené aplikácii pre prístup. Ak vyberieš vrcholný stupeň, nemusíš už potom vyberať po jednom.
-        setting_advanced_layout: Pokročilé užívateľské rozhranie sa skladá z viacero prispôsobiteľných stĺpcov
         setting_aggregate_reblogs: Nezobrazuj nové vyzdvihnutia pre príspevky, ktoré už boli len nedávno povýšené (týka sa iba nanovo získaných povýšení)
-        setting_default_language: Jazyk tvojích príspevkov môže byť zistený automaticky, ale nieje to vždy presné
-        setting_display_media_default: Skry médiá označené ako citlivé
+        setting_default_sensitive: Chúlostivé médiá sú štandardne ukryté, a môžu byť zobrazené kliknutím
+        setting_display_media_default: Ukry médiá označené ako citlivé
         setting_display_media_hide_all: Vždy ukry všetky médiá
         setting_display_media_show_all: Stále zobrazuj médiá označené ako citlivé
         setting_hide_network: Koho následuješ, a kto následuje teba, nebude zobrazené na tvojom profile
         setting_noindex: Ovplyvňuje verejný profil a stránky s príspevkami
         setting_show_application: Aplikácia, ktorú používaš na písanie príspevkov, bude zobrazená v podrobnom náhľade jednotlivých tvojích príspevkov
-        setting_theme: Ovplyvňuje ako Mastodon vyzerá pri prihlásení z hociakého zariadenia.
         username: Tvoja prezývka bude unikátna pre server %{domain}
         whole_word: Ak je kľúčové slovo, alebo fráza poskladaná iba s písmen a čísel, bude použité iba ak sa zhoduje s celým výrazom
       featured_tag:
@@ -47,7 +45,7 @@ sk:
       sessions:
         otp: 'Napíš sem dvoj-faktorový kód z telefónu, alebo použi jeden z tvojích obnovovacích kódov:'
       user:
-        chosen_languages: Keď je zaškrtnuté, tak iba príspevky vo vybraných jazykoch budú zobrazené vo verejnej osi
+        chosen_languages: Keď je zaškrtnuté, vo verejnej osi budú zobrazené iba príspevky vo vybraných jazykoch
     labels:
       account:
         fields:
@@ -56,7 +54,7 @@ sk:
       account_warning_preset:
         text: Text predlohy
       admin_account_action:
-        send_email_notification: Oznám užívateľovi cez email
+        send_email_notification: Oznam užívateľovi cez email
         text: Špecifické varovanie
         type: Úkon
         types:
@@ -67,7 +65,6 @@ sk:
         warning_preset_id: Použi varovnú predlohu
       defaults:
         autofollow: Pozvi k následovaniu tvojho profilu
-        avatar: Avatar
         bot: Toto je automatizovaný bot účet
         chosen_languages: Filtruj jazyky
         confirm_new_password: Znovu tvoje nové heslo, pre potvrdenie
@@ -78,14 +75,14 @@ sk:
         discoverable: Zaraď tento účet do databázy profilov
         display_name: Zobrazované meno
         email: Emailová adresa
-        expires_in: Expirovať po
+        expires_in: Expiruj po
         fields: Metadáta profilu
         header: Obrázok v hlavičke
         inbox_url: URL adresa prechodnej schránky
-        irreversible: Zahoď, namiesto skritia
+        irreversible: Zahoď, namiesto ukrytia
         locale: Jazyk rozhrania
         locked: Zamknúť účet
-        max_uses: Maximálne možno použiť
+        max_uses: Najviac možno použiť
         new_password: Nové heslo
         note: O tebe
         otp_attempt: Dvoj-faktorový overovací (2FA) kód
@@ -101,10 +98,10 @@ sk:
         setting_delete_modal: Zobrazuj potvrdzovacie okno pred vymazaním toot-u
         setting_display_media: Zobrazovanie médií
         setting_display_media_default: Štandard
-        setting_display_media_hide_all: Skry všetky
+        setting_display_media_hide_all: Ukry všetky
         setting_display_media_show_all: Ukáž všetky
         setting_expand_spoilers: Stále rozbaľ príspevky označené varovaním o obsahu
-        setting_hide_network: Ukri svoju sieť kontaktov
+        setting_hide_network: Ukry svoju sieť kontaktov
         setting_noindex: Nezaraďuj príspevky do indexu pre vyhľadávče
         setting_reduce_motion: Mierni pohyb pri animáciách
         setting_show_application: Zverejni akú aplikáciu používaš na posielanie príspevkov
@@ -133,6 +130,5 @@ sk:
         report: Zaslať email, ak niekto podá nové nahlásenie
     'no': Nie
     required:
-      mark: "*"
       text: povinné
     'yes': Áno
diff --git a/config/locales/simple_form.sl.yml b/config/locales/simple_form.sl.yml
index 781485864..2e0495551 100644
--- a/config/locales/simple_form.sl.yml
+++ b/config/locales/simple_form.sl.yml
@@ -18,13 +18,11 @@ sl:
         password: Uporabite najmanj 8 znakov
         phrase: Se bo ujemal, ne glede na začetnice v tekstu ali opozorilo o vsebini troba
         scopes: Do katerih API-jev bo imel program dostop. Če izberete obseg najvišje ravni, vam ni treba izbrati posameznih.
-        setting_default_language: Jezik vaših trobov je lahko samodejno zaznan, vendar ni vedno pravilen
         setting_display_media_default: Skrij medij, ki je označen kot občutljiv
         setting_display_media_hide_all: Vedno skrij vse medije
         setting_display_media_show_all: Vedno pokaži medij, ki je označen kot občutljiv
         setting_hide_network: Kogar spremljate in kdo vas spremlja ne bo prikazano na vašem profilu
         setting_noindex: Vpliva na vaš javni profil in na strani s stanjem
-        setting_theme: Vpliva na to, kako izgleda Mastodon, ko ste prijavljeni s katero koli napravo.
         username: Vaše uporabniško ime bo edinstveno na %{domain}
         whole_word: Ko je ključna beseda ali fraza samo alfanumerična, se bo uporabljala le, če se bo ujemala s celotno besedo
       imports:
@@ -59,7 +57,6 @@ sl:
         locked: Zaklenjen račun
         max_uses: Največje število uporabnikov
         new_password: Novo geslo
-        note: Bio
         otp_attempt: Dvofaktorska koda
         password: Geslo
         phrase: Ključna beseda ali fraza
@@ -99,6 +96,5 @@ sl:
         report: Pošlji e-pošto, ko je oddana nova prijava
     'no': Ne
     required:
-      mark: "*"
       text: zahtevano
     'yes': Da
diff --git a/config/locales/simple_form.sq.yml b/config/locales/simple_form.sq.yml
index c3feee575..04ef12c9a 100644
--- a/config/locales/simple_form.sq.yml
+++ b/config/locales/simple_form.sq.yml
@@ -27,14 +27,12 @@ sq:
         phrase: Do të kërkohet përputhje pavarësish se teksti ose sinjalizimi mbi lëndën e një mesazhi është shkruar me të mëdha apo me të vogla
         scopes: Cilat API do të lejohet të përdorë aplikacioni. Nëse përzgjidhni një shkallë të epërme, nuk ju duhet të përzgjidhni individualet një nga një.
         setting_aggregate_reblogs: Mos shfaq përforcime të reja për mesazhe që janë përforcuar tani së fundi (prek vetëm përforcime të marra rishtas)
-        setting_default_language: Gjuha e mesazheve tuaj do të zbulohet vetvetiu, por mund të mos jetë përherë e saktë
         setting_display_media_default: Fshih media me shenjën rezervat
         setting_display_media_hide_all: Fshih përherë krejt mediat
         setting_display_media_show_all: Mediat me shenjën rezervat shfaqi përherë
         setting_hide_network: Cilët ndiqni dhe cilët ju ndjekin nuk do të shfaqen në profilin tuaj
         setting_noindex: Prek faqet e profilit tuaj publik dhe gjendjeve
         setting_show_application: Aplikacioni që përdorni për mesazhe do të shfaqet te pamja e hollësishme për mesazhet tuaj
-        setting_theme: Lidhet me se si duket Mastodon-i kur jeni i futur nga çfarëdo pajisje.
         username: Emri juaj i përdoruesit do të jetë unik në %{domain}
         whole_word: Kur fjalëkyçi ose fraza është vetëm numerike, do të aplikohet vetëm nëse përputhet me krejt fjalën
       featured_tag:
@@ -64,7 +62,6 @@ sq:
         warning_preset_id: Përdor një sinjalizim të paracaktuar
       defaults:
         autofollow: Ftesë për ndjekje të llogarisë tuaj
-        avatar: Avatar
         bot: Kjo është një llogari robot
         chosen_languages: Filtro gjuhë
         confirm_new_password: Ripohoni fjalëkalimin e ri
@@ -112,8 +109,6 @@ sq:
         username: Emër përdoruesi
         username_or_email: Emër përdoruesi ose Email
         whole_word: Krejt fjalën
-      featured_tag:
-        name: Hashtag
       interactions:
         must_be_follower: Blloko njoftime nga jo-ndjekës
         must_be_following: Blloko njoftime nga persona që nuk i ndiqni
@@ -128,6 +123,5 @@ sq:
         report: Dërgo email kur parashtrohet një raportim i ri
     'no': Jo
     required:
-      mark: "*"
       text: e domosdoshme
     'yes': Po
diff --git a/config/locales/simple_form.sr-Latn.yml b/config/locales/simple_form.sr-Latn.yml
index eac64988f..66efa3db8 100644
--- a/config/locales/simple_form.sr-Latn.yml
+++ b/config/locales/simple_form.sr-Latn.yml
@@ -8,14 +8,12 @@ sr-Latn:
         header: PNG, GIF ili JPG. Najviše %{size}. Biće smanjena na %{dimensions}px
         locked: Zahteva da pojedinačno odobrite pratioce
         setting_noindex: Utiče na Vaš javni profil i statusne strane
-        setting_theme: Utiče kako će Mastodont izgledati kada ste prijavljeni sa bilo kog uređaja.
       imports:
         data: CSV fajl izvezen sa druge Mastodont instance
       sessions:
         otp: 'Unesite dvofaktorski kod sa Vašeg telefona ili koristite jedan od kodova za oporavak:'
     labels:
       defaults:
-        avatar: Avatar
         confirm_new_password: Potvrdite novu lozinku
         confirm_password: Potvrdite lozinku
         current_password: Trenutna lozinka
@@ -57,6 +55,5 @@ sr-Latn:
         reblog: Šalji e-poštu kada neko podrži Vaš status
     'no': Ne
     required:
-      mark: "*"
       text: obavezno
     'yes': Da
diff --git a/config/locales/simple_form.sr.yml b/config/locales/simple_form.sr.yml
index 7e3c6685e..a097be5dd 100644
--- a/config/locales/simple_form.sr.yml
+++ b/config/locales/simple_form.sr.yml
@@ -27,13 +27,11 @@ sr:
         phrase: Биће упарена без обзира на велико или мало слово у тексту или упозорења о садржају трубе
         scopes: Којим API-јима ће апликација дозволити приступ. Ако изаберете опсег највишег нивоа, не морате одабрати појединачне.
         setting_aggregate_reblogs: Не показуј нова дељења за трубе које су недавно подељене (утиче само на недавно примљена дељења)
-        setting_default_language: Језик ваших труба може бити аутоматски откривен, али није увек прецизан
         setting_display_media_default: Сакриј медије означене као осетљиве
         setting_display_media_hide_all: Увек сакриј све медије
         setting_display_media_show_all: Увек прикажи медије означене као осетљиве
         setting_hide_network: Кога пратите и ко вас прати неће бити приказано на вашем профилу
         setting_noindex: Утиче на Ваш јавни профил и статусне стране
-        setting_theme: Утиче како ће Мастодонт изгледати када сте пријављени са било ког уређаја.
         username: Ваш надимак ће бити јединствен на %{domain}
         whole_word: Када је кључна реч или фраза искључиво алфанумеричка, биће примењена само ако се подудара са целом речи
       imports:
@@ -122,6 +120,5 @@ sr:
         report: Пошаљи Е-пошту када се поднесе нова пријава
     'no': Не
     required:
-      mark: "*"
       text: обавезно
     'yes': Да
diff --git a/config/locales/simple_form.sv.yml b/config/locales/simple_form.sv.yml
index 62d0b3769..171714ab0 100644
--- a/config/locales/simple_form.sv.yml
+++ b/config/locales/simple_form.sv.yml
@@ -19,10 +19,8 @@ sv:
         locale: Användargränssnittets språk, e-post och push-aviseringar
         locked: Kräver att du manuellt godkänner följare
         password: Använd minst 8 tecken
-        setting_default_language: Språket av dina inlägg kan upptäckas automatiskt, men det är inte alltid rätt
         setting_hide_network: Vem du följer och vilka som följer dig kommer inte att visas på din profilsida
         setting_noindex: Påverkar din offentliga profil och statussidor
-        setting_theme: Påverkar hur Mastodon ser ut oavsett från vilken enhet du är inloggad.
       imports:
         data: CSV-fil som exporteras från en annan Mastodon-instans
       sessions:
@@ -36,13 +34,11 @@ sv:
           value: Innehåll
       defaults:
         autofollow: Bjud in till att följa ditt konto
-        avatar: Avatar
         bot: Detta är ett botkonto
         chosen_languages: Filtrera språk
         confirm_new_password: Bekräfta nytt lösenord
         confirm_password: Bekräfta lösenord
         current_password: Nuvarande lösenord
-        data: Data
         display_name: Visningsnamn
         email: E-postadress
         expires_in: Förfaller efter
@@ -84,6 +80,5 @@ sv:
         reblog: Skicka e-post när någon knuffar din status
     'no': Nej
     required:
-      mark: "*"
       text: obligatorisk
     'yes': Ja
diff --git a/config/locales/simple_form.ta.yml b/config/locales/simple_form.ta.yml
new file mode 100644
index 000000000..4320953ce
--- /dev/null
+++ b/config/locales/simple_form.ta.yml
@@ -0,0 +1 @@
+ta:
diff --git a/config/locales/simple_form.te.yml b/config/locales/simple_form.te.yml
new file mode 100644
index 000000000..34c54f18f
--- /dev/null
+++ b/config/locales/simple_form.te.yml
@@ -0,0 +1 @@
+te:
diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml
index bce5eaac6..a2d430558 100644
--- a/config/locales/simple_form.th.yml
+++ b/config/locales/simple_form.th.yml
@@ -27,14 +27,12 @@ th:
         phrase: จะถูกจับคู่โดยไม่คำนึงถึงตัวอักษรใหญ่เล็กในข้อความหรือคำเตือนเนื้อหาของโพสต์
         scopes: API ใดที่แอปพลิเคชันจะได้รับอนุญาตให้เข้าถึง หากคุณเลือกขอบเขตระดับบนสุด คุณไม่จำเป็นต้องเลือกแต่ละขอบเขต
         setting_aggregate_reblogs: ไม่แสดงการดันใหม่สำหรับโพสต์ที่เพิ่งดัน (มีผลต่อการดันที่ได้รับใหม่เท่านั้น)
-        setting_default_language: สามารถตรวจพบภาษาของโพสต์ของคุณโดยอัตโนมัติ แต่อาจไม่แม่นยำเสมอไป
         setting_display_media_default: ซ่อนสื่อที่ถูกทำเครื่องหมายว่าละเอียดอ่อน
         setting_display_media_hide_all: ซ่อนสื่อทั้งหมดเสมอ
         setting_display_media_show_all: แสดงสื่อที่ถูกทำเครื่องหมายว่าละเอียดอ่อนเสมอ
         setting_hide_network: จะไม่แสดงผู้ที่คุณติดตามและผู้ที่ติดตามคุณในโปรไฟล์ของคุณ
         setting_noindex: มีผลต่อโปรไฟล์สาธารณะและหน้าสถานะของคุณ
         setting_show_application: จะแสดงผลแอปพลิเคชันที่คุณใช้เพื่อโพสต์ในมุมมองโดยละเอียดของโพสต์ของคุณ
-        setting_theme: มีผลต่อลักษณะของ Mastodon เมื่อคุณเข้าสู่ระบบจากอุปกรณ์ใด ๆ
         username: ชื่อผู้ใช้ของคุณจะไม่ซ้ำกันบน %{domain}
         whole_word: เมื่อคำสำคัญหรือวลีมีแค่ตัวอักษรและตัวเลข จะถูกใช้หากตรงกันทั้งคำเท่านั้น
       featured_tag:
@@ -128,6 +126,5 @@ th:
         report: ส่งอีเมลเมื่อมีการส่งรายงานใหม่
     'no': ไม่
     required:
-      mark: "*"
       text: ต้องระบุ
     'yes': ใช่
diff --git a/config/locales/simple_form.tr.yml b/config/locales/simple_form.tr.yml
index 517b38ca5..68b4c24c9 100644
--- a/config/locales/simple_form.tr.yml
+++ b/config/locales/simple_form.tr.yml
@@ -48,6 +48,5 @@ tr:
         reblog: Biri durumumu paylaştığında, bana e-posta gönder
     'no': Hayır
     required:
-      mark: "*"
       text: gerekli
     'yes': Evet
diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml
index 05d57509e..35b20d8a9 100644
--- a/config/locales/simple_form.uk.yml
+++ b/config/locales/simple_form.uk.yml
@@ -45,6 +45,5 @@ uk:
         reblog: Надсилати листа, коли хтось передмухує Ваш статус
     'no': Ні
     required:
-      mark: "*"
       text: обов'язкове
     'yes': Так
diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml
index cfa6840a6..2dbd7d66e 100644
--- a/config/locales/simple_form.zh-CN.yml
+++ b/config/locales/simple_form.zh-CN.yml
@@ -2,21 +2,46 @@
 zh-CN:
   simple_form:
     hints:
+      account_warning_preset:
+        text: 你可以使用嘟文格式,在嘟文中加入 URL、话题标签和提及“@”
+      admin_account_action:
+        send_email_notification: 用户将收到对其帐号上发生的事的解释
+        text_html: 可选。你可以使用嘟文格式。你可以<a href="%{path}">预置警告</a>以节省时间
+        type_html: 用<strong>%{acct}</strong>选择做什么
+        warning_preset_id: 可选。你可以在预置文本末尾添加自定义文本
       defaults:
         autofollow: 通过邀请链接注册的用户将会自动关注你
         avatar: 文件大小限制 %{size},只支持 PNG、GIF 或 JPG 格式。图片分辨率将会压缩至 %{dimensions}px
         bot: 来自这个帐户的绝大多数操作都是自动进行的,并且可能无人监控
+        context: 过滤器的应用场景
         digest: 仅在你长时间未登录,且收到了私信时发送
+        discoverable_html: <a href="%{path}" target="_blank">目录</a> 让大家能根据兴趣和活动寻找用户。需要至少 %{min_followers} 位关注者
+        email: 我们会向你发送一封确认邮件
         fields: 这将会在个人资料页上以表格的形式展示,最多 4 个项目
         header: 文件大小限制 %{size},只支持 PNG、GIF 或 JPG 格式。图片分辨率将会压缩至 %{dimensions}px
+        inbox_url: 从你想要使用的中继的主页上复制 URL
+        irreversible: 已过滤的嘟文会不可逆转地消失,即便移除过滤器之后也一样
         locale: 用户界面、电子邮件和推送通知中使用的语言
         locked: 你需要手动审核所有关注请求
-        setting_default_language: 嘟文语言自动检测的结果有可能不准确(此设置仅影响你的嘟文)
+        password: 至少需要8个字符
+        phrase: 匹配将无视大小写和嘟文的内容警告
+        scopes: 哪些 API 被允许使用。如果你选中了更高一级的范围,就不能单个选中了。
+        setting_aggregate_reblogs: 请不要显示最近已经被转嘟过的转嘟(只会影响新收到的转嘟)
+        setting_default_sensitive: 敏感内容默认隐藏,并在点击后显示
+        setting_display_media_default: 隐藏被标记为敏感内容的媒体
+        setting_display_media_hide_all: 总是隐藏所有媒体
+        setting_display_media_show_all: 总是显示被标记为敏感内容的媒体
         setting_hide_network: 你关注的人和关注你的人将不会在你的个人资料页上展示
         setting_noindex: 此设置会影响到你的公开个人资料以及嘟文页面
-        setting_theme: 此设置会影响到所有已登录设备上 Mastodon 的显示样式
+        setting_show_application: 你用来发表嘟文的应用程序将会在你嘟文的详细内容中显示
+        username: 你的用户名在 %{domain} 上是独特的
+        whole_word: 如果关键词只包含字母和数字,就只会在整个词被匹配时才会套用
+      featured_tag:
+        name: 你可能想要使用以下之一:
       imports:
-        data: 请上传从其他 Mastodon 实例导出的 CSV 文件
+        data: 从其他 Mastodon 服务器导出的 CSV 文件
+      invite_request:
+        text: 这会有助于我们处理你的申请
       sessions:
         otp: 输入你手机应用上生成的双重认证码,或者任意一个恢复代码:
       user:
@@ -26,6 +51,18 @@ zh-CN:
         fields:
           name: 标签
           value: 内容
+      account_warning_preset:
+        text: 预置文本
+      admin_account_action:
+        send_email_notification: 通过邮件提醒此用户
+        text: 内容警告
+        type: 动作
+        types:
+          disable: 禁用
+          none: 忽略
+          silence: 静音
+          suspend: 停用并永久删除账户数据
+        warning_preset_id: 使用预置警告
       defaults:
         autofollow: 让被邀请人关注你的帐户
         avatar: 头像
@@ -33,13 +70,17 @@ zh-CN:
         chosen_languages: 语言过滤
         confirm_new_password: 确认新密码
         confirm_password: 确认密码
+        context: 过滤器场景
         current_password: 当前密码
         data: 数据文件
+        discoverable: 在本站用户资料目录中列出此账户
         display_name: 昵称
         email: 电子邮件地址
         expires_in: 失效时间
         fields: 个人资料附加信息
         header: 个人资料页横幅图片
+        inbox_url: 中继收件箱的 URL
+        irreversible: 放弃而非隐藏
         locale: 界面语言
         locked: 保护你的帐户(锁嘟)
         max_uses: 最大使用次数
@@ -47,15 +88,24 @@ zh-CN:
         note: 简介
         otp_attempt: 双重认证代码
         password: 密码
+        phrase: 关键词
+        setting_advanced_layout: 启用高级 web 界面
+        setting_aggregate_reblogs: 在时间线中合并转嘟
         setting_auto_play_gif: 自动播放 GIF 动画
         setting_boost_modal: 在转嘟前询问我
         setting_default_language: 发布语言
         setting_default_privacy: 嘟文默认可见范围
         setting_default_sensitive: 总是将我发送的媒体文件标记为敏感内容
         setting_delete_modal: 在删除嘟文前询问我
+        setting_display_media: 媒体展示
+        setting_display_media_default: 默认
+        setting_display_media_hide_all: 隐藏全部
+        setting_display_media_show_all: 显示全部
+        setting_expand_spoilers: 始终展开具有内容警告的嘟文
         setting_hide_network: 隐藏你的社交网络
         setting_noindex: 禁止搜索引擎建立索引
         setting_reduce_motion: 降低过渡动画效果
+        setting_show_application: 展示你用来发嘟的应用
         setting_system_font_ui: 使用系统默认字体
         setting_theme: 站点主题
         setting_unfollow_modal: 在取消关注前询问我
@@ -63,19 +113,26 @@ zh-CN:
         type: 导入数据类型
         username: 用户名
         username_or_email: 用户名或电子邮件地址
+        whole_word: 整个词条
+      featured_tag:
+        name: 话题标签
       interactions:
         must_be_follower: 屏蔽来自未关注我的用户的通知
         must_be_following: 屏蔽来自我未关注的用户的通知
         must_be_following_dm: 屏蔽来自我未关注的用户的私信
+      invite_request:
+        text: 你为什么想要加入?
       notification_emails:
         digest: 发送摘要邮件
         favourite: 当有用户收藏了我的嘟文时,发送电子邮件提醒我
         follow: 当有用户关注我时,发送电子邮件提醒我
         follow_request: 当有用户向我发送关注请求时,发送电子邮件提醒我
         mention: 当有用户在嘟文中提及我时,发送电子邮件提醒我
+        pending_account: 在有账户需要审核时,发送电子邮件提醒我
         reblog: 当有用户转嘟了我的嘟文时,发送电子邮件提醒我
+        report: 在提交新举报时,发送电子邮件提醒我
     'no': 否
+    recommended: 推荐
     required:
-      mark: "*"
       text: 必填
     'yes': 是
diff --git a/config/locales/simple_form.zh-HK.yml b/config/locales/simple_form.zh-HK.yml
index e28f935c2..2cb2d75b2 100644
--- a/config/locales/simple_form.zh-HK.yml
+++ b/config/locales/simple_form.zh-HK.yml
@@ -11,10 +11,8 @@ zh-HK:
         header: 支援 PNG, GIF 或 JPG 圖片,檔案最大為 %{size},會縮裁成 %{dimensions}px
         locale: 使用者介面、電郵和通知的語言
         locked: 你必須人手核准每個用戶對你的關注請求,而你的文章私隱會被預設為「只有關注你的人能看」
-        setting_default_language: 你文章的語言會被自動偵測,但不一定完全準確
         setting_hide_network: 你關注的人和關注你的人將不會在你的個人資料頁上顯示
         setting_noindex: 此設定會影響到你的公開個人資料以及文章頁面
-        setting_theme: 此設置會影響到你從任意設備登入時 Mastodon 的顯示樣式。
       imports:
         data: 自其他服務站匯出的 CSV 檔案
       sessions:
@@ -76,6 +74,5 @@ zh-HK:
         reblog: 當有用戶轉推你的文章時,發電郵通知
     'no': 否
     required:
-      mark: "*"
       text: 必須填寫
     'yes': 是
diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml
index 61d07825c..4da117b61 100644
--- a/config/locales/simple_form.zh-TW.yml
+++ b/config/locales/simple_form.zh-TW.yml
@@ -27,14 +27,12 @@ zh-TW:
         phrase: 無論是嘟文的本文或是內容警告都會被過濾
         scopes: 允許讓應用程式存取的 API。 若您選擇最高階範圍,則無須選擇個別項目。
         setting_aggregate_reblogs: 請勿顯示最近已被轉嘟之嘟文的最新轉嘟(只影響最新收到的嘟文)
-        setting_default_language: 您嘟文的語言可被自動偵測,但不一定每次都準確
         setting_display_media_default: 隱藏標為敏感的媒體
         setting_display_media_hide_all: 總是隱藏所有媒體
         setting_display_media_show_all: 總是顯示標為敏感的媒體
         setting_hide_network: 你關注的人與關注你的人將不會在你的個人資料頁上顯示
         setting_noindex: 會影響您的公開個人資料與嘟文頁面
         setting_show_application: 您用來發嘟文的應用程式將會在您嘟文的詳細檢視顯示
-        setting_theme: 會影響從任何裝置登入所看到的 Mastodon 樣式。
         username: 您的使用者名稱將在 %{domain} 是獨一無二的
         whole_word: 如果關鍵字或詞組僅有字母與數字,則其將只在符合整個單字的時候才會套用
       featured_tag:
@@ -128,6 +126,5 @@ zh-TW:
         report: 當提交新檢舉時傳送電子郵件
     'no': 否
     required:
-      mark: "*"
       text: 必須填寫
     'yes': 是
diff --git a/config/locales/sk.yml b/config/locales/sk.yml
index 778a8f42f..21ce53217 100644
--- a/config/locales/sk.yml
+++ b/config/locales/sk.yml
@@ -7,7 +7,6 @@ sk:
     active_count_after: aktívni
     active_footnote: Mesačne aktívnych užívateľov (MAU)
     administered_by: 'Správcom je:'
-    api: API
     apps: Aplikácie
     apps_platforms: Uživaj Mastodon z iOSu, Androidu a iných platforiem
     browse_directory: Prehľadávaj databázu profilov, filtruj podľa záujmov
@@ -29,26 +28,14 @@ sk:
     see_whats_happening: Pozoruj, čo sa deje
     server_stats: 'Serverové štatistiky:'
     source_code: Zdrojový kód
-    status_count_after:
-      few: príspevkov
-      one: príspevok
-      other: príspevky
     status_count_before: Ktorí napísali
     tagline: Následuj kamarátov, a objavuj nových
     terms: Podmienky užívania
-    user_count_after:
-      few: užívateľov
-      one: užívateľ
-      other: užívatelia
     user_count_before: Domov pre
     what_is_mastodon: Čo je Mastodon?
   accounts:
     choices_html: "%{name}vé voľby:"
     follow: Následuj
-    followers:
-      few: Sledovateľov
-      one: Sledovateľ
-      other: Sledovatelia
     following: Následujem
     joined: Pridal/a sa v %{date}
     last_active: naposledy aktívny
@@ -61,16 +48,11 @@ sk:
     people_who_follow: Ľudia sledujúci %{name}
     pin_errors:
       following: Musíš už následovať toho človeka, ktorého si praješ zviditeľniť
-    posts:
-      few: Príspevkov
-      one: Príspevok
-      other: Príspevky
     posts_tab_heading: Príspevky
     posts_with_replies: Príspevky s odpoveďami
     reserved_username: Prihlasovacie meno je vyhradené
     roles:
       admin: Správca
-      bot: Bot
       moderator: Moderátor
     unavailable: Profil nieje dostupný
     unfollow: Prestaň sledovať
@@ -107,11 +89,10 @@ sk:
       display_name: Ukáž meno
       domain: Doména
       edit: Uprav
-      email: Email
       email_status: Stav emailu
       enable: Povoľ
       enabled: Povolený
-      feed_url: URL adresa časovej osi
+      feed_url: adresa časovej osi
       followers: Sledujúci
       followers_url: URL adresa sledujúcich
       follows: Sledovania
@@ -185,7 +166,6 @@ sk:
       unsubscribe: Prestaň odoberať
       username: Prezývka
       warn: Varuj
-      web: Web
     action_logs:
       actions:
         assigned_to_self_report: "%{name}pridelil/a hlásenie užívateľa %{target}sebe"
@@ -226,9 +206,9 @@ sk:
       copy: Kopíruj
       copy_failed_msg: Nebolo možné vytvoriť miestnu kópiu tohto emoji
       created_msg: Emoji úspešne vytvorené!
-      delete: Zmazať
-      destroyed_msg: Emojo úspešne zničený!
-      disable: Zakázať
+      delete: Zmaž
+      destroyed_msg: Emoji úspešne zničené!
+      disable: Zakáž
       disabled_msg: Emoji bolo úspešne zakázané
       emoji: Emotikony
       enable: Povoľ
@@ -293,10 +273,6 @@ sk:
         silence: stíšené
         suspend: vylúčené
       show:
-        affected_accounts:
-          few: Je ovplyvnených %{count} účtov v databázi
-          one: Jeden účet v databázi bol ovplyvnený
-          other: "%{count} účty v databáze boli ovplyvnené"
         retroactive:
           silence: Zruš stíšenie všetkých momentálne utíšených účtov z tejto domény
           suspend: Zruš suspendáciu všetkých momentálne ovplyvnených účtov z tejto domény
@@ -319,10 +295,6 @@ sk:
     instances:
       by_domain: Doména
       delivery_available: Je v dosahu doručovania
-      known_accounts:
-        few: "%{count} známych účtov"
-        one: "%{count} známy účet"
-        other: "%{count} známe účty"
       moderation:
         all: Všetky
         limited: Obmedzené
@@ -388,7 +360,7 @@ sk:
       resolved_msg: Hlásenie úspešne vyriešené!
       status: Stav
       title: Hlásenia
-      unassign: Odobrať
+      unassign: Odober
       unresolved: Nevyriešené
       updated_at: Aktualizované
     settings:
@@ -479,7 +451,6 @@ sk:
       confirmed: Potvrdené
       expires_in: Vyprší do
       last_delivery: Posledné doručenie
-      title: WebSub
       topic: Téma
     tags:
       accounts: Účty
@@ -503,9 +474,13 @@ sk:
       body: "%{reporter} nahlásil/a %{target}"
       body_remote: Niekto z %{domain} nahlásil/a %{target}
       subject: Nové hlásenie pre %{instance} (#%{id})
+  appearance:
+    advanced_web_interface: Pokročilé webové rozhranie
+    animations_and_accessibility: Animácie a prístupnosť
+    confirmation_dialogs: Potvrdzovacie dialógy
+    sensitive_content: Chúlostivý obsah
   application_mailer:
-    notification_preferences: Zmeniť e-mailové voľby
-    salutation: "%{name},"
+    notification_preferences: Zmeň emailové voľby
     settings: 'Zmeň emailové voľby: %{link}'
     view: 'Zobraziť:'
     view_profile: Zobraz profil
@@ -533,9 +508,6 @@ sk:
     migrate_account: Presúvam sa na iný účet
     migrate_account_html: Ak si želáš presmerovať tento účet na nejaký iný, môžeš si to <a href="%{path}">nastaviť tu</a>.
     or_log_in_with: Alebo prihlás s
-    providers:
-      cas: CAS
-      saml: SAML
     register: Zaregistruj sa
     resend_confirmation: Zašli potvrdzujúce pokyny znovu
     reset_password: Obnov heslo
@@ -582,10 +554,6 @@ sk:
     explanation: Pátraj po užívateľoch podľa ich záujmov
     explore_mastodon: Prebádaj %{title}
     how_to_enable: Momentálne niesi zaradený/á do verejnej profilovej databázy. Prihlásiť sa môžeš nižšie. Použi haštagy vo svojom biografickom popise na profile, ak chceš byť uvedený/á aj pod konkrétnými haštagmi!
-    people:
-      few: "%{count} ľudia"
-      one: "%{count} človek"
-      other: "%{count} ľudia"
   errors:
     '403': Nemáš povolenie pre zobrazenie tejto stránky.
     '404': Stránka ktorú hľadáš nieje tu.
@@ -607,7 +575,6 @@ sk:
       request: Vyžiadaj si tvoj archív
       size: Veľkosť
     blocks: Blokujete
-    csv: CSV
     domain_blocks: Blokované domény
     follows: Následujete
     lists: Zoznamy
@@ -641,10 +608,6 @@ sk:
     changes_saved_msg: Zmeny boli úspešne uložené!
     copy: Kopíruj
     save_changes: Ulož zmeny
-    validation_errors:
-      few: Niečo ešte stále nieje v poriadku! Prosím skontroluj všetky %{count} chyby
-      one: Niečo nieje úplne v poriadku! Prosím skontroluj danú chybu
-      other: Niečo ešte stále nieje v poriadku! Prosím skontroluj všetky %{count} nižšie uvedené pochybenia
   imports:
     modes:
       merge: Spoj dohromady
@@ -673,10 +636,6 @@ sk:
     expires_in_prompt: Nikdy
     generate: Vygeneruj
     invited_by: 'Bol/a si pozvaný/á užívateľom:'
-    max_uses:
-      few: "%{count} použitia"
-      one: jedno použitie
-      other: "%{count} použití"
     max_uses_prompt: Bez obmedzení
     prompt: Vygeneruj a zdieľaj linky s ostatnými, aby mali umožnený prístup k tomuto serveru
     table:
@@ -702,14 +661,6 @@ sk:
       action: Zobraziť všetky notifikácie
       body: Tu nájdete krátky súhrn správ ktoré ste zmeškali od svojej poslednj návštevi od %{since}
       mention: "%{name} ťa spomenul/a v:"
-      new_followers_summary:
-        few: Tiež si získal/a %{count} nových následovateľov za tú dobu čo si bol/a preč. Yay!
-        one: Tiež si získal/a jedného nového následovateľa zatiaľ čo si bol/a preč. Yay!
-        other: Tiež si získal/a %{count} nových následovateľov za tú dobu čo si bol/a preč. Yay!
-      subject:
-        few: "%{count} nové notifikácie od tvojej poslednej návštevy \U0001F418"
-        one: "1 nové oboznámenie od tvojej poslednej návštevy \U0001F418"
-        other: "%{count} nových oboznámení od tvojej poslednej návštevy \U0001F418"
       title: Zatiaľ čo si bol/a preč…
     favourite:
       body: 'Tvoj príspevok bol uložený medzi obľúbené užívateľa %{name}:'
@@ -733,22 +684,11 @@ sk:
       body: 'Tvoj príspevok bol vyzdvihnutý užívateľom %{name}:'
       subject: "%{name} vyzdvihli tvoj príspevok"
       title: Novo vyzdvyhnuté
-  number:
-    human:
-      decimal_units:
-        format: "%n%u"
-        units:
-          billion: B
-          million: M
-          quadrillion: Q
-          thousand: K
-          trillion: T
   pagination:
     newer: Novšie
     next: Ďalšie
     older: Staršie
     prev: Predchádzajúce
-    truncate: "&hellip;"
   polls:
     errors:
       already_voted: V tejto ankete si už hlasoval/a
@@ -760,10 +700,7 @@ sk:
       too_few_options: musí mať viac ako jednu položku
       too_many_options: nemôže zahŕňať viac ako %{max} položiek
   preferences:
-    languages: Jazyky
     other: Ostatné
-    publishing: Publikovanie
-    web: Web
   remote_follow:
     acct: Napíš svoju prezývku@doménu z ktorej chceš následovať
     missing_resource: Nemožno nájsť potrebnú presmerovaciu adresu k tvojmu účtu
@@ -793,40 +730,26 @@ sk:
     activity: Najnovšia aktivita
     browser: Prehliadač
     browsers:
-      alipay: Alipay
       blackberry: RIM Blackberry
       chrome: Google Chrome
-      edge: Microsoft Edge
-      electron: Electron
       firefox: Mozilla Firefox
       generic: Neznámy prehliadač
-      ie: Internet Explorer
-      micro_messenger: MicroMessenger
       nokia: Nokia Ovi Browser
-      opera: Opera
       otter: Prehliadač Otter
-      phantom_js: PhantomJS
       qq: QQ Prehliadač
       safari: Apple Safari
-      uc_browser: UCBrowser
       weibo: Sina/Tencent Weibo
     current_session: Aktuálna sezóna
     description: "%{browser} na %{platform}"
     explanation: Tieto sú prehliadače ktoré sú teraz prihlásené na tvoj Mastodon účet.
     ip: IP adresa
     platforms:
-      adobe_air: Adobe Air
-      android: Android
-      blackberry: Blackberry
       chrome_os: Google ChromeOS
-      firefox_os: Firefox OS
       ios: Apple iOS
       linux: GNU/Linux
       mac: MacOSX
       other: neznáma platforma
       windows: Microsoft Windows
-      windows_mobile: Windows Mobile
-      windows_phone: Windows Phone
     revoke: Zamietni
     revoke_success: Sezóna úspešne zamietnutá
     title: Sezóny
@@ -852,20 +775,8 @@ sk:
   statuses:
     attached:
       description: 'Priložené: %{attached}'
-      image:
-        few: "%{count} obrázky"
-        one: "%{count} obrázok"
-        other: "%{count} obrázkov"
-      video:
-        few: "%{count} videá"
-        one: "%{count} video"
-        other: "%{count} videí"
     boosted_from_html: Povýšené od %{acct_link}
     content_warning: 'Varovanie o obsahu: %{warning}'
-    disallowed_hashtags:
-      few: 'obsahoval nepovolené haštagy: %{tags}'
-      one: 'obsahoval nepovolený haštag: %{tags}'
-      other: 'obsahoval nepovolené haštagy: %{tags}'
     language_detection: Zisti automaticky
     open_in_web: Otvor v okne na webe
     over_character_limit: limit %{max} znakov bol presiahnutý
@@ -875,10 +786,6 @@ sk:
       private: Neverejné príspevky nemôžu byť pripnuté
       reblog: Vyzdvihnutie sa nedá pripnúť
     poll:
-      total_votes:
-        few: "%{count} hlas(y)ov"
-        one: "%{count} hlas"
-        other: "%{count} hlas(y)ov"
       vote: Hlasuj
     show_more: Ukáž viac
     sign_in_to_participate: Prihlás sa pre zapojenie do diskusie
@@ -908,7 +815,7 @@ sk:
       V dobrej viere robíme všetko preto, aby bol prístup k tímto príspevkom vymedzený iba pre oprávnených používateľov, ale môže sa stať, že iné servery v tomto ohľade zlyhajú. Preto je dôležité prezrieť si a zhodnotiť, na aké servery patria tvoji následovatelia. V nastaveniach si môžeš zapnúť voľbu ručne povoľovať a odmietať nových následovateľov.
       <em>Prosím maj na pamäti, že správcovia tvojho, aj vzdialeného obdŕžiavajúceho servera majú možnosť vidieť dané príspevky a správy, ale aj, že obdŕžitelia týchto správ si ich môzu odfotiť, skopírovať, alebo ich inak zdieľať. <em>Nezdieľaj žiadne nebezpečné, alebo ohrozujúce správy pomocou Mastodonu!</em></li>
 
-       <li><em>IPky a iné metadáta</em>: Keď sa prihlásiš, zaznamenáva sa IP adresa z ktorej si sa prihlásil/a, takisto ako aj názov tvojho prehliadača. Všetky zaznamenané sezóny sú pre teba dostupné na konktolu, alebo na zamietnutie prístupu v nastaveniach. Posledná použitá IP adresa je uložená až po dobu dvanástich mesiacov. Môžeme si tiež ponechať serverové záznamy, ktoré obsahujú IP adresu každej požiadavky na tento server.</li>
+      <li><em>IPky a iné metadáta</em>: Keď sa prihlásiš, zaznamenáva sa IP adresa z ktorej si sa prihlásil/a, takisto ako aj názov tvojho prehliadača. Všetky zaznamenané sezóny sú pre teba dostupné na konktolu, alebo na zamietnutie prístupu v nastaveniach. Posledná použitá IP adresa je uložená až po dobu dvanástich mesiacov. Môžeme si tiež ponechať serverové záznamy, ktoré obsahujú IP adresu každej požiadavky na tento server.</li>
       </ul>
 
       <hr class="spacer" />
@@ -917,9 +824,9 @@ sk:
 
       <p>Hociktorá z informácií, ktoré sú o tebe zozbierané, môže byť použité následujúcimi spôsobmi:</p>
       <ul>
-        <li>Pre zabezpečenie základného fungovania Mastodonu. Narábať s užívateľským obsahom iných, ako aj prispievať svoj vlastný obsah, možeš len keď si prihlásený/á. Môžeš napríklad následovať iných ľudí, aby si potom videl/a ich príspevky v rámci svojej osobne prispôsobenej domácej osi.</li>
-        <li>Pre lepšie moderovanie komunity sa napríklad môže tvoja IP adresa porovnať s ostatnými už známimi adresami, aby bolo možné zistiť, či nedochádza napríklad k obchádzaniu pravidiel vylúčenia, aleb k iným porušeniam zásad.</li>
-        <li>Emailová adresa, ktorú poskytneš, môže byť použitá na zasielanie informácií, oboznámení keď ostatní užívatelia interaktujú s tvojím obsahom, alebo na posielanie správ, odpovedí na otázky a iné požiadavky.</li>
+      <li>Pre zabezpečenie základného fungovania Mastodonu. Narábať s užívateľským obsahom iných, ako aj prispievať svoj vlastný obsah, možeš len keď si prihlásený/á. Môžeš napríklad následovať iných ľudí, aby si potom videl/a ich príspevky v rámci svojej osobne prispôsobenej domácej osi.</li>
+      <li>Pre lepšie moderovanie komunity sa napríklad môže tvoja IP adresa porovnať s ostatnými už známimi adresami, aby bolo možné zistiť, či nedochádza napríklad k obchádzaniu pravidiel vylúčenia, aleb k iným porušeniam zásad.</li>
+      <li>Emailová adresa, ktorú poskytneš, môže byť použitá na zasielanie informácií, oboznámení keď ostatní užívatelia interaktujú s tvojím obsahom, alebo na posielanie správ, odpovedí na otázky a iné požiadavky.</li>
       </ul>
     title: Podmienky užívania, a pravidlá súkromia pre %{instance}
   themes:
@@ -929,7 +836,6 @@ sk:
   time:
     formats:
       default: "%b %d, %R, %H:%M"
-      month: "%b %Y"
   two_factor_authentication:
     code_hint: Pre potvrdenie teraz zadaj kód vygenerovaný pomocou tvojej overovacej aplikácie
     description_html: Ak povolíš <strong> dvoj-faktorové overovanie</strong>, na prihlásenie potom budeš potrebovať svoj telefón, ktorý vygeneruje prístupové kódy, čo musíš zadať.
diff --git a/config/locales/sl.yml b/config/locales/sl.yml
index 3d99f7708..85e167ca9 100644
--- a/config/locales/sl.yml
+++ b/config/locales/sl.yml
@@ -5,7 +5,6 @@ sl:
     about_mastodon_html: Mastodon je socialno omrežje, ki temelji na odprtih spletnih protokolih in prosti ter odprtokodni programski opremi. Je decentraliziran, kot e-pošta.
     about_this: O Mastodonu
     administered_by: 'Upravlja:'
-    api: API
     apps: Mobilne aplikacije
     contact: Kontakt
     contact_missing: Ni nastavljeno
@@ -64,7 +63,6 @@ sl:
     roles:
       admin: Skrbnik
       bot: Robot
-      moderator: Mod
     unfollow: Prenehaj slediti
   admin:
     account_actions:
@@ -77,7 +75,6 @@ sl:
       destroyed_msg: Moderirana opomba je uspešno uničena!
     accounts:
       are_you_sure: Ali si prepričan?
-      avatar: Avatar
       by_domain: Domena
       change_email:
         changed_msg: E-pošta računa je uspešno spremenjena!
@@ -108,7 +105,6 @@ sl:
       header: Glava
       inbox_url: URl v mapi "Prejeto"
       invited_by: Povabljen od
-      ip: IP
       joined: Pridružil
       location:
         all: Vse
@@ -149,10 +145,8 @@ sl:
       role: Dovoljenja
       roles:
         admin: Skrbnik
-        moderator: Moderator
         staff: Osebje
         user: Uporabnik
-      salmon_url: Salmon URL
       search: Poišči
       shared_inbox_url: URL mape "Prejeto v skupni rabi"
       show:
@@ -323,7 +317,6 @@ sl:
         all: Vse
         available: Razpoložljivo
         expired: Potekel
-        title: Filter
       title: Povabila
     relays:
       add_new: Dodaj nov rele
@@ -386,6 +379,21 @@ sl:
       custom_css:
         desc_html: Spremeni videz z naloženim CSS na vsaki strani
         title: CSS po meri
+  errors:
+    '403': You don't have permission to view this page.
+    '404': The page you are looking for isn't here.
+    '410': The page you were looking for doesn't exist here anymore.
+    '422': 
+    '429': Throttled
+    '500': 
+  invites:
+    expires_in:
+      '1800': 30 minutes
+      '21600': 6 hours
+      '3600': 1 hour
+      '43200': 12 hours
+      '604800': 1 week
+      '86400': 1 day
   statuses:
     pin_errors:
       ownership: Trob nekoga drugega ne more biti pripet
diff --git a/config/locales/sq.yml b/config/locales/sq.yml
index ea36a2189..6cab03332 100644
--- a/config/locales/sq.yml
+++ b/config/locales/sq.yml
@@ -5,11 +5,9 @@ sq:
     about_mastodon_html: Mastodon-i është një rrjet shoqëror i bazuar në protokolle web të hapur dhe në software të lirë, me burim të hapur. Është i decentralizuar, si email-ii.
     about_this: Mbi
     administered_by: 'Administruar nga:'
-    api: API
     apps: Aplikacione për celular
     contact: Kontakt
     contact_missing: I parregulluar
-    contact_unavailable: N/A
     documentation: Dokumentim
     extended_description_html: |
       <h3>Një vend i mirë për rregulla</h3>
@@ -38,7 +36,6 @@ sq:
     joined: U bë pjesë më %{date}
     last_active: aktiv së fundi
     link_verified_on: Pronësia e kësaj lidhjeje qe kontrolluar më %{date}
-    media: Media
     moved_html: "%{name} ka kaluar te %{new_profile_link}:"
     network_hidden: Këto të dhëna nuk mund të kihen
     nothing_here: S’ka gjë këtu!
@@ -54,8 +51,6 @@ sq:
     reserved_username: Emri i përdoruesit është i ruajtur për dikë
     roles:
       admin: Përgjegjës
-      bot: Bot
-      moderator: Mod
     unfollow: Resht së ndjekuri
   admin:
     account_actions:
@@ -68,7 +63,6 @@ sq:
       destroyed_msg: Shënimi i moderimit u asgjësua me sukses!
     accounts:
       are_you_sure: A jeni i sigurt?
-      avatar: Avatar
       by_domain: Përkatësi
       change_email:
         changed_msg: Email-i i llogarisë u ndryshua me sukses!
@@ -88,7 +82,6 @@ sq:
       display_name: Emër në ekran
       domain: Përkatësi
       edit: Përpunojeni
-      email: Email
       email_status: Gjendje email-i
       enable: Aktivizoje
       enabled: E aktivizuar
@@ -99,7 +92,6 @@ sq:
       header: Krye
       inbox_url: URL Mesazhesh të Marrë
       invited_by: Ftuar nga
-      ip: IP
       joined: U bë pjesë
       location:
         all: Krejt
@@ -119,7 +111,7 @@ sq:
       most_recent_activity: Veprimtaria më e freskët
       most_recent_ip: IP-ja më e freskët
       no_limits_imposed: Pa imponim kufijsh
-      not_subscribed: Jo i  pajtuar
+      not_subscribed: Jo i pajtuar
       outbox_url: URL Mesazhesh të Dërguar
       perform_full_suspension: Pezulloje
       profile_url: URL profili
@@ -140,7 +132,6 @@ sq:
       role: Leje
       roles:
         admin: Përgjegjës
-        moderator: Moderator
         staff: Staf
         user: Përdorues
       search: Kërkoni
@@ -160,7 +151,6 @@ sq:
       unsubscribe: Shpajtohuni
       username: Emër përdoruesi
       warn: Sinjalizoje
-      web: Web
     action_logs:
       actions:
         assigned_to_self_report: "%{name} ia kaloi raportimin %{target} në ngarkim vetvetes"
@@ -234,7 +224,6 @@ sq:
       recent_users: Përdorues së fundi
       search: Kërko tekstin e plotë
       single_user_mode: Mënyrë me përdorues të vetëm
-      software: Software
       space: Përdorim hapësire
       title: Pult
       total_users: përdorues gjithsej
@@ -430,8 +419,6 @@ sq:
         nsfw_off: Vëri shenjë si jo rezervat
         nsfw_on: Vëri shenjë si rezervat
       failed_to_execute: S’u arrit të përmbushej
-      media:
-        title: Media
       no_media: S’ka media
       no_status_selected: S’u ndryshua ndonjë gjendje, ngaqë s’u përzgjodh ndonjë e tillë
       title: Gjendje llogarish
@@ -441,13 +428,11 @@ sq:
       confirmed: U ripohua
       expires_in: Skadon më
       last_delivery: Dorëzimi e fundit
-      title: WebSub
       topic: Temë
     tags:
       accounts: Llogari
       hidden: Fshehur
       hide: Fshihe prej drejtorie
-      name: Hashtag
       title: Hashtage
       unhide: Shfaqe në drejtori
       visible: E dukshme
@@ -465,7 +450,6 @@ sq:
       subject: Raport i ri për %{instance} (#%{id})
   application_mailer:
     notification_preferences: Ndryshoni parapëlqime email-i
-    salutation: "%{name},"
     settings: 'Ndryshoni parapëlqime email-i: %{link}'
     view: 'Parje:'
     view_profile: Shihni Profilin
@@ -491,9 +475,6 @@ sq:
     migrate_account: Kaloni në një tjetër llogari
     migrate_account_html: Nëse doni ta ridrejtoni këtë llogari te një tjetër, këtë mund <a href="%{path}">ta formësoni këtu</a>.
     or_log_in_with: Ose bëni hyrjen me
-    providers:
-      cas: CAS
-      saml: SAML
     register: Regjistrohuni
     resend_confirmation: Ridërgo udhëzime ripohimi
     reset_password: Ricaktoni fjalëkalimin
@@ -517,13 +498,9 @@ sq:
       about_x_years: "%{count}v"
       almost_x_years: "%{count}v"
       half_a_minute: Mu tani
-      less_than_x_minutes: "%{count}m"
       less_than_x_seconds: Mu tani
       over_x_years: "%{count}v"
-      x_days: "%{count}d"
-      x_minutes: "%{count}m"
       x_months: "%{count}mj"
-      x_seconds: "%{count}s"
   deletes:
     bad_password_msg: Provë e bukur, trimosha! Fjalëkalim i pasaktë
     confirm_password: Jepni fjalëkalimin tuaj të tanishëm që të verifikohet identiteti juaj
@@ -539,9 +516,6 @@ sq:
     explanation: Zbuloni përdorues bazuar në interesat e tyre
     explore_mastodon: Eksploroni %{title}
     how_to_enable: S’keni zgjedhur të jeni i pranishëm te drejtoria. Mund ta bëni më poshtë. Përdorni te teksti i jetëshkrimit tuaj hashtagë, për t’u përfshirë nën hashtagë specifikë!
-    people:
-      one: "%{count} person"
-      other: "%{count} persona"
   errors:
     '403': S’keni leje të shihni këtë faqe.
     '404': Faqja që po kërkonit, s’gjendet këtu.
@@ -563,7 +537,6 @@ sq:
       request: Kërkoni arkivin tuaj
       size: Madhësi
     blocks: Bllokoni
-    csv: CSV
     domain_blocks: Bllokime përkatësish
     follows: Ndiqni
     lists: Lista
@@ -614,7 +587,6 @@ sq:
       following: Listë ndjekjesh
       muting: Listë heshtimesh
     upload: Ngarkoje
-  in_memoriam_html: In Memoriam.
   invites:
     delete: Çaktivizoje
     expired: Ka skaduar
@@ -688,24 +660,15 @@ sq:
   number:
     human:
       decimal_units:
-        format: "%n%u"
         units:
-          billion: B
-          million: M
           quadrillion: K
-          thousand: K
-          trillion: T
   pagination:
     newer: Më të ri
     next: Pasuesi
     older: Më të vjetër
     prev: I mëparshmi
-    truncate: "&hellip;"
   preferences:
-    languages: Gjuhë
     other: Tjetër
-    publishing: Publikim
-    web: Web
   remote_follow:
     acct: Jepni çiftin tuaj emërpërdoruesi@përkatësi prej të cilit doni që të veprohet
     missing_resource: S’u gjet dot URL-ja e domosdoshme e ridrejtimit për llogarinë tuaj
@@ -735,40 +698,13 @@ sq:
     activity: Veprimtaria e fundit
     browser: Shfletues
     browsers:
-      alipay: Alipay
-      blackberry: Blackberry
-      chrome: Chrome
-      edge: Microsoft Edge
-      electron: Electron
-      firefox: Firefox
       generic: Shfletues i panjohur
-      ie: Internet Explorer
-      micro_messenger: MicroMessenger
       nokia: Shfletues Nokia S40 Ovi
-      opera: Opera
-      otter: Otter
-      phantom_js: PhantomJS
-      qq: QQ Browser
-      safari: Safari
-      uc_browser: UCBrowser
-      weibo: Weibo
     current_session: Sesioni i tanishëm
     description: "%{browser} në %{platform}"
     explanation: Këta janë shfletuesit e futur në këtë çast te llogaria juaj Mastodon.
-    ip: IP
     platforms:
-      adobe_air: Adobe Air
-      android: Android
-      blackberry: Blackberry
-      chrome_os: ChromeOS
-      firefox_os: Firefox OS
-      ios: iOS
-      linux: Linux
-      mac: Mac
       other: platformë e panjohur
-      windows: Windows
-      windows_mobile: Windows Mobile
-      windows_phone: Windows Phone
     revoke: Shfuqizoje
     revoke_success: Sesioni u shfuqizua me sukses
     title: Sesione
@@ -791,9 +727,6 @@ sq:
       image:
         one: "%{count} figurë"
         other: "%{count} figura"
-      video:
-        one: "%{count} video"
-        other: "%{count} video"
     boosted_from_html: Përforcuar nga %{acct_link}
     content_warning: 'Sinjalizim lënde: %{warning}'
     disallowed_hashtags:
@@ -809,7 +742,6 @@ sq:
       reblog: S’mund të fiksohet një përforcim
     show_more: Shfaq më tepër
     sign_in_to_participate: Bëni hyrjen, që të merrni pjesë te biseda
-    title: '%{name}: "%{quote}"'
     visibilities:
       private: Vetëm ndjekësve
       private_long: Shfaqua vetëm ndjekësve
@@ -827,10 +759,10 @@ sq:
       <h3 id="collect">Ç’të dhëna grumbullojmë?</h3>
 
       <ul>
-        <li><em>Të dhëna bazë llogarie</em>: Nëse regjistroheni në këtë shërbyes, mund t’ju kërkohet të jepni një emër përdoruesi, një adresë email dhe një fjalëkalim. Mundet të jepni edhe të dhëna shtesë profili, të tilla si emër në ekran dhe jetëshkrim, dhe të ngarkoni një foto profili dhe figurë kryesh. Emri i përdoruesit, emri për në ekran, jetëshkrimi, fotoja e profilit dhe figura për kryet shfaqen përherë publikisht.</li>
-        <li><em>Postime, ndjekje dhe të tjera të dhëna publike</em>: Lista e personave që ndiqni shfaqet publikisht, po njësoj edhe ajo e ndjekësve tuaj. Kur parashtroni një mesazh, depozitohet data dhe koha, si dhe aplikacioni prej nga u parashtrua mesazhi. Mesazhet mund të përmbajnë bashkëngjitje media, bie fjala, foto dhe video. Postimet publike dhe ato të pashfaqura janë të passhme publikisht. Kur një postim e vini të zgjedhur në profilin tuaj, edhe ky është informacion i passhëm publikisht. Postimet tuaja janë u dërgohen ndjekësve tuaj, në disa raste kjo do të thotë se dërgohen në shërbyes të ndryshëm dhe në ta depozitohen kopje të tyre. Kur fshini postime, edhe kjo u dërgohet ndjekësve tuaj. Veprimi i riblogimit apo i parapëlqimit të një postimi tjetër është përherë publik.</li>
-        <li><em>Postime të drejtpërdrejta dhe ato vetëm për ndjekësit</em>: Krejt postimet depozitohen dhe trajtohen te shërbyesi. Postimet vetëm për ndjekës u dërgohen ndjekësve tuaj të cilët përmenden në to, dhe postimet e drejtpërdrejta u dërgohen vetëm përdoruesve të përmendur në to. Në disa raste kjo do të thotë se dërgohen në shërbyes të ndryshëm dhe në ta depozitohen kopje të tyre. Përpiqemi pa hile të kufizojmë hyrjen në këto postime vetëm të personave të autorizuar, por shërbyesit e tjerë mund të mos bëjnë të njëjtën gjë. Ndaj është e rëndësishme të shqyrtoni shërbyesit pjesë e të cilëve janë ndjekësit tuaj. Te rregullimet mund të përdorni një mundësi për të miratuar ose hedhur poshtë dorazi ndjekës të rinj. <em>Ju lutemi, mbani parasysh se operatorët e shërbyesit dhe cilido shërbyes marrës mund t’i shohin mesazhe të tillë</em>, dhe që marrësit mund të bëjnë për ta foto ekrani, t’i kopjojnë ose t’i rindajnë ato me të tjerët. <em>Mos u jepni të tjerëve të dhëna të rrezikshme përmes Mastodon-it.</em></li>
-        <li><em>IP dhe të tjera tejtëdhëna</em>: Kur bëni hyrjen, regjistrojmë adresën IP prej nga hytë, si dhe emrin e shfletuesit tuaj. Krejt sesionet e hyrjeve janë të shqyrtueshme nga ju dhe shfuqizim, që nga rregullimet. Adresa e fundit IP e përdorur depozitohet për 12 muaj. Mund të mbajmë edhe regjistra shërbyesi të cilët përfshijnë adresën IP të çdo kërkese ndaj shërbyesit tonë.</li>
+      <li><em>Të dhëna bazë llogarie</em>: Nëse regjistroheni në këtë shërbyes, mund t’ju kërkohet të jepni një emër përdoruesi, një adresë email dhe një fjalëkalim. Mundet të jepni edhe të dhëna shtesë profili, të tilla si emër në ekran dhe jetëshkrim, dhe të ngarkoni një foto profili dhe figurë kryesh. Emri i përdoruesit, emri për në ekran, jetëshkrimi, fotoja e profilit dhe figura për kryet shfaqen përherë publikisht.</li>
+      <li><em>Postime, ndjekje dhe të tjera të dhëna publike</em>: Lista e personave që ndiqni shfaqet publikisht, po njësoj edhe ajo e ndjekësve tuaj. Kur parashtroni një mesazh, depozitohet data dhe koha, si dhe aplikacioni prej nga u parashtrua mesazhi. Mesazhet mund të përmbajnë bashkëngjitje media, bie fjala, foto dhe video. Postimet publike dhe ato të pashfaqura janë të passhme publikisht. Kur një postim e vini të zgjedhur në profilin tuaj, edhe ky është informacion i passhëm publikisht. Postimet tuaja janë u dërgohen ndjekësve tuaj, në disa raste kjo do të thotë se dërgohen në shërbyes të ndryshëm dhe në ta depozitohen kopje të tyre. Kur fshini postime, edhe kjo u dërgohet ndjekësve tuaj. Veprimi i riblogimit apo i parapëlqimit të një postimi tjetër është përherë publik.</li>
+      <li><em>Postime të drejtpërdrejta dhe ato vetëm për ndjekësit</em>: Krejt postimet depozitohen dhe trajtohen te shërbyesi. Postimet vetëm për ndjekës u dërgohen ndjekësve tuaj të cilët përmenden në to, dhe postimet e drejtpërdrejta u dërgohen vetëm përdoruesve të përmendur në to. Në disa raste kjo do të thotë se dërgohen në shërbyes të ndryshëm dhe në ta depozitohen kopje të tyre. Përpiqemi pa hile të kufizojmë hyrjen në këto postime vetëm të personave të autorizuar, por shërbyesit e tjerë mund të mos bëjnë të njëjtën gjë. Ndaj është e rëndësishme të shqyrtoni shërbyesit pjesë e të cilëve janë ndjekësit tuaj. Te rregullimet mund të përdorni një mundësi për të miratuar ose hedhur poshtë dorazi ndjekës të rinj. <em>Ju lutemi, mbani parasysh se operatorët e shërbyesit dhe cilido shërbyes marrës mund t’i shohin mesazhe të tillë</em>, dhe që marrësit mund të bëjnë për ta foto ekrani, t’i kopjojnë ose t’i rindajnë ato me të tjerët. <em>Mos u jepni të tjerëve të dhëna të rrezikshme përmes Mastodon-it.</em></li>
+      <li><em>IP dhe të tjera tejtëdhëna</em>: Kur bëni hyrjen, regjistrojmë adresën IP prej nga hytë, si dhe emrin e shfletuesit tuaj. Krejt sesionet e hyrjeve janë të shqyrtueshme nga ju dhe shfuqizim, që nga rregullimet. Adresa e fundit IP e përdorur depozitohet për 12 muaj. Mund të mbajmë edhe regjistra shërbyesi të cilët përfshijnë adresën IP të çdo kërkese ndaj shërbyesit tonë.</li>
       </ul>
 
       <hr class="spacer" />
@@ -840,9 +772,9 @@ sq:
       <p>Cilado prej të dhënave që grumbullojmë prej jush mund të përdoret në rrugët vijuese:</p>
 
       <ul>
-        <li>Për të mundësuar funksionimin bazë të Mastodon-it. Mundeni të ndërveproni me lëndën e personave të tjerë dhe të postoni lëndë tuajën vetëm kur jeni i futur në llogarinë tuaj. Për shembull, mund të ndiqni njerëz të tjerë për të parë postimet e tyre të ndërthurura te rrjedha juaj kohore e përshtatur.</li>
-        <li>Për të ndihmuar moderimin e bashkësisë, për shembull, duke krahasuar adresën tuaj IP me të tjera të njohura, për të përcaktuar shmangie nga dëbime ose cenime të tjera.</li>
-        <li>Adresa email që jepni mund të përdoret për t’ju dërguar informacion, njoftime mbi persona të tjerë që ndërveprojnë me lëndën tuaj ose që ju dërgojnë mesazhe, dhe për t’iu përgjigju pyetjeve dhe/ose kërkesave të tjera.</li>
+      <li>Për të mundësuar funksionimin bazë të Mastodon-it. Mundeni të ndërveproni me lëndën e personave të tjerë dhe të postoni lëndë tuajën vetëm kur jeni i futur në llogarinë tuaj. Për shembull, mund të ndiqni njerëz të tjerë për të parë postimet e tyre të ndërthurura te rrjedha juaj kohore e përshtatur.</li>
+      <li>Për të ndihmuar moderimin e bashkësisë, për shembull, duke krahasuar adresën tuaj IP me të tjera të njohura, për të përcaktuar shmangie nga dëbime ose cenime të tjera.</li>
+      <li>Adresa email që jepni mund të përdoret për t’ju dërguar informacion, njoftime mbi persona të tjerë që ndërveprojnë me lëndën tuaj ose që ju dërgojnë mesazhe, dhe për t’iu përgjigju pyetjeve dhe/ose kërkesave të tjera.</li>
       </ul>
 
       <hr class="spacer" />
@@ -858,8 +790,8 @@ sq:
       <p>Do të përpiqemi pa hile:</p>
 
       <ul>
-        <li>Të mbajmë regjistra shërbyesi që përmbajnë adresën IP të krejt kërkesave te ky shërbyes, sa kohë që regjistra të tillë mbahen, për jo më shumë se 90 ditë.</li>
-        <li>Të mbajmë adresat IP përshoqëruar me përdoruesit e regjistruar, për jo më shumë se 12 muaj.</li>
+      <li>Të mbajmë regjistra shërbyesi që përmbajnë adresën IP të krejt kërkesave te ky shërbyes, sa kohë që regjistra të tillë mbahen, për jo më shumë se 90 ditë.</li>
+      <li>Të mbajmë adresat IP përshoqëruar me përdoruesit e regjistruar, për jo më shumë se 12 muaj.</li>
       </ul>
 
       <p>Mund të kërkoni dhe të shkarkoni një arkiv të lëndës tuaj, përfshi postimet tuaja, bashkëngjitje media, foto profili, dhe figurë kryesh.</p>
@@ -911,7 +843,6 @@ sq:
   time:
     formats:
       default: "%d %b, %Y, %H:%M"
-      month: "%b %Y"
   two_factor_authentication:
     code_hint: Që të bëhet ripohimi, jepni kodin e prodhuar nga aplikacioni juaj i mirëfilltësimeve
     description_html: Nëse aktivizoni <strong>mirëfilltësimin dyfaktorësh</strong>, hyrja do të kërkojë të jeni në zotërim të telefonit tuaj, i cili do të prodhojë kod që duhet ta jepni.
diff --git a/config/locales/sr-Latn.rb b/config/locales/sr-Latn.rb
new file mode 100644
index 000000000..fc2dafc94
--- /dev/null
+++ b/config/locales/sr-Latn.rb
@@ -0,0 +1,3 @@
+require 'rails_i18n/common_pluralizations/romanian'
+
+::RailsI18n::Pluralization::Romanian.with_locale(:'sr-Latn')
diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml
index 2292b6a7f..3310716e0 100644
--- a/config/locales/sr-Latn.yml
+++ b/config/locales/sr-Latn.yml
@@ -6,7 +6,6 @@ sr-Latn:
     about_this: O instanci
     contact: Kontakt
     contact_missing: Nije postavljeno
-    contact_unavailable: N/A
     extended_description_html: |
       <h3>Dobro mesto za pravila</h3>
       <p>Prošireni opis koji još nije postavljen.</p>
@@ -14,21 +13,15 @@ sr-Latn:
     hosted_on: Mastodont hostovan na %{domain}
     learn_more: Saznajte više
     source_code: Izvorni kod
-    status_count_after: statusa
     status_count_before: Koji su napisali
-    user_count_after: korisnika
     user_count_before: Dom za
     what_is_mastodon: Šta je Mastodont?
   accounts:
-    follow: Follow
-    followers: Followers
-    following: Following
     media: Multimedija
     moved_html: "%{name} je pomeren na %{new_profile_link}:"
     nothing_here: Ovde nema ništa!
     people_followed_by: Ljudi koje %{name} prati
     people_who_follow: Ljudi koji prate %{name}
-    posts: Tutovi
     posts_with_replies: Tutovi i odgovori
     reserved_username: Korisničko ime je rezervisano
     roles:
@@ -63,7 +56,6 @@ sr-Latn:
       followers_url: Adresa pratioca
       follows: Praćeni
       inbox_url: Adresa sandučeta
-      ip: IP
       location:
         all: Sve
         local: Lokalne
@@ -87,7 +79,6 @@ sr-Latn:
       promote: Unapredi
       protocol: Protokol
       public: Javno
-      push_subscription_expires: PuSH subscription expires
       redownload: Osveži avatar
       resend_confirmation:
         already_confirmed: Ovaj korisnik je već potvrđen
@@ -98,8 +89,6 @@ sr-Latn:
       resubscribe: Ponovo se pretplati
       role: Ovlašćenja
       roles:
-        admin: Administrator
-        moderator: Moderator
         staff: Osoblje
         user: Korisnik
       salmon_url: Salmon adresa
@@ -187,7 +176,6 @@ sr-Latn:
       show:
         affected_accounts:
           few: Utiče na %{count} naloga u bazi
-          many: Utiče na %{count} naloga u bazi
           one: Utiče na jedan nalog u bazi
           other: Utiče na %{count} naloga u bazi
         retroactive:
@@ -213,7 +201,6 @@ sr-Latn:
         all: Sve
         available: Aktivne
         expired: Istekle
-        title: Filter
       title: Pozivnice
     reports:
       action_taken_by: Akciju izveo
@@ -225,7 +212,6 @@ sr-Latn:
       reported_account: Prijavljeni nalog
       reported_by: Prijavio
       resolved: Rešeni
-      status: Status
       title: Prijave
       unresolved: Nerešeni
     settings:
@@ -278,19 +264,15 @@ sr-Latn:
       title: Statusi naloga
       with_media: Sa multimedijom
     subscriptions:
-      callback_url: Callback URL
       confirmed: Potvrđeno
       expires_in: Ističe za
       last_delivery: Poslednja dostava
-      title: WebSub
-      topic: Topic
     title: Administracija
   admin_mailer:
     new_report:
       body: "%{reporter} je prijavio %{target}"
       subject: Nova prijava za %{instance} (#%{id})
   application_mailer:
-    salutation: "%{name},"
     settings: 'Promeni podešavanja e-pošte: %{link}'
     view: 'Pogledaj:'
   applications:
@@ -328,18 +310,13 @@ sr-Latn:
     title: Zaprati %{acct}
   datetime:
     distance_in_words:
-      about_x_hours: "%{count}h"
       about_x_months: "%{count}mesec"
       about_x_years: "%{count}god"
       almost_x_years: "%{count}god"
       half_a_minute: Upravo sad
-      less_than_x_minutes: "%{count}m"
       less_than_x_seconds: Upravo sad
       over_x_years: "%{count}god"
-      x_days: "%{count}d"
-      x_minutes: "%{count}m"
       x_months: "%{count}mesec"
-      x_seconds: "%{count}s"
   deletes:
     bad_password_msg: Dobar pokušaj, hakeri! Neispravna lozinka
     confirm_password: Unesite trenutnu lozinku da bismo proverili Vaš identitet
@@ -352,9 +329,7 @@ sr-Latn:
     '403': Nemate dozvola da vidite ovu stranu.
     '404': Strana koju ste tražili ne postoji.
     '410': Strana koju ste tražili više ne postoji.
-    '422':
-      content: Security verification failed. Are you blocking cookies?
-      title: Security verification failed
+    '422': 
     '429': Uspored
     '500':
       content: Izvinjavamo se, nešto je pošlo po zlu sa ove strane.
@@ -362,7 +337,6 @@ sr-Latn:
     noscript_html: Da biste koristili Mastodont veb aplikaciju, omogućite JavaScript. U suprotnom, probajte neku od <a href="%{apps_path}">originalnih aplikacija</a> za Mastodont za Vašu platformu.
   exports:
     blocks: Blokirali ste
-    csv: CSV
     follows: Pratite
     mutes: Ućutkali ste
     storage: Multimedijalno skladište
@@ -371,7 +345,6 @@ sr-Latn:
     save_changes: Snimi izmene
     validation_errors:
       few: Nešto nije baš kako treba! Pregledajte %{count} greške ispod
-      many: Nešto nije baš kako treba! Pregledajte %{count} grešaka ispod
       one: Nešto nije baš kako treba! Pregledajte greške ispod
       other: Nešto nije baš kako treba! Pregledajte %{count} grešaka ispod
   imports:
@@ -382,7 +355,6 @@ sr-Latn:
       following: Lista pratilaca
       muting: Lista ućutkanih
     upload: Otpremi
-  in_memoriam_html: In Memoriam.
   invites:
     delete: Deaktiviraj
     expired: Isteklo
@@ -391,12 +363,12 @@ sr-Latn:
       '21600': 6 sati
       '3600': 1 sad
       '43200': 12 sati
+      '604800': 1 week
       '86400': 1 dan
     expires_in_prompt: Nikad
     generate: Generiši
     max_uses:
       few: "%{count} korišćenja"
-      many: "%{count} korišćenja"
       one: 1 korišćenje
       other: "%{count} korišćenja"
     max_uses_prompt: Bez ograničenja
@@ -425,12 +397,10 @@ sr-Latn:
       mention: "%{name} Vas je pomenuo u:"
       new_followers_summary:
         few: Dobili ste %{count} nova pratioca! Sjajno!
-        many: Dobili ste %{count} novih pratioca! Sjajno!
         one: Dobili ste jednog novog pratioca! Jeee!
         other: Dobili ste %{count} novih pratioca! Sjajno!
       subject:
         few: "%{count} nova obaveštenja od poslednje posete \U0001F418"
-        many: "%{count} novih obaveštenja od poslednje posete \U0001F418"
         one: "1 novo obaveštenje od poslednje posete \U0001F418"
         other: "%{count} novih obaveštenja od poslednje posete \U0001F418"
     favourite:
@@ -448,26 +418,11 @@ sr-Latn:
     reblog:
       body: "%{name} Vam je podržao(la) status:"
       subject: "%{name} je podržao(la) Vaš status"
-  number:
-    human:
-      decimal_units:
-        format: "%n%u"
-        units:
-          billion: B
-          million: M
-          quadrillion: Q
-          thousand: K
-          trillion: T
-          unit: ''
   pagination:
     next: Sledeći
     prev: Prethodni
-    truncate: "&hellip;"
   preferences:
-    languages: Jezici
     other: Ostali
-    publishing: Objavljivanje
-    web: Veb
   remote_follow:
     acct: Unesite Vaš korisnik@domen sa koga želite da pratite
     missing_resource: Ne mogu da nađem zahtevanu adresu preusmeravanja za Vaš nalog
@@ -477,32 +432,18 @@ sr-Latn:
     activity: Poslednja aktivnost
     browser: Veb čitač
     browsers:
-      alipay: Alipay
       blackberry: Blekberi
       chrome: Hrom
-      edge: Microsoft Edge
-      firefox: Firefox
       generic: Nepoznati veb čitač
-      ie: Internet Explorer
-      micro_messenger: MicroMessenger
-      nokia: Nokia S40 Ovi Browser
-      opera: Opera
-      phantom_js: PhantomJS
-      qq: QQ Browser
-      safari: Safari
-      uc_browser: UCBrowser
-      weibo: Weibo
     current_session: Trenutna sesija
     description: "%{browser} sa %{platform}"
     explanation: Ovo su trenutno prijavljeni veb čitači na Vaš Mastodont nalog.
-    ip: IP
     platforms:
       adobe_air: Adobe Air-a
       android: Androida
       blackberry: Blekberija
       chrome_os: Hrom OS-a
       firefox_os: Fajerfoks OS-a
-      ios: iOS
       linux: Linuksa
       mac: Mac-a
       other: nepoznate platforme
@@ -533,7 +474,6 @@ sr-Latn:
       private: Tutovi koji nisu javni ne mogu da se prikače
       reblog: Podrška ne može da se prikači
     show_more: Prikaži još
-    title: '%{name}: "%{quote}"'
     visibilities:
       private: Samo pratioci
       private_long: Samo prikaži pratiocima
@@ -549,9 +489,6 @@ sr-Latn:
     title: Uslovi korišćenja i politika privatnosti instance %{instance}
   themes:
     default: Mastodont
-  time:
-    formats:
-      default: "%b %d, %Y, %H:%M"
   two_factor_authentication:
     code_hint: Unesite kod sa Vaše aplikacije za proveru identiteta da potvrdite
     description_html: Ako uključite <strong>dvofaktorsku identifikaciju</strong>, moraćete da imate telefon sa sobom da biste mogli da se prijavite. Telefon će onda generisati tokene za Vašu prijavu.
diff --git a/config/locales/sr.rb b/config/locales/sr.rb
new file mode 100644
index 000000000..86b89a07e
--- /dev/null
+++ b/config/locales/sr.rb
@@ -0,0 +1,3 @@
+require 'rails_i18n/common_pluralizations/romanian'
+
+::RailsI18n::Pluralization::Romanian.with_locale(:sr)
diff --git a/config/locales/sr.yml b/config/locales/sr.yml
index 2bf9001ce..1555fb235 100644
--- a/config/locales/sr.yml
+++ b/config/locales/sr.yml
@@ -5,11 +5,9 @@ sr:
     about_mastodon_html: Мастодон је друштвена мрежа базирана на отвореним протоколима и слободном софтверу отвореног кода. Децентрализована је као што је децентрализована е-пошта.
     about_this: О инстанци
     administered_by: 'Администрирано од стране:'
-    api: API
     apps: Мобилне апликације
     contact: Контакт
     contact_missing: Није постављено
-    contact_unavailable: N/A
     documentation: Документација
     extended_description_html: |
       <h3>Добро место за правила</h3>
@@ -21,14 +19,12 @@ sr:
     source_code: Изворни код
     status_count_after:
       few: статуси
-      many: статуси
       one: статус
       other: статуса
     status_count_before: Који су написали
     terms: Услови коришћења
     user_count_after:
       few: корисници
-      many: корисници
       one: корисник
       other: корисника
     user_count_before: Дом за
@@ -38,7 +34,6 @@ sr:
     follow: Запрати
     followers:
       few: Пратиоци
-      many: Пратиоци
       one: Пратиоц
       other: Пратиоци
     following: Пратим
@@ -55,7 +50,6 @@ sr:
       following: Морате пратити ову особу ако хоћете да потврдите
     posts:
       few: Трубе
-      many: Трубе
       one: Труба
       other: Трубе
     posts_tab_heading: Трубе
@@ -108,7 +102,6 @@ sr:
       header: Заглавље
       inbox_url: Адреса сандучета
       invited_by: Позван од стране
-      ip: IP
       joined: Придружио се
       location:
         all: Све
@@ -278,7 +271,6 @@ sr:
       show:
         affected_accounts:
           few: Утиче на %{count} налога у бази
-          many: Утиче на %{count} налога у бази
           one: Један налог у бази података је под утицајем
           other: Утиче на %{count} налога у бази података
         retroactive:
@@ -304,7 +296,6 @@ sr:
       delivery_available: Достава је доступна
       known_accounts:
         few: "%{count} знаних налога"
-        many: "%{count} знаних налога"
         one: "%{count} знан налог"
         other: "%{count} знаних налога"
       moderation:
@@ -450,12 +441,9 @@ sr:
       title: Статуси налога
       with_media: Са мултимедијом
     subscriptions:
-      callback_url: Callback URL
       confirmed: Потврђено
       expires_in: Истиче за
       last_delivery: Последња достава
-      title: WebSub
-      topic: Topic
     tags:
       accounts: Налози
       hidden: Скривено
@@ -478,7 +466,6 @@ sr:
       subject: Нова пријава за %{instance} (#%{id})
   application_mailer:
     notification_preferences: Промени преференце Е-поште
-    salutation: "%{name},"
     settings: 'Промени подешавања е-поште: %{link}'
     view: 'Погледај:'
     view_profile: Погледај профил
@@ -525,18 +512,14 @@ sr:
     title: Запрати %{acct}
   datetime:
     distance_in_words:
-      about_x_hours: "%{count}h"
       about_x_months: "%{count}месец"
       about_x_years: "%{count}год"
       almost_x_years: "%{count}год"
       half_a_minute: Управо сад
-      less_than_x_minutes: "%{count}m"
       less_than_x_seconds: Управо сад
       over_x_years: "%{count}год"
       x_days: "%{count}д"
-      x_minutes: "%{count}m"
       x_months: "%{count}месец"
-      x_seconds: "%{count}s"
   deletes:
     bad_password_msg: Добар покушај, хакери! Неисправна лозинка
     confirm_password: Унесите тренутну лозинку да бисмо проверили Ваш идентитет
@@ -552,7 +535,6 @@ sr:
     explore_mastodon: Истражи %{title}
     people:
       few: "%{count} људе"
-      many: "%{count} људе"
       one: "%{count} особа/е"
       other: "%{count} људи"
   errors:
@@ -576,7 +558,6 @@ sr:
       request: Затражите Вашу архиву
       size: Величина
     blocks: Блокирали сте
-    csv: CSV
     domain_blocks: Блокови домена
     follows: Пратите
     lists: Листе
@@ -608,7 +589,6 @@ sr:
     save_changes: Сними измене
     validation_errors:
       few: Нешто није баш како треба! Прегледајте %{count} грешке испод
-      many: Нешто није баш како треба! Прегледајте %{count} грешака испод
       one: Нешто није баш како треба! Прегледајте грешке испод
       other: Нешто није баш како треба! Прегледајте %{count} грешака испод
   imports:
@@ -619,7 +599,6 @@ sr:
       following: Листа пратилаца
       muting: Листа ућутканих
     upload: Отпреми
-  in_memoriam_html: In Memoriam.
   invites:
     delete: Деактивирај
     expired: Истекло
@@ -635,7 +614,6 @@ sr:
     invited_by: 'Позвао Вас је:'
     max_uses:
       few: "%{count} коришћења"
-      many: "%{count} коришћења"
       one: 1 коришћење
       other: "%{count} коришћења"
     max_uses_prompt: Без ограничења
@@ -665,12 +643,10 @@ sr:
       mention: "%{name} Вас је поменуо у:"
       new_followers_summary:
         few: Добили сте %{count} нова пратиоца! Сјајно!
-        many: Добили сте %{count} нових пратиоца! Сјајно!
         one: Добили сте једног новог пратиоца! Јеее!
         other: Добили сте %{count} нових пратиоца! Сјајно!
       subject:
         few: "%{count} нова обавештења од последње посете \U0001F418"
-        many: "%{count} нових обавештења од последње посете \U0001F418"
         one: "1 ново обавештење од последње посете \U0001F418"
         other: "%{count} нових обавештења од последње посете \U0001F418"
       title: Док нисте били ту...
@@ -696,28 +672,13 @@ sr:
       body: "%{name} Вам је подржао/ла статус:"
       subject: "%{name} је подржао/ла Ваш статус"
       title: Нова подршка
-  number:
-    human:
-      decimal_units:
-        format: "%n%u"
-        units:
-          billion: B
-          million: M
-          quadrillion: Q
-          thousand: K
-          trillion: T
-          unit: ''
   pagination:
     newer: Новије
     next: Следеће
     older: Старије
     prev: Претходни
-    truncate: "&hellip;"
   preferences:
-    languages: Језици
     other: Остало
-    publishing: Објављивање
-    web: Веб
   remote_follow:
     acct: Унесите Ваш корисник@домен са кога желите да пратите
     missing_resource: Не могу да нађем захтевану адресу преусмеравања за Ваш налог
@@ -764,7 +725,6 @@ sr:
     current_session: Тренутна сесија
     description: "%{browser} са %{platform}"
     explanation: Ово су веб претраживачи који су тренутно пријављени на Ваш Мастодон налог.
-    ip: IP
     platforms:
       adobe_air: Адоб Ер-а
       android: Андроида
@@ -798,19 +758,16 @@ sr:
       description: 'У прилогу: %{attached}'
       image:
         few: "%{count} слика"
-        many: "%{count} слика"
         one: "%{count} слику"
         other: "%{count} слика"
       video:
         few: "%{count} видео записа"
-        many: "%{count} видео записа"
         one: "%{count} видео запис"
         other: "%{count} видео записа"
     boosted_from_html: Подржано од %{acct_link}
     content_warning: 'Упозорење на садржај: %{warning}'
     disallowed_hashtags:
       few: 'садржи забрањене хештегове: %{tags}'
-      many: 'садржи забрањене хештегове: %{tags}'
       one: 'садржи забрањени хештег: %{tags}'
       other: 'садржи забрањене хештегове: %{tags}'
     language_detection: Аутоматскo откривање језика
@@ -823,7 +780,6 @@ sr:
       reblog: Подршка не може да се прикачи
     show_more: Прикажи још
     sign_in_to_participate: Пријавите се да учествујете у разговору
-    title: '%{name}: "%{quote}"'
     visibilities:
       private: Само пратиоци
       private_long: Прикажи само пратиоцима
@@ -841,10 +797,6 @@ sr:
     contrast: Велики контраст
     default: Мастодон
     mastodon-light: Мастодон (светло)
-  time:
-    formats:
-      default: "%b %d, %Y, %H:%M"
-      month: "%b %Y"
   two_factor_authentication:
     code_hint: Да бисте потврдили, унесите код генерисан од стране ваше апликације за потврду идентитета
     description_html: Ако укључите <strong>двофакторску идентификацију</strong>, мораћете да имате телефон са собом да бисте могли да се пријавите. Телефон ће онда генерисати токене за Вашу пријаву.
diff --git a/config/locales/sv.yml b/config/locales/sv.yml
index 91d4c2496..d3d0cb888 100644
--- a/config/locales/sv.yml
+++ b/config/locales/sv.yml
@@ -5,9 +5,9 @@ sv:
     about_mastodon_html: Mastodon är ett socialt nätverk baserat på öppna webbprotokoll och gratis, öppen källkodsprogramvara. Det är decentraliserat som e-post.
     about_this: Om
     administered_by: 'Administreras av:'
+    api: API
     contact: Kontakt
     contact_missing: Inte inställd
-    contact_unavailable: N/A
     extended_description_html: |
       <h3>En bra plats för regler</h3>
       <p>Den utökade beskrivningen har inte konfigurerats ännu.</p>
@@ -15,14 +15,12 @@ sv:
     hosted_on: Mastodon värd på %{domain}
     learn_more: Lär dig mer
     source_code: Källkod
-    status_count_after: statusar
     status_count_before: Som skapat
-    user_count_after: användare
+    terms: Användarvillkor
     user_count_before: Hem till
     what_is_mastodon: Vad är Mastodon?
   accounts:
     follow: Följa
-    followers: Följare
     following: Följer
     media: Media
     moved_html: "%{name} har flyttat till %{new_profile_link}:"
@@ -30,12 +28,9 @@ sv:
     nothing_here: Det finns inget här!
     people_followed_by: Personer som %{name} följer
     people_who_follow: Personer som följer %{name}
-    posts: Toots
     posts_with_replies: Toots med svar
     reserved_username: Användarnamnet är reserverat
     roles:
-      admin: Admin
-      bot: Bot
       moderator: Moderator
     unfollow: Sluta följa
   admin:
@@ -46,7 +41,6 @@ sv:
       destroyed_msg: Modereringsnotering borttagen utan problem!
     accounts:
       are_you_sure: Är du säker?
-      avatar: Avatar
       by_domain: Domän
       change_email:
         changed_msg: E-postadressen har ändrats!
@@ -74,7 +68,6 @@ sv:
       followers_url: Följare URL
       follows: Följs
       inbox_url: Inkorgs URL
-      ip: IP
       location:
         all: Alla
         local: Lokal
@@ -111,7 +104,6 @@ sv:
       role: Behörigheter
       roles:
         admin: Administratör
-        moderator: Moderator
         staff: Personal
         user: Användare
       salmon_url: Lax URL
@@ -171,7 +163,6 @@ sv:
       destroyed_msg: Emojo borttagen utan problem!
       disable: Inaktivera
       disabled_msg: Inaktiverade emoji utan problem
-      emoji: Emoji
       enable: Aktivera
       enabled_msg: Aktiverade den emoji utan problem
       image_hint: PNG upp till 50KB
@@ -259,7 +250,6 @@ sv:
       reported_by: Anmäld av
       resolved: Löst
       resolved_msg: Anmälan har lösts framgångsrikt!
-      status: Status
       title: Anmälningar
       unassign: Otilldela
       unresolved: Olösta
@@ -320,8 +310,6 @@ sv:
         nsfw_off: Markera som ej känslig
         nsfw_on: Markera som känslig
       failed_to_execute: Misslyckades att utföra
-      media:
-        title: Media
       no_media: Ingen media
       title: Kontostatus
       with_media: med media
@@ -330,9 +318,7 @@ sv:
       confirmed: Bekräftad
       expires_in: Utgår om
       last_delivery: Sista leverans
-      title: WebSub
       topic: Ämne
-    title: Administration
   admin_mailer:
     new_report:
       body: "%{reporter} har rapporterat %{target}"
@@ -340,7 +326,6 @@ sv:
       subject: Ny rapport för %{instance} (#%{id})
   application_mailer:
     notification_preferences: Ändra e-postinställningar
-    salutation: "%{name},"
     settings: 'Ändra e-postinställningar: %{link}'
     view: 'Granska:'
     view_profile: Visa profil
@@ -395,7 +380,6 @@ sv:
       less_than_x_minutes: "%{count}min"
       less_than_x_seconds: Just nu
       over_x_years: "%{count}år"
-      x_days: "%{count}d"
       x_minutes: "%{count}min"
       x_months: "%{count}mån"
       x_seconds: "%{count}sek"
@@ -517,28 +501,13 @@ sv:
       body: 'Din status knuffades av %{name}:'
       subject: "%{name} knuffade din status"
       title: Ny knuff
-  number:
-    human:
-      decimal_units:
-        format: "%n%u"
-        units:
-          billion: B
-          million: M
-          quadrillion: Q
-          thousand: K
-          trillion: T
-          unit: " "
   pagination:
     newer: Nyare
     next: Nästa
     older: Äldre
     prev: Tidigare
-    truncate: "&hellip;"
   preferences:
-    languages: Språk
     other: Annat
-    publishing: Publicering
-    web: Webb
   remote_follow:
     acct: Ange ditt användarnamn@domän du vill följa från
     missing_resource: Det gick inte att hitta den begärda omdirigeringsadressen för ditt konto
@@ -552,23 +521,16 @@ sv:
     activity: Senaste aktivitet
     browser: Webbläsare
     browsers:
-      alipay: Alipay
-      blackberry: Blackberry
-      chrome: Chrome
       edge: Microsoft Edge
       electron: Electron
       firefox: Firefox
       generic: Okänd browser
       ie: Internet Explorer
       micro_messenger: MicroMessenger
-      nokia: Nokia S40 Ovi Browser
       opera: Opera
       otter: Otter
       phantom_js: PhantomJS
-      qq: QQ Browser
       safari: Safari
-      uc_browser: UCBrowser
-      weibo: Weibo
     current_session: Nuvarande session
     description: "%{browser} på %{platform}"
     explanation: Detta är inloggade webbläsare på Mastodon just nu.
@@ -584,8 +546,6 @@ sv:
       mac: Mac
       other: okänd plattform
       windows: Windows
-      windows_mobile: Windows Mobile
-      windows_phone: Windows Phone
     revoke: Återkalla
     revoke_success: Sessionen återkallas framgångsrikt
     title: Sessioner
@@ -596,7 +556,6 @@ sv:
     development: Utveckling
     edit_profile: Redigera profil
     export: Exportera data
-    import: Import
     migrate: Kontoflytt
     notifications: Meddelanden
     preferences: Inställningar
@@ -607,9 +566,6 @@ sv:
       image:
         one: "%{count} bild"
         other: "%{count} bilder"
-      video:
-        one: "%{count} video"
-        other: "%{count} videor"
     boosted_from_html: Boosted från %{acct_link}
     content_warning: 'Innehållsvarning: %{warning}'
     disallowed_hashtags:
@@ -624,7 +580,6 @@ sv:
       private: Icke-offentliga toot kan inte fästas
       reblog: Knuffar kan inte fästas
     show_more: Visa mer
-    title: '%{name}: "%{quote}"'
     visibilities:
       private: Endast följare
       private_long: Visa endast till följare
@@ -642,10 +597,10 @@ sv:
       <h3 id="collect">Vilken information samlar vi in?</h3>
 
       <ul>
-        <li><em>Grundläggande kontoinformation</em>: Det användarnamn du väljer, visningsnamn, biografi, avatar/profilbild och bakgrundsbild kommer alltid vara tillgängliga för alla som kan nå webbsidan. </li>
-        <li><em>Inlägg, vem du följer och annan tillgänglig information</em>: Dina följare och de konton du följer är alltid tillgängliga. När du skapar ett nytt inlägg sparas datum och tid för meddelandet, samt vilket program du använde för att skapa inlägget. Detta gäller även bilder och media som inlägg kan innehålla.Både "Publika" och "Olistade" inlägg kan vara tillgängliga för alla som har åtkomst till webbsidan. When you feature a post on your profile, that is also publicly available information. Your posts are delivered to your followers, in some cases it means they are delivered to different servers and copies are stored there. When you delete posts, this is likewise delivered to your followers. The action of reblogging or favouriting another post is always public.</li>
-        <li><em>Direct and followers-only posts</em>: All posts are stored and processed on the server. Followers-only posts are delivered to your followers and users who are mentioned in them, and direct posts are delivered only to users mentioned in them. In some cases it means they are delivered to different servers and copies are stored there. We make a good faith effort to limit the access to those posts only to authorized persons, but other servers may fail to do so. Therefore it's important to review servers your followers belong to. You may toggle an option to approve and reject new followers manually in the settings. <em>Please keep in mind that the operators of the server and any receiving server may view such messages</em>, and that recipients may screenshot, copy or otherwise re-share them. <em>Do not share any dangerous information over Mastodon.</em></li>
-        <li><em>IPs and other metadata</em>: When you log in, we record the IP address you log in from, as well as the name of your browser application. All the logged in sessions are available for your review and revocation in the settings. The latest IP address used is stored for up to 12 months. We also may retain server logs which include the IP address of every request to our server.</li>
+      <li><em>Grundläggande kontoinformation</em>: Det användarnamn du väljer, visningsnamn, biografi, avatar/profilbild och bakgrundsbild kommer alltid vara tillgängliga för alla som kan nå webbsidan. </li>
+      <li><em>Inlägg, vem du följer och annan tillgänglig information</em>: Dina följare och de konton du följer är alltid tillgängliga. När du skapar ett nytt inlägg sparas datum och tid för meddelandet, samt vilket program du använde för att skapa inlägget. Detta gäller även bilder och media som inlägg kan innehålla.Både "Publika" och "Olistade" inlägg kan vara tillgängliga för alla som har åtkomst till webbsidan. When you feature a post on your profile, that is also publicly available information. Your posts are delivered to your followers, in some cases it means they are delivered to different servers and copies are stored there. When you delete posts, this is likewise delivered to your followers. The action of reblogging or favouriting another post is always public.</li>
+      <li><em>Direct and followers-only posts</em>: All posts are stored and processed on the server. Followers-only posts are delivered to your followers and users who are mentioned in them, and direct posts are delivered only to users mentioned in them. In some cases it means they are delivered to different servers and copies are stored there. We make a good faith effort to limit the access to those posts only to authorized persons, but other servers may fail to do so. Therefore it's important to review servers your followers belong to. You may toggle an option to approve and reject new followers manually in the settings. <em>Please keep in mind that the operators of the server and any receiving server may view such messages</em>, and that recipients may screenshot, copy or otherwise re-share them. <em>Do not share any dangerous information over Mastodon.</em></li>
+      <li><em>IPs and other metadata</em>: When you log in, we record the IP address you log in from, as well as the name of your browser application. All the logged in sessions are available for your review and revocation in the settings. The latest IP address used is stored for up to 12 months. We also may retain server logs which include the IP address of every request to our server.</li>
       </ul>
 
       <hr class="spacer" />
@@ -655,9 +610,9 @@ sv:
       <p>Any of the information we collect from you may be used in the following ways:</p>
 
       <ul>
-        <li>To provide the core functionality of Mastodon. You can only interact with other people's content and post your own content when you are logged in. For example, you may follow other people to view their combined posts in your own personalized home timeline.</li>
-        <li>To aid moderation of the community, for example comparing your IP address with other known ones to determine ban evasion or other violations.</li>
-        <li>The email address you provide may be used to send you information, notifications about other people interacting with your content or sending you messages, and to respond to inquiries, and/or other requests or questions.</li>
+      <li>To provide the core functionality of Mastodon. You can only interact with other people's content and post your own content when you are logged in. For example, you may follow other people to view their combined posts in your own personalized home timeline.</li>
+      <li>To aid moderation of the community, for example comparing your IP address with other known ones to determine ban evasion or other violations.</li>
+      <li>The email address you provide may be used to send you information, notifications about other people interacting with your content or sending you messages, and to respond to inquiries, and/or other requests or questions.</li>
       </ul>
 
       <hr class="spacer" />
@@ -673,8 +628,8 @@ sv:
       <p>We will make a good faith effort to:</p>
 
       <ul>
-        <li>Retain server logs containing the IP address of all requests to this server, in so far as such logs are kept, no more than 90 days.</li>
-        <li>Retain the IP addresses associated with registered users no more than 12 months.</li>
+      <li>Retain server logs containing the IP address of all requests to this server, in so far as such logs are kept, no more than 90 days.</li>
+      <li>Retain the IP addresses associated with registered users no more than 12 months.</li>
       </ul>
 
       <p>You can request and download an archive of your content, including your posts, media attachments, profile picture, and header image.</p>
@@ -723,9 +678,6 @@ sv:
     contrast: Hög kontrast
     default: Mastodon
     mastodon-light: Mastodon (ljust)
-  time:
-    formats:
-      default: "%b %d, %Y, %H:%M"
   two_factor_authentication:
     code_hint: Ange koden som genererats av din autentiseringsapp för att bekräfta
     description_html: Om du aktiverar <strong>tvåstegsautentisering</strong> kommer inloggningen kräva att du har din telefon tillgänglig, vilket kommer att generera tokens för dig att uppge.
@@ -762,7 +714,6 @@ sv:
       tip_following: Du följer din servers administratör(er) som standard. För att hitta fler intressanta personer, kolla de lokala och förenade tidslinjerna.
       tip_local_timeline: Den lokala tidslinjen är en störtflodsvy av personer på %{instance}. Det här är dina närmaste grannar!
       tip_mobile_webapp: Om din mobila webbläsare erbjuder dig att lägga till Mastodon till ditt hemskärm kan du få push-meddelanden. Det fungerar som en inbyggd app på många sätt!
-      tips: Tips
       title: Välkommen ombord, %{name}!
   users:
     invalid_email: E-postadressen är ogiltig
diff --git a/config/locales/ta.yml b/config/locales/ta.yml
new file mode 100644
index 000000000..eef06fa7c
--- /dev/null
+++ b/config/locales/ta.yml
@@ -0,0 +1,17 @@
+---
+ta:
+  errors:
+    '403': You don't have permission to view this page.
+    '404': The page you are looking for isn't here.
+    '410': The page you were looking for doesn't exist here anymore.
+    '422': 
+    '429': Throttled
+    '500': 
+  invites:
+    expires_in:
+      '1800': 30 minutes
+      '21600': 6 hours
+      '3600': 1 hour
+      '43200': 12 hours
+      '604800': 1 week
+      '86400': 1 day
diff --git a/config/locales/te.yml b/config/locales/te.yml
index 1dfc87060..d4a2f507d 100644
--- a/config/locales/te.yml
+++ b/config/locales/te.yml
@@ -5,7 +5,6 @@ te:
     about_mastodon_html: మాస్టొడాన్ అనేది ఒక సామాజిక మాధ్యమం. ఇది పూర్తిగా ఉచితం మరియు స్వేచ్ఛా సాఫ్టువేరు. ఈమెయిల్ లాగానే ఇది వికేంద్రీకరించబడినది.
     about_this: గురించి
     administered_by: 'నిర్వహణలో:'
-    api: API
     apps: మొబైల్ యాప్స్
     contact: సంప్రదించండి
     contact_missing: ఇంకా సెట్ చేయలేదు
@@ -96,9 +95,7 @@ te:
       followers: అనుచరులు
       followers_url: అనుచరుల URL
       follows: అనుసరిస్తున్నారు
-      header: Header
       inbox_url: ఇన్ బాక్స్ URL
-      ip: IP
       location:
         all: అన్నీ
         local: లోకల్
@@ -106,7 +103,6 @@ te:
         title: లొకేషన్
       login_status: లాగిన్ స్థితి
       media_attachments: మీడియా అటాచ్మెంట్లు
-      memorialize: Turn into memoriam
       moderation:
         active: యాక్టివ్
         all: అన్నీ
@@ -116,3 +112,18 @@ te:
       moderation_notes: మోడరేషన్ నోట్స్
       most_recent_activity: ఇటీవల యాక్టివిటీ
       most_recent_ip: ఇటీవలి IP
+  errors:
+    '403': You don't have permission to view this page.
+    '404': The page you are looking for isn't here.
+    '410': The page you were looking for doesn't exist here anymore.
+    '422': 
+    '429': Throttled
+    '500': 
+  invites:
+    expires_in:
+      '1800': 30 minutes
+      '21600': 6 hours
+      '3600': 1 hour
+      '43200': 12 hours
+      '604800': 1 week
+      '86400': 1 day
diff --git a/config/locales/th.yml b/config/locales/th.yml
index 2ebd6c7f1..9ef6bc3dd 100644
--- a/config/locales/th.yml
+++ b/config/locales/th.yml
@@ -6,7 +6,6 @@ th:
     active_count_after: ที่ใช้งาน
     active_footnote: ผู้ใช้งานรายเดือน (MAU)
     administered_by: 'ดูแลโดย:'
-    api: API
     apps: แอปสำหรับมือถือ
     apps_platforms: ใช้ Mastodon จาก iOS, Android และแพลตฟอร์มอื่น ๆ
     browse_directory: เรียกดูไดเรกทอรีโปรไฟล์และกรองตามความสนใจ
@@ -26,18 +25,15 @@ th:
     server_stats: 'สถิติเซิร์ฟเวอร์:'
     source_code: โค้ดต้นฉบับ
     status_count_after:
-      one: สถานะ
       other: สถานะ
     status_count_before: ผู้สร้าง
     user_count_after:
-      one: ผู้ใช้
       other: ผู้ใช้
     user_count_before: บ้านของ
     what_is_mastodon: Mastodon คืออะไร?
   accounts:
     follow: ติดตาม
     followers:
-      one: ผู้ติดตาม
       other: ผู้ติดตาม
     following: กำลังติดตาม
     joined: เข้าร่วมเมื่อ %{date}
@@ -49,7 +45,6 @@ th:
     people_followed_by: ผู้คนที่ %{name} ติดตาม
     people_who_follow: ผู้คนที่ติดตาม %{name}
     posts:
-      one: โพสต์
       other: โพสต์
     posts_tab_heading: โพสต์
     posts_with_replies: โพสต์และการตอบกลับ
@@ -97,7 +92,6 @@ th:
       header: ส่วนหัว
       inbox_url: URL กล่องขาเข้า
       invited_by: เชิญโดย
-      ip: IP
       joined: เข้าร่วมเมื่อ
       location:
         all: ทั้งหมด
@@ -135,7 +129,6 @@ th:
         moderator: ผู้ควบคุม
         staff: พนักงาน
         user: ผู้ใช้
-      salmon_url: Salmon URL
       search: ค้นหา
       show:
         created_reports: รายงานที่สร้าง
@@ -213,7 +206,6 @@ th:
         suspend: ระงับอยู่
       show:
         affected_accounts:
-          one: มีผลต่อหนึ่งบัญชีในฐานข้อมูล
           other: มีผลต่อ %{count} บัญชีในฐานข้อมูล
         retroactive:
           silence: เลิกเงียบบัญชีที่มีอยู่ทั้งหมดจากโดเมนนี้
@@ -332,7 +324,6 @@ th:
       confirmed: ยืนยันแล้ว
       expires_in: หมดอายุภายใน
       last_delivery: ส่งล่าสุด
-      title: WebSub
       topic: หัวข้อ
     tags:
       accounts: บัญชี
@@ -362,15 +353,11 @@ th:
     change_password: รหัสผ่าน
     confirm_email: ยืนยันอีเมล
     delete_account: ลบบัญชี
-    didnt_get_confirmation: Didn't receive confirmation instructions?
     forgot_password: ลืมรหัสผ่านของคุณ?
     login: เข้าสู่ระบบ
     logout: ออกจากระบบ
     migrate_account: ย้ายไปยังบัญชีอื่น
     or_log_in_with: หรือเข้าสู่ระบบด้วย
-    providers:
-      cas: CAS
-      saml: SAML
     register: ลงทะเบียน
     resend_confirmation: ส่งขั้นตอนวิธีการยืนยันใหม่อีกครั้ง
     reset_password: ตั้งรหัสผ่านใหม่
@@ -379,7 +366,6 @@ th:
     trouble_logging_in: มีปัญหาในการเข้าสู่ระบบ?
   authorize_follow:
     already_following: คุณกำลังติดตามบัญชีนี้อยู่แล้ว
-    error: Unfortunately, there was an error looking up the remote account
     follow: ติดตาม
     following: 'สำเร็จ! คุณกำลังติดตาม:'
     post_follow:
@@ -424,7 +410,6 @@ th:
       request: ขอการเก็บถาวรของคุณ
       size: ขนาด
     blocks: คุณปิดกั้น
-    csv: CSV
     domain_blocks: การปิดกั้นโดเมน
     follows: คุณติดตาม
     lists: รายการ
@@ -454,15 +439,11 @@ th:
     changes_saved_msg: บันทึกการเปลี่ยนแปลงสำเร็จ!
     copy: คัดลอก
     save_changes: บันทึกการเปลี่ยนแปลง
-    validation_errors:
-      one: Something isn't quite right yet! Please review the error below
-      other: Something isn't quite right yet! Please review %{count} errors below
   imports:
     modes:
       merge: ผสาน
       overwrite: เขียนทับ
     preface: You can import certain data like all the people you are following or blocking into your account on this instance, from files created by an export on another instance.
-    success: Your data was successfully uploaded and will now be processed in due time
     types:
       blocking: รายการปิดกั้น
       following: รายการติดตาม
@@ -495,14 +476,9 @@ th:
   notification_mailer:
     digest:
       action: ดูการแจ้งเตือนทั้งหมด
-      body: Here is a brief summary of the messages you missed since your last visit on %{since}
       mention: "%{name} ได้กล่าวถึงคุณใน:"
       new_followers_summary:
-        one: นอกจากนี้คุณยังมีหนึ่งผู้ติดตามใหม่ขณะที่ไม่อยู่! เย่!
         other: You have gotten %{count} new followers! Amazing!
-      subject:
-        one: "1 new notification since your last visit \U0001F418"
-        other: "%{count} new notifications since your last visit \U0001F418"
     favourite:
       body: 'สถานะของคุณได้รับการชื่นชอบโดย %{name}:'
       subject: "%{name} ได้ชื่นชอบสถานะของคุณ"
@@ -525,28 +501,11 @@ th:
       body: 'สถานะของคุณได้รับการดันโดย %{name}:'
       subject: "%{name} ได้ดันสถานะของคุณ"
       title: การดันใหม่
-  number:
-    human:
-      decimal_units:
-        format: "%n%u"
-        units:
-          billion: B
-          million: M
-          quadrillion: Q
-          thousand: K
-          trillion: T
-          unit: ''
   pagination:
     newer: ใหม่กว่า
     next: ถัดไป
     older: เก่ากว่า
     prev: ก่อนหน้า
-    truncate: "&hellip;"
-  preferences:
-    languages: ภาษา
-    other: อื่น ๆ
-    publishing: การเผยแพร่
-    web: เว็บ
   relationships:
     activity: กิจกรรมบัญชี
     relationship: ความสัมพันธ์
@@ -556,7 +515,6 @@ th:
     status: สถานะบัญชี
   remote_follow:
     acct: ป้อน username@domain ของคุณที่คุณต้องการกระทำจาก
-    missing_resource: Could not find the required redirect URL for your account
     no_account_html: ไม่มีบัญชี? คุณสามารถ <a href='%{sign_up_path}' target='_blank'>ลงทะเบียนที่นี่</a>
     proceed: ดำเนินการต่อเพื่อติดตาม
     prompt: 'คุณกำลังจะติดตาม:'
@@ -577,7 +535,6 @@ th:
   sessions:
     activity: กิจกรรมล่าสุด
     browser: เบราว์เซอร์
-    ip: IP
     revoke: เพิกถอน
   settings:
     authorized_apps: แอปที่ได้รับอนุญาต
@@ -595,33 +552,26 @@ th:
     attached:
       description: 'แนบ: %{attached}'
       image:
-        one: "%{count} ภาพ"
         other: "%{count} ภาพ"
       video:
-        one: "%{count} วิดีโอ"
         other: "%{count} วิดีโอ"
     content_warning: 'คำเตือนเนื้อหา: %{warning}'
     open_in_web: เปิดในเว็บ
-    over_character_limit: character limit of %{max} exceeded
     pin_errors:
       reblog: ไม่สามารถปักหมุดการดัน
     poll:
       total_votes:
-        one: "%{count} การลงคะแนน"
         other: "%{count} การลงคะแนน"
     show_more: แสดงเพิ่มเติม
     sign_in_to_participate: ลงชื่อเข้าเพื่อเข้าร่วมการสนทนา
-    title: '%{name}: "%{quote}"'
     visibilities:
       private: ผู้ติดตามเท่านั้น
       private_long: แสดงต่อผู้ติดตามเท่านั้น
       public: สาธารณะ
       public_long: ทุกคนสามารถเห็น
       unlisted: ไม่อยู่ในรายการ
-      unlisted_long: Everyone can see, but not listed on public timelines
   stream_entries:
     pinned: โพสต์ที่ปักหมุด
-    reblogged: boosted
     sensitive_content: เนื้อหาที่ละเอียดอ่อน
   themes:
     contrast: Mastodon (ความคมชัดสูง)
@@ -630,19 +580,12 @@ th:
   time:
     formats:
       default: "%d %b %Y, %H:%M"
-      month: "%b %Y"
   two_factor_authentication:
-    code_hint: Enter the code generated by your authenticator app to confirm
-    description_html: If you enable <strong>two-factor authentication</strong>, logging in will require you to be in possession of your phone, which will generate tokens for you to enter.
     disable: ปิดใช้งาน
     enable: เปิดใช้งาน
     enabled: เปิดใช้งานการรับรองความถูกต้องด้วยสองปัจจัยแล้ว
     enabled_success: เปิดใช้งานการรับรองความถูกต้องด้วยสองปัจจัยสำเร็จ
     generate_recovery_codes: สร้างรหัสกู้คืน
-    instructions_html: "<strong>Scan this QR code into Google Authenticator or a similiar TOTP app on your phone</strong>. From now on, that app will generate tokens that you will have to enter when logging in."
-    lost_recovery_codes: Recovery codes allow you to regain access to your account if you lose your phone. If you've lost your recovery codes, you can regenerate them here. Your old recovery codes will be invalidated.
-    manual_instructions: 'If you can''t scan the QR code and need to enter it manually, here is the plain-text secret:'
-    recovery_codes_regenerated: Recovery codes successfully regenerated
     recovery_instructions_html: If you ever lose access to your phone, you can use one of the recovery codes below to regain access to your account. Keep the recovery codes safe, for example by printing them and storing them with other important documents.
     setup: ตั้งค่า
     wrong_code: รหัสที่ป้อนไม่ถูกต้อง! เวลาเซิร์ฟเวอร์และเวลาอุปกรณ์ถูกต้องหรือไม่?
diff --git a/config/locales/tr.yml b/config/locales/tr.yml
index e3e27e3ef..3113e7a08 100644
--- a/config/locales/tr.yml
+++ b/config/locales/tr.yml
@@ -5,7 +5,6 @@ tr:
     about_mastodon_html: Mastodon <em>ücretsiz ve açık kaynaklı</em> bir sosyal ağdır. <em>Merkezileştirilmemiş</em> yapısı sayesinde diğer ticari sosyal platformların aksine iletişimininizin tek bir firmada tutulmasının/yönetilmesinin önüne geçer. Güvendiğiniz bir sunucuyu seçerek oradaki kişilerle etkileşimde bulunabilirsiniz. Herkes kendi Mastodon sunucusunu kurabilir ve sorunsuz bir şekilde Mastodon <em>sosyal ağına</em> dahil edebilir.
     about_this: Bu sunucu hakkında
     administered_by: 'Tarafından yönetildi:'
-    api: API
     apps: Mobil uygulamalar
     contact: İletişim
     contact_missing: Ayarlanmadı
@@ -46,15 +45,11 @@ tr:
     people_who_follow: Kullanıcı %{name}'i takip edenler
     pin_errors:
       following: Onaylamak istediğiniz kişiyi zaten takip ediyor olmalısınız
-    posts:
-      one: Toot
-      other: Tootlar
     posts_tab_heading: Tootlar
     posts_with_replies: Tootlar ve yanıtlar
     reserved_username: Kullanıcı adı saklıdır
     roles:
       admin: Yönetici
-      bot: Bot
       moderator: Denetleyici
     unfollow: Takibi bırak
   admin:
@@ -96,7 +91,6 @@ tr:
       header: Üstbilgi
       inbox_url: Gelen kutusu bağlantısı
       invited_by: Tarafından davet edildi
-      ip: IP
       joined: Katıldı
       location:
         all: Hepsi
@@ -155,7 +149,6 @@ tr:
       unsubscribe: Abonelikten çık
       username: Kullanıcı adı
       warn: Uyar
-      web: Web
     action_logs:
       actions:
         confirm_user: "%{name} %{target} kullanıcısının e-posta adresini onayladı"
@@ -165,7 +158,6 @@ tr:
       add_new: Yeni ekle
       created_msg: Domain bloğu şu an işleniyor
       destroyed_msg: Domain bloğu silindi
-      domain: Domain
       new:
         create: Yeni blok oluştur
         hint: Domain bloğu, veri tabanında hesap kayıtlarının oluşturulmasını engellemez, fakat o hesapların üzerine otomatik olarak belirli yönetim metodlarını olarak uygular.
@@ -220,7 +212,6 @@ tr:
       confirmed: Onaylandı
       expires_in: Bitiş Tarihi
       last_delivery: Son gönderim
-      title: WebSub
       topic: Konu
     tags:
       accounts: Hesaplar
@@ -271,9 +262,10 @@ tr:
     '422':
       content: Güvenlik doğrulaması başarısız oldu. Site cookie'lerini engellemiş olabilirsiniz.
       title: Güvenlik doğrulamasu başarısız
+    '429': Throttled
+    '500': 
   exports:
     blocks: Blokladıklarınız
-    csv: CSV
     follows: Takip ettikleriniz
     mutes: Susturduklarınız
     storage: Ortam deposu
@@ -291,6 +283,14 @@ tr:
       following: Takip edilenler listesi
       muting: Susturulanlar listesi
     upload: Yükle
+  invites:
+    expires_in:
+      '1800': 30 minutes
+      '21600': 6 hours
+      '3600': 1 hour
+      '43200': 12 hours
+      '604800': 1 week
+      '86400': 1 day
   media_attachments:
     validations:
       images_and_video: Halihazırda görsel içeren bir gönderiye video ekleyemezsiniz
@@ -320,21 +320,9 @@ tr:
     reblog:
       body: "%{name} durumunuzu boost etti:"
       subject: "%{name} durumunuzu boost etti"
-  number:
-    human:
-      decimal_units:
-        format: "%n%u"
-        units:
-          billion: B
-          million: M
-          quadrillion: Q
-          thousand: K
-          trillion: T
-          unit: ''
   pagination:
     next: Sonraki
     prev: Önceki
-    truncate: "&hellip;"
   remote_follow:
     acct: Takip edeceğiniz kişiyi kullaniciadi@sunuculinki şeklinde giriniz
     missing_resource: Hesabınız için yönlendirme linki bulunamadı
@@ -362,9 +350,6 @@ tr:
   stream_entries:
     reblogged: boost edildi
     sensitive_content: Hassas içerik
-  time:
-    formats:
-      default: "%b %d, %Y, %H:%M"
   two_factor_authentication:
     code_hint: Onaylamak için kimlik doğrulama uygulamanızın oluşturduğu kodu giriniz
     description_html: Eğer <strong>iki-faktörlü kimlik doğrulamayı</strong> aktif ederseniz, giriş yaparken sizin için giriş kodu üreten telefonunuza ihtiyaç duyacaksınız.
diff --git a/config/locales/uk.yml b/config/locales/uk.yml
index a582b2385..e027b6bae 100644
--- a/config/locales/uk.yml
+++ b/config/locales/uk.yml
@@ -5,7 +5,6 @@ uk:
     about_mastodon_html: Mastodon - це <em>вільна</em> соціальна мережа з <em>відкритим вихідним кодом</em>. Вона є <em>децентралізованою</em> альтернативою комерційним платформам, що дозволяє уникнути ризиків монополізації вашого спілкування однією компанією. Виберіть сервер, якому ви довіряєте &mdash; що б ви не вибрали, Ви зможете спілкуватись з усіма іншими. Будь-який користувач може запустити власну інстанцію Mastodon та без проблем брати участь в <em>соціальній мережі</em>.
     about_this: Про цю інстанцію
     administered_by: 'Адміністратор:'
-    api: API
     contact: Зв'язатися
     contact_missing: Не зазначено
     contact_unavailable: Недоступно
@@ -18,15 +17,12 @@ uk:
     learn_more: Дізнатися більше
     privacy_policy: Політика приватності
     source_code: Вихідний код
-    status_count_after: статусів
     status_count_before: Опубліковано
     terms: Правила використання
-    user_count_after: користувачів
     user_count_before: Тут живе
     what_is_mastodon: Що таке Mastodon?
   accounts:
     follow: Підписатися
-    followers: Підписники
     following: Підписаний(-а)
     joined: Приєднався %{date}
     media: Медіа
@@ -35,7 +31,6 @@ uk:
     nothing_here: Тут нічого немає!
     people_followed_by: Люди, на яких підписаний(-а) %{name}
     people_who_follow: Підписники %{name}
-    posts: Пости
     posts_with_replies: Пости і відповіді
     reserved_username: Це ім'я користувача зарезервоване
     roles:
@@ -70,7 +65,6 @@ uk:
       display_name: Відображуване ім'я
       domain: Домен
       edit: Змінити
-      email: Email
       email_status: Статус e-mail
       enable: Увімкнути
       enabled: Увімкнено
@@ -79,7 +73,6 @@ uk:
       followers_url: URL підписників
       follows: Підписки
       inbox_url: Вхідний URL
-      ip: IP
       location:
         all: Усі
         local: Локальні
@@ -119,7 +112,6 @@ uk:
         moderator: Модератор
         staff: Персонал
         user: Користувач
-      salmon_url: Salmon URL
       search: Пошук
       shared_inbox_url: URL спільного вхідного кошика
       show:
@@ -358,11 +350,9 @@ uk:
       title: Статуси аккаунтів
       with_media: З медіа
     subscriptions:
-      callback_url: Callback URL
       confirmed: Підтверджено
       expires_in: Спливає через
       last_delivery: Остання доставка
-      title: WebSub
       topic: Тема
     title: Адміністрування
   admin_mailer:
@@ -372,7 +362,6 @@ uk:
       subject: Нова скарга до %{instance} (#%{id})
   application_mailer:
     notification_preferences: Змінити налаштування e-mail
-    salutation: "%{name},"
     settings: 'Змінити налаштування e-mail: %{link}'
     view: 'Перегляд:'
     view_profile: Показати профіль
@@ -398,9 +387,6 @@ uk:
     migrate_account: Переїхати до іншого аккаунту
     migrate_account_html: Якщо ви бажаєте, щоб відвідувачі цього акканту були перенаправлені до іншого, ви можете <a href="%{path}">налаштувати це тут</a>.
     or_log_in_with: Або увійдіть з
-    providers:
-      cas: CAS
-      saml: SAML
     register: Зареєструватися
     resend_confirmation: Повторно відправити інструкції з підтвердження
     reset_password: Скинути пароль
@@ -460,7 +446,6 @@ uk:
       request: Зробити запит на архів
       size: Розмір
     blocks: Список блокувань
-    csv: CSV
     follows: Підписки
     mutes: Список глушення
     storage: Ваш медіаконтент
@@ -483,7 +468,6 @@ uk:
   generic:
     changes_saved_msg: Зміни успішно збережені!
     save_changes: Зберегти зміни
-    validation_errors: Щось тут не так! Будь ласка, ознайомтеся з %{count} помилками нижче
   imports:
     preface: Вы можете завантажити деякі дані, наприклад, списки людей, на яких Ви підписані чи яких блокуєте, в Ваш акаунт на цій інстанції з файлів, експортованих з іншої інстанції.
     success: Ваші дані були успішно загружені та будуть оброблені в найближчий момент
@@ -506,7 +490,6 @@ uk:
     expires_in_prompt: Ніколи
     generate: Згенерувати
     invited_by: 'Вас запросив(-ла):'
-    max_uses: "%{count} використань"
     max_uses_prompt: Без обмеження
     prompt: Генеруйте та діліться посиланням з іншими для надання доступу до сайту
     table:
@@ -568,24 +551,18 @@ uk:
   number:
     human:
       decimal_units:
-        format: "%n%u"
         units:
           billion: млрд
           million: млн
           quadrillion: квдрл
           thousand: тис
           trillion: трлн
-          unit: ''
   pagination:
     newer: Новіше
     next: Далі
     prev: Назад
-    truncate: "&hellip;"
   preferences:
-    languages: Мови
     other: Інше
-    publishing: Публікація
-    web: Веб
   remote_follow:
     acct: Введіть username@domain, яким ви хочете підписатися
     missing_resource: Пошук потрібного перенаправлення URL для Вашого аккаунта закінчився невдачею
@@ -600,40 +577,12 @@ uk:
     activity: Остання активність
     browser: Браузер
     browsers:
-      alipay: Alipay
-      blackberry: Blackberry
-      chrome: Chrome
-      edge: Microsoft Edge
-      electron: Electron
-      firefox: Firefox
       generic: Невідомий браузер
-      ie: Internet Explorer
-      micro_messenger: MicroMessenger
-      nokia: Nokia S40 Ovi Browser
-      opera: Opera
-      otter: Otter
-      phantom_js: PhantomJS
-      qq: QQ Browser
-      safari: Safari
-      uc_browser: UCBrowser
-      weibo: Weibo
     current_session: Активна сесія
     description: "%{browser} на %{platform}"
     explanation: Це веб-браузери, нині авторизовані до вашого аккаунту Mastodon.
-    ip: IP
     platforms:
-      adobe_air: Adobe Air
-      android: Android
-      blackberry: Blackberry
-      chrome_os: ChromeOS
-      firefox_os: Firefox OS
-      ios: iOS
-      linux: Linux
-      mac: Mac
       other: невідома платформа
-      windows: Windows
-      windows_mobile: Windows Mobile
-      windows_phone: Windows Phone
     revoke: Закінчити
     revoke_success: Сесія успішно закінчена
     title: Сесії
@@ -652,11 +601,8 @@ uk:
   statuses:
     attached:
       description: 'Прикріплено: %{attached}'
-      image: "%{count} картинки"
-      video: "%{count} відео"
     boosted_from_html: Просунуто від %{acct_link}
     content_warning: 'Попередження про контент: %{warning}'
-    disallowed_hashtags: 'містив заборонені хештеґи: %{tags}'
     language_detection: Автоматично визначати мову
     open_in_web: Відкрити у вебі
     over_character_limit: перевищено ліміт символів (%{max})
@@ -666,7 +612,6 @@ uk:
       private: Не можна закріпити непублічний пост
       reblog: Не можна закріпити просунутий пост
     show_more: Детальніше
-    title: '%{name}: "%{quote}"'
     visibilities:
       private: Для підписників
       private_long: Показувати тільки підписникам
@@ -684,9 +629,6 @@ uk:
     contrast: Висока контрасність
     default: Mastodon
     mastodon-light: Mastodon (світла)
-  time:
-    formats:
-      default: "%b %d, %Y, %H:%M"
   two_factor_authentication:
     code_hint: Для підтверждення введіть код, згенерований застосунком аутентифікатора
     description_html: При увімкненні <strong>двофакторної аутентифікації</strong>, вхід буде вимагати від Вас використовування Вашого телефона, який згенерує вхідний код.
diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml
index ae49c0537..538a035d2 100644
--- a/config/locales/zh-CN.yml
+++ b/config/locales/zh-CN.yml
@@ -7,7 +7,6 @@ zh-CN:
     active_count_after: 活跃
     active_footnote: 每月活跃用户
     administered_by: 本实例的管理员:
-    api: API
     apps: 移动应用
     contact: 联系方式
     contact_missing: 未设定
@@ -22,19 +21,16 @@ zh-CN:
     privacy_policy: 隐私政策
     source_code: 源代码
     status_count_after:
-      one: 条嘟文
       other: 条嘟文
     status_count_before: 他们共嘟出了
     terms: 使用条款
     user_count_after:
-      one: 位用户
       other: 位用户
     user_count_before: 这里共注册有
     what_is_mastodon: Mastodon 是什么?
   accounts:
     follow: 关注
     followers:
-      one: 关注者
       other: 关注者
     following: 正在关注
     joined: 加入于 %{date}
@@ -45,7 +41,6 @@ zh-CN:
     people_followed_by: "%{name} 关注的人"
     people_who_follow: 关注 %{name} 的人
     posts:
-      one: 嘟文
       other: 嘟文
     posts_tab_heading: 嘟文
     posts_with_replies: 嘟文和回复
@@ -243,7 +238,6 @@ zh-CN:
       reject_media_hint: 删除本地已缓存的媒体文件,并且不再接收来自该域名的任何媒体文件。此选项不影响封禁
       show:
         affected_accounts:
-          one: 将会影响到数据库中的 1 个帐户
           other: 将会影响到数据库中的 %{count} 个帐户
         retroactive:
           silence: 对此域名的所有帐户解除隐藏
@@ -386,8 +380,6 @@ zh-CN:
       confirmed: 已确认
       expires_in: 失效时间
       last_delivery: 最后一次接收数据的时间
-      title: WebSub
-      topic: Topic
     title: 管理
   admin_mailer:
     new_report:
@@ -396,7 +388,6 @@ zh-CN:
       subject: 来自 %{instance} 的用户举报(#%{id})
   application_mailer:
     notification_preferences: 更改电子邮件首选项
-    salutation: "%{name},"
     settings: 使用此链接更改你的电子邮件首选项:%{link}
     view: 点此链接查看详情:
     view_profile: 查看个人资料页
@@ -422,9 +413,6 @@ zh-CN:
     migrate_account: 迁移到另一个帐户
     migrate_account_html: 如果你希望引导他人关注另一个帐户,请<a href="%{path}">点击这里进行设置</a>。
     or_log_in_with: 或通过其他方式登录
-    providers:
-      cas: CAS
-      saml: SAML
     register: 注册
     resend_confirmation: 重新发送确认邮件
     reset_password: 重置密码
@@ -484,7 +472,6 @@ zh-CN:
       request: 请求你的存档
       size: 大小
     blocks: 屏蔽的用户
-    csv: CSV
     follows: 关注的用户
     mutes: 隐藏的用户
     storage: 媒体文件存储
@@ -507,7 +494,6 @@ zh-CN:
     changes_saved_msg: 更改保存成功!
     save_changes: 保存更改
     validation_errors:
-      one: 出错啦!检查一下下面出错的地方吧
       other: 出错啦!检查一下下面 %{count} 处出错的地方吧
   imports:
     preface: 你可以在此导入你在其他实例导出的数据,比如你所关注或屏蔽的用户列表。
@@ -532,7 +518,6 @@ zh-CN:
     generate: 生成邀请链接
     invited_by: 你的邀请人是:
     max_uses:
-      one: 1 次
       other: "%{count} 次"
     max_uses_prompt: 无限制
     prompt: 生成分享链接,邀请他人在本实例注册
@@ -560,9 +545,7 @@ zh-CN:
       body: 以下是自%{since}你最后一次登录以来错过的消息的摘要
       mention: "%{name} 在嘟文中提到了你:"
       new_followers_summary:
-        one: 而且,你不在的时候,有一个人关注了你!耶!
         other: 而且,你不在的时候,有 %{count} 个人关注了你!好棒!
-      subject: "自从你最后一次登录以来,你错过了 %{count} 条新通知 \U0001F418"
       title: 在你不在的这段时间……
     favourite:
       body: 你的嘟文被 %{name} 收藏了:
@@ -586,28 +569,11 @@ zh-CN:
       body: 你的嘟文被 %{name} 转嘟了:
       subject: "%{name} 转嘟了你的嘟文"
       title: 新的转嘟
-  number:
-    human:
-      decimal_units:
-        format: "%n%u"
-        units:
-          billion: B
-          million: M
-          quadrillion: Q
-          thousand: K
-          trillion: T
-          unit: ''
   pagination:
     newer: 更新
     next: 下一页
     older: 更早
     prev: 上一页
-    truncate: "&hellip;"
-  preferences:
-    languages: 语言
-    other: 其他
-    publishing: 发布
-    web: 站内
   remote_follow:
     acct: 请输入你的“用户名@实例域名”
     missing_resource: 无法确定你的帐户的跳转 URL
@@ -623,39 +589,16 @@ zh-CN:
     browser: 浏览器
     browsers:
       alipay: 支付宝
-      blackberry: Blackberry
-      chrome: Chrome
-      edge: Microsoft Edge
-      electron: Electron
-      firefox: Firefox
       generic: 未知浏览器
-      ie: Internet Explorer
       micro_messenger: 微信
       nokia: Nokia S40 Ovi 浏览器
-      opera: Opera
-      otter: Otter
-      phantom_js: PhantomJS
       qq: QQ浏览器
-      safari: Safari
       uc_browser: UC浏览器
       weibo: 新浪微博
     current_session: 当前会话
     description: "%{platform} 上的 %{browser}"
     explanation: 你的 Mastodon 帐户目前已在这些浏览器上登录。
     ip: IP 地址
-    platforms:
-      adobe_air: Adobe Air
-      android: Android
-      blackberry: Blackberry
-      chrome_os: ChromeOS
-      firefox_os: Firefox OS
-      ios: iOS
-      linux: Linux
-      mac: Mac
-      other: 未知平台
-      windows: Windows
-      windows_mobile: Windows Mobile
-      windows_phone: Windows Phone
     revoke: 注销
     revoke_success: 会话注销成功
     title: 会话
@@ -675,15 +618,12 @@ zh-CN:
     attached:
       description: 附加媒体:%{attached}
       image:
-        one: "%{count} 张图片"
         other: "%{count} 张图片"
       video:
-        one: "%{count} 段视频"
         other: "%{count} 段视频"
     boosted_from_html: 转嘟自 %{acct_link}
     content_warning: 内容警告:%{warning}
     disallowed_hashtags:
-      one: 包含了一个禁止的话题标签:%{tags}
       other: 包含了这些禁止的话题标签:%{tags}
     language_detection: 自动检测语言
     open_in_web: 在站内打开
diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml
index aade1debb..25e7475a8 100644
--- a/config/locales/zh-HK.yml
+++ b/config/locales/zh-HK.yml
@@ -15,14 +15,14 @@ zh-HK:
     hosted_on: 在 %{domain} 運作的 Mastodon 服務站
     learn_more: 了解更多
     source_code: 源代碼
-    status_count_after: 篇文章
     status_count_before: 他們共發佈了
-    user_count_after: 位使用者
+    tagline: 關注朋友並探索新朋友
     user_count_before: 這裏共註冊有
     what_is_mastodon: Mastodon 是甚麼?
   accounts:
     follow: 關注
-    followers: 關注者
+    followers:
+      other: 關注者
     following: 正在關注
     media: 媒體
     moved_html: "%{name} 已經轉移到 %{new_profile_link}:"
@@ -30,7 +30,6 @@ zh-HK:
     nothing_here: 暫時未有內容可以顯示。
     people_followed_by: "%{name} 關注的人"
     people_who_follow: 關注 %{name} 的人
-    posts: 文章
     posts_with_replies: 文章和回覆
     reserved_username: 此用戶名已被保留
     roles:
@@ -203,7 +202,6 @@ zh-HK:
       reject_media: 拒絕媒體檔案
       reject_media_hint: 刪除本地緩存的媒體檔案,再也不在未來下載這個站點的檔案。和自動刪除無關
       show:
-        affected_accounts: 資料庫中有%{count}個用戶受影響
         retroactive:
           silence: 對此域名的所有用戶取消靜音
           suspend: 對此域名的所有用戶取消除名
@@ -220,8 +218,12 @@ zh-HK:
         create: 新增網域
         title: 新增電郵網域阻隔
       title: 電郵網域阻隔
+    followers:
+      back_to_account: 返回帳戶
+      title: "%{acct} 的關注者"
     instances:
       title: 已知服務站
+      total_followed_by_us: 開始關注你
     invites:
       filter:
         all: 全部
@@ -229,6 +231,8 @@ zh-HK:
         expired: 已失效
         title: 篩選
       title: 邀請用戶
+    relays:
+      description_html: "<strong>聯邦中繼站</strong> 是種中繼伺服器,會在訂閱並推送至此中繼站的伺服器之間交換大量的公開嘟文。<strong>中繼站也能協助小型或中型伺服器從聯邦中探索內容</strong>,而無須本地使用者手動關注遠端伺服器的其他使用者。"
     report_notes:
       created_msg: 舉報筆記已建立。
       destroyed_msg: 舉報筆記已刪除。
@@ -364,9 +368,6 @@ zh-HK:
     migrate_account: 轉移到另一個帳號
     migrate_account_html: 想要將這個帳號指向另一個帳號可<a href="%{path}">到這裡設定</a>。
     or_log_in_with: 或登入於
-    providers:
-      cas: CAS
-      saml: SAML
     register: 登記
     resend_confirmation: 重發確認指示電郵
     reset_password: 重設密碼
@@ -426,7 +427,6 @@ zh-HK:
       request: 下載檔案
       size: 檔案大小
     blocks: 被你封鎖的用戶
-    csv: CSV
     follows: 你所關注的用戶
     mutes: 你所靜音的用戶
     storage: 媒體容量大小
@@ -434,7 +434,6 @@ zh-HK:
     changes_saved_msg: 已成功儲存修改。
     save_changes: 儲存修改
     validation_errors:
-      one: 提交的資料有問題
       other: 提交的資料有 %{count} 項問題
   imports:
     preface: 你可以在此匯入你在其他服務站所匯出的資料檔,包括︰你所關注的用戶,被你封鎖的用戶。
@@ -459,7 +458,6 @@ zh-HK:
     generate: 生成邀請連結
     invited_by: 你的邀請人是:
     max_uses:
-      one: 1 次
       other: "%{count} 次"
     max_uses_prompt: 無限制
     prompt: 生成分享連結,邀請他人在本服務站註冊
@@ -487,10 +485,8 @@ zh-HK:
       body: 這是自從你在%{since}使用以後,你錯失了的訊息︰
       mention: "%{name} 在此提及了你︰"
       new_followers_summary:
-        one: 你新獲得了 1 位關注者了!恭喜!
         other: 你新獲得了 %{count} 位關注者了!好厲害!
       subject:
-        one: "自從上次登入以來,你收到 1 則新的通知 \U0001F418"
         other: "自從上次登入以來,你收到 %{count} 則新的通知 \U0001F418"
       title: 在你不在的這段時間……
     favourite:
@@ -515,27 +511,14 @@ zh-HK:
       body: 您的文章被 %{name} 轉推:
       subject: "%{name} 轉推了你的文章"
       title: 新的轉推
-  number:
-    human:
-      decimal_units:
-        format: "%n%u"
-        units:
-          billion: B
-          million: M
-          quadrillion: Q
-          thousand: K
-          trillion: T
   pagination:
     newer: 較新
     next: 下一頁
     older: 較舊
     prev: 上一頁
     truncate: "……"
-  preferences:
-    languages: 語言
-    other: 其他
-    publishing: 發佈
-    web: 站内
+  relationships:
+    remove_selected_followers: 刪除所選選項
   remote_follow:
     acct: 請輸入你的︰用戶名稱@服務點域名
     missing_resource: 無法找到你用戶的轉接網址
@@ -550,7 +533,6 @@ zh-HK:
     browser: 瀏覽器
     browsers:
       alipay: 支付寶
-      blackberry: Blackberry
       chrome: Chrome 瀏覽器
       edge: Microsoft Edge 瀏覽器
       electron: Electron 瀏覽器
@@ -559,30 +541,14 @@ zh-HK:
       ie: Internet Explorer 瀏覽器
       micro_messenger: 微信
       nokia: Nokia S40 Ovi 瀏覽器
-      opera: Opera
       otter: Otter 瀏覽器
-      phantom_js: PhantomJS
       qq: QQ瀏覽器
-      safari: Safari
       uc_browser: UC瀏覽器
       weibo: 新浪微博
     current_session: 目前的作業階段
     description: "%{platform} 上的 %{browser}"
     explanation: 這些是現在正登入於你的 Mastodon 帳號的瀏覽器。
     ip: IP 位址
-    platforms:
-      adobe_air: Adobe Air
-      android: Android
-      blackberry: Blackberry
-      chrome_os: ChromeOS
-      firefox_os: Firefox OS
-      ios: iOS
-      linux: Linux
-      mac: Mac
-      other: 未知平台
-      windows: Windows
-      windows_mobile: Windows Mobile
-      windows_phone: Windows Phone
     revoke: 取消
     revoke_success: 作業階段成功取消
     title: 作業階段
@@ -602,15 +568,12 @@ zh-HK:
     attached:
       description: 附件: %{attached}
       image:
-        one: "%{count} 幅圖片"
         other: "%{count} 幅圖片"
       video:
-        one: "%{count} 段影片"
         other: "%{count} 段影片"
     boosted_from_html: 轉推自 %{acct_link}
     content_warning: 內容警告: %{warning}
     disallowed_hashtags:
-      one: 包含不允許的標籤: %{tags}
       other: 包含不允許的標籤: %{tags}
     language_detection: 自動偵測語言
     open_in_web: 開啟網頁
diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml
index 988357e1b..d3dcf5133 100644
--- a/config/locales/zh-TW.yml
+++ b/config/locales/zh-TW.yml
@@ -7,7 +7,6 @@ zh-TW:
     active_count_after: 活躍
     active_footnote: 每月活躍使用者 (MAU)
     administered_by: 管理者:
-    api: API
     apps: 行動應用程式
     apps_platforms: 在 iOS、Android 和其他平台使用 Mastodon
     browse_directory: 依興趣瀏覽個人資料目錄和過濾器
@@ -29,13 +28,11 @@ zh-TW:
     server_stats: 伺服器統計:
     source_code: 原始碼
     status_count_after:
-      one: 條嘟文
       other: 條嘟文
     status_count_before: 他們共嘟出了
     tagline: 關注朋友並探索新朋友
     terms: 使用條款
     user_count_after:
-      one: 位使用者
       other: 位使用者
     user_count_before: 註冊使用者數
     what_is_mastodon: 什麼是 Mastodon?
@@ -43,7 +40,6 @@ zh-TW:
     choices_html: "%{name} 的選擇:"
     follow: 關注
     followers:
-      one: 關注者
       other: 關注者
     following: 正在關注
     joined: 加入於 %{date}
@@ -56,7 +52,6 @@ zh-TW:
     people_followed_by: "%{name} 關注的人"
     people_who_follow: 關注 %{name} 的人
     posts:
-      one: 嘟文
       other: 嘟文
     posts_tab_heading: 嘟文
     posts_with_replies: 嘟文與回覆
@@ -281,7 +276,6 @@ zh-TW:
         suspend: 已停權
       show:
         affected_accounts:
-          one: 將影響到資料庫中的 1 個帳戶
           other: 將影響到資料庫中的 %{count} 個帳戶
         retroactive:
           silence: 對此站點的所有使用者取消靜音
@@ -448,9 +442,6 @@ zh-TW:
     migrate_account: 轉移到另一個帳戶
     migrate_account_html: 如果你希望引導他人關注另一個帳戶,請<a href="%{path}">到這裡設定</a>。
     or_log_in_with: 或透過其他方式登入
-    providers:
-      cas: CAS
-      saml: SAML
     register: 註冊
     resend_confirmation: 重新寄送確認指引
     reset_password: 重設密碼
@@ -510,14 +501,12 @@ zh-TW:
       request: 下載存檔
       size: 大小
     blocks: 您封鎖的使用者
-    csv: CSV
     follows: 您關注的使用者
     mutes: 您靜音的使用者
     storage: 儲存空間大小
   generic:
     changes_saved_msg: 已成功儲存修改!
     save_changes: 儲存修改
-    validation_errors: 送出的資料有 %{count} 個問題
   imports:
     preface: 您可以在此匯入您在其他伺服器所匯出的資料檔,包括關注的使用者、封鎖的使用者名單。
     success: 資料檔上傳成功,正在匯入,請稍候
@@ -540,7 +529,6 @@ zh-TW:
     expires_in_prompt: 永不過期
     generate: 建立邀請連結
     invited_by: 你的邀請人是:
-    max_uses: "%{count} 次"
     max_uses_prompt: 無限制
     prompt: 建立分享連結,邀請他人在本伺服器註冊
     table:
@@ -566,8 +554,6 @@ zh-TW:
       action: 閱覽所有通知
       body: 以下是自%{since}你最後一次登入以來錯過的訊息摘要
       mention: "%{name} 在此提及了你:"
-      new_followers_summary: 而且,你不在的時候,有 %{count} 個人關注你了! 好棒!
-      subject: "自從上次登入以來,你收到 %{count} 則新的通知 \U0001F418"
       title: 你不在的時候...
     favourite:
       body: '你的嘟文被 %{name} 加入了最愛:'
@@ -591,28 +577,11 @@ zh-TW:
       body: '你的嘟文被 %{name} 轉嘟:'
       subject: "%{name} 轉嘟了你的嘟文"
       title: 新的轉嘟
-  number:
-    human:
-      decimal_units:
-        format: "%n%u"
-        units:
-          billion: B
-          million: M
-          quadrillion: Q
-          thousand: K
-          trillion: T
-          unit: ''
   pagination:
     newer: 較新
     next: 下一頁
     older: 較舊
     prev: 上一頁
-    truncate: ''
-  preferences:
-    languages: 語言
-    other: 其他
-    publishing: 發佈
-    web: 站內
   remote_follow:
     acct: 請輸入您的使用者名稱@站點網域
     missing_resource: 無法找到資源
@@ -647,11 +616,6 @@ zh-TW:
     description: "%{platform} 上的 %{browser}"
     explanation: 這些是現在正登入於你的 Mastodon 帳戶的瀏覽器。
     ip: IP 位址
-    platforms:
-      adobe_air: ''
-      linux: ''
-      mac: ''
-      other: 未知平台
     revoke: 取消
     revoke_success: Session 取消成功
     title: 作業階段
@@ -670,11 +634,8 @@ zh-TW:
   statuses:
     attached:
       description: 附件: %{attached}
-      image: "%{count} 幅圖片"
-      video: "%{count} 段影片"
     boosted_from_html: 轉嘟自 %{acct_link}
     content_warning: 內容警告: %{warning}
-    disallowed_hashtags: 包含不允許的標籤: %{tags}
     language_detection: 自動偵測語言
     open_in_web: 以網頁開啟
     over_character_limit: 超過了 %{max} 字的限制
@@ -684,7 +645,6 @@ zh-TW:
       private: 不能置頂非公開的嘟文
       reblog: 不能置頂轉嘟
     show_more: 顯示更多
-    title: '%{name}: "%{quote}"'
     visibilities:
       private: 僅關注者
       private_long: 只有關注你的人能看到
diff --git a/config/navigation.rb b/config/navigation.rb
index 16a99731a..e8494ddc2 100644
--- a/config/navigation.rb
+++ b/config/navigation.rb
@@ -10,7 +10,11 @@ SimpleNavigation::Configuration.run do |navigation|
       s.item :identity_proofs, safe_join([fa_icon('key fw'), t('settings.identity_proofs')]), settings_identity_proofs_path, highlights_on: %r{/settings/identity_proofs*}, if: proc { current_account.identity_proofs.exists? }
     end
 
-    n.item :preferences, safe_join([fa_icon('cog fw'), t('settings.preferences')]), settings_preferences_url, highlights_on: %r{/settings/preferences|/settings/notifications}
+    n.item :preferences, safe_join([fa_icon('cog fw'), t('settings.preferences')]), settings_preferences_url do |s|
+      s.item :appearance, safe_join([fa_icon('desktop fw'), t('settings.appearance')]), settings_preferences_appearance_url
+      s.item :notifications, safe_join([fa_icon('bell fw'), t('settings.notifications')]), settings_preferences_notifications_url
+      s.item :other, safe_join([fa_icon('cog fw'), t('preferences.other')]), settings_preferences_other_url
+    end
 
     n.item :flavours, safe_join([fa_icon('paint-brush fw'), t('settings.flavours')]), settings_flavours_url do |flavours|
       Themes.instance.flavours.each do |flavour|
diff --git a/config/routes.rb b/config/routes.rb
index 5614a7cdc..0d49a07d6 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -87,14 +87,22 @@ Rails.application.routes.draw do
   get '/explore', to: 'directories#index', as: :explore
   get '/explore/:id', to: 'directories#show', as: :explore_hashtag
 
+  get '/settings', to: redirect('/settings/profile')
+
   namespace :settings do
     resource :profile, only: [:show, :update]
 
-    resource :preferences, only: [:show, :update]
-    resource :notifications, only: [:show, :update]
-    resource :import, only: [:show, :create]
+    get :preferences, to: redirect('/settings/preferences/appearance')
+
+    namespace :preferences do
+      resource :appearance, only: [:show, :update], controller: :appearance
+      resource :notifications, only: [:show, :update]
+      resource :other, only: [:show, :update], controller: :other
+    end
 
+    resource :import, only: [:show, :create]
     resource :export, only: [:show, :create]
+
     namespace :exports, constraints: { format: :csv } do
       resources :follows, only: :index, controller: :following_accounts
       resources :blocks, only: :index, controller: :blocked_accounts
@@ -104,6 +112,7 @@ Rails.application.routes.draw do
     end
 
     resource :two_factor_authentication, only: [:show, :create, :destroy]
+
     namespace :two_factor_authentication do
       resources :recovery_codes, only: [:create]
       resource :confirmation, only: [:new, :create]
diff --git a/crowdin.yml b/crowdin.yml
new file mode 100644
index 000000000..f94417f2e
--- /dev/null
+++ b/crowdin.yml
@@ -0,0 +1,20 @@
+commit_message: "[ci skip]"
+files:
+  - source: /app/javascript/mastodon/locales/en.json
+    translation: /app/javascript/mastodon/locales/%two_letters_code%.json
+    update_option: update_as_unapproved
+  - source: /config/locales/en.yml
+    translation: /config/locales/%two_letters_code%.yml
+    update_option: update_as_unapproved
+  - source: /config/locales/simple_form.en.yml
+    translation: /config/locales/simple_form.%two_letters_code%.yml
+    update_option: update_as_unapproved
+  - source: /config/locales/activerecord.en.yml
+    translation: /config/locales/activerecord.%two_letters_code%.yml
+    update_option: update_as_unapproved
+  - source: /config/locales/devise.en.yml
+    translation: /config/locales/devise.%two_letters_code%.yml
+    update_option: update_as_unapproved
+  - source: /config/locales/doorkeeper.en.yml
+    translation: /config/locales/doorkeeper.%two_letters_code%.yml
+    update_option: update_as_unapproved
diff --git a/lib/mastodon/emoji_cli.rb b/lib/mastodon/emoji_cli.rb
index 32827dd45..97a822e45 100644
--- a/lib/mastodon/emoji_cli.rb
+++ b/lib/mastodon/emoji_cli.rb
@@ -15,9 +15,9 @@ module Mastodon
     option :suffix
     option :overwrite, type: :boolean
     option :unlisted, type: :boolean
-    desc 'import PATH', 'Import emoji from a TAR archive at PATH'
+    desc 'import PATH', 'Import emoji from a TAR GZIP archive at PATH'
     long_desc <<-LONG_DESC
-      Imports custom emoji from a TAR archive specified by PATH.
+      Imports custom emoji from a TAR GZIP archive specified by PATH.
 
       Existing emoji will be skipped unless the --overwrite option
       is provided, in which case they will be overwritten.
diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb
index c986d711b..56b846a36 100644
--- a/lib/mastodon/version.rb
+++ b/lib/mastodon/version.rb
@@ -9,11 +9,11 @@ module Mastodon
     end
 
     def minor
-      8
+      9
     end
 
     def patch
-      4
+      0
     end
 
     def pre
diff --git a/spec/controllers/settings/notifications_controller_spec.rb b/spec/controllers/settings/preferences/notifications_controller_spec.rb
index 981ef674e..02180b383 100644
--- a/spec/controllers/settings/notifications_controller_spec.rb
+++ b/spec/controllers/settings/preferences/notifications_controller_spec.rb
@@ -1,6 +1,6 @@
 require 'rails_helper'
 
-describe Settings::NotificationsController do
+describe Settings::Preferences::NotificationsController do
   render_views
 
   let(:user) { Fabricate(:user) }
@@ -28,7 +28,7 @@ describe Settings::NotificationsController do
         }
       }
 
-      expect(response).to redirect_to(settings_notifications_path)
+      expect(response).to redirect_to(settings_preferences_notifications_path)
       user.reload
       expect(user.settings['notification_emails']['follow']).to be true
       expect(user.settings['interactions']['must_be_follower']).to be false
diff --git a/spec/controllers/settings/preferences_controller_spec.rb b/spec/controllers/settings/preferences/other_controller_spec.rb
index f2028cf39..1b556ac7f 100644
--- a/spec/controllers/settings/preferences_controller_spec.rb
+++ b/spec/controllers/settings/preferences/other_controller_spec.rb
@@ -1,6 +1,6 @@
 require 'rails_helper'
 
-describe Settings::PreferencesController do
+describe Settings::Preferences::OtherController do
   render_views
 
   let(:user) { Fabricate(:user, filtered_languages: []) }
@@ -20,7 +20,7 @@ describe Settings::PreferencesController do
     it 'updates the user record' do
       put :update, params: { user: { locale: 'en', chosen_languages: ['es', 'fr', ''] } }
 
-      expect(response).to redirect_to(settings_preferences_path)
+      expect(response).to redirect_to(settings_preferences_other_path)
       user.reload
       expect(user.locale).to eq 'en'
       expect(user.chosen_languages).to eq ['es', 'fr']
@@ -37,7 +37,7 @@ describe Settings::PreferencesController do
         }
       }
 
-      expect(response).to redirect_to(settings_preferences_path)
+      expect(response).to redirect_to(settings_preferences_other_path)
       user.reload
       expect(user.settings['boost_modal']).to be true
       expect(user.settings['delete_modal']).to be false